@ui5/webcomponents 2.21.0-rc.2 → 2.21.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/Avatar.d.ts +5 -0
  4. package/dist/Avatar.js +3 -0
  5. package/dist/Avatar.js.map +1 -1
  6. package/dist/ComboBox.d.ts +6 -0
  7. package/dist/ComboBox.js +31 -0
  8. package/dist/ComboBox.js.map +1 -1
  9. package/dist/ComboBoxItemTemplate.js +1 -1
  10. package/dist/ComboBoxItemTemplate.js.map +1 -1
  11. package/dist/ComboBoxPopoverTemplate.js +11 -1
  12. package/dist/ComboBoxPopoverTemplate.js.map +1 -1
  13. package/dist/InputTemplate.js +1 -1
  14. package/dist/InputTemplate.js.map +1 -1
  15. package/dist/ListItemBase.d.ts +4 -0
  16. package/dist/ListItemBase.js +32 -1
  17. package/dist/ListItemBase.js.map +1 -1
  18. package/dist/MultiComboBoxTemplate.js +1 -1
  19. package/dist/MultiComboBoxTemplate.js.map +1 -1
  20. package/dist/MultiInput.js +2 -0
  21. package/dist/MultiInput.js.map +1 -1
  22. package/dist/Select.js +14 -5
  23. package/dist/Select.js.map +1 -1
  24. package/dist/SelectTemplate.js +1 -1
  25. package/dist/SelectTemplate.js.map +1 -1
  26. package/dist/TableCell.d.ts +12 -0
  27. package/dist/TableCell.js +19 -0
  28. package/dist/TableCell.js.map +1 -1
  29. package/dist/TableHeaderRowTemplate.js +1 -1
  30. package/dist/TableHeaderRowTemplate.js.map +1 -1
  31. package/dist/TableRow.d.ts +1 -0
  32. package/dist/TableRow.js +5 -1
  33. package/dist/TableRow.js.map +1 -1
  34. package/dist/TableRowBase.d.ts +1 -0
  35. package/dist/TableRowBase.js +3 -0
  36. package/dist/TableRowBase.js.map +1 -1
  37. package/dist/TableRowTemplate.js +1 -1
  38. package/dist/TableRowTemplate.js.map +1 -1
  39. package/dist/Token.d.ts +6 -0
  40. package/dist/Token.js +9 -0
  41. package/dist/Token.js.map +1 -1
  42. package/dist/Tokenizer.d.ts +6 -0
  43. package/dist/Tokenizer.js +22 -0
  44. package/dist/Tokenizer.js.map +1 -1
  45. package/dist/css/themes/ComboBox.css +1 -1
  46. package/dist/css/themes/DateTimePickerPopover.css +1 -1
  47. package/dist/css/themes/MultiComboBox.css +1 -1
  48. package/dist/css/themes/MultiInput.css +1 -1
  49. package/dist/css/themes/TableCell.css +1 -1
  50. package/dist/css/themes/TableCellBase.css +1 -1
  51. package/dist/css/themes/TableHeaderRow.css +1 -1
  52. package/dist/css/themes/TableRow.css +1 -1
  53. package/dist/css/themes/TableRowBase.css +1 -1
  54. package/dist/css/themes/Token.css +1 -1
  55. package/dist/css/themes/Tokenizer.css +1 -1
  56. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  57. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  58. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  59. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  60. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  61. package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +4 -3
  62. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  63. package/dist/css/themes/sap_horizon_hc_auto/parameters-bundle.css +4 -3
  64. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  65. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  66. package/dist/custom-elements-internal.json +31 -11
  67. package/dist/custom-elements.json +30 -11
  68. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  69. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  70. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  71. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  72. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  73. package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
  74. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  75. package/dist/generated/assets/themes/sap_horizon_hc_auto/parameters-bundle.css.json +1 -1
  76. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  77. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  78. package/dist/generated/themes/ComboBox.css.d.ts +1 -1
  79. package/dist/generated/themes/ComboBox.css.js +1 -1
  80. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  81. package/dist/generated/themes/DateTimePickerPopover.css.d.ts +1 -1
  82. package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
  83. package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
  84. package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
  85. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  86. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  87. package/dist/generated/themes/MultiInput.css.d.ts +1 -1
  88. package/dist/generated/themes/MultiInput.css.js +1 -1
  89. package/dist/generated/themes/MultiInput.css.js.map +1 -1
  90. package/dist/generated/themes/TableCell.css.d.ts +1 -1
  91. package/dist/generated/themes/TableCell.css.js +1 -1
  92. package/dist/generated/themes/TableCell.css.js.map +1 -1
  93. package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
  94. package/dist/generated/themes/TableCellBase.css.js +1 -1
  95. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  96. package/dist/generated/themes/TableHeaderRow.css.d.ts +1 -1
  97. package/dist/generated/themes/TableHeaderRow.css.js +1 -1
  98. package/dist/generated/themes/TableHeaderRow.css.js.map +1 -1
  99. package/dist/generated/themes/TableRow.css.d.ts +1 -1
  100. package/dist/generated/themes/TableRow.css.js +1 -1
  101. package/dist/generated/themes/TableRow.css.js.map +1 -1
  102. package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
  103. package/dist/generated/themes/TableRowBase.css.js +1 -1
  104. package/dist/generated/themes/TableRowBase.css.js.map +1 -1
  105. package/dist/generated/themes/Token.css.d.ts +1 -1
  106. package/dist/generated/themes/Token.css.js +1 -1
  107. package/dist/generated/themes/Token.css.js.map +1 -1
  108. package/dist/generated/themes/Tokenizer.css.d.ts +1 -1
  109. package/dist/generated/themes/Tokenizer.css.js +1 -1
  110. package/dist/generated/themes/Tokenizer.css.js.map +1 -1
  111. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  112. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  113. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  114. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  115. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  116. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  117. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  118. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  119. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  120. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  121. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  122. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  123. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  124. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  125. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  126. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
  127. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +4 -3
  128. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
  129. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  130. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  131. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  132. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.d.ts +1 -1
  133. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js +4 -3
  134. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js.map +1 -1
  135. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  136. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  137. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  138. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  139. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  140. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  141. package/dist/vscode.html-custom-data.json +5 -0
  142. package/dist/web-types.json +11 -1
  143. package/package.json +9 -9
  144. package/src/ComboBoxItemTemplate.tsx +1 -1
  145. package/src/ComboBoxPopoverTemplate.tsx +13 -1
  146. package/src/InputTemplate.tsx +1 -1
  147. package/src/MultiComboBoxTemplate.tsx +1 -0
  148. package/src/SelectTemplate.tsx +0 -1
  149. package/src/TableHeaderRowTemplate.tsx +0 -1
  150. package/src/TableRowTemplate.tsx +1 -1
  151. package/src/themes/ComboBox.css +4 -0
  152. package/src/themes/DateTimePickerPopover.css +3 -1
  153. package/src/themes/MultiComboBox.css +4 -2
  154. package/src/themes/MultiInput.css +4 -2
  155. package/src/themes/TableCell.css +17 -0
  156. package/src/themes/TableCellBase.css +0 -11
  157. package/src/themes/TableHeaderRow.css +1 -1
  158. package/src/themes/TableRow.css +39 -21
  159. package/src/themes/TableRowBase.css +16 -24
  160. package/src/themes/Token.css +4 -0
  161. package/src/themes/Tokenizer.css +1 -1
  162. package/src/themes/base/sizes-parameters.css +9 -4
@@ -1 +1 @@
1
- {"version":3,"file":"InputTemplate.js","sourceRoot":"","sources":["../src/InputTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type Input from \"./Input.js\";\nimport type { JsxTemplateResult } from \"@ui5/webcomponents-base/dist/index.js\";\nimport Icon from \"./Icon.js\";\nimport decline from \"@ui5/webcomponents-icons/dist/decline.js\";\nimport InputPopoverTemplate from \"./InputPopoverTemplate.js\";\n\ntype TemplateHook = () => JsxTemplateResult;\n\nexport default function InputTemplate(this: Input, hooks?: { preContent: TemplateHook, postContent: TemplateHook, suggestionsList?: TemplateHook, mobileHeader?: TemplateHook }) {\n\tconst suggestionsList = hooks?.suggestionsList;\n\tconst mobileHeader = hooks?.mobileHeader;\n\tconst preContent = hooks?.preContent || defaultPreContent;\n\tconst postContent = hooks?.postContent || defaultPostContent;\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclass=\"ui5-input-root ui5-input-focusable-element\"\n\t\t\t\tpart=\"root\"\n\t\t\t\tonFocusIn={this._onfocusin}\n\t\t\t\tonFocusOut={this._onfocusout}\n\t\t\t>\n\t\t\t\t<div class=\"ui5-input-content\">\n\t\t\t\t\t{ preContent.call(this) }\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tid=\"inner\"\n\t\t\t\t\t\tpart=\"input\"\n\t\t\t\t\t\tclass=\"ui5-input-inner\"\n\t\t\t\t\t\tstyle={this.styles.innerInput}\n\t\t\t\t\t\ttype={this.inputNativeType}\n\t\t\t\t\t\tinner-input\n\t\t\t\t\t\tinner-input-with-icon={!!this.icon.length}\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\treadonly={this._readonly}\n\t\t\t\t\t\tvalue={this.value}\n\t\t\t\t\t\trequired={this.required}\n\t\t\t\t\t\tplaceholder={this._placeholder}\n\t\t\t\t\t\tmaxlength={this.maxlength}\n\t\t\t\t\t\trole={this.accInfo.role}\n\t\t\t\t\t\tenterkeyhint={this.hint}\n\t\t\t\t\t\taria-controls={this.accInfo.ariaControls}\n\t\t\t\t\t\taria-invalid={this.accInfo.ariaInvalid}\n\t\t\t\t\t\taria-haspopup={this.accInfo.ariaHasPopup}\n\t\t\t\t\t\taria-describedby={this.accInfo.ariaDescribedBy}\n\t\t\t\t\t\taria-roledescription={this.accInfo.ariaRoledescription}\n\t\t\t\t\t\taria-autocomplete={this.accInfo.ariaAutoComplete}\n\t\t\t\t\t\taria-expanded={this.accInfo.ariaExpanded}\n\t\t\t\t\t\taria-label={this.accInfo.ariaLabel}\n\t\t\t\t\t\taria-required={this.required}\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tdata-sap-focus-ref\n\t\t\t\t\t\tstep={this.nativeInputAttributes.step}\n\t\t\t\t\t\tmin={this.nativeInputAttributes.min}\n\t\t\t\t\t\tmax={this.nativeInputAttributes.max}\n\t\t\t\t\t\tonInput={this._handleNativeInput}\n\t\t\t\t\t\tonChange={this._handleChange}\n\t\t\t\t\t\tonSelect={this._handleSelect}\n\t\t\t\t\t\tonKeyDown={this._onkeydown}\n\t\t\t\t\t\tonKeyUp={this._onkeyup}\n\t\t\t\t\t\tonClick={this._click}\n\t\t\t\t\t\tonFocusIn={this.innerFocusIn}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{this._effectiveShowClearIcon &&\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t\tclass=\"ui5-input-clear-icon-wrapper inputIcon\"\n\t\t\t\t\t\t\tpart=\"clear-icon-wrapper\"\n\t\t\t\t\t\t\tonClick={this._clear}\n\t\t\t\t\t\t\tonMouseDown={this._iconMouseDown}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tpart=\"clear-icon\"\n\t\t\t\t\t\t\t\tclass=\"ui5-input-clear-icon\"\n\t\t\t\t\t\t\t\tname={decline}\n\t\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t\t\taccessibleName={this.clearIconAccessibleName}>\n\t\t\t\t\t\t\t</Icon>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.icon.length > 0 &&\n\t\t\t\t\t\t<div class=\"ui5-input-icon-root\"\n\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<slot name=\"icon\"></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\n\t\t\t\t\t<div class=\"ui5-input-value-state-icon\">\n\t\t\t\t\t\t{this._valueStateInputIcon}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{ postContent.call(this) }\n\n\t\t\t\t\t{this._effectiveShowSuggestions &&\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<span id=\"suggestionsText\" class=\"ui5-hidden-text\">{this.suggestionsText}</span>\n\t\t\t\t\t\t\t<span id=\"selectionText\" class=\"ui5-hidden-text\" aria-live=\"polite\" role=\"status\"></span>\n\t\t\t\t\t\t\t<span id=\"suggestionsCount\" class=\"ui5-hidden-text\" aria-live=\"polite\">{this.availableSuggestionsCount}</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.accInfo.ariaDescription &&\n\t\t\t\t\t\t<span id=\"descr\" class=\"ui5-hidden-text\">{this.accInfo.ariaDescription}</span>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.accInfo.accessibleDescription &&\n\t\t\t\t\t\t<span id=\"accessibleDescription\" class=\"ui5-hidden-text\">{this.accInfo.accessibleDescription}</span>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.linksInAriaValueStateHiddenText.length > 0 &&\n\t\t\t\t\t\t<span id=\"hiddenText-value-state-link-shortcut\" class=\"ui5-hidden-text\">{this.valueStateLinksShortcutsTextAcc}</span>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.hasValueState &&\n\t\t\t\t\t\t<span id=\"valueStateDesc\" class=\"ui5-hidden-text\">{this.ariaValueStateHiddenText}</span>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{ InputPopoverTemplate.call(this, { suggestionsList, mobileHeader }) }\n\t\t</>\n\t);\n}\n\nfunction defaultPreContent() {}\n\nfunction defaultPostContent() {}\n"]}
1
+ {"version":3,"file":"InputTemplate.js","sourceRoot":"","sources":["../src/InputTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type Input from \"./Input.js\";\nimport type { JsxTemplateResult } from \"@ui5/webcomponents-base/dist/index.js\";\nimport Icon from \"./Icon.js\";\nimport decline from \"@ui5/webcomponents-icons/dist/decline.js\";\nimport InputPopoverTemplate from \"./InputPopoverTemplate.js\";\n\ntype TemplateHook = () => JsxTemplateResult;\n\nexport default function InputTemplate(this: Input, hooks?: { preContent: TemplateHook, postContent: TemplateHook, suggestionsList?: TemplateHook, mobileHeader?: TemplateHook }) {\n\tconst suggestionsList = hooks?.suggestionsList;\n\tconst mobileHeader = hooks?.mobileHeader;\n\tconst preContent = hooks?.preContent || defaultPreContent;\n\tconst postContent = hooks?.postContent || defaultPostContent;\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclass=\"ui5-input-root ui5-input-focusable-element\"\n\t\t\t\tpart=\"root\"\n\t\t\t\tonFocusIn={this._onfocusin}\n\t\t\t\tonFocusOut={this._onfocusout}\n\t\t\t>\n\t\t\t\t<div class=\"ui5-input-content\">\n\t\t\t\t\t{ preContent.call(this) }\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tid=\"inner\"\n\t\t\t\t\t\tpart=\"input\"\n\t\t\t\t\t\tclass=\"ui5-input-inner\"\n\t\t\t\t\t\tstyle={this.styles.innerInput}\n\t\t\t\t\t\ttype={this.inputNativeType}\n\t\t\t\t\t\tinner-input\n\t\t\t\t\t\tinner-input-with-icon={this.iconsCount > 0}\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\treadonly={this._readonly}\n\t\t\t\t\t\tvalue={this.value}\n\t\t\t\t\t\trequired={this.required}\n\t\t\t\t\t\tplaceholder={this._placeholder}\n\t\t\t\t\t\tmaxlength={this.maxlength}\n\t\t\t\t\t\trole={this.accInfo.role}\n\t\t\t\t\t\tenterkeyhint={this.hint}\n\t\t\t\t\t\taria-controls={this.accInfo.ariaControls}\n\t\t\t\t\t\taria-invalid={this.accInfo.ariaInvalid}\n\t\t\t\t\t\taria-haspopup={this.accInfo.ariaHasPopup}\n\t\t\t\t\t\taria-describedby={this.accInfo.ariaDescribedBy}\n\t\t\t\t\t\taria-roledescription={this.accInfo.ariaRoledescription}\n\t\t\t\t\t\taria-autocomplete={this.accInfo.ariaAutoComplete}\n\t\t\t\t\t\taria-expanded={this.accInfo.ariaExpanded}\n\t\t\t\t\t\taria-label={this.accInfo.ariaLabel}\n\t\t\t\t\t\taria-required={this.required}\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tdata-sap-focus-ref\n\t\t\t\t\t\tstep={this.nativeInputAttributes.step}\n\t\t\t\t\t\tmin={this.nativeInputAttributes.min}\n\t\t\t\t\t\tmax={this.nativeInputAttributes.max}\n\t\t\t\t\t\tonInput={this._handleNativeInput}\n\t\t\t\t\t\tonChange={this._handleChange}\n\t\t\t\t\t\tonSelect={this._handleSelect}\n\t\t\t\t\t\tonKeyDown={this._onkeydown}\n\t\t\t\t\t\tonKeyUp={this._onkeyup}\n\t\t\t\t\t\tonClick={this._click}\n\t\t\t\t\t\tonFocusIn={this.innerFocusIn}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{this._effectiveShowClearIcon &&\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t\tclass=\"ui5-input-clear-icon-wrapper inputIcon\"\n\t\t\t\t\t\t\tpart=\"clear-icon-wrapper\"\n\t\t\t\t\t\t\tonClick={this._clear}\n\t\t\t\t\t\t\tonMouseDown={this._iconMouseDown}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tpart=\"clear-icon\"\n\t\t\t\t\t\t\t\tclass=\"ui5-input-clear-icon\"\n\t\t\t\t\t\t\t\tname={decline}\n\t\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t\t\taccessibleName={this.clearIconAccessibleName}>\n\t\t\t\t\t\t\t</Icon>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.icon.length > 0 &&\n\t\t\t\t\t\t<div class=\"ui5-input-icon-root\"\n\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<slot name=\"icon\"></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\n\t\t\t\t\t<div class=\"ui5-input-value-state-icon\">\n\t\t\t\t\t\t{this._valueStateInputIcon}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{ postContent.call(this) }\n\n\t\t\t\t\t{this._effectiveShowSuggestions &&\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<span id=\"suggestionsText\" class=\"ui5-hidden-text\">{this.suggestionsText}</span>\n\t\t\t\t\t\t\t<span id=\"selectionText\" class=\"ui5-hidden-text\" aria-live=\"polite\" role=\"status\"></span>\n\t\t\t\t\t\t\t<span id=\"suggestionsCount\" class=\"ui5-hidden-text\" aria-live=\"polite\">{this.availableSuggestionsCount}</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.accInfo.ariaDescription &&\n\t\t\t\t\t\t<span id=\"descr\" class=\"ui5-hidden-text\">{this.accInfo.ariaDescription}</span>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.accInfo.accessibleDescription &&\n\t\t\t\t\t\t<span id=\"accessibleDescription\" class=\"ui5-hidden-text\">{this.accInfo.accessibleDescription}</span>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.linksInAriaValueStateHiddenText.length > 0 &&\n\t\t\t\t\t\t<span id=\"hiddenText-value-state-link-shortcut\" class=\"ui5-hidden-text\">{this.valueStateLinksShortcutsTextAcc}</span>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.hasValueState &&\n\t\t\t\t\t\t<span id=\"valueStateDesc\" class=\"ui5-hidden-text\">{this.ariaValueStateHiddenText}</span>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{ InputPopoverTemplate.call(this, { suggestionsList, mobileHeader }) }\n\t\t</>\n\t);\n}\n\nfunction defaultPreContent() {}\n\nfunction defaultPostContent() {}\n"]}
@@ -67,6 +67,10 @@ declare class ListItemBase extends UI5Element implements ITabbable {
67
67
  _onkeydown(e: KeyboardEvent): void;
68
68
  _onkeyup(e: KeyboardEvent): void;
69
69
  _onclick(e: MouseEvent): void;
70
+ _isDisabledInteractiveContentClicked(e: MouseEvent): boolean;
71
+ _isNativeInteractiveElement(target: HTMLElement): boolean;
72
+ _isCustomInteractiveElement(target: HTMLElement): boolean;
73
+ _isElementDisabled(target: HTMLElement): boolean;
70
74
  /**
71
75
  * Override from subcomponent, if needed
72
76
  */
@@ -107,11 +107,42 @@ let ListItemBase = class ListItemBase extends UI5Element {
107
107
  }
108
108
  }
109
109
  _onclick(e) {
110
- if (this.getFocusDomRef().matches(":has(:focus-within)")) {
110
+ if (this.getFocusDomRef().matches(":has(:focus-within)") || this._isDisabledInteractiveContentClicked(e)) {
111
111
  return;
112
112
  }
113
113
  this.fireItemPress(e);
114
114
  }
115
+ _isDisabledInteractiveContentClicked(e) {
116
+ const path = e.composedPath();
117
+ const focusDomRef = this.getFocusDomRef();
118
+ return path.some(target => {
119
+ if (!(target instanceof HTMLElement)) {
120
+ return false;
121
+ }
122
+ if (target === this || target === focusDomRef) {
123
+ return false;
124
+ }
125
+ if (!this._isNativeInteractiveElement(target) && !this._isCustomInteractiveElement(target)) {
126
+ return false;
127
+ }
128
+ return this._isElementDisabled(target);
129
+ });
130
+ }
131
+ _isNativeInteractiveElement(target) {
132
+ return target.matches("button, input, select, textarea");
133
+ }
134
+ _isCustomInteractiveElement(target) {
135
+ const targetWithDisabled = target;
136
+ return target.tagName.includes("-")
137
+ && ("disabled" in targetWithDisabled || target.hasAttribute("aria-disabled"));
138
+ }
139
+ _isElementDisabled(target) {
140
+ const targetWithDisabled = target;
141
+ if (typeof targetWithDisabled.disabled === "boolean") {
142
+ return targetWithDisabled.disabled;
143
+ }
144
+ return target.getAttribute("aria-disabled") === "true";
145
+ }
115
146
  /**
116
147
  * Override from subcomponent, if needed
117
148
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ListItemBase.js","sourceRoot":"","sources":["../src/ListItemBase.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { ClassMap } from \"@ui5/webcomponents-base/dist/types.js\";\nimport { getTabbableElements } from \"@ui5/webcomponents-base/dist/util/TabbableElements.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport {\n\tisEnter,\n\tisSpace,\n\tisTabNext,\n\tisTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\n\n// Styles\nimport styles from \"./generated/themes/ListItemBase.css.js\";\nimport draggableElementStyles from \"./generated/themes/DraggableElement.css.js\";\n\ntype ListItemBasePressEventDetail = {\n\titem: ListItemBase,\n\tselected?: boolean,\n\tkey?: string,\n}\n\n/**\n * @class\n * A class to serve as a foundation\n * for the `ListItem` and `ListItemGroupHeader` classes.\n * @constructor\n * @abstract\n * @extends UI5Element\n * @public\n */\n@customElement({\n\trenderer: jsxRenderer,\n\tstyles: [styles, draggableElementStyles],\n})\n@event(\"request-tabindex-change\", {\n\tbubbles: true,\n})\n@event(\"_press\", {\n\tbubbles: true,\n})\n@event(\"_focused\", {\n\tbubbles: true,\n})\n@event(\"forward-after\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n@event(\"forward-before\", {\n\tbubbles: true,\n})\nclass ListItemBase extends UI5Element implements ITabbable {\n\teventDetails!: {\n\t\t\"request-tabindex-change\": FocusEvent,\n\t\t\"_press\": ListItemBasePressEventDetail,\n\t\t\"_focused\": FocusEvent,\n\t\t\"forward-after\": void,\n\t\t\"forward-before\": void,\n\t}\n\t/**\n\t * Defines the selected state of the component.\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tselected = false;\n\n\t/**\n\t * Defines whether the item is movable.\n\t * @default false\n\t * @private\n\t * @since 2.0.0\n\t */\n\t@property({ type: Boolean })\n\tmovable = false;\n\n\t/**\n\t* Defines if the list item should display its bottom border.\n\t* @private\n\t*/\n\t@property({ type: Boolean })\n\thasBorder = false;\n\n\t@property()\n\tforcedTabIndex?: string;\n\n\t/**\n\t* Defines whether `ui5-li` is in disabled state.\n\t*\n\t* **Note:** A disabled `ui5-li` is noninteractive.\n\t* @default false\n\t* @protected\n\t* @since 1.0.0-rc.12\n\t*/\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Indicates if the element is on focus\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t/**\n\t * Indicates if the list item is actionable, e.g has hover and pressed effects.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tactionable = false;\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\t}\n\n\tonBeforeRendering(): void {\n\t\tthis.actionable = true;\n\t}\n\n\t_onfocusin(e: FocusEvent) {\n\t\tthis.fireDecoratorEvent(\"request-tabindex-change\", e);\n\t\tif (e.target !== this.getFocusDomRef()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"_focused\", e);\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (isTabNext(e)) {\n\t\t\treturn this._handleTabNext(e);\n\t\t}\n\n\t\tif (isTabPrevious(e)) {\n\t\t\treturn this._handleTabPrevious(e);\n\t\t}\n\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (this._isEnter(e)) {\n\t\t\tthis.fireItemPress(e);\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\")) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._isSpace(e)) {\n\t\t\tthis.fireItemPress(e);\n\t\t}\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\")) {\n\t\t\treturn;\n\t\t}\n\t\tthis.fireItemPress(e);\n\t}\n\n\t/**\n\t * Override from subcomponent, if needed\n\t */\n\t_isSpace(e: KeyboardEvent) {\n\t\treturn isSpace(e);\n\t}\n\n\t/**\n\t * Override from subcomponent, if needed\n\t */\n\t_isEnter(e: KeyboardEvent) {\n\t\treturn isEnter(e);\n\t}\n\n\tfireItemPress(e: Event) {\n\t\tif (this.disabled || !this._pressable) {\n\t\t\treturn;\n\t\t}\n\t\tif (isEnter(e as KeyboardEvent)) {\n\t\t\te.preventDefault();\n\t\t}\n\t\tthis.fireDecoratorEvent(\"_press\", { item: this, selected: this.selected, key: (e as KeyboardEvent).key });\n\t}\n\n\t_handleTabNext(e: KeyboardEvent) {\n\t\tif (this.shouldForwardTabAfter()) {\n\t\t\tif (!this.fireDecoratorEvent(\"forward-after\")) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleTabPrevious(e: KeyboardEvent) {\n\t\tconst target = e.target as HTMLElement;\n\n\t\tif (this.shouldForwardTabBefore(target)) {\n\t\t\tthis.fireDecoratorEvent(\"forward-before\");\n\t\t}\n\t}\n\n\t/**\n\t * Determines if th current list item either has no tabbable content or\n\t * [Tab] is performed onto the last tabbale content item.\n\t */\n\tshouldForwardTabAfter() {\n\t\tconst aContent = getTabbableElements(this.getFocusDomRef()!);\n\n\t\treturn aContent.length === 0 || (aContent[aContent.length - 1] === getActiveElement());\n\t}\n\n\t/**\n\t * Determines if the current list item is target of [SHIFT+TAB].\n\t */\n\tshouldForwardTabBefore(target: HTMLElement) {\n\t\treturn this.getFocusDomRef() === target;\n\t}\n\n\tget classes(): ClassMap {\n\t\treturn {\n\t\t\tmain: {\n\t\t\t\t\"ui5-li-root\": true,\n\t\t\t\t\"ui5-li--focusable\": this._focusable,\n\t\t\t},\n\t\t};\n\t}\n\n\tget _ariaDisabled() {\n\t\treturn this.disabled ? true : undefined;\n\t}\n\n\tget _focusable() {\n\t\treturn !this.disabled;\n\t}\n\n\tget _pressable() {\n\t\treturn true;\n\t}\n\n\tget hasConfigurableMode() {\n\t\treturn false;\n\t}\n\n\tget _effectiveTabIndex() {\n\t\tif (!this._focusable) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (this.selected) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn this.forcedTabIndex ? parseInt(this.forcedTabIndex) : undefined;\n\t}\n\n\tget isListItemBase() {\n\t\treturn true;\n\t}\n}\n\nexport default ListItemBase;\n\nexport type {\n\tListItemBasePressEventDetail,\n};\n"]}
1
+ {"version":3,"file":"ListItemBase.js","sourceRoot":"","sources":["../src/ListItemBase.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { ClassMap } from \"@ui5/webcomponents-base/dist/types.js\";\nimport { getTabbableElements } from \"@ui5/webcomponents-base/dist/util/TabbableElements.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport {\n\tisEnter,\n\tisSpace,\n\tisTabNext,\n\tisTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\n\n// Styles\nimport styles from \"./generated/themes/ListItemBase.css.js\";\nimport draggableElementStyles from \"./generated/themes/DraggableElement.css.js\";\n\ntype ListItemBasePressEventDetail = {\n\titem: ListItemBase,\n\tselected?: boolean,\n\tkey?: string,\n}\n\n/**\n * @class\n * A class to serve as a foundation\n * for the `ListItem` and `ListItemGroupHeader` classes.\n * @constructor\n * @abstract\n * @extends UI5Element\n * @public\n */\n@customElement({\n\trenderer: jsxRenderer,\n\tstyles: [styles, draggableElementStyles],\n})\n@event(\"request-tabindex-change\", {\n\tbubbles: true,\n})\n@event(\"_press\", {\n\tbubbles: true,\n})\n@event(\"_focused\", {\n\tbubbles: true,\n})\n@event(\"forward-after\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n@event(\"forward-before\", {\n\tbubbles: true,\n})\nclass ListItemBase extends UI5Element implements ITabbable {\n\teventDetails!: {\n\t\t\"request-tabindex-change\": FocusEvent,\n\t\t\"_press\": ListItemBasePressEventDetail,\n\t\t\"_focused\": FocusEvent,\n\t\t\"forward-after\": void,\n\t\t\"forward-before\": void,\n\t}\n\t/**\n\t * Defines the selected state of the component.\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tselected = false;\n\n\t/**\n\t * Defines whether the item is movable.\n\t * @default false\n\t * @private\n\t * @since 2.0.0\n\t */\n\t@property({ type: Boolean })\n\tmovable = false;\n\n\t/**\n\t* Defines if the list item should display its bottom border.\n\t* @private\n\t*/\n\t@property({ type: Boolean })\n\thasBorder = false;\n\n\t@property()\n\tforcedTabIndex?: string;\n\n\t/**\n\t* Defines whether `ui5-li` is in disabled state.\n\t*\n\t* **Note:** A disabled `ui5-li` is noninteractive.\n\t* @default false\n\t* @protected\n\t* @since 1.0.0-rc.12\n\t*/\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Indicates if the element is on focus\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t/**\n\t * Indicates if the list item is actionable, e.g has hover and pressed effects.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tactionable = false;\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\t}\n\n\tonBeforeRendering(): void {\n\t\tthis.actionable = true;\n\t}\n\n\t_onfocusin(e: FocusEvent) {\n\t\tthis.fireDecoratorEvent(\"request-tabindex-change\", e);\n\t\tif (e.target !== this.getFocusDomRef()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"_focused\", e);\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (isTabNext(e)) {\n\t\t\treturn this._handleTabNext(e);\n\t\t}\n\n\t\tif (isTabPrevious(e)) {\n\t\t\treturn this._handleTabPrevious(e);\n\t\t}\n\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (this._isEnter(e)) {\n\t\t\tthis.fireItemPress(e);\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\")) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._isSpace(e)) {\n\t\t\tthis.fireItemPress(e);\n\t\t}\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\") || this._isDisabledInteractiveContentClicked(e)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.fireItemPress(e);\n\t}\n\n\t_isDisabledInteractiveContentClicked(e: MouseEvent): boolean {\n\t\tconst path = e.composedPath();\n\t\tconst focusDomRef = this.getFocusDomRef();\n\n\t\treturn path.some(target => {\n\t\t\tif (!(target instanceof HTMLElement)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (target === this || target === focusDomRef) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!this._isNativeInteractiveElement(target) && !this._isCustomInteractiveElement(target)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this._isElementDisabled(target);\n\t\t});\n\t}\n\n\t_isNativeInteractiveElement(target: HTMLElement): boolean {\n\t\treturn target.matches(\"button, input, select, textarea\");\n\t}\n\n\t_isCustomInteractiveElement(target: HTMLElement): boolean {\n\t\tconst targetWithDisabled = target as HTMLElement & { disabled?: boolean };\n\n\t\treturn target.tagName.includes(\"-\")\n\t\t\t&& (\"disabled\" in targetWithDisabled || target.hasAttribute(\"aria-disabled\"));\n\t}\n\n\t_isElementDisabled(target: HTMLElement): boolean {\n\t\tconst targetWithDisabled = target as HTMLElement & { disabled?: boolean };\n\t\tif (typeof targetWithDisabled.disabled === \"boolean\") {\n\t\t\treturn targetWithDisabled.disabled;\n\t\t}\n\n\t\treturn target.getAttribute(\"aria-disabled\") === \"true\";\n\t}\n\n\t/**\n\t * Override from subcomponent, if needed\n\t */\n\t_isSpace(e: KeyboardEvent) {\n\t\treturn isSpace(e);\n\t}\n\n\t/**\n\t * Override from subcomponent, if needed\n\t */\n\t_isEnter(e: KeyboardEvent) {\n\t\treturn isEnter(e);\n\t}\n\n\tfireItemPress(e: Event) {\n\t\tif (this.disabled || !this._pressable) {\n\t\t\treturn;\n\t\t}\n\t\tif (isEnter(e as KeyboardEvent)) {\n\t\t\te.preventDefault();\n\t\t}\n\t\tthis.fireDecoratorEvent(\"_press\", { item: this, selected: this.selected, key: (e as KeyboardEvent).key });\n\t}\n\n\t_handleTabNext(e: KeyboardEvent) {\n\t\tif (this.shouldForwardTabAfter()) {\n\t\t\tif (!this.fireDecoratorEvent(\"forward-after\")) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleTabPrevious(e: KeyboardEvent) {\n\t\tconst target = e.target as HTMLElement;\n\n\t\tif (this.shouldForwardTabBefore(target)) {\n\t\t\tthis.fireDecoratorEvent(\"forward-before\");\n\t\t}\n\t}\n\n\t/**\n\t * Determines if th current list item either has no tabbable content or\n\t * [Tab] is performed onto the last tabbale content item.\n\t */\n\tshouldForwardTabAfter() {\n\t\tconst aContent = getTabbableElements(this.getFocusDomRef()!);\n\n\t\treturn aContent.length === 0 || (aContent[aContent.length - 1] === getActiveElement());\n\t}\n\n\t/**\n\t * Determines if the current list item is target of [SHIFT+TAB].\n\t */\n\tshouldForwardTabBefore(target: HTMLElement) {\n\t\treturn this.getFocusDomRef() === target;\n\t}\n\n\tget classes(): ClassMap {\n\t\treturn {\n\t\t\tmain: {\n\t\t\t\t\"ui5-li-root\": true,\n\t\t\t\t\"ui5-li--focusable\": this._focusable,\n\t\t\t},\n\t\t};\n\t}\n\n\tget _ariaDisabled() {\n\t\treturn this.disabled ? true : undefined;\n\t}\n\n\tget _focusable() {\n\t\treturn !this.disabled;\n\t}\n\n\tget _pressable() {\n\t\treturn true;\n\t}\n\n\tget hasConfigurableMode() {\n\t\treturn false;\n\t}\n\n\tget _effectiveTabIndex() {\n\t\tif (!this._focusable) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (this.selected) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn this.forcedTabIndex ? parseInt(this.forcedTabIndex) : undefined;\n\t}\n\n\tget isListItemBase() {\n\t\treturn true;\n\t}\n}\n\nexport default ListItemBase;\n\nexport type {\n\tListItemBasePressEventDetail,\n};\n"]}
@@ -14,7 +14,7 @@ export default function MultiComboBoxTemplate() {
14
14
  });
15
15
  }
16
16
  return item.selected && _jsx(Token, { readonly: this.readonly, class: "ui5-multi-combobox-token", "data-ui5-id": item._id, part: `token-${index}`, text: item.text });
17
- }) }), _jsx("input", { id: "ui5-multi-combobox-input", value: this.value, "inner-input": true, placeholder: this._getPlaceholder, disabled: this.disabled, readonly: this.readonly, "value-state": this.valueState, onInput: this._inputLiveChange, onChange: this._inputChange, onKeyDown: this._onkeydown, onClick: this._click, onFocusIn: this.inputFocusIn, onFocusOut: this.inputFocusOut, onPaste: this._handlePaste, role: "combobox", "aria-haspopup": "dialog", "aria-expanded": this.open, "aria-autocomplete": "both", "aria-describedby": this.ariaDescribedByText, "aria-required": this.required, "aria-label": this.ariaLabelText, "aria-controls": this.responsivePopoverId, autocomplete: "off", "data-sap-focus-ref": true }), this._effectiveShowClearIcon &&
17
+ }) }), _jsx("input", { id: "ui5-multi-combobox-input", value: this.value, "inner-input": true, "inner-input-with-icon": this._effectiveShowClearIcon || !!this.icon || !this.readonly, placeholder: this._getPlaceholder, disabled: this.disabled, readonly: this.readonly, "value-state": this.valueState, onInput: this._inputLiveChange, onChange: this._inputChange, onKeyDown: this._onkeydown, onClick: this._click, onFocusIn: this.inputFocusIn, onFocusOut: this.inputFocusOut, onPaste: this._handlePaste, role: "combobox", "aria-haspopup": "dialog", "aria-expanded": this.open, "aria-autocomplete": "both", "aria-describedby": this.ariaDescribedByText, "aria-required": this.required, "aria-label": this.ariaLabelText, "aria-controls": this.responsivePopoverId, autocomplete: "off", "data-sap-focus-ref": true }), this._effectiveShowClearIcon &&
18
18
  _jsx("div", { onClick: this._clear, class: "ui5-input-clear-icon-wrapper inputIcon", tabIndex: -1, onMouseDown: this._iconMouseDown, children: _jsx(Icon, { tabIndex: -1, class: "ui5-input-clear-icon", name: decline, "accessible-name": this.clearIconAccessibleName }) }), this.icon &&
19
19
  _jsx("slot", { name: "icon" }), !this.readonly &&
20
20
  _jsx(Icon, { name: "slim-arrow-down", class: {
@@ -1 +1 @@
1
- {"version":3,"file":"MultiComboBoxTemplate.js","sourceRoot":"","sources":["../src/MultiComboBoxTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import decline from \"@ui5/webcomponents-icons/dist/decline.js\";\nimport MultiComboboxPopoverTemplate from \"./MultiComboBoxPopoverTemplate.js\";\nimport type MultiComboBox from \"./MultiComboBox.js\";\nimport Tokenizer from \"./Tokenizer.js\";\nimport Token from \"./Token.js\";\nimport Icon from \"./Icon.js\";\n\nexport default function MultiComboBoxTemplate(this: MultiComboBox) {\n\treturn (<>\n\t\t<div class=\"ui5-multi-combobox-root ui5-input-focusable-element\">\n\t\t\t<span id=\"ui5-multi-combobox-hiddenText-nMore\" class=\"ui5-hidden-text\">{this._tokensCountText}</span>\n\n\t\t\t{this.hasValueState &&\n\t\t\t\t<span id=\"ui5-multi-combobox-valueStateDesc\" class=\"ui5-hidden-text\">{this.ariaValueStateHiddenText}</span>\n\t\t\t}\n\n\t\t\t{this.linksInAriaValueStateHiddenText.length > 0 &&\n\t\t\t\t<span id=\"hiddenText-value-state-link-shortcut\" class=\"ui5-hidden-text\">{this.getValueStateLinksShortcutsTextAcc}</span>\n\t\t\t}\n\n\t\t\t<Tokenizer\n\t\t\t\tslot=\"_beginContent\"\n\t\t\t\tpreventPopoverOpen={true}\n\t\t\t\thidePopoverArrow={true}\n\t\t\t\treadonly={this.readonly}\n\t\t\t\tclass=\"ui5-multi-combobox-tokenizer\"\n\t\t\t\tdisabled={this.disabled}\n\t\t\t\tonShowMoreItemsPress={this._showFilteredItems}\n\t\t\t\topener={this.morePopoverOpener}\n\t\t\t\tpopoverMinWidth={this._inputWidth}\n\t\t\t\tonTokenDelete={this._tokenDelete}\n\t\t\t\tonBeforeMorePopoverOpen={this.handleBeforeTokenizerPopoverOpen}\n\t\t\t\tonFocusOut={this._tokenizerFocusOut}\n\t\t\t\tonFocusIn={this._tokenizerFocusIn}\n\t\t\t\tonClick={this._click}\n\t\t\t\tonPaste={this._handlePaste}\n\t\t\t\tonKeyDown={this._onTokenizerKeydown}\n\t\t\t\texpanded={this._tokenizerExpanded}\n\t\t\t\topen={this.tokenizerOpen}\n\t\t\t>\n\t\t\t\t{this.items.map((item, index) => {\n\t\t\t\t\tif (item.isGroupItem) {\n\t\t\t\t\t\treturn item.items?.map((groupItem, groupItemIndex) => {\n\t\t\t\t\t\t\treturn groupItem.selected && <Token\n\t\t\t\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\t\t\t\tclass=\"ui5-multi-combobox-token\"\n\t\t\t\t\t\t\t\tdata-ui5-id={groupItem._id}\n\t\t\t\t\t\t\t\tpart={`token-${groupItemIndex}`}\n\t\t\t\t\t\t\t\ttext={groupItem.text}\n\t\t\t\t\t\t\t/>;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn item.selected && <Token\n\t\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\t\tclass=\"ui5-multi-combobox-token\"\n\t\t\t\t\t\tdata-ui5-id={item._id}\n\t\t\t\t\t\tpart={`token-${index}`}\n\t\t\t\t\t\ttext={item.text}\n\t\t\t\t\t/>;\n\t\t\t\t})}\n\t\t\t</Tokenizer>\n\n\t\t\t<input\n\t\t\t\tid=\"ui5-multi-combobox-input\"\n\t\t\t\tvalue={this.value}\n\t\t\t\tinner-input\n\t\t\t\tplaceholder={this._getPlaceholder}\n\t\t\t\tdisabled={this.disabled}\n\t\t\t\treadonly={this.readonly}\n\t\t\t\tvalue-state={this.valueState}\n\t\t\t\tonInput={this._inputLiveChange}\n\t\t\t\tonChange={this._inputChange}\n\t\t\t\tonKeyDown={this._onkeydown}\n\t\t\t\tonClick={this._click}\n\t\t\t\tonFocusIn={this.inputFocusIn}\n\t\t\t\tonFocusOut={this.inputFocusOut}\n\t\t\t\tonPaste={this._handlePaste}\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\taria-expanded={this.open}\n\t\t\t\taria-autocomplete=\"both\"\n\t\t\t\taria-describedby={this.ariaDescribedByText}\n\t\t\t\taria-required={this.required}\n\t\t\t\taria-label={this.ariaLabelText}\n\t\t\t\taria-controls={this.responsivePopoverId}\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tdata-sap-focus-ref\n\t\t\t/>\n\n\t\t\t{this._effectiveShowClearIcon &&\n\t\t\t\t<div\n\t\t\t\t\tonClick={this._clear}\n\t\t\t\t\tclass=\"ui5-input-clear-icon-wrapper inputIcon\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tonMouseDown={this._iconMouseDown}\n\t\t\t\t>\n\t\t\t\t\t<Icon tabIndex={-1} class=\"ui5-input-clear-icon\" name={decline} accessible-name={this.clearIconAccessibleName}></Icon>\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\t{this.icon &&\n\t\t\t\t<slot name=\"icon\"></slot>\n\t\t\t}\n\n\t\t\t{!this.readonly &&\n\t\t\t\t<Icon name=\"slim-arrow-down\"\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"inputIcon\": true,\n\t\t\t\t\t\t\"inputIcon--pressed\": this._iconPressed,\n\t\t\t\t\t}}\n\t\t\t\t\tslot=\"icon\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tonClick={this.togglePopoverByDropdownIcon}\n\t\t\t\t\tonMouseDown={this._onIconMousedown}\n\t\t\t\t\tonFocusIn={this._forwardFocusToInner}\n\t\t\t\t\t// pressed={this.open}\n\t\t\t\t\taccessibleName={this._iconAccessibleNameText}\n\t\t\t\t></Icon>\n\t\t\t}\n\t\t</div>\n\n\t\t{MultiComboboxPopoverTemplate.call(this)}\n\t</>);\n}\n"]}
1
+ {"version":3,"file":"MultiComboBoxTemplate.js","sourceRoot":"","sources":["../src/MultiComboBoxTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import decline from \"@ui5/webcomponents-icons/dist/decline.js\";\nimport MultiComboboxPopoverTemplate from \"./MultiComboBoxPopoverTemplate.js\";\nimport type MultiComboBox from \"./MultiComboBox.js\";\nimport Tokenizer from \"./Tokenizer.js\";\nimport Token from \"./Token.js\";\nimport Icon from \"./Icon.js\";\n\nexport default function MultiComboBoxTemplate(this: MultiComboBox) {\n\treturn (<>\n\t\t<div class=\"ui5-multi-combobox-root ui5-input-focusable-element\">\n\t\t\t<span id=\"ui5-multi-combobox-hiddenText-nMore\" class=\"ui5-hidden-text\">{this._tokensCountText}</span>\n\n\t\t\t{this.hasValueState &&\n\t\t\t\t<span id=\"ui5-multi-combobox-valueStateDesc\" class=\"ui5-hidden-text\">{this.ariaValueStateHiddenText}</span>\n\t\t\t}\n\n\t\t\t{this.linksInAriaValueStateHiddenText.length > 0 &&\n\t\t\t\t<span id=\"hiddenText-value-state-link-shortcut\" class=\"ui5-hidden-text\">{this.getValueStateLinksShortcutsTextAcc}</span>\n\t\t\t}\n\n\t\t\t<Tokenizer\n\t\t\t\tslot=\"_beginContent\"\n\t\t\t\tpreventPopoverOpen={true}\n\t\t\t\thidePopoverArrow={true}\n\t\t\t\treadonly={this.readonly}\n\t\t\t\tclass=\"ui5-multi-combobox-tokenizer\"\n\t\t\t\tdisabled={this.disabled}\n\t\t\t\tonShowMoreItemsPress={this._showFilteredItems}\n\t\t\t\topener={this.morePopoverOpener}\n\t\t\t\tpopoverMinWidth={this._inputWidth}\n\t\t\t\tonTokenDelete={this._tokenDelete}\n\t\t\t\tonBeforeMorePopoverOpen={this.handleBeforeTokenizerPopoverOpen}\n\t\t\t\tonFocusOut={this._tokenizerFocusOut}\n\t\t\t\tonFocusIn={this._tokenizerFocusIn}\n\t\t\t\tonClick={this._click}\n\t\t\t\tonPaste={this._handlePaste}\n\t\t\t\tonKeyDown={this._onTokenizerKeydown}\n\t\t\t\texpanded={this._tokenizerExpanded}\n\t\t\t\topen={this.tokenizerOpen}\n\t\t\t>\n\t\t\t\t{this.items.map((item, index) => {\n\t\t\t\t\tif (item.isGroupItem) {\n\t\t\t\t\t\treturn item.items?.map((groupItem, groupItemIndex) => {\n\t\t\t\t\t\t\treturn groupItem.selected && <Token\n\t\t\t\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\t\t\t\tclass=\"ui5-multi-combobox-token\"\n\t\t\t\t\t\t\t\tdata-ui5-id={groupItem._id}\n\t\t\t\t\t\t\t\tpart={`token-${groupItemIndex}`}\n\t\t\t\t\t\t\t\ttext={groupItem.text}\n\t\t\t\t\t\t\t/>;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn item.selected && <Token\n\t\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\t\tclass=\"ui5-multi-combobox-token\"\n\t\t\t\t\t\tdata-ui5-id={item._id}\n\t\t\t\t\t\tpart={`token-${index}`}\n\t\t\t\t\t\ttext={item.text}\n\t\t\t\t\t/>;\n\t\t\t\t})}\n\t\t\t</Tokenizer>\n\n\t\t\t<input\n\t\t\t\tid=\"ui5-multi-combobox-input\"\n\t\t\t\tvalue={this.value}\n\t\t\t\tinner-input\n\t\t\t\tinner-input-with-icon={this._effectiveShowClearIcon || !!this.icon || !this.readonly}\n\t\t\t\tplaceholder={this._getPlaceholder}\n\t\t\t\tdisabled={this.disabled}\n\t\t\t\treadonly={this.readonly}\n\t\t\t\tvalue-state={this.valueState}\n\t\t\t\tonInput={this._inputLiveChange}\n\t\t\t\tonChange={this._inputChange}\n\t\t\t\tonKeyDown={this._onkeydown}\n\t\t\t\tonClick={this._click}\n\t\t\t\tonFocusIn={this.inputFocusIn}\n\t\t\t\tonFocusOut={this.inputFocusOut}\n\t\t\t\tonPaste={this._handlePaste}\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\taria-expanded={this.open}\n\t\t\t\taria-autocomplete=\"both\"\n\t\t\t\taria-describedby={this.ariaDescribedByText}\n\t\t\t\taria-required={this.required}\n\t\t\t\taria-label={this.ariaLabelText}\n\t\t\t\taria-controls={this.responsivePopoverId}\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tdata-sap-focus-ref\n\t\t\t/>\n\n\t\t\t{this._effectiveShowClearIcon &&\n\t\t\t\t<div\n\t\t\t\t\tonClick={this._clear}\n\t\t\t\t\tclass=\"ui5-input-clear-icon-wrapper inputIcon\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tonMouseDown={this._iconMouseDown}\n\t\t\t\t>\n\t\t\t\t\t<Icon tabIndex={-1} class=\"ui5-input-clear-icon\" name={decline} accessible-name={this.clearIconAccessibleName}></Icon>\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\t{this.icon &&\n\t\t\t\t<slot name=\"icon\"></slot>\n\t\t\t}\n\n\t\t\t{!this.readonly &&\n\t\t\t\t<Icon name=\"slim-arrow-down\"\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"inputIcon\": true,\n\t\t\t\t\t\t\"inputIcon--pressed\": this._iconPressed,\n\t\t\t\t\t}}\n\t\t\t\t\tslot=\"icon\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tonClick={this.togglePopoverByDropdownIcon}\n\t\t\t\t\tonMouseDown={this._onIconMousedown}\n\t\t\t\t\tonFocusIn={this._forwardFocusToInner}\n\t\t\t\t\t// pressed={this.open}\n\t\t\t\t\taccessibleName={this._iconAccessibleNameText}\n\t\t\t\t></Icon>\n\t\t\t}\n\t\t</div>\n\n\t\t{MultiComboboxPopoverTemplate.call(this)}\n\t</>);\n}\n"]}
@@ -224,6 +224,8 @@ let MultiInput = MultiInput_1 = class MultiInput extends Input {
224
224
  this.tokenizerAvailable = this.tokens && this.tokens.length > 0;
225
225
  if (this.tokenizer) {
226
226
  this.tokenizer.readonly = this.readonly;
227
+ // Set the CSS variable on the tokenizer element so it's available in the shadow DOM
228
+ this.tokenizer.style.setProperty("--_ui5-input-icons-count", `${this.iconsCount}`);
227
229
  }
228
230
  }
229
231
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MultiInput.js","sourceRoot":"","sources":["../src/MultiInput.ts"],"names":[],"mappings":";;;;;;;AACA,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,wDAAwD,CAAC;AAC1E,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,EACN,MAAM,EACN,WAAW,EACX,MAAM,EACN,OAAO,EACP,WAAW,EACX,MAAM,EACN,KAAK,EACL,MAAM,GAEN,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAGjE,OAAO,EACN,+BAA+B,EAC/B,2BAA2B,EAC3B,qBAAqB,EACrB,6BAA6B,EAC7B,8BAA8B,GAC9B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,MAAM,MAAM,sCAAsC,CAAC;AAG1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAmBpD;;;;;;;;;;;;;;;;;;;GAmBG;AA0BH,IAAM,UAAU,kBAAhB,MAAM,UAAW,SAAQ,KAAK;IA4D7B,IAAI,mBAAmB;QACtB,OAAO,YAAU,CAAC,UAAU,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,YAAY;QACf,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAEnC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACzE,CAAC;IAED,IAAI,kBAAkB;QACrB,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAEnC,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAEhC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC;YAED,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED;QACC,KAAK,EAAE,CAAC;QApFT;;;;;WAKG;QAEH,sBAAiB,GAAG,KAAK,CAAC;QAE1B;;;;WAIG;QAEH,uBAAkB,GAAG,KAAK,CAAC;QAc3B;;;;WAIG;QAEH,6BAAwB,GAAG,KAAK,CAAC;QAEjC;;;;WAIG;QAEH,2BAAsB,GAAG,KAAK,CAAC;QA2C9B,gCAAgC;QAChC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,cAAc;QACb,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW,CAAC,CAA+C;QAC1D,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC;QAEtG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACR,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAEnE,IAAI,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,CAAC;QACF,CAAC;IACF,CAAC;IAED,kBAAkB,CAAC,CAAa;QAC/B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,kBAAkB,CAAC,CAAa;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,aAA4B,CAAC,EAAE,CAAC;YAClH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;IACF,CAAC;IAED,gBAAgB;QACf,UAAU,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACpC,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY;QACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,mBAAmB;QAClB,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAC5C,CAAC;IAED,UAAU,CAAC,CAAgB;QAC1B,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,CAAC,CAAC,MAA0B,CAAC;QAC5C,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,cAAc,KAAK,CAAC,CAAC;QAEnE,IAAI,iBAAiB,EAAE,CAAC;YACvB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC,yDAAyD;YAC3F,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAElC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;IACF,CAAC;IAED,mBAAmB,CAAC,CAAgB;QACnC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;YACtD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAE9C,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;gBACxG,UAAU,CAAC,GAAG,EAAE;oBACf,IAAI,CAAC,KAAK,EAAE,CAAC;gBACd,CAAC,EAAE,CAAC,CAAC,CAAC;YACP,CAAC;QACF,CAAC;IACF,CAAC;IAED,WAAW,CAAC,CAAgB;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAG,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC,cAAc,CAAC;QAChF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE7D,+FAA+F;QAC/F,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;YACrF,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;IACF,CAAC;IAED,gBAAgB,CAAC,CAAgB;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE7D,0DAA0D;QAC1D,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;IACF,CAAC;IAED,gBAAgB,CAAC,CAAgB;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAE9C,IAAI,UAAU,EAAE,CAAC;YAChB,CAAC,CAAC,cAAc,EAAE,CAAC;YAEnB,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC;IACF,CAAC;IAED,WAAW,CAAC,CAAa;QACxB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,aAAa,GAAG,CAAC,CAAC,aAA4B,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,UAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAEjE,IAAI,CAAC,SAAS,IAAI,CAAC,eAAe,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7E,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACtB,CAAC;IACF,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,CAAa;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC9B,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACF,CAAC;IAED,iBAAiB;QAChB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,0BAA0B,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzC,CAAC;IACF,CAAC;IAED;;OAEG;IACH,sBAAsB;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,gEAAgE;YAChE,0DAA0D;YAC1D,IAAI,OAAO,EAAE,EAAE,CAAC;gBACf,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACtC,CAAC;YACD,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YAEpC,0DAA0D;YAC1D,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,gBAAgB;QACf,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAEzB,IAAI,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU;QACb,OAAO,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,UAAW,CAAC,aAAa,CAAY,iBAAiB,CAAE,CAAC;IACtE,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IAClD,CAAC;IAED,IAAI,gBAAgB;QACnB,OAAO,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,YAAU,CAAC,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,2BAA2B;QAC9B,OAAO,YAAU,CAAC,UAAU,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,kBAAkB;QACrB,OAAO,kBAAkB,CAAC;IAC3B,CAAC;IAED,IAAI,gBAAgB;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACf,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,EAAE,CAAC;QACX,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACV,MAAM,eAAe,GAAG,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,kCAAkC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,CAAC;QACnL,OAAO;YACN,GAAG,KAAK,CAAC,OAAO;YAChB,qBAAqB,EAAE,IAAI,CAAC,mBAAmB;YAC/C,iBAAiB,EAAE,eAAe;SAClC,CAAC;IACH,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,YAAU,CAAC,UAAU,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,mBAAmB;QACtB,OAAO,YAAU,CAAC,UAAU,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,iBAAiB;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,kCAAkC;QACrC,OAAO,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC1G,CAAC;IAED;;;OAGG;IACH,IAAI,iCAAiC;QACpC,8CAA8C;QAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,wFAAwF;QACxF,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACtC,CAAC;CACD,CAAA;AAhXA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDACF;AAQ1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;sDACD;AAYnB;IADP,QAAQ,EAAE;wCACW;AAQtB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;4DACK;AAQjC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0DACG;AAO/B;IADC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;0CAC7B;AAvDjB,UAAU;IAzBf,aAAa,CAAC;QACd,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,WAAW;QACrB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,kBAAkB;QAC5B,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF;;;;OAIG;;IACF,KAAK,CAAC,oBAAoB,EAAE;QAC5B,OAAO,EAAE,IAAI;KACb,CAAC;IAEF;;;;OAIG;;IACF,KAAK,CAAC,cAAc,EAAE;QACtB,OAAO,EAAE,IAAI;KACb,CAAC;GAEI,UAAU,CA4Xf;AAED,UAAU,CAAC,MAAM,EAAE,CAAC;AAEpB,eAAe,UAAU,CAAC","sourcesContent":["import type UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.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 customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport {\n\tisShow,\n\tisBackSpace,\n\tisLeft,\n\tisRight,\n\tisRightCtrl,\n\tisHome,\n\tisEnd,\n\tisDown,\n\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport {\n\tMULTIINPUT_ROLEDESCRIPTION_TEXT,\n\tMULTIINPUT_VALUE_HELP_LABEL,\n\tMULTIINPUT_VALUE_HELP,\n\tFORM_MIXED_TEXTFIELD_REQUIRED,\n\tMULTIINPUT_FILTER_BUTTON_LABEL,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport Input from \"./Input.js\";\nimport MultiInputTemplate from \"./MultiInputTemplate.js\";\nimport styles from \"./generated/themes/MultiInput.css.js\";\nimport type Token from \"./Token.js\";\nimport type Tokenizer from \"./Tokenizer.js\";\nimport { getTokensCountText } from \"./Tokenizer.js\";\nimport type { TokenizerTokenDeleteEventDetail } from \"./Tokenizer.js\";\n\nimport type {\n\tInputSelectionChangeEventDetail as MultiInputSelectionChangeEventDetail,\n} from \"./Input.js\";\nimport type { Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\n\ninterface IToken extends UI5Element, ITabbable {\n\ttext?: string;\n\treadonly: boolean,\n\tselected: boolean,\n\tisTruncatable: boolean,\n}\n\ntype MultiInputTokenDeleteEventDetail = {\n\ttokens: Token[];\n}\n\n/**\n * @class\n * ### Overview\n * A `ui5-multi-input` field allows the user to enter multiple values, which are displayed as `ui5-token`.\n *\n * User can choose interaction for creating tokens.\n * Fiori Guidelines say that user should create tokens when:\n *\n * - Type a value in the input and press enter or focus out the input field (`change` event is fired)\n * - Move between suggestion items (`selection-change` event is fired)\n * - Clicking on a suggestion item (`selection-change` event is fired if the clicked item is different than the current value. Also `change` event is fired )\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/MultiInput.js\";`\n * @constructor\n * @extends Input\n * @since 1.0.0-rc.9\n * @public\n */\n@customElement({\n\ttag: \"ui5-multi-input\",\n\trenderer: jsxRenderer,\n\tformAssociated: true,\n\ttemplate: MultiInputTemplate,\n\tstyles: [Input.styles, styles],\n})\n/**\n * Fired when the value help icon is pressed\n * and F4 or ALT/OPTION + ARROW_UP/ARROW_DOWN keyboard keys are used.\n * @public\n */\n@event(\"value-help-trigger\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when tokens are being deleted.\n * @param {Array} tokens An array containing the deleted tokens.\n * @public\n */\n@event(\"token-delete\", {\n\tbubbles: true,\n})\n\nclass MultiInput extends Input implements IFormInputElement {\n\teventDetails!: Input[\"eventDetails\"] & {\n\t\t\"value-help-trigger\": void,\n\t\t\"token-delete\": MultiInputTokenDeleteEventDetail,\n\t}\n\t/**\n\t * Determines whether a value help icon will be visualized in the end of the input.\n\t * Pressing the icon will fire `value-help-trigger` event.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowValueHelpIcon = false;\n\n\t/**\n\t * Indicates whether the tokenizer has tokens\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\ttokenizerAvailable = false;\n\n\t/**\n\t * Determines the name by which the component will be identified upon submission in an HTML form.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.\n\t * **Note:** When the component is used inside a form element,\n\t * the value is sent as the first element in the form data, even if it's empty.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tdeclare name?: string;\n\n\t/**\n\t * Indicates whether to show tokens in suggestions popover\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_showTokensInSuggestions = false;\n\n\t/**\n\t * Tracks whether user has explicitly toggled the show tokens state\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_userToggledShowTokens = false;\n\n\t/**\n\t * Defines the component tokens.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, individualSlots: true })\n\ttokens!: Slot<IToken>;\n\n\t_skipOpenSuggestions: boolean;\n\t_valueHelpIconPressed: boolean;\n\n\tget formValidityMessage() {\n\t\treturn MultiInput.i18nBundle.getText(FORM_MIXED_TEXTFIELD_REQUIRED);\n\t}\n\n\tget formValidity(): ValidityStateFlags {\n\t\tconst tokens = (this.tokens || []);\n\n\t\treturn { valueMissing: this.required && !this.value && !tokens.length };\n\t}\n\n\tget formFormattedValue(): FormData | string | null {\n\t\tconst tokens = (this.tokens || []);\n\n\t\tif (tokens.length && this.name) {\n\t\t\tconst formData = new FormData();\n\n\t\t\tformData.append(this.name, this.value);\n\n\t\t\tfor (let i = 0; i < tokens.length; i++) {\n\t\t\t\tformData.append(this.name, (tokens[i].text || \"\"));\n\t\t\t}\n\n\t\t\treturn formData;\n\t\t}\n\n\t\treturn this.value;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\n\t\t// Prevent suggestions' opening.\n\t\tthis._skipOpenSuggestions = false;\n\t\tthis._valueHelpIconPressed = false;\n\t}\n\n\tvalueHelpPress() {\n\t\tthis.closeValueStatePopover();\n\t\tthis.fireDecoratorEvent(\"value-help-trigger\");\n\t}\n\n\ttokenDelete(e: CustomEvent<TokenizerTokenDeleteEventDetail>) {\n\t\tconst deletedTokens = e.detail.tokens;\n\t\tconst selectedTokens = this.tokens.filter(token => token.selected);\n\t\tconst shouldFocusInput = this.tokens.length - 1 === 0 || this.tokens.length === selectedTokens.length;\n\n\t\tif (this._readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (deletedTokens) {\n\t\t\tthis.fireDecoratorEvent(\"token-delete\", { tokens: deletedTokens });\n\n\t\t\tif (shouldFocusInput) {\n\t\t\t\tthis.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tvalueHelpMouseDown(e: MouseEvent) {\n\t\te.preventDefault();\n\t\tthis.focus();\n\t\tthis.closeValueStatePopover();\n\t\tthis.tokenizer.open = false;\n\t\tthis._valueHelpIconPressed = true;\n\t}\n\n\t_tokenizerFocusOut(e: FocusEvent) {\n\t\tif (!this.contains(e.relatedTarget as HTMLElement) && !this.shadowRoot!.contains(e.relatedTarget as HTMLElement)) {\n\t\t\tthis.tokenizer._tokens.forEach(token => { token.selected = false; });\n\t\t}\n\t}\n\n\tvalueHelpMouseUp() {\n\t\tsetTimeout(() => {\n\t\t\tthis._valueHelpIconPressed = false;\n\t\t}, 0);\n\t}\n\n\tinnerFocusIn() {\n\t\tthis.focused = true;\n\t\tthis.tokenizer._scrollToEndOnExpand = true;\n\t\tthis.tokenizer.expanded = true;\n\t\tthis.tokens.forEach(token => {\n\t\t\ttoken.selected = false;\n\t\t});\n\t}\n\n\t_showMoreItemsPress() {\n\t\tthis.tokenizer._scrollToEndOnExpand = true;\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\t!this._isComposing && super._onkeydown(e);\n\n\t\tconst target = e.target as HTMLInputElement;\n\t\tconst isHomeInBeginning = isHome(e) && target.selectionStart === 0;\n\n\t\tif (isHomeInBeginning) {\n\t\t\tthis._skipOpenSuggestions = true; // Prevent input focus when navigating through the tokens\n\t\t\treturn this._focusFirstToken(e);\n\t\t}\n\n\t\tif (isLeft(e)) {\n\t\t\tthis._skipOpenSuggestions = true;\n\t\t\treturn this._handleLeft(e);\n\t\t}\n\n\t\tif (isBackSpace(e)) {\n\t\t\tthis._skipOpenSuggestions = true;\n\t\t\treturn this._handleBackspace(e);\n\t\t}\n\n\t\tthis._skipOpenSuggestions = false;\n\n\t\tif (isShow(e)) {\n\t\t\tthis.valueHelpPress();\n\t\t}\n\t}\n\n\t_onTokenizerKeydown(e: KeyboardEvent) {\n\t\tconst rightCtrl = isRightCtrl(e);\n\t\tif (isRight(e) || isDown(e) || isEnd(e) || rightCtrl) {\n\t\t\te.preventDefault();\n\t\t\tconst lastTokenIndex = this.tokens.length - 1;\n\n\t\t\tif (e.target === this.tokens[lastTokenIndex] && this.tokens[lastTokenIndex] === document.activeElement) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.focus();\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleLeft(e: KeyboardEvent) {\n\t\tconst cursorPosition = this.getDomRef()!.querySelector(`input`)!.selectionStart;\n\t\tconst tokens = this.tokens;\n\t\tconst lastToken = tokens.length && tokens[tokens.length - 1];\n\n\t\t// selectionStart property applies only to inputs of types text, search, URL, tel, and password\n\t\tif (((cursorPosition === null && !this.value) || cursorPosition === 0) && lastToken) {\n\t\t\te.preventDefault();\n\t\t\tlastToken.focus();\n\t\t\tthis.tokenizer._itemNav.setCurrentItem(lastToken);\n\t\t}\n\t}\n\n\t_handleBackspace(e: KeyboardEvent) {\n\t\tconst tokens = this.tokens;\n\t\tconst lastToken = tokens.length && tokens[tokens.length - 1];\n\n\t\t// Only move focus to the last token if the input is empty\n\t\tif (!this.value && lastToken) {\n\t\t\te.preventDefault();\n\t\t\tlastToken.focus();\n\t\t\tthis.tokenizer._itemNav.setCurrentItem(lastToken);\n\t\t}\n\t}\n\n\t_focusFirstToken(e: KeyboardEvent) {\n\t\tconst tokens = this.tokens;\n\t\tconst firstToken = tokens.length && tokens[0];\n\n\t\tif (firstToken) {\n\t\t\te.preventDefault();\n\n\t\t\tfirstToken.focus();\n\t\t\tthis.tokenizer._itemNav.setCurrentItem(firstToken);\n\t\t}\n\t}\n\n\t_onfocusout(e: FocusEvent) {\n\t\tsuper._onfocusout(e);\n\t\tconst relatedTarget = e.relatedTarget as HTMLElement;\n\t\tconst insideDOM = this.contains(relatedTarget);\n\t\tconst insideShadowDom = this.shadowRoot!.contains(relatedTarget);\n\n\t\tif (!insideDOM && !insideShadowDom) {\n\t\t\tthis.tokenizer.expanded = false;\n\t\t}\n\n\t\tif (this.contains(relatedTarget) && relatedTarget.hasAttribute(\"ui5-token\")) {\n\t\t\tthis.focused = false;\n\t\t}\n\t}\n\n\t/**\n\t * @override\n\t */\n\t_onfocusin(e: FocusEvent) {\n\t\tconst inputDomRef = this.getInputDOMRef();\n\n\t\tif (e.target === inputDomRef) {\n\t\t\tsuper._onfocusin(e);\n\t\t}\n\t}\n\n\tonBeforeRendering() {\n\t\tsuper.onBeforeRendering();\n\n\t\tthis.style.setProperty(\"--_ui5-input-icons-count\", `${this.iconsCount}`);\n\t\tthis.tokenizerAvailable = this.tokens && this.tokens.length > 0;\n\n\t\tif (this.tokenizer) {\n\t\t\tthis.tokenizer.readonly = this.readonly;\n\t\t}\n\t}\n\n\t/**\n\t * Override the _handlePickerAfterOpen method to handle token display based on device type\n\t */\n\t_handlePickerAfterOpen() {\n\t\tif (this.tokens.length > 0) {\n\t\t\t// On mobile: show tokens by default (for filter dialog feature)\n\t\t\t// On desktop: keep showing suggestions (default behavior)\n\t\t\tif (isPhone()) {\n\t\t\t\tthis._showTokensInSuggestions = true;\n\t\t\t}\n\t\t\tthis._userToggledShowTokens = false;\n\n\t\t\t// Expand tokenizer to show all tokens and prevent cut-off\n\t\t\tthis.tokenizer._scrollToEndOnExpand = true;\n\t\t\tthis.tokenizer.expanded = true;\n\t\t}\n\n\t\tsuper._handlePickerAfterOpen();\n\t}\n\n\tonAfterRendering() {\n\t\tsuper.onAfterRendering();\n\n\t\tthis.tokenizer.preventInitialFocus = true;\n\t}\n\n\tget iconsCount() {\n\t\treturn super.iconsCount + (this.showValueHelpIcon ? 1 : 0);\n\t}\n\n\tget tokenizer() {\n\t\treturn this.shadowRoot!.querySelector<Tokenizer>(\"[ui5-tokenizer]\")!;\n\t}\n\n\tget tokenizerExpanded() {\n\t\treturn this.tokenizer && this.tokenizer.expanded;\n\t}\n\n\tget _tokensCountText() {\n\t\treturn getTokensCountText(this.tokens.length);\n\t}\n\n\tget _valueHelpText() {\n\t\treturn MultiInput.i18nBundle.getText(MULTIINPUT_VALUE_HELP);\n\t}\n\n\tget _filterButtonAccessibleName() {\n\t\treturn MultiInput.i18nBundle.getText(MULTIINPUT_FILTER_BUTTON_LABEL);\n\t}\n\n\tget _tokensCountTextId() {\n\t\treturn `hiddenText-nMore`;\n\t}\n\n\tget _valueHelpTextId() {\n\t\treturn this.showValueHelpIcon ? `hiddenText-value-help` : \"\";\n\t}\n\n\t/**\n\t * Returns the placeholder value when there are no tokens.\n\t * @protected\n\t */\n\tget _placeholder() {\n\t\tif (this.tokens.length) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\treturn this.placeholder;\n\t}\n\n\tget accInfo() {\n\t\tconst ariaDescribedBy = `${this._tokensCountTextId} ${this.suggestionsTextId} ${this.valueStateTextId} ${this._valueStateLinksShortcutsTextAccId} ${this._valueHelpTextId}`.trim();\n\t\treturn {\n\t\t\t...super.accInfo,\n\t\t\t\"ariaRoledescription\": this.ariaRoleDescription,\n\t\t\t\"ariaDescribedBy\": ariaDescribedBy,\n\t\t};\n\t}\n\n\tget valueHelpLabel() {\n\t\treturn MultiInput.i18nBundle.getText(MULTIINPUT_VALUE_HELP_LABEL);\n\t}\n\n\tget ariaRoleDescription() {\n\t\treturn MultiInput.i18nBundle.getText(MULTIINPUT_ROLEDESCRIPTION_TEXT);\n\t}\n\n\tget morePopoverOpener(): HTMLElement {\n\t\tif (this.tokens.length === 1 && this.tokens[0].isTruncatable) {\n\t\t\treturn this.tokens[0];\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tget shouldDisplayOnlyValueStateMessage() {\n\t\treturn this.hasValueStateMessage && !this.readonly && !this.open && this.focused && !this.tokenizer.open;\n\t}\n\n\t/**\n\t * Computes the effective state for showing tokens in suggestions.\n\t * Returns false (show suggestions) by default, true only when explicitly set.\n\t */\n\tget _effectiveShowTokensInSuggestions() {\n\t\t// If no tokens exist, always show suggestions\n\t\tif (this.tokens.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Return the current state (will be true on mobile after picker opens, false otherwise)\n\t\treturn this._showTokensInSuggestions;\n\t}\n}\n\nMultiInput.define();\n\nexport default MultiInput;\nexport type {\n\tIToken,\n\tMultiInputTokenDeleteEventDetail,\n\tMultiInputSelectionChangeEventDetail,\n};\n"]}
1
+ {"version":3,"file":"MultiInput.js","sourceRoot":"","sources":["../src/MultiInput.ts"],"names":[],"mappings":"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","sourcesContent":["import type UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.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 customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport {\n\tisShow,\n\tisBackSpace,\n\tisLeft,\n\tisRight,\n\tisRightCtrl,\n\tisHome,\n\tisEnd,\n\tisDown,\n\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport {\n\tMULTIINPUT_ROLEDESCRIPTION_TEXT,\n\tMULTIINPUT_VALUE_HELP_LABEL,\n\tMULTIINPUT_VALUE_HELP,\n\tFORM_MIXED_TEXTFIELD_REQUIRED,\n\tMULTIINPUT_FILTER_BUTTON_LABEL,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport Input from \"./Input.js\";\nimport MultiInputTemplate from \"./MultiInputTemplate.js\";\nimport styles from \"./generated/themes/MultiInput.css.js\";\nimport type Token from \"./Token.js\";\nimport type Tokenizer from \"./Tokenizer.js\";\nimport { getTokensCountText } from \"./Tokenizer.js\";\nimport type { TokenizerTokenDeleteEventDetail } from \"./Tokenizer.js\";\n\nimport type {\n\tInputSelectionChangeEventDetail as MultiInputSelectionChangeEventDetail,\n} from \"./Input.js\";\nimport type { Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\n\ninterface IToken extends UI5Element, ITabbable {\n\ttext?: string;\n\treadonly: boolean,\n\tselected: boolean,\n\tisTruncatable: boolean,\n}\n\ntype MultiInputTokenDeleteEventDetail = {\n\ttokens: Token[];\n}\n\n/**\n * @class\n * ### Overview\n * A `ui5-multi-input` field allows the user to enter multiple values, which are displayed as `ui5-token`.\n *\n * User can choose interaction for creating tokens.\n * Fiori Guidelines say that user should create tokens when:\n *\n * - Type a value in the input and press enter or focus out the input field (`change` event is fired)\n * - Move between suggestion items (`selection-change` event is fired)\n * - Clicking on a suggestion item (`selection-change` event is fired if the clicked item is different than the current value. Also `change` event is fired )\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/MultiInput.js\";`\n * @constructor\n * @extends Input\n * @since 1.0.0-rc.9\n * @public\n */\n@customElement({\n\ttag: \"ui5-multi-input\",\n\trenderer: jsxRenderer,\n\tformAssociated: true,\n\ttemplate: MultiInputTemplate,\n\tstyles: [Input.styles, styles],\n})\n/**\n * Fired when the value help icon is pressed\n * and F4 or ALT/OPTION + ARROW_UP/ARROW_DOWN keyboard keys are used.\n * @public\n */\n@event(\"value-help-trigger\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when tokens are being deleted.\n * @param {Array} tokens An array containing the deleted tokens.\n * @public\n */\n@event(\"token-delete\", {\n\tbubbles: true,\n})\n\nclass MultiInput extends Input implements IFormInputElement {\n\teventDetails!: Input[\"eventDetails\"] & {\n\t\t\"value-help-trigger\": void,\n\t\t\"token-delete\": MultiInputTokenDeleteEventDetail,\n\t}\n\t/**\n\t * Determines whether a value help icon will be visualized in the end of the input.\n\t * Pressing the icon will fire `value-help-trigger` event.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowValueHelpIcon = false;\n\n\t/**\n\t * Indicates whether the tokenizer has tokens\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\ttokenizerAvailable = false;\n\n\t/**\n\t * Determines the name by which the component will be identified upon submission in an HTML form.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.\n\t * **Note:** When the component is used inside a form element,\n\t * the value is sent as the first element in the form data, even if it's empty.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tdeclare name?: string;\n\n\t/**\n\t * Indicates whether to show tokens in suggestions popover\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_showTokensInSuggestions = false;\n\n\t/**\n\t * Tracks whether user has explicitly toggled the show tokens state\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_userToggledShowTokens = false;\n\n\t/**\n\t * Defines the component tokens.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, individualSlots: true })\n\ttokens!: Slot<IToken>;\n\n\t_skipOpenSuggestions: boolean;\n\t_valueHelpIconPressed: boolean;\n\n\tget formValidityMessage() {\n\t\treturn MultiInput.i18nBundle.getText(FORM_MIXED_TEXTFIELD_REQUIRED);\n\t}\n\n\tget formValidity(): ValidityStateFlags {\n\t\tconst tokens = (this.tokens || []);\n\n\t\treturn { valueMissing: this.required && !this.value && !tokens.length };\n\t}\n\n\tget formFormattedValue(): FormData | string | null {\n\t\tconst tokens = (this.tokens || []);\n\n\t\tif (tokens.length && this.name) {\n\t\t\tconst formData = new FormData();\n\n\t\t\tformData.append(this.name, this.value);\n\n\t\t\tfor (let i = 0; i < tokens.length; i++) {\n\t\t\t\tformData.append(this.name, (tokens[i].text || \"\"));\n\t\t\t}\n\n\t\t\treturn formData;\n\t\t}\n\n\t\treturn this.value;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\n\t\t// Prevent suggestions' opening.\n\t\tthis._skipOpenSuggestions = false;\n\t\tthis._valueHelpIconPressed = false;\n\t}\n\n\tvalueHelpPress() {\n\t\tthis.closeValueStatePopover();\n\t\tthis.fireDecoratorEvent(\"value-help-trigger\");\n\t}\n\n\ttokenDelete(e: CustomEvent<TokenizerTokenDeleteEventDetail>) {\n\t\tconst deletedTokens = e.detail.tokens;\n\t\tconst selectedTokens = this.tokens.filter(token => token.selected);\n\t\tconst shouldFocusInput = this.tokens.length - 1 === 0 || this.tokens.length === selectedTokens.length;\n\n\t\tif (this._readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (deletedTokens) {\n\t\t\tthis.fireDecoratorEvent(\"token-delete\", { tokens: deletedTokens });\n\n\t\t\tif (shouldFocusInput) {\n\t\t\t\tthis.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tvalueHelpMouseDown(e: MouseEvent) {\n\t\te.preventDefault();\n\t\tthis.focus();\n\t\tthis.closeValueStatePopover();\n\t\tthis.tokenizer.open = false;\n\t\tthis._valueHelpIconPressed = true;\n\t}\n\n\t_tokenizerFocusOut(e: FocusEvent) {\n\t\tif (!this.contains(e.relatedTarget as HTMLElement) && !this.shadowRoot!.contains(e.relatedTarget as HTMLElement)) {\n\t\t\tthis.tokenizer._tokens.forEach(token => { token.selected = false; });\n\t\t}\n\t}\n\n\tvalueHelpMouseUp() {\n\t\tsetTimeout(() => {\n\t\t\tthis._valueHelpIconPressed = false;\n\t\t}, 0);\n\t}\n\n\tinnerFocusIn() {\n\t\tthis.focused = true;\n\t\tthis.tokenizer._scrollToEndOnExpand = true;\n\t\tthis.tokenizer.expanded = true;\n\t\tthis.tokens.forEach(token => {\n\t\t\ttoken.selected = false;\n\t\t});\n\t}\n\n\t_showMoreItemsPress() {\n\t\tthis.tokenizer._scrollToEndOnExpand = true;\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\t!this._isComposing && super._onkeydown(e);\n\n\t\tconst target = e.target as HTMLInputElement;\n\t\tconst isHomeInBeginning = isHome(e) && target.selectionStart === 0;\n\n\t\tif (isHomeInBeginning) {\n\t\t\tthis._skipOpenSuggestions = true; // Prevent input focus when navigating through the tokens\n\t\t\treturn this._focusFirstToken(e);\n\t\t}\n\n\t\tif (isLeft(e)) {\n\t\t\tthis._skipOpenSuggestions = true;\n\t\t\treturn this._handleLeft(e);\n\t\t}\n\n\t\tif (isBackSpace(e)) {\n\t\t\tthis._skipOpenSuggestions = true;\n\t\t\treturn this._handleBackspace(e);\n\t\t}\n\n\t\tthis._skipOpenSuggestions = false;\n\n\t\tif (isShow(e)) {\n\t\t\tthis.valueHelpPress();\n\t\t}\n\t}\n\n\t_onTokenizerKeydown(e: KeyboardEvent) {\n\t\tconst rightCtrl = isRightCtrl(e);\n\t\tif (isRight(e) || isDown(e) || isEnd(e) || rightCtrl) {\n\t\t\te.preventDefault();\n\t\t\tconst lastTokenIndex = this.tokens.length - 1;\n\n\t\t\tif (e.target === this.tokens[lastTokenIndex] && this.tokens[lastTokenIndex] === document.activeElement) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.focus();\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleLeft(e: KeyboardEvent) {\n\t\tconst cursorPosition = this.getDomRef()!.querySelector(`input`)!.selectionStart;\n\t\tconst tokens = this.tokens;\n\t\tconst lastToken = tokens.length && tokens[tokens.length - 1];\n\n\t\t// selectionStart property applies only to inputs of types text, search, URL, tel, and password\n\t\tif (((cursorPosition === null && !this.value) || cursorPosition === 0) && lastToken) {\n\t\t\te.preventDefault();\n\t\t\tlastToken.focus();\n\t\t\tthis.tokenizer._itemNav.setCurrentItem(lastToken);\n\t\t}\n\t}\n\n\t_handleBackspace(e: KeyboardEvent) {\n\t\tconst tokens = this.tokens;\n\t\tconst lastToken = tokens.length && tokens[tokens.length - 1];\n\n\t\t// Only move focus to the last token if the input is empty\n\t\tif (!this.value && lastToken) {\n\t\t\te.preventDefault();\n\t\t\tlastToken.focus();\n\t\t\tthis.tokenizer._itemNav.setCurrentItem(lastToken);\n\t\t}\n\t}\n\n\t_focusFirstToken(e: KeyboardEvent) {\n\t\tconst tokens = this.tokens;\n\t\tconst firstToken = tokens.length && tokens[0];\n\n\t\tif (firstToken) {\n\t\t\te.preventDefault();\n\n\t\t\tfirstToken.focus();\n\t\t\tthis.tokenizer._itemNav.setCurrentItem(firstToken);\n\t\t}\n\t}\n\n\t_onfocusout(e: FocusEvent) {\n\t\tsuper._onfocusout(e);\n\t\tconst relatedTarget = e.relatedTarget as HTMLElement;\n\t\tconst insideDOM = this.contains(relatedTarget);\n\t\tconst insideShadowDom = this.shadowRoot!.contains(relatedTarget);\n\n\t\tif (!insideDOM && !insideShadowDom) {\n\t\t\tthis.tokenizer.expanded = false;\n\t\t}\n\n\t\tif (this.contains(relatedTarget) && relatedTarget.hasAttribute(\"ui5-token\")) {\n\t\t\tthis.focused = false;\n\t\t}\n\t}\n\n\t/**\n\t * @override\n\t */\n\t_onfocusin(e: FocusEvent) {\n\t\tconst inputDomRef = this.getInputDOMRef();\n\n\t\tif (e.target === inputDomRef) {\n\t\t\tsuper._onfocusin(e);\n\t\t}\n\t}\n\n\tonBeforeRendering() {\n\t\tsuper.onBeforeRendering();\n\n\t\tthis.style.setProperty(\"--_ui5-input-icons-count\", `${this.iconsCount}`);\n\t\tthis.tokenizerAvailable = this.tokens && this.tokens.length > 0;\n\n\t\tif (this.tokenizer) {\n\t\t\tthis.tokenizer.readonly = this.readonly;\n\n\t\t\t// Set the CSS variable on the tokenizer element so it's available in the shadow DOM\n\t\t\tthis.tokenizer.style.setProperty(\"--_ui5-input-icons-count\", `${this.iconsCount}`);\n\t\t}\n\t}\n\n\t/**\n\t * Override the _handlePickerAfterOpen method to handle token display based on device type\n\t */\n\t_handlePickerAfterOpen() {\n\t\tif (this.tokens.length > 0) {\n\t\t\t// On mobile: show tokens by default (for filter dialog feature)\n\t\t\t// On desktop: keep showing suggestions (default behavior)\n\t\t\tif (isPhone()) {\n\t\t\t\tthis._showTokensInSuggestions = true;\n\t\t\t}\n\t\t\tthis._userToggledShowTokens = false;\n\n\t\t\t// Expand tokenizer to show all tokens and prevent cut-off\n\t\t\tthis.tokenizer._scrollToEndOnExpand = true;\n\t\t\tthis.tokenizer.expanded = true;\n\t\t}\n\n\t\tsuper._handlePickerAfterOpen();\n\t}\n\n\tonAfterRendering() {\n\t\tsuper.onAfterRendering();\n\n\t\tthis.tokenizer.preventInitialFocus = true;\n\t}\n\n\tget iconsCount() {\n\t\treturn super.iconsCount + (this.showValueHelpIcon ? 1 : 0);\n\t}\n\n\tget tokenizer() {\n\t\treturn this.shadowRoot!.querySelector<Tokenizer>(\"[ui5-tokenizer]\")!;\n\t}\n\n\tget tokenizerExpanded() {\n\t\treturn this.tokenizer && this.tokenizer.expanded;\n\t}\n\n\tget _tokensCountText() {\n\t\treturn getTokensCountText(this.tokens.length);\n\t}\n\n\tget _valueHelpText() {\n\t\treturn MultiInput.i18nBundle.getText(MULTIINPUT_VALUE_HELP);\n\t}\n\n\tget _filterButtonAccessibleName() {\n\t\treturn MultiInput.i18nBundle.getText(MULTIINPUT_FILTER_BUTTON_LABEL);\n\t}\n\n\tget _tokensCountTextId() {\n\t\treturn `hiddenText-nMore`;\n\t}\n\n\tget _valueHelpTextId() {\n\t\treturn this.showValueHelpIcon ? `hiddenText-value-help` : \"\";\n\t}\n\n\t/**\n\t * Returns the placeholder value when there are no tokens.\n\t * @protected\n\t */\n\tget _placeholder() {\n\t\tif (this.tokens.length) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\treturn this.placeholder;\n\t}\n\n\tget accInfo() {\n\t\tconst ariaDescribedBy = `${this._tokensCountTextId} ${this.suggestionsTextId} ${this.valueStateTextId} ${this._valueStateLinksShortcutsTextAccId} ${this._valueHelpTextId}`.trim();\n\t\treturn {\n\t\t\t...super.accInfo,\n\t\t\t\"ariaRoledescription\": this.ariaRoleDescription,\n\t\t\t\"ariaDescribedBy\": ariaDescribedBy,\n\t\t};\n\t}\n\n\tget valueHelpLabel() {\n\t\treturn MultiInput.i18nBundle.getText(MULTIINPUT_VALUE_HELP_LABEL);\n\t}\n\n\tget ariaRoleDescription() {\n\t\treturn MultiInput.i18nBundle.getText(MULTIINPUT_ROLEDESCRIPTION_TEXT);\n\t}\n\n\tget morePopoverOpener(): HTMLElement {\n\t\tif (this.tokens.length === 1 && this.tokens[0].isTruncatable) {\n\t\t\treturn this.tokens[0];\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tget shouldDisplayOnlyValueStateMessage() {\n\t\treturn this.hasValueStateMessage && !this.readonly && !this.open && this.focused && !this.tokenizer.open;\n\t}\n\n\t/**\n\t * Computes the effective state for showing tokens in suggestions.\n\t * Returns false (show suggestions) by default, true only when explicitly set.\n\t */\n\tget _effectiveShowTokensInSuggestions() {\n\t\t// If no tokens exist, always show suggestions\n\t\tif (this.tokens.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Return the current state (will be true on mobile after picker opens, false otherwise)\n\t\treturn this._showTokensInSuggestions;\n\t}\n}\n\nMultiInput.define();\n\nexport default MultiInput;\nexport type {\n\tIToken,\n\tMultiInputTokenDeleteEventDetail,\n\tMultiInputSelectionChangeEventDetail,\n};\n"]}
package/dist/Select.js CHANGED
@@ -37,6 +37,9 @@ import selectCss from "./generated/themes/Select.css.js";
37
37
  import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
38
38
  import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
39
39
  import SelectPopoverCss from "./generated/themes/SelectPopover.css.js";
40
+ const isPrintableCharacter = (e) => {
41
+ return e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey;
42
+ };
40
43
  /**
41
44
  * @class
42
45
  *
@@ -380,16 +383,22 @@ let Select = Select_1 = class Select extends UI5Element {
380
383
  }
381
384
  else if (isEnd(e)) {
382
385
  this._handleEndKey(e);
386
+ // When focus is on the list item, Enter triggers _handleItemPress via the List item-click
387
+ // event, which already calls _handleSelectionChange and prevents default.
388
+ // Skip here to avoid a double selection change.
383
389
  }
384
- else if (isEnter(e)) {
390
+ else if (isEnter(e) && !e.defaultPrevented) {
385
391
  this._handleSelectionChange();
386
392
  }
387
393
  else if (isUp(e) || isDown(e)) {
388
394
  this._handleArrowNavigation(e);
389
395
  }
396
+ else if (isPrintableCharacter(e)) {
397
+ this._handleKeyboardNavigation(e);
398
+ }
390
399
  }
391
400
  _handleKeyboardNavigation(e) {
392
- if (isEnter(e) || this.readonly) {
401
+ if (this.readonly) {
393
402
  return;
394
403
  }
395
404
  const typedCharacter = e.key.toLowerCase();
@@ -580,9 +589,9 @@ let Select = Select_1 = class Select extends UI5Element {
580
589
  _applyFocusToSelectedItem() {
581
590
  this.options.forEach(option => {
582
591
  option.focused = option.selected;
583
- if (option.focused && isPhone()) {
584
- // on phone, the popover opens full screen (dialog)
585
- // move focus to option to read out dialog header
592
+ if (option.focused) {
593
+ // move focus to the selected option so screen readers
594
+ // can announce it when the popover opens
586
595
  option.focus();
587
596
  }
588
597
  });