@ui5/webcomponents 2.20.0 → 2.21.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/Button.d.ts +6 -0
  4. package/dist/Button.js +11 -2
  5. package/dist/Button.js.map +1 -1
  6. package/dist/Carousel.d.ts +14 -13
  7. package/dist/Carousel.js +93 -177
  8. package/dist/Carousel.js.map +1 -1
  9. package/dist/CarouselTemplate.js +2 -2
  10. package/dist/CarouselTemplate.js.map +1 -1
  11. package/dist/ColorPaletteTemplate.js +1 -1
  12. package/dist/ColorPaletteTemplate.js.map +1 -1
  13. package/dist/DatePicker.js +2 -2
  14. package/dist/DatePicker.js.map +1 -1
  15. package/dist/DayPickerTemplate.js +1 -1
  16. package/dist/DayPickerTemplate.js.map +1 -1
  17. package/dist/Dialog.d.ts +0 -3
  18. package/dist/Dialog.js +3 -1
  19. package/dist/Dialog.js.map +1 -1
  20. package/dist/Icon.d.ts +1 -1
  21. package/dist/Icon.js +12 -4
  22. package/dist/Icon.js.map +1 -1
  23. package/dist/IconTemplate.js +1 -1
  24. package/dist/IconTemplate.js.map +1 -1
  25. package/dist/Input.d.ts +2 -1
  26. package/dist/Input.js +38 -16
  27. package/dist/Input.js.map +1 -1
  28. package/dist/Menu.js +6 -1
  29. package/dist/Menu.js.map +1 -1
  30. package/dist/MenuItem.d.ts +8 -0
  31. package/dist/MenuItem.js +29 -1
  32. package/dist/MenuItem.js.map +1 -1
  33. package/dist/MenuItemTemplate.js +2 -2
  34. package/dist/MenuItemTemplate.js.map +1 -1
  35. package/dist/MultiComboBox.js +5 -0
  36. package/dist/MultiComboBox.js.map +1 -1
  37. package/dist/MultiInput.js +4 -5
  38. package/dist/MultiInput.js.map +1 -1
  39. package/dist/StepInput.d.ts +5 -0
  40. package/dist/StepInput.js +26 -5
  41. package/dist/StepInput.js.map +1 -1
  42. package/dist/Switch.d.ts +8 -4
  43. package/dist/Switch.js +15 -11
  44. package/dist/Switch.js.map +1 -1
  45. package/dist/SwitchTemplate.js +1 -1
  46. package/dist/SwitchTemplate.js.map +1 -1
  47. package/dist/TimePicker.d.ts +55 -3
  48. package/dist/TimePicker.js +160 -26
  49. package/dist/TimePicker.js.map +1 -1
  50. package/dist/TimePickerTemplate.js +1 -1
  51. package/dist/TimePickerTemplate.js.map +1 -1
  52. package/dist/TimeSelectionClocks.js +8 -0
  53. package/dist/TimeSelectionClocks.js.map +1 -1
  54. package/dist/Token.js +2 -2
  55. package/dist/Token.js.map +1 -1
  56. package/dist/Tokenizer.js +2 -1
  57. package/dist/Tokenizer.js.map +1 -1
  58. package/dist/css/themes/Breadcrumbs.css +1 -1
  59. package/dist/css/themes/ColorPaletteItem.css +1 -1
  60. package/dist/css/themes/DatePickerPopover.css +1 -1
  61. package/dist/css/themes/MenuItem.css +1 -1
  62. package/dist/css/themes/PopupsCommon.css +1 -1
  63. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  64. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  65. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  66. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  67. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  68. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  69. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  70. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  71. package/dist/custom-elements-internal.json +69 -6
  72. package/dist/custom-elements.json +66 -6
  73. package/dist/features/InputSuggestions.js +2 -1
  74. package/dist/features/InputSuggestions.js.map +1 -1
  75. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  76. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  77. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  78. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  79. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  80. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  81. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  82. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  83. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  84. package/dist/generated/i18n/i18n-defaults.d.ts +7 -2
  85. package/dist/generated/i18n/i18n-defaults.js +7 -2
  86. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  87. package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
  88. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  89. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  90. package/dist/generated/themes/ColorPaletteItem.css.d.ts +1 -1
  91. package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
  92. package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
  93. package/dist/generated/themes/DatePickerPopover.css.d.ts +1 -1
  94. package/dist/generated/themes/DatePickerPopover.css.js +1 -1
  95. package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
  96. package/dist/generated/themes/MenuItem.css.d.ts +1 -1
  97. package/dist/generated/themes/MenuItem.css.js +1 -1
  98. package/dist/generated/themes/MenuItem.css.js.map +1 -1
  99. package/dist/generated/themes/PopupsCommon.css.d.ts +1 -1
  100. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  101. package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
  102. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  103. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  104. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  105. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  106. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  107. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  108. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  109. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  110. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  111. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  112. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  113. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  114. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  115. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  116. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  117. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  118. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  119. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  120. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  121. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  122. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  123. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  124. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  125. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  126. package/dist/vscode.html-custom-data.json +13 -3
  127. package/dist/web-types.json +28 -8
  128. package/package.json +9 -9
  129. package/src/CarouselTemplate.tsx +3 -3
  130. package/src/ColorPaletteTemplate.tsx +2 -2
  131. package/src/DayPickerTemplate.tsx +1 -1
  132. package/src/IconTemplate.tsx +1 -0
  133. package/src/MenuItemTemplate.tsx +11 -1
  134. package/src/SwitchTemplate.tsx +2 -2
  135. package/src/TimePickerTemplate.tsx +1 -1
  136. package/src/i18n/messagebundle.properties +17 -2
  137. package/src/i18n/messagebundle_en_US_saprigi.properties +2 -0
  138. package/src/themes/Breadcrumbs.css +6 -2
  139. package/src/themes/ColorPaletteItem.css +14 -0
  140. package/src/themes/DatePickerPopover.css +5 -0
  141. package/src/themes/MenuItem.css +5 -0
  142. package/src/themes/PopupsCommon.css +7 -0
  143. package/src/themes/base/Bar-parameters.css +1 -0
  144. package/src/themes/base/Breadcrumbs-parameters.css +4 -0
  145. package/src/themes/sap_fiori_3/parameters-bundle.css +2 -1
  146. package/src/themes/sap_fiori_3_dark/parameters-bundle.css +2 -1
  147. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +2 -1
  148. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +2 -1
  149. package/src/themes/sap_horizon/Breadcrumbs-parameters.css +5 -1
  150. package/src/themes/sap_horizon/CalendarHeader-parameters.css +3 -3
  151. package/src/themes/sap_horizon/DayPicker-parameters.css +3 -3
  152. package/src/themes/sap_horizon_dark/Breadcrumbs-parameters.css +5 -1
  153. package/src/themes/sap_horizon_dark/CalendarHeader-parameters.css +2 -2
  154. package/src/themes/sap_horizon_hcb/Breadcrumbs-parameters.css +6 -0
  155. package/src/themes/sap_horizon_hcb/parameters-bundle.css +2 -1
  156. package/src/themes/sap_horizon_hcw/Breadcrumbs-parameters.css +6 -0
  157. package/src/themes/sap_horizon_hcw/parameters-bundle.css +2 -1
@@ -1 +1 @@
1
- {"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 type { Slot, DefaultSlot } 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-strict.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport type { ClassMap, Timeout } from \"@ui5/webcomponents-base/dist/types.js\";\nimport jsxRender from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.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 type { UI5CustomEvent } from \"@ui5/webcomponents-base\";\nimport {\n\tisShow,\n\tisDown,\n\tisUp,\n\tisSpace,\n\tisSpaceCtrl,\n\tisSpaceShift,\n\tisRight,\n\tisLeft,\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\tisCtrlAltF8,\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\tisMac,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { attachListeners } from \"@ui5/webcomponents-base/dist/util/valueStateNavigation.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.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 { getAssociatedLabelForTexts, getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport arraysAreEqual from \"@ui5/webcomponents-base/dist/util/arraysAreEqual.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\tVALUE_STATE_LINK,\n\tVALUE_STATE_LINKS,\n\tVALUE_STATE_LINK_MAC,\n\tVALUE_STATE_LINKS_MAC,\n\tINPUT_SUGGESTIONS_TITLE,\n\tSELECT_OPTIONS,\n\tSHOW_SELECTED_BUTTON,\n\tMULTICOMBOBOX_DIALOG_OK_BUTTON,\n\tMULTICOMBOBOX_DIALOG_CANCEL_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 \"./MultiComboBoxTemplate.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 CheckBox from \"./CheckBox.js\";\nimport Input from \"./Input.js\";\nimport type { InputEventDetail } from \"./Input.js\";\nimport SuggestionItem from \"./SuggestionItem.js\";\nimport type InputComposition from \"./features/InputComposition.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\tvalue?: string,\n\tadditionalText?: string,\n\theaderText?: string,\n\tselected: boolean,\n\tisGroupItem?: boolean,\n\t_isVisible?: boolean,\n\titems?: Array<IMultiComboBoxItem>,\n}\n\ntype ValueStateAnnouncement = Record<Exclude<ValueState, ValueState.None>, string>;\ntype ValueStateTypeAnnouncement = Record<Exclude<ValueState, ValueState.None>, string>;\n\ntype MultiComboBoxSelectionChangeEventDetail = {\n\titems: Array<MultiComboBoxItem>,\n};\n\ntype MultiComboboxItemWithSelection = {\n\tref: IMultiComboBoxItem,\n\tselected: boolean,\n};\n\ntype MultiComboBoxValueStateChangeEventDetail = {\n\tvalueState: `${ValueState}`,\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 * [Ctrl]+[Alt]+[F8] or [Command]+[Option]+[F8] - Focuses the first link in the value state message, if available. Pressing [Tab] moves the focus to the next link in the value state message, or closes the value state message if there are no more links.\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: jsxRender,\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\tbubbles: true,\n})\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\tbubbles: true,\n})\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 */\n@event(\"selection-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\n/**\n * Fired before the value state of the component is updated internally.\n * The event is preventable, meaning that if it's default action is\n * prevented, the component will not update the value state.\n * @public\n * @since 2.19.0\n * @param {string} valueState The new `valueState` that will be set.\n */\n@event(\"value-state-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\nclass MultiComboBox extends UI5Element implements IFormInputElement {\n\teventDetails!: {\n\t\tchange: void,\n\t\tinput: void,\n\t\topen: void,\n\t\tclose: void,\n\t\t\"selection-change\": MultiComboBoxSelectionChangeEventDetail,\n\t\t\"value-state-change\": MultiComboBoxValueStateChangeEventDetail,\n\t}\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 * Defines the values of the selected items.\n\t *\n\t * Use this property to programmatically select items by their `value` property.\n\t * Each string in the array should match the `value` attribute of a `ui5-mcb-item`.\n\t *\n\t * **Note:** If an item doesn't have a `value` attribute set, it cannot be selected via this property.\n\t *\n\t * **Note:** The recommended approach is to set the `value` property on each `ui5-mcb-item`\n\t * and use `selectedValues` for programmatic selection. The `selected` property on items is\n\t * deprecated and should not be used together with `selectedValues`.\n\t *\n\t * @default []\n\t * @public\n\t * @since 2.20.0\n\t */\n\t@property({ type: Array })\n\tselectedValues: Array<string> = [];\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 * Indicates whether a loading indicator should be shown in the picker.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tloading = 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 * @public\n\t * @since 2.9.0\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t@property()\n\t_valueBeforeOpen = this.value;\n\n\t@property({ type: Array, noAttribute: true })\n\t_filteredItems!: Array<IMultiComboBoxItem>;\n\n\t@property({ type: Array, noAttribute: true })\n\t_previouslySelectedItems!: Array<IMultiComboBoxItem>;\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 * Indicates whether link navigation is being handled.\n\t * @private\n\t * @since 2.11.0\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\t_handleLinkNavigation: boolean = false;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Array, noAttribute: true })\n\t_linksListenersArray: Array<(args: any) => void> = [];\n\n\t/**\n\t * Indicates whether IME composition is currently active\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\t_isComposing = false;\n\n\t/**\n\t * Defines the component items.\n\t * @public\n\t */\n\t@slot({\n\t\ttype: HTMLElement,\n\t\t\"default\": true,\n\t\tinvalidateOnChildChange: true,\n\t\tindividualSlots: true,\n\t})\n\titems!: DefaultSlot<IMultiComboBoxItem>;\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!: Slot<IIcon>;\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!: Slot<HTMLElement>;\n\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<MultiComboboxItemWithSelection>;\n\tselectedItems: Array<IMultiComboBoxItem>;\n\t_valueStateLinks: Array<HTMLElement>;\n\t_composition?: InputComposition;\n\t_suppressNextLiveChange: boolean; // prevent unwanted live change events during IME composition\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\tstatic composition: typeof InputComposition;\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._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\tthis._valueStateLinks = [];\n\t\tthis._suppressNextLiveChange = false;\n\t}\n\n\tonEnterDOM() {\n\t\tResizeHandler.register(this, this._handleResizeBound);\n\t\tthis._enableComposition();\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(this, this._handleResizeBound);\n\t\tthis._removeLinksEventListeners();\n\t\tthis._composition?.removeEventListeners();\n\t}\n\n\t_handleResize() {\n\t\tthis._inputWidth = this.offsetWidth;\n\t}\n\n\t_handleMobileInput(e: CustomEvent<InputEventDetail>) {\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\tif (this.filterSelected) {\n\t\t\tthis.filterSelected = false;\n\t\t}\n\n\t\tthis.value = value;\n\t\tthis._shouldFilterItems = true;\n\t\tthis.valueBeforeAutoComplete = value;\n\n\t\tthis.fireDecoratorEvent(\"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.fireDecoratorEvent(\"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\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\t\tthis._tokenizer._scrollToEndOnExpand = true;\n\n\t\tthis._toggleTokenizerPopover();\n\t}\n\n\tfilterSelectedItems(e: UI5CustomEvent<ToggleButton, \"click\">) {\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\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\t// This ensures proper input clearing after Enter-based token creation during composition\n\t\tif (this._suppressNextLiveChange) {\n\t\t\tthis._suppressNextLiveChange = false;\n\t\t\treturn;\n\t\t}\n\n\t\tconst input = e.target as HTMLInputElement;\n\t\tconst value: string = input.value;\n\t\tconst filteredItems: Array<IMultiComboBoxItem> = this._filterItems(value);\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._updateValueState(this._effectiveValueState);\n\t\t\t\tthis._validationTimeout = null;\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Save the original value state before setting validation error\n\t\tif (this.valueState !== ValueState.Negative) {\n\t\t\tthis._effectiveValueState = this.valueState;\n\t\t}\n\n\t\tif (!this._isComposing && !filteredItems.length && value && !this.noValidation) {\n\t\t\tthis._updateValueState(ValueState.Negative);\n\t\t\tthis._shouldAutocomplete = false;\n\t\t} else if ((filteredItems.length || !value) && this.valueState === ValueState.Negative) {\n\t\t\tthis._updateValueState(this._effectiveValueState);\n\t\t}\n\n\t\tif (!this._isComposing) {\n\t\t\tthis._inputLastValue = input.value;\n\t\t}\n\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.fireDecoratorEvent(\"input\");\n\t}\n\n\t_updateValueState(newValueState: `${ValueState}`) {\n\t\tconst oldValueState = this.valueState;\n\t\tif (oldValueState !== newValueState) {\n\t\t\tconst eventPrevented = !this.fireDecoratorEvent(\"value-state-change\", {\n\t\t\t\tvalueState: newValueState,\n\t\t\t});\n\n\t\t\tif (!eventPrevented) {\n\t\t\t\tthis.valueState = newValueState;\n\t\t\t}\n\t\t}\n\t}\n\n\t_tokenDelete(e: CustomEvent<TokenizerTokenDeleteEventDetail>) {\n\t\tthis._previouslySelectedItems = this._getSelectedItems();\n\t\tconst token: Token[] = e.detail.tokens;\n\t\tconst deletingItems = this._getItems().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\tif (this.selectedValues) {\n\t\t\tconst valuesToDelete = deletingItems.map(item => item.value);\n\t\t\tthis.selectedValues = this.selectedValues.filter(value => !valuesToDelete.includes(value));\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// If the input is focused and the cursor is at the beginning/end of the input,\n\t// focus the last token if the direction is LTR/ RTL\n\tget _shouldFocusLastToken(): boolean {\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\treturn cursorPosition === 0 && !isTextSelected;\n\t}\n\n\t_handleArrowKey(direction: string) {\n\t\tif (this._shouldFocusLastToken && this.effectiveDir === direction) {\n\t\t\tthis._tokenizer._focusLastToken();\n\t\t}\n\t}\n\n\t_handleArrowLeft() {\n\t\tthis._handleArrowKey(\"ltr\");\n\t}\n\n\t_handleArrowRight() {\n\t\tthis._handleArrowKey(\"rtl\");\n\t}\n\n\t_onPopoverFocusOut() {\n\t\tif (!isPhone() || !this._handleLinkNavigation) {\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 (isCtrlAltF8(e)) {\n\t\t\treturn this._handleCtrlALtF8();\n\t\t}\n\n\t\tif (\n\t\t\te.key === \"ArrowLeft\"\n\t\t\t|| e.key === \"ArrowRight\"\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\tasync _handlePaste(e: ClipboardEvent) {\n\t\tif (this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tconst pastedText = await navigator.clipboard.readText();\n\t\tdocument.execCommand(\"insertText\", true, pastedText ?? \"\");\n\t\tconst inputEvent = new Event(\"input\", {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t});\n\n\t\t// Dispatch it\n\t\tthis._innerInput.dispatchEvent(inputEvent);\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\t\te.preventDefault();\n\n\t\tconst pastedText = await navigator.clipboard.readText();\n\t\tdocument.execCommand(\"insertText\", true, pastedText ?? \"\");\n\t\tconst inputEvent = new Event(\"input\", {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t});\n\n\t\t// Dispatch it\n\t\tthis._innerInput.dispatchEvent(inputEvent);\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._getItems().filter(item => item._isVisible && !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\t_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.showSelectAll && isSelectAllFocused)) {\n\t\t\t\tthis._shouldAutocomplete = true;\n\t\t\t\treturn this._inputDom.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?.getSlottedNodes<IMultiComboBoxItem>(\"items\")[1] === e.target && this.list?.getSlottedNodes<IMultiComboBoxItem>(\"items\")[0].hasAttribute(\"ui5-li-group\");\n\t\tconst isFirstItem = this.list?.getSlottedNodes<IMultiComboBoxItem>(\"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?.getSlottedNodes<IMultiComboBoxItem>(\"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?.getSlottedNodes<IMultiComboBoxItem>(\"items\")[this.list?._itemNavigation._currentIndex].focus();\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tif (isCtrlAltF8(e)) {\n\t\t\treturn this._handleCtrlALtF8();\n\t\t}\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?.getSlottedNodes<IMultiComboBoxItem>(\"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?.getSlottedNodes<IMultiComboBoxItem>(\"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?.getSlottedNodes<IMultiComboBoxItem>(\"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 {\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.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?.getSlottedNodes<IMultiComboBoxItem>(\"items\")[0];\n\t\tconst focusRef = firstListItem?.hasAttribute(\"ui5-mcb-item-group\") ? (firstListItem as MultiComboBoxItemGroup).getFocusDomRef() : firstListItem;\n\n\t\tif (this.open) {\n\t\t\tfirstListItem && focusRef && this.list?._itemNavigation.setCurrentItem(focusRef);\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_handleCtrlALtF8() {\n\t\tconst links = this.linksInAriaValueStateHiddenText;\n\n\t\tif (links.length > 0) {\n\t\t\tlinks[0].focus();\n\t\t}\n\n\t\tthis._handleLinkNavigation = true;\n\t}\n\n\t_handleItemRangeSelection(e: KeyboardEvent) {\n\t\tconst items = this._getItems();\n\t\tconst listItems = this.list?.getSlottedNodes<IMultiComboBoxItem>(\"items\");\n\t\tconst currentItemIdx = Number(listItems?.indexOf(e.target as IMultiComboBoxItem));\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 (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\t\t\t\tthis._updateValueState(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\tconst previousSelectedValues = [...this.selectedValues];\n\t\t\t\tmatchingItem.selected = true;\n\t\t\t\tthis.value = \"\";\n\t\t\t\t// during composition prevent _inputLiveChange for proper input clearing\n\t\t\t\tif (this._isComposing) {\n\t\t\t\t\tthis._suppressNextLiveChange = true;\n\t\t\t\t}\n\n\t\t\t\tif (this.selectedValues && matchingItem.value) {\n\t\t\t\t\tthis.selectedValues = [...this.selectedValues, matchingItem.value];\n\t\t\t\t}\n\n\t\t\t\tconst changePrevented = this.fireSelectionChange();\n\n\t\t\t\tif (changePrevented) {\n\t\t\t\t\tthis.selectedValues = previousSelectedValues;\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} else {\n\t\t\tif (this._lastValue !== this.value) {\n\t\t\t\tthis._inputChange();\n\t\t\t}\n\n\t\t\tif (this._internals?.form) {\n\t\t\t\tsubmitForm(this);\n\t\t\t}\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._updateValueState(valueState);\n\t\t\tthis._validationTimeout = null;\n\t\t\tthis._innerInput.focus();\n\n\t\t\tcallback && callback();\n\t\t}, 2000);\n\t}\n\n\t_onTokenizerKeydown(e: KeyboardEvent) {\n\t\tif ((isRight(e) && this.effectiveDir === \"ltr\") || (isLeft(e) && this.effectiveDir === \"rtl\")) {\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\tthis._getItems().forEach(item => {\n\t\t\tif (isInstanceOfMultiComboBoxItem(item)) {\n\t\t\t\titem._isVisible = filteredItems.includes(item);\n\t\t\t}\n\t\t});\n\n\t\treturn this.items.filter(item => {\n\t\t\tif (item.isGroupItem) {\n\t\t\t\treturn (item as MultiComboBoxItemGroup).items.some(listItem => listItem._isVisible) ? item : false;\n\t\t\t}\n\n\t\t\treturn item._isVisible;\n\t\t});\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<IMultiComboBoxItem>, filteredItems: Array<IMultiComboBoxItem>) {\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.fireDecoratorEvent(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<IMultiComboBoxItem> {\n\t\tconst items: IMultiComboBoxItem[] = [];\n\t\tconst slottedItems = this.getSlottedNodes<IMultiComboBoxItem>(\"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<MultiComboBoxItem> {\n\t\t// Angular 2 way data binding\n\t\treturn this._getItems().filter(item => item.selected) as Array<MultiComboBoxItem>;\n\t}\n\n\t_listSelectionChange(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tlet changePrevented;\n\n\t\tif (this.readonly) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (!isPhone()) {\n\t\t\tthis._previouslySelectedItems = e.detail.previouslySelectedItems;\n\t\t}\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\tif (this.selectedValues) {\n\t\t\t\t// Get values from all selected items (not just filtered ones)\n\t\t\t\tthis.selectedValues = this._getItems()\n\t\t\t\t\t.filter((i): i is MultiComboBoxItem => isInstanceOfMultiComboBoxItem(i) && i.selected)\n\t\t\t\t\t.map(i => i.value)\n\t\t\t\t\t.filter((v): v is string => !!v);\n\t\t\t}\n\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.fireDecoratorEvent(\"input\");\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value = this.valueBeforeAutoComplete || \"\";\n\t}\n\n\tfireSelectionChange() {\n\t\tconst changePrevented = !this.fireDecoratorEvent(\"selection-change\", {\n\t\t\titems: this._getSelectedItems(),\n\t\t});\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.fireDecoratorEvent(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_addLinksEventListeners() {\n\t\tconst links = this.linksInAriaValueStateHiddenText;\n\n\t\tlinks.forEach((link, index) => {\n\t\t\tthis._linksListenersArray.push((e: KeyboardEvent) => {\n\t\t\t\tattachListeners(e, links, index, {\n\t\t\t\t\tcloseValueState: () => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.open = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.valueStateOpen) {\n\t\t\t\t\t\t\tthis.valueStateOpen = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tnavigateToItem: () => {\n\t\t\t\t\t\tthis._handleLinkNavigation = false;\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis._forwardFocusToInner();\n\t\t\t\t\t\t\tthis._handleArrowDown();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tfocusInput: () => {\n\t\t\t\t\t\tthis._handleLinkNavigation = false;\n\t\t\t\t\t\tthis._forwardFocusToInner();\n\t\t\t\t\t},\n\t\t\t\t\tisPopoverOpen: () => this.open,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tlink.addEventListener(\"keydown\", this._linksListenersArray[index]);\n\t\t});\n\t}\n\n\t_removeLinksEventListeners() {\n\t\tconst links = this.linksInAriaValueStateHiddenText;\n\n\t\tlinks.forEach((link, index) => {\n\t\t\tlink.removeEventListener(\"keydown\", this._linksListenersArray[index]);\n\t\t});\n\n\t\tthis._linksListenersArray = [];\n\t\tthis._handleLinkNavigation = false;\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\t_syncSelection() {\n\t\t// set selected property of the items based on the selection value\n\t\tthis._getItems().forEach(item => {\n\t\t\tif (isInstanceOfMultiComboBoxItem(item) && item.value) {\n\t\t\t\titem.selected = this.selectedValues.includes(item.value);\n\t\t\t}\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 = this.items.filter(item => item.selected).length;\n\t\t\tthis._allSelected = selectedListItemsCount > 0 && ((selectedListItemsCount === this.items.length) || (list?.getSlottedNodes(\"items\").length === selectedListItemsCount));\n\t\t}\n\n\t\tthis._effectiveShowClearIcon = (this.showClearIcon && !!this.value && !this.readonly && !this.disabled);\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\tif (this.selectedValues) {\n\t\t\tthis._syncSelection();\n\t\t}\n\n\t\tthis.tokenizerAvailable = this._getSelectedItems().length > 0;\n\t\tthis.style.setProperty(\"--_ui5-input-icons-count\", `${this.iconsCount}`);\n\n\t\tif (!input || !value) {\n\t\t\tthis._getItems().forEach(item => {\n\t\t\t\tif (isInstanceOfMultiComboBoxItem(item)) {\n\t\t\t\t\titem._isVisible = true;\n\t\t\t\t\titem._readonly = this.readonly;\n\t\t\t\t}\n\t\t\t});\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// Prevent typeahead during composition to avoid interfering with the composition process\n\t\t\tif (!this._isComposing && item) {\n\t\t\t\t// Keep the original typed in text intact\n\t\t\t\tthis.valueBeforeAutoComplete = value;\n\t\t\t\tthis._handleTypeAhead(item, value);\n\t\t\t}\n\t\t}\n\n\t\tif (this._shouldFilterItems) {\n\t\t\tthis._filteredItems = this._filterItems(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 || (this._handleLinkNavigation && !this.open);\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._scrollToEndOnExpand = true;\n\t\t\tthis._tokenizer.expanded = true;\n\t\t}\n\n\t\tif (!arraysAreEqual(this._valueStateLinks, this.linksInAriaValueStateHiddenText)) {\n\t\t\tthis._removeLinksEventListeners();\n\t\t\tthis._addLinksEventListeners();\n\t\t\tthis._valueStateLinks = this.linksInAriaValueStateHiddenText;\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.fireDecoratorEvent(\"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 && this.list) {\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<Popover>(\"[ui5-popover]\")!;\n\t}\n\n\t_getResponsivePopover() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\"[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<Tokenizer>(\"[ui5-tokenizer]\")!;\n\t}\n\n\tinputFocusIn(e: FocusEvent) {\n\t\tif (!isPhone()) {\n\t\t\tthis.focused = true;\n\t\t\tthis._tokenizer._scrollToEndOnExpand = true;\n\t\t\tthis._tokenizer.expanded = true;\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.target === this._innerInput) {\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 || this._handleLinkNavigation) {\n\t\t\tthis.focused = false;\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}\n\t}\n\t/**\n\t * Enables IME composition handling.\n\t * Dynamically loads the InputComposition feature and sets up event listeners.\n\t * @private\n\t */\n\t_enableComposition() {\n\t\tif (this._composition) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst setup = (InputCompositionClass: typeof InputComposition) => {\n\t\t\tthis._composition = new InputCompositionClass({\n\t\t\t\tgetInputEl: () => this._innerInput,\n\t\t\t\tupdateCompositionState: (isComposing: boolean) => {\n\t\t\t\t\tthis._isComposing = isComposing;\n\t\t\t\t},\n\t\t\t});\n\t\t\tthis._composition.addEventListeners();\n\t\t};\n\n\t\tif (MultiComboBox.composition) {\n\t\t\tsetup(MultiComboBox.composition);\n\t\t} else {\n\t\t\timport(\"./features/InputComposition.js\").then(CompositionModule => {\n\t\t\t\tMultiComboBox.composition = CompositionModule.default;\n\t\t\t\tsetup(CompositionModule.default);\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\tconst isValueStateSet = this.valueState !== ValueState.None;\n\n\t\tif (isPhone()) {\n\t\t\treturn isValueStateSet || (this._dialogInputValueState !== ValueState.None);\n\t\t}\n\n\t\treturn isValueStateSet;\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\tlet valueStateInnerText = this.valueStateMessage.map(el => el.textContent).join(\" \");\n\t\t// append space before the value state message text if it is not empty\n\t\tvalueStateInnerText = valueStateInnerText.trim().length ? ` ${valueStateInnerText}` : \"\";\n\n\t\tif (this.getValueStateLinksShortcutsTextAcc) {\n\t\t\treturn `${text} ${this.getValueStateLinksShortcutsTextAcc}${valueStateInnerText}`;\n\t\t}\n\n\t\treturn `${text}${valueStateInnerText}`;\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` : \"\";\n\t}\n\n\tget ariaLabelText() {\n\t\treturn getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(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 linksInAriaValueStateHiddenText() {\n\t\tconst links: Array<HTMLElement> = [];\n\t\tif (this.valueStateMessage) {\n\t\t\tthis.valueStateMessage.forEach(element => {\n\t\t\t\tif (element.children.length) {\n\t\t\t\t\telement.querySelectorAll(\"ui5-link\").forEach(link => {\n\t\t\t\t\t\tlinks.push(link as HTMLElement);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn links;\n\t}\n\n\tget getValueStateLinksShortcutsTextAcc() {\n\t\tconst links = this.linksInAriaValueStateHiddenText;\n\t\tif (!links.length) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tif (isMac()) {\n\t\t\treturn links.length === 1\n\t\t\t\t? MultiComboBox.i18nBundle.getText(VALUE_STATE_LINK_MAC)\n\t\t\t\t: MultiComboBox.i18nBundle.getText(VALUE_STATE_LINKS_MAC);\n\t\t}\n\n\t\treturn links.length === 1\n\t\t\t? MultiComboBox.i18nBundle.getText(VALUE_STATE_LINK)\n\t\t\t: MultiComboBox.i18nBundle.getText(VALUE_STATE_LINKS);\n\t}\n\n\tget _valueStateLinksShortcutsTextAccId() {\n\t\treturn this.linksInAriaValueStateHiddenText.length > 0 ? `hiddenText-value-state-link-shortcut` : \"\";\n\t}\n\n\tget _tokensCountText() {\n\t\tif (!this._tokenizer) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn getTokensCountText(this._getSelectedItems().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._tokensCountTextId} ${this.valueStateTextId} ${this._valueStateLinksShortcutsTextAccId}`.trim();\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 _dialogCancelButton() {\n\t\treturn MultiComboBox.i18nBundle.getText(MULTICOMBOBOX_DIALOG_CANCEL_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 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 responsivePopoverId() {\n\t\treturn `${this._id}-popover`;\n\t}\n\n\tget classes(): ClassMap {\n\t\tconst popover = {\n\t\t\t\"ui5-multi-combobox-all-items-responsive-popover\": true,\n\t\t\t\"ui5-suggestions-popover\": true,\n\t\t\t\"ui5-popover-with-value-state-header-phone\": this._isPhone && this.hasValueStateMessage,\n\t\t\t\"ui5-popover-with-value-state-header\": !this._isPhone && this.hasValueStateMessage,\n\t\t};\n\t\tconst popoverValueState = {\n\t\t\t\"ui5-valuestatemessage-root\": true,\n\t\t\t\"ui5-valuestatemessage-header\": true,\n\t\t\t\"ui5-valuestatemessage--success\": (this.valueState === ValueState.Positive) || (isPhone() && this._dialogInputValueState === ValueState.Positive),\n\t\t\t\"ui5-valuestatemessage--error\": (this.valueState === ValueState.Negative) || (isPhone() && this._dialogInputValueState === ValueState.Negative),\n\t\t\t\"ui5-valuestatemessage--warning\": (this.valueState === ValueState.Critical) || (isPhone() && this._dialogInputValueState === ValueState.Critical),\n\t\t\t\"ui5-valuestatemessage--information\": (this.valueState === ValueState.Information) || (isPhone() && this._dialogInputValueState === ValueState.Information),\n\t\t};\n\t\treturn {\n\t\t\tpopover,\n\t\t\tpopoverValueState,\n\t\t\tresponsivePopoverHeaderValueState: {\n\t\t\t\t\"ui5-responsive-popover-header\": true,\n\t\t\t\t...popoverValueState,\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%\" : `22rem`,\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\nMultiComboBox.define();\n\nexport default MultiComboBox;\n\nexport type {\n\tIMultiComboBoxItem,\n\tMultiComboBoxSelectionChangeEventDetail,\n\tMultiComboBoxValueStateChangeEventDetail,\n};\n"]}
1
+ {"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 type { Slot, DefaultSlot } 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-strict.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport type { ClassMap, Timeout } from \"@ui5/webcomponents-base/dist/types.js\";\nimport jsxRender from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.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 type { UI5CustomEvent } from \"@ui5/webcomponents-base\";\nimport {\n\tisShow,\n\tisDown,\n\tisUp,\n\tisSpace,\n\tisSpaceCtrl,\n\tisSpaceShift,\n\tisRight,\n\tisLeft,\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\tisCtrlAltF8,\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\tisMac,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { attachListeners } from \"@ui5/webcomponents-base/dist/util/valueStateNavigation.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.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 { getAssociatedLabelForTexts, getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport arraysAreEqual from \"@ui5/webcomponents-base/dist/util/arraysAreEqual.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\tVALUE_STATE_LINK,\n\tVALUE_STATE_LINKS,\n\tVALUE_STATE_LINK_MAC,\n\tVALUE_STATE_LINKS_MAC,\n\tINPUT_SUGGESTIONS_TITLE,\n\tSELECT_OPTIONS,\n\tSHOW_SELECTED_BUTTON,\n\tMULTICOMBOBOX_DIALOG_OK_BUTTON,\n\tMULTICOMBOBOX_DIALOG_CANCEL_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 \"./MultiComboBoxTemplate.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 CheckBox from \"./CheckBox.js\";\nimport Input from \"./Input.js\";\nimport type { InputEventDetail } from \"./Input.js\";\nimport SuggestionItem from \"./SuggestionItem.js\";\nimport type InputComposition from \"./features/InputComposition.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\tvalue?: string,\n\tadditionalText?: string,\n\theaderText?: string,\n\tselected: boolean,\n\tisGroupItem?: boolean,\n\t_isVisible?: boolean,\n\titems?: Array<IMultiComboBoxItem>,\n}\n\ntype ValueStateAnnouncement = Record<Exclude<ValueState, ValueState.None>, string>;\ntype ValueStateTypeAnnouncement = Record<Exclude<ValueState, ValueState.None>, string>;\n\ntype MultiComboBoxSelectionChangeEventDetail = {\n\titems: Array<MultiComboBoxItem>,\n};\n\ntype MultiComboboxItemWithSelection = {\n\tref: IMultiComboBoxItem,\n\tselected: boolean,\n};\n\ntype MultiComboBoxValueStateChangeEventDetail = {\n\tvalueState: `${ValueState}`,\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 * [Ctrl]+[Alt]+[F8] or [Command]+[Option]+[F8] - Focuses the first link in the value state message, if available. Pressing [Tab] moves the focus to the next link in the value state message, or closes the value state message if there are no more links.\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: jsxRender,\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\tbubbles: true,\n})\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\tbubbles: true,\n})\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 */\n@event(\"selection-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\n/**\n * Fired before the value state of the component is updated internally.\n * The event is preventable, meaning that if it's default action is\n * prevented, the component will not update the value state.\n * @public\n * @since 2.19.0\n * @param {string} valueState The new `valueState` that will be set.\n */\n@event(\"value-state-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\nclass MultiComboBox extends UI5Element implements IFormInputElement {\n\teventDetails!: {\n\t\tchange: void,\n\t\tinput: void,\n\t\topen: void,\n\t\tclose: void,\n\t\t\"selection-change\": MultiComboBoxSelectionChangeEventDetail,\n\t\t\"value-state-change\": MultiComboBoxValueStateChangeEventDetail,\n\t}\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 * Defines the values of the selected items.\n\t *\n\t * Use this property to programmatically select items by their `value` property.\n\t * Each string in the array should match the `value` attribute of a `ui5-mcb-item`.\n\t *\n\t * **Note:** If an item doesn't have a `value` attribute set, it cannot be selected via this property.\n\t *\n\t * **Note:** The recommended approach is to set the `value` property on each `ui5-mcb-item`\n\t * and use `selectedValues` for programmatic selection. The `selected` property on items is\n\t * deprecated and should not be used together with `selectedValues`.\n\t *\n\t * @default []\n\t * @public\n\t * @since 2.20.0\n\t */\n\t@property({ type: Array })\n\tselectedValues: Array<string> = [];\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 * Indicates whether a loading indicator should be shown in the picker.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tloading = 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 * @public\n\t * @since 2.9.0\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t@property()\n\t_valueBeforeOpen = this.value;\n\n\t@property({ type: Array, noAttribute: true })\n\t_filteredItems!: Array<IMultiComboBoxItem>;\n\n\t@property({ type: Array, noAttribute: true })\n\t_previouslySelectedItems!: Array<IMultiComboBoxItem>;\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 * Indicates whether link navigation is being handled.\n\t * @private\n\t * @since 2.11.0\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\t_handleLinkNavigation: boolean = false;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Array, noAttribute: true })\n\t_linksListenersArray: Array<(args: any) => void> = [];\n\n\t/**\n\t * Indicates whether IME composition is currently active\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\t_isComposing = false;\n\n\t/**\n\t * Defines the component items.\n\t * @public\n\t */\n\t@slot({\n\t\ttype: HTMLElement,\n\t\t\"default\": true,\n\t\tinvalidateOnChildChange: true,\n\t\tindividualSlots: true,\n\t})\n\titems!: DefaultSlot<IMultiComboBoxItem>;\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!: Slot<IIcon>;\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!: Slot<HTMLElement>;\n\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<MultiComboboxItemWithSelection>;\n\tselectedItems: Array<IMultiComboBoxItem>;\n\t_valueStateLinks: Array<HTMLElement>;\n\t_composition?: InputComposition;\n\t_suppressNextLiveChange: boolean; // prevent unwanted live change events during IME composition\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\tstatic composition: typeof InputComposition;\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._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\tthis._valueStateLinks = [];\n\t\tthis._suppressNextLiveChange = false;\n\t}\n\n\tonEnterDOM() {\n\t\tResizeHandler.register(this, this._handleResizeBound);\n\t\tthis._enableComposition();\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(this, this._handleResizeBound);\n\t\tthis._removeLinksEventListeners();\n\t\tthis._composition?.removeEventListeners();\n\t}\n\n\t_handleResize() {\n\t\tthis._inputWidth = this.offsetWidth;\n\t}\n\n\t_handleMobileInput(e: CustomEvent<InputEventDetail>) {\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\tif (this.filterSelected) {\n\t\t\tthis.filterSelected = false;\n\t\t}\n\n\t\tthis.value = value;\n\t\tthis._shouldFilterItems = true;\n\t\tthis.valueBeforeAutoComplete = value;\n\n\t\tthis.fireDecoratorEvent(\"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.fireDecoratorEvent(\"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\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\t\tthis._tokenizer._scrollToEndOnExpand = true;\n\n\t\tthis._toggleTokenizerPopover();\n\t}\n\n\tfilterSelectedItems(e: UI5CustomEvent<ToggleButton, \"click\">) {\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\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\t// This ensures proper input clearing after Enter-based token creation during composition\n\t\tif (this._suppressNextLiveChange) {\n\t\t\tthis._suppressNextLiveChange = false;\n\t\t\treturn;\n\t\t}\n\n\t\tconst input = e.target as HTMLInputElement;\n\t\tconst value: string = input.value;\n\t\tconst filteredItems: Array<IMultiComboBoxItem> = this._filterItems(value);\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._updateValueState(this._effectiveValueState);\n\t\t\t\tthis._validationTimeout = null;\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Save the original value state before setting validation error\n\t\tif (this.valueState !== ValueState.Negative) {\n\t\t\tthis._effectiveValueState = this.valueState;\n\t\t}\n\n\t\tif (!this._isComposing && !filteredItems.length && value && !this.noValidation) {\n\t\t\tthis._updateValueState(ValueState.Negative);\n\t\t\tthis._shouldAutocomplete = false;\n\t\t} else if ((filteredItems.length || !value) && this.valueState === ValueState.Negative) {\n\t\t\tthis._updateValueState(this._effectiveValueState);\n\t\t}\n\n\t\tif (!this._isComposing) {\n\t\t\tthis._inputLastValue = input.value;\n\t\t}\n\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.fireDecoratorEvent(\"input\");\n\t}\n\n\t_updateValueState(newValueState: `${ValueState}`) {\n\t\tconst oldValueState = this.valueState;\n\t\tif (oldValueState !== newValueState) {\n\t\t\tconst eventPrevented = !this.fireDecoratorEvent(\"value-state-change\", {\n\t\t\t\tvalueState: newValueState,\n\t\t\t});\n\n\t\t\tif (!eventPrevented) {\n\t\t\t\tthis.valueState = newValueState;\n\t\t\t}\n\t\t}\n\t}\n\n\t_tokenDelete(e: CustomEvent<TokenizerTokenDeleteEventDetail>) {\n\t\tthis._previouslySelectedItems = this._getSelectedItems();\n\t\tconst token: Token[] = e.detail.tokens;\n\t\tconst deletingItems = this._getItems().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\tif (this.selectedValues) {\n\t\t\tconst valuesToDelete = deletingItems.map(item => item.value);\n\t\t\tthis.selectedValues = this.selectedValues.filter(value => !valuesToDelete.includes(value));\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// If the input is focused and the cursor is at the beginning/end of the input,\n\t// focus the last token if the direction is LTR/ RTL\n\tget _shouldFocusLastToken(): boolean {\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\treturn cursorPosition === 0 && !isTextSelected;\n\t}\n\n\t_handleArrowKey(direction: string) {\n\t\tif (this._shouldFocusLastToken && this.effectiveDir === direction) {\n\t\t\tthis._tokenizer._focusLastToken();\n\t\t}\n\t}\n\n\t_handleArrowLeft() {\n\t\tthis._handleArrowKey(\"ltr\");\n\t}\n\n\t_handleArrowRight() {\n\t\tthis._handleArrowKey(\"rtl\");\n\t}\n\n\t_onPopoverFocusOut() {\n\t\tif (!isPhone() || !this._handleLinkNavigation) {\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 (isCtrlAltF8(e)) {\n\t\t\treturn this._handleCtrlALtF8();\n\t\t}\n\n\t\tif (\n\t\t\te.key === \"ArrowLeft\"\n\t\t\t|| e.key === \"ArrowRight\"\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\tasync _handlePaste(e: ClipboardEvent) {\n\t\tif (this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tconst pastedText = await navigator.clipboard.readText();\n\t\tdocument.execCommand(\"insertText\", true, pastedText ?? \"\");\n\t\tconst inputEvent = new Event(\"input\", {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t});\n\n\t\t// Dispatch it\n\t\tthis._innerInput.dispatchEvent(inputEvent);\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\t\te.preventDefault();\n\n\t\tconst pastedText = await navigator.clipboard.readText();\n\t\tdocument.execCommand(\"insertText\", true, pastedText ?? \"\");\n\t\tconst inputEvent = new Event(\"input\", {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t});\n\n\t\t// Dispatch it\n\t\tthis._innerInput.dispatchEvent(inputEvent);\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._getItems().filter(item => item._isVisible && !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\t_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.showSelectAll && isSelectAllFocused)) {\n\t\t\t\tthis._shouldAutocomplete = true;\n\t\t\t\treturn this._inputDom.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?.getSlottedNodes<IMultiComboBoxItem>(\"items\")[1] === e.target && this.list?.getSlottedNodes<IMultiComboBoxItem>(\"items\")[0].hasAttribute(\"ui5-li-group\");\n\t\tconst isFirstItem = this.list?.getSlottedNodes<IMultiComboBoxItem>(\"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?.getSlottedNodes<IMultiComboBoxItem>(\"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?.getSlottedNodes<IMultiComboBoxItem>(\"items\")[this.list?._itemNavigation._currentIndex].focus();\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tif (isCtrlAltF8(e)) {\n\t\t\treturn this._handleCtrlALtF8();\n\t\t}\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?.getSlottedNodes<IMultiComboBoxItem>(\"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?.getSlottedNodes<IMultiComboBoxItem>(\"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?.getSlottedNodes<IMultiComboBoxItem>(\"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 {\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.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?.getSlottedNodes<IMultiComboBoxItem>(\"items\")[0];\n\t\tconst focusRef = firstListItem?.hasAttribute(\"ui5-mcb-item-group\") ? (firstListItem as MultiComboBoxItemGroup).getFocusDomRef() : firstListItem;\n\n\t\tif (this.open) {\n\t\t\tfirstListItem && focusRef && this.list?._itemNavigation.setCurrentItem(focusRef);\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_handleCtrlALtF8() {\n\t\tconst links = this.linksInAriaValueStateHiddenText;\n\n\t\tif (links.length > 0) {\n\t\t\tlinks[0].focus();\n\t\t}\n\n\t\tthis._handleLinkNavigation = true;\n\t}\n\n\t_handleItemRangeSelection(e: KeyboardEvent) {\n\t\tconst items = this._getItems();\n\t\tconst listItems = this.list?.getSlottedNodes<IMultiComboBoxItem>(\"items\");\n\t\tconst currentItemIdx = Number(listItems?.indexOf(e.target as IMultiComboBoxItem));\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 (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\t\t\t\tthis._updateValueState(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\tconst previousSelectedValues = [...this.selectedValues];\n\t\t\t\tmatchingItem.selected = true;\n\t\t\t\tthis.value = \"\";\n\t\t\t\t// during composition prevent _inputLiveChange for proper input clearing\n\t\t\t\tif (this._isComposing) {\n\t\t\t\t\tthis._suppressNextLiveChange = true;\n\t\t\t\t}\n\n\t\t\t\tif (this.selectedValues && matchingItem.value) {\n\t\t\t\t\tthis.selectedValues = [...this.selectedValues, matchingItem.value];\n\t\t\t\t}\n\n\t\t\t\tconst changePrevented = this.fireSelectionChange();\n\n\t\t\t\tif (changePrevented) {\n\t\t\t\t\tthis.selectedValues = previousSelectedValues;\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} else {\n\t\t\t// If dropdown is open with a focused item, just close it instead of submitting\n\t\t\tif (this.open && this._getList()._itemNavigation._currentIndex >= 0) {\n\t\t\t\tthis.open = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this._lastValue !== this.value) {\n\t\t\t\tthis._inputChange();\n\t\t\t}\n\n\t\t\tif (this._internals?.form) {\n\t\t\t\tsubmitForm(this);\n\t\t\t}\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._updateValueState(valueState);\n\t\t\tthis._validationTimeout = null;\n\t\t\tthis._innerInput.focus();\n\n\t\t\tcallback && callback();\n\t\t}, 2000);\n\t}\n\n\t_onTokenizerKeydown(e: KeyboardEvent) {\n\t\tif ((isRight(e) && this.effectiveDir === \"ltr\") || (isLeft(e) && this.effectiveDir === \"rtl\")) {\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\tthis._getItems().forEach(item => {\n\t\t\tif (isInstanceOfMultiComboBoxItem(item)) {\n\t\t\t\titem._isVisible = filteredItems.includes(item);\n\t\t\t}\n\t\t});\n\n\t\treturn this.items.filter(item => {\n\t\t\tif (item.isGroupItem) {\n\t\t\t\treturn (item as MultiComboBoxItemGroup).items.some(listItem => listItem._isVisible) ? item : false;\n\t\t\t}\n\n\t\t\treturn item._isVisible;\n\t\t});\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<IMultiComboBoxItem>, filteredItems: Array<IMultiComboBoxItem>) {\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.fireDecoratorEvent(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<IMultiComboBoxItem> {\n\t\tconst items: IMultiComboBoxItem[] = [];\n\t\tconst slottedItems = this.getSlottedNodes<IMultiComboBoxItem>(\"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<MultiComboBoxItem> {\n\t\t// Angular 2 way data binding\n\t\treturn this._getItems().filter(item => item.selected) as Array<MultiComboBoxItem>;\n\t}\n\n\t_listSelectionChange(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tlet changePrevented;\n\n\t\tif (this.readonly) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (!isPhone()) {\n\t\t\tthis._previouslySelectedItems = e.detail.previouslySelectedItems;\n\t\t}\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\tif (this.selectedValues) {\n\t\t\t\t// Get values from all selected items (not just filtered ones)\n\t\t\t\tthis.selectedValues = this._getItems()\n\t\t\t\t\t.filter((i): i is MultiComboBoxItem => isInstanceOfMultiComboBoxItem(i) && i.selected)\n\t\t\t\t\t.map(i => i.value)\n\t\t\t\t\t.filter((v): v is string => !!v);\n\t\t\t}\n\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.fireDecoratorEvent(\"input\");\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value = this.valueBeforeAutoComplete || \"\";\n\t}\n\n\tfireSelectionChange() {\n\t\tconst changePrevented = !this.fireDecoratorEvent(\"selection-change\", {\n\t\t\titems: this._getSelectedItems(),\n\t\t});\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.fireDecoratorEvent(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_addLinksEventListeners() {\n\t\tconst links = this.linksInAriaValueStateHiddenText;\n\n\t\tlinks.forEach((link, index) => {\n\t\t\tthis._linksListenersArray.push((e: KeyboardEvent) => {\n\t\t\t\tattachListeners(e, links, index, {\n\t\t\t\t\tcloseValueState: () => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.open = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.valueStateOpen) {\n\t\t\t\t\t\t\tthis.valueStateOpen = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tnavigateToItem: () => {\n\t\t\t\t\t\tthis._handleLinkNavigation = false;\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis._forwardFocusToInner();\n\t\t\t\t\t\t\tthis._handleArrowDown();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tfocusInput: () => {\n\t\t\t\t\t\tthis._handleLinkNavigation = false;\n\t\t\t\t\t\tthis._forwardFocusToInner();\n\t\t\t\t\t},\n\t\t\t\t\tisPopoverOpen: () => this.open,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tlink.addEventListener(\"keydown\", this._linksListenersArray[index]);\n\t\t});\n\t}\n\n\t_removeLinksEventListeners() {\n\t\tconst links = this.linksInAriaValueStateHiddenText;\n\n\t\tlinks.forEach((link, index) => {\n\t\t\tlink.removeEventListener(\"keydown\", this._linksListenersArray[index]);\n\t\t});\n\n\t\tthis._linksListenersArray = [];\n\t\tthis._handleLinkNavigation = false;\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\t_syncSelection() {\n\t\t// set selected property of the items based on the selection value\n\t\tthis._getItems().forEach(item => {\n\t\t\tif (isInstanceOfMultiComboBoxItem(item) && item.value) {\n\t\t\t\titem.selected = this.selectedValues.includes(item.value);\n\t\t\t}\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 = this.items.filter(item => item.selected).length;\n\t\t\tthis._allSelected = selectedListItemsCount > 0 && ((selectedListItemsCount === this.items.length) || (list?.getSlottedNodes(\"items\").length === selectedListItemsCount));\n\t\t}\n\n\t\tthis._effectiveShowClearIcon = (this.showClearIcon && !!this.value && !this.readonly && !this.disabled);\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\tif (this.selectedValues) {\n\t\t\tthis._syncSelection();\n\t\t}\n\n\t\tthis.tokenizerAvailable = this._getSelectedItems().length > 0;\n\t\tthis.style.setProperty(\"--_ui5-input-icons-count\", `${this.iconsCount}`);\n\n\t\tif (!input || !value) {\n\t\t\tthis._getItems().forEach(item => {\n\t\t\t\tif (isInstanceOfMultiComboBoxItem(item)) {\n\t\t\t\t\titem._isVisible = true;\n\t\t\t\t\titem._readonly = this.readonly;\n\t\t\t\t}\n\t\t\t});\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// Prevent typeahead during composition to avoid interfering with the composition process\n\t\t\tif (!this._isComposing && item) {\n\t\t\t\t// Keep the original typed in text intact\n\t\t\t\tthis.valueBeforeAutoComplete = value;\n\t\t\t\tthis._handleTypeAhead(item, value);\n\t\t\t}\n\t\t}\n\n\t\tif (this._shouldFilterItems) {\n\t\t\tthis._filteredItems = this._filterItems(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 || (this._handleLinkNavigation && !this.open);\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._scrollToEndOnExpand = true;\n\t\t\tthis._tokenizer.expanded = true;\n\t\t}\n\n\t\tif (!arraysAreEqual(this._valueStateLinks, this.linksInAriaValueStateHiddenText)) {\n\t\t\tthis._removeLinksEventListeners();\n\t\t\tthis._addLinksEventListeners();\n\t\t\tthis._valueStateLinks = this.linksInAriaValueStateHiddenText;\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.fireDecoratorEvent(\"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 && this.list) {\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<Popover>(\"[ui5-popover]\")!;\n\t}\n\n\t_getResponsivePopover() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\"[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<Tokenizer>(\"[ui5-tokenizer]\")!;\n\t}\n\n\tinputFocusIn(e: FocusEvent) {\n\t\tif (!isPhone()) {\n\t\t\tthis.focused = true;\n\t\t\tthis._tokenizer._scrollToEndOnExpand = true;\n\t\t\tthis._tokenizer.expanded = true;\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.target === this._innerInput) {\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 || this._handleLinkNavigation) {\n\t\t\tthis.focused = false;\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}\n\t}\n\t/**\n\t * Enables IME composition handling.\n\t * Dynamically loads the InputComposition feature and sets up event listeners.\n\t * @private\n\t */\n\t_enableComposition() {\n\t\tif (this._composition) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst setup = (InputCompositionClass: typeof InputComposition) => {\n\t\t\tthis._composition = new InputCompositionClass({\n\t\t\t\tgetInputEl: () => this._innerInput,\n\t\t\t\tupdateCompositionState: (isComposing: boolean) => {\n\t\t\t\t\tthis._isComposing = isComposing;\n\t\t\t\t},\n\t\t\t});\n\t\t\tthis._composition.addEventListeners();\n\t\t};\n\n\t\tif (MultiComboBox.composition) {\n\t\t\tsetup(MultiComboBox.composition);\n\t\t} else {\n\t\t\timport(\"./features/InputComposition.js\").then(CompositionModule => {\n\t\t\t\tMultiComboBox.composition = CompositionModule.default;\n\t\t\t\tsetup(CompositionModule.default);\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\tconst isValueStateSet = this.valueState !== ValueState.None;\n\n\t\tif (isPhone()) {\n\t\t\treturn isValueStateSet || (this._dialogInputValueState !== ValueState.None);\n\t\t}\n\n\t\treturn isValueStateSet;\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\tlet valueStateInnerText = this.valueStateMessage.map(el => el.textContent).join(\" \");\n\t\t// append space before the value state message text if it is not empty\n\t\tvalueStateInnerText = valueStateInnerText.trim().length ? ` ${valueStateInnerText}` : \"\";\n\n\t\tif (this.getValueStateLinksShortcutsTextAcc) {\n\t\t\treturn `${text} ${this.getValueStateLinksShortcutsTextAcc}${valueStateInnerText}`;\n\t\t}\n\n\t\treturn `${text}${valueStateInnerText}`;\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` : \"\";\n\t}\n\n\tget ariaLabelText() {\n\t\treturn getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(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 linksInAriaValueStateHiddenText() {\n\t\tconst links: Array<HTMLElement> = [];\n\t\tif (this.valueStateMessage) {\n\t\t\tthis.valueStateMessage.forEach(element => {\n\t\t\t\tif (element.children.length) {\n\t\t\t\t\telement.querySelectorAll(\"ui5-link\").forEach(link => {\n\t\t\t\t\t\tlinks.push(link as HTMLElement);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn links;\n\t}\n\n\tget getValueStateLinksShortcutsTextAcc() {\n\t\tconst links = this.linksInAriaValueStateHiddenText;\n\t\tif (!links.length) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tif (isMac()) {\n\t\t\treturn links.length === 1\n\t\t\t\t? MultiComboBox.i18nBundle.getText(VALUE_STATE_LINK_MAC)\n\t\t\t\t: MultiComboBox.i18nBundle.getText(VALUE_STATE_LINKS_MAC);\n\t\t}\n\n\t\treturn links.length === 1\n\t\t\t? MultiComboBox.i18nBundle.getText(VALUE_STATE_LINK)\n\t\t\t: MultiComboBox.i18nBundle.getText(VALUE_STATE_LINKS);\n\t}\n\n\tget _valueStateLinksShortcutsTextAccId() {\n\t\treturn this.linksInAriaValueStateHiddenText.length > 0 ? `hiddenText-value-state-link-shortcut` : \"\";\n\t}\n\n\tget _tokensCountText() {\n\t\tif (!this._tokenizer) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn getTokensCountText(this._getSelectedItems().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._tokensCountTextId} ${this.valueStateTextId} ${this._valueStateLinksShortcutsTextAccId}`.trim();\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 _dialogCancelButton() {\n\t\treturn MultiComboBox.i18nBundle.getText(MULTICOMBOBOX_DIALOG_CANCEL_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 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 responsivePopoverId() {\n\t\treturn `${this._id}-popover`;\n\t}\n\n\tget classes(): ClassMap {\n\t\tconst popover = {\n\t\t\t\"ui5-multi-combobox-all-items-responsive-popover\": true,\n\t\t\t\"ui5-suggestions-popover\": true,\n\t\t\t\"ui5-popover-with-value-state-header-phone\": this._isPhone && this.hasValueStateMessage,\n\t\t\t\"ui5-popover-with-value-state-header\": !this._isPhone && this.hasValueStateMessage,\n\t\t};\n\t\tconst popoverValueState = {\n\t\t\t\"ui5-valuestatemessage-root\": true,\n\t\t\t\"ui5-valuestatemessage-header\": true,\n\t\t\t\"ui5-valuestatemessage--success\": (this.valueState === ValueState.Positive) || (isPhone() && this._dialogInputValueState === ValueState.Positive),\n\t\t\t\"ui5-valuestatemessage--error\": (this.valueState === ValueState.Negative) || (isPhone() && this._dialogInputValueState === ValueState.Negative),\n\t\t\t\"ui5-valuestatemessage--warning\": (this.valueState === ValueState.Critical) || (isPhone() && this._dialogInputValueState === ValueState.Critical),\n\t\t\t\"ui5-valuestatemessage--information\": (this.valueState === ValueState.Information) || (isPhone() && this._dialogInputValueState === ValueState.Information),\n\t\t};\n\t\treturn {\n\t\t\tpopover,\n\t\t\tpopoverValueState,\n\t\t\tresponsivePopoverHeaderValueState: {\n\t\t\t\t\"ui5-responsive-popover-header\": true,\n\t\t\t\t...popoverValueState,\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%\" : `22rem`,\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\nMultiComboBox.define();\n\nexport default MultiComboBox;\n\nexport type {\n\tIMultiComboBoxItem,\n\tMultiComboBoxSelectionChangeEventDetail,\n\tMultiComboBoxValueStateChangeEventDetail,\n};\n"]}