{"version":3,"file":"OverlayModal-0a404d6f.js","names":["define","Moduler","create","defaults","triggerSelectors","closeSelectors","modalElement","modalElementActiveClass","triggerEvent","overlayElement","overlayElementActiveClass","init","self","this","document","querySelector","options","el","addEventListener","e","target","closest","preventDefault","stopPropagation","open","key","triggeredBy","classList","add","focus","keyDownHandler","removeEventListener","close","clickCloser","setTimeout","body","remove"],"sources":["OverlayModal.js"],"mappings":"AAAAA,OAAO,CAAC,YAAY,SAAUC,GAC1B,aAEA,OAAOA,EAAQC,OAAO,CAClBC,SAAU,CACNC,iBAAkB,KAClBC,eAAgB,KAChBC,aAAc,KACdC,wBAAyB,UACzBC,aAAc,QACdC,eAAgB,WAChBC,0BAA2B,oBAG/BC,KAAM,WACF,IAAIC,EAAOC,KAEXD,EAAKH,eAAiBK,SAASC,cAAcH,EAAKI,QAAQP,gBAE1DG,EAAKN,aAAeM,EAAKK,GACrBL,EAAKI,QAAQV,eACbM,EAAKN,aAAeM,EAAKK,GAAGF,cAAcH,EAAKI,QAAQV,eAG3DQ,SAASI,iBAAiBN,EAAKI,QAAQR,cAAcW,IAC7CA,EAAEC,OAAOC,QAAQT,EAAKI,QAAQZ,oBAC9Be,EAAEG,iBACFH,EAAEI,kBACFX,EAAKY,OACT,IAE6B,SAA7BZ,EAAKI,QAAQR,cACbM,SAASI,iBAAiB,WAAWC,IAC7BA,EAAEC,OAAOC,QAAQT,EAAKI,QAAQZ,mBAA+B,UAAVe,EAAEM,MACrDN,EAAEG,iBACFH,EAAEI,kBACFX,EAAKY,OACLZ,EAAKc,YAAcP,EAAEC,OACzB,GAGZ,EACAI,KAAM,WACF,IAAIZ,EAAOC,KACXD,EAAKN,aAAaqB,UAAUC,IAAIhB,EAAKI,QAAQT,yBAC7CK,EAAKH,eAAekB,UAAUC,IAAIhB,EAAKI,QAAQN,2BAC/CE,EAAKN,aAAauB,QAOlBf,SAASI,iBAAiB,WAN1B,SAASY,EAAeX,IACfA,EAAEC,OAAOC,QAAQT,EAAKI,QAAQX,iBAA6B,UAAVc,EAAEM,KAA8B,WAAVN,EAAEM,OAC1EX,SAASiB,oBAAoB,UAAWD,GACxClB,EAAKoB,QAEb,IASAlB,SAASI,iBAAiB,SAN1B,SAASe,EAAYd,IACbA,EAAEC,OAAOC,QAAQT,EAAKI,QAAQX,iBAAmBc,EAAEC,QAAUR,EAAKH,kBAClEG,EAAKoB,QACLlB,SAASiB,oBAAoB,QAASE,GAE9C,IAGAC,YAAW,SAAUf,GAAKL,SAASqB,KAAKR,UAAUC,IAAI,YAAc,GAAG,IAC3E,EACAI,MAAO,WACH,IAAIpB,EAAOC,KACXD,EAAKN,aAAaqB,UAAUS,OAAOxB,EAAKI,QAAQT,yBAChDK,EAAKH,eAAekB,UAAUS,OAAOxB,EAAKI,QAAQN,2BAC9CE,EAAKc,cACLd,EAAKc,YAAYG,QACjBjB,EAAKc,YAAc,MAEvBZ,SAASqB,KAAKR,UAAUS,OAAO,YACnC,GAER","sourcesContent":["define(['moduler'], function (Moduler) {\r\n 'use strict';\r\n\r\n return Moduler.create({\r\n defaults: {\r\n triggerSelectors: null,\r\n closeSelectors: null,\r\n modalElement: null,\r\n modalElementActiveClass: 'is-open',\r\n triggerEvent: 'click',\r\n overlayElement: '.Overlay',\r\n overlayElementActiveClass: 'Overlay--visible'\r\n },\r\n\r\n init: function () {\r\n let self = this;\r\n\r\n self.overlayElement = document.querySelector(self.options.overlayElement);\r\n\r\n self.modalElement = self.el;\r\n if (self.options.modalElement) {\r\n self.modalElement = self.el.querySelector(self.options.modalElement);\r\n }\r\n\r\n document.addEventListener(self.options.triggerEvent, e => {\r\n if (e.target.closest(self.options.triggerSelectors)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n self.open();\r\n }\r\n });\r\n if (self.options.triggerEvent == 'click') {\r\n document.addEventListener('keydown', e => {\r\n if (e.target.closest(self.options.triggerSelectors) && e.key === \"Enter\") {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n self.open();\r\n self.triggeredBy = e.target;\r\n }\r\n });\r\n }\r\n },\r\n open: function () {\r\n let self = this;\r\n self.modalElement.classList.add(self.options.modalElementActiveClass);\r\n self.overlayElement.classList.add(self.options.overlayElementActiveClass);\r\n self.modalElement.focus();\r\n function keyDownHandler(e) {\r\n if ((e.target.closest(self.options.closeSelectors) && e.key === \"Enter\") || e.key === \"Escape\") {\r\n document.removeEventListener('keydown', keyDownHandler);\r\n self.close();\r\n }\r\n }\r\n document.addEventListener('keydown', keyDownHandler);\r\n\r\n function clickCloser(e) {\r\n if (e.target.closest(self.options.closeSelectors) || e.target == self.overlayElement) {\r\n self.close();\r\n document.removeEventListener('click', clickCloser);\r\n }\r\n }\r\n document.addEventListener('click', clickCloser);\r\n\r\n setTimeout(function (e) { document.body.classList.add('no-scroll'); }, 200);\r\n },\r\n close: function () {\r\n let self = this;\r\n self.modalElement.classList.remove(self.options.modalElementActiveClass);\r\n self.overlayElement.classList.remove(self.options.overlayElementActiveClass);\r\n if (self.triggeredBy) {\r\n self.triggeredBy.focus();\r\n self.triggeredBy = null;\r\n }\r\n document.body.classList.remove('no-scroll');\r\n }\r\n });\r\n});"]}