{"version":3,"file":"modalController-e471aba0.js","sources":["../../../../app/frontend/components/shared/controllers/modalController.js"],"sourcesContent":["import {trackDOMEvent, trackViewEvent} from '~/components/shared/tracking/segmentAnalytics';\n\nexport function closeModal(modalEl, overlayEl) {\n if (modalEl.dataset.trackModalClose && modalEl.classList.contains(\"opened\")) {\n modalEl.dataset.segmentEvent = \"Directory - Modal\"\n trackDOMEvent({currentTarget: modalEl})\n }\n modalEl.classList.remove('opened');\n document.body.classList.remove('no-scroll');\n if (overlayEl) {\n overlayEl.classList.remove('opened');\n }\n\n}\n\nexport function openModal(modalEl, overlayEl) {\n modalEl.classList.add('opened');\n if (typeof modalEl.dataset.segmentManualView !== 'undefined') {\n trackViewEvent(modalEl);\n }\n document.body.classList.add('no-scroll');\n if (overlayEl) {\n overlayEl.classList.add('opened');\n if (typeof modalEl.dataset.clickOutsideToClose !== 'undefined') {\n overlayEl.addEventListener('click', (e) => {\n e.stopPropagation();\n if (e.target === overlayEl) {\n closeModal(modalEl, overlayEl);\n }\n }, {once: true});\n }\n }\n}\n\n// this allows us to override in case we do not want a particular element activating the modal\nfunction ignoreModal(target) {\n const targetContainsModalIgnore = target.dataset.modalIgnore !== null && target.dataset.modalIgnore !== undefined;\n const targetParent = target.parent;\n let targetParentContainsModalIgnore = false;\n if (targetParent !== undefined && targetParent !== null) {\n targetParentContainsModalIgnore = targetParent.dataset.modalIgnore !== null && targetParent.dataset.modalIgnore !== undefined;\n }\n return targetContainsModalIgnore || targetParentContainsModalIgnore;\n}\n\nexport function setUpModals() {\n document.querySelectorAll('[data-modal-name]').forEach(modal => {\n const overlayEl = document.querySelector('.generic-modal__overlay');\n // set up close button\n modal.querySelector('[data-close]').addEventListener('click', () => {\n closeModal(modal, overlayEl);\n });\n // set up activator\n const name = modal.dataset.modalName;\n document.querySelectorAll(`[data-modal-activator=\"${name}\"]`).forEach(activatorEl => {\n activatorEl.addEventListener('click', (e) => {\n\n if (!ignoreModal(e.target)) {\n openModal(modal, overlayEl);\n }\n });\n });\n\n });\n}\n\n\nexport function setUpModalsOnMap() {\n const overlayEl = document.querySelector('.generic-modal__overlay');\n document.querySelectorAll(`[data-map-modal-activator]`).forEach(activatorEl => {\n let name = activatorEl.dataset.modalActivator;\n let modal = document.querySelector(`[data-modal-name=\"${name}\"]`)\n\n if (modal) {\n activatorEl.addEventListener('click', (e) => {\n if (!ignoreModal(e.target)) {\n openModal(modal, overlayEl);\n }\n });\n }\n });\n}\n"],"names":["closeModal","modalEl","overlayEl","trackDOMEvent","openModal","trackViewEvent","e","ignoreModal","target","targetContainsModalIgnore","targetParent","targetParentContainsModalIgnore","setUpModals","modal","name","activatorEl","setUpModalsOnMap"],"mappings":"0DAEO,SAASA,EAAWC,EAASC,EAAW,CACvCD,EAAQ,QAAQ,iBAAmBA,EAAQ,UAAU,SAAS,QAAQ,IACtEA,EAAQ,QAAQ,aAAe,oBAC/BE,EAAc,CAAC,cAAeF,CAAO,CAAC,GAE1CA,EAAQ,UAAU,OAAO,QAAQ,EACjC,SAAS,KAAK,UAAU,OAAO,WAAW,EACtCC,GACAA,EAAU,UAAU,OAAO,QAAQ,CAG3C,CAEO,SAASE,EAAUH,EAASC,EAAW,CAC1CD,EAAQ,UAAU,IAAI,QAAQ,EAC1B,OAAOA,EAAQ,QAAQ,kBAAsB,KAC7CI,EAAeJ,CAAO,EAE1B,SAAS,KAAK,UAAU,IAAI,WAAW,EACnCC,IACAA,EAAU,UAAU,IAAI,QAAQ,EAC5B,OAAOD,EAAQ,QAAQ,oBAAwB,KAC/CC,EAAU,iBAAiB,QAAUI,GAAM,CACvCA,EAAE,gBAAe,EACbA,EAAE,SAAWJ,GACbF,EAAWC,EAASC,CAAS,CAEjD,EAAe,CAAC,KAAM,EAAI,CAAC,EAG3B,CAGA,SAASK,EAAYC,EAAQ,CACzB,MAAMC,EAA4BD,EAAO,QAAQ,cAAgB,MAAQA,EAAO,QAAQ,cAAgB,OAClGE,EAAeF,EAAO,OAC5B,IAAIG,EAAkC,GACtC,OAAkCD,GAAiB,OAC/CC,EAAkCD,EAAa,QAAQ,cAAgB,MAAQA,EAAa,QAAQ,cAAgB,QAEjHD,GAA6BE,CACxC,CAEO,SAASC,GAAc,CAC1B,SAAS,iBAAiB,mBAAmB,EAAE,QAAQC,GAAS,CAC5D,MAAMX,EAAY,SAAS,cAAc,yBAAyB,EAElEW,EAAM,cAAc,cAAc,EAAE,iBAAiB,QAAS,IAAM,CAChEb,EAAWa,EAAOX,CAAS,CACvC,CAAS,EAED,MAAMY,EAAOD,EAAM,QAAQ,UAC3B,SAAS,iBAAiB,0BAA0BC,CAAI,IAAI,EAAE,QAAQC,GAAe,CACjFA,EAAY,iBAAiB,QAAUT,GAAM,CAEpCC,EAAYD,EAAE,MAAM,GACrBF,EAAUS,EAAOX,CAAS,CAE9C,CAAa,CACb,CAAS,CAET,CAAK,CACL,CAGO,SAASc,GAAmB,CAC/B,MAAMd,EAAY,SAAS,cAAc,yBAAyB,EAClE,SAAS,iBAAiB,4BAA4B,EAAE,QAAQa,GAAe,CAC3E,IAAID,EAAOC,EAAY,QAAQ,eAC3BF,EAAQ,SAAS,cAAc,qBAAqBC,CAAI,IAAI,EAE5DD,GACAE,EAAY,iBAAiB,QAAUT,GAAM,CACpCC,EAAYD,EAAE,MAAM,GACrBF,EAAUS,EAAOX,CAAS,CAE9C,CAAa,CAEb,CAAK,CACL"}