Merge branch 'main' into feature/date-math

# Conflicts:
#	src/views/tasks/ShowTasks.vue
This commit is contained in:
kolaente 2022-02-26 13:30:07 +01:00
commit d5f0158b04
No known key found for this signature in database
GPG key ID: F40E70337AB24C9B
29 changed files with 1182 additions and 660 deletions

View file

@ -123,7 +123,6 @@ steps:
- yarn serve:dist & npx wait-on http://localhost:4173 - yarn serve:dist & npx wait-on http://localhost:4173
- yarn test:frontend --browser chrome --record - yarn test:frontend --browser chrome --record
depends_on: depends_on:
- dependencies
- build-prod - build-prod
- name: deploy-preview - name: deploy-preview
@ -137,6 +136,9 @@ steps:
GITEA_TOKEN: GITEA_TOKEN:
from_secret: gitea_token from_secret: gitea_token
commands: commands:
- cp -r dist dist-preview
# Override the default api url used for preview
- sed -i 's|localhost:3456|try.vikunja.io|g' dist-preview/index.html
- shasum -a 384 -c ./scripts/deploy-preview-netlify.js.sha384 - shasum -a 384 -c ./scripts/deploy-preview-netlify.js.sha384
- node ./scripts/deploy-preview-netlify.js - node ./scripts/deploy-preview-netlify.js
depends_on: depends_on:

View file

@ -1,6 +1,6 @@
[build] [build]
command = "yarn build" command = "yarn build"
publish = "dist" publish = "dist-preview"
[[redirects]] [[redirects]]
from = "/*" from = "/*"

View file

@ -20,15 +20,15 @@
"dependencies": { "dependencies": {
"@github/hotkey": "2.0.0", "@github/hotkey": "2.0.0",
"@kyvg/vue3-notification": "2.3.4", "@kyvg/vue3-notification": "2.3.4",
"@sentry/tracing": "6.17.9", "@sentry/tracing": "6.18.0",
"@sentry/vue": "6.17.9", "@sentry/vue": "6.18.0",
"@types/is-touch-device": "1.0.0", "@types/is-touch-device": "1.0.0",
"@vue/compat": "3.2.31", "@vue/compat": "3.2.31",
"@vueuse/core": "7.6.2", "@vueuse/core": "7.6.2",
"@vueuse/router": "7.6.2", "@vueuse/router": "7.6.2",
"bulma-css-variables": "0.9.33", "bulma-css-variables": "0.9.33",
"camel-case": "4.1.2", "camel-case": "4.1.2",
"codemirror": "5.65.1", "codemirror": "5.65.2",
"copy-to-clipboard": "3.3.1", "copy-to-clipboard": "3.3.1",
"date-fns": "2.28.0", "date-fns": "2.28.0",
"dompurify": "2.3.6", "dompurify": "2.3.6",
@ -42,7 +42,7 @@
"marked": "4.0.12", "marked": "4.0.12",
"register-service-worker": "1.7.2", "register-service-worker": "1.7.2",
"snake-case": "3.0.4", "snake-case": "3.0.4",
"ufo": "0.7.10", "ufo": "0.7.11",
"v-tooltip": "4.0.0-beta.17", "v-tooltip": "4.0.0-beta.17",
"vue": "3.2.31", "vue": "3.2.31",
"vue-advanced-cropper": "2.8.1", "vue-advanced-cropper": "2.8.1",
@ -52,7 +52,7 @@
"vue-router": "4.0.12", "vue-router": "4.0.12",
"vuedraggable": "4.1.0", "vuedraggable": "4.1.0",
"vuex": "4.0.2", "vuex": "4.0.2",
"workbox-precaching": "6.4.2" "workbox-precaching": "6.5.0"
}, },
"devDependencies": { "devDependencies": {
"@4tw/cypress-drag-drop": "2.1.0", "@4tw/cypress-drag-drop": "2.1.0",
@ -62,8 +62,8 @@
"@fortawesome/free-solid-svg-icons": "5.15.4", "@fortawesome/free-solid-svg-icons": "5.15.4",
"@fortawesome/vue-fontawesome": "3.0.0-5", "@fortawesome/vue-fontawesome": "3.0.0-5",
"@types/flexsearch": "0.7.2", "@types/flexsearch": "0.7.2",
"@typescript-eslint/eslint-plugin": "5.12.0", "@typescript-eslint/eslint-plugin": "5.12.1",
"@typescript-eslint/parser": "5.12.0", "@typescript-eslint/parser": "5.12.1",
"@vitejs/plugin-legacy": "1.7.1", "@vitejs/plugin-legacy": "1.7.1",
"@vitejs/plugin-vue": "2.2.2", "@vitejs/plugin-vue": "2.2.2",
"@vue/eslint-config-typescript": "10.0.0", "@vue/eslint-config-typescript": "10.0.0",
@ -73,24 +73,24 @@
"caniuse-lite": "1.0.30001312", "caniuse-lite": "1.0.30001312",
"cypress": "9.5.0", "cypress": "9.5.0",
"esbuild": "0.14.23", "esbuild": "0.14.23",
"eslint": "8.9.0", "eslint": "8.10.0",
"eslint-plugin-vue": "8.4.1", "eslint-plugin-vue": "8.5.0",
"express": "4.17.3", "express": "4.17.3",
"happy-dom": "2.39.1", "happy-dom": "2.41.0",
"netlify-cli": "8.16.1", "netlify-cli": "9.6.5",
"postcss": "8.4.6", "postcss": "8.4.7",
"postcss-preset-env": "7.4.1", "postcss-preset-env": "7.4.1",
"rollup": "2.67.3", "rollup": "2.68.0",
"rollup-plugin-visualizer": "5.5.4", "rollup-plugin-visualizer": "5.6.0",
"sass": "1.49.8", "sass": "1.49.9",
"typescript": "4.5.5", "typescript": "4.5.5",
"vite": "2.8.4", "vite": "2.8.4",
"vite-plugin-pwa": "0.11.13", "vite-plugin-pwa": "0.11.13",
"vite-svg-loader": "3.1.2", "vite-svg-loader": "3.1.2",
"vitest": "0.4.2", "vitest": "0.5.7",
"vue-tsc": "0.31.4", "vue-tsc": "0.32.0",
"wait-on": "6.0.1", "wait-on": "6.0.1",
"workbox-cli": "6.4.2" "workbox-cli": "6.5.0"
}, },
"eslintConfig": { "eslintConfig": {
"root": true, "root": true,

View file

@ -61,8 +61,9 @@ const emit = defineEmits(['foundApi'])
const apiUrl = ref(window.API_URL) const apiUrl = ref(window.API_URL)
const configureApi = ref(apiUrl.value === '') const configureApi = ref(apiUrl.value === '')
const apiDomain = computed(() => parseURL(apiUrl.value).host || parseURL(window.location.href).host) // Because we're only using this to parse the hostname, it should be fine to just prefix with http://
// regardless of whether the url is actually reachable under http.
const apiDomain = computed(() => parseURL(apiUrl.value, 'http://').host || parseURL(window.location.href).host)
watch(() => props.configureOpen, (value) => { watch(() => props.configureOpen, (value) => {
configureApi.value = value configureApi.value = value
@ -73,6 +74,7 @@ const {t} = useI18n()
const errorMsg = ref('') const errorMsg = ref('')
const successMsg = ref('') const successMsg = ref('')
async function setApiUrl() { async function setApiUrl() {
if (apiUrl.value === '') { if (apiUrl.value === '') {
// Don't try to check and set an empty url // Don't try to check and set an empty url

View file

@ -84,14 +84,6 @@ export default {
BaseButton, BaseButton,
}, },
mounted() {
document.addEventListener('keydown', (e) => {
// Close the model when escape is pressed
if (e.keyCode === 27) {
this.$emit('close')
}
})
},
props: { props: {
enabled: { enabled: {
type: Boolean, type: Boolean,

View file

@ -81,7 +81,7 @@ export default {
return this.notifications.filter(n => n.readAt === null).length return this.notifications.filter(n => n.readAt === null).length
}, },
notifications() { notifications() {
return this.allNotifications.filter(n => n.name !== '') return this.allNotifications ? this.allNotifications.filter(n => n.name !== '') : []
}, },
...mapState({ ...mapState({
userInfo: state => state.auth.info, userInfo: state => state.auth.info,

View file

@ -10,7 +10,7 @@
v-focus v-focus
v-model="newTaskTitle" v-model="newTaskTitle"
ref="newTaskInput" ref="newTaskInput"
@keyup="errorMessage = ''" @keyup="resetEmptyTitleError"
@keydown.enter="handleEnter" @keydown.enter="handleEnter"
/> />
<span class="icon is-small is-left"> <span class="icon is-small is-left">
@ -135,6 +135,12 @@ const store = useStore()
const taskService = shallowReactive(new TaskService()) const taskService = shallowReactive(new TaskService())
const errorMessage = ref('') const errorMessage = ref('')
function resetEmptyTitleError() {
if(newTaskTitle.value !== '') {
errorMessage.value = ''
}
}
async function addTask() { async function addTask() {
if (newTaskTitle.value === '') { if (newTaskTitle.value === '') {
errorMessage.value = t('list.create.addTitleRequired') errorMessage.value = t('list.create.addTitleRequired')

View file

@ -114,7 +114,7 @@ export default {
}, },
async removeLabel(label) { async removeLabel(label) {
if (!this.taskId === 0) { if (this.taskId !== 0) {
await this.$store.dispatch('tasks/removeLabel', {label: label, taskId: this.taskId}) await this.$store.dispatch('tasks/removeLabel', {label: label, taskId: this.taskId})
} }

View file

@ -190,10 +190,7 @@ export default {
this.$t('task.undoneSuccess'), this.$t('task.undoneSuccess'),
}, [{ }, [{
title: 'Undo', title: 'Undo',
callback() { callback: () => this.undoDone(checked),
this.task.done = !this.task.done
this.markAsDone(!checked)
},
}]) }])
} }
@ -204,6 +201,11 @@ export default {
} }
}, },
undoDone(checked) {
this.task.done = !this.task.done
this.markAsDone(!checked)
},
async toggleFavorite() { async toggleFavorite() {
this.task.isFavorite = !this.task.isFavorite this.task.isFavorite = !this.task.isFavorite
this.task = await this.taskService.update(this.task) this.task = await this.taskService.update(this.task)

View file

@ -570,22 +570,22 @@
"text2": "Tímto také odstraníte všechny přílohy, připomenutí a vztahy spojené s tímto úkolem a nelze je vrátit zpět!" "text2": "Tímto také odstraníte všechny přílohy, připomenutí a vztahy spojené s tímto úkolem a nelze je vrátit zpět!"
}, },
"actions": { "actions": {
"assign": "Přiřadit uživateli", "assign": "Assign to User",
"label": "Přidat štítky", "label": "Add Labels",
"priority": "Nastavit prioritu", "priority": "Nastavit prioritu",
"dueDate": "Nastavit termín", "dueDate": "Nastavit termín",
"startDate": "Nastavit počáteční datum", "startDate": "Set Start Date",
"endDate": "Nastavit koncové datum", "endDate": "Set End Date",
"reminders": "Nastavit připomenutí", "reminders": "Nastavit připomenutí",
"repeatAfter": "Nastavit interval opakování", "repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress", "percentDone": "Set Progress",
"attachments": "Přidat přílohy", "attachments": "Add Attachments",
"relatedTasks": "Přidat vztahy úkolu", "relatedTasks": "Add Relation",
"moveList": "Přesunout úkol", "moveList": "Move",
"color": "Nastavit barvu úkolu", "color": "Set Color",
"delete": "Smazat úkol", "delete": "Delete",
"favorite": "Uložit jako oblíbené", "favorite": "Add to Favorites",
"unfavorite": "Odebrat z oblíbených" "unfavorite": "Remove from Favorites"
} }
}, },
"attributes": { "attributes": {

View file

@ -580,11 +580,11 @@
"repeatAfter": "Wiederholung setzen", "repeatAfter": "Wiederholung setzen",
"percentDone": "Fortschritt einstellen", "percentDone": "Fortschritt einstellen",
"attachments": "Anhänge hinzufügen", "attachments": "Anhänge hinzufügen",
"relatedTasks": "Aufgabenbeziehungen hinzufügen", "relatedTasks": "Beziehung hinzufügen",
"moveList": "Aufgabe verschieben", "moveList": "Verschieben",
"color": "Taskfarbe setzen", "color": "Farbe setzen",
"delete": "Aufgabe löschen", "delete": "Löschen",
"favorite": "In Favoriten speichern", "favorite": "Zu Favoriten hinzufügen",
"unfavorite": "Aus Favoriten entfernen" "unfavorite": "Aus Favoriten entfernen"
} }
}, },

View file

@ -571,20 +571,20 @@
}, },
"actions": { "actions": {
"assign": "Benutzer:in zuweisen", "assign": "Benutzer:in zuweisen",
"label": "Label hinzueege", "label": "Label hinzufügen",
"priority": "Priorität setzä", "priority": "Priorität setzä",
"dueDate": "Fälligkeitsdatum setze", "dueDate": "Fälligkeitsdatum setze",
"startDate": "Startdatum setze", "startDate": "Startdatum setzen",
"endDate": "Enddatum setze", "endDate": "Enddatum setzen",
"reminders": "Errinnerig iihstelle", "reminders": "Errinnerig iihstelle",
"repeatAfter": "En wiederholende Intervall setze", "repeatAfter": "Wiederholung setzen",
"percentDone": "Fortschritt einstellen", "percentDone": "Fortschritt einstellen",
"attachments": "Aahang hinzuefüege", "attachments": "Anhänge hinzufügen",
"relatedTasks": "Uufgabsbeziehig hinzufüege", "relatedTasks": "Beziehung hinzufügen",
"moveList": "Uufgab verschiebe", "moveList": "Verschieben",
"color": "Uufgab Farb setze", "color": "Farbe setzen",
"delete": "Uufgab chüble", "delete": "Löschen",
"favorite": "In Favoriten speichern", "favorite": "Zu Favoriten hinzufügen",
"unfavorite": "Aus Favoriten entfernen" "unfavorite": "Aus Favoriten entfernen"
} }
}, },

View file

@ -570,22 +570,22 @@
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!" "text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
}, },
"actions": { "actions": {
"assign": "Assign to a user", "assign": "Assign to User",
"label": "Add labels", "label": "Add Labels",
"priority": "Set Priority", "priority": "Set Priority",
"dueDate": "Set Due Date", "dueDate": "Set Due Date",
"startDate": "Set a Start Date", "startDate": "Set Start Date",
"endDate": "Set an End Date", "endDate": "Set End Date",
"reminders": "Set Reminders", "reminders": "Set Reminders",
"repeatAfter": "Set a repeating interval", "repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress", "percentDone": "Set Progress",
"attachments": "Add attachments", "attachments": "Add Attachments",
"relatedTasks": "Add task relations", "relatedTasks": "Add Relation",
"moveList": "Move task", "moveList": "Move",
"color": "Set task color", "color": "Set Color",
"delete": "Delete task", "delete": "Delete",
"favorite": "Save as favorite", "favorite": "Add to Favorites",
"unfavorite": "Remove from favorites" "unfavorite": "Remove from Favorites"
} }
}, },
"attributes": { "attributes": {

View file

@ -7,7 +7,7 @@
"lastViewed": "Dernière consultation", "lastViewed": "Dernière consultation",
"list": { "list": {
"newText": "Tu peux créer une nouvelle liste pour tes nouvelles tâches :", "newText": "Tu peux créer une nouvelle liste pour tes nouvelles tâches :",
"new": "New list", "new": "Nouvelle liste",
"importText": "Ou importe tes listes et tâches dautres services dans Vikunja :", "importText": "Ou importe tes listes et tâches dautres services dans Vikunja :",
"import": "Importer tes données dans Vikunja" "import": "Importer tes données dans Vikunja"
} }
@ -31,11 +31,11 @@
"username": "Nom dutilisateur·rice", "username": "Nom dutilisateur·rice",
"usernameEmail": "Nom dutilisateur·rice ou adresse courriel", "usernameEmail": "Nom dutilisateur·rice ou adresse courriel",
"usernamePlaceholder": "p. ex. frederick", "usernamePlaceholder": "p. ex. frederick",
"email": "Email address", "email": "Adresse courriel",
"emailPlaceholder": "p. ex. frederic{'@'}vikunja.io", "emailPlaceholder": "p. ex. frederic{'@'}vikunja.io",
"password": "Mot de passe", "password": "Mot de passe",
"passwordPlaceholder": "p. ex. •••••••••••", "passwordPlaceholder": "p. ex. •••••••••••",
"forgotPassword": "Forgot your password?", "forgotPassword": "Mot de passe oublié ?",
"resetPassword": "Réinitialiser ton mot de passe", "resetPassword": "Réinitialiser ton mot de passe",
"resetPasswordAction": "Menvoyer un lien de réinitialisation du mot de passe", "resetPasswordAction": "Menvoyer un lien de réinitialisation du mot de passe",
"resetPasswordSuccess": "Vérifie ta boîte de réception ! Tu devrais avoir un courriel contenant les instructions sur la manière de réinitialiser ton mot de passe.", "resetPasswordSuccess": "Vérifie ta boîte de réception ! Tu devrais avoir un courriel contenant les instructions sur la manière de réinitialiser ton mot de passe.",
@ -44,20 +44,20 @@
"totpTitle": "Code dauthentification à deux facteurs", "totpTitle": "Code dauthentification à deux facteurs",
"totpPlaceholder": "p. ex. 123456", "totpPlaceholder": "p. ex. 123456",
"login": "Se connecter", "login": "Se connecter",
"createAccount": "Create account", "createAccount": "Créer un compte",
"loginWith": "Se connecter avec {provider}", "loginWith": "Se connecter avec {provider}",
"authenticating": "Authentification…", "authenticating": "Authentification…",
"openIdStateError": "Létat ne correspond pas, impossible de continuer !", "openIdStateError": "Létat ne correspond pas, impossible de continuer !",
"openIdGeneralError": "Une erreur s'est produite lors de l'authentification contre un tiers.", "openIdGeneralError": "Une erreur s'est produite lors de l'authentification contre un tiers.",
"logout": "Se déconnecter", "logout": "Se déconnecter",
"emailInvalid": "Please enter a valid email address.", "emailInvalid": "Veuillez saisir une adresse courriel valide.",
"usernameRequired": "Please provide a username.", "usernameRequired": "Veuillez saisir un nom d'utilisateur.",
"passwordRequired": "Please provide a password.", "passwordRequired": "Veuillez fournir un mot de passe.",
"showPassword": "Show the password", "showPassword": "Afficher le mot de passe",
"hidePassword": "Hide the password", "hidePassword": "Masquer le mot de passe",
"noAccountYet": "Don't have an account yet?", "noAccountYet": "Vous n'avez pas encore de compte?",
"alreadyHaveAnAccount": "Already have an account?", "alreadyHaveAnAccount": "Vous avez déjà un compte?",
"remember": "Stay logged in" "remember": "Rester connecté(e)"
}, },
"settings": { "settings": {
"title": "Paramètres", "title": "Paramètres",
@ -68,7 +68,7 @@
"currentPasswordPlaceholder": "Ton mot de passe actuel", "currentPasswordPlaceholder": "Ton mot de passe actuel",
"passwordsDontMatch": "Le nouveau mot de passe et sa confirmation ne correspondent pas.", "passwordsDontMatch": "Le nouveau mot de passe et sa confirmation ne correspondent pas.",
"passwordUpdateSuccess": "Mot de passe mis à jour.", "passwordUpdateSuccess": "Mot de passe mis à jour.",
"updateEmailTitle": "Update Your Email Address", "updateEmailTitle": "Mettre à jour votre adresse courriel",
"updateEmailNew": "Nouvelle adresse courriel", "updateEmailNew": "Nouvelle adresse courriel",
"updateEmailSuccess": "Mise à jour de ladresse électronique. Clique sur le lien dans le courriel qui ta été envoyé pour le confirmer.", "updateEmailSuccess": "Mise à jour de ladresse électronique. Clique sur le lien dans le courriel qui ta été envoyé pour le confirmer.",
"general": { "general": {
@ -86,7 +86,7 @@
"weekStartMonday": "lundi", "weekStartMonday": "lundi",
"language": "Langue", "language": "Langue",
"defaultList": "Liste par défaut", "defaultList": "Liste par défaut",
"timezone": "Time Zone" "timezone": "Fuseau horaire"
}, },
"totp": { "totp": {
"title": "Authentification à deux facteurs", "title": "Authentification à deux facteurs",
@ -165,7 +165,7 @@
"searchSelect": "Clique ou appuie sur la touche Entrée pour sélectionner cette liste", "searchSelect": "Clique ou appuie sur la touche Entrée pour sélectionner cette liste",
"shared": "Listes partagées", "shared": "Listes partagées",
"create": { "create": {
"header": "New list", "header": "Nouvelle liste",
"titlePlaceholder": "Entre le nom de la liste…", "titlePlaceholder": "Entre le nom de la liste…",
"addTitleRequired": "Indique un nom.", "addTitleRequired": "Indique un nom.",
"createdSuccess": "Liste créée.", "createdSuccess": "Liste créée.",
@ -323,7 +323,7 @@
"namespaces": "Espaces de noms", "namespaces": "Espaces de noms",
"search": "Écris pour rechercher un espace de noms…", "search": "Écris pour rechercher un espace de noms…",
"create": { "create": {
"title": "New namespace", "title": "Nouvel espace de noms",
"titleRequired": "Indique un nom.", "titleRequired": "Indique un nom.",
"explanation": "Des collections de listes pour partager et organiser vos listes. En fait, chaque liste appartient à un espace de noms.", "explanation": "Des collections de listes pour partager et organiser vos listes. En fait, chaque liste appartient à un espace de noms.",
"tooltip": "Quest-ce quun espace de noms ?", "tooltip": "Quest-ce quun espace de noms ?",
@ -335,7 +335,7 @@
"archiveText": "Tu ne pourras pas modifier cet espace de noms ou créer de nouvelles listes tant que tu ne lauras pas désarchivé. Ceci archivera également toutes les listes de cet espace de noms.", "archiveText": "Tu ne pourras pas modifier cet espace de noms ou créer de nouvelles listes tant que tu ne lauras pas désarchivé. Ceci archivera également toutes les listes de cet espace de noms.",
"unarchiveText": "Tu pourras créer de nouvelles listes ou les modifier.", "unarchiveText": "Tu pourras créer de nouvelles listes ou les modifier.",
"success": "Espace de noms archivé.", "success": "Espace de noms archivé.",
"unarchiveSuccess": "The namespace was successfully un-archived.", "unarchiveSuccess": "Espace de noms archivé.",
"description": "Larchivage dun espace de noms signifie quon ne peut pas créer de nouvelles listes dans cet espace, ni le modifier." "description": "Larchivage dun espace de noms signifie quon ne peut pas créer de nouvelles listes dans cet espace, ni le modifier."
}, },
"delete": { "delete": {
@ -383,7 +383,7 @@
"includeNulls": "Inclure les tâches sans valeurs", "includeNulls": "Inclure les tâches sans valeurs",
"requireAll": "Exiger tous les filtres pour quune tâche saffiche", "requireAll": "Exiger tous les filtres pour quune tâche saffiche",
"showDoneTasks": "Afficher les tâches terminées", "showDoneTasks": "Afficher les tâches terminées",
"sortAlphabetically": "Sort Alphabetically", "sortAlphabetically": "Trier par ordre alphabétique",
"enablePriority": "Activer le filtre par priorité", "enablePriority": "Activer le filtre par priorité",
"enablePercentDone": "Enable Filter By Progress", "enablePercentDone": "Enable Filter By Progress",
"dueDateRange": "Plage de dates déchéance", "dueDateRange": "Plage de dates déchéance",
@ -392,7 +392,7 @@
"reminderRange": "Plage de dates de rappel" "reminderRange": "Plage de dates de rappel"
}, },
"create": { "create": {
"title": "New Saved Filter", "title": "Nouveau filtre enregistré",
"description": "Un filtre enregistré est une liste virtuelle qui est calculée à partir dun ensemble de filtres à chaque fois quon y accède. Une fois créé, il apparaît dans un espace de noms spécial.", "description": "Un filtre enregistré est une liste virtuelle qui est calculée à partir dun ensemble de filtres à chaque fois quon y accède. Une fois créé, il apparaît dans un espace de noms spécial.",
"action": "Créer un nouveau filtre enregistré" "action": "Créer un nouveau filtre enregistré"
}, },
@ -485,7 +485,7 @@
"showMenu": "Afficher le menu", "showMenu": "Afficher le menu",
"hideMenu": "Masquer le menu", "hideMenu": "Masquer le menu",
"forExample": "Par exemple :", "forExample": "Par exemple :",
"welcomeBack": "Welcome Back!" "welcomeBack": "Heureux de vous revoir !"
}, },
"input": { "input": {
"resetColor": "Réinitialiser la couleur", "resetColor": "Réinitialiser la couleur",
@ -554,7 +554,7 @@
"chooseStartDate": "Clique ici pour fixer une date de début", "chooseStartDate": "Clique ici pour fixer une date de début",
"chooseEndDate": "Clique ici pour fixer une date de fin", "chooseEndDate": "Clique ici pour fixer une date de fin",
"move": "Déplacer une tâche vers une autre liste", "move": "Déplacer une tâche vers une autre liste",
"done": "Mark task done!", "done": "Marquer la tâche comme terminée !",
"undone": "Marquer comme inachevé", "undone": "Marquer comme inachevé",
"created": "Créé {0} par {1}", "created": "Créé {0} par {1}",
"updated": "Mis à jour {0}", "updated": "Mis à jour {0}",
@ -570,22 +570,22 @@
"text2": "Ceci supprimera également toutes les pièces jointes, les rappels et les relations associés à cette tâche et ne pourra pas être annulé !" "text2": "Ceci supprimera également toutes les pièces jointes, les rappels et les relations associés à cette tâche et ne pourra pas être annulé !"
}, },
"actions": { "actions": {
"assign": "Attribuer à un utilisateur", "assign": "Assign to User",
"label": "Ajouter des étiquettes", "label": "Add Labels",
"priority": "Définir la priorité", "priority": "Définir la priorité",
"dueDate": "Définir léchéance", "dueDate": "Définir léchéance",
"startDate": "Définir une date de début", "startDate": "Set Start Date",
"endDate": "Fixer une date de fin", "endDate": "Set End Date",
"reminders": "Définir des rappels", "reminders": "Définir des rappels",
"repeatAfter": "Définir un intervalle de répétition", "repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress", "percentDone": "Set Progress",
"attachments": "Ajouter des pièces jointes", "attachments": "Add Attachments",
"relatedTasks": "Ajouter des relations de tâches", "relatedTasks": "Add Relation",
"moveList": "Déplacer la tâche", "moveList": "Move",
"color": "Définir la couleur de la tâche", "color": "Set Color",
"delete": "Supprimer la tâche", "delete": "Delete",
"favorite": "Enregistrer comme favori", "favorite": "Add to Favorites",
"unfavorite": "Retirer des favoris" "unfavorite": "Remove from Favorites"
} }
}, },
"attributes": { "attributes": {
@ -790,7 +790,7 @@
"then": "puis", "then": "puis",
"task": { "task": {
"title": "Page de tâche", "title": "Page de tâche",
"done": "Done", "done": "Terminé",
"assign": "Attribuer à un utilisateur", "assign": "Attribuer à un utilisateur",
"labels": "Ajouter des étiquettes à cette tâche", "labels": "Ajouter des étiquettes à cette tâche",
"dueDate": "Modifier la date déchéance de cette tâche", "dueDate": "Modifier la date déchéance de cette tâche",
@ -823,7 +823,7 @@
"url": "URL Vikunja", "url": "URL Vikunja",
"urlPlaceholder": "Par exemple : https://localhost:3456", "urlPlaceholder": "Par exemple : https://localhost:3456",
"change": "changer", "change": "changer",
"use": "Using Vikunja installation at {0}", "use": "Utiliser linstallation de Vikunja à {0}",
"error": "Impossible de trouver ou d'utiliser l'installation de Vikunja sur « {domain} ». Veuillez essayer une autre URL.", "error": "Impossible de trouver ou d'utiliser l'installation de Vikunja sur « {domain} ». Veuillez essayer une autre URL.",
"success": "Utilisation de linstallation Vikunja à « {domain} ».", "success": "Utilisation de linstallation Vikunja à « {domain} ».",
"urlRequired": "Une URL est requise." "urlRequired": "Une URL est requise."
@ -908,7 +908,7 @@
"4015": "Le commentaire de la tâche nexiste pas.", "4015": "Le commentaire de la tâche nexiste pas.",
"4016": "Champ de tâche invalide.", "4016": "Champ de tâche invalide.",
"4017": "Comparateur de filtre de tâche invalide.", "4017": "Comparateur de filtre de tâche invalide.",
"4018": "Invalid task filter concatenator.", "4018": "Concaténateur de filtre de tâche invalide.",
"4019": "Valeur de filtre de tâche invalide.", "4019": "Valeur de filtre de tâche invalide.",
"5001": "Lespace de noms nexiste pas.", "5001": "Lespace de noms nexiste pas.",
"5003": "Tu nas pas accès à lespace de noms indiqué.", "5003": "Tu nas pas accès à lespace de noms indiqué.",

View file

@ -570,22 +570,22 @@
"text2": "Questo rimuoverà anche tutti gli allegati, i promemoria e le relazioni associati a questa attività e non può essere ripristinato!" "text2": "Questo rimuoverà anche tutti gli allegati, i promemoria e le relazioni associati a questa attività e non può essere ripristinato!"
}, },
"actions": { "actions": {
"assign": "Assegna ad un utente", "assign": "Assegna all'Utente",
"label": "Aggiungi etichette", "label": "Aggiungi Etichette",
"priority": "Imposta Priorità", "priority": "Imposta Priorità",
"dueDate": "Imposta data di scadenza", "dueDate": "Imposta data di scadenza",
"startDate": "Imposta una data di inizio", "startDate": "Imposta Data Inizio",
"endDate": "Imposta una data di fine", "endDate": "Imposta Data Fine",
"reminders": "Imposta promemoria", "reminders": "Imposta promemoria",
"repeatAfter": "Imposta ricorrenza", "repeatAfter": "Imposta Intervallo Ripetizione",
"percentDone": "Imposta Progresso", "percentDone": "Imposta Progresso",
"attachments": "Aggiungi allegati", "attachments": "Aggiungi Allegati",
"relatedTasks": "Aggiungi attività collegate", "relatedTasks": "Aggiungi Relazione",
"moveList": "Sposta attività", "moveList": "Sposta",
"color": "Imposta colore attività", "color": "Imposta Colore",
"delete": "Elimina attività", "delete": "Elimina",
"favorite": "Salva come preferito", "favorite": "Aggiungi ai Preferiti",
"unfavorite": "Rimuovi dai preferiti" "unfavorite": "Rimuovi dai Preferiti"
} }
}, },
"attributes": { "attributes": {

View file

@ -91,15 +91,15 @@
"totp": { "totp": {
"title": "Twee-factor-authenticatie", "title": "Twee-factor-authenticatie",
"enroll": "Activeren", "enroll": "Activeren",
"finishSetupPart1": "To finish your setup, use this secret in your totp app (Google Authenticator or similar):", "finishSetupPart1": "Gebruik dit geheim in je TOTP app (Google Authenticator of vergelijkbaar), om de installatie te voltooien:",
"finishSetupPart2": "After that, enter a code from your app below.", "finishSetupPart2": "Daarna voert u hieronder een code van je app in.",
"scanQR": "Als alternatief kan je ook deze QR code scannen:", "scanQR": "Als alternatief kan je ook deze QR code scannen:",
"passcode": "Je toegangscode", "passcode": "Je toegangscode",
"passcodePlaceholder": "A code generated by your totp application", "passcodePlaceholder": "Een code gegenereerd door uw TOTP app",
"setupSuccess": "Je hebt met succes tweestapsverificatie ingesteld!", "setupSuccess": "Je hebt met succes tweestapsverificatie ingesteld!",
"enterPassword": "Voer alsjeblieft je wachtwoord in", "enterPassword": "Voer alsjeblieft je wachtwoord in",
"disable": "Tweestapsverificatie uitschakelen", "disable": "Tweestapsverificatie uitschakelen",
"confirmSuccess": "You've successfully confirmed your totp setup and can use it from now on!", "confirmSuccess": "Je hebt met succes je TOTP setup bevestigd en kan het van nu af aan gebruiken!",
"disableSuccess": "Authenticatie in twee stappen is succesvol uitgeschakeld." "disableSuccess": "Authenticatie in twee stappen is succesvol uitgeschakeld."
}, },
"caldav": { "caldav": {
@ -118,7 +118,7 @@
"setSuccess": "De avatar is succesvol ingesteld!" "setSuccess": "De avatar is succesvol ingesteld!"
}, },
"quickAddMagic": { "quickAddMagic": {
"title": "Quick Add Magic Mode", "title": "Magische Modus Snel Toevoegen",
"disabled": "Uitgeschakeld", "disabled": "Uitgeschakeld",
"todoist": "Todoist", "todoist": "Todoist",
"vikunja": "Vikunja" "vikunja": "Vikunja"
@ -136,7 +136,7 @@
"deletion": { "deletion": {
"title": "Verwijder je Vikunja account", "title": "Verwijder je Vikunja account",
"text1": "Het verwijderen van je account is permanent en kan niet ongedaan worden gemaakt. We zullen al je namespaces, lijsten, taken en alles wat ermee verbonden is verwijderen.", "text1": "Het verwijderen van je account is permanent en kan niet ongedaan worden gemaakt. We zullen al je namespaces, lijsten, taken en alles wat ermee verbonden is verwijderen.",
"text2": "To proceed, please enter your password. You will receive an email with further instructions.", "text2": "Graag je wachtwoord invullen om verder te gaan. Je zult een e-mail ontvangen met verdere instructies.",
"confirm": "Verwijder mijn account", "confirm": "Verwijder mijn account",
"requestSuccess": "Het verzoek was succesvol. Je ontvangt een e-mail met verdere instructies.", "requestSuccess": "Het verzoek was succesvol. Je ontvangt een e-mail met verdere instructies.",
"passwordRequired": "Voer alsjeblieft je wachtwoord in.", "passwordRequired": "Voer alsjeblieft je wachtwoord in.",
@ -500,7 +500,7 @@
}, },
"editor": { "editor": {
"edit": "Bewerken", "edit": "Bewerken",
"done": "Gereed", "done": "Voltooid",
"heading1": "Kop 1", "heading1": "Kop 1",
"heading2": "Kop 2", "heading2": "Kop 2",
"heading3": "Kop 3", "heading3": "Kop 3",
@ -555,7 +555,7 @@
"chooseEndDate": "Klik hier om een einddatum in te stellen", "chooseEndDate": "Klik hier om een einddatum in te stellen",
"move": "Verplaats taak naar een andere lijst", "move": "Verplaats taak naar een andere lijst",
"done": "Mark task done!", "done": "Mark task done!",
"undone": "Markeer als niet gereed", "undone": "Markeer als niet voltooid",
"created": "Created {0} by {1}", "created": "Created {0} by {1}",
"updated": "Updated {0}", "updated": "Updated {0}",
"doneAt": "Done {0}", "doneAt": "Done {0}",
@ -570,22 +570,22 @@
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!" "text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
}, },
"actions": { "actions": {
"assign": "Toewijzen aan een gebruiker", "assign": "Assign to User",
"label": "Labels toevoegen", "label": "Add Labels",
"priority": "Prioriteit instellen", "priority": "Prioriteit instellen",
"dueDate": "Vervaldatum instellen", "dueDate": "Vervaldatum instellen",
"startDate": "Startdatum instellen", "startDate": "Set Start Date",
"endDate": "Einddatum instellen", "endDate": "Set End Date",
"reminders": "Herinneringen instellen", "reminders": "Herinneringen instellen",
"repeatAfter": "Herhalingsinterval instellen", "repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress", "percentDone": "Set Progress",
"attachments": "Bijlage toevoegen", "attachments": "Add Attachments",
"relatedTasks": "Taakrelaties toevoegen", "relatedTasks": "Add Relation",
"moveList": "Taak verplaatsen", "moveList": "Move",
"color": "Taakkleur instellen", "color": "Set Color",
"delete": "Taak verwijderen", "delete": "Verwijder",
"favorite": "Opslaan als favoriet", "favorite": "Toevoegen aan favorieten",
"unfavorite": "Verwijderen uit favorieten" "unfavorite": "Verwijder uit favorieten"
} }
}, },
"attributes": { "attributes": {
@ -594,7 +594,7 @@
"created": "Aangemaakt op", "created": "Aangemaakt op",
"createdBy": "Aangemaakt door", "createdBy": "Aangemaakt door",
"description": "Beschrijving", "description": "Beschrijving",
"done": "Gereed", "done": "Voltooid",
"dueDate": "Due Date", "dueDate": "Due Date",
"endDate": "End Date", "endDate": "End Date",
"labels": "Labels", "labels": "Labels",

View file

@ -580,11 +580,11 @@
"repeatAfter": "Ustaw interwał powtarzania", "repeatAfter": "Ustaw interwał powtarzania",
"percentDone": "Ustaw postęp", "percentDone": "Ustaw postęp",
"attachments": "Dodaj załączniki", "attachments": "Dodaj załączniki",
"relatedTasks": "Dodaj powiązane zadania", "relatedTasks": "Dodaj powiązanie",
"moveList": "Przenieś zadanie", "moveList": "Przenieś",
"color": "Ustaw kolor zadania", "color": "Ustaw kolor",
"delete": "Usuń zadanie", "delete": "Usuń",
"favorite": "Zapisz jako ulubione", "favorite": "Dodaj do ulubionych",
"unfavorite": "Usuń z ulubionych" "unfavorite": "Usuń z ulubionych"
} }
}, },

View file

@ -570,22 +570,22 @@
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!" "text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
}, },
"actions": { "actions": {
"assign": "Assign to a user", "assign": "Assign to User",
"label": "Add labels", "label": "Add Labels",
"priority": "Set Priority", "priority": "Set Priority",
"dueDate": "Set Due Date", "dueDate": "Set Due Date",
"startDate": "Set a Start Date", "startDate": "Set Start Date",
"endDate": "Set an End Date", "endDate": "Set End Date",
"reminders": "Set Reminders", "reminders": "Set Reminders",
"repeatAfter": "Set a repeating interval", "repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress", "percentDone": "Set Progress",
"attachments": "Add attachments", "attachments": "Add Attachments",
"relatedTasks": "Add task relations", "relatedTasks": "Add Relation",
"moveList": "Move task", "moveList": "Move",
"color": "Set task color", "color": "Set Color",
"delete": "Delete task", "delete": "Delete",
"favorite": "Save as favorite", "favorite": "Add to Favorites",
"unfavorite": "Remove from favorites" "unfavorite": "Remove from Favorites"
} }
}, },
"attributes": { "attributes": {

View file

@ -570,22 +570,22 @@
"text2": "Isto vai também eliminar todos os anexos, lembretes e relações associadas a esta tarefa, e não pode ser revertido!" "text2": "Isto vai também eliminar todos os anexos, lembretes e relações associadas a esta tarefa, e não pode ser revertido!"
}, },
"actions": { "actions": {
"assign": "Atribuir a um utilizador", "assign": "Atribuir a Utilizador",
"label": "Adicionar etiquetas", "label": "Adicionar Etiquetas",
"priority": "Definir Prioridade", "priority": "Definir Prioridade",
"dueDate": "Definir Data de Vencimento", "dueDate": "Definir Data de Vencimento",
"startDate": "Definir Data de Início", "startDate": "Definir Data de Início",
"endDate": "Definir Data de Fim", "endDate": "Definir Data de Fim",
"reminders": "Definir Lembretes", "reminders": "Definir Lembretes",
"repeatAfter": "Definir um intervalo recorrente", "repeatAfter": "Definir Intervalo Recorrente",
"percentDone": "Definir Progresso", "percentDone": "Definir Progresso",
"attachments": "Adicionar Anexos", "attachments": "Adicionar Anexos",
"relatedTasks": "Adicionar relações entre tarefas", "relatedTasks": "Adicionar Relação",
"moveList": "Mover tarefa", "moveList": "Mover",
"color": "Definir cor da tarefa", "color": "Definir Cor",
"delete": "Eliminar tarefa", "delete": "Eliminar",
"favorite": "Marcar como favorito", "favorite": "Adicionar aos Favoritos",
"unfavorite": "Remover dos favoritos" "unfavorite": "Remover dos Favoritos"
} }
}, },
"attributes": { "attributes": {

View file

@ -570,22 +570,22 @@
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!" "text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
}, },
"actions": { "actions": {
"assign": "Assign to a user", "assign": "Assign to User",
"label": "Add labels", "label": "Add Labels",
"priority": "Set Priority", "priority": "Set Priority",
"dueDate": "Set Due Date", "dueDate": "Set Due Date",
"startDate": "Set a Start Date", "startDate": "Set Start Date",
"endDate": "Set an End Date", "endDate": "Set End Date",
"reminders": "Set Reminders", "reminders": "Set Reminders",
"repeatAfter": "Set a repeating interval", "repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress", "percentDone": "Set Progress",
"attachments": "Add attachments", "attachments": "Add Attachments",
"relatedTasks": "Add task relations", "relatedTasks": "Add Relation",
"moveList": "Move task", "moveList": "Move",
"color": "Set task color", "color": "Set Color",
"delete": "Delete task", "delete": "Delete",
"favorite": "Save as favorite", "favorite": "Add to Favorites",
"unfavorite": "Remove from favorites" "unfavorite": "Remove from Favorites"
} }
}, },
"attributes": { "attributes": {

View file

@ -570,22 +570,22 @@
"text2": "Будут удалены все вложения, напоминания и отношения, связанные с этой задачей, и отменить это будет нельзя!" "text2": "Будут удалены все вложения, напоминания и отношения, связанные с этой задачей, и отменить это будет нельзя!"
}, },
"actions": { "actions": {
"assign": "Assign to a user", "assign": "Assign to User",
"label": "Добавить метки", "label": "Add Labels",
"priority": "Установить приоритет", "priority": "Установить приоритет",
"dueDate": "Установить срок", "dueDate": "Установить срок",
"startDate": "Установить дату начала", "startDate": "Set Start Date",
"endDate": "Установить дату завершения", "endDate": "Set End Date",
"reminders": "Установить напоминания", "reminders": "Установить напоминания",
"repeatAfter": "Установить интервал повтора", "repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress", "percentDone": "Set Progress",
"attachments": "Добавить вложения", "attachments": "Add Attachments",
"relatedTasks": "Добавить связанные задачи", "relatedTasks": "Add Relation",
"moveList": "Переместить задачу", "moveList": "Move",
"color": "Установить цвет задачи", "color": "Set Color",
"delete": "Удалить задачу", "delete": "Delete",
"favorite": "Сохранить как ибзранное", "favorite": "Add to Favorites",
"unfavorite": "Убрать из избранного" "unfavorite": "Remove from Favorites"
} }
}, },
"attributes": { "attributes": {

View file

@ -570,22 +570,22 @@
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!" "text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
}, },
"actions": { "actions": {
"assign": "Assign to a user", "assign": "Assign to User",
"label": "Add labels", "label": "Add Labels",
"priority": "Set Priority", "priority": "Set Priority",
"dueDate": "Set Due Date", "dueDate": "Set Due Date",
"startDate": "Set a Start Date", "startDate": "Set Start Date",
"endDate": "Set an End Date", "endDate": "Set End Date",
"reminders": "Set Reminders", "reminders": "Set Reminders",
"repeatAfter": "Set a repeating interval", "repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress", "percentDone": "Set Progress",
"attachments": "Add attachments", "attachments": "Add Attachments",
"relatedTasks": "Add task relations", "relatedTasks": "Add Relation",
"moveList": "Move task", "moveList": "Move",
"color": "Set task color", "color": "Set Color",
"delete": "Delete task", "delete": "Delete",
"favorite": "Save as favorite", "favorite": "Add to Favorites",
"unfavorite": "Remove from favorites" "unfavorite": "Remove from Favorites"
} }
}, },
"attributes": { "attributes": {

View file

@ -570,22 +570,22 @@
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!" "text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
}, },
"actions": { "actions": {
"assign": "Assign to a user", "assign": "Assign to User",
"label": "Add labels", "label": "Add Labels",
"priority": "Set Priority", "priority": "Set Priority",
"dueDate": "Set Due Date", "dueDate": "Set Due Date",
"startDate": "Set a Start Date", "startDate": "Set Start Date",
"endDate": "Set an End Date", "endDate": "Set End Date",
"reminders": "Set Reminders", "reminders": "Set Reminders",
"repeatAfter": "Set a repeating interval", "repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress", "percentDone": "Set Progress",
"attachments": "Add attachments", "attachments": "Add Attachments",
"relatedTasks": "Add task relations", "relatedTasks": "Add Relation",
"moveList": "Move task", "moveList": "Move",
"color": "Set task color", "color": "Set Color",
"delete": "Delete task", "delete": "Delete",
"favorite": "Save as favorite", "favorite": "Add to Favorites",
"unfavorite": "Remove from favorites" "unfavorite": "Remove from Favorites"
} }
}, },
"attributes": { "attributes": {

View file

@ -570,22 +570,22 @@
"text2": "Thao tác này cũng sẽ xóa tất cả tệp đính kèm, lời nhắc và liên kết đến công việc này. Nó không thể hoàn tác!" "text2": "Thao tác này cũng sẽ xóa tất cả tệp đính kèm, lời nhắc và liên kết đến công việc này. Nó không thể hoàn tác!"
}, },
"actions": { "actions": {
"assign": "Chỉ định một người", "assign": "Assign to User",
"label": "Thêm nhãn", "label": "Add Labels",
"priority": "Mức độ ưu tiên", "priority": "Mức độ ưu tiên",
"dueDate": "Đặt ngày đến hạn", "dueDate": "Đặt ngày đến hạn",
"startDate": "Chọn ngày bắt đầu", "startDate": "Set Start Date",
"endDate": "Chọn ngày kết thúc", "endDate": "Set End Date",
"reminders": "Thiết lập nhắc nhở", "reminders": "Thiết lập nhắc nhở",
"repeatAfter": "Đặt khoảng lặp lại", "repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress", "percentDone": "Set Progress",
"attachments": "Đính kèm tệp", "attachments": "Add Attachments",
"relatedTasks": "Thêm liên kết công việc", "relatedTasks": "Add Relation",
"moveList": "Di chuyển công việc", "moveList": "Move",
"color": "Chọn màu", "color": "Set Color",
"delete": "Loại bỏ công việc", "delete": "Delete",
"favorite": "Lưu thành ưa thích", "favorite": "Add to Favorites",
"unfavorite": "Gỡ khỏi ưa thích" "unfavorite": "Remove from Favorites"
} }
}, },
"attributes": { "attributes": {

View file

@ -1,7 +1,7 @@
/* eslint-disable no-console */ /* eslint-disable no-console */
/* eslint-disable no-undef */ /* eslint-disable no-undef */
const workboxVersion = 'v6.4.2' const workboxVersion = 'v6.5.0'
importScripts( `/workbox-${workboxVersion}/workbox-sw.js`) importScripts( `/workbox-${workboxVersion}/workbox-sw.js`)
workbox.setConfig({ workbox.setConfig({
modulePathPrefix: `/workbox-${workboxVersion}`, modulePathPrefix: `/workbox-${workboxVersion}`,

View file

@ -299,6 +299,7 @@ export default defineComponent({
break break
} }
} }
// FIXME: Use computed
sortTasks(this.tasks) sortTasks(this.tasks)
}, },

View file

@ -520,6 +520,13 @@ export default {
}, },
immediate: true, immediate: true,
}, },
// Using a watcher here because the header component handles saving the task with the api but we want to decouple
// it from the page title.
'task.title': {
handler(title) {
this.setTitle(title)
},
},
}, },
computed: { computed: {
currentList() { currentList() {

View file

@ -181,7 +181,7 @@ export default {
validateField() { validateField() {
// using computed so that debounced function definition stays // using computed so that debounced function definition stays
return useDebounceFn((field) => { return useDebounceFn((field) => {
this[`${field}Valid`] = this.$refs[field].value !== '' this[`${field}Valid`] = this.$refs[field]?.value !== ''
}, 100) }, 100)
}, },
}, },

1360
yarn.lock

File diff suppressed because it is too large Load diff