From 14a5347eca75943e71e426e1395ce02a7baf4225 Mon Sep 17 00:00:00 2001 From: ian Date: Tue, 9 Nov 2021 23:09:11 +0800 Subject: [PATCH] Allow for discarding of changes without leaving (#9644) * Allow for discarding of changes without leaving * Update to use v-if for consistency * Fix boolean logic * Allow disabling of options * Remove unused disabled prop --- app/src/modules/content/routes/item.vue | 7 +++++++ app/src/modules/files/routes/item.vue | 11 +++++++++- .../modules/settings/routes/webhooks/item.vue | 9 ++++++++- app/src/modules/users/routes/item.vue | 8 ++++++++ .../components/save-options/save-options.vue | 20 +++++++++++-------- 5 files changed, 45 insertions(+), 10 deletions(-) diff --git a/app/src/modules/content/routes/item.vue b/app/src/modules/content/routes/item.vue index 08f23d0290..2805b70bd8 100644 --- a/app/src/modules/content/routes/item.vue +++ b/app/src/modules/content/routes/item.vue @@ -136,6 +136,7 @@ @save-and-stay="saveAndStay" @save-and-add-new="saveAndAddNew" @save-as-copy="saveAsCopyAndNavigate" + @discard-and-stay="discardAndStay" /> @@ -385,6 +386,7 @@ export default defineComponent({ saveAndStay, saveAndAddNew, saveAsCopyAndNavigate, + discardAndStay, templateData, templateDataLoading, archiveTooltip, @@ -506,6 +508,11 @@ export default defineComponent({ router.push(leaveTo.value); } + function discardAndStay() { + edits.value = {}; + confirmLeave.value = false; + } + function revert(values: Record) { edits.value = { ...edits.value, diff --git a/app/src/modules/files/routes/item.vue b/app/src/modules/files/routes/item.vue index 1a4ba05eb5..cd0e76be19 100644 --- a/app/src/modules/files/routes/item.vue +++ b/app/src/modules/files/routes/item.vue @@ -99,9 +99,11 @@ @@ -328,6 +330,7 @@ export default defineComponent({ deleting, saveAndStay, saveAsCopyAndNavigate, + discardAndStay, isBatch, editActive, revisionsDrawerDetail, @@ -411,9 +414,15 @@ export default defineComponent({ function discardAndLeave() { if (!leaveTo.value) return; edits.value = {}; + confirmLeave.value = false; router.push(leaveTo.value); } + function discardAndStay() { + edits.value = {}; + confirmLeave.value = false; + } + function downloadFile() { const filePath = addTokenToURL(getRootPath() + `assets/${props.primaryKey}?download`); window.open(filePath, '_blank'); diff --git a/app/src/modules/settings/routes/webhooks/item.vue b/app/src/modules/settings/routes/webhooks/item.vue index 6527a31932..2da4dbe738 100644 --- a/app/src/modules/settings/routes/webhooks/item.vue +++ b/app/src/modules/settings/routes/webhooks/item.vue @@ -37,10 +37,11 @@ @@ -178,6 +179,7 @@ export default defineComponent({ saveAndStay, saveAndAddNew, saveAsCopyAndNavigate, + discardAndStay, isBatch, title, validationErrors, @@ -217,6 +219,11 @@ export default defineComponent({ confirmLeave.value = false; router.push(leaveTo.value); } + + function discardAndStay() { + edits.value = {}; + confirmLeave.value = false; + } }, }); diff --git a/app/src/modules/users/routes/item.vue b/app/src/modules/users/routes/item.vue index f098ea1e45..7efb020baa 100644 --- a/app/src/modules/users/routes/item.vue +++ b/app/src/modules/users/routes/item.vue @@ -89,6 +89,7 @@ @save-and-stay="saveAndStay" @save-and-add-new="saveAndAddNew" @save-as-copy="saveAsCopyAndNavigate" + @discard-and-stay="discardAndStay" /> @@ -343,6 +344,7 @@ export default defineComponent({ saveAndStay, saveAndAddNew, saveAsCopyAndNavigate, + discardAndStay, isBatch, revisionsDrawerDetail, previewLoading, @@ -492,9 +494,15 @@ export default defineComponent({ function discardAndLeave() { if (!leaveTo.value) return; edits.value = {}; + confirmLeave.value = false; router.push(leaveTo.value); } + function discardAndStay() { + edits.value = {}; + confirmLeave.value = false; + } + async function toggleArchive() { await archive(); diff --git a/app/src/views/private/components/save-options/save-options.vue b/app/src/views/private/components/save-options/save-options.vue index b89324b43c..39a6834b10 100644 --- a/app/src/views/private/components/save-options/save-options.vue +++ b/app/src/views/private/components/save-options/save-options.vue @@ -1,24 +1,28 @@ @@ -30,12 +34,12 @@ import translateShortcut from '@/utils/translate-shortcut'; export default defineComponent({ props: { - disabled: { - type: Boolean, - default: false, + disabledOptions: { + type: Array, + default: () => [], }, }, - emits: ['save-and-stay', 'save-and-add-new', 'save-as-copy'], + emits: ['save-and-stay', 'save-and-add-new', 'save-as-copy', 'discard-and-stay'], setup() { const { t } = useI18n();