```
@@ -51,6 +52,7 @@ EasyPopup.init('.popup', {
closeButtonHTML: 'Click to close', // set custom HTML for close button
outerClass: 'my-popup', // custom class for popup
theme: 'default', // to create multiple themes
+ clickOutsideToClose: true, // true by default
onOpen: data => {
},
onClose: data => {
diff --git a/index.html b/index.html
index 27454ad..c84b241 100644
--- a/index.html
+++ b/index.html
@@ -93,7 +93,8 @@
Easy Popup v0.0.4
iaculis. Inceptos pulvinar scelerisque duis facilisi elementum suscipit viverra ante velit litora. Viverra
ornare urna mi fames bibendum enim nunc neque et nostra placerat.
`,this.overflow.appendChild(this.mobileHeading),this.outer=this.wrap(this.overflow),this.outer.classList.add(this.classes.outer),this.options.outerClass&&this.outer.classList.add(this.options.outerClass),this.hasMobileLayout&&this.outer.classList.add(this.classes.hasMobileLayout),this.outer.setAttribute(this.attributes.id,this.id),this.outer.setAttribute(this.attributes.theme,this.theme),this.outer.addEventListener("click",(t=>{t.target.classList.contains(this.classes.ignoreClick)||this.isClickOutsideContent(t)&&this.isClickOutsideToClose&&this.close()})),this.outer.querySelectorAll("[data-easy-popup-toggle]").forEach((t=>{t.addEventListener("click",(()=>this.close()))})),this.el.classList.add(this.classes.processed,this.classes.content))}isClickOutsideContent(t){return!this.inner.contains(t.target)&&!this.mobileHeading.contains(t.target)}open(){window.EasyPopupData.active&&t.get(window.EasyPopupData.active).close(),window.EasyPopupData.active=this.id,this.outer.classList.add(this.classes.open),this.isOpen=!0,this.root.classList.add("easy-popup-open"),this.root.style.paddingRight=`${this.getScrollbarWidth()}px`,this.root.style.overflow="hidden","function"==typeof this.options.onOpen&&this.options.onOpen(this)}close(){window.EasyPopupData.active="",this.outer.classList.remove(this.classes.open),this.isOpen=!1,this.root.classList.remove("easy-popup-open"),setTimeout((()=>{window.EasyPopupData.active||(this.root.style.paddingRight="",this.root.style.overflow=""),"function"==typeof this.options.onClose&&this.options.onClose(this)}),300)}toggle(){this.isOpen?this.close():this.open()}wrap(t,e=document.createElement("div")){return t.parentNode.insertBefore(e,t),e.appendChild(t),e}getScrollbarWidth(){const t=document.createElement("div");t.style.visibility="hidden",t.style.overflow="scroll",t.style.msOverflowStyle="scrollbar",document.body.appendChild(t);const e=document.createElement("div");t.appendChild(e);const s=t.offsetWidth-e.offsetWidth;return t.parentNode.removeChild(t),s}uniqueId(t=""){return t+(+new Date).toString(16)+(1e8*Math.random()|0).toString(16)}}window.EasyPopupData=new class{constructor(){this.active="",this.popups=[]}add(t){this.popups.push(t)}get(t){return this.popups.filter((e=>e.id===t))[0]}},t.init=(t="[data-easy-popup]",s={})=>{document.querySelectorAll(t).forEach((t=>window.EasyPopupData.add(new e(t,s))))},t.init(),t.get=t=>window.EasyPopupData.get(t)}(window.EasyPopup=window.EasyPopup||{});
\ No newline at end of file
+!function(t){class e{constructor(t,e){if(!t)return void console.warn("Init popup fail due to empty input!");this.root=document.querySelector(":root"),this.el=t,this.selector="data-easy-popup",this.attributes={id:`${this.selector}-id`,title:`${this.selector}-title`,toggle:`${this.selector}-toggle`,mobileLayout:`${this.selector}-mobile`,theme:`${this.selector}-theme`,clickOutsideToClose:`${this.selector}-click-outside-to-close`},this.classes={master:"easy-popup-master",processed:"easy-popup-enabled",triggerEnabled:"easy-popup-trigger-enabled",content:"easy-popup-content",outer:"easy-popup",inner:"easy-popup-inner",center:"easy-popup-center",overflow:"easy-popup-overflow",container:"easy-popup-container",open:"open",closeButton:"easy-popup-close-button",mobileHeading:"easy-popup-mobile-heading",hasMobileLayout:"easy-popup-has-mobile-layout",ignoreClick:"easy-popup-ignore-click"},this.innerHTML=this.el.innerHTML,this.isOpen=!1,this.options={id:this.uniqueId("easy-popup-"),outerClass:"",title:"",closeButtonHTML:'',triggerSelector:"",hasMobileLayout:!1,theme:"default",keyboard:!0,clickOutsideToClose:!0,onClose:()=>{},onOpen:()=>{},...e},this.id=this.el.getAttribute(this.selector)||this.options.id,this.title=this.el.getAttribute(this.attributes.title)||this.options.title,this.theme=this.el.getAttribute(this.attributes.theme)||this.options.theme,this.isClickOutsideToClose=this.isBooleanOptionTrue(this.attributes.clickOutsideToClose,this.options.clickOutsideToClose),this.hasMobileLayout=this.isBooleanOptionTrue(this.attributes.mobileLayout,this.options.hasMobileLayout),this.closeButtonHTML=this.options.closeButtonHTML,this.masterContainer=document.querySelector(`.${this.classes.master}`),this.generateHTML();let s=`a[href="#${this.id}"], [${this.attributes.toggle}="${this.id}"]`;s=this.options.triggerSelector?`${this.options.triggerSelector}, ${s}`:s,document.querySelectorAll(s).forEach((t=>{t.classList.add(this.classes.triggerEnabled),t.addEventListener("click",(t=>{t.preventDefault(),this.toggle()}))}))}isBooleanOptionTrue(t,e){const s=this.el.getAttribute(t);return s?"false"!==s:e}generateHTML(){this.el.classList.contains(this.classes.processed)||(this.masterContainer||(this.masterContainer=document.createElement("div"),this.masterContainer.classList.add(this.classes.master)),document.querySelector("body").appendChild(this.masterContainer),this.masterContainer.appendChild(this.el),this.inner=this.wrap(this.el),this.inner.classList.add(this.classes.inner),this.closeButton=document.createElement("button"),this.closeButton.classList.add(this.classes.closeButton),this.closeButton.innerHTML=this.closeButtonHTML,this.closeButton.setAttribute(this.attributes.toggle,""),this.closeButton.addEventListener("click",(()=>this.close())),this.inner.appendChild(this.closeButton),this.container=this.wrap(this.inner),this.container.classList.add(this.classes.container),this.overflow=this.wrap(this.container),this.overflow.classList.add(this.classes.overflow),this.mobileHeading=document.createElement("div"),this.mobileHeading.classList.add(this.classes.mobileHeading),this.mobileHeading.innerHTML=`
\n
${this.title}
\n \n
`,this.overflow.appendChild(this.mobileHeading),this.outer=this.wrap(this.overflow),this.outer.classList.add(this.classes.outer),this.options.outerClass&&this.outer.classList.add(this.options.outerClass),this.hasMobileLayout&&this.outer.classList.add(this.classes.hasMobileLayout),this.outer.setAttribute(this.attributes.id,this.id),this.outer.setAttribute(this.attributes.theme,this.theme),this.outer.addEventListener("click",(t=>{t.target.classList.contains(this.classes.ignoreClick)||this.isClickOutsideContent(t)&&this.isClickOutsideToClose&&this.close()})),this.outer.querySelectorAll("[data-easy-popup-toggle]").forEach((t=>{t.addEventListener("click",(()=>this.close()))})),this.options.keyboard&&document.addEventListener("keyup",(t=>{this.isOpen&&"Escape"===t.key&&this.close()})),this.el.classList.add(this.classes.processed,this.classes.content))}isClickOutsideContent(t){return!this.inner.contains(t.target)&&!this.mobileHeading.contains(t.target)}open(){window.EasyPopupData.active&&t.get(window.EasyPopupData.active).close(),window.EasyPopupData.active=this.id,this.outer.classList.add(this.classes.open),this.isOpen=!0,this.root.classList.add("easy-popup-open"),this.root.style.paddingRight=`${this.getScrollbarWidth()}px`,this.root.style.overflow="hidden","function"==typeof this.options.onOpen&&this.options.onOpen(this)}close(){window.EasyPopupData.active="",this.outer.classList.remove(this.classes.open),this.isOpen=!1,this.root.classList.remove("easy-popup-open"),setTimeout((()=>{window.EasyPopupData.active||(this.root.style.paddingRight="",this.root.style.overflow=""),"function"==typeof this.options.onClose&&this.options.onClose(this)}),300)}toggle(){this.isOpen?this.close():this.open()}wrap(t,e=document.createElement("div")){return t.parentNode.insertBefore(e,t),e.appendChild(t),e}getScrollbarWidth(){const t=document.createElement("div");t.style.visibility="hidden",t.style.overflow="scroll",t.style.msOverflowStyle="scrollbar",document.body.appendChild(t);const e=document.createElement("div");t.appendChild(e);const s=t.offsetWidth-e.offsetWidth;return t.parentNode.removeChild(t),s}uniqueId(t=""){return t+(+new Date).toString(16)+(1e8*Math.random()|0).toString(16)}}window.EasyPopupData=new class{constructor(){this.active="",this.popups=[]}add(t){this.popups.push(t)}get(t){return this.popups.filter((e=>e.id===t))[0]}},t.init=(t="[data-easy-popup]",s={})=>{document.querySelectorAll(t).forEach((t=>window.EasyPopupData.add(new e(t,s))))},t.init(),t.get=t=>window.EasyPopupData.get(t)}(window.EasyPopup=window.EasyPopup||{});
\ No newline at end of file