fix(task): require explicit confirmation before saving reminders
Prevent reminders from being saved to the API until the user clicks Confirm, matching the behavior of the due/start/end date pickers. - Remove @update:modelValue handler on DatepickerInline so date/time changes only update local state - Change Confirm button condition from showFormSwitch to activeForm so it renders even when defaultRelativeTo is null - Add confirmAndClose function that handles both absolute and relative reminder forms - Remove debounce (useDebounceFn) since saves are now user-initiated Refs #2208
This commit is contained in:
parent
56eb5d3740
commit
b65773eb8f
|
|
@ -52,14 +52,13 @@
|
|||
<DatepickerInline
|
||||
v-else-if="activeForm === 'absolute'"
|
||||
v-model="reminderDate"
|
||||
@update:modelValue="setReminderDateAndClose(close)"
|
||||
/>
|
||||
|
||||
<XButton
|
||||
v-if="showFormSwitch !== null"
|
||||
v-if="activeForm !== null"
|
||||
class="reminder__close-button"
|
||||
:shadow="false"
|
||||
@click="updateDataAndMaybeCloseNow(close)"
|
||||
@click="confirmAndClose(close)"
|
||||
>
|
||||
{{ $t('misc.confirm') }}
|
||||
</XButton>
|
||||
|
|
@ -86,7 +85,6 @@ import Popup from '@/components/misc/Popup.vue'
|
|||
import TaskReminderModel from '@/models/taskReminder'
|
||||
import Card from '@/components/misc/Card.vue'
|
||||
import SimpleButton from '@/components/input/SimpleButton.vue'
|
||||
import {useDebounceFn} from '@vueuse/core'
|
||||
|
||||
const props = withDefaults(defineProps<{
|
||||
modelValue?: ITaskReminder,
|
||||
|
|
@ -170,7 +168,7 @@ function setReminderDateAndClose(close: () => void) {
|
|||
: new Date(reminderDate.value)
|
||||
reminder.value.relativeTo = null
|
||||
reminder.value.relativePeriod = 0
|
||||
updateDataAndMaybeClose(close)
|
||||
updateDataAndMaybeCloseNow(close)
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -180,8 +178,6 @@ function setReminderFromPreset(preset: ITaskReminder, close: () => void) {
|
|||
close()
|
||||
}
|
||||
|
||||
const updateDataAndMaybeClose = useDebounceFn(updateDataAndMaybeCloseNow, 500)
|
||||
|
||||
function updateDataAndMaybeCloseNow(close: () => void) {
|
||||
updateData()
|
||||
if (props.clearAfterUpdate) {
|
||||
|
|
@ -189,6 +185,14 @@ function updateDataAndMaybeCloseNow(close: () => void) {
|
|||
}
|
||||
}
|
||||
|
||||
function confirmAndClose(close: () => void) {
|
||||
if (activeForm.value === 'absolute') {
|
||||
setReminderDateAndClose(close)
|
||||
} else {
|
||||
updateDataAndMaybeCloseNow(close)
|
||||
}
|
||||
}
|
||||
|
||||
function formatReminder(reminder: ITaskReminder) {
|
||||
const period = secondsToPeriod(reminder.relativePeriod)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue