feat(frontend): add save option to discard changes dialog

This commit is contained in:
jorge 2025-09-11 13:58:58 +02:00 committed by Henrique Dias
parent 571ce6cb0d
commit 4ede105098
4 changed files with 25 additions and 2 deletions

View File

@ -11,17 +11,26 @@
@click="closeHovers" @click="closeHovers"
:aria-label="$t('buttons.cancel')" :aria-label="$t('buttons.cancel')"
:title="$t('buttons.cancel')" :title="$t('buttons.cancel')"
tabindex="2" tabindex="3"
> >
{{ $t("buttons.cancel") }} {{ $t("buttons.cancel") }}
</button> </button>
<button
class="button button--flat button--blue"
@click="saveAndClose"
:aria-label="$t('buttons.saveChanges')"
:title="$t('buttons.saveChanges')"
tabindex="1"
>
{{ $t("buttons.saveChanges") }}
</button>
<button <button
id="focus-prompt" id="focus-prompt"
@click="currentPrompt.confirm" @click="currentPrompt.confirm"
class="button button--flat button--red" class="button button--flat button--red"
:aria-label="$t('buttons.discardChanges')" :aria-label="$t('buttons.discardChanges')"
:title="$t('buttons.discardChanges')" :title="$t('buttons.discardChanges')"
tabindex="1" tabindex="2"
> >
{{ $t("buttons.discardChanges") }} {{ $t("buttons.discardChanges") }}
</button> </button>
@ -40,6 +49,13 @@ export default {
}, },
methods: { methods: {
...mapActions(useLayoutStore, ["closeHovers"]), ...mapActions(useLayoutStore, ["closeHovers"]),
saveAndClose() {
// Ejecutar la función de guardado si está disponible
if (this.currentPrompt?.saveAction) {
this.currentPrompt.saveAction();
}
this.closeHovers();
},
}, },
}; };
</script> </script>

View File

@ -41,6 +41,7 @@ export const useLayoutStore = defineStore("layout", {
prompt: value, prompt: value,
confirm: null, confirm: null,
action: undefined, action: undefined,
saveAction: undefined,
props: null, props: null,
close: null, close: null,
}); });
@ -51,6 +52,7 @@ export const useLayoutStore = defineStore("layout", {
prompt: value.prompt, prompt: value.prompt,
confirm: value?.confirm, confirm: value?.confirm,
action: value?.action, action: value?.action,
saveAction: value?.saveAction,
props: value?.props, props: value?.props,
close: value?.close, close: value?.close,
}); });

View File

@ -2,6 +2,7 @@ interface PopupProps {
prompt: string; prompt: string;
confirm?: any; confirm?: any;
action?: PopupAction; action?: PopupAction;
saveAction?: () => void;
props?: any; props?: any;
close?: (() => Promise<string>) | null; close?: (() => Promise<string>) | null;
} }

View File

@ -157,6 +157,10 @@ onBeforeRouteUpdate((to, from, next) => {
event.preventDefault(); event.preventDefault();
next(); next();
}, },
saveAction: async () => {
await save();
next();
},
}); });
}); });