{"version":3,"file":"Select.js","names":["Select","a","setters","ajax","mediaQuery","AbstractField","default","on","off","trigger","Event","deepMerge","appendUrl","mix","LoaderMixin","Accessibility","tryParseJSON","execute","with","constructor","element","options","arguments","length","native","container","closeOnSelect","redirectUrl","redirectNewTab","position","autoPositionPanel","useIcon","filter","closeTimeout","scrollIntoView","block","a11y","filterLabel","filterButtonLabel","filterResult","filterResults","filterNoResults","classNames","opened","disabled","active","hidden","focus","hover","selected","srOnly","panel","list","listItem","placeholder","hasDescription","text","description","badge","badgeImage","textWithDescription","iconState","icon","optionsMap","optionsMapUrl","selectFirstOptionOnReset","_resizable","trackFocusedElements","initCache","wrapField","classes","filterPanel","filterInput","filterButton","selectors","document","querySelector","checkNative","state","initCustomSelectCache","currentPanelItem","selectOptions","field","querySelectorAll","createCustomPanel","createPlaceholder","initState","defaultOption","index","selectedIndex","value","selectedOption","autoPosition","isOpened","isPreventChange","hasInit","filteredItems","fieldState","loadOptionsMap","masterValue","disable","addLoader","url","master","then","onOptionsMapLoaded","bind","catch","onOptionsMapFailed","data","newOptions","updateOptions","enable","removeLoader","setValueAfterLoad","getAttribute","setValue","console","log","wrapper","createElement","selectElement","hadCurrentFocus","activeElement","classList","add","parentElement","insertBefore","appendChild","fieldWrapper","bindEvents","id","onChange","onNativeSelectItemKeyDown","bindCustomSelectEvents","customOptionsUpdate","panelButton","forEach","item","includes","dataset","remove","selectItem","setSelectedIndex","triggerStateEvents","event","newState","action","detail","dependency","stateDependencies","bubbles","dependentActions","masterField","redirect","openNewTab","redirectType","window","open","e","stopPropagation","currentTarget","saveLastFocusState","selectedItem","clearFilter","setAttribute","selectedPanelItem","currentItemIndex","isDisabledItem","disableItem","enableItem","analytics","placement","innerTextToLowerCase","selectedOptions","innerText","toLowerCase","eventData","category","replace","label","labelHeading","ecommerce","eventType","extraData","Object","keys","key","emit","selectPanelItem","innerHTML","setPlaceholderText","buttonText","span","updateValue","Array","isArray","map","val","opt","option","onPanelClick","onSelectItemKeyDown","onKeyTogglePanel","onFilterChange","onClearFilter","preventDefault","togglePanel","contains","target","closePanel","onMouseEnter","onMouseLeave","onSelectHover","onSelectLeave","error","unbindCustomSelectEvents","destroy","afterInit","restoreLastFocusState","isOptionsWithDescription","some","jsDescription","initFieldState","isNative","is","destroyCustomSelect","ul","fragment","createDocumentFragment","customOption","createCustomOption","jsDisabled","filterForm","createFilterForm","createFilterNoResult","li","jsBucket","hasAttribute","createIcon","jsBadge","createText","badgeSpan","createBadge","image","textSpan","div","descriptionSpan","createDescription","title","style","backgroundColor","color","textColor","button","labelElement","prepend","openPanel","clientWidth","width","display","openPanelEvent","SystemJS","import","createPopper","modifiers","name","padding","onFirstUpdate","selectedElement","leaveTimeout","clearTimeout","setTimeout","unSelectPanelItem","HTMLElement","setValueByAttribute","attribute","attributeValue","skipValidation","push","highLightSearchText","isTextMatching","textContent","isBucketMatching","removeAttribute","setCurrentPanelItem","toggleNoResult","term","indexOf","filterValue","getHighlightTerm","fullText","result","slice","onMediaQueryChange","onResize","reset","removeValidationClass","removeCustomSelect","removeChild","shiftKey","onKeyClosePanel","stopImmediatePropagation","focusPanelItem","onKeyOpenPanel","isActionKey","altKey","setFieldState","filteredItemsCount"],"sources":["components/global/Select.js"],"sourcesContent":["/* eslint max-lines: off */\n/* eslint complexity: off */\n/**\n * Created by xiu on 02/11/2017.\n */\nimport { ajax } from 'toolbox/ajax';\nimport { mediaQuery } from 'toolbox/mediaQuery';\nimport AbstractField from 'components/global/AbstractField';\nimport { on, off, trigger } from 'toolbox/event';\nimport { Event } from 'services/EventEmitter';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport { appendUrl } from 'toolbox/queryString';\nimport { mix } from 'core/mixwith';\nimport LoaderMixin from 'mixins/Loader';\nimport Accessibility from 'mixins/Accessibility';\nimport { tryParseJSON } from 'toolbox/object';\n\n/**\n * This is a description of the Select constructor function.\n * @see styleguide {@link https://ecom-frontend-styleguide.e-loreal.com/mf-lora/category/forms/select}\n * @see confluence {@link https://confluence.e-loreal.com/display/EP/NG+LORA+-+Select}\n * @class\n * @classdesc This is a description of the Select class.\n * @extends Component\n */\nexport default class Select extends mix(AbstractField).with(Accessibility, LoaderMixin) {\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 native: true, // Display of the native dropdown\n container: false, // Append custom dropdown to a specific element. You need to define this option as css selector.\n closeOnSelect: true, // work only if native is false. When a value is selected, it closes the panel\n redirectUrl: false, // In case the change of the select trigger a redirection - value of option should be a link value\n redirectNewTab: false, // Determines if redirection should open a new tab or use the current one\n trigger: 'click', // can be either click or hover\n position: 'bottom-start', // https://popper.js.org/docs/v2/\n autoPositionPanel: true, // works only if native is false.Allow to update the position of the panel if out of viewport\n useIcon: false, // Works only if native is false. Allows having icon in the select\n filter: false, // Works only if native is false. Allows having filter input in the select\n closeTimeout: 200, // Works only if trigger is hover and native is false. Set a delay before the panel is closed\n scrollIntoView: { // Works only for accessibility when keys UP/DOWN are used.\n block: 'nearest',\n },\n a11y: {\n filterLabel: '', // Works only if native is false. Allows having filter label in the select\n filterButtonLabel: '', // Works only if native is false. Allows having filter label in the select\n filterResult: '', // Works only if native is false. Allows having filter text if there is only 1 result in the selection\n filterResults: '', // Works only if native is false. Allows having filter text if there are more than 1 results in the selection\n filterNoResults: '', // Works only if native is false. Allows having filter text if no result in the select\n },\n classNames: {\n container: null,\n opened: 'm-opened',\n disabled: 'm-disabled',\n active: 'm-active',\n hidden: 'h-hidden',\n focus: 'm-focus',\n hover: 'm-hover',\n selected: 'm-selected',\n srOnly: 'h-show-for-sr',\n panel: 'c-select__panel',\n list: 'c-select__panel-list',\n listItem: 'c-select__panel-item',\n placeholder: 'c-select__placeholder',\n hasDescription: 'm-rows-2',\n text: 'c-select__text',\n description: 'c-select__description',\n badge: 'c-select__badge',\n badgeImage: 'c-select__badge-image',\n textWithDescription: 'c-select__description-wrapper',\n iconState: 'm-icon',\n icon: ['c-select__icon'],\n },\n optionsMap: {}, // select options map, used to dynamically replace select options\n optionsMapUrl: null, // options map url, used to asyncronously load the options map\n selectFirstOptionOnReset: true, // select the first option on reset event\n _resizable: true,\n trackFocusedElements: true, // enable tracking of focused elements\n }, options));\n }\n\n /**\n * All selectors must be cached. Never cache elements that are out of the component scope\n */\n initCache() {\n this.wrapField();\n super.initCache();\n\n this.classes.filterPanel = 'c-select__filter';\n this.classes.filterInput = 'c-select__filter-field';\n this.classes.filterButton = 'c-select__filter-button';\n this.classes.filterNoResults = 'c-select__filter-result';\n this.selectors.container = this.options.container ? document.querySelector(this.options.container) : this.element;\n\n this.checkNative();\n\n // if not native, we create a custom panel based on the select options\n if (!this.state.native) {\n this.initCustomSelectCache();\n }\n }\n\n /**\n * Cache custom select elements\n */\n initCustomSelectCache() {\n this.selectors.currentPanelItem = null;\n this.selectors.selectOptions = this.field.querySelectorAll('option');\n this.options.filter = this.selectors.selectOptions.length > 1 ? this.options.filter : false;\n // Create a panel with list of select options\n this.selectors.panel = this.createCustomPanel();\n // Create a placeholder button for having custom select\n this.selectors.placeholder = this.createPlaceholder();\n\n if (this.selectors.panel) {\n this.selectors.list = this.selectors.panel.querySelector(`.${this.options.classNames.list}`);\n this.selectors.listItem = this.selectors.panel.querySelectorAll(`.${this.options.classNames.listItem}`);\n }\n }\n\n /**\n * Init the different state of the component\n * It helps to avoid heavy DOM manipulation\n */\n initState() {\n this.state.defaultOption = {\n index: this.field.selectedIndex,\n value: this.field.value,\n };\n\n this.state.selectedOption = this.state.defaultOption;\n this.state.autoPosition = null;\n this.state.isOpened = false;\n this.state.isPreventChange = false;\n this.state.hasInit = true;\n\n if (!this.state.native) {\n this.state.filteredItems = this.selectors.listItem || [];\n }\n\n this.state.optionsMap = this.options.optionsMap;\n this.state.fieldState = null;\n }\n\n /**\n * Load localized options data\n * @param {String} masterValue - optional master value (used to limit large data set)\n * @returns {Promise} ajax call\n */\n loadOptionsMap(masterValue) {\n this.disable();\n this.addLoader(this.element);\n let url = this.options.optionsMapUrl;\n if (masterValue) {\n url = appendUrl(url, { master: masterValue });\n }\n return ajax(url)\n .then(this.onOptionsMapLoaded.bind(this, masterValue))\n .catch(this.onOptionsMapFailed.bind(this, masterValue));\n }\n\n /**\n * Callback on ajax request for getting options map\n * @param {Object} masterValue - additional callback params\n * @param {Object} data - response data\n */\n onOptionsMapLoaded(masterValue, data) {\n if (masterValue) {\n this.state.optionsMap[masterValue] = data[masterValue];\n } else {\n this.state.optionsMap = data;\n }\n const newOptions = this.state.optionsMap[masterValue];\n if (newOptions) {\n this.updateOptions(newOptions);\n }\n this.enable();\n this.removeLoader(this.element);\n this.setValueAfterLoad();\n }\n\n /**\n * Set value after lazy loading options\n */\n setValueAfterLoad() {\n const value = this.element.getAttribute('data-lazyfield-value');\n if (value) {\n this.setValue(value);\n this.field.focus();\n }\n }\n\n /**\n * Callback on ajax request for getting options map\n * @param {Object} data - response data\n */\n onOptionsMapFailed(data) {\n console.log(`Error during loading select options: ${data}`);\n }\n\n /**\n * Wrap each field into container\n */\n wrapField() {\n const wrapper = document.createElement('div');\n const selectElement = this.element.querySelector('select');\n const hadCurrentFocus = document.activeElement === selectElement;\n wrapper.classList.add('c-select__container');\n if (selectElement) {\n selectElement.parentElement.insertBefore(wrapper, selectElement);\n wrapper.appendChild(selectElement);\n this.selectors.fieldWrapper = wrapper;\n if (hadCurrentFocus) {\n selectElement.focus();\n }\n }\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 super.bindEvents();\n\n on(`change.${this.id}`, this.field, this.onChange.bind(this));\n\n if (!this.state.native) {\n this.bindCustomSelectEvents();\n } else {\n // Accessibility for native events\n on('keydown', this.field, this.onNativeSelectItemKeyDown.bind(this), false);\n }\n }\n\n /**\n * Update options in custom panel. Reset options if no options were passed\n * @param {Array} options new options\n */\n customOptionsUpdate(options) {\n const panelButton = this.selectors.placeholder;\n\n if (!options) {\n this.selectors.listItem.forEach((item) => {\n item.classList.remove(this.options.classNames.hidden);\n });\n this.selectItem(panelButton, this.selectors.listItem[0]);\n this.setSelectedIndex(this.selectors.listItem[0].getAttribute('data-index'));\n return;\n }\n\n this.selectors.listItem.forEach((item) => {\n if (!options.includes(item.dataset.value)) {\n item.classList.add(this.options.classNames.hidden);\n } else {\n item.classList.remove(this.options.classNames.hidden);\n }\n\n if (item.dataset.value === options[0]) {\n this.selectItem(panelButton, item);\n this.setSelectedIndex(item.getAttribute('data-index'));\n }\n });\n }\n\n /**\n * Handle custom state events triggering\n * @param {Event} event optional, available for dependency action handling\n */\n triggerStateEvents(event) {\n // for select field state should be defined by selected value\n // otherwise it would always be \"selected\"\n const newState = this.field.value;\n\n if (this.state.fieldState === null) {\n this.state.fieldState = newState;\n }\n\n const action = event && event.detail && event.detail.action;\n\n if (newState !== this.state.fieldState || action === 'triggerStateEvents') {\n this.state.fieldState = newState;\n ['selected', `selected#${newState}`].forEach((dependency) => {\n if (dependency in this.options.stateDependencies) {\n trigger('field.dependency.state.changed', this.field, { bubbles: true, dependentActions: this.options.stateDependencies[dependency], masterField: this.field });\n }\n });\n }\n }\n\n /**\n * Handler for URL redirection\n *\n * @param {string} redirectUrl - Target URL\n * @param {bool} openNewTab - If true, the URL will be opened in a new tab. Same tab will be used otherwise.\n */\n redirect(redirectUrl, openNewTab) {\n if (redirectUrl) {\n const redirectType = openNewTab ? '_blank' : '_self';\n window.open(redirectUrl, redirectType);\n }\n }\n\n /**\n * Handler for select change event\n *\n * @param {Event} e - event data\n */\n onChange(e) {\n if (this.state.isPreventChange) {\n e.stopPropagation();\n return;\n }\n\n const { selectedIndex, value } = e.currentTarget;\n\n this.state.selectedOption = {\n index: selectedIndex,\n value,\n };\n\n this.saveLastFocusState();\n\n if (!this.state.native) {\n const selectedItem = this.selectors.panel.querySelector(`[data-value=\"${value}\"]`);\n const panelButton = this.selectors.placeholder;\n // update the panel item when a change occur from the select\n if (this.options.filter) {\n this.clearFilter();\n }\n if (selectedItem) {\n this.selectItem(panelButton, selectedItem);\n panelButton.setAttribute('aria-expanded', 'false');\n }\n this.selectors.selectedPanelItem = selectedItem;\n this.currentItemIndex = selectedItem ? Number(selectedItem.getAttribute('data-index')) : 0;\n\n if (this.options.useIcon) {\n // update the panel button availability status when a change occur from the select\n if (this.isDisabledItem(selectedItem)) {\n this.disableItem(panelButton);\n } else {\n this.enableItem(panelButton);\n }\n }\n }\n\n // Redirect the user when a new value is selected\n if (value && value.length > 0 && this.options.redirectUrl && !this.state.isPreventChange) {\n this.redirect(value, this.options.redirectNewTab);\n }\n\n if (this.analytics && this.analytics.placement) {\n const innerTextToLowerCase = e.currentTarget.selectedOptions[0].innerText.toLowerCase();\n const eventData = {\n category: this.analytics.placement,\n action: (this.analytics.action && this.analytics.action.replace('{selectedValue}', innerTextToLowerCase)) || 'select',\n label: this.analytics.label || (this.analytics.labelHeading ? `${this.analytics.labelHeading}::${innerTextToLowerCase}` : innerTextToLowerCase),\n };\n\n if (this.analytics.ecommerce) {\n eventData.ecommerce = this.analytics.ecommerce;\n }\n\n if (this.analytics.eventType) {\n eventData.eventType = this.analytics.eventType;\n }\n\n if (this.analytics.event) {\n eventData.event = this.analytics.event;\n }\n\n if (this.analytics.extraData) {\n eventData.extraData = {};\n\n Object.keys(this.analytics.extraData).forEach((key) => {\n eventData.extraData[key] = this.analytics.extraData[key].replace('{selectedValue}', innerTextToLowerCase);\n });\n }\n\n Event.emit('analytics.event', eventData);\n }\n }\n\n /**\n * Select item on custom select panel\n * @param {HTMLElement} panelButton panel buttom\n * @param {HTMLElement} selectedItem selected item\n */\n selectItem(panelButton, selectedItem) {\n this.selectPanelItem(selectedItem);\n\n selectedItem.setAttribute('aria-selected', true);\n this.selectors.selectedPanelItem.setAttribute('aria-selected', false);\n panelButton.innerHTML = selectedItem.innerHTML;\n\n this.setPlaceholderText(selectedItem, panelButton);\n }\n\n /**\n * Set text to placeholder button\n *\n * @param {HTMLElement} element - panel selected element\n * @param {HTMLElement} placeholder - placeholder button element\n */\n setPlaceholderText(element, placeholder) {\n const buttonText = placeholder.querySelector(`.${this.options.classNames.text}`);\n\n if (element.getAttribute('aria-label') && buttonText) {\n if (buttonText.innerHTML === '') {\n buttonText.classList.add(this.options.classNames.srOnly);\n buttonText.innerHTML = element.getAttribute('aria-label');\n } else {\n const span = document.createElement('span');\n\n buttonText.setAttribute('aria-hidden', true);\n span.classList.add(this.options.classNames.srOnly);\n span.innerHTML = element.getAttribute('aria-label');\n placeholder.appendChild(span);\n }\n }\n }\n\n /**\n * Update options based on master field selected value.\n *\n * @param {Event} e - event data\n */\n updateValue(e) {\n const masterValue = e.detail && e.detail.masterField && e.detail.masterField.value;\n if (this.options.optionsMapUrl && masterValue && !this.state.optionsMap[masterValue]) {\n this.loadOptionsMap(masterValue);\n } else {\n const newOptions = this.state.optionsMap[masterValue];\n if (newOptions) {\n this.updateOptions(newOptions);\n }\n }\n }\n\n /**\n * Update select options.\n *\n * @param {Array} options New options array. Each option value can be either object or string directly.\n */\n updateOptions(options = []) {\n this.field.innerHTML = '';\n\n if (!Array.isArray(options)) {\n options = Object.keys(options).map(key => ({\n val: key,\n label: options[key],\n }));\n }\n\n options.forEach((opt) => {\n const option = document.createElement('option');\n option.text = opt.label;\n option.value = opt.val;\n this.field.add(option);\n\n if (opt.selected) {\n this.field.value = opt.val;\n }\n });\n }\n\n /**\n * Bind events for custom select\n */\n bindCustomSelectEvents() {\n on('click', this.selectors.panel, this.onPanelClick.bind(this));\n\n // Accessibility events\n on('keydown', this.element, this.onSelectItemKeyDown.bind(this), false);\n on('click', this.selectors.placeholder, this.onKeyTogglePanel.bind(this));\n\n if (this.options.filter) {\n on('input', this.selectors.filterInput, this.onFilterChange.bind(this));\n on('click', this.selectors.filterButton, this.onClearFilter.bind(this));\n }\n\n on(`mousedown.${this.id}`, this.field, (e) => {\n // prevent the dropdown to be displayed when custom dropdown is required\n e.preventDefault();\n\n if (this.options.trigger === 'click') {\n this.element.focus();\n this.togglePanel();\n }\n });\n\n if (this.options.trigger === 'click') {\n on(`click.${this.id}`, document, (e) => {\n if (this.state.isOpened && !this.element.contains(e.target)) {\n this.closePanel();\n this.selectors.placeholder.setAttribute('aria-expanded', 'false');\n }\n });\n on(`mouseenter.${this.id}`, this.field, this.onMouseEnter.bind(this));\n on(`mouseleave.${this.id}`, this.field, this.onMouseLeave.bind(this));\n } else if (this.options.trigger === 'hover') {\n on(`mouseenter.${this.id}`, this.element, this.onSelectHover.bind(this));\n on(`mouseleave.${this.id}`, this.element, this.onSelectLeave.bind(this));\n } else {\n console.error('Select component trigger should be either click or hover but got --> ', this.options.trigger);\n }\n }\n\n /**\n * Unbind custom select event\n */\n unbindCustomSelectEvents() {\n off('click', this.selectors.panel);\n // Accessibility events\n off('keydown', this.element);\n off(`mousedown.${this.id}`, this.field);\n\n if (this.options.filter) {\n off('input', this.selectors.filterInput);\n off('click', this.selectors.filterButton);\n }\n\n if (this.options.trigger === 'click') {\n off(`click.${this.id}`, document);\n off(`mouseenter.${this.id}`, this.field);\n off(`mouseleave.${this.id}`, this.field);\n } else if (this.options.trigger === 'hover') {\n off(this.element);\n }\n\n if (this.state.autoPosition) {\n this.state.autoPosition.destroy();\n }\n }\n\n /**\n * After init\n * Run any script after the component is fully initialized\n */\n afterInit() {\n super.afterInit();\n\n this.restoreLastFocusState();\n\n if (this.options.useIcon) {\n this.element.classList.add(this.options.classNames.iconState);\n }\n\n if (!this.state.native) {\n this.selectors.fieldWrapper.classList.add(this.options.classNames.hidden);\n }\n\n const isOptionsWithDescription = this.selectors.selectOptions && [...this.selectors.selectOptions]\n .some(option => option.dataset && option.dataset.jsDescription);\n\n if (isOptionsWithDescription) {\n this.element.classList.add(this.options.classNames.hasDescription);\n }\n\n this.initFieldState();\n }\n\n /**\n * The component can be native depending on the viewport. The state should be defined once and can refresh during resize\n *\n * @returns {Boolean} true or false\n */\n checkNative() {\n const { native } = this.options;\n const isNative = (typeof native === 'boolean' && native)\n || (typeof native === 'string' && mediaQuery.is(native))\n || false;\n\n // If native state changed, we need to bind or unbind the events accordingly\n if (this.state.hasInit && this.state.native !== isNative) {\n if (isNative) {\n // state come from custom to native, destroy the events\n this.destroyCustomSelect();\n } else {\n this.initCustomSelectCache();\n // state come from custom to native, destroy the events\n this.bindCustomSelectEvents();\n }\n }\n\n this.state.native = isNative;\n\n return isNative;\n }\n\n /**\n * Create a panel based on the options\n *\n * @returns {HTMLElement} - create custom panel\n */\n createCustomPanel() {\n const panel = document.createElement('div');\n const ul = document.createElement('ul');\n const fragment = document.createDocumentFragment();\n const { list } = this.options.classNames;\n\n [...this.selectors.selectOptions].forEach((option, index) => {\n const customOption = this.createCustomOption(option, index);\n\n if (option.selected) {\n this.selectors.selectedPanelItem = customOption;\n this.selectPanelItem(customOption);\n customOption.setAttribute('aria-selected', 'true');\n this.currentItemIndex = index;\n }\n\n if (option.dataset.jsDisabled === 'true') {\n this.disableItem(customOption);\n }\n\n fragment.appendChild(customOption);\n });\n\n ul.setAttribute('tabindex', '-1');\n ul.setAttribute('role', 'listbox');\n ul.classList.add(list);\n ul.appendChild(fragment);\n ul.setAttribute('id', `${this.id}-listbox`);\n ul.setAttribute('aria-labelledby', `${this.id}-label`);\n\n panel.classList.add(this.options.classNames.panel);\n\n if (this.options.filter) {\n const filterForm = this.createFilterForm();\n const filterResult = this.createFilterNoResult();\n\n panel.appendChild(filterForm);\n panel.appendChild(filterResult);\n }\n\n // inject collected
  • into the panel\n panel.appendChild(ul);\n\n // inject panel into the container (component by default)\n this.selectors.container.appendChild(panel);\n\n return panel;\n }\n\n /**\n * Create filter form based on the options\n *\n * @returns {HTMLElement} - create filter form\n */\n createFilterForm() {\n this.selectors.filterPanel = document.createElement('div');\n this.selectors.filterInput = document.createElement('input');\n this.selectors.filterButton = document.createElement('button');\n\n this.selectors.filterInput.setAttribute('type', 'search');\n this.selectors.filterInput.setAttribute('autocomplete', 'off');\n this.selectors.filterInput.setAttribute('aria-label', this.options.a11y.filterLabel);\n this.selectors.filterInput.setAttribute('placeholder', this.options.a11y.filterLabel);\n this.selectors.filterInput.classList.add(this.classes.filterInput);\n\n this.selectors.filterButton.classList.add(this.classes.filterButton);\n this.selectors.filterButton.setAttribute('aria-hidden', 'true');\n this.selectors.filterButton.setAttribute('tabindex', '-1');\n this.selectors.filterButton.setAttribute('aria-label', this.options.a11y.filterButtonLabel);\n this.selectors.filterPanel.classList.add(this.classes.filterPanel);\n\n // inject filter panel\n this.selectors.filterPanel.appendChild(this.selectors.filterInput);\n this.selectors.filterPanel.appendChild(this.selectors.filterButton);\n\n return this.selectors.filterPanel;\n }\n\n /**\n * Create filter result block\n *\n * @returns {HTMLElement} - filter result\n */\n createFilterNoResult() {\n this.selectors.filterNoResults = document.createElement('div');\n\n this.selectors.filterNoResults.classList.add(this.classes.filterNoResults);\n this.selectors.filterNoResults.classList.add(this.options.classNames.srOnly);\n this.selectors.filterNoResults.setAttribute('aria-live', 'polite');\n this.selectors.filterNoResults.setAttribute('aria-atomic', 'true');\n\n return this.selectors.filterNoResults;\n }\n\n /**\n * Create custom option element\n *\n * @param {Object} option - Option object\n * @param {Number} index - index of element\n * @returns {HTMLElement} - create li element for select list\n */\n createCustomOption(option, index) {\n const { useIcon, classNames } = this.options;\n const { listItem } = classNames;\n\n const li = document.createElement('li');\n li.setAttribute('data-value', option.value);\n li.setAttribute('data-index', index);\n li.setAttribute('role', 'option');\n li.setAttribute('data-js-disabled', false);\n li.setAttribute('aria-selected', 'false');\n li.setAttribute('id', `${this.id}-item_${index}`);\n li.classList.add(listItem);\n\n if (option.dataset && option.dataset.jsBucket) {\n li.setAttribute('data-js-bucket', option.dataset.jsBucket);\n }\n if (option.hasAttribute('aria-label')) {\n li.setAttribute('aria-label', option.getAttribute('aria-label'));\n }\n if (useIcon) {\n li.appendChild(this.createIcon(option.getAttribute('data-icon')));\n }\n\n const badge = option.dataset && option.dataset.jsBadge ? option.dataset.jsBadge : null;\n const description = option.dataset && option.dataset.jsDescription ? option.dataset.jsDescription : null;\n\n li.appendChild(this.createText(option.text, description));\n\n if (badge) {\n const badgeSpan = this.createBadge(badge);\n li.appendChild(badgeSpan);\n }\n\n return li;\n }\n\n /**\n * Create the icon element with the background value\n *\n * @param {String} image - It needs to be a valid CSS background value (just HEXA or image url)\n * @returns {HTMLElement} - create the span element for icon\n */\n createIcon(image) {\n const icon = document.createElement('span');\n icon.classList.add(...this.options.classNames.icon);\n icon.setAttribute('style', `background: ${image}`);\n\n return icon;\n }\n\n /**\n * Create the icon text wrapper\n *\n * @param {String} text - icon text\n * @param {String} description - icon text description\n * @returns {HTMLElement} - span element\n */\n createText(text, description) {\n const textSpan = document.createElement('span');\n textSpan.classList.add(this.options.classNames.text);\n textSpan.innerHTML = text;\n\n if (!description) {\n return textSpan;\n }\n\n const div = document.createElement('div');\n div.classList.add(this.options.classNames.textWithDescription);\n\n div.appendChild(textSpan);\n\n if (description) {\n const descriptionSpan = this.createDescription(description);\n div.appendChild(descriptionSpan);\n }\n\n return div;\n }\n\n /**\n * Create the icon text description\n *\n * @param {String} description - icon text description\n * @returns {HTMLElement} - span element\n */\n createDescription(description) {\n const span = document.createElement('span');\n span.classList.add(this.options.classNames.description);\n span.innerHTML = description;\n\n return span;\n }\n\n /**\n * Create the icon text badge\n *\n * @param {String} badge - badge\n * @returns {HTMLElement} - span element\n */\n createBadge(badge) {\n badge = tryParseJSON(badge);\n const span = document.createElement('span');\n span.classList.add(badge.image ? this.options.classNames.badgeImage : this.options.classNames.badge);\n span.innerHTML = badge.image ? badge.image : badge.title;\n\n if (!badge.image) {\n span.style.backgroundColor = badge.backgroundColor;\n span.style.color = badge.textColor;\n }\n\n return span;\n }\n\n /**\n * Create a placeholder button\n *\n * @returns {HTMLElement} - button element\n */\n createPlaceholder() {\n const button = document.createElement('button');\n const labelElement = document.createElement('div');\n\n labelElement.classList.add(this.options.classNames.srOnly);\n labelElement.innerHTML = `${this.field.getAttribute('aria-label')}`;\n\n button.classList.add(this.options.classNames.placeholder);\n button.setAttribute('id', `${this.id}-button`);\n button.setAttribute('type', 'button');\n button.setAttribute('role', 'combobox');\n button.setAttribute('aria-controls', `${this.id}-listbox`);\n button.setAttribute('aria-haspopup', 'listbox');\n button.setAttribute('aria-labelledby', `${this.id}-label`);\n button.setAttribute('aria-expanded', 'false');\n\n if (this.selectors.currentPanelItem) {\n button.innerHTML = this.selectors.currentPanelItem.innerHTML;\n\n this.setPlaceholderText(this.selectors.currentPanelItem, button);\n }\n\n if (this.isDisabledItem(this.selectors.currentPanelItem)) {\n this.disableItem(button);\n }\n\n this.element.prepend(button);\n this.element.prepend(labelElement);\n\n return button;\n }\n\n /**\n * Toggle the panel - if closed, it will open and vice-versa\n */\n togglePanel() {\n if (this.state.isOpened) {\n this.closePanel();\n } else {\n this.openPanel();\n }\n }\n\n /**\n * Open the panel and method only used for custom panel\n */\n openPanel() {\n if (this.state.isOpened) {\n return;\n }\n\n this.autoPositionPanel();\n\n this.state.isOpened = true;\n this.element.classList.add(this.options.classNames.opened);\n\n if (!this.state.native && this.selectors.panel.style.width !== `${this.element.clientWidth}px`) {\n this.selectors.panel.style.width = `${this.element.clientWidth}px`;\n }\n\n if (!this.state.native && this.selectors.panel) {\n this.selectors.panel.style.display = 'block';\n\n if (this.selectors.list) {\n this.selectors.list.setAttribute('aria-activedescendant', this.selectors.selectedPanelItem.getAttribute('id'));\n }\n }\n\n // for TP event 98\n if (this.analytics && this.analytics.openPanelEvent) {\n const eventData = {\n category: this.analytics.openPanelEvent.placement,\n action: this.analytics.openPanelEvent.action || 'select',\n label: this.analytics.openPanelEvent.label,\n };\n\n if (this.analytics.openPanelEvent.extraData) {\n eventData.extraData = this.analytics.openPanelEvent.extraData;\n }\n\n Event.emit('analytics.event', eventData);\n }\n }\n\n /**\n * Close the panel and method only used for custom panel\n */\n closePanel() {\n if (!this.state.isOpened) {\n return;\n }\n\n this.state.isOpened = false;\n this.element.classList.remove(this.options.classNames.opened);\n\n if (this.state.autoPosition) {\n // if panel is closed, we need to destroy the autoPosition listeners\n this.state.autoPosition.destroy();\n }\n\n if (this.options.filter) {\n this.clearFilter();\n }\n\n if (!this.state.native && this.selectors.panel) {\n this.selectors.panel.style.display = '';\n\n if (this.selectors.list) {\n this.selectors.list.setAttribute('aria-activedescendant', '');\n }\n }\n }\n\n /**\n * Auto position the panel if we use the custom panel\n */\n autoPositionPanel() {\n if (this.state.native || !this.options.autoPositionPanel) {\n return;\n }\n\n SystemJS.import('@popperjs/core').then(({ createPopper }) => {\n this.state.autoPosition = createPopper(\n this.selectors.placeholder,\n this.selectors.panel,\n {\n placement: this.options.position,\n modifiers: [\n {\n name: 'preventOverflow',\n options: {\n padding: 0,\n },\n },\n ],\n onFirstUpdate: () => {\n this.selectors.panel.style.display = 'block';\n this.selectors.list.focus();\n },\n },\n );\n });\n }\n\n /**\n * Panel click handler\n * Highlight the selected value in the panel item list\n *\n * @param { customEvent } e - custom event\n */\n onPanelClick(e) {\n const { target } = e;\n let selectedElement;\n\n if (target.getAttribute('role') === 'option') {\n selectedElement = target;\n } else if (target.parentElement.getAttribute('role') === 'option') {\n selectedElement = target.parentElement;\n } else {\n return;\n }\n\n this.setSelectedIndex(selectedElement.getAttribute('data-index'));\n\n if (this.options.closeOnSelect) {\n // after choosing a value, we close the panel\n this.closePanel();\n }\n }\n\n /**\n * Hover select event handler. Only if trigger is hover\n * Opens the panel\n */\n onSelectHover() {\n if (this.leaveTimeout) {\n clearTimeout(this.leaveTimeout);\n }\n\n this.openPanel();\n }\n\n /**\n * Leave select event handler. Only if trigger is hover\n * closes the panel\n */\n onSelectLeave() {\n this.leaveTimeout = setTimeout(this.closePanel.bind(this), this.options.closeTimeout);\n }\n\n /**\n * Select the item in the panel. No change event will happen\n *\n * @param {HTMLElement} element - HTML element\n */\n selectPanelItem(element) {\n if (this.selectors.currentPanelItem) {\n this.unSelectPanelItem(this.selectors.currentPanelItem);\n }\n\n element.classList.add(this.options.classNames.selected);\n this.selectors.currentPanelItem = element;\n if (this.selectors.list) {\n this.selectors.list.setAttribute('aria-activedescendant', element.getAttribute('id'));\n }\n }\n\n /**\n * Unselect the selected item state. No change event will happen\n *\n * @param {HTMLElement} element - HTML element\n */\n unSelectPanelItem(element) {\n element.classList.remove(this.options.classNames.selected);\n this.selectors.currentPanelItem = null;\n }\n\n /**\n * Returns product enabled status\n *\n * @param {HTMLElement} element - HTML element\n * @returns {Boolean} True or False\n */\n isDisabledItem(element) {\n return element && element instanceof HTMLElement && element.getAttribute('data-js-disabled') === 'true';\n }\n\n /**\n * Disable the item in the panel. No change event will happen\n *\n * @param {HTMLElement} element - HTML element\n */\n disableItem(element) {\n if (element && element instanceof HTMLElement) {\n element.setAttribute('data-js-disabled', true);\n element.classList.add(this.options.classNames.disabled);\n }\n }\n\n /**\n * Enable the item in the panel. No change event will happen\n *\n * @param {HTMLElement} element - HTML element\n */\n enableItem(element) {\n if (element && element instanceof HTMLElement) {\n element.setAttribute('data-js-disabled', false);\n element.classList.remove(this.options.classNames.disabled);\n }\n }\n\n /**\n * Select the option by the given value. The value should be present in the option list or it will take the index 0 by default\n * if there is no match\n *\n * @param {String} value - option value\n */\n setValue(value) {\n // if value is empty then we assume that placeholder is at position 0\n if (value === '') {\n this.setSelectedIndex(0);\n } else {\n const selectedOption = this.field.querySelector(`option[value=\"${value}\"]`);\n\n if (selectedOption) {\n this.setSelectedIndex(selectedOption.index);\n }\n }\n }\n\n /**\n * Select the option by the given attribute value\n * @param {String} attribute - attribute name\n * @param {String} attributeValue - option value\n */\n setValueByAttribute(attribute, attributeValue) {\n const option = this.field.querySelector(`option[${attribute}=\"${attributeValue}\"]`);\n const value = (option && option.getAttribute('value')) || '';\n this.setValue(value);\n }\n\n /**\n * Select the option by its index.\n * @param {String|Number} index - selected index\n * @param {Boolean} skipValidation - Enable validation event triggering or not\n */\n setSelectedIndex(index, skipValidation = false) {\n if (Number(this.field.selectedIndex) === Number(index)) {\n return;\n }\n this.field.selectedIndex = index || 0;\n\n // When manually changed the value of the select. We need to trigger manually the change event\n if (!skipValidation) {\n trigger('change', this.field, { bubbles: true });\n }\n }\n\n /**\n * Filter keyDown handler\n *\n * @param { customEvent } event - custom event\n */\n onFilterChange(event) {\n const { target } = event;\n\n this.filter(target.value);\n }\n\n /**\n * Filter options by value\n *\n * @param { String } value - entered value\n */\n filter(value) {\n this.state.filteredItems = [];\n\n this.selectors.listItem.forEach((item) => {\n if (!value) {\n // if no value is passed, we show all the results\n this.state.filteredItems.push(item);\n this.highLightSearchText(item, '');\n item.classList.remove(this.options.classNames.hidden);\n } else {\n const isTextMatching = this.isTextMatching(item.textContent, value);\n let isBucketMatching = false;\n\n if (item.dataset && item.dataset.jsBucket) {\n isBucketMatching = this.isTextMatching(item.dataset.jsBucket, value);\n }\n\n if (isTextMatching || isBucketMatching) {\n this.state.filteredItems.push(item);\n this.highLightSearchText(item, value);\n item.classList.remove(this.options.classNames.hidden);\n } else {\n item.classList.add(this.options.classNames.hidden);\n }\n }\n });\n\n if (value && value.length) {\n this.selectors.filterPanel.classList.add(this.options.classNames.active);\n this.selectors.filterButton.removeAttribute('aria-hidden');\n this.selectors.filterButton.removeAttribute('tabindex');\n } else {\n this.selectors.filterPanel.classList.remove(this.options.classNames.active);\n this.selectors.filterButton.setAttribute('aria-hidden', 'true');\n this.selectors.filterButton.setAttribute('tabindex', '-1');\n }\n if (value && this.state.filteredItems.length) {\n this.setCurrentPanelItem(0);\n this.currentItemIndex = 0;\n }\n this.toggleNoResult();\n }\n\n /**\n * Check if there is any term matching the text\n * @param { string } text text\n * @param { string } term term to be matched\n * @returns { boolean } return true if it is matching\n */\n isTextMatching(text, term) {\n return text ? text.toLowerCase().indexOf(term.toLowerCase()) > -1 : false;\n }\n\n /**\n * Set highlight text to element\n * @param { HTMLElement } element - HTML element\n * @param { String } filterValue - any value\n */\n highLightSearchText(element, filterValue) {\n if (this.options.useIcon) {\n element = element.querySelector(`.${this.options.classNames.text}`);\n }\n\n element.innerHTML = this.getHighlightTerm(element.textContent, filterValue);\n }\n\n /**\n * Show/hide No Result section\n */\n toggleNoResult() {\n if (this.state.filteredItems.length) {\n this.selectors.filterNoResults.classList.add(this.options.classNames.srOnly);\n this.selectors.filterNoResults.innerText = this.state.filteredItems.length > 1\n ? this.options.a11y.filterResults.replace('{0}', this.state.filteredItems.length)\n : this.options.a11y.filterResult;\n } else {\n this.selectors.filterNoResults.classList.remove(this.options.classNames.srOnly);\n this.selectors.filterNoResults.innerText = this.options.a11y.filterNoResults;\n }\n }\n\n /**\n * Create a panel based on the options\n */\n onClearFilter() {\n if (!this.selectors.filterInput.value.length) {\n return;\n }\n\n this.selectors.filterInput.focus();\n this.clearFilter();\n }\n\n /**\n * Create a panel based on the options\n */\n clearFilter() {\n this.selectors.filterInput.value = '';\n this.filter(this.selectors.filterInput.value);\n }\n\n /**\n * Highlight filter term inside suggested phrase/text\n *\n * @param {string} fullText - suggested phrase/text\n * @param {string} term - term to highlight\n * @returns {string} - fullText with highlighted filter term if found inside\n */\n getHighlightTerm(fullText, term) {\n const index = fullText.toLowerCase().indexOf(term.toLowerCase());\n\n let result = '';\n if (index !== -1 && term !== '') {\n result = `${fullText.slice(0, index)}`;\n result += `${fullText.slice(index, index + term.length)}${fullText.slice(index + term.length)}`;\n return result;\n }\n return fullText;\n }\n\n /**\n * On onMediaQueryChange, It closes the panel and reset the native state depending on the configuration\n */\n onMediaQueryChange() {\n super.onMediaQueryChange();\n\n if (!this.state.native && this.state.isOpened) {\n this.closePanel();\n }\n\n this.checkNative();\n }\n\n /**\n * Handler that is called when the user resizes its window. Width of custom select have to be recalculated.\n */\n onResize() {\n if (!this.state.native && this.selectors.panel) {\n this.selectors.panel.style.width = `${this.element.clientWidth}px`;\n }\n }\n\n /**\n * Select the first option of the list\n */\n reset() {\n if (this.options.selectFirstOptionOnReset) {\n this.setSelectedIndex(0, true);\n }\n\n super.removeValidationClass();\n }\n\n /**\n * Remove the nodes used for custom select\n */\n removeCustomSelect() {\n this.selectors.currentPanelItem = null;\n\n if (this.selectors.container) {\n // remove panel from the container\n this.selectors.container.removeChild(this.selectors.panel);\n } else {\n this.element.removeChild(this.selectors.panel);\n }\n\n if (this.options.useIcon) {\n this.element.removeChild(this.selectors.placeholder);\n }\n }\n\n /**\n * Remove everything related to custom select, removal of the nodes and events\n */\n destroyCustomSelect() {\n this.unbindCustomSelectEvents();\n this.removeCustomSelect();\n }\n\n /**\n * Accessibility\n * Toggle the panel - if closed, it will open and vice-versa\n *\n * @param { Object } event - Object event\n */\n onSelectItemKeyDown(event) {\n switch (event.key) {\n case 'Tab': // 'Tab' key\n if (event.target === this.selectors.list) {\n if (this.options.filter && !event.shiftKey) {\n event.preventDefault();\n this.selectors.filterInput.focus();\n } else {\n this.onKeyClosePanel();\n }\n }\n break;\n case 'Enter': // 'Enter' key\n if (event.target === this.selectors.filterButton) {\n return;\n }\n event.preventDefault();\n if (this.selectors.currentPanelItem) {\n this.setSelectedIndex(this.selectors.currentPanelItem.getAttribute('data-index'));\n }\n\n this.onKeyTogglePanel();\n break;\n case 'Escape': // 'Escape' key\n event.preventDefault();\n\n if (this.state.isOpened) {\n event.stopImmediatePropagation();\n this.onKeyClosePanel();\n }\n break;\n case ' ': // 'Whitespace' key\n if (event.target === this.selectors.filterInput || event.target === this.selectors.filterButton) {\n return;\n }\n event.preventDefault();\n\n if (this.selectors.currentPanelItem) {\n this.setSelectedIndex(this.selectors.currentPanelItem.getAttribute('data-index'));\n }\n\n this.onKeyTogglePanel();\n break;\n case 'End': // 'End' key\n if (this.selectors.currentPanelItem && event.target !== this.selectors.filterInput) {\n event.preventDefault();\n this.focusPanelItem(this.state.filteredItems.length - 1);\n }\n break;\n case 'Home': // 'Home' key\n if (this.selectors.currentPanelItem && event.target !== this.selectors.filterInput) {\n event.preventDefault();\n this.focusPanelItem(0);\n }\n break;\n case 'ArrowUp': // 'ArrowUp' key\n event.preventDefault();\n event.stopPropagation();\n if (this.selectors.currentPanelItem) {\n this.focusPanelItem(this.currentItemIndex - 1);\n }\n if (!this.state.isOpened) {\n this.onKeyOpenPanel();\n }\n break;\n case 'ArrowDown': // 'ArrowDown' key\n event.preventDefault();\n event.stopPropagation();\n if (this.selectors.currentPanelItem) {\n this.focusPanelItem(this.currentItemIndex + 1);\n }\n if (!this.state.isOpened) {\n this.onKeyOpenPanel();\n }\n break;\n default:\n break;\n }\n }\n\n /**\n * Focused to panel list items with selection current item\n *\n * @param { Number } index - index of element\n */\n focusPanelItem(index) {\n this.selectors.list.focus();\n this.setCurrentPanelItem(index);\n this.selectors.currentPanelItem.scrollIntoView(this.options.scrollIntoView);\n }\n\n /**\n * Open the panel, only used for key controls\n */\n onKeyOpenPanel() {\n this.openPanel();\n this.selectors.placeholder.setAttribute('aria-expanded', 'true');\n }\n\n /**\n * Close the panel, only used for key controls\n */\n onKeyClosePanel() {\n this.closePanel();\n this.selectors.placeholder.setAttribute('aria-expanded', 'false');\n this.selectors.placeholder.focus();\n }\n\n /**\n * Toggle the panel - if closed, it will open and vice-versa\n */\n onKeyTogglePanel() {\n if (!this.state.isOpened) {\n this.onKeyOpenPanel();\n } else {\n this.onKeyClosePanel();\n }\n }\n\n /**\n * Accessibility for native select\n * Block 'onChange' handler for select event if user press arrrows\n *\n * @param { Object } event - Object event\n */\n onNativeSelectItemKeyDown(event) {\n const keyBoardActions = ['Tab', 'Enter']; // Tab, Enter keys\n const isActionKey = keyBoardActions.indexOf(event.key) !== -1;\n\n if (!isActionKey && !event.altKey) {\n this.state.isPreventChange = true;\n } else if (isActionKey && this.state.isPreventChange) { // 'Enter', 'Tab' key\n this.state.isPreventChange = false;\n\n if (event.key !== 'Tab') {\n event.preventDefault();\n }\n // manually trigger change event on Enter or Tab click\n trigger('change', this.field, { bubbles: true });\n } else {\n this.state.isPreventChange = false;\n }\n }\n\n /**\n * Set initial field state depending on content\n */\n initFieldState() {\n if (this.field.value !== '') {\n this.setFieldState(true);\n }\n }\n\n /**\n * On hover event handler\n */\n onMouseEnter() {\n this.element.classList.add(this.options.classNames.hover);\n }\n\n /**\n * Onleave hover event handler\n */\n onMouseLeave() {\n this.element.classList.remove(this.options.classNames.hover);\n }\n\n /**\n * Set active item in the dropdown panel, not selected yet\n * @param { number } index index of the element to be highlighted\n */\n setCurrentPanelItem(index) {\n const filteredItemsCount = this.state.filteredItems.length;\n\n if (filteredItemsCount <= 0 || filteredItemsCount < index) {\n return;\n }\n\n if (this.state.filteredItems[index]) {\n this.selectPanelItem(this.state.filteredItems[index]);\n this.currentItemIndex = index;\n }\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 if (this.state.isOpened) {\n this.closePanel();\n }\n\n if (!this.state.native) {\n this.unbindCustomSelectEvents();\n } else {\n off('keydown', this.field);\n }\n\n super.destroy();\n }\n}\n"],"mappings":"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","ignoreList":[]}