mirror of
https://github.com/directus/directus.git
synced 2026-01-26 17:58:01 -05:00
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
This commit is contained in:
@@ -136,6 +136,7 @@
|
||||
@save-and-stay="saveAndStay"
|
||||
@save-and-add-new="saveAndAddNew"
|
||||
@save-as-copy="saveAsCopyAndNavigate"
|
||||
@discard-and-stay="discardAndStay"
|
||||
/>
|
||||
</template>
|
||||
</v-button>
|
||||
@@ -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<string, any>) {
|
||||
edits.value = {
|
||||
...edits.value,
|
||||
|
||||
@@ -99,9 +99,11 @@
|
||||
|
||||
<template #append-outer>
|
||||
<save-options
|
||||
v-if="hasEdits === true || saveAllowed === true"
|
||||
v-if="hasEdits === true && saveAllowed === true"
|
||||
:disabled-options="['save-and-add-new']"
|
||||
@save-and-stay="saveAndStay"
|
||||
@save-as-copy="saveAsCopyAndNavigate"
|
||||
@discard-and-stay="discardAndStay"
|
||||
/>
|
||||
</template>
|
||||
</v-button>
|
||||
@@ -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');
|
||||
|
||||
@@ -37,10 +37,11 @@
|
||||
|
||||
<template #append-outer>
|
||||
<save-options
|
||||
:disabled="hasEdits === false"
|
||||
v-if="hasEdits === true"
|
||||
@save-and-stay="saveAndStay"
|
||||
@save-and-add-new="saveAndAddNew"
|
||||
@save-as-copy="saveAsCopyAndNavigate"
|
||||
@discard-and-stay="discardAndStay"
|
||||
/>
|
||||
</template>
|
||||
</v-button>
|
||||
@@ -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;
|
||||
}
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
@save-and-stay="saveAndStay"
|
||||
@save-and-add-new="saveAndAddNew"
|
||||
@save-as-copy="saveAsCopyAndNavigate"
|
||||
@discard-and-stay="discardAndStay"
|
||||
/>
|
||||
</template>
|
||||
</v-button>
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -1,24 +1,28 @@
|
||||
<template>
|
||||
<v-menu show-arrow :disabled="disabled">
|
||||
<v-menu show-arrow>
|
||||
<template #activator="{ toggle }">
|
||||
<v-icon :class="{ disabled }" name="more_vert" clickable @click="toggle" />
|
||||
</template>
|
||||
|
||||
<v-list>
|
||||
<v-list-item :disabled="disabled" clickable @click="$emit('save-and-stay')">
|
||||
<v-list-item v-if="!disabledOptions.includes('save-and-stay')" clickable @click="$emit('save-and-stay')">
|
||||
<v-list-item-icon><v-icon name="check" /></v-list-item-icon>
|
||||
<v-list-item-content>{{ t('save_and_stay') }}</v-list-item-content>
|
||||
<v-list-item-hint>{{ translateShortcut(['meta', 's']) }}</v-list-item-hint>
|
||||
</v-list-item>
|
||||
<v-list-item :disabled="disabled" clickable @click="$emit('save-and-add-new')">
|
||||
<v-list-item v-if="!disabledOptions.includes('save-and-add-new')" clickable @click="$emit('save-and-add-new')">
|
||||
<v-list-item-icon><v-icon name="add" /></v-list-item-icon>
|
||||
<v-list-item-content>{{ t('save_and_create_new') }}</v-list-item-content>
|
||||
<v-list-item-hint>{{ translateShortcut(['meta', 'shift', 's']) }}</v-list-item-hint>
|
||||
</v-list-item>
|
||||
<v-list-item :disabled="disabled" clickable @click="$emit('save-as-copy')">
|
||||
<v-list-item v-if="!disabledOptions.includes('save-as-copy')" clickable @click="$emit('save-as-copy')">
|
||||
<v-list-item-icon><v-icon name="done_all" /></v-list-item-icon>
|
||||
<v-list-item-content>{{ t('save_as_copy') }}</v-list-item-content>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="!disabledOptions.includes('discard-and-stay')" clickable @click="$emit('discard-and-stay')">
|
||||
<v-list-item-icon><v-icon name="undo" /></v-list-item-icon>
|
||||
<v-list-item-content>{{ t('discard_changes') }}</v-list-item-content>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
</template>
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user