{"version":3,"sources":["js-ems-form--basic.js"],"names":["jsSelectorDynamicBtn","elForm","document","querySelector","initAddBtn","masterContainer","dynamicCount","addBtn","elContainerBtn","checkLimitByCount","this","parentElement","childElementCount","classList","add","remove","addEventListener","e","clonedContainer","cloneNode","clonedBtn","removeChild","setAttribute","innerHTML","initClonedRemoveBtn","count","clonedInput","nameId","id","value","initClonedInput","appendChild","dynamicContainers","querySelectorAll","i","length","initDynamicContentListeners","elTotal","elDonation","nodesInputLineItems","radioLineItem","getRadioVal","handlerRadioValClick","checked","setRadioLineItemVal","calculateTotal","lineItem","element","parseFloat","getAttribute","setRadioVal","calcTotal","toFixed","isNaN","target","initTotalCalculator"],"mappings":"AAAA,cACA,WACE,IAEIA,EAAuB,6BAKvBC,EAASC,SAASC,cAPD,2BASrB,SAASC,EAAWC,GA6ClBA,EAAgBC,aAAe,EAC/B,IArBmCC,EAqB/BC,EAAiBH,EAAgBF,cAAcH,GAC9CQ,IACLH,EAAgBI,mBAvBmBF,EAuB2BC,EArBrD,WADK,GAEEE,KAAKC,cAAcC,kBAE7BL,EAAOM,UAAUC,IAAI,mBAErBP,EAAOM,UAAUE,OAAO,qBAiB9BP,EAAeQ,iBAAiB,QAZhC,SAAqCC,GACnC,IAAIC,EAAkBb,EAAgBc,WAAU,IArClD,SAA6BD,GAC3B,IAAIE,EAAYF,EAAgBf,cAAcH,GACzCoB,IAOLA,EAAUJ,iBAAiB,QAL3B,SAAqCC,GACnCZ,EAAgBM,cAAcU,YAAYH,GAC1Cb,EAAgBI,sBAIlBW,EAAUE,aAAa,aAAc,2BACrCF,EAAUP,UAAUC,IAAI,gCACxBM,EAAUG,UAAY,IA0BtBC,CAAoBN,GAvBtB,SAAyBA,EAAiBO,GACxC,IAAIC,EAAcR,EAAgBf,cAAc,SAChD,GAAKuB,EAAL,CAEA,IAAIC,EAASD,EAAYE,GAAKH,EAC9BC,EAAYJ,aAAa,KAAMK,GAC/BD,EAAYG,MAAQ,IAkBpBC,CAAgBZ,IAAmBb,EAAgBC,cACnDD,EAAgBM,cAAcoB,YAAYb,GAC1Cb,EAAgBI,wBAUpB,WAEE,IADA,IAAIuB,EAAoB/B,EAAOgC,iBA7DA,oCA8DtBC,EAAI,EAAGA,EAAIF,EAAkBG,OAAQD,IAC5C9B,EAAW4B,EAAkBE,IAIjCE,GAGA,WACE,IAAIC,EAAUpC,EAAOE,cArEI,wBAsErBmC,EAAarC,EAAOE,cArEI,2BAsExBoC,EAAsBtC,EAAOgC,iBArEJ,4BAuE7B,GAAKI,GAAYC,KAAcC,EAAsB,GAArD,CAwCA,IAtCA,IA8B2BC,EA9BvBC,EAAc,WAAwB,OAAO,GAsCxCP,EAAI,EAAGA,EAAIK,EAAoBJ,OAAQD,KARrBM,EASPD,EAAoBL,IARxBlB,iBAAiB,QAAS0B,IACV,IAA1BF,EAAcG,UAChBC,EAAoBJ,GACpBK,KAQJP,EAAWtB,iBAAiB,QAhB5B,SAA+BC,GAC7B4B,MAfF,SAASD,EAAoBE,GAC3BL,EAPF,SAAqBM,GACnB,OAAO,WACL,OAAOC,WAAWD,EAAQE,aAAa,gBAK3BC,CAAYJ,GAG5B,SAASD,IACP,IAAIM,GAAaV,KAdVO,WAAWV,EAAWT,QAAU,IAcYuB,QAAQ,GAC3Df,EAAQR,MAAQwB,MAAMF,GAAa,QAAUA,EAG/C,SAAST,EAAqBzB,GAC5B2B,EAAoB3B,EAAEqC,QACtBT,KAsBJU,GA5HF","file":"js-ems-form--basic.js","sourcesContent":["'use strict';\n(function () {\n var jsSelectorForm = '[data-js=\"js-ems-form\"]';\n var jsSelectorDynamicContainer = '[data-js=\"js-dynamic-container\"]';\n var jsSelectorDynamicBtn = '[data-js=\"js-dynamic-btn\"]';\n var jsSelectorTotalInput = '[data-js=\"js-total\"]';\n var jsSelectorDonationInput = '[data-js=\"js-donation\"]';\n var jsSelectorRadioLineItems = '[data-js=\"js-line-item\"]';\n\n var elForm = document.querySelector(jsSelectorForm);\n\n function initAddBtn(masterContainer) {\n function initClonedRemoveBtn(clonedContainer) {\n var clonedBtn = clonedContainer.querySelector(jsSelectorDynamicBtn);\n if (!clonedBtn) {return;}\n\n function handlerRemoveInputContainer(e) {\n masterContainer.parentElement.removeChild(clonedContainer);\n masterContainer.checkLimitByCount();\n }\n\n clonedBtn.addEventListener('click', handlerRemoveInputContainer);\n clonedBtn.setAttribute('aria-label', 'remove household member');\n clonedBtn.classList.add('o-fieldset__input-btn--minus');\n clonedBtn.innerHTML = '';\n }\n\n function initClonedInput(clonedContainer, count) {\n var clonedInput = clonedContainer.querySelector('input');\n if (!clonedInput) {return;}\n\n var nameId = clonedInput.id + count;\n clonedInput.setAttribute('id', nameId);\n clonedInput.value = '';\n }\n\n function initLimitAddtionalByCount(addBtn) {\n var limit = 10;\n return function limitAdditionalByCount() {\n var count = this.parentElement.childElementCount;\n if (count > limit) {\n addBtn.classList.add('u-display--none');\n } else {\n addBtn.classList.remove('u-display--none');\n }\n };\n }\n\n function handlerAddNewInputContainer(e) {\n var clonedContainer = masterContainer.cloneNode(true);\n initClonedRemoveBtn(clonedContainer);\n initClonedInput(clonedContainer, ++masterContainer.dynamicCount);\n masterContainer.parentElement.appendChild(clonedContainer);\n masterContainer.checkLimitByCount();\n }\n\n masterContainer.dynamicCount = 0;\n var elContainerBtn = masterContainer.querySelector(jsSelectorDynamicBtn);\n if (!elContainerBtn) {return;}\n masterContainer.checkLimitByCount = initLimitAddtionalByCount(elContainerBtn);\n elContainerBtn.addEventListener('click', handlerAddNewInputContainer);\n }\n\n function initDynamicContentListeners() {\n var dynamicContainers = elForm.querySelectorAll(jsSelectorDynamicContainer);\n for (var i = 0; i < dynamicContainers.length; i++) {\n initAddBtn(dynamicContainers[i]);\n }\n }\n //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n initDynamicContentListeners();\n //----------------------------------------------------------------------\n //______________________________________________________________________\n function initTotalCalculator() {\n var elTotal = elForm.querySelector(jsSelectorTotalInput);\n var elDonation = elForm.querySelector(jsSelectorDonationInput);\n var nodesInputLineItems = elForm.querySelectorAll(jsSelectorRadioLineItems);\n\n if (!elTotal || !elDonation || nodesInputLineItems < 1) return;\n\n var getRadioVal = function getRadioVal() {return 0;};\n\n function getDonationVal() {\n return parseFloat(elDonation.value) || 0;\n }\n\n function setRadioVal(element) {\n return function () {\n return parseFloat(element.getAttribute('data-value'));\n };\n }\n\n function setRadioLineItemVal(lineItem) {\n getRadioVal = setRadioVal(lineItem);\n }\n\n function calculateTotal() {\n var calcTotal = (getRadioVal() + getDonationVal()).toFixed(2);\n elTotal.value = isNaN(calcTotal) ? 'error' : calcTotal;\n }\n\n function handlerRadioValClick(e) {\n setRadioLineItemVal(e.target);\n calculateTotal();\n }\n\n function handlerDonationChange(e) {\n calculateTotal();\n }\n\n function initRadioLineItem(radioLineItem) {\n radioLineItem.addEventListener('click', handlerRadioValClick);\n if (radioLineItem.checked === true) {\n setRadioLineItemVal(radioLineItem);\n calculateTotal();\n }\n }\n\n for (var i = 0; i < nodesInputLineItems.length; i++) {\n initRadioLineItem(nodesInputLineItems[i]);\n }\n\n elDonation.addEventListener('input', handlerDonationChange);\n }\n\n initTotalCalculator();\n})();"]}