{"version":3,"file":"form.js","mappings":"AAGAA,OAAOC,iBAAiB,WAAW,SAAAC,GAM/B,IAAMC,EAAwB,SAAUD,GACpC,OAAOE,SAASC,cAAc,kBAC5BH,EAAMI,OAAOC,aAAaC,kBAC1BN,EAAMI,OAAOG,WAAWA,UAC9B,EAQMC,EAAe,SAAUR,GAAwB,IAC/CS,EAAaC,EAAcC,EADGC,IAAW,UAAH,+CAG1CF,GADAD,EAAcR,EAAsBD,IACTG,cAAc,kBACzCQ,EAAcF,EAAYN,cAAc,SACpCS,GACAF,EAAaG,UAAUC,OAAO,WAC9BH,EAAYE,UAAUC,OAAO,aAE7BJ,EAAaG,UAAUE,IAAI,WACD,IAAtBf,EAAMI,OAAOY,OACbL,EAAYE,UAAUE,IAAI,WAGtC,EAOME,EAAmB,SAAUjB,GAC/B,IAAIS,EAAaE,EAEjBA,GADAF,EAAcR,EAAsBD,IACVG,cAAc,SAEvB,MADLM,EAAYN,cAAc,kBAElCQ,EAAYE,UAAUE,IAAI,SAE1BJ,EAAYE,UAAUC,OAAO,QAErC,EAGA,GAAwB,mBAApBd,EAAMkB,KAAKC,MAAsD,gBAAzBnB,EAAMkB,KAAKE,UAA6B,CAChF,IAAIC,EAAYC,EAAiBC,EAAgBC,EAAUC,EAG3DJ,EAAanB,SAASwB,iBAAiB,sBAEvC,IAAK,IAAIC,EAAI,EAAGA,EAAIN,EAAWO,OAAQD,IACnCL,EAAkBD,EAAWM,GAAGE,WAAW,GAC3CN,EAAiBF,EAAWM,GAAGE,WAAW,GAC1CJ,EAAkBJ,EAAWM,GAAGE,WAAW,GAAG1B,cAAc,wBAE5DqB,EAAWF,EAAgBT,UAAUiB,SAAS,iBAE9CT,EAAWM,GAAGxB,cAAc,SAAS4B,YAAcR,EAAeS,UAE9DR,IACAF,EAAgBT,UAAUE,IAAI,WAC9BM,EAAWM,GAAGM,YAAYX,IAEC,SAA3BC,EAAeW,UAAwBT,GAAiE,IAA9CJ,EAAWM,GAAGxB,cAAc,SAASa,OAC/FO,EAAeV,UAAUE,IAAI,WAGjCM,EAAWM,GAAG5B,iBAAiB,WAAW,SAACC,GACvCQ,EAAaR,EACjB,IAEAqB,EAAWM,GAAG5B,iBAAiB,YAAY,SAACC,GACxCQ,EAAaR,GAAO,GACpBiB,EAAiBjB,EACrB,IACAqB,EAAWM,GAAG5B,iBAAiB,SAAS,SAACC,GACrCiB,EAAiBjB,EACrB,IAEAqB,EAAWM,GAAG5B,iBAAiB,kBAAkB,SAACC,GAC9C,IAAImC,EAAsBC,EAC1BA,EAAsBlC,SAASwB,iBAAiB,wBAChD,IAAK,IAAIW,EAAI,EAAGA,EAAID,EAAoBR,OAAQS,IAC5CF,EAAaC,EAAoBC,GAAGhC,aAAawB,WAAW,GAEtC,IADXO,EAAoBC,GAClBrB,OACTmB,EAAWtB,UAAUC,OAAO,UAIxC,GAER,CAGwB,mBAApBd,EAAMkB,KAAKC,MAAsD,oBAAzBnB,EAAMkB,KAAKE,YACnDlB,SAASoC,eAAe,gBAAgBC,MAAMC,QAAU,OAEhE","sources":["webpack://certification/./src/form.js"],"sourcesContent":["/**\r\n * script for controling form hint and error message functionality\r\n */\r\nwindow.addEventListener('message', event => {\r\n /**\r\n * Returns the parent node of the label, input, and legend\r\n * \r\n * @param {any} event\r\n */\r\n const getParentNodeChildren = function (event) {\r\n return document.querySelector('form-columns-1')\r\n ? event.target.offsetParent.firstElementChild\r\n : event.target.parentNode.parentNode;\r\n }\r\n\r\n /**\r\n * function to toggle the hidden class of the legend and label from the targeted input\r\n * \r\n * @param {any} event\r\n * @param {boolean} isHidden\r\n */\r\n const toggleHidden = function (event, isHidden = true) {\r\n let eventfields, targetLegend, targetLabel;\r\n eventfields = getParentNodeChildren(event);\r\n targetLegend = eventfields.querySelector('.hs-field-desc');\r\n targetLabel = eventfields.querySelector('label');\r\n if (isHidden) {\r\n targetLegend.classList.remove('!hidden');\r\n targetLabel.classList.remove('!hidden');\r\n } else {\r\n targetLegend.classList.add('!hidden');\r\n if (event.target.value == '') {\r\n targetLabel.classList.add('!hidden');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Update the field validation styles\r\n * \r\n * @param {any} event\r\n */\r\n const updateValidation = function (event) {\r\n let eventfields, targetLabel, errorNode;\r\n eventfields = getParentNodeChildren(event);\r\n targetLabel = eventfields.querySelector('label');\r\n errorNode = eventfields.querySelector('.hs-error-msgs');\r\n if (errorNode != null) {\r\n targetLabel.classList.add('error');\r\n } else {\r\n targetLabel.classList.remove('error');\r\n }\r\n }\r\n\r\n // Makes sure the form has been loaded before scripts are run\r\n if (event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormReady') {\r\n let textFields, legendFieldNode, labelFieldNode, isLegend, isAutoCompleted;\r\n \r\n // Get all fields of type text from the hubspot form\r\n textFields = document.querySelectorAll(\".hs-fieldtype-text\");\r\n // Iterate over the fields and get legend element\r\n for (let i = 0; i < textFields.length; i++) {\r\n legendFieldNode = textFields[i].childNodes[1];\r\n labelFieldNode = textFields[i].childNodes[0];\r\n isAutoCompleted = textFields[i].childNodes[2].querySelector('input[autocompleted]');\r\n // Check that the current child is the legend\r\n isLegend = legendFieldNode.classList.contains('hs-field-desc');\r\n // Dynamically add a placeholder\r\n textFields[i].querySelector('input').placeholder = labelFieldNode.innerText;\r\n //Add hidden class and move the legend / hint to bottom of the field as per design\r\n if (isLegend) {\r\n legendFieldNode.classList.add('!hidden');\r\n textFields[i].appendChild(legendFieldNode);\r\n }\r\n if (labelFieldNode.nodeName == 'LABEL' && !isAutoCompleted && textFields[i].querySelector('input').value == '') {\r\n labelFieldNode.classList.add('!hidden');\r\n }\r\n //Remove hidden class from target legend when element is focused\r\n textFields[i].addEventListener('focusin', (event) => {\r\n toggleHidden(event);\r\n });\r\n //Add hidden class to target legend when element is unfocused\r\n textFields[i].addEventListener('focusout', (event) => {\r\n toggleHidden(event, false);\r\n updateValidation(event);\r\n });\r\n textFields[i].addEventListener('input', (event) => {\r\n updateValidation(event);\r\n });\r\n // Unhide the label if the browser autocomplete has fired\r\n textFields[i].addEventListener('onautocomplete', (event) => {\r\n let labelField, inputDiv, autocompletedFields;\r\n autocompletedFields = document.querySelectorAll('input[autocompleted]');\r\n for (let t = 0; t < autocompletedFields.length; t++) {\r\n labelField = autocompletedFields[t].offsetParent.childNodes[0];\r\n inputDiv = autocompletedFields[t];\r\n if (inputDiv.value != '') {\r\n labelField.classList.remove('!hidden');\r\n }\r\n }\r\n \r\n });\r\n }\r\n }\r\n\r\n // Remove privacy text after form is submitted\r\n if (event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmitted') {\r\n document.getElementById('privacy-text').style.display = 'none';\r\n }\r\n});\r\n"],"names":["window","addEventListener","event","getParentNodeChildren","document","querySelector","target","offsetParent","firstElementChild","parentNode","toggleHidden","eventfields","targetLegend","targetLabel","isHidden","classList","remove","add","value","updateValidation","data","type","eventName","textFields","legendFieldNode","labelFieldNode","isLegend","isAutoCompleted","querySelectorAll","i","length","childNodes","contains","placeholder","innerText","appendChild","nodeName","labelField","autocompletedFields","t","getElementById","style","display"],"sourceRoot":""}