{"version":3,"file":"setBlogSubscriptionCookie-validateCheckboxFields.chunk.a88e9d66e0681d993e93.js","mappings":"kIAAe,SAASA,EAAuBC,GAC3C,OAAQ,WAAY,IAAAC,EAAA,KAyDVC,EAAiC,SAACC,EAAkBC,GACtD,GAAIA,GAA4C,iBAArBD,EAA+B,CACtDC,EAAaC,UAAUF,GAAkB,0BACzC,IAAMG,EAAiBF,EAAaG,cAAcC,cAC9C,+BAEAF,GACAA,EAAeD,UAAUF,GAAkB,0BACnD,CACJ,EAOMM,EAA0B,SAACC,EAAYN,EAAcO,IA3BhC,SAAAD,GACvB,OAAOE,MAAMC,UAAUC,MAClBC,KAAKL,GACLM,MAAK,SAAAC,GAAQ,OAAIA,EAASC,OAAO,GAC1C,EAwBSC,CAAmBT,KACpBC,EAAES,iBACFlB,EAA+B,MAAOE,GAE9C,EAiDA,MAAO,CACHiB,KAfS,WACTrB,EAAkBsB,SAAQ,SAAAC,GACtB,IAAMb,EAAaa,EAAKC,iBAAiB,wBACnCpB,EAAemB,EAAKf,cACtB,gDAGAE,GAAcA,EAAWe,OAAS,IApCP,SAACF,EAAMb,EAAYN,GACtD,IAAMsB,EAAmBH,EAAKf,cAAc,uBAExCkB,GACAA,EAAiBC,iBACb,QACAlB,EAAwBmB,KAAK3B,EAAMS,EAAYN,GAG3D,CA4BYyB,CAA+BN,EAAMb,EAAYN,GAtBzB,SAACmB,EAAMb,EAAYN,GACnD,IAAM0B,EAAiB,GACvBpB,EAAWY,SAAQ,SAAAL,GACfA,EAASU,iBAAiB,UAAU,WAChCzB,EAA+B,SAAUE,GA1EtB,SAACmB,EAAMN,EAAUa,GACxCb,EAASC,QAETY,EAAeC,KAAKd,EAASe,OAbS,SAACF,EAAgBb,GACvDa,EAAeG,SAAShB,EAASe,QACjCF,EAAeI,OAAOJ,EAAeK,QAAQlB,EAASe,OAAQ,EAEtE,CAYQI,CAAsCN,EAAgBb,GA7B7B,SAACM,EAAMO,GACpC,IAAMO,EAAmBd,EAAKf,cAAc,4BACxC6B,GAA8C,WAA1BA,EAAiBC,MACrCD,EAAiBE,aAAa,QAAST,EAE/C,CA4BIU,CAAyBjB,EAAMO,EACnC,CAgEYW,CAAuBlB,EAAMN,EAAUa,EAC3C,GACJ,GACJ,CAeYY,CAA4BnB,EAAMb,EAAYN,GAEtD,GACJ,EAKJ,CAlIQ,GAkIHiB,MACT,C","sources":["webpack:///./html/wp-content/themes/ls/src/js/main/components/setBlogSubscriptionCookie/validateCheckboxFields.js"],"sourcesContent":["export default function validateCheckboxFields(subscriptionForms) {\n return (function () {\n /*\n * Sets the blog product input value with the blogProductArr\n * @return {void}\n * @param {blogProductArr}\n * */\n const setBlogProductInputValue = (form, blogProductArr) => {\n const blogProductField = form.querySelector('input[name=blog_product]');\n if (blogProductField && blogProductField.type === 'hidden') {\n blogProductField.setAttribute('value', blogProductArr);\n }\n };\n\n /*\n * Handles the current unchecked checkbox: if the value of the unchecked checkbox\n * is in the blogProductArr, it removes that value from the array\n * @return {void}\n * @param {blogProductArr, checkbox}\n * */\n const removeUncheckedCheckboxValueFromArray = (blogProductArr, checkbox) => {\n if (blogProductArr.includes(checkbox.value)) {\n blogProductArr.splice(blogProductArr.indexOf(checkbox.value), 1);\n }\n };\n\n /*\n * Update blog_product field with currently selected option(s)\n * @return {void}\n * */\n const updateBlogProductInput = (form, checkbox, blogProductArr) => {\n if (checkbox.checked) {\n // add new checked checkbox value to blogProductArr\n blogProductArr.push(checkbox.value);\n } else {\n // remove unchecked checkbox value from blogProductArr\n removeUncheckedCheckboxValueFromArray(blogProductArr, checkbox);\n }\n\n // update blog_product hidden field\n setBlogProductInputValue(form, blogProductArr);\n };\n\n /*\n * Returns true if at least one checkbox has been checked\n * @return {bool}\n * */\n const checkedOneCheckbox = checkboxes => {\n return Array.prototype.slice\n .call(checkboxes)\n .some(checkbox => checkbox.checked);\n };\n\n /*\n * Adds or removes the error message display class depending on passed argument\n * @return {void}\n * @param {addOrRemoveClass}\n * */\n const toggleErrorMessageDisplayClass = (addOrRemoveClass, errorElement) => {\n if (errorElement && typeof addOrRemoveClass === 'string') {\n errorElement.classList[addOrRemoveClass]('js-label-message-error');\n const checkboxInputs = errorElement.parentElement.querySelector(\n '[data-form=checkbox-inputs]'\n );\n if (checkboxInputs)\n checkboxInputs.classList[addOrRemoveClass]('js-checkbox-group-error');\n }\n };\n\n /*\n * Prevents default button click behaviour if no checkbox has been checked, then shows the error message\n * @return {void}\n * @param {e}\n * */\n const buttonClickEventHandler = (checkboxes, errorElement, e) => {\n if (!checkedOneCheckbox(checkboxes)) {\n e.preventDefault();\n toggleErrorMessageDisplayClass('add', errorElement);\n }\n };\n\n /*\n * Listens for the submit button click event\n * @return {void}\n * */\n const submitButtonClickEventListener = (form, checkboxes, errorElement) => {\n const formSubmitButton = form.querySelector('button[type=submit]');\n\n if (formSubmitButton) {\n formSubmitButton.addEventListener(\n 'click',\n buttonClickEventHandler.bind(this, checkboxes, errorElement)\n );\n }\n };\n\n /*\n * Listens for the checkbox input change event\n * @return {void}\n * */\n const checkboxInputChangeListener = (form, checkboxes, errorElement) => {\n const blogProductArr = [];\n checkboxes.forEach(checkbox => {\n checkbox.addEventListener('change', function () {\n toggleErrorMessageDisplayClass('remove', errorElement);\n updateBlogProductInput(form, checkbox, blogProductArr);\n });\n });\n };\n\n /*\n * Init checkbox listeners\n * @return {void}\n * */\n const init = () => {\n subscriptionForms.forEach(form => {\n const checkboxes = form.querySelectorAll('input[type=checkbox]');\n const errorElement = form.querySelector(\n '[data-form=checkbox-group] [data-form=error]'\n );\n\n if (checkboxes && checkboxes.length > 0) {\n submitButtonClickEventListener(form, checkboxes, errorElement);\n checkboxInputChangeListener(form, checkboxes, errorElement);\n }\n });\n };\n\n return {\n init,\n };\n })().init();\n}\n"],"names":["validateCheckboxFields","subscriptionForms","_this","toggleErrorMessageDisplayClass","addOrRemoveClass","errorElement","classList","checkboxInputs","parentElement","querySelector","buttonClickEventHandler","checkboxes","e","Array","prototype","slice","call","some","checkbox","checked","checkedOneCheckbox","preventDefault","init","forEach","form","querySelectorAll","length","formSubmitButton","addEventListener","bind","submitButtonClickEventListener","blogProductArr","push","value","includes","splice","indexOf","removeUncheckedCheckboxValueFromArray","blogProductField","type","setAttribute","setBlogProductInputValue","updateBlogProductInput","checkboxInputChangeListener"],"sourceRoot":""}