From 29dd5929d571f0fda4e7d426d27e6805716da5a6 Mon Sep 17 00:00:00 2001 From: Simon Reinisch Date: Sat, 16 Dec 2023 16:08:53 +0100 Subject: [PATCH] refactor: clean up internationalization mess change dashboard route to root add i18n eslint plugin --- .eslintrc | 102 ++++----- package.json | 10 +- pnpm-lock.yaml | 122 ++++++++--- src/app/App.vue | 6 +- src/app/components/base/button/Button.vue | 14 ++ .../components/base/draggable/Draggable.vue | 1 + src/app/components/base/link/Link.vue | 21 +- .../AnimatedRouterView.vue | 23 -- .../ComponentTransition.vue | 28 +++ src/app/pages/Frame.vue | 27 ++- src/app/pages/dashboard/Dashboard.vue | 38 ++-- .../widgets/header-panels/SummaryPanels.vue | 14 +- src/app/pages/dashboard/summary/Summary.vue | 6 +- .../widgets/charts/DevelopmentChart.vue | 6 +- .../widgets/tables/GroupsSummaryTable.vue | 6 +- .../widgets/tables/TotalsSummaryTable.vue | 12 +- src/app/pages/expenses/Expenses.vue | 4 +- src/app/pages/income/Income.vue | 4 +- .../admin/create-user/CreateUserDialog.vue | 4 +- src/app/pages/navigation/auth/LoginDialog.vue | 10 +- .../currency/ChangeCurrencyButton.vue | 2 +- src/app/pages/navigation/info/InfoButton.vue | 2 +- src/app/pages/navigation/info/InfoDialog.vue | 15 +- .../language/ChangeLanguageButton.vue | 2 +- .../navigation/{ => theme}/ThemeButton.vue | 2 +- .../pages/navigation/tools/ToolsButton.vue | 4 +- .../change-password/ChangePasswordButton.vue | 6 +- .../change-password/ChangePasswordDialog.vue | 17 +- .../tools/copy-paste/CopyButton.vue | 2 +- .../tools/copy-paste/PasteButton.vue | 2 +- .../tools/demo/LoadDemoDataButton.vue | 2 +- .../navigation/tools/export/ExportButton.vue | 4 +- .../navigation/tools/import/ImportButton.vue | 8 +- .../tools/import/screens/BudgetFileScreen.vue | 11 +- .../screens/GoogleAnnualBudgetScreen.vue | 8 +- .../PrivacyModeButton.vue | 2 +- .../navigation/year/SelectYearButton.vue | 2 +- .../pages/shared/{pane => }/BudgetGroup.vue | 10 +- .../pages/shared/{pane => }/BudgetGroups.vue | 10 +- .../pages/shared/{pane => }/BudgetPane.vue | 2 +- src/app/pages/shared/ChartPlaceholder.vue | 2 +- src/app/pages/shared/Pane.vue | 3 +- src/i18n/locales/de.json | 202 ++++++++++-------- src/i18n/locales/en.json | 186 ++++++++-------- src/router.ts | 25 +-- 45 files changed, 560 insertions(+), 429 deletions(-) delete mode 100644 src/app/components/misc/animated-router-view/AnimatedRouterView.vue create mode 100644 src/app/components/misc/component-transition/ComponentTransition.vue rename src/app/pages/navigation/{ => theme}/ThemeButton.vue (95%) rename src/app/pages/navigation/tools/{privacy-mode-button => privacy-mode}/PrivacyModeButton.vue (84%) rename src/app/pages/shared/{pane => }/BudgetGroup.vue (95%) rename src/app/pages/shared/{pane => }/BudgetGroups.vue (89%) rename src/app/pages/shared/{pane => }/BudgetPane.vue (96%) diff --git a/.eslintrc b/.eslintrc index 984ebe1f..a34327ab 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,52 +1,58 @@ { - "parser": "vue-eslint-parser", - "parserOptions": { - "parser": "@typescript-eslint/parser", - "extraFileExtensions": [".vue"] + "parser": "vue-eslint-parser", + "parserOptions": { + "parser": "@typescript-eslint/parser", + "extraFileExtensions": [ + ".vue" + ] + }, + "env": { + "node": true + }, + "globals": { + "defineModel": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@intlify/vue-i18n/recommended", + "plugin:vue/vue3-recommended", + "plugin:prettier/recommended", + "plugin:import/recommended", + "plugin:import/typescript" + ], + "settings": { + "import/resolver": { + "typescript": true, + "node": true }, - "env": { - "node": true - }, - "globals": { - "defineModel": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:vue/vue3-recommended", - "plugin:prettier/recommended", - "plugin:import/recommended", - "plugin:import/typescript" - ], - "settings": { - "import/resolver": { - "typescript": true, - "node": true - } - }, - "rules": { - "vue/multi-word-component-names": "off", - "vue/require-default-prop": "off", - "vue/no-v-html": "off", - "prettier/prettier": "error", - "no-console": "error", - "import/order": [ - "error", - { - "groups": [ - "builtin", - "external", - "internal", - "parent", - "sibling", - "index", - "type", - "object" - ], - "alphabetize": { - "order": "asc" - } - } - ] + "vue-i18n": { + "localeDir": "src/i18n/locales/*.json" } + }, + "rules": { + "vue/multi-word-component-names": "off", + "vue/require-default-prop": "off", + "vue/no-v-html": "off", + "prettier/prettier": "error", + "no-console": "error", + "import/order": [ + "error", + { + "groups": [ + "builtin", + "external", + "internal", + "parent", + "sibling", + "index", + "type", + "object" + ], + "alphabetize": { + "order": "asc" + } + } + ] + } } diff --git a/package.json b/package.json index d90b17a1..01802fad 100644 --- a/package.json +++ b/package.json @@ -13,19 +13,14 @@ "dev": "vite --host", "build": "vue-tsc --noEmit && vite build", "preview": "vite preview", - "lint:src": "eslint '{scripts,src}/**/*.{js,ts,vue}' --no-error-on-unmatched-pattern", - "lint:src:fix": "pnpm run lint:src --fix", - "lint:i18n": "li18nt 'src/i18n/locales/*.json' --config src/i18n/.li18ntrc", - "lint:i18n:fix": "pnpm run lint:i18n --fix", - "lint": "pnpm run lint:i18n && pnpm run lint:src", - "lint:fix": "pnpm run lint:i18n:fix && pnpm run lint:src:fix", + "lint": "eslint '{scripts,src}/**/*.{js,ts,vue}' --no-error-on-unmatched-pattern", + "lint:fix": "pnpm run lint --fix", "test:ci": "pnpm run lint:fix && pnpm run build", "gen:icons": "node scripts/icons.js" }, "dependencies": { "@popperjs/core": "2.11.8", "echarts": "5.4.3", - "li18nt": "5.0.0", "papaparse": "5.4.1", "vue": "3.3.9", "vue-i18n": "9.8.0", @@ -33,6 +28,7 @@ "yuppee": "0.3.0" }, "devDependencies": { + "@intlify/eslint-plugin-vue-i18n": "^2.0.0", "@types/ackee-tracker": "5.0.4", "@types/node": "20.10.2", "@types/papaparse": "5.3.14", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 88535dc4..82e3ac3f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,6 @@ dependencies: echarts: specifier: 5.4.3 version: 5.4.3 - li18nt: - specifier: 5.0.0 - version: 5.0.0 papaparse: specifier: 5.4.1 version: 5.4.1 @@ -31,6 +28,9 @@ dependencies: version: 0.3.0 devDependencies: + '@intlify/eslint-plugin-vue-i18n': + specifier: ^2.0.0 + version: 2.0.0(eslint@8.55.0) '@types/ackee-tracker': specifier: 5.0.4 version: 5.0.4 @@ -1552,6 +1552,23 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true + /@eslint/eslintrc@1.4.1: + resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /@eslint/eslintrc@2.1.4: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1600,7 +1617,32 @@ packages: dependencies: '@intlify/message-compiler': 9.8.0 '@intlify/shared': 9.8.0 - dev: false + + /@intlify/eslint-plugin-vue-i18n@2.0.0(eslint@8.55.0): + resolution: {integrity: sha512-ECBD0TvQNa56XKyuM6FPIGAAl7MP6ODcgjBQJrzucNxcTb8fYTWmZ+xgBuvmvAtA0iE0D4Wp18UMild2N0bGyw==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint/eslintrc': 1.4.1 + '@intlify/core-base': 9.8.0 + '@intlify/message-compiler': 9.8.0 + debug: 4.3.4 + eslint: 8.55.0 + glob: 8.1.0 + ignore: 5.2.4 + is-language-code: 3.1.0 + js-yaml: 4.1.0 + json5: 2.2.3 + jsonc-eslint-parser: 2.4.0 + lodash: 4.17.21 + parse5: 7.1.2 + semver: 7.5.4 + vue-eslint-parser: 9.3.1(eslint@8.55.0) + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - supports-color + dev: true /@intlify/message-compiler@9.8.0: resolution: {integrity: sha512-McnYWhcoYmDJvssVu6QGR0shqlkJuL1HHdi5lK7fNqvQqRYaQ4lSLjYmZxwc8tRNMdIe9/KUKfyPxU9M6yCtNQ==} @@ -1608,12 +1650,10 @@ packages: dependencies: '@intlify/shared': 9.8.0 source-map-js: 1.0.2 - dev: false /@intlify/shared@9.8.0: resolution: {integrity: sha512-TmgR0RCLjzrSo+W3wT0ALf9851iFMlVI9EYNGeWvZFUQTAJx0bvfsMlPdgVtV1tDNRiAfhkFsMKu6jtUY1ZLKQ==} engines: {node: '>= 16'} - dev: false /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -2390,6 +2430,7 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} @@ -2423,6 +2464,7 @@ packages: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 + dev: true /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -2491,11 +2533,6 @@ packages: supports-color: 7.2.0 dev: true - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: false - /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -2536,11 +2573,6 @@ packages: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: false - /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -2711,6 +2743,11 @@ packages: tapable: 2.2.1 dev: true + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + /es-abstract@1.22.2: resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} engines: {node: '>= 0.4'} @@ -3233,6 +3270,7 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -3335,7 +3373,7 @@ packages: inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: false + dev: true /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -3483,9 +3521,11 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} @@ -3581,6 +3621,12 @@ packages: is-docker: 3.0.0 dev: true + /is-language-code@3.1.0: + resolution: {integrity: sha512-zJdQ3QTeLye+iphMeK3wks+vXSRFKh68/Pnlw7aOfApFSEIOhYa8P9vwwa6QrImNNBMJTiL1PpYF0f4BxDuEgA==} + dependencies: + '@babel/runtime': 7.22.5 + dev: true + /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true @@ -3754,6 +3800,16 @@ packages: hasBin: true dev: true + /jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.9.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.5.4 + dev: true + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -3780,15 +3836,6 @@ packages: type-check: 0.4.0 dev: true - /li18nt@5.0.0: - resolution: {integrity: sha512-0jCITOmggEkZG021Rz3ObS6BHJBEyafyT+DXAMl3fBuOHKJVG2Cl/1SGZrtFEtr7wuQrmjYUP49Oh4in1y0pWw==} - hasBin: true - dependencies: - chalk: 5.3.0 - commander: 9.5.0 - glob: 8.1.0 - dev: false - /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -3875,6 +3922,7 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -3987,6 +4035,7 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -4049,6 +4098,12 @@ packages: callsites: 3.1.0 dev: true + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: true + /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: true @@ -5094,6 +5149,7 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} @@ -5108,6 +5164,20 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true + /yaml-eslint-parser@1.2.2: + resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} + engines: {node: ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.3.4 + dev: true + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + dev: true + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} diff --git a/src/app/App.vue b/src/app/App.vue index 94bf8e2a..12ec739d 100644 --- a/src/app/App.vue +++ b/src/app/App.vue @@ -48,8 +48,10 @@ watch( } ); -watchEffect(() => { - document.title = ['app.name', ...router.currentRoute.value.matched.map((v) => v.name as string)].map(t).join(' / '); +watch(router.currentRoute, (route) => { + if (route) { + document.title = t(`page.${route.name as string}.title`); + } }); diff --git a/src/app/components/base/button/Button.vue b/src/app/components/base/button/Button.vue index c292bef1..54647da7 100644 --- a/src/app/components/base/button/Button.vue +++ b/src/app/components/base/button/Button.vue @@ -31,6 +31,7 @@ const props = withDefaults( text?: string; tooltip?: string; type?: 'button' | 'reset' | 'submit'; + size?: 'm' | 'l'; tooltipPosition?: Placement; color?: Color; textual?: boolean; @@ -40,6 +41,7 @@ const props = withDefaults( { color: 'primary', type: 'button', + size: 'm', textual: false, rounded: false, disabled: false @@ -51,6 +53,7 @@ const theme = useThemeStyles(() => props.color); const classes = computed(() => [ props.class, styles.button, + styles[props.size], { [styles.hasIcon]: props.icon, [styles.disabled]: props.disabled, @@ -94,6 +97,17 @@ const classes = computed(() => [ line-height: 1em; } + &.l { + .icon { + width: 20px; + height: 20px; + } + + .text { + font-size: var(--font-size-m); + } + } + &:focus { box-shadow: 0 0 0 2px v-bind('theme.focus'); } diff --git a/src/app/components/base/draggable/Draggable.vue b/src/app/components/base/draggable/Draggable.vue index 09718e44..ed183679 100644 --- a/src/app/components/base/draggable/Draggable.vue +++ b/src/app/components/base/draggable/Draggable.vue @@ -20,6 +20,7 @@ {{ label }} +
hidden
diff --git a/src/app/components/base/link/Link.vue b/src/app/components/base/link/Link.vue index 29cc8b4c..78878d8e 100644 --- a/src/app/components/base/link/Link.vue +++ b/src/app/components/base/link/Link.vue @@ -2,7 +2,7 @@ - + @@ -19,6 +19,7 @@ + + diff --git a/src/app/pages/Frame.vue b/src/app/pages/Frame.vue index 4c7f79a5..d93ecaef 100644 --- a/src/app/pages/Frame.vue +++ b/src/app/pages/Frame.vue @@ -6,13 +6,13 @@ @@ -28,7 +28,9 @@
- + + +
@@ -36,38 +38,35 @@ diff --git a/src/app/pages/dashboard/Dashboard.vue b/src/app/pages/dashboard/Dashboard.vue index 50bd11a4..9bc1a115 100644 --- a/src/app/pages/dashboard/Dashboard.vue +++ b/src/app/pages/dashboard/Dashboard.vue @@ -6,7 +6,7 @@ - + diff --git a/src/app/pages/income/Income.vue b/src/app/pages/income/Income.vue index cf9abff6..1761df0e 100644 --- a/src/app/pages/income/Income.vue +++ b/src/app/pages/income/Income.vue @@ -1,10 +1,10 @@ diff --git a/src/app/pages/navigation/admin/create-user/CreateUserDialog.vue b/src/app/pages/navigation/admin/create-user/CreateUserDialog.vue index e87708f6..fb37befc 100644 --- a/src/app/pages/navigation/admin/create-user/CreateUserDialog.vue +++ b/src/app/pages/navigation/admin/create-user/CreateUserDialog.vue @@ -19,8 +19,8 @@ /> - - + + diff --git a/src/app/pages/navigation/auth/LoginDialog.vue b/src/app/pages/navigation/auth/LoginDialog.vue index 5854051f..55726e2a 100644 --- a/src/app/pages/navigation/auth/LoginDialog.vue +++ b/src/app/pages/navigation/auth/LoginDialog.vue @@ -1,9 +1,9 @@ diff --git a/src/app/pages/navigation/currency/ChangeCurrencyButton.vue b/src/app/pages/navigation/currency/ChangeCurrencyButton.vue index 3f9b89b9..b75461a2 100644 --- a/src/app/pages/navigation/currency/ChangeCurrencyButton.vue +++ b/src/app/pages/navigation/currency/ChangeCurrencyButton.vue @@ -1,6 +1,6 @@