@ui5/webcomponents 2.15.0-rc.3 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/DateTimePicker.js +1 -1
  4. package/dist/DateTimePicker.js.map +1 -1
  5. package/dist/Table.d.ts +2 -0
  6. package/dist/Table.js +6 -1
  7. package/dist/Table.js.map +1 -1
  8. package/dist/TableCell.d.ts +4 -2
  9. package/dist/TableCell.js +9 -2
  10. package/dist/TableCell.js.map +1 -1
  11. package/dist/TableCellTemplate.js +4 -2
  12. package/dist/TableCellTemplate.js.map +1 -1
  13. package/dist/TableCustomAnnouncement.d.ts +23 -0
  14. package/dist/TableCustomAnnouncement.js +189 -0
  15. package/dist/TableCustomAnnouncement.js.map +1 -0
  16. package/dist/TableHeaderCell.d.ts +5 -0
  17. package/dist/TableHeaderCell.js +12 -0
  18. package/dist/TableHeaderCell.js.map +1 -1
  19. package/dist/TableHeaderCellActionBase.d.ts +3 -0
  20. package/dist/TableHeaderCellActionBase.js +6 -0
  21. package/dist/TableHeaderCellActionBase.js.map +1 -1
  22. package/dist/TableHeaderRowTemplate.js +9 -5
  23. package/dist/TableHeaderRowTemplate.js.map +1 -1
  24. package/dist/TableNavigation.js +0 -1
  25. package/dist/TableNavigation.js.map +1 -1
  26. package/dist/TableRow.d.ts +7 -3
  27. package/dist/TableRow.js +33 -6
  28. package/dist/TableRow.js.map +1 -1
  29. package/dist/TableRowTemplate.d.ts +1 -1
  30. package/dist/TableRowTemplate.js +14 -6
  31. package/dist/TableRowTemplate.js.map +1 -1
  32. package/dist/TableSelection.js +3 -3
  33. package/dist/TableSelection.js.map +1 -1
  34. package/dist/TableSelectionMulti.js +6 -6
  35. package/dist/TableSelectionMulti.js.map +1 -1
  36. package/dist/TableUtils.d.ts +3 -3
  37. package/dist/TableUtils.js +5 -5
  38. package/dist/TableUtils.js.map +1 -1
  39. package/dist/css/themes/Avatar.css +1 -1
  40. package/dist/css/themes/AvatarGroup.css +1 -1
  41. package/dist/css/themes/Bar.css +1 -1
  42. package/dist/css/themes/Breadcrumbs.css +1 -1
  43. package/dist/css/themes/BusyIndicator.css +1 -1
  44. package/dist/css/themes/Button.css +1 -1
  45. package/dist/css/themes/ButtonBadge.css +1 -1
  46. package/dist/css/themes/Calendar.css +1 -1
  47. package/dist/css/themes/CalendarHeader.css +1 -1
  48. package/dist/css/themes/CalendarLegend.css +1 -1
  49. package/dist/css/themes/CalendarLegendItem.css +1 -1
  50. package/dist/css/themes/Card.css +1 -1
  51. package/dist/css/themes/CardHeader.css +1 -1
  52. package/dist/css/themes/Carousel.css +1 -1
  53. package/dist/css/themes/CheckBox.css +1 -1
  54. package/dist/css/themes/ColorPalette.css +1 -1
  55. package/dist/css/themes/ColorPaletteItem.css +1 -1
  56. package/dist/css/themes/ColorPalettePopover.css +1 -1
  57. package/dist/css/themes/ColorPicker.css +1 -1
  58. package/dist/css/themes/ComboBox.css +1 -1
  59. package/dist/css/themes/ComboBoxItem.css +1 -1
  60. package/dist/css/themes/DatePicker.css +1 -1
  61. package/dist/css/themes/DatePickerPopover.css +1 -1
  62. package/dist/css/themes/DateTimePickerPopover.css +1 -1
  63. package/dist/css/themes/DayPicker.css +1 -1
  64. package/dist/css/themes/Dialog.css +1 -1
  65. package/dist/css/themes/DynamicDateRange.css +1 -1
  66. package/dist/css/themes/DynamicDateRangePopover.css +1 -1
  67. package/dist/css/themes/FileUploader.css +1 -1
  68. package/dist/css/themes/Form.css +1 -1
  69. package/dist/css/themes/FormItem.css +1 -1
  70. package/dist/css/themes/FormItemSpan.css +1 -1
  71. package/dist/css/themes/GrowingButton.css +1 -1
  72. package/dist/css/themes/Icon.css +1 -1
  73. package/dist/css/themes/Input.css +1 -1
  74. package/dist/css/themes/InputIcon.css +1 -1
  75. package/dist/css/themes/InputSharedStyles.css +1 -1
  76. package/dist/css/themes/Link.css +1 -1
  77. package/dist/css/themes/List.css +1 -1
  78. package/dist/css/themes/ListItem.css +1 -1
  79. package/dist/css/themes/ListItemBase.css +1 -1
  80. package/dist/css/themes/ListItemCustom.css +1 -1
  81. package/dist/css/themes/ListItemGroup.css +1 -1
  82. package/dist/css/themes/ListItemGroupHeader.css +1 -1
  83. package/dist/css/themes/ListItemIcon.css +1 -1
  84. package/dist/css/themes/Menu.css +1 -1
  85. package/dist/css/themes/MenuItem.css +1 -1
  86. package/dist/css/themes/MessageStrip.css +1 -1
  87. package/dist/css/themes/MonthPicker.css +1 -1
  88. package/dist/css/themes/MultiComboBox.css +1 -1
  89. package/dist/css/themes/MultiComboBoxItem.css +1 -1
  90. package/dist/css/themes/MultiComboBoxPopover.css +1 -1
  91. package/dist/css/themes/MultiInput.css +1 -1
  92. package/dist/css/themes/OptionBase.css +1 -1
  93. package/dist/css/themes/Panel.css +1 -1
  94. package/dist/css/themes/Popover.css +1 -1
  95. package/dist/css/themes/PopupsCommon.css +1 -1
  96. package/dist/css/themes/ProgressIndicator.css +1 -1
  97. package/dist/css/themes/RadioButton.css +1 -1
  98. package/dist/css/themes/RangeSlider.css +1 -1
  99. package/dist/css/themes/RatingIndicator.css +1 -1
  100. package/dist/css/themes/ResponsivePopover.css +1 -1
  101. package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
  102. package/dist/css/themes/SegmentedButton.css +1 -1
  103. package/dist/css/themes/SegmentedButtonItem.css +1 -1
  104. package/dist/css/themes/Select.css +1 -1
  105. package/dist/css/themes/SliderBase.css +1 -1
  106. package/dist/css/themes/SplitButton.css +1 -1
  107. package/dist/css/themes/StepInput.css +1 -1
  108. package/dist/css/themes/SuggestionItem.css +1 -1
  109. package/dist/css/themes/SuggestionItemCustom.css +1 -1
  110. package/dist/css/themes/Switch.css +1 -1
  111. package/dist/css/themes/TabContainer.css +1 -1
  112. package/dist/css/themes/TabInOverflow.css +1 -1
  113. package/dist/css/themes/TabInStrip.css +1 -1
  114. package/dist/css/themes/TabSemanticIcon.css +1 -1
  115. package/dist/css/themes/TabSeparatorInOverflow.css +1 -1
  116. package/dist/css/themes/TableCell.css +1 -1
  117. package/dist/css/themes/TableCellBase.css +1 -1
  118. package/dist/css/themes/TableHeaderRow.css +1 -1
  119. package/dist/css/themes/TableRow.css +1 -1
  120. package/dist/css/themes/TableRowActionBase.css +1 -1
  121. package/dist/css/themes/TableRowBase.css +1 -1
  122. package/dist/css/themes/Tag.css +1 -1
  123. package/dist/css/themes/Text.css +1 -1
  124. package/dist/css/themes/TextArea.css +1 -1
  125. package/dist/css/themes/TimePicker.css +1 -1
  126. package/dist/css/themes/Toast.css +1 -1
  127. package/dist/css/themes/ToggleButton.css +1 -1
  128. package/dist/css/themes/Token.css +1 -1
  129. package/dist/css/themes/Tokenizer.css +1 -1
  130. package/dist/css/themes/TokenizerPopover.css +1 -1
  131. package/dist/css/themes/Toolbar.css +1 -1
  132. package/dist/css/themes/ToolbarButton.css +1 -1
  133. package/dist/css/themes/ToolbarPopover.css +1 -1
  134. package/dist/css/themes/ToolbarSeparator.css +1 -1
  135. package/dist/css/themes/TreeItem.css +1 -1
  136. package/dist/css/themes/ValueStateMessage.css +1 -1
  137. package/dist/css/themes/ValueStateVariables.css +1 -1
  138. package/dist/css/themes/YearPicker.css +1 -1
  139. package/dist/css/themes/YearRangePicker.css +1 -1
  140. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  141. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  142. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  143. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  144. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  145. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  146. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  147. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  148. package/dist/custom-elements-internal.json +15 -1
  149. package/dist/custom-elements.json +15 -0
  150. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  151. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  152. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  153. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  154. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  155. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  156. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  157. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  158. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  159. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  160. package/dist/generated/i18n/i18n-defaults.d.ts +15 -3
  161. package/dist/generated/i18n/i18n-defaults.js +16 -4
  162. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  163. package/dist/generated/themes/Avatar.css.d.ts +1 -1
  164. package/dist/generated/themes/Avatar.css.js +1 -1
  165. package/dist/generated/themes/Avatar.css.js.map +1 -1
  166. package/dist/generated/themes/AvatarGroup.css.d.ts +1 -1
  167. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  168. package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
  169. package/dist/generated/themes/Bar.css.d.ts +1 -1
  170. package/dist/generated/themes/Bar.css.js +1 -1
  171. package/dist/generated/themes/Bar.css.js.map +1 -1
  172. package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
  173. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  174. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  175. package/dist/generated/themes/BusyIndicator.css.d.ts +1 -1
  176. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  177. package/dist/generated/themes/BusyIndicator.css.js.map +1 -1
  178. package/dist/generated/themes/Button.css.d.ts +1 -1
  179. package/dist/generated/themes/Button.css.js +1 -1
  180. package/dist/generated/themes/Button.css.js.map +1 -1
  181. package/dist/generated/themes/ButtonBadge.css.d.ts +1 -1
  182. package/dist/generated/themes/ButtonBadge.css.js +1 -1
  183. package/dist/generated/themes/ButtonBadge.css.js.map +1 -1
  184. package/dist/generated/themes/Calendar.css.d.ts +1 -1
  185. package/dist/generated/themes/Calendar.css.js +1 -1
  186. package/dist/generated/themes/Calendar.css.js.map +1 -1
  187. package/dist/generated/themes/CalendarHeader.css.d.ts +1 -1
  188. package/dist/generated/themes/CalendarHeader.css.js +1 -1
  189. package/dist/generated/themes/CalendarHeader.css.js.map +1 -1
  190. package/dist/generated/themes/CalendarLegend.css.d.ts +1 -1
  191. package/dist/generated/themes/CalendarLegend.css.js +1 -1
  192. package/dist/generated/themes/CalendarLegend.css.js.map +1 -1
  193. package/dist/generated/themes/CalendarLegendItem.css.d.ts +1 -1
  194. package/dist/generated/themes/CalendarLegendItem.css.js +1 -1
  195. package/dist/generated/themes/CalendarLegendItem.css.js.map +1 -1
  196. package/dist/generated/themes/Card.css.d.ts +1 -1
  197. package/dist/generated/themes/Card.css.js +1 -1
  198. package/dist/generated/themes/Card.css.js.map +1 -1
  199. package/dist/generated/themes/CardHeader.css.d.ts +1 -1
  200. package/dist/generated/themes/CardHeader.css.js +1 -1
  201. package/dist/generated/themes/CardHeader.css.js.map +1 -1
  202. package/dist/generated/themes/Carousel.css.d.ts +1 -1
  203. package/dist/generated/themes/Carousel.css.js +1 -1
  204. package/dist/generated/themes/Carousel.css.js.map +1 -1
  205. package/dist/generated/themes/CheckBox.css.d.ts +1 -1
  206. package/dist/generated/themes/CheckBox.css.js +1 -1
  207. package/dist/generated/themes/CheckBox.css.js.map +1 -1
  208. package/dist/generated/themes/ColorPalette.css.d.ts +1 -1
  209. package/dist/generated/themes/ColorPalette.css.js +1 -1
  210. package/dist/generated/themes/ColorPalette.css.js.map +1 -1
  211. package/dist/generated/themes/ColorPaletteItem.css.d.ts +1 -1
  212. package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
  213. package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
  214. package/dist/generated/themes/ColorPalettePopover.css.d.ts +1 -1
  215. package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
  216. package/dist/generated/themes/ColorPalettePopover.css.js.map +1 -1
  217. package/dist/generated/themes/ColorPicker.css.d.ts +1 -1
  218. package/dist/generated/themes/ColorPicker.css.js +1 -1
  219. package/dist/generated/themes/ColorPicker.css.js.map +1 -1
  220. package/dist/generated/themes/ComboBox.css.d.ts +1 -1
  221. package/dist/generated/themes/ComboBox.css.js +1 -1
  222. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  223. package/dist/generated/themes/ComboBoxItem.css.d.ts +1 -1
  224. package/dist/generated/themes/ComboBoxItem.css.js +1 -1
  225. package/dist/generated/themes/ComboBoxItem.css.js.map +1 -1
  226. package/dist/generated/themes/DatePicker.css.d.ts +1 -1
  227. package/dist/generated/themes/DatePicker.css.js +1 -1
  228. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  229. package/dist/generated/themes/DatePickerPopover.css.d.ts +1 -1
  230. package/dist/generated/themes/DatePickerPopover.css.js +1 -1
  231. package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
  232. package/dist/generated/themes/DateTimePickerPopover.css.d.ts +1 -1
  233. package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
  234. package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
  235. package/dist/generated/themes/DayPicker.css.d.ts +1 -1
  236. package/dist/generated/themes/DayPicker.css.js +1 -1
  237. package/dist/generated/themes/DayPicker.css.js.map +1 -1
  238. package/dist/generated/themes/Dialog.css.d.ts +1 -1
  239. package/dist/generated/themes/Dialog.css.js +1 -1
  240. package/dist/generated/themes/Dialog.css.js.map +1 -1
  241. package/dist/generated/themes/DynamicDateRange.css.d.ts +1 -1
  242. package/dist/generated/themes/DynamicDateRange.css.js +1 -1
  243. package/dist/generated/themes/DynamicDateRange.css.js.map +1 -1
  244. package/dist/generated/themes/DynamicDateRangePopover.css.d.ts +1 -1
  245. package/dist/generated/themes/DynamicDateRangePopover.css.js +1 -1
  246. package/dist/generated/themes/DynamicDateRangePopover.css.js.map +1 -1
  247. package/dist/generated/themes/FileUploader.css.d.ts +1 -1
  248. package/dist/generated/themes/FileUploader.css.js +1 -1
  249. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  250. package/dist/generated/themes/Form.css.d.ts +1 -1
  251. package/dist/generated/themes/Form.css.js +1 -1
  252. package/dist/generated/themes/Form.css.js.map +1 -1
  253. package/dist/generated/themes/FormItem.css.d.ts +1 -1
  254. package/dist/generated/themes/FormItem.css.js +1 -1
  255. package/dist/generated/themes/FormItem.css.js.map +1 -1
  256. package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
  257. package/dist/generated/themes/FormItemSpan.css.js +1 -1
  258. package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
  259. package/dist/generated/themes/GrowingButton.css.d.ts +1 -1
  260. package/dist/generated/themes/GrowingButton.css.js +1 -1
  261. package/dist/generated/themes/GrowingButton.css.js.map +1 -1
  262. package/dist/generated/themes/Icon.css.d.ts +1 -1
  263. package/dist/generated/themes/Icon.css.js +1 -1
  264. package/dist/generated/themes/Icon.css.js.map +1 -1
  265. package/dist/generated/themes/Input.css.d.ts +1 -1
  266. package/dist/generated/themes/Input.css.js +1 -1
  267. package/dist/generated/themes/Input.css.js.map +1 -1
  268. package/dist/generated/themes/InputIcon.css.d.ts +1 -1
  269. package/dist/generated/themes/InputIcon.css.js +1 -1
  270. package/dist/generated/themes/InputIcon.css.js.map +1 -1
  271. package/dist/generated/themes/InputSharedStyles.css.d.ts +1 -1
  272. package/dist/generated/themes/InputSharedStyles.css.js +1 -1
  273. package/dist/generated/themes/InputSharedStyles.css.js.map +1 -1
  274. package/dist/generated/themes/Link.css.d.ts +1 -1
  275. package/dist/generated/themes/Link.css.js +1 -1
  276. package/dist/generated/themes/Link.css.js.map +1 -1
  277. package/dist/generated/themes/List.css.d.ts +1 -1
  278. package/dist/generated/themes/List.css.js +1 -1
  279. package/dist/generated/themes/List.css.js.map +1 -1
  280. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  281. package/dist/generated/themes/ListItem.css.js +1 -1
  282. package/dist/generated/themes/ListItem.css.js.map +1 -1
  283. package/dist/generated/themes/ListItemBase.css.d.ts +1 -1
  284. package/dist/generated/themes/ListItemBase.css.js +1 -1
  285. package/dist/generated/themes/ListItemBase.css.js.map +1 -1
  286. package/dist/generated/themes/ListItemCustom.css.d.ts +1 -1
  287. package/dist/generated/themes/ListItemCustom.css.js +1 -1
  288. package/dist/generated/themes/ListItemCustom.css.js.map +1 -1
  289. package/dist/generated/themes/ListItemGroup.css.d.ts +1 -1
  290. package/dist/generated/themes/ListItemGroup.css.js +1 -1
  291. package/dist/generated/themes/ListItemGroup.css.js.map +1 -1
  292. package/dist/generated/themes/ListItemGroupHeader.css.d.ts +1 -1
  293. package/dist/generated/themes/ListItemGroupHeader.css.js +1 -1
  294. package/dist/generated/themes/ListItemGroupHeader.css.js.map +1 -1
  295. package/dist/generated/themes/ListItemIcon.css.d.ts +1 -1
  296. package/dist/generated/themes/ListItemIcon.css.js +1 -1
  297. package/dist/generated/themes/ListItemIcon.css.js.map +1 -1
  298. package/dist/generated/themes/Menu.css.d.ts +1 -1
  299. package/dist/generated/themes/Menu.css.js +1 -1
  300. package/dist/generated/themes/Menu.css.js.map +1 -1
  301. package/dist/generated/themes/MenuItem.css.d.ts +1 -1
  302. package/dist/generated/themes/MenuItem.css.js +1 -1
  303. package/dist/generated/themes/MenuItem.css.js.map +1 -1
  304. package/dist/generated/themes/MessageStrip.css.d.ts +1 -1
  305. package/dist/generated/themes/MessageStrip.css.js +1 -1
  306. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  307. package/dist/generated/themes/MonthPicker.css.d.ts +1 -1
  308. package/dist/generated/themes/MonthPicker.css.js +1 -1
  309. package/dist/generated/themes/MonthPicker.css.js.map +1 -1
  310. package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
  311. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  312. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  313. package/dist/generated/themes/MultiComboBoxItem.css.d.ts +1 -1
  314. package/dist/generated/themes/MultiComboBoxItem.css.js +1 -1
  315. package/dist/generated/themes/MultiComboBoxItem.css.js.map +1 -1
  316. package/dist/generated/themes/MultiComboBoxPopover.css.d.ts +1 -1
  317. package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
  318. package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
  319. package/dist/generated/themes/MultiInput.css.d.ts +1 -1
  320. package/dist/generated/themes/MultiInput.css.js +1 -1
  321. package/dist/generated/themes/MultiInput.css.js.map +1 -1
  322. package/dist/generated/themes/OptionBase.css.d.ts +1 -1
  323. package/dist/generated/themes/OptionBase.css.js +1 -1
  324. package/dist/generated/themes/OptionBase.css.js.map +1 -1
  325. package/dist/generated/themes/Panel.css.d.ts +1 -1
  326. package/dist/generated/themes/Panel.css.js +1 -1
  327. package/dist/generated/themes/Panel.css.js.map +1 -1
  328. package/dist/generated/themes/Popover.css.d.ts +1 -1
  329. package/dist/generated/themes/Popover.css.js +1 -1
  330. package/dist/generated/themes/Popover.css.js.map +1 -1
  331. package/dist/generated/themes/PopupsCommon.css.d.ts +1 -1
  332. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  333. package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
  334. package/dist/generated/themes/ProgressIndicator.css.d.ts +1 -1
  335. package/dist/generated/themes/ProgressIndicator.css.js +1 -1
  336. package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
  337. package/dist/generated/themes/RadioButton.css.d.ts +1 -1
  338. package/dist/generated/themes/RadioButton.css.js +1 -1
  339. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  340. package/dist/generated/themes/RangeSlider.css.d.ts +1 -1
  341. package/dist/generated/themes/RangeSlider.css.js +1 -1
  342. package/dist/generated/themes/RangeSlider.css.js.map +1 -1
  343. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  344. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  345. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  346. package/dist/generated/themes/ResponsivePopover.css.d.ts +1 -1
  347. package/dist/generated/themes/ResponsivePopover.css.js +1 -1
  348. package/dist/generated/themes/ResponsivePopover.css.js.map +1 -1
  349. package/dist/generated/themes/ResponsivePopoverCommon.css.d.ts +1 -1
  350. package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
  351. package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
  352. package/dist/generated/themes/SegmentedButton.css.d.ts +1 -1
  353. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  354. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  355. package/dist/generated/themes/SegmentedButtonItem.css.d.ts +1 -1
  356. package/dist/generated/themes/SegmentedButtonItem.css.js +1 -1
  357. package/dist/generated/themes/SegmentedButtonItem.css.js.map +1 -1
  358. package/dist/generated/themes/Select.css.d.ts +1 -1
  359. package/dist/generated/themes/Select.css.js +1 -1
  360. package/dist/generated/themes/Select.css.js.map +1 -1
  361. package/dist/generated/themes/SliderBase.css.d.ts +1 -1
  362. package/dist/generated/themes/SliderBase.css.js +1 -1
  363. package/dist/generated/themes/SliderBase.css.js.map +1 -1
  364. package/dist/generated/themes/SplitButton.css.d.ts +1 -1
  365. package/dist/generated/themes/SplitButton.css.js +1 -1
  366. package/dist/generated/themes/SplitButton.css.js.map +1 -1
  367. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  368. package/dist/generated/themes/StepInput.css.js +1 -1
  369. package/dist/generated/themes/StepInput.css.js.map +1 -1
  370. package/dist/generated/themes/SuggestionItem.css.d.ts +1 -1
  371. package/dist/generated/themes/SuggestionItem.css.js +1 -1
  372. package/dist/generated/themes/SuggestionItem.css.js.map +1 -1
  373. package/dist/generated/themes/SuggestionItemCustom.css.d.ts +1 -1
  374. package/dist/generated/themes/SuggestionItemCustom.css.js +1 -1
  375. package/dist/generated/themes/SuggestionItemCustom.css.js.map +1 -1
  376. package/dist/generated/themes/Switch.css.d.ts +1 -1
  377. package/dist/generated/themes/Switch.css.js +1 -1
  378. package/dist/generated/themes/Switch.css.js.map +1 -1
  379. package/dist/generated/themes/TabContainer.css.d.ts +1 -1
  380. package/dist/generated/themes/TabContainer.css.js +1 -1
  381. package/dist/generated/themes/TabContainer.css.js.map +1 -1
  382. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  383. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  384. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  385. package/dist/generated/themes/TabInStrip.css.d.ts +1 -1
  386. package/dist/generated/themes/TabInStrip.css.js +1 -1
  387. package/dist/generated/themes/TabInStrip.css.js.map +1 -1
  388. package/dist/generated/themes/TabSemanticIcon.css.d.ts +1 -1
  389. package/dist/generated/themes/TabSemanticIcon.css.js +1 -1
  390. package/dist/generated/themes/TabSemanticIcon.css.js.map +1 -1
  391. package/dist/generated/themes/TabSeparatorInOverflow.css.d.ts +1 -1
  392. package/dist/generated/themes/TabSeparatorInOverflow.css.js +1 -1
  393. package/dist/generated/themes/TabSeparatorInOverflow.css.js.map +1 -1
  394. package/dist/generated/themes/TableCell.css.d.ts +1 -1
  395. package/dist/generated/themes/TableCell.css.js +1 -1
  396. package/dist/generated/themes/TableCell.css.js.map +1 -1
  397. package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
  398. package/dist/generated/themes/TableCellBase.css.js +1 -1
  399. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  400. package/dist/generated/themes/TableHeaderRow.css.d.ts +1 -1
  401. package/dist/generated/themes/TableHeaderRow.css.js +1 -1
  402. package/dist/generated/themes/TableHeaderRow.css.js.map +1 -1
  403. package/dist/generated/themes/TableRow.css.d.ts +1 -1
  404. package/dist/generated/themes/TableRow.css.js +1 -1
  405. package/dist/generated/themes/TableRow.css.js.map +1 -1
  406. package/dist/generated/themes/TableRowActionBase.css.d.ts +1 -1
  407. package/dist/generated/themes/TableRowActionBase.css.js +1 -1
  408. package/dist/generated/themes/TableRowActionBase.css.js.map +1 -1
  409. package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
  410. package/dist/generated/themes/TableRowBase.css.js +1 -1
  411. package/dist/generated/themes/TableRowBase.css.js.map +1 -1
  412. package/dist/generated/themes/Tag.css.d.ts +1 -1
  413. package/dist/generated/themes/Tag.css.js +1 -1
  414. package/dist/generated/themes/Tag.css.js.map +1 -1
  415. package/dist/generated/themes/Text.css.d.ts +1 -1
  416. package/dist/generated/themes/Text.css.js +1 -1
  417. package/dist/generated/themes/Text.css.js.map +1 -1
  418. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  419. package/dist/generated/themes/TextArea.css.js +1 -1
  420. package/dist/generated/themes/TextArea.css.js.map +1 -1
  421. package/dist/generated/themes/TimePicker.css.d.ts +1 -1
  422. package/dist/generated/themes/TimePicker.css.js +1 -1
  423. package/dist/generated/themes/TimePicker.css.js.map +1 -1
  424. package/dist/generated/themes/Toast.css.d.ts +1 -1
  425. package/dist/generated/themes/Toast.css.js +1 -1
  426. package/dist/generated/themes/Toast.css.js.map +1 -1
  427. package/dist/generated/themes/ToggleButton.css.d.ts +1 -1
  428. package/dist/generated/themes/ToggleButton.css.js +1 -1
  429. package/dist/generated/themes/ToggleButton.css.js.map +1 -1
  430. package/dist/generated/themes/Token.css.d.ts +1 -1
  431. package/dist/generated/themes/Token.css.js +1 -1
  432. package/dist/generated/themes/Token.css.js.map +1 -1
  433. package/dist/generated/themes/Tokenizer.css.d.ts +1 -1
  434. package/dist/generated/themes/Tokenizer.css.js +1 -1
  435. package/dist/generated/themes/Tokenizer.css.js.map +1 -1
  436. package/dist/generated/themes/TokenizerPopover.css.d.ts +1 -1
  437. package/dist/generated/themes/TokenizerPopover.css.js +1 -1
  438. package/dist/generated/themes/TokenizerPopover.css.js.map +1 -1
  439. package/dist/generated/themes/Toolbar.css.d.ts +1 -1
  440. package/dist/generated/themes/Toolbar.css.js +1 -1
  441. package/dist/generated/themes/Toolbar.css.js.map +1 -1
  442. package/dist/generated/themes/ToolbarButton.css.d.ts +1 -1
  443. package/dist/generated/themes/ToolbarButton.css.js +1 -1
  444. package/dist/generated/themes/ToolbarButton.css.js.map +1 -1
  445. package/dist/generated/themes/ToolbarPopover.css.d.ts +1 -1
  446. package/dist/generated/themes/ToolbarPopover.css.js +1 -1
  447. package/dist/generated/themes/ToolbarPopover.css.js.map +1 -1
  448. package/dist/generated/themes/ToolbarSeparator.css.d.ts +1 -1
  449. package/dist/generated/themes/ToolbarSeparator.css.js +1 -1
  450. package/dist/generated/themes/ToolbarSeparator.css.js.map +1 -1
  451. package/dist/generated/themes/TreeItem.css.d.ts +1 -1
  452. package/dist/generated/themes/TreeItem.css.js +1 -1
  453. package/dist/generated/themes/TreeItem.css.js.map +1 -1
  454. package/dist/generated/themes/ValueStateMessage.css.d.ts +1 -1
  455. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  456. package/dist/generated/themes/ValueStateMessage.css.js.map +1 -1
  457. package/dist/generated/themes/ValueStateVariables.css.d.ts +1 -1
  458. package/dist/generated/themes/ValueStateVariables.css.js +1 -1
  459. package/dist/generated/themes/ValueStateVariables.css.js.map +1 -1
  460. package/dist/generated/themes/YearPicker.css.d.ts +1 -1
  461. package/dist/generated/themes/YearPicker.css.js +1 -1
  462. package/dist/generated/themes/YearPicker.css.js.map +1 -1
  463. package/dist/generated/themes/YearRangePicker.css.d.ts +1 -1
  464. package/dist/generated/themes/YearRangePicker.css.js +1 -1
  465. package/dist/generated/themes/YearRangePicker.css.js.map +1 -1
  466. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  467. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  468. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  469. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  470. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  471. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  472. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  473. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  474. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  475. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  476. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  477. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  478. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  479. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  480. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  481. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  482. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  483. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  484. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  485. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  486. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  487. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  488. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  489. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  490. package/dist/types/TableGrowingMode.d.ts +0 -1
  491. package/dist/types/TableGrowingMode.js +0 -1
  492. package/dist/types/TableGrowingMode.js.map +1 -1
  493. package/dist/web-types.json +1 -1
  494. package/package.json +9 -9
  495. package/src/TableCellTemplate.tsx +6 -4
  496. package/src/TableHeaderRowTemplate.tsx +12 -5
  497. package/src/TableRowTemplate.tsx +28 -13
  498. package/src/i18n/messagebundle.properties +30 -6
  499. package/src/i18n/messagebundle_en.properties +1 -1
  500. package/src/i18n/messagebundle_fr.properties +13 -13
  501. package/src/themes/TableCell.css +4 -3
  502. package/src/themes/TableHeaderRow.css +5 -0
@@ -0,0 +1,189 @@
1
+ import TableExtension from "./TableExtension.js";
2
+ import I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
3
+ import { getTabbableElements } from "@ui5/webcomponents-base/dist/util/TabbableElements.js";
4
+ import { TABLE_ROW, TABLE_ROW_INDEX, TABLE_ROW_SELECTED, TABLE_ROW_ACTIVE, TABLE_ROW_NAVIGABLE, TABLE_COLUMN_HEADER_ROW, TABLE_CELL_SINGLE_CONTROL, TABLE_CELL_MULTIPLE_CONTROLS, TABLE_ACC_STATE_EMPTY, TABLE_ACC_STATE_REQUIRED, TABLE_ACC_STATE_DISABLED, TABLE_ACC_STATE_READONLY, } from "./generated/i18n/i18n-defaults.js";
5
+ let invisibleText;
6
+ const i18nBundle = new I18nBundle("@ui5/webcomponents/main");
7
+ const checkVisibility = (element) => {
8
+ return element.checkVisibility() || getComputedStyle(element).display === "contents";
9
+ };
10
+ const updateInvisibleText = (element, text = []) => {
11
+ const invisibleTextId = "ui5-table-invisible-text";
12
+ if (!invisibleText || !invisibleText.isConnected) {
13
+ invisibleText = document.createElement("span");
14
+ invisibleText.id = invisibleTextId;
15
+ invisibleText.ariaHidden = "true";
16
+ invisibleText.style.display = "none";
17
+ document.body.appendChild(invisibleText);
18
+ }
19
+ let ariaLabelledBy = (element.getAttribute("aria-labelledby") || "").split(" ").filter(Boolean);
20
+ const invisibleTextAssociated = ariaLabelledBy.includes(invisibleTextId);
21
+ text = Array.isArray(text) ? text.filter(Boolean).join(" . ").trim() : text.trim();
22
+ if (text && !invisibleTextAssociated) {
23
+ ariaLabelledBy.push(invisibleTextId);
24
+ }
25
+ else if (!text && invisibleTextAssociated) {
26
+ ariaLabelledBy = ariaLabelledBy.filter(id => id !== invisibleTextId);
27
+ }
28
+ invisibleText.textContent = text;
29
+ if (ariaLabelledBy.length > 0) {
30
+ element.setAttribute("aria-labelledby", ariaLabelledBy.join(" "));
31
+ }
32
+ else {
33
+ element.removeAttribute("aria-labelledby");
34
+ }
35
+ };
36
+ const getAccessibilityDescription = (element, lessDetails = false, _isRootElement = true) => {
37
+ if (!element) {
38
+ return "";
39
+ }
40
+ if (element.nodeType === Node.TEXT_NODE) {
41
+ return element.data.trim();
42
+ }
43
+ if (!(element instanceof HTMLElement)) {
44
+ return "";
45
+ }
46
+ if (element.hasAttribute("data-ui5-table-acc-text")) {
47
+ return element.getAttribute("data-ui5-table-acc-text") || "";
48
+ }
49
+ if (element.ariaHidden === "true" || !checkVisibility(element)) {
50
+ return _isRootElement ? i18nBundle.getText(TABLE_ACC_STATE_EMPTY) : "";
51
+ }
52
+ let childNodes = [];
53
+ const descriptions = [];
54
+ const accessibilityInfo = element.accessibilityInfo;
55
+ if (accessibilityInfo) {
56
+ const { type, description, required, disabled, readonly, children, } = accessibilityInfo;
57
+ childNodes = children || [];
58
+ type && descriptions.push(type);
59
+ description && descriptions.push(description);
60
+ if (!lessDetails) {
61
+ required && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_REQUIRED));
62
+ disabled && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_DISABLED));
63
+ readonly && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_READONLY));
64
+ }
65
+ }
66
+ else if (element.localName === "slot") {
67
+ childNodes = element.assignedNodes({ flatten: true });
68
+ }
69
+ else {
70
+ childNodes = element.shadowRoot ? [...element.shadowRoot.childNodes] : [...element.childNodes];
71
+ }
72
+ childNodes.forEach(child => {
73
+ const childDescription = getAccessibilityDescription(child, lessDetails, false);
74
+ childDescription && descriptions.push(childDescription);
75
+ });
76
+ if (_isRootElement) {
77
+ const hasDescription = descriptions.length > 0;
78
+ if (!hasDescription || !lessDetails) {
79
+ const tabbables = getTabbableElements(element);
80
+ const bundleKey = [
81
+ hasDescription ? "" : TABLE_ACC_STATE_EMPTY,
82
+ TABLE_CELL_SINGLE_CONTROL,
83
+ TABLE_CELL_MULTIPLE_CONTROLS,
84
+ ][Math.min(tabbables.length, 2)];
85
+ if (bundleKey) {
86
+ hasDescription && descriptions.push(".");
87
+ descriptions.push(i18nBundle.getText(bundleKey));
88
+ }
89
+ }
90
+ }
91
+ return descriptions.join(" ").trim();
92
+ };
93
+ /**
94
+ * Handles the custom announcement for the ui5-table.
95
+ *
96
+ * @class
97
+ * @private
98
+ */
99
+ class TableCustomAnnouncement extends TableExtension {
100
+ constructor(table) {
101
+ super();
102
+ this._tableAttributes = ["ui5-table-header-row", "ui5-table-header-cell", "ui5-table-row", "ui5-table-cell"];
103
+ this._table = table;
104
+ }
105
+ _onfocusin(e, eventOrigin) {
106
+ const tableAttribute = this._tableAttributes.find(attr => eventOrigin.hasAttribute(attr));
107
+ if (!tableAttribute) {
108
+ return;
109
+ }
110
+ const tableElementName = tableAttribute.replace("ui5-table", "Table").replace(/-([a-z])/g, g => g[1].toUpperCase());
111
+ const eventHandlerName = `_handle${tableElementName}Focusin`;
112
+ const eventHandler = this[eventHandlerName];
113
+ if (typeof eventHandler === "function") {
114
+ eventHandler.call(this, eventOrigin, e);
115
+ }
116
+ else {
117
+ this._handleTableElementFocusin(eventOrigin);
118
+ }
119
+ }
120
+ _onfocusout(e, eventOrigin) {
121
+ const isTableElement = this._tableAttributes.some(attr => eventOrigin.hasAttribute(attr));
122
+ isTableElement && updateInvisibleText(eventOrigin);
123
+ }
124
+ _handleTableElementFocusin(element) {
125
+ const description = getAccessibilityDescription(element);
126
+ updateInvisibleText(element, description);
127
+ }
128
+ _handleTableHeaderRowFocusin(headerRow) {
129
+ const descriptions = [
130
+ i18nBundle.getText(TABLE_COLUMN_HEADER_ROW),
131
+ ];
132
+ if (headerRow._hasSelector) {
133
+ descriptions.push(headerRow._isMultiSelect ? headerRow._selectionCellAriaDescription : headerRow._i18nSelection);
134
+ }
135
+ headerRow._visibleCells.forEach(headerCell => {
136
+ const cellDescription = getAccessibilityDescription(headerCell, true);
137
+ descriptions.push(cellDescription);
138
+ });
139
+ if (headerRow._rowActionCount > 0) {
140
+ descriptions.push(headerRow._i18nRowActions);
141
+ }
142
+ updateInvisibleText(headerRow, descriptions);
143
+ }
144
+ _handleTableRowFocusin(row) {
145
+ if (!row._table) {
146
+ return;
147
+ }
148
+ const descriptions = [
149
+ i18nBundle.getText(TABLE_ROW),
150
+ i18nBundle.getText(TABLE_ROW_INDEX, row.ariaRowIndex, this._table._ariaRowCount),
151
+ ];
152
+ if (row._isSelected) {
153
+ descriptions.push(i18nBundle.getText(TABLE_ROW_SELECTED));
154
+ }
155
+ if (row._isNavigable) {
156
+ descriptions.push(i18nBundle.getText(TABLE_ROW_NAVIGABLE));
157
+ }
158
+ else if (row.interactive) {
159
+ descriptions.push(i18nBundle.getText(TABLE_ROW_ACTIVE));
160
+ }
161
+ const cells = [...row._visibleCells, ...row._popinCells];
162
+ cells.flatMap(cell => {
163
+ return cell._popin ? [cell._popinHeader, cell._popinContent] : [cell._headerCell, cell];
164
+ }).forEach(node => {
165
+ const nodeDescription = getAccessibilityDescription(node, true);
166
+ descriptions.push(nodeDescription);
167
+ });
168
+ if (row._availableActionsCount > 0) {
169
+ descriptions.push(row._actionCellAccText);
170
+ }
171
+ updateInvisibleText(row, descriptions);
172
+ }
173
+ _handleTableCellFocusin(cell) {
174
+ if (cell.hasAttribute("data-ui5-table-popin-cell")) {
175
+ const popinCells = cell.getDomRef().assignedNodes({ flatten: true });
176
+ const descriptions = popinCells.flatMap(popinCell => {
177
+ const headerDescription = getAccessibilityDescription(popinCell._popinHeader);
178
+ const contentDescription = getAccessibilityDescription(popinCell._popinContent);
179
+ return [headerDescription, contentDescription];
180
+ });
181
+ updateInvisibleText(cell, descriptions);
182
+ }
183
+ else {
184
+ this._handleTableElementFocusin(cell);
185
+ }
186
+ }
187
+ }
188
+ export default TableCustomAnnouncement;
189
+ //# sourceMappingURL=TableCustomAnnouncement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableCustomAnnouncement.js","sourceRoot":"","sources":["../src/TableCustomAnnouncement.ts"],"names":[],"mappings":"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","sourcesContent":["import TableExtension from \"./TableExtension.js\";\nimport I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getTabbableElements } from \"@ui5/webcomponents-base/dist/util/TabbableElements.js\";\nimport type { AccessibilityInfo } from \"@ui5/webcomponents-base\";\nimport type Table from \"./Table.js\";\nimport type TableRow from \"./TableRow.js\";\nimport type TableCell from \"./TableCell.js\";\nimport type TableHeaderRow from \"./TableHeaderRow.js\";\nimport {\n\tTABLE_ROW,\n\tTABLE_ROW_INDEX,\n\tTABLE_ROW_SELECTED,\n\tTABLE_ROW_ACTIVE,\n\tTABLE_ROW_NAVIGABLE,\n\tTABLE_COLUMN_HEADER_ROW,\n\tTABLE_CELL_SINGLE_CONTROL,\n\tTABLE_CELL_MULTIPLE_CONTROLS,\n\tTABLE_ACC_STATE_EMPTY,\n\tTABLE_ACC_STATE_REQUIRED,\n\tTABLE_ACC_STATE_DISABLED,\n\tTABLE_ACC_STATE_READONLY,\n} from \"./generated/i18n/i18n-defaults.js\";\n\nlet invisibleText: HTMLElement;\nconst i18nBundle = new I18nBundle(\"@ui5/webcomponents/main\");\n\nconst checkVisibility = (element: HTMLElement): boolean => {\n\treturn element.checkVisibility() || getComputedStyle(element).display === \"contents\";\n};\n\nconst updateInvisibleText = (element: HTMLElement, text: string | string[] = []) => {\n\tconst invisibleTextId = \"ui5-table-invisible-text\";\n\tif (!invisibleText || !invisibleText.isConnected) {\n\t\tinvisibleText = document.createElement(\"span\");\n\t\tinvisibleText.id = invisibleTextId;\n\t\tinvisibleText.ariaHidden = \"true\";\n\t\tinvisibleText.style.display = \"none\";\n\t\tdocument.body.appendChild(invisibleText);\n\t}\n\n\tlet ariaLabelledBy = (element.getAttribute(\"aria-labelledby\") || \"\").split(\" \").filter(Boolean);\n\tconst invisibleTextAssociated = ariaLabelledBy.includes(invisibleTextId);\n\n\ttext = Array.isArray(text) ? text.filter(Boolean).join(\" . \").trim() : text.trim();\n\tif (text && !invisibleTextAssociated) {\n\t\tariaLabelledBy.push(invisibleTextId);\n\t} else if (!text && invisibleTextAssociated) {\n\t\tariaLabelledBy = ariaLabelledBy.filter(id => id !== invisibleTextId);\n\t}\n\n\tinvisibleText.textContent = text;\n\tif (ariaLabelledBy.length > 0) {\n\t\telement.setAttribute(\"aria-labelledby\", ariaLabelledBy.join(\" \"));\n\t} else {\n\t\telement.removeAttribute(\"aria-labelledby\");\n\t}\n};\n\nconst getAccessibilityDescription = (element: Node, lessDetails: boolean = false, _isRootElement: boolean = true): string => {\n\tif (!element) {\n\t\treturn \"\";\n\t}\n\n\tif (element.nodeType === Node.TEXT_NODE) {\n\t\treturn (element as Text).data.trim();\n\t}\n\n\tif (!(element instanceof HTMLElement)) {\n\t\treturn \"\";\n\t}\n\n\tif (element.hasAttribute(\"data-ui5-table-acc-text\")) {\n\t\treturn element.getAttribute(\"data-ui5-table-acc-text\") || \"\";\n\t}\n\n\tif (element.ariaHidden === \"true\" || !checkVisibility(element)) {\n\t\treturn _isRootElement ? i18nBundle.getText(TABLE_ACC_STATE_EMPTY) : \"\";\n\t}\n\n\tlet childNodes = [] as Array<Node>;\n\tconst descriptions = [] as Array<string>;\n\tconst accessibilityInfo = (element as any).accessibilityInfo as AccessibilityInfo | undefined;\n\tif (accessibilityInfo) {\n\t\tconst {\n\t\t\ttype, description, required, disabled, readonly, children,\n\t\t} = accessibilityInfo;\n\n\t\tchildNodes = children || [];\n\t\ttype && descriptions.push(type);\n\t\tdescription && descriptions.push(description);\n\n\t\tif (!lessDetails) {\n\t\t\trequired && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_REQUIRED));\n\t\t\tdisabled && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_DISABLED));\n\t\t\treadonly && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_READONLY));\n\t\t}\n\t} else if (element.localName === \"slot\") {\n\t\tchildNodes = (element as HTMLSlotElement).assignedNodes({ flatten: true });\n\t} else {\n\t\tchildNodes = element.shadowRoot ? [...element.shadowRoot.childNodes] : [...element.childNodes];\n\t}\n\n\tchildNodes.forEach(child => {\n\t\tconst childDescription = getAccessibilityDescription(child, lessDetails, false);\n\t\tchildDescription && descriptions.push(childDescription);\n\t});\n\n\tif (_isRootElement) {\n\t\tconst hasDescription = descriptions.length > 0;\n\t\tif (!hasDescription || !lessDetails) {\n\t\t\tconst tabbables = getTabbableElements(element);\n\t\t\tconst bundleKey = [\n\t\t\t\thasDescription ? \"\" : TABLE_ACC_STATE_EMPTY,\n\t\t\t\tTABLE_CELL_SINGLE_CONTROL,\n\t\t\t\tTABLE_CELL_MULTIPLE_CONTROLS,\n\t\t\t][Math.min(tabbables.length, 2)];\n\t\t\tif (bundleKey) {\n\t\t\t\thasDescription && descriptions.push(\".\");\n\t\t\t\tdescriptions.push(i18nBundle.getText(bundleKey));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn descriptions.join(\" \").trim();\n};\n\n/**\n * Handles the custom announcement for the ui5-table.\n *\n * @class\n * @private\n */\nclass TableCustomAnnouncement extends TableExtension {\n\t_table: Table;\n\t_tableAttributes = [\"ui5-table-header-row\", \"ui5-table-header-cell\", \"ui5-table-row\", \"ui5-table-cell\"];\n\n\tconstructor(table: Table) {\n\t\tsuper();\n\t\tthis._table = table;\n\t}\n\n\t_onfocusin(e: FocusEvent, eventOrigin: HTMLElement) {\n\t\tconst tableAttribute = this._tableAttributes.find(attr => eventOrigin.hasAttribute(attr));\n\t\tif (!tableAttribute) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tableElementName = tableAttribute.replace(\"ui5-table\", \"Table\").replace(/-([a-z])/g, g => g[1].toUpperCase());\n\t\tconst eventHandlerName = `_handle${tableElementName}Focusin` as keyof TableCustomAnnouncement;\n\t\tconst eventHandler = this[eventHandlerName] as (target: HTMLElement, e?: FocusEvent) => void;\n\t\tif (typeof eventHandler === \"function\") {\n\t\t\teventHandler.call(this, eventOrigin, e);\n\t\t} else {\n\t\t\tthis._handleTableElementFocusin(eventOrigin);\n\t\t}\n\t}\n\n\t_onfocusout(e: FocusEvent, eventOrigin: HTMLElement) {\n\t\tconst isTableElement = this._tableAttributes.some(attr => eventOrigin.hasAttribute(attr));\n\t\tisTableElement && updateInvisibleText(eventOrigin);\n\t}\n\n\t_handleTableElementFocusin(element: HTMLElement) {\n\t\tconst description = getAccessibilityDescription(element);\n\t\tupdateInvisibleText(element, description);\n\t}\n\n\t_handleTableHeaderRowFocusin(headerRow: TableHeaderRow) {\n\t\tconst descriptions = [\n\t\t\ti18nBundle.getText(TABLE_COLUMN_HEADER_ROW),\n\t\t];\n\n\t\tif (headerRow._hasSelector) {\n\t\t\tdescriptions.push(headerRow._isMultiSelect ? headerRow._selectionCellAriaDescription! : headerRow._i18nSelection);\n\t\t}\n\n\t\theaderRow._visibleCells.forEach(headerCell => {\n\t\t\tconst cellDescription = getAccessibilityDescription(headerCell, true);\n\t\t\tdescriptions.push(cellDescription);\n\t\t});\n\n\t\tif (headerRow._rowActionCount > 0) {\n\t\t\tdescriptions.push(headerRow._i18nRowActions);\n\t\t}\n\n\t\tupdateInvisibleText(headerRow, descriptions);\n\t}\n\n\t_handleTableRowFocusin(row: TableRow) {\n\t\tif (!row._table) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst descriptions = [\n\t\t\ti18nBundle.getText(TABLE_ROW),\n\t\t\ti18nBundle.getText(TABLE_ROW_INDEX, row.ariaRowIndex!, this._table._ariaRowCount),\n\t\t];\n\n\t\tif (row._isSelected) {\n\t\t\tdescriptions.push(i18nBundle.getText(TABLE_ROW_SELECTED));\n\t\t}\n\n\t\tif (row._isNavigable) {\n\t\t\tdescriptions.push(i18nBundle.getText(TABLE_ROW_NAVIGABLE));\n\t\t} else if (row.interactive) {\n\t\t\tdescriptions.push(i18nBundle.getText(TABLE_ROW_ACTIVE));\n\t\t}\n\n\t\tconst cells = [...row._visibleCells, ...row._popinCells] as TableCell[];\n\t\tcells.flatMap(cell => {\n\t\t\treturn cell._popin ? [cell._popinHeader!, cell._popinContent!] : [cell._headerCell, cell];\n\t\t}).forEach(node => {\n\t\t\tconst nodeDescription = getAccessibilityDescription(node, true);\n\t\t\tdescriptions.push(nodeDescription);\n\t\t});\n\n\t\tif (row._availableActionsCount > 0) {\n\t\t\tdescriptions.push(row._actionCellAccText!);\n\t\t}\n\n\t\tupdateInvisibleText(row, descriptions);\n\t}\n\n\t_handleTableCellFocusin(cell: TableCell) {\n\t\tif (cell.hasAttribute(\"data-ui5-table-popin-cell\")) {\n\t\t\tconst popinCells = (cell.getDomRef() as HTMLSlotElement).assignedNodes({ flatten: true }) as TableCell[];\n\t\t\tconst descriptions = popinCells.flatMap(popinCell => {\n\t\t\t\tconst headerDescription = getAccessibilityDescription(popinCell._popinHeader!);\n\t\t\t\tconst contentDescription = getAccessibilityDescription(popinCell._popinContent!);\n\t\t\t\treturn [headerDescription, contentDescription];\n\t\t\t});\n\t\t\tupdateInvisibleText(cell, descriptions);\n\t\t} else {\n\t\t\tthis._handleTableElementFocusin(cell);\n\t\t}\n\t}\n}\n\nexport default TableCustomAnnouncement;\n"]}
@@ -98,8 +98,13 @@ declare class TableHeaderCell extends TableCellBase {
98
98
  */
99
99
  action: Array<TableHeaderCellActionBase>;
100
100
  _popin: boolean;
101
+ _defaultSlot: HTMLSlotElement;
102
+ _actionSlot: HTMLSlotElement;
101
103
  protected ariaRole: string;
102
104
  _popinWidth: number;
103
105
  onBeforeRendering(): void;
106
+ get accessibilityInfo(): {
107
+ children: HTMLSlotElement[];
108
+ };
104
109
  }
105
110
  export default TableHeaderCell;
@@ -10,6 +10,7 @@ import TableCellBase from "./TableCellBase.js";
10
10
  import TableHeaderCellTemplate from "./TableHeaderCellTemplate.js";
11
11
  import TableHeaderCellStyles from "./generated/themes/TableHeaderCell.css.js";
12
12
  import SortOrder from "@ui5/webcomponents-base/dist/types/SortOrder.js";
13
+ import query from "@ui5/webcomponents-base/dist/decorators/query.js";
13
14
  /**
14
15
  * @class
15
16
  *
@@ -74,6 +75,11 @@ let TableHeaderCell = class TableHeaderCell extends TableCellBase {
74
75
  }
75
76
  toggleAttribute(this, "aria-sort", this.sortIndicator !== SortOrder.None, this.sortIndicator.toLowerCase());
76
77
  }
78
+ get accessibilityInfo() {
79
+ return {
80
+ children: [this._defaultSlot, this._actionSlot],
81
+ };
82
+ }
77
83
  };
78
84
  __decorate([
79
85
  property()
@@ -99,6 +105,12 @@ __decorate([
99
105
  __decorate([
100
106
  property({ type: Boolean, noAttribute: true })
101
107
  ], TableHeaderCell.prototype, "_popin", void 0);
108
+ __decorate([
109
+ query("slot:not([name])")
110
+ ], TableHeaderCell.prototype, "_defaultSlot", void 0);
111
+ __decorate([
112
+ query("slot[name=action]")
113
+ ], TableHeaderCell.prototype, "_actionSlot", void 0);
102
114
  TableHeaderCell = __decorate([
103
115
  customElement({
104
116
  tag: "ui5-table-header-cell",
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeaderCell.js","sourceRoot":"","sources":["../src/TableHeaderCell.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AACnE,OAAO,qBAAqB,MAAM,2CAA2C,CAAC;AAC9E,OAAO,SAAS,MAAM,iDAAiD,CAAC;AAGxE;;;;;;;;;;;;;;;;;;GAkBG;AAMH,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,aAAa;IAA3C;;QAkCC;;;;;;;;;WASG;QAEH,eAAU,GAAG,CAAC,CAAC;QAYf;;;;;;WAMG;QAEH,kBAAa,GAAmB,MAAM,CAAC;QAEvC;;;;;;;;;WASG;QAEH,gBAAW,GAAY,KAAK,CAAC;QAc7B,WAAM,GAAG,KAAK,CAAC;QAEL,aAAQ,GAAW,cAAc,CAAC;QAC5C,gBAAW,GAAW,CAAC,CAAC;IAUzB,CAAC;IARA,iBAAiB;QAChB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,+FAA+F;YAC/F,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,0BAA0B,IAAI,CAAC,eAAe,GAAG,CAAC;QAC/E,CAAC;QACD,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7G,CAAC;CACD,CAAA;AA3FA;IADC,QAAQ,EAAE;8CACI;AAkBf;IADC,QAAQ,EAAE;iDACO;AAalB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDACZ;AAUf;IADC,QAAQ,EAAE;kDACQ;AAUnB;IADC,QAAQ,EAAE;sDAC4B;AAavC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oDACC;AAW7B;IADC,IAAI,EAAE;+CACmC;AAG1C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;+CAChC;AA5FV,eAAe;IALpB,aAAa,CAAC;QACd,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,qBAAqB,CAAC;QACrD,QAAQ,EAAE,uBAAuB;KACjC,CAAC;GACI,eAAe,CAyGpB;AAED,eAAe,CAAC,MAAM,EAAE,CAAC;AAEzB,eAAe,eAAe,CAAC","sourcesContent":["import { customElement, property, slot } from \"@ui5/webcomponents-base/dist/decorators.js\";\nimport { toggleAttribute } from \"./TableUtils.js\";\nimport TableCellBase from \"./TableCellBase.js\";\nimport TableHeaderCellTemplate from \"./TableHeaderCellTemplate.js\";\nimport TableHeaderCellStyles from \"./generated/themes/TableHeaderCell.css.js\";\nimport SortOrder from \"@ui5/webcomponents-base/dist/types/SortOrder.js\";\nimport type TableHeaderCellActionBase from \"./TableHeaderCellActionBase.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-table-header-cell` component represents a column in the `ui5-table`.\n *\n * As it is tightly coupled to the `ui5-table`, it should only be used in the `ui5-table-header-row`\n * to ensure correct layout and design.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/TableHeaderCell.js\";`\n *\n * @constructor\n * @extends TableCellBase\n * @since 2.0.0\n * @public\n */\n@customElement({\n\ttag: \"ui5-table-header-cell\",\n\tstyles: [TableCellBase.styles, TableHeaderCellStyles],\n\ttemplate: TableHeaderCellTemplate,\n})\nclass TableHeaderCell extends TableCellBase {\n\t/**\n\t * Defines the width of the column.\n\t *\n\t * By default, the column will grow and shrink according to the available space.\n\t * This will distribute the space proportionally among all columns with no specific width set.\n\t *\n\t * See [\\<length\\>](https://developer.mozilla.org/en-US/docs/Web/CSS/length) and\n\t * [\\<percentage\\>](https://developer.mozilla.org/en-US/docs/Web/CSS/percentage) for possible width values.\n\t *\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\twidth?: string;\n\n\t/**\n \t * Defines the minimum width of the column.\n\t *\n\t * If the table is in `Popin` mode and the minimum width does not fit anymore,\n\t * the column will move into the popin.\n\t *\n\t * By default, the table prevents the column from becoming too small.\n\t * Changing this value to a small value might lead to accessibility issues.\n\t *\n\t * **Note:** This property only takes effect for columns with a [\\<percentage\\>](https://developer.mozilla.org/en-US/docs/Web/CSS/percentage) value\n\t * or the default width.\n\t *\n\t * @public\n\t * @default undefined\n\t */\n\t@property()\n\tminWidth?: string;\n\n\t/**\n\t * Defines the importance of the column.\n\t *\n\t * This property affects the popin behaviour.\n\t * Columns with higher importance will move into the popin area later then less important\n\t * columns.\n\t *\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\timportance = 0;\n\n\t/**\n\t * The text for the column when it pops in.\n\t *\n\t * @default undefined\n\t * @since 2.7.0\n\t * @public\n\t */\n\t@property()\n\tpopinText?: string;\n\n\t/**\n\t * Defines the sort indicator of the column.\n\t *\n\t * @default \"None\"\n\t * @since 2.8.0\n\t * @public\n\t */\n\t@property()\n\tsortIndicator: `${SortOrder}` = \"None\";\n\n\t/**\n\t * Defines if the column is hidden in the popin.\n\t *\n\t * **Note:** Please be aware that hiding the column in the popin might lead to accessibility issues as\n\t * users might not be able to access the content of the column on small screens.\n\t *\n\t * @default false\n\t * @since 2.8.0\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tpopinHidden: boolean = false;\n\n\t/**\n\t * Defines the action of the column.\n\t *\n\t * **Note:** While multiple actions are technically possible, this is not supported.\n\t *\n\t * @public\n\t * @since 2.8.0\n\t */\n\t@slot()\n\taction!: Array<TableHeaderCellActionBase>;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_popin = false;\n\n\tprotected ariaRole: string = \"columnheader\";\n\t_popinWidth: number = 0;\n\n\tonBeforeRendering() {\n\t\tsuper.onBeforeRendering();\n\t\tif (this._individualSlot) {\n\t\t\t// overwrite setting of TableCellBase so that the TableHeaderCell always uses the slot variable\n\t\t\tthis.style.justifyContent = `var(--horizontal-align-${this._individualSlot})`;\n\t\t}\n\t\ttoggleAttribute(this, \"aria-sort\", this.sortIndicator !== SortOrder.None, this.sortIndicator.toLowerCase());\n\t}\n}\n\nTableHeaderCell.define();\n\nexport default TableHeaderCell;\n"]}
1
+ {"version":3,"file":"TableHeaderCell.js","sourceRoot":"","sources":["../src/TableHeaderCell.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AACnE,OAAO,qBAAqB,MAAM,2CAA2C,CAAC;AAC9E,OAAO,SAAS,MAAM,iDAAiD,CAAC;AACxE,OAAO,KAAK,MAAM,kDAAkD,CAAC;AAGrE;;;;;;;;;;;;;;;;;;GAkBG;AAMH,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,aAAa;IAA3C;;QAkCC;;;;;;;;;WASG;QAEH,eAAU,GAAG,CAAC,CAAC;QAYf;;;;;;WAMG;QAEH,kBAAa,GAAmB,MAAM,CAAC;QAEvC;;;;;;;;;WASG;QAEH,gBAAW,GAAY,KAAK,CAAC;QAc7B,WAAM,GAAG,KAAK,CAAC;QAQL,aAAQ,GAAW,cAAc,CAAC;QAC5C,gBAAW,GAAW,CAAC,CAAC;IAgBzB,CAAC;IAdA,iBAAiB;QAChB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,+FAA+F;YAC/F,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,0BAA0B,IAAI,CAAC,eAAe,GAAG,CAAC;QAC/E,CAAC;QACD,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7G,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO;YACN,QAAQ,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;SAC/C,CAAC;IACH,CAAC;CACD,CAAA;AAvGA;IADC,QAAQ,EAAE;8CACI;AAkBf;IADC,QAAQ,EAAE;iDACO;AAalB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDACZ;AAUf;IADC,QAAQ,EAAE;kDACQ;AAUnB;IADC,QAAQ,EAAE;sDAC4B;AAavC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oDACC;AAW7B;IADC,IAAI,EAAE;+CACmC;AAG1C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;+CAChC;AAGf;IADC,KAAK,CAAC,kBAAkB,CAAC;qDACK;AAG/B;IADC,KAAK,CAAC,mBAAmB,CAAC;oDACG;AAlGzB,eAAe;IALpB,aAAa,CAAC;QACd,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,qBAAqB,CAAC;QACrD,QAAQ,EAAE,uBAAuB;KACjC,CAAC;GACI,eAAe,CAqHpB;AAED,eAAe,CAAC,MAAM,EAAE,CAAC;AAEzB,eAAe,eAAe,CAAC","sourcesContent":["import { customElement, property, slot } from \"@ui5/webcomponents-base/dist/decorators.js\";\nimport { toggleAttribute } from \"./TableUtils.js\";\nimport TableCellBase from \"./TableCellBase.js\";\nimport TableHeaderCellTemplate from \"./TableHeaderCellTemplate.js\";\nimport TableHeaderCellStyles from \"./generated/themes/TableHeaderCell.css.js\";\nimport SortOrder from \"@ui5/webcomponents-base/dist/types/SortOrder.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport type TableHeaderCellActionBase from \"./TableHeaderCellActionBase.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-table-header-cell` component represents a column in the `ui5-table`.\n *\n * As it is tightly coupled to the `ui5-table`, it should only be used in the `ui5-table-header-row`\n * to ensure correct layout and design.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/TableHeaderCell.js\";`\n *\n * @constructor\n * @extends TableCellBase\n * @since 2.0.0\n * @public\n */\n@customElement({\n\ttag: \"ui5-table-header-cell\",\n\tstyles: [TableCellBase.styles, TableHeaderCellStyles],\n\ttemplate: TableHeaderCellTemplate,\n})\nclass TableHeaderCell extends TableCellBase {\n\t/**\n\t * Defines the width of the column.\n\t *\n\t * By default, the column will grow and shrink according to the available space.\n\t * This will distribute the space proportionally among all columns with no specific width set.\n\t *\n\t * See [\\<length\\>](https://developer.mozilla.org/en-US/docs/Web/CSS/length) and\n\t * [\\<percentage\\>](https://developer.mozilla.org/en-US/docs/Web/CSS/percentage) for possible width values.\n\t *\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\twidth?: string;\n\n\t/**\n \t * Defines the minimum width of the column.\n\t *\n\t * If the table is in `Popin` mode and the minimum width does not fit anymore,\n\t * the column will move into the popin.\n\t *\n\t * By default, the table prevents the column from becoming too small.\n\t * Changing this value to a small value might lead to accessibility issues.\n\t *\n\t * **Note:** This property only takes effect for columns with a [\\<percentage\\>](https://developer.mozilla.org/en-US/docs/Web/CSS/percentage) value\n\t * or the default width.\n\t *\n\t * @public\n\t * @default undefined\n\t */\n\t@property()\n\tminWidth?: string;\n\n\t/**\n\t * Defines the importance of the column.\n\t *\n\t * This property affects the popin behaviour.\n\t * Columns with higher importance will move into the popin area later then less important\n\t * columns.\n\t *\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\timportance = 0;\n\n\t/**\n\t * The text for the column when it pops in.\n\t *\n\t * @default undefined\n\t * @since 2.7.0\n\t * @public\n\t */\n\t@property()\n\tpopinText?: string;\n\n\t/**\n\t * Defines the sort indicator of the column.\n\t *\n\t * @default \"None\"\n\t * @since 2.8.0\n\t * @public\n\t */\n\t@property()\n\tsortIndicator: `${SortOrder}` = \"None\";\n\n\t/**\n\t * Defines if the column is hidden in the popin.\n\t *\n\t * **Note:** Please be aware that hiding the column in the popin might lead to accessibility issues as\n\t * users might not be able to access the content of the column on small screens.\n\t *\n\t * @default false\n\t * @since 2.8.0\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tpopinHidden: boolean = false;\n\n\t/**\n\t * Defines the action of the column.\n\t *\n\t * **Note:** While multiple actions are technically possible, this is not supported.\n\t *\n\t * @public\n\t * @since 2.8.0\n\t */\n\t@slot()\n\taction!: Array<TableHeaderCellActionBase>;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_popin = false;\n\n\t@query(\"slot:not([name])\")\n\t_defaultSlot!: HTMLSlotElement;\n\n\t@query(\"slot[name=action]\")\n\t_actionSlot!: HTMLSlotElement;\n\n\tprotected ariaRole: string = \"columnheader\";\n\t_popinWidth: number = 0;\n\n\tonBeforeRendering() {\n\t\tsuper.onBeforeRendering();\n\t\tif (this._individualSlot) {\n\t\t\t// overwrite setting of TableCellBase so that the TableHeaderCell always uses the slot variable\n\t\t\tthis.style.justifyContent = `var(--horizontal-align-${this._individualSlot})`;\n\t\t}\n\t\ttoggleAttribute(this, \"aria-sort\", this.sortIndicator !== SortOrder.None, this.sortIndicator.toLowerCase());\n\t}\n\n\tget accessibilityInfo() {\n\t\treturn {\n\t\t\tchildren: [this._defaultSlot, this._actionSlot],\n\t\t};\n\t}\n}\n\nTableHeaderCell.define();\n\nexport default TableHeaderCell;\n"]}
@@ -28,6 +28,9 @@ declare abstract class TableHeaderCellActionBase extends UI5Element {
28
28
  };
29
29
  onBeforeRendering(): void;
30
30
  _onClick(e: UI5CustomEvent<Button, "click">): void;
31
+ get accessibilityInfo(): {
32
+ description: string;
33
+ };
31
34
  get _tooltip(): string;
32
35
  get _icon(): string;
33
36
  }
@@ -9,6 +9,7 @@ import { customElement, eventStrict } from "@ui5/webcomponents-base/dist/decorat
9
9
  import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
10
10
  import TableHeaderCellActionBaseTemplate from "./TableHeaderCellActionBaseTemplate.js";
11
11
  import TableHeaderCellActionBaseStyles from "./generated/themes/TableHeaderCellActionBase.css.js";
12
+ import getActiveElement from "@ui5/webcomponents-base/dist/util/getActiveElement.js";
12
13
  /**
13
14
  * Fired when a header cell action is clicked.
14
15
  *
@@ -26,6 +27,11 @@ let TableHeaderCellActionBase = class TableHeaderCellActionBase extends UI5Eleme
26
27
  action.fireDecoratorEvent("click", { targetRef: e.target });
27
28
  e.stopPropagation();
28
29
  }
30
+ get accessibilityInfo() {
31
+ return {
32
+ description: getActiveElement()?.hasAttribute("ui5-table-cell-base") ? this._tooltip : "",
33
+ };
34
+ }
29
35
  get _tooltip() {
30
36
  return this.getRenderInfo().tooltip;
31
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeaderCellActionBase.js","sourceRoot":"","sources":["../src/TableHeaderCellActionBase.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAE/E,OAAO,iCAAiC,MAAM,wCAAwC,CAAC;AACvF,OAAO,+BAA+B,MAAM,qDAAqD,CAAC;AAelG;;;;;;GAMG;AAmBH,IAAe,yBAAyB,GAAxC,MAAe,yBAA0B,SAAQ,UAAU;IAU1D,iBAAiB;QAChB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,QAAQ,CAAC,CAAkC;QAC1C,wHAAwH;QACxH,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAG,IAAI,CAAC,WAAW,EAAiB,CAAC,IAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAS,CAAC;QACvK,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAqB,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,eAAe,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC;IACrC,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;IAClC,CAAC;CACD,CAAA;AA5Bc,yBAAyB;IAlBvC,WAAW,CAAC,OAAO,EAAE;QACrB,OAAO,EAAE,KAAK;KACd,CAAC;IAEF;;;;;;;;OAQG;;IACF,aAAa,CAAC;QACd,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,+BAA+B;QACvC,QAAQ,EAAE,iCAAiC;KAC3C,CAAC;GACa,yBAAyB,CA4BvC;AAED,eAAe,yBAAyB,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport { customElement, eventStrict } from \"@ui5/webcomponents-base/dist/decorators.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type { UI5CustomEvent } from \"@ui5/webcomponents-base\";\nimport TableHeaderCellActionBaseTemplate from \"./TableHeaderCellActionBaseTemplate.js\";\nimport TableHeaderCellActionBaseStyles from \"./generated/themes/TableHeaderCellActionBase.css.js\";\nimport type TableCell from \"./TableCell.js\";\nimport type Button from \"./Button.js\";\n\n/**\n * Fired when a header cell action is clicked.\n *\n * @param {HTMLElement} targetRef The reference to the element that triggered the event\n * @public\n * @since 2.8.0\n */\ntype TableHeaderCellActionClickEventDetail = {\n\ttargetRef: HTMLElement;\n};\n\n/**\n * Fired when a header cell action is clicked.\n *\n * @param {HTMLElement} targetRef The reference to the element that triggered the event\n * @public\n * @since 2.8.0\n */\n@eventStrict(\"click\", {\n\tbubbles: false,\n})\n\n/**\n * @class\n * The `TableHeaderCellActionBase` class serves as a foundation for table header cell actions.\n * @constructor\n * @abstract\n * @extends UI5Element\n * @since 2.8.0\n * @public\n */\n@customElement({\n\trenderer: jsxRenderer,\n\tstyles: TableHeaderCellActionBaseStyles,\n\ttemplate: TableHeaderCellActionBaseTemplate,\n})\nabstract class TableHeaderCellActionBase extends UI5Element {\n\teventDetails!: {\n\t\t\"click\": TableHeaderCellActionClickEventDetail,\n\t}\n\n\tabstract getRenderInfo(): {\n\t\ticon: string;\n\t\ttooltip: string;\n\t};\n\n\tonBeforeRendering() {\n\t\tthis.toggleAttribute(\"_popin\", !this.parentElement);\n\t}\n\n\t_onClick(e: UI5CustomEvent<Button, \"click\">) {\n\t\t// Retrieve the real action (if parent is header cell this instance is fine, otherwise retrieve it from the header cell)\n\t\tconst action = this.parentElement?.hasAttribute(\"ui5-table-header-cell\") ? this : ((this.getRootNode() as ShadowRoot).host as TableCell)._headerCell.action[0] as this;\n\t\taction.fireDecoratorEvent(\"click\", { targetRef: e.target as HTMLElement });\n\t\te.stopPropagation();\n\t}\n\n\tget _tooltip() {\n\t\treturn this.getRenderInfo().tooltip;\n\t}\n\n\tget _icon() {\n\t\treturn this.getRenderInfo().icon;\n\t}\n}\n\nexport default TableHeaderCellActionBase;\n\nexport type {\n\tTableHeaderCellActionClickEventDetail,\n};\n"]}
1
+ {"version":3,"file":"TableHeaderCellActionBase.js","sourceRoot":"","sources":["../src/TableHeaderCellActionBase.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,iCAAiC,MAAM,wCAAwC,CAAC;AACvF,OAAO,+BAA+B,MAAM,qDAAqD,CAAC;AAClG,OAAO,gBAAgB,MAAM,uDAAuD,CAAC;AAgBrF;;;;;;GAMG;AAmBH,IAAe,yBAAyB,GAAxC,MAAe,yBAA0B,SAAQ,UAAU;IAU1D,iBAAiB;QAChB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,QAAQ,CAAC,CAAkC;QAC1C,wHAAwH;QACxH,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAG,IAAI,CAAC,WAAW,EAAiB,CAAC,IAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAS,CAAC;QACvK,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAqB,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,eAAe,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO;YACN,WAAW,EAAE,gBAAgB,EAAE,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;SACzF,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC;IACrC,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;IAClC,CAAC;CACD,CAAA;AAlCc,yBAAyB;IAlBvC,WAAW,CAAC,OAAO,EAAE;QACrB,OAAO,EAAE,KAAK;KACd,CAAC;IAEF;;;;;;;;OAQG;;IACF,aAAa,CAAC;QACd,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,+BAA+B;QACvC,QAAQ,EAAE,iCAAiC;KAC3C,CAAC;GACa,yBAAyB,CAkCvC;AAED,eAAe,yBAAyB,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport { customElement, eventStrict } from \"@ui5/webcomponents-base/dist/decorators.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport TableHeaderCellActionBaseTemplate from \"./TableHeaderCellActionBaseTemplate.js\";\nimport TableHeaderCellActionBaseStyles from \"./generated/themes/TableHeaderCellActionBase.css.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\nimport type { UI5CustomEvent } from \"@ui5/webcomponents-base\";\nimport type TableCell from \"./TableCell.js\";\nimport type Button from \"./Button.js\";\n\n/**\n * Fired when a header cell action is clicked.\n *\n * @param {HTMLElement} targetRef The reference to the element that triggered the event\n * @public\n * @since 2.8.0\n */\ntype TableHeaderCellActionClickEventDetail = {\n\ttargetRef: HTMLElement;\n};\n\n/**\n * Fired when a header cell action is clicked.\n *\n * @param {HTMLElement} targetRef The reference to the element that triggered the event\n * @public\n * @since 2.8.0\n */\n@eventStrict(\"click\", {\n\tbubbles: false,\n})\n\n/**\n * @class\n * The `TableHeaderCellActionBase` class serves as a foundation for table header cell actions.\n * @constructor\n * @abstract\n * @extends UI5Element\n * @since 2.8.0\n * @public\n */\n@customElement({\n\trenderer: jsxRenderer,\n\tstyles: TableHeaderCellActionBaseStyles,\n\ttemplate: TableHeaderCellActionBaseTemplate,\n})\nabstract class TableHeaderCellActionBase extends UI5Element {\n\teventDetails!: {\n\t\t\"click\": TableHeaderCellActionClickEventDetail,\n\t}\n\n\tabstract getRenderInfo(): {\n\t\ticon: string;\n\t\ttooltip: string;\n\t};\n\n\tonBeforeRendering() {\n\t\tthis.toggleAttribute(\"_popin\", !this.parentElement);\n\t}\n\n\t_onClick(e: UI5CustomEvent<Button, \"click\">) {\n\t\t// Retrieve the real action (if parent is header cell this instance is fine, otherwise retrieve it from the header cell)\n\t\tconst action = this.parentElement?.hasAttribute(\"ui5-table-header-cell\") ? this : ((this.getRootNode() as ShadowRoot).host as TableCell)._headerCell.action[0] as this;\n\t\taction.fireDecoratorEvent(\"click\", { targetRef: e.target as HTMLElement });\n\t\te.stopPropagation();\n\t}\n\n\tget accessibilityInfo() {\n\t\treturn {\n\t\t\tdescription: getActiveElement()?.hasAttribute(\"ui5-table-cell-base\") ? this._tooltip : \"\",\n\t\t};\n\t}\n\n\tget _tooltip() {\n\t\treturn this.getRenderInfo().tooltip;\n\t}\n\n\tget _icon() {\n\t\treturn this.getRenderInfo().icon;\n\t}\n}\n\nexport default TableHeaderCellActionBase;\n\nexport type {\n\tTableHeaderCellActionClickEventDetail,\n};\n"]}
@@ -7,17 +7,21 @@ import ClearAll from "@ui5/webcomponents-icons/dist/clear-all.js";
7
7
  import IconDesign from "./types/IconDesign.js";
8
8
  export default function TableHeaderRowTemplate(ariaColIndex = 1) {
9
9
  return (_jsxs(_Fragment, { children: [this._hasSelector &&
10
- _jsx(TableHeaderCell, { id: "selection-cell", "aria-selected": this._isSelected, "aria-label": this._i18nSelection, "aria-description": this._selectionCellAriaDescription, "aria-colindex": ariaColIndex++, "data-ui5-table-cell-fixed": true, "data-ui5-table-selection-component": true, children: !this._isMultiSelect ?
10
+ _jsx(TableHeaderCell, { id: "selection-cell", "aria-selected": this._isSelected, "aria-label": this._i18nSelection, "aria-description": this._selectionCellAriaDescription, "aria-colindex": ariaColIndex++, "data-ui5-table-selection-cell": true, "data-ui5-table-cell-fixed": true, "data-ui5-table-acc-text": "", children: !this._isMultiSelect ?
11
11
  _jsx(_Fragment, {})
12
12
  :
13
13
  this._shouldRenderClearAll ?
14
14
  _jsx(Icon, { name: ClearAll, mode: IconMode.Decorative, showTooltip: true, accessibleName: this._i18nDeselectAllRows, design: this._hasSelectedRows ? IconDesign.Default : IconDesign.NonInteractive, onClick: this._onSelectionChange })
15
15
  :
16
- _jsx(CheckBox, { id: "selection-component", tabindex: -1, checked: this._isSelected, onChange: this._onSelectionChange, accessibleName: this._i18nRowSelector, title: this._isSelected ? this._i18nDeselectAllRows : this._i18nSelectAllRows }) }), this._visibleCells.map(cell => {
16
+ _jsx(CheckBox, { id: "selection-component", tabindex: -1, checked: this._isSelected, onChange: this._onSelectionChange, accessibleName: this._i18nRowSelector, title: this._isSelected ? this._i18nDeselectAllRows : this._i18nSelectAllRows }) }), this.cells.flatMap(cell => {
17
+ if (cell._popin) {
18
+ cell.ariaColIndex = null;
19
+ return [];
20
+ }
17
21
  cell.ariaColIndex = `${ariaColIndex++}`;
18
- return _jsx("slot", { name: cell._individualSlot }, cell._individualSlot);
22
+ return [_jsx("slot", { name: cell._individualSlot })];
19
23
  }), this._rowActionCount > 0 &&
20
- _jsx(TableHeaderCell, { id: "actions-cell", "aria-colindex": ariaColIndex++, "aria-label": this._i18nRowActions }), this._popinCells.length > 0 &&
21
- _jsx(TableHeaderCell, { id: "popin-cell", "aria-label": this._i18nRowPopin, "data-excluded-from-navigation": true })] }));
24
+ _jsx(TableHeaderCell, { id: "actions-cell", "aria-colindex": ariaColIndex++, children: _jsx("div", { id: "actions-cell-content", children: this._i18nRowActions }) }), this._popinCells.length > 0 &&
25
+ _jsx(TableHeaderCell, { id: "popin-cell", "aria-colindex": ariaColIndex++, "aria-label": this._i18nRowPopin, "data-excluded-from-navigation": true })] }));
22
26
  }
23
27
  //# sourceMappingURL=TableHeaderRowTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeaderRowTemplate.js","sourceRoot":"","sources":["../src/TableHeaderRowTemplate.tsx"],"names":[],"mappings":";AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,4CAA4C,CAAC;AAClE,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAG/C,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAuB,eAAuB,CAAC;IAC5F,OAAO,CACN,8BACG,IAAI,CAAC,YAAY;gBAClB,KAAC,eAAe,IAAC,EAAE,EAAC,gBAAgB,mBACpB,IAAI,CAAC,WAAW,gBACnB,IAAI,CAAC,cAAc,sBACb,IAAI,CAAC,6BAA6B,mBACrC,YAAY,EAAE,2FAI3B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBACvB,mBAAK;wBACL,CAAC;4BACD,IAAI,CAAC,qBAAqB,CAAC,CAAC;gCAC3B,KAAC,IAAI,IACJ,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,QAAQ,CAAC,UAAU,EACzB,WAAW,EAAE,IAAI,EACjB,cAAc,EAAE,IAAI,CAAC,oBAAoB,EACzC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,EAC9E,OAAO,EAAE,IAAI,CAAC,kBAAkB,GACzB;gCACR,CAAC;oCACD,KAAC,QAAQ,IAAC,EAAE,EAAC,qBAAqB,EACjC,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EACjC,cAAc,EAAE,IAAI,CAAC,gBAAgB,EACrC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAClE,GAEG,EAGjB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC/B,IAAI,CAAC,YAAY,GAAG,GAAG,YAAY,EAAE,EAAE,CAAC;gBACxC,OAAO,eAAM,IAAI,EAAE,IAAI,CAAC,eAAe,IAAO,IAAI,CAAC,eAAe,CAAS,CAAC;YAC7E,CAAC,CAAC,EAEA,IAAI,CAAC,eAAe,GAAG,CAAC;gBACzB,KAAC,eAAe,IAAC,EAAE,EAAC,cAAc,mBAClB,YAAY,EAAE,gBACjB,IAAI,CAAC,eAAe,GACd,EAGlB,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;gBAC5B,KAAC,eAAe,IAAC,EAAE,EAAC,YAAY,gBACnB,IAAI,CAAC,aAAa,0CAEZ,IAElB,CACH,CAAC;AACH,CAAC","sourcesContent":["import CheckBox from \"./CheckBox.js\";\nimport TableHeaderCell from \"./TableHeaderCell.js\";\nimport Icon from \"./Icon.js\";\nimport IconMode from \"./types/IconMode.js\";\nimport ClearAll from \"@ui5/webcomponents-icons/dist/clear-all.js\";\nimport IconDesign from \"./types/IconDesign.js\";\nimport type TableHeaderRow from \"./TableHeaderRow.js\";\n\nexport default function TableHeaderRowTemplate(this: TableHeaderRow, ariaColIndex: number = 1) {\n\treturn (\n\t\t<>\n\t\t\t{ this._hasSelector &&\n\t\t\t\t<TableHeaderCell id=\"selection-cell\"\n\t\t\t\t\taria-selected={this._isSelected}\n\t\t\t\t\taria-label={this._i18nSelection}\n\t\t\t\t\taria-description={this._selectionCellAriaDescription}\n\t\t\t\t\taria-colindex={ariaColIndex++}\n\t\t\t\t\tdata-ui5-table-cell-fixed\n\t\t\t\t\tdata-ui5-table-selection-component\n\t\t\t\t>\n\t\t\t\t\t{ !this._isMultiSelect ?\n\t\t\t\t\t\t<></>\n\t\t\t\t\t\t:\n\t\t\t\t\t\tthis._shouldRenderClearAll ?\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname={ClearAll}\n\t\t\t\t\t\t\t\tmode={IconMode.Decorative}\n\t\t\t\t\t\t\t\tshowTooltip={true}\n\t\t\t\t\t\t\t\taccessibleName={this._i18nDeselectAllRows}\n\t\t\t\t\t\t\t\tdesign={this._hasSelectedRows ? IconDesign.Default : IconDesign.NonInteractive}\n\t\t\t\t\t\t\t\tonClick={this._onSelectionChange}\n\t\t\t\t\t\t\t></Icon>\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t<CheckBox id=\"selection-component\"\n\t\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t\t\tchecked={this._isSelected}\n\t\t\t\t\t\t\t\tonChange={this._onSelectionChange}\n\t\t\t\t\t\t\t\taccessibleName={this._i18nRowSelector}\n\t\t\t\t\t\t\t\ttitle={this._isSelected ? this._i18nDeselectAllRows : this._i18nSelectAllRows}\n\t\t\t\t\t\t\t></CheckBox>\n\t\t\t\t\t}\n\t\t\t\t</TableHeaderCell>\n\t\t\t}\n\n\t\t\t{ this._visibleCells.map(cell => {\n\t\t\t\tcell.ariaColIndex = `${ariaColIndex++}`;\n\t\t\t\treturn <slot name={cell._individualSlot} key={cell._individualSlot}></slot>;\n\t\t\t})}\n\n\t\t\t{ this._rowActionCount > 0 &&\n\t\t\t\t<TableHeaderCell id=\"actions-cell\"\n\t\t\t\t\taria-colindex={ariaColIndex++}\n\t\t\t\t\taria-label={this._i18nRowActions}\n\t\t\t\t></TableHeaderCell>\n\t\t\t}\n\n\t\t\t{ this._popinCells.length > 0 &&\n\t\t\t\t<TableHeaderCell id=\"popin-cell\"\n\t\t\t\t\taria-label={this._i18nRowPopin}\n\t\t\t\t\tdata-excluded-from-navigation\n\t\t\t\t></TableHeaderCell>\n\t\t\t}\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"file":"TableHeaderRowTemplate.js","sourceRoot":"","sources":["../src/TableHeaderRowTemplate.tsx"],"names":[],"mappings":";AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,4CAA4C,CAAC;AAClE,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAG/C,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAuB,eAAuB,CAAC;IAC5F,OAAO,CACN,8BACG,IAAI,CAAC,YAAY;gBAClB,KAAC,eAAe,IAAC,EAAE,EAAC,gBAAgB,mBACpB,IAAI,CAAC,WAAW,gBACnB,IAAI,CAAC,cAAc,sBACb,IAAI,CAAC,6BAA6B,mBACrC,YAAY,EAAE,uGAGL,EAAE,YAExB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBACvB,mBAAK;wBACL,CAAC;4BACD,IAAI,CAAC,qBAAqB,CAAC,CAAC;gCAC3B,KAAC,IAAI,IACJ,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,QAAQ,CAAC,UAAU,EACzB,WAAW,EAAE,IAAI,EACjB,cAAc,EAAE,IAAI,CAAC,oBAAoB,EACzC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,EAC9E,OAAO,EAAE,IAAI,CAAC,kBAAkB,GACzB;gCACR,CAAC;oCACD,KAAC,QAAQ,IAAC,EAAE,EAAC,qBAAqB,EACjC,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EACjC,cAAc,EAAE,IAAI,CAAC,gBAAgB,EACrC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAClE,GAEG,EAGjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC3B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,OAAO,EAAE,CAAC;gBACX,CAAC;gBACD,IAAI,CAAC,YAAY,GAAG,GAAG,YAAY,EAAE,EAAE,CAAC;gBACxC,OAAO,CAAC,eAAM,IAAI,EAAE,IAAI,CAAC,eAAe,GAAS,CAAC,CAAC;YACpD,CAAC,CAAC,EAEA,IAAI,CAAC,eAAe,GAAG,CAAC;gBACzB,KAAC,eAAe,IAAC,EAAE,EAAC,cAAc,mBAClB,YAAY,EAAE,YAE7B,cAAK,EAAE,EAAC,sBAAsB,YAAE,IAAI,CAAC,eAAe,GAAO,GAC1C,EAGjB,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;gBAC5B,KAAC,eAAe,IAAC,EAAE,EAAC,YAAY,mBAChB,YAAY,EAAE,gBACjB,IAAI,CAAC,aAAa,0CAEZ,IAElB,CACH,CAAC;AACH,CAAC","sourcesContent":["import CheckBox from \"./CheckBox.js\";\nimport TableHeaderCell from \"./TableHeaderCell.js\";\nimport Icon from \"./Icon.js\";\nimport IconMode from \"./types/IconMode.js\";\nimport ClearAll from \"@ui5/webcomponents-icons/dist/clear-all.js\";\nimport IconDesign from \"./types/IconDesign.js\";\nimport type TableHeaderRow from \"./TableHeaderRow.js\";\n\nexport default function TableHeaderRowTemplate(this: TableHeaderRow, ariaColIndex: number = 1) {\n\treturn (\n\t\t<>\n\t\t\t{ this._hasSelector &&\n\t\t\t\t<TableHeaderCell id=\"selection-cell\"\n\t\t\t\t\taria-selected={this._isSelected}\n\t\t\t\t\taria-label={this._i18nSelection}\n\t\t\t\t\taria-description={this._selectionCellAriaDescription}\n\t\t\t\t\taria-colindex={ariaColIndex++}\n\t\t\t\t\tdata-ui5-table-selection-cell\n\t\t\t\t\tdata-ui5-table-cell-fixed\n\t\t\t\t\tdata-ui5-table-acc-text=\"\"\n\t\t\t\t>\n\t\t\t\t\t{ !this._isMultiSelect ?\n\t\t\t\t\t\t<></>\n\t\t\t\t\t\t:\n\t\t\t\t\t\tthis._shouldRenderClearAll ?\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname={ClearAll}\n\t\t\t\t\t\t\t\tmode={IconMode.Decorative}\n\t\t\t\t\t\t\t\tshowTooltip={true}\n\t\t\t\t\t\t\t\taccessibleName={this._i18nDeselectAllRows}\n\t\t\t\t\t\t\t\tdesign={this._hasSelectedRows ? IconDesign.Default : IconDesign.NonInteractive}\n\t\t\t\t\t\t\t\tonClick={this._onSelectionChange}\n\t\t\t\t\t\t\t></Icon>\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t<CheckBox id=\"selection-component\"\n\t\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t\t\tchecked={this._isSelected}\n\t\t\t\t\t\t\t\tonChange={this._onSelectionChange}\n\t\t\t\t\t\t\t\taccessibleName={this._i18nRowSelector}\n\t\t\t\t\t\t\t\ttitle={this._isSelected ? this._i18nDeselectAllRows : this._i18nSelectAllRows}\n\t\t\t\t\t\t\t></CheckBox>\n\t\t\t\t\t}\n\t\t\t\t</TableHeaderCell>\n\t\t\t}\n\n\t\t\t{ this.cells.flatMap(cell => {\n\t\t\t\tif (cell._popin) {\n\t\t\t\t\tcell.ariaColIndex = null;\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tcell.ariaColIndex = `${ariaColIndex++}`;\n\t\t\t\treturn [<slot name={cell._individualSlot}></slot>];\n\t\t\t})}\n\n\t\t\t{ this._rowActionCount > 0 &&\n\t\t\t\t<TableHeaderCell id=\"actions-cell\"\n\t\t\t\t\taria-colindex={ariaColIndex++}\n\t\t\t\t>\n\t\t\t\t\t<div id=\"actions-cell-content\">{this._i18nRowActions}</div>\n\t\t\t\t</TableHeaderCell>\n\t\t\t}\n\n\t\t\t{ this._popinCells.length > 0 &&\n\t\t\t\t<TableHeaderCell id=\"popin-cell\"\n\t\t\t\t\taria-colindex={ariaColIndex++}\n\t\t\t\t\taria-label={this._i18nRowPopin}\n\t\t\t\t\tdata-excluded-from-navigation\n\t\t\t\t></TableHeaderCell>\n\t\t\t}\n\t\t</>\n\t);\n}\n"]}
@@ -17,7 +17,6 @@ class TableNavigation extends TableExtension {
17
17
  this._tabPosition = 0;
18
18
  this._table = table;
19
19
  this._gridWalker = new GridWalker();
20
- this._gridWalker.setGrid(this._getNavigationItemsOfGrid());
21
20
  this._onKeyDownCaptureBound = this._onKeyDownCapture.bind(this);
22
21
  // we register the keydown handler on the table element at the capturing phase since the
23
22
  // busy indicator stops the propagation of the keydown event and it never reaches the table
@@ -1 +1 @@
1
- {"version":3,"file":"TableNavigation.js","sourceRoot":"","sources":["../src/TableNavigation.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tisUp, isUpShift, isDown, isDownShift, isLeft, isRight, isPageUp, isPageDown, isHome, isEnd, isTabNext, isTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport isElementHidden from \"@ui5/webcomponents-base/dist/util/isElementHidden.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\nimport { getTabbableElements } from \"@ui5/webcomponents-base/dist/util/TabbableElements.js\";\nimport TableExtension from \"./TableExtension.js\";\nimport GridWalker from \"./GridWalker.js\";\nimport type TableRowBase from \"./TableRowBase.js\";\nimport type Table from \"./Table.js\";\n\n/**\n * Handles the keyboard navigation for the ui5-table.\n *\n * @class\n * @private\n */\nclass TableNavigation extends TableExtension {\n\t_table: Table;\n\t_gridWalker: GridWalker;\n\t_colPosition: number = 0;\n\t_tabPosition: number = 0;\n\t_ignoreFocusIn?: boolean;\n\t_lastFocusedItem?: HTMLElement;\n\t_onKeyDownCaptureBound: (e: KeyboardEvent) => void;\n\n\tconstructor(table: Table) {\n\t\tsuper();\n\t\tthis._table = table;\n\t\tthis._gridWalker = new GridWalker();\n\t\tthis._gridWalker.setGrid(this._getNavigationItemsOfGrid());\n\t\tthis._onKeyDownCaptureBound = this._onKeyDownCapture.bind(this);\n\n\t\t// we register the keydown handler on the table element at the capturing phase since the\n\t\t// busy indicator stops the propagation of the keydown event and it never reaches the table\n\t\tthis._table.addEventListener(\"keydown\", this._onKeyDownCaptureBound, { capture: true });\n\t}\n\n\t_getNavigationItemsOfRow(row: TableRowBase) {\n\t\treturn [row, ...row.shadowRoot!.children].map(element => {\n\t\t\treturn element.localName === \"slot\" ? (element as HTMLSlotElement).assignedElements() : element;\n\t\t}).flat().filter(element => {\n\t\t\treturn element.localName.includes(\"ui5-table-\") && !element.hasAttribute(\"data-excluded-from-navigation\");\n\t\t}) as HTMLElement[];\n\t}\n\n\t_getNavigationItemsOfGrid() {\n\t\tconst items = [];\n\t\tif (this._table.headerRow[0] && !isElementHidden(this._table.headerRow[0])) {\n\t\t\titems.push(this._getNavigationItemsOfRow(this._table.headerRow[0]));\n\t\t\tthis._gridWalker.setFirstRowPos(1);\n\t\t} else {\n\t\t\tthis._gridWalker.setFirstRowPos(0);\n\t\t}\n\n\t\tif (this._table.rows.length) {\n\t\t\tthis._table.rows.forEach(row => items.push(this._getNavigationItemsOfRow(row)));\n\t\t} else if (this._table._noDataRow) {\n\t\t\titems.push(this._getNavigationItemsOfRow(this._table._noDataRow));\n\t\t}\n\n\t\tif (this._table.rows.length > 0 && this._table._getGrowing()?.hasGrowingComponent()) {\n\t\t\titems.push([this._table._getGrowing()?.getFocusDomRef()]);\n\t\t\tthis._gridWalker.setLastRowPos(-1);\n\t\t} else {\n\t\t\tthis._gridWalker.setLastRowPos(0);\n\t\t}\n\n\t\tif (!this._gridWalker.getCurrent()) {\n\t\t\tthis._gridWalker.setRowPos(this._gridWalker.getFirstRowPos());\n\t\t}\n\n\t\tthis._gridWalker.setGrid(items);\n\t\treturn items;\n\t}\n\n\t_setCurrentItem(e: Event, callback?: (currentItem: HTMLElement) => void) {\n\t\tconst navigationItems = this._getNavigationItemsOfGrid().flat();\n\t\tconst navigationItem = e.composedPath().find(target => navigationItems.includes(target as HTMLElement)) as HTMLElement;\n\t\tif (navigationItem) {\n\t\t\tthis._gridWalker.setCurrent(navigationItem);\n\t\t\tcallback && callback(navigationItem);\n\t\t}\n\t}\n\n\t_isEventFromCurrentItem(e: Event) {\n\t\treturn e.composedPath()[0] === this._gridWalker.getCurrent();\n\t}\n\n\t_focusElement(element: HTMLElement, ignoreFocusIn: boolean = true) {\n\t\tif (!element || element === getActiveElement()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst navigationItems = this._getNavigationItemsOfGrid().flat();\n\t\tif (navigationItems.includes(this._lastFocusedItem)) {\n\t\t\tthis._lastFocusedItem?.removeAttribute(\"tabindex\");\n\t\t}\n\n\t\tif (navigationItems.includes(element)) {\n\t\t\telement.setAttribute(\"tabindex\", \"-1\");\n\t\t\tthis._lastFocusedItem = element;\n\t\t}\n\n\t\tthis._ignoreFocusIn = ignoreFocusIn;\n\t\telement.focus({ preventScroll: element === this._table._beforeElement || element === this._table._afterElement });\n\t\tif (element instanceof HTMLInputElement) {\n\t\t\telement.select();\n\t\t}\n\t\tthis._ignoreFocusIn = false;\n\t}\n\n\t_focusCurrentItem() {\n\t\tthis._focusElement(this._gridWalker.getCurrent() as HTMLElement);\n\t}\n\n\t_handleEnter(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (eventOrigin.hasAttribute(\"ui5-table-cell-base\")) {\n\t\t\tthis._handleF2(e, eventOrigin);\n\t\t}\n\t}\n\n\t_handleF2(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (this._isEventFromCurrentItem(e)) {\n\t\t\tconst firstTabbable = getTabbableElements(eventOrigin)[0];\n\t\t\tthis._focusElement(firstTabbable);\n\t\t} else {\n\t\t\tthis._setCurrentItem(e, () => this._focusCurrentItem());\n\t\t}\n\t\te.preventDefault();\n\t}\n\n\t_handleF7(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (eventOrigin.hasAttribute(\"ui5-table-row-base\")) {\n\t\t\tthis._gridWalker.setColPos(this._colPosition);\n\t\t\tlet elementToFocus = this._gridWalker.getCurrent() as HTMLElement;\n\t\t\tif (this._tabPosition > -1) {\n\t\t\t\tconst tabbables = getTabbableElements(elementToFocus);\n\t\t\t\telementToFocus = tabbables[this._tabPosition] || tabbables.pop() || elementToFocus;\n\t\t\t}\n\t\t\tthis._focusElement(elementToFocus);\n\t\t} else {\n\t\t\tthis._setCurrentItem(e, currentItem => {\n\t\t\t\tthis._tabPosition = getTabbableElements(currentItem).indexOf(eventOrigin);\n\t\t\t\tthis._colPosition = this._gridWalker.getColPos();\n\t\t\t\tthis._gridWalker.setColPos(0);\n\t\t\t\tthis._focusCurrentItem();\n\t\t\t});\n\t\t}\n\t\te.preventDefault();\n\t}\n\n\t_handleTab(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (this._isEventFromCurrentItem(e)) {\n\t\t\tthis._focusElement(e.shiftKey ? this._table._beforeElement : this._table._afterElement);\n\t\t} else {\n\t\t\tconst tabbables = getTabbableElements(this._table._tableElement);\n\t\t\tif (e.shiftKey && tabbables[0] === eventOrigin) {\n\t\t\t\tthis._focusElement(this._table._beforeElement);\n\t\t\t}\n\t\t\tif (!e.shiftKey && tabbables[tabbables.length - 1] === eventOrigin) {\n\t\t\t\tthis._focusElement(this._table._afterElement);\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleArrowUpDown(e: KeyboardEvent, eventOrigin: HTMLElement, direction: -1 | 1) {\n\t\tif (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || e.defaultPrevented || this._isEventFromCurrentItem(e) || /^(input|textarea)$/i.test(eventOrigin.nodeName)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._setCurrentItem(e, currentItem => {\n\t\t\tthis._tabPosition = getTabbableElements(currentItem).indexOf(eventOrigin);\n\t\t\tthis._gridWalker.setRowPos(this._gridWalker.getRowPos() + direction);\n\t\t\tlet elementToFocus = this._gridWalker.getCurrent() as HTMLElement;\n\t\t\tconst tabbables = getTabbableElements(elementToFocus);\n\t\t\telementToFocus = tabbables[this._tabPosition] || tabbables.pop() || elementToFocus;\n\t\t\tthis._focusElement(elementToFocus);\n\t\t\te.preventDefault();\n\t\t});\n\t\treturn false;\n\t}\n\n\t_handleArrowUp(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\treturn this._handleArrowUpDown(e, eventOrigin, -1);\n\t}\n\n\t_handleArrowDown(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\treturn this._handleArrowUpDown(e, eventOrigin, 1);\n\t}\n\n\t_onkeydown(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._isEventFromCurrentItem(e) && this._getNavigationItemsOfGrid().flat().includes(eventOrigin)) {\n\t\t\tthis._gridWalker.setCurrent(eventOrigin);\n\t\t}\n\n\t\tthis._table._getVirtualizer()?._onKeyDown(e);\n\t\tif (e.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst keydownHandlerName = `_handle${e.code}` as keyof TableNavigation;\n\t\tconst keydownHandler = this[keydownHandlerName] as (e: KeyboardEvent, eventOrigin: HTMLElement) => void | false;\n\t\tif (typeof keydownHandler === \"function\" && keydownHandler.call(this, e, eventOrigin) === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._isEventFromCurrentItem(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isLeft(e)) {\n\t\t\tthis._gridWalker[this._table.effectiveDir === \"rtl\" ? \"right\" : \"left\"]();\n\t\t} else if (isRight(e)) {\n\t\t\tthis._gridWalker[this._table.effectiveDir === \"rtl\" ? \"left\" : \"right\"]();\n\t\t} else if (isUp(e) || isUpShift(e)) {\n\t\t\tthis._gridWalker.up();\n\t\t} else if (isDown(e) || isDownShift(e)) {\n\t\t\tthis._gridWalker.down();\n\t\t} else if (isHome(e)) {\n\t\t\tthis._gridWalker.home();\n\t\t} else if (isEnd(e)) {\n\t\t\tthis._gridWalker.end();\n\t\t} else if (isPageUp(e)) {\n\t\t\tthis._gridWalker.pageup();\n\t\t} else if (isPageDown(e)) {\n\t\t\tthis._gridWalker.pagedown();\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._focusCurrentItem();\n\t\te.preventDefault();\n\t}\n\n\t_onclick(e: PointerEvent) {\n\t\tconst navigationItems = this._getNavigationItemsOfGrid();\n\t\tconst flatNavigationItems = navigationItems.flat();\n\t\tlet navigationItem = null;\n\t\tlet focusableElement = null;\n\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tfor (const target of e.composedPath() as any[]) {\n\t\t\tif (target.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\tconst element = target as HTMLElement;\n\t\t\t\tif (element.matches(\":focus-within\")) {\n\t\t\t\t\tfocusableElement = element;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (flatNavigationItems.includes(element)) {\n\t\t\t\t\tnavigationItem = element;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (focusableElement && focusableElement !== this._lastFocusedItem) {\n\t\t\tthis._lastFocusedItem?.removeAttribute(\"tabindex\");\n\t\t\tthis._lastFocusedItem = undefined;\n\t\t} else if (navigationItem) {\n\t\t\tthis._gridWalker.setCurrent(navigationItem);\n\t\t\tthis._gridWalker.setColPos(0);\n\t\t\tthis._focusCurrentItem();\n\t\t}\n\t}\n\n\t_onfocusin(e: FocusEvent, eventOrigin: HTMLElement) {\n\t\tif (this._ignoreFocusIn) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (eventOrigin === this._table._beforeElement || eventOrigin === this._table._afterElement) {\n\t\t\tif (this._table.loading) {\n\t\t\t\tthis._table._loadingElement.focus();\n\t\t\t} else {\n\t\t\t\tthis._getNavigationItemsOfGrid();\n\t\t\t\tthis._gridWalker.setColPos(0);\n\t\t\t\tthis._focusCurrentItem();\n\t\t\t}\n\t\t} else if (eventOrigin !== this._lastFocusedItem && this._getNavigationItemsOfGrid().flat().includes(eventOrigin)) {\n\t\t\tthis._lastFocusedItem = eventOrigin;\n\t\t}\n\t}\n\n\t_onKeyDownCapture(e: KeyboardEvent) {\n\t\tif (!this._table.loading) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isTabNext(e) || isTabPrevious(e)) {\n\t\t\tthis._focusElement(e.shiftKey ? this._table._beforeElement : this._table._afterElement);\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n}\n\nexport default TableNavigation;\n"]}
1
+ {"version":3,"file":"TableNavigation.js","sourceRoot":"","sources":["../src/TableNavigation.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tisUp, isUpShift, isDown, isDownShift, isLeft, isRight, isPageUp, isPageDown, isHome, isEnd, isTabNext, isTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport isElementHidden from \"@ui5/webcomponents-base/dist/util/isElementHidden.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\nimport { getTabbableElements } from \"@ui5/webcomponents-base/dist/util/TabbableElements.js\";\nimport TableExtension from \"./TableExtension.js\";\nimport GridWalker from \"./GridWalker.js\";\nimport type TableRowBase from \"./TableRowBase.js\";\nimport type Table from \"./Table.js\";\n\n/**\n * Handles the keyboard navigation for the ui5-table.\n *\n * @class\n * @private\n */\nclass TableNavigation extends TableExtension {\n\t_table: Table;\n\t_gridWalker: GridWalker;\n\t_colPosition: number = 0;\n\t_tabPosition: number = 0;\n\t_ignoreFocusIn?: boolean;\n\t_lastFocusedItem?: HTMLElement;\n\t_onKeyDownCaptureBound: (e: KeyboardEvent) => void;\n\n\tconstructor(table: Table) {\n\t\tsuper();\n\t\tthis._table = table;\n\t\tthis._gridWalker = new GridWalker();\n\t\tthis._onKeyDownCaptureBound = this._onKeyDownCapture.bind(this);\n\n\t\t// we register the keydown handler on the table element at the capturing phase since the\n\t\t// busy indicator stops the propagation of the keydown event and it never reaches the table\n\t\tthis._table.addEventListener(\"keydown\", this._onKeyDownCaptureBound, { capture: true });\n\t}\n\n\t_getNavigationItemsOfRow(row: TableRowBase) {\n\t\treturn [row, ...row.shadowRoot!.children].map(element => {\n\t\t\treturn element.localName === \"slot\" ? (element as HTMLSlotElement).assignedElements() : element;\n\t\t}).flat().filter(element => {\n\t\t\treturn element.localName.includes(\"ui5-table-\") && !element.hasAttribute(\"data-excluded-from-navigation\");\n\t\t}) as HTMLElement[];\n\t}\n\n\t_getNavigationItemsOfGrid() {\n\t\tconst items = [];\n\t\tif (this._table.headerRow[0] && !isElementHidden(this._table.headerRow[0])) {\n\t\t\titems.push(this._getNavigationItemsOfRow(this._table.headerRow[0]));\n\t\t\tthis._gridWalker.setFirstRowPos(1);\n\t\t} else {\n\t\t\tthis._gridWalker.setFirstRowPos(0);\n\t\t}\n\n\t\tif (this._table.rows.length) {\n\t\t\tthis._table.rows.forEach(row => items.push(this._getNavigationItemsOfRow(row)));\n\t\t} else if (this._table._noDataRow) {\n\t\t\titems.push(this._getNavigationItemsOfRow(this._table._noDataRow));\n\t\t}\n\n\t\tif (this._table.rows.length > 0 && this._table._getGrowing()?.hasGrowingComponent()) {\n\t\t\titems.push([this._table._getGrowing()?.getFocusDomRef()]);\n\t\t\tthis._gridWalker.setLastRowPos(-1);\n\t\t} else {\n\t\t\tthis._gridWalker.setLastRowPos(0);\n\t\t}\n\n\t\tif (!this._gridWalker.getCurrent()) {\n\t\t\tthis._gridWalker.setRowPos(this._gridWalker.getFirstRowPos());\n\t\t}\n\n\t\tthis._gridWalker.setGrid(items);\n\t\treturn items;\n\t}\n\n\t_setCurrentItem(e: Event, callback?: (currentItem: HTMLElement) => void) {\n\t\tconst navigationItems = this._getNavigationItemsOfGrid().flat();\n\t\tconst navigationItem = e.composedPath().find(target => navigationItems.includes(target as HTMLElement)) as HTMLElement;\n\t\tif (navigationItem) {\n\t\t\tthis._gridWalker.setCurrent(navigationItem);\n\t\t\tcallback && callback(navigationItem);\n\t\t}\n\t}\n\n\t_isEventFromCurrentItem(e: Event) {\n\t\treturn e.composedPath()[0] === this._gridWalker.getCurrent();\n\t}\n\n\t_focusElement(element: HTMLElement, ignoreFocusIn: boolean = true) {\n\t\tif (!element || element === getActiveElement()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst navigationItems = this._getNavigationItemsOfGrid().flat();\n\t\tif (navigationItems.includes(this._lastFocusedItem)) {\n\t\t\tthis._lastFocusedItem?.removeAttribute(\"tabindex\");\n\t\t}\n\n\t\tif (navigationItems.includes(element)) {\n\t\t\telement.setAttribute(\"tabindex\", \"-1\");\n\t\t\tthis._lastFocusedItem = element;\n\t\t}\n\n\t\tthis._ignoreFocusIn = ignoreFocusIn;\n\t\telement.focus({ preventScroll: element === this._table._beforeElement || element === this._table._afterElement });\n\t\tif (element instanceof HTMLInputElement) {\n\t\t\telement.select();\n\t\t}\n\t\tthis._ignoreFocusIn = false;\n\t}\n\n\t_focusCurrentItem() {\n\t\tthis._focusElement(this._gridWalker.getCurrent() as HTMLElement);\n\t}\n\n\t_handleEnter(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (eventOrigin.hasAttribute(\"ui5-table-cell-base\")) {\n\t\t\tthis._handleF2(e, eventOrigin);\n\t\t}\n\t}\n\n\t_handleF2(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (this._isEventFromCurrentItem(e)) {\n\t\t\tconst firstTabbable = getTabbableElements(eventOrigin)[0];\n\t\t\tthis._focusElement(firstTabbable);\n\t\t} else {\n\t\t\tthis._setCurrentItem(e, () => this._focusCurrentItem());\n\t\t}\n\t\te.preventDefault();\n\t}\n\n\t_handleF7(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (eventOrigin.hasAttribute(\"ui5-table-row-base\")) {\n\t\t\tthis._gridWalker.setColPos(this._colPosition);\n\t\t\tlet elementToFocus = this._gridWalker.getCurrent() as HTMLElement;\n\t\t\tif (this._tabPosition > -1) {\n\t\t\t\tconst tabbables = getTabbableElements(elementToFocus);\n\t\t\t\telementToFocus = tabbables[this._tabPosition] || tabbables.pop() || elementToFocus;\n\t\t\t}\n\t\t\tthis._focusElement(elementToFocus);\n\t\t} else {\n\t\t\tthis._setCurrentItem(e, currentItem => {\n\t\t\t\tthis._tabPosition = getTabbableElements(currentItem).indexOf(eventOrigin);\n\t\t\t\tthis._colPosition = this._gridWalker.getColPos();\n\t\t\t\tthis._gridWalker.setColPos(0);\n\t\t\t\tthis._focusCurrentItem();\n\t\t\t});\n\t\t}\n\t\te.preventDefault();\n\t}\n\n\t_handleTab(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (this._isEventFromCurrentItem(e)) {\n\t\t\tthis._focusElement(e.shiftKey ? this._table._beforeElement : this._table._afterElement);\n\t\t} else {\n\t\t\tconst tabbables = getTabbableElements(this._table._tableElement);\n\t\t\tif (e.shiftKey && tabbables[0] === eventOrigin) {\n\t\t\t\tthis._focusElement(this._table._beforeElement);\n\t\t\t}\n\t\t\tif (!e.shiftKey && tabbables[tabbables.length - 1] === eventOrigin) {\n\t\t\t\tthis._focusElement(this._table._afterElement);\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleArrowUpDown(e: KeyboardEvent, eventOrigin: HTMLElement, direction: -1 | 1) {\n\t\tif (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || e.defaultPrevented || this._isEventFromCurrentItem(e) || /^(input|textarea)$/i.test(eventOrigin.nodeName)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._setCurrentItem(e, currentItem => {\n\t\t\tthis._tabPosition = getTabbableElements(currentItem).indexOf(eventOrigin);\n\t\t\tthis._gridWalker.setRowPos(this._gridWalker.getRowPos() + direction);\n\t\t\tlet elementToFocus = this._gridWalker.getCurrent() as HTMLElement;\n\t\t\tconst tabbables = getTabbableElements(elementToFocus);\n\t\t\telementToFocus = tabbables[this._tabPosition] || tabbables.pop() || elementToFocus;\n\t\t\tthis._focusElement(elementToFocus);\n\t\t\te.preventDefault();\n\t\t});\n\t\treturn false;\n\t}\n\n\t_handleArrowUp(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\treturn this._handleArrowUpDown(e, eventOrigin, -1);\n\t}\n\n\t_handleArrowDown(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\treturn this._handleArrowUpDown(e, eventOrigin, 1);\n\t}\n\n\t_onkeydown(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._isEventFromCurrentItem(e) && this._getNavigationItemsOfGrid().flat().includes(eventOrigin)) {\n\t\t\tthis._gridWalker.setCurrent(eventOrigin);\n\t\t}\n\n\t\tthis._table._getVirtualizer()?._onKeyDown(e);\n\t\tif (e.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst keydownHandlerName = `_handle${e.code}` as keyof TableNavigation;\n\t\tconst keydownHandler = this[keydownHandlerName] as (e: KeyboardEvent, eventOrigin: HTMLElement) => void | false;\n\t\tif (typeof keydownHandler === \"function\" && keydownHandler.call(this, e, eventOrigin) === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._isEventFromCurrentItem(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isLeft(e)) {\n\t\t\tthis._gridWalker[this._table.effectiveDir === \"rtl\" ? \"right\" : \"left\"]();\n\t\t} else if (isRight(e)) {\n\t\t\tthis._gridWalker[this._table.effectiveDir === \"rtl\" ? \"left\" : \"right\"]();\n\t\t} else if (isUp(e) || isUpShift(e)) {\n\t\t\tthis._gridWalker.up();\n\t\t} else if (isDown(e) || isDownShift(e)) {\n\t\t\tthis._gridWalker.down();\n\t\t} else if (isHome(e)) {\n\t\t\tthis._gridWalker.home();\n\t\t} else if (isEnd(e)) {\n\t\t\tthis._gridWalker.end();\n\t\t} else if (isPageUp(e)) {\n\t\t\tthis._gridWalker.pageup();\n\t\t} else if (isPageDown(e)) {\n\t\t\tthis._gridWalker.pagedown();\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._focusCurrentItem();\n\t\te.preventDefault();\n\t}\n\n\t_onclick(e: PointerEvent) {\n\t\tconst navigationItems = this._getNavigationItemsOfGrid();\n\t\tconst flatNavigationItems = navigationItems.flat();\n\t\tlet navigationItem = null;\n\t\tlet focusableElement = null;\n\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tfor (const target of e.composedPath() as any[]) {\n\t\t\tif (target.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\tconst element = target as HTMLElement;\n\t\t\t\tif (element.matches(\":focus-within\")) {\n\t\t\t\t\tfocusableElement = element;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (flatNavigationItems.includes(element)) {\n\t\t\t\t\tnavigationItem = element;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (focusableElement && focusableElement !== this._lastFocusedItem) {\n\t\t\tthis._lastFocusedItem?.removeAttribute(\"tabindex\");\n\t\t\tthis._lastFocusedItem = undefined;\n\t\t} else if (navigationItem) {\n\t\t\tthis._gridWalker.setCurrent(navigationItem);\n\t\t\tthis._gridWalker.setColPos(0);\n\t\t\tthis._focusCurrentItem();\n\t\t}\n\t}\n\n\t_onfocusin(e: FocusEvent, eventOrigin: HTMLElement) {\n\t\tif (this._ignoreFocusIn) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (eventOrigin === this._table._beforeElement || eventOrigin === this._table._afterElement) {\n\t\t\tif (this._table.loading) {\n\t\t\t\tthis._table._loadingElement.focus();\n\t\t\t} else {\n\t\t\t\tthis._getNavigationItemsOfGrid();\n\t\t\t\tthis._gridWalker.setColPos(0);\n\t\t\t\tthis._focusCurrentItem();\n\t\t\t}\n\t\t} else if (eventOrigin !== this._lastFocusedItem && this._getNavigationItemsOfGrid().flat().includes(eventOrigin)) {\n\t\t\tthis._lastFocusedItem = eventOrigin;\n\t\t}\n\t}\n\n\t_onKeyDownCapture(e: KeyboardEvent) {\n\t\tif (!this._table.loading) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isTabNext(e) || isTabPrevious(e)) {\n\t\t\tthis._focusElement(e.shiftKey ? this._table._beforeElement : this._table._afterElement);\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n}\n\nexport default TableNavigation;\n"]}
@@ -1,9 +1,8 @@
1
- import type { UI5CustomEvent } from "@ui5/webcomponents-base";
2
1
  import TableRowBase from "./TableRowBase.js";
3
2
  import type TableCell from "./TableCell.js";
4
3
  import type TableRowActionBase from "./TableRowActionBase.js";
5
4
  import type Button from "./Button.js";
6
- import "@ui5/webcomponents-icons/dist/overflow.js";
5
+ import type { UI5CustomEvent } from "@ui5/webcomponents-base";
7
6
  /**
8
7
  * @class
9
8
  *
@@ -77,6 +76,8 @@ declare class TableRow extends TableRowBase {
77
76
  * @public
78
77
  */
79
78
  movable: boolean;
79
+ _popinCell?: TableCell;
80
+ _actionsCell?: TableCell;
80
81
  onBeforeRendering(): void;
81
82
  focus(focusOptions?: FocusOptions | undefined): Promise<void>;
82
83
  _onkeydown(e: KeyboardEvent, eventOrigin: HTMLElement): void;
@@ -84,11 +85,14 @@ declare class TableRow extends TableRowBase {
84
85
  _onkeyup(): void;
85
86
  _onfocusout(): void;
86
87
  _onOverflowButtonClick(e: UI5CustomEvent<Button, "click">): void;
87
- get _isInteractive(): boolean | undefined;
88
+ get _isInteractive(): boolean;
89
+ get _isNavigable(): boolean;
88
90
  get _rowIndex(): number;
89
91
  get _hasOverflowActions(): boolean;
90
92
  get _flexibleActions(): TableRowActionBase[];
91
93
  get _fixedActions(): TableRowActionBase[];
92
94
  get _overflowActions(): TableRowActionBase[];
95
+ get _availableActionsCount(): number;
96
+ get _actionCellAccText(): string | undefined;
93
97
  }
94
98
  export default TableRow;