From 6e6d636edbf31671086e81eef436a8e6c001fde4 Mon Sep 17 00:00:00 2001 From: Christian Hartmann Date: Fri, 17 Jul 2026 21:27:47 +0200 Subject: [PATCH] refactor: continue TS migration Signed-off-by: Christian Hartmann --- package-lock.json | 54 +- package.json | 7 +- src/components/AppNavigationForm.vue | 79 +-- src/components/PaginationToolbar.vue | 19 +- src/components/PillMenu.vue | 75 ++- src/components/QRDialog.vue | 38 +- src/components/Questions/AnswerInput.vue | 203 +++++--- src/components/Questions/Question.vue | 84 +-- src/components/Questions/QuestionColor.vue | 21 +- src/components/Questions/QuestionDate.vue | 181 ++++--- src/components/Questions/QuestionDropdown.vue | 35 +- src/components/Questions/QuestionFile.vue | 193 ++++--- src/components/Questions/QuestionGrid.vue | 99 ++-- .../Questions/QuestionLinearScale.vue | 87 ++-- src/components/Questions/QuestionLong.vue | 27 +- src/components/Questions/QuestionMultiple.vue | 178 ++++--- src/components/Questions/QuestionRanking.vue | 88 ++-- src/components/Questions/QuestionShort.vue | 67 ++- src/components/TopBar.vue | 50 +- src/mixins/QuestionMixin.ts | 5 +- src/mixins/QuestionMultipleMixin.ts | 22 +- src/mixins/ShareLinkMixin.ts | 9 +- src/mixins/UserSearchMixin.ts | 18 +- src/mixins/ViewsMixin.ts | 79 +-- src/models/AnswerTypes.ts | 1 + src/models/Entities.d.ts | 56 ++ src/models/FileTypes.ts | 2 + src/models/ValidationTypes.ts | 1 + src/types/markdown-it.d.ts | 28 + src/types/vue-router.d.ts | 13 + src/utils/SetWindowTitle.ts | 10 + src/views/Create.vue | 229 +++++--- src/views/Results.vue | 488 +++++++++--------- src/views/Submit.vue | 280 ++++++---- 34 files changed, 1798 insertions(+), 1028 deletions(-) create mode 100644 src/types/markdown-it.d.ts create mode 100644 src/types/vue-router.d.ts diff --git a/package-lock.json b/package-lock.json index 1df1df9e7..6ffb15d5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,11 +39,13 @@ "@nextcloud/vite-config": "^2.5.2", "@playwright/test": "^1.61.1", "@types/node": "^26.1.1", + "@types/qrcode": "^1.5.6", "@vue/tsconfig": "^0.9.1", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.6", "prettier": "^3.9.5", - "vite": "^7.3.6" + "vite": "^7.3.6", + "vue-tsc": "^3.3.7" }, "engines": { "node": "^24.0.0", @@ -3194,6 +3196,16 @@ "undici-types": "~8.3.0" } }, + "node_modules/@types/qrcode": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.6.tgz", + "integrity": "sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", @@ -13106,6 +13118,46 @@ } } }, + "node_modules/vue-tsc": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.3.7.tgz", + "integrity": "sha512-+C+rgD49wAQ5bUTl2sp5a8Bzg4YoldMNXM+g7CFe604MYcQ8PrZPMQhIjJSzKXtPBCa+C5ayMipqjbA7splekQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/typescript": "2.4.28", + "@vue/language-core": "3.3.7" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + }, + "node_modules/vue-tsc/node_modules/@vue/language-core": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.3.7.tgz", + "integrity": "sha512-LzmkKinXAMMoh8Jfi/jMUSDUjuPdv8mynH5WJGKfXyZtDw3hQ6GBaoI6Bcnl/Xqlu32q/0Z6i/trp4VXykzyLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.28", + "@vue/compiler-dom": "^3.5.0", + "@vue/shared": "^3.5.0", + "alien-signals": "^3.2.1", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1", + "picomatch": "^4.0.4" + } + }, + "node_modules/vue-tsc/node_modules/alien-signals": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-3.2.1.tgz", + "integrity": "sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==", + "dev": true, + "license": "MIT" + }, "node_modules/wait-on": { "version": "9.0.10", "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-9.0.10.tgz", diff --git a/package.json b/package.json index 9029c8d3d..04d1d2931 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "lint:fix": "eslint --ext .js,.ts,.vue src --fix", "start:nextcloud": "node playwright/start-nextcloud-server.mjs", "stylelint": "stylelint \"src/**/*.scss\" \"src/**/*.vue\"", - "stylelint:fix": "stylelint \"src/**/*.scss\" \"src/**/*.vue\" --fix" + "stylelint:fix": "stylelint \"src/**/*.scss\" \"src/**/*.vue\" --fix", + "typecheck": "vue-tsc --noEmit -p tsconfig.json" }, "browserslist": [ "extends @nextcloud/browserslist-config" @@ -59,11 +60,13 @@ "@nextcloud/vite-config": "^2.5.2", "@playwright/test": "^1.61.1", "@types/node": "^26.1.1", + "@types/qrcode": "^1.5.6", "@vue/tsconfig": "^0.9.1", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.6", "prettier": "^3.9.5", - "vite": "^7.3.6" + "vite": "^7.3.6", + "vue-tsc": "^3.3.7" }, "engines": { "node": "^24.0.0", diff --git a/src/components/AppNavigationForm.vue b/src/components/AppNavigationForm.vue index 232bea551..21dcfb774 100644 --- a/src/components/AppNavigationForm.vue +++ b/src/components/AppNavigationForm.vue @@ -97,7 +97,10 @@ - diff --git a/src/components/PaginationToolbar.vue b/src/components/PaginationToolbar.vue index f84d0b848..741321fb2 100644 --- a/src/components/PaginationToolbar.vue +++ b/src/components/PaginationToolbar.vue @@ -63,16 +63,18 @@ -