fix: reactive const assignment (#2692)
Resolves #2691 Co-authored-by: Dominik Pschenitschni <mail@celement.de> Reviewed-on: https://kolaente.dev/vikunja/frontend/pulls/2692 Reviewed-by: konrad <k@knt.li> Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de> Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
This commit is contained in:
parent
06775cf4c7
commit
4c4adfdf4e
@ -85,9 +85,7 @@ const showSavedMessage = ref(false)
|
|||||||
|
|
||||||
async function save(title: string) {
|
async function save(title: string) {
|
||||||
// We only want to save if the title was actually changed.
|
// We only want to save if the title was actually changed.
|
||||||
// Because the contenteditable does not have a change event
|
// so we only continue if the task title changed.
|
||||||
// we're building it ourselves and only continue
|
|
||||||
// if the task title changed.
|
|
||||||
if (title === props.task.title) {
|
if (title === props.task.title) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -2,12 +2,13 @@
|
|||||||
<Multiselect
|
<Multiselect
|
||||||
class="control is-expanded"
|
class="control is-expanded"
|
||||||
:placeholder="$t('list.search')"
|
:placeholder="$t('list.search')"
|
||||||
@search="findLists"
|
|
||||||
:search-results="foundLists"
|
:search-results="foundLists"
|
||||||
@select="select"
|
|
||||||
label="title"
|
label="title"
|
||||||
v-model="list"
|
|
||||||
:select-placeholder="$t('list.searchSelect')"
|
:select-placeholder="$t('list.searchSelect')"
|
||||||
|
:model-value="list"
|
||||||
|
@update:model-value="Object.assign(list, $event)"
|
||||||
|
@select="select"
|
||||||
|
@search="findLists"
|
||||||
>
|
>
|
||||||
<template #searchResult="{option}">
|
<template #searchResult="{option}">
|
||||||
<span class="list-namespace-title search-result">{{ namespace((option as IList).namespaceId) }} ></span>
|
<span class="list-namespace-title search-result">{{ namespace((option as IList).namespaceId) }} ></span>
|
||||||
@ -20,12 +21,16 @@
|
|||||||
import {reactive, ref, watch} from 'vue'
|
import {reactive, ref, watch} from 'vue'
|
||||||
import type {PropType} from 'vue'
|
import type {PropType} from 'vue'
|
||||||
import {useI18n} from 'vue-i18n'
|
import {useI18n} from 'vue-i18n'
|
||||||
import ListModel from '@/models/list'
|
|
||||||
import type {IList} from '@/modelTypes/IList'
|
import type {IList} from '@/modelTypes/IList'
|
||||||
import Multiselect from '@/components/input/multiselect.vue'
|
import type {INamespace} from '@/modelTypes/INamespace'
|
||||||
|
|
||||||
import {useListStore} from '@/stores/lists'
|
import {useListStore} from '@/stores/lists'
|
||||||
import {useNamespaceStore} from '@/stores/namespaces'
|
import {useNamespaceStore} from '@/stores/namespaces'
|
||||||
import type { INamespace } from '@/modelTypes/INamespace'
|
|
||||||
|
import ListModel from '@/models/list'
|
||||||
|
|
||||||
|
import Multiselect from '@/components/input/multiselect.vue'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
modelValue: {
|
modelValue: {
|
||||||
|
@ -8,7 +8,12 @@
|
|||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<div class="task-view">
|
<div class="task-view">
|
||||||
<Heading v-model:task="task" :can-write="canWrite" ref="heading"/>
|
<Heading
|
||||||
|
:task="task"
|
||||||
|
@update:task="Object.assign(task, $event)"
|
||||||
|
:can-write="canWrite"
|
||||||
|
ref="heading"
|
||||||
|
/>
|
||||||
<h6 class="subtitle" v-if="parent && parent.namespace && parent.list">
|
<h6 class="subtitle" v-if="parent && parent.namespace && parent.list">
|
||||||
{{ getNamespaceTitle(parent.namespace) }} >
|
{{ getNamespaceTitle(parent.namespace) }} >
|
||||||
<router-link :to="{ name: 'list.index', params: { listId: parent.list.id } }">
|
<router-link :to="{ name: 'list.index', params: { listId: parent.list.id } }">
|
||||||
@ -61,14 +66,14 @@
|
|||||||
<div class="date-input">
|
<div class="date-input">
|
||||||
<datepicker
|
<datepicker
|
||||||
v-model="task.dueDate"
|
v-model="task.dueDate"
|
||||||
@close-on-change="() => saveTask()"
|
@close-on-change="saveTask()"
|
||||||
:choose-date-label="$t('task.detail.chooseDueDate')"
|
:choose-date-label="$t('task.detail.chooseDueDate')"
|
||||||
:disabled="taskService.loading || !canWrite"
|
:disabled="taskService.loading || !canWrite"
|
||||||
:ref="e => setFieldRef('dueDate', e)"
|
:ref="e => setFieldRef('dueDate', e)"
|
||||||
/>
|
/>
|
||||||
<BaseButton
|
<BaseButton
|
||||||
@click="() => {task.dueDate = null;saveTask()}"
|
|
||||||
v-if="task.dueDate && canWrite"
|
v-if="task.dueDate && canWrite"
|
||||||
|
@click="() => {task.dueDate = null;saveTask()}"
|
||||||
class="remove">
|
class="remove">
|
||||||
<span class="icon is-small">
|
<span class="icon is-small">
|
||||||
<icon icon="times"></icon>
|
<icon icon="times"></icon>
|
||||||
@ -101,7 +106,7 @@
|
|||||||
<div class="date-input">
|
<div class="date-input">
|
||||||
<datepicker
|
<datepicker
|
||||||
v-model="task.startDate"
|
v-model="task.startDate"
|
||||||
@close-on-change="() => saveTask()"
|
@close-on-change="saveTask()"
|
||||||
:choose-date-label="$t('task.detail.chooseStartDate')"
|
:choose-date-label="$t('task.detail.chooseStartDate')"
|
||||||
:disabled="taskService.loading || !canWrite"
|
:disabled="taskService.loading || !canWrite"
|
||||||
:ref="e => setFieldRef('startDate', e)"
|
:ref="e => setFieldRef('startDate', e)"
|
||||||
@ -128,7 +133,7 @@
|
|||||||
<div class="date-input">
|
<div class="date-input">
|
||||||
<datepicker
|
<datepicker
|
||||||
v-model="task.endDate"
|
v-model="task.endDate"
|
||||||
@close-on-change="() => saveTask()"
|
@close-on-change="saveTask()"
|
||||||
:choose-date-label="$t('task.detail.chooseEndDate')"
|
:choose-date-label="$t('task.detail.chooseEndDate')"
|
||||||
:disabled="taskService.loading || !canWrite"
|
:disabled="taskService.loading || !canWrite"
|
||||||
:ref="e => setFieldRef('endDate', e)"
|
:ref="e => setFieldRef('endDate', e)"
|
||||||
@ -179,8 +184,11 @@
|
|||||||
<repeat-after
|
<repeat-after
|
||||||
:disabled="!canWrite"
|
:disabled="!canWrite"
|
||||||
:ref="e => setFieldRef('repeatAfter', e)"
|
:ref="e => setFieldRef('repeatAfter', e)"
|
||||||
v-model="task"
|
:model-value="task"
|
||||||
@update:model-value="saveTask"
|
@update:model-value="(newTask) => {
|
||||||
|
Object.assign(task, newTask)
|
||||||
|
saveTask()
|
||||||
|
}"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
@ -219,7 +227,8 @@
|
|||||||
<!-- Description -->
|
<!-- Description -->
|
||||||
<div class="details content description">
|
<div class="details content description">
|
||||||
<description
|
<description
|
||||||
v-model="task"
|
:model-value="task"
|
||||||
|
@update:modelValue="Object.assign(task, $event)"
|
||||||
:can-write="canWrite"
|
:can-write="canWrite"
|
||||||
:attachment-upload="attachmentUpload"
|
:attachment-upload="attachmentUpload"
|
||||||
/>
|
/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user