app change

This commit is contained in:
2023-04-11 17:34:13 +08:00
parent c38e486d7d
commit cc3d11f617
14 changed files with 385 additions and 98 deletions

View File

@ -60,10 +60,16 @@ class Popup {
const button = createElement('div', 'popup-button');
button.innerText = b.text;
button.addEventListener('click', () => {
if (typeof b.trigger === 'function' && b.trigger(this) === false) {
return;
if (typeof b.trigger === 'function') {
const result = b.trigger(this);
if (typeof result?.then === 'function') {
result.then(r => r !== false && close()).catch(() => { });
} else if (result !== false) {
close();
}
} else {
close();
}
close();
});
return button;
}))
@ -140,20 +146,25 @@ export function showAlert(title, message, iconType = 'info', parent = document.b
});
}
export function showConfirm(title, message, buttons, iconType = 'question', parent = document.body) {
export function showConfirm(title, content, buttons, iconType = 'question', parent = document.body) {
return new Promise(resolve => {
const popup = new Popup({
title,
content: createElement('div', 'message-wrapper',
createIcon('fa-solid', iconTypes[iconType] ?? 'question-circle'),
createElement('span', span => span.innerText = message)
createElement('span', null, content)
),
buttons: buttons?.map(b => {
return { text: b.text, trigger: p => resolve(b.key, p) }
return {
text: b.text, trigger: p => resolve({
key: b.key,
popup: p
})
};
}) ??
[
{ text: r('yes', 'Yes'), trigger: p => resolve('yes', p) },
{ text: r('no', 'No'), trigger: p => resolve('no', p) }
{ text: r('yes', 'Yes'), trigger: p => resolve({ key: 'yes', popup: p }) },
{ text: r('no', 'No'), trigger: p => resolve({ key: 'no', popup: p }) }
]
});
popup.show(parent);