@ui5/webcomponents 2.10.0-rc.0 → 2.10.0-rc.2

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 (518) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/cypress/specs/Button.cy.tsx +21 -4
  3. package/cypress/specs/Carousel.cy.tsx +565 -11
  4. package/cypress/specs/Carousel.mobile.cy.tsx +67 -0
  5. package/cypress/specs/Form.cy.tsx +21 -0
  6. package/cypress/specs/Input.cy.tsx +80 -26
  7. package/cypress/specs/List.cy.tsx +80 -1
  8. package/cypress/specs/List.mobile.cy.tsx +31 -0
  9. package/cypress/specs/Popover.cy.tsx +44 -10
  10. package/cypress/specs/Table.cy.tsx +183 -0
  11. package/cypress/specs/TableGrowing.cy.tsx +55 -7
  12. package/cypress/specs/TableRowActions.cy.tsx +21 -6
  13. package/cypress/specs/TableSelection.cy.tsx +1 -1
  14. package/cypress/specs/TableSelections.cy.tsx +1 -1
  15. package/cypress/specs/TableUtils.cy.tsx +38 -1
  16. package/cypress/support/commands.ts +4 -0
  17. package/dist/.tsbuildinfo +1 -1
  18. package/dist/Button.d.ts +0 -2
  19. package/dist/Button.js +8 -9
  20. package/dist/Button.js.map +1 -1
  21. package/dist/ButtonTemplate.js +3 -4
  22. package/dist/ButtonTemplate.js.map +1 -1
  23. package/dist/Form.d.ts +1 -0
  24. package/dist/Form.js +7 -0
  25. package/dist/Form.js.map +1 -1
  26. package/dist/Input.js +1 -0
  27. package/dist/Input.js.map +1 -1
  28. package/dist/List.d.ts +8 -3
  29. package/dist/List.js +19 -13
  30. package/dist/List.js.map +1 -1
  31. package/dist/ListItem.d.ts +6 -0
  32. package/dist/ListItem.js +9 -0
  33. package/dist/ListItem.js.map +1 -1
  34. package/dist/ListItemStandard.d.ts +44 -5
  35. package/dist/ListItemStandard.js +65 -8
  36. package/dist/ListItemStandard.js.map +1 -1
  37. package/dist/ListItemStandardTemplate.js +33 -1
  38. package/dist/ListItemStandardTemplate.js.map +1 -1
  39. package/dist/Menu.d.ts +9 -2
  40. package/dist/Menu.js +11 -2
  41. package/dist/Menu.js.map +1 -1
  42. package/dist/MenuTemplate.js +1 -1
  43. package/dist/MenuTemplate.js.map +1 -1
  44. package/dist/Popover.js +2 -2
  45. package/dist/Popover.js.map +1 -1
  46. package/dist/Table.js +24 -22
  47. package/dist/Table.js.map +1 -1
  48. package/dist/TableGrowing.js +1 -2
  49. package/dist/TableGrowing.js.map +1 -1
  50. package/dist/TableHeaderCell.d.ts +15 -13
  51. package/dist/TableHeaderCell.js +0 -35
  52. package/dist/TableHeaderCell.js.map +1 -1
  53. package/dist/TableRow.js +1 -0
  54. package/dist/TableRow.js.map +1 -1
  55. package/dist/TableTemplate.js +1 -1
  56. package/dist/TableTemplate.js.map +1 -1
  57. package/dist/TableUtils.d.ts +8 -1
  58. package/dist/TableUtils.js +12 -1
  59. package/dist/TableUtils.js.map +1 -1
  60. package/dist/Tokenizer.d.ts +4 -0
  61. package/dist/Tokenizer.js.map +1 -1
  62. package/dist/Tree.js +3 -0
  63. package/dist/Tree.js.map +1 -1
  64. package/dist/css/themes/Avatar.css +1 -1
  65. package/dist/css/themes/AvatarGroup.css +1 -1
  66. package/dist/css/themes/Bar.css +1 -1
  67. package/dist/css/themes/Breadcrumbs.css +1 -1
  68. package/dist/css/themes/BusyIndicator.css +1 -1
  69. package/dist/css/themes/Button.css +1 -1
  70. package/dist/css/themes/ButtonBadge.css +1 -1
  71. package/dist/css/themes/Calendar.css +1 -1
  72. package/dist/css/themes/CalendarHeader.css +1 -1
  73. package/dist/css/themes/CalendarLegend.css +1 -1
  74. package/dist/css/themes/CalendarLegendItem.css +1 -1
  75. package/dist/css/themes/Card.css +1 -1
  76. package/dist/css/themes/CardHeader.css +1 -1
  77. package/dist/css/themes/Carousel.css +1 -1
  78. package/dist/css/themes/CheckBox.css +1 -1
  79. package/dist/css/themes/ColorPalette.css +1 -1
  80. package/dist/css/themes/ColorPaletteItem.css +1 -1
  81. package/dist/css/themes/ColorPalettePopover.css +1 -1
  82. package/dist/css/themes/ColorPicker.css +1 -1
  83. package/dist/css/themes/ComboBox.css +1 -1
  84. package/dist/css/themes/ComboBoxItem.css +1 -1
  85. package/dist/css/themes/DatePicker.css +1 -1
  86. package/dist/css/themes/DateTimePickerPopover.css +1 -1
  87. package/dist/css/themes/DayPicker.css +1 -1
  88. package/dist/css/themes/Dialog.css +1 -1
  89. package/dist/css/themes/FileUploader.css +1 -1
  90. package/dist/css/themes/Form.css +1 -1
  91. package/dist/css/themes/FormItem.css +1 -1
  92. package/dist/css/themes/FormItemSpan.css +1 -1
  93. package/dist/css/themes/GrowingButton.css +1 -1
  94. package/dist/css/themes/Icon.css +1 -1
  95. package/dist/css/themes/Input.css +1 -1
  96. package/dist/css/themes/InputIcon.css +1 -1
  97. package/dist/css/themes/InputSharedStyles.css +1 -1
  98. package/dist/css/themes/Link.css +1 -1
  99. package/dist/css/themes/List.css +1 -1
  100. package/dist/css/themes/ListItem.css +1 -1
  101. package/dist/css/themes/ListItemBase.css +1 -1
  102. package/dist/css/themes/ListItemCustom.css +1 -1
  103. package/dist/css/themes/ListItemGroup.css +1 -1
  104. package/dist/css/themes/ListItemGroupHeader.css +1 -1
  105. package/dist/css/themes/ListItemIcon.css +1 -1
  106. package/dist/css/themes/Menu.css +1 -1
  107. package/dist/css/themes/MenuItem.css +1 -1
  108. package/dist/css/themes/MessageStrip.css +1 -1
  109. package/dist/css/themes/MonthPicker.css +1 -1
  110. package/dist/css/themes/MultiComboBox.css +1 -1
  111. package/dist/css/themes/MultiComboBoxItem.css +1 -1
  112. package/dist/css/themes/MultiComboBoxPopover.css +1 -1
  113. package/dist/css/themes/MultiInput.css +1 -1
  114. package/dist/css/themes/OptionBase.css +1 -1
  115. package/dist/css/themes/Panel.css +1 -1
  116. package/dist/css/themes/Popover.css +1 -1
  117. package/dist/css/themes/PopupsCommon.css +1 -1
  118. package/dist/css/themes/ProgressIndicator.css +1 -1
  119. package/dist/css/themes/RadioButton.css +1 -1
  120. package/dist/css/themes/RangeSlider.css +1 -1
  121. package/dist/css/themes/RatingIndicator.css +1 -1
  122. package/dist/css/themes/ResponsivePopover.css +1 -1
  123. package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
  124. package/dist/css/themes/SegmentedButton.css +1 -1
  125. package/dist/css/themes/SegmentedButtonItem.css +1 -1
  126. package/dist/css/themes/Select.css +1 -1
  127. package/dist/css/themes/SliderBase.css +1 -1
  128. package/dist/css/themes/SplitButton.css +1 -1
  129. package/dist/css/themes/StepInput.css +1 -1
  130. package/dist/css/themes/SuggestionItem.css +1 -1
  131. package/dist/css/themes/SuggestionItemCustom.css +1 -1
  132. package/dist/css/themes/Switch.css +1 -1
  133. package/dist/css/themes/TabContainer.css +1 -1
  134. package/dist/css/themes/TabInOverflow.css +1 -1
  135. package/dist/css/themes/TabInStrip.css +1 -1
  136. package/dist/css/themes/TabSemanticIcon.css +1 -1
  137. package/dist/css/themes/TabSeparatorInOverflow.css +1 -1
  138. package/dist/css/themes/Table.css +1 -1
  139. package/dist/css/themes/TableCellBase.css +1 -1
  140. package/dist/css/themes/TableHeaderRow.css +1 -1
  141. package/dist/css/themes/TableRow.css +1 -1
  142. package/dist/css/themes/TableRowActionBase.css +1 -1
  143. package/dist/css/themes/TableRowBase.css +1 -1
  144. package/dist/css/themes/Tag.css +1 -1
  145. package/dist/css/themes/Text.css +1 -1
  146. package/dist/css/themes/TextArea.css +1 -1
  147. package/dist/css/themes/TimePicker.css +1 -1
  148. package/dist/css/themes/Toast.css +1 -1
  149. package/dist/css/themes/ToggleButton.css +1 -1
  150. package/dist/css/themes/Token.css +1 -1
  151. package/dist/css/themes/Tokenizer.css +1 -1
  152. package/dist/css/themes/TokenizerPopover.css +1 -1
  153. package/dist/css/themes/Toolbar.css +1 -1
  154. package/dist/css/themes/ToolbarPopover.css +1 -1
  155. package/dist/css/themes/TreeItem.css +1 -1
  156. package/dist/css/themes/ValueStateMessage.css +1 -1
  157. package/dist/css/themes/YearPicker.css +1 -1
  158. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  159. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  160. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  161. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  162. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  163. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  164. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  165. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  166. package/dist/custom-elements-internal.json +126 -42
  167. package/dist/custom-elements.json +112 -42
  168. package/dist/features/ListItemStandardExpandableText.d.ts +1 -0
  169. package/dist/features/ListItemStandardExpandableText.js +5 -0
  170. package/dist/features/ListItemStandardExpandableText.js.map +1 -0
  171. package/dist/features/ListItemStandardExpandableTextTemplate.d.ts +10 -0
  172. package/dist/features/ListItemStandardExpandableTextTemplate.js +14 -0
  173. package/dist/features/ListItemStandardExpandableTextTemplate.js.map +1 -0
  174. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  175. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  176. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  177. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  178. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  179. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  180. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  181. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  182. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  183. package/dist/generated/i18n/i18n-defaults.js +2 -1
  184. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  185. package/dist/generated/themes/Avatar.css.d.ts +1 -1
  186. package/dist/generated/themes/Avatar.css.js +1 -1
  187. package/dist/generated/themes/Avatar.css.js.map +1 -1
  188. package/dist/generated/themes/AvatarGroup.css.d.ts +1 -1
  189. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  190. package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
  191. package/dist/generated/themes/Bar.css.d.ts +1 -1
  192. package/dist/generated/themes/Bar.css.js +1 -1
  193. package/dist/generated/themes/Bar.css.js.map +1 -1
  194. package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
  195. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  196. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  197. package/dist/generated/themes/BusyIndicator.css.d.ts +1 -1
  198. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  199. package/dist/generated/themes/BusyIndicator.css.js.map +1 -1
  200. package/dist/generated/themes/Button.css.d.ts +1 -1
  201. package/dist/generated/themes/Button.css.js +1 -1
  202. package/dist/generated/themes/Button.css.js.map +1 -1
  203. package/dist/generated/themes/ButtonBadge.css.d.ts +1 -1
  204. package/dist/generated/themes/ButtonBadge.css.js +1 -1
  205. package/dist/generated/themes/ButtonBadge.css.js.map +1 -1
  206. package/dist/generated/themes/Calendar.css.d.ts +1 -1
  207. package/dist/generated/themes/Calendar.css.js +1 -1
  208. package/dist/generated/themes/Calendar.css.js.map +1 -1
  209. package/dist/generated/themes/CalendarHeader.css.d.ts +1 -1
  210. package/dist/generated/themes/CalendarHeader.css.js +1 -1
  211. package/dist/generated/themes/CalendarHeader.css.js.map +1 -1
  212. package/dist/generated/themes/CalendarLegend.css.d.ts +1 -1
  213. package/dist/generated/themes/CalendarLegend.css.js +1 -1
  214. package/dist/generated/themes/CalendarLegend.css.js.map +1 -1
  215. package/dist/generated/themes/CalendarLegendItem.css.d.ts +1 -1
  216. package/dist/generated/themes/CalendarLegendItem.css.js +1 -1
  217. package/dist/generated/themes/CalendarLegendItem.css.js.map +1 -1
  218. package/dist/generated/themes/Card.css.d.ts +1 -1
  219. package/dist/generated/themes/Card.css.js +1 -1
  220. package/dist/generated/themes/Card.css.js.map +1 -1
  221. package/dist/generated/themes/CardHeader.css.d.ts +1 -1
  222. package/dist/generated/themes/CardHeader.css.js +1 -1
  223. package/dist/generated/themes/CardHeader.css.js.map +1 -1
  224. package/dist/generated/themes/Carousel.css.d.ts +1 -1
  225. package/dist/generated/themes/Carousel.css.js +1 -1
  226. package/dist/generated/themes/Carousel.css.js.map +1 -1
  227. package/dist/generated/themes/CheckBox.css.d.ts +1 -1
  228. package/dist/generated/themes/CheckBox.css.js +1 -1
  229. package/dist/generated/themes/CheckBox.css.js.map +1 -1
  230. package/dist/generated/themes/ColorPalette.css.d.ts +1 -1
  231. package/dist/generated/themes/ColorPalette.css.js +1 -1
  232. package/dist/generated/themes/ColorPalette.css.js.map +1 -1
  233. package/dist/generated/themes/ColorPaletteItem.css.d.ts +1 -1
  234. package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
  235. package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
  236. package/dist/generated/themes/ColorPalettePopover.css.d.ts +1 -1
  237. package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
  238. package/dist/generated/themes/ColorPalettePopover.css.js.map +1 -1
  239. package/dist/generated/themes/ColorPicker.css.d.ts +1 -1
  240. package/dist/generated/themes/ColorPicker.css.js +1 -1
  241. package/dist/generated/themes/ColorPicker.css.js.map +1 -1
  242. package/dist/generated/themes/ComboBox.css.d.ts +1 -1
  243. package/dist/generated/themes/ComboBox.css.js +1 -1
  244. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  245. package/dist/generated/themes/ComboBoxItem.css.d.ts +1 -1
  246. package/dist/generated/themes/ComboBoxItem.css.js +1 -1
  247. package/dist/generated/themes/ComboBoxItem.css.js.map +1 -1
  248. package/dist/generated/themes/DatePicker.css.d.ts +1 -1
  249. package/dist/generated/themes/DatePicker.css.js +1 -1
  250. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  251. package/dist/generated/themes/DateTimePickerPopover.css.d.ts +1 -1
  252. package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
  253. package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
  254. package/dist/generated/themes/DayPicker.css.d.ts +1 -1
  255. package/dist/generated/themes/DayPicker.css.js +1 -1
  256. package/dist/generated/themes/DayPicker.css.js.map +1 -1
  257. package/dist/generated/themes/Dialog.css.d.ts +1 -1
  258. package/dist/generated/themes/Dialog.css.js +1 -1
  259. package/dist/generated/themes/Dialog.css.js.map +1 -1
  260. package/dist/generated/themes/FileUploader.css.d.ts +1 -1
  261. package/dist/generated/themes/FileUploader.css.js +1 -1
  262. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  263. package/dist/generated/themes/Form.css.d.ts +1 -1
  264. package/dist/generated/themes/Form.css.js +1 -1
  265. package/dist/generated/themes/Form.css.js.map +1 -1
  266. package/dist/generated/themes/FormItem.css.d.ts +1 -1
  267. package/dist/generated/themes/FormItem.css.js +1 -1
  268. package/dist/generated/themes/FormItem.css.js.map +1 -1
  269. package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
  270. package/dist/generated/themes/FormItemSpan.css.js +1 -1
  271. package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
  272. package/dist/generated/themes/GrowingButton.css.d.ts +1 -1
  273. package/dist/generated/themes/GrowingButton.css.js +1 -1
  274. package/dist/generated/themes/GrowingButton.css.js.map +1 -1
  275. package/dist/generated/themes/Icon.css.d.ts +1 -1
  276. package/dist/generated/themes/Icon.css.js +1 -1
  277. package/dist/generated/themes/Icon.css.js.map +1 -1
  278. package/dist/generated/themes/Input.css.d.ts +1 -1
  279. package/dist/generated/themes/Input.css.js +1 -1
  280. package/dist/generated/themes/Input.css.js.map +1 -1
  281. package/dist/generated/themes/InputIcon.css.d.ts +1 -1
  282. package/dist/generated/themes/InputIcon.css.js +1 -1
  283. package/dist/generated/themes/InputIcon.css.js.map +1 -1
  284. package/dist/generated/themes/InputSharedStyles.css.d.ts +1 -1
  285. package/dist/generated/themes/InputSharedStyles.css.js +1 -1
  286. package/dist/generated/themes/InputSharedStyles.css.js.map +1 -1
  287. package/dist/generated/themes/Link.css.d.ts +1 -1
  288. package/dist/generated/themes/Link.css.js +1 -1
  289. package/dist/generated/themes/Link.css.js.map +1 -1
  290. package/dist/generated/themes/List.css.d.ts +1 -1
  291. package/dist/generated/themes/List.css.js +1 -1
  292. package/dist/generated/themes/List.css.js.map +1 -1
  293. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  294. package/dist/generated/themes/ListItem.css.js +1 -1
  295. package/dist/generated/themes/ListItem.css.js.map +1 -1
  296. package/dist/generated/themes/ListItemBase.css.d.ts +1 -1
  297. package/dist/generated/themes/ListItemBase.css.js +1 -1
  298. package/dist/generated/themes/ListItemBase.css.js.map +1 -1
  299. package/dist/generated/themes/ListItemCustom.css.d.ts +1 -1
  300. package/dist/generated/themes/ListItemCustom.css.js +1 -1
  301. package/dist/generated/themes/ListItemCustom.css.js.map +1 -1
  302. package/dist/generated/themes/ListItemGroup.css.d.ts +1 -1
  303. package/dist/generated/themes/ListItemGroup.css.js +1 -1
  304. package/dist/generated/themes/ListItemGroup.css.js.map +1 -1
  305. package/dist/generated/themes/ListItemGroupHeader.css.d.ts +1 -1
  306. package/dist/generated/themes/ListItemGroupHeader.css.js +1 -1
  307. package/dist/generated/themes/ListItemGroupHeader.css.js.map +1 -1
  308. package/dist/generated/themes/ListItemIcon.css.d.ts +1 -1
  309. package/dist/generated/themes/ListItemIcon.css.js +1 -1
  310. package/dist/generated/themes/ListItemIcon.css.js.map +1 -1
  311. package/dist/generated/themes/Menu.css.d.ts +1 -1
  312. package/dist/generated/themes/Menu.css.js +1 -1
  313. package/dist/generated/themes/Menu.css.js.map +1 -1
  314. package/dist/generated/themes/MenuItem.css.d.ts +1 -1
  315. package/dist/generated/themes/MenuItem.css.js +1 -1
  316. package/dist/generated/themes/MenuItem.css.js.map +1 -1
  317. package/dist/generated/themes/MessageStrip.css.d.ts +1 -1
  318. package/dist/generated/themes/MessageStrip.css.js +1 -1
  319. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  320. package/dist/generated/themes/MonthPicker.css.d.ts +1 -1
  321. package/dist/generated/themes/MonthPicker.css.js +1 -1
  322. package/dist/generated/themes/MonthPicker.css.js.map +1 -1
  323. package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
  324. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  325. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  326. package/dist/generated/themes/MultiComboBoxItem.css.d.ts +1 -1
  327. package/dist/generated/themes/MultiComboBoxItem.css.js +1 -1
  328. package/dist/generated/themes/MultiComboBoxItem.css.js.map +1 -1
  329. package/dist/generated/themes/MultiComboBoxPopover.css.d.ts +1 -1
  330. package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
  331. package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
  332. package/dist/generated/themes/MultiInput.css.d.ts +1 -1
  333. package/dist/generated/themes/MultiInput.css.js +1 -1
  334. package/dist/generated/themes/MultiInput.css.js.map +1 -1
  335. package/dist/generated/themes/OptionBase.css.d.ts +1 -1
  336. package/dist/generated/themes/OptionBase.css.js +1 -1
  337. package/dist/generated/themes/OptionBase.css.js.map +1 -1
  338. package/dist/generated/themes/Panel.css.d.ts +1 -1
  339. package/dist/generated/themes/Panel.css.js +1 -1
  340. package/dist/generated/themes/Panel.css.js.map +1 -1
  341. package/dist/generated/themes/Popover.css.d.ts +1 -1
  342. package/dist/generated/themes/Popover.css.js +1 -1
  343. package/dist/generated/themes/Popover.css.js.map +1 -1
  344. package/dist/generated/themes/PopupsCommon.css.d.ts +1 -1
  345. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  346. package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
  347. package/dist/generated/themes/ProgressIndicator.css.d.ts +1 -1
  348. package/dist/generated/themes/ProgressIndicator.css.js +1 -1
  349. package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
  350. package/dist/generated/themes/RadioButton.css.d.ts +1 -1
  351. package/dist/generated/themes/RadioButton.css.js +1 -1
  352. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  353. package/dist/generated/themes/RangeSlider.css.d.ts +1 -1
  354. package/dist/generated/themes/RangeSlider.css.js +1 -1
  355. package/dist/generated/themes/RangeSlider.css.js.map +1 -1
  356. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  357. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  358. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  359. package/dist/generated/themes/ResponsivePopover.css.d.ts +1 -1
  360. package/dist/generated/themes/ResponsivePopover.css.js +1 -1
  361. package/dist/generated/themes/ResponsivePopover.css.js.map +1 -1
  362. package/dist/generated/themes/ResponsivePopoverCommon.css.d.ts +1 -1
  363. package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
  364. package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
  365. package/dist/generated/themes/SegmentedButton.css.d.ts +1 -1
  366. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  367. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  368. package/dist/generated/themes/SegmentedButtonItem.css.d.ts +1 -1
  369. package/dist/generated/themes/SegmentedButtonItem.css.js +1 -1
  370. package/dist/generated/themes/SegmentedButtonItem.css.js.map +1 -1
  371. package/dist/generated/themes/Select.css.d.ts +1 -1
  372. package/dist/generated/themes/Select.css.js +1 -1
  373. package/dist/generated/themes/Select.css.js.map +1 -1
  374. package/dist/generated/themes/SliderBase.css.d.ts +1 -1
  375. package/dist/generated/themes/SliderBase.css.js +1 -1
  376. package/dist/generated/themes/SliderBase.css.js.map +1 -1
  377. package/dist/generated/themes/SplitButton.css.d.ts +1 -1
  378. package/dist/generated/themes/SplitButton.css.js +1 -1
  379. package/dist/generated/themes/SplitButton.css.js.map +1 -1
  380. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  381. package/dist/generated/themes/StepInput.css.js +1 -1
  382. package/dist/generated/themes/StepInput.css.js.map +1 -1
  383. package/dist/generated/themes/SuggestionItem.css.d.ts +1 -1
  384. package/dist/generated/themes/SuggestionItem.css.js +1 -1
  385. package/dist/generated/themes/SuggestionItem.css.js.map +1 -1
  386. package/dist/generated/themes/SuggestionItemCustom.css.d.ts +1 -1
  387. package/dist/generated/themes/SuggestionItemCustom.css.js +1 -1
  388. package/dist/generated/themes/SuggestionItemCustom.css.js.map +1 -1
  389. package/dist/generated/themes/Switch.css.d.ts +1 -1
  390. package/dist/generated/themes/Switch.css.js +1 -1
  391. package/dist/generated/themes/Switch.css.js.map +1 -1
  392. package/dist/generated/themes/TabContainer.css.d.ts +1 -1
  393. package/dist/generated/themes/TabContainer.css.js +1 -1
  394. package/dist/generated/themes/TabContainer.css.js.map +1 -1
  395. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  396. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  397. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  398. package/dist/generated/themes/TabInStrip.css.d.ts +1 -1
  399. package/dist/generated/themes/TabInStrip.css.js +1 -1
  400. package/dist/generated/themes/TabInStrip.css.js.map +1 -1
  401. package/dist/generated/themes/TabSemanticIcon.css.d.ts +1 -1
  402. package/dist/generated/themes/TabSemanticIcon.css.js +1 -1
  403. package/dist/generated/themes/TabSemanticIcon.css.js.map +1 -1
  404. package/dist/generated/themes/TabSeparatorInOverflow.css.d.ts +1 -1
  405. package/dist/generated/themes/TabSeparatorInOverflow.css.js +1 -1
  406. package/dist/generated/themes/TabSeparatorInOverflow.css.js.map +1 -1
  407. package/dist/generated/themes/Table.css.d.ts +1 -1
  408. package/dist/generated/themes/Table.css.js +1 -1
  409. package/dist/generated/themes/Table.css.js.map +1 -1
  410. package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
  411. package/dist/generated/themes/TableCellBase.css.js +1 -1
  412. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  413. package/dist/generated/themes/TableHeaderRow.css.d.ts +1 -1
  414. package/dist/generated/themes/TableHeaderRow.css.js +1 -1
  415. package/dist/generated/themes/TableHeaderRow.css.js.map +1 -1
  416. package/dist/generated/themes/TableRow.css.d.ts +1 -1
  417. package/dist/generated/themes/TableRow.css.js +1 -1
  418. package/dist/generated/themes/TableRow.css.js.map +1 -1
  419. package/dist/generated/themes/TableRowActionBase.css.d.ts +1 -1
  420. package/dist/generated/themes/TableRowActionBase.css.js +1 -1
  421. package/dist/generated/themes/TableRowActionBase.css.js.map +1 -1
  422. package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
  423. package/dist/generated/themes/TableRowBase.css.js +1 -1
  424. package/dist/generated/themes/TableRowBase.css.js.map +1 -1
  425. package/dist/generated/themes/Tag.css.d.ts +1 -1
  426. package/dist/generated/themes/Tag.css.js +1 -1
  427. package/dist/generated/themes/Tag.css.js.map +1 -1
  428. package/dist/generated/themes/Text.css.d.ts +1 -1
  429. package/dist/generated/themes/Text.css.js +1 -1
  430. package/dist/generated/themes/Text.css.js.map +1 -1
  431. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  432. package/dist/generated/themes/TextArea.css.js +1 -1
  433. package/dist/generated/themes/TextArea.css.js.map +1 -1
  434. package/dist/generated/themes/TimePicker.css.d.ts +1 -1
  435. package/dist/generated/themes/TimePicker.css.js +1 -1
  436. package/dist/generated/themes/TimePicker.css.js.map +1 -1
  437. package/dist/generated/themes/Toast.css.d.ts +1 -1
  438. package/dist/generated/themes/Toast.css.js +1 -1
  439. package/dist/generated/themes/Toast.css.js.map +1 -1
  440. package/dist/generated/themes/ToggleButton.css.d.ts +1 -1
  441. package/dist/generated/themes/ToggleButton.css.js +1 -1
  442. package/dist/generated/themes/ToggleButton.css.js.map +1 -1
  443. package/dist/generated/themes/Token.css.d.ts +1 -1
  444. package/dist/generated/themes/Token.css.js +1 -1
  445. package/dist/generated/themes/Token.css.js.map +1 -1
  446. package/dist/generated/themes/Tokenizer.css.d.ts +1 -1
  447. package/dist/generated/themes/Tokenizer.css.js +1 -1
  448. package/dist/generated/themes/Tokenizer.css.js.map +1 -1
  449. package/dist/generated/themes/TokenizerPopover.css.d.ts +1 -1
  450. package/dist/generated/themes/TokenizerPopover.css.js +1 -1
  451. package/dist/generated/themes/TokenizerPopover.css.js.map +1 -1
  452. package/dist/generated/themes/Toolbar.css.d.ts +1 -1
  453. package/dist/generated/themes/Toolbar.css.js +1 -1
  454. package/dist/generated/themes/Toolbar.css.js.map +1 -1
  455. package/dist/generated/themes/ToolbarPopover.css.d.ts +1 -1
  456. package/dist/generated/themes/ToolbarPopover.css.js +1 -1
  457. package/dist/generated/themes/ToolbarPopover.css.js.map +1 -1
  458. package/dist/generated/themes/TreeItem.css.d.ts +1 -1
  459. package/dist/generated/themes/TreeItem.css.js +1 -1
  460. package/dist/generated/themes/TreeItem.css.js.map +1 -1
  461. package/dist/generated/themes/ValueStateMessage.css.d.ts +1 -1
  462. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  463. package/dist/generated/themes/ValueStateMessage.css.js.map +1 -1
  464. package/dist/generated/themes/YearPicker.css.d.ts +1 -1
  465. package/dist/generated/themes/YearPicker.css.js +1 -1
  466. package/dist/generated/themes/YearPicker.css.js.map +1 -1
  467. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  468. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  469. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  470. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  471. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  472. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  473. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  474. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  475. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  476. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  477. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  478. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  479. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  480. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  481. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  482. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  483. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  484. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  485. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  486. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  487. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  488. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  489. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  490. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  491. package/dist/types/ExpandableTextTemplateParams.d.ts +13 -0
  492. package/dist/types/ExpandableTextTemplateParams.js +2 -0
  493. package/dist/types/ExpandableTextTemplateParams.js.map +1 -0
  494. package/dist/vscode.html-custom-data.json +31 -16
  495. package/dist/web-types.json +68 -34
  496. package/package.json +9 -9
  497. package/src/ButtonTemplate.tsx +0 -6
  498. package/src/ListItemStandardTemplate.tsx +55 -16
  499. package/src/MenuTemplate.tsx +1 -0
  500. package/src/TableTemplate.tsx +2 -1
  501. package/src/features/ListItemStandardExpandableTextTemplate.tsx +31 -0
  502. package/src/i18n/messagebundle.properties +3 -0
  503. package/src/themes/Breadcrumbs.css +1 -1
  504. package/src/themes/BusyIndicator.css +2 -2
  505. package/src/themes/ListItem.css +69 -4
  506. package/src/themes/Table.css +2 -2
  507. package/src/themes/TableHeaderRow.css +2 -0
  508. package/src/themes/TableRow.css +4 -0
  509. package/src/themes/TableRowBase.css +11 -2
  510. package/src/themes/base/BusyIndicator-parameters.css +1 -2
  511. package/src/themes/base/Table-parameters.css +1 -0
  512. package/src/themes/base/sizes-parameters.css +1 -1
  513. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +0 -1
  514. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +0 -1
  515. package/src/themes/sap_horizon_hcb/BusyIndicator-parameters.css +0 -1
  516. package/src/themes/sap_horizon_hcw/BusyIndicator-parameters.css +0 -1
  517. package/src/themes/sap_fiori_3_hcb/BusyIndicator-parameters.css +0 -5
  518. package/src/themes/sap_fiori_3_hcw/BusyIndicator-parameters.css +0 -5
package/dist/Button.d.ts CHANGED
@@ -247,9 +247,7 @@ declare class Button extends UI5Element implements IButton {
247
247
  get buttonTypeText(): string;
248
248
  get effectiveAccRole(): AriaRole;
249
249
  get tabIndexValue(): number | undefined;
250
- get showIconTooltip(): boolean;
251
250
  get ariaLabelText(): string | undefined;
252
- get ariaDescribedbyText(): "ui5-button-hiddenText-type" | undefined;
253
251
  get ariaDescriptionText(): string | undefined;
254
252
  get _isSubmit(): boolean;
255
253
  get _isReset(): boolean;
package/dist/Button.js CHANGED
@@ -24,7 +24,7 @@ import ButtonDesign from "./types/ButtonDesign.js";
24
24
  import ButtonType from "./types/ButtonType.js";
25
25
  import ButtonBadgeDesign from "./types/ButtonBadgeDesign.js";
26
26
  import ButtonTemplate from "./ButtonTemplate.js";
27
- import { BUTTON_ARIA_TYPE_ACCEPT, BUTTON_ARIA_TYPE_REJECT, BUTTON_ARIA_TYPE_EMPHASIZED } from "./generated/i18n/i18n-defaults.js";
27
+ import { BUTTON_ARIA_TYPE_ACCEPT, BUTTON_ARIA_TYPE_REJECT, BUTTON_ARIA_TYPE_EMPHASIZED, BUTTON_ARIA_TYPE_ATTENTION, } from "./generated/i18n/i18n-defaults.js";
28
28
  // Styles
29
29
  import buttonCss from "./generated/themes/Button.css.js";
30
30
  let isGlobalHandlerAttached = false;
@@ -192,7 +192,8 @@ let Button = Button_1 = class Button extends UI5Element {
192
192
  this.hasIcon = !!this.icon;
193
193
  this.hasEndIcon = !!this.endIcon;
194
194
  this.iconOnly = this.isIconOnly;
195
- this.buttonTitle = this.tooltip || await this.getDefaultTooltip();
195
+ const defaultTooltip = await this.getDefaultTooltip();
196
+ this.buttonTitle = this.iconOnly ? this.tooltip ?? defaultTooltip : this.tooltip;
196
197
  }
197
198
  _setBadgeOverlayStyle() {
198
199
  const needsOverflowVisible = this.badge.length && (this.badge[0].design === ButtonBadgeDesign.AttentionDot || this.badge[0].design === ButtonBadgeDesign.OverlayText);
@@ -284,6 +285,7 @@ let Button = Button_1 = class Button extends UI5Element {
284
285
  "Positive": BUTTON_ARIA_TYPE_ACCEPT,
285
286
  "Negative": BUTTON_ARIA_TYPE_REJECT,
286
287
  "Emphasized": BUTTON_ARIA_TYPE_EMPHASIZED,
288
+ "Attention": BUTTON_ARIA_TYPE_ATTENTION,
287
289
  };
288
290
  }
289
291
  getDefaultTooltip() {
@@ -308,17 +310,14 @@ let Button = Button_1 = class Button extends UI5Element {
308
310
  }
309
311
  return this.nonInteractive ? -1 : Number.parseInt(this.forcedTabIndex);
310
312
  }
311
- get showIconTooltip() {
312
- return getEnableDefaultTooltips() && this.iconOnly && !this.tooltip;
313
- }
314
313
  get ariaLabelText() {
315
314
  return getEffectiveAriaLabelText(this);
316
315
  }
317
- get ariaDescribedbyText() {
318
- return this.hasButtonType ? "ui5-button-hiddenText-type" : undefined;
319
- }
320
316
  get ariaDescriptionText() {
321
- return this.accessibleDescription === "" ? undefined : this.accessibleDescription;
317
+ const ariaDescribedByText = this.hasButtonType ? this.buttonTypeText : "";
318
+ const accessibleDescription = this.accessibleDescription || "";
319
+ const ariaDescriptionText = `${ariaDescribedByText} ${accessibleDescription}`.trim();
320
+ return ariaDescriptionText || undefined;
322
321
  }
323
322
  get _isSubmit() {
324
323
  return this.type === ButtonType.Submit || this.submits;
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../src/Button.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport {\n\tisSpace,\n\tisEnter,\n\tisEscape,\n\tisShift,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport type { AccessibilityAttributes, AriaRole } from \"@ui5/webcomponents-base\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { I18nText } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getIconAccessibleName } from \"@ui5/webcomponents-base/dist/asset-registries/Icons.js\";\n\nimport {\n\tisDesktop,\n\tisSafari,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport willShowContent from \"@ui5/webcomponents-base/dist/util/willShowContent.js\";\nimport { submitForm, resetForm } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport { getEnableDefaultTooltips } from \"@ui5/webcomponents-base/dist/config/Tooltips.js\";\nimport toLowercaseEnumValue from \"@ui5/webcomponents-base/dist/util/toLowercaseEnumValue.js\";\nimport ButtonDesign from \"./types/ButtonDesign.js\";\nimport ButtonType from \"./types/ButtonType.js\";\nimport ButtonBadgeDesign from \"./types/ButtonBadgeDesign.js\";\nimport type ButtonAccessibleRole from \"./types/ButtonAccessibleRole.js\";\nimport type ButtonBadge from \"./ButtonBadge.js\";\nimport ButtonTemplate from \"./ButtonTemplate.js\";\nimport { BUTTON_ARIA_TYPE_ACCEPT, BUTTON_ARIA_TYPE_REJECT, BUTTON_ARIA_TYPE_EMPHASIZED } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport buttonCss from \"./generated/themes/Button.css.js\";\n\n/**\n * Interface for components that may be used as a button inside numerous higher-order components\n * @public\n */\ninterface IButton extends HTMLElement, ITabbable {\n\tnonInteractive: boolean;\n}\n\nlet isGlobalHandlerAttached = false;\nlet activeButton: Button | null = null;\n\ntype ButtonAccessibilityAttributes = Pick<AccessibilityAttributes, \"expanded\" | \"hasPopup\" | \"controls\">;\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-button` component represents a simple push button.\n * It enables users to trigger actions by clicking or tapping the `ui5-button`, or by pressing\n * certain keyboard keys, such as Enter.\n *\n * ### Usage\n *\n * For the `ui5-button` UI, you can define text, icon, or both. You can also specify\n * whether the text or the icon is displayed first.\n *\n * You can choose from a set of predefined types that offer different\n * styling to correspond to the triggered action.\n *\n * You can set the `ui5-button` as enabled or disabled. An enabled\n * `ui5-button` can be pressed by clicking or tapping it. The button changes\n * its style to provide visual feedback to the user that it is pressed or hovered over with\n * the mouse cursor. A disabled `ui5-button` appears inactive and cannot be pressed.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Button.js\";`\n * @csspart button - Used to style the native button element\n * @csspart icon - Used to style the icon in the native button element\n * @csspart endIcon - Used to style the end icon in the native button element\n * @constructor\n * @extends UI5Element\n * @implements { IButton }\n * @public\n */\n@customElement({\n\ttag: \"ui5-button\",\n\tformAssociated: true,\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: ButtonTemplate,\n\tstyles: buttonCss,\n\tshadowRootOptions: { delegatesFocus: true },\n})\n/**\n * Fired whenever the active state of the component changes.\n * @private\n */\n@event(\"active-state-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\nclass Button extends UI5Element implements IButton {\n\teventDetails!: {\n\t\t\"active-state-change\": void,\n\t};\n\n\t/**\n\t * Defines the component design.\n\t * @default \"Default\"\n\t * @public\n\t */\n\t@property()\n\tdesign: `${ButtonDesign}` = \"Default\";\n\n\t/**\n\t * Defines whether the component is disabled.\n\t * A disabled component can't be pressed or\n\t * focused, and it is not in the tab chain.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Defines the icon, displayed as graphical element within the component.\n\t * The SAP-icons font provides numerous options.\n\t *\n\t * Example:\n\t * See all the available icons within the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ticon?: string;\n\n\t/**\n\t * Defines the icon, displayed as graphical element within the component after the button text.\n\t *\n\t * **Note:** It is highly recommended to use `endIcon` property only together with `icon` and/or `text` properties.\n\t * Usage of `endIcon` only should be avoided.\n\t *\n\t * The SAP-icons font provides numerous options.\n\t *\n\t * Example:\n\t * See all the available icons within the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tendIcon?: string;\n\n\t/**\n\t * When set to `true`, the component will\n\t * automatically submit the nearest HTML form element on `press`.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.`\n\t * @default false\n\t * @public\n\t * @deprecated Set the \"type\" property to \"Submit\" to achieve the same result. The \"submits\" property is ignored if \"type\" is set to any value other than \"Button\".\n\t */\n\t@property({ type: Boolean })\n\tsubmits = false;\n\n\t/**\n\t * Defines the tooltip of the component.\n\t *\n\t * **Note:** A tooltip attribute should be provided for icon-only buttons, in order to represent their exact meaning/function.\n\t * @default undefined\n\t * @public\n\t * @since 1.2.0\n\t */\n\t@property()\n\ttooltip?: string;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Receives id(or many ids) of the elements that label the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.1.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Defines the additional accessibility attributes that will be applied to the component.\n\t * The following fields are supported:\n\t *\n\t * - **expanded**: Indicates whether the button, or another grouping element it controls, is currently expanded or collapsed.\n\t * Accepts the following string values: `true` or `false`\n\t *\n\t * - **hasPopup**: Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by the button.\n\t * Accepts the following string values: `dialog`, `grid`, `listbox`, `menu` or `tree`.\n\t *\n\t * - **controls**: Identifies the element (or elements) whose contents or presence are controlled by the button element.\n\t * Accepts a lowercase string value.\n\t *\n\t * @public\n\t * @since 1.2.0\n\t * @default {}\n\t */\n\t@property({ type: Object })\n\taccessibilityAttributes: ButtonAccessibilityAttributes = {};\n\n\t/**\n\t * Defines the accessible description of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.5.0\n\t */\n\t@property()\n\taccessibleDescription?: string;\n\n\t/**\n\t * Defines whether the button has special form-related functionality.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.\n\t * @default \"Button\"\n\t * @public\n\t * @since 1.15.0\n\t */\n\t@property()\n\ttype: `${ButtonType}` = \"Button\";\n\n\t/**\n\t * Describes the accessibility role of the button.\n\t *\n\t * **Note:** Use <code>ButtonAccessibleRole.Link</code> role only with a press handler, which performs a navigation. In all other scenarios the default button semantics are recommended.\n\t *\n\t * @default \"Button\"\n\t * @public\n\t * @since 1.23\n\t */\n\t@property()\n\taccessibleRole: `${ButtonAccessibleRole}` = \"Button\";\n\n\t/**\n\t * Used to switch the active state (pressed or not) of the component.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tactive = false;\n\n\t/**\n\t * Defines if a content has been added to the default slot\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\ticonOnly = false;\n\n\t/**\n\t * Indicates if the elements has a slotted icon\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\thasIcon = false;\n\n\t/**\n\t * Indicates if the elements has a slotted end icon\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\thasEndIcon = false;\n\n\t/**\n\t * Indicates if the element is focusable\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tnonInteractive = false;\n\n\t/**\n\t * The current title of the button, either the tooltip property or the icons tooltip. The tooltip property with higher prio.\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\tbuttonTitle?: string;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_iconSettings: object = {};\n\n\t/**\n\t * Defines the tabIndex of the component.\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\tforcedTabIndex = \"0\";\n\n\t/**\n\t * @since 1.0.0-rc.13\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_isTouch = false;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_cancelAction = false;\n\n\t/**\n\t * Defines the text of the component.\n\t *\n\t * **Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\n\t * @public\n\t */\n\t@slot({ type: Node, \"default\": true })\n\ttext!: Array<Node>;\n\n\t/**\n\t * Adds a badge to the button.\n\t * @since 2.7.0\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tbadge!: Array<ButtonBadge>;\n\n\t_deactivate: () => void;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._deactivate = () => {\n\t\t\tif (activeButton) {\n\t\t\t\tactiveButton._setActiveState(false);\n\t\t\t}\n\t\t};\n\n\t\tif (!isGlobalHandlerAttached) {\n\t\t\tdocument.addEventListener(\"mouseup\", this._deactivate);\n\n\t\t\tisGlobalHandlerAttached = true;\n\t\t}\n\t}\n\n\t_ontouchstart() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._setActiveState(true);\n\t}\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\t}\n\n\tasync onBeforeRendering() {\n\t\tthis._setBadgeOverlayStyle();\n\n\t\tthis.hasIcon = !!this.icon;\n\t\tthis.hasEndIcon = !!this.endIcon;\n\t\tthis.iconOnly = this.isIconOnly;\n\n\t\tthis.buttonTitle = this.tooltip || await this.getDefaultTooltip();\n\t}\n\n\t_setBadgeOverlayStyle() {\n\t\tconst needsOverflowVisible = this.badge.length && (this.badge[0].design === ButtonBadgeDesign.AttentionDot || this.badge[0].design === ButtonBadgeDesign.OverlayText);\n\n\t\tif (needsOverflowVisible) {\n\t\t\tthis._internals.states.add(\"has-overlay-badge\");\n\t\t} else {\n\t\t\tthis._internals.states.delete(\"has-overlay-badge\");\n\t\t}\n\t}\n\n\t_onclick() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isSubmit) {\n\t\t\tsubmitForm(this);\n\t\t}\n\n\t\tif (this._isReset) {\n\t\t\tresetForm(this);\n\t\t}\n\n\t\tif (isSafari()) {\n\t\t\tthis.getDomRef()?.focus();\n\t\t}\n\t}\n\n\t_onmousedown() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._setActiveState(true);\n\t\tactiveButton = this; // eslint-disable-line\n\t}\n\n\t_ontouchend(e: TouchEvent) {\n\t\tif (this.disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tif (this.active) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\n\t\tif (activeButton) {\n\t\t\tactiveButton._setActiveState(false);\n\t\t}\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tthis._cancelAction = isShift(e) || isEscape(e);\n\n\t\tif (isSpace(e) || isEnter(e)) {\n\t\t\tthis._setActiveState(true);\n\t\t} else if (this._cancelAction) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (this._cancelAction) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isSpace(e) || isEnter(e)) {\n\t\t\tif (this.active) {\n\t\t\t\tthis._setActiveState(false);\n\t\t\t}\n\t\t}\n\t}\n\n\t_onfocusout() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.active) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\t}\n\n\t_setActiveState(active: boolean) {\n\t\tconst eventPrevented = !this.fireDecoratorEvent(\"active-state-change\");\n\n\t\tif (eventPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active = active;\n\t}\n\n\tget _hasPopup() {\n\t\treturn this.accessibilityAttributes.hasPopup;\n\t}\n\n\tget hasButtonType() {\n\t\treturn this.design !== ButtonDesign.Default && this.design !== ButtonDesign.Transparent;\n\t}\n\n\tget isIconOnly() {\n\t\treturn !willShowContent(this.text);\n\t}\n\n\tstatic typeTextMappings(): Record<string, I18nText> {\n\t\treturn {\n\t\t\t\"Positive\": BUTTON_ARIA_TYPE_ACCEPT,\n\t\t\t\"Negative\": BUTTON_ARIA_TYPE_REJECT,\n\t\t\t\"Emphasized\": BUTTON_ARIA_TYPE_EMPHASIZED,\n\t\t};\n\t}\n\n\tgetDefaultTooltip() {\n\t\tif (!getEnableDefaultTooltips()) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn getIconAccessibleName(this.icon);\n\t}\n\n\tget buttonTypeText() {\n\t\treturn Button.i18nBundle.getText(Button.typeTextMappings()[this.design]);\n\t}\n\n\tget effectiveAccRole(): AriaRole {\n\t\treturn toLowercaseEnumValue(this.accessibleRole);\n\t}\n\n\tget tabIndexValue() {\n\t\tif (this.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tabindex = this.getAttribute(\"tabindex\");\n\n\t\tif (tabindex) {\n\t\t\treturn Number.parseInt(tabindex);\n\t\t}\n\n\t\treturn this.nonInteractive ? -1 : Number.parseInt(this.forcedTabIndex);\n\t}\n\n\tget showIconTooltip() {\n\t\treturn getEnableDefaultTooltips() && this.iconOnly && !this.tooltip;\n\t}\n\n\tget ariaLabelText() {\n\t\treturn getEffectiveAriaLabelText(this);\n\t}\n\n\tget ariaDescribedbyText() {\n\t\treturn this.hasButtonType ? \"ui5-button-hiddenText-type\" : undefined;\n\t}\n\n\tget ariaDescriptionText() {\n\t\treturn this.accessibleDescription === \"\" ? undefined : this.accessibleDescription;\n\t}\n\n\tget _isSubmit() {\n\t\treturn this.type === ButtonType.Submit || this.submits;\n\t}\n\n\tget _isReset() {\n\t\treturn this.type === ButtonType.Reset;\n\t}\n\n\tget shouldRenderBadge() {\n\t\treturn !!this.badge.length && (!!this.badge[0].text.length || this.badge[0].design === ButtonBadgeDesign.AttentionDot);\n\t}\n}\n\nButton.define();\n\nexport default Button;\nexport type {\n\tButtonAccessibilityAttributes,\n\tIButton,\n};\n"]}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../src/Button.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport {\n\tisSpace,\n\tisEnter,\n\tisEscape,\n\tisShift,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport type { AccessibilityAttributes, AriaRole } from \"@ui5/webcomponents-base\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { I18nText } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getIconAccessibleName } from \"@ui5/webcomponents-base/dist/asset-registries/Icons.js\";\n\nimport {\n\tisDesktop,\n\tisSafari,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport willShowContent from \"@ui5/webcomponents-base/dist/util/willShowContent.js\";\nimport { submitForm, resetForm } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport { getEnableDefaultTooltips } from \"@ui5/webcomponents-base/dist/config/Tooltips.js\";\nimport toLowercaseEnumValue from \"@ui5/webcomponents-base/dist/util/toLowercaseEnumValue.js\";\nimport ButtonDesign from \"./types/ButtonDesign.js\";\nimport ButtonType from \"./types/ButtonType.js\";\nimport ButtonBadgeDesign from \"./types/ButtonBadgeDesign.js\";\nimport type ButtonAccessibleRole from \"./types/ButtonAccessibleRole.js\";\nimport type ButtonBadge from \"./ButtonBadge.js\";\nimport ButtonTemplate from \"./ButtonTemplate.js\";\nimport {\n\tBUTTON_ARIA_TYPE_ACCEPT,\n\tBUTTON_ARIA_TYPE_REJECT,\n\tBUTTON_ARIA_TYPE_EMPHASIZED,\n\tBUTTON_ARIA_TYPE_ATTENTION,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport buttonCss from \"./generated/themes/Button.css.js\";\n\n/**\n * Interface for components that may be used as a button inside numerous higher-order components\n * @public\n */\ninterface IButton extends HTMLElement, ITabbable {\n\tnonInteractive: boolean;\n}\n\nlet isGlobalHandlerAttached = false;\nlet activeButton: Button | null = null;\n\ntype ButtonAccessibilityAttributes = Pick<AccessibilityAttributes, \"expanded\" | \"hasPopup\" | \"controls\">;\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-button` component represents a simple push button.\n * It enables users to trigger actions by clicking or tapping the `ui5-button`, or by pressing\n * certain keyboard keys, such as Enter.\n *\n * ### Usage\n *\n * For the `ui5-button` UI, you can define text, icon, or both. You can also specify\n * whether the text or the icon is displayed first.\n *\n * You can choose from a set of predefined types that offer different\n * styling to correspond to the triggered action.\n *\n * You can set the `ui5-button` as enabled or disabled. An enabled\n * `ui5-button` can be pressed by clicking or tapping it. The button changes\n * its style to provide visual feedback to the user that it is pressed or hovered over with\n * the mouse cursor. A disabled `ui5-button` appears inactive and cannot be pressed.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Button.js\";`\n * @csspart button - Used to style the native button element\n * @csspart icon - Used to style the icon in the native button element\n * @csspart endIcon - Used to style the end icon in the native button element\n * @constructor\n * @extends UI5Element\n * @implements { IButton }\n * @public\n */\n@customElement({\n\ttag: \"ui5-button\",\n\tformAssociated: true,\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: ButtonTemplate,\n\tstyles: buttonCss,\n\tshadowRootOptions: { delegatesFocus: true },\n})\n/**\n * Fired whenever the active state of the component changes.\n * @private\n */\n@event(\"active-state-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\nclass Button extends UI5Element implements IButton {\n\teventDetails!: {\n\t\t\"active-state-change\": void,\n\t};\n\n\t/**\n\t * Defines the component design.\n\t * @default \"Default\"\n\t * @public\n\t */\n\t@property()\n\tdesign: `${ButtonDesign}` = \"Default\";\n\n\t/**\n\t * Defines whether the component is disabled.\n\t * A disabled component can't be pressed or\n\t * focused, and it is not in the tab chain.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Defines the icon, displayed as graphical element within the component.\n\t * The SAP-icons font provides numerous options.\n\t *\n\t * Example:\n\t * See all the available icons within the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ticon?: string;\n\n\t/**\n\t * Defines the icon, displayed as graphical element within the component after the button text.\n\t *\n\t * **Note:** It is highly recommended to use `endIcon` property only together with `icon` and/or `text` properties.\n\t * Usage of `endIcon` only should be avoided.\n\t *\n\t * The SAP-icons font provides numerous options.\n\t *\n\t * Example:\n\t * See all the available icons within the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tendIcon?: string;\n\n\t/**\n\t * When set to `true`, the component will\n\t * automatically submit the nearest HTML form element on `press`.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.`\n\t * @default false\n\t * @public\n\t * @deprecated Set the \"type\" property to \"Submit\" to achieve the same result. The \"submits\" property is ignored if \"type\" is set to any value other than \"Button\".\n\t */\n\t@property({ type: Boolean })\n\tsubmits = false;\n\n\t/**\n\t * Defines the tooltip of the component.\n\t *\n\t * **Note:** A tooltip attribute should be provided for icon-only buttons, in order to represent their exact meaning/function.\n\t * @default undefined\n\t * @public\n\t * @since 1.2.0\n\t */\n\t@property()\n\ttooltip?: string;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Receives id(or many ids) of the elements that label the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.1.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Defines the additional accessibility attributes that will be applied to the component.\n\t * The following fields are supported:\n\t *\n\t * - **expanded**: Indicates whether the button, or another grouping element it controls, is currently expanded or collapsed.\n\t * Accepts the following string values: `true` or `false`\n\t *\n\t * - **hasPopup**: Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by the button.\n\t * Accepts the following string values: `dialog`, `grid`, `listbox`, `menu` or `tree`.\n\t *\n\t * - **controls**: Identifies the element (or elements) whose contents or presence are controlled by the button element.\n\t * Accepts a lowercase string value.\n\t *\n\t * @public\n\t * @since 1.2.0\n\t * @default {}\n\t */\n\t@property({ type: Object })\n\taccessibilityAttributes: ButtonAccessibilityAttributes = {};\n\n\t/**\n\t * Defines the accessible description of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.5.0\n\t */\n\t@property()\n\taccessibleDescription?: string;\n\n\t/**\n\t * Defines whether the button has special form-related functionality.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.\n\t * @default \"Button\"\n\t * @public\n\t * @since 1.15.0\n\t */\n\t@property()\n\ttype: `${ButtonType}` = \"Button\";\n\n\t/**\n\t * Describes the accessibility role of the button.\n\t *\n\t * **Note:** Use <code>ButtonAccessibleRole.Link</code> role only with a press handler, which performs a navigation. In all other scenarios the default button semantics are recommended.\n\t *\n\t * @default \"Button\"\n\t * @public\n\t * @since 1.23\n\t */\n\t@property()\n\taccessibleRole: `${ButtonAccessibleRole}` = \"Button\";\n\n\t/**\n\t * Used to switch the active state (pressed or not) of the component.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tactive = false;\n\n\t/**\n\t * Defines if a content has been added to the default slot\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\ticonOnly = false;\n\n\t/**\n\t * Indicates if the elements has a slotted icon\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\thasIcon = false;\n\n\t/**\n\t * Indicates if the elements has a slotted end icon\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\thasEndIcon = false;\n\n\t/**\n\t * Indicates if the element is focusable\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tnonInteractive = false;\n\n\t/**\n\t * The current title of the button, either the tooltip property or the icons tooltip. The tooltip property with higher prio.\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\tbuttonTitle?: string;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_iconSettings: object = {};\n\n\t/**\n\t * Defines the tabIndex of the component.\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\tforcedTabIndex = \"0\";\n\n\t/**\n\t * @since 1.0.0-rc.13\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_isTouch = false;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_cancelAction = false;\n\n\t/**\n\t * Defines the text of the component.\n\t *\n\t * **Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\n\t * @public\n\t */\n\t@slot({ type: Node, \"default\": true })\n\ttext!: Array<Node>;\n\n\t/**\n\t * Adds a badge to the button.\n\t * @since 2.7.0\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tbadge!: Array<ButtonBadge>;\n\n\t_deactivate: () => void;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._deactivate = () => {\n\t\t\tif (activeButton) {\n\t\t\t\tactiveButton._setActiveState(false);\n\t\t\t}\n\t\t};\n\n\t\tif (!isGlobalHandlerAttached) {\n\t\t\tdocument.addEventListener(\"mouseup\", this._deactivate);\n\n\t\t\tisGlobalHandlerAttached = true;\n\t\t}\n\t}\n\n\t_ontouchstart() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._setActiveState(true);\n\t}\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\t}\n\n\tasync onBeforeRendering() {\n\t\tthis._setBadgeOverlayStyle();\n\n\t\tthis.hasIcon = !!this.icon;\n\t\tthis.hasEndIcon = !!this.endIcon;\n\t\tthis.iconOnly = this.isIconOnly;\n\n\t\tconst defaultTooltip = await this.getDefaultTooltip();\n\t\tthis.buttonTitle = this.iconOnly ? this.tooltip ?? defaultTooltip : this.tooltip;\n\t}\n\n\t_setBadgeOverlayStyle() {\n\t\tconst needsOverflowVisible = this.badge.length && (this.badge[0].design === ButtonBadgeDesign.AttentionDot || this.badge[0].design === ButtonBadgeDesign.OverlayText);\n\n\t\tif (needsOverflowVisible) {\n\t\t\tthis._internals.states.add(\"has-overlay-badge\");\n\t\t} else {\n\t\t\tthis._internals.states.delete(\"has-overlay-badge\");\n\t\t}\n\t}\n\n\t_onclick() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isSubmit) {\n\t\t\tsubmitForm(this);\n\t\t}\n\n\t\tif (this._isReset) {\n\t\t\tresetForm(this);\n\t\t}\n\n\t\tif (isSafari()) {\n\t\t\tthis.getDomRef()?.focus();\n\t\t}\n\t}\n\n\t_onmousedown() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._setActiveState(true);\n\t\tactiveButton = this; // eslint-disable-line\n\t}\n\n\t_ontouchend(e: TouchEvent) {\n\t\tif (this.disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tif (this.active) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\n\t\tif (activeButton) {\n\t\t\tactiveButton._setActiveState(false);\n\t\t}\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tthis._cancelAction = isShift(e) || isEscape(e);\n\n\t\tif (isSpace(e) || isEnter(e)) {\n\t\t\tthis._setActiveState(true);\n\t\t} else if (this._cancelAction) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (this._cancelAction) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isSpace(e) || isEnter(e)) {\n\t\t\tif (this.active) {\n\t\t\t\tthis._setActiveState(false);\n\t\t\t}\n\t\t}\n\t}\n\n\t_onfocusout() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.active) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\t}\n\n\t_setActiveState(active: boolean) {\n\t\tconst eventPrevented = !this.fireDecoratorEvent(\"active-state-change\");\n\n\t\tif (eventPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active = active;\n\t}\n\n\tget _hasPopup() {\n\t\treturn this.accessibilityAttributes.hasPopup;\n\t}\n\n\tget hasButtonType() {\n\t\treturn this.design !== ButtonDesign.Default && this.design !== ButtonDesign.Transparent;\n\t}\n\n\tget isIconOnly() {\n\t\treturn !willShowContent(this.text);\n\t}\n\n\tstatic typeTextMappings(): Record<string, I18nText> {\n\t\treturn {\n\t\t\t\"Positive\": BUTTON_ARIA_TYPE_ACCEPT,\n\t\t\t\"Negative\": BUTTON_ARIA_TYPE_REJECT,\n\t\t\t\"Emphasized\": BUTTON_ARIA_TYPE_EMPHASIZED,\n\t\t\t\"Attention\": BUTTON_ARIA_TYPE_ATTENTION,\n\t\t};\n\t}\n\n\tgetDefaultTooltip() {\n\t\tif (!getEnableDefaultTooltips()) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn getIconAccessibleName(this.icon);\n\t}\n\n\tget buttonTypeText() {\n\t\treturn Button.i18nBundle.getText(Button.typeTextMappings()[this.design]);\n\t}\n\n\tget effectiveAccRole(): AriaRole {\n\t\treturn toLowercaseEnumValue(this.accessibleRole);\n\t}\n\n\tget tabIndexValue() {\n\t\tif (this.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tabindex = this.getAttribute(\"tabindex\");\n\n\t\tif (tabindex) {\n\t\t\treturn Number.parseInt(tabindex);\n\t\t}\n\n\t\treturn this.nonInteractive ? -1 : Number.parseInt(this.forcedTabIndex);\n\t}\n\n\tget ariaLabelText() {\n\t\treturn getEffectiveAriaLabelText(this);\n\t}\n\n\tget ariaDescriptionText() {\n\t\tconst ariaDescribedByText = this.hasButtonType ? this.buttonTypeText : \"\";\n\t\tconst accessibleDescription = this.accessibleDescription || \"\";\n\t\tconst ariaDescriptionText = `${ariaDescribedByText} ${accessibleDescription}`.trim();\n\n\t\treturn ariaDescriptionText || undefined;\n\t}\n\n\tget _isSubmit() {\n\t\treturn this.type === ButtonType.Submit || this.submits;\n\t}\n\n\tget _isReset() {\n\t\treturn this.type === ButtonType.Reset;\n\t}\n\n\tget shouldRenderBadge() {\n\t\treturn !!this.badge.length && (!!this.badge[0].text.length || this.badge[0].design === ButtonBadgeDesign.AttentionDot);\n\t}\n}\n\nButton.define();\n\nexport default Button;\nexport type {\n\tButtonAccessibilityAttributes,\n\tIButton,\n};\n"]}
@@ -6,10 +6,9 @@ export default function ButtonTemplate(injectedProps) {
6
6
  "ui5-button-badge-placement-end": this.badge[0]?.design === "InlineText",
7
7
  "ui5-button-badge-placement-end-top": this.badge[0]?.design === "OverlayText",
8
8
  "ui5-button-badge-dot": this.badge[0]?.design === "AttentionDot",
9
- }, disabled: this.disabled, "data-sap-focus-ref": true, "aria-pressed": injectedProps?.ariaPressed, "aria-valuemin": injectedProps?.ariaValueMin, "aria-valuemax": injectedProps?.ariaValueMax, "aria-valuenow": injectedProps?.ariaValueNow, "aria-valuetext": injectedProps?.ariaValueText, onFocusOut: this._onfocusout, onClick: this._onclick, onMouseDown: this._onmousedown, onKeyDown: this._onkeydown, onKeyUp: this._onkeyup, onTouchStart: this._ontouchstart, onTouchEnd: this._ontouchend, tabindex: this.tabIndexValue, "aria-expanded": this.accessibilityAttributes.expanded, "aria-controls": this.accessibilityAttributes.controls, "aria-haspopup": this._hasPopup, "aria-label": this.ariaLabelText, "aria-describedby": this.ariaDescribedbyText, "aria-description": this.ariaDescriptionText, title: this.buttonTitle, part: "button", role: this.effectiveAccRole, children: [this.icon &&
10
- _jsx(Icon, { class: "ui5-button-icon", name: this.icon, mode: "Decorative", part: "icon", showTooltip: this.showIconTooltip }), _jsx("span", { id: `${this._id}-content`, class: "ui5-button-text", children: _jsx("bdi", { children: _jsx("slot", {}) }) }), this.endIcon &&
11
- _jsx(Icon, { class: "ui5-button-end-icon", name: this.endIcon, mode: "Decorative", part: "endIcon" }), this.hasButtonType &&
12
- _jsx("span", { id: "ui5-button-hiddenText-type", "aria-hidden": "true", class: "ui5-hidden-text", children: this.buttonTypeText }), this.shouldRenderBadge &&
9
+ }, disabled: this.disabled, "data-sap-focus-ref": true, "aria-pressed": injectedProps?.ariaPressed, "aria-valuemin": injectedProps?.ariaValueMin, "aria-valuemax": injectedProps?.ariaValueMax, "aria-valuenow": injectedProps?.ariaValueNow, "aria-valuetext": injectedProps?.ariaValueText, onFocusOut: this._onfocusout, onClick: this._onclick, onMouseDown: this._onmousedown, onKeyDown: this._onkeydown, onKeyUp: this._onkeyup, onTouchStart: this._ontouchstart, onTouchEnd: this._ontouchend, tabindex: this.tabIndexValue, "aria-expanded": this.accessibilityAttributes.expanded, "aria-controls": this.accessibilityAttributes.controls, "aria-haspopup": this._hasPopup, "aria-label": this.ariaLabelText, "aria-description": this.ariaDescriptionText, title: this.buttonTitle, part: "button", role: this.effectiveAccRole, children: [this.icon &&
10
+ _jsx(Icon, { class: "ui5-button-icon", name: this.icon, mode: "Decorative", part: "icon" }), _jsx("span", { id: `${this._id}-content`, class: "ui5-button-text", children: _jsx("bdi", { children: _jsx("slot", {}) }) }), this.endIcon &&
11
+ _jsx(Icon, { class: "ui5-button-end-icon", name: this.endIcon, mode: "Decorative", part: "endIcon" }), this.shouldRenderBadge &&
13
12
  _jsx("slot", { name: "badge" })] }) }));
14
13
  }
15
14
  //# sourceMappingURL=ButtonTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonTemplate.js","sourceRoot":"","sources":["../src/ButtonTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,OAAO,UAAU,cAAc,CAAe,aAMpD;IACA,OAAO,CAAC,4BACP,kBACC,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE;gBACN,iBAAiB,EAAE,IAAI;gBACvB,gCAAgC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,YAAY;gBACxE,oCAAoC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,aAAa;gBAC7E,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,cAAc;aAChE,EACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,8CAET,aAAa,EAAE,WAAW,mBACzB,aAAa,EAAE,YAAY,mBAC3B,aAAa,EAAE,YAAY,mBAC3B,aAAa,EAAE,YAAY,oBAC1B,aAAa,EAAE,aAAa,EAC5C,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,WAAW,EAAE,IAAI,CAAC,YAAY,EAC9B,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,QAAQ,EAAE,IAAI,CAAC,aAAa,mBACb,IAAI,CAAC,uBAAuB,CAAC,QAAQ,mBACrC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,mBACrC,IAAI,CAAC,SAAS,gBACjB,IAAI,CAAC,aAAa,sBACZ,IAAI,CAAC,mBAAmB,sBACxB,IAAI,CAAC,mBAAmB,EAC1C,KAAK,EAAE,IAAI,CAAC,WAAW,EACvB,IAAI,EAAC,QAAQ,EACb,IAAI,EAAE,IAAI,CAAC,gBAAgB,aAEzB,IAAI,CAAC,IAAI;oBACV,KAAC,IAAI,IACJ,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAC,YAAY,EACjB,IAAI,EAAC,MAAM,EACX,WAAW,EAAE,IAAI,CAAC,eAAe,GAChC,EAGH,eAAM,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,EAAE,KAAK,EAAC,iBAAiB,YACvD,wBACC,gBAAa,GACR,GACA,EAEN,IAAI,CAAC,OAAO;oBACZ,KAAC,IAAI,IACJ,KAAK,EAAC,qBAAqB,EAC3B,IAAI,EAAE,IAAI,CAAC,OAAO,EAClB,IAAI,EAAC,YAAY,EACjB,IAAI,EAAC,SAAS,GACb,EAGF,IAAI,CAAC,aAAa;oBAClB,eAAM,EAAE,EAAC,4BAA4B,iBAAa,MAAM,EAAC,KAAK,EAAC,iBAAiB,YAAE,IAAI,CAAC,cAAc,GAAQ,EAG7G,IAAI,CAAC,iBAAiB;oBACtB,eAAM,IAAI,EAAC,OAAO,GAAE,IAEb,GACP,CAAC,CAAC;AACN,CAAC","sourcesContent":["import type Button from \"./Button.js\";\nimport Icon from \"./Icon.js\";\n\nexport default function ButtonTemplate(this: Button, injectedProps?: {\n\t\tariaPressed?: boolean,\n\t\tariaValueMax?: number,\n\t\tariaValueMin?: number,\n\t\tariaValueNow?: number,\n\t\tariaValueText?: string,\n}) {\n\treturn (<>\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass={{\n\t\t\t\t\"ui5-button-root\": true,\n\t\t\t\t\"ui5-button-badge-placement-end\": this.badge[0]?.design === \"InlineText\",\n\t\t\t\t\"ui5-button-badge-placement-end-top\": this.badge[0]?.design === \"OverlayText\",\n\t\t\t\t\"ui5-button-badge-dot\": this.badge[0]?.design === \"AttentionDot\",\n\t\t\t}}\n\t\t\tdisabled={this.disabled}\n\t\t\tdata-sap-focus-ref\n\t\t\taria-pressed={injectedProps?.ariaPressed}\n\t\t\taria-valuemin={injectedProps?.ariaValueMin}\n\t\t\taria-valuemax={injectedProps?.ariaValueMax}\n\t\t\taria-valuenow={injectedProps?.ariaValueNow}\n\t\t\taria-valuetext={injectedProps?.ariaValueText}\n\t\t\tonFocusOut={this._onfocusout}\n\t\t\tonClick={this._onclick}\n\t\t\tonMouseDown={this._onmousedown}\n\t\t\tonKeyDown={this._onkeydown}\n\t\t\tonKeyUp={this._onkeyup}\n\t\t\tonTouchStart={this._ontouchstart}\n\t\t\tonTouchEnd={this._ontouchend}\n\t\t\ttabindex={this.tabIndexValue}\n\t\t\taria-expanded={this.accessibilityAttributes.expanded}\n\t\t\taria-controls={this.accessibilityAttributes.controls}\n\t\t\taria-haspopup={this._hasPopup}\n\t\t\taria-label={this.ariaLabelText}\n\t\t\taria-describedby={this.ariaDescribedbyText}\n\t\t\taria-description={this.ariaDescriptionText}\n\t\t\ttitle={this.buttonTitle}\n\t\t\tpart=\"button\"\n\t\t\trole={this.effectiveAccRole}\n\t\t>\n\t\t\t{ this.icon &&\n\t\t\t\t<Icon\n\t\t\t\t\tclass=\"ui5-button-icon\"\n\t\t\t\t\tname={this.icon}\n\t\t\t\t\tmode=\"Decorative\"\n\t\t\t\t\tpart=\"icon\"\n\t\t\t\t\tshowTooltip={this.showIconTooltip}\n\t\t\t\t/>\n\t\t\t}\n\n\t\t\t<span id={`${this._id}-content`} class=\"ui5-button-text\">\n\t\t\t\t<bdi>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</bdi>\n\t\t\t</span>\n\n\t\t\t{this.endIcon &&\n\t\t\t\t<Icon\n\t\t\t\t\tclass=\"ui5-button-end-icon\"\n\t\t\t\t\tname={this.endIcon}\n\t\t\t\t\tmode=\"Decorative\"\n\t\t\t\t\tpart=\"endIcon\"\n\t\t\t\t/>\n\t\t\t}\n\n\t\t\t{this.hasButtonType &&\n\t\t\t\t<span id=\"ui5-button-hiddenText-type\" aria-hidden=\"true\" class=\"ui5-hidden-text\">{this.buttonTypeText}</span>\n\t\t\t}\n\n\t\t\t{this.shouldRenderBadge &&\n\t\t\t\t<slot name=\"badge\"/>\n\t\t\t}\n\t\t</button>\n\t</>);\n}\n"]}
1
+ {"version":3,"file":"ButtonTemplate.js","sourceRoot":"","sources":["../src/ButtonTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,OAAO,UAAU,cAAc,CAAe,aAMpD;IACA,OAAO,CAAC,4BACP,kBACC,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE;gBACN,iBAAiB,EAAE,IAAI;gBACvB,gCAAgC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,YAAY;gBACxE,oCAAoC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,aAAa;gBAC7E,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,cAAc;aAChE,EACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,8CAET,aAAa,EAAE,WAAW,mBACzB,aAAa,EAAE,YAAY,mBAC3B,aAAa,EAAE,YAAY,mBAC3B,aAAa,EAAE,YAAY,oBAC1B,aAAa,EAAE,aAAa,EAC5C,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,WAAW,EAAE,IAAI,CAAC,YAAY,EAC9B,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,QAAQ,EAAE,IAAI,CAAC,aAAa,mBACb,IAAI,CAAC,uBAAuB,CAAC,QAAQ,mBACrC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,mBACrC,IAAI,CAAC,SAAS,gBACjB,IAAI,CAAC,aAAa,sBACZ,IAAI,CAAC,mBAAmB,EAC1C,KAAK,EAAE,IAAI,CAAC,WAAW,EACvB,IAAI,EAAC,QAAQ,EACb,IAAI,EAAE,IAAI,CAAC,gBAAgB,aAEzB,IAAI,CAAC,IAAI;oBACV,KAAC,IAAI,IACJ,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAC,YAAY,EACjB,IAAI,EAAC,MAAM,GACV,EAGH,eAAM,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,EAAE,KAAK,EAAC,iBAAiB,YACvD,wBACC,gBAAa,GACR,GACA,EAEN,IAAI,CAAC,OAAO;oBACZ,KAAC,IAAI,IACJ,KAAK,EAAC,qBAAqB,EAC3B,IAAI,EAAE,IAAI,CAAC,OAAO,EAClB,IAAI,EAAC,YAAY,EACjB,IAAI,EAAC,SAAS,GACb,EAGF,IAAI,CAAC,iBAAiB;oBACtB,eAAM,IAAI,EAAC,OAAO,GAAE,IAEb,GACP,CAAC,CAAC;AACN,CAAC","sourcesContent":["import type Button from \"./Button.js\";\nimport Icon from \"./Icon.js\";\n\nexport default function ButtonTemplate(this: Button, injectedProps?: {\n\t\tariaPressed?: boolean,\n\t\tariaValueMax?: number,\n\t\tariaValueMin?: number,\n\t\tariaValueNow?: number,\n\t\tariaValueText?: string,\n}) {\n\treturn (<>\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass={{\n\t\t\t\t\"ui5-button-root\": true,\n\t\t\t\t\"ui5-button-badge-placement-end\": this.badge[0]?.design === \"InlineText\",\n\t\t\t\t\"ui5-button-badge-placement-end-top\": this.badge[0]?.design === \"OverlayText\",\n\t\t\t\t\"ui5-button-badge-dot\": this.badge[0]?.design === \"AttentionDot\",\n\t\t\t}}\n\t\t\tdisabled={this.disabled}\n\t\t\tdata-sap-focus-ref\n\t\t\taria-pressed={injectedProps?.ariaPressed}\n\t\t\taria-valuemin={injectedProps?.ariaValueMin}\n\t\t\taria-valuemax={injectedProps?.ariaValueMax}\n\t\t\taria-valuenow={injectedProps?.ariaValueNow}\n\t\t\taria-valuetext={injectedProps?.ariaValueText}\n\t\t\tonFocusOut={this._onfocusout}\n\t\t\tonClick={this._onclick}\n\t\t\tonMouseDown={this._onmousedown}\n\t\t\tonKeyDown={this._onkeydown}\n\t\t\tonKeyUp={this._onkeyup}\n\t\t\tonTouchStart={this._ontouchstart}\n\t\t\tonTouchEnd={this._ontouchend}\n\t\t\ttabindex={this.tabIndexValue}\n\t\t\taria-expanded={this.accessibilityAttributes.expanded}\n\t\t\taria-controls={this.accessibilityAttributes.controls}\n\t\t\taria-haspopup={this._hasPopup}\n\t\t\taria-label={this.ariaLabelText}\n\t\t\taria-description={this.ariaDescriptionText}\n\t\t\ttitle={this.buttonTitle}\n\t\t\tpart=\"button\"\n\t\t\trole={this.effectiveAccRole}\n\t\t>\n\t\t\t{ this.icon &&\n\t\t\t\t<Icon\n\t\t\t\t\tclass=\"ui5-button-icon\"\n\t\t\t\t\tname={this.icon}\n\t\t\t\t\tmode=\"Decorative\"\n\t\t\t\t\tpart=\"icon\"\n\t\t\t\t/>\n\t\t\t}\n\n\t\t\t<span id={`${this._id}-content`} class=\"ui5-button-text\">\n\t\t\t\t<bdi>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</bdi>\n\t\t\t</span>\n\n\t\t\t{this.endIcon &&\n\t\t\t\t<Icon\n\t\t\t\t\tclass=\"ui5-button-end-icon\"\n\t\t\t\t\tname={this.endIcon}\n\t\t\t\t\tmode=\"Decorative\"\n\t\t\t\t\tpart=\"endIcon\"\n\t\t\t\t/>\n\t\t\t}\n\n\t\t\t{this.shouldRenderBadge &&\n\t\t\t\t<slot name=\"badge\"/>\n\t\t\t}\n\t\t</button>\n\t</>);\n}\n"]}
package/dist/Form.d.ts CHANGED
@@ -271,6 +271,7 @@ declare class Form extends UI5Element {
271
271
  setFastNavGroup(): void;
272
272
  setGroupsColSpan(): void;
273
273
  getGroupsColSpan(cols: number, groups: number, index: number, group: IFormItem): number;
274
+ setItemSpacing(): void;
274
275
  get hasGroupItems(): boolean;
275
276
  get hasHeader(): boolean;
276
277
  get hasHeaderText(): boolean;
package/dist/Form.js CHANGED
@@ -250,6 +250,8 @@ let Form = class Form extends UI5Element {
250
250
  this.setFormItemLayout();
251
251
  // Define how many columns a group should take.
252
252
  this.setGroupsColSpan();
253
+ // Set item spacing
254
+ this.setItemSpacing();
253
255
  }
254
256
  onAfterRendering() {
255
257
  // Create additional CSS for number of columns that are not supported by default.
@@ -389,6 +391,11 @@ let Form = class Form extends UI5Element {
389
391
  // 7 cols & 3 groups => 3, 2, 2
390
392
  return index === 0 ? MIN_COL_SPAN + (delta - groups) + 1 : MIN_COL_SPAN + 1;
391
393
  }
394
+ setItemSpacing() {
395
+ this.items.forEach((item) => {
396
+ item.itemSpacing = this.itemSpacing;
397
+ });
398
+ }
392
399
  get hasGroupItems() {
393
400
  return this.items.some((item) => item.isGroup);
394
401
  }
package/dist/Form.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","sourceRoot":"","sources":["../src/Form.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport { getScopedVarName } from \"@ui5/webcomponents-base/dist/CustomElementsScope.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\n// Template\nimport FormTemplate from \"./FormTemplate.js\";\n\n// Styles\nimport FormCss from \"./generated/themes/Form.css.js\";\n\nimport type FormItemSpacing from \"./types/FormItemSpacing.js\";\nimport type FormGroup from \"./FormGroup.js\";\n\nconst additionalStylesMap = new Map<string, string>();\n\nconst StepColumn = {\n\t\"S\": 1,\n\t\"M\": 2,\n\t\"L\": 3,\n\t\"XL\": 6,\n};\n\nconst breakpoints = [\"S\", \"M\", \"L\", \"Xl\"];\nconst MAX_FORM_ITEM_CELLS = 12;\nconst DEFAULT_FORM_ITEM_LAYOUT = \"4fr 8fr 0fr\";\nconst DEFAULT_FORM_ITEM_LAYOUT_S = \"1fr\";\n\n/**\n * Interface for components that can be slotted inside `ui5-form` as items.\n * @public\n * @since 2.0.0\n */\ninterface IFormItem extends UI5Element {\n\titemSpacing: `${FormItemSpacing}`;\n\treadonly isGroup: boolean;\n\tcolsXl?: number;\n\tcolsL?: number;\n\tcolsM?: number;\n\tcolsS?: number;\n\tcolumnSpan?: number;\n\theaderText?: string;\n}\n\ntype GroupItemsInfo = {\n\tgroupItem: IFormItem,\n\titems: Array<ItemsInfo>,\n\taccessibleNameRef: string | undefined\n}\n\ntype ItemsInfo = {\n\titem: IFormItem,\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The Form is a layout component that arranges labels and form fields (like input fields) pairs\n * into a specific number of columns.\n *\n * **Note:** The Form web component is a layout component, it isn't a replacement for the native `form` HTML element.\n * The Form web component does not provide any APIs for form submission.\n *\n * ### Structure\n *\n * - **Form** (`ui5-form`) is the top-level container component, responsible for the content layout and responsiveness.\n * - **FormGroup** (`ui5-form-group`) enables the grouping of the Form content.\n * - **FormItem** (`ui5-form-item`) is a pair of label and form fields and can be used directly in a Form, or as part of a FormGroup.\n *\n * The simplest Form (`ui5-form`) consists of a header area on top,\n * displaying a header text (see the `headingText` property) and content below - an arbitrary number of FormItems (ui5-form-item),\n * representing the pairs of label and form fields.\n *\n * And, there is also \"grouping\" available to assist the implementation of richer UIs.\n * This is enabled by the FormGroup (`ui5-form-group`) component.\n * In this case, the Form is structured into FormGroups and each FormGroup consists of FormItems.\n *\n * ### Responsiveness\n *\n * The Form component reacts and changes its layout on predefined breakpoints.\n * Depending on its size, the Form content (FormGroups and FormItems) gets divided into one or more columns as follows:\n * - **S** (< 600px) – 1 column is recommended (default: 1)\n * - **M** (600px - 1022px) – up to 2 columns are recommended (default: 1)\n * - **L** (1023px - 1439px) - up to 3 columns are recommended (default: 2)\n * - **XL** (> 1439px) – up to 6 columns are recommended (default: 3)\n *\n * To change the layout, use the `layout` property - f.e. layout=\"S1 M2 L3 XL6\".\n *\n * ### Groups\n *\n * To make better use of screen space, there is built-in logic to determine how many columns should a FormGroup occupy.\n *\n * - **Example #1** (perfect match):\n * 4 columns and 4 groups: each group will use 1 column.\n *\n * - **Example #2** (balanced distribution):\n * 4 columns and 2 groups: each group will use 2 columns.\n * 6 columns and 2 groups: each group will use 3 columns.\n *\n * - **Example #3** (unbalanced distribution):\n * 3 columns and 2 groups: the larger one will use 2 columns, the smaller 1 column.\n * 5 columns and 3 groups: two of the groups will use 2 columns each, the smallest 1 column.\n *\n * **Note:** The size of a group element is determined by the number of FormItems assigned to it.\n * In the case of equality, the first in the DOM will use more columns, and the last - fewer columns.\n *\n * - **Example #4** (more groups than columns):\n * 3 columns and 4 groups: each FormGroup uses only 1 column, the last FormGroup will wrap on the second row.\n *\n * ### Groups Column Span\n *\n * To influence the built-in group distribution, described in the previous section,\n * you can use the FormGroup's `columnSpan` property, that defines how many columns the group should expand to.\n *\n * ### Items Column Span\n *\n * FormItem's columnSpan property defines how many columns the form item should expand to inside a form group or the form.\n *\n * ### Items Label Span\n *\n * The placement of the labels depends on the size of the used column.\n * If there is enough space, the labels are next to their associated fields, otherwise - above the fields.\n * By default, the labels take 4/12 of the FormItem, leaving 8/12 parts to associated fields.\n * You can control what space the labels should take via the `labelSpan` property.\n *\n * **For example:** To always place the labels on top set: `labelSpan=\"S12 M12 L12 XL12\"` property.\n *\n * ### Items Empty Span\n *\n * By default, a form item spans 12 cells, fully divided between its label and field, with no empty space at the end:\n * - **Label:** occupies 4 cells.\n * - **Field:** occupies 8 cells.\n *\n * The `emptySpan` property provides additional layout flexibility by defining empty space at the form item’s end.\n *\n * **For example:** Setting \"S0 M0 L3 XL3\" (or just \"L3 XL3\") adjusts the layout as follows:\n * - **Label:** remains 4 cells.\n * - **Field:** is reduced to 5 cells.\n * - **Empty space:** 3 cells are added at the end.\n *\n * Greater values increase the empty space at the end of the form item, reducing the space available for the label and its field.\n * However, setting `emptySpan` to 1 cell is recommended and typically sufficient to achieve a balanced layout.\n *\n * ### Navigation flow\n *\n * The Form component supports two layout options for keyboard navigation:\n *\n * #### Simple form\n *\n * In this \"simple form\" layout, each `ui5-form-item` acts as a standalone group\n * with one item, so focus moves horizontally across the grid from one `ui5-form-item` to the next.\n * This layout is ideal for simpler forms and supports custom arrangements, e.g.,\n *\n * ```\n * | 1 | 2 |\n * | 3 |\n * | 4 | 5 |\n * ```\n *\n * #### Complex form\n *\n * In this layout, items are grouped into `ui5-form-group` elements, allowing more complex configurations:\n *\n * - **Single-Column Group**: Focus moves vertically down from one item to the next.\n * ```\n * | 1 |\n * | 2 |\n * | 3 |\n * ```\n *\n * - **Multi-Column Group**: Focus moves horizontally within each row, advancing to the next row after completing the current one.\n * ```\n * | 1 | 4 |\n * | 2 | 5 |\n * | 3 | 6 |\n * ```\n *\n * ### Keyboard Handling\n *\n * - [Tab] - Moves the focus to the next interactive element within the Form/FormGroup (if available) or to the next element in the tab chain outside the Form\n * - [Shift] + [Tab] - Moves the focus to the previous interactive element within the Form/FormGroup (if available) or to the previous element in the tab chain outside the Form\n * - [F6] - Moves the focus to the first interactive element of the next FormGroup (if available) or to the next element in the tab chain outside the Form\n * - [Shift] + [F6] - Moves the focus to the first interactive element of the previous FormGroup (if available) or to the previous element in the tab chain outside the Form\n *\n * ### ES6 Module Import\n *\n * - import @ui5/webcomponents/dist/Form.js\";\n * - import @ui5/webcomponents/dist/FormGroup.js\";\n * - import @ui5/webcomponents/dist/FormItem.js\";\n *\n * @csspart header - Used to style the wrapper of the header.\n * @csspart layout - Used to style the element defining the form column layout.\n * @csspart column - Used to style a single column of the form column layout.\n *\n * @public\n * @since 2.0.0\n * @extends UI5Element\n */\n@customElement({\n\ttag: \"ui5-form\",\n\trenderer: jsxRenderer,\n\tstyles: FormCss,\n\ttemplate: FormTemplate,\n})\nclass Form extends UI5Element {\n\t/**\n\t * Defines the number of columns to distribute the form content by breakpoint.\n\t *\n\t * Supported values:\n\t * - `S` - 1 column by default (1 column is recommended)\n\t * - `M` - 1 column by default (up to 2 columns are recommended)\n\t * - `L` - 2 columns by default (up to 3 columns are recommended)\n\t * - `XL` - 3 columns by default (up to 6 columns are recommended)\n\t *\n\t * @default \"S1 M1 L2 XL3\"\n\t * @public\n\t */\n\t@property()\n\tlayout = \"S1 M1 L2 XL3\"\n\n\t/**\n\t * Defines the width proportion of the labels and fields of a form item by breakpoint.\n\t *\n\t * By default, the labels take 4/12 (or 1/3) of the form item in M,L and XL sizes,\n\t * and 12/12 in S size, e.g in S the label is on top of its associated field.\n\t *\n\t * The supported values are between 1 and 12. Greater the number, more space the label will use.\n\t *\n\t * **Note:** If \"12\" is set, the label will be displayed on top of its assosiated field.\n\t *\n\t * @default \"S12 M4 L4 XL4\"\n\t * @public\n\t */\n\t@property()\n\tlabelSpan = \"S12 M4 L4 XL4\";\n\n\t/**\n\t * Defines the number of cells that are empty at the end of each form item, configurable by breakpoint.\n\t *\n\t * By default, a form item spans 12 cells, fully divided between its label (4 cells) and field (8 cells), with no empty space at the end.\n\t * The `emptySpan` provides additional layout flexibility by defining empty space at the form item’s end.\n\t *\n\t * **Note:**\n\t * - The maximum allowable empty space is 10 cells. At least 1 cell each must remain for the label and the field.\n\t * - When `emptySpan` is specified (greater than 0), ensure that the combined value of `emptySpan` and `labelSpan` does not exceed 11. This guarantees a minimum of 1 cell for the field.\n\t *\n\t * @default \"S0 M0 L0 XL0\"\n\t * @since 2.5.0\n\t * @public\n\t */\n\t@property()\n\temptySpan = \"S0 M0 L0 XL0\";\n\n\t/**\n\t * Defines the header text of the component.\n\t *\n\t * **Note:** The property gets overridden by the `header` slot.\n\t *\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\theaderText?: string;\n\n\t/**\n\t * Defines the vertical spacing between form items.\n\t *\n\t * **Note:** If the Form is meant to be switched between \"non-edit\" and \"edit\" modes,\n\t * we recommend using \"Large\" item spacing in \"non-edit\" mode, and \"Normal\" - for \"edit\" mode,\n\t * to avoid \"jumping\" effect, caused by the hight difference between texts in \"non-edit\" mode and the input fields in \"edit\" mode.\n\t *\n\t * @default \"Normal\"\n\t * @public\n\t */\n\t@property()\n\titemSpacing: `${FormItemSpacing}` = \"Normal\";\n\n\t/**\n\t * Defines the component header area.\n\t *\n\t * **Note:** When a `header` is provided, the `headerText` property is ignored.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement })\n\theader!: Array<HTMLElement>;\n\n\t/**\n\t * Defines the component content - FormGroups or FormItems.\n\t *\n\t * **Note:** Mixing FormGroups and standalone FormItems (not belonging to a group) is not supported.\n\t * Either use FormGroups and make sure all FormItems are part of a FormGroup, or use just FormItems without any FormGroups.\n\t * @public\n\t */\n\t@slot({\n\t\ttype: HTMLElement,\n\t\t\"default\": true,\n\t\tindividualSlots: true,\n\t\tinvalidateOnChildChange: true,\n\t})\n\titems!: Array<IFormItem>;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Number })\n\tcolumnsS = 1;\n\t@property({ type: Number })\n\tlabelSpanS = 12\n\t@property({ type: Number })\n\temptySpanS = 0\n\n\t@property({ type: Number })\n\tcolumnsM = 1;\n\t@property({ type: Number })\n\tlabelSpanM = 4;\n\t@property({ type: Number })\n\temptySpanM = 0\n\n\t@property({ type: Number })\n\tcolumnsL = 2;\n\t@property({ type: Number })\n\tlabelSpanL = 4;\n\t@property({ type: Number })\n\temptySpanL = 0\n\n\t@property({ type: Number })\n\tcolumnsXl = 3;\n\t@property({ type: Number })\n\tlabelSpanXl = 4;\n\t@property({ type: Number })\n\temptySpanXl = 0;\n\n\tonBeforeRendering() {\n\t\t// Parse the layout and set it to the FormGroups/FormItems.\n\t\tthis.setColumnLayout();\n\n\t\t// Parse the labelSpan and emptySpan and set it to the FormGroups/FormItems.\n\t\tthis.setFormItemLayout();\n\n\t\t// Define how many columns a group should take.\n\t\tthis.setGroupsColSpan();\n\t}\n\n\tonAfterRendering() {\n\t\t// Create additional CSS for number of columns that are not supported by default.\n\t\tthis.createAdditionalCSSStyleSheet();\n\n\t\tthis.setFastNavGroup();\n\t}\n\n\tsetColumnLayout() {\n\t\tconst layoutArr = this.layout.split(\" \");\n\t\tlayoutArr.forEach((breakpoint: string) => {\n\t\t\tif (breakpoint.startsWith(\"S\")) {\n\t\t\t\tthis.columnsS = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"M\")) {\n\t\t\t\tthis.columnsM = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"L\")) {\n\t\t\t\tthis.columnsL = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"XL\")) {\n\t\t\t\tthis.columnsXl = parseInt(breakpoint.slice(2));\n\t\t\t}\n\t\t});\n\t}\n\n\tparseFormItemSpan() {\n\t\tthis.labelSpan.split(\" \").forEach((breakpoint: string) => {\n\t\t\tif (breakpoint.startsWith(\"S\")) {\n\t\t\t\tthis.labelSpanS = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"M\")) {\n\t\t\t\tthis.labelSpanM = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"L\")) {\n\t\t\t\tthis.labelSpanL = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"XL\")) {\n\t\t\t\tthis.labelSpanXl = parseInt(breakpoint.slice(2));\n\t\t\t}\n\t\t});\n\n\t\tthis.emptySpan.split(\" \").forEach((breakpoint: string) => {\n\t\t\tif (breakpoint.startsWith(\"S\")) {\n\t\t\t\tthis.emptySpanS = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"M\")) {\n\t\t\t\tthis.emptySpanM = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"L\")) {\n\t\t\t\tthis.emptySpanL = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"XL\")) {\n\t\t\t\tthis.emptySpanXl = parseInt(breakpoint.slice(2));\n\t\t\t}\n\t\t});\n\t}\n\n\tsetFormItemLayout() {\n\t\tthis.parseFormItemSpan();\n\n\t\t[\n\t\t\t{\n\t\t\t\tbreakpoint: \"S\",\n\t\t\t\tlabelSpan: this.labelSpanS,\n\t\t\t\temptySpan: this.emptySpanS,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbreakpoint: \"M\",\n\t\t\t\tlabelSpan: this.labelSpanM,\n\t\t\t\temptySpan: this.emptySpanM,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbreakpoint: \"L\",\n\t\t\t\tlabelSpan: this.labelSpanL,\n\t\t\t\temptySpan: this.emptySpanL,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbreakpoint: \"XL\",\n\t\t\t\tlabelSpan: this.labelSpanXl,\n\t\t\t\temptySpan: this.emptySpanXl,\n\t\t\t},\n\t\t].forEach(layout => {\n\t\t\tif (this.isValidFormItemLayout(layout.labelSpan, layout.emptySpan)) {\n\t\t\t\tconst formItemLayout = layout.labelSpan === MAX_FORM_ITEM_CELLS ? `1fr` : `${layout.labelSpan}fr ${MAX_FORM_ITEM_CELLS - (layout.labelSpan + layout.emptySpan)}fr ${layout.emptySpan}fr`;\n\t\t\t\tthis.style.setProperty(getScopedVarName(`--ui5-form-item-layout-${layout.breakpoint}`), formItemLayout);\n\t\t\t} else {\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\tconsole.warn(`Form :: invalid usage of emptySpan and/or labelSpan in ${layout.breakpoint} size. The labelSpan must be <=12 and when emptySpace is used - their combined values must not exceed 11.`)\n\t\t\t\tthis.style.setProperty(getScopedVarName(`--ui5-form-item-layout-${layout.breakpoint}`), layout.breakpoint === \"S\" ? DEFAULT_FORM_ITEM_LAYOUT_S : DEFAULT_FORM_ITEM_LAYOUT);\n\t\t\t}\n\t\t});\n\t}\n\n\tisValidFormItemLayout(labelSpan: number, emptySpan: number) {\n\t\treturn emptySpan === 0 ? labelSpan <= MAX_FORM_ITEM_CELLS : labelSpan + emptySpan <= MAX_FORM_ITEM_CELLS - 1;\n\t}\n\n\tsetFastNavGroup() {\n\t\tif (this.hasGroupItems) {\n\t\t\tthis.removeAttribute(\"data-sap-ui-fastnavgroup\");\n\t\t} else {\n\t\t\tthis.setAttribute(\"data-sap-ui-fastnavgroup\", \"true\");\n\t\t}\n\t}\n\n\tsetGroupsColSpan() {\n\t\tif (!this.hasGroupItems) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst itemsCount = this.items.length;\n\t\tconst sortedItems = [...this.items].sort((itemA: IFormItem, itemB: IFormItem) => {\n\t\t\treturn (itemB as FormGroup)?.items.length - (itemA as FormGroup)?.items.length;\n\t\t});\n\n\t\tsortedItems.forEach((item: IFormItem, idx: number) => {\n\t\t\titem.colsXl = this.getGroupsColSpan(this.columnsXl, itemsCount, idx, item);\n\t\t\titem.colsL = this.getGroupsColSpan(this.columnsL, itemsCount, idx, item);\n\t\t\titem.colsM = this.getGroupsColSpan(this.columnsM, itemsCount, idx, item);\n\t\t\titem.colsS = this.getGroupsColSpan(this.columnsS, itemsCount, idx, item);\n\t\t});\n\t}\n\n\tgetGroupsColSpan(cols: number, groups: number, index: number, group: IFormItem): number {\n\t\t// Case 0: column span is set from outside.\n\t\tif (group.columnSpan) {\n\t\t\treturn group.columnSpan;\n\t\t}\n\n\t\t// CASE 1: The number of available columns match the number of groups, or only 1 column is available - each group takes 1 column.\n\t\t// For example: 1 column - 1 group, 2 columns - 2 groups, 3 columns - 3 groups, 4columns - 4 groups\n\t\tif (cols === 1 || cols <= groups) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// CASE 2: The number of available columns IS multiple of the number of groups.\n\t\t// For example: 2 column - 1 group, 3 columns - 1 groups, 4 columns - 1 group, 4 columns - 2 groups\n\t\tif (cols % groups === 0) {\n\t\t\treturn cols / groups;\n\t\t}\n\n\t\t// CASE 3: The number of available columns IS NOT multiple of the number of groups.\n\t\tconst MIN_COL_SPAN = 1;\n\t\tconst delta = cols - groups;\n\n\t\t// 7 cols & 4 groups => 2, 2, 2, 1\n\t\tif (delta <= groups) {\n\t\t\treturn index < delta ? MIN_COL_SPAN + 1 : MIN_COL_SPAN;\n\t\t}\n\n\t\t// 7 cols & 3 groups => 3, 2, 2\n\t\treturn index === 0 ? MIN_COL_SPAN + (delta - groups) + 1 : MIN_COL_SPAN + 1;\n\t}\n\n\tget hasGroupItems(): boolean {\n\t\treturn this.items.some((item: IFormItem) => item.isGroup);\n\t}\n\n\tget hasHeader(): boolean {\n\t\treturn this.hasCustomHeader || this.hasHeaderText;\n\t}\n\n\tget hasHeaderText(): boolean {\n\t\treturn !!this.headerText;\n\t}\n\n\tget hasCustomHeader(): boolean {\n\t\treturn !!this.header.length;\n\t}\n\n\tget effectiveАccessibleNameRef(): string | undefined {\n\t\treturn this.hasHeaderText && !this.hasCustomHeader ? `${this._id}-header-text` : undefined;\n\t}\n\n\tget effectiveAccessibleRole() {\n\t\treturn this.hasGroupItems ? \"region\" : \"form\";\n\t}\n\n\tget groupItemsInfo(): Array<GroupItemsInfo> {\n\t\treturn this.items.map((groupItem: IFormItem) => {\n\t\t\tconst items = this.getItemsInfo((Array.from(groupItem.children) as Array<IFormItem>));\n\t\t\tbreakpoints.forEach(breakpoint => {\n\t\t\t\tconst cols = ((groupItem[`cols${breakpoint}` as keyof IFormItem]) as number || 1);\n\t\t\t\tconst rows = Math.ceil(items.length / cols);\n\t\t\t\tconst total = cols * rows;\n\t\t\t\tconst lastRowColumns = (cols - (total - items.length) - 1); // all other indecies start from 0\n\t\t\t\tlet currentItem = 0;\n\n\t\t\t\tfor (let i = 0; i < total; i++) {\n\t\t\t\t\tconst column = Math.floor(i / rows);\n\t\t\t\t\tconst row = i % rows;\n\n\t\t\t\t\tif (row === rows - 1 && column > lastRowColumns) {\n\t\t\t\t\t\t// eslint-disable-next-line no-continue\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\titems[currentItem].item.style.setProperty(getScopedVarName(`--ui5-form-item-order-${breakpoint}`), `${column + row * cols}`);\n\t\t\t\t\tcurrentItem++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tgroupItem,\n\t\t\t\taccessibleNameRef: (groupItem as FormGroup).headerText ? `${groupItem._id}-group-header-text` : undefined,\n\t\t\t\titems: this.getItemsInfo((Array.from(groupItem.children) as Array<IFormItem>)),\n\t\t\t};\n\t\t});\n\t}\n\n\tget itemsInfo(): Array<ItemsInfo> {\n\t\treturn this.getItemsInfo();\n\t}\n\n\tgetItemsInfo(items?: Array<IFormItem>): Array<ItemsInfo> {\n\t\treturn (items || this.items).map((item: IFormItem) => {\n\t\t\treturn {\n\t\t\t\titem,\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\t// TODO: remove classes and classMap after deleting the hbs template\n\t\t\t\tclasses: item.columnSpan ? `ui5-form-item-span-${item.columnSpan}` : \"\",\n\t\t\t\tclassMap: {\n\t\t\t\t\t[`ui5-form-item-span-${item.columnSpan}`]: item.columnSpan !== undefined,\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tcreateAdditionalCSSStyleSheet() {\n\t\t[\n\t\t\t{ breakpoint: \"S\", columns: this.columnsS },\n\t\t\t{ breakpoint: \"M\", columns: this.columnsM },\n\t\t\t{ breakpoint: \"L\", columns: this.columnsL },\n\t\t\t{ breakpoint: \"XL\", columns: this.columnsXl },\n\t\t].forEach(step => {\n\t\t\tconst additionalStyle: string | undefined = this.getAdditionalCSS(step.breakpoint, step.columns);\n\n\t\t\tif (additionalStyle) {\n\t\t\t\tthis.shadowRoot!.adoptedStyleSheets = [...this.shadowRoot!.adoptedStyleSheets, this.getCSSStyleSheet(additionalStyle)];\n\t\t\t}\n\t\t});\n\t}\n\n\tgetAdditionalCSS(step: string, colsNumber: number): string | undefined {\n\t\tif (StepColumn[step as keyof typeof StepColumn] >= colsNumber) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst key = `${step}-${colsNumber}`;\n\n\t\tif (!additionalStylesMap.has(key)) {\n\t\t\tlet containerQuery;\n\t\t\tlet supporedColumnsNumber = StepColumn.S;\n\t\t\tlet stepSpanCSS = \"\";\n\t\t\tlet cols = colsNumber;\n\n\t\t\tif (step === \"S\") {\n\t\t\t\tsupporedColumnsNumber = StepColumn.S;\n\t\t\t\tcontainerQuery = `@container (max-width: 599px) {`;\n\t\t\t} else if (step === \"M\") {\n\t\t\t\tsupporedColumnsNumber = StepColumn.M;\n\t\t\t\tcontainerQuery = `@container (width > 599px) and (width < 1024px) {`;\n\t\t\t} else if (step === \"L\") {\n\t\t\t\tsupporedColumnsNumber = StepColumn.L;\n\t\t\t\tcontainerQuery = `@container (width > 1023px) and (width < 1439px) {`;\n\t\t\t} else if (step === \"XL\") {\n\t\t\t\tcontainerQuery = `@container (min-width: 1440px) {`;\n\t\t\t\tsupporedColumnsNumber = StepColumn.XL;\n\t\t\t}\n\n\t\t\twhile (cols > supporedColumnsNumber) {\n\t\t\t\tstepSpanCSS += `\n\t\t\t\t:host([columns-${step.toLocaleLowerCase()}=\"${cols}\"]) .ui5-form-layout {\n\t\t\t\t\tgrid-template-columns: repeat(${cols}, 1fr);\n\t\t\t\t}\n\n\t\t\t\t.ui5-form-column-span${step}-${cols},\n\t\t\t\t.ui5-form-item-span-${cols} {\n\t\t\t\t\tgrid-column: span ${cols};\n\t\t\t\t}\n\n\t\t\t\t.ui5-form-column-span${step}-${cols} .ui5-form-group-layout {\n\t\t\t\t\tgrid-template-columns: repeat(${cols}, 1fr);\n\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tcols--;\n\t\t\t}\n\n\t\t\tconst css = `${containerQuery}${stepSpanCSS}}`;\n\t\t\tadditionalStylesMap.set(key, css);\n\t\t}\n\n\t\treturn additionalStylesMap.get(key)!;\n\t}\n\n\tgetCSSStyleSheet(cssText: string): CSSStyleSheet {\n\t\tconst style = new CSSStyleSheet();\n\t\tstyle.replaceSync(cssText);\n\t\treturn style;\n\t}\n}\n\nForm.define();\n\nexport default Form;\nexport type {\n\tIFormItem,\n};\n"]}
1
+ {"version":3,"file":"Form.js","sourceRoot":"","sources":["../src/Form.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport { getScopedVarName } from \"@ui5/webcomponents-base/dist/CustomElementsScope.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\n// Template\nimport FormTemplate from \"./FormTemplate.js\";\n\n// Styles\nimport FormCss from \"./generated/themes/Form.css.js\";\n\nimport type FormItemSpacing from \"./types/FormItemSpacing.js\";\nimport type FormGroup from \"./FormGroup.js\";\n\nconst additionalStylesMap = new Map<string, string>();\n\nconst StepColumn = {\n\t\"S\": 1,\n\t\"M\": 2,\n\t\"L\": 3,\n\t\"XL\": 6,\n};\n\nconst breakpoints = [\"S\", \"M\", \"L\", \"Xl\"];\nconst MAX_FORM_ITEM_CELLS = 12;\nconst DEFAULT_FORM_ITEM_LAYOUT = \"4fr 8fr 0fr\";\nconst DEFAULT_FORM_ITEM_LAYOUT_S = \"1fr\";\n\n/**\n * Interface for components that can be slotted inside `ui5-form` as items.\n * @public\n * @since 2.0.0\n */\ninterface IFormItem extends UI5Element {\n\titemSpacing: `${FormItemSpacing}`;\n\treadonly isGroup: boolean;\n\tcolsXl?: number;\n\tcolsL?: number;\n\tcolsM?: number;\n\tcolsS?: number;\n\tcolumnSpan?: number;\n\theaderText?: string;\n}\n\ntype GroupItemsInfo = {\n\tgroupItem: IFormItem,\n\titems: Array<ItemsInfo>,\n\taccessibleNameRef: string | undefined\n}\n\ntype ItemsInfo = {\n\titem: IFormItem,\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The Form is a layout component that arranges labels and form fields (like input fields) pairs\n * into a specific number of columns.\n *\n * **Note:** The Form web component is a layout component, it isn't a replacement for the native `form` HTML element.\n * The Form web component does not provide any APIs for form submission.\n *\n * ### Structure\n *\n * - **Form** (`ui5-form`) is the top-level container component, responsible for the content layout and responsiveness.\n * - **FormGroup** (`ui5-form-group`) enables the grouping of the Form content.\n * - **FormItem** (`ui5-form-item`) is a pair of label and form fields and can be used directly in a Form, or as part of a FormGroup.\n *\n * The simplest Form (`ui5-form`) consists of a header area on top,\n * displaying a header text (see the `headingText` property) and content below - an arbitrary number of FormItems (ui5-form-item),\n * representing the pairs of label and form fields.\n *\n * And, there is also \"grouping\" available to assist the implementation of richer UIs.\n * This is enabled by the FormGroup (`ui5-form-group`) component.\n * In this case, the Form is structured into FormGroups and each FormGroup consists of FormItems.\n *\n * ### Responsiveness\n *\n * The Form component reacts and changes its layout on predefined breakpoints.\n * Depending on its size, the Form content (FormGroups and FormItems) gets divided into one or more columns as follows:\n * - **S** (< 600px) – 1 column is recommended (default: 1)\n * - **M** (600px - 1022px) – up to 2 columns are recommended (default: 1)\n * - **L** (1023px - 1439px) - up to 3 columns are recommended (default: 2)\n * - **XL** (> 1439px) – up to 6 columns are recommended (default: 3)\n *\n * To change the layout, use the `layout` property - f.e. layout=\"S1 M2 L3 XL6\".\n *\n * ### Groups\n *\n * To make better use of screen space, there is built-in logic to determine how many columns should a FormGroup occupy.\n *\n * - **Example #1** (perfect match):\n * 4 columns and 4 groups: each group will use 1 column.\n *\n * - **Example #2** (balanced distribution):\n * 4 columns and 2 groups: each group will use 2 columns.\n * 6 columns and 2 groups: each group will use 3 columns.\n *\n * - **Example #3** (unbalanced distribution):\n * 3 columns and 2 groups: the larger one will use 2 columns, the smaller 1 column.\n * 5 columns and 3 groups: two of the groups will use 2 columns each, the smallest 1 column.\n *\n * **Note:** The size of a group element is determined by the number of FormItems assigned to it.\n * In the case of equality, the first in the DOM will use more columns, and the last - fewer columns.\n *\n * - **Example #4** (more groups than columns):\n * 3 columns and 4 groups: each FormGroup uses only 1 column, the last FormGroup will wrap on the second row.\n *\n * ### Groups Column Span\n *\n * To influence the built-in group distribution, described in the previous section,\n * you can use the FormGroup's `columnSpan` property, that defines how many columns the group should expand to.\n *\n * ### Items Column Span\n *\n * FormItem's columnSpan property defines how many columns the form item should expand to inside a form group or the form.\n *\n * ### Items Label Span\n *\n * The placement of the labels depends on the size of the used column.\n * If there is enough space, the labels are next to their associated fields, otherwise - above the fields.\n * By default, the labels take 4/12 of the FormItem, leaving 8/12 parts to associated fields.\n * You can control what space the labels should take via the `labelSpan` property.\n *\n * **For example:** To always place the labels on top set: `labelSpan=\"S12 M12 L12 XL12\"` property.\n *\n * ### Items Empty Span\n *\n * By default, a form item spans 12 cells, fully divided between its label and field, with no empty space at the end:\n * - **Label:** occupies 4 cells.\n * - **Field:** occupies 8 cells.\n *\n * The `emptySpan` property provides additional layout flexibility by defining empty space at the form item’s end.\n *\n * **For example:** Setting \"S0 M0 L3 XL3\" (or just \"L3 XL3\") adjusts the layout as follows:\n * - **Label:** remains 4 cells.\n * - **Field:** is reduced to 5 cells.\n * - **Empty space:** 3 cells are added at the end.\n *\n * Greater values increase the empty space at the end of the form item, reducing the space available for the label and its field.\n * However, setting `emptySpan` to 1 cell is recommended and typically sufficient to achieve a balanced layout.\n *\n * ### Navigation flow\n *\n * The Form component supports two layout options for keyboard navigation:\n *\n * #### Simple form\n *\n * In this \"simple form\" layout, each `ui5-form-item` acts as a standalone group\n * with one item, so focus moves horizontally across the grid from one `ui5-form-item` to the next.\n * This layout is ideal for simpler forms and supports custom arrangements, e.g.,\n *\n * ```\n * | 1 | 2 |\n * | 3 |\n * | 4 | 5 |\n * ```\n *\n * #### Complex form\n *\n * In this layout, items are grouped into `ui5-form-group` elements, allowing more complex configurations:\n *\n * - **Single-Column Group**: Focus moves vertically down from one item to the next.\n * ```\n * | 1 |\n * | 2 |\n * | 3 |\n * ```\n *\n * - **Multi-Column Group**: Focus moves horizontally within each row, advancing to the next row after completing the current one.\n * ```\n * | 1 | 4 |\n * | 2 | 5 |\n * | 3 | 6 |\n * ```\n *\n * ### Keyboard Handling\n *\n * - [Tab] - Moves the focus to the next interactive element within the Form/FormGroup (if available) or to the next element in the tab chain outside the Form\n * - [Shift] + [Tab] - Moves the focus to the previous interactive element within the Form/FormGroup (if available) or to the previous element in the tab chain outside the Form\n * - [F6] - Moves the focus to the first interactive element of the next FormGroup (if available) or to the next element in the tab chain outside the Form\n * - [Shift] + [F6] - Moves the focus to the first interactive element of the previous FormGroup (if available) or to the previous element in the tab chain outside the Form\n *\n * ### ES6 Module Import\n *\n * - import @ui5/webcomponents/dist/Form.js\";\n * - import @ui5/webcomponents/dist/FormGroup.js\";\n * - import @ui5/webcomponents/dist/FormItem.js\";\n *\n * @csspart header - Used to style the wrapper of the header.\n * @csspart layout - Used to style the element defining the form column layout.\n * @csspart column - Used to style a single column of the form column layout.\n *\n * @public\n * @since 2.0.0\n * @extends UI5Element\n */\n@customElement({\n\ttag: \"ui5-form\",\n\trenderer: jsxRenderer,\n\tstyles: FormCss,\n\ttemplate: FormTemplate,\n})\nclass Form extends UI5Element {\n\t/**\n\t * Defines the number of columns to distribute the form content by breakpoint.\n\t *\n\t * Supported values:\n\t * - `S` - 1 column by default (1 column is recommended)\n\t * - `M` - 1 column by default (up to 2 columns are recommended)\n\t * - `L` - 2 columns by default (up to 3 columns are recommended)\n\t * - `XL` - 3 columns by default (up to 6 columns are recommended)\n\t *\n\t * @default \"S1 M1 L2 XL3\"\n\t * @public\n\t */\n\t@property()\n\tlayout = \"S1 M1 L2 XL3\"\n\n\t/**\n\t * Defines the width proportion of the labels and fields of a form item by breakpoint.\n\t *\n\t * By default, the labels take 4/12 (or 1/3) of the form item in M,L and XL sizes,\n\t * and 12/12 in S size, e.g in S the label is on top of its associated field.\n\t *\n\t * The supported values are between 1 and 12. Greater the number, more space the label will use.\n\t *\n\t * **Note:** If \"12\" is set, the label will be displayed on top of its assosiated field.\n\t *\n\t * @default \"S12 M4 L4 XL4\"\n\t * @public\n\t */\n\t@property()\n\tlabelSpan = \"S12 M4 L4 XL4\";\n\n\t/**\n\t * Defines the number of cells that are empty at the end of each form item, configurable by breakpoint.\n\t *\n\t * By default, a form item spans 12 cells, fully divided between its label (4 cells) and field (8 cells), with no empty space at the end.\n\t * The `emptySpan` provides additional layout flexibility by defining empty space at the form item’s end.\n\t *\n\t * **Note:**\n\t * - The maximum allowable empty space is 10 cells. At least 1 cell each must remain for the label and the field.\n\t * - When `emptySpan` is specified (greater than 0), ensure that the combined value of `emptySpan` and `labelSpan` does not exceed 11. This guarantees a minimum of 1 cell for the field.\n\t *\n\t * @default \"S0 M0 L0 XL0\"\n\t * @since 2.5.0\n\t * @public\n\t */\n\t@property()\n\temptySpan = \"S0 M0 L0 XL0\";\n\n\t/**\n\t * Defines the header text of the component.\n\t *\n\t * **Note:** The property gets overridden by the `header` slot.\n\t *\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\theaderText?: string;\n\n\t/**\n\t * Defines the vertical spacing between form items.\n\t *\n\t * **Note:** If the Form is meant to be switched between \"non-edit\" and \"edit\" modes,\n\t * we recommend using \"Large\" item spacing in \"non-edit\" mode, and \"Normal\" - for \"edit\" mode,\n\t * to avoid \"jumping\" effect, caused by the hight difference between texts in \"non-edit\" mode and the input fields in \"edit\" mode.\n\t *\n\t * @default \"Normal\"\n\t * @public\n\t */\n\t@property()\n\titemSpacing: `${FormItemSpacing}` = \"Normal\";\n\n\t/**\n\t * Defines the component header area.\n\t *\n\t * **Note:** When a `header` is provided, the `headerText` property is ignored.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement })\n\theader!: Array<HTMLElement>;\n\n\t/**\n\t * Defines the component content - FormGroups or FormItems.\n\t *\n\t * **Note:** Mixing FormGroups and standalone FormItems (not belonging to a group) is not supported.\n\t * Either use FormGroups and make sure all FormItems are part of a FormGroup, or use just FormItems without any FormGroups.\n\t * @public\n\t */\n\t@slot({\n\t\ttype: HTMLElement,\n\t\t\"default\": true,\n\t\tindividualSlots: true,\n\t\tinvalidateOnChildChange: true,\n\t})\n\titems!: Array<IFormItem>;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Number })\n\tcolumnsS = 1;\n\t@property({ type: Number })\n\tlabelSpanS = 12\n\t@property({ type: Number })\n\temptySpanS = 0\n\n\t@property({ type: Number })\n\tcolumnsM = 1;\n\t@property({ type: Number })\n\tlabelSpanM = 4;\n\t@property({ type: Number })\n\temptySpanM = 0\n\n\t@property({ type: Number })\n\tcolumnsL = 2;\n\t@property({ type: Number })\n\tlabelSpanL = 4;\n\t@property({ type: Number })\n\temptySpanL = 0\n\n\t@property({ type: Number })\n\tcolumnsXl = 3;\n\t@property({ type: Number })\n\tlabelSpanXl = 4;\n\t@property({ type: Number })\n\temptySpanXl = 0;\n\n\tonBeforeRendering() {\n\t\t// Parse the layout and set it to the FormGroups/FormItems.\n\t\tthis.setColumnLayout();\n\n\t\t// Parse the labelSpan and emptySpan and set it to the FormGroups/FormItems.\n\t\tthis.setFormItemLayout();\n\n\t\t// Define how many columns a group should take.\n\t\tthis.setGroupsColSpan();\n\n\t\t// Set item spacing\n\t\tthis.setItemSpacing();\n\t}\n\n\tonAfterRendering() {\n\t\t// Create additional CSS for number of columns that are not supported by default.\n\t\tthis.createAdditionalCSSStyleSheet();\n\n\t\tthis.setFastNavGroup();\n\t}\n\n\tsetColumnLayout() {\n\t\tconst layoutArr = this.layout.split(\" \");\n\t\tlayoutArr.forEach((breakpoint: string) => {\n\t\t\tif (breakpoint.startsWith(\"S\")) {\n\t\t\t\tthis.columnsS = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"M\")) {\n\t\t\t\tthis.columnsM = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"L\")) {\n\t\t\t\tthis.columnsL = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"XL\")) {\n\t\t\t\tthis.columnsXl = parseInt(breakpoint.slice(2));\n\t\t\t}\n\t\t});\n\t}\n\n\tparseFormItemSpan() {\n\t\tthis.labelSpan.split(\" \").forEach((breakpoint: string) => {\n\t\t\tif (breakpoint.startsWith(\"S\")) {\n\t\t\t\tthis.labelSpanS = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"M\")) {\n\t\t\t\tthis.labelSpanM = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"L\")) {\n\t\t\t\tthis.labelSpanL = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"XL\")) {\n\t\t\t\tthis.labelSpanXl = parseInt(breakpoint.slice(2));\n\t\t\t}\n\t\t});\n\n\t\tthis.emptySpan.split(\" \").forEach((breakpoint: string) => {\n\t\t\tif (breakpoint.startsWith(\"S\")) {\n\t\t\t\tthis.emptySpanS = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"M\")) {\n\t\t\t\tthis.emptySpanM = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"L\")) {\n\t\t\t\tthis.emptySpanL = parseInt(breakpoint.slice(1));\n\t\t\t} else if (breakpoint.startsWith(\"XL\")) {\n\t\t\t\tthis.emptySpanXl = parseInt(breakpoint.slice(2));\n\t\t\t}\n\t\t});\n\t}\n\n\tsetFormItemLayout() {\n\t\tthis.parseFormItemSpan();\n\n\t\t[\n\t\t\t{\n\t\t\t\tbreakpoint: \"S\",\n\t\t\t\tlabelSpan: this.labelSpanS,\n\t\t\t\temptySpan: this.emptySpanS,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbreakpoint: \"M\",\n\t\t\t\tlabelSpan: this.labelSpanM,\n\t\t\t\temptySpan: this.emptySpanM,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbreakpoint: \"L\",\n\t\t\t\tlabelSpan: this.labelSpanL,\n\t\t\t\temptySpan: this.emptySpanL,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbreakpoint: \"XL\",\n\t\t\t\tlabelSpan: this.labelSpanXl,\n\t\t\t\temptySpan: this.emptySpanXl,\n\t\t\t},\n\t\t].forEach(layout => {\n\t\t\tif (this.isValidFormItemLayout(layout.labelSpan, layout.emptySpan)) {\n\t\t\t\tconst formItemLayout = layout.labelSpan === MAX_FORM_ITEM_CELLS ? `1fr` : `${layout.labelSpan}fr ${MAX_FORM_ITEM_CELLS - (layout.labelSpan + layout.emptySpan)}fr ${layout.emptySpan}fr`;\n\t\t\t\tthis.style.setProperty(getScopedVarName(`--ui5-form-item-layout-${layout.breakpoint}`), formItemLayout);\n\t\t\t} else {\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\tconsole.warn(`Form :: invalid usage of emptySpan and/or labelSpan in ${layout.breakpoint} size. The labelSpan must be <=12 and when emptySpace is used - their combined values must not exceed 11.`)\n\t\t\t\tthis.style.setProperty(getScopedVarName(`--ui5-form-item-layout-${layout.breakpoint}`), layout.breakpoint === \"S\" ? DEFAULT_FORM_ITEM_LAYOUT_S : DEFAULT_FORM_ITEM_LAYOUT);\n\t\t\t}\n\t\t});\n\t}\n\n\tisValidFormItemLayout(labelSpan: number, emptySpan: number) {\n\t\treturn emptySpan === 0 ? labelSpan <= MAX_FORM_ITEM_CELLS : labelSpan + emptySpan <= MAX_FORM_ITEM_CELLS - 1;\n\t}\n\n\tsetFastNavGroup() {\n\t\tif (this.hasGroupItems) {\n\t\t\tthis.removeAttribute(\"data-sap-ui-fastnavgroup\");\n\t\t} else {\n\t\t\tthis.setAttribute(\"data-sap-ui-fastnavgroup\", \"true\");\n\t\t}\n\t}\n\n\tsetGroupsColSpan() {\n\t\tif (!this.hasGroupItems) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst itemsCount = this.items.length;\n\t\tconst sortedItems = [...this.items].sort((itemA: IFormItem, itemB: IFormItem) => {\n\t\t\treturn (itemB as FormGroup)?.items.length - (itemA as FormGroup)?.items.length;\n\t\t});\n\n\t\tsortedItems.forEach((item: IFormItem, idx: number) => {\n\t\t\titem.colsXl = this.getGroupsColSpan(this.columnsXl, itemsCount, idx, item);\n\t\t\titem.colsL = this.getGroupsColSpan(this.columnsL, itemsCount, idx, item);\n\t\t\titem.colsM = this.getGroupsColSpan(this.columnsM, itemsCount, idx, item);\n\t\t\titem.colsS = this.getGroupsColSpan(this.columnsS, itemsCount, idx, item);\n\t\t});\n\t}\n\n\tgetGroupsColSpan(cols: number, groups: number, index: number, group: IFormItem): number {\n\t\t// Case 0: column span is set from outside.\n\t\tif (group.columnSpan) {\n\t\t\treturn group.columnSpan;\n\t\t}\n\n\t\t// CASE 1: The number of available columns match the number of groups, or only 1 column is available - each group takes 1 column.\n\t\t// For example: 1 column - 1 group, 2 columns - 2 groups, 3 columns - 3 groups, 4columns - 4 groups\n\t\tif (cols === 1 || cols <= groups) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// CASE 2: The number of available columns IS multiple of the number of groups.\n\t\t// For example: 2 column - 1 group, 3 columns - 1 groups, 4 columns - 1 group, 4 columns - 2 groups\n\t\tif (cols % groups === 0) {\n\t\t\treturn cols / groups;\n\t\t}\n\n\t\t// CASE 3: The number of available columns IS NOT multiple of the number of groups.\n\t\tconst MIN_COL_SPAN = 1;\n\t\tconst delta = cols - groups;\n\n\t\t// 7 cols & 4 groups => 2, 2, 2, 1\n\t\tif (delta <= groups) {\n\t\t\treturn index < delta ? MIN_COL_SPAN + 1 : MIN_COL_SPAN;\n\t\t}\n\n\t\t// 7 cols & 3 groups => 3, 2, 2\n\t\treturn index === 0 ? MIN_COL_SPAN + (delta - groups) + 1 : MIN_COL_SPAN + 1;\n\t}\n\n\tsetItemSpacing() {\n\t\tthis.items.forEach((item: IFormItem) => {\n\t\t\titem.itemSpacing = this.itemSpacing;\n\t\t});\n\t}\n\n\tget hasGroupItems(): boolean {\n\t\treturn this.items.some((item: IFormItem) => item.isGroup);\n\t}\n\n\tget hasHeader(): boolean {\n\t\treturn this.hasCustomHeader || this.hasHeaderText;\n\t}\n\n\tget hasHeaderText(): boolean {\n\t\treturn !!this.headerText;\n\t}\n\n\tget hasCustomHeader(): boolean {\n\t\treturn !!this.header.length;\n\t}\n\n\tget effectiveАccessibleNameRef(): string | undefined {\n\t\treturn this.hasHeaderText && !this.hasCustomHeader ? `${this._id}-header-text` : undefined;\n\t}\n\n\tget effectiveAccessibleRole() {\n\t\treturn this.hasGroupItems ? \"region\" : \"form\";\n\t}\n\n\tget groupItemsInfo(): Array<GroupItemsInfo> {\n\t\treturn this.items.map((groupItem: IFormItem) => {\n\t\t\tconst items = this.getItemsInfo((Array.from(groupItem.children) as Array<IFormItem>));\n\t\t\tbreakpoints.forEach(breakpoint => {\n\t\t\t\tconst cols = ((groupItem[`cols${breakpoint}` as keyof IFormItem]) as number || 1);\n\t\t\t\tconst rows = Math.ceil(items.length / cols);\n\t\t\t\tconst total = cols * rows;\n\t\t\t\tconst lastRowColumns = (cols - (total - items.length) - 1); // all other indecies start from 0\n\t\t\t\tlet currentItem = 0;\n\n\t\t\t\tfor (let i = 0; i < total; i++) {\n\t\t\t\t\tconst column = Math.floor(i / rows);\n\t\t\t\t\tconst row = i % rows;\n\n\t\t\t\t\tif (row === rows - 1 && column > lastRowColumns) {\n\t\t\t\t\t\t// eslint-disable-next-line no-continue\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\titems[currentItem].item.style.setProperty(getScopedVarName(`--ui5-form-item-order-${breakpoint}`), `${column + row * cols}`);\n\t\t\t\t\tcurrentItem++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tgroupItem,\n\t\t\t\taccessibleNameRef: (groupItem as FormGroup).headerText ? `${groupItem._id}-group-header-text` : undefined,\n\t\t\t\titems: this.getItemsInfo((Array.from(groupItem.children) as Array<IFormItem>)),\n\t\t\t};\n\t\t});\n\t}\n\n\tget itemsInfo(): Array<ItemsInfo> {\n\t\treturn this.getItemsInfo();\n\t}\n\n\tgetItemsInfo(items?: Array<IFormItem>): Array<ItemsInfo> {\n\t\treturn (items || this.items).map((item: IFormItem) => {\n\t\t\treturn {\n\t\t\t\titem,\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\t// TODO: remove classes and classMap after deleting the hbs template\n\t\t\t\tclasses: item.columnSpan ? `ui5-form-item-span-${item.columnSpan}` : \"\",\n\t\t\t\tclassMap: {\n\t\t\t\t\t[`ui5-form-item-span-${item.columnSpan}`]: item.columnSpan !== undefined,\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tcreateAdditionalCSSStyleSheet() {\n\t\t[\n\t\t\t{ breakpoint: \"S\", columns: this.columnsS },\n\t\t\t{ breakpoint: \"M\", columns: this.columnsM },\n\t\t\t{ breakpoint: \"L\", columns: this.columnsL },\n\t\t\t{ breakpoint: \"XL\", columns: this.columnsXl },\n\t\t].forEach(step => {\n\t\t\tconst additionalStyle: string | undefined = this.getAdditionalCSS(step.breakpoint, step.columns);\n\n\t\t\tif (additionalStyle) {\n\t\t\t\tthis.shadowRoot!.adoptedStyleSheets = [...this.shadowRoot!.adoptedStyleSheets, this.getCSSStyleSheet(additionalStyle)];\n\t\t\t}\n\t\t});\n\t}\n\n\tgetAdditionalCSS(step: string, colsNumber: number): string | undefined {\n\t\tif (StepColumn[step as keyof typeof StepColumn] >= colsNumber) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst key = `${step}-${colsNumber}`;\n\n\t\tif (!additionalStylesMap.has(key)) {\n\t\t\tlet containerQuery;\n\t\t\tlet supporedColumnsNumber = StepColumn.S;\n\t\t\tlet stepSpanCSS = \"\";\n\t\t\tlet cols = colsNumber;\n\n\t\t\tif (step === \"S\") {\n\t\t\t\tsupporedColumnsNumber = StepColumn.S;\n\t\t\t\tcontainerQuery = `@container (max-width: 599px) {`;\n\t\t\t} else if (step === \"M\") {\n\t\t\t\tsupporedColumnsNumber = StepColumn.M;\n\t\t\t\tcontainerQuery = `@container (width > 599px) and (width < 1024px) {`;\n\t\t\t} else if (step === \"L\") {\n\t\t\t\tsupporedColumnsNumber = StepColumn.L;\n\t\t\t\tcontainerQuery = `@container (width > 1023px) and (width < 1439px) {`;\n\t\t\t} else if (step === \"XL\") {\n\t\t\t\tcontainerQuery = `@container (min-width: 1440px) {`;\n\t\t\t\tsupporedColumnsNumber = StepColumn.XL;\n\t\t\t}\n\n\t\t\twhile (cols > supporedColumnsNumber) {\n\t\t\t\tstepSpanCSS += `\n\t\t\t\t:host([columns-${step.toLocaleLowerCase()}=\"${cols}\"]) .ui5-form-layout {\n\t\t\t\t\tgrid-template-columns: repeat(${cols}, 1fr);\n\t\t\t\t}\n\n\t\t\t\t.ui5-form-column-span${step}-${cols},\n\t\t\t\t.ui5-form-item-span-${cols} {\n\t\t\t\t\tgrid-column: span ${cols};\n\t\t\t\t}\n\n\t\t\t\t.ui5-form-column-span${step}-${cols} .ui5-form-group-layout {\n\t\t\t\t\tgrid-template-columns: repeat(${cols}, 1fr);\n\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tcols--;\n\t\t\t}\n\n\t\t\tconst css = `${containerQuery}${stepSpanCSS}}`;\n\t\t\tadditionalStylesMap.set(key, css);\n\t\t}\n\n\t\treturn additionalStylesMap.get(key)!;\n\t}\n\n\tgetCSSStyleSheet(cssText: string): CSSStyleSheet {\n\t\tconst style = new CSSStyleSheet();\n\t\tstyle.replaceSync(cssText);\n\t\treturn style;\n\t}\n}\n\nForm.define();\n\nexport default Form;\nexport type {\n\tIFormItem,\n};\n"]}
package/dist/Input.js CHANGED
@@ -928,6 +928,7 @@ let Input = Input_1 = class Input extends UI5Element {
928
928
  fireResetSelectionChange() {
929
929
  if (this._isLatestValueFromSuggestions) {
930
930
  this.fireSelectionChange(null, false);
931
+ this.valueBeforeItemSelection = this.value;
931
932
  }
932
933
  }
933
934
  get _readonly() {