package.dist.MultiComboBox.js.map Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of webcomponents Show documentation
Show all versions of webcomponents Show documentation
UI5 Web Components: webcomponents.main
The newest version!
{"version":3,"file":"MultiComboBox.js","sourceRoot":"","sources":["../src/MultiComboBox.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport type { ClassMap, Timeout } from \"@ui5/webcomponents-base/dist/types.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport {\n\tisShow,\n\tisDown,\n\tisUp,\n\tisSpace,\n\tisSpaceCtrl,\n\tisSpaceShift,\n\tisRight,\n\tisHome,\n\tisEnd,\n\tisTabNext,\n\tisTabPrevious,\n\tisUpShift,\n\tisDownShift,\n\tisLeftCtrl,\n\tisRightCtrl,\n\tisUpCtrl,\n\tisDownCtrl,\n\tisHomeCtrl,\n\tisEndCtrl,\n\tisCtrlA,\n\tisInsertShift,\n\tisBackSpace,\n\tisDelete,\n\tisEscape,\n\tisEnter,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport {\n\tisPhone,\n\tisAndroid,\n\tisFirefox,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport \"@ui5/webcomponents-icons/dist/decline.js\";\nimport \"@ui5/webcomponents-icons/dist/multiselect-all.js\";\nimport \"@ui5/webcomponents-icons/dist/not-editable.js\";\nimport \"@ui5/webcomponents-icons/dist/error.js\";\nimport \"@ui5/webcomponents-icons/dist/alert.js\";\nimport \"@ui5/webcomponents-icons/dist/sys-enter-2.js\";\nimport \"@ui5/webcomponents-icons/dist/information.js\";\nimport { getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AriaLabelHelper.js\";\nimport { getScopedVarName } from \"@ui5/webcomponents-base/dist/CustomElementsScope.js\";\nimport { submitForm } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport MultiComboBoxItem, { isInstanceOfMultiComboBoxItem } from \"./MultiComboBoxItem.js\";\nimport MultiComboBoxItemGroup, { isInstanceOfMultiComboBoxItemGroup } from \"./MultiComboBoxItemGroup.js\";\nimport ListItemGroup from \"./ListItemGroup.js\";\nimport Tokenizer, { getTokensCountText } from \"./Tokenizer.js\";\nimport type { TokenizerTokenDeleteEventDetail } from \"./Tokenizer.js\";\nimport Token from \"./Token.js\";\nimport Icon from \"./Icon.js\";\nimport type { IIcon } from \"./Icon.js\";\nimport Popover from \"./Popover.js\";\nimport ResponsivePopover from \"./ResponsivePopover.js\";\nimport List from \"./List.js\";\nimport type { ListSelectionChangeEventDetail } from \"./List.js\";\nimport ListItemStandard from \"./ListItemStandard.js\";\nimport ToggleButton from \"./ToggleButton.js\";\nimport * as Filters from \"./Filters.js\";\nimport Button from \"./Button.js\";\nimport {\n\tVALUE_STATE_SUCCESS,\n\tVALUE_STATE_ERROR,\n\tVALUE_STATE_WARNING,\n\tVALUE_STATE_INFORMATION,\n\tVALUE_STATE_TYPE_SUCCESS,\n\tVALUE_STATE_TYPE_INFORMATION,\n\tVALUE_STATE_TYPE_ERROR,\n\tVALUE_STATE_TYPE_WARNING,\n\tINPUT_SUGGESTIONS_TITLE,\n\tSELECT_OPTIONS,\n\tSHOW_SELECTED_BUTTON,\n\tMULTICOMBOBOX_DIALOG_OK_BUTTON,\n\tCOMBOBOX_AVAILABLE_OPTIONS,\n\tVALUE_STATE_ERROR_ALREADY_SELECTED,\n\tMCB_SELECTED_ITEMS,\n\tINPUT_CLEAR_ICON_ACC_NAME,\n\tFORM_MIXED_TEXTFIELD_REQUIRED,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Templates\nimport MultiComboBoxTemplate from \"./generated/templates/MultiComboBoxTemplate.lit.js\";\n\n// Styles\nimport multiCbxStyles from \"./generated/themes/MultiComboBox.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\nimport ValueStateMessageCss from \"./generated/themes/ValueStateMessage.css.js\";\nimport SuggestionsCss from \"./generated/themes/Suggestions.css.js\";\nimport MultiComboBoxPopover from \"./generated/themes/MultiComboBoxPopover.css.js\";\nimport type ComboBoxFilter from \"./types/ComboBoxFilter.js\";\nimport type ListItemBase from \"./ListItemBase.js\";\nimport CheckBox from \"./CheckBox.js\";\nimport Input from \"./Input.js\";\nimport type { InputEventDetail } from \"./Input.js\";\nimport type PopoverHorizontalAlign from \"./types/PopoverHorizontalAlign.js\";\nimport SuggestionItem from \"./SuggestionItem.js\";\n\n/**\n * Interface for components that may be slotted inside a `ui5-multi-combobox` as items\n * @public\n */\ninterface IMultiComboBoxItem extends UI5Element {\n\ttext?: string,\n\theaderText?: string,\n\tselected: boolean,\n\tisGroupItem?: boolean,\n\tstableDomRef: string,\n\t_isVisible?: boolean,\n\titems?: Array,\n}\n\ntype ValueStateAnnouncement = Record, string>;\ntype ValueStateTypeAnnouncement = Record, string>;\n\ntype MultiComboBoxSelectionChangeEventDetail = {\n\titems: Array,\n};\n\ntype MultiComboboxItemWithSelection = {\n\tref: IMultiComboBoxItem,\n\tselected: boolean,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-multi-combobox` component consists of a list box with items and a text field allowing the user to either type a value directly into the text field, or choose from the list of existing items.\n *\n * The drop-down list is used for selecting and filtering values, it enables users to select one or more options from a predefined list. The control provides an editable input field to filter the list, and a dropdown arrow to expand/collapse the list of available options.\n * The options in the list have checkboxes that permit multi-selection. Entered values are displayed as tokens.\n * ### Structure\n * The `ui5-multi-combobox` consists of the following elements:\n *\n * - Tokenizer - a list of tokens with selected options.\n * - Input field - displays the selected option/s as token/s. Users can type to filter the list.\n * - Drop-down arrow - expands\\collapses the option list.\n * - Option list - the list of available options.\n *\n * ### Keyboard Handling\n *\n * The `ui5-multi-combobox` provides advanced keyboard handling.\n *\n * #### Picker\n * If the `ui5-multi-combobox` is focused,\n * you can open or close the drop-down by pressing [F4], [Alt] + [Up] or [Alt] + [Down] keys.\n * Once the drop-down is opened, you can use the `UP` and `DOWN` arrow keys\n * to navigate through the available options and select one by pressing the `Space` or `Enter` keys.\n *\n * #### Tokens\n *\n * - Left/Right arrow keys - moves the focus selection form the currently focused token to the previous/next one (if available).\n * - Delete - deletes the token and focuses the previous token.\n * - Backspace - deletes the token and focus the next token.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/MultiComboBox.js\";`\n * @constructor\n * @extends UI5Element\n * @public\n * @since 0.11.0\n * @csspart token-\\{index\\} - Used to style each token(where `token-0` corresponds to the first item)\n */\n@customElement({\n\ttag: \"ui5-multi-combobox\",\n\tlanguageAware: true,\n\tformAssociated: true,\n\trenderer: litRender,\n\ttemplate: MultiComboBoxTemplate,\n\tstyles: [\n\t\tmultiCbxStyles,\n\t\tResponsivePopoverCommonCss,\n\t\tValueStateMessageCss,\n\t\tSuggestionsCss,\n\t\tMultiComboBoxPopover,\n\t],\n\tdependencies: [\n\t\tMultiComboBoxItem,\n\t\tMultiComboBoxItemGroup,\n\t\tTokenizer,\n\t\tToken,\n\t\tIcon,\n\t\tInput,\n\t\tResponsivePopover,\n\t\tPopover,\n\t\tList,\n\t\tListItemStandard,\n\t\tListItemGroup,\n\t\tToggleButton,\n\t\tButton,\n\t\tCheckBox,\n\t\tSuggestionItem,\n\t],\n})\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout.\n * @public\n */\n@event(\"change\")\n\n/**\n * Fired when the value of the component changes at each keystroke or clear icon is pressed.\n * @public\n */\n@event(\"input\")\n\n/**\n * Fired when the dropdown is opened.\n * @since 2.0.0\n * @public\n */\n@event(\"open\")\n\n/**\n * Fired when the dropdown is closed.\n * @since 2.0.0\n * @public\n */\n@event(\"close\")\n\n/**\n * Fired when selection is changed by user interaction.\n * @param {IMultiComboBoxItem[]} items an array of the selected items.\n * @public\n * @allowPreventDefault\n */\n@event(\"selection-change\", {\n\tdetail: {\n\t\t/**\n\t\t * @public\n\t\t */\n\t\titems: { type: Array },\n\t},\n})\n\nclass MultiComboBox extends UI5Element implements IFormInputElement {\n\t/**\n\t * Defines the value of the component.\n\t *\n\t * **Note:** The property is updated upon typing.\n\t * @default \"\"\n\t * @formEvents change input\n\t * @formProperty\n\t * @public\n\t */\n\t@property()\n\tvalue = \"\";\n\n\t/**\n\t * Determines the name by which the component will be identified upon submission in an HTML form.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.\n\t * **Note:** When the component is used inside a form element,\n\t * the value is sent as the first element in the form data, even if it's empty.\n\t * @default undefined\n\t * @public\n\t * @since 2.0.0\n\t */\n\t@property()\n\tname?: string;\n\n\t/**\n\t * Defines whether the value will be autcompleted to match an item\n\t * @default false\n\t * @public\n\t * @since 1.4.0\n\t */\n\t@property({ type: Boolean })\n\tnoTypeahead = false;\n\n\t/**\n\t * Defines a short hint intended to aid the user with data entry when the\n\t * component has no value.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tplaceholder?: string;\n\n\t/**\n\t * Defines if the user input will be prevented, if no matching item has been found\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tnoValidation = false;\n\n\t/**\n\t * Defines whether the component is in disabled state.\n\t *\n\t * **Note:** A disabled component is completely noninteractive.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Defines the value state of the component.\n\t * @default \"None\"\n\t * @public\n\t */\n\t@property()\n\tvalueState: `${ValueState}` = \"None\";\n\n\t/**\n\t * Defines whether the component is read-only.\n\t *\n\t * **Note:** A read-only component is not editable,\n\t * but still provides visual feedback upon user interaction.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\treadonly = false;\n\n\t/**\n\t * Defines whether the component is required.\n\t * @default false\n\t * @public\n\t * @since 1.0.0-rc.5\n\t */\n\t@property({ type: Boolean })\n\trequired = false;\n\n\t/**\n\t * Defines the filter type of the component.\n\t * @default \"StartsWithPerTerm\"\n\t * @public\n\t */\n\t@property()\n\tfilter: `${ComboBoxFilter}` = \"StartsWithPerTerm\";\n\n\t/**\n\t * Defines whether the clear icon of the multi-combobox will be shown.\n\t * @default false\n\t * @public\n\t * @since 1.20.1\n\t */\n\t@property({ type: Boolean })\n\tshowClearIcon = false;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.4.0\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Receives id(or many ids) of the elements that label the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.4.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Determines if the select all checkbox is visible on top of suggestions.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowSelectAll = false;\n\n\t@property()\n\t_effectiveValueState: `${ValueState}` = \"None\";\n\t/**\n\t * Indicates whether the value state message popover is open.\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\tvalueStateOpen = false;\n\n\t/**\n\t * Indicates whether the Tokenizer n-more popover is open.\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\ttokenizerOpen = false;\n\n\t/**\n\t * Indicates whether the items picker is open.\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\t_open = false;\n\n\t@property()\n\t_valueBeforeOpen = this.value;\n\n\t@property({ type: Array })\n\t_filteredItems!: Array;\n\n\t@property({ type: Array })\n\t_previouslySelectedItems!: Array;\n\n\t@property({ type: Boolean })\n\tfilterSelected = false;\n\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_tokenizerFocused = false;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_iconPressed = false;\n\n\t@property({ type: Number, noAttribute: true })\n\t_inputWidth = 0;\n\n\t@property({ type: Number, noAttribute: true })\n\t_listWidth = 0;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_performingSelectionTwice = false;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_allSelected = false;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_effectiveShowClearIcon = false;\n\n\t@property()\n\t_dialogInputValueState: `${ValueState}` = \"None\";\n\n\t/**\n\t * Indicates whether the tokenizer has tokens\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\ttokenizerAvailable = false;\n\n\t/**\n\t * Defines the component items.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, \"default\": true, invalidateOnChildChange: true })\n\titems!: Array;\n\n\t/**\n\t* Defines the icon to be displayed in the component.\n\t* @public\n\t* @since 1.0.0-rc.9\n\t*/\n\t@slot()\n\ticon!: Array;\n\n\t/**\n\t * Defines the value state message that will be displayed as pop up under the component.\n\t * The value state message slot should contain only one root element.\n\t *\n\t * **Note:** If not specified, a default text (in the respective language) will be displayed.\n\t *\n\t * **Note:** The `valueStateMessage` would be displayed,\n\t * when the component is in `Information`, `Critical` or `Negative` value state.\n\t * @since 1.0.0-rc.9\n\t * @public\n\t */\n\t@slot()\n\tvalueStateMessage!: Array;\n\n\tselectedValues: Array;\n\t_inputLastValue: string;\n\t_deleting: boolean;\n\t_validationTimeout: Timeout | null;\n\t_handleResizeBound: ResizeObserverCallback;\n\tvalueBeforeAutoComplete: string;\n\tcurrentItemIdx: number;\n\t_lastValue: string;\n\t_shouldFilterItems?: boolean;\n\t_showMorePressed?: boolean;\n\t_clearingValue?: boolean;\n\tvalueStateHeader?: HTMLElement;\n\tlist?: List;\n\t_shouldAutocomplete?: boolean;\n\t_preventTokenizerToggle?: boolean;\n\t_isOpenedByKeyboard?: boolean;\n\t_itemToFocus?: IMultiComboBoxItem;\n\t_itemsBeforeOpen: Array;\n\tselectedItems: Array;\n\tstatic i18nBundle: I18nBundle;\n\n\tget formValidityMessage() {\n\t\treturn MultiComboBox.i18nBundle.getText(FORM_MIXED_TEXTFIELD_REQUIRED);\n\t}\n\n\tget formValidity(): ValidityStateFlags {\n\t\tconst selectedItems = (this.items || []).filter(item => item.selected);\n\n\t\treturn { valueMissing: this.required && !this.value && !selectedItems.length };\n\t}\n\n\tasync formElementAnchor() {\n\t\treturn this.getFocusDomRefAsync();\n\t}\n\n\tget formFormattedValue(): FormData | string | null {\n\t\tconst selectedItems = (this.items || []).filter(item => item.selected);\n\n\t\tif (selectedItems.length && this.name) {\n\t\t\tconst formData = new FormData();\n\n\t\t\tformData.append(this.name, this.value);\n\n\t\t\tfor (let i = 0; i < selectedItems.length; i++) {\n\t\t\t\tformData.append(this.name, selectedItems[i].text!);\n\t\t\t}\n\n\t\t\treturn formData;\n\t\t}\n\n\t\treturn this.value;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._filteredItems = [];\n\t\tthis.selectedItems = [];\n\t\tthis._previouslySelectedItems = [];\n\t\tthis.selectedValues = [];\n\t\tthis._itemsBeforeOpen = [];\n\t\tthis._inputLastValue = \"\";\n\t\tthis._deleting = false;\n\t\tthis._validationTimeout = null;\n\t\tthis._handleResizeBound = this._handleResize.bind(this);\n\t\tthis.valueBeforeAutoComplete = \"\";\n\t\tthis._lastValue = this.getAttribute(\"value\") || \"\";\n\t\tthis.currentItemIdx = -1;\n\t}\n\n\tonEnterDOM() {\n\t\tResizeHandler.register(this, this._handleResizeBound);\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(this, this._handleResizeBound);\n\t}\n\n\t_handleResize() {\n\t\tthis._inputWidth = this.offsetWidth;\n\t}\n\n\t_handleMobileInput(e: CustomEvent) {\n\t\tif (!this.open || this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = e.target as Input;\n\t\tconst value = target.value;\n\n\t\tif (!this.noValidation && !this._filterItems(value).length) {\n\t\t\tthis._dialogInputValueState = ValueState.Negative;\n\t\t} else {\n\t\t\tthis._dialogInputValueState = this.valueState;\n\t\t}\n\n\t\tthis.value = value;\n\t\tthis._shouldFilterItems = true;\n\t\tthis.valueBeforeAutoComplete = value;\n\n\t\tthis.fireEvent(\"input\");\n\t}\n\n\t_inputChange() {\n\t\tif (!this._clearingValue && this._lastValue !== this.value) {\n\t\t\tthis._lastValue = this.value;\n\t\t\tthis.fireEvent(\"change\");\n\t\t}\n\t}\n\n\t_onMobileInputKeydown(e: KeyboardEvent) {\n\t\tif (!isEnter(e)) {\n\t\t\treturn;\n\t\t}\n\t\tconst { value } = (e.target as Input);\n\t\tconst matchingItem = this._getItems().find(item => item.text === value);\n\n\t\tif (!matchingItem) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst initiallySelected = matchingItem?.selected;\n\t\tconst changePrevented = this.fireSelectionChange();\n\n\t\tif (!changePrevented) {\n\t\t\tmatchingItem.selected = !initiallySelected;\n\t\t\tthis._getResponsivePopover().preventFocusRestore = false;\n\t\t\tthis._open = false;\n\t\t\tthis.value = \"\";\n\t\t}\n\t}\n\n\t_toggleTokenizerPopover() {\n\t\tthis.tokenizerOpen = false;\n\t\tthis._open = !this.open;\n\t}\n\n\ttogglePopoverByDropdownIcon() {\n\t\tthis._shouldFilterItems = false;\n\t\tthis._open = !this.open;\n\t\tthis.tokenizerOpen = false;\n\t}\n\n\t_showFilteredItems() {\n\t\tthis.filterSelected = true;\n\t\tthis._showMorePressed = true;\n\n\t\tthis._toggleTokenizerPopover();\n\t}\n\n\tfilterSelectedItems(e: MouseEvent) {\n\t\tthis.filterSelected = (e.target as ToggleButton).pressed;\n\t\tconst selectedItems = this._filteredItems.filter(item => item.selected);\n\n\t\tthis.selectedItems = this._getItems().filter((item, idx, allItems) => MultiComboBox._groupItemFilter(item, ++idx, allItems, selectedItems) || selectedItems.indexOf(item) !== -1);\n\t}\n\n\t/**\n\t * Indicates whether the dropdown is open. True if the dropdown is open, false otherwise.\n\t * @default false\n\t * @public\n\t */\n\tget open(): boolean {\n\t\treturn this._open;\n\t}\n\n\tget _showAllItemsButtonPressed(): boolean {\n\t\treturn this.filterSelected;\n\t}\n\n\tget _inputDom(): HTMLInputElement {\n\t\treturn this.shadowRoot!.querySelector(\"#ui5-multi-combobox-input\")!;\n\t}\n\n\t_inputLiveChange(e: InputEvent) {\n\t\tconst input = e.target as HTMLInputElement;\n\t\tconst value: string = input.value;\n\t\tconst filteredItems: Array = this._filterItems(value);\n\t\tconst oldValueState: `${ValueState}` = this.valueState;\n\n\t\tthis._shouldFilterItems = true;\n\n\t\tif (this.filterSelected) {\n\t\t\tthis.filterSelected = false;\n\t\t}\n\n\t\tif (this._validationTimeout) {\n\t\t\tif (this._filterItems(value).length) {\n\t\t\t\tthis.valueState = this._effectiveValueState;\n\t\t\t\tthis._validationTimeout = null;\n\t\t\t} else {\n\t\t\t\tinput.value = this._inputLastValue;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis._effectiveValueState = this.valueState;\n\n\t\tif (!filteredItems.length && value && !this.noValidation) {\n\t\t\tconst newValue = this.valueBeforeAutoComplete || this._inputLastValue;\n\n\t\t\tinput.value = newValue;\n\t\t\tthis.value = newValue;\n\t\t\tthis.valueState = ValueState.Negative;\n\n\t\t\tthis._shouldAutocomplete = false;\n\t\t\tthis._resetValueState(oldValueState);\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis._inputLastValue = input.value;\n\t\tthis.value = input.value;\n\t\tthis._filteredItems = filteredItems;\n\n\t\tif (!isPhone()) {\n\t\t\tif (filteredItems.length === 0) {\n\t\t\t\tthis._open = false;\n\t\t\t} else {\n\t\t\t\tthis._open = true;\n\t\t\t}\n\t\t}\n\n\t\tthis.fireEvent(\"input\");\n\t}\n\n\t_tokenDelete(e: CustomEvent) {\n\t\tthis._previouslySelectedItems = this._getSelectedItems();\n\t\tconst token: Token[] = e.detail.tokens;\n\t\tconst deletingItems = this.items.filter(item => token.some(t => t.getAttribute(\"data-ui5-id\") === item._id));\n\n\t\tdeletingItems.forEach(item => {\n\t\t\titem.selected = false;\n\t\t});\n\n\t\tthis._deleting = true;\n\t\tthis._preventTokenizerToggle = true;\n\n\t\tthis.focus();\n\t\tconst changePrevented = this.fireSelectionChange();\n\n\t\tif (changePrevented) {\n\t\t\tthis._revertSelection();\n\t\t}\n\t}\n\n\tget _getPlaceholder(): string {\n\t\tif (this._getSelectedItems().length) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\treturn this.placeholder || \"\";\n\t}\n\n\t_handleArrowLeft() {\n\t\tconst inputDomRef = this._inputDom;\n\t\tconst cursorPosition = inputDomRef.selectionStart || 0;\n\t\tconst isTextSelected = ((inputDomRef.selectionEnd || 0) - cursorPosition) > 0;\n\n\t\tif (cursorPosition === 0 && !isTextSelected) {\n\t\t\tthis._tokenizer._focusLastToken();\n\t\t}\n\t}\n\n\t_onPopoverFocusOut() {\n\t\tif (!isPhone()) {\n\t\t\tthis._tokenizer.expanded = this._open;\n\t\t}\n\t}\n\n\t_tokenizerFocusOut(e: FocusEvent) {\n\t\tthis._tokenizerFocused = false;\n\n\t\tconst tokensCount = this._tokenizer.tokens.length;\n\t\tconst selectedTokens = this._selectedTokensCount;\n\t\tconst lastTokenBeingDeleted = tokensCount - 1 === 0 && this._deleting;\n\t\tconst allTokensAreBeingDeleted = selectedTokens === tokensCount && this._deleting;\n\t\tconst relatedTarget: HTMLElement | undefined = e.relatedTarget as HTMLElement;\n\n\t\tif (!this.shadowRoot?.contains(relatedTarget)) {\n\t\t\tthis._tokenizer.tokens.forEach(token => {\n\t\t\t\ttoken.selected = false;\n\t\t\t});\n\n\t\t\tthis._tokenizer.expanded = this._preventTokenizerToggle ? this._tokenizer.expanded : false;\n\t\t}\n\n\t\tif (allTokensAreBeingDeleted || lastTokenBeingDeleted) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!isPhone()) {\n\t\t\t\t\tthis._inputDom.focus();\n\t\t\t\t}\n\n\t\t\t\tthis._deleting = false;\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t_tokenizerFocusIn() {\n\t\tthis._tokenizerFocused = true;\n\t\tthis.focused = false;\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tconst isArrowDownCtrl: boolean = isDownCtrl(e);\n\t\tconst isCtrl: boolean = e.metaKey || e.ctrlKey;\n\n\t\tif (isShow(e) && !this.disabled) {\n\t\t\tthis._handleShow(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (isDownShift(e) || isUpShift(e)) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isUp(e) || isDown(e) || isUpCtrl(e) || isArrowDownCtrl) {\n\t\t\tthis._handleArrowNavigation(e, isArrowDownCtrl);\n\t\t\treturn;\n\t\t}\n\n\t\t// CTRL + Arrow Down navigation is performed by the ItemNavigation module of the List,\n\t\t// here we only implement the text selection of the selected item\n\t\tif (isArrowDownCtrl && !this.open) {\n\t\t\tsetTimeout(() => this._inputDom.setSelectionRange(0, this._inputDom.value.length), 0);\n\t\t}\n\n\t\tif (isLeftCtrl(e) || isRightCtrl(e)) {\n\t\t\tthis._handleArrowCtrl(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (isInsertShift(e)) {\n\t\t\tthis._handleInsertPaste(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (isCtrl && e.key.toLowerCase() === \"i\" && this._tokenizer.tokens.length > 0) {\n\t\t\te.preventDefault();\n\t\t\tthis._toggleTokenizerPopover();\n\t\t}\n\n\t\tif (isSpaceShift(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (\n\t\t\te.key === \"ArrowLeft\"\n\t\t\t|| e.key === \"Show\"\n\t\t\t|| e.key === \"PageUp\"\n\t\t\t|| e.key === \"PageDown\"\n\t\t\t|| e.key === \"Backspace\"\n\t\t\t|| e.key === \"Escape\"\n\t\t\t|| e.key === \"Home\"\n\t\t\t|| e.key === \"End\"\n\t\t\t|| e.key === \"Tab\"\n\t\t\t|| e.key === \"ArrowDown\"\n\t\t\t|| e.key === \"Enter\"\n\t\t) {\n\t\t\tthis[`_handle${e.key}`](e);\n\t\t}\n\n\t\tthis._shouldAutocomplete = !this.noTypeahead && !(isBackSpace(e) || isDelete(e) || isEscape(e) || isEnter(e));\n\t}\n\n\t_selectItems(matchingItems: IMultiComboBoxItem[]) {\n\t\tthis._previouslySelectedItems = this._getSelectedItems();\n\n\t\tmatchingItems.forEach(item => {\n\t\t\titem.selected = true;\n\t\t\tthis.value = \"\";\n\n\t\t\tconst changePrevented = this.fireSelectionChange();\n\n\t\t\tif (changePrevented) {\n\t\t\t\tthis._revertSelection();\n\t\t\t}\n\t\t});\n\t}\n\n\t_handlePaste(e: ClipboardEvent) {\n\t\tif (this.readonly || !e.clipboardData) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pastedText = (e.clipboardData).getData(\"text/plain\");\n\n\t\tif (!pastedText) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._handleTokenCreationUponPaste(pastedText, e);\n\t}\n\n\t_handleTokenCreationUponPaste(pastedText: string, e: KeyboardEvent | ClipboardEvent) {\n\t\tconst separatedText = pastedText.split(/\\r\\n|\\r|\\n|\\t/g).filter(t => !!t);\n\t\tconst matchingItems = this._getItems().filter(item => !item.isGroupItem && !item.selected && separatedText.includes(item.text!));\n\n\t\tif (matchingItems.length > 1) {\n\t\t\te.preventDefault();\n\t\t\tthis._selectItems(matchingItems);\n\t\t}\n\t}\n\n\tasync _handleInsertPaste(e: KeyboardEvent) {\n\t\tif (this.readonly || isFirefox()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pastedText = await navigator.clipboard.readText();\n\n\t\tif (!pastedText) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._handleTokenCreationUponPaste(pastedText, e);\n\t}\n\n\t_handleShow(e: KeyboardEvent) {\n\t\tconst items = this._getItems();\n\t\tconst selectedItem = this._getSelectedItems()[0];\n\t\tconst focusedToken = this._tokenizer.tokens.find(token => token.focused);\n\t\tconst value = this.value;\n\t\tconst matchingItem = this._getItems().find(item => item.text?.localeCompare(value, undefined, { sensitivity: \"base\" }) === 0);\n\n\t\te.preventDefault();\n\n\t\tif (this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpenedByKeyboard = true;\n\t\tthis._shouldFilterItems = false;\n\t\tthis._filteredItems = this._getItems();\n\n\t\tthis._toggleTokenizerPopover();\n\n\t\tif (!focusedToken && matchingItem) {\n\t\t\tthis._itemToFocus = matchingItem;\n\t\t\treturn;\n\t\t}\n\n\t\tif (selectedItem && !focusedToken) {\n\t\t\tthis._itemToFocus = selectedItem;\n\t\t} else if (focusedToken && e.target === focusedToken) {\n\t\t\tthis._itemToFocus = items.find(item => item.text === focusedToken.text);\n\t\t} else {\n\t\t\tthis._itemToFocus = items.find(item => isInstanceOfMultiComboBoxItem(item));\n\t\t}\n\t}\n\n\t_handlePageUp(e: KeyboardEvent) {\n\t\te.preventDefault();\n\t}\n\n\t_handlePageDown(e: KeyboardEvent) {\n\t\te.preventDefault();\n\t}\n\n\t_handleBackspace(e: KeyboardEvent) {\n\t\tif ((e.target as HTMLInputElement).value === \"\") {\n\t\t\te.preventDefault();\n\t\t\tthis._tokenizer._focusLastToken();\n\t\t}\n\t}\n\n\t_handleEscape() {\n\t\tconst innerInput = this._innerInput;\n\t\tconst isAutoCompleted = ((innerInput.selectionEnd || 0) - (innerInput.selectionStart || 0)) > 0;\n\n\t\tif (isAutoCompleted) {\n\t\t\tthis.value = this.valueBeforeAutoComplete;\n\t\t}\n\n\t\tif (!this.noValidation || (!this._open && this.noValidation)) {\n\t\t\tthis.value = this._lastValue;\n\t\t}\n\t}\n\n\t_handleHome(e: KeyboardEvent) {\n\t\tconst shouldFocusToken = this._isFocusInside && (e.target as HTMLInputElement).selectionStart === 0 && this._tokenizer.tokens.length > 0;\n\n\t\tif (shouldFocusToken) {\n\t\t\te.preventDefault();\n\t\t\tthis._tokenizer.tokens[0].focus();\n\t\t}\n\t}\n\n\t_handleEnd(e: KeyboardEvent) {\n\t\tconst tokens = this._tokenizer.tokens;\n\t\tconst lastTokenIdx = tokens.length - 1;\n\t\tconst shouldFocusInput = e.target === tokens[lastTokenIdx] && tokens[lastTokenIdx] === this.shadowRoot!.activeElement;\n\n\t\tif (shouldFocusInput) {\n\t\t\te.preventDefault();\n\t\t\tthis._inputDom.focus();\n\t\t}\n\t}\n\n\t_handleTab() {\n\t\tthis._open = false;\n\t}\n\n\t_handleSelectAll() {\n\t\tconst filteredItems = this._filteredItems.filter(item => !item.isGroupItem);\n\t\tconst allItemsSelected = filteredItems.every(item => item.selected);\n\t\tthis._previouslySelectedItems = filteredItems.filter(item => item.selected).map(item => item);\n\n\t\tfilteredItems.forEach(item => {\n\t\t\titem.selected = !allItemsSelected;\n\t\t});\n\n\t\tconst changePrevented = this.fireSelectionChange();\n\n\t\tif (changePrevented) {\n\t\t\tthis._revertSelection();\n\t\t}\n\t}\n\n\tasync _onListHeaderKeydown(e: KeyboardEvent) {\n\t\tconst isArrowDown = isDown(e);\n\t\tconst isArrowUp = isUp(e);\n\t\tconst isSelectAllFocused = (e.target as HTMLElement).classList.contains(\"ui5-mcb-select-all-checkbox\");\n\n\t\tif (isTabNext(e) || isTabPrevious(e)) {\n\t\t\tthis._onItemTab();\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tif (isArrowDown || isDownCtrl(e)) {\n\t\t\tif (this.showSelectAll && !isSelectAllFocused) {\n\t\t\t\treturn (this._getResponsivePopover()!.querySelector(\".ui5-mcb-select-all-checkbox\") as CheckBox).focus();\n\t\t\t}\n\n\t\t\tthis._handleArrowDown();\n\t\t}\n\n\t\tif (isArrowUp || isUpCtrl(e)) {\n\t\t\tif (e.target === this.valueStateHeader || !this.valueStateHeader) {\n\t\t\t\tthis._shouldAutocomplete = true;\n\t\t\t\treturn this._inputDom.focus();\n\t\t\t}\n\n\t\t\tif (this.showSelectAll && isSelectAllFocused) {\n\t\t\t\tthis.valueStateHeader?.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleSelectAllCheckboxClick(e: CustomEvent) {\n\t\tif (!this.filterSelected) {\n\t\t\tthis._handleSelectAll();\n\t\t\tthis.filterSelected = false;\n\t\t} else {\n\t\t\tthis._previouslySelectedItems = this._getSelectedItems();\n\t\t\tthis.selectedItems?.filter(item => !item.isGroupItem).forEach(item => {\n\t\t\t\titem.selected = (e.target as CheckBox).checked;\n\t\t\t});\n\n\t\t\tif (!(e.target as CheckBox).checked) {\n\t\t\t\tthis.filterSelected = false;\n\t\t\t}\n\n\t\t\tconst changePrevented = this.fireSelectionChange();\n\n\t\t\tif (changePrevented) {\n\t\t\t\tthis._revertSelection();\n\t\t\t}\n\t\t}\n\t}\n\n\t_onItemKeydown(e: KeyboardEvent) {\n\t\tconst isFirstItemGroup = this.list?.items[1] === e.target && this.list?.items[0].hasAttribute(\"ui5-li-group\");\n\t\tconst isFirstItem = this.list?.items[0] === e.target || isFirstItemGroup;\n\t\tconst isArrowUp = isUp(e) || isUpCtrl(e);\n\n\t\tif (this.hasValueStateMessage && !this.valueStateHeader) {\n\t\t\tthis._setValueStateHeader();\n\t\t}\n\n\t\tif (isTabNext(e) || isTabPrevious(e)) {\n\t\t\tthis._onItemTab();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isHomeCtrl(e)) {\n\t\t\tthis.list?._itemNavigation._handleHome();\n\t\t\tthis.list?.items[this.list?._itemNavigation._currentIndex].focus();\n\t\t}\n\n\t\tif (isEndCtrl(e)) {\n\t\t\tthis.list?._itemNavigation._handleEnd();\n\t\t\tthis.list?.items[this.list?._itemNavigation._currentIndex].focus();\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tif (isDownShift(e) || isUpShift(e)) {\n\t\t\tthis._handleItemRangeSelection(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif ((isUpCtrl(e)) && !isFirstItem) {\n\t\t\tthis.list?._itemNavigation._handleUp();\n\t\t\tthis.list?.items[this.list?._itemNavigation._currentIndex].focus();\n\t\t}\n\n\t\tif (isDownCtrl(e)) {\n\t\t\tthis.list?._itemNavigation._handleDown();\n\t\t\tthis.list?.items[this.list?._itemNavigation._currentIndex].focus();\n\t\t}\n\n\t\tif (isShow(e)) {\n\t\t\tthis._toggleTokenizerPopover();\n\t\t}\n\n\t\tif (isCtrlA(e)) {\n\t\t\tthis._handleSelectAll();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isFirstItem && isArrowUp) {\n\t\t\tif (this.showSelectAll) {\n\t\t\t\tif (isFirstItemGroup) {\n\t\t\t\t\tthis.list?.items[0].focus();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t(this._getResponsivePopover()!.querySelector(\".ui5-mcb-select-all-checkbox\") as CheckBox).focus();\n\t\t\t} else if (this.valueStateHeader) {\n\t\t\t\tthis.valueStateHeader.focus();\n\t\t\t} else {\n\t\t\t\tthis._inputDom.focus();\n\t\t\t\tthis._shouldAutocomplete = true;\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleArrowCtrl(e: KeyboardEvent) {\n\t\tconst input = this._inputDom;\n\t\tconst isArrowLeft = isLeftCtrl(e);\n\n\t\tif (isArrowLeft && input.selectionStart === 0 && input.selectionEnd === 0) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isArrowLeft && ((input.selectionEnd || 0) - (input.selectionStart || 0) > 0)) {\n\t\t\tinput.setSelectionRange(0, 0);\n\t\t}\n\t}\n\n\t_onItemTab() {\n\t\tthis._getResponsivePopover().preventFocusRestore = true;\n\t\tthis._inputDom.focus();\n\t\tthis._open = false;\n\t\tthis._tokenizer.expanded = false;\n\t}\n\n\t_handleArrowNavigation(e: KeyboardEvent, isDownControl: boolean) {\n\t\tconst isArrowDown = isDownControl || isDown(e);\n\t\tconst hasSuggestions = this._getItems().length;\n\n\t\te.preventDefault();\n\n\t\tif (this.hasValueStateMessage && !this.valueStateHeader) {\n\t\t\tthis._setValueStateHeader();\n\t\t}\n\n\t\tif (isArrowDown && this.open) {\n\t\t\tif (this.valueStateHeader) {\n\t\t\t\tthis.value = this.valueBeforeAutoComplete || this.value;\n\t\t\t\tthis.valueStateHeader.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.showSelectAll) {\n\t\t\t\t(this._getResponsivePopover()!.querySelector(\".ui5-mcb-select-all-checkbox\") as CheckBox).focus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isArrowDown && hasSuggestions) {\n\t\t\tthis._handleArrowDown();\n\t\t}\n\n\t\tif (!isArrowDown && !this._open && !this.readonly) {\n\t\t\tthis._navigateToPrevItem();\n\t\t}\n\t}\n\n\tasync _handleArrowDown() {\n\t\tconst firstListItem = this.list?.listItems[0];\n\n\t\tif (this.open) {\n\t\t\tfirstListItem && this.list?._itemNavigation.setCurrentItem(firstListItem);\n\t\t\tthis.value = this.valueBeforeAutoComplete || this.value;\n\n\t\t\t// wait item navigation to apply correct tabindex\n\t\t\tawait renderFinished();\n\t\t\tfirstListItem?.focus();\n\t\t} else if (!this.readonly) {\n\t\t\tthis._navigateToNextItem();\n\t\t}\n\t}\n\n\t_handleItemRangeSelection(e: KeyboardEvent) {\n\t\tconst items = this._getItems();\n\t\tconst listItems = this.list?.items;\n\t\tconst currentItemIdx = Number(listItems?.indexOf(e.target as ListItemBase));\n\t\tconst nextItemIdx = currentItemIdx + 1;\n\t\tconst prevItemIdx = currentItemIdx - 1;\n\t\tthis._previouslySelectedItems = this._getSelectedItems();\n\t\tif (isDownShift(e) && items[nextItemIdx]) {\n\t\t\titems[nextItemIdx].selected = items[currentItemIdx].selected;\n\t\t\titems[nextItemIdx].focus();\n\t\t}\n\n\t\tif (isUpShift(e) && items[prevItemIdx]) {\n\t\t\titems[prevItemIdx].selected = items[currentItemIdx].selected;\n\t\t\titems[prevItemIdx].focus();\n\t\t}\n\n\t\tconst changePrevented = this.fireSelectionChange();\n\n\t\tif (changePrevented) {\n\t\t\tthis._revertSelection();\n\t\t}\n\t}\n\n\t_navigateToNextItem() {\n\t\tconst items = this._getItems();\n\t\tconst itemsCount = items.length;\n\t\tconst previousItemIdx = this.currentItemIdx;\n\n\t\tif (previousItemIdx > -1 && items[previousItemIdx].text !== this.value) {\n\t\t\tthis.currentItemIdx = -1;\n\t\t}\n\n\t\tif (previousItemIdx >= itemsCount - 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet currentItem = this._getItems()[++this.currentItemIdx];\n\n\t\twhile ((this.currentItemIdx < itemsCount - 1 && currentItem.selected) || currentItem.isGroupItem) {\n\t\t\tcurrentItem = this._getItems()[++this.currentItemIdx];\n\t\t}\n\n\t\tif (currentItem.selected === true || currentItem.isGroupItem) {\n\t\t\tthis.currentItemIdx = previousItemIdx;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value = currentItem.text!;\n\t\tthis._innerInput.value = currentItem.text!;\n\t\tthis._innerInput.setSelectionRange(0, currentItem.text!.length);\n\t}\n\n\t_navigateToPrevItem() {\n\t\tconst items = this._getItems();\n\t\tlet previousItemIdx = this.currentItemIdx;\n\n\t\tif ((!this.value && previousItemIdx !== -1) || (previousItemIdx !== -1 && this.value && this.value !== items[previousItemIdx].text)) {\n\t\t\tpreviousItemIdx = -1;\n\t\t}\n\n\t\tif (previousItemIdx === -1) {\n\t\t\tthis.currentItemIdx = items.length;\n\t\t}\n\n\t\tif (previousItemIdx === 0) {\n\t\t\tthis.currentItemIdx = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tlet currentItem = this._getItems()[--this.currentItemIdx];\n\n\t\twhile ((currentItem && this.currentItemIdx > 0) && (currentItem.selected || currentItem.isGroupItem)) {\n\t\t\tcurrentItem = this._getItems()[--this.currentItemIdx];\n\t\t}\n\n\t\tif (!currentItem) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (currentItem.selected || currentItem.isGroupItem) {\n\t\t\tthis.currentItemIdx = previousItemIdx;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value = currentItem.text!;\n\t\tthis._innerInput.value = currentItem.text!;\n\t\tthis._innerInput.setSelectionRange(0, currentItem.text!.length);\n\t}\n\n\t_handleEnter() {\n\t\tconst lowerCaseValue = this.value.toLowerCase();\n\t\tconst matchingItem = this._getItems().find(item => (!item.isGroupItem && item.text!.toLowerCase() === lowerCaseValue));\n\t\tconst oldValueState = this.valueState;\n\t\tconst innerInput = this._innerInput;\n\n\t\tif (this._internals.form) {\n\t\t\tsubmitForm(this);\n\t\t}\n\n\t\tif (matchingItem) {\n\t\t\tif (matchingItem.selected) {\n\t\t\t\tif (this._validationTimeout) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.valueState = ValueState.Negative;\n\t\t\t\tthis._performingSelectionTwice = true;\n\t\t\t\tthis._resetValueState(oldValueState, () => {\n\t\t\t\t\tthis._performingSelectionTwice = false;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis._previouslySelectedItems = this._getSelectedItems();\n\t\t\t\tmatchingItem.selected = true;\n\t\t\t\tthis.value = \"\";\n\t\t\t\tconst changePrevented = this.fireSelectionChange();\n\n\t\t\t\tif (changePrevented) {\n\t\t\t\t\tthis._revertSelection();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinnerInput.setSelectionRange(matchingItem.text!.length, matchingItem.text!.length);\n\t\t\tthis._open = false;\n\t\t}\n\t}\n\n\t_resetValueState(valueState: `${ValueState}`, callback?: () => void) {\n\t\tthis._validationTimeout = setTimeout(() => {\n\t\t\tthis._effectiveValueState = this.valueState;\n\t\t\tthis._dialogInputValueState = valueState;\n\t\t\tthis.valueState = valueState;\n\t\t\tthis._validationTimeout = null;\n\n\t\t\tcallback && callback();\n\t\t}, 2000);\n\t}\n\n\t_onTokenizerKeydown(e: KeyboardEvent) {\n\t\tif (isRight(e)) {\n\t\t\tconst lastTokenIndex = this._tokenizer.tokens.length - this._tokenizer.overflownTokens.length - 1;\n\n\t\t\tif (e.target === this._tokenizer.tokens[lastTokenIndex]) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis._inputDom.focus();\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t}\n\n\t\tif (isInsertShift(e)) {\n\t\t\tthis._handleInsertPaste(e);\n\t\t}\n\n\t\tif (isHome(e)) {\n\t\t\tthis._handleHome(e);\n\t\t}\n\n\t\tif (isEnd(e)) {\n\t\t\tthis._handleEnd(e);\n\t\t}\n\n\t\tif (isShow(e) && !this.readonly && !this.disabled) {\n\t\t\tthis._preventTokenizerToggle = true;\n\t\t\tthis._handleShow(e);\n\t\t}\n\t}\n\n\t_filterItems(str: string) {\n\t\tconst itemsToFilter = this._getItems().filter(item => !item.isGroupItem);\n\t\tconst filteredItems = (Filters[this.filter] || Filters.StartsWithPerTerm)(str, itemsToFilter, \"text\");\n\n\t\t// Return the filtered items and their group items\n\t\treturn this._getItems().filter((item, idx, allItems) => MultiComboBox._groupItemFilter(item, ++idx, allItems, filteredItems) || filteredItems.indexOf(item) !== -1);\n\t}\n\n\t/**\n\t * Returns true if the group header should be shown (if there is a filtered suggestion item for this group item)\n\t * @private\n\t */\n\tstatic _groupItemFilter(item: IMultiComboBoxItem, idx: number, allItems: Array, filteredItems: Array) {\n\t\tif (item.isGroupItem) {\n\t\t\tlet groupHasFilteredItems;\n\n\t\t\twhile (allItems[idx] && !allItems[idx].isGroupItem && !groupHasFilteredItems) {\n\t\t\t\tgroupHasFilteredItems = filteredItems.indexOf(allItems[idx]) !== -1;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\treturn groupHasFilteredItems;\n\t\t}\n\t}\n\n\t_afterOpen() {\n\t\tconst action = this._open ? \"open\" : \"close\";\n\n\t\tif (!isPhone() && !this._isOpenedByKeyboard) {\n\t\t\tthis._innerInput.focus();\n\t\t} else if (this._isOpenedByKeyboard) {\n\t\t\tthis._itemToFocus?.focus();\n\t\t} else {\n\t\t\tthis._getResponsivePopover().focus();\n\t\t}\n\n\t\tthis.fireEvent(action);\n\n\t\tthis._previouslySelectedItems = this._getSelectedItems();\n\t\tthis._isOpenedByKeyboard = false;\n\t}\n\n\t/**\n\t * Retrieves a flat structure of all MultiComboBox items from the slotted nodes.\n\t *\n\t * @private\n\t */\n\t_getItems(): Array {\n\t\tconst items: IMultiComboBoxItem[] = [];\n\t\tconst slottedItems = this.getSlottedNodes(\"items\");\n\n\t\tslottedItems.forEach(item => {\n\t\t\tif (isInstanceOfMultiComboBoxItemGroup(item)) {\n\t\t\t\tconst groupItems = [item, ...item.items].filter(Boolean);\n\t\t\t\titems.push(...groupItems);\n\t\t\t} else {\n\t\t\t\titems.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn items;\n\t}\n\n\t_getSelectedItems(): Array {\n\t\t// Angular 2 way data binding\n\t\tthis.selectedValues = this._getItems().filter(item => item.selected);\n\t\treturn this.selectedValues as Array;\n\t}\n\n\t_listSelectionChange(e: CustomEvent) {\n\t\tlet changePrevented;\n\n\t\tif (!isPhone()) {\n\t\t\tthis._previouslySelectedItems = this._getSelectedItems();\n\t\t}\n\n\t\t// sync list items and cb items\n\t\tthis.syncItems((e.target as List).listItems);\n\n\t\t// don't call selection change right after selection as user can cancel it on phone\n\t\tif (!isPhone()) {\n\t\t\tchangePrevented = this.fireSelectionChange();\n\n\t\t\tif (changePrevented) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._revertSelection();\n\t\t\t}\n\t\t}\n\n\t\t// casted to KeyboardEvent since isSpace and isSpaceCtrl accepts KeyboardEvent only\n\t\tconst castedEvent = { key: e.detail.key } as KeyboardEvent;\n\n\t\tif (!e.detail.selectedItems.length && this.filterSelected) {\n\t\t\tthis.filterSelected = false;\n\t\t}\n\n\t\tif (!e.detail.selectionComponentPressed && !isSpace(castedEvent) && !isSpaceCtrl(castedEvent)) {\n\t\t\tthis._open = false;\n\t\t\tthis.value = \"\";\n\n\t\t\t// if the item (not checkbox) is clicked, call the selection change\n\t\t\tif (isPhone()) {\n\t\t\t\tchangePrevented = this.fireSelectionChange();\n\t\t\t\tif (changePrevented) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis._revertSelection();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.fireEvent(\"input\");\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value = this.valueBeforeAutoComplete || \"\";\n\t}\n\n\tsyncItems(listItems: Array) {\n\t\tlistItems.forEach(item => {\n\t\t\tthis._getItems().forEach(mcbItem => {\n\t\t\t\tif (mcbItem._id === item.getAttribute(\"data-ui5-token-id\")) {\n\t\t\t\t\tmcbItem.selected = item.selected;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tfireSelectionChange() {\n\t\tconst changePrevented = !this.fireEvent(\"selection-change\", {\n\t\t\titems: this._getSelectedItems(),\n\t\t}, true);\n\n\t\t// Angular 2 way data binding\n\t\tthis.fireEvent(\"value-changed\");\n\n\t\treturn changePrevented;\n\t}\n\n\t_getList(): List {\n\t\tthis.list = this.shadowRoot!.querySelector(\".ui5-multi-combobox-all-items-list\")!;\n\t\treturn this.list;\n\t}\n\n\t_click() {\n\t\tif (isPhone() && !this.readonly && !this._showMorePressed && !this._deleting) {\n\t\t\tthis._open = true;\n\t\t}\n\n\t\tthis._showMorePressed = false;\n\t}\n\n\thandleBeforeTokenizerPopoverOpen() {\n\t\tconst tokens = this._tokenizer.tokens;\n\t\tconst hasTruncatedToken = tokens.length === 1 && tokens[0].isTruncatable;\n\t\tconst popover = this._getResponsivePopover();\n\n\t\tif (hasTruncatedToken && popover) {\n\t\t\tpopover.preventFocusRestore = true;\n\t\t\tpopover.open = false;\n\t\t}\n\t}\n\n\t_beforeClose() {\n\t\tthis._open = false;\n\t}\n\n\t_afterClose() {\n\t\tconst action = this._open ? \"open\" : \"close\";\n\n\t\t// close device's keyboard and prevent further typing\n\t\tif (isPhone()) {\n\t\t\tthis._dialogInputValueState = this.valueState;\n\t\t\tthis._tokenizer.expanded = false;\n\t\t}\n\n\t\tthis.fireEvent(action);\n\n\t\tthis._iconPressed = false;\n\t\tthis._preventTokenizerToggle = false;\n\t\tthis.filterSelected = false;\n\t}\n\n\t_beforeOpen() {\n\t\tthis._open = true;\n\t\tthis._itemsBeforeOpen = this._getItems().map(item => {\n\t\t\treturn {\n\t\t\t\tref: item,\n\t\t\t\tselected: item.selected,\n\t\t\t};\n\t\t});\n\n\t\tthis._valueBeforeOpen = this.value;\n\t\tthis._dialogInputValueState = this.valueState;\n\n\t\t// in order to use the autocomplete feature of the input we should not set value in state\n\t\tthis._innerInput.value = this.value;\n\n\t\tif (this.filterSelected) {\n\t\t\tconst selectedItems = this._filteredItems.filter(item => item.selected);\n\t\t\tthis.selectedItems = this._getItems().filter((item, idx, allItems) => MultiComboBox._groupItemFilter(item, ++idx, allItems, selectedItems) || selectedItems.indexOf(item) !== -1);\n\t\t}\n\t}\n\n\t_handleTypeAhead(item: IMultiComboBoxItem, filterValue: string) {\n\t\tif (!item) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = item.text;\n\t\tconst innerInput = this._innerInput;\n\n\t\tfilterValue = filterValue || \"\";\n\t\tthis.value = value!;\n\n\t\tinnerInput.value = value!;\n\t\tinnerInput.setSelectionRange(filterValue.length, value!.length);\n\n\t\tthis._shouldAutocomplete = false;\n\t}\n\n\t_getFirstMatchingItem(current: string) {\n\t\tif (!this._getItems().length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst matchingItems = this._startsWithMatchingItems(current).filter(item => !item.selected);\n\n\t\tif (matchingItems.length) {\n\t\t\treturn matchingItems[0];\n\t\t}\n\t}\n\n\t_startsWithMatchingItems(str: string) {\n\t\treturn Filters.StartsWith(str, this._getItems().filter(item => !item.isGroupItem), \"text\");\n\t}\n\n\t_revertSelection() {\n\t\tthis._filteredItems.forEach(item => {\n\t\t\titem.selected = this._previouslySelectedItems.includes(item);\n\t\t});\n\t}\n\n\tonBeforeRendering() {\n\t\tconst input = this._innerInput;\n\t\tconst autoCompletedChars = input && (input.selectionEnd || 0) - (input.selectionStart || 0);\n\t\tconst value = input && input.value;\n\n\t\tif (this.open) {\n\t\t\tconst list = this._getList();\n\t\t\tconst selectedListItemsCount = list?.querySelectorAll(\"[ui5-li][selected]\")?.length;\n\t\t\tconst items = this._getItems().filter(item => !item.isGroupItem);\n\t\t\tconst listItems = list?.querySelectorAll(\"[ui5-li]\")?.length;\n\t\t\tconst selectedItemsCount = items.filter(item => item.selected).length;\n\t\t\tthis._allSelected = selectedItemsCount === items.length || selectedListItemsCount === listItems;\n\t\t}\n\n\t\tthis._effectiveShowClearIcon = (this.showClearIcon && !!this.value && !this.readonly && !this.disabled);\n\n\t\tthis._inputLastValue = value;\n\n\t\tif (input && !input.value) {\n\t\t\tthis.valueBeforeAutoComplete = \"\";\n\t\t\tthis._filteredItems = this._getItems();\n\t\t}\n\n\t\tthis.tokenizerAvailable = this._getSelectedItems().length > 0;\n\t\tthis.style.setProperty(getScopedVarName(\"--_ui5-input-icons-count\"), `${this.iconsCount}`);\n\n\t\tif (!input || !value) {\n\t\t\treturn;\n\t\t}\n\t\t// Typehead causes issues on Android devices, so we disable it for now\n\t\t// If there is already a selection the autocomplete has already been performed\n\t\tif (this._shouldAutocomplete && !isAndroid()) {\n\t\t\tconst item = this._getFirstMatchingItem(value);\n\n\t\t\t// Keep the original typed in text intact\n\t\t\tthis.valueBeforeAutoComplete = value;\n\t\t\titem && this._handleTypeAhead(item, value);\n\t\t}\n\n\t\tif (this._shouldFilterItems) {\n\t\t\tthis._filteredItems = this._filterItems(this._shouldAutocomplete || !!autoCompletedChars ? this.valueBeforeAutoComplete : value);\n\t\t} else {\n\t\t\tthis._filteredItems = this._getItems();\n\t\t}\n\t}\n\n\tonAfterRendering() {\n\t\tthis._getList();\n\t\tthis.valueStateOpen = this.shouldDisplayOnlyValueStateMessage;\n\t\tthis.storeResponsivePopoverWidth();\n\n\t\tthis._deleting = false;\n\t\t// force resize of the tokenizer on invalidation\n\t\tthis._tokenizer._handleResize();\n\t\tthis._tokenizer.preventInitialFocus = true;\n\n\t\tif (this.open && !isPhone()) {\n\t\t\tthis._tokenizer.expanded = true;\n\t\t}\n\n\t\tif (this._tokenizer.expanded && this.hasAttribute(\"focused\")) {\n\t\t\tthis._tokenizer.scrollToEnd();\n\t\t}\n\n\t\tthis._getItems().forEach(item => {\n\t\t\titem._getRealDomRef = () => this._getResponsivePopover()!.querySelector(`*[data-ui5-stable=${item.stableDomRef}]`)!;\n\t\t});\n\t}\n\n\tget _isPhone() {\n\t\treturn isPhone();\n\t}\n\n\t_onIconMousedown() {\n\t\tthis._iconPressed = true;\n\t}\n\n\t_clear() {\n\t\tthis.value = \"\";\n\t\tthis._inputDom.value = \"\";\n\t\tthis.fireEvent(\"input\");\n\n\t\tif (!this._isPhone) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\n\t_iconMouseDown() {\n\t\tthis._clearingValue = true;\n\t}\n\n\tstoreResponsivePopoverWidth() {\n\t\tif (this._open && !this._listWidth) {\n\t\t\tthis._listWidth = this.list!.offsetWidth;\n\t\t}\n\t}\n\n\thandleCancel() {\n\t\tthis._itemsBeforeOpen.forEach(item => {\n\t\t\tif (isInstanceOfMultiComboBoxItem(item.ref)) {\n\t\t\t\titem.ref.selected = item.selected;\n\t\t\t}\n\t\t});\n\n\t\tthis._toggleTokenizerPopover();\n\n\t\tthis.value = this._valueBeforeOpen;\n\t}\n\n\thandleOK() {\n\t\tif (isPhone()) {\n\t\t\tconst changePrevented = this.fireSelectionChange();\n\n\t\t\tif (changePrevented) {\n\t\t\t\tthis._revertSelection();\n\t\t\t}\n\t\t}\n\n\t\tif (!this.noValidation) {\n\t\t\tthis.value = \"\";\n\t\t}\n\n\t\tthis._toggleTokenizerPopover();\n\t}\n\n\t_forwardFocusToInner() {\n\t\tthis._innerInput.focus();\n\t}\n\n\tget morePopoverOpener(): HTMLElement {\n\t\tconst tokens = this._tokenizer?.tokens;\n\n\t\tif (tokens?.length === 1 && tokens[0].isTruncatable) {\n\t\t\treturn tokens[0];\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t_getPopover() {\n\t\treturn this.shadowRoot!.querySelector(\"[ui5-popover]\")!;\n\t}\n\n\t_getResponsivePopover() {\n\t\treturn this.shadowRoot!.querySelector(\"[ui5-responsive-popover]\")!;\n\t}\n\n\t_setValueStateHeader() {\n\t\tconst responsivePopover = this._getResponsivePopover();\n\t\tthis.valueStateHeader = responsivePopover.querySelector(\"div.ui5-responsive-popover-header.ui5-valuestatemessage-root\")!;\n\t}\n\n\tget _tokenizer() {\n\t\treturn this.shadowRoot!.querySelector(\"[ui5-tokenizer]\")!;\n\t}\n\n\tinputFocusIn(e: FocusEvent) {\n\t\tif (!isPhone()) {\n\t\t\tthis.focused = true;\n\t\t\tthis._tokenizer.expanded = true;\n\t\t\tthis._tokenizer.scrollToEnd();\n\t\t} else {\n\t\t\tthis._innerInput.blur();\n\t\t}\n\n\t\tthis._clearingValue = false;\n\n\t\tif (!isPhone() && (((e.relatedTarget as HTMLElement)?.tagName !== \"UI5-STATIC-AREA-ITEM\") || !e.relatedTarget)) {\n\t\t\tthis._innerInput.setSelectionRange(0, this.value.length);\n\t\t}\n\t\tthis._tokenizer.tokens.forEach(token => {\n\t\t\ttoken.selected = false;\n\t\t});\n\n\t\tthis.valueBeforeAutoComplete = \"\";\n\t}\n\n\tinputFocusOut(e: FocusEvent) {\n\t\tconst responsivePopover = this._getResponsivePopover();\n\t\tconst popover = this._getPopover();\n\t\tconst focusIsGoingInPopover = [responsivePopover, popover].some(popup => popup?.contains(e.relatedTarget as Node));\n\t\tconst focusIsGoingInValueStatePopup = this?.contains(e.relatedTarget as Node);\n\n\t\tif (focusIsGoingInValueStatePopup) {\n\t\t\te.stopImmediatePropagation();\n\t\t\treturn;\n\t\t}\n\n\t\tif ((!this.shadowRoot!.contains(e.relatedTarget as Node) || focusIsGoingInPopover) && !this._deleting && !this._clearingValue) {\n\t\t\tthis.focused = false;\n\n\t\t\tif (this._lastValue !== this.value) {\n\t\t\t\tthis._inputChange();\n\t\t\t}\n\n\t\t\tthis._tokenizer.expanded = this.open;\n\t\t\t// remove the value if user focus out the input and focus is not going in the popover\n\t\t\tif (!isPhone() && !this.noValidation && !focusIsGoingInPopover) {\n\t\t\t\tthis.value = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\tget editable() {\n\t\treturn !this.readonly;\n\t}\n\n\tget _isFocusInside() {\n\t\treturn !isPhone() && (this.focused || this._tokenizerFocused);\n\t}\n\n\tget selectedItemsListMode() {\n\t\treturn this.readonly ? \"None\" : \"Multiple\";\n\t}\n\n\tget _listItemsType() {\n\t\treturn this.readonly ? \"Inactive\" : \"Active\";\n\t}\n\n\tget hasValueState() {\n\t\treturn (this.valueState !== ValueState.None) || (this._dialogInputValueState !== ValueState.None);\n\t}\n\n\tget hasValueStateMessage() {\n\t\tconst valueState = isPhone() ? this._dialogInputValueState : this.valueState;\n\n\t\treturn this.hasValueState && valueState !== ValueState.Positive;\n\t}\n\n\tget ariaValueStateHiddenText() {\n\t\tif (!this.hasValueState) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet text = \"\";\n\n\t\tif (this.valueState !== ValueState.None) {\n\t\t\ttext = this.valueStateTypeMappings[this.valueState];\n\t\t}\n\n\t\tif (this.shouldDisplayDefaultValueStateMessage) {\n\t\t\treturn `${text} ${this.valueStateDefaultText || \"\"}`;\n\t\t}\n\n\t\treturn `${text}`.concat(\" \", this.valueStateMessage.map(el => el.textContent).join(\" \"));\n\t}\n\n\tget valueStateDefaultText(): string {\n\t\tconst valueState = isPhone() ? this._dialogInputValueState : this.valueState;\n\n\t\tif (valueState === ValueState.None) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tif (this._performingSelectionTwice) {\n\t\t\treturn MultiComboBox.i18nBundle.getText(VALUE_STATE_ERROR_ALREADY_SELECTED);\n\t\t}\n\n\t\treturn this.valueStateTextMappings[valueState];\n\t}\n\n\tget valueStateTextId() {\n\t\treturn this.hasValueState ? `ui5-multi-combobox-valueStateDesc` : undefined;\n\t}\n\n\tget ariaLabelText() {\n\t\treturn getEffectiveAriaLabelText(this);\n\t}\n\n\t/**\n\t * This method is relevant for sap_horizon theme only\n\t */\n\tget _valueStateMessageIcon() {\n\t\tconst valueState = (isPhone() && this.open) ? this._dialogInputValueState : this.valueState;\n\n\t\tif (valueState === ValueState.None) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\treturn {\n\t\t\t[ValueState.Negative]: \"error\",\n\t\t\t[ValueState.Critical]: \"alert\",\n\t\t\t[ValueState.Positive]: \"sys-enter-2\",\n\t\t\t[ValueState.Information]: \"information\",\n\t\t}[valueState];\n\t}\n\n\tget _tokensCountText() {\n\t\tif (!this._tokenizer) {\n\t\t\treturn;\n\t\t}\n\t\treturn getTokensCountText(this._tokenizer.tokens.length);\n\t}\n\n\tget _tokensCountTextId() {\n\t\treturn \"ui5-multi-combobox-hiddenText-nMore\";\n\t}\n\n\tget _selectedTokensCount() {\n\t\treturn this._tokenizer.tokens.filter(token => token.selected).length;\n\t}\n\n\tget ariaDescribedByText() {\n\t\treturn this.valueStateTextId ? `${this._tokensCountTextId} ${this.valueStateTextId}` : `${this._tokensCountTextId}`;\n\t}\n\n\tget shouldDisplayDefaultValueStateMessage() {\n\t\treturn !this.valueStateMessage.length && this.hasValueStateMessage;\n\t}\n\n\tget shouldDisplayOnlyValueStateMessage() {\n\t\treturn this.focused && !this.readonly && this.hasValueStateMessage && !this._iconPressed && !this.open;\n\t}\n\n\tget valueStateTypeMappings(): ValueStateTypeAnnouncement {\n\t\treturn {\n\t\t\t[ValueState.Positive]: MultiComboBox.i18nBundle.getText(VALUE_STATE_TYPE_SUCCESS),\n\t\t\t[ValueState.Information]: MultiComboBox.i18nBundle.getText(VALUE_STATE_TYPE_INFORMATION),\n\t\t\t[ValueState.Negative]: MultiComboBox.i18nBundle.getText(VALUE_STATE_TYPE_ERROR),\n\t\t\t[ValueState.Critical]: MultiComboBox.i18nBundle.getText(VALUE_STATE_TYPE_WARNING),\n\t\t};\n\t}\n\n\tget valueStateTextMappings(): ValueStateAnnouncement {\n\t\treturn {\n\t\t\t[ValueState.Positive]: MultiComboBox.i18nBundle.getText(VALUE_STATE_SUCCESS),\n\t\t\t[ValueState.Negative]: MultiComboBox.i18nBundle.getText(VALUE_STATE_ERROR),\n\t\t\t[ValueState.Critical]: MultiComboBox.i18nBundle.getText(VALUE_STATE_WARNING),\n\t\t\t[ValueState.Information]: MultiComboBox.i18nBundle.getText(VALUE_STATE_INFORMATION),\n\t\t};\n\t}\n\n\tget _innerInput(): HTMLInputElement {\n\t\tif (isPhone()) {\n\t\t\tif (this._getResponsivePopover()?.open) {\n\t\t\t\treturn this._getResponsivePopover().querySelector(\"[ui5-input]\")!.shadowRoot!.querySelector(\"input\")!;\n\t\t\t}\n\t\t}\n\n\t\treturn this._inputDom;\n\t}\n\n\tget _headerTitleText() {\n\t\treturn MultiComboBox.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);\n\t}\n\n\tget _iconAccessibleNameText() {\n\t\treturn MultiComboBox.i18nBundle.getText(SELECT_OPTIONS);\n\t}\n\n\tget _showSelectedButtonAccessibleNameText() {\n\t\treturn MultiComboBox.i18nBundle.getText(SHOW_SELECTED_BUTTON);\n\t}\n\n\tget _dialogOkButton() {\n\t\treturn MultiComboBox.i18nBundle.getText(MULTICOMBOBOX_DIALOG_OK_BUTTON);\n\t}\n\n\tget _tokenizerExpanded() {\n\t\tif (isPhone()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this._preventTokenizerToggle) {\n\t\t\treturn this._tokenizer.expanded;\n\t\t}\n\n\t\tconst isCurrentlyExpanded = this._tokenizer?.expanded;\n\t\tconst shouldBeExpanded = this.focused || this._open || isCurrentlyExpanded;\n\n\t\treturn shouldBeExpanded;\n\t}\n\n\tget _valueStatePopoverHorizontalAlign(): `${PopoverHorizontalAlign}` {\n\t\treturn this.effectiveDir !== \"rtl\" ? \"Start\" : \"End\";\n\t}\n\n\tget iconsCount() {\n\t\tconst slottedIconsCount = this.icon?.length || 0;\n\t\tconst clearIconCount = Number(this._effectiveShowClearIcon) ?? 0;\n\t\tconst arrowDownIconsCount = this.readonly ? 0 : 1;\n\n\t\treturn slottedIconsCount + clearIconCount + arrowDownIconsCount;\n\t}\n\n\tget clearIconAccessibleName() {\n\t\treturn MultiComboBox.i18nBundle.getText(INPUT_CLEAR_ICON_ACC_NAME);\n\t}\n\n\tget selectAllCheckboxLabel() {\n\t\tconst items = this._getItems().filter(item => !item.isGroupItem);\n\t\tconst selected = items.filter(item => item.selected);\n\n\t\treturn MultiComboBox.i18nBundle.getText(MCB_SELECTED_ITEMS, selected.length, items.length);\n\t}\n\n\tget _popupLabel() {\n\t\treturn MultiComboBox.i18nBundle.getText(COMBOBOX_AVAILABLE_OPTIONS);\n\t}\n\n\tget classes(): ClassMap {\n\t\treturn {\n\t\t\tpopover: {\n\t\t\t\t\"ui5-multi-combobox-all-items-responsive-popover\": true,\n\t\t\t\t\"ui5-suggestions-popover\": true,\n\t\t\t\t\"ui5-popover-with-value-state-header-phone\": this._isPhone && this.hasValueStateMessage,\n\t\t\t\t\"ui5-popover-with-value-state-header\": !this._isPhone && this.hasValueStateMessage,\n\t\t\t},\n\t\t\tpopoverValueState: {\n\t\t\t\t\"ui5-valuestatemessage-root\": true,\n\t\t\t\t\"ui5-valuestatemessage-header\": true,\n\t\t\t\t\"ui5-valuestatemessage--success\": (this.valueState === ValueState.Positive) || (this._dialogInputValueState === ValueState.Positive),\n\t\t\t\t\"ui5-valuestatemessage--error\": (this.valueState === ValueState.Negative) || (this._dialogInputValueState === ValueState.Negative),\n\t\t\t\t\"ui5-valuestatemessage--warning\": (this.valueState === ValueState.Critical) || (this._dialogInputValueState === ValueState.Critical),\n\t\t\t\t\"ui5-valuestatemessage--information\": (this.valueState === ValueState.Information) || (this._dialogInputValueState === ValueState.Information),\n\t\t\t},\n\t\t};\n\t}\n\n\tget styles() {\n\t\tconst remSizeIxPx = parseInt(getComputedStyle(document.documentElement).fontSize);\n\t\treturn {\n\t\t\tpopoverValueStateMessage: {\n\t\t\t\t\"width\": `${this._listWidth || 0}px`,\n\t\t\t\t\"display\": this._listWidth === 0 ? \"none\" : \"inline-block\",\n\t\t\t},\n\t\t\tpopoverHeader: {\n\t\t\t\t\"max-width\": isPhone() ? \"100%\" : `${this._inputWidth}px`,\n\t\t\t},\n\t\t\tsuggestionsPopover: {\n\t\t\t\t\"min-width\": `${this._inputWidth}px`,\n\t\t\t\t\"max-width\": (this._inputWidth / remSizeIxPx) > 40 ? `${this._inputWidth}px` : \"40rem\",\n\t\t\t},\n\t\t};\n\t}\n\n\tstatic async onDefine() {\n\t\tMultiComboBox.i18nBundle = await getI18nBundle(\"@ui5/webcomponents\");\n\t}\n}\n\nMultiComboBox.define();\n\nexport default MultiComboBox;\n\nexport type {\n\tIMultiComboBoxItem,\n\tMultiComboBoxSelectionChangeEventDetail,\n};\n"]}