@ui5/webcomponents-fiori 2.16.0-rc.2 → 2.16.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.
Files changed (237) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/FlexibleColumnLayout.d.ts +93 -21
  4. package/dist/FlexibleColumnLayout.js +207 -17
  5. package/dist/FlexibleColumnLayout.js.map +1 -1
  6. package/dist/SearchItem.d.ts +17 -0
  7. package/dist/SearchItem.js +62 -1
  8. package/dist/SearchItem.js.map +1 -1
  9. package/dist/SearchItemTemplate.js +3 -2
  10. package/dist/SearchItemTemplate.js.map +1 -1
  11. package/dist/UserSettingsDialog.js +2 -0
  12. package/dist/UserSettingsDialog.js.map +1 -1
  13. package/dist/UserSettingsDialogTemplate.js +1 -1
  14. package/dist/UserSettingsDialogTemplate.js.map +1 -1
  15. package/dist/UserSettingsItem.d.ts +4 -0
  16. package/dist/UserSettingsItem.js +7 -0
  17. package/dist/UserSettingsItem.js.map +1 -1
  18. package/dist/css/themes/DynamicPage.css +1 -1
  19. package/dist/css/themes/DynamicPageHeader.css +1 -1
  20. package/dist/css/themes/DynamicPageHeaderActions.css +1 -1
  21. package/dist/css/themes/DynamicPageTitle.css +1 -1
  22. package/dist/css/themes/FlexibleColumnLayout.css +1 -1
  23. package/dist/css/themes/MediaGallery.css +1 -1
  24. package/dist/css/themes/MediaGalleryItem.css +1 -1
  25. package/dist/css/themes/NavigationMenu.css +1 -1
  26. package/dist/css/themes/NavigationMenuItem.css +1 -1
  27. package/dist/css/themes/NotificationListGroupItem.css +1 -1
  28. package/dist/css/themes/NotificationListItem.css +1 -1
  29. package/dist/css/themes/NotificationListItemBase.css +1 -1
  30. package/dist/css/themes/NotificationStateIcon.css +1 -1
  31. package/dist/css/themes/Page.css +1 -1
  32. package/dist/css/themes/ProductSwitchItem.css +1 -1
  33. package/dist/css/themes/Search.css +1 -1
  34. package/dist/css/themes/SearchField.css +1 -1
  35. package/dist/css/themes/SearchItem.css +1 -1
  36. package/dist/css/themes/ShellBar.css +1 -1
  37. package/dist/css/themes/ShellBarBranding.css +1 -1
  38. package/dist/css/themes/ShellBarPopover.css +1 -1
  39. package/dist/css/themes/SideNavigation.css +1 -1
  40. package/dist/css/themes/SideNavigationGroup.css +1 -1
  41. package/dist/css/themes/SideNavigationItem.css +1 -1
  42. package/dist/css/themes/SideNavigationItemBase.css +1 -1
  43. package/dist/css/themes/SideNavigationSubItem.css +1 -1
  44. package/dist/css/themes/Timeline.css +1 -1
  45. package/dist/css/themes/TimelineGroupItem.css +1 -1
  46. package/dist/css/themes/TimelineItem.css +1 -1
  47. package/dist/css/themes/UploadCollection.css +1 -1
  48. package/dist/css/themes/UploadCollectionItem.css +1 -1
  49. package/dist/css/themes/UserMenu.css +1 -1
  50. package/dist/css/themes/UserSettingsDialog.css +1 -1
  51. package/dist/css/themes/UserSettingsItem.css +1 -1
  52. package/dist/css/themes/ViewSettingsDialog.css +1 -1
  53. package/dist/css/themes/Wizard.css +1 -1
  54. package/dist/css/themes/WizardTab.css +1 -1
  55. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  56. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  57. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  58. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  59. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  60. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  61. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  62. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  63. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  64. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  65. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  66. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  67. package/dist/custom-elements-internal.json +95 -0
  68. package/dist/custom-elements.json +44 -0
  69. package/dist/fcl-utils/FCLLayout.d.ts +4 -4
  70. package/dist/fcl-utils/FCLLayout.js +2 -2
  71. package/dist/fcl-utils/FCLLayout.js.map +1 -1
  72. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  73. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  74. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  75. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  76. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  77. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  78. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  79. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  80. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  81. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  82. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  83. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  84. package/dist/generated/themes/DynamicPage.css.d.ts +1 -1
  85. package/dist/generated/themes/DynamicPage.css.js +1 -1
  86. package/dist/generated/themes/DynamicPage.css.js.map +1 -1
  87. package/dist/generated/themes/DynamicPageHeader.css.d.ts +1 -1
  88. package/dist/generated/themes/DynamicPageHeader.css.js +1 -1
  89. package/dist/generated/themes/DynamicPageHeader.css.js.map +1 -1
  90. package/dist/generated/themes/DynamicPageHeaderActions.css.d.ts +1 -1
  91. package/dist/generated/themes/DynamicPageHeaderActions.css.js +1 -1
  92. package/dist/generated/themes/DynamicPageHeaderActions.css.js.map +1 -1
  93. package/dist/generated/themes/DynamicPageTitle.css.d.ts +1 -1
  94. package/dist/generated/themes/DynamicPageTitle.css.js +1 -1
  95. package/dist/generated/themes/DynamicPageTitle.css.js.map +1 -1
  96. package/dist/generated/themes/FlexibleColumnLayout.css.d.ts +1 -1
  97. package/dist/generated/themes/FlexibleColumnLayout.css.js +1 -1
  98. package/dist/generated/themes/FlexibleColumnLayout.css.js.map +1 -1
  99. package/dist/generated/themes/MediaGallery.css.d.ts +1 -1
  100. package/dist/generated/themes/MediaGallery.css.js +1 -1
  101. package/dist/generated/themes/MediaGallery.css.js.map +1 -1
  102. package/dist/generated/themes/MediaGalleryItem.css.d.ts +1 -1
  103. package/dist/generated/themes/MediaGalleryItem.css.js +1 -1
  104. package/dist/generated/themes/MediaGalleryItem.css.js.map +1 -1
  105. package/dist/generated/themes/NavigationMenu.css.d.ts +1 -1
  106. package/dist/generated/themes/NavigationMenu.css.js +1 -1
  107. package/dist/generated/themes/NavigationMenu.css.js.map +1 -1
  108. package/dist/generated/themes/NavigationMenuItem.css.d.ts +1 -1
  109. package/dist/generated/themes/NavigationMenuItem.css.js +1 -1
  110. package/dist/generated/themes/NavigationMenuItem.css.js.map +1 -1
  111. package/dist/generated/themes/NotificationListGroupItem.css.d.ts +1 -1
  112. package/dist/generated/themes/NotificationListGroupItem.css.js +1 -1
  113. package/dist/generated/themes/NotificationListGroupItem.css.js.map +1 -1
  114. package/dist/generated/themes/NotificationListItem.css.d.ts +1 -1
  115. package/dist/generated/themes/NotificationListItem.css.js +1 -1
  116. package/dist/generated/themes/NotificationListItem.css.js.map +1 -1
  117. package/dist/generated/themes/NotificationListItemBase.css.d.ts +1 -1
  118. package/dist/generated/themes/NotificationListItemBase.css.js +1 -1
  119. package/dist/generated/themes/NotificationListItemBase.css.js.map +1 -1
  120. package/dist/generated/themes/NotificationStateIcon.css.d.ts +1 -1
  121. package/dist/generated/themes/NotificationStateIcon.css.js +1 -1
  122. package/dist/generated/themes/NotificationStateIcon.css.js.map +1 -1
  123. package/dist/generated/themes/Page.css.d.ts +1 -1
  124. package/dist/generated/themes/Page.css.js +1 -1
  125. package/dist/generated/themes/Page.css.js.map +1 -1
  126. package/dist/generated/themes/ProductSwitchItem.css.d.ts +1 -1
  127. package/dist/generated/themes/ProductSwitchItem.css.js +1 -1
  128. package/dist/generated/themes/ProductSwitchItem.css.js.map +1 -1
  129. package/dist/generated/themes/Search.css.d.ts +1 -1
  130. package/dist/generated/themes/Search.css.js +1 -1
  131. package/dist/generated/themes/Search.css.js.map +1 -1
  132. package/dist/generated/themes/SearchField.css.d.ts +1 -1
  133. package/dist/generated/themes/SearchField.css.js +1 -1
  134. package/dist/generated/themes/SearchField.css.js.map +1 -1
  135. package/dist/generated/themes/SearchItem.css.d.ts +1 -1
  136. package/dist/generated/themes/SearchItem.css.js +1 -1
  137. package/dist/generated/themes/SearchItem.css.js.map +1 -1
  138. package/dist/generated/themes/ShellBar.css.d.ts +1 -1
  139. package/dist/generated/themes/ShellBar.css.js +1 -1
  140. package/dist/generated/themes/ShellBar.css.js.map +1 -1
  141. package/dist/generated/themes/ShellBarBranding.css.d.ts +1 -1
  142. package/dist/generated/themes/ShellBarBranding.css.js +1 -1
  143. package/dist/generated/themes/ShellBarBranding.css.js.map +1 -1
  144. package/dist/generated/themes/ShellBarPopover.css.d.ts +1 -1
  145. package/dist/generated/themes/ShellBarPopover.css.js +1 -1
  146. package/dist/generated/themes/ShellBarPopover.css.js.map +1 -1
  147. package/dist/generated/themes/SideNavigation.css.d.ts +1 -1
  148. package/dist/generated/themes/SideNavigation.css.js +1 -1
  149. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  150. package/dist/generated/themes/SideNavigationGroup.css.d.ts +1 -1
  151. package/dist/generated/themes/SideNavigationGroup.css.js +1 -1
  152. package/dist/generated/themes/SideNavigationGroup.css.js.map +1 -1
  153. package/dist/generated/themes/SideNavigationItem.css.d.ts +1 -1
  154. package/dist/generated/themes/SideNavigationItem.css.js +1 -1
  155. package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
  156. package/dist/generated/themes/SideNavigationItemBase.css.d.ts +1 -1
  157. package/dist/generated/themes/SideNavigationItemBase.css.js +1 -1
  158. package/dist/generated/themes/SideNavigationItemBase.css.js.map +1 -1
  159. package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
  160. package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
  161. package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
  162. package/dist/generated/themes/Timeline.css.d.ts +1 -1
  163. package/dist/generated/themes/Timeline.css.js +1 -1
  164. package/dist/generated/themes/Timeline.css.js.map +1 -1
  165. package/dist/generated/themes/TimelineGroupItem.css.d.ts +1 -1
  166. package/dist/generated/themes/TimelineGroupItem.css.js +1 -1
  167. package/dist/generated/themes/TimelineGroupItem.css.js.map +1 -1
  168. package/dist/generated/themes/TimelineItem.css.d.ts +1 -1
  169. package/dist/generated/themes/TimelineItem.css.js +1 -1
  170. package/dist/generated/themes/TimelineItem.css.js.map +1 -1
  171. package/dist/generated/themes/UploadCollection.css.d.ts +1 -1
  172. package/dist/generated/themes/UploadCollection.css.js +1 -1
  173. package/dist/generated/themes/UploadCollection.css.js.map +1 -1
  174. package/dist/generated/themes/UploadCollectionItem.css.d.ts +1 -1
  175. package/dist/generated/themes/UploadCollectionItem.css.js +1 -1
  176. package/dist/generated/themes/UploadCollectionItem.css.js.map +1 -1
  177. package/dist/generated/themes/UserMenu.css.d.ts +1 -1
  178. package/dist/generated/themes/UserMenu.css.js +1 -1
  179. package/dist/generated/themes/UserMenu.css.js.map +1 -1
  180. package/dist/generated/themes/UserSettingsDialog.css.d.ts +1 -1
  181. package/dist/generated/themes/UserSettingsDialog.css.js +1 -1
  182. package/dist/generated/themes/UserSettingsDialog.css.js.map +1 -1
  183. package/dist/generated/themes/UserSettingsItem.css.d.ts +1 -1
  184. package/dist/generated/themes/UserSettingsItem.css.js +1 -1
  185. package/dist/generated/themes/UserSettingsItem.css.js.map +1 -1
  186. package/dist/generated/themes/ViewSettingsDialog.css.d.ts +1 -1
  187. package/dist/generated/themes/ViewSettingsDialog.css.js +1 -1
  188. package/dist/generated/themes/ViewSettingsDialog.css.js.map +1 -1
  189. package/dist/generated/themes/Wizard.css.d.ts +1 -1
  190. package/dist/generated/themes/Wizard.css.js +1 -1
  191. package/dist/generated/themes/Wizard.css.js.map +1 -1
  192. package/dist/generated/themes/WizardTab.css.d.ts +1 -1
  193. package/dist/generated/themes/WizardTab.css.js +1 -1
  194. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  195. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  196. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  197. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  198. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  199. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  200. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  201. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  202. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  203. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  204. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  205. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  206. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  207. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  208. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  209. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  210. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  211. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  212. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  213. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.d.ts +1 -1
  214. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  215. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  216. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.d.ts +1 -1
  217. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  218. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  219. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  220. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  221. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  222. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.d.ts +1 -1
  223. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  224. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  225. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  226. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  227. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  228. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.d.ts +1 -1
  229. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  230. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  231. package/dist/vscode.html-custom-data.json +7 -2
  232. package/dist/web-types.json +25 -3
  233. package/package.json +7 -7
  234. package/src/SearchItemTemplate.tsx +16 -8
  235. package/src/UserSettingsDialogTemplate.tsx +13 -1
  236. package/src/themes/SearchItem.css +21 -1
  237. package/src/themes/UserSettingsDialog.css +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"FlexibleColumnLayout.js","sourceRoot":"","sources":["../src/FlexibleColumnLayout.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { supportsTouch } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport AnimationMode from \"@ui5/webcomponents-base/dist/types/AnimationMode.js\";\nimport { getAnimationMode } from \"@ui5/webcomponents-base/dist/config/AnimationMode.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport Button from \"@ui5/webcomponents/dist/Button.js\";\nimport \"@ui5/webcomponents-icons/dist/vertical-grip.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport {\n\tisLeft,\n\tisRight,\n\tisLeftShift,\n\tisRightShift,\n\tisHome,\n\tisEnd,\n\tisEnter,\n\tisSpace,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { PassiveEventListenerObject, AriaLandmarkRole } from \"@ui5/webcomponents-base\";\nimport FCLLayout from \"./types/FCLLayout.js\";\nimport type { LayoutConfiguration } from \"./fcl-utils/FCLLayout.js\";\nimport {\n\tgetLayoutsByMedia,\n\tgetNextLayoutByArrowPress,\n} from \"./fcl-utils/FCLLayout.js\";\n\n// Texts\nimport {\n\tFCL_START_COLUMN_TXT,\n\tFCL_MIDDLE_COLUMN_TXT,\n\tFCL_END_COLUMN_TXT,\n\tFCL_START_SEPARATOR_TOOLTIP,\n\tFCL_END_SEPARATOR_TOOLTIP,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport FlexibleColumnLayoutTemplate from \"./FlexibleColumnLayoutTemplate.js\";\n\n// Styles\nimport FlexibleColumnLayoutCss from \"./generated/themes/FlexibleColumnLayout.css.js\";\n\nenum MEDIA {\n\tPHONE = \"phone\",\n\tTABLET = \"tablet\",\n\tDESKTOP = \"desktop\",\n}\n\nconst BREAKPOINTS = {\n\t\"PHONE\": 599,\n\t\"TABLET\": 1023,\n} as const;\n\nconst COLUMN = {\n\tSTART: 0,\n\tMID: 1,\n\tEND: 2,\n} as const;\n\nconst SEPARATOR_DEFAULT_VALUES = {\n\tSTART: 50,\n\tEND: 75,\n} as const;\n\nconst COLUMN_MIN_WIDTH = 248;\n\ntype SeparatorMovementSession = {\n\tseparator: HTMLElement,\n\tcursorPositionX: number, // the position X of the mouse/finger that indicates where to move the separator\n\ttmpFCLLayout: FCLLayout, // the layout that corresponds to the latest separator position\n};\n\ntype FlexibleColumnLayoutColumnLayout = Array<string | number>;\n\ntype FlexibleColumnLayoutLayoutChangeEventDetail = {\n\tlayout: `${FCLLayout}`,\n\tcolumnLayout: FlexibleColumnLayoutColumnLayout,\n\tstartColumnVisible: boolean,\n\tmidColumnVisible: boolean,\n\tendColumnVisible: boolean,\n\tseparatorsUsed: boolean,\n\tresized: boolean,\n};\n\ntype FCLAccessibilityRoles = Extract<AriaLandmarkRole, \"none\" | \"complementary\" | \"contentinfo\" | \"main\" | \"region\">\ntype FCLAccessibilityAttributes = {\n\tstartColumn?: {\n\t\trole: FCLAccessibilityRoles,\n\t\tname: string,\n\t},\n\tmidColumn?: {\n\t\trole: FCLAccessibilityRoles,\n\t\tname: string,\n\t},\n\tendColumn?: {\n\t\trole: FCLAccessibilityRoles,\n\t\tname: string,\n\t},\n\tstartSeparator?: {\n\t\trole: FCLAccessibilityRoles,\n\t\tname: string,\n\t},\n\tendSeparator?: {\n\t\trole: FCLAccessibilityRoles,\n\t\tname: string,\n\t},\n}\n\ntype UserDefinedColumnLayouts = {\n\t\"tablet\": {\n\t\t[layoutName in FCLLayout]?: FlexibleColumnLayoutColumnLayout;\n\t},\n\t\"desktop\": {\n\t\t[layoutName in FCLLayout]?: FlexibleColumnLayoutColumnLayout;\n\t},\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `FlexibleColumnLayout` implements the list-detail-detail paradigm by displaying up to three pages in separate columns.\n * There are several possible layouts that can be changed either with the component API, or by dragging the column separators.\n *\n * ### Usage\n *\n * Use this component for applications that need to display several logical levels of related information side by side (e.g. list of items, item, sub-item, etc.).\n * The Component is flexible in a sense that the application can focus the user's attention on one particular column.\n *\n * ### Responsive Behavior\n *\n * The `FlexibleColumnLayout` automatically displays the maximum possible number of columns based on `layout` property and the window size.\n * The component would display 1 column for window size smaller than 599px, up to two columns between 599px and 1023px,\n * and 3 columns for sizes bigger than 1023px.\n *\n * **Note:** When the component displays more than one column, the minimal width of each column is 248px. Consequently, when the user drags a column separator to resize the columns, the minimal allowed width of any resized column is 248px.\n *\n * ### Keyboard Handling\n *\n * #### Basic Navigation\n *\n * When a column separator is focused, the following keyboard\n * shortcuts allow the user to resize the columns and change the layout:\n *\n * - [Shift] + [Left] or [Shift] + [Right] - Moves the separator to the left or right, which resizes the columns accordingly.\n * - [Left] or [Right] - Moves the separator to the left or right with a bigger step, which resizes the columns accordingly.\n * - [Home] - Moves the separator to the start position.\n * - [End] - Moves the separator to the end position.\n * - This component provides a build in fast navigation group which can be used via [F6] / [Shift] + [F6] / [Ctrl] + [Alt/Option] / [Down] or [Ctrl] + [Alt/Option] + [Up].\n * In order to use this functionality, you need to import the following module:\n * `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n *\n * #### Fast Navigation\n * This component provides a build in fast navigation group which can be used via [F6] / [Shift] + [F6] / [Ctrl] + [Alt/Option] / [Down] or [Ctrl] + [Alt/Option] + [Up].\n * In order to use this functionality, you need to import the following module:\n * `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/FlexibleColumnLayout.js\";`\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.0.0-rc.8\n */\n@customElement({\n\ttag: \"ui5-flexible-column-layout\",\n\tfastNavigation: true,\n\trenderer: jsxRenderer,\n\tstyles: FlexibleColumnLayoutCss,\n\ttemplate: FlexibleColumnLayoutTemplate,\n\tdependencies: [Icon, Button],\n})\n\n/**\n * Fired when the layout changes via user interaction by dragging the separators\n * or by changing the component size due to resizing.\n * @param {FCLLayout} layout The current layout\n * @param {array} columnLayout The effective column layout, f.e [67%, 33%, 0]\n * @param {boolean} startColumnVisible Indicates if the start column is currently visible\n * @param {boolean} midColumnVisible Indicates if the middle column is currently visible\n * @param {boolean} endColumnVisible Indicates if the end column is currently visible\n * @param {boolean} separatorsUsed Indicates if the layout was changed by dragging the column separators\n * @param {boolean} resized Indicates if the layout was changed by resizing the entire component\n * @public\n */\n@event(\"layout-change\", {\n\tbubbles: true,\n})\nclass FlexibleColumnLayout extends UI5Element {\n\teventDetails!: {\n\t\t\"layout-change\": FlexibleColumnLayoutLayoutChangeEventDetail,\n\t}\n\t/**\n\t* Defines the columns layout and their proportion.\n\t*\n\t* **Note:** The layout also depends on the screen size - one column for screens smaller than 599px,\n\t* two columns between 599px and 1023px and three columns for sizes bigger than 1023px.\n\t*\n\t* **For example:** layout=`TwoColumnsStartExpanded` means the layout will display up to two columns\n\t* in 67%/33% proportion.\n\t* @default \"OneColumn\"\n\t* @public\n\t*/\n\t@property()\n\tlayout: `${FCLLayout}` = \"OneColumn\";\n\n\t/**\n\t* Specifies if the user is allowed to change the columns layout by dragging the separator between the columns.\n\t* @default false\n\t* @public\n\t* @since 2.0.0\n\t*/\n\t@property({ type: Boolean })\n\tdisableResizing = false;\n\n\t/**\n\t* Defines additional accessibility attributes on different areas of the component.\n\t*\n\t* The accessibilityAttributes object has the following fields,\n\t* where each field is an object supporting one or more accessibility attributes:\n\t*\n\t* - **startColumn**: `startColumn.role` and `startColumn.name`.\n\t* - **midColumn**: `midColumn.role` and `midColumn.name`.\n\t* - **endColumn**: `endColumn.role` and `endColumn.name`.\n\t* - **startSeparator**: `startSeparator.role` and `startSeparator.name`.\n\t* - **endSeparator**: `endSeparator.role` and `endSeparator.name`.\n\t*\n\t* The accessibility attributes support the following values:\n\t*\n\t* - **role**: Defines the accessible ARIA landmark role of the area.\n\t* Accepts the following values: `none`, `complementary`, `contentinfo`, `main` or `region`.\n\t*\n\t* - **name**: Defines the accessible ARIA name of the area.\n\t* Accepts any string.\n\t*\n\t* @default {}\n\t* @public\n\t* @since 2.0.0\n\t*/\n\t@property({ type: Object })\n\taccessibilityAttributes: FCLAccessibilityAttributes = {};\n\n\t/**\n\t* Defines the component width in px.\n\t* @default 0\n\t* @private\n\t*/\n\t@property({ type: Number })\n\t_width = 0;\n\n\t/**\n\t* Defines the effective columns layout,\n\t* based on both the `layout` property and the screen size.\n\t* Example: [67%, 33%, 0], [25%, 50%, 25%], etc.\n\t* @default undefined\n\t* @private\n\t*/\n\t@property({ type: Array })\n\t_columnLayout?: FlexibleColumnLayoutColumnLayout;\n\n\t/**\n\t* Defines the visible columns count - 1, 2 or 3.\n\t* @default 1\n\t* @private\n\t*/\n\t@property({ type: Number })\n\t_visibleColumns = 1;\n\n\t/**\n\t* Defines if the user is currently resizing the columns by dragging their separator.\n\t* @default false\n\t* @private\n\t*/\n\t@property({ type: Boolean })\n\t_resizing = false;\n\n\t/**\n\t* Allows the user to replace the whole layouts configuration\n\t* @private\n\t*/\n\t@property({ type: Object })\n\t_layoutsConfiguration?: LayoutConfiguration;\n\n\t/**\n\t* Defines the content in the start column.\n\t* @public\n\t*/\n\t@slot()\n\tstartColumn!: Array<HTMLElement>;\n\n\t/**\n\t* Defines the content in the middle column.\n\t* @public\n\t*/\n\t@slot()\n\tmidColumn!: Array<HTMLElement>;\n\n\t/**\n\t* Defines the content in the end column.\n\t* @public\n\t*/\n\t@slot()\n\tendColumn!: Array<HTMLElement>;\n\n\tinitialRendering: boolean;\n\t_handleResize: () => void;\n\t_onSeparatorMove: (e: TouchEvent | MouseEvent) => void;\n\t_onSeparatorMoveEnd: (e: TouchEvent | MouseEvent) => void;\n\tonColumnCollapseAnimationEndRef: (e: TransitionEvent) => void;\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\n\t_prevLayout: `${FCLLayout}` | null;\n\t_userDefinedColumnLayouts: UserDefinedColumnLayouts = {\n\t\ttablet: {},\n\t\tdesktop: {},\n\t};\n\t_ontouchstart: PassiveEventListenerObject;\n\tseparatorMovementSession?: SeparatorMovementSession | null;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._prevLayout = null;\n\t\tthis.initialRendering = true;\n\t\tthis._handleResize = this.handleResize.bind(this);\n\t\tthis._onSeparatorMove = this.onSeparatorMove.bind(this);\n\t\tthis._onSeparatorMoveEnd = this.onSeparatorMoveEnd.bind(this);\n\t\tthis.onColumnCollapseAnimationEndRef = this.onColumnCollapseAnimationEnd.bind(this);\n\n\t\tconst handleTouchStartEvent = (e: TouchEvent) => {\n\t\t\tthis.onSeparatorPress(e);\n\t\t};\n\n\t\tthis._ontouchstart = {\n\t\t\thandleEvent: handleTouchStartEvent,\n\t\t\tpassive: true,\n\t\t};\n\t}\n\n\tstatic get ANIMATION_DURATION() {\n\t\treturn getAnimationMode() !== AnimationMode.None ? 560 : 0;\n\t}\n\n\tonEnterDOM() {\n\t\tResizeHandler.register(this, this._handleResize.bind(this));\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(this, this._handleResize);\n\t}\n\n\tonAfterRendering() {\n\t\tif (this.initialRendering) {\n\t\t\tthis.handleInitialRendering();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.syncLayout();\n\t}\n\n\thandleInitialRendering() {\n\t\tthis._prevLayout = this.layout;\n\t\tthis.updateLayout();\n\t\tthis.initialRendering = false;\n\t}\n\n\thandleResize() {\n\t\tif (this.initialRendering) {\n\t\t\treturn;\n\t\t}\n\n\t\t// store the previous layout\n\t\tconst prevLayoutHash = this.columnLayout!.join();\n\n\t\t// update the column layout, based on the current width\n\t\tthis.updateLayout();\n\n\t\t// fire layout-change if the column layout changed\n\t\tif (prevLayoutHash !== this.columnLayout!.join()) {\n\t\t\tthis.fireLayoutChange(false, true);\n\t\t}\n\t}\n\n\tupdateLayout() {\n\t\tthis._width = this.widthDOM;\n\t\tthis._columnLayout = this.nextColumnLayout(this.effectiveLayout);\n\t\tthis._visibleColumns = this.calcVisibleColumns(this._columnLayout);\n\t\tthis.toggleColumns();\n\t}\n\n\tsyncLayout() {\n\t\tif (this._prevLayout !== this.layout) {\n\t\t\tthis.updateLayout();\n\t\t\tthis._prevLayout = this.layout;\n\t\t}\n\t}\n\n\ttoggleColumns() {\n\t\tthis.toggleColumn(\"start\");\n\t\tthis.toggleColumn(\"mid\");\n\t\tthis.toggleColumn(\"end\");\n\t}\n\n\ttoggleColumn(column: string) {\n\t\tlet columnWidth;\n\t\tlet columnDOM;\n\n\t\tif (column === \"start\") {\n\t\t\tcolumnWidth = this.startColumnWidth;\n\t\t\tcolumnDOM = this.startColumnDOM;\n\t\t} else if (column === \"mid\") {\n\t\t\tcolumnWidth = this.midColumnWidth;\n\t\t\tcolumnDOM = this.midColumnDOM;\n\t\t} else {\n\t\t\tcolumnWidth = this.endColumnWidth;\n\t\t\tcolumnDOM = this.endColumnDOM;\n\t\t}\n\n\t\tconst currentlyHidden = this._isColumnHidden(columnWidth);\n\t\tconst previouslyHidden = this._isColumnHidden(columnDOM.style.width);\n\n\t\t// no change\n\t\tif (currentlyHidden && previouslyHidden) {\n\t\t\treturn;\n\t\t}\n\n\t\t// column resizing: from 33% to 67%, from 25% to 50%, etc.\n\t\tif (!currentlyHidden && !previouslyHidden) {\n\t\t\tcolumnDOM.style.width = typeof columnWidth === \"number\" ? `${columnWidth}px` : columnWidth;\n\t\t\treturn;\n\t\t}\n\n\t\t// hide column: 33% to 0, 25% to 0, etc .\n\t\tif (currentlyHidden) {\n\t\t\tthis.collapseColumn(columnDOM);\n\t\t\treturn;\n\t\t}\n\n\t\t// show column: from 0 to 33%, from 0 to 25%, etc.\n\t\tif (previouslyHidden) {\n\t\t\tthis.expandColumn(columnDOM, columnWidth);\n\t\t}\n\t}\n\n\texpandColumn(columnDOM: HTMLElement, columnWidth: string | number) {\n\t\tcolumnDOM.removeEventListener(\"transitionend\", this.onColumnCollapseAnimationEndRef);\n\n\t\tcolumnDOM.classList.remove(\"ui5-fcl-column--hidden\");\n\t\tcolumnDOM.style.width = typeof columnWidth === \"number\" ? `${columnWidth}px` : columnWidth;\n\t}\n\n\tcollapseColumn(columnDOM: HTMLElement) {\n\t\tconst hasAnimation = getAnimationMode() !== AnimationMode.None && !this.initialRendering;\n\t\tcolumnDOM.style.width = \"0px\";\n\n\t\tif (hasAnimation) {\n\t\t\t// hide column with delay to allow the animation runs entirely\n\t\t\tcolumnDOM.classList.add(\"ui5-fcl-column-collapse-animation\");\n\t\t\tcolumnDOM.addEventListener(\"transitionend\", this.onColumnCollapseAnimationEndRef);\n\t\t} else {\n\t\t\tcolumnDOM.classList.add(\"ui5-fcl-column--hidden\");\n\t\t}\n\t}\n\n\tonColumnCollapseAnimationEnd = (e: Event) => {\n\t\tconst columnDOM = e.target as HTMLElement;\n\t\tcolumnDOM.classList.add(\"ui5-fcl-column--hidden\");\n\t\tcolumnDOM.classList.remove(\"ui5-fcl-column-collapse-animation\");\n\t\tcolumnDOM.removeEventListener(\"transitionend\", this.onColumnCollapseAnimationEndRef);\n\t}\n\n\tnextColumnLayout(layout: `${FCLLayout}`) {\n\t\tlet userDefinedLayout;\n\t\tif (this.media !== MEDIA.PHONE) {\n\t\t\tuserDefinedLayout = this._userDefinedColumnLayouts[this.media][layout];\n\t\t}\n\t\treturn userDefinedLayout || this._effectiveLayoutsByMedia[this.media][layout].layout;\n\t}\n\n\tcalcVisibleColumns(colLayout: FlexibleColumnLayoutColumnLayout) {\n\t\treturn colLayout.filter(colWidth => !this._isColumnHidden(colWidth)).length;\n\t}\n\n\tfireLayoutChange(separatorUsed: boolean, resized: boolean) {\n\t\tthis.fireDecoratorEvent(\"layout-change\", {\n\t\t\tlayout: this.layout,\n\t\t\tcolumnLayout: this._columnLayout!,\n\t\t\tstartColumnVisible: this.startColumnVisible,\n\t\t\tmidColumnVisible: this.midColumnVisible,\n\t\t\tendColumnVisible: this.endColumnVisible,\n\t\t\tseparatorsUsed: separatorUsed,\n\t\t\tresized,\n\t\t});\n\t}\n\n\tonSeparatorPress(e: TouchEvent | MouseEvent) {\n\t\tif (e.target as HTMLElement === this.startArrowDOM) {\n\t\t\treturn;\n\t\t}\n\t\tconst pressedSeparator = (e.target as HTMLElement).closest(\".ui5-fcl-separator\") as HTMLElement;\n\t\tif ((pressedSeparator.classList.contains(\"ui5-fcl-separator-start\") && !this.showStartSeparatorGrip)\n\t\t\t|| (pressedSeparator.classList.contains(\"ui5-fcl-separator-end\") && !this.showEndSeparatorGrip)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isTouch = supportsTouch() && e instanceof TouchEvent,\n\t\t\tcursorPositionX = this.getPageXValueFromEvent(e);\n\n\t\tthis.separatorMovementSession = this.initSeparatorMovementSession(pressedSeparator, cursorPositionX, isTouch);\n\t}\n\n\tonSeparatorMove(e: TouchEvent | MouseEvent) {\n\t\te.preventDefault(); // prevent text selection etc. while dragging\n\n\t\tif (!this.separatorMovementSession) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst latestCursorX = this.getPageXValueFromEvent(e),\n\t\t\tmovementDelta = latestCursorX - this.separatorMovementSession.cursorPositionX;\n\n\t\tif (!movementDelta) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst movedSeparator = this.separatorMovementSession.separator,\n\t\t\tlatestSeparatorX = movedSeparator.getBoundingClientRect().x,\n\t\t\tisForwardMove = movementDelta > 0; // is start-to-end direction\n\n\t\t// if the dragged separator was re-rendered away from the cursor\n\t\t// due to change of layout during drag\n\t\t// => check if the cursor lags-behind the separator\n\t\t// and skip resizing untill the cursor catches-up with the separator\n\t\tif (this.isSeparatorAheadOfCursor(latestCursorX, latestSeparatorX, isForwardMove)) {\n\t\t\tthis.separatorMovementSession.cursorPositionX = latestCursorX;\n\t\t\treturn;\n\t\t}\n\n\t\tconst layoutBeforeMove = this.separatorMovementSession.tmpFCLLayout;\n\t\t// synchronously move the separator in DOM => resizes the columns accordingly\n\t\tconst layoutAfterMove = this.moveSeparator(movedSeparator, movementDelta, layoutBeforeMove);\n\n\t\tthis.separatorMovementSession.cursorPositionX = latestCursorX;\n\t\tthis.separatorMovementSession.tmpFCLLayout = layoutAfterMove;\n\t}\n\n\tprivate onSeparatorMoveEnd() {\n\t\tif (!this.separatorMovementSession) {\n\t\t\treturn;\n\t\t}\n\t\tconst newLayout = this.separatorMovementSession.tmpFCLLayout;\n\t\tconst newColumnLayout = this._columnLayout!;\n\n\t\tthis.saveUserDefinedColumnLayout(newLayout, newColumnLayout);\n\t\tthis.exitSeparatorMovementSession();\n\t}\n\n\tinitSeparatorMovementSession(separator: HTMLElement, cursorPositionX: number, isTouch: boolean) {\n\t\tthis.attachMoveListeners(isTouch);\n\t\tthis.toggleSideAnimations(separator, false); // disable animations for side colmns to prevent slowdown while dragging\n\t\tthis._resizing = true;\n\n\t\treturn {\n\t\t\tseparator,\n\t\t\tcursorPositionX,\n\t\t\ttmpFCLLayout: this.layout as FCLLayout,\n\t\t};\n\t}\n\n\texitSeparatorMovementSession() {\n\t\tconst movedSeparator = this.separatorMovementSession!.separator;\n\t\tconst hasAnimation = getAnimationMode() !== AnimationMode.None;\n\n\t\tthis.detachMoveListeners();\n\t\tthis.toggleSideAnimations(movedSeparator, hasAnimation); // restore animations for side columns\n\t\tthis._resizing = false;\n\n\t\tmovedSeparator.focus();\n\t\tthis.separatorMovementSession = null;\n\t}\n\n\tsaveUserDefinedColumnLayout(newLayout: FCLLayout, newColumnLayout: FlexibleColumnLayoutColumnLayout) {\n\t\tconst media = this.media as MEDIA.TABLET | MEDIA.DESKTOP;\n\n\t\tthis._userDefinedColumnLayouts[media][newLayout] = newColumnLayout;\n\t\tif (this.layout !== newLayout) {\n\t\t\tthis.layout = newLayout;\n\t\t\tthis.fireLayoutChange(true, false);\n\t\t}\n\t}\n\n\tprivate isSeparatorAheadOfCursor(cursorX: number, separatorX: number, isForwardMove: boolean) {\n\t\tif (isForwardMove) {\n\t\t\treturn separatorX > cursorX;\n\t\t}\n\t\treturn separatorX < cursorX;\n\t}\n\n\tcalculateNewColumnWidth(columnToResize: typeof COLUMN.START | typeof COLUMN.END, widthDelta: number) {\n\t\tconst columnWidths: Array<number> = this._columnLayout!.map(x => this.convertColumnWidthToPixels(x)),\n\t\t\tadjacentColumnToResize = COLUMN.MID, // column to compensate the resize of the given column\n\t\t\tcolumnNewWidth = columnWidths[columnToResize] + widthDelta,\n\t\t\tadjacentColumnNewWidth = columnWidths[adjacentColumnToResize] - widthDelta;\n\n\t\tif (columnNewWidth < COLUMN_MIN_WIDTH) {\n\t\t\t// user is trying to shrink a column below its min-width\n\t\t\t// or to reveal a hidden column\n\t\t\treturn COLUMN_MIN_WIDTH;\n\t\t}\n\n\t\tif (adjacentColumnNewWidth < COLUMN_MIN_WIDTH) {\n\t\t\tconst correction = COLUMN_MIN_WIDTH - adjacentColumnNewWidth;\n\t\t\t// constrain the new width to preserve the min-width of the adjacent column\n\t\t\treturn columnNewWidth - correction;\n\t\t}\n\n\t\treturn columnNewWidth;\n\t}\n\n\tmoveSeparator(separator: HTMLElement, offsetX: number, fclLayoutBeforeMove: FCLLayout) {\n\t\tconst isStartSeparator = separator === this.startSeparatorDOM,\n\t\t\tisRTL = this.effectiveDir === \"rtl\";\n\t\tlet selectedColumnToResize,\n\t\t\tcolumnWidthDelta;\n\n\t\tif (isRTL) {\n\t\t\toffsetX = -offsetX;\n\t\t}\n\n\t\tif (isStartSeparator) {\n\t\t\tselectedColumnToResize = COLUMN.START;\n\t\t\t// move in direction start-to-end expands start column\n\t\t\tcolumnWidthDelta = offsetX;\n\t\t} else {\n\t\t\tselectedColumnToResize = COLUMN.END;\n\t\t\t// move in direction start-to-end shrinks end column\n\t\t\tcolumnWidthDelta = -offsetX;\n\t\t}\n\n\t\tconst isStartToEndDirection = offsetX > 0,\n\t\t\tnewColumnWidth = this.calculateNewColumnWidth(selectedColumnToResize, columnWidthDelta),\n\t\t\tnewColumnLayout = this.adjustColumnLayout(selectedColumnToResize, newColumnWidth, true)!,\n\t\t\tnewFCLLayout = this.getNextLayoutOnSeparatorMovement(separator, isStartToEndDirection, fclLayoutBeforeMove, newColumnLayout) as FCLLayout;\n\n\t\tif (fclLayoutBeforeMove !== newFCLLayout) {\n\t\t\tthis._columnLayout = this.nextColumnLayout(newFCLLayout);\n\t\t\tthis._visibleColumns = this.calcVisibleColumns(this._columnLayout);\n\t\t}\n\n\t\t// apply the requested resize on <code>this._columnLayout</code>\n\t\tthis.adjustColumnLayout(selectedColumnToResize, newColumnWidth);\n\n\t\tthis.toggleColumns();\n\n\t\treturn newFCLLayout;\n\t}\n\n\tadjustColumnLayout(columnToResize: typeof COLUMN.START | typeof COLUMN.END, newSize: number, createNewArray = false) {\n\t\tif (!this._columnLayout) {\n\t\t\treturn;\n\t\t}\n\t\tconst columnLayoutInPx = this._columnLayout.map(x => this.convertColumnWidthToPixels(x));\n\n\t\t// apply the new size\n\t\tcolumnLayoutInPx[columnToResize] = newSize;\n\t\tcolumnLayoutInPx[COLUMN.MID] = this._availableWidthForColumns\n\t\t\t- columnLayoutInPx[COLUMN.START]\n\t\t\t- columnLayoutInPx[COLUMN.END];\n\n\t\tconst columnLayoutToAdjust = createNewArray ? [] : this._columnLayout;\n\n\t\tcolumnLayoutInPx.forEach((x, i) => {\n\t\t\tcolumnLayoutToAdjust[i] = this.convertToRelativeColumnWidth(columnLayoutInPx[i]);\n\t\t});\n\n\t\treturn columnLayoutToAdjust;\n\t}\n\n\t_onArrowKeydown(e: KeyboardEvent) {\n\t\tif (isEnter(e) || isSpace(e)) {\n\t\t e.preventDefault();\n\t\t const focusedElement = e.target as HTMLElement;\n\t\t if (focusedElement === this.startArrowDOM) {\n\t\t\t\tthis.switchLayoutOnArrowPress();\n\t\t }\n\t\t}\n\t }\n\n\tasync _onSeparatorKeydown(e: KeyboardEvent) {\n\t\tconst separator = e.target as HTMLElement;\n\t\tif (!separator.classList.contains(\"ui5-fcl-separator\")) {\n\t\t\treturn;\n\t\t}\n\t\tconst stepSize = 2,\n\t\t\tbigStepSize = this._width,\n\t\t\tisRTL = this.effectiveDir === \"rtl\";\n\t\tlet step = 0;\n\n\t\tif (isLeft(e)) {\n\t\t\tstep = -stepSize * 10;\n\t\t} else if (isRight(e)) {\n\t\t\tstep = stepSize * 10;\n\t\t} else if (isLeftShift(e)) {\n\t\t\tstep = -stepSize;\n\t\t} else if (isRightShift(e)) {\n\t\t\tstep = stepSize;\n\t\t} else if (isHome(e)) {\n\t\t\te.preventDefault();\n\t\t\tstep = isRTL ? bigStepSize : -bigStepSize;\n\t\t} else if (isEnd(e)) {\n\t\t\te.preventDefault();\n\t\t\tstep = isRTL ? -bigStepSize : bigStepSize;\n\t\t}\n\n\t\tif (!step) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.separatorMovementSession) {\n\t\t\tthis.separatorMovementSession = this.initSeparatorMovementSession(separator, 0, false);\n\t\t}\n\n\t\tconst layoutBeforeMove = this.separatorMovementSession.tmpFCLLayout;\n\t\tconst layoutAfterMove = this.moveSeparator(separator, step, layoutBeforeMove);\n\n\t\tthis.separatorMovementSession.tmpFCLLayout = layoutAfterMove;\n\n\t\tawait renderFinished();\n\t\tseparator.focus();\n\t}\n\n\t_onSeparatorKeyUp() {\n\t\tif (this.separatorMovementSession) {\n\t\t\tthis.onSeparatorMoveEnd();\n\t\t}\n\t}\n\n\tprivate attachMoveListeners(isTouch: boolean) {\n\t\tconst domRef = this.getDomRef();\n\t\tif (!domRef) {\n\t\t\treturn;\n\t\t}\n\t\tif (isTouch && supportsTouch()) {\n\t\t\tdomRef.addEventListener(\"touchmove\", this._onSeparatorMove);\n\t\t\tdomRef.addEventListener(\"touchend\", this._onSeparatorMoveEnd);\n\t\t} else {\n\t\t\tdomRef.addEventListener(\"mousemove\", this._onSeparatorMove);\n\t\t\tdomRef.addEventListener(\"mouseup\", this._onSeparatorMoveEnd);\n\t\t}\n\t}\n\n\tprivate detachMoveListeners() {\n\t\tconst domRef = this.getDomRef();\n\t\tif (!domRef) {\n\t\t\treturn;\n\t\t}\n\t\tdomRef.removeEventListener(\"mouseup\", this._onSeparatorMoveEnd);\n\t\tdomRef.removeEventListener(\"touchend\", this._onSeparatorMoveEnd);\n\t\t// Only one of the following was attached, but it's ok to remove both as there is no error\n\t\tdomRef.removeEventListener(\"mousemove\", this._onSeparatorMove);\n\t\tdomRef.removeEventListener(\"touchmove\", this._onSeparatorMove);\n\t}\n\n\tprivate toggleSideAnimations(separator: HTMLElement, shouldAnimate: boolean) {\n\t\tconst adjacentColumns = [\n\t\t\tseparator.previousElementSibling,\n\t\t\tseparator.nextElementSibling,\n\t\t];\n\n\t\tadjacentColumns.forEach(column => column!.classList.toggle(\"ui5-fcl-column-animation\", shouldAnimate));\n\t}\n\n\tprivate getPageXValueFromEvent(e: TouchEvent | MouseEvent): number {\n\t\tif (supportsTouch() && e instanceof TouchEvent) {\n\t\t\tif (e.changedTouches && e.changedTouches.length > 0) {\n\t\t\t\treturn e.changedTouches[0].pageX;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn (e as MouseEvent).pageX; // MouseEvent\n\t}\n\n\tconvertColumnWidthToPixels(width: string | number) {\n\t\tif (typeof width === \"number\") {\n\t\t\treturn width;\n\t\t}\n\t\tconst parsedValue = parseFloat(width),\n\t\t\ttotalWidth = this._availableWidthForColumns;\n\n\t\tif (width.endsWith(\"%\")) {\n\t\t\treturn (totalWidth / 100) * parsedValue;\n\t\t}\n\t\treturn parsedValue;\n\t}\n\n\tconvertToRelativeColumnWidth(pxWidth: string | number) {\n\t\tif (typeof pxWidth === \"string\") {\n\t\t\treturn pxWidth;\n\t\t}\n\t\tif (pxWidth === 0) {\n\t\t\treturn \"0px\";\n\t\t}\n\t\treturn `${(pxWidth / this._availableWidthForColumns) * 100}%`;\n\t}\n\n\tgetNextLayoutOnSeparatorMovement(separator: HTMLElement, isStartToEndDirection: boolean, fclLayoutBeforeMove: FCLLayout, columnLayoutAfterMove: FlexibleColumnLayoutColumnLayout) {\n\t\tconst isStartSeparator = separator === this.startSeparatorDOM,\n\t\t\tseparatorName = isStartSeparator ? \"start\" : \"end\",\n\t\t\tmoved = (options: {separator: \"start\" | \"end\", from: FCLLayout, forward: boolean}) => {\n\t\t\t\treturn options.from === fclLayoutBeforeMove\n\t\t\t\t&& options.separator === separatorName\n\t\t\t\t&& options.forward === isStartToEndDirection;\n\t\t\t},\n\t\t\tnewColumnLayout = columnLayoutAfterMove.map(x => this.convertColumnWidthToPixels(x)),\n\t\t\tnewColumnWidths = {\n\t\t\t\tstart: newColumnLayout[0],\n\t\t\t\tmid: newColumnLayout[1],\n\t\t\t\tend: newColumnLayout[2],\n\t\t\t},\n\t\t\tstartColumnPxWidth = newColumnWidths.start,\n\t\t\tstartColumnPercentWidth = (startColumnPxWidth / this.widthDOM) * 100,\n\t\t\tisTablet = this.media === MEDIA.TABLET;\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.TwoColumnsMidExpanded,\n\t\t\tforward: true,\n\t\t}) && (newColumnWidths.start >= newColumnWidths.mid)) {\n\t\t\treturn FCLLayout.TwoColumnsStartExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.TwoColumnsStartExpanded,\n\t\t\tforward: false,\n\t\t}) && (newColumnWidths.start < newColumnWidths.mid)) {\n\t\t\treturn FCLLayout.TwoColumnsMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpanded,\n\t\t\tforward: true,\n\t\t}) && startColumnPercentWidth >= 33) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpandedEndHidden;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpandedEndHidden,\n\t\t\tforward: false,\n\t\t}) && !isTablet && startColumnPercentWidth < 33) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsStartHiddenMidExpanded,\n\t\t\tforward: true,\n\t\t}) && !isTablet && Math.ceil(startColumnPxWidth) >= COLUMN_MIN_WIDTH) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsStartHiddenMidExpanded,\n\t\t\tforward: false,\n\t\t}) && newColumnWidths.mid < newColumnWidths.end) {\n\t\t\treturn FCLLayout.ThreeColumnsStartHiddenEndExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsStartHiddenEndExpanded,\n\t\t\tforward: true,\n\t\t}) && newColumnWidths.mid >= newColumnWidths.end) {\n\t\t\treturn FCLLayout.ThreeColumnsStartHiddenMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpandedEndHidden,\n\t\t\tforward: false,\n\t\t\t// ceil before comparing to avoid floating point precision issues\n\t\t}) && ((Math.ceil(newColumnWidths.end) >= COLUMN_MIN_WIDTH))) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpanded,\n\t\t\tforward: false,\n\t\t}) && newColumnWidths.mid < newColumnWidths.end) {\n\t\t\treturn FCLLayout.ThreeColumnsEndExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsEndExpanded,\n\t\t\tforward: true,\n\t\t}) && newColumnWidths.mid >= newColumnWidths.end) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpandedEndHidden,\n\t\t\tforward: true,\n\t\t}) && newColumnWidths.start >= newColumnWidths.mid) {\n\t\t\treturn FCLLayout.ThreeColumnsStartExpandedEndHidden;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsStartExpandedEndHidden,\n\t\t\tforward: false,\n\t\t}) && newColumnWidths.start < newColumnWidths.mid) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpandedEndHidden;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpanded,\n\t\t\tforward: true,\n\t\t\t// ceil before comparing to avoid floating point precision issues\n\t\t}) && isTablet && (Math.ceil(startColumnPxWidth) >= COLUMN_MIN_WIDTH)) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpandedEndHidden;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpandedEndHidden,\n\t\t\tforward: false,\n\t\t\t// ceil before comparing to avoid floating point precision issues\n\t\t}) && isTablet && (Math.ceil(newColumnWidths.end) >= COLUMN_MIN_WIDTH)) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpanded;\n\t\t}\n\n\t\treturn fclLayoutBeforeMove; // no layout change\n\t}\n\n\tswitchLayoutOnArrowPress() {\n\t\tconst lastUsedLayout = this.layout as FCLLayout;\n\t\tthis.layout = getNextLayoutByArrowPress()[lastUsedLayout as keyof typeof getNextLayoutByArrowPress];\n\t\tif (this.layout !== lastUsedLayout) {\n\t\t\tthis.fireLayoutChange(true, false);\n\t\t}\n\t}\n\n\tget _availableWidthForColumns() {\n\t\tlet width = this._width;\n\t\tif (this.showStartSeparator) {\n\t\t\twidth -= this.startSeparatorDOM.offsetWidth;\n\t\t}\n\t\tif (this.showEndSeparator) {\n\t\t\twidth -= this.endSeparatorDOM.offsetWidth;\n\t\t}\n\t\treturn width;\n\t}\n\n\t/**\n\t * Checks if a column is hidden based on its width.\n\t */\n\tprivate _isColumnHidden(columnWidth: number | string): boolean {\n\t\treturn columnWidth === 0 || columnWidth === \"0px\";\n\t}\n\n\t/**\n\t* Returns the current column layout, based on both the `layout` property and the screen size.\n\t*\n\t* **For example:** [\"67%\", \"33%\", 0], [\"100%\", 0, 0], [\"25%\", \"50%\", \"25%\"], etc,\n\t* where the numbers represents the width of the start, middle and end columns.\n\t* @default undefined\n\t* @public\n\t*/\n\tget columnLayout(): FlexibleColumnLayoutColumnLayout | undefined {\n\t\treturn this._columnLayout;\n\t}\n\n\t/**\n\t* Returns if the `start` column is visible.\n\t* @default true\n\t* @public\n\t*/\n\tget startColumnVisible(): boolean {\n\t\tif (this._columnLayout) {\n\t\t\treturn !this._isColumnHidden(this._columnLayout[0]);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Returns if the `middle` column is visible.\n\t* @default false\n\t* @public\n\t*/\n\tget midColumnVisible(): boolean {\n\t\tif (this._columnLayout) {\n\t\t\treturn !this._isColumnHidden(this._columnLayout[1]);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Returns if the `end` column is visible.\n\t* @default false\n\t* @public\n\t*/\n\tget endColumnVisible(): boolean {\n\t\tif (this._columnLayout) {\n\t\t\treturn !this._isColumnHidden(this._columnLayout[2]);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Returns the number of currently visible columns.\n\t* @default 1\n\t* @public\n\t*/\n\tget visibleColumns(): number {\n\t\treturn this._visibleColumns;\n\t}\n\n\tget startColumnWidth() {\n\t\treturn this._columnLayout ? this._columnLayout[0] : \"100%\";\n\t}\n\n\tget midColumnWidth() {\n\t\treturn this._columnLayout ? this._columnLayout[1] : \"0px\";\n\t}\n\n\tget endColumnWidth() {\n\t\treturn this._columnLayout ? this._columnLayout[2] : \"0px\";\n\t}\n\n\tget showStartSeparator() {\n\t\treturn this.effectiveSeparatorsInfo[0].visible;\n\t}\n\n\tget showEndSeparator() {\n\t\treturn this.effectiveSeparatorsInfo[1].visible;\n\t}\n\n\tget showStartSeparatorGrip() {\n\t\treturn this.disableResizing ? false : this.startSeparatorGripVisibility;\n\t}\n\n\tget showStartSeparatorArrow() {\n\t\treturn this.disableResizing ? false : this.startSeparatorArrowVisibility;\n\t}\n\n\tget showEndSeparatorGrip() {\n\t\treturn this.disableResizing ? false : this.endSeparatorGripVisibility;\n\t}\n\n\tget startSeparatorGripVisibility() {\n\t\treturn this.effectiveSeparatorsInfo[0].gripVisible;\n\t}\n\n\tget endSeparatorGripVisibility() {\n\t\treturn this.effectiveSeparatorsInfo[1].gripVisible;\n\t}\n\n\tget startSeparatorArrowVisibility() {\n\t\treturn this.effectiveSeparatorsInfo[0].arrowVisible;\n\t}\n\n\tget startSeparatorValue() {\n\t\tconst startColumnWidth = this.startColumnWidth;\n\t\tif (typeof startColumnWidth === \"string\" && startColumnWidth.endsWith(\"%\")) {\n\t\t\treturn parseInt(startColumnWidth);\n\t\t}\n\t\treturn SEPARATOR_DEFAULT_VALUES.START;\n\t}\n\n\tget endSeparatorValue() {\n\t\tconst startColumnWidth = this.startColumnWidth;\n\t\tconst midColumnWidth = this.midColumnWidth;\n\n\t\tif (typeof startColumnWidth === \"string\" && startColumnWidth.endsWith(\"%\")\n\t\t\t&& typeof midColumnWidth === \"string\" && midColumnWidth.endsWith(\"%\")) {\n\t\t\treturn parseInt(startColumnWidth) + parseInt(midColumnWidth);\n\t\t}\n\t\treturn SEPARATOR_DEFAULT_VALUES.END;\n\t}\n\n\tget startArrowDirection() {\n\t\treturn this.effectiveSeparatorsInfo[0].arrowDirection;\n\t}\n\n\tget startArrowDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-arrow--start\")!;\n\t}\n\n\tget effectiveSeparatorsInfo() {\n\t\treturn this._effectiveLayoutsByMedia[this.media][this.effectiveLayout].separators;\n\t}\n\n\tget effectiveLayout() {\n\t\treturn this.separatorMovementSession?.tmpFCLLayout || this.layout;\n\t}\n\n\tget startSeparatorDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-separator-start\")!;\n\t}\n\n\tget endSeparatorDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-separator-end\")!;\n\t}\n\n\tget startSeparatorTabIndex() {\n\t\tif (this.showStartSeparatorGrip) {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tget endSeparatorTabIndex() {\n\t\tif (this.showEndSeparatorGrip) {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tget media() {\n\t\tif (this._width <= BREAKPOINTS.PHONE) {\n\t\t\treturn MEDIA.PHONE;\n\t\t}\n\n\t\tif (this._width <= BREAKPOINTS.TABLET) {\n\t\t\treturn MEDIA.TABLET;\n\t\t}\n\n\t\treturn MEDIA.DESKTOP;\n\t}\n\n\tget widthDOM() {\n\t\treturn this.getBoundingClientRect().width;\n\t}\n\n\tget startColumnDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-column--start\")!;\n\t}\n\n\tget midColumnDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-column--middle\")!;\n\t}\n\n\tget endColumnDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-column--end\")!;\n\t}\n\n\tget isStartColumnCollapsing() {\n\t\treturn this.startColumnDOM?.classList.contains(\"ui5-fcl-column-collapse-animation\");\n\t}\n\n\tget isMidColumnCollapsing() {\n\t\treturn this.midColumnDOM?.classList.contains(\"ui5-fcl-column-collapse-animation\");\n\t}\n\n\tget isEndColumnCollapsing() {\n\t\treturn this.endColumnDOM?.classList.contains(\"ui5-fcl-column-collapse-animation\");\n\t}\n\n\tget accStartColumnText() {\n\t\treturn this.accessibilityAttributes.startColumn?.name || FlexibleColumnLayout.i18nBundle.getText(FCL_START_COLUMN_TXT);\n\t}\n\n\tget accMiddleColumnText() {\n\t\treturn this.accessibilityAttributes.midColumn?.name || FlexibleColumnLayout.i18nBundle.getText(FCL_MIDDLE_COLUMN_TXT);\n\t}\n\n\tget accEndColumnText() {\n\t\treturn this.accessibilityAttributes.endColumn?.name || FlexibleColumnLayout.i18nBundle.getText(FCL_END_COLUMN_TXT);\n\t}\n\n\tget accStartSeparatorText() {\n\t\tlet name = this.accessibilityAttributes.startSeparator?.name;\n\t\tif (!name && this.showStartSeparatorGrip) {\n\t\t\tname = FlexibleColumnLayout.i18nBundle.getText(FCL_START_SEPARATOR_TOOLTIP);\n\t\t}\n\t\treturn name;\n\t}\n\n\tget accEndSeparatorText() {\n\t\treturn this.accessibilityAttributes.endSeparator?.name || FlexibleColumnLayout.i18nBundle.getText(FCL_END_SEPARATOR_TOOLTIP);\n\t}\n\n\tget accStartColumnRole() {\n\t\tif (this.startColumnVisible) {\n\t\t\treturn this.accessibilityAttributes.startColumn?.role || \"region\";\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tget accMiddleColumnRole() {\n\t\tif (this.midColumnVisible) {\n\t\t\treturn this.accessibilityAttributes.midColumn?.role || \"region\";\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tget accEndColumnRole() {\n\t\tif (this.endColumnVisible) {\n\t\t\treturn this.accessibilityAttributes.endColumn?.role || \"region\";\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tget accStartSeparatorRole() {\n\t\treturn this.accessibilityAttributes.startSeparator?.role || \"separator\";\n\t}\n\n\tget accEndSeparatorRole() {\n\t\treturn this.accessibilityAttributes.endSeparator?.role || \"separator\";\n\t}\n\n\tget _effectiveLayoutsByMedia() {\n\t\treturn this._layoutsConfiguration || getLayoutsByMedia();\n\t}\n\n\tget _accAttributes() {\n\t\treturn {\n\t\t\tcolumns: {\n\t\t\t\tstart: {\n\t\t\t\t\trole: this.accStartColumnRole,\n\t\t\t\t\tariaHidden: !this.startColumnVisible || undefined,\n\t\t\t\t},\n\t\t\t\tmiddle: {\n\t\t\t\t\trole: this.accMiddleColumnRole,\n\t\t\t\t\tariaHidden: !this.midColumnVisible || undefined,\n\t\t\t\t},\n\t\t\t\tend: {\n\t\t\t\t\trole: this.accEndColumnRole,\n\t\t\t\t\tariaHidden: !this.endColumnVisible || undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n}\n\nFlexibleColumnLayout.define();\n\nexport default FlexibleColumnLayout;\n\nexport type {\n\tMEDIA,\n\tFlexibleColumnLayoutLayoutChangeEventDetail,\n\tFCLAccessibilityAttributes,\n\tFlexibleColumnLayoutColumnLayout,\n};\n"]}
1
+ {"version":3,"file":"FlexibleColumnLayout.js","sourceRoot":"","sources":["../src/FlexibleColumnLayout.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { supportsTouch } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport AnimationMode from \"@ui5/webcomponents-base/dist/types/AnimationMode.js\";\nimport { getAnimationMode } from \"@ui5/webcomponents-base/dist/config/AnimationMode.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport Button from \"@ui5/webcomponents/dist/Button.js\";\nimport \"@ui5/webcomponents-icons/dist/vertical-grip.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport {\n\tisLeft,\n\tisRight,\n\tisLeftShift,\n\tisRightShift,\n\tisHome,\n\tisEnd,\n\tisEnter,\n\tisSpace,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { PassiveEventListenerObject, AriaLandmarkRole } from \"@ui5/webcomponents-base\";\nimport FCLLayout from \"./types/FCLLayout.js\";\nimport {\n\tgetDefaultLayoutsByMedia,\n\tgetNextLayoutByArrowPress,\n} from \"./fcl-utils/FCLLayout.js\";\n\n// Texts\nimport {\n\tFCL_START_COLUMN_TXT,\n\tFCL_MIDDLE_COLUMN_TXT,\n\tFCL_END_COLUMN_TXT,\n\tFCL_START_SEPARATOR_TOOLTIP,\n\tFCL_END_SEPARATOR_TOOLTIP,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport FlexibleColumnLayoutTemplate from \"./FlexibleColumnLayoutTemplate.js\";\n\n// Styles\nimport FlexibleColumnLayoutCss from \"./generated/themes/FlexibleColumnLayout.css.js\";\n\nenum MEDIA {\n\tPHONE = \"phone\",\n\tTABLET = \"tablet\",\n\tDESKTOP = \"desktop\",\n}\n\nconst BREAKPOINTS = {\n\t\"PHONE\": 599,\n\t\"TABLET\": 1023,\n} as const;\n\nconst COLUMN = {\n\tSTART: 0,\n\tMID: 1,\n\tEND: 2,\n} as const;\n\nconst SEPARATOR_DEFAULT_VALUES = {\n\tSTART: 50,\n\tEND: 75,\n} as const;\n\nconst COLUMN_MIN_WIDTH = 248;\n\ntype SeparatorMovementSession = {\n\tseparator: HTMLElement,\n\tcursorPositionX: number, // the position X of the mouse/finger that indicates where to move the separator\n\ttmpFCLLayout: FCLLayout, // the layout that corresponds to the latest separator position\n};\n\ntype FlexibleColumnLayoutColumnLayout = Array<string | 0>;\n\ntype LayoutConfiguration = {\n\t\"tablet\"?: {\n\t\t[layoutName in FCLLayout]?: {\n\t\t\tlayout: FlexibleColumnLayoutColumnLayout,\n\t\t}\n\t},\n\t\"desktop\"?: {\n\t\t[layoutName in FCLLayout]?: {\n\t\t\tlayout: FlexibleColumnLayoutColumnLayout,\n\t\t}\n\t},\n}\n\ntype FlexibleColumnLayoutLayoutChangeEventDetail = {\n\tlayout: `${FCLLayout}`,\n\tcolumnLayout: FlexibleColumnLayoutColumnLayout,\n\tstartColumnVisible: boolean,\n\tmidColumnVisible: boolean,\n\tendColumnVisible: boolean,\n\tseparatorsUsed: boolean,\n\tresized: boolean,\n};\n\ntype FlexibleColumnLayoutLayoutConfigurationChangeEventDetail = {\n\tlayout: `${FCLLayout}`,\n\tmedia: `${MEDIA}`,\n\tcolumnLayout: FlexibleColumnLayoutColumnLayout,\n};\n\ntype FCLAccessibilityRoles = Extract<AriaLandmarkRole, \"none\" | \"complementary\" | \"contentinfo\" | \"main\" | \"region\">\ntype FCLAccessibilityAttributes = {\n\tstartColumn?: {\n\t\trole: FCLAccessibilityRoles,\n\t\tname: string,\n\t},\n\tmidColumn?: {\n\t\trole: FCLAccessibilityRoles,\n\t\tname: string,\n\t},\n\tendColumn?: {\n\t\trole: FCLAccessibilityRoles,\n\t\tname: string,\n\t},\n\tstartSeparator?: {\n\t\trole: FCLAccessibilityRoles,\n\t\tname: string,\n\t},\n\tendSeparator?: {\n\t\trole: FCLAccessibilityRoles,\n\t\tname: string,\n\t},\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `FlexibleColumnLayout` implements the list-detail-detail paradigm by displaying up to three pages in separate columns.\n * There are several possible layouts that can be changed either with the component API, or by dragging the column separators.\n *\n * ### Usage\n *\n * Use this component for applications that need to display several logical levels of related information side by side (e.g. list of items, item, sub-item, etc.).\n * The Component is flexible in a sense that the application can focus the user's attention on one particular column.\n *\n * ### Responsive Behavior\n *\n * The `FlexibleColumnLayout` automatically displays the maximum possible number of columns based on `layout` property and the window size.\n * The component would display 1 column for window size smaller than 599px, up to two columns between 599px and 1023px,\n * and 3 columns for sizes bigger than 1023px.\n *\n * **Note:** When the component displays more than one column, the minimal width of each column is 248px. Consequently, when the user drags a column separator to resize the columns, the minimal allowed width of any resized column is 248px.\n *\n * ### Keyboard Handling\n *\n * #### Basic Navigation\n *\n * When a column separator is focused, the following keyboard\n * shortcuts allow the user to resize the columns and change the layout:\n *\n * - [Shift] + [Left] or [Shift] + [Right] - Moves the separator to the left or right, which resizes the columns accordingly.\n * - [Left] or [Right] - Moves the separator to the left or right with a bigger step, which resizes the columns accordingly.\n * - [Home] - Moves the separator to the start position.\n * - [End] - Moves the separator to the end position.\n * - This component provides a build in fast navigation group which can be used via [F6] / [Shift] + [F6] / [Ctrl] + [Alt/Option] / [Down] or [Ctrl] + [Alt/Option] + [Up].\n * In order to use this functionality, you need to import the following module:\n * `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n *\n * #### Fast Navigation\n * This component provides a build in fast navigation group which can be used via [F6] / [Shift] + [F6] / [Ctrl] + [Alt/Option] / [Down] or [Ctrl] + [Alt/Option] + [Up].\n * In order to use this functionality, you need to import the following module:\n * `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/FlexibleColumnLayout.js\";`\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.0.0-rc.8\n */\n@customElement({\n\ttag: \"ui5-flexible-column-layout\",\n\tfastNavigation: true,\n\trenderer: jsxRenderer,\n\tstyles: FlexibleColumnLayoutCss,\n\ttemplate: FlexibleColumnLayoutTemplate,\n\tdependencies: [Icon, Button],\n})\n\n/**\n * Fired when the layout changes via user interaction by dragging the separators\n * or by changing the component size due to resizing.\n * @param {FCLLayout} layout The current layout\n * @param {array} columnLayout The effective column layout, f.e [67%, 33%, 0]\n * @param {boolean} startColumnVisible Indicates if the start column is currently visible\n * @param {boolean} midColumnVisible Indicates if the middle column is currently visible\n * @param {boolean} endColumnVisible Indicates if the end column is currently visible\n * @param {boolean} separatorsUsed Indicates if the layout was changed by dragging the column separators\n * @param {boolean} resized Indicates if the layout was changed by resizing the entire component\n * @public\n */\n@event(\"layout-change\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the `layoutsConfiguration` changes via user interaction by dragging the separators.\n * @param {FCLLayout} layout The current layout\n * @param {MEDIA} media The current media type\n * @param {array} columnLayout The effective column layout, f.e [\"67%\", \"33%\", \"0px\"]\n * @public\n * @since 2.16.0\n * @experimental\n */\n@event(\"layout-configuration-change\", {\n\tbubbles: true,\n})\nclass FlexibleColumnLayout extends UI5Element {\n\teventDetails!: {\n\t\t\"layout-change\": FlexibleColumnLayoutLayoutChangeEventDetail,\n\t\t\"layout-configuration-change\": FlexibleColumnLayoutLayoutConfigurationChangeEventDetail,\n\t}\n\t/**\n\t* Defines the columns layout and their proportion.\n\t*\n\t* **Note:** The layout also depends on the screen size - one column for screens smaller than 599px,\n\t* two columns between 599px and 1023px and three columns for sizes bigger than 1023px.\n\t*\n\t* **For example:** layout=`TwoColumnsStartExpanded` means the layout will display up to two columns\n\t* in 67%/33% proportion.\n\t* @default \"OneColumn\"\n\t* @public\n\t*/\n\t@property()\n\tlayout: `${FCLLayout}` = \"OneColumn\";\n\n\t/**\n\t* Specifies if the user is allowed to change the columns layout by dragging the separator between the columns.\n\t* @default false\n\t* @public\n\t* @since 2.0.0\n\t*/\n\t@property({ type: Boolean })\n\tdisableResizing = false;\n\n\t/**\n\t* Defines additional accessibility attributes on different areas of the component.\n\t*\n\t* The accessibilityAttributes object has the following fields,\n\t* where each field is an object supporting one or more accessibility attributes:\n\t*\n\t* - **startColumn**: `startColumn.role` and `startColumn.name`.\n\t* - **midColumn**: `midColumn.role` and `midColumn.name`.\n\t* - **endColumn**: `endColumn.role` and `endColumn.name`.\n\t* - **startSeparator**: `startSeparator.role` and `startSeparator.name`.\n\t* - **endSeparator**: `endSeparator.role` and `endSeparator.name`.\n\t*\n\t* The accessibility attributes support the following values:\n\t*\n\t* - **role**: Defines the accessible ARIA landmark role of the area.\n\t* Accepts the following values: `none`, `complementary`, `contentinfo`, `main` or `region`.\n\t*\n\t* - **name**: Defines the accessible ARIA name of the area.\n\t* Accepts any string.\n\t*\n\t* @default {}\n\t* @public\n\t* @since 2.0.0\n\t*/\n\t@property({ type: Object })\n\taccessibilityAttributes: FCLAccessibilityAttributes = {};\n\n\t/**\n\t* Allows to customize the column proportions per screen size and layout.\n\t* If no custom proportion provided for a specific layout, the default will be used.\n\t*\n\t* **Notes:**\n\t*\n\t* - The proportions should be given in percentages. For example [\"30%\", \"40%\", \"30%\"], [\"70%\", \"30%\", 0], etc.\n\t* - The proportions should add up to 100%.\n\t* - Hidden columns are marked as \"0px\", e.g. [\"0px\", \"70%\", \"30%\"]. Specifying 0 or \"0%\" for hidden columns is also valid.\n\t* - If the proportions do not match the layout (e.g. if provided proportions [\"70%\", \"30%\", \"0px\"] for \"OneColumn\" layout), then the default proportions will be used instead.\n\t* - Whenever the user drags the columns separator to resize the columns, the `layoutsConfiguration` object will be updated with the user-specified proportions for the given layout (and the `layout-configuration-change` event will be fired).\n\t* - No custom configuration available for the phone screen size, as the default of 100% column width is always used there.\n\t* @default {}\n\t* @public\n\t* @since 2.16.0\n\t* @experimental\n\t*/\n\t@property({ type: Object })\n\tlayoutsConfiguration: LayoutConfiguration = {};\n\n\t/**\n\t* Defines the component width in px.\n\t* @default 0\n\t* @private\n\t*/\n\t@property({ type: Number })\n\t_width = 0;\n\n\t/**\n\t* Defines the effective columns layout,\n\t* based on both the `layout` property and the screen size.\n\t* Example: [67%, 33%, 0], [25%, 50%, 25%], etc.\n\t* @default undefined\n\t* @private\n\t*/\n\t@property({ type: Array })\n\t_columnLayout?: FlexibleColumnLayoutColumnLayout;\n\n\t/**\n\t* Defines the visible columns count - 1, 2 or 3.\n\t* @default 1\n\t* @private\n\t*/\n\t@property({ type: Number })\n\t_visibleColumns = 1;\n\n\t/**\n\t* Defines if the user is currently resizing the columns by dragging their separator.\n\t* @default false\n\t* @private\n\t*/\n\t@property({ type: Boolean })\n\t_resizing = false;\n\n\t/**\n\t * This property is no longer used and is replaced by `layoutsConfiguration`.\n\t * The property will be removed once all adopters migrate to `layoutsConfiguration`.\n\t*/\n\t@property({ type: Object })\n\t_layoutsConfiguration?: {\n\t\t[device in MEDIA]: {\n\t\t\t[layoutName in FCLLayout]: {\n\t\t\t\tlayout: Array<string>;\n\t\t\t\tseparators: Array<{\n\t\t\t\t\tvisible: boolean;\n\t\t\t\t}>;\n\t\t\t};\n\t\t};\n\t};\n\n\t/**\n\t* Defines the content in the start column.\n\t* @public\n\t*/\n\t@slot()\n\tstartColumn!: Array<HTMLElement>;\n\n\t/**\n\t* Defines the content in the middle column.\n\t* @public\n\t*/\n\t@slot()\n\tmidColumn!: Array<HTMLElement>;\n\n\t/**\n\t* Defines the content in the end column.\n\t* @public\n\t*/\n\t@slot()\n\tendColumn!: Array<HTMLElement>;\n\n\tinitialRendering: boolean;\n\t_handleResize: () => void;\n\t_onSeparatorMove: (e: TouchEvent | MouseEvent) => void;\n\t_onSeparatorMoveEnd: (e: TouchEvent | MouseEvent) => void;\n\tonColumnCollapseAnimationEndRef: (e: TransitionEvent) => void;\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\n\t_prevLayout: `${FCLLayout}` | null;\n\t_prevLayoutsConfiguration: LayoutConfiguration | null;\n\t_ontouchstart: PassiveEventListenerObject;\n\tseparatorMovementSession?: SeparatorMovementSession | null;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._prevLayout = null;\n\t\tthis._prevLayoutsConfiguration = null;\n\t\tthis.initialRendering = true;\n\t\tthis._handleResize = this.handleResize.bind(this);\n\t\tthis._onSeparatorMove = this.onSeparatorMove.bind(this);\n\t\tthis._onSeparatorMoveEnd = this.onSeparatorMoveEnd.bind(this);\n\t\tthis.onColumnCollapseAnimationEndRef = this.onColumnCollapseAnimationEnd.bind(this);\n\n\t\tconst handleTouchStartEvent = (e: TouchEvent) => {\n\t\t\tthis.onSeparatorPress(e);\n\t\t};\n\n\t\tthis._ontouchstart = {\n\t\t\thandleEvent: handleTouchStartEvent,\n\t\t\tpassive: true,\n\t\t};\n\t}\n\n\tstatic get ANIMATION_DURATION() {\n\t\treturn getAnimationMode() !== AnimationMode.None ? 560 : 0;\n\t}\n\n\tonEnterDOM() {\n\t\tResizeHandler.register(this, this._handleResize.bind(this));\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(this, this._handleResize);\n\t}\n\n\tonAfterRendering() {\n\t\tif (this.initialRendering) {\n\t\t\tthis.handleInitialRendering();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.syncLayoutsConfiguration();\n\t\tthis.syncLayout();\n\t}\n\n\thandleInitialRendering() {\n\t\tthis._prevLayout = this.layout;\n\t\tthis.updateLayout();\n\t\tthis.initialRendering = false;\n\t}\n\n\thandleResize() {\n\t\tif (this.initialRendering) {\n\t\t\treturn;\n\t\t}\n\n\t\t// store the previous layout\n\t\tconst prevLayoutHash = this.columnLayout!.join();\n\n\t\t// update the column layout, based on the current width\n\t\tthis.updateLayout();\n\n\t\t// fire layout-change if the column layout changed\n\t\tif (prevLayoutHash !== this.columnLayout!.join()) {\n\t\t\tthis.fireLayoutChange(false, true);\n\t\t}\n\t}\n\n\tupdateLayout() {\n\t\tthis._width = this.widthDOM;\n\t\tthis._columnLayout = this.nextColumnLayout(this.effectiveLayout);\n\t\tthis._visibleColumns = this.calcVisibleColumns(this._columnLayout);\n\t\tthis.toggleColumns();\n\t}\n\n\tsyncLayout() {\n\t\tif (this._prevLayout !== this.layout) {\n\t\t\tthis.updateLayout();\n\t\t\tthis._prevLayout = this.layout;\n\t\t}\n\t}\n\n\tsyncLayoutsConfiguration() {\n\t\tif (this._prevLayoutsConfiguration !== this.layoutsConfiguration) {\n\t\t\tthis._prevLayoutsConfiguration = this.layoutsConfiguration;\n\t\t\tif (this.nextColumnLayout(this.layout).join() !== this._columnLayout?.join() && !this.separatorMovementSession) {\n\t\t\t\tthis.updateLayout();\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleColumns() {\n\t\tthis.toggleColumn(\"start\");\n\t\tthis.toggleColumn(\"mid\");\n\t\tthis.toggleColumn(\"end\");\n\t}\n\n\ttoggleColumn(column: string) {\n\t\tlet columnWidth;\n\t\tlet columnDOM;\n\n\t\tif (column === \"start\") {\n\t\t\tcolumnWidth = this.startColumnWidth;\n\t\t\tcolumnDOM = this.startColumnDOM;\n\t\t} else if (column === \"mid\") {\n\t\t\tcolumnWidth = this.midColumnWidth;\n\t\t\tcolumnDOM = this.midColumnDOM;\n\t\t} else {\n\t\t\tcolumnWidth = this.endColumnWidth;\n\t\t\tcolumnDOM = this.endColumnDOM;\n\t\t}\n\n\t\tconst currentlyHidden = this._isColumnHidden(columnWidth);\n\t\tconst previouslyHidden = this._isColumnHidden(columnDOM.style.width);\n\n\t\t// no change\n\t\tif (currentlyHidden && previouslyHidden) {\n\t\t\treturn;\n\t\t}\n\n\t\t// column resizing: from 33% to 67%, from 25% to 50%, etc.\n\t\tif (!currentlyHidden && !previouslyHidden) {\n\t\t\tcolumnDOM.style.width = typeof columnWidth === \"number\" ? `${columnWidth}px` : columnWidth;\n\t\t\treturn;\n\t\t}\n\n\t\t// hide column: 33% to 0, 25% to 0, etc .\n\t\tif (currentlyHidden) {\n\t\t\tthis.collapseColumn(columnDOM);\n\t\t\treturn;\n\t\t}\n\n\t\t// show column: from 0 to 33%, from 0 to 25%, etc.\n\t\tif (previouslyHidden) {\n\t\t\tthis.expandColumn(columnDOM, columnWidth);\n\t\t}\n\t}\n\n\texpandColumn(columnDOM: HTMLElement, columnWidth: string | number) {\n\t\tcolumnDOM.removeEventListener(\"transitionend\", this.onColumnCollapseAnimationEndRef);\n\n\t\tcolumnDOM.classList.remove(\"ui5-fcl-column--hidden\");\n\t\tcolumnDOM.style.width = typeof columnWidth === \"number\" ? `${columnWidth}px` : columnWidth;\n\t}\n\n\tcollapseColumn(columnDOM: HTMLElement) {\n\t\tconst hasAnimation = getAnimationMode() !== AnimationMode.None && !this.initialRendering;\n\t\tcolumnDOM.style.width = \"0px\";\n\n\t\tif (hasAnimation) {\n\t\t\t// hide column with delay to allow the animation runs entirely\n\t\t\tcolumnDOM.classList.add(\"ui5-fcl-column-collapse-animation\");\n\t\t\tcolumnDOM.addEventListener(\"transitionend\", this.onColumnCollapseAnimationEndRef);\n\t\t} else {\n\t\t\tcolumnDOM.classList.add(\"ui5-fcl-column--hidden\");\n\t\t}\n\t}\n\n\tonColumnCollapseAnimationEnd = (e: Event) => {\n\t\tconst columnDOM = e.target as HTMLElement;\n\t\tcolumnDOM.classList.add(\"ui5-fcl-column--hidden\");\n\t\tcolumnDOM.classList.remove(\"ui5-fcl-column-collapse-animation\");\n\t\tcolumnDOM.removeEventListener(\"transitionend\", this.onColumnCollapseAnimationEndRef);\n\t}\n\n\tnextColumnLayout(layout: `${FCLLayout}`) {\n\t\treturn this.getCustomColumnLayout(layout) || this.getDefaultColumnLayout(layout);\n\t}\n\n\t/**\n\t * Gets custom column layout configuration if available and valid.\n\t * Ensures all visible columns meet minimum width requirements.\n\t * @param layout The FCL layout to get configuration for\n\t * @returns Normalized column layout or undefined if invalid/unavailable\n\t */\n\tgetCustomColumnLayout(layout: `${FCLLayout}`) {\n\t\t// Only allow custom configuration for tablet and desktop (not phone)\n\t\tif (!this.mediaAllowsCustomConfiguration(this.media)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst customLayout = this.layoutsConfiguration[this.media]?.[layout]?.layout;\n\t\tif (!customLayout) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// ensure visible columns are above min-width given the current fcl total width\n\t\tconst constraintCompliantLayout = this.applyMinimumWidthConstraints(customLayout);\n\t\tif (this.isValidColumnLayout(constraintCompliantLayout)) { // satisfy layout-specific contraints\n\t\t\treturn constraintCompliantLayout;\n\t\t}\n\t}\n\n\tgetDefaultColumnLayout(layout: `${FCLLayout}`) {\n\t\treturn getDefaultLayoutsByMedia()[this.media][layout].layout;\n\t}\n\n\tmediaAllowsCustomConfiguration(media: MEDIA) {\n\t\treturn media !== MEDIA.PHONE;\n\t}\n\n\t/**\n\t * Applies minimum width constraints to column layout configuration.\n\t * Ensures all visible columns meet the minimum width requirement by transferring\n\t * space from the wider columns to the undersized columns.\n\t * @param columnLayout Original column layout (percentages or pixels)\n\t * @returns Constraint-compliant column layout in same format as input\n\t */\n\tapplyMinimumWidthConstraints(columnLayout: (string | 0)[]) {\n\t\treturn this.doWithPixelConversion(columnLayout, pxWidths => {\n\t\t\treturn this.adjustColumnsToMinimumWidth(pxWidths);\n\t\t});\n\t}\n\n\t/**\n\t * Adjusts column widths to ensure minimum width constraints.\n\t * Takes width from the widest columns to bring undersized columns up to minimum.\n\t * @param pxWidths Array of column widths in pixels (modified in place)\n\t */\n\tadjustColumnsToMinimumWidth(pxWidths: number[]) {\n\t\tconst adjustedWidths = [...pxWidths];\n\n\t\tlet totalDeficit = 0;\n\t\tfor (let i = 0; i < adjustedWidths.length; i++) {\n\t\t\tconst width = adjustedWidths[i];\n\t\t\tconst isBelowMinimum = Math.ceil(width) < COLUMN_MIN_WIDTH; // ceil to avoid floating point precision issues\n\n\t\t\tif (!this._isColumnHidden(width) && isBelowMinimum) {\n\t\t\t\ttotalDeficit += COLUMN_MIN_WIDTH - width;\n\t\t\t\tadjustedWidths[i] = COLUMN_MIN_WIDTH;\n\t\t\t}\n\t\t}\n\n\t\tif (totalDeficit === 0) {\n\t\t\treturn adjustedWidths; // no adjustments were needed\n\t\t}\n\n\t\t// Create proportions for redistribution of the deficit based on available space above COLUMN_MIN_WIDTH\n\t\tconst columnProportions = this.getColumnProportionsAboveMinWidth(pxWidths);\n\n\t\t// Redistribute the deficit proportionally among columns that can contribute\n\t\tfor (let i = 0; i < adjustedWidths.length; i++) {\n\t\t\tconst isVisible = adjustedWidths[i] > 0;\n\t\t\tif (isVisible && columnProportions[i] > 0) {\n\t\t\t\tadjustedWidths[i] -= totalDeficit * columnProportions[i];\n\t\t\t}\n\t\t}\n\n\t\treturn adjustedWidths;\n\t}\n\n\tgetColumnProportionsAboveMinWidth(columnPxWidths: number[]) {\n\t\tconst widthsAboveMinWidth = columnPxWidths.map(width => {\n\t\t\tif (width > COLUMN_MIN_WIDTH) {\n\t\t\t\treturn width - COLUMN_MIN_WIDTH;\n\t\t\t}\n\t\t\treturn 0;\n\t\t});\n\n\t\tconst total = widthsAboveMinWidth.reduce((sum, width) => sum + width, 0);\n\n\t\tif (total === 0) {\n\t\t\treturn widthsAboveMinWidth;\n\t\t}\n\n\t\treturn widthsAboveMinWidth.map(width => width / total);\n\t}\n\n\t/**\n\t * Helper that handles pixel conversion for column width operations.\n\t * Converts input to pixels, applies the operation, then converts back to relative widths.\n\t * @param columnLayout Column layout in mixed formats\n\t * @param operation Function that operates on pixel widths\n\t * @returns Column layout in percentage format\n\t */\n\tdoWithPixelConversion(\n\t\tcolumnLayout: (string | 0)[],\n\t\toperation: (pxWidths: number[]) => number[],\n\t) {\n\t\t// Convert to pixels for calculations\n\t\tconst pxWidths = columnLayout.map(width => this.convertColumnWidthToPixels(width));\n\n\t\t// Apply the operation\n\t\tconst adjustedPxWidths = operation(pxWidths);\n\n\t\t// Convert back to percentage-based widths\n\t\treturn adjustedPxWidths.map(width => this.convertToRelativeColumnWidth(width));\n\t}\n\n\tisValidColumnLayout(columnLayout: (string | 0)[]) {\n\t\tconst pxWidths = columnLayout?.map(w => this.convertColumnWidthToPixels(w));\n\t\tconst totalWidth = pxWidths.reduce((sum, i) => sum + i, 0);\n\n\t\tif (Math.round(totalWidth) !== Math.round(this._availableWidthForColumns)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this.verifyColumnWidthsMatchLayout(pxWidths);\n\t}\n\n\tverifyColumnWidthsMatchLayout(pxWidths: number[]) {\n\t\tconst columnWidths = {\n\t\t\t\tstart: pxWidths[0],\n\t\t\t\tmid: pxWidths[1],\n\t\t\t\tend: pxWidths[2],\n\t\t\t},\n\t\t\tstartWidth = columnWidths.start,\n\t\t\tstartPercentWidth = parseInt(this.convertToRelativeColumnWidth(startWidth));\n\n\t\tswitch (this.layout) {\n\t\tcase FCLLayout.TwoColumnsStartExpanded: {\n\t\t\treturn columnWidths.start >= columnWidths.mid;\n\t\t}\n\t\tcase FCLLayout.TwoColumnsMidExpanded: {\n\t\t\treturn columnWidths.mid > columnWidths.start;\n\t\t}\n\t\tcase FCLLayout.ThreeColumnsEndExpanded: {\n\t\t\treturn (columnWidths.end > columnWidths.mid) && (startPercentWidth < 33);\n\t\t}\n\t\tcase FCLLayout.ThreeColumnsStartExpandedEndHidden: {\n\t\t\treturn (columnWidths.start >= columnWidths.mid) && columnWidths.end === 0;\n\t\t}\n\t\tcase FCLLayout.ThreeColumnsMidExpanded: {\n\t\t\treturn (columnWidths.mid >= columnWidths.end)\n\t\t\t&& ((this.media === MEDIA.DESKTOP && startPercentWidth < 33) // desktop\n\t\t\t\t|| (this.media === MEDIA.TABLET && startPercentWidth === 0)); // tablet\n\t\t}\n\t\tcase FCLLayout.ThreeColumnsMidExpandedEndHidden: {\n\t\t\treturn (columnWidths.mid > columnWidths.start)\n\t\t\t\t&& columnWidths.end === 0\n\t\t\t\t&& ((this.media === MEDIA.DESKTOP && startPercentWidth >= 33)\n\t\t\t\t\t|| (this.media === MEDIA.TABLET && startWidth >= COLUMN_MIN_WIDTH));\n\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tcalcVisibleColumns(colLayout: FlexibleColumnLayoutColumnLayout) {\n\t\treturn colLayout.filter(colWidth => !this._isColumnHidden(colWidth)).length;\n\t}\n\n\tfireLayoutChange(separatorUsed: boolean, resized: boolean) {\n\t\tconst columnLayout = [...this._columnLayout!] as string[]; // do not leak reference to the private _columnLayout array to prevent apps modifying its content\n\t\tthis.fireDecoratorEvent(\"layout-change\", {\n\t\t\tlayout: this.layout,\n\t\t\tcolumnLayout,\n\t\t\tstartColumnVisible: this.startColumnVisible,\n\t\t\tmidColumnVisible: this.midColumnVisible,\n\t\t\tendColumnVisible: this.endColumnVisible,\n\t\t\tseparatorsUsed: separatorUsed,\n\t\t\tresized,\n\t\t});\n\t}\n\n\tfireLayoutConfigurationChange() {\n\t\tconst columnLayout = [...this._columnLayout!] as string[]; // do not leak reference to the private _columnLayout array to prevent apps modifying its content\n\t\tthis.fireDecoratorEvent(\"layout-configuration-change\", {\n\t\t\tlayout: this.layout,\n\t\t\tmedia: this.media,\n\t\t\tcolumnLayout,\n\t\t});\n\t}\n\n\tonSeparatorPress(e: TouchEvent | MouseEvent) {\n\t\tif (e.target as HTMLElement === this.startArrowDOM) {\n\t\t\treturn;\n\t\t}\n\t\tconst pressedSeparator = (e.target as HTMLElement).closest(\".ui5-fcl-separator\") as HTMLElement;\n\t\tif ((pressedSeparator.classList.contains(\"ui5-fcl-separator-start\") && !this.showStartSeparatorGrip)\n\t\t\t|| (pressedSeparator.classList.contains(\"ui5-fcl-separator-end\") && !this.showEndSeparatorGrip)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isTouch = supportsTouch() && e instanceof TouchEvent,\n\t\t\tcursorPositionX = this.getPageXValueFromEvent(e);\n\n\t\tthis.separatorMovementSession = this.initSeparatorMovementSession(pressedSeparator, cursorPositionX, isTouch);\n\t}\n\n\tonSeparatorMove(e: TouchEvent | MouseEvent) {\n\t\te.preventDefault(); // prevent text selection etc. while dragging\n\n\t\tif (!this.separatorMovementSession) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst latestCursorX = this.getPageXValueFromEvent(e),\n\t\t\tmovementDelta = latestCursorX - this.separatorMovementSession.cursorPositionX;\n\n\t\tif (!movementDelta) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst movedSeparator = this.separatorMovementSession.separator,\n\t\t\tlatestSeparatorX = movedSeparator.getBoundingClientRect().x,\n\t\t\tisForwardMove = movementDelta > 0; // is start-to-end direction\n\n\t\t// if the dragged separator was re-rendered away from the cursor\n\t\t// due to change of layout during drag\n\t\t// => check if the cursor lags-behind the separator\n\t\t// and skip resizing untill the cursor catches-up with the separator\n\t\tif (this.isSeparatorAheadOfCursor(latestCursorX, latestSeparatorX, isForwardMove)) {\n\t\t\tthis.separatorMovementSession.cursorPositionX = latestCursorX;\n\t\t\treturn;\n\t\t}\n\n\t\tconst layoutBeforeMove = this.separatorMovementSession.tmpFCLLayout;\n\t\t// synchronously move the separator in DOM => resizes the columns accordingly\n\t\tconst layoutAfterMove = this.moveSeparator(movedSeparator, movementDelta, layoutBeforeMove);\n\n\t\tthis.separatorMovementSession.cursorPositionX = latestCursorX;\n\t\tthis.separatorMovementSession.tmpFCLLayout = layoutAfterMove;\n\t}\n\n\tprivate onSeparatorMoveEnd() {\n\t\tif (!this.separatorMovementSession) {\n\t\t\treturn;\n\t\t}\n\t\tconst newLayout = this.separatorMovementSession.tmpFCLLayout;\n\t\tconst newColumnLayout = [...this._columnLayout!] as string[]; // obtain the values only\n\n\t\tthis.saveUserDefinedColumnLayout(newLayout, newColumnLayout);\n\t\tthis.exitSeparatorMovementSession();\n\t}\n\n\tinitSeparatorMovementSession(separator: HTMLElement, cursorPositionX: number, isTouch: boolean) {\n\t\tthis.attachMoveListeners(isTouch);\n\t\tthis.toggleSideAnimations(separator, false); // disable animations for side colmns to prevent slowdown while dragging\n\t\tthis._resizing = true;\n\n\t\treturn {\n\t\t\tseparator,\n\t\t\tcursorPositionX,\n\t\t\ttmpFCLLayout: this.layout as FCLLayout,\n\t\t};\n\t}\n\n\texitSeparatorMovementSession() {\n\t\tconst movedSeparator = this.separatorMovementSession!.separator;\n\t\tconst hasAnimation = getAnimationMode() !== AnimationMode.None;\n\n\t\tthis.detachMoveListeners();\n\t\tthis.toggleSideAnimations(movedSeparator, hasAnimation); // restore animations for side columns\n\t\tthis._resizing = false;\n\n\t\tmovedSeparator.focus();\n\t\tthis.separatorMovementSession = null;\n\t}\n\n\tsaveUserDefinedColumnLayout(newLayout: FCLLayout, newColumnLayout: string[]) {\n\t\tconst oldColumnLayout = this.getCustomColumnLayout(newLayout);\n\t\tif (this.layout !== newLayout) {\n\t\t\tthis.layout = newLayout;\n\t\t\tthis.fireLayoutChange(true, false);\n\t\t}\n\t\tif (oldColumnLayout?.join() !== newColumnLayout.join()) { // compare arrays' content\n\t\t\tthis.updateLayoutsConfiguration(newLayout, newColumnLayout);\n\t\t\tthis.fireLayoutConfigurationChange();\n\t\t}\n\t}\n\n\tupdateLayoutsConfiguration(layout: `${FCLLayout}`, columnLayout: string[]) {\n\t\tif (this.mediaAllowsCustomConfiguration(this.media)) {\n\t\t\tthis.layoutsConfiguration[this.media] ??= {};\n\t\t\tthis.layoutsConfiguration[this.media]![layout] ??= { layout: [] };\n\t\t\tthis.layoutsConfiguration[this.media]![layout]!.layout = columnLayout;\n\t\t}\n\t}\n\n\tprivate isSeparatorAheadOfCursor(cursorX: number, separatorX: number, isForwardMove: boolean) {\n\t\tif (isForwardMove) {\n\t\t\treturn separatorX > cursorX;\n\t\t}\n\t\treturn separatorX < cursorX;\n\t}\n\n\tcalculateNewColumnWidth(columnToResize: typeof COLUMN.START | typeof COLUMN.END, widthDelta: number) {\n\t\tconst columnWidths: Array<number> = this._columnLayout!.map(x => this.convertColumnWidthToPixels(x)),\n\t\t\tadjacentColumnToResize = COLUMN.MID, // column to compensate the resize of the given column\n\t\t\tcolumnNewWidth = columnWidths[columnToResize] + widthDelta,\n\t\t\tadjacentColumnNewWidth = columnWidths[adjacentColumnToResize] - widthDelta;\n\n\t\tif (columnNewWidth < COLUMN_MIN_WIDTH) {\n\t\t\t// user is trying to shrink a column below its min-width\n\t\t\t// or to reveal a hidden column\n\t\t\treturn COLUMN_MIN_WIDTH;\n\t\t}\n\n\t\tif (adjacentColumnNewWidth < COLUMN_MIN_WIDTH) {\n\t\t\tconst correction = COLUMN_MIN_WIDTH - adjacentColumnNewWidth;\n\t\t\t// constrain the new width to preserve the min-width of the adjacent column\n\t\t\treturn columnNewWidth - correction;\n\t\t}\n\n\t\treturn columnNewWidth;\n\t}\n\n\tmoveSeparator(separator: HTMLElement, offsetX: number, fclLayoutBeforeMove: FCLLayout) {\n\t\tconst isStartSeparator = separator === this.startSeparatorDOM,\n\t\t\tisRTL = this.effectiveDir === \"rtl\";\n\t\tlet selectedColumnToResize,\n\t\t\tcolumnWidthDelta;\n\n\t\tif (isRTL) {\n\t\t\toffsetX = -offsetX;\n\t\t}\n\n\t\tif (isStartSeparator) {\n\t\t\tselectedColumnToResize = COLUMN.START;\n\t\t\t// move in direction start-to-end expands start column\n\t\t\tcolumnWidthDelta = offsetX;\n\t\t} else {\n\t\t\tselectedColumnToResize = COLUMN.END;\n\t\t\t// move in direction start-to-end shrinks end column\n\t\t\tcolumnWidthDelta = -offsetX;\n\t\t}\n\n\t\tconst isStartToEndDirection = offsetX > 0,\n\t\t\tnewColumnWidth = this.calculateNewColumnWidth(selectedColumnToResize, columnWidthDelta),\n\t\t\tnewColumnLayout = this.adjustColumnLayout(selectedColumnToResize, newColumnWidth, true)!,\n\t\t\tnewFCLLayout = this.getNextLayoutOnSeparatorMovement(separator, isStartToEndDirection, fclLayoutBeforeMove, newColumnLayout) as FCLLayout;\n\n\t\tif (fclLayoutBeforeMove !== newFCLLayout) {\n\t\t\tthis._columnLayout = this.nextColumnLayout(newFCLLayout);\n\t\t\tthis._visibleColumns = this.calcVisibleColumns(this._columnLayout);\n\t\t}\n\n\t\t// apply the requested resize on <code>this._columnLayout</code>\n\t\tthis.adjustColumnLayout(selectedColumnToResize, newColumnWidth);\n\n\t\tthis.toggleColumns();\n\n\t\treturn newFCLLayout;\n\t}\n\n\tadjustColumnLayout(columnToResize: typeof COLUMN.START | typeof COLUMN.END, newSize: number, createNewArray = false) {\n\t\tif (!this._columnLayout) {\n\t\t\treturn;\n\t\t}\n\t\tconst columnLayoutInPx = this._columnLayout.map(x => this.convertColumnWidthToPixels(x));\n\n\t\t// apply the new size\n\t\tcolumnLayoutInPx[columnToResize] = newSize;\n\t\tcolumnLayoutInPx[COLUMN.MID] = this._availableWidthForColumns\n\t\t\t- columnLayoutInPx[COLUMN.START]\n\t\t\t- columnLayoutInPx[COLUMN.END];\n\n\t\tconst columnLayoutToAdjust = createNewArray ? [] : this._columnLayout;\n\n\t\tcolumnLayoutInPx.forEach((x, i) => {\n\t\t\tcolumnLayoutToAdjust[i] = this.convertToRelativeColumnWidth(columnLayoutInPx[i]);\n\t\t});\n\n\t\treturn columnLayoutToAdjust;\n\t}\n\n\t_onArrowKeydown(e: KeyboardEvent) {\n\t\tif (isEnter(e) || isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t\tconst focusedElement = e.target as HTMLElement;\n\t\t\tif (focusedElement === this.startArrowDOM) {\n\t\t\t\tthis.switchLayoutOnArrowPress();\n\t\t\t}\n\t\t}\n\t}\n\n\tasync _onSeparatorKeydown(e: KeyboardEvent) {\n\t\tconst separator = e.target as HTMLElement;\n\t\tif (!separator.classList.contains(\"ui5-fcl-separator\")) {\n\t\t\treturn;\n\t\t}\n\t\tconst stepSize = 2,\n\t\t\tbigStepSize = this._width,\n\t\t\tisRTL = this.effectiveDir === \"rtl\";\n\t\tlet step = 0;\n\n\t\tif (isLeft(e)) {\n\t\t\tstep = -stepSize * 10;\n\t\t} else if (isRight(e)) {\n\t\t\tstep = stepSize * 10;\n\t\t} else if (isLeftShift(e)) {\n\t\t\tstep = -stepSize;\n\t\t} else if (isRightShift(e)) {\n\t\t\tstep = stepSize;\n\t\t} else if (isHome(e)) {\n\t\t\te.preventDefault();\n\t\t\tstep = isRTL ? bigStepSize : -bigStepSize;\n\t\t} else if (isEnd(e)) {\n\t\t\te.preventDefault();\n\t\t\tstep = isRTL ? -bigStepSize : bigStepSize;\n\t\t}\n\n\t\tif (!step) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.separatorMovementSession) {\n\t\t\tthis.separatorMovementSession = this.initSeparatorMovementSession(separator, 0, false);\n\t\t}\n\n\t\tconst layoutBeforeMove = this.separatorMovementSession.tmpFCLLayout;\n\t\tconst layoutAfterMove = this.moveSeparator(separator, step, layoutBeforeMove);\n\n\t\tthis.separatorMovementSession.tmpFCLLayout = layoutAfterMove;\n\n\t\tawait renderFinished();\n\t\tseparator.focus();\n\t}\n\n\t_onSeparatorKeyUp() {\n\t\tif (this.separatorMovementSession) {\n\t\t\tthis.onSeparatorMoveEnd();\n\t\t}\n\t}\n\n\tprivate attachMoveListeners(isTouch: boolean) {\n\t\tconst domRef = this.getDomRef();\n\t\tif (!domRef) {\n\t\t\treturn;\n\t\t}\n\t\tif (isTouch && supportsTouch()) {\n\t\t\tdomRef.addEventListener(\"touchmove\", this._onSeparatorMove);\n\t\t\tdomRef.addEventListener(\"touchend\", this._onSeparatorMoveEnd);\n\t\t} else {\n\t\t\tdomRef.addEventListener(\"mousemove\", this._onSeparatorMove);\n\t\t\tdomRef.addEventListener(\"mouseup\", this._onSeparatorMoveEnd);\n\t\t}\n\t}\n\n\tprivate detachMoveListeners() {\n\t\tconst domRef = this.getDomRef();\n\t\tif (!domRef) {\n\t\t\treturn;\n\t\t}\n\t\tdomRef.removeEventListener(\"mouseup\", this._onSeparatorMoveEnd);\n\t\tdomRef.removeEventListener(\"touchend\", this._onSeparatorMoveEnd);\n\t\t// Only one of the following was attached, but it's ok to remove both as there is no error\n\t\tdomRef.removeEventListener(\"mousemove\", this._onSeparatorMove);\n\t\tdomRef.removeEventListener(\"touchmove\", this._onSeparatorMove);\n\t}\n\n\tprivate toggleSideAnimations(separator: HTMLElement, shouldAnimate: boolean) {\n\t\tconst adjacentColumns = [\n\t\t\tseparator.previousElementSibling,\n\t\t\tseparator.nextElementSibling,\n\t\t];\n\n\t\tadjacentColumns.forEach(column => column!.classList.toggle(\"ui5-fcl-column-animation\", shouldAnimate));\n\t}\n\n\tprivate getPageXValueFromEvent(e: TouchEvent | MouseEvent): number {\n\t\tif (supportsTouch() && e instanceof TouchEvent) {\n\t\t\tif (e.changedTouches && e.changedTouches.length > 0) {\n\t\t\t\treturn e.changedTouches[0].pageX;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn (e as MouseEvent).pageX; // MouseEvent\n\t}\n\n\tconvertColumnWidthToPixels(width: string | number) {\n\t\tif (typeof width === \"number\") {\n\t\t\treturn width;\n\t\t}\n\t\tconst parsedValue = parseFloat(width),\n\t\t\ttotalWidth = this._availableWidthForColumns;\n\n\t\tif (width.endsWith(\"%\")) {\n\t\t\treturn (totalWidth / 100) * parsedValue;\n\t\t}\n\t\treturn parsedValue;\n\t}\n\n\tconvertToRelativeColumnWidth(pxWidth: string | number) {\n\t\tif (typeof pxWidth === \"string\") {\n\t\t\treturn pxWidth;\n\t\t}\n\t\tif (pxWidth === 0) {\n\t\t\treturn \"0px\";\n\t\t}\n\t\treturn `${(pxWidth / this._availableWidthForColumns) * 100}%`;\n\t}\n\n\tgetNextLayoutOnSeparatorMovement(separator: HTMLElement, isStartToEndDirection: boolean, fclLayoutBeforeMove: FCLLayout, columnLayoutAfterMove: FlexibleColumnLayoutColumnLayout) {\n\t\tconst isStartSeparator = separator === this.startSeparatorDOM,\n\t\t\tseparatorName = isStartSeparator ? \"start\" : \"end\",\n\t\t\tmoved = (options: {separator: \"start\" | \"end\", from: FCLLayout, forward: boolean}) => {\n\t\t\t\treturn options.from === fclLayoutBeforeMove\n\t\t\t\t&& options.separator === separatorName\n\t\t\t\t&& options.forward === isStartToEndDirection;\n\t\t\t},\n\t\t\tnewColumnLayout = columnLayoutAfterMove.map(x => this.convertColumnWidthToPixels(x)),\n\t\t\tnewColumnWidths = {\n\t\t\t\tstart: newColumnLayout[0],\n\t\t\t\tmid: newColumnLayout[1],\n\t\t\t\tend: newColumnLayout[2],\n\t\t\t},\n\t\t\tstartColumnPxWidth = newColumnWidths.start,\n\t\t\tstartColumnPercentWidth = (startColumnPxWidth / this.widthDOM) * 100,\n\t\t\tisTablet = this.media === MEDIA.TABLET;\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.TwoColumnsMidExpanded,\n\t\t\tforward: true,\n\t\t}) && (newColumnWidths.start >= newColumnWidths.mid)) {\n\t\t\treturn FCLLayout.TwoColumnsStartExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.TwoColumnsStartExpanded,\n\t\t\tforward: false,\n\t\t}) && (newColumnWidths.start < newColumnWidths.mid)) {\n\t\t\treturn FCLLayout.TwoColumnsMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpanded,\n\t\t\tforward: true,\n\t\t}) && startColumnPercentWidth >= 33) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpandedEndHidden;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpandedEndHidden,\n\t\t\tforward: false,\n\t\t}) && !isTablet && startColumnPercentWidth < 33) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsStartHiddenMidExpanded,\n\t\t\tforward: true,\n\t\t}) && !isTablet && Math.ceil(startColumnPxWidth) >= COLUMN_MIN_WIDTH) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsStartHiddenMidExpanded,\n\t\t\tforward: false,\n\t\t}) && newColumnWidths.mid < newColumnWidths.end) {\n\t\t\treturn FCLLayout.ThreeColumnsStartHiddenEndExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsStartHiddenEndExpanded,\n\t\t\tforward: true,\n\t\t}) && newColumnWidths.mid >= newColumnWidths.end) {\n\t\t\treturn FCLLayout.ThreeColumnsStartHiddenMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpandedEndHidden,\n\t\t\tforward: false,\n\t\t\t// ceil before comparing to avoid floating point precision issues\n\t\t}) && ((Math.ceil(newColumnWidths.end) >= COLUMN_MIN_WIDTH))) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpanded,\n\t\t\tforward: false,\n\t\t}) && newColumnWidths.mid < newColumnWidths.end) {\n\t\t\treturn FCLLayout.ThreeColumnsEndExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsEndExpanded,\n\t\t\tforward: true,\n\t\t}) && newColumnWidths.mid >= newColumnWidths.end) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpanded;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpandedEndHidden,\n\t\t\tforward: true,\n\t\t}) && newColumnWidths.start >= newColumnWidths.mid) {\n\t\t\treturn FCLLayout.ThreeColumnsStartExpandedEndHidden;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsStartExpandedEndHidden,\n\t\t\tforward: false,\n\t\t}) && newColumnWidths.start < newColumnWidths.mid) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpandedEndHidden;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"start\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpanded,\n\t\t\tforward: true,\n\t\t\t// ceil before comparing to avoid floating point precision issues\n\t\t}) && isTablet && (Math.ceil(startColumnPxWidth) >= COLUMN_MIN_WIDTH)) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpandedEndHidden;\n\t\t}\n\n\t\tif (moved({\n\t\t\tseparator: \"end\",\n\t\t\tfrom: FCLLayout.ThreeColumnsMidExpandedEndHidden,\n\t\t\tforward: false,\n\t\t\t// ceil before comparing to avoid floating point precision issues\n\t\t}) && isTablet && (Math.ceil(newColumnWidths.end) >= COLUMN_MIN_WIDTH)) {\n\t\t\treturn FCLLayout.ThreeColumnsMidExpanded;\n\t\t}\n\n\t\treturn fclLayoutBeforeMove; // no layout change\n\t}\n\n\tswitchLayoutOnArrowPress() {\n\t\tconst lastUsedLayout = this.layout as FCLLayout;\n\t\tthis.layout = getNextLayoutByArrowPress()[lastUsedLayout as keyof typeof getNextLayoutByArrowPress];\n\t\tif (this.layout !== lastUsedLayout) {\n\t\t\tthis.fireLayoutChange(true, false);\n\t\t}\n\t}\n\n\tget _availableWidthForColumns() {\n\t\tlet width = this._width;\n\t\tif (this.showStartSeparator) {\n\t\t\twidth -= this.startSeparatorDOM.offsetWidth;\n\t\t}\n\t\tif (this.showEndSeparator) {\n\t\t\twidth -= this.endSeparatorDOM.offsetWidth;\n\t\t}\n\t\treturn width;\n\t}\n\n\t/**\n\t * Checks if a column is hidden based on its width.\n\t */\n\tprivate _isColumnHidden(columnWidth: number | string): boolean {\n\t\treturn columnWidth === 0 || columnWidth === \"0px\";\n\t}\n\n\t/**\n\t* Returns the current column layout, based on both the `layout` property and the screen size.\n\t*\n\t* **For example:** [\"67%\", \"33%\", 0], [\"100%\", 0, 0], [\"25%\", \"50%\", \"25%\"], etc,\n\t* where the numbers represents the width of the start, middle and end columns.\n\t* @default undefined\n\t* @public\n\t*/\n\tget columnLayout(): FlexibleColumnLayoutColumnLayout | undefined {\n\t\treturn this._columnLayout;\n\t}\n\n\t/**\n\t* Returns if the `start` column is visible.\n\t* @default true\n\t* @public\n\t*/\n\tget startColumnVisible(): boolean {\n\t\tif (this._columnLayout) {\n\t\t\treturn !this._isColumnHidden(this._columnLayout[0]);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Returns if the `middle` column is visible.\n\t* @default false\n\t* @public\n\t*/\n\tget midColumnVisible(): boolean {\n\t\tif (this._columnLayout) {\n\t\t\treturn !this._isColumnHidden(this._columnLayout[1]);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Returns if the `end` column is visible.\n\t* @default false\n\t* @public\n\t*/\n\tget endColumnVisible(): boolean {\n\t\tif (this._columnLayout) {\n\t\t\treturn !this._isColumnHidden(this._columnLayout[2]);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Returns the number of currently visible columns.\n\t* @default 1\n\t* @public\n\t*/\n\tget visibleColumns(): number {\n\t\treturn this._visibleColumns;\n\t}\n\n\tget startColumnWidth() {\n\t\treturn this._columnLayout ? this._columnLayout[0] : \"100%\";\n\t}\n\n\tget midColumnWidth() {\n\t\treturn this._columnLayout ? this._columnLayout[1] : \"0px\";\n\t}\n\n\tget endColumnWidth() {\n\t\treturn this._columnLayout ? this._columnLayout[2] : \"0px\";\n\t}\n\n\tget showStartSeparator() {\n\t\treturn this.effectiveSeparatorsInfo[0].visible;\n\t}\n\n\tget showEndSeparator() {\n\t\treturn this.effectiveSeparatorsInfo[1].visible;\n\t}\n\n\tget showStartSeparatorGrip() {\n\t\treturn this.disableResizing ? false : this.startSeparatorGripVisibility;\n\t}\n\n\tget showStartSeparatorArrow() {\n\t\treturn this.disableResizing ? false : this.startSeparatorArrowVisibility;\n\t}\n\n\tget showEndSeparatorGrip() {\n\t\treturn this.disableResizing ? false : this.endSeparatorGripVisibility;\n\t}\n\n\tget startSeparatorGripVisibility() {\n\t\treturn this.effectiveSeparatorsInfo[0].gripVisible;\n\t}\n\n\tget endSeparatorGripVisibility() {\n\t\treturn this.effectiveSeparatorsInfo[1].gripVisible;\n\t}\n\n\tget startSeparatorArrowVisibility() {\n\t\treturn this.effectiveSeparatorsInfo[0].arrowVisible;\n\t}\n\n\tget startSeparatorValue() {\n\t\tconst startColumnWidth = this.startColumnWidth;\n\t\tif (typeof startColumnWidth === \"string\" && startColumnWidth.endsWith(\"%\")) {\n\t\t\treturn parseInt(startColumnWidth);\n\t\t}\n\t\treturn SEPARATOR_DEFAULT_VALUES.START;\n\t}\n\n\tget endSeparatorValue() {\n\t\tconst startColumnWidth = this.startColumnWidth;\n\t\tconst midColumnWidth = this.midColumnWidth;\n\n\t\tif (typeof startColumnWidth === \"string\" && startColumnWidth.endsWith(\"%\")\n\t\t\t&& typeof midColumnWidth === \"string\" && midColumnWidth.endsWith(\"%\")) {\n\t\t\treturn parseInt(startColumnWidth) + parseInt(midColumnWidth);\n\t\t}\n\t\treturn SEPARATOR_DEFAULT_VALUES.END;\n\t}\n\n\tget startArrowDirection() {\n\t\treturn this.effectiveSeparatorsInfo[0].arrowDirection;\n\t}\n\n\tget startArrowDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-arrow--start\")!;\n\t}\n\n\tget effectiveSeparatorsInfo() {\n\t\treturn getDefaultLayoutsByMedia()[this.media][this.effectiveLayout].separators;\n\t}\n\n\tget effectiveLayout() {\n\t\treturn this.separatorMovementSession?.tmpFCLLayout || this.layout;\n\t}\n\n\tget startSeparatorDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-separator-start\")!;\n\t}\n\n\tget endSeparatorDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-separator-end\")!;\n\t}\n\n\tget startSeparatorTabIndex() {\n\t\tif (this.showStartSeparatorGrip) {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tget endSeparatorTabIndex() {\n\t\tif (this.showEndSeparatorGrip) {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tget media() {\n\t\tif (this._width <= BREAKPOINTS.PHONE) {\n\t\t\treturn MEDIA.PHONE;\n\t\t}\n\n\t\tif (this._width <= BREAKPOINTS.TABLET) {\n\t\t\treturn MEDIA.TABLET;\n\t\t}\n\n\t\treturn MEDIA.DESKTOP;\n\t}\n\n\tget widthDOM() {\n\t\treturn this.getBoundingClientRect().width;\n\t}\n\n\tget startColumnDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-column--start\")!;\n\t}\n\n\tget midColumnDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-column--middle\")!;\n\t}\n\n\tget endColumnDOM() {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-fcl-column--end\")!;\n\t}\n\n\tget isStartColumnCollapsing() {\n\t\treturn this.startColumnDOM?.classList.contains(\"ui5-fcl-column-collapse-animation\");\n\t}\n\n\tget isMidColumnCollapsing() {\n\t\treturn this.midColumnDOM?.classList.contains(\"ui5-fcl-column-collapse-animation\");\n\t}\n\n\tget isEndColumnCollapsing() {\n\t\treturn this.endColumnDOM?.classList.contains(\"ui5-fcl-column-collapse-animation\");\n\t}\n\n\tget accStartColumnText() {\n\t\treturn this.accessibilityAttributes.startColumn?.name || FlexibleColumnLayout.i18nBundle.getText(FCL_START_COLUMN_TXT);\n\t}\n\n\tget accMiddleColumnText() {\n\t\treturn this.accessibilityAttributes.midColumn?.name || FlexibleColumnLayout.i18nBundle.getText(FCL_MIDDLE_COLUMN_TXT);\n\t}\n\n\tget accEndColumnText() {\n\t\treturn this.accessibilityAttributes.endColumn?.name || FlexibleColumnLayout.i18nBundle.getText(FCL_END_COLUMN_TXT);\n\t}\n\n\tget accStartSeparatorText() {\n\t\tlet name = this.accessibilityAttributes.startSeparator?.name;\n\t\tif (!name && this.showStartSeparatorGrip) {\n\t\t\tname = FlexibleColumnLayout.i18nBundle.getText(FCL_START_SEPARATOR_TOOLTIP);\n\t\t}\n\t\treturn name;\n\t}\n\n\tget accEndSeparatorText() {\n\t\treturn this.accessibilityAttributes.endSeparator?.name || FlexibleColumnLayout.i18nBundle.getText(FCL_END_SEPARATOR_TOOLTIP);\n\t}\n\n\tget accStartColumnRole() {\n\t\tif (this.startColumnVisible) {\n\t\t\treturn this.accessibilityAttributes.startColumn?.role || \"region\";\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tget accMiddleColumnRole() {\n\t\tif (this.midColumnVisible) {\n\t\t\treturn this.accessibilityAttributes.midColumn?.role || \"region\";\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tget accEndColumnRole() {\n\t\tif (this.endColumnVisible) {\n\t\t\treturn this.accessibilityAttributes.endColumn?.role || \"region\";\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tget accStartSeparatorRole() {\n\t\treturn this.accessibilityAttributes.startSeparator?.role || \"separator\";\n\t}\n\n\tget accEndSeparatorRole() {\n\t\treturn this.accessibilityAttributes.endSeparator?.role || \"separator\";\n\t}\n\n\tget _accAttributes() {\n\t\treturn {\n\t\t\tcolumns: {\n\t\t\t\tstart: {\n\t\t\t\t\trole: this.accStartColumnRole,\n\t\t\t\t\tariaHidden: !this.startColumnVisible || undefined,\n\t\t\t\t},\n\t\t\t\tmiddle: {\n\t\t\t\t\trole: this.accMiddleColumnRole,\n\t\t\t\t\tariaHidden: !this.midColumnVisible || undefined,\n\t\t\t\t},\n\t\t\t\tend: {\n\t\t\t\t\trole: this.accEndColumnRole,\n\t\t\t\t\tariaHidden: !this.endColumnVisible || undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n}\n\nFlexibleColumnLayout.define();\n\nexport default FlexibleColumnLayout;\n\nexport type {\n\tMEDIA,\n\tFlexibleColumnLayoutLayoutChangeEventDetail,\n\tFlexibleColumnLayoutLayoutConfigurationChangeEventDetail,\n\tFCLAccessibilityAttributes,\n\tFlexibleColumnLayoutColumnLayout,\n\tLayoutConfiguration,\n};\n"]}
@@ -68,14 +68,31 @@ declare class SearchItem extends ListItemBase {
68
68
  * @since 2.12.0
69
69
  */
70
70
  image: Array<HTMLElement>;
71
+ /**
72
+ * Defines the actionable elements.
73
+ * This slot allows placing additional interactive elements (such as buttons, icons, or tags)
74
+ * next to the delete button, providing flexible customization for various user actions.
75
+ *
76
+ * **Note:** While the slot is flexible, for consistency with design guidelines,
77
+ * it's recommended to use `ui5-button` with `Transparent` design or `ui5-icon` elements.
78
+ *
79
+ * @public
80
+ * @since 2.16.0
81
+ */
82
+ actions: Array<HTMLElement>;
71
83
  _markupText: string;
72
84
  static i18nBundle: I18nBundle;
73
85
  _onfocusin(e: FocusEvent): void;
74
86
  _onfocusout(): void;
75
87
  _onkeydown(e: KeyboardEvent): Promise<void>;
88
+ /**
89
+ * Handles manual tab navigation between action items and delete button with focus looping
90
+ */
91
+ _handleTabNavigation(e: KeyboardEvent): boolean;
76
92
  _onDeleteButtonClick(): void;
77
93
  _onDeleteButtonKeyDown(e: KeyboardEvent): void;
78
94
  onBeforeRendering(): void;
79
95
  get _deleteButtonTooltip(): string;
96
+ get hasActions(): boolean;
80
97
  }
81
98
  export default SearchItem;
@@ -17,7 +17,8 @@ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
17
17
  import { SEARCH_ITEM_DELETE_BUTTON } from "./generated/i18n/i18n-defaults.js";
18
18
  import getActiveElement from "@ui5/webcomponents-base/dist/util/getActiveElement.js";
19
19
  import { getFirstFocusableElement } from "@ui5/webcomponents-base/dist/util/FocusableElements.js";
20
- import { isSpace, isEnter, isF2 } from "@ui5/webcomponents-base/dist/Keys.js";
20
+ import { getTabbableElements } from "@ui5/webcomponents-base/dist/util/TabbableElements.js";
21
+ import { isSpace, isEnter, isF2, isTabNext, isTabPrevious, } from "@ui5/webcomponents-base/dist/Keys.js";
21
22
  import { i18n } from "@ui5/webcomponents-base/dist/decorators.js";
22
23
  // @ts-expect-error
23
24
  import encodeXML from "@ui5/webcomponents-base/dist/sap/base/security/encodeXML.js";
@@ -64,13 +65,25 @@ let SearchItem = SearchItem_1 = class SearchItem extends ListItemBase {
64
65
  this.selected = false;
65
66
  }
66
67
  async _onkeydown(e) {
68
+ // Handle manual tab navigation between action items
69
+ if (isTabNext(e) || isTabPrevious(e)) {
70
+ const handled = this._handleTabNavigation(e);
71
+ if (handled) {
72
+ e.preventDefault();
73
+ e.stopPropagation();
74
+ return;
75
+ }
76
+ }
77
+ // Call super for other key handling
67
78
  super._onkeydown(e);
79
+ // Handle space/enter when focus is within action items
68
80
  if (this.getFocusDomRef().matches(":has(:focus-within)")) {
69
81
  if (isSpace(e) || isEnter(e)) {
70
82
  e.preventDefault();
71
83
  return;
72
84
  }
73
85
  }
86
+ // Handle F2 for focus navigation
74
87
  if (isF2(e)) {
75
88
  e.stopImmediatePropagation();
76
89
  const activeElement = getActiveElement();
@@ -87,6 +100,48 @@ let SearchItem = SearchItem_1 = class SearchItem extends ListItemBase {
87
100
  }
88
101
  }
89
102
  }
103
+ /**
104
+ * Handles manual tab navigation between action items and delete button with focus looping
105
+ */
106
+ _handleTabNavigation(e) {
107
+ const focusDomRef = this.getFocusDomRef();
108
+ if (!focusDomRef) {
109
+ return false;
110
+ }
111
+ const tabbableElements = getTabbableElements(focusDomRef);
112
+ if (tabbableElements.length === 0) {
113
+ return false;
114
+ }
115
+ const activeElement = getActiveElement();
116
+ const currentIndex = tabbableElements.indexOf(activeElement);
117
+ if (currentIndex === -1) {
118
+ return false;
119
+ }
120
+ let nextElement = null;
121
+ if (isTabNext(e)) {
122
+ if (currentIndex < tabbableElements.length - 1) {
123
+ nextElement = tabbableElements[currentIndex + 1];
124
+ }
125
+ else {
126
+ // Loop to first element when at the last element
127
+ nextElement = tabbableElements[0];
128
+ }
129
+ }
130
+ else if (isTabPrevious(e)) {
131
+ if (currentIndex > 0) {
132
+ nextElement = tabbableElements[currentIndex - 1];
133
+ }
134
+ else {
135
+ // Loop to last element when at the first element
136
+ nextElement = tabbableElements[tabbableElements.length - 1];
137
+ }
138
+ }
139
+ if (nextElement) {
140
+ nextElement.focus();
141
+ return true;
142
+ }
143
+ return false;
144
+ }
90
145
  _onDeleteButtonClick() {
91
146
  this.fireDecoratorEvent("delete");
92
147
  }
@@ -103,6 +158,9 @@ let SearchItem = SearchItem_1 = class SearchItem extends ListItemBase {
103
158
  get _deleteButtonTooltip() {
104
159
  return SearchItem_1.i18nBundle.getText(SEARCH_ITEM_DELETE_BUTTON);
105
160
  }
161
+ get hasActions() {
162
+ return !!this.actions.length;
163
+ }
106
164
  };
107
165
  __decorate([
108
166
  property()
@@ -128,6 +186,9 @@ __decorate([
128
186
  __decorate([
129
187
  slot()
130
188
  ], SearchItem.prototype, "image", void 0);
189
+ __decorate([
190
+ slot()
191
+ ], SearchItem.prototype, "actions", void 0);
131
192
  __decorate([
132
193
  i18n("@ui5/webcomponents-fiori")
133
194
  ], SearchItem, "i18nBundle", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"SearchItem.js","sourceRoot":"","sources":["../src/SearchItem.ts"],"names":[],"mappings":"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","sourcesContent":["import property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport ListItemBase from \"@ui5/webcomponents/dist/ListItemBase.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport SearchItemTemplate from \"./SearchItemTemplate.js\";\nimport SearchItemCss from \"./generated/themes/SearchItem.css.js\";\nimport generateHighlightedMarkup from \"@ui5/webcomponents-base/dist/util/generateHighlightedMarkup.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport { SEARCH_ITEM_DELETE_BUTTON } from \"./generated/i18n/i18n-defaults.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\nimport { getFirstFocusableElement } from \"@ui5/webcomponents-base/dist/util/FocusableElements.js\";\nimport { isSpace, isEnter, isF2 } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { i18n } from \"@ui5/webcomponents-base/dist/decorators.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\n// @ts-expect-error\nimport encodeXML from \"@ui5/webcomponents-base/dist/sap/base/security/encodeXML.js\";\n/**\n * @class\n *\n * ### Overview\n *\n * A `ui5-search-item` is a list item, used for displaying search suggestions\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/SearchItem.js\";`\n *\n * @constructor\n * @extends ListItemBase\n * @public\n * @since 2.9.0\n * @experimental\n */\n@customElement({\n\ttag: \"ui5-search-item\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: SearchItemTemplate,\n\tstyles: [\n\t\tListItemBase.styles,\n\t\tSearchItemCss,\n\t],\n})\n\n/**\n * Fired when delete button is pressed.\n *\n * @public\n */\n@event(\"delete\")\n\nclass SearchItem extends ListItemBase {\n\teventDetails!: ListItemBase[\"eventDetails\"] & {\n\t\t\"delete\": void,\n\t};\n\t/**\n\t * Defines the heading text of the search item.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ttext?: string;\n\n\t/**\n\t * Defines the description that appears right under the item text, if available.\n\t * @default undefined\n\t * @public\n\t * @since 2.12.0\n\t */\n\t@property()\n\tdescription?: string;\n\n\t/**\n\t * Defines the icon name of the search item.\n\t * **Note:** If provided, the image slot will be ignored.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ticon?: string;\n\n\t/**\n\t * Defines whether the search item is selected.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tselected = false;\n\n\t/**\n\t * Defines whether the search item is deletable.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdeletable = false;\n\n\t/**\n\t * Defines the scope of the search item\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tscopeName?: string;\n\n\t@property()\n\thighlightText = \"\";\n\n\t/**\n\t * **Note:** While the slot allows the option of setting a custom avatar, to comply with the\n\t * design guidelines, use the `ui5-avatar` with size - XS.\n\t *\n\t * @public\n\t * @since 2.12.0\n\t */\n\t@slot()\n\timage!: Array<HTMLElement>;\n\n\t_markupText = \"\";\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\n\t_onfocusin(e: FocusEvent) {\n\t\tsuper._onfocusin(e);\n\n\t\tthis.selected = true;\n\t}\n\n\t_onfocusout() {\n\t\tthis.selected = false;\n\t}\n\n\tasync _onkeydown(e: KeyboardEvent) {\n\t\tsuper._onkeydown(e);\n\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\")) {\n\t\t\tif (isSpace(e) || isEnter(e)) {\n\t\t\t\te.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isF2(e)) {\n\t\t\te.stopImmediatePropagation();\n\t\t\tconst activeElement = getActiveElement();\n\t\t\tconst focusDomRef = this.getFocusDomRef();\n\n\t\t\tif (!focusDomRef) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (activeElement === focusDomRef) {\n\t\t\t\tconst firstFocusable = await getFirstFocusableElement(focusDomRef);\n\t\t\t\tfirstFocusable?.focus();\n\t\t\t} else {\n\t\t\t\tfocusDomRef.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\t_onDeleteButtonClick() {\n\t\tthis.fireDecoratorEvent(\"delete\");\n\t}\n\n\t_onDeleteButtonKeyDown(e: KeyboardEvent) {\n\t\tif (isSpace(e) || isEnter(e)) {\n\t\t\tthis.fireDecoratorEvent(\"delete\");\n\t\t}\n\t}\n\n\tonBeforeRendering(): void {\n\t\tsuper.onBeforeRendering();\n\n\t\t// bold the matched text\n\t\tthis._markupText = this.highlightText ? generateHighlightedMarkup((this.text || \"\"), this.highlightText) : encodeXML(this.text || \"\");\n\t}\n\n\tget _deleteButtonTooltip() {\n\t\treturn SearchItem.i18nBundle.getText(SEARCH_ITEM_DELETE_BUTTON);\n\t}\n}\n\nSearchItem.define();\n\nexport default SearchItem;\n"]}
1
+ {"version":3,"file":"SearchItem.js","sourceRoot":"","sources":["../src/SearchItem.ts"],"names":[],"mappings":"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","sourcesContent":["import property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport ListItemBase from \"@ui5/webcomponents/dist/ListItemBase.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport SearchItemTemplate from \"./SearchItemTemplate.js\";\nimport SearchItemCss from \"./generated/themes/SearchItem.css.js\";\nimport generateHighlightedMarkup from \"@ui5/webcomponents-base/dist/util/generateHighlightedMarkup.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport { SEARCH_ITEM_DELETE_BUTTON } from \"./generated/i18n/i18n-defaults.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\nimport { getFirstFocusableElement } from \"@ui5/webcomponents-base/dist/util/FocusableElements.js\";\nimport { getTabbableElements } from \"@ui5/webcomponents-base/dist/util/TabbableElements.js\";\nimport {\n\tisSpace,\n\tisEnter,\n\tisF2,\n\tisTabNext,\n\tisTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { i18n } from \"@ui5/webcomponents-base/dist/decorators.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\n// @ts-expect-error\nimport encodeXML from \"@ui5/webcomponents-base/dist/sap/base/security/encodeXML.js\";\n/**\n * @class\n *\n * ### Overview\n *\n * A `ui5-search-item` is a list item, used for displaying search suggestions\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/SearchItem.js\";`\n *\n * @constructor\n * @extends ListItemBase\n * @public\n * @since 2.9.0\n * @experimental\n */\n@customElement({\n\ttag: \"ui5-search-item\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: SearchItemTemplate,\n\tstyles: [\n\t\tListItemBase.styles,\n\t\tSearchItemCss,\n\t],\n})\n\n/**\n * Fired when delete button is pressed.\n *\n * @public\n */\n@event(\"delete\")\n\nclass SearchItem extends ListItemBase {\n\teventDetails!: ListItemBase[\"eventDetails\"] & {\n\t\t\"delete\": void,\n\t};\n\t/**\n\t * Defines the heading text of the search item.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ttext?: string;\n\n\t/**\n\t * Defines the description that appears right under the item text, if available.\n\t * @default undefined\n\t * @public\n\t * @since 2.12.0\n\t */\n\t@property()\n\tdescription?: string;\n\n\t/**\n\t * Defines the icon name of the search item.\n\t * **Note:** If provided, the image slot will be ignored.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ticon?: string;\n\n\t/**\n\t * Defines whether the search item is selected.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tselected = false;\n\n\t/**\n\t * Defines whether the search item is deletable.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdeletable = false;\n\n\t/**\n\t * Defines the scope of the search item\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tscopeName?: string;\n\n\t@property()\n\thighlightText = \"\";\n\n\t/**\n\t * **Note:** While the slot allows the option of setting a custom avatar, to comply with the\n\t * design guidelines, use the `ui5-avatar` with size - XS.\n\t *\n\t * @public\n\t * @since 2.12.0\n\t */\n\t@slot()\n\timage!: Array<HTMLElement>;\n\n\t/**\n\t * Defines the actionable elements.\n\t * This slot allows placing additional interactive elements (such as buttons, icons, or tags)\n\t * next to the delete button, providing flexible customization for various user actions.\n\t *\n\t * **Note:** While the slot is flexible, for consistency with design guidelines,\n\t * it's recommended to use `ui5-button` with `Transparent` design or `ui5-icon` elements.\n\t *\n\t * @public\n\t * @since 2.16.0\n\t */\n\t@slot()\n\tactions!: Array<HTMLElement>;\n\n\t_markupText = \"\";\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\n\t_onfocusin(e: FocusEvent) {\n\t\tsuper._onfocusin(e);\n\n\t\tthis.selected = true;\n\t}\n\n\t_onfocusout() {\n\t\tthis.selected = false;\n\t}\n\n\tasync _onkeydown(e: KeyboardEvent) {\n\t\t// Handle manual tab navigation between action items\n\t\tif (isTabNext(e) || isTabPrevious(e)) {\n\t\t\tconst handled = this._handleTabNavigation(e);\n\t\t\tif (handled) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Call super for other key handling\n\t\tsuper._onkeydown(e);\n\n\t\t// Handle space/enter when focus is within action items\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\")) {\n\t\t\tif (isSpace(e) || isEnter(e)) {\n\t\t\t\te.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Handle F2 for focus navigation\n\t\tif (isF2(e)) {\n\t\t\te.stopImmediatePropagation();\n\t\t\tconst activeElement = getActiveElement();\n\t\t\tconst focusDomRef = this.getFocusDomRef();\n\n\t\t\tif (!focusDomRef) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (activeElement === focusDomRef) {\n\t\t\t\tconst firstFocusable = await getFirstFocusableElement(focusDomRef);\n\t\t\t\tfirstFocusable?.focus();\n\t\t\t} else {\n\t\t\t\tfocusDomRef.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Handles manual tab navigation between action items and delete button with focus looping\n\t */\n\t_handleTabNavigation(e: KeyboardEvent): boolean {\n\t\tconst focusDomRef = this.getFocusDomRef();\n\t\tif (!focusDomRef) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst tabbableElements = getTabbableElements(focusDomRef);\n\t\tif (tabbableElements.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst activeElement = getActiveElement() as HTMLElement;\n\t\tconst currentIndex = tabbableElements.indexOf(activeElement);\n\n\t\tif (currentIndex === -1) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet nextElement: HTMLElement | null = null;\n\n\t\tif (isTabNext(e)) {\n\t\t\tif (currentIndex < tabbableElements.length - 1) {\n\t\t\t\tnextElement = tabbableElements[currentIndex + 1];\n\t\t\t} else {\n\t\t\t\t// Loop to first element when at the last element\n\t\t\t\tnextElement = tabbableElements[0];\n\t\t\t}\n\t\t} else if (isTabPrevious(e)) {\n\t\t\tif (currentIndex > 0) {\n\t\t\t\tnextElement = tabbableElements[currentIndex - 1];\n\t\t\t} else {\n\t\t\t\t// Loop to last element when at the first element\n\t\t\t\tnextElement = tabbableElements[tabbableElements.length - 1];\n\t\t\t}\n\t\t}\n\n\t\tif (nextElement) {\n\t\t\tnextElement.focus();\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t_onDeleteButtonClick() {\n\t\tthis.fireDecoratorEvent(\"delete\");\n\t}\n\n\t_onDeleteButtonKeyDown(e: KeyboardEvent) {\n\t\tif (isSpace(e) || isEnter(e)) {\n\t\t\tthis.fireDecoratorEvent(\"delete\");\n\t\t}\n\t}\n\n\tonBeforeRendering(): void {\n\t\tsuper.onBeforeRendering();\n\n\t\t// bold the matched text\n\t\tthis._markupText = this.highlightText ? generateHighlightedMarkup((this.text || \"\"), this.highlightText) : encodeXML(this.text || \"\");\n\t}\n\n\tget _deleteButtonTooltip() {\n\t\treturn SearchItem.i18nBundle.getText(SEARCH_ITEM_DELETE_BUTTON);\n\t}\n\n\tget hasActions() {\n\t\treturn !!this.actions.length;\n\t}\n}\n\nSearchItem.define();\n\nexport default SearchItem;\n"]}
@@ -9,7 +9,8 @@ export default function SearchFieldTemplate() {
9
9
  return (_jsx("li", { part: "native-li", class: "ui5-li-root ui5-li--focusable", "aria-selected": this.selected, role: "option", "data-sap-focus-ref": true, draggable: this.movable, tabindex: this._effectiveTabIndex, onFocusIn: this._onfocusin, onFocusOut: this._onfocusout, onKeyUp: this._onkeyup, onKeyDown: this._onkeydown, onClick: this._onclick, children: _jsx("div", { part: "content", class: "ui5-search-item-content", children: _jsxs("div", { class: "ui5-search-item-begin-content", children: [this.image.length > 0 && !this.icon &&
10
10
  _jsx("slot", { name: "image" }), this.icon &&
11
11
  _jsx(Icon, { class: "ui5-search-item-icon", name: this.icon }), this.scopeName &&
12
- _jsx(Tag, { design: TagDesign.Set2, colorScheme: "10", children: this.scopeName }), _jsxs("div", { class: "ui5-search-item-titles-container", children: [_jsx("span", { part: "title", class: "ui5-search-item-text", dangerouslySetInnerHTML: { __html: this._markupText } }), _jsx("span", { part: "subtitle", class: "ui5-search-item-description", children: this.description })] }), this.deletable &&
13
- _jsx(Button, { class: "ui5-search-item-selected-delete", design: ButtonDesign.Transparent, icon: decline, onClick: this._onDeleteButtonClick, tooltip: this._deleteButtonTooltip, onKeyDown: this._onDeleteButtonKeyDown })] }) }) }));
12
+ _jsx(Tag, { design: TagDesign.Set2, colorScheme: "10", children: this.scopeName }), _jsxs("div", { class: "ui5-search-item-titles-container", children: [_jsx("span", { part: "title", class: "ui5-search-item-text", dangerouslySetInnerHTML: { __html: this._markupText } }), _jsx("span", { part: "subtitle", class: "ui5-search-item-description", children: this.description })] }), _jsxs("div", { class: "ui5-search-item-actions-container", children: [this.hasActions &&
13
+ _jsx("div", { class: "ui5-search-item-actions", children: _jsx("slot", { name: "actions" }) }), this.deletable &&
14
+ _jsx(Button, { class: "ui5-search-item-selected-delete", design: ButtonDesign.Transparent, icon: decline, onClick: this._onDeleteButtonClick, tooltip: this._deleteButtonTooltip, onKeyDown: this._onDeleteButtonKeyDown })] })] }) }) }));
14
15
  }
15
16
  //# sourceMappingURL=SearchItemTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchItemTemplate.js","sourceRoot":"","sources":["../src/SearchItemTemplate.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,iCAAiC,CAAC;AAEnD,OAAO,GAAG,MAAM,gCAAgC,CAAC;AACjD,OAAO,MAAM,MAAM,mCAAmC,CAAC;AACvD,OAAO,OAAO,MAAM,0CAA0C,CAAC;AAC/D,OAAO,YAAY,MAAM,+CAA+C,CAAC;AACzE,OAAO,SAAS,MAAM,4CAA4C,CAAC;AAEnE,MAAM,CAAC,OAAO,UAAU,mBAAmB;IAC1C,OAAO,CACN,aACC,IAAI,EAAC,WAAW,EAChB,KAAK,EAAC,+BAA+B,mBACtB,IAAI,CAAC,QAAQ,EAC5B,IAAI,EAAC,QAAQ,8BAEb,SAAS,EAAE,IAAI,CAAC,OAAO,EACvB,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EACjC,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,YAEtB,cAAK,IAAI,EAAC,SAAS,EAAC,KAAK,EAAC,yBAAyB,YAClD,eAAK,KAAK,EAAC,+BAA+B,aACxC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBACnC,eAAM,IAAI,EAAC,OAAO,GAAQ,EAG1B,IAAI,CAAC,IAAI;wBACT,KAAC,IAAI,IAAC,KAAK,EAAC,sBAAsB,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAS,EAG3D,IAAI,CAAC,SAAS;wBACd,KAAC,GAAG,IAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,EAAC,IAAI,YAC3C,IAAI,CAAC,SAAS,GACV,EAGP,eAAK,KAAK,EAAC,kCAAkC,aAC5C,eAAM,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,sBAAsB,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,GAAS,EAE9G,eAAM,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,6BAA6B,YAAE,IAAI,CAAC,WAAW,GAAQ,IAC9E,EAEL,IAAI,CAAC,SAAS;wBACd,KAAC,MAAM,IAAC,KAAK,EAAC,iCAAiC,EAC9C,MAAM,EAAE,YAAY,CAAC,WAAW,EAChC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAClC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAClC,SAAS,EAAE,IAAI,CAAC,sBAAsB,GAAW,IAE9C,GACD,GACD,CACN,CAAC;AACH,CAAC","sourcesContent":["import Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport type SearchItem from \"./SearchItem.js\";\nimport Tag from \"@ui5/webcomponents/dist/Tag.js\";\nimport Button from \"@ui5/webcomponents/dist/Button.js\";\nimport decline from \"@ui5/webcomponents-icons/dist/decline.js\";\nimport ButtonDesign from \"@ui5/webcomponents/dist/types/ButtonDesign.js\";\nimport TagDesign from \"@ui5/webcomponents/dist/types/TagDesign.js\";\n\nexport default function SearchFieldTemplate(this: SearchItem) {\n\treturn (\n\t\t<li\n\t\t\tpart=\"native-li\"\n\t\t\tclass=\"ui5-li-root ui5-li--focusable\"\n\t\t\taria-selected={this.selected}\n\t\t\trole=\"option\"\n\t\t\tdata-sap-focus-ref\n\t\t\tdraggable={this.movable}\n\t\t\ttabindex={this._effectiveTabIndex}\n\t\t\tonFocusIn={this._onfocusin}\n\t\t\tonFocusOut={this._onfocusout}\n\t\t\tonKeyUp={this._onkeyup}\n\t\t\tonKeyDown={this._onkeydown}\n\t\t\tonClick={this._onclick}\n\t\t>\n\t\t\t<div part=\"content\" class=\"ui5-search-item-content\">\n\t\t\t\t<div class=\"ui5-search-item-begin-content\">\n\t\t\t\t\t{this.image.length > 0 && !this.icon &&\n\t\t\t\t\t\t<slot name=\"image\"></slot>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.icon &&\n\t\t\t\t\t\t<Icon class=\"ui5-search-item-icon\" name={this.icon}></Icon>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.scopeName &&\n\t\t\t\t\t\t<Tag design={TagDesign.Set2} colorScheme=\"10\">\n\t\t\t\t\t\t\t{this.scopeName}\n\t\t\t\t\t\t</Tag>\n\t\t\t\t\t}\n\n\t\t\t\t\t<div class=\"ui5-search-item-titles-container\">\n\t\t\t\t\t\t<span part=\"title\" class=\"ui5-search-item-text\" dangerouslySetInnerHTML={{ __html: this._markupText }}></span>\n\n\t\t\t\t\t\t<span part=\"subtitle\" class=\"ui5-search-item-description\">{this.description}</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{this.deletable &&\n\t\t\t\t\t\t<Button class=\"ui5-search-item-selected-delete\"\n\t\t\t\t\t\t\tdesign={ButtonDesign.Transparent}\n\t\t\t\t\t\t\ticon={decline}\n\t\t\t\t\t\t\tonClick={this._onDeleteButtonClick}\n\t\t\t\t\t\t\ttooltip={this._deleteButtonTooltip}\n\t\t\t\t\t\t\tonKeyDown={this._onDeleteButtonKeyDown}></Button>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</li >\n\t);\n}\n"]}
1
+ {"version":3,"file":"SearchItemTemplate.js","sourceRoot":"","sources":["../src/SearchItemTemplate.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,iCAAiC,CAAC;AAEnD,OAAO,GAAG,MAAM,gCAAgC,CAAC;AACjD,OAAO,MAAM,MAAM,mCAAmC,CAAC;AACvD,OAAO,OAAO,MAAM,0CAA0C,CAAC;AAC/D,OAAO,YAAY,MAAM,+CAA+C,CAAC;AACzE,OAAO,SAAS,MAAM,4CAA4C,CAAC;AAEnE,MAAM,CAAC,OAAO,UAAU,mBAAmB;IAC1C,OAAO,CACN,aACC,IAAI,EAAC,WAAW,EAChB,KAAK,EAAC,+BAA+B,mBACtB,IAAI,CAAC,QAAQ,EAC5B,IAAI,EAAC,QAAQ,8BAEb,SAAS,EAAE,IAAI,CAAC,OAAO,EACvB,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EACjC,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,YAEtB,cAAK,IAAI,EAAC,SAAS,EAAC,KAAK,EAAC,yBAAyB,YAClD,eAAK,KAAK,EAAC,+BAA+B,aACxC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBACnC,eAAM,IAAI,EAAC,OAAO,GAAQ,EAG1B,IAAI,CAAC,IAAI;wBACT,KAAC,IAAI,IAAC,KAAK,EAAC,sBAAsB,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAS,EAG3D,IAAI,CAAC,SAAS;wBACd,KAAC,GAAG,IAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,EAAC,IAAI,YAC3C,IAAI,CAAC,SAAS,GACV,EAGP,eAAK,KAAK,EAAC,kCAAkC,aAC5C,eAAM,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,sBAAsB,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,GAAS,EAE9G,eAAM,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,6BAA6B,YAAE,IAAI,CAAC,WAAW,GAAQ,IAC9E,EAEN,eAAK,KAAK,EAAC,mCAAmC,aAC5C,IAAI,CAAC,UAAU;gCACf,cAAK,KAAK,EAAC,yBAAyB,YACnC,eAAM,IAAI,EAAC,SAAS,GAAQ,GACvB,EAGN,IAAI,CAAC,SAAS;gCACd,KAAC,MAAM,IAAC,KAAK,EAAC,iCAAiC,EAC9C,MAAM,EAAE,YAAY,CAAC,WAAW,EAChC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAClC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAClC,SAAS,EAAE,IAAI,CAAC,sBAAsB,GAAW,IAE9C,IACD,GACD,GACD,CACN,CAAC;AACH,CAAC","sourcesContent":["import Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport type SearchItem from \"./SearchItem.js\";\nimport Tag from \"@ui5/webcomponents/dist/Tag.js\";\nimport Button from \"@ui5/webcomponents/dist/Button.js\";\nimport decline from \"@ui5/webcomponents-icons/dist/decline.js\";\nimport ButtonDesign from \"@ui5/webcomponents/dist/types/ButtonDesign.js\";\nimport TagDesign from \"@ui5/webcomponents/dist/types/TagDesign.js\";\n\nexport default function SearchFieldTemplate(this: SearchItem) {\n\treturn (\n\t\t<li\n\t\t\tpart=\"native-li\"\n\t\t\tclass=\"ui5-li-root ui5-li--focusable\"\n\t\t\taria-selected={this.selected}\n\t\t\trole=\"option\"\n\t\t\tdata-sap-focus-ref\n\t\t\tdraggable={this.movable}\n\t\t\ttabindex={this._effectiveTabIndex}\n\t\t\tonFocusIn={this._onfocusin}\n\t\t\tonFocusOut={this._onfocusout}\n\t\t\tonKeyUp={this._onkeyup}\n\t\t\tonKeyDown={this._onkeydown}\n\t\t\tonClick={this._onclick}\n\t\t>\n\t\t\t<div part=\"content\" class=\"ui5-search-item-content\">\n\t\t\t\t<div class=\"ui5-search-item-begin-content\">\n\t\t\t\t\t{this.image.length > 0 && !this.icon &&\n\t\t\t\t\t\t<slot name=\"image\"></slot>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.icon &&\n\t\t\t\t\t\t<Icon class=\"ui5-search-item-icon\" name={this.icon}></Icon>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.scopeName &&\n\t\t\t\t\t\t<Tag design={TagDesign.Set2} colorScheme=\"10\">\n\t\t\t\t\t\t\t{this.scopeName}\n\t\t\t\t\t\t</Tag>\n\t\t\t\t\t}\n\n\t\t\t\t\t<div class=\"ui5-search-item-titles-container\">\n\t\t\t\t\t\t<span part=\"title\" class=\"ui5-search-item-text\" dangerouslySetInnerHTML={{ __html: this._markupText }}></span>\n\n\t\t\t\t\t\t<span part=\"subtitle\" class=\"ui5-search-item-description\">{this.description}</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"ui5-search-item-actions-container\">\n\t\t\t\t\t\t{this.hasActions &&\n\t\t\t\t\t\t\t<div class=\"ui5-search-item-actions\">\n\t\t\t\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t{this.deletable &&\n\t\t\t\t\t\t\t<Button class=\"ui5-search-item-selected-delete\"\n\t\t\t\t\t\t\t\tdesign={ButtonDesign.Transparent}\n\t\t\t\t\t\t\t\ticon={decline}\n\t\t\t\t\t\t\t\tonClick={this._onDeleteButtonClick}\n\t\t\t\t\t\t\t\ttooltip={this._deleteButtonTooltip}\n\t\t\t\t\t\t\t\tonKeyDown={this._onDeleteButtonKeyDown}></Button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</li >\n\t);\n}\n"]}
@@ -75,6 +75,7 @@ let UserSettingsDialog = UserSettingsDialog_1 = class UserSettingsDialog extends
75
75
  const searchValue = this._searchValue.toLowerCase();
76
76
  this._filteredItems = [];
77
77
  this._filteredFixedItems = [];
78
+ const siblingsWithIcon = this.items.some(item => !!item.icon);
78
79
  this.items.forEach(item => {
79
80
  if (item.text.toLowerCase().includes(searchValue)) {
80
81
  this._filteredItems.push(item);
@@ -82,6 +83,7 @@ let UserSettingsDialog = UserSettingsDialog_1 = class UserSettingsDialog extends
82
83
  if (item.selected) {
83
84
  this._selectedSetting = item;
84
85
  }
86
+ item._siblingsWithIcon = siblingsWithIcon;
85
87
  });
86
88
  this.fixedItems.forEach(item => {
87
89
  if (item.text.toLowerCase().includes(searchValue)) {