1
0
Fork 0
mirror of synced 2024-09-09 14:11:30 +12:00
budibase/packages/client/src/stores/confirmation.js

45 lines
925 B
JavaScript

import { writable, get } from "svelte/store"
const initialState = {
showConfirmation: false,
title: null,
text: null,
onConfirm: null,
onCancel: null,
}
const createConfirmationStore = () => {
const store = writable(initialState)
const showConfirmation = (title, text, onConfirm, onCancel) => {
store.set({
showConfirmation: true,
title,
text,
onConfirm,
onCancel,
})
}
const confirm = async () => {
const state = get(store)
if (!state.showConfirmation || !state.onConfirm) {
return
}
store.set(initialState)
await state.onConfirm()
}
const cancel = () => {
const state = get(store)
store.set(initialState)
if (state.onCancel) {
state.onCancel()
}
}
return {
subscribe: store.subscribe,
actions: { showConfirmation, confirm, cancel },
}
}
export const confirmationStore = createConfirmationStore()