From 1ad00cece33f94ff52f6c4e9b509248550df8fec Mon Sep 17 00:00:00 2001 From: Lukas Hroch Date: Sun, 6 Oct 2024 22:38:42 +0100 Subject: [PATCH] feat(fw): vue3 upgrade (V4-1249) --- .github/renovate.json5 | 13 +- .github/workflows/ci.yml | 6 +- apps/admin/.env-template | 1 + apps/admin/env.d.ts | 4 + apps/admin/package.json | 36 +- apps/admin/src/app.vue | 130 +- apps/admin/src/bootstrap.ts | 17 - .../data-tables/action-bar/action-bar.vue | 27 +- .../data-tables/action-bar/action-mixin.ts | 21 +- .../data-tables/action-bar/download.vue | 3 +- .../data-tables/action-bar/edit.vue | 8 +- .../data-tables/action-bar/read.vue | 8 +- .../data-tables/data-table-filter.vue | 2 +- .../src/components/data-tables/data-table.vue | 78 +- .../data-tables/embedded-data-table.vue | 17 +- .../admin/src/components/data-tables/index.ts | 1 + .../components/data-tables/use-data-table.ts | 22 +- .../dialogs/csv-upload/csv-upload.vue | 26 +- .../dialogs/event-notifications.vue | 168 +- .../components/dialogs/information-popup.vue | 6 +- .../src/components/dialogs/options-menu.vue | 19 +- .../components/dialogs/select-resource.vue | 96 +- .../src/components/editors/html-editor.vue | 85 +- .../components/editors/json-editor-dialog.vue | 38 +- .../src/components/editors/json-editor.vue | 12 +- .../components/entry/confirm-leave-dialog.vue | 27 +- apps/admin/src/components/entry/layout.vue | 244 +- .../src/components/fdbs/add-food-dialog.vue | 40 +- .../associated-foods/associated-food-list.vue | 120 +- .../src/components/fdbs/attribute-list.vue | 40 +- .../fdbs/categories/add-category-dialog.vue | 61 +- .../fdbs/categories/category-list.vue | 36 +- .../src/components/fdbs/copy-entry-dialog.vue | 41 +- .../src/components/fdbs/food-explorer.vue | 53 +- .../admin/src/components/fdbs/food-search.vue | 55 +- .../fdbs/locales/add-locale-dialog.vue | 65 +- .../components/fdbs/locales/locale-list.vue | 43 +- .../fdbs/nutrients/add-nutrient-dialog.vue | 174 +- .../fdbs/nutrients/nutrient-list.vue | 54 +- .../portion-sizes/parameters/as-served.vue | 2 +- .../portion-sizes/parameters/drink-scale.vue | 2 +- .../portion-sizes/parameters/guide-image.vue | 2 +- .../parameters/milk-in-a-hot-drink.vue | 7 +- .../parameters/milk-on-cereal.vue | 2 +- .../parameters/no-parameters.vue | 2 +- .../parameters/parent-food-portion.vue | 33 +- .../fdbs/portion-sizes/parameters/pizza.vue | 2 +- .../parameters/standard-portion.vue | 41 +- .../parameters/use-parameters.ts | 4 +- .../portion-size-method-list.vue | 86 +- .../portion-size-method-selector.vue | 30 +- .../fdbs/portion-sizes/portion-sizes.ts | 8 +- .../components/feedback/cards/card-list.vue | 81 +- .../feedback/cards/card-selector.vue | 90 +- .../feedback/cards/card-types/character.vue | 32 +- .../feedback/cards/card-types/five-a-day.vue | 16 +- .../cards/card-types/nutrient-group.vue | 266 +- .../cards/partials/card-thresholds.vue | 15 +- .../feedback/cards/partials/card-unit.vue | 22 +- .../cards/partials/character-sentiments.vue | 166 +- .../demographic-group-list.vue | 162 +- .../demographic-group-range.vue | 36 +- .../demographic-group-sectors.vue | 252 +- .../henry-coefficient-list.vue | 132 +- .../feedback/meals/table-field-list.vue | 155 +- .../components/feedback/preview/preview.vue | 17 +- .../src/components/forms/auto-complete.vue | 105 +- .../src/components/forms/date-picker.vue | 120 +- .../admin/src/components/forms/error-list.vue | 4 +- .../components/forms/language-selector.vue | 76 +- .../src/components/forms/submit-footer.vue | 13 +- apps/admin/src/components/gallery/gallery.vue | 19 +- .../jobs/params/clean-redis-store.vue | 4 +- .../src/components/jobs/params/job-params.ts | 8 +- .../components/jobs/params/locale-copy.vue | 6 +- .../params/locale-food-ranking-upload.vue | 9 +- .../params/nutrient-table-data-import.vue | 2 +- .../params/nutrient-table-mapping-import.vue | 2 +- .../jobs/params/resource-export.vue | 4 +- .../jobs/params/survey-data-export.vue | 4 +- .../jobs/params/survey-event-notification.vue | 6 +- .../jobs/params/survey-respondents-import.vue | 2 +- .../src/components/jobs/polls-job-list.vue | 44 +- .../admin/src/components/lists/color-list.vue | 94 +- apps/admin/src/components/lists/meal-list.vue | 138 +- .../src/components/lists/nutrient-list.vue | 117 +- .../src/components/lists/options-list.vue | 232 +- .../prompts/custom/checkbox-list-prompt.vue | 18 +- .../prompts/custom/date-picker-prompt.vue | 22 +- .../components/prompts/custom/info-prompt.vue | 2 +- .../custom/no-more-information-prompt.vue | 2 +- .../prompts/custom/radio-list-prompt.vue | 22 +- .../prompts/custom/select-prompt.vue | 17 +- .../prompts/custom/slider-prompt.vue | 4 +- .../prompts/custom/textarea-prompt.vue | 2 +- .../prompts/custom/time-picker-prompt.vue | 22 +- .../prompts/custom/yes-no-prompt.vue | 2 +- .../prompts/list/load-prompt-dialog.vue | 324 +- .../prompts/list/prompt-list-item.vue | 378 +- .../components/prompts/list/prompt-list.vue | 371 +- .../prompts/list/save-as-template-dialog.vue | 32 +- .../prompts/partials/barcode-settings.vue | 30 +- .../prompts/partials/base-prompt.ts | 8 +- .../partials/conditions/boolean-check.vue | 10 +- .../partials/conditions/flag-check.vue | 12 +- .../conditions/food-completion-check.vue | 14 +- .../conditions/meal-completion-check.vue | 14 +- .../conditions/prompt-answer-check.vue | 36 +- .../prompts/partials/conditions/summary.vue | 28 +- .../prompts/partials/conditions/tag-check.vue | 12 +- .../partials/conditions/user-field-check.vue | 39 +- .../partials/conditions/value-check.vue | 32 +- .../prompts/partials/counter-settings.vue | 14 +- .../partials/external-source-settings.vue | 50 +- .../partials/food-browser-settings.vue | 16 +- .../prompts/partials/image-map-settings.vue | 16 +- .../prompts/partials/prompt-actions.vue | 458 +- .../prompts/partials/prompt-conditions.vue | 289 +- .../prompts/partials/prompt-content.vue | 270 +- .../prompts/partials/prompt-json.vue | 25 +- .../prompts/partials/prompt-validation.vue | 74 +- .../prompts/partials/slider-settings.vue | 44 +- .../prompts/partials/use-base-prompt.ts | 10 +- .../prompts/portion-size/as-served-prompt.vue | 12 +- .../prompts/portion-size/cereal-prompt.vue | 14 +- .../portion-size/direct-weight-prompt.vue | 4 +- .../portion-size/drink-scale-prompt.vue | 22 +- .../portion-size/guide-image-prompt.vue | 56 +- .../milk-in-a-hot-drink-prompt.vue | 14 +- .../portion-size/milk-on-cereal-prompt.vue | 10 +- .../portion-size/missing-food-prompt.vue | 4 +- .../parent-food-portion-prompt.vue | 14 +- .../prompts/portion-size/pizza-prompt.vue | 6 +- .../prompts/portion-size/pizza-v2-prompt.vue | 6 +- .../portion-size-option-prompt.vue | 2 +- .../portion-size/recipe-builder-prompt.vue | 6 +- .../portion-size/standard-portion-prompt.vue | 8 +- .../components/prompts/prompt-selector.vue | 87 +- .../prompts/prompt-type-selector.vue | 22 +- .../prompts/standard/addon-foods-prompt.vue | 34 +- .../standard/aggregate-choice-prompt.vue | 56 +- .../standard/associated-foods-prompt.vue | 10 +- .../prompts/standard/edit-meal-prompt.vue | 8 +- .../standard/external-source-prompt.vue | 4 +- .../prompts/standard/final-prompt.vue | 12 +- .../prompts/standard/food-search-prompt.vue | 14 +- .../general-associated-foods-prompt.vue | 46 +- .../prompts/standard/meal-add-prompt.vue | 12 +- .../prompts/standard/meal-duration-prompt.vue | 4 +- .../prompts/standard/meal-gap-prompt.vue | 24 +- .../prompts/standard/meal-time-prompt.vue | 42 +- .../prompts/standard/ready-meal-prompt.vue | 2 +- .../prompts/standard/recall-date-prompt.vue | 22 +- .../prompts/standard/redirect-prompt.vue | 40 +- .../standard/review-confirm-prompt.vue | 2 +- .../standard/same-as-before-prompt.vue | 2 +- .../prompts/standard/split-food-prompt.vue | 2 +- .../prompts/standard/submit-prompt.vue | 24 +- .../components/schemes/copy-scheme-dialog.vue | 37 +- .../schemes/data-export-nutrients.vue | 12 +- .../components/securables/owner-dialog.vue | 34 +- .../src/components/securables/securable.vue | 70 +- .../src/components/securables/user-dialog.vue | 80 +- .../src/components/sidebar/menu-item.vue | 21 +- .../src/components/sidebar/menu-tree.vue | 19 +- .../src/components/toolbar/action-mixin.ts | 7 +- apps/admin/src/components/toolbar/create.vue | 6 +- apps/admin/src/components/toolbar/edit.vue | 4 +- apps/admin/src/components/toolbar/read.vue | 4 +- .../admin/src/components/toolbar/tool-bar.vue | 32 +- apps/admin/src/components/user/mfa/duo.vue | 74 +- apps/admin/src/components/user/mfa/fido.vue | 90 +- apps/admin/src/components/user/mfa/mfa.vue | 94 +- apps/admin/src/components/user/mfa/otp.vue | 116 +- apps/admin/src/components/user/password.vue | 54 +- .../src/components/web-push/web-push.vue | 16 +- .../src/composables/entry/use-entry-fetch.ts | 2 +- .../src/composables/entry/use-entry-form.ts | 6 +- .../src/composables/entry/use-entry-watch.ts | 11 +- .../src/composables/use-list-with-dialog.ts | 10 +- apps/admin/src/composables/use-selects.ts | 31 +- apps/admin/src/i18n/index.ts | 9 +- apps/admin/src/main.ts | 70 +- apps/admin/src/mixins/index.ts | 1 - apps/admin/src/mixins/is-mobile.ts | 9 - apps/admin/src/plugins/vuetify.ts | 95 +- apps/admin/src/router/guards.ts | 10 +- apps/admin/src/router/index.ts | 27 +- apps/admin/src/router/resources.ts | 2 +- apps/admin/src/scss/app.scss | 40 +- apps/admin/src/scss/fontawesome.scss | 1 + apps/admin/src/scss/settings.scss | 41 + apps/admin/src/scss/vuetify.scss | 72 - apps/admin/src/shims-vue.d.ts | 5 - apps/admin/src/stores/entry.ts | 2 +- apps/admin/src/types/common.ts | 4 +- apps/admin/src/{ => types}/globals.d.ts | 9 +- apps/admin/src/types/vite-env.d.ts | 26 + apps/admin/src/types/vue-router.d.ts | 13 + apps/admin/src/util/objects.ts | 4 +- apps/admin/src/views/authentication/login.vue | 30 +- .../src/views/authentication/mfa-dialog.vue | 62 +- .../views/authentication/password-request.vue | 18 +- .../views/authentication/password-reset.vue | 22 +- .../admin/src/views/authentication/signup.vue | 62 +- .../admin/src/views/authentication/verify.vue | 10 +- apps/admin/src/views/fdbs/browse.vue | 63 +- .../views/fdbs/category-or-food/category.vue | 32 +- .../src/views/fdbs/category-or-food/food.vue | 36 +- apps/admin/src/views/fdbs/read.vue | 9 +- .../src/views/feedback-schemes/browse.vue | 51 +- .../views/feedback-schemes/cards/browse.vue | 2 +- .../demographic-groups/browse.vue | 2 +- .../admin/src/views/feedback-schemes/form.vue | 71 +- .../henry-coefficients/browse.vue | 2 +- .../views/feedback-schemes/meals/browse.vue | 36 +- .../admin/src/views/feedback-schemes/read.vue | 4 +- .../src/views/feedback-schemes/sections.vue | 141 +- .../feedback-schemes/top-foods/browse.vue | 34 +- apps/admin/src/views/food-groups/browse.vue | 51 +- apps/admin/src/views/food-groups/form.vue | 6 +- apps/admin/src/views/food-groups/read.vue | 4 +- .../views/images/as-served-sets/create.vue | 10 +- .../src/views/images/as-served-sets/edit.vue | 8 +- .../views/images/as-served-sets/images.vue | 24 +- .../src/views/images/as-served-sets/read.vue | 4 +- .../components/DrinkwareObjectChooser.vue | 4 +- .../components/SlidingScaleEditor.vue | 37 +- .../components/VolumeSamplesTable.vue | 28 +- .../views/images/drinkware-sets/create.vue | 10 +- .../src/views/images/drinkware-sets/edit.vue | 30 +- .../src/views/images/drinkware-sets/read.vue | 6 +- apps/admin/src/views/images/guide-drawer.vue | 43 +- .../src/views/images/guide-images/create.vue | 10 +- .../src/views/images/guide-images/edit.vue | 10 +- .../src/views/images/guide-images/read.vue | 4 +- .../src/views/images/image-maps/create.vue | 10 +- .../src/views/images/image-maps/edit.vue | 8 +- .../src/views/images/image-maps/read.vue | 4 +- apps/admin/src/views/jobs/browse.vue | 90 +- apps/admin/src/views/jobs/read.vue | 13 +- apps/admin/src/views/languages/browse.vue | 61 +- apps/admin/src/views/languages/form.vue | 72 +- apps/admin/src/views/languages/read.vue | 4 +- .../views/languages/translations/browse.vue | 78 +- .../translations/translation-section.vue | 327 +- apps/admin/src/views/locales/browse.vue | 61 +- .../src/views/locales/food-ranking/browse.vue | 6 +- apps/admin/src/views/locales/form.vue | 102 +- apps/admin/src/views/locales/read.vue | 4 +- .../src/views/locales/recipe-foods/browse.vue | 179 +- .../locales/recipe-foods/steps-dialog.vue | 299 +- .../src/views/locales/split-lists/browse.vue | 144 +- .../src/views/locales/split-words/browse.vue | 63 +- .../src/views/locales/synonym-sets/browse.vue | 63 +- apps/admin/src/views/locales/tasks/browse.vue | 16 +- .../src/views/nutrient-tables/browse.vue | 51 +- apps/admin/src/views/nutrient-tables/form.vue | 206 +- apps/admin/src/views/nutrient-tables/read.vue | 16 +- .../views/nutrient-tables/tasks/browse.vue | 16 +- .../admin/src/views/nutrient-types/browse.vue | 61 +- apps/admin/src/views/nutrient-types/form.vue | 18 +- apps/admin/src/views/nutrient-types/read.vue | 4 +- .../admin/src/views/nutrient-units/browse.vue | 61 +- apps/admin/src/views/nutrient-units/form.vue | 12 +- apps/admin/src/views/nutrient-units/read.vue | 4 +- apps/admin/src/views/permissions/browse.vue | 65 +- apps/admin/src/views/permissions/form.vue | 10 +- apps/admin/src/views/permissions/read.vue | 4 +- .../src/views/permissions/roles/browse.vue | 10 +- .../src/views/permissions/users/browse.vue | 10 +- apps/admin/src/views/roles/browse.vue | 65 +- apps/admin/src/views/roles/form.vue | 16 +- .../src/views/roles/permissions/browse.vue | 10 +- apps/admin/src/views/roles/read.vue | 4 +- apps/admin/src/views/roles/users/browse.vue | 10 +- apps/admin/src/views/sign-in-logs/browse.vue | 98 +- apps/admin/src/views/sign-in-logs/read.vue | 4 +- .../admin/src/views/standard-units/browse.vue | 51 +- .../standard-units/categories/browse.vue | 68 +- .../src/views/standard-units/foods/browse.vue | 68 +- apps/admin/src/views/standard-units/form.vue | 28 +- apps/admin/src/views/standard-units/read.vue | 4 +- .../views/survey-scheme-prompts/browse.vue | 71 +- .../src/views/survey-scheme-prompts/form.vue | 14 +- .../src/views/survey-scheme-prompts/read.vue | 6 +- .../src/views/survey-scheme-prompts/sync.vue | 78 +- .../admin/src/views/survey-schemes/browse.vue | 51 +- .../survey-schemes/data-export/browse.vue | 108 +- .../data-export/data-export-section.vue | 363 +- apps/admin/src/views/survey-schemes/form.vue | 44 +- .../views/survey-schemes/prompts/browse.vue | 53 +- apps/admin/src/views/survey-schemes/read.vue | 4 +- apps/admin/src/views/surveys/browse.vue | 71 +- apps/admin/src/views/surveys/form.vue | 125 +- .../src/views/surveys/overrides/browse.vue | 48 +- .../surveys/overrides/override-field.vue | 10 +- apps/admin/src/views/surveys/read.vue | 4 +- .../src/views/surveys/respondents/browse.vue | 138 +- .../respondents/respondent-feedback.vue | 48 +- .../respondents-auth-url-export.vue | 24 +- .../respondents/respondents-upload.vue | 26 +- .../src/views/surveys/sessions/browse.vue | 102 +- .../src/views/surveys/submissions/browse.vue | 100 +- apps/admin/src/views/surveys/tasks/browse.vue | 20 +- apps/admin/src/views/tasks/browse.vue | 88 +- apps/admin/src/views/tasks/form.vue | 24 +- apps/admin/src/views/tasks/read.vue | 10 +- apps/admin/src/views/user/jobs/browse.vue | 114 +- apps/admin/src/views/user/jobs/create.vue | 30 +- apps/admin/src/views/user/jobs/read.vue | 13 +- .../user/personal-access-tokens/browse.vue | 257 +- apps/admin/src/views/user/profile.vue | 173 +- apps/admin/src/views/users/browse.vue | 51 +- apps/admin/src/views/users/form.vue | 40 +- .../src/views/users/permissions/browse.vue | 10 +- apps/admin/src/views/users/read.vue | 12 +- apps/admin/src/views/users/roles/browse.vue | 10 +- apps/admin/tsconfig.app.json | 27 + apps/admin/tsconfig.json | 19 +- apps/admin/tsconfig.node.json | 22 + apps/admin/tsconfig.tc.json | 14 + apps/admin/vite.config.ts | 30 +- apps/api/package.json | 10 +- .../admin/fdbs/category.controller.ts | 2 +- .../controllers/admin/fdbs/food.controller.ts | 2 +- apps/api/src/http/routers/i18n.router.ts | 4 +- .../src/services/admin/language.service.ts | 16 +- apps/api/webpack.config.js | 5 +- apps/cli/package.json | 4 +- apps/survey/.env-template | 1 + apps/survey/env.d.ts | 5 + apps/survey/package.json | 33 +- apps/survey/src/app.vue | 189 +- apps/survey/src/bootstrap.ts | 13 - .../elements/CategoryContentsView.vue | 31 +- .../elements/ExpansionPanelActions.vue | 6 +- .../src/components/elements/FoodBrowser.vue | 736 ++- .../components/elements/FoodBrowserDialog.vue | 14 +- .../components/elements/FoodSearchResults.vue | 40 - .../src/components/elements/InfoAlert.vue | 5 +- .../elements/MissingAllRecipeIngredients.vue | 63 +- .../components/elements/MissingFoodPanel.vue | 89 +- .../components/elements/SelectedFoodList.vue | 20 +- .../components/elements/SurveyProgressBar.vue | 2 - .../components/elements/ValidInvalidIcon.vue | 4 +- .../src/components/elements/YesNoToggle.vue | 17 +- apps/survey/src/components/elements/index.ts | 3 +- .../{ => elements}/request-help.vue | 68 +- .../{ => elements}/survey-rating.vue | 71 +- .../handlers/custom/CustomPromptHandler.vue | 81 +- .../custom/MultiCustomPromptHandler.vue | 80 +- .../mixins/use-prompt-handler-no-store.ts | 2 +- .../mixins/use-prompt-handler-store.ts | 2 +- .../portion-size/AsServedPromptHandler.vue | 2 +- .../portion-size/CerealPromptHandler.vue | 2 +- .../DirectWeightPromptHandler.vue | 2 +- .../portion-size/DrinkScalePromptHandler.vue | 2 +- .../portion-size/GuideImagePromptHandler.vue | 2 +- .../MilkInAHotDrinkPromptHandler.vue | 2 +- .../MilkOnCerealPromptHandler.vue | 2 +- .../portion-size/MissingFoodPromptHandler.vue | 2 +- .../ParentFoodPortionPromptHandler.vue | 2 +- .../portion-size/PizzaPromptHandler.vue | 2 +- .../portion-size/PizzaV2PromptHandler.vue | 2 +- .../PortionSizeOptionPromptHandler.vue | 2 +- .../RecipeBuilderPromptHandler.vue | 2 +- .../StandardPortionPromptHandler.vue | 2 +- .../standard/AddonFoodsPromptHandler.vue | 3 - .../standard/AssociatedFoodsPromptHandler.vue | 3 +- .../standard/EditMealPromptHandler.vue | 2 +- .../handlers/standard/FinalPromptHandler.vue | 2 +- .../GeneralAssociatedFoodsPromptHandler.vue | 3 +- .../standard/MealAddPromptHandler.vue | 8 +- .../standard/MealGapPromptHandler.vue | 2 + .../standard/RecallDatePromptHandler.vue | 1 - .../standard/RedirectPromptHandler.vue | 2 +- apps/survey/src/components/index.ts | 2 - .../meal-list/desktop/context-menu.vue | 35 +- .../layouts/meal-list/desktop/food-item.vue | 86 +- .../layouts/meal-list/desktop/list.vue | 28 +- .../desktop/meal-item-expandable.vue | 11 +- .../layouts/meal-list/desktop/meal-item.vue | 36 +- .../meal-list/desktop/reviewed-list.vue | 55 +- .../layouts/meal-list/mobile/context-menu.vue | 11 +- .../layouts/meal-list/mobile/food-item.vue | 87 +- .../layouts/meal-list/mobile/list.vue | 16 +- .../layouts/meal-list/mobile/meal-item.vue | 32 +- .../meal-list/mobile/reviewed-list.vue | 13 +- .../layouts/meal-list/use-context-menu.ts | 2 +- .../layouts/meal-list/use-food-item.ts | 10 +- .../layouts/meal-list/use-meal-item.ts | 12 +- .../layouts/meal-list/use-meal-list.ts | 6 +- .../layouts/meal-list/use-review-list.ts | 4 +- .../src/components/layouts/navigation.vue | 10 +- .../prompts/actions/next-mobile.vue | 17 +- .../src/components/prompts/actions/next.vue | 21 +- .../prompts/custom/checkbox-list-prompt.vue | 40 +- .../prompts/custom/date-picker-prompt.vue | 7 +- .../components/prompts/custom/info-prompt.vue | 8 +- .../custom/no-more-information-prompt.vue | 78 +- .../prompts/custom/radio-list-prompt.vue | 29 +- .../prompts/custom/select-prompt.vue | 21 +- .../prompts/custom/slider-prompt.vue | 31 +- .../prompts/custom/textarea-prompt.vue | 19 +- .../prompts/custom/time-picker-prompt.vue | 15 +- .../prompts/custom/yes-no-prompt.vue | 14 +- .../prompts/layouts/base-layout.vue | 79 +- .../prompts/layouts/breadcrumbs.vue | 29 +- .../prompts/layouts/card-layout.vue | 78 +- .../prompts/layouts/layout-mixin.ts | 156 - .../prompts/layouts/panel-layout.vue | 69 +- .../components/prompts/layouts/use-layout.ts | 118 + .../src/components/prompts/multi-prompt.vue | 14 +- .../prompts/partials/AsServedSelector.vue | 90 +- .../prompts/partials/AsServedWeightFactor.vue | 47 +- .../prompts/partials/DrinkScalePanel.vue | 290 +- .../prompts/partials/DrinkScaleV2Panel.vue | 510 +-- .../prompts/partials/EditableFoodList.vue | 264 +- .../prompts/partials/ImageMapSelector.vue | 168 +- .../prompts/partials/LinkedQuantity.vue | 26 +- .../prompts/partials/MealFoodChooser.vue | 16 +- .../partials/PinchZoomImageMapSelector.vue | 15 +- .../prompts/partials/QuantityBadge.vue | 2 +- .../prompts/partials/QuantityCard.vue | 16 +- .../prompts/partials/QuantitySlider.vue | 31 +- .../prompts/partials/use-date-picker.ts | 19 +- .../prompts/partials/use-standard-units.ts | 2 +- .../prompts/portion/AsServedPrompt.vue | 47 +- .../prompts/portion/CerealPrompt.vue | 52 +- .../prompts/portion/DirectWeightPrompt.vue | 10 +- .../prompts/portion/DrinkScalePrompt.vue | 68 +- .../prompts/portion/GuideImagePrompt.vue | 43 +- .../prompts/portion/MilkInAHotDrinkPrompt.vue | 25 +- .../prompts/portion/MilkOnCerealPrompt.vue | 30 +- .../prompts/portion/MissingFoodPrompt.vue | 62 +- .../portion/ParentFoodPortionPrompt.vue | 25 +- .../prompts/portion/PizzaPrompt.vue | 48 +- .../prompts/portion/PizzaV2Prompt.vue | 73 +- .../portion/PortionSizeOptionPrompt.vue | 22 +- .../prompts/portion/RecipeBuilderPrompt.vue | 56 +- .../prompts/portion/StandardPortionPrompt.vue | 52 +- .../prompts/portion/createBasePortion.ts | 25 +- .../prompts/portion/options/image.vue | 2 +- .../prompts/portion/options/index.ts | 1 + .../prompts/portion/options/options.vue | 8 +- .../portion/options/standard-units.vue | 17 +- .../prompts/standard/AddonFoodsPrompt.vue | 133 +- .../standard/AssociatedFoodsPrompt.vue | 90 +- .../prompts/standard/EditMealPrompt.vue | 47 +- .../prompts/standard/ExternalSourcePrompt.vue | 25 +- .../prompts/standard/FinalPrompt.vue | 20 +- .../prompts/standard/FoodSearchPrompt.vue | 8 +- .../prompts/standard/MealAddPrompt.vue | 34 +- .../prompts/standard/MealDurationPrompt.vue | 23 +- .../prompts/standard/MealGapPrompt.vue | 26 +- .../prompts/standard/MealTimePrompt.vue | 25 +- .../prompts/standard/ReadyMealPrompt.vue | 12 +- .../prompts/standard/RecallDatePrompt.vue | 6 +- .../prompts/standard/RedirectPrompt.vue | 34 +- .../prompts/standard/ReviewConfirmPrompt.vue | 64 +- .../prompts/standard/SameAsBeforePrompt.vue | 86 +- .../prompts/standard/SplitFoodPrompt.vue | 38 +- .../prompts/standard/SubmitPrompt.vue | 6 +- .../AggregateChoicePrompt.vue | 189 +- .../external-sources/OpenFoodFacts.vue | 34 +- .../src/components/recall/recall-desktop.vue | 7 +- .../src/components/recall/recall-mixin.ts | 10 +- .../src/components/recall/recall-mobile.vue | 2 +- .../src/composables/use-prompt-utils.ts | 14 +- .../src/dynamic-recall/prompt-manager.ts | 2 +- apps/survey/src/i18n/index.ts | 6 +- apps/survey/src/main.ts | 61 +- apps/survey/src/mixins/index.ts | 1 - apps/survey/src/mixins/platform.ts | 10 - apps/survey/src/plugins/vuetify.ts | 63 +- apps/survey/src/router/index.ts | 21 +- apps/survey/src/scss/app.scss | 25 +- apps/survey/src/scss/bottom-navigation.scss | 2 +- apps/survey/src/scss/fontawesome.scss | 1 + apps/survey/src/scss/settings.scss | 41 + apps/survey/src/scss/slider.scss | 29 +- apps/survey/src/scss/vuetify.scss | 85 - apps/survey/src/services/http.service.ts | 2 +- apps/survey/src/shims-vue.d.ts | 5 - apps/survey/src/stores/prompt.ts | 3 +- apps/survey/src/stores/survey.ts | 45 +- apps/survey/src/{ => types}/globals.d.ts | 9 +- apps/survey/src/types/vite-env.d.ts | 29 + apps/survey/src/types/vue-router.d.ts | 10 + apps/survey/src/views/feedback/home.vue | 61 +- .../src/views/feedback/physical-data.vue | 59 +- apps/survey/src/views/home.vue | 37 +- apps/survey/src/views/survey/challenge.vue | 110 +- apps/survey/src/views/survey/error.vue | 4 +- .../survey/src/views/survey/generate-user.vue | 215 +- apps/survey/src/views/survey/home.vue | 361 +- apps/survey/src/views/survey/login.vue | 174 +- apps/survey/src/views/survey/profile.vue | 139 +- apps/survey/src/views/survey/recall.vue | 4 +- apps/survey/src/views/survey/use-login.ts | 6 +- apps/survey/tsconfig.app.json | 27 + apps/survey/tsconfig.json | 19 +- apps/survey/tsconfig.node.json | 22 + apps/survey/tsconfig.tc.json | 14 + apps/survey/vite.config.ts | 31 +- eslint.config.js | 4 +- package.json | 2 +- packages/api-client-v3/package.json | 2 +- packages/api-client-v4/package.json | 6 +- packages/common-backend/package.json | 2 +- packages/common/package.json | 4 +- packages/common/src/prompts/actions.ts | 3 +- packages/common/src/theme/index.ts | 1 + .../common/src/types/http/admin/languages.ts | 1 + .../src/types/http/admin/nutrient-tables.ts | 14 +- .../common/src/types/http/admin/references.ts | 9 +- packages/common/src/util/index.ts | 1 + packages/db/package.json | 4 +- .../src/models/system/language-translation.ts | 6 +- packages/i18n/package.json | 6 +- packages/i18n/src/admin/en/index.ts | 4 +- .../i18n/src/admin/en/survey-schemes.json | 10 +- packages/i18n/src/admin/fr/index.ts | 4 +- .../i18n/src/admin/fr/survey-schemes.json | 10 +- packages/i18n/src/admin/index.ts | 4 +- packages/i18n/src/api/en/index.ts | 4 +- packages/i18n/src/api/en/validation.json | 1 + packages/i18n/src/api/fr/index.ts | 4 +- packages/i18n/src/api/index.ts | 4 +- packages/i18n/src/i18n.ts | 56 - packages/i18n/src/index.ts | 86 +- packages/i18n/src/shared/en/index.ts | 4 +- packages/i18n/src/shared/fr/index.ts | 4 +- packages/i18n/src/shared/index.ts | 4 +- packages/i18n/src/shared/ms/index.ts | 4 +- packages/i18n/src/shared/ta/index.ts | 4 +- packages/i18n/src/shared/zh/index.ts | 4 +- packages/i18n/src/survey/en/index.ts | 6 +- packages/i18n/src/survey/fr/index.ts | 4 +- packages/i18n/src/survey/index.ts | 4 +- packages/i18n/src/survey/ms/index.ts | 4 +- packages/i18n/src/survey/ta/index.ts | 4 +- packages/i18n/src/survey/zh/index.ts | 4 +- packages/i18n/src/util/index.ts | 77 +- packages/ui/env.d.ts | 4 + packages/ui/package.json | 16 +- packages/ui/src/barcodes/index.ts | 6 +- packages/ui/src/barcodes/none/none-input.vue | 3 +- .../ui/src/barcodes/quagga/quagga-input.vue | 8 +- .../ui/src/barcodes/quagga/quagga-reader.vue | 17 +- .../ui/src/barcodes/strich/strich-input.vue | 8 +- .../ui/src/barcodes/strich/strich-reader.vue | 15 +- packages/ui/src/captcha/captcha.vue | 69 +- packages/ui/src/components/app-info.vue | 34 +- .../src/components/dialogs/confirm-dialog.vue | 304 +- .../components/layouts/app-entry-screen.vue | 52 +- packages/ui/src/components/message-box.vue | 6 +- packages/ui/src/components/service-worker.vue | 6 +- packages/ui/src/composables/use-clipboard.ts | 6 +- packages/ui/src/composables/use-language.ts | 27 +- packages/ui/src/feedback/charts.ts | 4 +- .../feedback/components/cards/card-details.ts | 181 - .../ui/src/feedback/components/cards/index.ts | 1 - .../feedback/components/cards/print-card.vue | 10 +- .../feedback/components/cards/screen-card.vue | 15 +- .../components/cards/tell-me-more.vue | 26 +- .../src/feedback/components/cards/use-card.ts | 174 +- .../feedback/components/feedback-meals.vue | 16 +- .../feedback/components/feedback-outputs.vue | 92 +- .../components/feedback-top-foods.vue | 7 +- .../components/feedback-user-info.vue | 42 +- packages/ui/src/feedback/feedback.ts | 4 +- packages/ui/src/feedback/meal-stats.ts | 7 +- packages/ui/src/feedback/top-foods.ts | 4 +- packages/ui/src/services/exceptions.ts | 6 +- packages/ui/src/shims-vue.d.ts | 5 - packages/ui/src/stores/bootstrap.ts | 4 +- packages/ui/src/stores/errors.ts | 13 +- packages/ui/src/types/common.ts | 2 +- packages/ui/src/{ => types}/globals.d.ts | 11 +- packages/ui/src/types/http.ts | 4 +- packages/ui/src/types/vite-env.d.ts | 24 + packages/ui/tsconfig.json | 8 - pnpm-lock.yaml | 3942 ++++++++++------- 585 files changed, 14002 insertions(+), 14570 deletions(-) create mode 100644 apps/admin/env.d.ts delete mode 100644 apps/admin/src/bootstrap.ts delete mode 100644 apps/admin/src/mixins/is-mobile.ts create mode 100644 apps/admin/src/scss/settings.scss delete mode 100644 apps/admin/src/scss/vuetify.scss delete mode 100644 apps/admin/src/shims-vue.d.ts rename apps/admin/src/{ => types}/globals.d.ts (69%) create mode 100644 apps/admin/src/types/vite-env.d.ts create mode 100644 apps/admin/src/types/vue-router.d.ts create mode 100644 apps/admin/tsconfig.app.json create mode 100644 apps/admin/tsconfig.node.json create mode 100644 apps/admin/tsconfig.tc.json create mode 100644 apps/survey/env.d.ts delete mode 100644 apps/survey/src/bootstrap.ts delete mode 100644 apps/survey/src/components/elements/FoodSearchResults.vue rename apps/survey/src/components/{ => elements}/request-help.vue (76%) rename apps/survey/src/components/{ => elements}/survey-rating.vue (72%) delete mode 100644 apps/survey/src/components/prompts/layouts/layout-mixin.ts create mode 100644 apps/survey/src/components/prompts/layouts/use-layout.ts delete mode 100644 apps/survey/src/mixins/platform.ts create mode 100644 apps/survey/src/scss/settings.scss delete mode 100644 apps/survey/src/scss/vuetify.scss delete mode 100644 apps/survey/src/shims-vue.d.ts rename apps/survey/src/{ => types}/globals.d.ts (58%) create mode 100644 apps/survey/src/types/vite-env.d.ts create mode 100644 apps/survey/src/types/vue-router.d.ts create mode 100644 apps/survey/tsconfig.app.json create mode 100644 apps/survey/tsconfig.node.json create mode 100644 apps/survey/tsconfig.tc.json delete mode 100644 packages/i18n/src/i18n.ts create mode 100644 packages/ui/env.d.ts delete mode 100644 packages/ui/src/feedback/components/cards/card-details.ts delete mode 100644 packages/ui/src/shims-vue.d.ts rename packages/ui/src/{ => types}/globals.d.ts (56%) create mode 100644 packages/ui/src/types/vite-env.d.ts diff --git a/.github/renovate.json5 b/.github/renovate.json5 index d6f2f0b588..9407c40ffb 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -11,18 +11,7 @@ "formdata-node", // ESM-only since 5.x.x "nanoid", // ESM-only since 4.x.x "p-limit", // ESM-only since 4.x.x - "p-queue", // ESM-only since 7.x.x - - // Bump after Vue.js v3 upgrade - "@tinymce/tinymce-vue", - "@vue/compiler-sfc", - "vue", - "vue-dompurify-html", - "vue-gtag", - "vue-i18n", - "vue-router", - "vue-recaptcha", - "vuetify" + "p-queue" // ESM-only since 7.x.x ], "matchUpdateTypes": ["major"], "enabled": false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d6ecd81db0..ee9df9f14f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -366,9 +366,9 @@ jobs: - name: Install dependencies run: pnpm install - - name: Survey client - type check - working-directory: apps/survey - run: pnpm type-check + # - name: Survey client - type check + # working-directory: apps/survey + # run: pnpm type-check - name: Survey client - build working-directory: apps/survey diff --git a/apps/admin/.env-template b/apps/admin/.env-template index a45382cc34..9e4b1f545c 100644 --- a/apps/admin/.env-template +++ b/apps/admin/.env-template @@ -21,6 +21,7 @@ DISABLE_PWA=false # Vue.js dev server vars DEV_HTTPS=false +VUE_DEV_TOOLS=false # Vite public vars VITE_APP_NAME=Intake24 Admin diff --git a/apps/admin/env.d.ts b/apps/admin/env.d.ts new file mode 100644 index 0000000000..51354c22f9 --- /dev/null +++ b/apps/admin/env.d.ts @@ -0,0 +1,4 @@ +/// +/// +/// +/// diff --git a/apps/admin/package.json b/apps/admin/package.json index c0b25f712b..d567985f1c 100644 --- a/apps/admin/package.json +++ b/apps/admin/package.json @@ -17,12 +17,12 @@ "build-only": "vite build", "generate-pwa-assets": "pwa-assets-generator", "start": "node server/index.js", - "type-check": "vue-tsc --noEmit" + "type-check": "vue-tsc --noEmit -p tsconfig.tc.json" }, "dependencies": { "@fortawesome/fontawesome-free": "^6.6.0", "@simplewebauthn/browser": "^10.0.0", - "@tinymce/tinymce-vue": "^3.2.8", + "@tinymce/tinymce-vue": "^6.0.1", "@vueuse/core": "^11.1.0", "axios": "^1.7.7", "axios-retry": "^4.5.0", @@ -38,35 +38,41 @@ "lodash": "^4.17.21", "nanoid": "^3.3.7", "pinia": "^2.2.4", - "pinia-plugin-persistedstate": "^4.0.2", + "pinia-plugin-persistedstate": "^4.1.1", "pluralize": "^8.0.0", - "tinymce": "^7.3.0", - "vue": "^2.7.16", - "vue-dompurify-html": "^4.1.4", - "vue-gtag": "^1.16.1", - "vue-i18n": "^8.28.2", - "vue-router": "^3.6.5", - "vuedraggable": "^2.24.3", - "vuetify": "^2.7.2" + "tinymce": "^7.4.1", + "vue": "^3.5.12", + "vue-dompurify-html": "^5.1.0", + "vue-draggable-plus": "^0.5.3", + "vue-gtag": "^2.0.1", + "vue-i18n": "^10.0.4", + "vue-router": "^4.4.5", + "vuetify": "^3.7.2" }, "devDependencies": { + "@intlify/unplugin-vue-i18n": "^5.2.0", + "@simplewebauthn/types": "^10.0.0", + "@tsconfig/node20": "^20.1.4", "@types/jsdom": "^21.1.7", - "@types/lodash": "^4.17.9", + "@types/lodash": "^4.17.10", "@types/node": "^22.7.4", "@types/pluralize": "^0.0.33", "@vite-pwa/assets-generator": "^0.2.6", - "@vitejs/plugin-vue2": "^2.3.1", + "@vitejs/plugin-vue": "^5.1.4", + "@vue/tsconfig": "^0.5.1", "cross-env": "^7.0.3", "jsdom": "^25.0.1", - "sass": "~1.32.13", + "sass": "^1.79.4", "typescript": "^5.6.2", "unplugin-vue-components": "^0.27.4", "vite": "^5.4.8", "vite-plugin-html": "^3.2.2", "vite-plugin-mkcert": "^1.17.6", "vite-plugin-pwa": "^0.20.5", + "vite-plugin-vue-devtools": "^7.4.6", + "vite-plugin-vuetify": "^2.0.4", "vite-plugin-webfont-dl": "^3.9.5", - "vitest": "^2.1.1", + "vitest": "^2.1.2", "vue-tsc": "^2.1.6", "workbox-window": "^7.1.0", "zod": "^3.23.8" diff --git a/apps/admin/src/app.vue b/apps/admin/src/app.vue index 7a9fd5a7a6..04885c6ed0 100644 --- a/apps/admin/src/app.vue +++ b/apps/admin/src/app.vue @@ -1,54 +1,37 @@