{"version":3,"file":"script/newsletter_signup.js","mappings":"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","sources":["webpack://ERV.Web/./Assets/script/erv/newsletter_signup.js"],"sourcesContent":["const settings = {\r\n firstNameInput: '',\r\n lastNameInput: '',\r\n emailInput: '',\r\n formId: '',\r\n errorMessages: null,\r\n isLeisureNewsletterInput: false,\r\n isCorporateNewsletterInput: false,\r\n isBrokerNewsletterInput: false,\r\n isAgentNewsletterInput: false\r\n};\r\n\r\nconst emailRegexp = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\nconst newsletterErrorsId = 'newsletter-errors';\r\nconst hiddenClass = 'hidden';\r\n\r\nconst validateCheckboxes = () => {\r\n const checkboxArray = Array.from(document.getElementsByTagName('ergo-checkbox'));\r\n const atLeastOneChecked = checkboxArray.some(checkbox => checkbox.checked);\r\n const isValid = atLeastOneChecked || !checkboxArray.length;\r\n\r\n if (isValid) {\r\n hideCheckboxErrorMessage();\r\n } else {\r\n showCheckboxErrorMessage();\r\n }\r\n return isValid;\r\n}\r\n\r\nconst hideCheckboxErrorMessage = () => {\r\n const errors = document.getElementById(newsletterErrorsId);\r\n if (errors.classList.contains(hiddenClass)) {\r\n return;\r\n }\r\n errors.classList.add(hiddenClass);\r\n}\r\n\r\nconst showCheckboxErrorMessage = () => {\r\n const errors = document.getElementById(newsletterErrorsId);\r\n if (errors.classList.contains(hiddenClass)) {\r\n errors.classList.remove(hiddenClass);\r\n }\r\n}\r\n\r\nconst validate = (values) => {\r\n const isEmailValid = (email) => emailRegexp.test(email);\r\n\r\n return {\r\n [settings.firstNameInput]: !values[settings.firstNameInput].length && settings.errorMessages.requiredFieldErrorMessage,\r\n [settings.lastNameInput]: !values[settings.lastNameInput].length && settings.errorMessages.requiredFieldErrorMessage,\r\n [settings.emailInput]: !values[settings.emailInput].length \r\n ? settings.errorMessages.requiredFieldErrorMessage\r\n : !isEmailValid(values[settings.emailInput]) && settings.errorMessages.emailPatternErrorMessage\r\n };\r\n};\r\n\r\nconst submitButton = () => document.querySelector(`#newsletter-signup-trigger-${settings.formId}`);\r\nconst successMessage = () => document.querySelector(`#newsletter-signup-message-${settings.formId}`);\r\nconst newsletterForm = () => document.querySelector(`#newsletter-singup-form-${settings.formId}`);\r\n\r\nconst handleSuccess = (response) => {\r\n if(response){\r\n successMessage().style.display = 'block';\r\n }\r\n}\r\n\r\nconst submit = (form, data) => {\r\n\r\n if (!validateCheckboxes()) {\r\n return;\r\n }\r\n\r\n submitButton().disabled = true;\r\n\r\n const jsonData = {\r\n FirstName: data.values[settings.firstNameInput],\r\n LastName: data.values[settings.lastNameInput],\r\n Email: data.values[settings.emailInput],\r\n IsLeisureNewsletter: data.values[settings.isLeisureNewsletterInput] === 'true',\r\n IsCorporateNewsletter: data.values[settings.isCorporateNewsletterInput] === 'true',\r\n IsBrokerNewsletter: data.values[settings.isBrokerNewsletterInput] === 'true',\r\n IsAgentNewsletter: data.values[settings.isAgentNewsletterInput] === 'true'\r\n }\r\n \r\n fetch(form.attributes['action'].value, {\r\n method: form.attributes['method'].value,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(jsonData)\r\n }).then(response => response.json().then(r => handleSuccess(r)))\r\n .catch(e => console.error(e))\r\n .finally(()=> {\r\n submitButton().disabled = false;\r\n });\r\n\r\n form.setSubmitted();\r\n}\r\n\r\nconst init = (firstNameInputName, lastNameInputName, emailInputName, errorMessages, formId,\r\n isLeisureNewsletterName, isCorporateNewsletterName, isBrokerNewsletterName, isAgentNewsletterName) => {\r\n settings.firstNameInput = firstNameInputName;\r\n settings.lastNameInput = lastNameInputName;\r\n settings.emailInput = emailInputName;\r\n settings.formId = formId;\r\n settings.errorMessages = errorMessages;\r\n settings.isLeisureNewsletterInput = isLeisureNewsletterName;\r\n settings.isCorporateNewsletterInput = isCorporateNewsletterName;\r\n settings.isBrokerNewsletterInput = isBrokerNewsletterName;\r\n settings.isAgentNewsletterInput = isAgentNewsletterName;\r\n\r\n const form = newsletterForm();\r\n form.validation = (values) => validate(values);\r\n\r\n form.addEventListener('ergoFormSubmit',\r\n (e) => {\r\n successMessage().style.display = 'none';\r\n \r\n const submittedForm = e.target;\r\n const submittedFormState = e.detail;\r\n\r\n submit(submittedForm, submittedFormState);\r\n });\r\n const checkboxes = document.getElementsByTagName('ergo-checkbox');\r\n for (var checkbox of checkboxes)\r\n {\r\n checkbox.addEventListener('ergoChange', () => {\r\n validateCheckboxes();\r\n });\r\n }\r\n }\r\n\r\nconst NewsletterSignUp = {\r\n init\r\n}\r\n\r\nwindow.NewsletterSignUp = {\r\n init: NewsletterSignUp.init\r\n}\r\n\r\nexport default NewsletterSignUp;"],"names":["settings","firstNameInput","lastNameInput","emailInput","formId","errorMessages","isLeisureNewsletterInput","isCorporateNewsletterInput","isBrokerNewsletterInput","isAgentNewsletterInput","emailRegexp","newsletterErrorsId","hiddenClass","validateCheckboxes","checkboxArray","Array","from","document","getElementsByTagName","isValid","some","checkbox","checked","length","hideCheckboxErrorMessage","showCheckboxErrorMessage","errors","getElementById","classList","contains","add","remove","submitButton","querySelector","concat","successMessage","submit","form","data","disabled","jsonData","FirstName","values","LastName","Email","IsLeisureNewsletter","IsCorporateNewsletter","IsBrokerNewsletter","IsAgentNewsletter","fetch","attributes","value","method","headers","body","JSON","stringify","then","response","json","r","style","display","handleSuccess","catch","e","console","error","finally","setSubmitted","NewsletterSignUp","init","firstNameInputName","lastNameInputName","emailInputName","isLeisureNewsletterName","isCorporateNewsletterName","isBrokerNewsletterName","isAgentNewsletterName","validation","email","_defineProperty","requiredFieldErrorMessage","test","emailPatternErrorMessage","validate","addEventListener","submittedForm","target","submittedFormState","detail","_step","_iterator","_createForOfIteratorHelper","s","n","done","err","f","window"],"sourceRoot":""}