{"version":3,"file":"FinderSection.js","names":["FinderSection","a","setters","Component","default","Registry","deepMerge","on","off","trigger","finderStore","ajax","Event","appendUrl","execute","constructor","element","options","arguments","length","stepIndex","isSkippable","isAutoMove","answerMax","isMultiSelect","hasLazyload","questionTitle","text","requiredMessage","initCache","selectors","next","querySelector","back","error","carousel","selectedItems","querySelectorAll","skip","actions","showAction","onePage","hideAction","dependentFields","Array","from","fields","initState","state","isError","isValid","sectionDependencies","answersQuantity","bindEvents","onSectionValidate","bind","reset","onNextClick","onBackClick","onSkipClick","checkMaxAllowedAnswers","onFieldChange","onFieldChangeNoAutoMove","afterInit","allAnswersQuantity","setTimeout","emit","loadItems","storeUpdated","areDependenciesUpdated","oldStep","lastDependentStep","isSubmitFlow","checkVisibility","getSectionDependencies","index","answers","map","field","getAttribute","dependentAnswers","reduce","concat","split","lastStepSkipped","selectedValues","forEach","answer","val","selectedAnswers","elem","value","i","l","dependency","reactOnDependency","checkFieldVisibility","updateCarousels","resetOnHide","dependencies","selectedValuesCopy","slice","matchedRules","filter","foundIndex","indexOf","splice","resetField","action","dependentItem","closest","classList","remove","add","event","data","carousels","resetFields","resetSelectedItems","bubbles","hideError","fetchItemsURL","offset","then","onItemsLoaded","response","addSlides","get","slides","getComponent","append","initMutationObserverForSlidesAdding","MutationObserver","onCarouselInit","observe","attributes","mutations","observer","mutation","type","attributeName","target","disconnect","validate","onValidate","catch","onValidateFailure","dispatch","runNextSection","values","Promise","resolve","reject","getSelectedItems","Error","replace","dependentSection","question","title","label","join","Object","assign","sendAllValidated","showError","message","setAttribute","innerText","style","display","removeAttribute","checked","selectedItem","dataset","name","uuidValue","id","destroy","selector"],"sources":["components/finder/FinderSection.js"],"sourcesContent":["/* eslint max-lines: [\"error\", {\"max\": 350, \"skipBlankLines\": true, \"skipComments\": true }] */\n\nimport Component from 'core/Component';\nimport Registry from 'core/ComponentRegistry';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport { on, off, trigger } from 'toolbox/event';\nimport finderStore from 'stores/FinderStore';\nimport { ajax } from 'toolbox/ajax';\nimport { Event } from 'services/EventEmitter';\nimport { appendUrl } from 'toolbox/queryString';\n\n/**\n * This is a description of the FinderSection constructor function.\n * @class\n * @classdesc This is a description of the FinderSection class. (must be edited)\n * @extends Component\n */\nexport default class FinderSection extends Component {\n /**\n * Constructor of the class that mainly merge the options of the components\n * @param {HTMLElement} element HTMLElement of the component\n * @param {Object} options options that belongs to the component\n */\n constructor(element, options = {}) {\n super(element, deepMerge({\n stepIndex: 0, // Step the section index, must be different for each\n isSkippable: false, // makes the step skippable\n isAutoMove: false, // Move to next question automatically when answered. Enable it only if single choice allowed\n answerMax: false, // Set the number of answers that can be selected (work only with multi-choice question)\n isMultiSelect: false, // indicates that current step allows user to select several answers\n hasLazyload: false, // indicates that items will be loaded by chunks after init\n questionTitle: '', // Title of the question\n text: { answerMax: 'You can only select {0} answers', requiredMessage: 'You need to select {0} to go to the next step' },\n // Your custom options goes here\n }, options), finderStore);\n }\n\n /**\n * All selectors must be cached. Never cache elements that are out of the component scope\n */\n initCache() {\n this.selectors.next = this.element.querySelector('[data-js-next]');\n this.selectors.back = this.element.querySelector('[data-js-back]');\n this.selectors.error = this.element.querySelector('[data-js-error]');\n this.selectors.carousel = this.element.querySelector('[data-component=\"global/Carousel\"]');\n this.selectors.selectedItems = this.element.querySelectorAll('[data-js-field]:checked');\n this.selectors.skip = this.options.isSkippable ? this.element.querySelector('[data-js-skip]') : null;\n this.actions = {\n showAction: this.options.onePage ? 'enable' : 'show',\n hideAction: this.options.onePage ? 'disable' : 'hide',\n };\n this.selectors.dependentFields = Array.from(this.element.querySelectorAll('[data-js-dependency]'));\n this.selectors.fields = Array.from(this.element.querySelectorAll('[data-js-field]'));\n }\n\n /**\n * set state hook\n */\n initState() {\n this.state.isError = false;\n this.state.isValid = null;\n this.state.sectionDependencies = null;\n this.state.answersQuantity = this.options.answersQuantity;\n }\n\n /**\n * Should contain only event listeners and nothing else\n * All the event handlers should be into a separated function. No usage of anonyous function\n */\n bindEvents() {\n on('finder.section.validate', this.element, this.onSectionValidate.bind(this));\n on('finder.section.reset', this.element, this.reset.bind(this));\n\n if (this.selectors.next) {\n on('click', this.selectors.next, this.onNextClick.bind(this));\n }\n if (this.selectors.back) {\n on('click', this.selectors.back, this.onBackClick.bind(this));\n }\n if (this.selectors.skip) {\n on('click', this.selectors.skip, this.onSkipClick.bind(this));\n }\n if (this.options.isAutoMove) {\n if (!this.options.isMultiSelect || !this.options.answerMax) {\n on('field.change', this.element, this.onFieldChange.bind(this));\n } else if (this.options.answerMax) {\n on('field.change', this.element, this.checkMaxAllowedAnswers.bind(this));\n }\n } else {\n on('field.change', this.element, this.onFieldChangeNoAutoMove.bind(this));\n }\n }\n\n /**\n * After init\n * Run any script after the component is fully initialized\n */\n afterInit() {\n if ((this.state.answersQuantity === this.options.allAnswersQuantity && this.selectors.selectedItems.length)\n || (!this.options.hasLazyload && this.selectors.selectedItems.length)) {\n setTimeout(() => this.onSectionValidate(), 200);\n }\n if (this.options.hasLazyload && this.selectors.carousel) {\n Event.emit('registry.registerChildren', this.element);\n this.loadItems();\n }\n }\n\n /**\n * Store update hook\n * @param {Object} state New state object\n */\n storeUpdated(state) {\n if (state.areDependenciesUpdated) {\n return;\n }\n\n // Reset all next sections when restart from an earlier dependent step\n if (this.options.stepIndex > state.oldStep && state.oldStep === state.lastDependentStep && !state.isSubmitFlow) {\n this.reset();\n }\n this.checkVisibility(state);\n }\n\n /**\n * Defines section dependencies\n * @return {object} section answers and dependencies object\n */\n getSectionDependencies() {\n this.state.sectionDependencies = {\n index: this.options.stepIndex,\n answers: this.selectors.fields.map(field => field.getAttribute('value')),\n dependentAnswers: this.selectors.dependentFields.reduce((dependentAnswers, field) => dependentAnswers.concat(field.getAttribute('data-js-dependency').split(',')), []),\n };\n return this.state.sectionDependencies;\n }\n\n /**\n * check visibility for fields\n * @param {Object} state New state object\n */\n checkVisibility(state) {\n const fields = this.element.querySelectorAll('[data-js-field]');\n let selectedValues = [];\n let lastStepSkipped;\n state.answers.forEach((answer) => {\n const val = answer.selectedAnswers.map(elem => elem.value) || [];\n selectedValues = selectedValues.concat(val);\n lastStepSkipped = !val.length;\n });\n\n // Expected data-js-dependency format is \"val1,val2,val3\"\n for (let i = 0, l = fields.length; i < l; i++) {\n const field = fields[i];\n const dependency = field.getAttribute('data-js-dependency');\n\n if (lastStepSkipped && dependency === 'previousStepSkipped') {\n this.reactOnDependency(field, this.actions.showAction);\n } else {\n this.checkFieldVisibility(field, selectedValues, dependency, !state.isSubmitFlow);\n }\n }\n this.updateCarousels();\n }\n\n /**\n * check visibility for field\n * @param {HTMLElement} field current field\n * @param {Array} selectedValues selected values from current state\n * @param {String} dependency [optional] dependency of the field\n * @param {Boolean} resetOnHide flag showing that field have to be reseted in case of hide action\n */\n checkFieldVisibility(field, selectedValues, dependency, resetOnHide) { // eslint-disable-line max-params\n dependency = dependency || field.getAttribute('data-js-dependency');\n const dependencies = dependency ? dependency.split(',') : [];\n const selectedValuesCopy = selectedValues ? selectedValues.slice() : [];\n\n const matchedRules = dependencies.filter((element) => {\n const foundIndex = selectedValuesCopy.indexOf(element);\n return foundIndex !== -1 && selectedValuesCopy.splice(foundIndex, 1).length;\n });\n\n if (matchedRules.length === dependencies.length) {\n this.reactOnDependency(field, this.actions.showAction);\n } else if (dependencies.length) {\n this.reactOnDependency(field, this.actions.hideAction);\n if (resetOnHide) {\n this.resetField(field);\n }\n }\n }\n\n /**\n * Function which is called on reaction for dependency rules on element\n * and it setup visibility for field. It can hide/disable or show/enable field accordingly\n * @param {HTMLElement} field current field\n * @param {String} action action which should be done (show|hide)\n */\n reactOnDependency(field, action) {\n trigger('field.dependency.action', field, { action });\n const dependentItem = field.closest('.c-carousel__item') || field.closest('[data-js-answer]');\n if (dependentItem && action === 'show') {\n dependentItem.classList.remove('h-hidden');\n } else if (dependentItem && action === 'hide') {\n dependentItem.classList.add('h-hidden');\n }\n }\n\n /**\n * Update carousel view\n * @param {string} event - name of event\n * @param {object} data - event data\n */\n updateCarousels(event = 'carousel.update', data = {}) {\n const carousels = this.element.querySelectorAll('[data-component=\"global/Carousel\"]');\n if (carousels.length) {\n carousels.forEach(carousel => trigger(event, carousel, data));\n }\n }\n\n /**\n * Reset the section\n */\n reset() {\n this.state.isValid = null;\n this.resetFields();\n this.resetSelectedItems();\n trigger('finder.error.reset', this.element, { bubbles: true });\n this.hideError();\n }\n\n /**\n * Reset the field\n * Assumed that when some field is overloaded, the entire section loses validity\n * @param {HTMLElement} field field of current section\n */\n resetField(field) {\n this.state.isValid = null;\n trigger('field.reset', field);\n }\n\n /**\n * Reset all the fields of the section\n */\n resetFields() {\n this.element.querySelectorAll('[data-js-field]').forEach(field => trigger('field.reset', field));\n this.element.querySelectorAll('[data-js-checkbox-item]').forEach(element => element.classList.remove('m-active'));\n this.updateCarousels('carousel.scrollto', { index: 0 });\n }\n\n /**\n * Loads items by chunk\n * @param {Object} event evend data\n */\n loadItems() {\n if (this.state.answersQuantity < this.options.allAnswersQuantity) {\n ajax(appendUrl(this.options.fetchItemsURL, { offset: this.state.answersQuantity }))\n .then(this.onItemsLoaded.bind(this));\n } else if (this.element.querySelectorAll('[data-js-field]:checked').length) {\n setTimeout(() => this.onSectionValidate(), 200);\n }\n }\n\n /**\n * Items loaded callback\n * @param {Object} response xhr response\n */\n onItemsLoaded(response) {\n const { answers } = response;\n if (answers) {\n this.addSlides(answers);\n this.state.answersQuantity += answers.length;\n setTimeout(() => this.checkVisibility(finderStore.get()), 100);\n this.loadItems();\n }\n }\n\n /**\n * Appends slides to the Carousel\n * @param {Object} slides array of slides\n */\n addSlides(slides) {\n if (this.carousel || this.selectors.carousel.getAttribute('data-component-id')) {\n this.carousel = this.carousel || Registry.getComponent(this.selectors.carousel);\n this.carousel.append(slides);\n } else {\n this.initMutationObserverForSlidesAdding(slides);\n }\n }\n\n /**\n * Initialize a mutation observer.\n * it will add slides after component is initialized\n * @param {Object} slides array of slides\n * @param {Object} observer MutationObserver instance\n */\n initMutationObserverForSlidesAdding(slides) {\n new MutationObserver(this.onCarouselInit.bind(this, slides)).observe(this.selectors.carousel, { attributes: true });\n }\n\n /**\n * Called when a series of dom mutations occur.\n * Detects when mutations are related to component initialization and ignores other mutations.\n * @param {Object} slides array of slides\n * @param {Array} mutations an array of MutationRecords given by the mutation observer\n * @param {Object} observer MutationObserver instance\n */\n onCarouselInit(slides, mutations, observer) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'data-component-id' && mutation.target.getAttribute('data-component') === 'global/Carousel') {\n this.addSlides(slides);\n observer.disconnect();\n }\n });\n }\n\n /**\n * Next click handler\n */\n onNextClick() {\n this.validate().then(this.onValidate.bind(this)).catch(this.onValidateFailure.bind(this));\n }\n\n /**\n * Back click handler\n */\n onBackClick() {\n if (this.options.stepIndex > 0) {\n finderStore.dispatch('goTo', this.options.stepIndex - 1);\n }\n }\n\n /**\n * Skip click handler\n */\n onSkipClick() {\n // In case we skip, do not keep values\n this.resetSelectedItems();\n finderStore.dispatch('saveAnswer', {\n index: this.options.stepIndex,\n selectedAnswers: [],\n runNextSection: true,\n isSubmitFlow: false,\n });\n }\n\n /**\n * Field value changed handler\n */\n onFieldChange() {\n this.validate().then(this.onValidate.bind(this)).catch(this.onValidateFailure.bind(this));\n }\n\n /**\n * Check that user selected no more answers that allowed by configuration of step\n */\n checkMaxAllowedAnswers() {\n this.validate().then(values => this.onValidate(values)).catch(this.onValidateFailure.bind(this));\n }\n\n /**\n * Each section must be validated unless it is skippable\n * @returns {Promise} Validation promise\n */\n validate() {\n this.hideError();\n\n return new Promise((resolve, reject) => {\n const selectedValues = this.getSelectedItems();\n\n // if the section has a limitation of choices, display error if limit is excedeed\n if (this.options.answerMax && selectedValues.length > this.options.answerMax) {\n reject(new Error(this.options.text.answerMax.replace('{0}', this.options.answerMax)));\n } else if (selectedValues.length) {\n resolve(selectedValues);\n } else if (this.options.isSkippable) {\n // If the step is skippable, we return an empty array if no selection is made\n resolve([]);\n } else {\n // in case no choice is made while configured with a minimal\n reject(new Error(this.options.text.requiredMessage));\n }\n });\n }\n\n /**\n * On validate handler\n * @param {Array} selectedAnswers Selected answers\n */\n onValidate(selectedAnswers = []) {\n this.state.isValid = true;\n const dependentSection = this.element.getAttribute('data-js-dependent-section') === 'true';\n const dependencies = this.state.sectionDependencies ? this.state.sectionDependencies : this.getSectionDependencies();\n const question = {\n title: this.options.questionTitle,\n answer: selectedAnswers.map(answer => answer.label).join(', '),\n };\n const state = {\n index: this.options.stepIndex, selectedAnswers, isSubmitFlow: false, question,\n };\n finderStore.dispatch('setDependencies', { dependencies });\n\n if (this.options.answerMax && selectedAnswers.length < this.options.answerMax) {\n finderStore.dispatch('saveAnswer', Object.assign(state, { runNextSection: true, dependentSection }));\n } else {\n finderStore.dispatch('saveAnswer', Object.assign(state, { runNextSection: true, dependencies }));\n }\n\n if (this.options.isAutoMove && this.selectors.next) {\n this.selectors.next.classList.remove('h-hidden');\n }\n\n this.sendAllValidated();\n }\n\n /**\n * Section validation handler\n */\n onSectionValidate() {\n this.validate().then((values) => {\n finderStore.dispatch('saveAnswer', { index: this.options.stepIndex, selectedAnswers: values, isSubmitFlow: true });\n this.sendAllValidated();\n }).catch(this.onValidateFailure.bind(this));\n }\n\n /**\n * Validate failure handler\n * @param {string} error Error message\n * @returns {object} error\n */\n onValidateFailure(error) {\n this.state.isValid = false;\n // Should show message on the section\n this.showError(error.message);\n this.sendAllValidated();\n return error;\n }\n\n /**\n * Send event that all steps are validated\n */\n sendAllValidated() {\n trigger('finder.allsteps.validated', this.element, { bubbles: true });\n }\n\n /**\n * Display the error message\n * @param {string} error Error message\n */\n showError(error) {\n this.state.isError = true;\n this.element.setAttribute('data-js-error-state', this.options.stepIndex + 1);\n if (error) {\n this.selectors.error.innerText = error;\n this.selectors.error.style.display = 'block';\n }\n }\n\n /**\n * Hide Error message if any\n */\n hideError() {\n if (this.state.isError) {\n this.element.removeAttribute('data-js-error-state');\n this.state.isError = false;\n this.selectors.error.style.display = 'none';\n }\n }\n\n /**\n * onFieldChangeNoAutoMove\n * Reset error if the section is invalid one item is selected\n */\n onFieldChangeNoAutoMove() {\n if (!this.state.isValid) {\n this.hideError();\n this.sendAllValidated();\n }\n }\n\n /**\n * Get selected values\n * @returns {Array} Array of selected items\n */\n getSelectedItems() {\n return Array.from(this.element.querySelectorAll('[data-js-field]:checked'))\n .filter(({ checked }) => checked)\n .map(selectedItem => ({\n label: selectedItem.dataset.label,\n name: selectedItem.name,\n value: selectedItem.value,\n uuidValue: selectedItem.id,\n }));\n }\n\n /**\n * Reset all the selected values\n */\n resetSelectedItems() {\n this.element.querySelectorAll('[data-js-field]:checked').forEach((selectedItem) => {\n selectedItem.checked = false;\n });\n\n this.updateCarousels('carousel.scrollto', { index: 0 });\n }\n\n /**\n * Destroy is called automatically after the component is being removed from the DOM\n * You must always destroy the listeners attached to an element to avoid any memory leaks\n */\n destroy() {\n off(this.element);\n [this.selectors.next, this.selectors.back, this.selectors.skip].forEach((selector) => {\n if (selector) {\n off('click', selector);\n }\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}