{"version":3,"file":"subscription-popup.js","sources":["../../../../src/assets/scripts/subscription-popup.entry.js"],"sourcesContent":["window.arjoSubscriptionPopupModule =\n window.arjoSubscriptionPopupModule ||\n (() => {\n const state = {\n isInitialized: false,\n elements: {},\n };\n\n const getElement = (id) => state.elements[id];\n\n const classNamePrefix = 'arjo-o-subscription-popup';\n const triggerAttr = 'data-subscription-popup-id';\n const forPopupCloseAttr = 'close-popup';\n\n const setUp = () => {\n const els = [...document.querySelectorAll(`.${classNamePrefix}`)];\n els.forEach((el) => {\n const id = el.dataset.popupId;\n if (!id) return;\n\n const successMessage = el.dataset['message-200'];\n const alreadySubscribedMessage = el.dataset['message-201'];\n const failedMessage = el.dataset['message-4xx-5xx'];\n\n const url = el.dataset.subscriptionUrl;\n const callSubscriptionApi = ({subscribeProductNews, subscribePressReleasesAndRegulatoryNews, subscriberEmail, subscribeNews}) => {\n return axios.request({\n method: 'post',\n url: url,\n data: {subscribeProductNews, subscribePressReleasesAndRegulatoryNews, subscriberEmail, subscribeNews},\n headers: {\n Accept: '*/*',\n },\n });\n };\n\n const innerState = {\n submitted: false,\n };\n\n const closeButton = el.querySelector(`.${classNamePrefix}__close-button`);\n const resultOkButton = el.querySelector(`.${classNamePrefix}__result button`);\n const submitButton = el.querySelector(`.${classNamePrefix}__submit-container button`);\n const form = el.querySelector(`.${classNamePrefix} form`);\n\n const checkContainer = el.querySelector(`.${classNamePrefix}__area-of-interest-container`);\n const inputContainer = el.querySelector(`.${classNamePrefix}__email-input-container`);\n\n const productNewsCheck = el.querySelector(`.${classNamePrefix} form [name='productNews']`);\n const pressReleaseAndRegulatoryNewsCheck = el.querySelector(`.${classNamePrefix} form [name='pressReleaseAndRegulatoryNews']`);\n const newsCheck = el.querySelector(`.${classNamePrefix} form [name='news']`);\n const emailInput = el.querySelector(`.${classNamePrefix} form [name='email']`);\n const policyInput = el.querySelector(`.${classNamePrefix} input[name=acceptPolicy]`);\n\n const resultDom = el.querySelector(`.${classNamePrefix}__message`);\n\n const setMessage = (message) => {\n resultDom.innerText = message;\n };\n\n const setSubmitButtonState = (state) => {\n if (state) {\n submitButton.removeAttribute('disabled');\n } else {\n submitButton.setAttribute('disabled', true);\n }\n };\n\n setSubmitButtonState(policyInput ? policyInput.checked : true);\n\n const validateForm = () => {\n const result = {\n areaOfInterestIsValid: true,\n emailIsValid: true,\n };\n\n if (!(productNewsCheck?.checked || pressReleaseAndRegulatoryNewsCheck?.checked || newsCheck?.checked)) result.areaOfInterestIsValid = false;\n\n const emailRegex = new RegExp(/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g);\n if (emailInput.value.length === 0 || !emailRegex.test(emailInput.value)) result.emailIsValid = false;\n\n return result;\n };\n\n const toggleErrorMessage = ({areaOfInterestIsValid, emailIsValid}) => {\n if (areaOfInterestIsValid) {\n checkContainer.classList.remove('has-error');\n } else {\n checkContainer.classList.add('has-error');\n }\n\n if (emailIsValid) {\n inputContainer.classList.remove('has-error');\n } else {\n inputContainer.classList.add('has-error');\n }\n };\n\n const showLoading = (isLoading) => {\n if (isLoading) {\n el.classList.add('is-loading');\n } else {\n el.classList.remove('is-loading');\n }\n };\n\n const resetForm = () => {\n toggleErrorMessage({areaOfInterestIsValid: true, emailIsValid: true});\n productNewsCheck.checked = false;\n pressReleaseAndRegulatoryNewsCheck.checked = false;\n emailInput.value = null;\n innerState.submitted = false;\n };\n\n const resetPopup = () => {\n showLoading(false);\n showResult(false);\n resetForm();\n resultOkButton.removeAttribute(forPopupCloseAttr);\n };\n\n const showPopup = (isActive) => {\n if (isActive) {\n el.classList.add('is-active');\n } else {\n el.classList.remove('is-active');\n resetPopup();\n }\n };\n\n const showResult = (isDisplayingResult) => {\n if (isDisplayingResult) {\n el.classList.add('is-displaying-result');\n } else {\n el.classList.remove('is-displaying-result');\n setMessage('');\n }\n };\n\n closeButton.addEventListener('click', () => {\n showPopup(false);\n });\n\n resultOkButton.addEventListener('click', (e) => {\n if (e.target.hasAttribute(forPopupCloseAttr)) {\n showPopup(false);\n } else {\n showResult(false);\n }\n });\n\n const submitHandler = () => {\n showLoading(true);\n\n callSubscriptionApi({\n subscribeProductNews: productNewsCheck.checked,\n subscribePressReleasesAndRegulatoryNews: pressReleaseAndRegulatoryNewsCheck.checked,\n subscriberEmail: emailInput.value,\n subscribeNews: newsCheck.checked,\n })\n .then((res) => {\n const {status} = res;\n switch (status) {\n case 200:\n setMessage(successMessage);\n resultOkButton.setAttribute(forPopupCloseAttr, '');\n showResult(true);\n break;\n case 201:\n setMessage(alreadySubscribedMessage);\n showResult(true);\n break;\n default:\n break;\n }\n })\n .catch(() => {\n setMessage(failedMessage);\n showResult(true);\n })\n .finally(() => {\n resetForm();\n showLoading(false);\n });\n };\n\n submitButton.addEventListener('click', () => {\n if (!innerState.submitted) innerState.submitted = true;\n const {areaOfInterestIsValid, emailIsValid} = validateForm();\n toggleErrorMessage({areaOfInterestIsValid, emailIsValid});\n if (areaOfInterestIsValid && emailIsValid) {\n submitHandler();\n }\n });\n\n form.addEventListener('submit', (e) => {\n e.preventDefault();\n if (!innerState.submitted) innerState.submitted = true;\n\n const {areaOfInterestIsValid, emailIsValid} = validateForm();\n\n toggleErrorMessage({areaOfInterestIsValid, emailIsValid});\n\n if (areaOfInterestIsValid && emailIsValid) {\n submitHandler();\n }\n });\n\n inputContainer.addEventListener('input', () => {\n if (!innerState.submitted) return;\n const {areaOfInterestIsValid, emailIsValid} = validateForm();\n toggleErrorMessage({areaOfInterestIsValid, emailIsValid});\n });\n\n checkContainer.addEventListener('change', () => {\n if (!innerState.submitted) return;\n const {areaOfInterestIsValid, emailIsValid} = validateForm();\n toggleErrorMessage({areaOfInterestIsValid, emailIsValid});\n });\n\n policyInput &&\n policyInput.addEventListener('change', (e) => {\n setSubmitButtonState(e.target?.checked);\n });\n\n state.elements[id] = (() => {\n return {showPopup};\n })();\n });\n };\n\n const setUpForTrigger = () => {\n const els = [...document.querySelectorAll(`[${triggerAttr}]`)];\n const clickHandler = (e) => {\n const popupId = e.target.dataset.subscriptionPopupId;\n if (!!popupId && !!getElement(popupId)) {\n getElement(popupId).showPopup(true);\n }\n };\n els.forEach((el) => {\n el.addEventListener('click', clickHandler);\n });\n };\n\n const init = () => {\n if (state.isInitialized) return;\n setUp();\n setUpForTrigger();\n state.isInitialized = true;\n };\n\n return {init};\n })();\n\nwindow.addEventListener('load', window.arjoSubscriptionPopupModule.init);\n"],"names":["state","getElement","id","classNamePrefix","triggerAttr","forPopupCloseAttr","setUp","el","successMessage","alreadySubscribedMessage","failedMessage","url","callSubscriptionApi","subscribeProductNews","subscribePressReleasesAndRegulatoryNews","subscriberEmail","subscribeNews","innerState","closeButton","resultOkButton","submitButton","form","checkContainer","inputContainer","productNewsCheck","pressReleaseAndRegulatoryNewsCheck","newsCheck","emailInput","policyInput","resultDom","setMessage","message","setSubmitButtonState","validateForm","result","emailRegex","toggleErrorMessage","areaOfInterestIsValid","emailIsValid","showLoading","isLoading","resetForm","resetPopup","showResult","showPopup","isActive","isDisplayingResult","submitHandler","res","status","_a","setUpForTrigger","els","clickHandler","e","popupId"],"mappings":"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"}