@sapudex/web-components 2.24.0 → 2.25.1

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 (405) hide show
  1. package/bundle.esm.js +2 -0
  2. package/cypress/downloads/downloads.html +0 -0
  3. package/cypress/specs/EventRibbon.cy.tsx +7 -7
  4. package/cypress/specs/ImageGridTable.cy.tsx +41 -0
  5. package/cypress/specs/ImageGridTableItem.cy.tsx +101 -0
  6. package/cypress/specs/ImageGridTickerItem.cy.tsx +1 -2
  7. package/cypress/specs/MastheadProfileMenu.cy.tsx +16 -0
  8. package/cypress/specs/UploadItem.cy.tsx +14 -5
  9. package/cypress/support/component-imports.instrumented.ts +4 -0
  10. package/cypress/support/component-imports.src.ts +4 -0
  11. package/dist/Accordion.js +3 -2
  12. package/dist/Accordion.js.map +1 -1
  13. package/dist/Avatar.js +4 -3
  14. package/dist/Avatar.js.map +1 -1
  15. package/dist/Badge.js.map +1 -1
  16. package/dist/Breadcrumbs.js +4 -3
  17. package/dist/Breadcrumbs.js.map +1 -1
  18. package/dist/Button.js +3 -2
  19. package/dist/Button.js.map +1 -1
  20. package/dist/Carousel.d.ts +1 -0
  21. package/dist/Carousel.js +6 -4
  22. package/dist/Carousel.js.map +1 -1
  23. package/dist/CarouselTemplate.js +1 -1
  24. package/dist/CarouselTemplate.js.map +1 -1
  25. package/dist/Checkbox.js +3 -2
  26. package/dist/Checkbox.js.map +1 -1
  27. package/dist/Contact.js +5 -4
  28. package/dist/Contact.js.map +1 -1
  29. package/dist/CountrySelector.d.ts +1 -1
  30. package/dist/CountrySelector.js +1 -1
  31. package/dist/CountrySelector.js.map +1 -1
  32. package/dist/DatePicker.js +3 -2
  33. package/dist/DatePicker.js.map +1 -1
  34. package/dist/EventRibbon.d.ts +2 -2
  35. package/dist/EventRibbon.js.map +1 -1
  36. package/dist/FeedItem.js +2 -1
  37. package/dist/FeedItem.js.map +1 -1
  38. package/dist/FilterMenu.js +5 -4
  39. package/dist/FilterMenu.js.map +1 -1
  40. package/dist/Footer.js +15 -14
  41. package/dist/Footer.js.map +1 -1
  42. package/dist/ImageGridTable.d.ts +57 -0
  43. package/dist/ImageGridTable.js +120 -0
  44. package/dist/ImageGridTable.js.map +1 -0
  45. package/dist/ImageGridTableItem.d.ts +89 -0
  46. package/dist/ImageGridTableItem.js +108 -0
  47. package/dist/ImageGridTableItem.js.map +1 -0
  48. package/dist/ImageGridTableItemTemplate.d.ts +2 -0
  49. package/dist/ImageGridTableItemTemplate.js +13 -0
  50. package/dist/ImageGridTableItemTemplate.js.map +1 -0
  51. package/dist/ImageGridTableTemplate.d.ts +2 -0
  52. package/dist/ImageGridTableTemplate.js +5 -0
  53. package/dist/ImageGridTableTemplate.js.map +1 -0
  54. package/dist/ImageGridTicker.js +3 -2
  55. package/dist/ImageGridTicker.js.map +1 -1
  56. package/dist/ImageGridTickerItem.d.ts +4 -0
  57. package/dist/ImageGridTickerItem.js +14 -0
  58. package/dist/ImageGridTickerItem.js.map +1 -1
  59. package/dist/ImageGridTickerItemTemplate.js +1 -1
  60. package/dist/ImageGridTickerItemTemplate.js.map +1 -1
  61. package/dist/InputGroup.js +3 -2
  62. package/dist/InputGroup.js.map +1 -1
  63. package/dist/List.js +2 -1
  64. package/dist/List.js.map +1 -1
  65. package/dist/ListItem.d.ts +0 -2
  66. package/dist/ListItem.js +4 -9
  67. package/dist/ListItem.js.map +1 -1
  68. package/dist/ListSelectAll.js +2 -1
  69. package/dist/ListSelectAll.js.map +1 -1
  70. package/dist/MastheadCountrySelector.js +3 -2
  71. package/dist/MastheadCountrySelector.js.map +1 -1
  72. package/dist/MastheadItem.d.ts +1 -0
  73. package/dist/MastheadItem.js +13 -7
  74. package/dist/MastheadItem.js.map +1 -1
  75. package/dist/MastheadMenu.d.ts +3 -0
  76. package/dist/MastheadMenu.js +12 -2
  77. package/dist/MastheadMenu.js.map +1 -1
  78. package/dist/MastheadMenuItem.js +2 -1
  79. package/dist/MastheadMenuItem.js.map +1 -1
  80. package/dist/MastheadMobileMenu.d.ts +1 -0
  81. package/dist/MastheadMobileMenu.js +8 -1
  82. package/dist/MastheadMobileMenu.js.map +1 -1
  83. package/dist/MastheadProfileMenu.js +6 -5
  84. package/dist/MastheadProfileMenu.js.map +1 -1
  85. package/dist/MastheadShell.d.ts +22 -0
  86. package/dist/MastheadShell.js +66 -19
  87. package/dist/MastheadShell.js.map +1 -1
  88. package/dist/MessageStrip.js +2 -1
  89. package/dist/MessageStrip.js.map +1 -1
  90. package/dist/MessageStripTemplate.js +1 -1
  91. package/dist/MessageStripTemplate.js.map +1 -1
  92. package/dist/Pagination.d.ts +0 -2
  93. package/dist/Pagination.js +16 -29
  94. package/dist/Pagination.js.map +1 -1
  95. package/dist/PhoneNumberField.js +7 -6
  96. package/dist/PhoneNumberField.js.map +1 -1
  97. package/dist/ProgressBar.js +5 -4
  98. package/dist/ProgressBar.js.map +1 -1
  99. package/dist/PromoTile.js +3 -2
  100. package/dist/PromoTile.js.map +1 -1
  101. package/dist/RadioButton.js +5 -4
  102. package/dist/RadioButton.js.map +1 -1
  103. package/dist/RatingBar.js +2 -1
  104. package/dist/RatingBar.js.map +1 -1
  105. package/dist/RatingIndicator.js +2 -1
  106. package/dist/RatingIndicator.js.map +1 -1
  107. package/dist/Review.d.ts +1 -1
  108. package/dist/Review.js +3 -3
  109. package/dist/Review.js.map +1 -1
  110. package/dist/ReviewItem.js +2 -1
  111. package/dist/ReviewItem.js.map +1 -1
  112. package/dist/Search.d.ts +2 -0
  113. package/dist/Search.js +34 -19
  114. package/dist/Search.js.map +1 -1
  115. package/dist/SearchTemplate.js +1 -1
  116. package/dist/SearchTemplate.js.map +1 -1
  117. package/dist/SearchableListBase.d.ts +1 -1
  118. package/dist/SearchableListBase.js +4 -3
  119. package/dist/SearchableListBase.js.map +1 -1
  120. package/dist/SecondaryNavigation.js +2 -1
  121. package/dist/SecondaryNavigation.js.map +1 -1
  122. package/dist/SecondaryNavigationSubItem.js +2 -1
  123. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  124. package/dist/SelectBase.d.ts +4 -11
  125. package/dist/SelectBase.js +4 -11
  126. package/dist/SelectBase.js.map +1 -1
  127. package/dist/SelectBox.d.ts +1 -1
  128. package/dist/SelectBox.js +1 -1
  129. package/dist/SelectBox.js.map +1 -1
  130. package/dist/SocialMediaButton.js +2 -1
  131. package/dist/SocialMediaButton.js.map +1 -1
  132. package/dist/StatusBadge.js +7 -6
  133. package/dist/StatusBadge.js.map +1 -1
  134. package/dist/StepInput.js +9 -2
  135. package/dist/StepInput.js.map +1 -1
  136. package/dist/StepInputTemplate.js +1 -1
  137. package/dist/StepInputTemplate.js.map +1 -1
  138. package/dist/Tab.js +2 -1
  139. package/dist/Tab.js.map +1 -1
  140. package/dist/TabNavigation.js +2 -1
  141. package/dist/TabNavigation.js.map +1 -1
  142. package/dist/Table.d.ts +2 -2
  143. package/dist/Table.js +5 -15
  144. package/dist/Table.js.map +1 -1
  145. package/dist/TableCell.js +3 -3
  146. package/dist/TableCell.js.map +1 -1
  147. package/dist/TableCellBase.js +1 -3
  148. package/dist/TableCellBase.js.map +1 -1
  149. package/dist/TableCellTemplate.d.ts +2 -0
  150. package/dist/TableCellTemplate.js +9 -0
  151. package/dist/TableCellTemplate.js.map +1 -0
  152. package/dist/TableGroupRow.d.ts +1 -1
  153. package/dist/TableGroupRow.js +3 -6
  154. package/dist/TableGroupRow.js.map +1 -1
  155. package/dist/TableGroupRowTemplate.d.ts +2 -0
  156. package/dist/TableGroupRowTemplate.js +7 -0
  157. package/dist/TableGroupRowTemplate.js.map +1 -0
  158. package/dist/TableHeaderCell.js +3 -4
  159. package/dist/TableHeaderCell.js.map +1 -1
  160. package/dist/TableHeaderCellTemplate.d.ts +2 -0
  161. package/dist/TableHeaderCellTemplate.js +6 -0
  162. package/dist/TableHeaderCellTemplate.js.map +1 -0
  163. package/dist/TableHeaderRow.js +3 -5
  164. package/dist/TableHeaderRow.js.map +1 -1
  165. package/dist/TableHeaderRowTemplate.d.ts +2 -0
  166. package/dist/TableHeaderRowTemplate.js +5 -0
  167. package/dist/TableHeaderRowTemplate.js.map +1 -0
  168. package/dist/TableRow.js +3 -4
  169. package/dist/TableRow.js.map +1 -1
  170. package/dist/TableRowBase.d.ts +1 -1
  171. package/dist/TableRowBase.js +0 -2
  172. package/dist/TableRowBase.js.map +1 -1
  173. package/dist/TableRowTemplate.d.ts +2 -0
  174. package/dist/TableRowTemplate.js +5 -0
  175. package/dist/TableRowTemplate.js.map +1 -0
  176. package/dist/TableTemplate.d.ts +2 -0
  177. package/dist/TableTemplate.js +20 -0
  178. package/dist/TableTemplate.js.map +1 -0
  179. package/dist/Tag.js +7 -0
  180. package/dist/Tag.js.map +1 -1
  181. package/dist/TextArea.js +9 -8
  182. package/dist/TextArea.js.map +1 -1
  183. package/dist/TextField.js +7 -6
  184. package/dist/TextField.js.map +1 -1
  185. package/dist/Toast.d.ts +3 -1
  186. package/dist/Toast.js +15 -9
  187. package/dist/Toast.js.map +1 -1
  188. package/dist/ToastTemplate.d.ts +2 -0
  189. package/dist/ToastTemplate.js +11 -0
  190. package/dist/ToastTemplate.js.map +1 -0
  191. package/dist/TruncatedText.js +3 -2
  192. package/dist/TruncatedText.js.map +1 -1
  193. package/dist/Upload.js +2 -1
  194. package/dist/Upload.js.map +1 -1
  195. package/dist/UploadItem.d.ts +7 -0
  196. package/dist/UploadItem.js +14 -3
  197. package/dist/UploadItem.js.map +1 -1
  198. package/dist/assets/{InputSuggestions-63QG0i9j.js → InputSuggestions-CTFZ6hH-.js} +1 -1
  199. package/dist/assets/{ListItemStandardExpandableTextTemplate-B1CpqSCb.js → ListItemStandardExpandableTextTemplate-wXdCijez.js} +1 -1
  200. package/dist/assets/{bundle.esm-lUYJDofa.js → bundle.esm-BXCZ9BP3.js} +267 -265
  201. package/dist/assets/messagebundle_en-mjqY85LY.js +1 -0
  202. package/dist/css/themes/ImageGridTable.css +1 -0
  203. package/dist/css/themes/ImageGridTableItem.css +1 -0
  204. package/dist/css/themes/ImageGridTicker.css +1 -1
  205. package/dist/css/themes/MastheadItem.css +1 -1
  206. package/dist/css/themes/MastheadShell.css +1 -1
  207. package/dist/css/themes/RatingIndicator.css +1 -1
  208. package/dist/css/themes/Search.css +1 -1
  209. package/dist/css/themes/Slider.css +1 -1
  210. package/dist/custom-elements-internal.json +9418 -7451
  211. package/dist/custom-elements.json +6830 -5351
  212. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  213. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  214. package/dist/generated/i18n/i18n-defaults.js +4 -3
  215. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  216. package/dist/generated/templates/MastheadItemTemplate.lit.js +1 -1
  217. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  218. package/dist/generated/templates/MastheadMenuTemplate.lit.js +9 -7
  219. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
  220. package/dist/generated/templates/MastheadShellTemplate.lit.js +8 -7
  221. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  222. package/dist/generated/templates/UploadItemTemplate.lit.js +1 -1
  223. package/dist/generated/templates/UploadItemTemplate.lit.js.map +1 -1
  224. package/dist/generated/themes/ImageGridTable.css.d.ts +2 -0
  225. package/dist/generated/themes/ImageGridTable.css.js +8 -0
  226. package/dist/generated/themes/ImageGridTable.css.js.map +1 -0
  227. package/dist/generated/themes/ImageGridTableItem.css.d.ts +2 -0
  228. package/dist/generated/themes/ImageGridTableItem.css.js +8 -0
  229. package/dist/generated/themes/ImageGridTableItem.css.js.map +1 -0
  230. package/dist/generated/themes/ImageGridTicker.css.d.ts +1 -1
  231. package/dist/generated/themes/ImageGridTicker.css.js +1 -1
  232. package/dist/generated/themes/ImageGridTicker.css.js.map +1 -1
  233. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  234. package/dist/generated/themes/MastheadItem.css.js +1 -1
  235. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  236. package/dist/generated/themes/MastheadShell.css.d.ts +1 -1
  237. package/dist/generated/themes/MastheadShell.css.js +1 -1
  238. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  239. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  240. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  241. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  242. package/dist/generated/themes/Search.css.d.ts +1 -1
  243. package/dist/generated/themes/Search.css.js +1 -1
  244. package/dist/generated/themes/Search.css.js.map +1 -1
  245. package/dist/generated/themes/Slider.css.d.ts +1 -1
  246. package/dist/generated/themes/Slider.css.js +1 -1
  247. package/dist/generated/themes/Slider.css.js.map +1 -1
  248. package/dist/messagebundle.properties +6 -2
  249. package/dist/messagebundle_en.properties +3 -2
  250. package/dist/types/CustomTranslations.d.ts +3 -0
  251. package/dist/types/CustomTranslations.js +2 -0
  252. package/dist/types/CustomTranslations.js.map +1 -0
  253. package/dist/types/EventRibbon.d.ts +1 -1
  254. package/dist/types/EventRibbon.js +39 -39
  255. package/dist/types/EventRibbon.js.map +1 -1
  256. package/dist/utils/translate.d.ts +7 -0
  257. package/dist/utils/translate.js +15 -0
  258. package/dist/utils/translate.js.map +1 -0
  259. package/dist/vscode.html-custom-data.json +207 -7
  260. package/dist/web-types.json +541 -12
  261. package/package.json +1 -1
  262. package/src/Accordion.ts +3 -2
  263. package/src/Avatar.ts +5 -3
  264. package/src/Badge.ts +5 -2
  265. package/src/Breadcrumbs.ts +4 -3
  266. package/src/Button.ts +3 -2
  267. package/src/Carousel.ts +7 -4
  268. package/src/CarouselTemplate.tsx +2 -1
  269. package/src/Checkbox.ts +3 -2
  270. package/src/Contact.ts +5 -4
  271. package/src/CountrySelector.ts +1 -1
  272. package/src/DatePicker.ts +3 -2
  273. package/src/EventRibbon.ts +2 -2
  274. package/src/FeedItem.ts +2 -1
  275. package/src/FilterMenu.ts +5 -4
  276. package/src/Footer.ts +15 -14
  277. package/src/ImageGridTable.ts +151 -0
  278. package/src/ImageGridTableItem.ts +148 -0
  279. package/src/ImageGridTableItemTemplate.tsx +48 -0
  280. package/src/ImageGridTableTemplate.tsx +9 -0
  281. package/src/ImageGridTicker.ts +4 -2
  282. package/src/ImageGridTickerItem.ts +20 -0
  283. package/src/ImageGridTickerItemTemplate.tsx +1 -0
  284. package/src/InputGroup.ts +3 -2
  285. package/src/List.ts +2 -1
  286. package/src/ListItem.ts +4 -11
  287. package/src/ListSelectAll.ts +2 -1
  288. package/src/MastheadCountrySelector.ts +3 -2
  289. package/src/MastheadItem.hbs +1 -1
  290. package/src/MastheadItem.ts +14 -7
  291. package/src/MastheadMenu.hbs +33 -12
  292. package/src/MastheadMenu.ts +11 -0
  293. package/src/MastheadMenuItem.ts +2 -1
  294. package/src/MastheadMobileMenu.ts +11 -2
  295. package/src/MastheadProfileMenu.ts +6 -5
  296. package/src/MastheadShell.hbs +38 -29
  297. package/src/MastheadShell.ts +85 -19
  298. package/src/MessageStrip.ts +2 -1
  299. package/src/MessageStripTemplate.tsx +1 -1
  300. package/src/Pagination.ts +15 -28
  301. package/src/PhoneNumberField.ts +7 -6
  302. package/src/ProgressBar.ts +5 -4
  303. package/src/PromoTile.ts +3 -2
  304. package/src/RadioButton.ts +5 -4
  305. package/src/RatingBar.ts +2 -1
  306. package/src/RatingIndicator.ts +2 -1
  307. package/src/Review.ts +4 -3
  308. package/src/ReviewItem.ts +2 -1
  309. package/src/Search.ts +36 -19
  310. package/src/SearchTemplate.tsx +1 -1
  311. package/src/SearchableListBase.ts +4 -3
  312. package/src/SecondaryNavigation.ts +2 -1
  313. package/src/SecondaryNavigationSubItem.ts +2 -1
  314. package/src/SelectBase.ts +6 -12
  315. package/src/SelectBox.ts +1 -1
  316. package/src/SocialMediaButton.ts +2 -1
  317. package/src/StatusBadge.ts +7 -6
  318. package/src/StepInput.ts +9 -2
  319. package/src/StepInputTemplate.tsx +6 -2
  320. package/src/Tab.ts +2 -1
  321. package/src/TabNavigation.ts +2 -1
  322. package/src/Table.ts +7 -15
  323. package/src/TableCell.ts +3 -3
  324. package/src/TableCellBase.ts +1 -3
  325. package/src/TableCellTemplate.tsx +21 -0
  326. package/src/TableGroupRow.ts +4 -6
  327. package/src/TableGroupRowTemplate.tsx +36 -0
  328. package/src/TableHeaderCell.ts +3 -4
  329. package/src/TableHeaderCellTemplate.tsx +36 -0
  330. package/src/TableHeaderRow.ts +3 -5
  331. package/src/TableHeaderRowTemplate.tsx +13 -0
  332. package/src/TableRow.ts +3 -4
  333. package/src/TableRowBase.ts +1 -2
  334. package/src/TableRowTemplate.tsx +13 -0
  335. package/src/TableTemplate.tsx +94 -0
  336. package/src/Tag.ts +1 -1
  337. package/src/TextArea.ts +8 -8
  338. package/src/TextField.ts +7 -6
  339. package/src/Toast.ts +17 -8
  340. package/src/ToastTemplate.tsx +42 -0
  341. package/src/TruncatedText.ts +3 -2
  342. package/src/Upload.ts +2 -1
  343. package/src/UploadItem.hbs +1 -1
  344. package/src/UploadItem.ts +13 -3
  345. package/src/generated/i18n/i18n-defaults.ts +2 -2
  346. package/src/generated/templates/MastheadItemTemplate.lit.ts +1 -1
  347. package/src/generated/templates/MastheadMenuTemplate.lit.ts +9 -7
  348. package/src/generated/templates/MastheadShellTemplate.lit.ts +8 -7
  349. package/src/generated/templates/UploadItemTemplate.lit.ts +1 -1
  350. package/src/generated/themes/ImageGridTable.css.ts +9 -0
  351. package/src/generated/themes/ImageGridTableItem.css.ts +9 -0
  352. package/src/generated/themes/ImageGridTicker.css.ts +1 -1
  353. package/src/generated/themes/MastheadItem.css.ts +1 -1
  354. package/src/generated/themes/MastheadShell.css.ts +1 -1
  355. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  356. package/src/generated/themes/Search.css.ts +1 -1
  357. package/src/generated/themes/Slider.css.ts +1 -1
  358. package/src/i18n/messagebundle.properties +6 -2
  359. package/src/i18n/messagebundle_en.properties +3 -2
  360. package/src/themes/Badge.css +0 -1
  361. package/src/themes/ImageGridTable.css +47 -0
  362. package/src/themes/ImageGridTableItem.css +102 -0
  363. package/src/themes/ImageGridTicker.css +1 -0
  364. package/src/themes/MastheadItem.css +1 -0
  365. package/src/themes/MastheadShell.css +1 -0
  366. package/src/themes/Search.css +2 -3
  367. package/src/types/CustomTranslations.ts +1 -0
  368. package/src/types/EventRibbon.ts +1 -1
  369. package/src/utils/translate.ts +21 -0
  370. package/dist/assets/messagebundle_en-D_yCmNrd.js +0 -1
  371. package/dist/generated/templates/TableCellTemplate.lit.d.ts +0 -3
  372. package/dist/generated/templates/TableCellTemplate.lit.js +0 -8
  373. package/dist/generated/templates/TableCellTemplate.lit.js.map +0 -1
  374. package/dist/generated/templates/TableGroupRowTemplate.lit.d.ts +0 -3
  375. package/dist/generated/templates/TableGroupRowTemplate.lit.js +0 -9
  376. package/dist/generated/templates/TableGroupRowTemplate.lit.js.map +0 -1
  377. package/dist/generated/templates/TableHeaderCellTemplate.lit.d.ts +0 -3
  378. package/dist/generated/templates/TableHeaderCellTemplate.lit.js +0 -11
  379. package/dist/generated/templates/TableHeaderCellTemplate.lit.js.map +0 -1
  380. package/dist/generated/templates/TableHeaderRowTemplate.lit.d.ts +0 -3
  381. package/dist/generated/templates/TableHeaderRowTemplate.lit.js +0 -8
  382. package/dist/generated/templates/TableHeaderRowTemplate.lit.js.map +0 -1
  383. package/dist/generated/templates/TableRowTemplate.lit.d.ts +0 -3
  384. package/dist/generated/templates/TableRowTemplate.lit.js +0 -8
  385. package/dist/generated/templates/TableRowTemplate.lit.js.map +0 -1
  386. package/dist/generated/templates/TableTemplate.lit.d.ts +0 -3
  387. package/dist/generated/templates/TableTemplate.lit.js +0 -13
  388. package/dist/generated/templates/TableTemplate.lit.js.map +0 -1
  389. package/dist/generated/templates/ToastTemplate.lit.d.ts +0 -3
  390. package/dist/generated/templates/ToastTemplate.lit.js +0 -10
  391. package/dist/generated/templates/ToastTemplate.lit.js.map +0 -1
  392. package/src/Table.hbs +0 -45
  393. package/src/TableCell.hbs +0 -4
  394. package/src/TableGroupRow.hbs +0 -24
  395. package/src/TableHeaderCell.hbs +0 -19
  396. package/src/TableHeaderRow.hbs +0 -3
  397. package/src/TableRow.hbs +0 -3
  398. package/src/Toast.hbs +0 -20
  399. package/src/generated/templates/TableCellTemplate.lit.ts +0 -12
  400. package/src/generated/templates/TableGroupRowTemplate.lit.ts +0 -13
  401. package/src/generated/templates/TableHeaderCellTemplate.lit.ts +0 -15
  402. package/src/generated/templates/TableHeaderRowTemplate.lit.ts +0 -12
  403. package/src/generated/templates/TableRowTemplate.lit.ts +0 -12
  404. package/src/generated/templates/TableTemplate.lit.ts +0 -17
  405. package/src/generated/templates/ToastTemplate.lit.ts +0 -14
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@sapudex/web-components",
4
- "version": "2.24.0",
4
+ "version": "2.25.1",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
7
7
  },
package/src/Accordion.ts CHANGED
@@ -13,6 +13,7 @@ import {
13
13
  import AccordionTemplate from "./AccordionTemplate.js";
14
14
  import type UDExAccordionItem from "./AccordionItem.js";
15
15
  import { COLLAPSE_ALL, EXPAND_ALL } from "./generated/i18n/i18n-defaults.js";
16
+ import translate from "./utils/translate.js";
16
17
 
17
18
  // Styles
18
19
  import AccordionCss from "./generated/themes/Accordion.css.js";
@@ -241,8 +242,8 @@ class UDExAccordion extends UI5Element {
241
242
 
242
243
  get toggleAllText(): string {
243
244
  return this._allExpanded
244
- ? UDExAccordion.i18nBundle.getText(COLLAPSE_ALL)
245
- : UDExAccordion.i18nBundle.getText(EXPAND_ALL);
245
+ ? translate(UDExAccordion, COLLAPSE_ALL)
246
+ : translate(UDExAccordion, EXPAND_ALL);
246
247
  }
247
248
 
248
249
  get items(): {item: UDExAccordionItem}[] {
package/src/Avatar.ts CHANGED
@@ -8,6 +8,8 @@ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
8
8
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
9
9
  import { ATTENTION_BADGE, AVATAR_TEXT, DISABLED } from "./generated/i18n/i18n-defaults.js";
10
10
  import type AvatarColorScheme from "@ui5/webcomponents/dist/types/AvatarColorScheme.js";
11
+ import translate from "./utils/translate.js";
12
+
11
13
  // Template
12
14
  import AvatarTemplate from "./AvatarTemplate.js";
13
15
 
@@ -254,9 +256,9 @@ class UDExAvatar extends UI5Element {
254
256
  }
255
257
 
256
258
  get avatarAccessibleName(): string {
257
- let accName = `${this.accessibleName ? this.accessibleName : `${UDExAvatar.i18nBundle.getText(AVATAR_TEXT)} ${this.initials}`}`;
258
- accName += ` ${this.disabled ? UDExAvatar.i18nBundle.getText(DISABLED) : ""}`;
259
- accName += ` ${this.showAttentionBadge ? UDExAvatar.i18nBundle.getText(ATTENTION_BADGE) : ""}`;
259
+ let accName = `${this.accessibleName ? this.accessibleName : `${translate(UDExAvatar, AVATAR_TEXT)} ${this.initials}`}`;
260
+ accName += ` ${this.disabled ? translate(UDExAvatar, DISABLED) : ""}`;
261
+ accName += ` ${this.showAttentionBadge ? translate(UDExAvatar, ATTENTION_BADGE) : ""}`;
260
262
  return accName;
261
263
  }
262
264
  }
package/src/Badge.ts CHANGED
@@ -62,6 +62,7 @@ class UDExBadge extends UI5Element {
62
62
  */
63
63
  @property()
64
64
  design: `${UDExTextBadgeDesign}` = UDExTextBadgeDesign.Information;
65
+
65
66
  /**
66
67
  * Defines the design of number type component.
67
68
  *
@@ -70,14 +71,16 @@ class UDExBadge extends UI5Element {
70
71
  */
71
72
  @property()
72
73
  numberDesign: `${UDExNumberBadgeDesign}` = UDExNumberBadgeDesign.Blue;
74
+
73
75
  /**
74
76
  * Defines icon placement if icon was provided
75
77
  *
76
78
  * @default "End"
77
79
  * @public
78
80
  */
79
- @property()
80
- iconPlacement: `${UDExIconPlacement}` = UDExIconPlacement.End;
81
+ @property()
82
+ iconPlacement: `${UDExIconPlacement}` = UDExIconPlacement.End;
83
+
81
84
  /**
82
85
  * Defines icon name
83
86
  *
@@ -23,6 +23,7 @@ import {
23
23
  BREADCRUMBS_ARIA_LABEL,
24
24
  BREADCRUMBS_OVERFLOW_ARIA_LABEL,
25
25
  } from "./generated/i18n/i18n-defaults.js";
26
+ import translate from "./utils/translate.js";
26
27
 
27
28
  // Styles
28
29
  import BreadcrumbsCss from "./generated/themes/Breadcrumbs.css.js";
@@ -322,15 +323,15 @@ class UDExBreadcrumbs extends UI5Element {
322
323
  }
323
324
 
324
325
  get _breadcrumbsAccessibleNameText(): string {
325
- return UDExBreadcrumbs.i18nBundle.getText(BREADCRUMBS_ARIA_LABEL);
326
+ return translate(UDExBreadcrumbs, BREADCRUMBS_ARIA_LABEL);
326
327
  }
327
328
 
328
329
  get _dropdownArrowAccessibleNameText(): string {
329
- return UDExBreadcrumbs.i18nBundle.getText(BREADCRUMBS_OVERFLOW_ARIA_LABEL);
330
+ return translate(UDExBreadcrumbs, BREADCRUMBS_OVERFLOW_ARIA_LABEL);
330
331
  }
331
332
 
332
333
  get _dropdownAccessibleNameText(): string {
333
- return UDExBreadcrumbs.i18nBundle.getText(AVAILABLE_VALUES);
334
+ return translate(UDExBreadcrumbs, AVAILABLE_VALUES);
334
335
  }
335
336
  }
336
337
 
package/src/Button.ts CHANGED
@@ -14,6 +14,7 @@ import UDExButtonDesign from "./types/ButtonDesign.js";
14
14
 
15
15
  // Styles
16
16
  import ButtonCss from "./generated/themes/Button.css.js";
17
+ import translate from "./utils/translate.js";
17
18
 
18
19
  /**
19
20
  * @class
@@ -116,9 +117,9 @@ class UDExButton extends Button {
116
117
 
117
118
  let typeText;
118
119
  if (designValue) {
119
- typeText = shouldReadDesign ? UDExButton.i18nBundle.getText(UDExButton.typeTextMappings()[designValue]) : "";
120
+ typeText = shouldReadDesign ? translate(UDExButton, UDExButton.typeTextMappings()[designValue]) : "";
120
121
  }
121
- return `${typeText} ${this.toggled ? UDExButton.i18nBundle.getText(TOGGLED) : ""}`.trim();
122
+ return `${typeText} ${this.toggled ? translate(UDExButton, TOGGLED) : ""}`.trim();
122
123
  }
123
124
 
124
125
  get designValue(): string | null {
package/src/Carousel.ts CHANGED
@@ -13,6 +13,7 @@ import redirectAttributes from "./utils/redirectAttributes.js";
13
13
  import type UI5Carousel from "@ui5/webcomponents/dist/Carousel.js";
14
14
  import type { UI5CustomEvent } from "@ui5/webcomponents-base";
15
15
  import type Icon from "@ui5/webcomponents/dist/Icon.js";
16
+ import translate from "./utils/translate.js";
16
17
 
17
18
  import CarouselTemplate from "./CarouselTemplate.js";
18
19
 
@@ -139,11 +140,11 @@ class UDExCarousel extends UI5Element {
139
140
  static i18nBundle: I18nBundle;
140
141
 
141
142
  get nextPageText(): string {
142
- return UDExCarousel.i18nBundle.getText(CAROUSEL_NEXT_ARROW_TEXT);
143
+ return translate(UDExCarousel, CAROUSEL_NEXT_ARROW_TEXT);
143
144
  }
144
145
 
145
146
  get previousPageText(): string {
146
- return UDExCarousel.i18nBundle.getText(CAROUSEL_PREVIOUS_ARROW_TEXT);
147
+ return translate(UDExCarousel, CAROUSEL_PREVIOUS_ARROW_TEXT);
147
148
  }
148
149
 
149
150
  get carouselClass(): string {
@@ -188,7 +189,6 @@ class UDExCarousel extends UI5Element {
188
189
  }
189
190
 
190
191
  this._carousel?._navButtonClick(e as unknown as UI5CustomEvent<Icon, "click">);
191
- this._calculateDisabledButtonsState();
192
192
  }
193
193
 
194
194
  _nextButtonClick(e: UI5CustomEvent<UDExButton, "click">) {
@@ -197,7 +197,6 @@ class UDExCarousel extends UI5Element {
197
197
  }
198
198
 
199
199
  this._carousel?._navButtonClick(e as unknown as UI5CustomEvent<Icon, "click">);
200
- this._calculateDisabledButtonsState();
201
200
  }
202
201
 
203
202
  _onkeydown(e: KeyboardEvent) {
@@ -206,6 +205,10 @@ class UDExCarousel extends UI5Element {
206
205
  }
207
206
  }
208
207
 
208
+ _handleNavigate(): void {
209
+ this._calculateDisabledButtonsState();
210
+ }
211
+
209
212
  onAfterRendering() {
210
213
  redirectAttributes(this, "carousel");
211
214
 
@@ -18,7 +18,8 @@ export default function CarouselTemplate(this: Carousel) {
18
18
  hideNavigationArrows
19
19
  arrowsPlacement={CarouselArrowsPlacement.Navigation}
20
20
  accessibleName={this.accessibleName}
21
- hidePageIndicator={this._hidePageIndicator}>
21
+ hidePageIndicator={this._hidePageIndicator}
22
+ onNavigate={this._handleNavigate}>
22
23
  {this.items.map(item =>
23
24
  <slot name={(item as SlottedChild)._individualSlot}></slot>
24
25
  )}
package/src/Checkbox.ts CHANGED
@@ -11,6 +11,7 @@ import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delega
11
11
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
12
12
  import WrappingType from "@ui5/webcomponents/dist/types/WrappingType.js";
13
13
  import type Label from "@ui5/webcomponents/dist/Label.js";
14
+ import translate from "./utils/translate.js";
14
15
 
15
16
  // Styles
16
17
  import CheckboxCss from "./generated/themes/Checkbox.css.js";
@@ -89,8 +90,8 @@ class UDExCheckbox extends CheckBox {
89
90
 
90
91
  valueStateMappings(): Record<string, string> {
91
92
  return {
92
- [UDExCheckboxValueState.Error]: UDExCheckbox.i18nBundle.getText(VALUE_STATE_ERROR),
93
- [UDExCheckboxValueState.Success]: UDExCheckbox.i18nBundle.getText(VALUE_STATE_SUCCESS),
93
+ [UDExCheckboxValueState.Error]: translate(UDExCheckbox, VALUE_STATE_ERROR),
94
+ [UDExCheckboxValueState.Success]: translate(UDExCheckbox, VALUE_STATE_SUCCESS),
94
95
  };
95
96
  }
96
97
 
package/src/Contact.ts CHANGED
@@ -12,6 +12,7 @@ import {
12
12
  } from "./generated/i18n/i18n-defaults.js";
13
13
  import i18n from "@ui5/webcomponents-base/decorators/i18n.js";
14
14
  import type I18nBundle from "@ui5/webcomponents-base/i18nBundle.js";
15
+ import translate from "./utils/translate.js";
15
16
 
16
17
  // Styles
17
18
  import ContactCss from "./generated/themes/Contact.css.js";
@@ -175,19 +176,19 @@ class UDExContact extends UI5Element {
175
176
  }
176
177
 
177
178
  get _completeListTitle(): string {
178
- return `${UDExContact.i18nBundle.getText(COMPLETE_LIST_OF)} `;
179
+ return `${translate(UDExContact, COMPLETE_LIST_OF)} `;
179
180
  }
180
181
 
181
182
  get _localCountryTitle(): string {
182
- return UDExContact.i18nBundle.getText(LOCAL_COUNTRY_NAMES);
183
+ return translate(UDExContact, LOCAL_COUNTRY_NAMES);
183
184
  }
184
185
 
185
186
  get _numbersTitle(): string {
186
- return UDExContact.i18nBundle.getText(CALL_US_TODAY);
187
+ return translate(UDExContact, CALL_US_TODAY);
187
188
  }
188
189
 
189
190
  get _contactUsTitle(): string {
190
- return UDExContact.i18nBundle.getText(CONTACT_US);
191
+ return translate(UDExContact, CONTACT_US);
191
192
  }
192
193
 
193
194
  get _hasNumbersList(): boolean {
@@ -40,7 +40,7 @@ type UDExCountrySelectorChangeSearchEventDetail = {
40
40
  * <code>import "@sapudex/web-components/dist/CountrySelector.js";</code>
41
41
  *
42
42
  * @constructor
43
- * @extends UDExSearchableListBase
43
+ * @extends UDExSelectBase
44
44
  * @tagname udex-country-selector
45
45
  * @public
46
46
  */
package/src/DatePicker.ts CHANGED
@@ -12,6 +12,7 @@ import { CALENDAR_ICON, DATEPICKER_DATE_DESCRIPTION } from "./generated/i18n/i18
12
12
  import type UDExTextField from "./TextField.js";
13
13
  import type UDExDropdown from "./Dropdown.js";
14
14
  import UDExValueState from "./types/common.js";
15
+ import translate from "./utils/translate.js";
15
16
 
16
17
  // Template
17
18
  import DatePickerTemplate from "./DatePickerTemplate.js";
@@ -543,11 +544,11 @@ class UDExDatePicker extends DateComponentBase {
543
544
  }
544
545
 
545
546
  get accessibleIconName(): string {
546
- return UDExDatePicker.i18nBundle.getText(CALENDAR_ICON);
547
+ return translate(UDExDatePicker, CALENDAR_ICON);
547
548
  }
548
549
 
549
550
  get dateAccessibleName(): string {
550
- return this.accessibleName || UDExDatePicker.i18nBundle.getText(DATEPICKER_DATE_DESCRIPTION);
551
+ return this.accessibleName || translate(UDExDatePicker, DATEPICKER_DATE_DESCRIPTION);
551
552
  }
552
553
 
553
554
  get isRangeMode(): boolean {
@@ -3,7 +3,7 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
3
3
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
4
  import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
5
5
  import type {
6
- UDExEventRibbonColorSheme, UDExEventRibbonLink, UDExEventRibbonIcon, UDExEventRibbonLogo,
6
+ UDExEventRibbonColorScheme, UDExEventRibbonLink, UDExEventRibbonIcon, UDExEventRibbonLogo,
7
7
  } from "./types/EventRibbon.js";
8
8
  import { eventLogoText, UDExEventRibbonMode } from "./types/EventRibbon.js";
9
9
  import "@ui5/webcomponents-icons/add-calendar.js";
@@ -109,7 +109,7 @@ class UDExEventRibbon extends UI5Element {
109
109
  * @public
110
110
  */
111
111
  @property({ type: String })
112
- backgroundColorScheme!: UDExEventRibbonColorSheme;
112
+ backgroundColorScheme!: UDExEventRibbonColorScheme;
113
113
 
114
114
  /**
115
115
  * Allows control over the background image source.
package/src/FeedItem.ts CHANGED
@@ -9,6 +9,7 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
9
9
  import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
10
10
  import FeedItemTemplate from "./FeedItemTemplate.js";
11
11
  import { LOCATION } from "./generated/i18n/i18n-defaults.js";
12
+ import translate from "./utils/translate.js";
12
13
 
13
14
  // Styles
14
15
  import FeedItemCss from "./generated/themes/FeedItem.css.js";
@@ -170,7 +171,7 @@ class UDExFeedItem extends UI5Element {
170
171
  }
171
172
 
172
173
  get locationIconLabel(): string {
173
- return UDExFeedItem.i18nBundle.getText(LOCATION);
174
+ return translate(UDExFeedItem, LOCATION);
174
175
  }
175
176
 
176
177
  formatDate(d: string | undefined): FeedDate {
package/src/FilterMenu.ts CHANGED
@@ -33,6 +33,7 @@ import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
33
33
  import FilterMenuTemplate from "./generated/templates/FilterMenuTemplate.lit.js";
34
34
  import SearchableListBaseTemplate from "./generated/templates/SearchableListBaseTemplate.lit.js";
35
35
  import type UDExListGroupHeaderBase from "./ListGroupHeaderBase.js";
36
+ import translate from "./utils/translate.js";
36
37
 
37
38
  // Styles
38
39
  import FilterMenuCss from "./generated/themes/FilterMenu.css.js";
@@ -550,19 +551,19 @@ class UDExFilterMenu extends UDExSearchableListBase {
550
551
  }
551
552
 
552
553
  get getResultLabelText(): string {
553
- return this.resultBtnLabel !== undefined && this.resultBtnLabel.length > 0 && this.resultBtnLabel ? this.resultBtnLabel : UDExFilterMenu.i18nBundle.getText(SHOW_RESULTS);
554
+ return this.resultBtnLabel !== undefined && this.resultBtnLabel.length > 0 && this.resultBtnLabel ? this.resultBtnLabel : translate(UDExFilterMenu, SHOW_RESULTS);
554
555
  }
555
556
 
556
557
  get getResetLabelText(): string {
557
- return this.resetBtnLabel !== undefined && this.resetBtnLabel.length > 0 ? this.resetBtnLabel : UDExFilterMenu.i18nBundle.getText(RESET);
558
+ return this.resetBtnLabel !== undefined && this.resetBtnLabel.length > 0 ? this.resetBtnLabel : translate(UDExFilterMenu, RESET);
558
559
  }
559
560
 
560
561
  get _iconAccessibleNameText(): string {
561
- return UDExFilterMenu.i18nBundle.getText(SELECT_OPTIONS);
562
+ return translate(UDExFilterMenu, SELECT_OPTIONS);
562
563
  }
563
564
 
564
565
  get triggerButtonAccessibleName(): string {
565
- return this.accessibleName || UDExFilterMenu.i18nBundle.getText(SELECT_OPTIONS);
566
+ return this.accessibleName || translate(UDExFilterMenu, SELECT_OPTIONS);
566
567
  }
567
568
 
568
569
  get searchableList() {
package/src/Footer.ts CHANGED
@@ -39,6 +39,7 @@ import {
39
39
  ICP_NUMBER,
40
40
  BACK_TO_TOP,
41
41
  } from "./generated/i18n/i18n-defaults.js";
42
+ import translate from "./utils/translate.js";
42
43
 
43
44
  // Styles
44
45
  import FooterCss from "./generated/themes/Footer.css.js";
@@ -529,58 +530,58 @@ class UDExFooter extends UI5Element {
529
530
  }
530
531
 
531
532
  get phoneNumberAccessibleName(): string {
532
- return `${UDExFooter.i18nBundle.getText(PHONE_NUMBER)} `;
533
+ return `${translate(UDExFooter, PHONE_NUMBER)} `;
533
534
  }
534
535
 
535
536
  get contactUsAccessibleName(): string {
536
- return UDExFooter.i18nBundle.getText(CONTACT_US);
537
+ return translate(UDExFooter, CONTACT_US);
537
538
  }
538
539
 
539
540
  get contactUsAccessibleLabel(): string {
540
541
  if (this.contactUsLink.includes("mailto:")) {
541
- return `${this.contactUsAccessibleName} ${UDExFooter.i18nBundle.getText(EMAIL)}`;
542
+ return `${this.contactUsAccessibleName} ${translate(UDExFooter, EMAIL)}`;
542
543
  }
543
544
  return `${this.contactUsAccessibleName}`;
544
545
  }
545
546
 
546
547
  get chatWithUsAccessibleName(): string {
547
- return UDExFooter.i18nBundle.getText(CHAT_WITH_US);
548
+ return translate(UDExFooter, CHAT_WITH_US);
548
549
  }
549
550
 
550
551
  get _quickLinksTitle(): string {
551
- return this.quickLinksTitle || UDExFooter.i18nBundle.getText(QUICK_LINKS);
552
+ return this.quickLinksTitle || translate(UDExFooter, QUICK_LINKS);
552
553
  }
553
554
 
554
555
  get _trendingTitle(): string {
555
- return this.trendingTitle || UDExFooter.i18nBundle.getText(TRENDING);
556
+ return this.trendingTitle || translate(UDExFooter, TRENDING);
556
557
  }
557
558
 
558
559
  get _aboutSapTitle(): string {
559
- return this.aboutSapTitle || UDExFooter.i18nBundle.getText(ABOUT_SAP);
560
+ return this.aboutSapTitle || translate(UDExFooter, ABOUT_SAP);
560
561
  }
561
562
 
562
563
  get _siteInformationTitle(): string {
563
- return this.siteInformationTitle || UDExFooter.i18nBundle.getText(SITE_INFORMATION);
564
+ return this.siteInformationTitle || translate(UDExFooter, SITE_INFORMATION);
564
565
  }
565
566
 
566
567
  get completeListTitle(): string {
567
- return `${UDExFooter.i18nBundle.getText(SEE_COMPLETE_LIST)} `;
568
+ return `${translate(UDExFooter, SEE_COMPLETE_LIST)} `;
568
569
  }
569
570
 
570
571
  get localCountryTitle(): string {
571
- return UDExFooter.i18nBundle.getText(LOCAL_COUNTRY_NAMES);
572
+ return translate(UDExFooter, LOCAL_COUNTRY_NAMES);
572
573
  }
573
574
 
574
575
  get copyrightText(): string {
575
- return UDExFooter.i18nBundle.getText(COPYRIGHT, new Date().getFullYear());
576
+ return translate(UDExFooter, COPYRIGHT, new Date().getFullYear());
576
577
  }
577
578
 
578
579
  get chineseICPNumberText(): string {
579
- return this.chineseIcpNumber ?? UDExFooter.i18nBundle.getText(ICP_NUMBER);
580
+ return this.chineseIcpNumber ?? translate(UDExFooter, ICP_NUMBER);
580
581
  }
581
582
 
582
583
  get chineseSecurityNetworkNumberText(): string {
583
- return this.chineseSecurityNetworkNumber ? ` ${this.chineseSecurityNetworkNumber}` : ` ${UDExFooter.i18nBundle.getText(PUBLIC_SECURITY_NETWORK_NUMBER)}`;
584
+ return this.chineseSecurityNetworkNumber ? ` ${this.chineseSecurityNetworkNumber}` : ` ${translate(UDExFooter, PUBLIC_SECURITY_NETWORK_NUMBER)}`;
584
585
  }
585
586
 
586
587
  get isMobile(): boolean {
@@ -626,7 +627,7 @@ class UDExFooter extends UI5Element {
626
627
  }
627
628
 
628
629
  get backToTopTitle(): string {
629
- return UDExFooter.i18nBundle.getText(BACK_TO_TOP);
630
+ return translate(UDExFooter, BACK_TO_TOP);
630
631
  }
631
632
 
632
633
  get hasSocialLinksSlot(): boolean {
@@ -0,0 +1,151 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
+ import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
4
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
5
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
6
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
7
+ import type UDExImageGridTableItem from "./ImageGridTableItem.js";
8
+ import ImageGridTableTemplate from "./ImageGridTableTemplate.js";
9
+ import { Breakpoints } from "./utils/Breakpoints.js";
10
+
11
+ // Styles
12
+ import ImageGridTableCss from "./generated/themes/ImageGridTable.css.js";
13
+ import property from "@ui5/webcomponents-base/decorators/property.js";
14
+
15
+ export enum UDExImageGridTableVariable {
16
+ columns = "--udex-image-grid-table-columns",
17
+ gapDesktop = "--udex-image-grid-table-gap-xl-m",
18
+ gapMobile = "--udex-image-grid-table-gap-s",
19
+ minWidth = "--udex-image-grid-table-item-min-width",
20
+ }
21
+
22
+ /**
23
+ * @class
24
+ *
25
+ * <h3 class="comment-api-title">Overview</h3>
26
+ *
27
+ *
28
+ * <h3>Usage</h3>
29
+ *
30
+ * For the <code>udex-image-grid-table</code>
31
+ * <h3>ES6 Module Import</h3>
32
+ *
33
+ * <code>import "@sapudex/web-components/dist/ImageGridTable.js";</code>
34
+ *
35
+ * @constructor
36
+ * @extends UI5Element
37
+ * @public
38
+ */
39
+ @customElement({
40
+ tag: "udex-image-grid-table",
41
+ renderer: jsxRenderer,
42
+ styles: ImageGridTableCss,
43
+ template: ImageGridTableTemplate,
44
+ })
45
+
46
+ class UDExImageGridTable extends UI5Element {
47
+ /**
48
+ * Slot for image grid table items.
49
+ *
50
+ * @slot
51
+ * @public
52
+ */
53
+ @slot({ type: HTMLElement, "default": true })
54
+ items!: Array<UDExImageGridTableItem>;
55
+
56
+ /**
57
+ * Grayscale mode enhances visual harmony and can be used for minimal,
58
+ * professional layouts or to de-emphasize logos.
59
+ *
60
+ * @default undefined
61
+ * @public
62
+ */
63
+ @property({ type: Boolean })
64
+ grayscale?: boolean;
65
+
66
+ _handleResizeBound: ResizeObserverCallback;
67
+
68
+ constructor() {
69
+ super();
70
+ this._handleResizeBound = this.handleResize.bind(this);
71
+ }
72
+
73
+ onAfterRendering(): void {
74
+ if (!this.isSmallComponentSize) {
75
+ this._renderGrid();
76
+ }
77
+ }
78
+
79
+ onBeforeRendering(): void {
80
+ if (this.grayscale) {
81
+ this._setGrayscaleMode();
82
+ }
83
+ }
84
+
85
+ onEnterDOM(): void {
86
+ ResizeHandler.register(this, this._handleResizeBound);
87
+ }
88
+
89
+ onExitDOM(): void {
90
+ ResizeHandler.deregister(this, this._handleResizeBound);
91
+ }
92
+
93
+ handleResize(): void {
94
+ if (!this.isSmallComponentSize) {
95
+ this._renderGrid();
96
+ }
97
+ }
98
+
99
+ _renderGrid(): void {
100
+ const containerWidth = this.offsetWidth;
101
+ const itemCount = this.items.length;
102
+ const minWidth = this.itemMinWidth;
103
+ const gap = this.itemGap;
104
+
105
+ if (!containerWidth || itemCount === 0) {
106
+ return;
107
+ }
108
+
109
+ let columns = Math.floor((containerWidth - gap) / (minWidth + gap));
110
+ columns = Math.max(1, columns);
111
+
112
+ if (itemCount % columns === 1 && columns > 1) {
113
+ columns -= 1;
114
+ }
115
+
116
+ this.style.setProperty(
117
+ UDExImageGridTableVariable.columns,
118
+ String(columns),
119
+ );
120
+ }
121
+
122
+ _setGrayscaleMode(): void {
123
+ this.items.forEach(item => {
124
+ item._grayscale = true;
125
+ });
126
+ }
127
+
128
+ get itemMinWidth(): number {
129
+ const variableName = UDExImageGridTableVariable.minWidth;
130
+ return parseInt(this.getVariableValue(variableName));
131
+ }
132
+
133
+ get itemGap(): number {
134
+ const variableName = this.isSmallComponentSize
135
+ ? UDExImageGridTableVariable.gapMobile
136
+ : UDExImageGridTableVariable.gapDesktop;
137
+ return parseInt(this.getVariableValue(variableName));
138
+ }
139
+
140
+ get isSmallComponentSize(): boolean {
141
+ return this.offsetWidth <= Breakpoints.S.max;
142
+ }
143
+
144
+ getVariableValue(variableName: string): string {
145
+ return window.getComputedStyle(this).getPropertyValue(`${variableName}`);
146
+ }
147
+ }
148
+
149
+ UDExImageGridTable.define();
150
+
151
+ export default UDExImageGridTable;