{"version":3,"sources":["website/cms-dialog.ts"],"names":["CmsDialog","HTMLElement","constructor","super","returnValue","this","dialog","val","show","open","showModal","close","length","createElements","document","createElement","classList","add","addEventListener","eventClone","Event","e","type","stopImmediatePropagation","dispatchEvent","header","headingEl","innerText","heading","append","body","setAttribute","innerHTML","preventDefault","setTimeout","children","readAttributes","hasAttribute","getAttribute","connectedCallback","customElements","define"],"mappings":"MAIaA,kBAAkBC,YAC3BC,cACIC,MAAK,CACT,CAMAC,kBACI,OAAOC,KAAKC,QAAQF,WACxB,CACAA,gBAAuBG,GACfF,KAAKC,SACLD,KAAKC,OAAOF,YAAcG,EAElC,CAEOC,OACEH,KAAKC,QAAUD,CAAAA,KAAKC,OAAOG,MAIhCJ,KAAKC,OAAOE,KAAI,CACpB,CAEOE,YACEL,KAAKC,QAAUD,CAAAA,KAAKC,OAAOG,MAIhCJ,KAAKC,OAAOI,UAAS,CACzB,CAEOC,MAAMP,GACJC,KAAKC,QAAWD,KAAKC,OAAOG,OAI5BL,GAAgBA,EAAYQ,SAC7BP,KAAKC,OAAOF,YAAc,IAG9BC,KAAKC,OAAOK,MAAMP,CAAW,EACjC,CAKQS,iBACJR,KAAKC,OAASQ,SAASC,cAAc,QAAQ,EAC7CV,KAAKC,OAAOU,UAAUC,IAAI,aAAc,aAAa,EACrDZ,KAAKC,OAAOY,iBAAiB,QAAS,IAClC,IAAMC,EAAa,IAAIC,MAAMC,EAAEC,KAAMD,CAAC,EACtCA,EAAEE,yBAAwB,EAC1BlB,KAAKmB,cAAcL,CAAU,CACjC,CAAC,EAED,IAAMM,EAASX,SAASC,cAAc,KAAK,EAGrCW,GAFND,EAAOT,UAAUC,IAAI,eAAe,EAElBH,SAASC,cAAc,IAAI,GAKvCJ,GAJNe,EAAUV,UAAUC,IAAI,cAAc,EACtCS,EAAUC,UAAYtB,KAAKuB,QAC3BH,EAAOI,OAAOH,CAAS,EAETZ,SAASC,cAAc,QAAQ,GAavCe,GAZNnB,EAAMK,UAAUC,IAAI,MAAO,WAAY,kBAAkB,EACzDN,EAAMoB,aAAa,OAAQ,QAAQ,EACnCpB,EAAMoB,aAAa,QAAS,EAAE,EAC9BpB,EAAMqB,UAAY,qBAClBrB,EAAMO,iBAAiB,QAAS,IAC5BG,EAAEY,eAAc,EAChBC,WAAW,IAAM7B,KAAKM,MAAK,EAAI,GAAG,CACtC,CAAC,EACDc,EAAOI,OAAOlB,CAAK,EAEnBN,KAAKC,OAAOuB,OAAOJ,CAAM,EAEXX,SAASC,cAAc,KAAK,GAC1Ce,EAAKd,UAAUC,IAAI,aAAa,EAChCa,EAAKD,OAAO,GAAGxB,KAAK8B,QAAQ,EAE5B9B,KAAKC,OAAOuB,OAAOC,CAAI,EAEvBzB,KAAKwB,OAAOxB,KAAKC,MAAM,CAC3B,CAEQ8B,iBACA,CAAC/B,KAAKuB,SAAWvB,KAAKgC,aAAa,SAAS,IAC5ChC,KAAKuB,QAAUvB,KAAKiC,aAAa,SAAS,EAElD,CAGAC,oBACIlC,KAAK+B,eAAc,EACnB/B,KAAKQ,eAAc,CACvB,C,CAGJ2B,eAAeC,OAAO,aAAczC,SAAS,SArGhCA,SAqGiC","file":"cms-dialog.js","sourcesContent":["// Note: Customized built-in element support (https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements)\r\n// can not be used for now, because it is not supported by some of the modern browsers:\r\n// https://caniuse.com/mdn-api_customelementregistry_builtin_element_support\r\n\r\nexport class CmsDialog extends HTMLElement {\r\n constructor() {\r\n super();\r\n }\r\n\r\n /* #region Public */\r\n public dialog: HTMLDialogElement;\r\n public heading: string;\r\n\r\n public get returnValue() {\r\n return this.dialog?.returnValue;\r\n }\r\n public set returnValue(val: string) {\r\n if (this.dialog) {\r\n this.dialog.returnValue = val;\r\n }\r\n }\r\n\r\n public show() {\r\n if (!this.dialog || this.dialog.open) {\r\n return;\r\n }\r\n\r\n this.dialog.show();\r\n }\r\n\r\n public showModal() {\r\n if (!this.dialog || this.dialog.open) {\r\n return;\r\n }\r\n\r\n this.dialog.showModal();\r\n }\r\n\r\n public close(returnValue?: string) {\r\n if (!this.dialog || !this.dialog.open) {\r\n return;\r\n }\r\n\r\n if (!returnValue || !returnValue.length) {\r\n this.dialog.returnValue = \"\";\r\n }\r\n\r\n this.dialog.close(returnValue);\r\n }\r\n\r\n /* #endregion */\r\n\r\n /* #region Private */\r\n private createElements() {\r\n this.dialog = document.createElement(\"dialog\");\r\n this.dialog.classList.add(\"cms-dialog\", \"flex-column\");\r\n this.dialog.addEventListener(\"close\", (e: Event) => {\r\n const eventClone = new Event(e.type, e);\r\n e.stopImmediatePropagation();\r\n this.dispatchEvent(eventClone);\r\n });\r\n\r\n const header = document.createElement(\"div\");\r\n header.classList.add(\"dialog-header\");\r\n\r\n const headingEl = document.createElement(\"h4\");\r\n headingEl.classList.add(\"dialog-title\");\r\n headingEl.innerText = this.heading;\r\n header.append(headingEl);\r\n\r\n const close = document.createElement(\"button\");\r\n close.classList.add(\"btn\", \"btn-icon\", \"dialog-btn-close\");\r\n close.setAttribute('type', 'button');\r\n close.setAttribute('title', '');\r\n close.innerHTML = `Close`;\r\n close.addEventListener(\"click\", (e: MouseEvent) => {\r\n e.preventDefault();\r\n setTimeout(() => this.close(), 100);\r\n });\r\n header.append(close);\r\n\r\n this.dialog.append(header);\r\n\r\n const body = document.createElement(\"div\");\r\n body.classList.add(\"dialog-body\");\r\n body.append(...this.children);\r\n\r\n this.dialog.append(body);\r\n\r\n this.append(this.dialog);\r\n }\r\n\r\n private readAttributes() {\r\n if (!this.heading && this.hasAttribute(\"heading\")) {\r\n this.heading = this.getAttribute(\"heading\");\r\n }\r\n }\r\n /* #endregion */\r\n\r\n connectedCallback() {\r\n this.readAttributes();\r\n this.createElements();\r\n }\r\n}\r\n\r\ncustomElements.define(\"cms-dialog\", CmsDialog);"]}