{"version":3,"file":"modalController-d213ef7c.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\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 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,CACzCD,EAAQ,QAAQ,iBAAmBA,EAAQ,UAAU,SAAS,QAAQ,IACxEA,EAAQ,QAAQ,aAAe,oBAC/BE,EAAc,CAAE,cAAeF,EAAS,GAE1CA,EAAQ,UAAU,OAAO,QAAQ,EACjC,SAAS,KAAK,UAAU,OAAO,WAAW,EACtCC,GACFA,EAAU,UAAU,OAAO,QAAQ,CAGvC,CAEO,SAASE,EAAUH,EAASC,EAAW,CAC5CD,EAAQ,UAAU,IAAI,QAAQ,EAC1B,OAAOA,EAAQ,QAAQ,kBAAsB,KAC/CI,EAAeJ,CAAO,EAExB,SAAS,KAAK,UAAU,IAAI,WAAW,EACnCC,IACFA,EAAU,UAAU,IAAI,QAAQ,EAC5B,OAAOD,EAAQ,QAAQ,oBAAwB,KACjDC,EAAU,iBAAiB,QAAUI,GAAM,CACzCA,EAAE,gBAAe,EACbA,EAAE,SAAWJ,GACfF,EAAWC,EAASC,CAAS,CAEvC,EAAS,CAAE,KAAM,EAAI,CAAE,EAGvB,CAGA,SAASK,EAAYC,EAAQ,CAC3B,MAAMC,EAA4BD,EAAO,QAAQ,cAAgB,MAAQA,EAAO,QAAQ,cAAgB,OAClGE,EAAeF,EAAO,OAC5B,IAAIG,EAAkC,GACtC,OAAkCD,GAAiB,OACjDC,EAAkCD,EAAa,QAAQ,cAAgB,MAAQA,EAAa,QAAQ,cAAgB,QAE/GD,GAA6BE,CACtC,CAEO,SAASC,GAAc,CAE5B,SAAS,iBAAiB,mBAAmB,EAAE,QAAQC,GAAS,CAC9D,MAAMX,EAAY,SAAS,cAAc,yBAAyB,EAElEW,EAAM,cAAc,cAAc,EAAE,iBAAiB,QAAS,IAAM,CAClEb,EAAWa,EAAOX,CAAS,CACjC,CAAK,EAED,MAAMY,EAAOD,EAAM,QAAQ,UAC3B,SAAS,iBAAiB,0BAA0BC,CAAI,IAAI,EAAE,QAAQC,GAAe,CACnFA,EAAY,iBAAiB,QAAUT,GAAM,CACtCC,EAAYD,EAAE,MAAM,GACvBF,EAAUS,EAAOX,CAAS,CAEpC,CAAO,CACP,CAAK,CAEL,CAAG,CACH,CAGO,SAASc,GAAmB,CACjC,MAAMd,EAAY,SAAS,cAAc,yBAAyB,EAClE,SAAS,iBAAiB,4BAA4B,EAAE,QAAQa,GAAe,CAC7E,IAAID,EAAOC,EAAY,QAAQ,eAC3BF,EAAQ,SAAS,cAAc,qBAAqBC,CAAI,IAAI,EAE5DD,GACFE,EAAY,iBAAiB,QAAUT,GAAM,CACtCC,EAAYD,EAAE,MAAM,GACvBF,EAAUS,EAAOX,CAAS,CAEpC,CAAO,CAEP,CAAG,CACH"}