{"version":3,"file":"setBlogSubscriptionCookie-validateCheckboxFields.chunk.47f4f7099b97ff676dfe.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":""}