@ui5/webcomponents 2.22.0 → 2.23.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/Carousel.js +13 -3
  4. package/dist/Carousel.js.map +1 -1
  5. package/dist/ComboBox.d.ts +4 -0
  6. package/dist/ComboBox.js +6 -0
  7. package/dist/ComboBox.js.map +1 -1
  8. package/dist/DateComponentBase.d.ts +8 -0
  9. package/dist/DateComponentBase.js +10 -8
  10. package/dist/DateComponentBase.js.map +1 -1
  11. package/dist/DateTimePicker.d.ts +5 -6
  12. package/dist/DateTimePicker.js +9 -11
  13. package/dist/DateTimePicker.js.map +1 -1
  14. package/dist/DayPicker.d.ts +16 -1
  15. package/dist/DayPicker.js +28 -7
  16. package/dist/DayPicker.js.map +1 -1
  17. package/dist/Form.d.ts +4 -4
  18. package/dist/Form.js +6 -6
  19. package/dist/Form.js.map +1 -1
  20. package/dist/GridWalker.js +8 -2
  21. package/dist/GridWalker.js.map +1 -1
  22. package/dist/Icon.d.ts +19 -0
  23. package/dist/Icon.js +17 -0
  24. package/dist/Icon.js.map +1 -1
  25. package/dist/IconTemplate.js +4 -1
  26. package/dist/IconTemplate.js.map +1 -1
  27. package/dist/Input.d.ts +4 -0
  28. package/dist/Input.js.map +1 -1
  29. package/dist/List.js +54 -2
  30. package/dist/List.js.map +1 -1
  31. package/dist/ListItem.d.ts +21 -6
  32. package/dist/ListItem.js +72 -23
  33. package/dist/ListItem.js.map +1 -1
  34. package/dist/ListItemBase.d.ts +6 -1
  35. package/dist/ListItemBase.js +20 -1
  36. package/dist/ListItemBase.js.map +1 -1
  37. package/dist/ListItemBaseTemplate.d.ts +2 -2
  38. package/dist/ListItemBaseTemplate.js.map +1 -1
  39. package/dist/ListItemGroup.d.ts +2 -0
  40. package/dist/ListItemGroup.js.map +1 -1
  41. package/dist/ListItemTemplate.js +1 -1
  42. package/dist/ListItemTemplate.js.map +1 -1
  43. package/dist/Menu.d.ts +4 -0
  44. package/dist/Menu.js.map +1 -1
  45. package/dist/MultiComboBox.d.ts +5 -1
  46. package/dist/MultiComboBox.js +41 -24
  47. package/dist/MultiComboBox.js.map +1 -1
  48. package/dist/MultiInput.d.ts +6 -0
  49. package/dist/MultiInput.js +38 -9
  50. package/dist/MultiInput.js.map +1 -1
  51. package/dist/Panel.d.ts +2 -1
  52. package/dist/Panel.js +2 -1
  53. package/dist/Panel.js.map +1 -1
  54. package/dist/PanelTemplate.js +1 -1
  55. package/dist/PanelTemplate.js.map +1 -1
  56. package/dist/Select.d.ts +2 -0
  57. package/dist/Select.js +3 -0
  58. package/dist/Select.js.map +1 -1
  59. package/dist/Tab.d.ts +8 -1
  60. package/dist/Tab.js +13 -0
  61. package/dist/Tab.js.map +1 -1
  62. package/dist/TabContainer.d.ts +6 -3
  63. package/dist/TabContainer.js +15 -10
  64. package/dist/TabContainer.js.map +1 -1
  65. package/dist/Table.d.ts +1 -0
  66. package/dist/Table.js +25 -10
  67. package/dist/Table.js.map +1 -1
  68. package/dist/TableCustomAnnouncement.d.ts +1 -0
  69. package/dist/TableCustomAnnouncement.js +17 -2
  70. package/dist/TableCustomAnnouncement.js.map +1 -1
  71. package/dist/TableGroupRow.d.ts +60 -0
  72. package/dist/TableGroupRow.js +114 -0
  73. package/dist/TableGroupRow.js.map +1 -0
  74. package/dist/TableGroupRowTemplate.d.ts +2 -0
  75. package/dist/TableGroupRowTemplate.js +7 -0
  76. package/dist/TableGroupRowTemplate.js.map +1 -0
  77. package/dist/TableRowActionBase.d.ts +1 -1
  78. package/dist/TableRowActionBase.js +1 -1
  79. package/dist/TableRowActionBase.js.map +1 -1
  80. package/dist/TableRowActionNavigation.d.ts +2 -1
  81. package/dist/TableRowActionNavigation.js +11 -1
  82. package/dist/TableRowActionNavigation.js.map +1 -1
  83. package/dist/TableRowBase.d.ts +1 -0
  84. package/dist/TableRowBase.js +3 -0
  85. package/dist/TableRowBase.js.map +1 -1
  86. package/dist/TableSelection.js +2 -2
  87. package/dist/TableSelection.js.map +1 -1
  88. package/dist/TableSelectionMulti.js +1 -1
  89. package/dist/TableSelectionMulti.js.map +1 -1
  90. package/dist/TableVirtualizer.d.ts +1 -0
  91. package/dist/TableVirtualizer.js +1 -0
  92. package/dist/TableVirtualizer.js.map +1 -1
  93. package/dist/Token.js +9 -5
  94. package/dist/Token.js.map +1 -1
  95. package/dist/Tokenizer.d.ts +1 -0
  96. package/dist/Tokenizer.js +31 -5
  97. package/dist/Tokenizer.js.map +1 -1
  98. package/dist/bundle.esm.js +3 -0
  99. package/dist/bundle.esm.js.map +1 -1
  100. package/dist/css/themes/Dialog.css +1 -1
  101. package/dist/css/themes/Form.css +1 -1
  102. package/dist/css/themes/FormItemSpan.css +1 -1
  103. package/dist/css/themes/FormLayout.css +1 -1
  104. package/dist/css/themes/Icon.css +1 -1
  105. package/dist/css/themes/ListItemBase.css +1 -1
  106. package/dist/css/themes/OptionBase.css +1 -1
  107. package/dist/css/themes/Select.css +1 -1
  108. package/dist/css/themes/SliderTooltip.css +1 -1
  109. package/dist/css/themes/Table.css +1 -1
  110. package/dist/css/themes/TableGroupRow.css +1 -0
  111. package/dist/css/themes/TableRowBase.css +1 -1
  112. package/dist/css/themes/Toolbar.css +1 -1
  113. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  114. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  115. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  116. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  117. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  118. package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +6 -5
  119. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  120. package/dist/css/themes/sap_horizon_hc_auto/parameters-bundle.css +4 -2
  121. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  122. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  123. package/dist/custom-elements-internal.json +1271 -111
  124. package/dist/custom-elements.json +591 -12
  125. package/dist/dynamic-date-range-options/DateTimeRangeTemplate.js +7 -2
  126. package/dist/dynamic-date-range-options/DateTimeRangeTemplate.js.map +1 -1
  127. package/dist/dynamic-date-range-options/FromDateTimeTemplate.js +1 -1
  128. package/dist/dynamic-date-range-options/FromDateTimeTemplate.js.map +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  133. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  134. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  135. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  136. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  137. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  138. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  139. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  140. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  141. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  142. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  143. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  144. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  148. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  149. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  150. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  151. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  152. package/dist/generated/assets/i18n/messagebundle_id.json +1 -1
  153. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  154. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  155. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  156. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  157. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  158. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  159. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  160. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  161. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  162. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  163. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  164. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  165. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  166. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  167. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  168. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  169. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  170. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  171. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  172. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  173. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  174. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  175. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  176. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  177. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  178. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  179. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  180. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  181. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  182. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  183. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  184. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  185. package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
  186. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  187. package/dist/generated/assets/themes/sap_horizon_hc_auto/parameters-bundle.css.json +1 -1
  188. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  189. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  190. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  191. package/dist/generated/i18n/i18n-defaults.js +6 -5
  192. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  193. package/dist/generated/themes/Dialog.css.d.ts +1 -1
  194. package/dist/generated/themes/Dialog.css.js +1 -1
  195. package/dist/generated/themes/Dialog.css.js.map +1 -1
  196. package/dist/generated/themes/Form.css.d.ts +1 -1
  197. package/dist/generated/themes/Form.css.js +1 -1
  198. package/dist/generated/themes/Form.css.js.map +1 -1
  199. package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
  200. package/dist/generated/themes/FormItemSpan.css.js +1 -1
  201. package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
  202. package/dist/generated/themes/FormLayout.css.d.ts +1 -1
  203. package/dist/generated/themes/FormLayout.css.js +1 -1
  204. package/dist/generated/themes/FormLayout.css.js.map +1 -1
  205. package/dist/generated/themes/Icon.css.d.ts +1 -1
  206. package/dist/generated/themes/Icon.css.js +1 -1
  207. package/dist/generated/themes/Icon.css.js.map +1 -1
  208. package/dist/generated/themes/ListItemBase.css.d.ts +1 -1
  209. package/dist/generated/themes/ListItemBase.css.js +1 -1
  210. package/dist/generated/themes/ListItemBase.css.js.map +1 -1
  211. package/dist/generated/themes/OptionBase.css.d.ts +1 -1
  212. package/dist/generated/themes/OptionBase.css.js +1 -1
  213. package/dist/generated/themes/OptionBase.css.js.map +1 -1
  214. package/dist/generated/themes/Select.css.d.ts +1 -1
  215. package/dist/generated/themes/Select.css.js +1 -1
  216. package/dist/generated/themes/Select.css.js.map +1 -1
  217. package/dist/generated/themes/SliderTooltip.css.d.ts +1 -1
  218. package/dist/generated/themes/SliderTooltip.css.js +1 -1
  219. package/dist/generated/themes/SliderTooltip.css.js.map +1 -1
  220. package/dist/generated/themes/Table.css.d.ts +1 -1
  221. package/dist/generated/themes/Table.css.js +1 -1
  222. package/dist/generated/themes/Table.css.js.map +1 -1
  223. package/dist/generated/themes/TableGroupRow.css.d.ts +2 -0
  224. package/dist/generated/themes/TableGroupRow.css.js +8 -0
  225. package/dist/generated/themes/TableGroupRow.css.js.map +1 -0
  226. package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
  227. package/dist/generated/themes/TableRowBase.css.js +1 -1
  228. package/dist/generated/themes/TableRowBase.css.js.map +1 -1
  229. package/dist/generated/themes/Toolbar.css.d.ts +1 -1
  230. package/dist/generated/themes/Toolbar.css.js +1 -1
  231. package/dist/generated/themes/Toolbar.css.js.map +1 -1
  232. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  233. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  234. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  235. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  236. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  237. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  238. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  239. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  240. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  241. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  242. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  243. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  244. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  245. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  246. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  247. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
  248. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +6 -5
  249. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
  250. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  251. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  252. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  253. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.d.ts +1 -1
  254. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js +4 -2
  255. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js.map +1 -1
  256. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  257. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  258. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  259. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  260. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  261. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  262. package/dist/vscode.html-custom-data.json +142 -22
  263. package/dist/web-types.json +351 -40
  264. package/package-scripts.cjs +1 -0
  265. package/package.json +9 -9
  266. package/src/IconTemplate.tsx +18 -0
  267. package/src/ListItemBaseTemplate.tsx +3 -3
  268. package/src/ListItemTemplate.tsx +0 -2
  269. package/src/PanelTemplate.tsx +1 -0
  270. package/src/TableGroupRowTemplate.tsx +24 -0
  271. package/src/dynamic-date-range-options/DateTimeRangeTemplate.tsx +8 -2
  272. package/src/dynamic-date-range-options/FromDateTimeTemplate.tsx +1 -1
  273. package/src/i18n/messagebundle.properties +2 -0
  274. package/src/i18n/messagebundle_ar.properties +26 -6
  275. package/src/i18n/messagebundle_bg.properties +24 -4
  276. package/src/i18n/messagebundle_ca.properties +24 -4
  277. package/src/i18n/messagebundle_cnr.properties +24 -4
  278. package/src/i18n/messagebundle_cs.properties +25 -5
  279. package/src/i18n/messagebundle_cy.properties +24 -4
  280. package/src/i18n/messagebundle_da.properties +25 -5
  281. package/src/i18n/messagebundle_de.properties +24 -4
  282. package/src/i18n/messagebundle_el.properties +24 -4
  283. package/src/i18n/messagebundle_en.properties +24 -4
  284. package/src/i18n/messagebundle_en_GB.properties +24 -4
  285. package/src/i18n/messagebundle_en_US_sappsd.properties +24 -4
  286. package/src/i18n/messagebundle_en_US_saprigi.properties +22 -4
  287. package/src/i18n/messagebundle_en_US_saptrc.properties +24 -4
  288. package/src/i18n/messagebundle_es.properties +25 -5
  289. package/src/i18n/messagebundle_es_MX.properties +24 -4
  290. package/src/i18n/messagebundle_et.properties +24 -4
  291. package/src/i18n/messagebundle_fi.properties +24 -4
  292. package/src/i18n/messagebundle_fr.properties +25 -5
  293. package/src/i18n/messagebundle_fr_CA.properties +28 -8
  294. package/src/i18n/messagebundle_hi.properties +25 -5
  295. package/src/i18n/messagebundle_hr.properties +24 -4
  296. package/src/i18n/messagebundle_hu.properties +24 -4
  297. package/src/i18n/messagebundle_id.properties +25 -5
  298. package/src/i18n/messagebundle_it.properties +25 -5
  299. package/src/i18n/messagebundle_iw.properties +24 -4
  300. package/src/i18n/messagebundle_ja.properties +24 -4
  301. package/src/i18n/messagebundle_kk.properties +24 -4
  302. package/src/i18n/messagebundle_ko.properties +27 -7
  303. package/src/i18n/messagebundle_lt.properties +24 -4
  304. package/src/i18n/messagebundle_lv.properties +24 -4
  305. package/src/i18n/messagebundle_mk.properties +25 -5
  306. package/src/i18n/messagebundle_ms.properties +24 -4
  307. package/src/i18n/messagebundle_nl.properties +24 -4
  308. package/src/i18n/messagebundle_no.properties +25 -5
  309. package/src/i18n/messagebundle_pl.properties +24 -4
  310. package/src/i18n/messagebundle_pt.properties +24 -4
  311. package/src/i18n/messagebundle_pt_PT.properties +24 -4
  312. package/src/i18n/messagebundle_ro.properties +24 -4
  313. package/src/i18n/messagebundle_ru.properties +26 -6
  314. package/src/i18n/messagebundle_sh.properties +24 -4
  315. package/src/i18n/messagebundle_sk.properties +24 -4
  316. package/src/i18n/messagebundle_sl.properties +25 -5
  317. package/src/i18n/messagebundle_sr.properties +24 -4
  318. package/src/i18n/messagebundle_sv.properties +24 -4
  319. package/src/i18n/messagebundle_th.properties +24 -4
  320. package/src/i18n/messagebundle_tr.properties +24 -4
  321. package/src/i18n/messagebundle_uk.properties +36 -16
  322. package/src/i18n/messagebundle_vi.properties +25 -5
  323. package/src/i18n/messagebundle_zh_CN.properties +26 -6
  324. package/src/i18n/messagebundle_zh_TW.properties +24 -4
  325. package/src/themes/Dialog.css +2 -2
  326. package/src/themes/FormItemSpan.css +4 -4
  327. package/src/themes/FormLayout.css +4 -4
  328. package/src/themes/Icon.css +6 -0
  329. package/src/themes/ListItemBase.css +4 -3
  330. package/src/themes/OptionBase.css +6 -0
  331. package/src/themes/Select.css +11 -0
  332. package/src/themes/SliderTooltip.css +1 -1
  333. package/src/themes/Table.css +1 -4
  334. package/src/themes/TableGroupRow.css +20 -0
  335. package/src/themes/TableRowBase.css +5 -0
  336. package/src/themes/Toolbar.css +2 -2
  337. package/src/themes/base/Select-parameters.css +2 -0
  338. package/src/themes/base/sizes-parameters.css +2 -2
  339. package/src/themes/sap_fiori_3_hcb/Link-parameters.css +1 -1
  340. package/src/themes/sap_fiori_3_hcw/Link-parameters.css +1 -1
  341. package/src/themes/sap_horizon/Select-parameters.css +6 -3
  342. package/src/themes/sap_horizon_dark/Select-parameters.css +6 -3
  343. package/src/themes/sap_horizon_hcb/Link-parameters.css +1 -1
  344. package/src/themes/sap_horizon_hcw/Link-parameters.css +1 -1
  345. package/src/themes/base/SliderTooltip-parameters.css +0 -3
  346. package/src/themes/sap_fiori_3/SliderTooltip-parameters.css +0 -5
  347. package/src/themes/sap_fiori_3_dark/SliderTooltip-parameters.css +0 -5
  348. package/src/themes/sap_fiori_3_hcb/SliderTooltip-parameters.css +0 -5
  349. package/src/themes/sap_fiori_3_hcw/SliderTooltip-parameters.css +0 -5
  350. package/src/themes/sap_horizon_dark/SliderTooltip-parameters.css +0 -1
  351. package/src/themes/sap_horizon_hcb/SliderTooltip-parameters.css +0 -1
  352. package/src/themes/sap_horizon_hcw/SliderTooltip-parameters.css +0 -1
package/dist/Form.js CHANGED
@@ -57,10 +57,10 @@ const DEFAULT_FORM_ITEM_LAYOUT_S = "1fr";
57
57
  *
58
58
  * The Form component reacts and changes its layout on predefined breakpoints.
59
59
  * Depending on its size, the Form content (FormGroups and FormItems) gets divided into one or more columns as follows:
60
- * - **S** (< 600px) – 1 column is recommended (default: 1)
61
- * - **M** (600px - 1022px) – up to 2 columns are recommended (default: 1)
62
- * - **L** (1023px - 1439px) - up to 3 columns are recommended (default: 2)
63
- * - **XL** (> 1439px) – up to 6 columns are recommended (default: 3)
60
+ * - **S** (0 - 599px) – 1 column is recommended (default: 1)
61
+ * - **M** (600px - 1023px) – up to 2 columns are recommended (default: 1)
62
+ * - **L** (1024px - 1439px) - up to 3 columns are recommended (default: 2)
63
+ * - **XL** (>= 1440px) – up to 6 columns are recommended (default: 3)
64
64
  *
65
65
  * To change the layout, use the `layout` property - f.e. layout="S1 M2 L3 XL6".
66
66
  *
@@ -527,11 +527,11 @@ let Form = Form_1 = class Form extends UI5Element {
527
527
  }
528
528
  else if (step === "M") {
529
529
  supporedColumnsNumber = StepColumn.M;
530
- containerQuery = `@container (width > 599px) and (width < 1024px) {`;
530
+ containerQuery = `@container (min-width: 600px) and (max-width: 1023px) {`;
531
531
  }
532
532
  else if (step === "L") {
533
533
  supporedColumnsNumber = StepColumn.L;
534
- containerQuery = `@container (width > 1023px) and (width < 1439px) {`;
534
+ containerQuery = `@container (min-width: 1024px) and (max-width: 1439px) {`;
535
535
  }
536
536
  else if (step === "XL") {
537
537
  containerQuery = `@container (min-width: 1440px) {`;
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 type { Slot, DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type { AriaRole } from \"@ui5/webcomponents-base\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\n\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 FormAccessibleMode from \"./types/FormAccessibleMode.js\";\nimport type FormGroup from \"./FormGroup.js\";\nimport type TitleLevel from \"./types/TitleLevel.js\";\n\nimport { FORM_ACCESSIBLE_NAME } from \"./generated/i18n/i18n-defaults.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\theaderLevel?: `${TitleLevel}`;\n\taccessibleMode?: `${FormAccessibleMode}`;\n}\n\ntype GroupItemsInfo = {\n\tgroupItem: IFormItem,\n\titems: Array<ItemsInfo>,\n\taccessibleName: string | undefined,\n\taccessibleNameInner: string | undefined,\n\taccessibleNameRef: string | undefined,\n\taccessibleNameRefInner: string | undefined,\n\trole: AriaRole | 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 accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.10.0\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines id (or many ids) of the element (or elements) that label the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.16.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Defines the accessibility mode of the component in \"edit\" and \"display\" use-cases.\n\t *\n\t * Based on the mode, the component renders different HTML elements and ARIA attributes,\n\t * which are appropriate for the use-case.\n\t *\n\t * **Usage:**\n\t * - Set this property to \"Display\", when the form consists of non-editable (e.g. texts) form items.\n\t * - Set this property to \"Edit\", when the form consists of editable (e.g. input fields) form items.\n\t *\n\t * @default \"Display\"\n\t * @since 2.16.0\n\t * @public\n\t */\n\t@property()\n\taccessibleMode: `${FormAccessibleMode}` = \"Display\";\n\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 compoennt heading level,\n\t * set by the `headerText`.\n\t * @default \"H2\"\n\t * @since 2.10.0\n\t * @public\n\t*/\n\t@property()\n\theaderLevel: `${TitleLevel}` = \"H2\";\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 \"display\"(\"non-edit\") and \"edit\" modes,\n\t * we recommend using \"Large\" item spacing in \"display\"(\"non-edit\") mode, and \"Normal\" - for \"edit\" mode,\n\t * to avoid \"jumping\" effect, caused by the hight difference between texts in \"display\"(\"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()\n\theader!: Slot<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!: DefaultSlot<IFormItem>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\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.setItemsState();\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(`--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(`--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\tsetItemsState() {\n\t\tthis.items.forEach((item: IFormItem) => {\n\t\t\titem.itemSpacing = this.itemSpacing;\n\t\t\titem.accessibleMode = this.accessibleMode;\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 effectiveAccessibleName() {\n\t\tif (this.accessibleName || this.accessibleNameRef) {\n\t\t\treturn getEffectiveAriaLabelText(this);\n\t\t}\n\n\t\treturn this.hasHeader ? undefined : Form.i18nBundle.getText(FORM_ACCESSIBLE_NAME);\n\t}\n\n\tget effectiveАccessibleNameRef(): string | undefined {\n\t\tif (this.accessibleName || this.accessibleNameRef) {\n\t\t\treturn;\n\t\t}\n\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, index: number) => {\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(`--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\tconst accessibleNameRef = (groupItem as FormGroup).effectiveAccessibleNameRef;\n\n\t\t\treturn {\n\t\t\t\tgroupItem,\n\t\t\t\taccessibleName: this.accessibleMode === \"Edit\" ? (groupItem as FormGroup).getEffectiveAccessibleName(index) : undefined,\n\t\t\t\taccessibleNameInner: this.accessibleMode === \"Edit\" ? undefined : (groupItem as FormGroup).getEffectiveAccessibleName(index),\n\t\t\t\taccessibleNameRef: this.accessibleMode === \"Edit\" ? accessibleNameRef : undefined,\n\t\t\t\taccessibleNameRefInner: this.accessibleMode === \"Edit\" ? undefined : accessibleNameRef,\n\t\t\t\titems: this.getItemsInfo((Array.from(groupItem.children) as Array<IFormItem>)),\n\t\t\t\trole: this.accessibleMode === \"Edit\" ? \"form\" : undefined,\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 type { Slot, DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type { AriaRole } from \"@ui5/webcomponents-base\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\n\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 FormAccessibleMode from \"./types/FormAccessibleMode.js\";\nimport type FormGroup from \"./FormGroup.js\";\nimport type TitleLevel from \"./types/TitleLevel.js\";\n\nimport { FORM_ACCESSIBLE_NAME } from \"./generated/i18n/i18n-defaults.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\theaderLevel?: `${TitleLevel}`;\n\taccessibleMode?: `${FormAccessibleMode}`;\n}\n\ntype GroupItemsInfo = {\n\tgroupItem: IFormItem,\n\titems: Array<ItemsInfo>,\n\taccessibleName: string | undefined,\n\taccessibleNameInner: string | undefined,\n\taccessibleNameRef: string | undefined,\n\taccessibleNameRefInner: string | undefined,\n\trole: AriaRole | 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** (0 - 599px) – 1 column is recommended (default: 1)\n * - **M** (600px - 1023px) – up to 2 columns are recommended (default: 1)\n * - **L** (1024px - 1439px) - up to 3 columns are recommended (default: 2)\n * - **XL** (>= 1440px) – 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 accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.10.0\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines id (or many ids) of the element (or elements) that label the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.16.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Defines the accessibility mode of the component in \"edit\" and \"display\" use-cases.\n\t *\n\t * Based on the mode, the component renders different HTML elements and ARIA attributes,\n\t * which are appropriate for the use-case.\n\t *\n\t * **Usage:**\n\t * - Set this property to \"Display\", when the form consists of non-editable (e.g. texts) form items.\n\t * - Set this property to \"Edit\", when the form consists of editable (e.g. input fields) form items.\n\t *\n\t * @default \"Display\"\n\t * @since 2.16.0\n\t * @public\n\t */\n\t@property()\n\taccessibleMode: `${FormAccessibleMode}` = \"Display\";\n\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 compoennt heading level,\n\t * set by the `headerText`.\n\t * @default \"H2\"\n\t * @since 2.10.0\n\t * @public\n\t*/\n\t@property()\n\theaderLevel: `${TitleLevel}` = \"H2\";\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 \"display\"(\"non-edit\") and \"edit\" modes,\n\t * we recommend using \"Large\" item spacing in \"display\"(\"non-edit\") mode, and \"Normal\" - for \"edit\" mode,\n\t * to avoid \"jumping\" effect, caused by the hight difference between texts in \"display\"(\"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()\n\theader!: Slot<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!: DefaultSlot<IFormItem>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\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.setItemsState();\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(`--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(`--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\tsetItemsState() {\n\t\tthis.items.forEach((item: IFormItem) => {\n\t\t\titem.itemSpacing = this.itemSpacing;\n\t\t\titem.accessibleMode = this.accessibleMode;\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 effectiveAccessibleName() {\n\t\tif (this.accessibleName || this.accessibleNameRef) {\n\t\t\treturn getEffectiveAriaLabelText(this);\n\t\t}\n\n\t\treturn this.hasHeader ? undefined : Form.i18nBundle.getText(FORM_ACCESSIBLE_NAME);\n\t}\n\n\tget effectiveАccessibleNameRef(): string | undefined {\n\t\tif (this.accessibleName || this.accessibleNameRef) {\n\t\t\treturn;\n\t\t}\n\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, index: number) => {\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(`--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\tconst accessibleNameRef = (groupItem as FormGroup).effectiveAccessibleNameRef;\n\n\t\t\treturn {\n\t\t\t\tgroupItem,\n\t\t\t\taccessibleName: this.accessibleMode === \"Edit\" ? (groupItem as FormGroup).getEffectiveAccessibleName(index) : undefined,\n\t\t\t\taccessibleNameInner: this.accessibleMode === \"Edit\" ? undefined : (groupItem as FormGroup).getEffectiveAccessibleName(index),\n\t\t\t\taccessibleNameRef: this.accessibleMode === \"Edit\" ? accessibleNameRef : undefined,\n\t\t\t\taccessibleNameRefInner: this.accessibleMode === \"Edit\" ? undefined : accessibleNameRef,\n\t\t\t\titems: this.getItemsInfo((Array.from(groupItem.children) as Array<IFormItem>)),\n\t\t\t\trole: this.accessibleMode === \"Edit\" ? \"form\" : undefined,\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 (min-width: 600px) and (max-width: 1023px) {`;\n\t\t\t} else if (step === \"L\") {\n\t\t\t\tsupporedColumnsNumber = StepColumn.L;\n\t\t\t\tcontainerQuery = `@container (min-width: 1024px) and (max-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"]}
@@ -14,10 +14,16 @@ class GridWalker {
14
14
  this.grid = grid;
15
15
  }
16
16
  left() {
17
- this.colPos = Math.max(this.getColPos() - 1, 0);
17
+ const cellCount = this.grid[this.getRowPos()].length;
18
+ if (cellCount > 1) {
19
+ this.colPos = Math.max(this.getColPos() - 1, 0);
20
+ }
18
21
  }
19
22
  right() {
20
- this.colPos = Math.min(this.getColPos() + 1, this.grid[this.getRowPos()].length - 1);
23
+ const cellCount = this.grid[this.getRowPos()].length;
24
+ if (cellCount > 1) {
25
+ this.colPos = Math.min(this.getColPos() + 1, cellCount - 1);
26
+ }
21
27
  }
22
28
  up() {
23
29
  this.rowPos = Math.max(this.getRowPos() - 1, 0);
@@ -1 +1 @@
1
- {"version":3,"file":"GridWalker.js","sourceRoot":"","sources":["../src/GridWalker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU;IAQf,YAAY,OAAoB,CAAC,EAAE,CAAC;QANpC,WAAM,GAAW,CAAC,CAAC;QACnB,WAAM,GAAW,CAAC,CAAC;QACnB,aAAQ,GAAW,EAAE,CAAC;QACtB,gBAAW,GAAW,CAAC,CAAC;QACxB,eAAU,GAAW,CAAC,CAAC;QAGtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,IAAI;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,EAAE;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,IAAI;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClG,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED,GAAG;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAC/C,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,CAAC;aAAM,CAAC;YACP,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC;IAED,OAAO,CAAC,IAAiB;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,UAAU,CAAC,OAAgB;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YACnC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;gBAC9B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACvB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACxB,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,MAAc;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,SAAS,CAAC,MAAc;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,cAAc,CAAC,WAAmB;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;IAED,cAAc;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,UAAkB;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;CACD;AAED,eAAe,UAAU,CAAC","sourcesContent":["/**\n * The GridWalker object represents the elements of a two-dimensional grid system and a position within them.\n *\n * @class\n * @private\n */\nclass GridWalker {\n\tgrid: unknown[][];\n\trowPos: number = 0;\n\tcolPos: number = 0;\n\tpageSize: number = 20;\n\tfirstRowPos: number = 0;\n\tlastRowPos: number = 0;\n\n\tconstructor(grid: unknown[][] = [[]]) {\n\t\tthis.grid = grid;\n\t}\n\n\tleft() {\n\t\tthis.colPos = Math.max(this.getColPos() - 1, 0);\n\t}\n\n\tright() {\n\t\tthis.colPos = Math.min(this.getColPos() + 1, this.grid[this.getRowPos()].length - 1);\n\t}\n\n\tup() {\n\t\tthis.rowPos = Math.max(this.getRowPos() - 1, 0);\n\t}\n\n\tdown() {\n\t\tthis.rowPos = Math.min(this.getRowPos() + 1, this.grid.length - 1);\n\t}\n\n\tpageup() {\n\t\tthis.colPos = this.getColPos();\n\t\tconst rowPos = this.getRowPos();\n\t\tthis.rowPos = Math.max(rowPos > this.firstRowPos ? this.firstRowPos : 0, rowPos - this.pageSize);\n\t}\n\n\tpagedown() {\n\t\tthis.colPos = this.getColPos();\n\t\tconst rowPos = this.getRowPos();\n\t\tconst endRowPos = this.grid.length - 1;\n\t\tconst lastRowPos = endRowPos + this.lastRowPos;\n\t\tthis.rowPos = Math.min(rowPos < lastRowPos ? lastRowPos : endRowPos, rowPos + this.pageSize);\n\t}\n\n\thome() {\n\t\tthis.colPos = this.getColPos();\n\t\tif (this.colPos === 0) {\n\t\t\tthis.rowPos = (this.rowPos > this.firstRowPos) ? this.firstRowPos : 0;\n\t\t} else {\n\t\t\tthis.colPos = (this.colPos > 1) ? 1 : 0;\n\t\t}\n\t}\n\n\tend() {\n\t\tthis.colPos = this.getColPos();\n\t\tif (this.colPos === 0) {\n\t\t\tconst endRowPos = this.grid.length - 1;\n\t\t\tconst lastRowPos = endRowPos + this.lastRowPos;\n\t\t\tthis.rowPos = (this.rowPos < lastRowPos) ? lastRowPos : endRowPos;\n\t\t} else {\n\t\t\tconst lastColPos = this.grid[this.rowPos].length - 1;\n\t\t\tthis.colPos = (this.colPos < lastColPos) ? lastColPos : 0;\n\t\t}\n\t}\n\n\tsetGrid(grid: unknown[][]) {\n\t\tthis.grid = grid;\n\t}\n\n\tgetCurrent() {\n\t\treturn this.grid[this.getRowPos()][this.getColPos()];\n\t}\n\n\tsetCurrent(current: unknown) {\n\t\tthis.grid.forEach((row, rowIndex) => {\n\t\t\trow.forEach((cell, colIndex) => {\n\t\t\t\tif (cell === current) {\n\t\t\t\t\tthis.rowPos = rowIndex;\n\t\t\t\t\tthis.colPos = colIndex;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tsetRowPos(rowPos: number) {\n\t\tthis.rowPos = rowPos;\n\t}\n\n\tgetRowPos() {\n\t\treturn Math.min(this.rowPos, this.grid.length - 1);\n\t}\n\n\tsetColPos(colPos: number) {\n\t\tthis.colPos = colPos;\n\t}\n\n\tgetColPos() {\n\t\treturn Math.min(this.colPos, this.grid[this.getRowPos()].length - 1);\n\t}\n\n\tsetFirstRowPos(firstRowPos: number) {\n\t\tthis.firstRowPos = firstRowPos;\n\t}\n\n\tgetFirstRowPos() {\n\t\treturn this.firstRowPos;\n\t}\n\n\tsetLastRowPos(lastRowPos: number) {\n\t\tthis.lastRowPos = lastRowPos;\n\t}\n\n\tgetLastRowPos() {\n\t\treturn this.lastRowPos;\n\t}\n}\n\nexport default GridWalker;\n"]}
1
+ {"version":3,"file":"GridWalker.js","sourceRoot":"","sources":["../src/GridWalker.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The GridWalker object represents the elements of a two-dimensional grid system and a position within them.\n *\n * @class\n * @private\n */\nclass GridWalker {\n\tgrid: unknown[][];\n\trowPos: number = 0;\n\tcolPos: number = 0;\n\tpageSize: number = 20;\n\tfirstRowPos: number = 0;\n\tlastRowPos: number = 0;\n\n\tconstructor(grid: unknown[][] = [[]]) {\n\t\tthis.grid = grid;\n\t}\n\n\tleft() {\n\t\tconst cellCount = this.grid[this.getRowPos()].length;\n\t\tif (cellCount > 1) {\n\t\t\tthis.colPos = Math.max(this.getColPos() - 1, 0);\n\t\t}\n\t}\n\n\tright() {\n\t\tconst cellCount = this.grid[this.getRowPos()].length;\n\t\tif (cellCount > 1) {\n\t\t\tthis.colPos = Math.min(this.getColPos() + 1, cellCount - 1);\n\t\t}\n\t}\n\n\tup() {\n\t\tthis.rowPos = Math.max(this.getRowPos() - 1, 0);\n\t}\n\n\tdown() {\n\t\tthis.rowPos = Math.min(this.getRowPos() + 1, this.grid.length - 1);\n\t}\n\n\tpageup() {\n\t\tthis.colPos = this.getColPos();\n\t\tconst rowPos = this.getRowPos();\n\t\tthis.rowPos = Math.max(rowPos > this.firstRowPos ? this.firstRowPos : 0, rowPos - this.pageSize);\n\t}\n\n\tpagedown() {\n\t\tthis.colPos = this.getColPos();\n\t\tconst rowPos = this.getRowPos();\n\t\tconst endRowPos = this.grid.length - 1;\n\t\tconst lastRowPos = endRowPos + this.lastRowPos;\n\t\tthis.rowPos = Math.min(rowPos < lastRowPos ? lastRowPos : endRowPos, rowPos + this.pageSize);\n\t}\n\n\thome() {\n\t\tthis.colPos = this.getColPos();\n\t\tif (this.colPos === 0) {\n\t\t\tthis.rowPos = (this.rowPos > this.firstRowPos) ? this.firstRowPos : 0;\n\t\t} else {\n\t\t\tthis.colPos = (this.colPos > 1) ? 1 : 0;\n\t\t}\n\t}\n\n\tend() {\n\t\tthis.colPos = this.getColPos();\n\t\tif (this.colPos === 0) {\n\t\t\tconst endRowPos = this.grid.length - 1;\n\t\t\tconst lastRowPos = endRowPos + this.lastRowPos;\n\t\t\tthis.rowPos = (this.rowPos < lastRowPos) ? lastRowPos : endRowPos;\n\t\t} else {\n\t\t\tconst lastColPos = this.grid[this.rowPos].length - 1;\n\t\t\tthis.colPos = (this.colPos < lastColPos) ? lastColPos : 0;\n\t\t}\n\t}\n\n\tsetGrid(grid: unknown[][]) {\n\t\tthis.grid = grid;\n\t}\n\n\tgetCurrent() {\n\t\treturn this.grid[this.getRowPos()][this.getColPos()];\n\t}\n\n\tsetCurrent(current: unknown) {\n\t\tthis.grid.forEach((row, rowIndex) => {\n\t\t\trow.forEach((cell, colIndex) => {\n\t\t\t\tif (cell === current) {\n\t\t\t\t\tthis.rowPos = rowIndex;\n\t\t\t\t\tthis.colPos = colIndex;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tsetRowPos(rowPos: number) {\n\t\tthis.rowPos = rowPos;\n\t}\n\n\tgetRowPos() {\n\t\treturn Math.min(this.rowPos, this.grid.length - 1);\n\t}\n\n\tsetColPos(colPos: number) {\n\t\tthis.colPos = colPos;\n\t}\n\n\tgetColPos() {\n\t\treturn Math.min(this.colPos, this.grid[this.getRowPos()].length - 1);\n\t}\n\n\tsetFirstRowPos(firstRowPos: number) {\n\t\tthis.firstRowPos = firstRowPos;\n\t}\n\n\tgetFirstRowPos() {\n\t\treturn this.firstRowPos;\n\t}\n\n\tsetLastRowPos(lastRowPos: number) {\n\t\tthis.lastRowPos = lastRowPos;\n\t}\n\n\tgetLastRowPos() {\n\t\treturn this.lastRowPos;\n\t}\n}\n\nexport default GridWalker;\n"]}
package/dist/Icon.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import type { AriaRole } from "@ui5/webcomponents-base/dist/types.js";
3
+ import type { Slot } from "@ui5/webcomponents-base/dist/UI5Element.js";
3
4
  import type { I18nText } from "@ui5/webcomponents-base/dist/i18nBundle.js";
4
5
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
5
6
  import type IconDesign from "./types/IconDesign.js";
@@ -142,6 +143,23 @@ declare class Icon extends UI5Element implements IIcon {
142
143
  * @since 2.0.0
143
144
  */
144
145
  mode: `${IconMode}`;
146
+ /**
147
+ * Defines the font icon to be used as an icon.
148
+ * Intended for font-based icon libraries where
149
+ * the application loads the font and provides a slotted element with the unicode character.
150
+ * When this slot is used, the component renders a `<span>` instead of an `<svg>`.
151
+ * Accessibility is fully delegated to the application — set `accessible-name` and `mode` explicitly.
152
+ *
153
+ * **Example:**
154
+ * ```html
155
+ * <ui5-icon mode="Image" accessible-name="Home">
156
+ * <i class="fa fa-home" slot="fontIcon"></i>
157
+ * </ui5-icon>
158
+ * ```
159
+ * @public
160
+ * @since 2.23.0
161
+ */
162
+ fontIcon: Slot<HTMLElement>;
145
163
  /**
146
164
  * @private
147
165
  */
@@ -175,6 +193,7 @@ declare class Icon extends UI5Element implements IIcon {
175
193
  get effectiveAccessibleRole(): "button" | "presentation" | "img";
176
194
  onEnterDOM(): void;
177
195
  onBeforeRendering(): Promise<void>;
196
+ get hasFontIcon(): boolean;
178
197
  get hasIconTooltip(): string | false | undefined;
179
198
  _getAriaTypeDescription(): string;
180
199
  get accessibilityInfo(): {
package/dist/Icon.js CHANGED
@@ -10,6 +10,7 @@ import jsxRender from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
10
10
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
11
11
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
12
12
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
13
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
13
14
  import { getIconData, getIconDataSync } from "@ui5/webcomponents-base/dist/asset-registries/Icons.js";
14
15
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
15
16
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
@@ -177,6 +178,16 @@ let Icon = Icon_1 = class Icon extends UI5Element {
177
178
  }
178
179
  }
179
180
  async onBeforeRendering() {
181
+ if (this.fontIcon.length) {
182
+ // Font-based icon via slot — skip registry, accessibility is app's responsibility
183
+ if (!this.accessibleName) {
184
+ this.effectiveAccessibleName = undefined;
185
+ }
186
+ else {
187
+ this.effectiveAccessibleName = this.accessibleName;
188
+ }
189
+ return;
190
+ }
180
191
  const name = this.name;
181
192
  if (!name) {
182
193
  return;
@@ -226,6 +237,9 @@ let Icon = Icon_1 = class Icon extends UI5Element {
226
237
  this.effectiveAccessibleName = undefined;
227
238
  }
228
239
  }
240
+ get hasFontIcon() {
241
+ return this.fontIcon.length > 0;
242
+ }
229
243
  get hasIconTooltip() {
230
244
  return this.showTooltip && this.effectiveAccessibleName;
231
245
  }
@@ -265,6 +279,9 @@ __decorate([
265
279
  __decorate([
266
280
  property()
267
281
  ], Icon.prototype, "mode", void 0);
282
+ __decorate([
283
+ slot({ type: HTMLElement })
284
+ ], Icon.prototype, "fontIcon", void 0);
268
285
  __decorate([
269
286
  property({ type: Array, noAttribute: true })
270
287
  ], Icon.prototype, "pathData", void 0);
package/dist/Icon.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","sourceRoot":"","sources":["../src/Icon.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport jsxRender from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport type { AriaRole } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type { IconData, UnsafeIconData } from \"@ui5/webcomponents-base/dist/asset-registries/Icons.js\";\nimport { getIconData, getIconDataSync } from \"@ui5/webcomponents-base/dist/asset-registries/Icons.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { I18nText } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { isSpace, isEnter } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport executeTemplate from \"@ui5/webcomponents-base/dist/renderer/executeTemplate.js\";\nimport IconTemplate from \"./IconTemplate.js\";\nimport type IconDesign from \"./types/IconDesign.js\";\nimport IconMode from \"./types/IconMode.js\";\n\nimport { ICON_ARIA_TYPE_IMAGE, ICON_ARIA_TYPE_INTERACTIVE } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport iconCss from \"./generated/themes/Icon.css.js\";\n\n/**\n * Interface for components that represent an icon, usable in numerous higher-order components\n * @public\n */\ninterface IIcon extends HTMLElement { }\n\nconst ICON_NOT_FOUND = \"ICON_NOT_FOUND\";\n\n/**\n * @class\n * ### Overview\n *\n * The `ui5-icon` component represents an SVG icon.\n * There are two main scenarios how the `ui5-icon` component is used:\n * as a purely decorative element,\n * or as an interactive element that can be focused and clicked.\n *\n * ### Usage\n *\n * 1. **Get familiar with the icons collections.**\n *\n * Before displaying an icon, you need to explore the icons collections to find and import the desired icon.\n *\n * Currently there are 3 icons collection, available as 3 npm packages:\n *\n * - [@ui5/webcomponents-icons](https://www.npmjs.com/package/@ui5/webcomponents-icons) represents the \"SAP-icons\" collection and includes the following\n * [icons](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html#/overview/SAP-icons).\n * - [@ui5/webcomponents-icons-tnt](https://www.npmjs.com/package/@ui5/webcomponents-icons-tnt) represents the \"tnt\" collection and includes the following\n * [icons](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html#/overview/SAP-icons-TNT).\n * - [@ui5/webcomponents-icons-business-suite](https://www.npmjs.com/package/@ui5/webcomponents-icons-business-suite) represents the \"business-suite\" collection and includes the following\n * [icons](https://ui5.sap.com/test-resources/sap/m/demokit/iconExplorer/webapp/index.html#/overview/BusinessSuiteInAppSymbols).\n *\n * 2. **After exploring the icons collections, add one or more of the packages as dependencies to your project.**\n *\n * `npm i @ui5/webcomponents-icons`\n * `npm i @ui5/webcomponents-icons-tnt`\n * `npm i @ui5/webcomponents-icons-business-suite`\n *\n * 3. **Then, import the desired icon**.\n *\n * `import \"@ui5/\\{package_name\\}/dist/\\{icon_name\\}.js\";`\n *\n * **For Example**:\n *\n * For the standard \"SAP-icons\" icon collection, import an icon from the `@ui5/webcomponents-icons` package:\n *\n * `import \"@ui5/webcomponents-icons/dist/employee.js\";`\n *\n * For the \"tnt\" (SAP Fiori Tools) icon collection, import an icon from the `@ui5/webcomponents-icons-tnt` package:\n *\n * `import \"@ui5/webcomponents-icons-tnt/dist/antenna.js\";`\n *\n * For the \"business-suite\" (SAP Business Suite) icon collection, import an icon from the `@ui5/webcomponents-icons-business-suite` package:\n *\n * `import \"@ui5/webcomponents-icons-business-suite/dist/ab-testing.js\";`\n *\n * 4. **Display the icon using the `ui5-icon` web component.**\n * Set the icon collection (\"SAP-icons\", \"tnt\" or \"business-suite\" - \"SAP-icons\" is the default icon collection and can be skipped)\n * and the icon name to the `name` property.\n *\n * `<ui5-icon name=\"employee\"></ui5-icon>`\n * `<ui5-icon name=\"tnt/antenna\"></ui5-icon>`\n * `<ui5-icon name=\"business-suite/ab-testing\"></ui5-icon>`\n *\n * ### Keyboard Handling\n *\n * - [Space] / [Enter] or [Return] - Fires the `click` event if the `mode` property is set to `Interactive`.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Icon.js\";`\n * @csspart root - Used to style the outermost wrapper of the `ui5-icon`.\n * @constructor\n * @extends UI5Element\n * @implements {IIcon}\n * @public\n */\n@customElement({\n\ttag: \"ui5-icon\",\n\tlanguageAware: true,\n\tthemeAware: true,\n\trenderer: jsxRender,\n\ttemplate: IconTemplate,\n\tstyles: iconCss,\n})\n/**\n * Fired when the component is activated by mouse/touch, keyboard (Enter or Space),\n * or screen reader virtual cursor activation.\n *\n * **Note:** The event will not be fired if the `mode` property is set to `Decorative` or `Image`.\n * @public\n * @since 2.11.0\n */\n@event(\"click\", {\n\tbubbles: true,\n})\nclass Icon extends UI5Element implements IIcon {\n\teventDetails!: {\n\t\tclick: void\n\t}\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t/**\n\t * Defines the component semantic design.\n\t * @default \"Default\"\n\t * @public\n\t * @since 1.9.2\n\t */\n\t@property()\n\tdesign: `${IconDesign}` = \"Default\";\n\n\t/**\n\t * Defines the unique identifier (icon name) of the component.\n\t *\n\t * To browse all available icons, see the\n\t * [SAP Icons](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html),\n\t * [SAP Fiori Tools](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html#/overview/SAP-icons-TNT) and\n\t * [SAP Business Suite](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html)\n\t *\n\t * Example:\n\t * `name='add'`, `name='delete'`, `name='employee'`.\n\t *\n\t * **Note:** To use the SAP Fiori Tools icons,\n\t * you need to set the `tnt` prefix in front of the icon's name.\n\t *\n\t * Example:\n\t * `name='tnt/antenna'`, `name='tnt/actor'`, `name='tnt/api'`.\n\t *\n\t * **Note:** To use the SAP Business Suite icons,\n\t * you need to set the `business-suite` prefix in front of the icon's name.\n\t *\n\t * Example:\n\t * `name='business-suite/3d'`, `name='business-suite/1x2-grid-layout'`, `name='business-suite/4x4-grid-layout'`.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tname?: string;\n\n\t/**\n\t * Defines the text alternative of the component.\n\t * If not provided a default text alternative will be set, if present.\n\t *\n\t * **Note:** Every icon should have a text alternative in order to\n\t * calculate its accessible name.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines whether the component should have a tooltip.\n\t *\n\t * **Note:** The tooltip text should be provided via the `accessible-name` property.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowTooltip = false;\n\n\t/**\n\t * Defines the mode of the component.\n\t * @default \"Decorative\"\n\t * @public\n\t * @since 2.0.0\n\t */\n\t@property()\n\tmode: `${IconMode}` = \"Decorative\";\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Array, noAttribute: true })\n\tpathData: Array<string> = [];\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Object, noAttribute: true })\n\taccData?: I18nText;\n\n\t/**\n\t* @private\n\t*/\n\t@property({ type: Boolean })\n\tinvalid = false;\n\n\t/**\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\teffectiveAccessibleName?: string;\n\n\tltr?: boolean;\n\tpackageName?: string;\n\tviewBox?: string;\n\tcustomTemplate?: object;\n\tcustomTemplateAsString?: string;\n\n\t_onclick(e: MouseEvent) {\n\t\tif (this.mode !== IconMode.Interactive) {\n\t\t\treturn;\n\t\t}\n\n\t\t// prevents the native browser \"click\" event from firing\n\t\te.stopImmediatePropagation();\n\n\t\tthis.fireDecoratorEvent(\"click\");\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (this.mode !== IconMode.Interactive) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis.fireDecoratorEvent(\"click\");\n\t\t}\n\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault(); // prevent scrolling\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (this.mode === IconMode.Interactive && isSpace(e)) {\n\t\t\tthis.fireDecoratorEvent(\"click\");\n\t\t}\n\t}\n\n\t/**\n\t* Enforce \"ltr\" direction, based on the icons collection metadata.\n\t*/\n\tget _dir() {\n\t\treturn this.ltr ? \"ltr\" : undefined;\n\t}\n\n\tget effectiveAriaHidden() {\n\t\treturn this.mode === IconMode.Decorative ? \"true\" : undefined;\n\t}\n\n\tget _tabIndex() {\n\t\treturn this.mode === IconMode.Interactive ? 0 : undefined;\n\t}\n\n\tget effectiveAccessibleRole() {\n\t\tswitch (this.mode) {\n\t\tcase IconMode.Interactive:\n\t\t\treturn \"button\";\n\t\tcase IconMode.Decorative:\n\t\t\treturn \"presentation\";\n\t\tdefault:\n\t\t\treturn \"img\";\n\t\t}\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\tconst name = this.name;\n\t\tif (!name) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet iconData: typeof ICON_NOT_FOUND | IconData | UnsafeIconData | undefined = getIconDataSync(name);\n\t\tif (!iconData) {\n\t\t\ticonData = await getIconData(name);\n\t\t}\n\n\t\tif (!iconData) {\n\t\t\tthis.invalid = true;\n\t\t\t/* eslint-disable-next-line */\n\t\t\treturn console.warn(`Required icon is not registered. Invalid icon name: ${this.name}`);\n\t\t}\n\n\t\tif (iconData === ICON_NOT_FOUND) {\n\t\t\tthis.invalid = true;\n\t\t\t/* eslint-disable-next-line */\n\t\t\treturn console.warn(`Required icon is not registered. You can either import the icon as a module in order to use it e.g. \"@ui5/webcomponents-icons/dist/${name.replace(\"sap-icon://\", \"\")}.js\", or setup a JSON build step and import \"@ui5/webcomponents-icons/dist/AllIcons.js\".`);\n\t\t}\n\n\t\tthis.viewBox = iconData.viewBox || \"0 0 512 512\";\n\n\t\tif (\"customTemplate\" in iconData && iconData.customTemplate) {\n\t\t\tthis.customTemplate = executeTemplate(iconData.customTemplate, this);\n\t\t}\n\n\t\tif (\"customTemplateAsString\" in iconData) {\n\t\t\tthis.customTemplateAsString = iconData.customTemplateAsString;\n\t\t}\n\n\t\t// in case a new valid name is set, show the icon\n\t\tthis.invalid = false;\n\t\tif (\"pathData\" in iconData && iconData.pathData) {\n\t\t\tthis.pathData = Array.isArray(iconData.pathData) ? iconData.pathData : [iconData.pathData];\n\t\t}\n\n\t\tthis.accData = iconData.accData;\n\t\tthis.ltr = iconData.ltr;\n\t\tthis.packageName = iconData.packageName;\n\n\t\tif (this.accessibleName) {\n\t\t\tthis.effectiveAccessibleName = this.accessibleName;\n\t\t} else if (this.accData) {\n\t\t\tif (this.packageName) {\n\t\t\t\tconst i18nBundle = await getI18nBundle(this.packageName);\n\t\t\t\tthis.effectiveAccessibleName = i18nBundle.getText(this.accData) || undefined;\n\t\t\t} else {\n\t\t\t\tthis.effectiveAccessibleName = this.accData?.defaultText || undefined;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.effectiveAccessibleName = undefined;\n\t\t}\n\t}\n\n\tget hasIconTooltip() {\n\t\treturn this.showTooltip && this.effectiveAccessibleName;\n\t}\n\n\t_getAriaTypeDescription() {\n\t\tswitch (this.mode) {\n\t\tcase IconMode.Interactive:\n\t\t\treturn Icon.i18nBundle.getText(ICON_ARIA_TYPE_INTERACTIVE);\n\t\tcase IconMode.Image:\n\t\t\treturn Icon.i18nBundle.getText(ICON_ARIA_TYPE_IMAGE);\n\t\tdefault:\n\t\t\treturn \"\";\n\t\t}\n\t}\n\n\tget accessibilityInfo() {\n\t\tif (this.mode === IconMode.Decorative) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn {\n\t\t\trole: this.effectiveAccessibleRole as AriaRole,\n\t\t\ttype: this._getAriaTypeDescription(),\n\t\t\tdescription: this.effectiveAccessibleName,\n\t\t};\n\t}\n}\n\nIcon.define();\n\nexport default Icon;\nexport type {\n\tIIcon,\n};\n"]}
1
+ {"version":3,"file":"Icon.js","sourceRoot":"","sources":["../src/Icon.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport jsxRender from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport type { AriaRole } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type { Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { IconData, UnsafeIconData } from \"@ui5/webcomponents-base/dist/asset-registries/Icons.js\";\nimport { getIconData, getIconDataSync } from \"@ui5/webcomponents-base/dist/asset-registries/Icons.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { I18nText } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { isSpace, isEnter } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport executeTemplate from \"@ui5/webcomponents-base/dist/renderer/executeTemplate.js\";\nimport IconTemplate from \"./IconTemplate.js\";\nimport type IconDesign from \"./types/IconDesign.js\";\nimport IconMode from \"./types/IconMode.js\";\n\nimport { ICON_ARIA_TYPE_IMAGE, ICON_ARIA_TYPE_INTERACTIVE } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport iconCss from \"./generated/themes/Icon.css.js\";\n\n/**\n * Interface for components that represent an icon, usable in numerous higher-order components\n * @public\n */\ninterface IIcon extends HTMLElement { }\n\nconst ICON_NOT_FOUND = \"ICON_NOT_FOUND\";\n\n/**\n * @class\n * ### Overview\n *\n * The `ui5-icon` component represents an SVG icon.\n * There are two main scenarios how the `ui5-icon` component is used:\n * as a purely decorative element,\n * or as an interactive element that can be focused and clicked.\n *\n * ### Usage\n *\n * 1. **Get familiar with the icons collections.**\n *\n * Before displaying an icon, you need to explore the icons collections to find and import the desired icon.\n *\n * Currently there are 3 icons collection, available as 3 npm packages:\n *\n * - [@ui5/webcomponents-icons](https://www.npmjs.com/package/@ui5/webcomponents-icons) represents the \"SAP-icons\" collection and includes the following\n * [icons](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html#/overview/SAP-icons).\n * - [@ui5/webcomponents-icons-tnt](https://www.npmjs.com/package/@ui5/webcomponents-icons-tnt) represents the \"tnt\" collection and includes the following\n * [icons](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html#/overview/SAP-icons-TNT).\n * - [@ui5/webcomponents-icons-business-suite](https://www.npmjs.com/package/@ui5/webcomponents-icons-business-suite) represents the \"business-suite\" collection and includes the following\n * [icons](https://ui5.sap.com/test-resources/sap/m/demokit/iconExplorer/webapp/index.html#/overview/BusinessSuiteInAppSymbols).\n *\n * 2. **After exploring the icons collections, add one or more of the packages as dependencies to your project.**\n *\n * `npm i @ui5/webcomponents-icons`\n * `npm i @ui5/webcomponents-icons-tnt`\n * `npm i @ui5/webcomponents-icons-business-suite`\n *\n * 3. **Then, import the desired icon**.\n *\n * `import \"@ui5/\\{package_name\\}/dist/\\{icon_name\\}.js\";`\n *\n * **For Example**:\n *\n * For the standard \"SAP-icons\" icon collection, import an icon from the `@ui5/webcomponents-icons` package:\n *\n * `import \"@ui5/webcomponents-icons/dist/employee.js\";`\n *\n * For the \"tnt\" (SAP Fiori Tools) icon collection, import an icon from the `@ui5/webcomponents-icons-tnt` package:\n *\n * `import \"@ui5/webcomponents-icons-tnt/dist/antenna.js\";`\n *\n * For the \"business-suite\" (SAP Business Suite) icon collection, import an icon from the `@ui5/webcomponents-icons-business-suite` package:\n *\n * `import \"@ui5/webcomponents-icons-business-suite/dist/ab-testing.js\";`\n *\n * 4. **Display the icon using the `ui5-icon` web component.**\n * Set the icon collection (\"SAP-icons\", \"tnt\" or \"business-suite\" - \"SAP-icons\" is the default icon collection and can be skipped)\n * and the icon name to the `name` property.\n *\n * `<ui5-icon name=\"employee\"></ui5-icon>`\n * `<ui5-icon name=\"tnt/antenna\"></ui5-icon>`\n * `<ui5-icon name=\"business-suite/ab-testing\"></ui5-icon>`\n *\n * ### Keyboard Handling\n *\n * - [Space] / [Enter] or [Return] - Fires the `click` event if the `mode` property is set to `Interactive`.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Icon.js\";`\n * @csspart root - Used to style the outermost wrapper of the `ui5-icon`.\n * @constructor\n * @extends UI5Element\n * @implements {IIcon}\n * @public\n */\n@customElement({\n\ttag: \"ui5-icon\",\n\tlanguageAware: true,\n\tthemeAware: true,\n\trenderer: jsxRender,\n\ttemplate: IconTemplate,\n\tstyles: iconCss,\n})\n/**\n * Fired when the component is activated by mouse/touch, keyboard (Enter or Space),\n * or screen reader virtual cursor activation.\n *\n * **Note:** The event will not be fired if the `mode` property is set to `Decorative` or `Image`.\n * @public\n * @since 2.11.0\n */\n@event(\"click\", {\n\tbubbles: true,\n})\nclass Icon extends UI5Element implements IIcon {\n\teventDetails!: {\n\t\tclick: void\n\t}\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t/**\n\t * Defines the component semantic design.\n\t * @default \"Default\"\n\t * @public\n\t * @since 1.9.2\n\t */\n\t@property()\n\tdesign: `${IconDesign}` = \"Default\";\n\n\t/**\n\t * Defines the unique identifier (icon name) of the component.\n\t *\n\t * To browse all available icons, see the\n\t * [SAP Icons](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html),\n\t * [SAP Fiori Tools](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html#/overview/SAP-icons-TNT) and\n\t * [SAP Business Suite](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html)\n\t *\n\t * Example:\n\t * `name='add'`, `name='delete'`, `name='employee'`.\n\t *\n\t * **Note:** To use the SAP Fiori Tools icons,\n\t * you need to set the `tnt` prefix in front of the icon's name.\n\t *\n\t * Example:\n\t * `name='tnt/antenna'`, `name='tnt/actor'`, `name='tnt/api'`.\n\t *\n\t * **Note:** To use the SAP Business Suite icons,\n\t * you need to set the `business-suite` prefix in front of the icon's name.\n\t *\n\t * Example:\n\t * `name='business-suite/3d'`, `name='business-suite/1x2-grid-layout'`, `name='business-suite/4x4-grid-layout'`.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tname?: string;\n\n\t/**\n\t * Defines the text alternative of the component.\n\t * If not provided a default text alternative will be set, if present.\n\t *\n\t * **Note:** Every icon should have a text alternative in order to\n\t * calculate its accessible name.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines whether the component should have a tooltip.\n\t *\n\t * **Note:** The tooltip text should be provided via the `accessible-name` property.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowTooltip = false;\n\n\t/**\n\t * Defines the mode of the component.\n\t * @default \"Decorative\"\n\t * @public\n\t * @since 2.0.0\n\t */\n\t@property()\n\tmode: `${IconMode}` = \"Decorative\";\n\n\t/**\n\t * Defines the font icon to be used as an icon.\n\t * Intended for font-based icon libraries where\n\t * the application loads the font and provides a slotted element with the unicode character.\n\t * When this slot is used, the component renders a `<span>` instead of an `<svg>`.\n\t * Accessibility is fully delegated to the application — set `accessible-name` and `mode` explicitly.\n\t *\n\t * **Example:**\n\t * ```html\n\t * <ui5-icon mode=\"Image\" accessible-name=\"Home\">\n\t * <i class=\"fa fa-home\" slot=\"fontIcon\"></i>\n\t * </ui5-icon>\n\t * ```\n\t * @public\n\t * @since 2.23.0\n\t */\n\t@slot({ type: HTMLElement })\n\tfontIcon!: Slot<HTMLElement>;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Array, noAttribute: true })\n\tpathData: Array<string> = [];\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Object, noAttribute: true })\n\taccData?: I18nText;\n\n\t/**\n\t* @private\n\t*/\n\t@property({ type: Boolean })\n\tinvalid = false;\n\n\t/**\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\teffectiveAccessibleName?: string;\n\n\tltr?: boolean;\n\tpackageName?: string;\n\tviewBox?: string;\n\tcustomTemplate?: object;\n\tcustomTemplateAsString?: string;\n\n\t_onclick(e: MouseEvent) {\n\t\tif (this.mode !== IconMode.Interactive) {\n\t\t\treturn;\n\t\t}\n\n\t\t// prevents the native browser \"click\" event from firing\n\t\te.stopImmediatePropagation();\n\n\t\tthis.fireDecoratorEvent(\"click\");\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (this.mode !== IconMode.Interactive) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis.fireDecoratorEvent(\"click\");\n\t\t}\n\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault(); // prevent scrolling\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (this.mode === IconMode.Interactive && isSpace(e)) {\n\t\t\tthis.fireDecoratorEvent(\"click\");\n\t\t}\n\t}\n\n\t/**\n\t* Enforce \"ltr\" direction, based on the icons collection metadata.\n\t*/\n\tget _dir() {\n\t\treturn this.ltr ? \"ltr\" : undefined;\n\t}\n\n\tget effectiveAriaHidden() {\n\t\treturn this.mode === IconMode.Decorative ? \"true\" : undefined;\n\t}\n\n\tget _tabIndex() {\n\t\treturn this.mode === IconMode.Interactive ? 0 : undefined;\n\t}\n\n\tget effectiveAccessibleRole() {\n\t\tswitch (this.mode) {\n\t\tcase IconMode.Interactive:\n\t\t\treturn \"button\";\n\t\tcase IconMode.Decorative:\n\t\t\treturn \"presentation\";\n\t\tdefault:\n\t\t\treturn \"img\";\n\t\t}\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\tif (this.fontIcon.length) {\n\t\t\t// Font-based icon via slot — skip registry, accessibility is app's responsibility\n\t\t\tif (!this.accessibleName) {\n\t\t\t\tthis.effectiveAccessibleName = undefined;\n\t\t\t} else {\n\t\t\t\tthis.effectiveAccessibleName = this.accessibleName;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst name = this.name;\n\t\tif (!name) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet iconData: typeof ICON_NOT_FOUND | IconData | UnsafeIconData | undefined = getIconDataSync(name);\n\t\tif (!iconData) {\n\t\t\ticonData = await getIconData(name);\n\t\t}\n\n\t\tif (!iconData) {\n\t\t\tthis.invalid = true;\n\t\t\t/* eslint-disable-next-line */\n\t\t\treturn console.warn(`Required icon is not registered. Invalid icon name: ${this.name}`);\n\t\t}\n\n\t\tif (iconData === ICON_NOT_FOUND) {\n\t\t\tthis.invalid = true;\n\t\t\t/* eslint-disable-next-line */\n\t\t\treturn console.warn(`Required icon is not registered. You can either import the icon as a module in order to use it e.g. \"@ui5/webcomponents-icons/dist/${name.replace(\"sap-icon://\", \"\")}.js\", or setup a JSON build step and import \"@ui5/webcomponents-icons/dist/AllIcons.js\".`);\n\t\t}\n\n\t\tthis.viewBox = iconData.viewBox || \"0 0 512 512\";\n\n\t\tif (\"customTemplate\" in iconData && iconData.customTemplate) {\n\t\t\tthis.customTemplate = executeTemplate(iconData.customTemplate, this);\n\t\t}\n\n\t\tif (\"customTemplateAsString\" in iconData) {\n\t\t\tthis.customTemplateAsString = iconData.customTemplateAsString;\n\t\t}\n\n\t\t// in case a new valid name is set, show the icon\n\t\tthis.invalid = false;\n\t\tif (\"pathData\" in iconData && iconData.pathData) {\n\t\t\tthis.pathData = Array.isArray(iconData.pathData) ? iconData.pathData : [iconData.pathData];\n\t\t}\n\n\t\tthis.accData = iconData.accData;\n\t\tthis.ltr = iconData.ltr;\n\t\tthis.packageName = iconData.packageName;\n\n\t\tif (this.accessibleName) {\n\t\t\tthis.effectiveAccessibleName = this.accessibleName;\n\t\t} else if (this.accData) {\n\t\t\tif (this.packageName) {\n\t\t\t\tconst i18nBundle = await getI18nBundle(this.packageName);\n\t\t\t\tthis.effectiveAccessibleName = i18nBundle.getText(this.accData) || undefined;\n\t\t\t} else {\n\t\t\t\tthis.effectiveAccessibleName = this.accData?.defaultText || undefined;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.effectiveAccessibleName = undefined;\n\t\t}\n\t}\n\n\tget hasFontIcon() {\n\t\treturn this.fontIcon.length > 0;\n\t}\n\n\tget hasIconTooltip() {\n\t\treturn this.showTooltip && this.effectiveAccessibleName;\n\t}\n\n\t_getAriaTypeDescription() {\n\t\tswitch (this.mode) {\n\t\tcase IconMode.Interactive:\n\t\t\treturn Icon.i18nBundle.getText(ICON_ARIA_TYPE_INTERACTIVE);\n\t\tcase IconMode.Image:\n\t\t\treturn Icon.i18nBundle.getText(ICON_ARIA_TYPE_IMAGE);\n\t\tdefault:\n\t\t\treturn \"\";\n\t\t}\n\t}\n\n\tget accessibilityInfo() {\n\t\tif (this.mode === IconMode.Decorative) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn {\n\t\t\trole: this.effectiveAccessibleRole as AriaRole,\n\t\t\ttype: this._getAriaTypeDescription(),\n\t\t\tdescription: this.effectiveAccessibleName,\n\t\t};\n\t}\n}\n\nIcon.define();\n\nexport default Icon;\nexport type {\n\tIIcon,\n};\n"]}
@@ -1,5 +1,8 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "@ui5/webcomponents-base/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
2
2
  export default function IconTemplate() {
3
+ if (this.hasFontIcon) {
4
+ return (_jsx("span", { class: "ui5-icon-root", part: "root", tabindex: this._tabIndex, role: this.effectiveAccessibleRole, "aria-label": this.effectiveAccessibleName, "aria-hidden": this.effectiveAriaHidden, onKeyDown: this._onkeydown, onKeyUp: this._onkeyup, onClick: this._onclick, children: _jsx("slot", { name: "fontIcon" }) }));
5
+ }
3
6
  return (_jsxs("svg", { class: "ui5-icon-root", part: "root", tabindex: this._tabIndex, dir: this._dir, viewBox: this.viewBox, role: this.effectiveAccessibleRole, focusable: "false", preserveAspectRatio: "xMidYMid meet", "aria-label": this.effectiveAccessibleName, "aria-hidden": this.effectiveAriaHidden, xmlns: "http://www.w3.org/2000/svg", onKeyDown: this._onkeydown, onKeyUp: this._onkeyup, onClick: this._onclick, children: [this.hasIconTooltip &&
4
7
  _jsxs("title", { id: `${this._id}-tooltip`, children: [" ", this.effectiveAccessibleName, " "] }), _jsx("g", { role: "presentation", children: content.call(this) })] }));
5
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IconTemplate.js","sourceRoot":"","sources":["../src/IconTemplate.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,YAAY;IACnC,OAAO,CACN,eACC,KAAK,EAAC,eAAe,EACrB,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,GAAG,EAAE,IAAI,CAAC,IAAI,EACd,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAClC,SAAS,EAAC,OAAO,EACjB,mBAAmB,EAAC,eAAe,gBACvB,IAAI,CAAC,uBAAuB,iBAC3B,IAAI,CAAC,mBAAmB,EACrC,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,OAAO,EAAE,IAAI,CAAC,QAAQ,aAEpB,IAAI,CAAC,cAAc;gBACR,iBAAO,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,kBAAK,IAAI,CAAC,uBAAuB,SAAU,EAGxF,YAAG,IAAI,EAAC,cAAc,YACnB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GACjB,IACC,CACN,CAAC;AACH,CAAC;AAED,SAAS,OAAO;IACf,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACjC,OAAO,YAAG,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,GAAM,CAAC;IAClF,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAChC,eAAM,CAAC,EAAE,IAAI,GAAS,CACtB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type Icon from \"./Icon.js\";\n\nexport default function IconTemplate(this: Icon) {\n\treturn (\n\t\t<svg\n\t\t\tclass=\"ui5-icon-root\"\n\t\t\tpart=\"root\"\n\t\t\ttabindex={this._tabIndex}\n\t\t\tdir={this._dir}\n\t\t\tviewBox={this.viewBox}\n\t\t\trole={this.effectiveAccessibleRole}\n\t\t\tfocusable=\"false\"\n\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\taria-label={this.effectiveAccessibleName}\n\t\t\taria-hidden={this.effectiveAriaHidden}\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tonKeyDown={this._onkeydown}\n\t\t\tonKeyUp={this._onkeyup}\n\t\t\tonClick={this._onclick}\n\t\t>\n\t\t\t{ this.hasIconTooltip &&\n <title id={`${this._id}-tooltip`} > {this.effectiveAccessibleName} </title>\n\t\t\t}\n\n\t\t\t<g role=\"presentation\">\n\t\t\t\t{ content.call(this) }\n\t\t\t</g>\n\t\t</svg>\n\t);\n}\n\nfunction content(this: Icon) {\n\tif (this.customTemplate) {\n\t\treturn this.customTemplate;\n\t}\n\n\tif (this.customTemplateAsString) {\n\t\treturn <g dangerouslySetInnerHTML={{ __html: this.customTemplateAsString }}></g>;\n\t}\n\n\treturn this.pathData.map(path => (\n\t\t<path d={path}></path>\n\t));\n}\n"]}
1
+ {"version":3,"file":"IconTemplate.js","sourceRoot":"","sources":["../src/IconTemplate.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,YAAY;IACnC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,CACN,eACC,KAAK,EAAC,eAAe,EACrB,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,IAAI,EAAE,IAAI,CAAC,uBAAuB,gBACtB,IAAI,CAAC,uBAAuB,iBAC3B,IAAI,CAAC,mBAAmB,EACrC,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,OAAO,EAAE,IAAI,CAAC,QAAQ,YAEtB,eAAM,IAAI,EAAC,UAAU,GAAQ,GACvB,CACP,CAAC;IACH,CAAC;IAED,OAAO,CACN,eACC,KAAK,EAAC,eAAe,EACrB,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,GAAG,EAAE,IAAI,CAAC,IAAI,EACd,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAClC,SAAS,EAAC,OAAO,EACjB,mBAAmB,EAAC,eAAe,gBACvB,IAAI,CAAC,uBAAuB,iBAC3B,IAAI,CAAC,mBAAmB,EACrC,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,OAAO,EAAE,IAAI,CAAC,QAAQ,aAEpB,IAAI,CAAC,cAAc;gBACR,iBAAO,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,kBAAK,IAAI,CAAC,uBAAuB,SAAU,EAGxF,YAAG,IAAI,EAAC,cAAc,YACnB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GACjB,IACC,CACN,CAAC;AACH,CAAC;AAED,SAAS,OAAO;IACf,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACjC,OAAO,YAAG,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,GAAM,CAAC;IAClF,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAChC,eAAM,CAAC,EAAE,IAAI,GAAS,CACtB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type Icon from \"./Icon.js\";\n\nexport default function IconTemplate(this: Icon) {\n\tif (this.hasFontIcon) {\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclass=\"ui5-icon-root\"\n\t\t\t\tpart=\"root\"\n\t\t\t\ttabindex={this._tabIndex}\n\t\t\t\trole={this.effectiveAccessibleRole}\n\t\t\t\taria-label={this.effectiveAccessibleName}\n\t\t\t\taria-hidden={this.effectiveAriaHidden}\n\t\t\t\tonKeyDown={this._onkeydown}\n\t\t\t\tonKeyUp={this._onkeyup}\n\t\t\t\tonClick={this._onclick}\n\t\t\t>\n\t\t\t\t<slot name=\"fontIcon\"></slot>\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn (\n\t\t<svg\n\t\t\tclass=\"ui5-icon-root\"\n\t\t\tpart=\"root\"\n\t\t\ttabindex={this._tabIndex}\n\t\t\tdir={this._dir}\n\t\t\tviewBox={this.viewBox}\n\t\t\trole={this.effectiveAccessibleRole}\n\t\t\tfocusable=\"false\"\n\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\taria-label={this.effectiveAccessibleName}\n\t\t\taria-hidden={this.effectiveAriaHidden}\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tonKeyDown={this._onkeydown}\n\t\t\tonKeyUp={this._onkeyup}\n\t\t\tonClick={this._onclick}\n\t\t>\n\t\t\t{ this.hasIconTooltip &&\n <title id={`${this._id}-tooltip`} > {this.effectiveAccessibleName} </title>\n\t\t\t}\n\n\t\t\t<g role=\"presentation\">\n\t\t\t\t{ content.call(this) }\n\t\t\t</g>\n\t\t</svg>\n\t);\n}\n\nfunction content(this: Icon) {\n\tif (this.customTemplate) {\n\t\treturn this.customTemplate;\n\t}\n\n\tif (this.customTemplateAsString) {\n\t\treturn <g dangerouslySetInnerHTML={{ __html: this.customTemplateAsString }}></g>;\n\t}\n\n\treturn this.pathData.map(path => (\n\t\t<path d={path}></path>\n\t));\n}\n"]}
package/dist/Input.d.ts CHANGED
@@ -13,6 +13,7 @@ import InputType from "./types/InputType.js";
13
13
  import type Popover from "./Popover.js";
14
14
  import type { IIcon } from "./Icon.js";
15
15
  import type { ListItemClickEventDetail, ListSelectionChangeEventDetail } from "./List.js";
16
+ import type { ListItemBaseClickEventDetail } from "./ListItemBase.js";
16
17
  import type ResponsivePopover from "./ResponsivePopover.js";
17
18
  import type InputKeyHint from "./types/InputKeyHint.js";
18
19
  import type InputComposition from "./features/InputComposition.js";
@@ -25,6 +26,9 @@ interface IInputSuggestionItem extends UI5Element {
25
26
  focused: boolean;
26
27
  additionalText?: string;
27
28
  items?: IInputSuggestionItem[];
29
+ eventDetails: {
30
+ click?: ListItemBaseClickEventDetail;
31
+ };
28
32
  }
29
33
  interface IInputSuggestionItemSelectable extends IInputSuggestionItem {
30
34
  text?: string;