{"version":3,"file":"forms-formUISliderInit.chunk.c6dbb723bf92fb75db18.js","mappings":"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","sources":["webpack:///./html/wp-content/themes/ls/src/js/main/components/forms/formUISliderInit.js","webpack:///./html/wp-content/themes/ls/src/js/main/components/forms/ui/formUISlider.js"],"sourcesContent":["import FormUISlider from 'root/main/components/forms/ui/formUISlider';\n\nconst FormUISliderInit = els => {\n const formEls = els;\n if (formEls.length > 0) {\n formEls.forEach(formEl => {\n if (formEl) {\n const formUISlider = new FormUISlider(formEl);\n formUISlider.loadFormSpecs();\n }\n });\n }\n};\n\nexport { FormUISliderInit as default };\n","import Swiper from 'swiper';\nimport { Navigation, A11y } from 'swiper/modules';\nimport FormUI from './formUI';\n\nimport { loadCaptcha } from 'root/core/tracking/recaptcha/recaptcha';\nimport { initPhoneLib } from 'root/main/components/forms/phoneInit';\nimport { LoggingHandler } from 'root/utils/errorReporting/LoggingHandler';\nimport { handleDomainPrefixField, handleZipCodeField } from 'root/helpers/formHelpers';\nimport { progressIndicator } from 'root/main/components/progressIndicator';\n\nSwiper.use([Navigation, A11y]);\n\nexport default class FormUISlider extends FormUI {\n constructor(el) {\n super(el);\n this.slider = this.form.querySelector('[data-form-slider]');\n this.nextButtonEl = this.form.querySelector('[data-form-slider-next-button]');\n this.prevButtonEl = this.form.querySelector('.js-back-btn');\n this.firstPanelDiv = this.form.querySelector('[data-form-panel=\"1\"]');\n this.secondPanelDiv = this.form.querySelector('[data-form-panel=\"2\"]');\n this.balanceTwoStepFormPanels();\n this.firstPanelInputs = Array.from(\n this.firstPanelDiv?.querySelectorAll(this.inputSelector)\n );\n this.timelineContainer = this.form.querySelector(\n '[data-leadform-step=progress-indicator]'\n );\n }\n\n fieldsArrayWithExceptionsExcluded(fields) {\n fields = fields ?? [];\n const exceptionArray = ['general_opt_in'];\n return Array.from(fields).filter(\n field => !exceptionArray.includes(field.firstElementChild.name)\n );\n }\n\n balanceTwoStepFormPanels() {\n const allFormFields = Array.from(\n this.form.querySelectorAll(\n '[data-leadform-steps=\"main-fields-wrapper\"] [data-formfield=ls-form-field]'\n )\n );\n const adjustedFormFieldsCount = allFormFields.filter(field => {\n return !['agnostic_business_type', 'postal_code'].includes(\n field.querySelector('input,select').name\n );\n }).length;\n let adjustedMappedFormFieldsIndexModifier = 0;\n const assignedFormFields = allFormFields.map((field, index) => {\n if (\n ['agnostic_business_type', 'postal_code'].includes(\n field.querySelector('input,select').name\n )\n ) {\n adjustedMappedFormFieldsIndexModifier++;\n }\n return {\n field: field,\n step:\n index - adjustedMappedFormFieldsIndexModifier <\n adjustedFormFieldsCount / 2\n ? 'first_step'\n : 'second_step',\n };\n });\n const firstStepMainFieldsWrapper = this.firstPanelDiv?.querySelector(\n '[data-leadform-steps=\"main-fields-wrapper\"]'\n );\n const secondStepMainFieldsWrapper = this.secondPanelDiv?.querySelector(\n '[data-leadform-steps=\"main-fields-wrapper\"]'\n );\n if (firstStepMainFieldsWrapper && secondStepMainFieldsWrapper) {\n assignedFormFields.forEach(({ field, step }) => {\n if (step === 'first_step') {\n firstStepMainFieldsWrapper.appendChild(field);\n } else {\n secondStepMainFieldsWrapper.appendChild(field);\n }\n });\n }\n this.firstPanelDiv?.classList.remove('tw-hidden');\n this.secondPanelDiv?.classList.remove('tw-hidden');\n }\n\n isFirstSlideValid() {\n const firstStepFields = this.getPanelFields(this.firstPanelDiv);\n\n return this.fieldsArrayWithExceptionsExcluded(firstStepFields).every(field => {\n if (field.firstElementChild.type === 'checkbox') {\n if (field.firstElementChild.required) {\n return field.firstElementChild.checked;\n } else {\n return true;\n }\n }\n return field.querySelector(this.inputSelector)?.checkValidity();\n });\n }\n\n advanceToNextSlide(e, swiper) {\n const secondStepFields = this.getPanelFields(this.secondPanelDiv);\n\n this.formValidationOnSubmit(e, this.firstPanelInputs);\n if (this.isFirstSlideValid()) {\n swiper.slideNext();\n\n if (this.timelineContainer) {\n progressIndicator(\n this.timelineContainer,\n 1\n ).syncProgressIndicatorToStep();\n }\n\n secondStepFields[0]?.focus();\n }\n }\n\n reverseToPreviousSlide(swiper) {\n const firstStepFields = this.getPanelFields(this.firstPanelDiv);\n\n swiper.slidePrev();\n if (this.timelineContainer) {\n progressIndicator(this.timelineContainer, 0).syncProgressIndicatorToStep();\n }\n firstStepFields[0]?.focus();\n }\n\n makeInactiveSlidesInert(swiper) {\n const allSlides = swiper.slides;\n allSlides.forEach(slide => {\n const slideIsActive = slide.classList.contains('swiper-slide-active');\n if (slideIsActive) {\n slide.removeAttribute('inert');\n } else {\n slide.setAttribute('inert', '');\n }\n });\n }\n\n getPanelFields(panel) {\n return panel?.querySelectorAll('[data-formfield=ls-form-field]');\n }\n\n initSwiper() {\n new Swiper(this.slider, {\n slidesPerView: 1,\n centeredSlides: true,\n simulateTouch: false,\n spaceBetween: 24,\n a11y: {\n enabled: true,\n scrollOnFocus: false,\n },\n on: {\n init: swiper => {\n if (this.nextButtonEl) {\n this.nextButtonEl.addEventListener('click', e => {\n this.advanceToNextSlide(e, swiper);\n });\n this.nextButtonEl.addEventListener('keydown', e => {\n if (\n e.code === 'Tab' &&\n !e.shiftKey &&\n this.isFirstSlideValid()\n ) {\n this.advanceToNextSlide(e, swiper);\n }\n });\n }\n\n if (this.prevButtonEl) {\n this.prevButtonEl.addEventListener('click', () => {\n this.reverseToPreviousSlide(swiper);\n });\n }\n const secondStepFields = this.getPanelFields(this.secondPanelDiv);\n if (secondStepFields[0]) {\n secondStepFields[0].addEventListener('keydown', e => {\n if (e.code === 'Tab' && e.shiftKey) {\n this.reverseToPreviousSlide(swiper);\n }\n });\n }\n\n this.makeInactiveSlidesInert(swiper);\n },\n slideChangeTransitionEnd: swiper => {\n this.makeInactiveSlidesInert(swiper);\n },\n },\n });\n }\n\n loadFormSpecs() {\n if (this.slider) {\n this.balanceTwoStepFormPanels();\n this.inputs = Array.prototype.slice.call(\n this.form.querySelectorAll(this.inputSelector)\n );\n if (this.recaptchaContainer) {\n loadCaptcha(this.form, 'formload');\n } else {\n this.form.classList.remove(this.hiddenFormClass);\n }\n this.initFieldEvents(this.inputs);\n this.autofillBusinessTypeWithCookieValue();\n this.autofillFormsWithLocalStorageData(this.inputs); // this should always be called BEFORE the phoneLibInit function\n /*\n * initPhoneLib() should always be called AFTER the autofill function. Because it affects the way that the\n * country gets pre-selected in the phone dropdown. If initPhoneLib() gets called before the autofill, the\n * selected country will be: either the country that the user is at OR the first country in the dropdown.\n * However, those 2 options might not correspond with the phone number saved in the local storage.\n * */\n try {\n [this.phoneLibInstance, this.phoneField] = initPhoneLib(this.form);\n } catch (e) {\n initPhoneLib(this.form).destroy();\n LoggingHandler().logError(new Error(e), {\n searchTerm: 'phone-library-init-error',\n tags: ['forms', 'ui'],\n fileName: 'formUI.js',\n additionalData: {\n url: window.location.href,\n },\n });\n }\n this.raisePreFilledInputLabels();\n this.handleGooglePlacesFieldAutocomplete(\n 'address',\n this.setDataAttributeForAddress\n );\n this.handleGooglePlacesFieldAutocomplete(\n 'zip',\n this.setDataAttributeForZipCode\n );\n handleDomainPrefixField({\n form: this.form,\n }).toggleDisplay();\n handleZipCodeField(this.form);\n\n this.initSwiper();\n }\n }\n}\n"],"names":["FormUISliderInit","els","formEls","length","forEach","formEl","FormUISlider","loadFormSpecs","Swiper","Navigation","A11y","_FormUI","el","_this$firstPanelDiv","_this","_classCallCheck","slider","form","querySelector","nextButtonEl","prevButtonEl","firstPanelDiv","secondPanelDiv","balanceTwoStepFormPanels","firstPanelInputs","Array","from","querySelectorAll","inputSelector","timelineContainer","_inherits","_createClass","key","value","fields","_fields","exceptionArray","filter","field","includes","firstElementChild","name","_this$firstPanelDiv2","_this$secondPanelDiv","_this$firstPanelDiv3","_this$secondPanelDiv2","allFormFields","this","adjustedFormFieldsCount","adjustedMappedFormFieldsIndexModifier","assignedFormFields","map","index","step","firstStepMainFieldsWrapper","secondStepMainFieldsWrapper","_ref","appendChild","classList","remove","_this2","firstStepFields","getPanelFields","fieldsArrayWithExceptionsExcluded","every","_field$querySelector","type","required","checked","checkValidity","e","swiper","_secondStepFields$","secondStepFields","formValidationOnSubmit","isFirstSlideValid","slideNext","progressIndicator","syncProgressIndicatorToStep","focus","_firstStepFields$","slidePrev","slides","slide","contains","removeAttribute","setAttribute","panel","_this3","slidesPerView","centeredSlides","simulateTouch","spaceBetween","a11y","enabled","scrollOnFocus","on","init","addEventListener","advanceToNextSlide","code","shiftKey","reverseToPreviousSlide","makeInactiveSlidesInert","slideChangeTransitionEnd","inputs","prototype","slice","call","recaptchaContainer","loadCaptcha","hiddenFormClass","initFieldEvents","autofillBusinessTypeWithCookieValue","autofillFormsWithLocalStorageData","_initPhoneLib","initPhoneLib","_initPhoneLib2","_slicedToArray","phoneLibInstance","phoneField","destroy","LoggingHandler","logError","Error","searchTerm","tags","fileName","additionalData","url","window","location","href","raisePreFilledInputLabels","handleGooglePlacesFieldAutocomplete","setDataAttributeForAddress","setDataAttributeForZipCode","handleDomainPrefixField","toggleDisplay","handleZipCodeField","initSwiper","FormUI"],"sourceRoot":""}