{"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","label","hasDescription","text","description","badge","badgeImage","textWithDescription","iconState","icon","optionsMap","optionsMapUrl","selectFirstOptionOnReset","_resizable","trackFocusedElements","triggerDependencyOnInit","initCache","wrapField","classes","filterPanel","filterInput","filterButton","selectors","document","querySelector","checkNative","state","initCustomSelectCache","currentLabel","currentPanelItem","selectOptions","field","querySelectorAll","createCustomPanel","createPlaceholder","filteredItems","initState","defaultOption","index","selectedIndex","value","selectedOption","autoPosition","isOpened","isPreventChange","hasInit","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","triggerDependencyOnFieldInit","action","detail","dependency","stateDependencies","bubbles","dependentActions","masterField","redirect","openNewTab","redirectType","window","open","e","stopPropagation","currentTarget","saveLastFocusState","selectedItem","clearFilter","setAttribute","initFieldState","selectedPanelItem","currentItemIndex","isDisabledItem","disableItem","enableItem","analytics","placement","innerTextToLowerCase","selectedOptions","innerText","toLowerCase","eventData","category","replace","labelHeading","ecommerce","eventType","extraData","Object","keys","key","emit","selectPanelItem","innerHTML","setPlaceholderText","buttonText","span","updateValue","Array","isArray","map","val","opt","option","tagAttributes","destroyCustomSelect","onPanelClick","onSelectItemKeyDown","onKeyTogglePanel","onFilterChange","onClearFilter","preventDefault","togglePanel","contains","target","closePanel","onMouseEnter","onMouseLeave","onSelectHover","onSelectLeave","error","unbindCustomSelectEvents","destroy","afterInit","restoreLastFocusState","isOptionsWithDescription","some","jsDescription","isNative","is","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","buttonClasses","split","prepend","labelElement","labelText","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","from","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 label: 'c-select__label',\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 triggerDependencyOnInit: false, // Determines if to trigger state dependencies on init\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.currentLabel = this.element.querySelector(`.${this.options.classNames.label}`);\n this.selectors.currentPanelItem = null;\n this.selectors.selectOptions = this.field.querySelectorAll('option');\n this.state.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 this.state.filteredItems = this.selectors.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 let triggerDependencyOnFieldInit = false;\n if (this.state.fieldState === null) {\n this.state.fieldState = newState;\n triggerDependencyOnFieldInit = this.options.triggerDependencyOnInit;\n }\n\n const action = event && event.detail && event.detail.action;\n\n if (newState !== this.state.fieldState || action === 'triggerStateEvents' || triggerDependencyOnFieldInit) {\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.state.filter) {\n this.clearFilter();\n }\n if (selectedItem) {\n this.selectItem(panelButton, selectedItem);\n panelButton.setAttribute('aria-expanded', 'false');\n }\n\n this.initFieldState();\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\n if (opt.tagAttributes) {\n Object.keys(opt.tagAttributes).forEach((key) => {\n option.setAttribute(key, opt.tagAttributes[key]);\n });\n }\n\n this.field.add(option);\n\n if (opt.selected) {\n this.field.value = opt.val;\n }\n });\n\n this.selectors.selectOptions = this.field.querySelectorAll('option');\n\n if (!this.state.native) {\n this.destroyCustomSelect();\n this.initCustomSelectCache();\n this.bindCustomSelectEvents();\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.state.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.selectors.filterInput) {\n off('input', this.selectors.filterInput);\n }\n\n if (this.selectors.filterButton) {\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.state.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\n if (image) {\n icon.classList.add(...this.options.classNames.icon);\n icon.setAttribute('style', `background: ${image}`);\n }\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 buttonClasses = this.options.classNames.placeholder.split(' ').filter(item => item);\n\n button.classList.add(...buttonClasses);\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-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\n if (this.field.getAttribute('aria-label') || this.selectors.currentLabel) {\n const labelElement = document.createElement('div');\n const labelText = this.field.getAttribute('aria-label') ? this.field.getAttribute('aria-label') : this.selectors.currentLabel.innerHTML;\n\n labelElement.classList.add(this.options.classNames.srOnly);\n labelElement.innerHTML = `${labelText}`;\n button.setAttribute('aria-labelledby', `${this.id}-label`);\n\n this.element.prepend(labelElement);\n }\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.state.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 if (!this.state.native) {\n const selectedItem = this.selectors.panel.querySelector('[data-value]');\n const panelButton = this.selectors.placeholder;\n if (this.state.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 }\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 this.element.removeChild(this.selectors.placeholder);\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.state.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 this.setFieldState(Array.from(this.field.querySelectorAll('option'))\n .some(item => item.value === this.field.value));\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":[]}