/**
## /ui/elements/confirm
Exports the confirm dialog method as mapp.ui.elements.confirm()
@requires /ui/elements/dialog
@module /ui/elements/confirm
*/
/**
@function confirm
@description
This is a confirm element to display information to the user and resolving to yes/no response.
It is a framework alternative way to using window.confirm() browser function.
```js
const confirm = await mapp.ui.elements.confirm({
text: "Please confim changes."
})
if(confirm) {
// proceed
} else {
// prevent
}
```
@param {Object} params Params for the configuration dialog.
@property {string} [params.data_id='confirm'] The data-id attribute value for the dialog.
@property {string} [params.title] Text to display in the confirm header. Defaults to 'Confirm'.
@property {string} [params.text] Text to display in the confirm content.
@returns {Promise<boolean>} Returns promise which resolves to true or false whether the question was confirmed.
*/
export default function confirm(params) {
return new Promise((resolve, reject) => {
params.title ??= `${mapp.dictionary.confirm}`;
params.data_id ??= 'confirm'
params.header = mapp.utils.html`<h4>${params.title}`
delete params.minimizeBtn
delete params.closeBtn
const btn_true = mapp.utils.html`<button
onclick=${e => {
e.target.closest('dialog').close();
resolve(true);
}}
class="raised primary-colour bold">
${mapp.dictionary.ok}`;
const btn_false = mapp.utils.html`<button
onclick=${e => {
e.target.closest('dialog').close();
resolve(false);
}}
class="raised primary-colour bold">
${mapp.dictionary.cancel}`
params.content ??= mapp.utils.html`
<p>${params.text}</p>
<div class="buttons">
${btn_true}
${btn_false}`
params.class ??= 'alert-confirm box-shadow'
mapp.ui.elements.dialog(params)
});
}