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 test:frontend --browser chrome --record
depends_on:
- dependencies
- build-prod
- name: deploy-preview
@ -137,6 +136,9 @@ steps:
GITEA_TOKEN:
from_secret: gitea_token
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
- node ./scripts/deploy-preview-netlify.js
depends_on:

View file

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

View file

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

View file

@ -41,7 +41,7 @@
<script setup lang="ts">
import {ref, computed, watch} from 'vue'
import { useI18n } from 'vue-i18n'
import {useI18n} from 'vue-i18n'
import {parseURL} from 'ufo'
import {checkAndSetApiUrl} from '@/helpers/checkAndSetApiUrl'
@ -61,18 +61,20 @@ const emit = defineEmits(['foundApi'])
const apiUrl = ref(window.API_URL)
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) => {
configureApi.value = value
}, { immediate: true })
}, {immediate: true})
const {t} = useI18n()
const errorMsg = ref('')
const successMsg = ref('')
async function setApiUrl() {
if (apiUrl.value === '') {
// Don't try to check and set an empty url

View file

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

View file

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

View file

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

View file

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

View file

@ -190,10 +190,7 @@ export default {
this.$t('task.undoneSuccess'),
}, [{
title: 'Undo',
callback() {
this.task.done = !this.task.done
this.markAsDone(!checked)
},
callback: () => this.undoDone(checked),
}])
}
@ -203,6 +200,11 @@ export default {
await updateFunc() // Don't delay it when un-marking it as it doesn't have an animation the other way around
}
},
undoDone(checked) {
this.task.done = !this.task.done
this.markAsDone(!checked)
},
async toggleFavorite() {
this.task.isFavorite = !this.task.isFavorite

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!"
},
"actions": {
"assign": "Přiřadit uživateli",
"label": "Přidat štítky",
"assign": "Assign to User",
"label": "Add Labels",
"priority": "Nastavit prioritu",
"dueDate": "Nastavit termín",
"startDate": "Nastavit počáteční datum",
"endDate": "Nastavit koncové datum",
"startDate": "Set Start Date",
"endDate": "Set End Date",
"reminders": "Nastavit připomenutí",
"repeatAfter": "Nastavit interval opakování",
"repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress",
"attachments": "Přidat přílohy",
"relatedTasks": "Přidat vztahy úkolu",
"moveList": "Přesunout úkol",
"color": "Nastavit barvu úkolu",
"delete": "Smazat úkol",
"favorite": "Uložit jako oblíbené",
"unfavorite": "Odebrat z oblíbených"
"attachments": "Add Attachments",
"relatedTasks": "Add Relation",
"moveList": "Move",
"color": "Set Color",
"delete": "Delete",
"favorite": "Add to Favorites",
"unfavorite": "Remove from Favorites"
}
},
"attributes": {

View file

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

View file

@ -571,20 +571,20 @@
},
"actions": {
"assign": "Benutzer:in zuweisen",
"label": "Label hinzueege",
"label": "Label hinzufügen",
"priority": "Priorität setzä",
"dueDate": "Fälligkeitsdatum setze",
"startDate": "Startdatum setze",
"endDate": "Enddatum setze",
"startDate": "Startdatum setzen",
"endDate": "Enddatum setzen",
"reminders": "Errinnerig iihstelle",
"repeatAfter": "En wiederholende Intervall setze",
"repeatAfter": "Wiederholung setzen",
"percentDone": "Fortschritt einstellen",
"attachments": "Aahang hinzuefüege",
"relatedTasks": "Uufgabsbeziehig hinzufüege",
"moveList": "Uufgab verschiebe",
"color": "Uufgab Farb setze",
"delete": "Uufgab chüble",
"favorite": "In Favoriten speichern",
"attachments": "Anhänge hinzufügen",
"relatedTasks": "Beziehung hinzufügen",
"moveList": "Verschieben",
"color": "Farbe setzen",
"delete": "Löschen",
"favorite": "Zu Favoriten hinzufügen",
"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!"
},
"actions": {
"assign": "Assign to a user",
"label": "Add labels",
"assign": "Assign to User",
"label": "Add Labels",
"priority": "Set Priority",
"dueDate": "Set Due Date",
"startDate": "Set a Start Date",
"endDate": "Set an End Date",
"startDate": "Set Start Date",
"endDate": "Set End Date",
"reminders": "Set Reminders",
"repeatAfter": "Set a repeating interval",
"repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress",
"attachments": "Add attachments",
"relatedTasks": "Add task relations",
"moveList": "Move task",
"color": "Set task color",
"delete": "Delete task",
"favorite": "Save as favorite",
"unfavorite": "Remove from favorites"
"attachments": "Add Attachments",
"relatedTasks": "Add Relation",
"moveList": "Move",
"color": "Set Color",
"delete": "Delete",
"favorite": "Add to Favorites",
"unfavorite": "Remove from Favorites"
}
},
"attributes": {

View file

@ -7,7 +7,7 @@
"lastViewed": "Dernière consultation",
"list": {
"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 :",
"import": "Importer tes données dans Vikunja"
}
@ -31,11 +31,11 @@
"username": "Nom dutilisateur·rice",
"usernameEmail": "Nom dutilisateur·rice ou adresse courriel",
"usernamePlaceholder": "p. ex. frederick",
"email": "Email address",
"email": "Adresse courriel",
"emailPlaceholder": "p. ex. frederic{'@'}vikunja.io",
"password": "Mot de passe",
"passwordPlaceholder": "p. ex. •••••••••••",
"forgotPassword": "Forgot your password?",
"forgotPassword": "Mot de passe oublié ?",
"resetPassword": "Réinitialiser ton 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.",
@ -44,20 +44,20 @@
"totpTitle": "Code dauthentification à deux facteurs",
"totpPlaceholder": "p. ex. 123456",
"login": "Se connecter",
"createAccount": "Create account",
"createAccount": "Créer un compte",
"loginWith": "Se connecter avec {provider}",
"authenticating": "Authentification…",
"openIdStateError": "Létat ne correspond pas, impossible de continuer !",
"openIdGeneralError": "Une erreur s'est produite lors de l'authentification contre un tiers.",
"logout": "Se déconnecter",
"emailInvalid": "Please enter a valid email address.",
"usernameRequired": "Please provide a username.",
"passwordRequired": "Please provide a password.",
"showPassword": "Show the password",
"hidePassword": "Hide the password",
"noAccountYet": "Don't have an account yet?",
"alreadyHaveAnAccount": "Already have an account?",
"remember": "Stay logged in"
"emailInvalid": "Veuillez saisir une adresse courriel valide.",
"usernameRequired": "Veuillez saisir un nom d'utilisateur.",
"passwordRequired": "Veuillez fournir un mot de passe.",
"showPassword": "Afficher le mot de passe",
"hidePassword": "Masquer le mot de passe",
"noAccountYet": "Vous n'avez pas encore de compte?",
"alreadyHaveAnAccount": "Vous avez déjà un compte?",
"remember": "Rester connecté(e)"
},
"settings": {
"title": "Paramètres",
@ -68,7 +68,7 @@
"currentPasswordPlaceholder": "Ton mot de passe actuel",
"passwordsDontMatch": "Le nouveau mot de passe et sa confirmation ne correspondent pas.",
"passwordUpdateSuccess": "Mot de passe mis à jour.",
"updateEmailTitle": "Update Your Email Address",
"updateEmailTitle": "Mettre à jour votre 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.",
"general": {
@ -86,7 +86,7 @@
"weekStartMonday": "lundi",
"language": "Langue",
"defaultList": "Liste par défaut",
"timezone": "Time Zone"
"timezone": "Fuseau horaire"
},
"totp": {
"title": "Authentification à deux facteurs",
@ -165,7 +165,7 @@
"searchSelect": "Clique ou appuie sur la touche Entrée pour sélectionner cette liste",
"shared": "Listes partagées",
"create": {
"header": "New list",
"header": "Nouvelle liste",
"titlePlaceholder": "Entre le nom de la liste…",
"addTitleRequired": "Indique un nom.",
"createdSuccess": "Liste créée.",
@ -323,7 +323,7 @@
"namespaces": "Espaces de noms",
"search": "Écris pour rechercher un espace de noms…",
"create": {
"title": "New namespace",
"title": "Nouvel espace de noms",
"titleRequired": "Indique un nom.",
"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 ?",
@ -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.",
"unarchiveText": "Tu pourras créer de nouvelles listes ou les modifier.",
"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."
},
"delete": {
@ -383,7 +383,7 @@
"includeNulls": "Inclure les tâches sans valeurs",
"requireAll": "Exiger tous les filtres pour quune tâche saffiche",
"showDoneTasks": "Afficher les tâches terminées",
"sortAlphabetically": "Sort Alphabetically",
"sortAlphabetically": "Trier par ordre alphabétique",
"enablePriority": "Activer le filtre par priorité",
"enablePercentDone": "Enable Filter By Progress",
"dueDateRange": "Plage de dates déchéance",
@ -392,7 +392,7 @@
"reminderRange": "Plage de dates de rappel"
},
"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.",
"action": "Créer un nouveau filtre enregistré"
},
@ -485,7 +485,7 @@
"showMenu": "Afficher le menu",
"hideMenu": "Masquer le menu",
"forExample": "Par exemple :",
"welcomeBack": "Welcome Back!"
"welcomeBack": "Heureux de vous revoir !"
},
"input": {
"resetColor": "Réinitialiser la couleur",
@ -554,7 +554,7 @@
"chooseStartDate": "Clique ici pour fixer une date de début",
"chooseEndDate": "Clique ici pour fixer une date de fin",
"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é",
"created": "Créé {0} par {1}",
"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é !"
},
"actions": {
"assign": "Attribuer à un utilisateur",
"label": "Ajouter des étiquettes",
"assign": "Assign to User",
"label": "Add Labels",
"priority": "Définir la priorité",
"dueDate": "Définir léchéance",
"startDate": "Définir une date de début",
"endDate": "Fixer une date de fin",
"startDate": "Set Start Date",
"endDate": "Set End Date",
"reminders": "Définir des rappels",
"repeatAfter": "Définir un intervalle de répétition",
"repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress",
"attachments": "Ajouter des pièces jointes",
"relatedTasks": "Ajouter des relations de tâches",
"moveList": "Déplacer la tâche",
"color": "Définir la couleur de la tâche",
"delete": "Supprimer la tâche",
"favorite": "Enregistrer comme favori",
"unfavorite": "Retirer des favoris"
"attachments": "Add Attachments",
"relatedTasks": "Add Relation",
"moveList": "Move",
"color": "Set Color",
"delete": "Delete",
"favorite": "Add to Favorites",
"unfavorite": "Remove from Favorites"
}
},
"attributes": {
@ -790,7 +790,7 @@
"then": "puis",
"task": {
"title": "Page de tâche",
"done": "Done",
"done": "Terminé",
"assign": "Attribuer à un utilisateur",
"labels": "Ajouter des étiquettes à cette tâche",
"dueDate": "Modifier la date déchéance de cette tâche",
@ -823,7 +823,7 @@
"url": "URL Vikunja",
"urlPlaceholder": "Par exemple : https://localhost:3456",
"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.",
"success": "Utilisation de linstallation Vikunja à « {domain} ».",
"urlRequired": "Une URL est requise."
@ -908,7 +908,7 @@
"4015": "Le commentaire de la tâche nexiste pas.",
"4016": "Champ 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.",
"5001": "Lespace de noms nexiste pas.",
"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!"
},
"actions": {
"assign": "Assegna ad un utente",
"label": "Aggiungi etichette",
"assign": "Assegna all'Utente",
"label": "Aggiungi Etichette",
"priority": "Imposta Priorità",
"dueDate": "Imposta data di scadenza",
"startDate": "Imposta una data di inizio",
"endDate": "Imposta una data di fine",
"startDate": "Imposta Data Inizio",
"endDate": "Imposta Data Fine",
"reminders": "Imposta promemoria",
"repeatAfter": "Imposta ricorrenza",
"repeatAfter": "Imposta Intervallo Ripetizione",
"percentDone": "Imposta Progresso",
"attachments": "Aggiungi allegati",
"relatedTasks": "Aggiungi attività collegate",
"moveList": "Sposta attività",
"color": "Imposta colore attività",
"delete": "Elimina attività",
"favorite": "Salva come preferito",
"unfavorite": "Rimuovi dai preferiti"
"attachments": "Aggiungi Allegati",
"relatedTasks": "Aggiungi Relazione",
"moveList": "Sposta",
"color": "Imposta Colore",
"delete": "Elimina",
"favorite": "Aggiungi ai Preferiti",
"unfavorite": "Rimuovi dai Preferiti"
}
},
"attributes": {

View file

@ -91,15 +91,15 @@
"totp": {
"title": "Twee-factor-authenticatie",
"enroll": "Activeren",
"finishSetupPart1": "To finish your setup, use this secret in your totp app (Google Authenticator or similar):",
"finishSetupPart2": "After that, enter a code from your app below.",
"finishSetupPart1": "Gebruik dit geheim in je TOTP app (Google Authenticator of vergelijkbaar), om de installatie te voltooien:",
"finishSetupPart2": "Daarna voert u hieronder een code van je app in.",
"scanQR": "Als alternatief kan je ook deze QR code scannen:",
"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!",
"enterPassword": "Voer alsjeblieft je wachtwoord in",
"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."
},
"caldav": {
@ -118,7 +118,7 @@
"setSuccess": "De avatar is succesvol ingesteld!"
},
"quickAddMagic": {
"title": "Quick Add Magic Mode",
"title": "Magische Modus Snel Toevoegen",
"disabled": "Uitgeschakeld",
"todoist": "Todoist",
"vikunja": "Vikunja"
@ -136,7 +136,7 @@
"deletion": {
"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.",
"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",
"requestSuccess": "Het verzoek was succesvol. Je ontvangt een e-mail met verdere instructies.",
"passwordRequired": "Voer alsjeblieft je wachtwoord in.",
@ -500,7 +500,7 @@
},
"editor": {
"edit": "Bewerken",
"done": "Gereed",
"done": "Voltooid",
"heading1": "Kop 1",
"heading2": "Kop 2",
"heading3": "Kop 3",
@ -555,7 +555,7 @@
"chooseEndDate": "Klik hier om een einddatum in te stellen",
"move": "Verplaats taak naar een andere lijst",
"done": "Mark task done!",
"undone": "Markeer als niet gereed",
"undone": "Markeer als niet voltooid",
"created": "Created {0} by {1}",
"updated": "Updated {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!"
},
"actions": {
"assign": "Toewijzen aan een gebruiker",
"label": "Labels toevoegen",
"assign": "Assign to User",
"label": "Add Labels",
"priority": "Prioriteit instellen",
"dueDate": "Vervaldatum instellen",
"startDate": "Startdatum instellen",
"endDate": "Einddatum instellen",
"startDate": "Set Start Date",
"endDate": "Set End Date",
"reminders": "Herinneringen instellen",
"repeatAfter": "Herhalingsinterval instellen",
"repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress",
"attachments": "Bijlage toevoegen",
"relatedTasks": "Taakrelaties toevoegen",
"moveList": "Taak verplaatsen",
"color": "Taakkleur instellen",
"delete": "Taak verwijderen",
"favorite": "Opslaan als favoriet",
"unfavorite": "Verwijderen uit favorieten"
"attachments": "Add Attachments",
"relatedTasks": "Add Relation",
"moveList": "Move",
"color": "Set Color",
"delete": "Verwijder",
"favorite": "Toevoegen aan favorieten",
"unfavorite": "Verwijder uit favorieten"
}
},
"attributes": {
@ -594,7 +594,7 @@
"created": "Aangemaakt op",
"createdBy": "Aangemaakt door",
"description": "Beschrijving",
"done": "Gereed",
"done": "Voltooid",
"dueDate": "Due Date",
"endDate": "End Date",
"labels": "Labels",

View file

@ -580,11 +580,11 @@
"repeatAfter": "Ustaw interwał powtarzania",
"percentDone": "Ustaw postęp",
"attachments": "Dodaj załączniki",
"relatedTasks": "Dodaj powiązane zadania",
"moveList": "Przenieś zadanie",
"color": "Ustaw kolor zadania",
"delete": "Usuń zadanie",
"favorite": "Zapisz jako ulubione",
"relatedTasks": "Dodaj powiązanie",
"moveList": "Przenieś",
"color": "Ustaw kolor",
"delete": "Usuń",
"favorite": "Dodaj do 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!"
},
"actions": {
"assign": "Assign to a user",
"label": "Add labels",
"assign": "Assign to User",
"label": "Add Labels",
"priority": "Set Priority",
"dueDate": "Set Due Date",
"startDate": "Set a Start Date",
"endDate": "Set an End Date",
"startDate": "Set Start Date",
"endDate": "Set End Date",
"reminders": "Set Reminders",
"repeatAfter": "Set a repeating interval",
"repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress",
"attachments": "Add attachments",
"relatedTasks": "Add task relations",
"moveList": "Move task",
"color": "Set task color",
"delete": "Delete task",
"favorite": "Save as favorite",
"unfavorite": "Remove from favorites"
"attachments": "Add Attachments",
"relatedTasks": "Add Relation",
"moveList": "Move",
"color": "Set Color",
"delete": "Delete",
"favorite": "Add to Favorites",
"unfavorite": "Remove from Favorites"
}
},
"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!"
},
"actions": {
"assign": "Atribuir a um utilizador",
"label": "Adicionar etiquetas",
"assign": "Atribuir a Utilizador",
"label": "Adicionar Etiquetas",
"priority": "Definir Prioridade",
"dueDate": "Definir Data de Vencimento",
"startDate": "Definir Data de Início",
"endDate": "Definir Data de Fim",
"reminders": "Definir Lembretes",
"repeatAfter": "Definir um intervalo recorrente",
"repeatAfter": "Definir Intervalo Recorrente",
"percentDone": "Definir Progresso",
"attachments": "Adicionar Anexos",
"relatedTasks": "Adicionar relações entre tarefas",
"moveList": "Mover tarefa",
"color": "Definir cor da tarefa",
"delete": "Eliminar tarefa",
"favorite": "Marcar como favorito",
"unfavorite": "Remover dos favoritos"
"relatedTasks": "Adicionar Relação",
"moveList": "Mover",
"color": "Definir Cor",
"delete": "Eliminar",
"favorite": "Adicionar aos Favoritos",
"unfavorite": "Remover dos Favoritos"
}
},
"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!"
},
"actions": {
"assign": "Assign to a user",
"label": "Add labels",
"assign": "Assign to User",
"label": "Add Labels",
"priority": "Set Priority",
"dueDate": "Set Due Date",
"startDate": "Set a Start Date",
"endDate": "Set an End Date",
"startDate": "Set Start Date",
"endDate": "Set End Date",
"reminders": "Set Reminders",
"repeatAfter": "Set a repeating interval",
"repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress",
"attachments": "Add attachments",
"relatedTasks": "Add task relations",
"moveList": "Move task",
"color": "Set task color",
"delete": "Delete task",
"favorite": "Save as favorite",
"unfavorite": "Remove from favorites"
"attachments": "Add Attachments",
"relatedTasks": "Add Relation",
"moveList": "Move",
"color": "Set Color",
"delete": "Delete",
"favorite": "Add to Favorites",
"unfavorite": "Remove from Favorites"
}
},
"attributes": {

View file

@ -570,22 +570,22 @@
"text2": "Будут удалены все вложения, напоминания и отношения, связанные с этой задачей, и отменить это будет нельзя!"
},
"actions": {
"assign": "Assign to a user",
"label": "Добавить метки",
"assign": "Assign to User",
"label": "Add Labels",
"priority": "Установить приоритет",
"dueDate": "Установить срок",
"startDate": "Установить дату начала",
"endDate": "Установить дату завершения",
"startDate": "Set Start Date",
"endDate": "Set End Date",
"reminders": "Установить напоминания",
"repeatAfter": "Установить интервал повтора",
"repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress",
"attachments": "Добавить вложения",
"relatedTasks": "Добавить связанные задачи",
"moveList": "Переместить задачу",
"color": "Установить цвет задачи",
"delete": "Удалить задачу",
"favorite": "Сохранить как ибзранное",
"unfavorite": "Убрать из избранного"
"attachments": "Add Attachments",
"relatedTasks": "Add Relation",
"moveList": "Move",
"color": "Set Color",
"delete": "Delete",
"favorite": "Add to Favorites",
"unfavorite": "Remove from Favorites"
}
},
"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!"
},
"actions": {
"assign": "Assign to a user",
"label": "Add labels",
"assign": "Assign to User",
"label": "Add Labels",
"priority": "Set Priority",
"dueDate": "Set Due Date",
"startDate": "Set a Start Date",
"endDate": "Set an End Date",
"startDate": "Set Start Date",
"endDate": "Set End Date",
"reminders": "Set Reminders",
"repeatAfter": "Set a repeating interval",
"repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress",
"attachments": "Add attachments",
"relatedTasks": "Add task relations",
"moveList": "Move task",
"color": "Set task color",
"delete": "Delete task",
"favorite": "Save as favorite",
"unfavorite": "Remove from favorites"
"attachments": "Add Attachments",
"relatedTasks": "Add Relation",
"moveList": "Move",
"color": "Set Color",
"delete": "Delete",
"favorite": "Add to Favorites",
"unfavorite": "Remove from Favorites"
}
},
"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!"
},
"actions": {
"assign": "Assign to a user",
"label": "Add labels",
"assign": "Assign to User",
"label": "Add Labels",
"priority": "Set Priority",
"dueDate": "Set Due Date",
"startDate": "Set a Start Date",
"endDate": "Set an End Date",
"startDate": "Set Start Date",
"endDate": "Set End Date",
"reminders": "Set Reminders",
"repeatAfter": "Set a repeating interval",
"repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress",
"attachments": "Add attachments",
"relatedTasks": "Add task relations",
"moveList": "Move task",
"color": "Set task color",
"delete": "Delete task",
"favorite": "Save as favorite",
"unfavorite": "Remove from favorites"
"attachments": "Add Attachments",
"relatedTasks": "Add Relation",
"moveList": "Move",
"color": "Set Color",
"delete": "Delete",
"favorite": "Add to Favorites",
"unfavorite": "Remove from Favorites"
}
},
"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!"
},
"actions": {
"assign": "Chỉ định một người",
"label": "Thêm nhãn",
"assign": "Assign to User",
"label": "Add Labels",
"priority": "Mức độ ưu tiên",
"dueDate": "Đặt ngày đến hạn",
"startDate": "Chọn ngày bắt đầu",
"endDate": "Chọn ngày kết thúc",
"startDate": "Set Start Date",
"endDate": "Set End Date",
"reminders": "Thiết lập nhắc nhở",
"repeatAfter": "Đặt khoảng lặp lại",
"repeatAfter": "Set Repeating Interval",
"percentDone": "Set Progress",
"attachments": "Đính kèm tệp",
"relatedTasks": "Thêm liên kết công việc",
"moveList": "Di chuyển công việc",
"color": "Chọn màu",
"delete": "Loại bỏ công việc",
"favorite": "Lưu thành ưa thích",
"unfavorite": "Gỡ khỏi ưa thích"
"attachments": "Add Attachments",
"relatedTasks": "Add Relation",
"moveList": "Move",
"color": "Set Color",
"delete": "Delete",
"favorite": "Add to Favorites",
"unfavorite": "Remove from Favorites"
}
},
"attributes": {

View file

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

View file

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

View file

@ -520,6 +520,13 @@ export default {
},
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: {
currentList() {

View file

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

1360
yarn.lock

File diff suppressed because it is too large Load diff