@universal-material/web
Version:
Material web components
44 lines • 1.4 kB
JavaScript
import DOMPurify from 'dompurify';
import './dialog.js';
export class DialogBuilder {
#headline;
constructor(message) {
this.message = message;
}
headline(headline) {
this.#headline = headline;
return this;
}
show() {
const dialog = document.createElement('u-dialog');
dialog.innerHTML = DOMPurify.sanitize(this.message);
this._addHeadline(dialog);
this._addButtons(dialog);
return this.innerShow(dialog);
}
innerShow(dialog) {
dialog.addEventListener('closed', () => dialog.remove());
document.body.appendChild(dialog);
dialog.show();
return;
}
_addHeadline(dialog) {
if (!this.#headline) {
return;
}
const headlineElement = document.createElement('span');
headlineElement.slot = 'headline';
headlineElement.innerHTML = DOMPurify.sanitize(this.#headline);
dialog.appendChild(headlineElement);
}
_addButton(dialog, buttonDef, click) {
const button = document.createElement('u-button');
button.variant = buttonDef.variant;
button.color = buttonDef.color;
button.textContent = buttonDef.label;
button.slot = 'actions';
button.addEventListener('click', click);
dialog.appendChild(button);
}
}
//# sourceMappingURL=dialog-builder.js.map