Browse Source

Use action name as confirmation modal title

pull/1774/head
Andrew Kingston 5 years ago
parent
commit
b7991ea894
  1. 2
      packages/client/src/components/ConfirmationDisplay.svelte
  2. 4
      packages/client/src/store/confirmation.js
  3. 20
      packages/client/src/utils/buttonActions.js

2
packages/client/src/components/ConfirmationDisplay.svelte

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

4
packages/client/src/store/confirmation.js

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

20
packages/client/src/utils/buttonActions.js

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

Loading…
Cancel
Save