77 lines
2.0 KiB
JavaScript
77 lines
2.0 KiB
JavaScript
async function prompt (
|
|
heading,
|
|
body,
|
|
buttons = ['Cancel', 'Ok'],
|
|
options = { title: heading, size: { width: 360, height: 280 } }
|
|
) {
|
|
const [dlgEl, formEl, headingEl, dividerEl, bodyEl, footerEl] = [
|
|
'dialog',
|
|
'form',
|
|
'sp-heading',
|
|
'sp-divider',
|
|
'sp-body',
|
|
'footer'
|
|
].map(tag => document.createElement(tag))
|
|
;[headingEl, dividerEl, bodyEl, footerEl].forEach(el => {
|
|
el.style.margin = '6px'
|
|
el.style.width = 'calc(100% - 12px)'
|
|
})
|
|
|
|
formEl.setAttribute('method', 'dialog')
|
|
formEl.addEventListener('submit', () => dlgEl.close())
|
|
|
|
footerEl.style.marginTop = '26px'
|
|
|
|
dividerEl.setAttribute('size', 'large')
|
|
|
|
headingEl.textContent = heading
|
|
|
|
bodyEl.textContent = body
|
|
|
|
buttons.forEach((btnText, idx) => {
|
|
const btnEl = document.createElement('sp-button')
|
|
btnEl.setAttribute(
|
|
'variant',
|
|
idx === buttons.length - 1 ? btnText.variant || 'cta' : 'secondary'
|
|
)
|
|
if (idx === buttons.length - 1) btnEl.setAttribute('autofocus', 'autofocus')
|
|
if (idx < buttons.length - 1) btnEl.setAttribute('quiet')
|
|
btnEl.textContent = btnText.text || btnText
|
|
btnEl.style.marginLeft = '12px'
|
|
btnEl.addEventListener('click', () => dlgEl.close(btnText.text || btnText))
|
|
footerEl.appendChild(btnEl)
|
|
})
|
|
|
|
;[headingEl, dividerEl, bodyEl, footerEl].forEach(el =>
|
|
formEl.appendChild(el)
|
|
)
|
|
dlgEl.appendChild(formEl)
|
|
document.body.appendChild(dlgEl)
|
|
|
|
return dlgEl.uxpShowModal(options)
|
|
}
|
|
|
|
// const r1 = await prompt(
|
|
// 'Upload Large File',
|
|
// 'This is a large file (over 100MB) -- it may take a few moments to upload.',
|
|
// ['Skip', 'Upload']
|
|
// )
|
|
// if ((r1 || 'Upload') !== 'Upload') {
|
|
// /* cancelled or No */
|
|
// } else {
|
|
// /* Yes */
|
|
// }
|
|
|
|
// const r2 = await prompt(
|
|
// 'Delete File',
|
|
// 'Are you sure you wish to delete this file? This action cannot be undone.',
|
|
// ['Cancel', { variant: 'warning', text: 'Delete' }]
|
|
// )
|
|
// if (r2 !== 'Delete') {
|
|
// /* nope, don't do it! */
|
|
// } else {
|
|
// /* Do the delete */
|
|
// }
|
|
|
|
module.exports = { prompt }
|