{"version":3,"file":"tridion-form.min.js","sources":["tridion-form.min.js"],"sourcesContent":["\"use strict\";\n\n(function () {\n var tridionForms = document.querySelectorAll('.tridion_form form');\n var validate = function validate(field) {\n var fieldOuter = field.closest('.field.hs-form-field:not(.is-hidden)');\n var hasValidation = fieldOuter === null || fieldOuter === void 0 ? void 0 : fieldOuter.querySelector('[data-validation]');\n if (!hasValidation) return;\n var value = field.value,\n alertMandatory = fieldOuter.querySelector('[data-validation=\"mandatory\"]'),\n alertPhone = fieldOuter.querySelector('[data-validation=\"phone\"]'),\n alertEmail = fieldOuter.querySelector('[data-validation=\"email\"]'),\n isEmpty = value == null || value === '',\n isPhone = new RegExp('^[0-9+().\\\\-x]*$').test(value),\n isEmail = new RegExp('^[^\\\\s@]+@[^\\\\s@]+\\\\.[^\\\\s@]*$').test(value);\n alertMandatory && alertMandatory.classList.toggle('is-hidden', true);\n alertPhone && alertPhone.classList.toggle('is-hidden', true);\n alertEmail && alertEmail.classList.toggle('is-hidden', true);\n field.classList.toggle('invalid', false);\n if (alertMandatory && isEmpty) {\n alertMandatory.classList.toggle('is-hidden', !isEmpty);\n field.classList.toggle('invalid', isEmpty);\n } else {\n if (alertPhone && !isPhone) {\n alertPhone.classList.toggle('is-hidden', isPhone);\n field.classList.toggle('invalid', !isPhone);\n }\n if (alertEmail && !isEmail) {\n alertEmail.classList.toggle('is-hidden', isEmail);\n field.classList.toggle('invalid', !isEmail);\n }\n }\n };\n var initForm = function initForm(form) {\n var fields = form.querySelectorAll('input.hs-input:not(.hs-field-ready):not([type=\"hidden\"]):not([type=\"checkbox\"]):not([type=\"radio\"]), select.hs-input:not(.hs-field-ready), textarea.hs-input:not(.hs-field-ready)');\n fields && fields.forEach(function (field) {\n var fieldOuter = field.closest('.field.hs-form-field');\n var fieldLabel = fieldOuter.querySelector(':scope > label span');\n if (fieldLabel === null) return;\n if (fieldLabel.innerText === '') {\n var placeholderText = field.getAttribute('placeholder');\n var selectText = field.querySelector('option[disabled]');\n fieldLabel.innerText = placeholderText || (selectText === null || selectText === void 0 ? void 0 : selectText.innerText);\n }\n field.onblur = function () {\n fieldOuter.classList.remove('focused');\n !field.value && fieldOuter.classList.remove('active');\n validate(field);\n };\n field.onfocus = function () {\n return fieldOuter.classList.add('active', 'focused');\n };\n if (fieldOuter.classList.contains('hs-fieldtype-select')) {\n field.onchange = function () {\n setTimeout(function () {\n return initLabels(form);\n }, 400);\n validate(field);\n };\n }\n field.classList.add('hs-field-ready');\n !!field.value && fieldOuter.classList.add('active');\n });\n var validateForm = function validateForm(form, e) {\n fields && fields.forEach(function (field) {\n validate(field);\n });\n var invalidFields = form.querySelectorAll('input.invalid, select.invalid, textarea.invalid');\n if (invalidFields.length) e.preventDefault();\n };\n var submitButton = form.querySelector('[type=\"submit\"]');\n submitButton && submitButton.addEventListener('click', function (e) {\n return validateForm(form, e);\n });\n };\n var submitForm = function submitForm(form) {\n var formdata = new FormData(form);\n var params = new URLSearchParams(formdata);\n var path = form.action;\n var opts = {\n method: 'POST',\n body: params\n };\n var wrapper = document.querySelector('.tridion_form__wrapper > div');\n wrapper.innerHTML = \"
\\n \\\"loading\\\"\\n
\";\n fetch(path, opts).then(function (response) {\n if (!response.ok) {\n throw new Error('Network response was not ok');\n }\n return response.json();\n }).then(function () {\n wrapper.innerHTML = \"
\".concat(form.dataset.successMessage, \"
\");\n wrapper.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n })[\"catch\"](function (err) {\n return console.log(err);\n });\n };\n tridionForms && tridionForms.forEach(function (form) {\n form.addEventListener('submit', function (e) {\n e.preventDefault();\n submitForm(e.target);\n });\n var wrappers = [];\n var select = form.querySelector('select');\n select === null || select === void 0 || select.addEventListener('change', function () {\n var option = select.options[select.selectedIndex];\n if (option) {\n var linkedFieldId = option.dataset.linkedField;\n var linkedValue = option.value;\n var linkedFieldWrapper = form.querySelector(\"[data-linked-field=\\\"\".concat(linkedFieldId, \"\\\"][data-linked-value=\\\"\").concat(linkedValue, \"\\\"]\"));\n if (linkedFieldWrapper) {\n linkedFieldWrapper.classList.remove('is-hidden');\n wrappers.push(linkedFieldWrapper);\n }\n var linkedField = form.querySelector(\"#\".concat(linkedFieldId));\n if (linkedField) {\n linkedField.required = true;\n }\n wrappers.forEach(function (item) {\n if (item.dataset.linkedField !== option.dataset.linkedField || item.dataset.linkedValue !== option.value) {\n item.classList.add('is-hidden');\n var itemField = form.querySelector(\"#\".concat(item.dataset.linkedField));\n if (itemField) {\n var errors = item.querySelectorAll(\".hs-error-msgs__item\");\n itemField.required = false;\n itemField.value = '';\n itemField.classList.remove('invalid');\n errors === null || errors === void 0 || errors.forEach(function (err) {\n return err.classList.add(\"is-hidden\");\n });\n }\n }\n });\n }\n });\n initForm(form);\n });\n})();"],"names":["validate","field","alertMandatory","alertPhone","isEmpty","isPhone","isEmail","fieldOuter","closest","querySelector","value","alertEmail","RegExp","test","classList","toggle","initForm","form","fields","querySelectorAll","submitButton","forEach","placeholderText","selectText","fieldLabel","innerText","getAttribute","onblur","remove","onfocus","add","contains","onchange","setTimeout","initLabels","addEventListener","e","length","preventDefault","tridionForms","document","path","wrapper","target","formdata","FormData","params","URLSearchParams","action","opts","method","body","innerHTML","fetch","then","response","ok","json","Error","concat","dataset","successMessage","scrollIntoView","behavior","block","err","console","log","wrappers","select","linkedFieldId","linkedField","option","options","selectedIndex","linkedValue","linkedFieldWrapper","push","required","item","itemField","errors"],"mappings":"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"}