diff --git a/packages/signalizejs/src/modules/dialog.js b/packages/signalizejs/src/modules/dialog.js index b4e44fe..6d586ee 100755 --- a/packages/signalizejs/src/modules/dialog.js +++ b/packages/signalizejs/src/modules/dialog.js @@ -45,6 +45,9 @@ export default async ({ resolve, root, params }) => { if (dialog.hasAttribute(dialogModelessAttribute)) { modelessly = dialog.getAttribute(dialogModelessAttribute) === 'true'; } + + dialog.setAttribute(dialogClosableAttribute, String(closable)); + modelessly ? dialog.show() : dialog.showModal(); const dialogId = dialog.getAttribute(dialogAttribute); if (dialogId) { @@ -69,7 +72,9 @@ export default async ({ resolve, root, params }) => { dialog.close(); if (dialog.getAttribute(dialogAttribute) === window.location.hash.substring(1)) { - window.history.replaceState(null, '', window.location.href.substring(0, window.location.href.indexOf('#'))); + window.history.replaceState( + null, '', window.location.href.substring(0, window.location.href.indexOf('#')) + ); } off('click', dialog, closeOnBackDropClickListener); @@ -113,6 +118,14 @@ export default async ({ resolve, root, params }) => { } }); + on('keydown', (event) => { + if (event.key.toLowerCase() === 'escape' + && document.querySelector(`dialog[open][${dialogClosableAttribute}="false"]`) + ) { + event.preventDefault(); + } + }); + on('dom:ready', () => { on('locationchange', window, openDialogByUrlHash); openDialogByUrlHash();