Use action name as confirmation modal title

This commit is contained in:
Andrew Kingston 2021-06-21 10:46:55 +01:00
parent 0d99c69fe6
commit 785f724dda
3 changed files with 16 additions and 10 deletions

View File

@ -6,7 +6,7 @@
{#if $confirmationStore.showConfirmation}
<Modal fixed on:cancel={confirmationStore.actions.cancel}>
<ModalContent
title="Confirm Action"
title={$confirmationStore.title}
onConfirm={confirmationStore.actions.confirm}
>
{$confirmationStore.text}

View File

@ -2,6 +2,7 @@ import { writable, get } from "svelte/store"
const initialState = {
showConfirmation: false,
title: null,
text: null,
callback: null,
}
@ -9,9 +10,10 @@ const initialState = {
const createConfirmationStore = () => {
const store = writable(initialState)
const showConfirmation = (text, callback) => {
const showConfirmation = (title, text, callback) => {
store.set({
showConfirmation: true,
title,
text,
callback,
})

View File

@ -107,15 +107,19 @@ export const enrichButtonActions = (actions, context) => {
if (action.parameters?.confirm) {
const defaultText = confirmTextMap[action["##eventHandlerType"]]
const confirmText = action.parameters?.confirmText || defaultText
confirmationStore.actions.showConfirmation(confirmText, async () => {
// When confirmed, execute this action immediately,
// then execute the rest of the actions in the chain
const result = await callback()
if (result !== false) {
const next = enrichButtonActions(actions.slice(i + 1), context)
await next()
confirmationStore.actions.showConfirmation(
action["##eventHandlerType"],
confirmText,
async () => {
// When confirmed, execute this action immediately,
// then execute the rest of the actions in the chain
const result = await callback()
if (result !== false) {
const next = enrichButtonActions(actions.slice(i + 1), context)
await next()
}
}
})
)
// Stop enriching actions when encountering a confirmable action,
// as the callback continues the action chain