{"version":3,"file":"umbraco-forms-kruso.e872f768.js","mappings":"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","sources":["webpack://ucn/./src/components/form/form.js"],"sourcesContent":["export default class Form {\n\tconstructor(config) {\n\t\tthis.el = config.el || document.querySelectorAll(\".umbraco-forms-form\");\n\t\tthis.inputFieldsList = this.el.querySelectorAll(\".input-simple\");\n\t\tthis.inputTextarea = this.el.querySelectorAll(\".textarea-simple\");\n\t\tthis.fieldsThatNeedLabel = this.el.querySelectorAll(\"input, select\");\n\t\tthis.checkboxLists = this.el.querySelectorAll(\".checkboxlist\");\n\t\tthis.radioLists = this.el.querySelectorAll(\".radiobuttonlist\");\n\n\t\tthis.labelActiveClass = \"umbraco-forms-label--active\";\n\t\tthis.inputHasLabelClass = \"input-simple--has-label\";\n\n\t\tthis.inputErrorValidationClass = \"input-validation-error\";\n\t\tthis.errorValidationClass = \"co-validmark--not-valid\";\n\n\t\tthis.inputValidValidationClass = \"input-validation-valid\";\n\t\tthis.validValidationClass = \"co-validmark--valid\";\n\n\t\tthis.init();\n\t}\n\n\tinit() {\n\t\tthis.setAccessibility();\n\t\tthis.attachEvents();\n\t}\n\tattachEvents() {\n\t\tlet self = this;\n\n\t\t//inputs(short answer fields)\n\t\tthis.inputFieldsList.forEach((el) => {\n\t\t\tthis.setLabelText(el);\n\n\t\t\t//focus\n\t\t\tel.addEventListener(\n\t\t\t\t\"focus\",\n\t\t\t\t(e) => {\n\t\t\t\t\tself.setLabelActiveClass(e.target);\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t);\n\n\t\t\t//blur\n\t\t\tel.addEventListener(\n\t\t\t\t\"blur\",\n\t\t\t\t(e) => {\n\t\t\t\t\tself.removeLabelActiveClass(e.target);\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t);\n\n\t\t\tel.addEventListener(\n\t\t\t\t\"input\",\n\t\t\t\t(e) => {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t//error\n\t\t\t\t\t\tthis.setValidationClass(\n\t\t\t\t\t\t\te.target,\n\t\t\t\t\t\t\tthis.inputErrorValidationClass,\n\t\t\t\t\t\t\tthis.errorValidationClass\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t//valid\n\t\t\t\t\t\tthis.setValidationClass(\n\t\t\t\t\t\t\te.target,\n\t\t\t\t\t\t\tthis.inputValidValidationClass,\n\t\t\t\t\t\t\tthis.validValidationClass\n\t\t\t\t\t\t);\n\t\t\t\t\t}, 500);\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t);\n\t\t});\n\n\t\t//textarea\n\t\tthis.inputTextarea.forEach((el) => {\n\t\t\tthis.setLabelText(el);\n\n\t\t\t//focus\n\t\t\tel.addEventListener(\n\t\t\t\t\"focus\",\n\t\t\t\t(e) => {\n\t\t\t\t\tself.setLabelActiveClass(e.target);\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t);\n\n\t\t\t//blur\n\t\t\tel.addEventListener(\n\t\t\t\t\"blur\",\n\t\t\t\t(e) => {\n\t\t\t\t\tself.removeLabelActiveClass(e.target);\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t);\n\t\t});\n\t}\n\n\tsetLabelText(el) {\n\t\tlet placeholderElm = el.getAttribute(\"placeholder\");\n\t\tlet formEle = el.closest(\".umbraco-forms-field\");\n\t\tlet labelEle = formEle.querySelector(\".umbraco-forms-label\");\n\n\t\t//Set label with placeholder value if has been provided\n\t\tif (placeholderElm != null) {\n\t\t\tlabelEle.textContent = placeholderElm;\n\t\t}\n\t}\n\n\tsetValidationClass(elem, hasClass, vClass) {\n\t\tif (elem.classList.contains(hasClass)) {\n\t\t\telem.closest(\".co-validmark\").classList.add(vClass);\n\t\t} else {\n\t\t\telem.closest(\".co-validmark\").classList.remove(vClass);\n\t\t}\n\t}\n\n\tsetLabelActiveClass(el) {\n\t\tlet self = this;\n\t\tlet formEle = el.closest(\".umbraco-forms-field\");\n\t\tlet labelEle = formEle.querySelector(\".umbraco-forms-label\");\n\n\t\tif (labelEle != null) {\n\t\t\tlabelEle.classList.add(self.labelActiveClass);\n\t\t\tel.classList.add(self.inputHasLabelClass);\n\t\t}\n\t}\n\n\tremoveLabelActiveClass(el) {\n\t\tlet self = this;\n\t\tlet formEle = el.closest(\".umbraco-forms-field\");\n\t\tlet labelEle = formEle.querySelector(\".umbraco-forms-label\");\n\n\t\tif (labelEle != null && el.value == \"\") {\n\t\t\tlabelEle.classList.remove(self.labelActiveClass);\n\t\t\tel.classList.remove(self.inputHasLabelClass);\n\t\t}\n\t}\n\n\tsetAccessibility() {\n\t\t//Set aria-label on input fields if they don't have one - This is to optimize Umbraco Forms accessibility\n\t\tthis.fieldsThatNeedLabel.forEach(function (el) {\n\t\t\tvar self = this;\n\n\t\t\tif (!el.hasAttribute(\"aria-label\")) {\n\t\t\t\tlet parentElem =\n\t\t\t\t\tel.closest(\".umbraco-forms-field\") != null\n\t\t\t\t\t\t? el.closest(\".umbraco-forms-field\")\n\t\t\t\t\t\t: null;\n\t\t\t\tif (parentElem != null) {\n\t\t\t\t\tlet elemLabel =\n\t\t\t\t\t\tparentElem.querySelector(\".umbraco-forms-label\") != null\n\t\t\t\t\t\t\t? parentElem.querySelector(\".umbraco-forms-label\")\n\t\t\t\t\t\t\t: \"\";\n\n\t\t\t\t\tlet elemHelpText =\n\t\t\t\t\t\tparentElem.querySelector(\".umbraco-forms-tooltip\") !=\n\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t? parentElem.querySelector(\".umbraco-forms-tooltip\")\n\t\t\t\t\t\t\t: \"\";\n\n\t\t\t\t\t//Use help text instead of label if has been provided.\n\t\t\t\t\tif (elemHelpText != \"\") {\n\t\t\t\t\t\tel.setAttribute(\n\t\t\t\t\t\t\t\"aria-label\",\n\t\t\t\t\t\t\telemHelpText.dataset.value\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (elemLabel != \"\") {\n\t\t\t\t\t\t\tel.setAttribute(\n\t\t\t\t\t\t\t\t\"aria-label\",\n\t\t\t\t\t\t\t\telemLabel.dataset.value\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tconst getListLabel = (el, fallback) => {\n\t\t\tconst wrapper = el.closest(\".umbraco-forms-field\");\n\t\t\tlet ariaLabel = fallback;\n\t\t\tif (wrapper) {\n\t\t\t\tconst label = wrapper.querySelector(\".umbraco-forms-label\");\n\t\t\t\tif (label && label.textContent) {\n\t\t\t\t\tariaLabel = label.textContent;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn ariaLabel;\n\t\t};\n\n\t\t//Add group and label to check box lists\n\t\tthis.checkboxLists.forEach(function (el) {\n\t\t\tif (!el.hasAttribute(\"role\")) {\n\t\t\t\tel.setAttribute(\"role\", \"group\");\n\t\t\t\tel.setAttribute(\n\t\t\t\t\t\"aria-label\",\n\t\t\t\t\tgetListLabel(el, \"Check box list\")\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\t//Add group and label to radiobutton lists\n\t\tthis.radioLists.forEach(function (el) {\n\t\t\tif (!el.hasAttribute(\"role\")) {\n\t\t\t\tel.setAttribute(\"role\", \"radiogroup\");\n\n\t\t\t\tel.setAttribute(\n\t\t\t\t\t\"aria-label\",\n\t\t\t\t\tgetListLabel(el, \"Radio button list\")\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n}\n"],"names":["Form","config","this","el","document","querySelectorAll","inputFieldsList","inputTextarea","fieldsThatNeedLabel","checkboxLists","radioLists","labelActiveClass","inputHasLabelClass","inputErrorValidationClass","errorValidationClass","inputValidValidationClass","validValidationClass","init","setAccessibility","attachEvents","self","forEach","setLabelText","addEventListener","e","setLabelActiveClass","target","removeLabelActiveClass","setTimeout","setValidationClass","placeholderElm","getAttribute","labelEle","closest","querySelector","textContent","elem","hasClass","vClass","classList","contains","add","remove","value","hasAttribute","parentElem","elemLabel","elemHelpText","setAttribute","dataset","getListLabel","fallback","wrapper","ariaLabel","label"],"sourceRoot":""}