Compare commits

..

10 Commits

Author SHA1 Message Date
Dominik Pschenitschni 8a95bb7422
feat: review changes 2022-01-05 13:32:47 +01:00
kolaente 0f32991b16
chore: use margin left to remove extra div 2022-01-05 11:57:26 +01:00
kolaente 92ffaf984c
chore: use gap 2022-01-05 11:57:26 +01:00
kolaente 696b11a33b
chore: mobile first 2022-01-05 11:57:26 +01:00
kolaente 7211e8d34f
chore: unindet class 2022-01-05 11:57:26 +01:00
kolaente 4f28f28be3
chore: remove margin 2022-01-05 11:57:25 +01:00
kolaente 5016e5d699
chore: use v-cy for test 2022-01-05 11:57:25 +01:00
kolaente 27446bf995
fix: remove .only test modifier 2022-01-05 11:57:24 +01:00
kolaente ec2587bb60
fix: tests 2022-01-05 11:57:23 +01:00
kolaente 964fdeb2e8
fix: namespace new buttons on mobile 2022-01-05 11:57:23 +01:00
33 changed files with 288 additions and 286 deletions

View File

@ -98,15 +98,6 @@ steps:
depends_on:
- dependencies
- name: typecheck
failure: ignore
image: node:16
pull: true
commands:
- yarn typecheck
depends_on:
- dependencies
- name: test-frontend
image: cypress/browsers:node16.5.0-chrome94-ff93
pull: true

View File

@ -128,7 +128,7 @@ describe('Task', () => {
cy.visit(`/tasks/${tasks[0].id}`)
cy.get('.task-view .action-buttons .button')
.contains('Mark task done!')
.contains('Done!')
.click()
cy.get('.task-view .heading .is-done')

View File

@ -9,8 +9,8 @@
"build": "vite build && workbox copyLibraries dist/",
"build:modern-only": "BUILD_MODERN_ONLY=true vite build && workbox copyLibraries dist/",
"build:dev": "vite build -m development --outDir dist-dev/",
"typecheck": "vue-tsc --noEmit",
"lint": "eslint --ignore-pattern '*.test.*' ./src --ext .vue,.js,.ts",
"lint:markup": "vue-tsc --noEmit",
"cypress:open": "cypress open",
"test:unit": "vitest run",
"test:frontend": "cypress run",
@ -21,10 +21,9 @@
"@kyvg/vue3-notification": "2.3.4",
"@sentry/tracing": "6.16.1",
"@sentry/vue": "6.16.1",
"@types/is-touch-device": "1.0.0",
"@vue/compat": "3.2.26",
"@vueuse/core": "7.5.2",
"@vueuse/router": "7.5.3",
"@vueuse/router": "7.5.2",
"bulma-css-variables": "0.9.33",
"camel-case": "4.1.2",
"codemirror": "5.65.0",
@ -34,17 +33,17 @@
"easymde": "2.15.0",
"flatpickr": "4.6.9",
"flexsearch": "0.7.21",
"highlight.js": "11.4.0",
"highlight.js": "11.3.1",
"is-touch-device": "1.0.1",
"lodash.clonedeep": "4.5.0",
"lodash.debounce": "4.0.8",
"marked": "4.0.9",
"marked": "4.0.8",
"register-service-worker": "1.7.2",
"snake-case": "3.0.4",
"ufo": "0.7.9",
"v-tooltip": "4.0.0-beta.13",
"v-tooltip": "4.0.0-beta.6",
"vue": "3.2.26",
"vue-advanced-cropper": "2.7.1",
"vue-advanced-cropper": "2.7.0",
"vue-drag-resize": "2.0.3",
"vue-flatpickr-component": "9.0.5",
"vue-i18n": "9.2.0-beta.26",
@ -65,10 +64,10 @@
"@vitejs/plugin-legacy": "1.6.4",
"@vitejs/plugin-vue": "2.0.1",
"@vue/eslint-config-typescript": "10.0.0",
"autoprefixer": "10.4.2",
"autoprefixer": "10.4.1",
"axios": "0.24.0",
"browserslist": "4.19.1",
"caniuse-lite": "1.0.30001298",
"caniuse-lite": "1.0.30001296",
"cypress": "9.2.0",
"cypress-file-upload": "5.0.8",
"esbuild": "0.14.10",
@ -76,19 +75,19 @@
"eslint-plugin-vue": "8.2.0",
"express": "4.17.2",
"faker": "5.5.3",
"netlify-cli": "8.6.15",
"netlify-cli": "8.6.4",
"happy-dom": "2.25.1",
"postcss": "8.4.5",
"postcss-preset-env": "7.2.0",
"rollup": "2.63.0",
"rollup-plugin-visualizer": "5.5.2",
"sass": "1.47.0",
"sass": "1.45.2",
"slugify": "1.6.5",
"typescript": "4.5.4",
"vite": "2.7.10",
"vite-plugin-pwa": "0.11.12",
"vite-svg-loader": "3.1.1",
"vitest": "0.0.139",
"vitest": "0.0.132",
"vue-tsc": "0.30.2",
"wait-on": "6.0.0",
"workbox-cli": "6.4.2"

View File

@ -1,6 +1,6 @@
<template>
<div
:class="[background ? 'has-background' : '', $route.name as string +'-view']"
:class="[background ? 'has-background' : '', $route.name+'-view']"
:style="{'background-image': `url(${background})`}"
class="link-share-container"
>

View File

@ -348,10 +348,6 @@ $editor-border-color: #ddd;
color: var(--grey-400) !important;
font-style: italic;
}
&-cursor {
border-color: var(--grey-700);
}
}
.editor-preview {

View File

@ -33,9 +33,7 @@ import {useStore} from 'vuex'
import ListService from '@/services/list'
import {colorIsDark} from '@/helpers/color/colorIsDark'
const background = ref<string | null>(null)
const background = ref(null)
const backgroundLoading = ref(false)
const props = defineProps({

View File

@ -13,7 +13,7 @@
<section class="content">
<div>
<h2 class="title" v-if="title">{{ title }}</h2>
<api-config/>
<api-config @foundApi="hasApiUrl = true"/>
<slot/>
</div>
<legal/>
@ -23,9 +23,9 @@
</template>
<script lang="ts" setup>
import Logo from '@/components/home/Logo.vue'
import Message from '@/components/misc/message.vue'
import Legal from '@/components/misc/legal.vue'
import Logo from '@/components/home/Logo'
import Message from '@/components/misc/message'
import Legal from '@/components/misc/legal'
import ApiConfig from '@/components/misc/api-config.vue'
import {useStore} from 'vuex'
import {computed} from 'vue'

View File

@ -42,7 +42,7 @@ import {useI18n} from 'vue-i18n'
import {useStore} from 'vuex'
import { tryOnMounted, debouncedWatch, useWindowSize, MaybeRef } from '@vueuse/core'
import TaskService from '@/services/task'
import TaskService from '../../services/task'
import QuickAddMagic from '@/components/tasks/partials/quick-add-magic.vue'
function cleanupTitle(title: string) {
@ -117,6 +117,9 @@ function useAutoHeightTextarea(value: MaybeRef<string>) {
return textarea
}
const emit = defineEmits(['taskAdded'])
const props = defineProps({
defaultPosition: {
type: Number,
@ -124,7 +127,8 @@ const props = defineProps({
},
})
const emit = defineEmits(['taskAdded'])
const taskService = shallowReactive(new TaskService())
const errorMessage = ref('')
const newTaskTitle = ref('')
const newTaskInput = useAutoHeightTextarea(newTaskTitle)
@ -132,9 +136,6 @@ const newTaskInput = useAutoHeightTextarea(newTaskTitle)
const { t } = useI18n()
const store = useStore()
const taskService = shallowReactive(new TaskService())
const errorMessage = ref('')
async function addTask() {
if (newTaskTitle.value === '') {
errorMessage.value = t('list.create.addTitleRequired')

View File

@ -78,6 +78,7 @@
<script>
import AsyncEditor from '@/components/input/AsyncEditor'
import ListService from '../../services/list'
import TaskService from '../../services/task'
import TaskModel from '../../models/task'
import priorities from '../../models/constants/priorities'
@ -89,10 +90,14 @@ export default {
name: 'edit-task',
data() {
return {
listId: this.$route.params.id,
listService: new ListService(),
taskService: new TaskService(),
priorities: priorities,
list: {},
editorActive: false,
newTask: new TaskModel(),
isTaskEdit: false,
taskEditTask: TaskModel,
}

View File

@ -183,8 +183,6 @@ import {mapState} from 'vuex'
import Rights from '../../models/constants/rights.json'
import FilterPopup from '@/components/list/partials/filter-popup.vue'
import {colorIsDark} from '@/helpers/color/colorIsDark'
export default {
name: 'GanttChart',
components: {
@ -254,7 +252,6 @@ export default {
canWrite: (state) => state.currentList.maxRight > Rights.READ,
}),
methods: {
colorIsDark,
buildTheGanttChart() {
this.setDates()
this.prepareGanttDays()

View File

@ -73,8 +73,6 @@ import Done from '@/components/misc/Done.vue'
import Labels from '../../../components/tasks/partials/labels'
import ChecklistSummary from './checklist-summary'
import {colorIsDark} from '@/helpers/color/colorIsDark'
export default {
name: 'kanban-card',
components: {
@ -100,7 +98,6 @@ export default {
},
},
methods: {
colorIsDark,
async toggleTaskDone(task) {
this.loadingInternal = true
try {

View File

@ -7,7 +7,7 @@
"lastViewed": "Naposledy zobrazeno",
"list": {
"newText": "Můžete vytvořit nový seznam pro své nové úkoly:",
"new": "New list",
"new": "Vytvořit nový seznam",
"importText": "Nebo importujte své seznamy a úkoly z jiných služeb:",
"import": "Importujte svá data do Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Klikněte nebo stiskněte Enter pro výběr tohoto seznamu",
"shared": "Sdílené seznamy",
"create": {
"header": "New list",
"header": "Vytvořit nový seznam",
"titlePlaceholder": "Název seznamu přijde sem…",
"addTitleRequired": "Uveďte prosím název.",
"createdSuccess": "Seznam byl úspěšně vytvořen.",
@ -315,7 +315,7 @@
"namespaces": "Prostory",
"search": "Začni psát pro vyhledání prostoru…",
"create": {
"title": "New namespace",
"title": "Vytvořit nový prostor",
"titleRequired": "Uveďte prosím název.",
"explanation": "Prostor je kolekce seznamů, které můžete sdílet a používat k organizaci seznamů. Každý seznam patří do nějakého prostoru.",
"tooltip": "Co je prostor?",
@ -383,7 +383,7 @@
"reminderRange": "Připomínky - období"
},
"create": {
"title": "New Saved Filter",
"title": "Vytvořit uložený filtr",
"description": "Uložený filtr je virtuální seznam, který se počítá ze sady filtrů pokaždé, když je přístupný. Jakmile bude vytvořen, objeví se ve speciálním prostoru.",
"action": "Vytvořit uložený filtr"
},

View File

@ -7,7 +7,7 @@
"lastViewed": "Zuletzt angesehen",
"list": {
"newText": "Du kannst eine neue Liste für deine neuen Aufgaben erstellen:",
"new": "New list",
"new": "Eine neue Liste erstellen",
"importText": "Oder importiere deine Listen und Aufgaben aus anderen Diensten in Vikunja:",
"import": "Deine Daten in Vikunja importieren"
}
@ -157,7 +157,7 @@
"searchSelect": "Klicke auf oder drücke die Eingabetaste, um diese Liste auszuwählen",
"shared": "Geteilte Listen",
"create": {
"header": "New list",
"header": "Eine neue Liste erstellen",
"titlePlaceholder": "Der Titel der Liste steht hier…",
"addTitleRequired": "Bitte gebe einen Namen an.",
"createdSuccess": "Die Liste wurde erfolgreich erstellt.",
@ -315,7 +315,7 @@
"namespaces": "Namespaces",
"search": "Beginne zu schreiben, um einen Namespace zu suchen…",
"create": {
"title": "New namespace",
"title": "Einen neuen Namespace erstellen",
"titleRequired": "Bitte gebe einen Titel an.",
"explanation": "Ein Namespace ist eine Sammlung von Listen, die du teilen und zur Organisation verwenden kannst. Jede Liste zu einem Namespace.",
"tooltip": "Was ist ein Namespace?",
@ -383,7 +383,7 @@
"reminderRange": "Erinnerungs-Datumsbereich"
},
"create": {
"title": "New Saved Filter",
"title": "Einen gespeicherten Filter erstellen",
"description": "Ein gespeicherter Filter ist eine virtuelle Liste, die bei jedem Zugriff aus einem Satz von Filtern errechnet wird. Einmal erstellt, erscheint diese in einem speziellen Namespace.",
"action": "Neuen gespeicherten Filter erstellen"
},

View File

@ -7,7 +7,7 @@
"lastViewed": "Zletscht ahglueget",
"list": {
"newText": "Du chasch e Liste für dini neue Uufgabe erstelle:",
"new": "New list",
"new": "Neui Liste erstelle",
"importText": "Oder importier dini Liste und Uufgabe us anderne Dienst nach Vikunja:",
"import": "Dini Date in Vikunja importiere"
}
@ -157,7 +157,7 @@
"searchSelect": "Druck uf Enter um die Liste uuszwähle",
"shared": "Teilti Liste",
"create": {
"header": "New list",
"header": "Neui Liste erstelle",
"titlePlaceholder": "Listetitl da ahgeh…",
"addTitleRequired": "Bitte gib en Titl ah.",
"createdSuccess": "Liste erfolgriich erstellt.",
@ -315,7 +315,7 @@
"namespaces": "Namensrüüm",
"search": "Schriib, um nachemne Namensruum z'sueche…",
"create": {
"title": "New namespace",
"title": "Neue Namensruum erstelle",
"titleRequired": "Bitte gib en Titl ah.",
"explanation": "En Namensruum isch e Gruppe vo Liste, wo du chasch zur Organisation benutze. Tatsächlich sind alli Listene emne Namensruum zuegwise.",
"tooltip": "Was isch en Namensruum?",
@ -383,7 +383,7 @@
"reminderRange": "Errinnerigs Datumbereich"
},
"create": {
"title": "New Saved Filter",
"title": "Neue gspeicherete Filter erstelle",
"description": "En gspeicherete Filter isch e virtuelli Liste, welche vomene Satz a Filter zemmegsetzt wird, sobald me uf sie zuegriift. Wenn sie mal erstellt worde isch, erhaltet si ihren eigene Namensruum.",
"action": "Neue gspeicherete Filter erstelle"
},

View File

@ -545,7 +545,7 @@
"chooseStartDate": "Click here to set a start date",
"chooseEndDate": "Click here to set an end date",
"move": "Move task to a different list",
"done": "Mark task done!",
"done": "Done!",
"undone": "Mark as undone",
"created": "Created {0} by {1}",
"updated": "Updated {0}",
@ -781,7 +781,7 @@
"then": "then",
"task": {
"title": "Task Page",
"done": "Done",
"done": "Mark a task as done",
"assign": "Assign to a user",
"labels": "Add labels to this task",
"dueDate": "Change the due date of this task",

View File

@ -7,7 +7,7 @@
"lastViewed": "Last viewed",
"list": {
"newText": "You can create a new list for your new tasks:",
"new": "New list",
"new": "Create a new list",
"importText": "Or import your lists and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Click or press enter to select this list",
"shared": "Shared Lists",
"create": {
"header": "New list",
"header": "Create a new list",
"titlePlaceholder": "The list's title goes here…",
"addTitleRequired": "Please specify a title.",
"createdSuccess": "The list was successfully created.",
@ -315,7 +315,7 @@
"namespaces": "Namespaces",
"search": "Type to search for a namespace…",
"create": {
"title": "New namespace",
"title": "Create a new namespace",
"titleRequired": "Please specify a title.",
"explanation": "A namespace is a collection of lists you can share and use to organize your lists with. In fact, every list belongs to a namepace.",
"tooltip": "What's a namespace?",
@ -383,7 +383,7 @@
"reminderRange": "Reminder Date Range"
},
"create": {
"title": "New Saved Filter",
"title": "Create A Saved Filter",
"description": "A saved filter is a virtual list which is computed from a set of filters each time it is accessed. Once created, it will appear in a special namespace.",
"action": "Create new saved filter"
},

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": "Créer une nouvelle liste",
"importText": "Ou importe tes listes et tâches dautres services dans Vikunja :",
"import": "Importer tes données dans Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Clique ou appuie sur la touche Entrée pour sélectionner cette liste",
"shared": "Listes partagées",
"create": {
"header": "New list",
"header": "Créer une nouvelle liste",
"titlePlaceholder": "Entre le nom de la liste…",
"addTitleRequired": "Indique un nom.",
"createdSuccess": "Liste créée.",
@ -315,7 +315,7 @@
"namespaces": "Espaces de noms",
"search": "Écris pour rechercher un espace de noms…",
"create": {
"title": "New namespace",
"title": "Créer un 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 ?",
@ -383,7 +383,7 @@
"reminderRange": "Plage de dates de rappel"
},
"create": {
"title": "New Saved Filter",
"title": "Créer un 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é"
},

View File

@ -7,7 +7,7 @@
"lastViewed": "Ultima visualizzazione",
"list": {
"newText": "È possibile creare una nuova lista per le nuove attività:",
"new": "New list",
"new": "Crea una nuova lista",
"importText": "O importare le liste e le attività da altri servizi in Vikunja:",
"import": "Importa i tuoi dati in Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Fare clic o premere invio per selezionare questa lista",
"shared": "Liste Condivise",
"create": {
"header": "New list",
"header": "Crea una nuova lista",
"titlePlaceholder": "Il titolo della lista va qui…",
"addTitleRequired": "Specifica un titolo.",
"createdSuccess": "La lista è stata creata correttamente.",
@ -315,7 +315,7 @@
"namespaces": "Namespaces",
"search": "Type to search for a namespace…",
"create": {
"title": "New namespace",
"title": "Create a new namespace",
"titleRequired": "Please specify a title.",
"explanation": "A namespace is a collection of lists you can share and use to organize your lists with. In fact, every list belongs to a namepace.",
"tooltip": "What's a namespace?",
@ -383,7 +383,7 @@
"reminderRange": "Reminder Date Range"
},
"create": {
"title": "New Saved Filter",
"title": "Crea Un Filtro Salvato",
"description": "A saved filter is a virtual list which is computed from a set of filters each time it is accessed. Once created, it will appear in a special namespace.",
"action": "Crea nuovo filtro salvato"
},

View File

@ -7,7 +7,7 @@
"lastViewed": "Last viewed",
"list": {
"newText": "You can create a new list for your new tasks:",
"new": "New list",
"new": "Create a new list",
"importText": "Or import your lists and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Click or press enter to select this list",
"shared": "Shared Lists",
"create": {
"header": "New list",
"header": "Create a new list",
"titlePlaceholder": "The list's title goes here…",
"addTitleRequired": "Please specify a title.",
"createdSuccess": "The list was successfully created.",
@ -315,7 +315,7 @@
"namespaces": "Namespaces",
"search": "Type to search for a namespace…",
"create": {
"title": "New namespace",
"title": "Create a new namespace",
"titleRequired": "Please specify a title.",
"explanation": "A namespace is a collection of lists you can share and use to organize your lists with. In fact, every list belongs to a namepace.",
"tooltip": "What's a namespace?",
@ -383,7 +383,7 @@
"reminderRange": "Reminder Date Range"
},
"create": {
"title": "New Saved Filter",
"title": "Create A Saved Filter",
"description": "A saved filter is a virtual list which is computed from a set of filters each time it is accessed. Once created, it will appear in a special namespace.",
"action": "Create new saved filter"
},

View File

@ -7,7 +7,7 @@
"lastViewed": "Last viewed",
"list": {
"newText": "You can create a new list for your new tasks:",
"new": "New list",
"new": "Create a new list",
"importText": "Or import your lists and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Click or press enter to select this list",
"shared": "Shared Lists",
"create": {
"header": "New list",
"header": "Create a new list",
"titlePlaceholder": "The list's title goes here…",
"addTitleRequired": "Please specify a title.",
"createdSuccess": "The list was successfully created.",
@ -315,7 +315,7 @@
"namespaces": "Namespaces",
"search": "Type to search for a namespace…",
"create": {
"title": "New namespace",
"title": "Create a new namespace",
"titleRequired": "Please specify a title.",
"explanation": "A namespace is a collection of lists you can share and use to organize your lists with. In fact, every list belongs to a namepace.",
"tooltip": "What's a namespace?",
@ -383,7 +383,7 @@
"reminderRange": "Reminder Date Range"
},
"create": {
"title": "New Saved Filter",
"title": "Create A Saved Filter",
"description": "A saved filter is a virtual list which is computed from a set of filters each time it is accessed. Once created, it will appear in a special namespace.",
"action": "Create new saved filter"
},

View File

@ -7,7 +7,7 @@
"lastViewed": "Last viewed",
"list": {
"newText": "You can create a new list for your new tasks:",
"new": "New list",
"new": "Create a new list",
"importText": "Or import your lists and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Click or press enter to select this list",
"shared": "Shared Lists",
"create": {
"header": "New list",
"header": "Create a new list",
"titlePlaceholder": "The list's title goes here…",
"addTitleRequired": "Please specify a title.",
"createdSuccess": "The list was successfully created.",
@ -315,7 +315,7 @@
"namespaces": "Namespaces",
"search": "Type to search for a namespace…",
"create": {
"title": "New namespace",
"title": "Create a new namespace",
"titleRequired": "Please specify a title.",
"explanation": "A namespace is a collection of lists you can share and use to organize your lists with. In fact, every list belongs to a namepace.",
"tooltip": "What's a namespace?",
@ -383,7 +383,7 @@
"reminderRange": "Reminder Date Range"
},
"create": {
"title": "New Saved Filter",
"title": "Create A Saved Filter",
"description": "A saved filter is a virtual list which is computed from a set of filters each time it is accessed. Once created, it will appear in a special namespace.",
"action": "Create new saved filter"
},

View File

@ -7,7 +7,7 @@
"lastViewed": "Last viewed",
"list": {
"newText": "You can create a new list for your new tasks:",
"new": "New list",
"new": "Create a new list",
"importText": "Or import your lists and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Click or press enter to select this list",
"shared": "Shared Lists",
"create": {
"header": "New list",
"header": "Create a new list",
"titlePlaceholder": "The list's title goes here…",
"addTitleRequired": "Please specify a title.",
"createdSuccess": "The list was successfully created.",
@ -315,7 +315,7 @@
"namespaces": "Namespaces",
"search": "Type to search for a namespace…",
"create": {
"title": "New namespace",
"title": "Create a new namespace",
"titleRequired": "Please specify a title.",
"explanation": "A namespace is a collection of lists you can share and use to organize your lists with. In fact, every list belongs to a namepace.",
"tooltip": "What's a namespace?",
@ -383,7 +383,7 @@
"reminderRange": "Reminder Date Range"
},
"create": {
"title": "New Saved Filter",
"title": "Create A Saved Filter",
"description": "A saved filter is a virtual list which is computed from a set of filters each time it is accessed. Once created, it will appear in a special namespace.",
"action": "Create new saved filter"
},

View File

@ -7,7 +7,7 @@
"lastViewed": "Последние просмотренные",
"list": {
"newText": "Ты можешь создать новый список для своих задач:",
"new": "New list",
"new": "Создать новый список",
"importText": "Или импортировать списки и задачи из других сервисов в Vikunja:",
"import": "Импорт данных в Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Кликни или нажми Enter для выбора этого списка",
"shared": "Общие списки",
"create": {
"header": "New list",
"header": "Создать новый список",
"titlePlaceholder": "Введи имя списка…",
"addTitleRequired": "Укажи название.",
"createdSuccess": "Список создан.",
@ -315,7 +315,7 @@
"namespaces": "Пространства имён",
"search": "Введи запрос для поиска пространства имён…",
"create": {
"title": "New namespace",
"title": "Создать новое пространство имён",
"titleRequired": "Укажи название.",
"explanation": "Коллекции списков для совместного использования и организации ваших списков. Фактически, каждый список принадлежит какому-нибудь пространству имён.",
"tooltip": "Что такое пространство имён?",
@ -383,7 +383,7 @@
"reminderRange": "Диапазон даты напоминания"
},
"create": {
"title": "New Saved Filter",
"title": "Создать сохранённый фильтр",
"description": "Сохраненный фильтр это виртуальный список, построенный из набора фильтров. При создании отображается в специальном пространстве имен.",
"action": "Создать новый сохранённый фильтр"
},

View File

@ -7,7 +7,7 @@
"lastViewed": "Last viewed",
"list": {
"newText": "You can create a new list for your new tasks:",
"new": "New list",
"new": "Create a new list",
"importText": "Or import your lists and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Click or press enter to select this list",
"shared": "Shared Lists",
"create": {
"header": "New list",
"header": "Create a new list",
"titlePlaceholder": "The list's title goes here…",
"addTitleRequired": "Please specify a title.",
"createdSuccess": "The list was successfully created.",
@ -315,7 +315,7 @@
"namespaces": "Namespaces",
"search": "Type to search for a namespace…",
"create": {
"title": "New namespace",
"title": "Create a new namespace",
"titleRequired": "Please specify a title.",
"explanation": "A namespace is a collection of lists you can share and use to organize your lists with. In fact, every list belongs to a namepace.",
"tooltip": "What's a namespace?",
@ -383,7 +383,7 @@
"reminderRange": "Reminder Date Range"
},
"create": {
"title": "New Saved Filter",
"title": "Create A Saved Filter",
"description": "A saved filter is a virtual list which is computed from a set of filters each time it is accessed. Once created, it will appear in a special namespace.",
"action": "Create new saved filter"
},

View File

@ -7,7 +7,7 @@
"lastViewed": "Last viewed",
"list": {
"newText": "You can create a new list for your new tasks:",
"new": "New list",
"new": "Create a new list",
"importText": "Or import your lists and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Click or press enter to select this list",
"shared": "Shared Lists",
"create": {
"header": "New list",
"header": "Create a new list",
"titlePlaceholder": "The list's title goes here…",
"addTitleRequired": "Please specify a title.",
"createdSuccess": "The list was successfully created.",
@ -315,7 +315,7 @@
"namespaces": "Namespaces",
"search": "Type to search for a namespace…",
"create": {
"title": "New namespace",
"title": "Create a new namespace",
"titleRequired": "Please specify a title.",
"explanation": "A namespace is a collection of lists you can share and use to organize your lists with. In fact, every list belongs to a namepace.",
"tooltip": "What's a namespace?",
@ -383,7 +383,7 @@
"reminderRange": "Reminder Date Range"
},
"create": {
"title": "New Saved Filter",
"title": "Create A Saved Filter",
"description": "A saved filter is a virtual list which is computed from a set of filters each time it is accessed. Once created, it will appear in a special namespace.",
"action": "Create new saved filter"
},

View File

@ -7,7 +7,7 @@
"lastViewed": "Xem gần đây",
"list": {
"newText": "Bạn có thể tạo một danh sách công việc mới cho mình:",
"new": "New list",
"new": "Tạo một danh sách mới",
"importText": "Hoặc nhập danh sách và nhiệm vụ của bạn từ các dịch vụ khác vào Vikunja:",
"import": "Nhập dữ liệu của bạn vào Vikunja"
}
@ -157,7 +157,7 @@
"searchSelect": "Nhấp hoặc nhấn enter để chọn danh sách này",
"shared": "Đang tham gia",
"create": {
"header": "New list",
"header": "Tạo một danh sách mới",
"titlePlaceholder": "Tên danh sách ở đây…",
"addTitleRequired": "Hãy xác định một tên.",
"createdSuccess": "Danh sách đã được tạo thành công.",
@ -315,7 +315,7 @@
"namespaces": "Góc làm việc",
"search": "Gõ để tìm kiếm một góc làm việc…",
"create": {
"title": "New namespace",
"title": "Tạo một góc làm việc mới",
"titleRequired": "Hãy đặt một tiêu đề.",
"explanation": "Góc làm việc là một tập hợp các danh sách mà bạn có thể chia sẻ và sử dụng để sắp xếp các danh sách của mình. Trên thực tế, mọi danh sách đều thuộc về một góc làm việc.",
"tooltip": "Góc làm việc là gì?",
@ -383,7 +383,7 @@
"reminderRange": "Phạm vi Ngày nhắc nhở"
},
"create": {
"title": "New Saved Filter",
"title": "Tạo một Bộ lọc sẵn",
"description": "Bộ lọc sẵn là một danh sách ảo được chọn từ một tập hợp các bộ lọc. Sau khi được tạo, nó sẽ xuất hiện trong một không gian làm việc đặc biệt.",
"action": "Tạo thêm bộ lọc sẵn"
},

View File

@ -76,6 +76,7 @@ app.component('card', Card)
// Mixins
import {getNamespaceTitle} from './helpers/getNamespaceTitle'
import {getListTitle} from './helpers/getListTitle'
import {colorIsDark} from './helpers/color/colorIsDark'
import {setTitle} from './helpers/setTitle'
app.mixin({
@ -86,6 +87,7 @@ app.mixin({
formatDateShort: formatDateShort,
getNamespaceTitle,
getListTitle,
colorIsDark,
setTitle,
},
})

View File

@ -2,73 +2,73 @@ import { createRouter, createWebHistory, RouteLocation } from 'vue-router'
import {saveLastVisited} from '@/helpers/saveLastVisited'
import {store} from '@/store'
import HomeComponent from '../views/Home.vue'
import NotFoundComponent from '../views/404.vue'
import About from '../views/About.vue'
import HomeComponent from '../views/Home'
import NotFoundComponent from '../views/404'
import About from '../views/About'
// User Handling
import LoginComponent from '../views/user/Login.vue'
import RegisterComponent from '../views/user/Register.vue'
import OpenIdAuth from '../views/user/OpenIdAuth.vue'
import DataExportDownload from '../views/user/DataExportDownload.vue'
import LoginComponent from '../views/user/Login'
import RegisterComponent from '../views/user/Register'
import OpenIdAuth from '../views/user/OpenIdAuth'
import DataExportDownload from '../views/user/DataExportDownload'
// Tasks
import ShowTasksInRangeComponent from '../views/tasks/ShowTasksInRange.vue'
import LinkShareAuthComponent from '../views/sharing/LinkSharingAuth.vue'
import TaskDetailViewModal from '../views/tasks/TaskDetailViewModal.vue'
import TaskDetailView from '../views/tasks/TaskDetailView.vue'
import ListNamespaces from '../views/namespaces/ListNamespaces.vue'
import ShowTasksInRangeComponent from '../views/tasks/ShowTasksInRange'
import LinkShareAuthComponent from '../views/sharing/LinkSharingAuth'
import TaskDetailViewModal from '../views/tasks/TaskDetailViewModal'
import TaskDetailView from '../views/tasks/TaskDetailView'
import ListNamespaces from '../views/namespaces/ListNamespaces'
// Team Handling
import ListTeamsComponent from '../views/teams/ListTeams.vue'
import ListTeamsComponent from '../views/teams/ListTeams'
// Label Handling
import ListLabelsComponent from '../views/labels/ListLabels.vue'
import NewLabelComponent from '../views/labels/NewLabel.vue'
import ListLabelsComponent from '../views/labels/ListLabels'
import NewLabelComponent from '../views/labels/NewLabel'
// Migration
import MigrationComponent from '../views/migrator/Migrate.vue'
import MigrateServiceComponent from '../views/migrator/MigrateService.vue'
import MigrationComponent from '../views/migrator/Migrate'
import MigrateServiceComponent from '../views/migrator/MigrateService'
// List Views
import ShowListComponent from '../views/list/ShowList.vue'
import Kanban from '../views/list/views/Kanban.vue'
import List from '../views/list/views/List.vue'
import Gantt from '../views/list/views/Gantt.vue'
import Table from '../views/list/views/Table.vue'
import ShowListComponent from '../views/list/ShowList'
import Kanban from '../views/list/views/Kanban'
import List from '../views/list/views/List'
import Gantt from '../views/list/views/Gantt'
import Table from '../views/list/views/Table'
// List Settings
import ListSettingEdit from '../views/list/settings/edit.vue'
import ListSettingBackground from '../views/list/settings/background.vue'
import ListSettingDuplicate from '../views/list/settings/duplicate.vue'
import ListSettingShare from '../views/list/settings/share.vue'
import ListSettingDelete from '../views/list/settings/delete.vue'
import ListSettingArchive from '../views/list/settings/archive.vue'
import ListSettingEdit from '../views/list/settings/edit'
import ListSettingBackground from '../views/list/settings/background'
import ListSettingDuplicate from '../views/list/settings/duplicate'
import ListSettingShare from '../views/list/settings/share'
import ListSettingDelete from '../views/list/settings/delete'
import ListSettingArchive from '../views/list/settings/archive'
// Namespace Settings
import NamespaceSettingEdit from '../views/namespaces/settings/edit.vue'
import NamespaceSettingShare from '../views/namespaces/settings/share.vue'
import NamespaceSettingArchive from '../views/namespaces/settings/archive.vue'
import NamespaceSettingDelete from '../views/namespaces/settings/delete.vue'
import NamespaceSettingEdit from '../views/namespaces/settings/edit'
import NamespaceSettingShare from '../views/namespaces/settings/share'
import NamespaceSettingArchive from '../views/namespaces/settings/archive'
import NamespaceSettingDelete from '../views/namespaces/settings/delete'
// Saved Filters
import FilterNew from '@/views/filters/FilterNew.vue'
import FilterEdit from '@/views/filters/FilterEdit.vue'
import FilterDelete from '@/views/filters/FilterDelete.vue'
import FilterNew from '@/views/filters/FilterNew'
import FilterEdit from '@/views/filters/FilterEdit'
import FilterDelete from '@/views/filters/FilterDelete'
const PasswordResetComponent = () => import('../views/user/PasswordReset.vue')
const GetPasswordResetComponent = () => import('../views/user/RequestPasswordReset.vue')
const UserSettingsComponent = () => import('../views/user/Settings.vue')
const UserSettingsAvatarComponent = () => import('../views/user/settings/Avatar.vue')
const UserSettingsCaldavComponent = () => import('../views/user/settings/Caldav.vue')
const UserSettingsDataExportComponent = () => import('../views/user/settings/DataExport.vue')
const UserSettingsDeletionComponent = () => import('../views/user/settings/Deletion.vue')
const UserSettingsEmailUpdateComponent = () => import('../views/user/settings/EmailUpdate.vue')
const UserSettingsGeneralComponent = () => import('../views/user/settings/General.vue')
const UserSettingsPasswordUpdateComponent = () => import('../views/user/settings/PasswordUpdate.vue')
const UserSettingsTOTPComponent = () => import('../views/user/settings/TOTP.vue')
const PasswordResetComponent = () => import('../views/user/PasswordReset')
const GetPasswordResetComponent = () => import('../views/user/RequestPasswordReset')
const UserSettingsComponent = () => import('../views/user/Settings')
const UserSettingsAvatarComponent = () => import('../views/user/settings/Avatar')
const UserSettingsCaldavComponent = () => import('../views/user/settings/Caldav')
const UserSettingsDataExportComponent = () => import('../views/user/settings/DataExport')
const UserSettingsDeletionComponent = () => import('../views/user/settings/Deletion')
const UserSettingsEmailUpdateComponent = () => import('../views/user/settings/EmailUpdate')
const UserSettingsGeneralComponent = () => import('../views/user/settings/General')
const UserSettingsPasswordUpdateComponent = () => import('../views/user/settings/PasswordUpdate')
const UserSettingsTOTPComponent = () => import('../views/user/settings/TOTP')
// List Handling
const NewListComponent = () => import('../views/list/NewList.vue')
const NewListComponent = () => import('../views/list/NewList')
// Namespace Handling
const NewNamespaceComponent = () => import('../views/namespaces/NewNamespace.vue')
const NewNamespaceComponent = () => import('../views/namespaces/NewNamespace')
const EditTeamComponent = () => import('../views/teams/EditTeam.vue')
const NewTeamComponent = () => import('../views/teams/NewTeam.vue')
const EditTeamComponent = () => import('../views/teams/EditTeam')
const NewTeamComponent = () => import('../views/teams/NewTeam')
const router = createRouter({
history: createWebHistory(),

View File

@ -1,6 +1,4 @@
declare module 'vue' {
import { CompatVue } from '@vue/runtime-dom'
const Vue: CompatVue
export default Vue
export * from '@vue/runtime-dom'
}

View File

@ -24,17 +24,17 @@ export const MIGRATORS: IMigratorRecord = {
todoist: {
id: 'todoist',
name: 'Todoist',
icon: todoistIcon as string,
icon: todoistIcon,
},
trello: {
id: 'trello',
name: 'Trello',
icon: trelloIcon as string,
icon: trelloIcon,
},
'microsoft-todo': {
id: 'microsoft-todo',
name: 'Microsoft Todo',
icon: microsoftTodoIcon as string,
icon: microsoftTodoIcon,
},
'vikunja-file': {
id: 'vikunja-file',

View File

@ -9,7 +9,7 @@
<script lang="ts" setup>
import { ref } from 'vue'
import ShowTasks from './ShowTasks.vue'
import ShowTasks from './ShowTasks'
function getNextWeekDate() {
return new Date((new Date()).getTime() + 7 * 24 * 60 * 60 * 1000)

View File

@ -627,6 +627,7 @@ export default {
}
this.task = await this.$store.dispatch('tasks/update', this.task)
this.setActiveFields()
if (!showNotification) {
return
@ -870,7 +871,7 @@ $flash-background-duration: 750ms;
}
.action-buttons {
.button {
a.button {
width: 100%;
margin-bottom: .5rem;
justify-content: left;

269
yarn.lock
View File

@ -2050,10 +2050,10 @@
validate-npm-package-name "^3.0.0"
yargs "^15.3.0"
"@netlify/config@^17.0.3":
version "17.0.3"
resolved "https://registry.yarnpkg.com/@netlify/config/-/config-17.0.3.tgz#49d6c8076aead0a938f906fb8e538b5bfdfacf48"
integrity sha512-u1x//PEqKvsExPQtRMG4x786mKcAV6ykwqiN102szLlr5Dojb7X5y+6vb9wi4JJ/KNiVURP7Wna/sMxGvFi/Tw==
"@netlify/config@^17.0.2":
version "17.0.2"
resolved "https://registry.yarnpkg.com/@netlify/config/-/config-17.0.2.tgz#b4bf7e823d04857a41f29b9421a3721ccd24be62"
integrity sha512-Wy/Z0i4f1MSZG0Db9MwV2Yoz0AYh1Z3A3dYitJQVIWZCARO9njh0pVw6V2F7PogASiaTb1xrBaXHIFE0almQ1g==
dependencies:
chalk "^4.1.2"
cron-parser "^4.1.0"
@ -2069,7 +2069,7 @@
js-yaml "^4.0.0"
make-dir "^3.1.0"
map-obj "^4.0.0"
netlify "^10.1.1"
netlify "^10.1.0"
netlify-headers-parser "^6.0.0"
netlify-redirect-parser "^13.0.0"
omit.js "^2.0.2"
@ -2203,10 +2203,10 @@
resolved "https://registry.yarnpkg.com/@netlify/open-api/-/open-api-2.6.0.tgz#128c8d66ac8798e9f60824ca9857735c368090b6"
integrity sha512-VfYLiEXJIVIn25wrwNB/O+QkM3xPgCVcGSKZxM/i+oPCOgBK+4PEieRtfqhF4vXXwwOi68VaRWU7P3aRnb3nIA==
"@netlify/open-api@^2.8.0":
version "2.8.0"
resolved "https://registry.yarnpkg.com/@netlify/open-api/-/open-api-2.8.0.tgz#e59537ae9aa8342c2aa64952d42e5e089c8422f4"
integrity sha512-lfNB/QYDgaP07pwm/nWEaWPvRAAGyhxvJqNzvxMijc7A4uwquMjlbYve8yYyd0LJXPwgBpGobwiQj5RA76xzUQ==
"@netlify/open-api@^2.7.0":
version "2.7.0"
resolved "https://registry.yarnpkg.com/@netlify/open-api/-/open-api-2.7.0.tgz#d8147396a0c41b5e9de1f52889004ad2a1d59163"
integrity sha512-WzedpLK6XFs67naFDX1K3QWk3GKlUQVCuIlMuXb0dWvJvfB71R/Njk1bq0FqVllIWw2RRCQMkCIywEABbnB2Yg==
"@netlify/plugin-edge-handlers@^3.0.0":
version "3.0.0"
@ -2274,10 +2274,10 @@
dependencies:
execa "^5.1.1"
"@netlify/zip-it-and-ship-it@5.4.0", "@netlify/zip-it-and-ship-it@^5.4.0":
version "5.4.0"
resolved "https://registry.yarnpkg.com/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.4.0.tgz#c083895a7e5873747e51a4287ac1da3f2423ac48"
integrity sha512-JVUr7S6GTHnPpwtD+g/+qzhKvhXwXoHGeisaHt1YYARRRd+XdvwFYo8yY2JzT7hM26uz99tpKwzDSfcL+WR1rQ==
"@netlify/zip-it-and-ship-it@5.3.1":
version "5.3.1"
resolved "https://registry.yarnpkg.com/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.3.1.tgz#d88491fc6398c3bb6427125ede4c32cda24c1f16"
integrity sha512-J8owr4lft/uKrozivDmIzKKe5IQ6zTWKyemdwljYDMTh2UrCwEH5u35X17zqO5LCS7FJ6uyCy5yBtBUrqdAtMA==
dependencies:
"@babel/parser" "^7.15.7"
"@netlify/esbuild" "^0.13.6"
@ -2352,6 +2352,45 @@
unixify "^1.0.0"
yargs "^16.0.0"
"@netlify/zip-it-and-ship-it@^5.4.0":
version "5.4.0"
resolved "https://registry.yarnpkg.com/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.4.0.tgz#c083895a7e5873747e51a4287ac1da3f2423ac48"
integrity sha512-JVUr7S6GTHnPpwtD+g/+qzhKvhXwXoHGeisaHt1YYARRRd+XdvwFYo8yY2JzT7hM26uz99tpKwzDSfcL+WR1rQ==
dependencies:
"@babel/parser" "^7.15.7"
"@netlify/esbuild" "^0.13.6"
"@vercel/nft" "^0.17.0"
archiver "^5.3.0"
common-path-prefix "^3.0.0"
cp-file "^9.0.0"
del "^6.0.0"
elf-cam "^0.1.1"
end-of-stream "^1.4.4"
es-module-lexer "^0.9.0"
execa "^5.0.0"
filter-obj "^2.0.1"
find-up "^5.0.0"
glob "^7.1.6"
is-builtin-module "^3.1.0"
junk "^3.1.0"
locate-path "^6.0.0"
make-dir "^3.1.0"
merge-options "^3.0.4"
minimatch "^3.0.4"
p-map "^4.0.0"
path-exists "^4.0.0"
pkg-dir "^5.0.0"
precinct "^8.2.0"
read-package-json-fast "^2.0.2"
require-package-name "^2.0.1"
resolve "^2.0.0-next.1"
semver "^7.0.0"
tmp-promise "^3.0.2"
toml "^3.0.0"
typescript "^4.4.3"
unixify "^1.0.0"
yargs "^16.0.0"
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@ -2830,11 +2869,6 @@
dependencies:
"@types/node" "*"
"@types/is-touch-device@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@types/is-touch-device/-/is-touch-device-1.0.0.tgz#c835c4c220a4e5635f4895b6223630dcd429b49c"
integrity sha512-/rErV0NuroAR9EZF1xK0TrihQ/7BbVckGfSr/suq/E4tJQLr4TrADR0qAUpDs/hxtl1NiP0V/ho+fSA/5EIO9Q==
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
@ -3458,12 +3492,12 @@
"@vueuse/shared" "7.5.2"
vue-demi "*"
"@vueuse/router@7.5.3":
version "7.5.3"
resolved "https://registry.yarnpkg.com/@vueuse/router/-/router-7.5.3.tgz#4974fa53497065c7e703c49a3aeca9d27f42a70c"
integrity sha512-972g+MGKO9XiY6+jIy8GDO56poj5kboAtvW2fRxmzHp2aRes4DEteFX+eOa5OhH11UCwgYFfo7Bwj6IiViJOWw==
"@vueuse/router@7.5.2":
version "7.5.2"
resolved "https://registry.yarnpkg.com/@vueuse/router/-/router-7.5.2.tgz#fcc45d816f669dce410a2361b2e7631d32cb58a7"
integrity sha512-BtmKAr6uRUhGc0RdsrW399bAZ2uWkcoYLFxbqNrrOxiLEttPm3lJhzhAcds1wmoYegrLYXNkAq0GuOGs05n35w==
dependencies:
"@vueuse/shared" "7.5.3"
"@vueuse/shared" "7.5.2"
vue-demi "*"
"@vueuse/shared@7.5.2":
@ -3473,13 +3507,6 @@
dependencies:
vue-demi "*"
"@vueuse/shared@7.5.3":
version "7.5.3"
resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-7.5.3.tgz#2a844f38e45b1002e14d8f0ab5b41221c4fb9b09"
integrity sha512-BJ71cxHN5VByW1S58Gl85NFJaQu93F7Vs7K/MuAKsIIuHm9PBbkR5Vxkg9ko9cBdiKVt+FNoo13BhdbA+Vwycg==
dependencies:
vue-demi "*"
abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
@ -3925,19 +3952,7 @@ atob@^2.1.2:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
autoprefixer@10.4.2:
version "10.4.2"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b"
integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==
dependencies:
browserslist "^4.19.1"
caniuse-lite "^1.0.30001297"
fraction.js "^4.1.2"
normalize-range "^0.1.2"
picocolors "^1.0.0"
postcss-value-parser "^4.2.0"
autoprefixer@^10.4.1:
autoprefixer@10.4.1, autoprefixer@^10.4.1:
version "10.4.1"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.1.tgz#1735959d6462420569bc42408016acbc56861c12"
integrity sha512-B3ZEG7wtzXDRCEFsan7HmR2AeNsxdJB0+sEC0Hc5/c2NbhJqPwuZm+tn233GBVw82L+6CtD6IPSfVruwKjfV3A==
@ -4077,12 +4092,12 @@ before-after-hook@^2.2.0:
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e"
integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==
better-opn@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-3.0.1.tgz#01d4dd3bde34d959a0645281fb6b2e35ef91b6f7"
integrity sha512-u7pU4QnwLQ+wCDLHdvtWbI/41pSRayJ+UHyAqpb5sr42FGnqzBlEyWdCklfaSzXqbmnXDBzCvWcaZmL3qp0xGA==
better-opn@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6"
integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==
dependencies:
open "^8.0.4"
open "^7.0.3"
binary-extensions@^2.0.0:
version "2.2.0"
@ -4456,10 +4471,10 @@ camelcase@^6.0.0, camelcase@^6.2.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
caniuse-lite@1.0.30001298:
version "1.0.30001298"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001298.tgz#0e690039f62e91c3ea581673d716890512e7ec52"
integrity sha512-AcKqikjMLlvghZL/vfTHorlQsLDhGRalYf1+GmWCf5SCMziSGjRYQW/JEksj14NaYHIR6KIhrFAy0HV5C25UzQ==
caniuse-lite@1.0.30001296:
version "1.0.30001296"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz#d99f0f3bee66544800b93d261c4be55a35f1cec8"
integrity sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q==
caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001271, caniuse-lite@^1.0.30001274, caniuse-lite@^1.0.30001286:
version "1.0.30001286"
@ -4476,11 +4491,6 @@ caniuse-lite@^1.0.30001295:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001295.tgz#68a60f8f0664f342b2835c5d8898b4faea7b3d51"
integrity sha512-lSP16vcyC0FEy0R4ECc9duSPoKoZy+YkpGkue9G4D81OfPnliopaZrU10+qtPdT8PbGXad/PNx43TIQrOmJZSQ==
caniuse-lite@^1.0.30001297:
version "1.0.30001297"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001297.tgz#ea7776ccc4992956582cae5b8fea127fbebde430"
integrity sha512-6bbIbowYG8vFs/Lk4hU9jFt7NknGDleVAciK916tp6ft1j+D//ZwwL6LbF1wXMQ32DMSjeuUV8suhh6dlmFjcA==
caseless@^0.12.0, caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@ -5451,11 +5461,6 @@ defer-to-connect@^2.0.0:
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
define-lazy-prop@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@ -7060,6 +7065,11 @@ get-amd-module-type@^3.0.0:
ast-module-types "^2.3.2"
node-source-walk "^4.0.0"
get-caller-file@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
get-caller-file@^2.0.1, get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
@ -7153,15 +7163,16 @@ getpass@^0.1.1:
dependencies:
assert-plus "^1.0.0"
gh-release-fetch@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/gh-release-fetch/-/gh-release-fetch-3.0.0.tgz#53cf970b3c063819abab9a329303ae09caebe5cf"
integrity sha512-P7Anj35Y4kI3RBoQ+M8Z2U9ittORYyRNLb55+5yGGXmm3Mazgkq4MPqsHH9S7+pNWFpE2BtAWeF6twzz6JY3Bw==
gh-release-fetch@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/gh-release-fetch/-/gh-release-fetch-2.0.4.tgz#e242c5b4c365cbca7100bfbe9b71017f6603e8b0"
integrity sha512-PALrCv6MuxEKsj5Oz9G81iU6pxvoxgpSnwbtIqAkQ6m6fioFicNznZUl/aOW92rK2k8cuaM48Rd59G7eV2QsTA==
dependencies:
"@types/download" "^8.0.0"
"@types/node-fetch" "^2.1.6"
"@types/semver" "^7.0.0"
download "^8.0.0"
make-dir "^3.1.0"
node-fetch "^2.3.0"
semver "^7.0.0"
@ -7513,10 +7524,10 @@ he@^1.1.1:
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
highlight.js@11.4.0:
version "11.4.0"
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.4.0.tgz#34ceadd49e1596ee5aba3d99346cdfd4845ee05a"
integrity sha512-nawlpCBCSASs7EdvZOYOYVkJpGmAOKMYZgZtUqSRqodZE0GRVcFKwo1RcpeOemqh9hyttTdd5wDBwHkuSyUfnA==
highlight.js@11.3.1:
version "11.3.1"
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.3.1.tgz#813078ef3aa519c61700f84fe9047231c5dc3291"
integrity sha512-PUhCRnPjLtiLHZAQ5A/Dt5F8cWZeMyj9KRsACsWT+OD6OP0x6dp5OmT5jdx0JgEyPxPZZIPQpRN2TciUT7occw==
hosted-git-info@^2.1.4:
version "2.8.9"
@ -7597,10 +7608,10 @@ http-errors@~1.8.0:
statuses ">= 1.5.0 < 2"
toidentifier "1.0.0"
http-proxy-middleware@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz#7ef3417a479fb7666a571e09966c66a39bd2c15f"
integrity sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==
http-proxy-middleware@^1.0.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz#43700d6d9eecb7419bf086a128d0f7205d9eb665"
integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==
dependencies:
"@types/http-proxy" "^1.17.5"
http-proxy "^1.18.1"
@ -7955,7 +7966,7 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2:
is-data-descriptor "^1.0.0"
kind-of "^6.0.2"
is-docker@^2.0.0, is-docker@^2.1.1:
is-docker@^2.0.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
@ -8931,10 +8942,10 @@ map-visit@^1.0.0:
dependencies:
object-visit "^1.0.0"
marked@4.0.9:
version "4.0.9"
resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.9.tgz#96862d67bd31b4770917f01c93e1d9b3cc73ed96"
integrity sha512-HmoFvQwFLxNESeGupeOC+6CLb5WzcCWQmqvVetsErmrI3vrZ6gBumty5IP0ynLPR0zYSoVY7ITC1GffsYIGkog==
marked@4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.8.tgz#ef127626ac65786460f9420d57cc8d5ffdcacbed"
integrity sha512-dkpJMIlJpc833hbjjg8jraw1t51e/eKDoG8TFOgc5O0Z77zaYKigYekTDop5AplRoKFGIaoazhYEhGkMtU3IeA==
marked@^2.0.3:
version "2.1.3"
@ -9182,6 +9193,14 @@ mkdirp@^1.0.3:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mock-require@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/mock-require/-/mock-require-3.0.3.tgz#ccd544d9eae81dd576b3f219f69ec867318a1946"
integrity sha512-lLzfLHcyc10MKQnNUCv7dMcoY/2Qxd6wJfbqCcVk3LDb8An4hF6ohk5AztrvgKhJCqj36uyzi/p5se+tvyD+Wg==
dependencies:
get-caller-file "^1.0.2"
normalize-path "^2.1.1"
module-definition@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-3.3.1.tgz#fedef71667713e36988b93d0626a4fe7b35aebfc"
@ -9305,26 +9324,26 @@ nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0:
resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61"
integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==
netlify-cli@8.6.15:
version "8.6.15"
resolved "https://registry.yarnpkg.com/netlify-cli/-/netlify-cli-8.6.15.tgz#43298ff2586504841ced2a409221f7b27c6f6059"
integrity sha512-pqM8dOQscGVF4zVB4zzCBBnJlaNtu9SdWfoyHMfD0ZKF8XZTS/vT+N/3apRNBjZYSyExhdpe/7pW5o5L5IawCQ==
netlify-cli@8.6.4:
version "8.6.4"
resolved "https://registry.yarnpkg.com/netlify-cli/-/netlify-cli-8.6.4.tgz#e93c5be595538f09f0b87f07783b35ddc3c3302a"
integrity sha512-eP5yX7sTQMt+PbAUFQqJV2pmyH9c9kocIQHnPKYjqZgzzDP2PoH/FAf0IFKV3hl4UiyQxa8gzPx+QTOszLBbYQ==
dependencies:
"@netlify/build" "^26.1.0"
"@netlify/config" "^17.0.3"
"@netlify/config" "^17.0.2"
"@netlify/framework-info" "^7.0.0"
"@netlify/local-functions-proxy" "^1.1.1"
"@netlify/plugin-edge-handlers" "^3.0.0"
"@netlify/plugins-list" "^6.2.0"
"@netlify/routing-local-proxy" "^0.34.1"
"@netlify/zip-it-and-ship-it" "5.4.0"
"@netlify/zip-it-and-ship-it" "5.3.1"
"@octokit/rest" "^18.0.0"
"@sindresorhus/slugify" "^1.1.0"
ansi-escapes "^5.0.0"
ansi-styles "^5.0.0"
ascii-table "0.0.9"
backoff "^2.5.0"
better-opn "^3.0.0"
better-opn "^2.1.1"
boxen "^5.0.0"
chalk "^4.0.0"
chokidar "^3.0.2"
@ -9346,19 +9365,20 @@ netlify-cli@8.6.15:
execa "^5.0.0"
express "^4.17.1"
express-logging "^1.1.1"
filter-obj "^2.0.1"
find-up "^5.0.0"
flush-write-stream "^2.0.0"
folder-walker "^3.2.0"
from2-array "^0.0.4"
fuzzy "^0.1.3"
get-port "^5.1.0"
gh-release-fetch "^3.0.0"
gh-release-fetch "^2.0.0"
git-repo-info "^2.1.0"
gitconfiglocal "^2.1.0"
hasbin "^1.2.3"
hasha "^5.2.2"
http-proxy "^1.18.0"
http-proxy-middleware "^2.0.0"
http-proxy-middleware "^1.0.0"
https-proxy-agent "^5.0.0"
inquirer "^6.5.1"
inquirer-autocomplete-prompt "^1.0.1"
@ -9373,16 +9393,19 @@ netlify-cli@8.6.15:
lodash "^4.17.20"
log-symbols "^4.0.0"
log-update "^5.0.0"
make-dir "^3.0.0"
memoize-one "^6.0.0"
minimist "^1.2.5"
mock-require "^3.0.3"
multiparty "^4.2.1"
netlify "^10.1.1"
netlify "^10.1.0"
netlify-headers-parser "^6.0.0"
netlify-redirect-parser "^13.0.0"
netlify-redirector "^0.2.1"
node-fetch "^2.6.0"
node-version-alias "^1.0.1"
omit.js "^2.0.2"
open "^7.0.0"
ora "^5.0.0"
p-event "^4.2.0"
p-filter "^2.1.0"
@ -9391,11 +9414,14 @@ netlify-cli@8.6.15:
parallel-transform "^1.2.0"
parse-github-url "^1.0.2"
parse-gitignore "^1.0.1"
path-exists "^4.0.0"
path-key "^3.1.1"
path-type "^4.0.0"
prettyjson "^1.2.1"
pump "^3.0.0"
raw-body "^2.4.1"
read-pkg-up "^7.0.1"
resolve "^1.12.0"
semver "^7.3.5"
source-map-support "^0.5.19"
static-server "^2.2.1"
@ -9453,12 +9479,12 @@ netlify@^10.0.0:
p-wait-for "^3.2.0"
qs "^6.9.6"
netlify@^10.1.1:
version "10.1.1"
resolved "https://registry.yarnpkg.com/netlify/-/netlify-10.1.1.tgz#dbd8b978cc4615d3b7ffd4db26ccf469febd3c34"
integrity sha512-aXW+R0rhTpLWK9aa51QETcPI+U2WuMUWA7wPr0thBCsMy/q4tsuAUC3f9OXYXcR3AzRkLOTwqmAfzWb+zKmqGg==
netlify@^10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/netlify/-/netlify-10.1.0.tgz#fb7dc14ab96e382f013f50df993d7e4af0353364"
integrity sha512-c6ljxmQKc6CHXVlkAvxQc+YrI7vqnm2rHocucGflycRIm981sWkEM/GzMirF4ykgPAeMGltLBhFdjOO7OTI2Hw==
dependencies:
"@netlify/open-api" "^2.8.0"
"@netlify/open-api" "^2.7.0"
lodash.camelcase "^4.3.0"
micro-api-client "^3.3.0"
node-fetch "^2.6.1"
@ -9760,7 +9786,7 @@ onetime@^5.1.0, onetime@^5.1.2:
dependencies:
mimic-fn "^2.1.0"
open@^7.4.2:
open@^7.0.0, open@^7.0.3, open@^7.4.2:
version "7.4.2"
resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
@ -9768,15 +9794,6 @@ open@^7.4.2:
is-docker "^2.0.0"
is-wsl "^2.1.1"
open@^8.0.4:
version "8.4.0"
resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==
dependencies:
define-lazy-prop "^2.0.0"
is-docker "^2.1.1"
is-wsl "^2.2.0"
opn@^5.2.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
@ -11059,7 +11076,7 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
resolve@^1.10.0, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0:
resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0:
version "1.20.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
@ -11278,10 +11295,10 @@ safe-stable-stringify@^1.1.0:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sass@1.47.0:
version "1.47.0"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.47.0.tgz#c22dd0eed2e4a991430dae0b03c8e694bc41c2b4"
integrity sha512-GtXwvwgD7/6MLUZPnlA5/8cdRgC9SzT5kAnnJMRmEZQFRE3J56Foswig4NyyyQGsnmNvg6EUM/FP0Pe9Y2zywQ==
sass@1.45.2:
version "1.45.2"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.45.2.tgz#130b428c1692201cfa181139835d6fc378a33323"
integrity sha512-cKfs+F9AMPAFlbbTXNsbGvg3y58nV0mXA3E94jqaySKcC8Kq3/8983zVKQ0TLMUrHw7hF9Tnd3Bz9z5Xgtrl9g==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
@ -12215,10 +12232,10 @@ tinypool@^0.1.1:
resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.1.1.tgz#99eaf29d030feeca2da6c1d6b33f90fc18093bc7"
integrity sha512-sW2fQZ2BRb/GX5v55NkHiTrbMLx0eX0xNpP+VGhOe2f7Oo04+LeClDyM19zCE/WCy7jJ8kzIJ0Ojrxj3UhN9Sg==
tinyspy@^0.2.8:
version "0.2.8"
resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-0.2.8.tgz#b821b3d43a7d5ae47bc575a5d8627e84fdf4e809"
integrity sha512-4VXqQzzh9gC5uOLk77cLr9R3wqJq07xJlgM9IUdCNJCet139r+046ETKbU1x7mGs7B0k7eopyH5U6yflbBXNyA==
tinyspy@^0.2.7:
version "0.2.7"
resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-0.2.7.tgz#265b5deab32c89b2fa1986939869ef74b160c0f5"
integrity sha512-AaNITSED8/2j2/nSgPeQZW2nNhdTxNJ7XwcdBezI7MtPS2C+pJ1HjcHc/qfDhohUhQvODITdxzWH9u+Qs+7yFQ==
tmp-promise@^3.0.2:
version "3.0.3"
@ -12727,10 +12744,10 @@ uuid@^8.0.0, uuid@^8.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
v-tooltip@4.0.0-beta.13:
version "4.0.0-beta.13"
resolved "https://registry.yarnpkg.com/v-tooltip/-/v-tooltip-4.0.0-beta.13.tgz#896c6f8e749f75df6a8cbfdc3fa936296ffb63ad"
integrity sha512-6ocBefnUE+aUUfR8OX331HnImNCu5AHiux+UI7JfLCbE7rCNuvTSH8KDMxCcpJ85BzzgdjCtpEztF970YxC9rg==
v-tooltip@4.0.0-beta.6:
version "4.0.0-beta.6"
resolved "https://registry.yarnpkg.com/v-tooltip/-/v-tooltip-4.0.0-beta.6.tgz#4bd1670844c86111974e3012c44cc9355893770a"
integrity sha512-LR5IUOTgLX5vt7FNOIvmSvmnRVWUrFacBPDq0W4ZuVmQULqoZJchnzRBPGc12Jf/AWlffZLn0t4mVSfSFp5OLw==
dependencies:
"@popperjs/core" "^2.11.0"
vue-resize "^2.0.0-alpha.1"
@ -12801,17 +12818,17 @@ vite@2.7.10, vite@>=2.7.10:
optionalDependencies:
fsevents "~2.3.2"
vitest@0.0.139:
version "0.0.139"
resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.0.139.tgz#5a0a29181be27e27fe9582e12d41685c0d4095fe"
integrity sha512-5AXMaEOJXgQpobgXkzBPGP8o4NpAhT2yczeRD1V94U0VWGxRObI1zjqtxBPEtgda8Q4rQKw0SVlHCR0P76h9QA==
vitest@0.0.132:
version "0.0.132"
resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.0.132.tgz#11aa2691709748bbf05297a72adee3f9f1f8ffc6"
integrity sha512-LxmHT3aAS+7mRJzYQg5tS5IQuDSmEBupaPcHK9PMRiOITZ2dMFo7mcvmvNZ8k0SL7NIIXYJ0BHTLX9ROY3xHmw==
dependencies:
"@types/chai" "^4.3.0"
"@types/chai-subset" "^1.3.3"
chai "^4.3.4"
local-pkg "^0.4.1"
tinypool "^0.1.1"
tinyspy "^0.2.8"
tinyspy "^0.2.7"
vite ">=2.7.10"
void-elements@^3.1.0:
@ -12956,10 +12973,10 @@ vscode-vue-languageservice@0.30.2:
vscode-pug-languageservice "0.30.2"
vscode-typescript-languageservice "0.30.2"
vue-advanced-cropper@2.7.1:
version "2.7.1"
resolved "https://registry.yarnpkg.com/vue-advanced-cropper/-/vue-advanced-cropper-2.7.1.tgz#1706a6c72f317807487145b142dade8c7aaa4569"
integrity sha512-L8ynZenoWBpseIysaMnxXf9K/JbCcEgm1lraIca2D960h0APdZnfmteQgkEkNx16zyW8Dm/yzdlw/8LQmDCbcA==
vue-advanced-cropper@2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/vue-advanced-cropper/-/vue-advanced-cropper-2.7.0.tgz#37495e450af17ebd6076819737b8d5e1142a5591"
integrity sha512-rXzUCCdSQswZ5b/w2qyDSb9Bce8xD+vw7RtOreVnbz+dV1AVMFHcVDHxrkeNaO6LTBcgG/agnjZgnmB3oN2vJg==
dependencies:
classnames "^2.2.6"
debounce "^1.2.0"