2024-07-07 17:32:30 +02:00
|
|
|
import {svg} from '../../svg.ts';
|
2023-06-19 09:46:50 +02:00
|
|
|
import {htmlEscape} from 'escape-goat';
|
2024-07-07 17:32:30 +02:00
|
|
|
import {createElementFromHTML} from '../../utils/dom.ts';
|
2024-11-14 19:48:41 +01:00
|
|
|
import {fomanticQuery} from '../../modules/fomantic/base.ts';
|
2023-06-19 09:46:50 +02:00
|
|
|
|
|
|
|
const {i18n} = window.config;
|
|
|
|
|
2024-12-04 10:26:54 +01:00
|
|
|
export function confirmModal({header = '', content = '', confirmButtonColor = 'primary'} = {}): Promise<boolean> {
|
2023-06-19 09:46:50 +02:00
|
|
|
return new Promise((resolve) => {
|
2024-11-26 16:36:55 +01:00
|
|
|
const headerHtml = header ? `<div class="header">${htmlEscape(header)}</div>` : '';
|
2024-06-07 15:42:31 +02:00
|
|
|
const modal = createElementFromHTML(`
|
|
|
|
<div class="ui g-modal-confirm modal">
|
2024-11-26 16:36:55 +01:00
|
|
|
${headerHtml}
|
2024-06-07 15:42:31 +02:00
|
|
|
<div class="content">${htmlEscape(content)}</div>
|
|
|
|
<div class="actions">
|
|
|
|
<button class="ui cancel button">${svg('octicon-x')} ${htmlEscape(i18n.modal_cancel)}</button>
|
|
|
|
<button class="ui ${confirmButtonColor} ok button">${svg('octicon-check')} ${htmlEscape(i18n.modal_confirm)}</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
`);
|
|
|
|
document.body.append(modal);
|
2024-11-14 19:48:41 +01:00
|
|
|
const $modal = fomanticQuery(modal);
|
2023-06-19 09:46:50 +02:00
|
|
|
$modal.modal({
|
|
|
|
onApprove() {
|
|
|
|
resolve(true);
|
|
|
|
},
|
|
|
|
onHidden() {
|
|
|
|
$modal.remove();
|
|
|
|
resolve(false);
|
|
|
|
},
|
|
|
|
}).modal('show');
|
|
|
|
});
|
|
|
|
}
|