@ui5/webcomponents 2.22.0-rc.1 → 2.22.0-rc.3
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.
- package/CHANGELOG.md +45 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/AvatarBadge.d.ts +15 -1
- package/dist/AvatarBadge.js +40 -3
- package/dist/AvatarBadge.js.map +1 -1
- package/dist/AvatarBadgeTemplate.js +1 -1
- package/dist/AvatarBadgeTemplate.js.map +1 -1
- package/dist/ColorPalette.d.ts +8 -8
- package/dist/ColorPalette.js +7 -5
- package/dist/ColorPalette.js.map +1 -1
- package/dist/ColorPaletteItem.d.ts +9 -0
- package/dist/ColorPaletteItem.js +33 -0
- package/dist/ColorPaletteItem.js.map +1 -1
- package/dist/ColorPaletteItemTemplate.js +1 -1
- package/dist/ColorPaletteItemTemplate.js.map +1 -1
- package/dist/ColorPalettePopover.js +1 -1
- package/dist/ColorPalettePopover.js.map +1 -1
- package/dist/ComboBox.js +7 -2
- package/dist/ComboBox.js.map +1 -1
- package/dist/ComboBoxPopoverTemplate.js +2 -1
- package/dist/ComboBoxPopoverTemplate.js.map +1 -1
- package/dist/DateRangePicker.d.ts +12 -1
- package/dist/DateRangePicker.js +31 -1
- package/dist/DateRangePicker.js.map +1 -1
- package/dist/Input.d.ts +5 -2
- package/dist/Input.js +11 -8
- package/dist/Input.js.map +1 -1
- package/dist/MultiComboBox.js +4 -1
- package/dist/MultiComboBox.js.map +1 -1
- package/dist/MultiInputTemplate.js +1 -1
- package/dist/MultiInputTemplate.js.map +1 -1
- package/dist/SegmentedButton.js +6 -4
- package/dist/SegmentedButton.js.map +1 -1
- package/dist/SegmentedButtonItem.d.ts +8 -0
- package/dist/SegmentedButtonItem.js +26 -1
- package/dist/SegmentedButtonItem.js.map +1 -1
- package/dist/StepInput.d.ts +2 -2
- package/dist/StepInput.js +17 -7
- package/dist/StepInput.js.map +1 -1
- package/dist/Switch.d.ts +2 -0
- package/dist/Switch.js +7 -1
- package/dist/Switch.js.map +1 -1
- package/dist/SwitchTemplate.js +2 -2
- package/dist/SwitchTemplate.js.map +1 -1
- package/dist/TextArea.d.ts +10 -0
- package/dist/TextArea.js +37 -0
- package/dist/TextArea.js.map +1 -1
- package/dist/Tokenizer.d.ts +6 -0
- package/dist/Tokenizer.js +4 -1
- package/dist/Tokenizer.js.map +1 -1
- package/dist/css/themes/CardHeader.css +1 -1
- package/dist/css/themes/Select.css +1 -1
- package/dist/css/themes/StepInput.css +1 -1
- package/dist/css/themes/Switch.css +1 -1
- package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +2 -2
- package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
- package/dist/custom-elements-internal.json +126 -14
- package/dist/custom-elements.json +62 -11
- package/dist/features/InputComposition.d.ts +1 -1
- package/dist/features/InputComposition.js.map +1 -1
- package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
- package/dist/generated/i18n/i18n-defaults.js +3 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/CardHeader.css.d.ts +1 -1
- package/dist/generated/themes/CardHeader.css.js +1 -1
- package/dist/generated/themes/CardHeader.css.js.map +1 -1
- package/dist/generated/themes/Select.css.d.ts +1 -1
- package/dist/generated/themes/Select.css.js +1 -1
- package/dist/generated/themes/Select.css.js.map +1 -1
- package/dist/generated/themes/StepInput.css.d.ts +1 -1
- package/dist/generated/themes/StepInput.css.js +1 -1
- package/dist/generated/themes/StepInput.css.js.map +1 -1
- package/dist/generated/themes/Switch.css.d.ts +1 -1
- package/dist/generated/themes/Switch.css.js +1 -1
- package/dist/generated/themes/Switch.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +2 -2
- package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
- package/dist/vscode.html-custom-data.json +14 -9
- package/dist/web-types.json +50 -20
- package/package.json +9 -9
- package/src/AvatarBadgeTemplate.tsx +3 -1
- package/src/ColorPaletteItemTemplate.tsx +1 -0
- package/src/ComboBoxPopoverTemplate.tsx +8 -1
- package/src/MultiInputTemplate.tsx +1 -0
- package/src/SwitchTemplate.tsx +3 -0
- package/src/i18n/messagebundle.properties +6 -0
- package/src/themes/CardHeader.css +0 -1
- package/src/themes/Select.css +25 -0
- package/src/themes/StepInput.css +2 -1
- package/src/themes/Switch.css +4 -2
- package/src/themes/sap_horizon/Select-parameters.css +2 -0
- package/src/themes/sap_horizon_dark/Select-parameters.css +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPaletteItemTemplate.js","sourceRoot":"","sources":["../src/ColorPaletteItemTemplate.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,wBAAwB;IAC/C,OAAO,CACN,cACC,KAAK,EAAC,aAAa,EACnB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EACvC,IAAI,EAAC,QAAQ,gBACD,IAAI,CAAC,YAAY,kBACf,IAAI,CAAC,QAAQ,EAC3B,KAAK,EAAE,IAAI,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"ColorPaletteItemTemplate.js","sourceRoot":"","sources":["../src/ColorPaletteItemTemplate.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,wBAAwB;IAC/C,OAAO,CACN,cACC,KAAK,EAAC,aAAa,EACnB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EACvC,IAAI,EAAC,QAAQ,gBACD,IAAI,CAAC,YAAY,kBACf,IAAI,CAAC,QAAQ,EAC3B,KAAK,EAAE,IAAI,CAAC,YAAY,EACxB,OAAO,EAAE,IAAI,CAAC,QAAQ,GAChB,CACP,CAAC;AACH,CAAC","sourcesContent":["import type ColorPaletteItem from \"./ColorPaletteItem.js\";\n\nexport default function ColorPaletteItemTemplate(this: ColorPaletteItem) {\n\treturn (\n\t\t<div\n\t\t\tclass=\"ui5-cp-item\"\n\t\t\ttabindex={parseInt(this.forcedTabIndex)}\n\t\t\trole=\"button\"\n\t\t\taria-label={this.getLabelText}\n\t\t\taria-pressed={this.selected}\n\t\t\ttitle={this.getLabelText}\n\t\t\tonClick={this._onClick}\n\t\t></div>\n\t);\n}\n"]}
|
|
@@ -105,7 +105,7 @@ let ColorPalettePopover = ColorPalettePopover_1 = class ColorPalettePopover exte
|
|
|
105
105
|
colorPalette._defaultColorButton?.focus();
|
|
106
106
|
}
|
|
107
107
|
// since height is dynamically determined by padding-block-start
|
|
108
|
-
colorPalette.allColorsInPalette.forEach((item) => {
|
|
108
|
+
(colorPalette.allColorsInPalette).forEach((item) => {
|
|
109
109
|
const itemHeight = item.offsetHeight + 4; // adding 4px for the offsets on top and bottom
|
|
110
110
|
item.style.setProperty("--_ui5_color_palette_item_height", `${itemHeight}px`);
|
|
111
111
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPalettePopover.js","sourceRoot":"","sources":["../src/ColorPalettePopover.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AAEpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,wDAAwD,CAAC;AAC1E,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AAEnE,OAAO,qBAAqB,MAAM,yDAAyD,CAAC;AAC5F,OAAO,2BAA2B,MAAM,kCAAkC,CAAC;AAG3E,SAAS;AACT,OAAO,sBAAsB,MAAM,+CAA+C,CAAC;AACnF,OAAO,0BAA0B,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EACN,0BAA0B,EAC1B,kCAAkC,GAClC,MAAM,mCAAmC,CAAC;AAS3C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAwBH,IAAM,mBAAmB,2BAAzB,MAAM,mBAAoB,SAAQ,UAAU;IAkG3C;QACC,KAAK,EAAE,CAAC;QA7FT;;;;WAIG;QAEH,qBAAgB,GAAG,KAAK,CAAA;QAExB;;;;;WAKG;QAEH,mBAAc,GAAG,KAAK,CAAA;QAEtB;;;;WAIG;QAEH,qBAAgB,GAAG,KAAK,CAAA;QA8BxB;;;;;WAKG;QAEH,SAAI,GAAG,KAAK,CAAA;QAaZ;;;;;WAKG;QAEH,cAAS,GAA0B,QAAQ,CAAC;IAc5C,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO,IAAI,CAAC,UAAW,CAAC,aAAa,CAAoB,0BAA0B,CAAE,CAAC;IACvF,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,UAAW,CAAC,aAAa,CAAoB,0BAA0B,CAAE,CAAC;IACvF,CAAC;IAED,YAAY;QACX,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,YAAY;QACX,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,WAAW;QACV,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;YACrC,YAAY,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC;QAC1C,CAAC;aAAM,IAAI,YAAY,CAAC,gBAAgB,IAAI,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;YACtF,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,CAAC;aAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,CAAC;YAC1C,YAAY,CAAC,mBAAmB,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC;QAED,gEAAgE;QAChE,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAuB,EAAE,EAAE;YACnE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,+CAA+C;YACzF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,kCAAkC,EAAE,GAAG,UAAU,IAAI,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,CAAgD;QAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAe,qBAAqB,CAAE,CAAC;IAC9F,CAAC;IAED;;;;OAIG;IACH,MAAM;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,kBAAkB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAmB,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,kBAAkB;QACrB,OAAO,qBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,kBAAkB;QACrB,OAAO,qBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;IAC/B,CAAC;CACD,CAAA;AA7JA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;6DACJ;AASxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;2DACN;AAQtB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;6DACJ;AAUxB;IADC,QAAQ,EAAE;yDACW;AAStB;IADC,QAAQ,EAAE;2DACa;AASxB;IADC,QAAQ,EAAE;8DACgB;AAS3B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iDAChB;AAWZ;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;mDACV;AASrC;IADC,QAAQ,EAAE;sDACiC;AAO5C;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;mDAC5B;AAGjC;IADN,IAAI,CAAC,oBAAoB,CAAC;6CACG;AAhGzB,mBAAmB;IAvBxB,aAAa,CAAC;QACd,GAAG,EAAE,2BAA2B;QAChC,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,CAAC,0BAA0B,EAAE,sBAAsB,CAAC;QAC5D,QAAQ,EAAE,2BAA2B;KACrC,CAAC;IAEF;;;;OAIG;;IACF,KAAK,CAAC,YAAY,EAAE;QACpB,OAAO,EAAE,IAAI;KACb,CAAC;IACF;;;;OAIG;;IACF,KAAK,CAAC,OAAO,EAAE;QACf,OAAO,EAAE,IAAI;KACb,CAAC;GACI,mBAAmB,CAyKxB;AAED,mBAAmB,CAAC,MAAM,EAAE,CAAC;AAE7B,eAAe,mBAAmB,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { 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 jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport DOMReferenceConverter from \"@ui5/webcomponents-base/dist/converters/DOMReference.js\";\nimport ColorPalettePopoverTemplate from \"./ColorPalettePopoverTemplate.js\";\nimport type PopoverPlacement from \"./types/PopoverPlacement.js\";\n\n// Styles\nimport ColorPalettePopoverCss from \"./generated/themes/ColorPalettePopover.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\nimport {\n\tCOLORPALETTE_POPOVER_TITLE,\n\tCOLOR_PALETTE_DIALOG_CANCEL_BUTTON,\n} from \"./generated/i18n/i18n-defaults.js\";\n\nimport type ResponsivePopover from \"./ResponsivePopover.js\";\nimport type ColorPalette from \"./ColorPalette.js\";\nimport type { ColorPaletteItemClickEventDetail, IColorPaletteItem } from \"./ColorPalette.js\";\nimport type ColorPaletteItem from \"./ColorPaletteItem.js\";\n\ntype ColorPalettePopoverItemClickEventDetail = ColorPaletteItemClickEventDetail;\n\n/**\n * @class\n *\n * ### Overview\n * Represents a predefined range of colors for easier selection.\n *\n * Overview\n * The ColorPalettePopover provides the users with a slot to predefine colors.\n *\n * You can customize them with the use of the colors property. You can specify a defaultColor and display a \"Default color\" button for the user to choose directly.\n * You can display a \"More colors...\" button that opens an additional color picker for the user to choose specific colors that are not present in the predefined range.\n *\n * ### Usage\n *\n * The palette is intended for users, who don't want to check and remember the different values of the colors and spend large amount of time to configure the right color through the color picker.\n *\n * For the `ui5-color-palette-popover`\n * ### ES6 Module Import\n *\n * `import @ui5/webcomponents/dist/ColorPalettePopover.js\";`\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.0.0-rc.16\n */\n@customElement({\n\ttag: \"ui5-color-palette-popover\",\n\trenderer: jsxRenderer,\n\tstyles: [ResponsivePopoverCommonCss, ColorPalettePopoverCss],\n\ttemplate: ColorPalettePopoverTemplate,\n})\n\n/**\n * Fired when the user selects a color.\n * @public\n * @param {string} color the selected color\n */\n@event(\"item-click\", {\n\tbubbles: true,\n})\n/**\n * Fired when the `ui5-color-palette-popover` is closed due to user interaction.\n * @since 1.21.0\n * @public\n */\n@event(\"close\", {\n\tbubbles: true,\n})\nclass ColorPalettePopover extends UI5Element {\n\teventDetails!: {\n\t\t\"item-click\": ColorPalettePopoverItemClickEventDetail,\n\t\t\"close\": void,\n\t}\n\n\t/**\n\t * Defines whether the user can see the last used colors in the bottom of the component\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowRecentColors = false\n\n\t/**\n\t * Defines whether the user can choose a custom color from a component.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowMoreColors = false\n\n\t/**\n\t * Defines whether the user can choose the default color from a button.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowDefaultColor = false\n\n\t/**\n\t * Defines the default color of the component.\n\t *\n\t * **Note:** The default color should be a part of the ColorPalette colors`\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tdefaultColor?: string;\n\n\t/**\n\t * Defines the accessible name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.20.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 2.20.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Defines the open | closed state of the popover.\n\t * @public\n\t * @default false\n\t * @since 1.21.0\n\t */\n\t@property({ type: Boolean })\n\topen = false\n\n\t/**\n\t * Defines the ID or DOM Reference of the element that the popover is shown at.\n\t * When using this attribute in a declarative way, you must only use the `id` (as a string) of the element at which you want to show the popover.\n\t * You can only set the `opener` attribute to a DOM Reference when using JavaScript.\n\t * @public\n\t * @default undefined\n\t * @since 1.21.0\n\t */\n\t@property({ converter: DOMReferenceConverter })\n\topener?: HTMLElement | string | null;\n\n\t/**\n\t * Determines on which side the component is placed at.\n\t * @default \"Bottom\"\n\t * @public\n\t * @since 2.19.0\n\t */\n\t@property()\n\tplacement: `${PopoverPlacement}` = \"Bottom\";\n\n\t/**\n\t * Defines the content of the component.\n\t * @public\n\t */\n\t@slot({ \"default\": true, type: HTMLElement, individualSlots: true })\n\tcolors!: DefaultSlot<IColorPaletteItem>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tget responsivePopover() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\n\tget respPopover() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\n\tclosePopover() {\n\t\tthis.open = false;\n\t}\n\n\tonAfterClose() {\n\t\tthis.closePopover();\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\tonAfterOpen() {\n\t\tconst colorPalette = this._colorPalette;\n\t\tif (colorPalette._currentlySelected) {\n\t\t\tcolorPalette._currentlySelected?.focus();\n\t\t} else if (colorPalette.showRecentColors && colorPalette.recentColorsElements.length) {\n\t\t\tcolorPalette.recentColorsElements[0].focus();\n\t\t} else if (colorPalette.showDefaultColor) {\n\t\t\tcolorPalette._defaultColorButton?.focus();\n\t\t}\n\n\t\t// since height is dynamically determined by padding-block-start\n\t\tcolorPalette.allColorsInPalette.forEach((item: IColorPaletteItem) => {\n\t\t\tconst itemHeight = item.offsetHeight + 4; // adding 4px for the offsets on top and bottom\n\t\t\titem.style.setProperty(\"--_ui5_color_palette_item_height\", `${itemHeight}px`);\n\t\t});\n\t}\n\n\tonSelectedColor(e: CustomEvent<ColorPaletteItemClickEventDetail>) {\n\t\tthis.closePopover();\n\t\tthis.fireDecoratorEvent(\"item-click\", e.detail);\n\t}\n\n\tget _colorPalette() {\n\t\treturn this.responsivePopover.content[0].querySelector<ColorPalette>(\"[ui5-color-palette]\")!;\n\t}\n\n\t/**\n\t * Returns if the component is opened.\n\t * @protected\n\t * @since 1.0.0-rc.16\n\t */\n\tisOpen() {\n\t\treturn this.open;\n\t}\n\n\tget colorPaletteColors() {\n\t\treturn this.getSlottedNodes<ColorPaletteItem>(\"colors\");\n\t}\n\n\tget _colorPaletteTitle() {\n\t\treturn ColorPalettePopover.i18nBundle.getText(COLORPALETTE_POPOVER_TITLE);\n\t}\n\n\tget _cancelButtonLabel() {\n\t\treturn ColorPalettePopover.i18nBundle.getText(COLOR_PALETTE_DIALOG_CANCEL_BUTTON);\n\t}\n\n\tget _open() {\n\t\treturn this.open || undefined;\n\t}\n}\n\nColorPalettePopover.define();\n\nexport default ColorPalettePopover;\nexport type { ColorPalettePopoverItemClickEventDetail };\n"]}
|
|
1
|
+
{"version":3,"file":"ColorPalettePopover.js","sourceRoot":"","sources":["../src/ColorPalettePopover.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { 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 jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport DOMReferenceConverter from \"@ui5/webcomponents-base/dist/converters/DOMReference.js\";\nimport ColorPalettePopoverTemplate from \"./ColorPalettePopoverTemplate.js\";\nimport type PopoverPlacement from \"./types/PopoverPlacement.js\";\n\n// Styles\nimport ColorPalettePopoverCss from \"./generated/themes/ColorPalettePopover.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\nimport {\n\tCOLORPALETTE_POPOVER_TITLE,\n\tCOLOR_PALETTE_DIALOG_CANCEL_BUTTON,\n} from \"./generated/i18n/i18n-defaults.js\";\n\nimport type ResponsivePopover from \"./ResponsivePopover.js\";\nimport type ColorPalette from \"./ColorPalette.js\";\nimport type { ColorPaletteItemClickEventDetail, IColorPaletteItem } from \"./ColorPalette.js\";\nimport type ColorPaletteItem from \"./ColorPaletteItem.js\";\n\ntype ColorPalettePopoverItemClickEventDetail = ColorPaletteItemClickEventDetail;\n\n/**\n * @class\n *\n * ### Overview\n * Represents a predefined range of colors for easier selection.\n *\n * Overview\n * The ColorPalettePopover provides the users with a slot to predefine colors.\n *\n * You can customize them with the use of the colors property. You can specify a defaultColor and display a \"Default color\" button for the user to choose directly.\n * You can display a \"More colors...\" button that opens an additional color picker for the user to choose specific colors that are not present in the predefined range.\n *\n * ### Usage\n *\n * The palette is intended for users, who don't want to check and remember the different values of the colors and spend large amount of time to configure the right color through the color picker.\n *\n * For the `ui5-color-palette-popover`\n * ### ES6 Module Import\n *\n * `import @ui5/webcomponents/dist/ColorPalettePopover.js\";`\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.0.0-rc.16\n */\n@customElement({\n\ttag: \"ui5-color-palette-popover\",\n\trenderer: jsxRenderer,\n\tstyles: [ResponsivePopoverCommonCss, ColorPalettePopoverCss],\n\ttemplate: ColorPalettePopoverTemplate,\n})\n\n/**\n * Fired when the user selects a color.\n * @public\n * @param {string} color the selected color\n */\n@event(\"item-click\", {\n\tbubbles: true,\n})\n/**\n * Fired when the `ui5-color-palette-popover` is closed due to user interaction.\n * @since 1.21.0\n * @public\n */\n@event(\"close\", {\n\tbubbles: true,\n})\nclass ColorPalettePopover extends UI5Element {\n\teventDetails!: {\n\t\t\"item-click\": ColorPalettePopoverItemClickEventDetail,\n\t\t\"close\": void,\n\t}\n\n\t/**\n\t * Defines whether the user can see the last used colors in the bottom of the component\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowRecentColors = false\n\n\t/**\n\t * Defines whether the user can choose a custom color from a component.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowMoreColors = false\n\n\t/**\n\t * Defines whether the user can choose the default color from a button.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowDefaultColor = false\n\n\t/**\n\t * Defines the default color of the component.\n\t *\n\t * **Note:** The default color should be a part of the ColorPalette colors`\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tdefaultColor?: string;\n\n\t/**\n\t * Defines the accessible name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.20.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 2.20.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Defines the open | closed state of the popover.\n\t * @public\n\t * @default false\n\t * @since 1.21.0\n\t */\n\t@property({ type: Boolean })\n\topen = false\n\n\t/**\n\t * Defines the ID or DOM Reference of the element that the popover is shown at.\n\t * When using this attribute in a declarative way, you must only use the `id` (as a string) of the element at which you want to show the popover.\n\t * You can only set the `opener` attribute to a DOM Reference when using JavaScript.\n\t * @public\n\t * @default undefined\n\t * @since 1.21.0\n\t */\n\t@property({ converter: DOMReferenceConverter })\n\topener?: HTMLElement | string | null;\n\n\t/**\n\t * Determines on which side the component is placed at.\n\t * @default \"Bottom\"\n\t * @public\n\t * @since 2.19.0\n\t */\n\t@property()\n\tplacement: `${PopoverPlacement}` = \"Bottom\";\n\n\t/**\n\t * Defines the content of the component.\n\t * @public\n\t */\n\t@slot({ \"default\": true, type: HTMLElement, individualSlots: true })\n\tcolors!: DefaultSlot<IColorPaletteItem>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tget responsivePopover() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\n\tget respPopover() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\n\tclosePopover() {\n\t\tthis.open = false;\n\t}\n\n\tonAfterClose() {\n\t\tthis.closePopover();\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\tonAfterOpen() {\n\t\tconst colorPalette = this._colorPalette;\n\t\tif (colorPalette._currentlySelected) {\n\t\t\tcolorPalette._currentlySelected?.focus();\n\t\t} else if (colorPalette.showRecentColors && colorPalette.recentColorsElements.length) {\n\t\t\tcolorPalette.recentColorsElements[0].focus();\n\t\t} else if (colorPalette.showDefaultColor) {\n\t\t\tcolorPalette._defaultColorButton?.focus();\n\t\t}\n\n\t\t// since height is dynamically determined by padding-block-start\n\t\t(colorPalette.allColorsInPalette).forEach((item: ColorPaletteItem) => {\n\t\t\tconst itemHeight = item.offsetHeight + 4; // adding 4px for the offsets on top and bottom\n\t\t\titem.style.setProperty(\"--_ui5_color_palette_item_height\", `${itemHeight}px`);\n\t\t});\n\t}\n\n\tonSelectedColor(e: CustomEvent<ColorPaletteItemClickEventDetail>) {\n\t\tthis.closePopover();\n\t\tthis.fireDecoratorEvent(\"item-click\", e.detail);\n\t}\n\n\tget _colorPalette() {\n\t\treturn this.responsivePopover.content[0].querySelector<ColorPalette>(\"[ui5-color-palette]\")!;\n\t}\n\n\t/**\n\t * Returns if the component is opened.\n\t * @protected\n\t * @since 1.0.0-rc.16\n\t */\n\tisOpen() {\n\t\treturn this.open;\n\t}\n\n\tget colorPaletteColors() {\n\t\treturn this.getSlottedNodes<ColorPaletteItem>(\"colors\");\n\t}\n\n\tget _colorPaletteTitle() {\n\t\treturn ColorPalettePopover.i18nBundle.getText(COLORPALETTE_POPOVER_TITLE);\n\t}\n\n\tget _cancelButtonLabel() {\n\t\treturn ColorPalettePopover.i18nBundle.getText(COLOR_PALETTE_DIALOG_CANCEL_BUTTON);\n\t}\n\n\tget _open() {\n\t\treturn this.open || undefined;\n\t}\n}\n\nColorPalettePopover.define();\n\nexport default ColorPalettePopover;\nexport type { ColorPalettePopoverItemClickEventDetail };\n"]}
|
package/dist/ComboBox.js
CHANGED
|
@@ -961,9 +961,14 @@ let ComboBox = ComboBox_1 = class ComboBox extends UI5Element {
|
|
|
961
961
|
if (!this._useSelectedValue && item.value !== undefined) {
|
|
962
962
|
this._useSelectedValue = true;
|
|
963
963
|
}
|
|
964
|
-
|
|
964
|
+
// Always set selectedValue when the item has a value property, regardless of _useSelectedValue state
|
|
965
|
+
if (item.value !== undefined) {
|
|
965
966
|
this.selectedValue = item.value;
|
|
966
967
|
}
|
|
968
|
+
else if (this._useSelectedValue) {
|
|
969
|
+
// Only clear selectedValue if we were using it before
|
|
970
|
+
this.selectedValue = undefined;
|
|
971
|
+
}
|
|
967
972
|
if (!item.selected) {
|
|
968
973
|
this.fireDecoratorEvent("selection-change", {
|
|
969
974
|
item,
|
|
@@ -1071,7 +1076,7 @@ let ComboBox = ComboBox_1 = class ComboBox extends UI5Element {
|
|
|
1071
1076
|
}
|
|
1072
1077
|
}
|
|
1073
1078
|
get _headerTitleText() {
|
|
1074
|
-
return ComboBox_1.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
|
|
1079
|
+
return getAssociatedLabelForTexts(this) || ComboBox_1.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
|
|
1075
1080
|
}
|
|
1076
1081
|
get _iconAccessibleNameText() {
|
|
1077
1082
|
return ComboBox_1.i18nBundle.getText(SELECT_OPTIONS);
|
package/dist/ComboBox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboBox.js","sourceRoot":"","sources":["../src/ComboBox.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 event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport { isPhone, isAndroid, isMac } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport InvisibleMessageMode from \"@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js\";\nimport { getEffectiveAriaLabelText, getAssociatedLabelForTexts } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport \"@ui5/webcomponents-icons/dist/decline.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 type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport { submitForm } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport {\n\tisBackSpace,\n\tisDelete,\n\tisShow,\n\tisUp,\n\tisDown,\n\tisEnter,\n\tisEscape,\n\tisTabNext,\n\tisTabPrevious,\n\tisPageUp,\n\tisPageDown,\n\tisHome,\n\tisEnd,\n\tisCtrlAltF8,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { attachListeners } from \"@ui5/webcomponents-base/dist/util/valueStateNavigation.js\";\nimport arraysAreEqual from \"@ui5/webcomponents-base/dist/util/arraysAreEqual.js\";\nimport generateHighlightedMarkupFirstMatch from \"@ui5/webcomponents-base/dist/util/generateHighlightedMarkupFirstMatch.js\";\n\nimport type { IIcon } from \"./Icon.js\";\nimport * as Filters from \"./Filters.js\";\n\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\tCOMBOBOX_AVAILABLE_OPTIONS,\n\tCOMBOBOX_DIALOG_OK_BUTTON,\n\tCOMBOBOX_DIALOG_CANCEL_BUTTON,\n\tSELECT_OPTIONS,\n\tLIST_ITEM_POSITION,\n\tLIST_ITEM_GROUP_HEADER,\n\tINPUT_CLEAR_ICON_ACC_NAME,\n\tFORM_TEXTFIELD_REQUIRED,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Templates\nimport ComboBoxTemplate from \"./ComboBoxTemplate.js\";\n\n// Styles\nimport ComboBoxCss from \"./generated/themes/ComboBox.css.js\";\nimport ComboBoxPopoverCss from \"./generated/themes/ComboBoxPopover.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\";\n\nimport \"./ComboBoxItem.js\";\nimport type ComboBoxItem from \"./ComboBoxItem.js\";\nimport type Popover from \"./Popover.js\";\nimport type ResponsivePopover from \"./ResponsivePopover.js\";\nimport type List from \"./List.js\";\nimport type { ListItemClickEventDetail } from \"./List.js\";\n// eslint-disable-next-line\nimport \"./ComboBoxItemGroup.js\";\n// eslint-disable-next-line\nimport { isInstanceOfComboBoxItemGroup } from \"./ComboBoxItemGroup.js\";\nimport type ComboBoxFilter from \"./types/ComboBoxFilter.js\";\nimport type Input from \"./Input.js\";\nimport type { InputEventDetail } from \"./Input.js\";\nimport type InputComposition from \"./features/InputComposition.js\";\n\nconst SKIP_ITEMS_SIZE = 10;\n\n/**\n * Interface for components that may be slotted inside a `ui5-combobox`\n * @public\n */\ninterface IComboBoxItem extends UI5Element {\n\ttext?: string,\n\theaderText?: string,\n\tvalue?: string,\n\tfocused: boolean,\n\tisGroupItem?: boolean,\n\tselected?: boolean,\n\tadditionalText?: string,\n\t_isVisible?: boolean,\n\titems?: Array<IComboBoxItem>\n}\n\ntype ValueStateAnnouncement = Record<Exclude<ValueState, ValueState.None>, string>;\ntype ValueStateTypeAnnouncement = Record<Exclude<ValueState, ValueState.None>, string>;\n\nenum ValueStateIconMapping {\n\tNegative = \"error\",\n\tCritical = \"alert\",\n\tPositive = \"sys-enter-2\",\n\tInformation = \"information\",\n}\n\ntype ComboBoxSelectionChangeEventDetail = {\n\titem: ComboBoxItem | null,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-combobox` component represents a drop-down menu with a list of the available options and a text input field to narrow down the options.\n *\n * It is commonly used to enable users to select an option from a predefined list.\n *\n * ### Structure\n * The `ui5-combobox` consists of the following elements:\n *\n * - Input field - displays the selected option or a custom user entry. Users can type to narrow down the list or enter their own value.\n * - Drop-down arrow - expands\\collapses the option list.\n * - Option list - the list of available options.\n *\n * ### Working with Values\n *\n * The ComboBox offers two ways to work with item selection:\n *\n * **1. Display Text Only (using `value`):**\n * ```html\n * <ui5-combobox value=\"Germany\">\n * <ui5-cb-item text=\"Germany\"></ui5-cb-item>\n * <ui5-cb-item text=\"France\"></ui5-cb-item>\n * </ui5-combobox>\n * ```\n * Use this approach when the displayed text is sufficient for your needs.\n *\n * **2. Unique Identifiers - Recommended (using `selectedValue` and item `value`):**\n * ```html\n * <ui5-combobox value=\"Germany\" selected-value=\"DE\">\n * <ui5-cb-item text=\"Germany\" value=\"DE\"></ui5-cb-item>\n * <ui5-cb-item text=\"France\" value=\"FR\"></ui5-cb-item>\n * </ui5-combobox>\n * ```\n * This is the recommended approach when you need to work with unique identifiers (IDs, codes) separate from display text.\n * The `selectedValue` property references the `value` property of the selected item.\n * In forms, the item's `value` (e.g., \"DE\") will be submitted instead of the display text.\n *\n * **Important:** Do not mix the `selectedValue` approach with the deprecated `selected` property on items.\n *\n * ### Keyboard Handling\n *\n * The `ui5-combobox` provides advanced keyboard handling.\n *\n * - [F4], [Alt]+[Up], or [Alt]+[Down] - Toggles the picker.\n * - [Escape] - Closes the picker, if open. If closed, cancels changes and reverts the typed in value.\n * - [Enter] or [Return] - If picker is open, takes over the currently selected item and closes it.\n * - [Down] - Selects the next matching item in the picker.\n * - [Up] - Selects the previous matching item in the picker.\n * - [Page Down] - Moves selection down by page size (10 items by default).\n * - [Page Up] - Moves selection up by page size (10 items by default).\n * - [Home] - If focus is in the ComboBox, moves cursor at the beginning of text. If focus is in the picker, selects the first item.\n * - [End] - If focus is in the ComboBox, moves cursor at the end of text. If focus is in the picker, selects the last item.\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 * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/ComboBox.js\";`\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.0.0-rc.6\n */\n@customElement({\n\ttag: \"ui5-combobox\",\n\tlanguageAware: true,\n\tformAssociated: true,\n\trenderer: jsxRenderer,\n\tstyles: [\n\t\tComboBoxCss,\n\t\tResponsivePopoverCommonCss,\n\t\tValueStateMessageCss,\n\t\tComboBoxPopoverCss,\n\t\tSuggestionsCss,\n\t],\n\ttemplate: ComboBoxTemplate,\n})\n/**\n * Fired when the input operation has finished by pressing Enter, focusout or an item is selected.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the dropdown is opened.\n * @since 2.9.0\n * @public\n */\n@event(\"open\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the dropdown is closed.\n * @since 2.9.0\n * @public\n */\n@event(\"close\")\n\n/**\n * Fired when typing in input or clear icon is pressed.\n *\n * **Note:** filterValue property is updated, input is changed.\n * @public\n */\n@event(\"input\", {\n\tbubbles: true,\n})\n/**\n * Fired when selection is changed by user interaction\n * @param {IComboBoxItem} item item to be selected.\n * @public\n */\n@event(\"selection-change\", {\n\tbubbles: true,\n})\n\nclass ComboBox extends UI5Element implements IFormInputElement {\n\teventDetails!: {\n\t\t\"change\": void,\n\t\t\"input\": void,\n\t\t\"open\": void,\n\t\t\"close\": void,\n\t\t\"selection-change\": ComboBoxSelectionChangeEventDetail,\n\t}\n\t/**\n\t * Defines the value of the component.\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 value of the selected item (references the `value` property of `ui5-cb-item`).\n\t *\n\t * Use this property to work with unique identifiers (IDs, codes) instead of display text.\n\t * When set, the ComboBox finds and selects the item whose `value` property matches this property.\n\t *\n\t * **Benefits:**\n\t * - Select items programmatically by their unique identifier\n\t * - Handle items with identical display text but different underlying values\n\t * - Submit machine-readable values in forms (the item's `value` is submitted instead of the display text)\n\t *\n\t * **When to use `selectedValue` vs `value`:**\n\t * - **Recommended:** Use `selectedValue` + item `value` when you need unique identifiers separate from display text (e.g., country codes \"DE\", \"FR\" with display names \"Germany\", \"France\")\n\t * - Use only the ComboBox `value` property when the display text itself is sufficient for your use case\n\t *\n\t * @default undefined\n\t * @public\n\t * @since 2.20.0\n\t */\n\t@property()\n\tselectedValue?: 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 * @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 autocompleted to match an item\n\t * @default false\n\t * @public\n\t * @since 1.19.0\n\t */\n\t@property({ type: Boolean })\n\tnoTypeahead = false;\n\n\t/**\n\t * Defines the \"live\" value of the component.\n\t *\n\t * **Note:** If we have an item e.g. \"Bulgaria\", \"B\" is typed, \"ulgaria\" is typed ahead, value will be \"Bulgaria\", filterValue will be \"B\".\n\t *\n\t * **Note:** Initially the filter value is synced with value.\n\t * @default \"\"\n\t * @private\n\t */\n\t@property()\n\tfilterValue = \"\"\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 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 */\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 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 * Indicates whether the input is focused\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tfocused = 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.0.0-rc.15\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.0.0-rc.15\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_iconPressed = false;\n\n\t@property({ type: Array, noAttribute: true })\n\t_filteredItems: Array<IComboBoxItem> = [];\n\n\t@property({ type: Number, noAttribute: true })\n\t_listWidth?: number;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_effectiveShowClearIcon = false\n\n\t/**\n\t * Indicates whether the value state message popover is open.\n\t * @private\n\t * @since 2.0.0\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\tvalueStateOpen = 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/**\n\t * Indicates whether link navigation is being handled.\n\t * @default false\n\t * @since 2.11.0\n\t * @private\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\tindividualSlots: true,\n\t\tinvalidateOnChildChange: true,\n\t})\n\titems!: DefaultSlot<IComboBoxItem>;\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 `ui5-combobox` 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/**\n\t * Defines the icon to be displayed in the input field.\n\t * @public\n\t * @since 1.0.0-rc.9\n\t */\n\t@slot()\n\ticon!: Slot<IIcon>;\n\n\t_initialRendering = true;\n\t_itemFocused = false;\n\t// used only for Safari fix (check onAfterRendering)\n\t_autocomplete = false;\n\t_isKeyNavigation = false;\n\t_selectionPerformed = false;\n\t_lastValue: string;\n\t_selectedItemText = \"\";\n\t_userTypedValue = \"\";\n\t_useSelectedValue = false;\n\t_valueStateLinks: Array<HTMLElement> = [];\n\t_composition?: InputComposition;\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\tstatic composition: typeof InputComposition;\n\n\tget formValidityMessage() {\n\t\treturn ComboBox.i18nBundle.getText(FORM_TEXTFIELD_REQUIRED);\n\t}\n\n\tget formValidity(): ValidityStateFlags {\n\t\treturn { valueMissing: this.required && !this.value };\n\t}\n\n\tasync formElementAnchor() {\n\t\treturn this.getFocusDomRefAsync();\n\t}\n\n\tget formFormattedValue() {\n\t\t// Find the selected item\n\t\tconst selectedItem = this._getItems().find(item => item.selected && !item.isGroupItem) as ComboBoxItem | undefined;\n\n\t\t// If selected item has a value property, return it (like Select does)\n\t\tif (selectedItem && selectedItem.value !== undefined) {\n\t\t\treturn selectedItem.value;\n\t\t}\n\n\t\t// Fallback to display text (backward compatibility)\n\t\treturn this.value;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\n\t\t// when an initial value is set it should be considered as a _lastValue\n\t\tthis._lastValue = this.getAttribute(\"value\") || \"\";\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._effectiveShowClearIcon = (this.showClearIcon && !!this.value && !this.readonly && !this.disabled);\n\n\t\tif (this._initialRendering || this.filter === \"None\") {\n\t\t\tthis._filteredItems = this.items;\n\t\t}\n\n\t\tif (this.open && !this._isKeyNavigation) {\n\t\t\tconst items = this._filterItems(this.filterValue);\n\t\t\tthis._filteredItems = (items.length && items) || [];\n\t\t}\n\n\t\tconst hasNoVisibleItems = !this._filteredItems.length || !this._filteredItems.some(i => i._isVisible);\n\n\t\t// If there is no filtered items matching the value, show all items when the arrow is pressed\n\t\tif (((hasNoVisibleItems && !isPhone()) && this.value)) {\n\t\t\tthis.items.forEach(this._makeAllVisible.bind(this));\n\t\t\tthis._filteredItems = this.items;\n\t\t}\n\n\t\tif (this.shouldOpenValueStateMessagePopover) {\n\t\t\tthis.valueStateOpen = true;\n\t\t} else {\n\t\t\tthis.valueStateOpen = false;\n\t\t}\n\n\t\tif (this.selectedValue) {\n\t\t\tthis._useSelectedValue = true;\n\t\t}\n\n\t\t// Highlight filtered items\n\t\tthis._filteredItems.forEach(item => {\n\t\t\tif (!item) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\t// For grouped items, highlight each item in the group\n\t\t\t\titem.items.forEach(nestedItem => {\n\t\t\t\t\tif (nestedItem) {\n\t\t\t\t\t\tthis._highlightItem(nestedItem);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis._highlightItem(item as ComboBoxItem);\n\t\t\t}\n\t\t});\n\n\t\tthis._selectMatchingItem();\n\t\tthis._initialRendering = false;\n\n\t\tthis.style.setProperty(\"--_ui5-input-icons-count\", `${this.iconsCount}`);\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\tonAfterRendering() {\n\t\tif (this.inner && this.value !== this.inner.value) {\n\t\t\tthis.value = this.inner.value;\n\t\t}\n\n\t\tthis.storeResponsivePopoverWidth();\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\tonEnterDOM() {\n\t\tthis._enableComposition();\n\t}\n\n\tonExitDOM() {\n\t\tthis._removeLinksEventListeners();\n\t\tthis._composition?.removeEventListeners();\n\t}\n\n\t_focusin(e: FocusEvent) {\n\t\tthis.focused = true;\n\t\tthis._autocomplete = false;\n\n\t\tif (!e.relatedTarget || (e.relatedTarget !== this.shadowRoot!.querySelector(\".ui5-input-clear-icon\"))) {\n\t\t\tthis._lastValue = this.value;\n\t\t}\n\n\t\t!isPhone() && (e.target as HTMLInputElement).setSelectionRange(0, this.value.length);\n\t}\n\n\t_focusout(e: FocusEvent) {\n\t\tconst toBeFocused = e.relatedTarget as HTMLElement;\n\t\tconst clearIconWrapper = this.shadowRoot!.querySelector(\".ui5-input-clear-icon-wrapper\");\n\t\tconst focusedOutToClearIcon = clearIconWrapper === toBeFocused || clearIconWrapper?.contains(toBeFocused);\n\n\t\tif (this._effectiveShowClearIcon && focusedOutToClearIcon) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._fireChangeEvent();\n\n\t\tconst focusedOutToItemsPicker = this.open && this._getPicker().contains(toBeFocused);\n\t\tconst focusedOutToValueState = this.valueStateOpen && this.contains(toBeFocused);\n\n\t\tif (focusedOutToItemsPicker || focusedOutToValueState || this._handleLinkNavigation) {\n\t\t\te.stopImmediatePropagation();\n\t\t\treturn;\n\t\t}\n\n\t\tif (!(this.getDomRef()!.contains(toBeFocused)) && (this._getPicker() !== e.relatedTarget)) {\n\t\t\tthis.focused = false;\n\t\t}\n\t}\n\n\t_beforeOpenPopover() {\n\t\tif (isPhone()) {\n\t\t\tthis._getPickerInput().value = this.value;\n\t\t}\n\t}\n\n\t_afterOpenPopover() {\n\t\tthis._iconPressed = true;\n\t\tthis.inner.focus();\n\t\tthis.fireDecoratorEvent(\"open\");\n\n\t\tconst allItems = this._getItems();\n\t\tconst currentItem = allItems.find(item => {\n\t\t\treturn item.selected || item.focused;\n\t\t});\n\n\t\tif (currentItem) {\n\t\t\tthis._scrollToItem(allItems.indexOf(currentItem));\n\t\t}\n\t}\n\n\t_afterClosePopover() {\n\t\tthis._iconPressed = false;\n\t\tthis._filteredItems = this.items;\n\t\tthis.filterValue = \"\";\n\t\tthis._selectedItemText = \"\";\n\n\t\t// close device's keyboard and prevent further typing\n\t\tif (isPhone()) {\n\t\t\tthis.blur();\n\t\t}\n\n\t\tif (this._selectionPerformed) {\n\t\t\tthis._lastValue = this.value;\n\t\t\tthis._selectionPerformed = false;\n\t\t}\n\n\t\tthis.open = false;\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\t_toggleRespPopover() {\n\t\tif (this.open) {\n\t\t\tthis._closeRespPopover();\n\t\t} else {\n\t\t\tthis._openRespPopover();\n\t\t}\n\t}\n\n\tstoreResponsivePopoverWidth() {\n\t\tif (this.open && !this._listWidth) {\n\t\t\tthis._listWidth = this._getPicker().offsetWidth;\n\t\t}\n\t}\n\n\t_handleValueStatePopoverFocusout() {\n\t\tif (!this._handleLinkNavigation) {\n\t\t\tthis.focused = false;\n\t\t}\n\t}\n\n\t_handleValueStatePopoverAfterClose() {\n\t\tthis.valueStateOpen = false;\n\t}\n\n\t_getValueStatePopover() {\n\t\treturn this.shadowRoot!.querySelector<Popover>(\".ui5-valuestatemessage-popover\")!;\n\t}\n\n\t_getItemsList(): List {\n\t\treturn this._getPicker().querySelector(\".ui5-combobox-items-list\") as List;\n\t}\n\n\t_resetFilter() {\n\t\tthis._userTypedValue = \"\";\n\t\tthis.inner.setSelectionRange(0, this.value.length);\n\t\tthis._filteredItems = this._filterItems(\"\");\n\t\tthis._selectMatchingItem();\n\t}\n\n\t_resetItemVisibility() {\n\t\tthis.items.forEach(item => {\n\t\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\titem.items?.forEach(i => {\n\t\t\t\t\ti._isVisible = false;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titem._isVisible = false;\n\t\t});\n\t}\n\n\t_arrowMouseDown(e: MouseEvent) {\n\t\te.preventDefault();\n\t\tthis.inner.focus();\n\t}\n\n\t_arrowClick() {\n\t\tthis._resetFilter();\n\n\t\tif (isPhone() && this.value && !this._lastValue) {\n\t\t\tthis._lastValue = this.value;\n\t\t}\n\n\t\tthis._toggleRespPopover();\n\t}\n\n\t_handleMobileKeydown(e: KeyboardEvent) {\n\t\tif (isEscape(e)) {\n\t\t\tthis.value = this._lastValue || \"\";\n\t\t\tthis.filterValue = this._lastValue || \"\";\n\t\t\tthis._closeRespPopover();\n\t\t}\n\t}\n\n\t_handleMobileInput(e: CustomEvent<InputEventDetail>) {\n\t\tconst { target } = e;\n\t\tthis.filterValue = (target as Input).value;\n\t\tthis.value = (target as Input).value;\n\t\tthis.fireDecoratorEvent(\"input\");\n\t}\n\n\t_input(e: InputEvent) {\n\t\tconst { value } = e.target as HTMLInputElement;\n\t\tconst shouldAutocomplete = this.shouldAutocomplete(e);\n\n\t\tif (e.target === this.inner) {\n\t\t\t// stop the native event, as the semantic \"input\" would be fired.\n\t\t\te.stopImmediatePropagation();\n\t\t\tthis.focused = true;\n\t\t}\n\n\t\tthis._filteredItems = this._filterItems(value);\n\n\t\tthis.value = value;\n\t\tthis.filterValue = value;\n\n\t\tthis._clearFocus();\n\n\t\t// autocomplete\n\t\tif (shouldAutocomplete && !this._isComposing && !isAndroid()) {\n\t\t\tthis._handleTypeAhead(value, value);\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"input\");\n\n\t\tif (isPhone()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._filteredItems.length || value === \"\") {\n\t\t\tthis._closeRespPopover();\n\t\t} else {\n\t\t\tthis._openRespPopover();\n\t\t}\n\t}\n\n\tshouldAutocomplete(e: InputEvent): boolean {\n\t\tconst eventType = e.inputType;\n\t\tconst allowedEventTypes = [\n\t\t\t\"deleteWordBackward\",\n\t\t\t\"deleteWordForward\",\n\t\t\t\"deleteSoftLineBackward\",\n\t\t\t\"deleteSoftLineForward\",\n\t\t\t\"deleteEntireSoftLine\",\n\t\t\t\"deleteHardLineBackward\",\n\t\t\t\"deleteHardLineForward\",\n\t\t\t\"deleteByDrag\",\n\t\t\t\"deleteByCut\",\n\t\t\t\"deleteContent\",\n\t\t\t\"deleteContentBackward\",\n\t\t\t\"deleteContentForward\",\n\t\t\t\"historyUndo\",\n\t\t];\n\n\t\treturn !this.noTypeahead && !allowedEventTypes.includes(eventType);\n\t}\n\n\t_startsWithMatchingItems(str: string): Array<IComboBoxItem> {\n\t\tconst allItems:Array<IComboBoxItem> = this._getItems().filter(item => !isInstanceOfComboBoxItemGroup(item));\n\t\treturn Filters.StartsWith(str, allItems, \"text\");\n\t}\n\n\t_clearFocus() {\n\t\tconst allItems = this._getItems();\n\n\t\tallItems.map(item => {\n\t\t\titem.focused = false;\n\n\t\t\treturn item;\n\t\t});\n\t}\n\n\t// Get groups and items as a flat array for filtering\n\t_getItems() {\n\t\tconst allItems: Array<IComboBoxItem> = [];\n\n\t\tthis._filteredItems.forEach(item => {\n\t\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\tconst visibleItems = this.open ? item.items.filter(i => i._isVisible) : item.items;\n\t\t\t\tconst groupedItems = [item, ...visibleItems];\n\t\t\t\tallItems.push(...groupedItems);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tallItems.push(item);\n\t\t});\n\n\t\treturn allItems;\n\t}\n\n\thandleNavKeyPress(e: KeyboardEvent) {\n\t\tconst allItems = this._getItems();\n\n\t\tif (this.focused && (isHome(e) || isEnd(e)) && this.value) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isOpen = this.open;\n\t\tconst currentItem = allItems.find(item => {\n\t\t\treturn item.selected || item.focused;\n\t\t});\n\n\t\tconst indexOfItem = currentItem ? allItems.indexOf(currentItem) : -1;\n\t\te.preventDefault();\n\n\t\tif (this.focused && isOpen && (isUp(e) || isPageUp(e) || isPageDown(e))) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isKeyNavigation = true;\n\n\t\tif (\n\t\t\te.key === \"ArrowDown\"\n\t\t\t|| e.key === \"ArrowUp\"\n\t\t\t|| e.key === \"PageUp\"\n\t\t\t|| e.key === \"PageDown\"\n\t\t\t|| e.key === \"Home\"\n\t\t\t|| e.key === \"End\"\n\t\t) {\n\t\t\tthis[`_handle${e.key}`](e, indexOfItem);\n\t\t}\n\t}\n\n\t_handleItemNavigation(e: KeyboardEvent, indexOfItem: number, isForward: boolean) {\n\t\tconst allItems = this._getItems();\n\n\t\tconst currentItem: IComboBoxItem = allItems[indexOfItem];\n\t\tconst isGroupItem = currentItem && currentItem.isGroupItem;\n\t\tconst nextItem = isForward ? allItems[indexOfItem + 1] : allItems[indexOfItem - 1];\n\n\t\tif ((!this.open) && ((isGroupItem && !nextItem) || (!isGroupItem && !currentItem))) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._clearFocus();\n\n\t\tif (this.open) {\n\t\t\tthis._itemFocused = true;\n\t\t\tthis.value = isGroupItem ? \"\" : currentItem.text!;\n\t\t\tthis.selectedValue = isGroupItem ? undefined : currentItem.value;\n\t\t\tthis.focused = false;\n\n\t\t\tcurrentItem.focused = true;\n\t\t} else {\n\t\t\tthis.focused = true;\n\t\t\tthis.value = isGroupItem ? nextItem.text! : currentItem.text!;\n\t\t\tthis.selectedValue = currentItem.value;\n\t\t\tcurrentItem.focused = false;\n\t\t}\n\n\t\tthis._announceSelectedItem(indexOfItem);\n\t\tthis._scrollToItem(indexOfItem);\n\n\t\tif (isGroupItem && this.open) {\n\t\t\treturn;\n\t\t}\n\t\t// autocomplete\n\t\tthis._handleTypeAhead(this.value, this.open ? this._userTypedValue : \"\");\n\n\t\tthis.fireDecoratorEvent(\"input\");\n\t}\n\n\t_handleTypeAhead(value: string, filterValue: string) {\n\t\tconst item = this._getFirstMatchingItem(value);\n\n\t\tif (!item) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._applyAtomicValueAndSelection(item, filterValue);\n\t}\n\n\t_handleArrowDown(e: KeyboardEvent, indexOfItem: number) {\n\t\tconst isOpen = this.open;\n\n\t\tif (this.focused && indexOfItem === -1 && isOpen) {\n\t\t\tthis.focused = false;\n\t\t}\n\n\t\tconst allItems = this._getItems();\n\t\tconst currentItem = allItems[indexOfItem];\n\t\tconst isLastItem = indexOfItem === allItems.length - 1;\n\n\t\t// We don't want to navigate further if the current item is the last one and either is already focused or the popover is closed\n\t\tif (isLastItem && ((isOpen && currentItem.focused) || !isOpen)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst itemIndexToBeFocused = isLastItem ? indexOfItem : indexOfItem + 1;\n\n\t\tthis._handleItemNavigation(e, itemIndexToBeFocused, true /* isForward */);\n\t}\n\n\t_handleArrowUp(e: KeyboardEvent, indexOfItem: number) {\n\t\tconst isOpen = this.open;\n\n\t\tif (indexOfItem === 0) {\n\t\t\tthis._clearFocus();\n\t\t\tthis._itemFocused = false;\n\t\t\tthis.focused = true;\n\n\t\t\tif (this.hasValueStateText && isOpen) {\n\t\t\t\tthis._filteredItems[0].selected = false;\n\t\t\t\tthis.value = this._userTypedValue;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis._handleItemNavigation(e, --indexOfItem, false /* isForward */);\n\t}\n\n\t_handlePageUp(e: KeyboardEvent, indexOfItem: number) {\n\t\tconst allItems = this._getItems();\n\t\tconst isProposedIndexValid = indexOfItem - SKIP_ITEMS_SIZE > -1;\n\t\tindexOfItem = isProposedIndexValid ? indexOfItem - SKIP_ITEMS_SIZE : 0;\n\t\tconst shouldMoveForward = isInstanceOfComboBoxItemGroup(allItems[indexOfItem]) && !this.open;\n\n\t\tthis._handleItemNavigation(e, indexOfItem, shouldMoveForward);\n\t}\n\n\t_handlePageDown(e: KeyboardEvent, indexOfItem: number) {\n\t\tconst allItems = this._getItems();\n\t\tconst itemsLength = allItems.length;\n\t\tconst isProposedIndexValid = indexOfItem + SKIP_ITEMS_SIZE < itemsLength;\n\n\t\tindexOfItem = isProposedIndexValid ? indexOfItem + SKIP_ITEMS_SIZE : itemsLength - 1;\n\t\tconst shouldMoveForward = isInstanceOfComboBoxItemGroup(allItems[indexOfItem]) && !this.open;\n\n\t\tthis._handleItemNavigation(e, indexOfItem, shouldMoveForward);\n\t}\n\n\t_handleHome(e: KeyboardEvent) {\n\t\tconst shouldMoveForward = isInstanceOfComboBoxItemGroup(this._filteredItems[0]) && !this.open;\n\n\t\tthis._handleItemNavigation(e, 0, shouldMoveForward);\n\t}\n\n\t_handleEnd(e: KeyboardEvent) {\n\t\tthis._handleItemNavigation(e, this._getItems().length - 1, true /* isForward */);\n\t}\n\n\t_keyup() {\n\t\tthis._userTypedValue = this.value.substring(0, this.inner.selectionStart || 0);\n\t}\n\n\t_keydown(e: KeyboardEvent) {\n\t\tconst isNavKey = isDown(e) || isUp(e) || isPageUp(e) || isPageDown(e) || isHome(e) || isEnd(e);\n\t\tconst allItems: Array<IComboBoxItem> = this._getItems();\n\n\t\tthis._autocomplete = !(isBackSpace(e) || isDelete(e));\n\t\tthis._isKeyNavigation = false;\n\n\t\tif (isNavKey && !this.readonly && this._filteredItems.length) {\n\t\t\tthis.handleNavKeyPress(e);\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tlet focusedItem: IComboBoxItem | undefined;\n\n\t\t\tthis._filteredItems.forEach(item => {\n\t\t\t\tif (isInstanceOfComboBoxItemGroup(item) && !focusedItem) {\n\t\t\t\t\tfocusedItem = item.items.find(groupItem => groupItem.focused);\n\t\t\t\t}\n\n\t\t\t\tif (item.focused) {\n\t\t\t\t\tfocusedItem = item;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._fireChangeEvent();\n\n\t\t\tif (this.open && !focusedItem?.isGroupItem) {\n\t\t\t\tthis._closeRespPopover();\n\t\t\t\tthis.focused = true;\n\t\t\t\tthis.inner.setSelectionRange(this.value.length, this.value.length);\n\t\t\t} else if (this._internals.form) {\n\t\t\t\tsubmitForm(this);\n\t\t\t}\n\t\t}\n\n\t\tif (isEscape(e)) {\n\t\t\tthis.focused = true;\n\t\t\tconst shouldResetValueAndStopPropagation = !this.open && this.value !== this._lastValue;\n\t\t\tif (shouldResetValueAndStopPropagation) {\n\t\t\t\tthis.value = this._lastValue;\n\t\t\t\t// stop propagation to prevent closing the popup when using the combobox inside it\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t}\n\n\t\tif ((isTabNext(e) || isTabPrevious(e)) && this.open) {\n\t\t\tthis._closeRespPopover();\n\t\t}\n\n\t\tif (isShow(e) && !this.readonly && !this.disabled) {\n\t\t\te.preventDefault();\n\n\t\t\tthis._resetFilter();\n\t\t\tthis._toggleRespPopover();\n\n\t\t\tconst selectedItem = allItems.find(item => {\n\t\t\t\treturn item.selected;\n\t\t\t});\n\n\t\t\tif (selectedItem && this.open) {\n\t\t\t\tthis._itemFocused = true;\n\t\t\t\tselectedItem.focused = true;\n\t\t\t\tthis.focused = false;\n\t\t\t} else if (this.open && this._filteredItems.length && !this.value.length) {\n\t\t\t\t// If no item is selected, select the first non-group item on \"Show\" (F4, Alt+Up/Down)\n\t\t\t\tconst firstNonGroupItem = this._getItems().findIndex(item => item._isVisible && !item.isGroupItem);\n\t\t\t\tthis._handleItemNavigation(e, firstNonGroupItem, true /* isForward */);\n\t\t\t} else {\n\t\t\t\tthis.focused = true;\n\t\t\t}\n\t\t}\n\n\t\tif (isCtrlAltF8(e)) {\n\t\t\treturn this._handleCtrlALtF8();\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._closeRespPopover();\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.inner.focus();\n\t\t\t\t\t\t\tthis.handleNavKeyPress(e);\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.inner.focus();\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_handleCtrlALtF8() {\n\t\tconst links = this.linksInAriaValueStateHiddenText;\n\n\t\tif (links.length > 0) {\n\t\t\tthis._clearFocus();\n\t\t\tlinks[0].focus();\n\t\t}\n\n\t\tthis._handleLinkNavigation = true;\n\t}\n\n\t_handlePopoverKeydown(e: KeyboardEvent) {\n\t\tif (isTabNext(e)) {\n\t\t\tthis._closeRespPopover();\n\t\t}\n\t}\n\n\t_handlePopoverFocusout() {\n\t\tthis.focused = false;\n\t}\n\n\t_click() {\n\t\tif (isPhone() && !this.readonly) {\n\t\t\tthis._openRespPopover();\n\t\t}\n\t}\n\n\t_closeRespPopover(e?: Event | null) {\n\t\tif ((e && (e.target as HTMLElement).classList.contains(\"ui5-responsive-popover-close-btn\"))) {\n\t\t\tif (this._selectedItemText) {\n\t\t\t\tthis.value = this._selectedItemText;\n\t\t\t\tthis.filterValue = this._selectedItemText;\n\t\t\t} else {\n\t\t\t\tthis.value = this._lastValue || \"\";\n\t\t\t\tthis.filterValue = this._lastValue || \"\";\n\t\t\t}\n\t\t}\n\n\t\tif (isPhone()) {\n\t\t\tthis._fireChangeEvent();\n\t\t}\n\n\t\tthis._clearFocus();\n\t\tthis.open = false;\n\t\tthis.valueStateOpen = false;\n\t}\n\n\t_openRespPopover() {\n\t\tthis.open = true;\n\t}\n\n\t_filterItems(str: string) {\n\t\tlet filteredItem:IComboBoxItem;\n\t\tlet filteredGroupItems: Array<IComboBoxItem> = [];\n\t\tconst filteredItems: Array<IComboBoxItem> = [];\n\t\tconst filteredItemGroups: Array<IComboBoxItem> = [];\n\n\t\tthis._resetItemVisibility();\n\t\tthis.items.forEach(item => {\n\t\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\tfilteredGroupItems = (Filters[this.filter] || Filters.StartsWithPerTerm)(str, item.items, \"text\");\n\t\t\t\tfilteredGroupItems.forEach(i => {\n\t\t\t\t\ti._isVisible = true;\n\t\t\t\t});\n\n\t\t\t\tif (filteredGroupItems.length) {\n\t\t\t\t\tfilteredItemGroups.push(item);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t[filteredItem] = (Filters[this.filter] || Filters.StartsWithPerTerm)(str, [item], \"text\");\n\n\t\t\tif (filteredItem) {\n\t\t\t\tfilteredItem._isVisible = true;\n\t\t\t\tfilteredItems.push(filteredItem);\n\t\t\t}\n\t\t});\n\n\t\treturn [...filteredItemGroups, ...filteredItems];\n\t}\n\n\t/**\n\t * Sets the markupText property of an item with highlighted first match.\n\t * @param item The ComboBox item to highlight\n\t * @private\n\t */\n\t_highlightItem(item: ComboBoxItem) {\n\t\titem.markupText = generateHighlightedMarkupFirstMatch(item.text || \"\", this.filterValue);\n\t}\n\n\t_getFirstMatchingItem(current: string): IComboBoxItem | void {\n\t\tconst allItems = this._getItems();\n\t\tconst currentlyFocusedItem = allItems.find(item => item.focused === true);\n\n\t\tif (currentlyFocusedItem?.isGroupItem) {\n\t\t\tthis.value = this.filterValue;\n\t\t\treturn;\n\t\t}\n\n\t\tconst matchingItems: Array<IComboBoxItem> = this._startsWithMatchingItems(current);\n\n\t\tif (matchingItems.length) {\n\t\t\tlet exactMatch;\n\t\t\tif (this._useSelectedValue) {\n\t\t\t\texactMatch = matchingItems.find(item => item.value === (currentlyFocusedItem?.value || this.selectedValue) && item.text?.toLowerCase() === current.toLowerCase());\n\t\t\t} else {\n\t\t\t\texactMatch = matchingItems.find(item => item.text?.toLowerCase() === current.toLowerCase());\n\t\t\t}\n\n\t\t\treturn exactMatch ?? matchingItems[0];\n\t\t}\n\t}\n\n\t_applyAtomicValueAndSelection(item: IComboBoxItem, filterValue: string) {\n\t\tconst value = (item && item.text) || \"\";\n\n\t\tthis.inner.value = value;\n\n\t\t// select the whole value if it doesn't start with the filterValue, otherwise select only the autocompleted part\n\t\tconst startsWithFilter = value.toLowerCase().startsWith(filterValue.toLowerCase());\n\t\tconst selectionStart = startsWithFilter ? filterValue.length : 0;\n\t\tthis.inner.setSelectionRange(selectionStart, value.length);\n\t\tthis.value = value;\n\n\t\tif (this._useSelectedValue) {\n\t\t\tthis.selectedValue = item.value;\n\t\t}\n\t}\n\n\t_selectMatchingItem() {\n\t\tconst currentlyFocusedItem = this.items.find(item => item.focused);\n\t\tconst shouldSelectionBeCleared = currentlyFocusedItem && currentlyFocusedItem.isGroupItem;\n\t\tconst valueToMatch = currentlyFocusedItem?.value ?? this.selectedValue;\n\t\tlet itemToBeSelected: IComboBoxItem | undefined;\n\t\tlet previouslySelectedItem: IComboBoxItem | undefined;\n\n\t\t// Find previously selected item\n\t\tthis._filteredItems.forEach(item => {\n\t\t\tif (!isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\tif (item.selected) {\n\t\t\t\t\tpreviouslySelectedItem = item;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst selectedGroupItem = item.items?.find(i => i.selected);\n\t\t\t\tif (selectedGroupItem) {\n\t\t\t\t\tpreviouslySelectedItem = selectedGroupItem;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._filteredItems.forEach(item => {\n\t\t\tif (!shouldSelectionBeCleared && !itemToBeSelected) {\n\t\t\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\t\tif (this._useSelectedValue) {\n\t\t\t\t\t\titemToBeSelected = item.items.find(i => i.value === valueToMatch && (this.value === \"\" || i.text?.toLowerCase() === this.value.toLowerCase()));\n\t\t\t\t\t} else {\n\t\t\t\t\t\titemToBeSelected = item.items?.find(i => i.text?.toLowerCase() === this.value.toLowerCase());\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (this._useSelectedValue) {\n\t\t\t\t\t\titemToBeSelected = this.items.find(i => i.value === valueToMatch && (this.value === \"\" || i.text?.toLowerCase() === this.value.toLowerCase()));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\titemToBeSelected = item.text?.toLowerCase() === this.value.toLowerCase() ? item : undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// When selectedValue matched an item but value is empty (initial render), populate value from the item's text\n\t\tif (itemToBeSelected && this._initialRendering && this.value === \"\") {\n\t\t\tthis.value = itemToBeSelected.text || \"\";\n\t\t}\n\n\t\tthis._filteredItems = this._filteredItems.map(item => {\n\t\t\tif (!isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\titem.selected = item === itemToBeSelected;\n\t\t\t\treturn item;\n\t\t\t}\n\n\t\t\titem.items?.forEach(groupItem => {\n\t\t\t\tgroupItem.selected = itemToBeSelected === groupItem;\n\t\t\t});\n\n\t\t\treturn item;\n\t\t});\n\n\t\tif (!itemToBeSelected && this._useSelectedValue) {\n\t\t\tthis.selectedValue = undefined;\n\t\t} else {\n\t\t\tthis.selectedValue = itemToBeSelected?.value;\n\t\t}\n\n\t\tconst noUserInteraction = !this.focused && !this._isKeyNavigation && !this._selectionPerformed && !this._iconPressed;\n\t\t// Skip firing \"selection-change\" event if this is initial rendering or if there has been no user interaction yet\n\t\tif (this._initialRendering || noUserInteraction) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fire selection-change event only when selection actually changes\n\t\tif (previouslySelectedItem !== itemToBeSelected) {\n\t\t\tif (itemToBeSelected) {\n\t\t\t\t// New item selected\n\t\t\t\tthis.fireDecoratorEvent(\"selection-change\", {\n\t\t\t\t\titem: itemToBeSelected as ComboBoxItem,\n\t\t\t\t});\n\t\t\t} else if (previouslySelectedItem) {\n\t\t\t\t// Selection cleared - fire event with 'null'\n\t\t\t\tthis.fireDecoratorEvent(\"selection-change\", {\n\t\t\t\t\titem: null,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t_fireChangeEvent() {\n\t\tif (this.value !== this._lastValue) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t\tthis._lastValue = this.value;\n\t\t}\n\t}\n\n\t_inputChange(e: Event) {\n\t\te.preventDefault();\n\t}\n\n\t_itemMousedown(e: MouseEvent) {\n\t\te.preventDefault();\n\t}\n\n\t_selectItem(e: CustomEvent<ListItemClickEventDetail>) {\n\t\tconst item = e.detail.item as ComboBoxItem;\n\n\t\tthis._selectedItemText = item.text || \"\";\n\t\tthis._selectionPerformed = true;\n\n\t\tconst sameItemSelected = this.value === this._selectedItemText;\n\t\tconst sameSelectionPerformed = this.value.toLowerCase() === this.filterValue.toLowerCase();\n\n\t\tif (sameItemSelected && sameSelectionPerformed) {\n\t\t\tthis._fireChangeEvent(); // Click on an already typed, but not memoized value shouold also trigger the change event\n\t\t\treturn this._closeRespPopover();\n\t\t}\n\n\t\tthis.value = this._selectedItemText;\n\t\t// On first item select the _useSelectedValue is still false.\n\t\t// In case the item has a value property, we set the _useSelectedValue to true to start working with the value instead with the text.\n\t\tif (!this._useSelectedValue && item.value !== undefined) {\n\t\t\tthis._useSelectedValue = true;\n\t\t}\n\n\t\tif (this._useSelectedValue) {\n\t\t\tthis.selectedValue = item.value;\n\t\t}\n\n\t\tif (!item.selected) {\n\t\t\tthis.fireDecoratorEvent(\"selection-change\", {\n\t\t\t\titem,\n\t\t\t});\n\t\t}\n\n\t\tthis._fireChangeEvent();\n\t\tthis._closeRespPopover();\n\n\t\t// reset selection\n\t\tthis.inner.setSelectionRange(this.value.length, this.value.length);\n\t}\n\n\t_onItemFocus() {\n\t\tthis._itemFocused = true;\n\t}\n\n\t_announceSelectedItem(indexOfItem: number) {\n\t\tconst allItems = this._getItems();\n\t\tconst currentItem = allItems[indexOfItem];\n\t\tconst nonGroupItems = allItems.filter(item => !item.isGroupItem);\n\t\tconst currentItemAdditionalText = currentItem?.additionalText || \"\";\n\t\tconst isGroupItem = currentItem?.isGroupItem;\n\t\tconst itemPositionText = ComboBox.i18nBundle.getText(LIST_ITEM_POSITION, nonGroupItems.indexOf(currentItem) + 1, nonGroupItems.length);\n\t\tconst groupHeaderText = ComboBox.i18nBundle.getText(LIST_ITEM_GROUP_HEADER);\n\n\t\tif (isGroupItem) {\n\t\t\tannounce(`${groupHeaderText} ${currentItem.headerText}`, InvisibleMessageMode.Polite);\n\t\t} else {\n\t\t\tannounce(`${currentItemAdditionalText} ${this.open ? itemPositionText : \"\"}`.trim(), InvisibleMessageMode.Polite);\n\t\t}\n\t}\n\n\t_clear() {\n\t\tconst selectedItem = this.items.find(item => item.selected);\n\n\t\tif (selectedItem?.text?.toLowerCase() === this.value.toLowerCase()) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\n\t\tthis.value = \"\";\n\t\tif (this._useSelectedValue) {\n\t\t\tthis.selectedValue = undefined;\n\t\t}\n\t\tthis.fireDecoratorEvent(\"input\");\n\n\t\tif (this._isPhone) {\n\t\t\tthis._lastValue = \"\";\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t} else {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\n\t_makeAllVisible(item: IComboBoxItem) {\n\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\titem.items.forEach(groupItem => {\n\t\t\t\tgroupItem._isVisible = true;\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\titem._isVisible = true;\n\t}\n\n\t_scrollToItem(indexOfItem: number) {\n\t\tconst picker = this._getPicker();\n\t\tconst list = this._getItemsList();\n\t\tconst listItem = list?.listItems[indexOfItem];\n\n\t\tif (listItem) {\n\t\t\tconst pickerRect = picker.getBoundingClientRect();\n\t\t\tconst listItemRect = listItem.getBoundingClientRect();\n\t\t\tconst isListItemInVisibleArea = listItemRect.top >= pickerRect.top && listItemRect.bottom <= pickerRect.bottom;\n\n\t\t\tif (!isListItemInVisibleArea) {\n\t\t\t\tlistItem.scrollIntoView({\n\t\t\t\t\tbehavior: \"auto\",\n\t\t\t\t\tblock: \"nearest\",\n\t\t\t\t\tinline: \"nearest\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t_announceValueStateText() {\n\t\tconst valueStateText = this.shouldDisplayDefaultValueStateMessage ? this.valueStateDefaultText : this.valueStateMessage.map(el => el.textContent).join(\" \");\n\n\t\tif (valueStateText) {\n\t\t\tannounce(valueStateText, InvisibleMessageMode.Polite);\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.inner,\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 (ComboBox.composition) {\n\t\t\tsetup(ComboBox.composition);\n\t\t} else {\n\t\t\timport(\"./features/InputComposition.js\").then(CompositionModule => {\n\t\t\t\tComboBox.composition = CompositionModule.default;\n\t\t\t\tsetup(CompositionModule.default);\n\t\t\t});\n\t\t}\n\t}\n\n\tget _headerTitleText() {\n\t\treturn ComboBox.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);\n\t}\n\n\tget _iconAccessibleNameText() {\n\t\treturn ComboBox.i18nBundle.getText(SELECT_OPTIONS);\n\t}\n\n\tget _popupLabel() {\n\t\treturn ComboBox.i18nBundle.getText(COMBOBOX_AVAILABLE_OPTIONS);\n\t}\n\n\tget _dialogOkButtonText() {\n\t\treturn ComboBox.i18nBundle.getText(COMBOBOX_DIALOG_OK_BUTTON);\n\t}\n\n\tget _dialogCancelButtonText() {\n\t\treturn ComboBox.i18nBundle.getText(COMBOBOX_DIALOG_CANCEL_BUTTON);\n\t}\n\n\tget inner(): HTMLInputElement {\n\t\treturn (isPhone() && this.open)\n\t\t\t? this._getPickerInput().shadowRoot!.querySelector(\"input\")!\n\t\t\t: this.shadowRoot!.querySelector<HTMLInputElement>(\"[inner-input]\")!;\n\t}\n\n\t_getPicker() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\n\t_getPickerInput() {\n\t\treturn this._getPicker().querySelector<HTMLInputElement>(\"[ui5-input]\")!;\n\t}\n\n\tget openOnMobile() {\n\t\treturn this._isPhone && this.open;\n\t}\n\n\tget hasValueState(): boolean {\n\t\treturn this.valueState !== ValueState.None;\n\t}\n\n\tget hasValueStateText(): boolean {\n\t\treturn this.hasValueState && this.valueState !== ValueState.Positive;\n\t}\n\n\tget ariaValueStateHiddenText(): string {\n\t\tif (!this.hasValueState) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tlet text = \"\";\n\n\t\tif (this.valueState !== ValueState.None) {\n\t\t\ttext = this.valueStateTypeMappings[this.valueState];\n\t\t}\n\n\t\tif (this.shouldDisplayDefaultValueStateMessage) {\n\t\t\treturn `${text} ${this.valueStateDefaultText || \"\"}`;\n\t\t}\n\n\t\treturn `${text}`.concat(\" \", this.valueStateMessage.map(el => el.textContent).join(\" \"));\n\t}\n\n\tget valueStateDefaultText(): string | undefined {\n\t\tif (this.valueState === ValueState.None) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.valueStateTextMappings[this.valueState];\n\t}\n\n\tget valueStateTextMappings(): ValueStateAnnouncement {\n\t\treturn {\n\t\t\t[ValueState.Positive]: ComboBox.i18nBundle.getText(VALUE_STATE_SUCCESS),\n\t\t\t[ValueState.Negative]: ComboBox.i18nBundle.getText(VALUE_STATE_ERROR),\n\t\t\t[ValueState.Critical]: ComboBox.i18nBundle.getText(VALUE_STATE_WARNING),\n\t\t\t[ValueState.Information]: ComboBox.i18nBundle.getText(VALUE_STATE_INFORMATION),\n\t\t};\n\t}\n\n\tget valueStateTypeMappings(): ValueStateTypeAnnouncement {\n\t\treturn {\n\t\t\t[ValueState.Positive]: ComboBox.i18nBundle.getText(VALUE_STATE_TYPE_SUCCESS),\n\t\t\t[ValueState.Information]: ComboBox.i18nBundle.getText(VALUE_STATE_TYPE_INFORMATION),\n\t\t\t[ValueState.Negative]: ComboBox.i18nBundle.getText(VALUE_STATE_TYPE_ERROR),\n\t\t\t[ValueState.Critical]: ComboBox.i18nBundle.getText(VALUE_STATE_TYPE_WARNING),\n\t\t};\n\t}\n\n\tget shouldOpenValueStateMessagePopover(): boolean {\n\t\treturn this.focused && !this.readonly && this.hasValueStateText && !this._iconPressed\n\t\t\t&& !this.open && !this._isPhone;\n\t}\n\n\tget shouldDisplayDefaultValueStateMessage(): boolean {\n\t\treturn !this.valueStateMessage.length && this.hasValueStateText;\n\t}\n\n\t/**\n\t * This method is relevant for sap_horizon theme only\n\t */\n\tget _valueStateMessageIcon(): string {\n\t\treturn this.valueState !== ValueState.None ? ValueStateIconMapping[this.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)\t{\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 valueStateLinksShortcutsTextAcc() {\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? ComboBox.i18nBundle.getText(VALUE_STATE_LINK_MAC)\n\t\t\t\t: ComboBox.i18nBundle.getText(VALUE_STATE_LINKS_MAC);\n\t\t}\n\n\t\treturn links.length === 1\n\t\t\t? ComboBox.i18nBundle.getText(VALUE_STATE_LINK)\n\t\t\t: ComboBox.i18nBundle.getText(VALUE_STATE_LINKS);\n\t}\n\n\tget ariaDescribedByText() {\n\t\treturn `${this.valueStateTextId} ${this._valueStateLinksShortcutsTextAccId}`.trim();\n\t}\n\n\tget _valueStateLinksShortcutsTextAccId() {\n\t\treturn this.linksInAriaValueStateHiddenText.length > 0 ? `hiddenText-value-state-link-shortcut` : \"\";\n\t}\n\n\tget valueStateTextId() {\n\t\treturn this.hasValueState ? `value-state-description` : \"\";\n\t}\n\n\tget _isPhone(): boolean {\n\t\treturn isPhone();\n\t}\n\n\tget itemTabIndex() {\n\t\treturn undefined;\n\t}\n\n\tget ariaLabelText(): string | undefined {\n\t\treturn getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this);\n\t}\n\n\tget clearIconAccessibleName() {\n\t\treturn ComboBox.i18nBundle.getText(INPUT_CLEAR_ICON_ACC_NAME);\n\t}\n\n\tget responsivePopoverId() {\n\t\treturn `${this._id}-popover`;\n\t}\n\n\tget styles() {\n\t\tconst remSizeInPx = parseInt(getComputedStyle(document.documentElement).fontSize);\n\t\treturn {\n\t\t\tsuggestionPopoverHeader: {\n\t\t\t\t\"display\": this._listWidth === 0 ? \"none\" : \"inline-block\",\n\t\t\t\t\"width\": `${this._listWidth || \"\"}px`,\n\t\t\t\t\"max-width\": \"inherit\",\n\t\t\t},\n\t\t\tsuggestionsPopover: {\n\t\t\t\t\"min-width\": `${this.offsetWidth || 0}px`,\n\t\t\t\t\"max-width\": (this.offsetWidth / remSizeInPx) > 40 ? `${this.offsetWidth}px` : \"40rem\",\n\t\t\t},\n\t\t\tpopoverValueStateMessage: {},\n\t\t};\n\t}\n\n\tget classes() {\n\t\treturn {\n\t\t\tpopover: {\n\t\t\t\t\"ui5-suggestions-popover\": true,\n\t\t\t\t\"ui5-popover-with-value-state-header-phone\": this._isPhone && this.hasValueStateText,\n\t\t\t\t\"ui5-popover-with-value-state-header\": !this._isPhone && this.hasValueStateText,\n\t\t\t},\n\t\t\tpopoverValueState: {\n\t\t\t\t\"ui5-valuestatemessage-header\": true,\n\t\t\t\t\"ui5-valuestatemessage-root\": true,\n\t\t\t\t\"ui5-valuestatemessage--success\": this.valueState === ValueState.Positive,\n\t\t\t\t\"ui5-valuestatemessage--error\": this.valueState === ValueState.Negative,\n\t\t\t\t\"ui5-valuestatemessage--warning\": this.valueState === ValueState.Critical,\n\t\t\t\t\"ui5-valuestatemessage--information\": this.valueState === ValueState.Information,\n\t\t\t},\n\t\t};\n\t}\n}\n\nComboBox.define();\n\nexport default ComboBox;\n\nexport type {\n\tComboBoxSelectionChangeEventDetail,\n\tIComboBoxItem,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ComboBox.js","sourceRoot":"","sources":["../src/ComboBox.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 event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport { isPhone, isAndroid, isMac } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport InvisibleMessageMode from \"@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js\";\nimport { getEffectiveAriaLabelText, getAssociatedLabelForTexts } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport \"@ui5/webcomponents-icons/dist/decline.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 type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport { submitForm } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport {\n\tisBackSpace,\n\tisDelete,\n\tisShow,\n\tisUp,\n\tisDown,\n\tisEnter,\n\tisEscape,\n\tisTabNext,\n\tisTabPrevious,\n\tisPageUp,\n\tisPageDown,\n\tisHome,\n\tisEnd,\n\tisCtrlAltF8,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { attachListeners } from \"@ui5/webcomponents-base/dist/util/valueStateNavigation.js\";\nimport arraysAreEqual from \"@ui5/webcomponents-base/dist/util/arraysAreEqual.js\";\nimport generateHighlightedMarkupFirstMatch from \"@ui5/webcomponents-base/dist/util/generateHighlightedMarkupFirstMatch.js\";\n\nimport type { IIcon } from \"./Icon.js\";\nimport * as Filters from \"./Filters.js\";\n\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\tCOMBOBOX_AVAILABLE_OPTIONS,\n\tCOMBOBOX_DIALOG_OK_BUTTON,\n\tCOMBOBOX_DIALOG_CANCEL_BUTTON,\n\tSELECT_OPTIONS,\n\tLIST_ITEM_POSITION,\n\tLIST_ITEM_GROUP_HEADER,\n\tINPUT_CLEAR_ICON_ACC_NAME,\n\tFORM_TEXTFIELD_REQUIRED,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Templates\nimport ComboBoxTemplate from \"./ComboBoxTemplate.js\";\n\n// Styles\nimport ComboBoxCss from \"./generated/themes/ComboBox.css.js\";\nimport ComboBoxPopoverCss from \"./generated/themes/ComboBoxPopover.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\";\n\nimport \"./ComboBoxItem.js\";\nimport type ComboBoxItem from \"./ComboBoxItem.js\";\nimport type Popover from \"./Popover.js\";\nimport type ResponsivePopover from \"./ResponsivePopover.js\";\nimport type List from \"./List.js\";\nimport type { ListItemClickEventDetail } from \"./List.js\";\n// eslint-disable-next-line\nimport \"./ComboBoxItemGroup.js\";\n// eslint-disable-next-line\nimport { isInstanceOfComboBoxItemGroup } from \"./ComboBoxItemGroup.js\";\nimport type ComboBoxFilter from \"./types/ComboBoxFilter.js\";\nimport type Input from \"./Input.js\";\nimport type { InputEventDetail } from \"./Input.js\";\nimport type InputComposition from \"./features/InputComposition.js\";\n\nconst SKIP_ITEMS_SIZE = 10;\n\n/**\n * Interface for components that may be slotted inside a `ui5-combobox`\n * @public\n */\ninterface IComboBoxItem extends UI5Element {\n\ttext?: string,\n\theaderText?: string,\n\tvalue?: string,\n\tfocused: boolean,\n\tisGroupItem?: boolean,\n\tselected?: boolean,\n\tadditionalText?: string,\n\t_isVisible?: boolean,\n\titems?: Array<IComboBoxItem>\n}\n\ntype ValueStateAnnouncement = Record<Exclude<ValueState, ValueState.None>, string>;\ntype ValueStateTypeAnnouncement = Record<Exclude<ValueState, ValueState.None>, string>;\n\nenum ValueStateIconMapping {\n\tNegative = \"error\",\n\tCritical = \"alert\",\n\tPositive = \"sys-enter-2\",\n\tInformation = \"information\",\n}\n\ntype ComboBoxSelectionChangeEventDetail = {\n\titem: ComboBoxItem | null,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-combobox` component represents a drop-down menu with a list of the available options and a text input field to narrow down the options.\n *\n * It is commonly used to enable users to select an option from a predefined list.\n *\n * ### Structure\n * The `ui5-combobox` consists of the following elements:\n *\n * - Input field - displays the selected option or a custom user entry. Users can type to narrow down the list or enter their own value.\n * - Drop-down arrow - expands\\collapses the option list.\n * - Option list - the list of available options.\n *\n * ### Working with Values\n *\n * The ComboBox offers two ways to work with item selection:\n *\n * **1. Display Text Only (using `value`):**\n * ```html\n * <ui5-combobox value=\"Germany\">\n * <ui5-cb-item text=\"Germany\"></ui5-cb-item>\n * <ui5-cb-item text=\"France\"></ui5-cb-item>\n * </ui5-combobox>\n * ```\n * Use this approach when the displayed text is sufficient for your needs.\n *\n * **2. Unique Identifiers - Recommended (using `selectedValue` and item `value`):**\n * ```html\n * <ui5-combobox value=\"Germany\" selected-value=\"DE\">\n * <ui5-cb-item text=\"Germany\" value=\"DE\"></ui5-cb-item>\n * <ui5-cb-item text=\"France\" value=\"FR\"></ui5-cb-item>\n * </ui5-combobox>\n * ```\n * This is the recommended approach when you need to work with unique identifiers (IDs, codes) separate from display text.\n * The `selectedValue` property references the `value` property of the selected item.\n * In forms, the item's `value` (e.g., \"DE\") will be submitted instead of the display text.\n *\n * **Important:** Do not mix the `selectedValue` approach with the deprecated `selected` property on items.\n *\n * ### Keyboard Handling\n *\n * The `ui5-combobox` provides advanced keyboard handling.\n *\n * - [F4], [Alt]+[Up], or [Alt]+[Down] - Toggles the picker.\n * - [Escape] - Closes the picker, if open. If closed, cancels changes and reverts the typed in value.\n * - [Enter] or [Return] - If picker is open, takes over the currently selected item and closes it.\n * - [Down] - Selects the next matching item in the picker.\n * - [Up] - Selects the previous matching item in the picker.\n * - [Page Down] - Moves selection down by page size (10 items by default).\n * - [Page Up] - Moves selection up by page size (10 items by default).\n * - [Home] - If focus is in the ComboBox, moves cursor at the beginning of text. If focus is in the picker, selects the first item.\n * - [End] - If focus is in the ComboBox, moves cursor at the end of text. If focus is in the picker, selects the last item.\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 * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/ComboBox.js\";`\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.0.0-rc.6\n */\n@customElement({\n\ttag: \"ui5-combobox\",\n\tlanguageAware: true,\n\tformAssociated: true,\n\trenderer: jsxRenderer,\n\tstyles: [\n\t\tComboBoxCss,\n\t\tResponsivePopoverCommonCss,\n\t\tValueStateMessageCss,\n\t\tComboBoxPopoverCss,\n\t\tSuggestionsCss,\n\t],\n\ttemplate: ComboBoxTemplate,\n})\n/**\n * Fired when the input operation has finished by pressing Enter, focusout or an item is selected.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the dropdown is opened.\n * @since 2.9.0\n * @public\n */\n@event(\"open\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the dropdown is closed.\n * @since 2.9.0\n * @public\n */\n@event(\"close\")\n\n/**\n * Fired when typing in input or clear icon is pressed.\n *\n * **Note:** filterValue property is updated, input is changed.\n * @public\n */\n@event(\"input\", {\n\tbubbles: true,\n})\n/**\n * Fired when selection is changed by user interaction\n * @param {IComboBoxItem} item item to be selected.\n * @public\n */\n@event(\"selection-change\", {\n\tbubbles: true,\n})\n\nclass ComboBox extends UI5Element implements IFormInputElement {\n\teventDetails!: {\n\t\t\"change\": void,\n\t\t\"input\": void,\n\t\t\"open\": void,\n\t\t\"close\": void,\n\t\t\"selection-change\": ComboBoxSelectionChangeEventDetail,\n\t}\n\t/**\n\t * Defines the value of the component.\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 value of the selected item (references the `value` property of `ui5-cb-item`).\n\t *\n\t * Use this property to work with unique identifiers (IDs, codes) instead of display text.\n\t * When set, the ComboBox finds and selects the item whose `value` property matches this property.\n\t *\n\t * **Benefits:**\n\t * - Select items programmatically by their unique identifier\n\t * - Handle items with identical display text but different underlying values\n\t * - Submit machine-readable values in forms (the item's `value` is submitted instead of the display text)\n\t *\n\t * **When to use `selectedValue` vs `value`:**\n\t * - **Recommended:** Use `selectedValue` + item `value` when you need unique identifiers separate from display text (e.g., country codes \"DE\", \"FR\" with display names \"Germany\", \"France\")\n\t * - Use only the ComboBox `value` property when the display text itself is sufficient for your use case\n\t *\n\t * @default undefined\n\t * @public\n\t * @since 2.20.0\n\t */\n\t@property()\n\tselectedValue?: 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 * @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 autocompleted to match an item\n\t * @default false\n\t * @public\n\t * @since 1.19.0\n\t */\n\t@property({ type: Boolean })\n\tnoTypeahead = false;\n\n\t/**\n\t * Defines the \"live\" value of the component.\n\t *\n\t * **Note:** If we have an item e.g. \"Bulgaria\", \"B\" is typed, \"ulgaria\" is typed ahead, value will be \"Bulgaria\", filterValue will be \"B\".\n\t *\n\t * **Note:** Initially the filter value is synced with value.\n\t * @default \"\"\n\t * @private\n\t */\n\t@property()\n\tfilterValue = \"\"\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 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 */\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 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 * Indicates whether the input is focused\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tfocused = 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.0.0-rc.15\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.0.0-rc.15\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_iconPressed = false;\n\n\t@property({ type: Array, noAttribute: true })\n\t_filteredItems: Array<IComboBoxItem> = [];\n\n\t@property({ type: Number, noAttribute: true })\n\t_listWidth?: number;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_effectiveShowClearIcon = false\n\n\t/**\n\t * Indicates whether the value state message popover is open.\n\t * @private\n\t * @since 2.0.0\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\tvalueStateOpen = 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/**\n\t * Indicates whether link navigation is being handled.\n\t * @default false\n\t * @since 2.11.0\n\t * @private\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\tindividualSlots: true,\n\t\tinvalidateOnChildChange: true,\n\t})\n\titems!: DefaultSlot<IComboBoxItem>;\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 `ui5-combobox` 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/**\n\t * Defines the icon to be displayed in the input field.\n\t * @public\n\t * @since 1.0.0-rc.9\n\t */\n\t@slot()\n\ticon!: Slot<IIcon>;\n\n\t_initialRendering = true;\n\t_itemFocused = false;\n\t// used only for Safari fix (check onAfterRendering)\n\t_autocomplete = false;\n\t_isKeyNavigation = false;\n\t_selectionPerformed = false;\n\t_lastValue: string;\n\t_selectedItemText = \"\";\n\t_userTypedValue = \"\";\n\t_useSelectedValue = false;\n\t_valueStateLinks: Array<HTMLElement> = [];\n\t_composition?: InputComposition;\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\tstatic composition: typeof InputComposition;\n\n\tget formValidityMessage() {\n\t\treturn ComboBox.i18nBundle.getText(FORM_TEXTFIELD_REQUIRED);\n\t}\n\n\tget formValidity(): ValidityStateFlags {\n\t\treturn { valueMissing: this.required && !this.value };\n\t}\n\n\tasync formElementAnchor() {\n\t\treturn this.getFocusDomRefAsync();\n\t}\n\n\tget formFormattedValue() {\n\t\t// Find the selected item\n\t\tconst selectedItem = this._getItems().find(item => item.selected && !item.isGroupItem) as ComboBoxItem | undefined;\n\n\t\t// If selected item has a value property, return it (like Select does)\n\t\tif (selectedItem && selectedItem.value !== undefined) {\n\t\t\treturn selectedItem.value;\n\t\t}\n\n\t\t// Fallback to display text (backward compatibility)\n\t\treturn this.value;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\n\t\t// when an initial value is set it should be considered as a _lastValue\n\t\tthis._lastValue = this.getAttribute(\"value\") || \"\";\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._effectiveShowClearIcon = (this.showClearIcon && !!this.value && !this.readonly && !this.disabled);\n\n\t\tif (this._initialRendering || this.filter === \"None\") {\n\t\t\tthis._filteredItems = this.items;\n\t\t}\n\n\t\tif (this.open && !this._isKeyNavigation) {\n\t\t\tconst items = this._filterItems(this.filterValue);\n\t\t\tthis._filteredItems = (items.length && items) || [];\n\t\t}\n\n\t\tconst hasNoVisibleItems = !this._filteredItems.length || !this._filteredItems.some(i => i._isVisible);\n\n\t\t// If there is no filtered items matching the value, show all items when the arrow is pressed\n\t\tif (((hasNoVisibleItems && !isPhone()) && this.value)) {\n\t\t\tthis.items.forEach(this._makeAllVisible.bind(this));\n\t\t\tthis._filteredItems = this.items;\n\t\t}\n\n\t\tif (this.shouldOpenValueStateMessagePopover) {\n\t\t\tthis.valueStateOpen = true;\n\t\t} else {\n\t\t\tthis.valueStateOpen = false;\n\t\t}\n\n\t\tif (this.selectedValue) {\n\t\t\tthis._useSelectedValue = true;\n\t\t}\n\n\t\t// Highlight filtered items\n\t\tthis._filteredItems.forEach(item => {\n\t\t\tif (!item) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\t// For grouped items, highlight each item in the group\n\t\t\t\titem.items.forEach(nestedItem => {\n\t\t\t\t\tif (nestedItem) {\n\t\t\t\t\t\tthis._highlightItem(nestedItem);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis._highlightItem(item as ComboBoxItem);\n\t\t\t}\n\t\t});\n\n\t\tthis._selectMatchingItem();\n\t\tthis._initialRendering = false;\n\n\t\tthis.style.setProperty(\"--_ui5-input-icons-count\", `${this.iconsCount}`);\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\tonAfterRendering() {\n\t\tif (this.inner && this.value !== this.inner.value) {\n\t\t\tthis.value = this.inner.value;\n\t\t}\n\n\t\tthis.storeResponsivePopoverWidth();\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\tonEnterDOM() {\n\t\tthis._enableComposition();\n\t}\n\n\tonExitDOM() {\n\t\tthis._removeLinksEventListeners();\n\t\tthis._composition?.removeEventListeners();\n\t}\n\n\t_focusin(e: FocusEvent) {\n\t\tthis.focused = true;\n\t\tthis._autocomplete = false;\n\n\t\tif (!e.relatedTarget || (e.relatedTarget !== this.shadowRoot!.querySelector(\".ui5-input-clear-icon\"))) {\n\t\t\tthis._lastValue = this.value;\n\t\t}\n\n\t\t!isPhone() && (e.target as HTMLInputElement).setSelectionRange(0, this.value.length);\n\t}\n\n\t_focusout(e: FocusEvent) {\n\t\tconst toBeFocused = e.relatedTarget as HTMLElement;\n\t\tconst clearIconWrapper = this.shadowRoot!.querySelector(\".ui5-input-clear-icon-wrapper\");\n\t\tconst focusedOutToClearIcon = clearIconWrapper === toBeFocused || clearIconWrapper?.contains(toBeFocused);\n\n\t\tif (this._effectiveShowClearIcon && focusedOutToClearIcon) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._fireChangeEvent();\n\n\t\tconst focusedOutToItemsPicker = this.open && this._getPicker().contains(toBeFocused);\n\t\tconst focusedOutToValueState = this.valueStateOpen && this.contains(toBeFocused);\n\n\t\tif (focusedOutToItemsPicker || focusedOutToValueState || this._handleLinkNavigation) {\n\t\t\te.stopImmediatePropagation();\n\t\t\treturn;\n\t\t}\n\n\t\tif (!(this.getDomRef()!.contains(toBeFocused)) && (this._getPicker() !== e.relatedTarget)) {\n\t\t\tthis.focused = false;\n\t\t}\n\t}\n\n\t_beforeOpenPopover() {\n\t\tif (isPhone()) {\n\t\t\tthis._getPickerInput().value = this.value;\n\t\t}\n\t}\n\n\t_afterOpenPopover() {\n\t\tthis._iconPressed = true;\n\t\tthis.inner.focus();\n\t\tthis.fireDecoratorEvent(\"open\");\n\n\t\tconst allItems = this._getItems();\n\t\tconst currentItem = allItems.find(item => {\n\t\t\treturn item.selected || item.focused;\n\t\t});\n\n\t\tif (currentItem) {\n\t\t\tthis._scrollToItem(allItems.indexOf(currentItem));\n\t\t}\n\t}\n\n\t_afterClosePopover() {\n\t\tthis._iconPressed = false;\n\t\tthis._filteredItems = this.items;\n\t\tthis.filterValue = \"\";\n\t\tthis._selectedItemText = \"\";\n\n\t\t// close device's keyboard and prevent further typing\n\t\tif (isPhone()) {\n\t\t\tthis.blur();\n\t\t}\n\n\t\tif (this._selectionPerformed) {\n\t\t\tthis._lastValue = this.value;\n\t\t\tthis._selectionPerformed = false;\n\t\t}\n\n\t\tthis.open = false;\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\t_toggleRespPopover() {\n\t\tif (this.open) {\n\t\t\tthis._closeRespPopover();\n\t\t} else {\n\t\t\tthis._openRespPopover();\n\t\t}\n\t}\n\n\tstoreResponsivePopoverWidth() {\n\t\tif (this.open && !this._listWidth) {\n\t\t\tthis._listWidth = this._getPicker().offsetWidth;\n\t\t}\n\t}\n\n\t_handleValueStatePopoverFocusout() {\n\t\tif (!this._handleLinkNavigation) {\n\t\t\tthis.focused = false;\n\t\t}\n\t}\n\n\t_handleValueStatePopoverAfterClose() {\n\t\tthis.valueStateOpen = false;\n\t}\n\n\t_getValueStatePopover() {\n\t\treturn this.shadowRoot!.querySelector<Popover>(\".ui5-valuestatemessage-popover\")!;\n\t}\n\n\t_getItemsList(): List {\n\t\treturn this._getPicker().querySelector(\".ui5-combobox-items-list\") as List;\n\t}\n\n\t_resetFilter() {\n\t\tthis._userTypedValue = \"\";\n\t\tthis.inner.setSelectionRange(0, this.value.length);\n\t\tthis._filteredItems = this._filterItems(\"\");\n\t\tthis._selectMatchingItem();\n\t}\n\n\t_resetItemVisibility() {\n\t\tthis.items.forEach(item => {\n\t\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\titem.items?.forEach(i => {\n\t\t\t\t\ti._isVisible = false;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titem._isVisible = false;\n\t\t});\n\t}\n\n\t_arrowMouseDown(e: MouseEvent) {\n\t\te.preventDefault();\n\t\tthis.inner.focus();\n\t}\n\n\t_arrowClick() {\n\t\tthis._resetFilter();\n\n\t\tif (isPhone() && this.value && !this._lastValue) {\n\t\t\tthis._lastValue = this.value;\n\t\t}\n\n\t\tthis._toggleRespPopover();\n\t}\n\n\t_handleMobileKeydown(e: KeyboardEvent) {\n\t\tif (isEscape(e)) {\n\t\t\tthis.value = this._lastValue || \"\";\n\t\t\tthis.filterValue = this._lastValue || \"\";\n\t\t\tthis._closeRespPopover();\n\t\t}\n\t}\n\n\t_handleMobileInput(e: CustomEvent<InputEventDetail>) {\n\t\tconst { target } = e;\n\t\tthis.filterValue = (target as Input).value;\n\t\tthis.value = (target as Input).value;\n\t\tthis.fireDecoratorEvent(\"input\");\n\t}\n\n\t_input(e: InputEvent) {\n\t\tconst { value } = e.target as HTMLInputElement;\n\t\tconst shouldAutocomplete = this.shouldAutocomplete(e);\n\n\t\tif (e.target === this.inner) {\n\t\t\t// stop the native event, as the semantic \"input\" would be fired.\n\t\t\te.stopImmediatePropagation();\n\t\t\tthis.focused = true;\n\t\t}\n\n\t\tthis._filteredItems = this._filterItems(value);\n\n\t\tthis.value = value;\n\t\tthis.filterValue = value;\n\n\t\tthis._clearFocus();\n\n\t\t// autocomplete\n\t\tif (shouldAutocomplete && !this._isComposing && !isAndroid()) {\n\t\t\tthis._handleTypeAhead(value, value);\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"input\");\n\n\t\tif (isPhone()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._filteredItems.length || value === \"\") {\n\t\t\tthis._closeRespPopover();\n\t\t} else {\n\t\t\tthis._openRespPopover();\n\t\t}\n\t}\n\n\tshouldAutocomplete(e: InputEvent): boolean {\n\t\tconst eventType = e.inputType;\n\t\tconst allowedEventTypes = [\n\t\t\t\"deleteWordBackward\",\n\t\t\t\"deleteWordForward\",\n\t\t\t\"deleteSoftLineBackward\",\n\t\t\t\"deleteSoftLineForward\",\n\t\t\t\"deleteEntireSoftLine\",\n\t\t\t\"deleteHardLineBackward\",\n\t\t\t\"deleteHardLineForward\",\n\t\t\t\"deleteByDrag\",\n\t\t\t\"deleteByCut\",\n\t\t\t\"deleteContent\",\n\t\t\t\"deleteContentBackward\",\n\t\t\t\"deleteContentForward\",\n\t\t\t\"historyUndo\",\n\t\t];\n\n\t\treturn !this.noTypeahead && !allowedEventTypes.includes(eventType);\n\t}\n\n\t_startsWithMatchingItems(str: string): Array<IComboBoxItem> {\n\t\tconst allItems:Array<IComboBoxItem> = this._getItems().filter(item => !isInstanceOfComboBoxItemGroup(item));\n\t\treturn Filters.StartsWith(str, allItems, \"text\");\n\t}\n\n\t_clearFocus() {\n\t\tconst allItems = this._getItems();\n\n\t\tallItems.map(item => {\n\t\t\titem.focused = false;\n\n\t\t\treturn item;\n\t\t});\n\t}\n\n\t// Get groups and items as a flat array for filtering\n\t_getItems() {\n\t\tconst allItems: Array<IComboBoxItem> = [];\n\n\t\tthis._filteredItems.forEach(item => {\n\t\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\tconst visibleItems = this.open ? item.items.filter(i => i._isVisible) : item.items;\n\t\t\t\tconst groupedItems = [item, ...visibleItems];\n\t\t\t\tallItems.push(...groupedItems);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tallItems.push(item);\n\t\t});\n\n\t\treturn allItems;\n\t}\n\n\thandleNavKeyPress(e: KeyboardEvent) {\n\t\tconst allItems = this._getItems();\n\n\t\tif (this.focused && (isHome(e) || isEnd(e)) && this.value) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isOpen = this.open;\n\t\tconst currentItem = allItems.find(item => {\n\t\t\treturn item.selected || item.focused;\n\t\t});\n\n\t\tconst indexOfItem = currentItem ? allItems.indexOf(currentItem) : -1;\n\t\te.preventDefault();\n\n\t\tif (this.focused && isOpen && (isUp(e) || isPageUp(e) || isPageDown(e))) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isKeyNavigation = true;\n\n\t\tif (\n\t\t\te.key === \"ArrowDown\"\n\t\t\t|| e.key === \"ArrowUp\"\n\t\t\t|| e.key === \"PageUp\"\n\t\t\t|| e.key === \"PageDown\"\n\t\t\t|| e.key === \"Home\"\n\t\t\t|| e.key === \"End\"\n\t\t) {\n\t\t\tthis[`_handle${e.key}`](e, indexOfItem);\n\t\t}\n\t}\n\n\t_handleItemNavigation(e: KeyboardEvent, indexOfItem: number, isForward: boolean) {\n\t\tconst allItems = this._getItems();\n\n\t\tconst currentItem: IComboBoxItem = allItems[indexOfItem];\n\t\tconst isGroupItem = currentItem && currentItem.isGroupItem;\n\t\tconst nextItem = isForward ? allItems[indexOfItem + 1] : allItems[indexOfItem - 1];\n\n\t\tif ((!this.open) && ((isGroupItem && !nextItem) || (!isGroupItem && !currentItem))) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._clearFocus();\n\n\t\tif (this.open) {\n\t\t\tthis._itemFocused = true;\n\t\t\tthis.value = isGroupItem ? \"\" : currentItem.text!;\n\t\t\tthis.selectedValue = isGroupItem ? undefined : currentItem.value;\n\t\t\tthis.focused = false;\n\n\t\t\tcurrentItem.focused = true;\n\t\t} else {\n\t\t\tthis.focused = true;\n\t\t\tthis.value = isGroupItem ? nextItem.text! : currentItem.text!;\n\t\t\tthis.selectedValue = currentItem.value;\n\t\t\tcurrentItem.focused = false;\n\t\t}\n\n\t\tthis._announceSelectedItem(indexOfItem);\n\t\tthis._scrollToItem(indexOfItem);\n\n\t\tif (isGroupItem && this.open) {\n\t\t\treturn;\n\t\t}\n\t\t// autocomplete\n\t\tthis._handleTypeAhead(this.value, this.open ? this._userTypedValue : \"\");\n\n\t\tthis.fireDecoratorEvent(\"input\");\n\t}\n\n\t_handleTypeAhead(value: string, filterValue: string) {\n\t\tconst item = this._getFirstMatchingItem(value);\n\n\t\tif (!item) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._applyAtomicValueAndSelection(item, filterValue);\n\t}\n\n\t_handleArrowDown(e: KeyboardEvent, indexOfItem: number) {\n\t\tconst isOpen = this.open;\n\n\t\tif (this.focused && indexOfItem === -1 && isOpen) {\n\t\t\tthis.focused = false;\n\t\t}\n\n\t\tconst allItems = this._getItems();\n\t\tconst currentItem = allItems[indexOfItem];\n\t\tconst isLastItem = indexOfItem === allItems.length - 1;\n\n\t\t// We don't want to navigate further if the current item is the last one and either is already focused or the popover is closed\n\t\tif (isLastItem && ((isOpen && currentItem.focused) || !isOpen)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst itemIndexToBeFocused = isLastItem ? indexOfItem : indexOfItem + 1;\n\n\t\tthis._handleItemNavigation(e, itemIndexToBeFocused, true /* isForward */);\n\t}\n\n\t_handleArrowUp(e: KeyboardEvent, indexOfItem: number) {\n\t\tconst isOpen = this.open;\n\n\t\tif (indexOfItem === 0) {\n\t\t\tthis._clearFocus();\n\t\t\tthis._itemFocused = false;\n\t\t\tthis.focused = true;\n\n\t\t\tif (this.hasValueStateText && isOpen) {\n\t\t\t\tthis._filteredItems[0].selected = false;\n\t\t\t\tthis.value = this._userTypedValue;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis._handleItemNavigation(e, --indexOfItem, false /* isForward */);\n\t}\n\n\t_handlePageUp(e: KeyboardEvent, indexOfItem: number) {\n\t\tconst allItems = this._getItems();\n\t\tconst isProposedIndexValid = indexOfItem - SKIP_ITEMS_SIZE > -1;\n\t\tindexOfItem = isProposedIndexValid ? indexOfItem - SKIP_ITEMS_SIZE : 0;\n\t\tconst shouldMoveForward = isInstanceOfComboBoxItemGroup(allItems[indexOfItem]) && !this.open;\n\n\t\tthis._handleItemNavigation(e, indexOfItem, shouldMoveForward);\n\t}\n\n\t_handlePageDown(e: KeyboardEvent, indexOfItem: number) {\n\t\tconst allItems = this._getItems();\n\t\tconst itemsLength = allItems.length;\n\t\tconst isProposedIndexValid = indexOfItem + SKIP_ITEMS_SIZE < itemsLength;\n\n\t\tindexOfItem = isProposedIndexValid ? indexOfItem + SKIP_ITEMS_SIZE : itemsLength - 1;\n\t\tconst shouldMoveForward = isInstanceOfComboBoxItemGroup(allItems[indexOfItem]) && !this.open;\n\n\t\tthis._handleItemNavigation(e, indexOfItem, shouldMoveForward);\n\t}\n\n\t_handleHome(e: KeyboardEvent) {\n\t\tconst shouldMoveForward = isInstanceOfComboBoxItemGroup(this._filteredItems[0]) && !this.open;\n\n\t\tthis._handleItemNavigation(e, 0, shouldMoveForward);\n\t}\n\n\t_handleEnd(e: KeyboardEvent) {\n\t\tthis._handleItemNavigation(e, this._getItems().length - 1, true /* isForward */);\n\t}\n\n\t_keyup() {\n\t\tthis._userTypedValue = this.value.substring(0, this.inner.selectionStart || 0);\n\t}\n\n\t_keydown(e: KeyboardEvent) {\n\t\tconst isNavKey = isDown(e) || isUp(e) || isPageUp(e) || isPageDown(e) || isHome(e) || isEnd(e);\n\t\tconst allItems: Array<IComboBoxItem> = this._getItems();\n\n\t\tthis._autocomplete = !(isBackSpace(e) || isDelete(e));\n\t\tthis._isKeyNavigation = false;\n\n\t\tif (isNavKey && !this.readonly && this._filteredItems.length) {\n\t\t\tthis.handleNavKeyPress(e);\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tlet focusedItem: IComboBoxItem | undefined;\n\n\t\t\tthis._filteredItems.forEach(item => {\n\t\t\t\tif (isInstanceOfComboBoxItemGroup(item) && !focusedItem) {\n\t\t\t\t\tfocusedItem = item.items.find(groupItem => groupItem.focused);\n\t\t\t\t}\n\n\t\t\t\tif (item.focused) {\n\t\t\t\t\tfocusedItem = item;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._fireChangeEvent();\n\n\t\t\tif (this.open && !focusedItem?.isGroupItem) {\n\t\t\t\tthis._closeRespPopover();\n\t\t\t\tthis.focused = true;\n\t\t\t\tthis.inner.setSelectionRange(this.value.length, this.value.length);\n\t\t\t} else if (this._internals.form) {\n\t\t\t\tsubmitForm(this);\n\t\t\t}\n\t\t}\n\n\t\tif (isEscape(e)) {\n\t\t\tthis.focused = true;\n\t\t\tconst shouldResetValueAndStopPropagation = !this.open && this.value !== this._lastValue;\n\t\t\tif (shouldResetValueAndStopPropagation) {\n\t\t\t\tthis.value = this._lastValue;\n\t\t\t\t// stop propagation to prevent closing the popup when using the combobox inside it\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t}\n\n\t\tif ((isTabNext(e) || isTabPrevious(e)) && this.open) {\n\t\t\tthis._closeRespPopover();\n\t\t}\n\n\t\tif (isShow(e) && !this.readonly && !this.disabled) {\n\t\t\te.preventDefault();\n\n\t\t\tthis._resetFilter();\n\t\t\tthis._toggleRespPopover();\n\n\t\t\tconst selectedItem = allItems.find(item => {\n\t\t\t\treturn item.selected;\n\t\t\t});\n\n\t\t\tif (selectedItem && this.open) {\n\t\t\t\tthis._itemFocused = true;\n\t\t\t\tselectedItem.focused = true;\n\t\t\t\tthis.focused = false;\n\t\t\t} else if (this.open && this._filteredItems.length && !this.value.length) {\n\t\t\t\t// If no item is selected, select the first non-group item on \"Show\" (F4, Alt+Up/Down)\n\t\t\t\tconst firstNonGroupItem = this._getItems().findIndex(item => item._isVisible && !item.isGroupItem);\n\t\t\t\tthis._handleItemNavigation(e, firstNonGroupItem, true /* isForward */);\n\t\t\t} else {\n\t\t\t\tthis.focused = true;\n\t\t\t}\n\t\t}\n\n\t\tif (isCtrlAltF8(e)) {\n\t\t\treturn this._handleCtrlALtF8();\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._closeRespPopover();\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.inner.focus();\n\t\t\t\t\t\t\tthis.handleNavKeyPress(e);\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.inner.focus();\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_handleCtrlALtF8() {\n\t\tconst links = this.linksInAriaValueStateHiddenText;\n\n\t\tif (links.length > 0) {\n\t\t\tthis._clearFocus();\n\t\t\tlinks[0].focus();\n\t\t}\n\n\t\tthis._handleLinkNavigation = true;\n\t}\n\n\t_handlePopoverKeydown(e: KeyboardEvent) {\n\t\tif (isTabNext(e)) {\n\t\t\tthis._closeRespPopover();\n\t\t}\n\t}\n\n\t_handlePopoverFocusout() {\n\t\tthis.focused = false;\n\t}\n\n\t_click() {\n\t\tif (isPhone() && !this.readonly) {\n\t\t\tthis._openRespPopover();\n\t\t}\n\t}\n\n\t_closeRespPopover(e?: Event | null) {\n\t\tif ((e && (e.target as HTMLElement).classList.contains(\"ui5-responsive-popover-close-btn\"))) {\n\t\t\tif (this._selectedItemText) {\n\t\t\t\tthis.value = this._selectedItemText;\n\t\t\t\tthis.filterValue = this._selectedItemText;\n\t\t\t} else {\n\t\t\t\tthis.value = this._lastValue || \"\";\n\t\t\t\tthis.filterValue = this._lastValue || \"\";\n\t\t\t}\n\t\t}\n\n\t\tif (isPhone()) {\n\t\t\tthis._fireChangeEvent();\n\t\t}\n\n\t\tthis._clearFocus();\n\t\tthis.open = false;\n\t\tthis.valueStateOpen = false;\n\t}\n\n\t_openRespPopover() {\n\t\tthis.open = true;\n\t}\n\n\t_filterItems(str: string) {\n\t\tlet filteredItem:IComboBoxItem;\n\t\tlet filteredGroupItems: Array<IComboBoxItem> = [];\n\t\tconst filteredItems: Array<IComboBoxItem> = [];\n\t\tconst filteredItemGroups: Array<IComboBoxItem> = [];\n\n\t\tthis._resetItemVisibility();\n\t\tthis.items.forEach(item => {\n\t\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\tfilteredGroupItems = (Filters[this.filter] || Filters.StartsWithPerTerm)(str, item.items, \"text\");\n\t\t\t\tfilteredGroupItems.forEach(i => {\n\t\t\t\t\ti._isVisible = true;\n\t\t\t\t});\n\n\t\t\t\tif (filteredGroupItems.length) {\n\t\t\t\t\tfilteredItemGroups.push(item);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t[filteredItem] = (Filters[this.filter] || Filters.StartsWithPerTerm)(str, [item], \"text\");\n\n\t\t\tif (filteredItem) {\n\t\t\t\tfilteredItem._isVisible = true;\n\t\t\t\tfilteredItems.push(filteredItem);\n\t\t\t}\n\t\t});\n\n\t\treturn [...filteredItemGroups, ...filteredItems];\n\t}\n\n\t/**\n\t * Sets the markupText property of an item with highlighted first match.\n\t * @param item The ComboBox item to highlight\n\t * @private\n\t */\n\t_highlightItem(item: ComboBoxItem) {\n\t\titem.markupText = generateHighlightedMarkupFirstMatch(item.text || \"\", this.filterValue);\n\t}\n\n\t_getFirstMatchingItem(current: string): IComboBoxItem | void {\n\t\tconst allItems = this._getItems();\n\t\tconst currentlyFocusedItem = allItems.find(item => item.focused === true);\n\n\t\tif (currentlyFocusedItem?.isGroupItem) {\n\t\t\tthis.value = this.filterValue;\n\t\t\treturn;\n\t\t}\n\n\t\tconst matchingItems: Array<IComboBoxItem> = this._startsWithMatchingItems(current);\n\n\t\tif (matchingItems.length) {\n\t\t\tlet exactMatch;\n\t\t\tif (this._useSelectedValue) {\n\t\t\t\texactMatch = matchingItems.find(item => item.value === (currentlyFocusedItem?.value || this.selectedValue) && item.text?.toLowerCase() === current.toLowerCase());\n\t\t\t} else {\n\t\t\t\texactMatch = matchingItems.find(item => item.text?.toLowerCase() === current.toLowerCase());\n\t\t\t}\n\n\t\t\treturn exactMatch ?? matchingItems[0];\n\t\t}\n\t}\n\n\t_applyAtomicValueAndSelection(item: IComboBoxItem, filterValue: string) {\n\t\tconst value = (item && item.text) || \"\";\n\n\t\tthis.inner.value = value;\n\n\t\t// select the whole value if it doesn't start with the filterValue, otherwise select only the autocompleted part\n\t\tconst startsWithFilter = value.toLowerCase().startsWith(filterValue.toLowerCase());\n\t\tconst selectionStart = startsWithFilter ? filterValue.length : 0;\n\t\tthis.inner.setSelectionRange(selectionStart, value.length);\n\t\tthis.value = value;\n\n\t\tif (this._useSelectedValue) {\n\t\t\tthis.selectedValue = item.value;\n\t\t}\n\t}\n\n\t_selectMatchingItem() {\n\t\tconst currentlyFocusedItem = this.items.find(item => item.focused);\n\t\tconst shouldSelectionBeCleared = currentlyFocusedItem && currentlyFocusedItem.isGroupItem;\n\t\tconst valueToMatch = currentlyFocusedItem?.value ?? this.selectedValue;\n\t\tlet itemToBeSelected: IComboBoxItem | undefined;\n\t\tlet previouslySelectedItem: IComboBoxItem | undefined;\n\n\t\t// Find previously selected item\n\t\tthis._filteredItems.forEach(item => {\n\t\t\tif (!isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\tif (item.selected) {\n\t\t\t\t\tpreviouslySelectedItem = item;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst selectedGroupItem = item.items?.find(i => i.selected);\n\t\t\t\tif (selectedGroupItem) {\n\t\t\t\t\tpreviouslySelectedItem = selectedGroupItem;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._filteredItems.forEach(item => {\n\t\t\tif (!shouldSelectionBeCleared && !itemToBeSelected) {\n\t\t\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\t\tif (this._useSelectedValue) {\n\t\t\t\t\t\titemToBeSelected = item.items.find(i => i.value === valueToMatch && (this.value === \"\" || i.text?.toLowerCase() === this.value.toLowerCase()));\n\t\t\t\t\t} else {\n\t\t\t\t\t\titemToBeSelected = item.items?.find(i => i.text?.toLowerCase() === this.value.toLowerCase());\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (this._useSelectedValue) {\n\t\t\t\t\t\titemToBeSelected = this.items.find(i => i.value === valueToMatch && (this.value === \"\" || i.text?.toLowerCase() === this.value.toLowerCase()));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\titemToBeSelected = item.text?.toLowerCase() === this.value.toLowerCase() ? item : undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// When selectedValue matched an item but value is empty (initial render), populate value from the item's text\n\t\tif (itemToBeSelected && this._initialRendering && this.value === \"\") {\n\t\t\tthis.value = itemToBeSelected.text || \"\";\n\t\t}\n\n\t\tthis._filteredItems = this._filteredItems.map(item => {\n\t\t\tif (!isInstanceOfComboBoxItemGroup(item)) {\n\t\t\t\titem.selected = item === itemToBeSelected;\n\t\t\t\treturn item;\n\t\t\t}\n\n\t\t\titem.items?.forEach(groupItem => {\n\t\t\t\tgroupItem.selected = itemToBeSelected === groupItem;\n\t\t\t});\n\n\t\t\treturn item;\n\t\t});\n\n\t\tif (!itemToBeSelected && this._useSelectedValue) {\n\t\t\tthis.selectedValue = undefined;\n\t\t} else {\n\t\t\tthis.selectedValue = itemToBeSelected?.value;\n\t\t}\n\n\t\tconst noUserInteraction = !this.focused && !this._isKeyNavigation && !this._selectionPerformed && !this._iconPressed;\n\t\t// Skip firing \"selection-change\" event if this is initial rendering or if there has been no user interaction yet\n\t\tif (this._initialRendering || noUserInteraction) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fire selection-change event only when selection actually changes\n\t\tif (previouslySelectedItem !== itemToBeSelected) {\n\t\t\tif (itemToBeSelected) {\n\t\t\t\t// New item selected\n\t\t\t\tthis.fireDecoratorEvent(\"selection-change\", {\n\t\t\t\t\titem: itemToBeSelected as ComboBoxItem,\n\t\t\t\t});\n\t\t\t} else if (previouslySelectedItem) {\n\t\t\t\t// Selection cleared - fire event with 'null'\n\t\t\t\tthis.fireDecoratorEvent(\"selection-change\", {\n\t\t\t\t\titem: null,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t_fireChangeEvent() {\n\t\tif (this.value !== this._lastValue) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t\tthis._lastValue = this.value;\n\t\t}\n\t}\n\n\t_inputChange(e: Event) {\n\t\te.preventDefault();\n\t}\n\n\t_itemMousedown(e: MouseEvent) {\n\t\te.preventDefault();\n\t}\n\n\t_selectItem(e: CustomEvent<ListItemClickEventDetail>) {\n\t\tconst item = e.detail.item as ComboBoxItem;\n\n\t\tthis._selectedItemText = item.text || \"\";\n\t\tthis._selectionPerformed = true;\n\n\t\tconst sameItemSelected = this.value === this._selectedItemText;\n\t\tconst sameSelectionPerformed = this.value.toLowerCase() === this.filterValue.toLowerCase();\n\n\t\tif (sameItemSelected && sameSelectionPerformed) {\n\t\t\tthis._fireChangeEvent(); // Click on an already typed, but not memoized value shouold also trigger the change event\n\t\t\treturn this._closeRespPopover();\n\t\t}\n\n\t\tthis.value = this._selectedItemText;\n\t\t// On first item select the _useSelectedValue is still false.\n\t\t// In case the item has a value property, we set the _useSelectedValue to true to start working with the value instead with the text.\n\t\tif (!this._useSelectedValue && item.value !== undefined) {\n\t\t\tthis._useSelectedValue = true;\n\t\t}\n\n\t\t// Always set selectedValue when the item has a value property, regardless of _useSelectedValue state\n\t\tif (item.value !== undefined) {\n\t\t\tthis.selectedValue = item.value;\n\t\t} else if (this._useSelectedValue) {\n\t\t\t// Only clear selectedValue if we were using it before\n\t\t\tthis.selectedValue = undefined;\n\t\t}\n\n\t\tif (!item.selected) {\n\t\t\tthis.fireDecoratorEvent(\"selection-change\", {\n\t\t\t\titem,\n\t\t\t});\n\t\t}\n\n\t\tthis._fireChangeEvent();\n\t\tthis._closeRespPopover();\n\n\t\t// reset selection\n\t\tthis.inner.setSelectionRange(this.value.length, this.value.length);\n\t}\n\n\t_onItemFocus() {\n\t\tthis._itemFocused = true;\n\t}\n\n\t_announceSelectedItem(indexOfItem: number) {\n\t\tconst allItems = this._getItems();\n\t\tconst currentItem = allItems[indexOfItem];\n\t\tconst nonGroupItems = allItems.filter(item => !item.isGroupItem);\n\t\tconst currentItemAdditionalText = currentItem?.additionalText || \"\";\n\t\tconst isGroupItem = currentItem?.isGroupItem;\n\t\tconst itemPositionText = ComboBox.i18nBundle.getText(LIST_ITEM_POSITION, nonGroupItems.indexOf(currentItem) + 1, nonGroupItems.length);\n\t\tconst groupHeaderText = ComboBox.i18nBundle.getText(LIST_ITEM_GROUP_HEADER);\n\n\t\tif (isGroupItem) {\n\t\t\tannounce(`${groupHeaderText} ${currentItem.headerText}`, InvisibleMessageMode.Polite);\n\t\t} else {\n\t\t\tannounce(`${currentItemAdditionalText} ${this.open ? itemPositionText : \"\"}`.trim(), InvisibleMessageMode.Polite);\n\t\t}\n\t}\n\n\t_clear() {\n\t\tconst selectedItem = this.items.find(item => item.selected);\n\n\t\tif (selectedItem?.text?.toLowerCase() === this.value.toLowerCase()) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\n\t\tthis.value = \"\";\n\t\tif (this._useSelectedValue) {\n\t\t\tthis.selectedValue = undefined;\n\t\t}\n\t\tthis.fireDecoratorEvent(\"input\");\n\n\t\tif (this._isPhone) {\n\t\t\tthis._lastValue = \"\";\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t} else {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\n\t_makeAllVisible(item: IComboBoxItem) {\n\t\tif (isInstanceOfComboBoxItemGroup(item)) {\n\t\t\titem.items.forEach(groupItem => {\n\t\t\t\tgroupItem._isVisible = true;\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\titem._isVisible = true;\n\t}\n\n\t_scrollToItem(indexOfItem: number) {\n\t\tconst picker = this._getPicker();\n\t\tconst list = this._getItemsList();\n\t\tconst listItem = list?.listItems[indexOfItem];\n\n\t\tif (listItem) {\n\t\t\tconst pickerRect = picker.getBoundingClientRect();\n\t\t\tconst listItemRect = listItem.getBoundingClientRect();\n\t\t\tconst isListItemInVisibleArea = listItemRect.top >= pickerRect.top && listItemRect.bottom <= pickerRect.bottom;\n\n\t\t\tif (!isListItemInVisibleArea) {\n\t\t\t\tlistItem.scrollIntoView({\n\t\t\t\t\tbehavior: \"auto\",\n\t\t\t\t\tblock: \"nearest\",\n\t\t\t\t\tinline: \"nearest\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t_announceValueStateText() {\n\t\tconst valueStateText = this.shouldDisplayDefaultValueStateMessage ? this.valueStateDefaultText : this.valueStateMessage.map(el => el.textContent).join(\" \");\n\n\t\tif (valueStateText) {\n\t\t\tannounce(valueStateText, InvisibleMessageMode.Polite);\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.inner,\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 (ComboBox.composition) {\n\t\t\tsetup(ComboBox.composition);\n\t\t} else {\n\t\t\timport(\"./features/InputComposition.js\").then(CompositionModule => {\n\t\t\t\tComboBox.composition = CompositionModule.default;\n\t\t\t\tsetup(CompositionModule.default);\n\t\t\t});\n\t\t}\n\t}\n\n\tget _headerTitleText() {\n\t\treturn getAssociatedLabelForTexts(this) || ComboBox.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);\n\t}\n\n\tget _iconAccessibleNameText() {\n\t\treturn ComboBox.i18nBundle.getText(SELECT_OPTIONS);\n\t}\n\n\tget _popupLabel() {\n\t\treturn ComboBox.i18nBundle.getText(COMBOBOX_AVAILABLE_OPTIONS);\n\t}\n\n\tget _dialogOkButtonText() {\n\t\treturn ComboBox.i18nBundle.getText(COMBOBOX_DIALOG_OK_BUTTON);\n\t}\n\n\tget _dialogCancelButtonText() {\n\t\treturn ComboBox.i18nBundle.getText(COMBOBOX_DIALOG_CANCEL_BUTTON);\n\t}\n\n\tget inner(): HTMLInputElement {\n\t\treturn (isPhone() && this.open)\n\t\t\t? this._getPickerInput().shadowRoot!.querySelector(\"input\")!\n\t\t\t: this.shadowRoot!.querySelector<HTMLInputElement>(\"[inner-input]\")!;\n\t}\n\n\t_getPicker() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\n\t_getPickerInput() {\n\t\treturn this._getPicker().querySelector<HTMLInputElement>(\"[ui5-input]\")!;\n\t}\n\n\tget openOnMobile() {\n\t\treturn this._isPhone && this.open;\n\t}\n\n\tget hasValueState(): boolean {\n\t\treturn this.valueState !== ValueState.None;\n\t}\n\n\tget hasValueStateText(): boolean {\n\t\treturn this.hasValueState && this.valueState !== ValueState.Positive;\n\t}\n\n\tget ariaValueStateHiddenText(): string {\n\t\tif (!this.hasValueState) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tlet text = \"\";\n\n\t\tif (this.valueState !== ValueState.None) {\n\t\t\ttext = this.valueStateTypeMappings[this.valueState];\n\t\t}\n\n\t\tif (this.shouldDisplayDefaultValueStateMessage) {\n\t\t\treturn `${text} ${this.valueStateDefaultText || \"\"}`;\n\t\t}\n\n\t\treturn `${text}`.concat(\" \", this.valueStateMessage.map(el => el.textContent).join(\" \"));\n\t}\n\n\tget valueStateDefaultText(): string | undefined {\n\t\tif (this.valueState === ValueState.None) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.valueStateTextMappings[this.valueState];\n\t}\n\n\tget valueStateTextMappings(): ValueStateAnnouncement {\n\t\treturn {\n\t\t\t[ValueState.Positive]: ComboBox.i18nBundle.getText(VALUE_STATE_SUCCESS),\n\t\t\t[ValueState.Negative]: ComboBox.i18nBundle.getText(VALUE_STATE_ERROR),\n\t\t\t[ValueState.Critical]: ComboBox.i18nBundle.getText(VALUE_STATE_WARNING),\n\t\t\t[ValueState.Information]: ComboBox.i18nBundle.getText(VALUE_STATE_INFORMATION),\n\t\t};\n\t}\n\n\tget valueStateTypeMappings(): ValueStateTypeAnnouncement {\n\t\treturn {\n\t\t\t[ValueState.Positive]: ComboBox.i18nBundle.getText(VALUE_STATE_TYPE_SUCCESS),\n\t\t\t[ValueState.Information]: ComboBox.i18nBundle.getText(VALUE_STATE_TYPE_INFORMATION),\n\t\t\t[ValueState.Negative]: ComboBox.i18nBundle.getText(VALUE_STATE_TYPE_ERROR),\n\t\t\t[ValueState.Critical]: ComboBox.i18nBundle.getText(VALUE_STATE_TYPE_WARNING),\n\t\t};\n\t}\n\n\tget shouldOpenValueStateMessagePopover(): boolean {\n\t\treturn this.focused && !this.readonly && this.hasValueStateText && !this._iconPressed\n\t\t\t&& !this.open && !this._isPhone;\n\t}\n\n\tget shouldDisplayDefaultValueStateMessage(): boolean {\n\t\treturn !this.valueStateMessage.length && this.hasValueStateText;\n\t}\n\n\t/**\n\t * This method is relevant for sap_horizon theme only\n\t */\n\tget _valueStateMessageIcon(): string {\n\t\treturn this.valueState !== ValueState.None ? ValueStateIconMapping[this.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)\t{\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 valueStateLinksShortcutsTextAcc() {\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? ComboBox.i18nBundle.getText(VALUE_STATE_LINK_MAC)\n\t\t\t\t: ComboBox.i18nBundle.getText(VALUE_STATE_LINKS_MAC);\n\t\t}\n\n\t\treturn links.length === 1\n\t\t\t? ComboBox.i18nBundle.getText(VALUE_STATE_LINK)\n\t\t\t: ComboBox.i18nBundle.getText(VALUE_STATE_LINKS);\n\t}\n\n\tget ariaDescribedByText() {\n\t\treturn `${this.valueStateTextId} ${this._valueStateLinksShortcutsTextAccId}`.trim();\n\t}\n\n\tget _valueStateLinksShortcutsTextAccId() {\n\t\treturn this.linksInAriaValueStateHiddenText.length > 0 ? `hiddenText-value-state-link-shortcut` : \"\";\n\t}\n\n\tget valueStateTextId() {\n\t\treturn this.hasValueState ? `value-state-description` : \"\";\n\t}\n\n\tget _isPhone(): boolean {\n\t\treturn isPhone();\n\t}\n\n\tget itemTabIndex() {\n\t\treturn undefined;\n\t}\n\n\tget ariaLabelText(): string | undefined {\n\t\treturn getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this);\n\t}\n\n\tget clearIconAccessibleName() {\n\t\treturn ComboBox.i18nBundle.getText(INPUT_CLEAR_ICON_ACC_NAME);\n\t}\n\n\tget responsivePopoverId() {\n\t\treturn `${this._id}-popover`;\n\t}\n\n\tget styles() {\n\t\tconst remSizeInPx = parseInt(getComputedStyle(document.documentElement).fontSize);\n\t\treturn {\n\t\t\tsuggestionPopoverHeader: {\n\t\t\t\t\"display\": this._listWidth === 0 ? \"none\" : \"inline-block\",\n\t\t\t\t\"width\": `${this._listWidth || \"\"}px`,\n\t\t\t\t\"max-width\": \"inherit\",\n\t\t\t},\n\t\t\tsuggestionsPopover: {\n\t\t\t\t\"min-width\": `${this.offsetWidth || 0}px`,\n\t\t\t\t\"max-width\": (this.offsetWidth / remSizeInPx) > 40 ? `${this.offsetWidth}px` : \"40rem\",\n\t\t\t},\n\t\t\tpopoverValueStateMessage: {},\n\t\t};\n\t}\n\n\tget classes() {\n\t\treturn {\n\t\t\tpopover: {\n\t\t\t\t\"ui5-suggestions-popover\": true,\n\t\t\t\t\"ui5-popover-with-value-state-header-phone\": this._isPhone && this.hasValueStateText,\n\t\t\t\t\"ui5-popover-with-value-state-header\": !this._isPhone && this.hasValueStateText,\n\t\t\t},\n\t\t\tpopoverValueState: {\n\t\t\t\t\"ui5-valuestatemessage-header\": true,\n\t\t\t\t\"ui5-valuestatemessage-root\": true,\n\t\t\t\t\"ui5-valuestatemessage--success\": this.valueState === ValueState.Positive,\n\t\t\t\t\"ui5-valuestatemessage--error\": this.valueState === ValueState.Negative,\n\t\t\t\t\"ui5-valuestatemessage--warning\": this.valueState === ValueState.Critical,\n\t\t\t\t\"ui5-valuestatemessage--information\": this.valueState === ValueState.Information,\n\t\t\t},\n\t\t};\n\t}\n}\n\nComboBox.define();\n\nexport default ComboBox;\n\nexport type {\n\tComboBoxSelectionChangeEventDetail,\n\tIComboBoxItem,\n};\n"]}
|
|
@@ -3,6 +3,7 @@ import Icon from "./Icon.js";
|
|
|
3
3
|
import Button from "./Button.js";
|
|
4
4
|
import List from "./List.js";
|
|
5
5
|
import Input from "./Input.js";
|
|
6
|
+
import Title from "./Title.js";
|
|
6
7
|
import PopoverHorizontalAlign from "./types/PopoverHorizontalAlign.js";
|
|
7
8
|
import Popover from "./Popover.js";
|
|
8
9
|
import ResponsivePopover from "./ResponsivePopover.js";
|
|
@@ -12,7 +13,7 @@ import generateHighlightedMarkupFirstMatch from "@ui5/webcomponents-base/dist/ut
|
|
|
12
13
|
export default function ComboBoxPopoverTemplate() {
|
|
13
14
|
return (_jsxs(_Fragment, { children: [_jsxs(ResponsivePopover, { id: this.responsivePopoverId, class: this.classes.popover, style: this.styles.suggestionsPopover, tabindex: -1, open: this.open, opener: this, hideArrow: true, preventFocusRestore: true, preventInitialFocus: true, placement: "Bottom", horizontalAlign: "Start", accessibleName: this._popupLabel, onBeforeOpen: this._beforeOpenPopover, onOpen: this._afterOpenPopover, onClose: this._afterClosePopover, onKeyDown: this._handlePopoverKeydown, onFocusOut: this._handlePopoverFocusout, children: [this.loading &&
|
|
14
15
|
_jsx(BusyIndicator, { active: true, class: "ui5-combobox-busy" }), !this.loading && this._isPhone &&
|
|
15
|
-
_jsxs(_Fragment, { children: [_jsxs("div", { slot: "header", class: "ui5-responsive-popover-header", children: [_jsx("div", { class: "row", children: _jsx("
|
|
16
|
+
_jsxs(_Fragment, { children: [_jsxs("div", { slot: "header", class: "ui5-responsive-popover-header", children: [_jsx("div", { class: "row", children: _jsx(Title, { level: "H1", wrappingType: "None", class: "ui5-responsive-popover-header-text", children: this._headerTitleText }) }), _jsx("div", { class: "row", children: _jsx(Input, { open: this.openOnMobile, placeholder: this.placeholder, valueState: this.valueState, showClearIcon: this.showClearIcon, noTypeahead: this.noTypeahead, onKeyDown: this._handleMobileKeydown, onInput: this._handleMobileInput, onChange: this._inputChange, children: this._filteredItems.flatMap(item => {
|
|
16
17
|
if (item.isGroupItem && item.items) {
|
|
17
18
|
// For group items, return all nested items
|
|
18
19
|
return item.items
|