{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/helpers/times.js","webpack://@verndale/toolkit/./src/js/modules/general-form-row.js","webpack://@verndale/toolkit/./src/js/modules/step-form.js","webpack://@verndale/toolkit/./src/js/modules/form.js"],"names":["getTimesConfig","$datePicker","isToday","today","allOptions","parsedOptions","minDatePicker","hour","minutes","item","index","tomorrow","buildOptionsHtml","items","GeneralForm","dom","debounce","StepForm","data","res","Copy","Heading","Type","Answers","RequiredStep","Subheading","firstRender","el","SkipNextIfEmpty","inputId","uuidv4","singleString","headingWrapper","stringCurrent","stringTotal","fullString","hiddenStep","choice","choiceId","obj","subStep","currentStep","input","radios","checkboxes","checkedRadio","x","checkedBox","e","filledSteps","formSteps","formResults","answerList","type","checkboxQuestion","answerObj","radioVal","textVal","postHeaders","trackEvent","events","selectors","formatStr","response","result","error","activeSection","sectionValues","total","proportion","currentHeading","currentText","totalText","percentage","Module","Component","isDropdown","outputsize","date","DATE_FORMAT_US","value","createDate","matches","$dateInput","Pristine","shouldValidateDatepicker","shouldValidateOthers","urlParams","param","cookie","Cookies","key","bool","$timesSelect","selectedTime","seletedDate","todayFormated","optionsHtml","errorMessage","option","isValid","zipCode","nearbyCommunitiesValue","contextCommunity","headers","topics","selectedTopic","token","serialize","r","url","payload","cookieValue","cookieData","bodyGeoLocation","body","event","Boxever","_boxever_settings","eventToSend","msg","formData"],"mappings":"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","file":"Areas/SunriseSeniorLiving/Scripts/5553.94fecfe84e30b03f7c34.bundle.js","sourcesContent":["export const getTimesConfig = ($datePicker, isToday, today) => {\n const allOptions = [\n { label: 'Select...', value: '' },\n { label: '9:00 am - 10:00 am ', value: '9:00am-10:00am' },\n { label: '10:00 am - 11:00 am ', value: '10:00am-11:00am' },\n { label: '11:00 am - 12:00 pm', value: '11:00am-12:00pm' },\n { label: '12:00 pm - 1:00 pm', value: '12:00pm-1:00pm' },\n { label: '1:00 pm - 2:00 pm', value: '1:00pm-2:00pm' },\n { label: '2:00 pm - 3:00 pm', value: '2:00pm-3:00pm' },\n { label: '3:00 pm - 4:00 pm', value: '3:00pm-4:00pm' },\n { label: '4:00 pm - 5:00 pm', value: '4:00pm-5:00pm' },\n { label: '5:00 pm - 6:00 pm', value: '5:00pm-6:00pm' }\n ];\n\n let parsedOptions = allOptions,\n minDatePicker = new Date()\n .toLocaleString('sv', {\n timeZone: 'America/New_York',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n })\n .split(' ')[0]\n .split('/')\n .reverse()\n .join('-');\n\n const hour = Number(\n new Date()\n .toLocaleTimeString('en-US', {\n timeZone: 'America/New_York',\n hour: '2-digit',\n hour12: false\n })\n .split(' ')[0]\n );\n const minutes = Number(\n new Date().toLocaleTimeString('en-US', {\n timeZone: 'America/New_York',\n minute: '2-digit'\n })\n );\n\n if (\n ((hour === 6 && minutes >= 1) || (hour === 7 && minutes === 0)) &&\n isToday\n ) {\n parsedOptions = allOptions.filter((item, index) => {\n if (index === 1) return false;\n return true;\n });\n } else if (\n ((hour === 7 && minutes >= 1) || (hour === 8 && minutes === 0)) &&\n isToday\n ) {\n parsedOptions = allOptions.filter((item, index) => {\n if (index === 1 || index === 2) return false;\n return true;\n });\n } else if (\n ((hour === 8 && minutes >= 1) || (hour === 9 && minutes === 0)) &&\n isToday\n ) {\n parsedOptions = allOptions.filter((item, index) => {\n if (index === 1 || index === 2 || index === 3) return false;\n return true;\n });\n } else if (\n ((hour === 9 && minutes >= 1) || (hour === 10 && minutes === 0)) &&\n isToday\n ) {\n parsedOptions = allOptions.filter((item, index) => {\n if (index === 1 || index === 2 || index === 3 || index === 4)\n return false;\n return true;\n });\n } else if (\n ((hour === 10 && minutes >= 1) || (hour === 11 && minutes === 0)) &&\n isToday\n ) {\n parsedOptions = allOptions.filter((item, index) => {\n if (\n index === 1 ||\n index === 2 ||\n index === 3 ||\n index === 4 ||\n index === 5\n )\n return false;\n return true;\n });\n } else if (\n ((hour === 11 && minutes >= 1) || (hour === 12 && minutes === 0)) &&\n isToday\n ) {\n parsedOptions = allOptions.filter((item, index) => {\n if (\n index === 1 ||\n index === 2 ||\n index === 3 ||\n index === 4 ||\n index === 5 ||\n index === 6\n )\n return false;\n return true;\n });\n } else if (\n ((hour === 12 && minutes >= 1) || (hour === 13 && minutes === 0)) &&\n isToday\n ) {\n parsedOptions = allOptions.filter((item, index) => {\n if (\n index === 1 ||\n index === 2 ||\n index === 3 ||\n index === 4 ||\n index === 5 ||\n index === 6 ||\n index === 7\n )\n return false;\n return true;\n });\n } else if (\n ((hour === 13 && minutes >= 1) || (hour === 14 && minutes === 0)) &&\n isToday\n ) {\n parsedOptions = allOptions.filter((item, index) => {\n if (\n index === 1 ||\n index === 2 ||\n index === 3 ||\n index === 4 ||\n index === 5 ||\n index === 6 ||\n index === 7 ||\n index === 8\n )\n return false;\n return true;\n });\n } else if (hour >= 14 && minutes >= 1) {\n const tomorrow = new Date(today);\n tomorrow.setDate(tomorrow.getDate() + 1);\n minDatePicker = `${tomorrow\n .toLocaleString('sv', {\n timeZone: 'America/New_York',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n })\n .split(' ')[0]\n .split('/')\n .reverse()\n .join('-')}`;\n }\n\n if ($datePicker.value < $datePicker.min) {\n parsedOptions = [{ label: 'Select...', value: '' }];\n }\n\n return { parsedOptions, minDatePicker };\n};\n\nexport const buildOptionsHtml = items => {\n return items\n .map(\n item => `\n \n `\n )\n .join('');\n};\n","import debounce from 'lodash.debounce';\n\nclass GeneralForm {\n constructor({ dom }) {\n this.dom = {\n ...dom\n }\n\n this.dom.$fileBtn = document.querySelector('[data-sc-field-name=\"File Upload\"]');\n this.dom.$datePicker = document.querySelector('duet-date-picker');\n\n if (this.dom.$datePicker) {\n this.dom.$datePicker.firstDayOfWeek = 0;\n }\n\n\n this.addListeners();\n }\n\n addListeners() {\n\n\n if (this.dom.$fileBtn) {\n // Listen to sitecore form file type click, since label id is dinamically generated\n this.dom.$form._on('click', e => {\n\n if (e.target.type === 'file') {\n this.handleFile()\n }\n });\n this.dom.$fileBtn._on('change', this.handleFile.bind(this))\n this.dom.$fileBtnRemove._on('click', this.removeFile.bind(this))\n }\n\n window.addEventListener(\n 'resize',\n debounce(this.setMaxHeight.bind(this), 300)\n );\n\n }\n\n handleFile() {\n\n if (this.dom.$fileBtn.files) {\n\n if (this.dom.$fileBtn.files.length > 1) {\n this.dom.$fileSelected.textContent = `${this.dom.$fileBtn.files.length} files`\n\n } else {\n this.dom.$fileSelected.textContent = this.dom.$fileBtn.files[0]?.name\n }\n }\n if (this.dom.$fileSelected.textContent !== '') {\n\n this.dom.$fileContainer.classList.add('show')\n }\n }\n\n removeFile(e) {\n e.preventDefault();\n\n if (this.dom.$fileBtn.files.length > 0) {\n this.dom.$fileBtn.value = ''\n this.dom.$fileSelected.textContent = ''\n this.dom.$fileContainer.classList.remove('show')\n }\n }\n\n\n setMaxHeight() {\n if (this.isFormWithText && window.matchMedia(`(min-width: ${1024}px)`).matches) {\n this.dom.$parentNode.style.maxHeight = `${this.dom.$form.offsetHeight}px`\n this.dom.$parentNode.style.minHeight = '100%'\n } else {\n this.dom.$parentNode.style.minHeight = `${this.dom.$form.offsetHeight}px`\n this.dom.$parentNode.style.maxHeight = '100%'\n\n }\n }\n\n}\n\nexport default GeneralForm;\n\n","import { v4 as uuidv4 } from 'uuid';\nimport { events, selectors, formatStr, trackEvent } from '../analytics-helpers';\nclass StepForm {\n constructor({ dom }) {\n this.dom = {\n ...dom\n };\n\n this.dom.$stepForm = document.querySelector('.step-form');\n this.dom.$stepFormHeading = document.querySelector(\n '.step-form__step-label'\n );\n this.dom.$form = document.querySelector('.step-form__form');\n this.dom.$steps = document.querySelectorAll('.step-form__step');\n this.dom.$sections = document.querySelectorAll(\n '.step-form__section-wrapper'\n );\n this.dom.$progressBar = document.querySelector('.step-form__bar');\n this.dom.$backBtn = document.querySelector('.step-form__back');\n this.dom.$nextBtn = document.querySelector('.step-form__next');\n this.currentStep = 1;\n this.isFirstRender = true;\n\n if (this.dom.$stepForm) {\n this.nextBtnCurrentLabel =\n this.dom.$nextBtn.querySelector('.btn__label').textContent;\n this.getForm();\n this.addListeners();\n }\n }\n\n addListeners() {\n this.dom.$backBtn.addEventListener('click', this.backStep.bind(this));\n this.dom.$nextBtn.addEventListener('click', this.nextStep.bind(this));\n }\n\n getForm() {\n fetch(this.dom.$stepForm.dataset.endpoint)\n .then(data => data.json())\n .then(res => {\n this.formResponse = res;\n this.renderForm();\n this.updateBarLength();\n this.updateText();\n this.validateRequired();\n });\n }\n\n renderForm() {\n const { Copy, Heading, Type, Answers, RequiredStep, Subheading } =\n this.formResponse;\n const firstRender = this.renderQuestions(\n Copy,\n Heading,\n Type,\n Answers,\n RequiredStep,\n Subheading\n );\n this.dom.$form.innerHTML += firstRender;\n this.isFirstRender = false;\n const branchBtn = document.querySelectorAll('.step-form__branching-input');\n branchBtn.map(el => {\n el.addEventListener('click', this.childRenderer.bind(this));\n });\n }\n\n renderQuestions(\n Copy,\n Heading,\n Type,\n Answers,\n RequiredStep,\n SkipNextIfEmpty,\n Subheading\n ) {\n if (Type && Answers) {\n let inputId;\n switch (Type) {\n case 'Branching Stepped Question':\n return `\n
\n
\n ${this.headingHandler(\n Subheading\n )}\n
\n

${Heading}

\n

${Copy}

\n
\n ${Answers.map(el => {\n inputId = uuidv4();\n return `
\n \n
\n \n \n
\n
`;\n }).join('')}\n
\n
\n `;\n case 'Checkbox Stepped Question':\n return `\n
\n
\n ${this.headingHandler(\n Subheading\n )}\n
\n

${Heading}

\n

${Copy}

\n
\n ${Answers.map(el => {\n inputId = uuidv4();\n return `
\n \n
\n \n \n
\n
`;\n }).join('')}\n
\n
\n `;\n case 'Radio Stepped Question':\n return `\n
\n
\n ${this.headingHandler(\n Subheading\n )}\n
\n

${Heading}

\n

${Copy}

\n
\n ${Answers.map(el => {\n inputId = uuidv4();\n return `
\n \n
\n \n \n
\n
`;\n }).join('')}\n
\n
\n `;\n case 'Text Stepped Question':\n inputId = uuidv4();\n return `\n
\n
\n ${this.headingHandler(\n Subheading\n )}\n
\n

${Heading}

\n

${Copy}

\n
\n
\n
\n \n \n
\n
\n
\n
\n `;\n case 'Radio Stepped Question With Image':\n return `\n
\n
\n ${this.headingHandler(\n Subheading\n )}\n
\n

${Heading}

\n

${Copy}

\n
\n ${Answers.map(el => {\n inputId = uuidv4();\n return `
\n \n
\n \n \n
\n
`;\n }).join('')}\n
\n
\n `;\n }\n }\n }\n\n headingHandler(Subheading) {\n let singleString = Subheading;\n\n if (this.isFirstRender) {\n singleString = this.formResponse.Subheading;\n }\n\n if (singleString) {\n const headingWrapper = document.createElement('div');\n const stringCurrent = `${\n this.currentStep - 1\n }`;\n const stringTotal = `${\n document.querySelectorAll('.step-form__step').length - 1\n }`;\n const singleStringFormat = singleString.replace('{0}', stringCurrent);\n const fullString = singleStringFormat.replace('{1}', stringTotal);\n headingWrapper.innerHTML = fullString;\n return headingWrapper.innerHTML;\n }\n\n return '';\n }\n\n backStep() {\n if (this.currentStep > 1) {\n this.validateStep();\n this.validateBackSkip();\n this.currentStep--;\n this.updateBarLength();\n this.updateText();\n this.validateStep();\n this.validateRequiredNext();\n this.resetFocus();\n }\n }\n\n childRenderer() {\n const hiddenStep = document.querySelectorAll('.step-form__hidden');\n if (hiddenStep) {\n hiddenStep.map(el => {\n el.remove();\n });\n }\n const choice = document.querySelector(\n '.step-form__branching-input:checked'\n );\n const choiceId = choice.id;\n const questions = this.formResponse.Answers.find(\n obj => obj.AnswerTitle === choice.value\n );\n questions.Questions.map(el => {\n const {\n Copy,\n Heading,\n Type,\n Answers,\n RequiredStep,\n SkipNextIfEmpty,\n Subheading\n } = el;\n const subStep = this.renderQuestions(\n Copy,\n Heading,\n Type,\n Answers,\n RequiredStep,\n SkipNextIfEmpty,\n Subheading\n );\n this.dom.$form.innerHTML += subStep;\n });\n document.getElementById(choiceId).checked = true;\n document.getElementById(choiceId).focus();\n this.updateBarLength();\n this.updateText();\n this.updateBarLength();\n\n const branchInput = document.querySelectorAll(\n '.step-form__branching-input'\n );\n\n branchInput.map(el => {\n el.addEventListener('click', () => {\n this.childRenderer();\n });\n });\n }\n\n validateRequired() {\n const currentStep = document.querySelectorAll(\n '.step-form__section-wrapper'\n )[this.currentStep - 1];\n const input = document\n .querySelectorAll('.step-form__section-wrapper')\n [this.currentStep - 1].querySelector('.step-form__section');\n if (input) {\n const radios = input.querySelectorAll('input[type=\"radio\"]');\n const checkboxes = input.querySelectorAll('input[type=\"checkbox\"]');\n const checkedRadio = Array.prototype.slice\n .call(radios)\n .some(x => x.checked);\n const checkedBox = Array.prototype.slice\n .call(checkboxes)\n .some(x => x.checked);\n\n if (\n (input.querySelector('input').required && checkedRadio) ||\n checkedBox\n ) {\n this.dom.$nextBtn.disabled = false;\n } else if (input.querySelector('input').required) {\n this.dom.$nextBtn.disabled = true;\n radios.map(e => {\n e.addEventListener('click', () => {\n this.dom.$nextBtn.disabled = false;\n });\n });\n\n checkboxes.map(e => {\n e.addEventListener('click', () => {\n this.dom.$nextBtn.disabled = !this.dom.$nextBtn.disabled;\n });\n });\n } else {\n this.dom.$nextBtn.disabled = false;\n if (currentStep.dataset.skip === 'true') {\n this.currentStep++;\n }\n }\n }\n }\n\n validateRequiredNext() {\n const input = document\n .querySelectorAll('.step-form__section-wrapper')\n [this.currentStep - 1].querySelector('.step-form__section');\n if (input) {\n const radios = input.querySelectorAll('input[type=\"radio\"]');\n const checkboxes = input.querySelectorAll('input[type=\"checkbox\"]');\n const checkedRadio = Array.prototype.slice\n .call(radios)\n .some(x => x.checked);\n const checkedBox = Array.prototype.slice\n .call(checkboxes)\n .some(x => x.checked);\n\n if (\n (input.querySelector('input').required && checkedRadio) ||\n checkedBox\n ) {\n this.dom.$nextBtn.disabled = false;\n } else if (input.querySelector('input').required) {\n this.dom.$nextBtn.disabled = true;\n radios.map(e => {\n e.addEventListener('click', () => {\n this.dom.$nextBtn.disabled = false;\n });\n });\n\n checkboxes.map(e => {\n e.addEventListener('click', () => {\n this.dom.$nextBtn.disabled = !this.dom.$nextBtn.disabled;\n });\n });\n } else {\n this.dom.$nextBtn.disabled = false;\n }\n }\n }\n\n validateNext() {\n const input = document\n .querySelectorAll('.step-form__section-wrapper')\n [this.currentStep - 1].querySelector('.step-form__section');\n const radios = input.querySelectorAll('input[type=\"radio\"]');\n const checkboxes = input.querySelectorAll('input[type=\"checkbox\"]');\n const checkedRadio = Array.prototype.slice\n .call(radios)\n .some(x => x.checked);\n const checkedBox = Array.prototype.slice\n .call(checkboxes)\n .some(x => x.checked);\n\n if (input && input.querySelector('input').required) {\n if (checkedRadio || checkedBox) {\n this.nextStepHandler();\n }\n } else {\n this.nextStepHandler();\n }\n }\n\n validateBackSkip() {\n if (this.currentStep - 2 >= 1) {\n const filledSteps = document.querySelectorAll(\n '.step-form__section-wrapper'\n )[this.currentStep - 3];\n const input = filledSteps.querySelector('.step-form__section');\n if (input) {\n const radios = input.querySelectorAll('input[type=\"radio\"]');\n const checkboxes = input.querySelectorAll('input[type=\"checkbox\"]');\n const checkedBox = Array.prototype.slice\n .call(checkboxes)\n .some(x => x.checked);\n\n if (filledSteps.dataset.skip === 'true' && !checkedBox) {\n this.currentStep--;\n }\n }\n }\n }\n\n getFormResults() {\n const formSteps = document.querySelectorAll('.step-form__section-wrapper');\n const branchVal = document.querySelector(\n '.step-form__branching-input:checked'\n );\n const formResults = {\n Type: branchVal.dataset.inputKey,\n Answers: []\n };\n formSteps.map(el => {\n if (el.querySelector('.step-form__checkbox-input')) {\n const answerList = [];\n const checkboxVal = el.querySelectorAll(\n '.step-form__checkbox-input:checked'\n );\n checkboxVal.map(el => {\n answerList.push(el.dataset.inputKey);\n });\n const type = 'Checkbox';\n const checkboxQuestion = el.querySelector('.step-form__checkbox-input');\n if (checkboxQuestion) {\n const answerObj = {\n Question: checkboxQuestion.name,\n Type: type,\n Answers: answerList\n };\n formResults.Answers.push(answerObj);\n } else {\n const answerObj = {\n Question: checkboxQuestion.name,\n Type: type,\n Answers: []\n };\n formResults.Answers.push(answerObj);\n }\n }\n\n if (el.querySelector('.step-form__radio-input')) {\n const answerList = [];\n const radioVal = el.querySelector('.step-form__radio-input:checked');\n if (radioVal) {\n answerList.push(radioVal.dataset.inputKey);\n }\n const type = 'Radio';\n const checkboxQuestion = el.querySelector('.step-form__radio-input');\n if (checkboxQuestion) {\n const answerObj = {\n Question: checkboxQuestion.name,\n Type: type,\n Answers: answerList\n };\n formResults.Answers.push(answerObj);\n } else {\n const answerObj = {\n Question: checkboxQuestion.name,\n Type: type,\n Answers: []\n };\n formResults.Answers.push(answerObj);\n }\n }\n\n if (el.querySelector('.field__textarea')) {\n const answerList = [];\n const textVal = el.querySelector('.field__textarea');\n answerList.push(textVal.value);\n const type = 'Text';\n const checkboxQuestion = el.querySelector('.field__textarea');\n if (checkboxQuestion) {\n const answerObj = {\n Question: checkboxQuestion.name,\n Type: type,\n Answers: answerList\n };\n formResults.Answers.push(answerObj);\n } else {\n const answerObj = {\n Question: checkboxQuestion.name,\n Type: type,\n Answers: []\n };\n formResults.Answers.push(answerObj);\n }\n }\n });\n this.results = formResults;\n this.sendForm();\n }\n\n sendForm() {\n const postHeaders = new Headers();\n postHeaders.append('Accept', 'application/json');\n postHeaders.append('Content-Type', 'application/json');\n trackEvent({\n event: `${events.careQuestionnareStep}${\n document.querySelectorAll(selectors.careQuestionareSection).length - 1\n }`,\n care_questionnare_selection: formatStr(\n document.querySelector(selectors.careQuestionareTextarea).value || ''\n )\n });\n trackEvent({\n event: events.careQuestionnareComplete\n });\n fetch(this.dom.$stepForm.dataset.endpoint, {\n method: 'POST',\n headers: postHeaders,\n body: JSON.stringify(this.results)\n })\n .then(response => response.json())\n .then(result => {\n window.location.href = result.Link;\n })\n .catch(error => location.reload());\n }\n\n nextStep() {\n if (\n this.currentStep < document.querySelectorAll('.step-form__step').length\n ) {\n this.validateNext();\n } else {\n this.getFormResults();\n }\n }\n\n nextStepHandler() {\n this.validateStep();\n this.validateRequired();\n this.fireTrackingEvents();\n this.currentStep++;\n this.updateBarLength();\n this.updateText();\n this.validateStep();\n this.validateRequiredNext();\n this.resetFocus();\n }\n\n fireTrackingEvents() {\n if (this.currentStep - 1 === 0) {\n const activeSection = document\n .querySelectorAll(selectors.careQuestionareSection)\n .at(0);\n const sectionValues = Array.from(\n activeSection.querySelectorAll(selectors.careQuestionareSelected)\n )\n .map(input => input.value)\n .join(', ');\n trackEvent({\n event: events.careQuestionareStart,\n care_questionnare_selection: formatStr(sectionValues)\n });\n } else {\n const activeSection = document\n .querySelectorAll(selectors.careQuestionareSection)\n .at(this.currentStep - 1);\n const sectionValues = Array.from(\n activeSection.querySelectorAll(selectors.careQuestionareSelected)\n )\n .map(input => input.value)\n .join(', ');\n trackEvent({\n event: `${events.careQuestionnareStep}${this.currentStep - 1}`,\n care_questionnare_selection: formatStr(sectionValues)\n });\n }\n }\n\n validateStep() {\n document\n .querySelectorAll('.step-form__section-wrapper')\n [this.currentStep - 1].classList.toggle('step-form__hidden');\n }\n\n ruleOfThree(total, currentStep) {\n const proportion = (currentStep * 100) / total;\n return Math.round(proportion * 10) / 10;\n }\n\n updateText() {\n const currentHeading = document.querySelectorAll(\n '.step-form__heading-wrapper'\n );\n if (currentHeading) {\n currentHeading.map(el => {\n const currentText = el.querySelector('.step-form__current');\n const totalText = el.querySelector('.step-form__total');\n if (currentText && totalText) {\n currentText.textContent = this.currentStep - 1;\n totalText.textContent =\n document.querySelectorAll('.step-form__step').length - 1;\n }\n });\n }\n }\n\n resetFocus() {\n const step = document.querySelector(\n '.step-form__section-wrapper:not(.step-form__hidden)'\n );\n step.focus();\n }\n\n updateBarLength() {\n if (this.currentStep === 1 && !this.dom.$backBtn.disabled) {\n this.dom.$backBtn.disabled = true;\n } else {\n this.dom.$backBtn.disabled = false;\n }\n\n if (\n this.currentStep === document.querySelectorAll('.step-form__step').length\n ) {\n this.dom.$nextBtn.querySelector('.btn__label').textContent =\n this.dom.$stepForm.dataset.nextBtnLabel;\n } else {\n this.dom.$nextBtn.querySelector('.btn__label').textContent =\n this.nextBtnCurrentLabel;\n }\n\n if (this.currentStep === 1) {\n this.dom.$progressBar.style.width = '0%';\n } else {\n const percentage = this.ruleOfThree(\n document.querySelectorAll('.step-form__step').length,\n this.currentStep\n );\n this.dom.$progressBar.style.width = `${percentage}%`;\n }\n }\n}\n\nexport default StepForm;\n","import { Component } from '@verndale/core';\nimport Pristine from 'pristinejs';\nimport GeneralForm from './general-form-row';\nimport StepForm from './step-form';\nimport serialize from 'form-serialize';\nimport Cookies from 'js-cookie';\nimport { getTimesConfig, buildOptionsHtml } from '../helpers/times';\n\nimport { selectors } from '../analytics-helpers';\n\nclass Module extends Component {\n setupDefaults() {\n this.dom = {\n $form: this.el,\n $error: this.el._$('.form-error'),\n $submit: this.el._$('[type=\"submit\"]'),\n $fileContainer: this.el._$('.field-file__container'),\n $fileBtnRemove: this.el._$('.field-file__remove'),\n $fileSelected: this.el._$('.field-file__name'),\n $date: this.el._$$('duet-date-picker'),\n $topics: this.el._$$('.community-contact-us__topics select'),\n $loadingRing: this.el._$('.loading-ring'),\n $parentNode: this.el.parentNode,\n $requiredWhenVisible: this.el\n ._$$('[data-pristine-required-message-when-visible]')\n .filter(el => !!el.dataset.pristineRequiredMessageWhenVisible)\n };\n\n this.formEndPoint = this.dom.$form.dataset.endpoint;\n if (this.el.dataset.params) {\n this.queryParams = JSON.parse(this.el.dataset.params);\n }\n\n if (this.el.dataset.submitParameter) {\n this.submitParameter = this.el.dataset.submitParameter;\n }\n\n this.locationEndPoint = this.el.dataset.geoEndpoint;\n this.cookiesToSend = ['current_community'];\n this.methodForm = this.el.getAttribute('method');\n this.successClass = 'form--success';\n this.errorClass = 'form--error';\n this.loadingClass = 'form--loading';\n this.defaultError = this.dom.$error?.textContent;\n this.defaultSubmitDisableValue = this.dom.$submit\n ? this.dom.$submit.disabled\n : false;\n\n this.ajaxSubmit = this.dom.$form.classList.contains('form--ajax');\n this.isFormWithText = this.dom.$parentNode.classList.contains(\n 'general-form-row__inner--text'\n );\n this.isSitecoreForm = this.el.classList.contains('sitecore-form');\n this.selectedTopic = '';\n\n if (this.isSitecoreForm) {\n this.dom.$form = this.el._$('form');\n this.methodForm = this.el._$('form').getAttribute('method');\n new GeneralForm({\n dom: this.dom\n });\n new StepForm({\n dom: this.dom\n });\n }\n\n if (this.dom.$date) {\n this.setupDate();\n }\n\n this.validateRequiredFields();\n this.verifyQueryParams();\n\n const isDropdown = this.el.closest('.primary-nav__child-menu');\n\n const outputsize = () => {\n if (this.el.offsetHeight > 0) {\n this.validateRequiredFields();\n }\n };\n\n if (isDropdown) {\n outputsize();\n new ResizeObserver(outputsize).observe(this.el);\n }\n }\n\n addListeners() {\n this.dom.$form._on('submit', this.handleSubmit.bind(this));\n this.dom.$topics._on('change', () => {\n this.selectedTopic = this.dom.$topics[0]\n .querySelector('option:checked')\n .getAttribute('google-analytics-tracking-code')\n .toLowerCase()\n ? this.dom.$topics[0]\n .querySelector('option:checked')\n .getAttribute('google-analytics-tracking-code')\n .toLowerCase()\n : this.submitParameter;\n setTimeout(() => {\n this.validateRequiredFields();\n });\n });\n\n this.dom.$form._on('reset', this.handleReset.bind(this));\n }\n\n setupDate() {\n this.dom.$date.forEach(date => {\n const DATE_FORMAT_US = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\n\n date.dateAdapter = {\n parse(value = '', createDate) {\n const matches = value.match(DATE_FORMAT_US);\n\n if (matches) {\n return createDate(matches[3], matches[1], matches[2]);\n }\n },\n\n format(date) {\n return `${\n date.getMonth() + 1\n }/${date.getDate()}/${date.getFullYear()}`;\n }\n };\n\n date.localization = {\n buttonLabel: 'Choose date',\n selectedDateMessage: 'Selected date is',\n prevMonthLabel: 'Previous month',\n nextMonthLabel: 'Next month',\n monthSelectLabel: 'Month',\n yearSelectLabel: 'Year',\n closeLabel: 'Close window',\n calendarHeading: 'Choose a date',\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n monthNamesShort: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ],\n locale: 'en-US',\n placeholder: date.getAttribute('placeholder') || 'mm/dd/yy'\n };\n });\n }\n\n moveDateInputName() {\n this.dom.$date.forEach(date => {\n const $dateInput = date._$('.duet-date__input');\n\n if (date.name && $dateInput) {\n $dateInput.name = date.name;\n date.removeAttribute('name');\n }\n });\n }\n\n validate() {\n this.moveDateInputName();\n\n this.pristineForm = new Pristine(this.dom.$form, {\n classTo: 'field',\n errorClass: 'field--error',\n successClass: 'field--success',\n errorTextParent: 'field',\n errorTextTag: 'small',\n errorTextClass: this.isSitecoreForm\n ? 'field__error--sitecore-hide'\n : 'field__error'\n });\n }\n\n validateRequiredFields() {\n if (this.dom.$requiredWhenVisible.length) {\n this.dom.$requiredWhenVisible.forEach(el => {\n el.required = false;\n\n const shouldValidateDatepicker =\n el.nodeName === 'DUET-DATE-PICKER' &&\n el._$('.duet-date__input')?.offsetWidth > 0 &&\n el._$('.duet-date__input')?.offsetHeight > 0;\n const shouldValidateOthers =\n el.nodeName !== 'DUET-DATE-PICKER' &&\n el.offsetWidth > 0 &&\n el.offsetHeight > 0;\n\n if (shouldValidateDatepicker || shouldValidateOthers) {\n if (el.nodeName === 'DUET-DATE-PICKER') {\n const error = el.dataset.pristineRequiredMessageWhenVisible;\n const $dateInput = el._$('.duet-date__input');\n $dateInput.dataset.pristineRequiredMessage = error;\n $dateInput.setAttribute('required', '');\n } else {\n el.setAttribute(\n 'data-pristine-required-message',\n el.dataset.pristineRequiredMessageWhenVisible\n );\n el.setAttribute('required', '');\n }\n }\n });\n }\n this.validate();\n }\n\n verifyQueryParams() {\n const urlParams = new URLSearchParams(window.location.search);\n\n // If the query params are set as a data attr, then we need to set them as cookies and send them as part of the form\n if (this.queryParams && this.queryParams.length > 0) {\n this.queryParams.forEach(param => {\n if (urlParams.has(param)) {\n const cookie = { [param]: urlParams.get(param) };\n Cookies.set(param, JSON.stringify(cookie[param]));\n this.cookiesToSend.push(param);\n } else {\n const keys = Object.keys(Cookies.get());\n\n keys.forEach(key => {\n if (key.includes(param)) {\n this.cookiesToSend.push(param);\n }\n });\n }\n });\n }\n }\n\n setLoading(bool) {\n if (!this.isSitecoreForm) {\n this.dom.$form.classList.toggle(this.loadingClass, bool);\n if (!this.dom.$submit) this.dom.$submit = this.el._$('[type=\"submit\"]');\n try {\n bool\n ? this.dom.$submit?.appendChild?.(this.dom.$loadingRing)\n : this.dom.$loadingRing.remove();\n } catch (e) {\n console.log(e);\n }\n }\n }\n\n validateDateAndTime() {\n const $timesSelect = this.dom.$form.querySelector('[name=\"preferredTime\"]');\n const $dateInput = this.dom.$form.querySelector('.duet-date__input');\n\n // this form doesn't have a date/time input or is not booking a tour\n if (!$timesSelect || !$dateInput || this.selectedTopic != 'schedulevisit') {\n return true;\n }\n\n const selectedTime = $timesSelect.value;\n const seletedDate = this.dom.$date[0].value;\n\n const todayFormated = new Date()\n .toLocaleString('sv', {\n timeZone: 'America/New_York',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n })\n .split(' ')[0]\n .split('/')\n .reverse()\n .join('-');\n const isToday = seletedDate === todayFormated;\n const today = new Date().toLocaleString('en-US', {\n timeZone: 'America/New_York'\n });\n\n const { parsedOptions, minDatePicker } = getTimesConfig(\n this.dom.$date[0],\n isToday,\n today\n );\n const optionsHtml = buildOptionsHtml(parsedOptions);\n\n if (seletedDate < minDatePicker) {\n const errorMessage = this.dom.$date[0].dataset.pristineNoTimes;\n $timesSelect.innerHTML = '';\n $timesSelect.pristine.errors = [];\n this.pristineForm.addError($timesSelect, errorMessage);\n $timesSelect.innerHTML = optionsHtml;\n\n this.dom.$date[0].min = minDatePicker;\n $dateInput.pristine.errors = [];\n this.pristineForm.addError($dateInput, errorMessage);\n return false;\n }\n\n const validTime = parsedOptions.find(\n option => option.value === selectedTime\n );\n\n if (!validTime) {\n const errorMessage = $timesSelect.dataset.pristineNoLongerAvailable;\n $timesSelect.innerHTML = '';\n $timesSelect.pristine.errors = [];\n this.pristineForm.addError($timesSelect, errorMessage);\n $timesSelect.innerHTML = optionsHtml;\n return false;\n }\n\n return true;\n }\n\n handleSubmit(e) {\n e.preventDefault();\n\n // Workaround for the pristine form validate method to work together with Sitecore personalize\n window.$ = () => {};\n\n const date = this.dom.$form.querySelector('.duet-date__input');\n const isValid = this.pristineForm.validate();\n const zipCode = this.dom.$form.querySelector('[name=\"zipCode\"]');\n const nearbyCommunitiesValue = this.dom.$form.querySelector('[name=\"NearbyCommunities\"]')?.value;\n const contextCommunity = this.dom.$form.querySelector('[name=\"ContextCommunity\"]')?.value;\n\n if (date?.value === '' && date.dataset.pristineRequiredMessage) {\n date.pristine.errors = [];\n this.pristineForm.addError(date, date.dataset.pristineRequiredMessage);\n return;\n }\n\n if (zipCode && zipCode.value && !nearbyCommunitiesValue && contextCommunity) {\n zipCode.pristine.errors = [];\n this.pristineForm.addError(zipCode, zipCode.dataset.errorMessage);\n return;\n }\n\n if (!this.validateDateAndTime()) {\n return;\n }\n\n const headers = {\n 'content-type': 'application/json'\n };\n\n if (!isValid || (!this.methodForm && !this.el.parentNode.classList.contains('episerver-form'))) {\n console.log('invalid form');\n return;\n }\n\n (() => {\n const topics = Array.from(\n document.querySelectorAll(`${selectors.contactUsFormTopic} option`)\n );\n\n const selectedTopic = topics && topics.find( option => option.value === document.querySelector(selectors.contactUsFormTopic).value)?.innerText;\n })();\n\n const token = this.el._$('[name=__RequestVerificationToken]')?.value;\n\n if (token) {\n headers.__RequestVerificationToken = token;\n }\n\n if (this.isSitecoreForm) {\n console.log(this.dom.$form.action);\n\n window.fetch(this.dom.$form.action, {\n method: 'POST',\n body: JSON.stringify(\n serialize(this.dom.$form, {\n hash: true,\n disabled: true,\n empty: true\n })\n ),\n headers\n })\n .then(r => r.json())\n .then(this.handleSuccess.bind(this))\n .catch(this.handleError.bind(this));\n } else {\n this.fetchResults(this.formEndPoint, headers);\n this.setLoading(true);\n }\n }\n\n async fetchResults(url, headers) {\n const payload = {\n ...serialize(this.dom.$form, {\n hash: true,\n disabled: true,\n empty: true\n })\n };\n\n // BE needs cookies being sent with the request because of CDN caching\n this.cookiesToSend.forEach(cookie => {\n const cookieValue = Cookies.get(cookie);\n if (cookieValue) {\n try {\n let cookieData = JSON.parse(cookieValue);\n if (cookieData && cookie === 'current_community') {\n cookieData = cookieData.ssl_communityid;\n }\n // BE only needs ID, not the whole object (if needed uncomment community-context)\n // payload['community-context'] = JSON.parse(payload['community-context']);\n payload[cookie] = cookieData;\n } catch (error) {\n let cookieData = cookieValue;\n if (cookieData && cookie === 'current_community') {\n cookieData = cookieData.ssl_communityid;\n }\n // BE only needs ID, not the whole object (if needed uncomment community-context)\n // payload['community-context'] = JSON.parse(payload['community-context']);\n payload[cookie] = cookieData;\n }\n }\n });\n\n // BE needs the current geolocation and IP to be sent with the request\n if (this.locationEndPoint) {\n const responseGeo = await fetch(this.locationEndPoint);\n const bodyGeoLocation = await responseGeo.json();\n\n payload['geolocation'] = { ...bodyGeoLocation };\n }\n\n const response = await fetch(url, {\n method: this.methodForm,\n body: JSON.stringify(payload),\n headers\n });\n\n if (!response.ok || response.status !== 200) {\n this.handleError(response.Message);\n return;\n }\n\n const body = await response.json();\n\n this.setLoading(false);\n this.handleSuccess(body);\n }\n\n handleReset() {\n this.pristineForm.reset();\n this.dom.$submit.disabled = this.defaultSubmitDisableValue;\n }\n\n handleSuccess(res) {\n if (this.isSitecoreForm && !this.dom.$form) {\n this.dom.$form = this.el._$('form');\n }\n\n if (this.dom.$error) {\n this.dom.$error.hidden = true;\n }\n\n this.el.classList.add(this.successClass);\n this.el.classList.remove(this.errorClass);\n this.el.classList.remove('field-validation-error');\n\n this.sendGoogleDataEvent();\n\n if (!this.isSitecoreForm) {\n if (res.redirectUrl) {\n this.successRedirect(res);\n this.handleReset();\n return;\n }\n }\n\n if (!this.dom.$form.action) {\n this.handleReset();\n return;\n }\n\n if (res.RedirectUrl) {\n this.successRedirect(res);\n return;\n }\n\n const event = new CustomEvent('successfullysubmitted', { detail: res });\n this.dom.$form.dispatchEvent(event);\n this.setLoading(false);\n }\n\n successRedirect(res) {\n if (this.selectedTopic === '') {\n this.selectedTopic = this.submitParameter;\n }\n const url = this.selectedTopic\n ? `${res.redirectUrl}?formtopic=${this.selectedTopic}`\n : res.redirectUrl;\n const { Boxever, _boxever_settings } = window;\n\n if (!Boxever || !_boxever_settings) {\n window.location = url;\n return;\n }\n\n const eventToSend = {\n channel: 'WEB',\n type: 'SUCCESSFUL_FORM_SUBMISSION',\n pos: window._boxever_settings.pointOfSale,\n browser_id: Boxever.getID()\n };\n\n Boxever.eventCreate(\n eventToSend,\n data => {\n window.location = url;\n },\n 'json'\n );\n }\n\n handleError(msg) {\n console.log('handleError', msg?.Message);\n\n this.el.classList.add(this.errorClass);\n this.el.classList.remove(this.successClass);\n\n if (this.dom.$error) {\n this.dom.$error.hidden = false;\n this.dom.$error.innerHTML = msg || this.defaultError;\n }\n\n // For none sitecore forms only\n this.setLoading(false);\n\n const event = new CustomEvent('submiterror', { detail: msg });\n this.dom.$form.dispatchEvent(event);\n }\n\n sendGoogleDataEvent() {\n const formData = serialize(this.dom.$form, {\n hash: true,\n disabled: true,\n empty: true\n });\n\n let selectedTopic = undefined;\n let type = \"inquiry\";\n\n if (formData.topic) {\n const topics = Array.from(\n document.querySelectorAll(`${selectors.contactUsFormTopic} option`)\n );\n\n selectedTopic = topics && topics.find( option => option.value === formData.topic)?.innerText;\n } else if (this.dom.$form.classList[0] === 'schedule-a-tour__form') {\n selectedTopic = 'Booking a Tour'; \n }\n\n if (selectedTopic === 'Careers' || selectedTopic == 'Volunteering') {\n type = 'non-inquiry';\n }\n\n const payload = {\n event: 'form_submit',\n detailed_event: 'Form Complete',\n page_data: {\n user_login_state: 'anonymous',\n },\n event_data: {\n identifier: this.dom.$form.classList[0],\n name: this.dom.$form.classList[0],\n type: type,\n form_category: selectedTopic\n },\n user_data: {\n user_id: undefined,\n user_type: 'new',\n user_phone_number: formData.phoneNumber,\n user_email: formData.emailAddress,\n user_first_name: formData.firstName,\n user_last_name: formData.lastName,\n user_zip: formData.zipCode\n }\n };\n\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({ event_data: null, user_data: null }); // Clear the previous event_data and user_data objects.\n window.dataLayer.push(payload);\n\n console.log('data layer sent', payload);\n }\n}\n\nexport default Module;\n"],"sourceRoot":""}