Merged in feature/strengthen_lint_rules (pull request #77)
Strengthen lint rules * Strengthen lint rules * Fix linting errors # Conflicts: # client/src/components/learningPath/LearningPathDiagram.vue # client/src/components/learningPath/LearningPathViewVertical.vue * Add no-required-prop-with-default rule # Conflicts: # client/src/components/learningPath/LearningPathDiagram.vue * Fix typechecks * Reformat eslintrc
This commit is contained in:
parent
2e974dc323
commit
f3c599c344
|
|
@ -1,10 +1,13 @@
|
|||
/* eslint-env node */
|
||||
/* Vue ESLint Rules: https://eslint.vuejs.org/rules/ */
|
||||
/* TS ESLint Rules: https://typescript-eslint.io/rules/ */
|
||||
require("@rushstack/eslint-patch/modern-module-resolution");
|
||||
module.exports = {
|
||||
root: true,
|
||||
parser: "vue-eslint-parser",
|
||||
extends: [
|
||||
"plugin:vue/vue3-recommended",
|
||||
"eslint:recommended",
|
||||
"plugin:vue/vue3-recommended",
|
||||
"@vue/eslint-config-typescript/recommended",
|
||||
"@vue/eslint-config-prettier",
|
||||
"plugin:storybook/recommended",
|
||||
|
|
@ -14,8 +17,12 @@ module.exports = {
|
|||
},
|
||||
ignorePatterns: ["versionize.js", "tailwind.config.js", "postcss.config.js"],
|
||||
rules: {
|
||||
"@typescript-eslint/no-unused-vars": ["warn"],
|
||||
"@typescript-eslint/ban-ts-comment": ["warn"],
|
||||
"prefer-const": ["warn"],
|
||||
"@typescript-eslint/ban-ts-comment": "warn",
|
||||
"@typescript-eslint/no-explicit-any": "warn",
|
||||
"@typescript-eslint/no-unused-vars": "error",
|
||||
"@typescript-eslint/no-non-null-asserted-optional-chain": "error",
|
||||
"@typescript-eslint/no-this-alias": "error",
|
||||
"vue/no-v-html": "error",
|
||||
"vue/no-required-prop-with-default": "error",
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -82,9 +82,10 @@
|
|||
"storybook-tailwind-foundations": "^1.1.2",
|
||||
"storybook-vue3-router": "^3.0.0-next.1",
|
||||
"tailwindcss": "^3.1.8",
|
||||
"typescript": "^5.0.3",
|
||||
"typescript": "^5.0.4",
|
||||
"vite": "^4.2.1",
|
||||
"vitest": "^0.29.8",
|
||||
"vue-eslint-parser": "^9.2.1",
|
||||
"vue-tsc": "^1.0.9"
|
||||
}
|
||||
},
|
||||
|
|
@ -6708,15 +6709,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz",
|
||||
"integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.5.tgz",
|
||||
"integrity": "sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/regexpp": "^4.4.0",
|
||||
"@typescript-eslint/scope-manager": "5.57.0",
|
||||
"@typescript-eslint/type-utils": "5.57.0",
|
||||
"@typescript-eslint/utils": "5.57.0",
|
||||
"@typescript-eslint/scope-manager": "5.59.5",
|
||||
"@typescript-eslint/type-utils": "5.59.5",
|
||||
"@typescript-eslint/utils": "5.59.5",
|
||||
"debug": "^4.3.4",
|
||||
"grapheme-splitter": "^1.0.4",
|
||||
"ignore": "^5.2.0",
|
||||
|
|
@ -6775,14 +6776,14 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/@typescript-eslint/parser": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz",
|
||||
"integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.5.tgz",
|
||||
"integrity": "sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "5.57.0",
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/typescript-estree": "5.57.0",
|
||||
"@typescript-eslint/scope-manager": "5.59.5",
|
||||
"@typescript-eslint/types": "5.59.5",
|
||||
"@typescript-eslint/typescript-estree": "5.59.5",
|
||||
"debug": "^4.3.4"
|
||||
},
|
||||
"engines": {
|
||||
|
|
@ -6802,13 +6803,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/scope-manager": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz",
|
||||
"integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz",
|
||||
"integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/visitor-keys": "5.57.0"
|
||||
"@typescript-eslint/types": "5.59.5",
|
||||
"@typescript-eslint/visitor-keys": "5.59.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
|
|
@ -6819,13 +6820,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/type-utils": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz",
|
||||
"integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.5.tgz",
|
||||
"integrity": "sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/typescript-estree": "5.57.0",
|
||||
"@typescript-eslint/utils": "5.57.0",
|
||||
"@typescript-eslint/typescript-estree": "5.59.5",
|
||||
"@typescript-eslint/utils": "5.59.5",
|
||||
"debug": "^4.3.4",
|
||||
"tsutils": "^3.21.0"
|
||||
},
|
||||
|
|
@ -6846,9 +6847,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/types": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz",
|
||||
"integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz",
|
||||
"integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
|
|
@ -6859,13 +6860,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz",
|
||||
"integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz",
|
||||
"integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/visitor-keys": "5.57.0",
|
||||
"@typescript-eslint/types": "5.59.5",
|
||||
"@typescript-eslint/visitor-keys": "5.59.5",
|
||||
"debug": "^4.3.4",
|
||||
"globby": "^11.1.0",
|
||||
"is-glob": "^4.0.3",
|
||||
|
|
@ -6898,9 +6899,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
|
||||
"version": "7.3.8",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
|
||||
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
|
||||
"version": "7.5.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz",
|
||||
"integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
|
|
@ -6919,17 +6920,17 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/@typescript-eslint/utils": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz",
|
||||
"integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.5.tgz",
|
||||
"integrity": "sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"@types/semver": "^7.3.12",
|
||||
"@typescript-eslint/scope-manager": "5.57.0",
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/typescript-estree": "5.57.0",
|
||||
"@typescript-eslint/scope-manager": "5.59.5",
|
||||
"@typescript-eslint/types": "5.59.5",
|
||||
"@typescript-eslint/typescript-estree": "5.59.5",
|
||||
"eslint-scope": "^5.1.1",
|
||||
"semver": "^7.3.7"
|
||||
},
|
||||
|
|
@ -6978,12 +6979,12 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/@typescript-eslint/visitor-keys": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz",
|
||||
"integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz",
|
||||
"integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/types": "5.59.5",
|
||||
"eslint-visitor-keys": "^3.3.0"
|
||||
},
|
||||
"engines": {
|
||||
|
|
@ -18377,9 +18378,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz",
|
||||
"integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==",
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
|
||||
"integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
|
|
@ -19099,9 +19100,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/vue-eslint-parser": {
|
||||
"version": "9.1.1",
|
||||
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.1.1.tgz",
|
||||
"integrity": "sha512-C2aI/r85Q6tYcz4dpgvrs4wH/MqVrRAVIdpYedrxnATDHHkb+TroeRcDpKWGZCx/OcECMWfz7tVwQ8e+Opy6rA==",
|
||||
"version": "9.2.1",
|
||||
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.2.1.tgz",
|
||||
"integrity": "sha512-tPOex4n6jit4E7h68auOEbDMwE58XiP4dylfaVTCOVCouR45g+QFDBjgIdEU52EXJxKyjgh91dLfN2rxUcV0bQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"debug": "^4.3.4",
|
||||
|
|
@ -24751,15 +24752,15 @@
|
|||
}
|
||||
},
|
||||
"@typescript-eslint/eslint-plugin": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz",
|
||||
"integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.5.tgz",
|
||||
"integrity": "sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@eslint-community/regexpp": "^4.4.0",
|
||||
"@typescript-eslint/scope-manager": "5.57.0",
|
||||
"@typescript-eslint/type-utils": "5.57.0",
|
||||
"@typescript-eslint/utils": "5.57.0",
|
||||
"@typescript-eslint/scope-manager": "5.59.5",
|
||||
"@typescript-eslint/type-utils": "5.59.5",
|
||||
"@typescript-eslint/utils": "5.59.5",
|
||||
"debug": "^4.3.4",
|
||||
"grapheme-splitter": "^1.0.4",
|
||||
"ignore": "^5.2.0",
|
||||
|
|
@ -24795,53 +24796,53 @@
|
|||
}
|
||||
},
|
||||
"@typescript-eslint/parser": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz",
|
||||
"integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.5.tgz",
|
||||
"integrity": "sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/scope-manager": "5.57.0",
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/typescript-estree": "5.57.0",
|
||||
"@typescript-eslint/scope-manager": "5.59.5",
|
||||
"@typescript-eslint/types": "5.59.5",
|
||||
"@typescript-eslint/typescript-estree": "5.59.5",
|
||||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/scope-manager": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz",
|
||||
"integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz",
|
||||
"integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/visitor-keys": "5.57.0"
|
||||
"@typescript-eslint/types": "5.59.5",
|
||||
"@typescript-eslint/visitor-keys": "5.59.5"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/type-utils": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz",
|
||||
"integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.5.tgz",
|
||||
"integrity": "sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/typescript-estree": "5.57.0",
|
||||
"@typescript-eslint/utils": "5.57.0",
|
||||
"@typescript-eslint/typescript-estree": "5.59.5",
|
||||
"@typescript-eslint/utils": "5.59.5",
|
||||
"debug": "^4.3.4",
|
||||
"tsutils": "^3.21.0"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/types": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz",
|
||||
"integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz",
|
||||
"integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==",
|
||||
"dev": true
|
||||
},
|
||||
"@typescript-eslint/typescript-estree": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz",
|
||||
"integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz",
|
||||
"integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/visitor-keys": "5.57.0",
|
||||
"@typescript-eslint/types": "5.59.5",
|
||||
"@typescript-eslint/visitor-keys": "5.59.5",
|
||||
"debug": "^4.3.4",
|
||||
"globby": "^11.1.0",
|
||||
"is-glob": "^4.0.3",
|
||||
|
|
@ -24859,9 +24860,9 @@
|
|||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.3.8",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
|
||||
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
|
||||
"version": "7.5.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz",
|
||||
"integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lru-cache": "^6.0.0"
|
||||
|
|
@ -24876,17 +24877,17 @@
|
|||
}
|
||||
},
|
||||
"@typescript-eslint/utils": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz",
|
||||
"integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.5.tgz",
|
||||
"integrity": "sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"@types/semver": "^7.3.12",
|
||||
"@typescript-eslint/scope-manager": "5.57.0",
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/typescript-estree": "5.57.0",
|
||||
"@typescript-eslint/scope-manager": "5.59.5",
|
||||
"@typescript-eslint/types": "5.59.5",
|
||||
"@typescript-eslint/typescript-estree": "5.59.5",
|
||||
"eslint-scope": "^5.1.1",
|
||||
"semver": "^7.3.7"
|
||||
},
|
||||
|
|
@ -24918,12 +24919,12 @@
|
|||
}
|
||||
},
|
||||
"@typescript-eslint/visitor-keys": {
|
||||
"version": "5.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz",
|
||||
"integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==",
|
||||
"version": "5.59.5",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz",
|
||||
"integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "5.57.0",
|
||||
"@typescript-eslint/types": "5.59.5",
|
||||
"eslint-visitor-keys": "^3.3.0"
|
||||
}
|
||||
},
|
||||
|
|
@ -33507,9 +33508,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"typescript": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz",
|
||||
"integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==",
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
|
||||
"integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
|
||||
"dev": true
|
||||
},
|
||||
"ua-parser-js": {
|
||||
|
|
@ -33990,9 +33991,9 @@
|
|||
}
|
||||
},
|
||||
"vue-eslint-parser": {
|
||||
"version": "9.1.1",
|
||||
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.1.1.tgz",
|
||||
"integrity": "sha512-C2aI/r85Q6tYcz4dpgvrs4wH/MqVrRAVIdpYedrxnATDHHkb+TroeRcDpKWGZCx/OcECMWfz7tVwQ8e+Opy6rA==",
|
||||
"version": "9.2.1",
|
||||
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.2.1.tgz",
|
||||
"integrity": "sha512-tPOex4n6jit4E7h68auOEbDMwE58XiP4dylfaVTCOVCouR45g+QFDBjgIdEU52EXJxKyjgh91dLfN2rxUcV0bQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "^4.3.4",
|
||||
|
|
|
|||
|
|
@ -93,9 +93,10 @@
|
|||
"storybook-tailwind-foundations": "^1.1.2",
|
||||
"storybook-vue3-router": "^3.0.0-next.1",
|
||||
"tailwindcss": "^3.1.8",
|
||||
"typescript": "^5.0.3",
|
||||
"typescript": "^5.0.4",
|
||||
"vite": "^4.2.1",
|
||||
"vitest": "^0.29.8",
|
||||
"vue-eslint-parser": "^9.2.1",
|
||||
"vue-tsc": "^1.0.9"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,25 +6,25 @@ import { useRouter } from "vue-router";
|
|||
|
||||
const router = useRouter();
|
||||
|
||||
const props = defineProps<{
|
||||
defineProps<{
|
||||
show: boolean;
|
||||
courseSession: CourseSession | undefined;
|
||||
mediaUrl: string | undefined;
|
||||
user: UserState | undefined;
|
||||
}>();
|
||||
|
||||
const emits = defineEmits(["closemodal", "logout"]);
|
||||
const emit = defineEmits(["closemodal", "logout"]);
|
||||
|
||||
const clickLink = (to: string | undefined) => {
|
||||
if (to) {
|
||||
router.push(to);
|
||||
emits("closemodal");
|
||||
emit("closemodal");
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<ItFullScreenModal :show="show" @closemodal="$emit('closemodal')">
|
||||
<ItFullScreenModal :show="show" @closemodal="emit('closemodal')">
|
||||
<div>
|
||||
<div>
|
||||
<div v-if="user?.loggedIn" class="-mx-4 border-b px-8 pb-4">
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@ import MediaLink from "@/components/mediaLibrary/MediaLink.vue";
|
|||
|
||||
interface Props {
|
||||
title: string;
|
||||
description: string;
|
||||
description?: string;
|
||||
linkText: string;
|
||||
url: string;
|
||||
icon: string;
|
||||
icon?: string;
|
||||
openWindow?: boolean;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
withDefaults(defineProps<Props>(), {
|
||||
icon: "",
|
||||
description: "",
|
||||
openWindow: false,
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@ export interface Props {
|
|||
description: string;
|
||||
call2Action: string;
|
||||
link: string;
|
||||
icon: string;
|
||||
icon?: string;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
withDefaults(defineProps<Props>(), {
|
||||
icon: "",
|
||||
});
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
<template>
|
||||
<!-- eslint-disable vue/no-v-html -->
|
||||
<Dialog :open="true" class="relative z-50" @close="close">
|
||||
<div class="fixed inset-0 bg-black/30" aria-hidden="true"></div>
|
||||
<div class="fixed inset-0 flex items-center justify-center p-4">
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
import { computed } from "vue";
|
||||
|
||||
type Props = {
|
||||
variant: "primary" | "secondary" | "blue" | "text";
|
||||
size: "normal" | "large";
|
||||
disabled: boolean;
|
||||
variant?: "primary" | "secondary" | "blue" | "text";
|
||||
size?: "normal" | "large";
|
||||
disabled?: boolean;
|
||||
href?: string;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ const input = (e: Event) => {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<!-- eslint-disable vue/no-v-html -->
|
||||
<div
|
||||
:class="{
|
||||
'opacity-50': disabled,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import type { DropdownListItem } from "@/types";
|
||||
import { Menu, MenuButton, MenuItem, MenuItems } from "@headlessui/vue";
|
||||
|
||||
const props = defineProps<{
|
||||
defineProps<{
|
||||
buttonClasses: [string] | [];
|
||||
listItems: DropdownListItem[];
|
||||
align: "left" | "right";
|
||||
|
|
@ -37,7 +37,7 @@ const emit = defineEmits<{
|
|||
<MenuItem>
|
||||
<button
|
||||
class="group flex w-full items-center px-0 py-2 text-sm text-black"
|
||||
@click="$emit('select', item.data)"
|
||||
@click="emit('select', item.data)"
|
||||
>
|
||||
<span class="inline-block pr-2">
|
||||
<component :is="item.icon" v-if="item.icon"></component>
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ import { computed } from "vue";
|
|||
|
||||
// https://stackoverflow.com/questions/64775876/vue-3-pass-reactive-object-to-component-with-two-way-binding
|
||||
interface Props {
|
||||
modelValue: {
|
||||
modelValue?: {
|
||||
id: string | number;
|
||||
name: string;
|
||||
};
|
||||
items: DropdownSelectable[];
|
||||
items?: DropdownSelectable[];
|
||||
}
|
||||
|
||||
const emit = defineEmits<{
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import { Dialog, DialogPanel, DialogTitle } from "@headlessui/vue";
|
||||
|
||||
export interface Props {
|
||||
modelValue: boolean;
|
||||
modelValue?: boolean;
|
||||
}
|
||||
|
||||
withDefaults(defineProps<Props>(), {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import ItRow from "@/components/ui/ItRow.vue";
|
||||
|
||||
const props = defineProps<{
|
||||
defineProps<{
|
||||
avatarUrl: string;
|
||||
name: string;
|
||||
}>();
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ import { RadioGroup, RadioGroupLabel, RadioGroupOption } from "@headlessui/vue";
|
|||
interface Props {
|
||||
modelValue: any;
|
||||
items: RadioItem<any>[];
|
||||
label: string | undefined;
|
||||
label?: string | undefined;
|
||||
}
|
||||
|
||||
withDefaults(defineProps<Props>(), {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ export interface Props {
|
|||
disabled?: boolean;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
withDefaults(defineProps<Props>(), {
|
||||
label: undefined,
|
||||
cyKey: "",
|
||||
placeholder: "",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
interface Props {
|
||||
isOpen: boolean;
|
||||
isOpen?: boolean;
|
||||
small?: boolean;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { Switch } from "@headlessui/vue";
|
|||
import { ref } from "vue";
|
||||
|
||||
interface Props {
|
||||
initiallySwitchedLeft: boolean;
|
||||
initiallySwitchedLeft?: boolean;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
|
|
|
|||
|
|
@ -86,19 +86,6 @@ const satisfaction = ref(satisfactionValues[1].value);
|
|||
const satisfactionText =
|
||||
'Wie zufrieden bist du mit dem Kurs "Überbetriebliche Kurse" allgemein?';
|
||||
|
||||
const sourceLabel = "Wie bist du auf das Kursangebot aufmerksam geworden?";
|
||||
const sourceValues = ref([]);
|
||||
const sourceItems = [
|
||||
{
|
||||
name: "Internet",
|
||||
value: "I",
|
||||
},
|
||||
{
|
||||
name: "TV",
|
||||
value: "T",
|
||||
},
|
||||
];
|
||||
|
||||
const textValue = ref("abc");
|
||||
|
||||
const barChartItems = [
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ onMounted(async () => {
|
|||
state.assignment = await assignmentStore.loadAssignment(Number(props.assignmentId));
|
||||
await assignmentStore.loadAssignmentCompletion(
|
||||
Number(props.assignmentId),
|
||||
courseSessionsStore.currentCourseSession!.id,
|
||||
courseSessionsStore.currentCourseSession?.id ?? 0,
|
||||
props.userId
|
||||
);
|
||||
} catch (error) {
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ function finishButtonEnabled() {
|
|||
:disabled="!finishButtonEnabled()"
|
||||
class="btn-secondary z-10"
|
||||
data-cy="next-step"
|
||||
@click="$emit('close')"
|
||||
@click="emit('close')"
|
||||
>
|
||||
<span class="flex items-center">
|
||||
Bewertung abschliessen
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ async function submitEvaluation() {
|
|||
await assignmentStore.evaluateAssignmentCompletion({
|
||||
assignment_user_id: Number(props.assignmentUser.user_id),
|
||||
assignment_id: props.assignment.id,
|
||||
course_session_id: courseSessionsStore.currentCourseSession!.id,
|
||||
course_session_id: courseSessionsStore?.currentCourseSession?.id ?? 0,
|
||||
completion_data: {},
|
||||
completion_status: "evaluation_submitted",
|
||||
evaluation_grade: grade.value ?? undefined,
|
||||
|
|
@ -89,6 +89,7 @@ const evaluationUser = computed(() => {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<!-- eslint-disable vue/no-v-html -->
|
||||
<div>
|
||||
<h3 v-if="evaluationUser && props.showEvaluationUser" class="mb-6">
|
||||
Bewertung von {{ evaluationUser.first_name }} {{ evaluationUser.last_name }}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ function changePoints(points: number) {
|
|||
},
|
||||
});
|
||||
}
|
||||
|
||||
function onUpdateText(value: string) {
|
||||
// log.debug("onUpdateText", value);
|
||||
evaluateAssignmentCompletionDebounced({
|
||||
|
|
@ -61,7 +62,7 @@ async function evaluateAssignmentCompletion(completionData: AssignmentCompletion
|
|||
return assignmentStore.evaluateAssignmentCompletion({
|
||||
assignment_user_id: Number(props.assignmentUser.user_id),
|
||||
assignment_id: props.assignment.id,
|
||||
course_session_id: courseSessionsStore.currentCourseSession!.id,
|
||||
course_session_id: courseSessionsStore?.currentCourseSession?.id ?? 0,
|
||||
completion_data: completionData,
|
||||
completion_status: "evaluation_in_progress",
|
||||
});
|
||||
|
|
@ -74,6 +75,7 @@ const evaluateAssignmentCompletionDebounced = useDebounceFn(
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<!-- eslint-disable vue/no-v-html -->
|
||||
<div>
|
||||
<div class="text-bold mb-4 text-sm">
|
||||
Beurteilungskriterium {{ taskIndex + 1 }} /
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import * as log from "loglevel";
|
|||
|
||||
import LearningContentContainer from "@/pages/learningPath/learningContentPage/LearningContentContainer.vue";
|
||||
import { computed } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSlug: string;
|
||||
|
|
@ -17,7 +17,6 @@ log.debug("SinglePerformanceCriteriaPage.vue setup");
|
|||
const competenceStore = useCompetenceStore();
|
||||
const circleStore = useCircleStore();
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
const singleCriteria = computed(() => {
|
||||
|
|
@ -25,10 +24,6 @@ const singleCriteria = computed(() => {
|
|||
return criteria.slug === props.criteriaSlug;
|
||||
});
|
||||
});
|
||||
|
||||
function close() {
|
||||
router.push(`/course/${props.courseSlug}/competence`);
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
<script setup lang="ts">
|
||||
import { showIcon } from "@/pages/learningPath/circlePage/learningSequenceUtils";
|
||||
import { useCircleStore } from "@/stores/circle";
|
||||
import type { DefaultArcObject } from "d3";
|
||||
import * as d3 from "d3";
|
||||
import pick from "lodash/pick";
|
||||
import * as log from "loglevel";
|
||||
|
|
@ -155,6 +153,7 @@ function render() {
|
|||
.attr("role", "button")
|
||||
.attr("fill", colors.gray[300]);
|
||||
|
||||
/* eslint-disable */
|
||||
learningSequences
|
||||
.on("mouseover", function (d, i) {
|
||||
d3.select(this)
|
||||
|
|
@ -188,40 +187,7 @@ function render() {
|
|||
|
||||
// @ts-ignore
|
||||
learningSequences.append("path").attr("d", wedgeGenerator);
|
||||
|
||||
const learningSequenceText = learningSequences
|
||||
.append("text")
|
||||
.attr("fill", colors.blue[900])
|
||||
.style("font-size", "15px")
|
||||
.text((d) => {
|
||||
return d.title;
|
||||
})
|
||||
.attr("transform", function (d) {
|
||||
let translate = wedgeGenerator.centroid(d as unknown as DefaultArcObject);
|
||||
translate = [translate[0], translate[1] + 20];
|
||||
return "translate(" + translate + ")";
|
||||
})
|
||||
.attr("class", "circlesText text-large font-bold")
|
||||
.style("text-anchor", "middle");
|
||||
|
||||
const iconWidth = 25;
|
||||
|
||||
const learningSequenceIcon = learningSequences
|
||||
.append("svg:image")
|
||||
.attr("xlink:href", (d) => {
|
||||
if (showIcon(d.icon)) {
|
||||
return "/static/icons/" + d.icon.replace("it-", "") + ".svg";
|
||||
}
|
||||
return "";
|
||||
})
|
||||
.attr("width", iconWidth)
|
||||
.attr("height", iconWidth)
|
||||
.attr("transform", function (d) {
|
||||
let translate = wedgeGenerator.centroid(d as unknown as DefaultArcObject);
|
||||
translate = [translate[0] - iconWidth / 2, translate[1] - iconWidth];
|
||||
return "translate(" + translate + ")";
|
||||
})
|
||||
.attr("class", "filter-blue-900");
|
||||
/* eslint-enable */
|
||||
|
||||
// Create Arrows
|
||||
const arrow = d3
|
||||
|
|
|
|||
|
|
@ -2,16 +2,17 @@
|
|||
import ItFullScreenModal from "@/components/ui/ItFullScreenModal.vue";
|
||||
import type { Circle } from "@/services/circle";
|
||||
|
||||
const props = defineProps<{
|
||||
defineProps<{
|
||||
circle: Circle | undefined;
|
||||
show: boolean;
|
||||
}>();
|
||||
|
||||
// const emits = defineEmits(['closemodal'])
|
||||
const emit = defineEmits(["closemodal"]);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<ItFullScreenModal :show="show" @closemodal="$emit('closemodal')">
|
||||
<!-- eslint-disable vue/no-v-html -->
|
||||
<ItFullScreenModal :show="show" @closemodal="emit('closemodal')">
|
||||
<div v-if="circle" class="container-medium">
|
||||
<h1 class="">Überblick: Circle «{{ circle.title }}»</h1>
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ import { reactive } from "vue";
|
|||
import { useI18n } from "vue-i18n";
|
||||
|
||||
export interface Props {
|
||||
learningSequences: DropdownSelectable[];
|
||||
showUploadErrorMessage: boolean;
|
||||
isUploading: boolean;
|
||||
learningSequences?: DropdownSelectable[];
|
||||
showUploadErrorMessage?: boolean;
|
||||
isUploading?: boolean;
|
||||
}
|
||||
|
||||
const { t } = useI18n();
|
||||
|
|
@ -59,7 +59,7 @@ function validateForm() {
|
|||
formErrors.learningSequence = formData.learningSequence.id === -1;
|
||||
formErrors.name = formData.name === "";
|
||||
|
||||
for (const [_name, value] of Object.entries(formErrors)) {
|
||||
for (const [, value] of Object.entries(formErrors)) {
|
||||
if (value) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -68,8 +68,8 @@ function validateForm() {
|
|||
}
|
||||
|
||||
function resetFormErrors() {
|
||||
for (let [_name, value] of Object.entries(formErrors)) {
|
||||
value = false;
|
||||
for (let [, value] of Object.entries(formErrors)) {
|
||||
value = false; // eslint-disable-line
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,9 @@ const props = withDefaults(defineProps<Props>(), {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<!-- eslint-disable vue/no-v-html -->
|
||||
<h3 class="mt-8">{{ $t("assignment.initialSituationTitle") }}</h3>
|
||||
|
||||
<p
|
||||
v-if="props.assignment.starting_position"
|
||||
class="default-wagtail-rich-text text-large"
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ const emit = defineEmits<{
|
|||
}>();
|
||||
</script>
|
||||
<template>
|
||||
<!-- eslint-disable vue/no-v-html -->
|
||||
<div
|
||||
v-for="task in props.assignment.tasks ?? []"
|
||||
:key="task.id"
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ const completionStatus = computed(() => {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<!-- eslint-disable vue/no-v-html -->
|
||||
<div class="flex flex-col space-y-10">
|
||||
<div v-for="(block, index) in props.task.value.content" :key="block.id">
|
||||
<div v-if="block.type === 'explanation'">
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
<template>
|
||||
<!-- eslint-disable vue/no-v-html -->
|
||||
<div class="container-medium">
|
||||
<div class="lg:mt-8">
|
||||
<p class="text-large my-4">{{ value.description }}</p>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ interface Value {
|
|||
description: string;
|
||||
}
|
||||
|
||||
const props = defineProps<{
|
||||
defineProps<{
|
||||
value: Value;
|
||||
content: LearningContent;
|
||||
}>();
|
||||
|
|
|
|||
|
|
@ -24,13 +24,13 @@
|
|||
|
||||
<script setup lang="ts">
|
||||
interface Props {
|
||||
avatarUrl: string;
|
||||
title: string;
|
||||
description: string;
|
||||
feedbackSent: boolean;
|
||||
avatarUrl?: string;
|
||||
title?: string;
|
||||
description?: string;
|
||||
feedbackSent?: boolean;
|
||||
}
|
||||
|
||||
const _props = withDefaults(defineProps<Props>(), {
|
||||
withDefaults(defineProps<Props>(), {
|
||||
avatarUrl: "",
|
||||
title: "",
|
||||
description: "",
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import type { LearningContentType } from "@/types";
|
|||
import { learningContentTypeData } from "@/utils/typeMaps";
|
||||
|
||||
interface Props {
|
||||
title: string | undefined;
|
||||
title?: string;
|
||||
subtitle: string;
|
||||
learningContentType: LearningContentType;
|
||||
showStartButton: boolean;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import type { LearningContentType } from "@/types";
|
|||
import { learningContentTypeData } from "@/utils/typeMaps";
|
||||
|
||||
export interface Props {
|
||||
title: string;
|
||||
title?: string;
|
||||
learningContentType: LearningContentType;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<script setup lang="ts">
|
||||
import type { CircleSectorData } from "@/pages/learningPath/learningPathPage/LearningPathCircle.vue";
|
||||
import LearningPathCircle from "@/pages/learningPath/learningPathPage/LearningPathCircle.vue";
|
||||
import LearningPathContinueButton from "@/pages/learningPath/learningPathPage/LearningPathContinueButton.vue";
|
||||
import { calculateCircleSectorData } from "@/pages/learningPath/learningPathPage/utils";
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
interface Props {
|
||||
hasProgress: boolean;
|
||||
url: string;
|
||||
hasProgress?: boolean;
|
||||
url?: string;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<script setup lang="ts">
|
||||
import type { CircleSectorData } from "@/pages/learningPath/learningPathPage/LearningPathCircle.vue";
|
||||
import LearningPathCircleListTile from "@/pages/learningPath/learningPathPage/LearningPathCircleListTile.vue";
|
||||
import type { Circle } from "@/services/circle";
|
||||
import type { LearningPath } from "@/services/learningPath";
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<script setup lang="ts">
|
||||
import type { CircleSectorData } from "@/pages/learningPath/learningPathPage/LearningPathCircle.vue";
|
||||
import LearningPathCircleColumn from "@/pages/learningPath/learningPathPage/LearningPathCircleColumn.vue";
|
||||
import LearningPathScrollButton from "@/pages/learningPath/learningPathPage/LearningPathScrollButton.vue";
|
||||
import type { Circle } from "@/services/circle";
|
||||
|
|
|
|||
Loading…
Reference in New Issue