@sapudex/web-components 2.1.1 → 2.3.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 (384) hide show
  1. package/bundle.esm.js +1 -0
  2. package/cypress/fixtures/event-ribbon-links.ts +5 -0
  3. package/cypress/specs/Accordion.cy.tsx +1 -2
  4. package/cypress/specs/AccordionItem.cy.tsx +1 -1
  5. package/cypress/specs/Avatar.cy.tsx +1 -1
  6. package/cypress/specs/AvatarGroup.cy.tsx +1 -2
  7. package/cypress/specs/Badge.cy.tsx +1 -1
  8. package/cypress/specs/CountrySelector.cy.tsx +10 -4
  9. package/cypress/specs/EventRibbon.cy.tsx +110 -0
  10. package/cypress/specs/Footer.cy.tsx +1 -1
  11. package/cypress/specs/ListItem.cy.tsx +5 -5
  12. package/cypress/specs/PhoneNumberField.cy.tsx +4 -2
  13. package/cypress/specs/Review.cy.tsx +1 -3
  14. package/cypress/specs/ReviewItem.cy.tsx +1 -1
  15. package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +129 -131
  16. package/cypress/specs/SecondaryNavigationMobile.cy.tsx +27 -38
  17. package/cypress/specs/SelectBox.cy.tsx +93 -88
  18. package/cypress/specs/Slider.cy.tsx +5 -4
  19. package/cypress/specs/StatusBadge.cy.tsx +1 -1
  20. package/cypress/specs/StatusMessage.cy.tsx +1 -1
  21. package/cypress/specs/Switch.cy.tsx +1 -2
  22. package/cypress/specs/Table.cy.tsx +1 -9
  23. package/cypress/specs/Tag.cy.tsx +1 -1
  24. package/cypress/specs/TagGroup.cy.tsx +1 -2
  25. package/cypress/specs/TextField.cy.tsx +1 -1
  26. package/cypress/specs/Textarea.cy.tsx +1 -1
  27. package/cypress/specs/Toast.cy.tsx +1 -1
  28. package/cypress/specs/Tooltip.cy.tsx +1 -2
  29. package/cypress/specs/TruncatedText.cy.tsx +2 -1
  30. package/cypress/specs/Upload.cy.tsx +1 -2
  31. package/cypress/specs/UploadItem.cy.tsx +1 -1
  32. package/cypress/specs/Wizard.cy.tsx +7 -4
  33. package/cypress/support/component-imports.instrumented.ts +91 -0
  34. package/cypress/support/component-imports.src.ts +91 -0
  35. package/cypress/support/component.ts +1 -1
  36. package/cypress.config.ts +6 -0
  37. package/dist/AssetsVariables.js +4 -0
  38. package/dist/AssetsVariables.js.map +1 -1
  39. package/dist/Badge.d.ts +2 -2
  40. package/dist/Badge.js +4 -4
  41. package/dist/Badge.js.map +1 -1
  42. package/dist/Breadcrumbs.d.ts +1 -0
  43. package/dist/Breadcrumbs.js +11 -1
  44. package/dist/Breadcrumbs.js.map +1 -1
  45. package/dist/Button.d.ts +19 -1
  46. package/dist/Button.js +15 -1
  47. package/dist/Button.js.map +1 -1
  48. package/dist/Checkbox.d.ts +1 -0
  49. package/dist/Checkbox.js +3 -0
  50. package/dist/Checkbox.js.map +1 -1
  51. package/dist/ControlButton.d.ts +2 -1
  52. package/dist/ControlButton.js +2 -1
  53. package/dist/ControlButton.js.map +1 -1
  54. package/dist/CountrySelector.d.ts +2 -2
  55. package/dist/CountrySelector.js +3 -1
  56. package/dist/CountrySelector.js.map +1 -1
  57. package/dist/DatePicker.d.ts +2 -2
  58. package/dist/DatePicker.js +2 -1
  59. package/dist/DatePicker.js.map +1 -1
  60. package/dist/EventRibbon.d.ts +80 -0
  61. package/dist/EventRibbon.js +111 -0
  62. package/dist/EventRibbon.js.map +1 -0
  63. package/dist/EventRibbonTemplate.d.ts +2 -0
  64. package/dist/EventRibbonTemplate.js +7 -0
  65. package/dist/EventRibbonTemplate.js.map +1 -0
  66. package/dist/HeroBanner.d.ts +1 -1
  67. package/dist/InputGroup.d.ts +5 -2
  68. package/dist/InputGroup.js +6 -0
  69. package/dist/InputGroup.js.map +1 -1
  70. package/dist/ListItem.d.ts +3 -2
  71. package/dist/ListItem.js +2 -2
  72. package/dist/ListItem.js.map +1 -1
  73. package/dist/MastheadItem.js +1 -1
  74. package/dist/MastheadItem.js.map +1 -1
  75. package/dist/MastheadShell.d.ts +4 -1
  76. package/dist/MastheadShell.js +21 -5
  77. package/dist/MastheadShell.js.map +1 -1
  78. package/dist/MediaPlayer.d.ts +2 -1
  79. package/dist/MediaPlayer.js.map +1 -1
  80. package/dist/MediaPlayerYoutube.d.ts +2 -1
  81. package/dist/MediaPlayerYoutube.js.map +1 -1
  82. package/dist/Pagination.d.ts +18 -4
  83. package/dist/Pagination.js +33 -31
  84. package/dist/Pagination.js.map +1 -1
  85. package/dist/PhoneNumberField.d.ts +10 -7
  86. package/dist/PhoneNumberField.js +8 -2
  87. package/dist/PhoneNumberField.js.map +1 -1
  88. package/dist/ProgressBar.d.ts +2 -2
  89. package/dist/ProgressBar.js +6 -6
  90. package/dist/ProgressBar.js.map +1 -1
  91. package/dist/RadioButton.d.ts +2 -2
  92. package/dist/RadioButton.js +6 -6
  93. package/dist/RadioButton.js.map +1 -1
  94. package/dist/Search.d.ts +0 -1
  95. package/dist/Search.js +1 -3
  96. package/dist/Search.js.map +1 -1
  97. package/dist/SearchableListBase.d.ts +9 -0
  98. package/dist/SearchableListBase.js +10 -2
  99. package/dist/SearchableListBase.js.map +1 -1
  100. package/dist/SecondaryNavigation.d.ts +4 -1
  101. package/dist/SecondaryNavigation.js +38 -10
  102. package/dist/SecondaryNavigation.js.map +1 -1
  103. package/dist/SecondaryNavigationItem.d.ts +10 -0
  104. package/dist/SecondaryNavigationItem.js +19 -0
  105. package/dist/SecondaryNavigationItem.js.map +1 -1
  106. package/dist/SecondaryNavigationItemBase.d.ts +1 -0
  107. package/dist/SecondaryNavigationItemBase.js +4 -0
  108. package/dist/SecondaryNavigationItemBase.js.map +1 -1
  109. package/dist/SecondaryNavigationSubItem.d.ts +0 -1
  110. package/dist/SecondaryNavigationSubItem.js +0 -4
  111. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  112. package/dist/SegmentedButton.d.ts +1 -1
  113. package/dist/SegmentedButton.js +1 -1
  114. package/dist/SegmentedButton.js.map +1 -1
  115. package/dist/SegmentedButtonItem.d.ts +1 -1
  116. package/dist/SegmentedButtonItem.js +2 -2
  117. package/dist/SegmentedButtonItem.js.map +1 -1
  118. package/dist/StatusBadge.d.ts +8 -3
  119. package/dist/StatusBadge.js +9 -1
  120. package/dist/StatusBadge.js.map +1 -1
  121. package/dist/StepInput.d.ts +3 -3
  122. package/dist/StepInput.js.map +1 -1
  123. package/dist/TableCellBase.d.ts +2 -2
  124. package/dist/TableCellBase.js.map +1 -1
  125. package/dist/Tag.d.ts +2 -2
  126. package/dist/Tag.js +4 -4
  127. package/dist/Tag.js.map +1 -1
  128. package/dist/TextArea.d.ts +2 -2
  129. package/dist/TextArea.js +9 -9
  130. package/dist/TextArea.js.map +1 -1
  131. package/dist/TextField.d.ts +9 -2
  132. package/dist/TextField.js +8 -5
  133. package/dist/TextField.js.map +1 -1
  134. package/dist/Toast.js +1 -1
  135. package/dist/Toast.js.map +1 -1
  136. package/dist/Upload.d.ts +1 -1
  137. package/dist/Upload.js +1 -1
  138. package/dist/Upload.js.map +1 -1
  139. package/dist/UploadItem.d.ts +3 -3
  140. package/dist/UploadItem.js +9 -9
  141. package/dist/UploadItem.js.map +1 -1
  142. package/dist/Wizard.d.ts +20 -1
  143. package/dist/Wizard.js +22 -9
  144. package/dist/Wizard.js.map +1 -1
  145. package/dist/WizardTemplate.js +1 -1
  146. package/dist/WizardTemplate.js.map +1 -1
  147. package/dist/assets/InputSuggestions-BgbbJ4tc.js +2 -0
  148. package/dist/assets/{ListItemStandardExpandableTextTemplate-CLBtdbBK.js → ListItemStandardExpandableTextTemplate-onAnn1Tj.js} +2 -2
  149. package/dist/assets/bundle.esm-CwUfibNQ.js +389 -0
  150. package/dist/assets/parameters-bundle.css-1GGBOW8m.js +2 -0
  151. package/dist/assets/parameters-bundle.css-A9eeRg2R.js +2 -0
  152. package/dist/assets/parameters-bundle.css-COBI_9-U.js +2 -0
  153. package/dist/assets/parameters-bundle.css-CgAoZ-Ir.js +2 -0
  154. package/dist/assets/parameters-bundle.css-DuFHHRNK.js +2 -0
  155. package/dist/assets/parameters-bundle.css-Pf68NO0T.js +2 -0
  156. package/dist/assets/parameters-bundle.css-aX_t_-9o.js +2 -0
  157. package/dist/assets/parameters-bundle.css-rNSryFKH.js +2 -0
  158. package/dist/css/themes/Breadcrumbs.css +1 -1
  159. package/dist/css/themes/Button.css +1 -1
  160. package/dist/css/themes/DatePickerPopover.css +1 -1
  161. package/dist/css/themes/EventRibbon.css +1 -0
  162. package/dist/css/themes/ListItem.css +1 -1
  163. package/dist/css/themes/MastheadCountrySelector.css +1 -1
  164. package/dist/css/themes/MastheadItem.css +1 -1
  165. package/dist/css/themes/MastheadShell.css +1 -1
  166. package/dist/css/themes/Modal.css +1 -1
  167. package/dist/css/themes/Pagination.css +1 -1
  168. package/dist/css/themes/RatingIndicator.css +1 -1
  169. package/dist/css/themes/Search.css +1 -1
  170. package/dist/css/themes/SideNavigationItem.css +1 -1
  171. package/dist/css/themes/SideNavigationSubItem.css +1 -1
  172. package/dist/css/themes/Slider.css +1 -1
  173. package/dist/css/themes/TextField.css +1 -1
  174. package/dist/custom-elements-internal.json +471 -37
  175. package/dist/custom-elements.json +442 -35
  176. package/dist/data/CountryListISO3166.d.ts +13 -4
  177. package/dist/data/CountryListISO3166.js +8 -0
  178. package/dist/data/CountryListISO3166.js.map +1 -1
  179. package/dist/generated/json-imports/Themes-node.d.ts +1 -0
  180. package/dist/generated/json-imports/Themes-node.js +19 -0
  181. package/dist/generated/json-imports/Themes-node.js.map +1 -0
  182. package/dist/generated/json-imports/i18n-node.d.ts +1 -0
  183. package/dist/generated/json-imports/i18n-node.js +82 -0
  184. package/dist/generated/json-imports/i18n-node.js.map +1 -0
  185. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
  186. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +1 -1
  187. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +1 -1
  188. package/dist/generated/templates/BreadcrumbsTemplate.lit.js.map +1 -1
  189. package/dist/generated/templates/PaginationTemplate.lit.js +1 -1
  190. package/dist/generated/templates/PaginationTemplate.lit.js.map +1 -1
  191. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +2 -2
  192. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +1 -1
  193. package/dist/generated/templates/SearchTemplate.lit.js +3 -3
  194. package/dist/generated/templates/SearchTemplate.lit.js.map +1 -1
  195. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +2 -2
  196. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -1
  197. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +1 -1
  198. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
  199. package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
  200. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  201. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  202. package/dist/generated/themes/Button.css.d.ts +1 -1
  203. package/dist/generated/themes/Button.css.js +1 -1
  204. package/dist/generated/themes/Button.css.js.map +1 -1
  205. package/dist/generated/themes/DatePickerPopover.css.d.ts +1 -1
  206. package/dist/generated/themes/DatePickerPopover.css.js +1 -1
  207. package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
  208. package/dist/generated/themes/EventRibbon.css.d.ts +2 -0
  209. package/dist/generated/themes/EventRibbon.css.js +8 -0
  210. package/dist/generated/themes/EventRibbon.css.js.map +1 -0
  211. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  212. package/dist/generated/themes/ListItem.css.js +1 -1
  213. package/dist/generated/themes/ListItem.css.js.map +1 -1
  214. package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
  215. package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
  216. package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
  217. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  218. package/dist/generated/themes/MastheadItem.css.js +1 -1
  219. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  220. package/dist/generated/themes/MastheadShell.css.d.ts +1 -1
  221. package/dist/generated/themes/MastheadShell.css.js +1 -1
  222. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  223. package/dist/generated/themes/Modal.css.d.ts +1 -1
  224. package/dist/generated/themes/Modal.css.js +1 -1
  225. package/dist/generated/themes/Modal.css.js.map +1 -1
  226. package/dist/generated/themes/Pagination.css.d.ts +1 -1
  227. package/dist/generated/themes/Pagination.css.js +1 -1
  228. package/dist/generated/themes/Pagination.css.js.map +1 -1
  229. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  230. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  231. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  232. package/dist/generated/themes/Search.css.d.ts +1 -1
  233. package/dist/generated/themes/Search.css.js +1 -1
  234. package/dist/generated/themes/Search.css.js.map +1 -1
  235. package/dist/generated/themes/SideNavigationItem.css.d.ts +1 -1
  236. package/dist/generated/themes/SideNavigationItem.css.js +1 -1
  237. package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
  238. package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
  239. package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
  240. package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
  241. package/dist/generated/themes/Slider.css.d.ts +1 -1
  242. package/dist/generated/themes/Slider.css.js +1 -1
  243. package/dist/generated/themes/Slider.css.js.map +1 -1
  244. package/dist/generated/themes/TextField.css.d.ts +1 -1
  245. package/dist/generated/themes/TextField.css.js +1 -1
  246. package/dist/generated/themes/TextField.css.js.map +1 -1
  247. package/dist/types/ButtonAccessibleRole.d.ts +8 -0
  248. package/dist/types/ButtonAccessibleRole.js +10 -0
  249. package/dist/types/ButtonAccessibleRole.js.map +1 -0
  250. package/dist/types/{Button.d.ts → ButtonDesign.d.ts} +1 -15
  251. package/dist/types/ButtonDesign.js +16 -0
  252. package/dist/types/ButtonDesign.js.map +1 -0
  253. package/dist/types/ButtonSize.d.ts +6 -0
  254. package/dist/types/ButtonSize.js +8 -0
  255. package/dist/types/ButtonSize.js.map +1 -0
  256. package/dist/types/ControlButtonDesign.d.ts +10 -0
  257. package/dist/types/ControlButtonDesign.js +12 -0
  258. package/dist/types/ControlButtonDesign.js.map +1 -0
  259. package/dist/types/EventRibbon.d.ts +37 -0
  260. package/dist/types/EventRibbon.js +43 -0
  261. package/dist/types/EventRibbon.js.map +1 -0
  262. package/dist/types/ProgressBar.d.ts +1 -1
  263. package/dist/types/ProgressBar.js +1 -1
  264. package/dist/types/ProgressBar.js.map +1 -1
  265. package/dist/types/common.d.ts +1 -1
  266. package/dist/types/common.js +1 -1
  267. package/dist/types/common.js.map +1 -1
  268. package/dist/vscode.html-custom-data.json +110 -10
  269. package/dist/web-types.json +159 -13
  270. package/filter-coverage.js +58 -0
  271. package/package.json +14 -9
  272. package/src/AssetsVariables.ts +4 -0
  273. package/src/Badge.ts +4 -4
  274. package/src/Breadcrumbs.hbs +7 -10
  275. package/src/Breadcrumbs.ts +14 -1
  276. package/src/BreadcrumbsPopover.hbs +3 -1
  277. package/src/Button.ts +21 -1
  278. package/src/Checkbox.ts +4 -0
  279. package/src/ControlButton.ts +2 -1
  280. package/src/CountrySelector.ts +5 -3
  281. package/src/DatePicker.ts +4 -3
  282. package/src/EventRibbon.ts +143 -0
  283. package/src/EventRibbonTemplate.tsx +18 -0
  284. package/src/InputGroup.ts +5 -2
  285. package/src/ListItem.ts +4 -4
  286. package/src/MastheadItem.ts +1 -1
  287. package/src/MastheadShell.ts +25 -5
  288. package/src/MediaPlayer.ts +3 -1
  289. package/src/MediaPlayerYoutube.ts +4 -2
  290. package/src/Pagination.hbs +7 -3
  291. package/src/Pagination.ts +49 -32
  292. package/src/PhoneNumberField.hbs +1 -1
  293. package/src/PhoneNumberField.ts +13 -5
  294. package/src/ProgressBar.ts +6 -6
  295. package/src/RadioButton.ts +6 -6
  296. package/src/Search.hbs +3 -2
  297. package/src/Search.ts +1 -3
  298. package/src/SearchableListBase.ts +18 -2
  299. package/src/SecondaryNavigation.hbs +1 -0
  300. package/src/SecondaryNavigation.ts +41 -12
  301. package/src/SecondaryNavigationItem.hbs +2 -1
  302. package/src/SecondaryNavigationItem.ts +31 -0
  303. package/src/SecondaryNavigationItemBase.ts +3 -0
  304. package/src/SecondaryNavigationSubItem.ts +0 -3
  305. package/src/SegmentedButton.ts +1 -1
  306. package/src/SegmentedButtonItem.ts +2 -2
  307. package/src/StatusBadge.ts +8 -3
  308. package/src/StepInput.ts +3 -3
  309. package/src/TableCellBase.ts +2 -2
  310. package/src/Tag.ts +4 -4
  311. package/src/TextArea.ts +9 -9
  312. package/src/TextField.ts +14 -5
  313. package/src/Toast.ts +1 -1
  314. package/src/Upload.ts +1 -1
  315. package/src/UploadItem.ts +9 -9
  316. package/src/Wizard.ts +39 -11
  317. package/src/WizardTemplate.tsx +5 -1
  318. package/src/data/CountryListISO3166.ts +10 -2
  319. package/src/generated/json-imports/Themes-node.ts +21 -0
  320. package/src/generated/json-imports/i18n-node.ts +85 -0
  321. package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +1 -1
  322. package/src/generated/templates/BreadcrumbsTemplate.lit.ts +1 -1
  323. package/src/generated/templates/PaginationTemplate.lit.ts +1 -1
  324. package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +1 -1
  325. package/src/generated/templates/SearchTemplate.lit.ts +3 -3
  326. package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +2 -2
  327. package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +1 -1
  328. package/src/generated/themes/Breadcrumbs.css.ts +1 -1
  329. package/src/generated/themes/Button.css.ts +1 -1
  330. package/src/generated/themes/DatePickerPopover.css.ts +1 -1
  331. package/src/generated/themes/EventRibbon.css.ts +9 -0
  332. package/src/generated/themes/ListItem.css.ts +1 -1
  333. package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
  334. package/src/generated/themes/MastheadItem.css.ts +1 -1
  335. package/src/generated/themes/MastheadShell.css.ts +1 -1
  336. package/src/generated/themes/Modal.css.ts +1 -1
  337. package/src/generated/themes/Pagination.css.ts +1 -1
  338. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  339. package/src/generated/themes/Search.css.ts +1 -1
  340. package/src/generated/themes/SideNavigationItem.css.ts +1 -1
  341. package/src/generated/themes/SideNavigationSubItem.css.ts +1 -1
  342. package/src/generated/themes/Slider.css.ts +1 -1
  343. package/src/generated/themes/TextField.css.ts +1 -1
  344. package/src/themes/Breadcrumbs.css +3 -0
  345. package/src/themes/Button.css +71 -29
  346. package/src/themes/DatePickerPopover.css +64 -6
  347. package/src/themes/EventRibbon.css +411 -0
  348. package/src/themes/ListItem.css +4 -0
  349. package/src/themes/MastheadCountrySelector.css +8 -5
  350. package/src/themes/MastheadItem.css +12 -4
  351. package/src/themes/MastheadShell.css +5 -2
  352. package/src/themes/Modal.css +6 -1
  353. package/src/themes/Pagination.css +19 -0
  354. package/src/themes/Search.css +8 -1
  355. package/src/themes/SideNavigationItem.css +9 -1
  356. package/src/themes/SideNavigationSubItem.css +7 -0
  357. package/src/themes/TextField.css +2 -13
  358. package/src/types/ButtonAccessibleRole.ts +9 -0
  359. package/src/types/{Button.ts → ButtonDesign.ts} +1 -17
  360. package/src/types/ButtonSize.ts +7 -0
  361. package/src/types/ControlButtonDesign.ts +11 -0
  362. package/src/types/EventRibbon.ts +51 -0
  363. package/src/types/ProgressBar.ts +1 -1
  364. package/src/types/common.ts +1 -1
  365. package/swap-component-imports.js +18 -0
  366. package/dist/assets/InputSuggestions-CP3cBQsh.js +0 -2
  367. package/dist/assets/bundle.esm-jHcdiVfj.js +0 -380
  368. package/dist/assets/parameters-bundle.css-BU4Bi-ho.js +0 -2
  369. package/dist/assets/parameters-bundle.css-Beilb2gS.js +0 -2
  370. package/dist/assets/parameters-bundle.css-BzQMaZUt.js +0 -2
  371. package/dist/assets/parameters-bundle.css-Bzfv_Fox.js +0 -2
  372. package/dist/assets/parameters-bundle.css-CLwmjytB.js +0 -2
  373. package/dist/assets/parameters-bundle.css-CU3plTdF.js +0 -2
  374. package/dist/assets/parameters-bundle.css-DRX-o-Cb.js +0 -2
  375. package/dist/assets/parameters-bundle.css-DhFMZJhW.js +0 -2
  376. package/dist/css/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +0 -1
  377. package/dist/generated/assets/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.json +0 -1
  378. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.d.ts +0 -2
  379. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js +0 -3
  380. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js.map +0 -1
  381. package/dist/types/Button.js +0 -33
  382. package/dist/types/Button.js.map +0 -1
  383. package/src/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.ts +0 -2
  384. package/src/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +0 -195
package/src/Pagination.ts CHANGED
@@ -16,6 +16,7 @@ import {
16
16
  PREVIOUS_PAGE,
17
17
  NEXT_PAGE,
18
18
  CURRENT_PAGE,
19
+ DISABLED,
19
20
  } from "./generated/i18n/i18n-defaults.js";
20
21
  import Button from "./Button.js";
21
22
  import "@ui5/webcomponents/dist/Icon.js";
@@ -46,7 +47,7 @@ export enum UDExDisplayType {
46
47
  mobile = "mobile"
47
48
  }
48
49
 
49
- type UDExPaginationChangeEventDetail = {
50
+ export type UDExPaginationChangeEventDetail = {
50
51
  currentPage: number,
51
52
  }
52
53
 
@@ -124,6 +125,22 @@ class UDExPagination extends UI5Element {
124
125
  @property({ type: String })
125
126
  _direction?: string;
126
127
 
128
+ /**
129
+ * Defines if the previous button is in pseudo-disabled.
130
+ *
131
+ * @private
132
+ */
133
+ @property({ type: Boolean })
134
+ _nextButtonPseudoDisabled!: boolean;
135
+
136
+ /**
137
+ * Defines if the previous button is in pseudo-disabled.
138
+ *
139
+ * @private
140
+ */
141
+ @property({ type: Boolean })
142
+ _prevButtonPseudoDisabled!: boolean;
143
+
127
144
  @i18n("@sapudex/web-components")
128
145
  static i18nBundle: I18nBundle;
129
146
 
@@ -159,7 +176,7 @@ class UDExPagination extends UI5Element {
159
176
  this.setupPages(this.pages);
160
177
  }
161
178
 
162
- get nextButtonDisbled(): boolean {
179
+ get nextButtonDisabled(): boolean {
163
180
  return this.currentPageIndex + 1 === this.pages;
164
181
  }
165
182
 
@@ -230,8 +247,12 @@ class UDExPagination extends UI5Element {
230
247
  }
231
248
 
232
249
  get previousPageAccessibleName(): string {
233
- if (this.currentPageIndex === 0) { return UDExPagination.i18nBundle.getText(PREVIOUS_PAGE); }
234
- return `${UDExPagination.i18nBundle.getText(CURRENT_PAGE)} ${this.currentPageIndex + 1}. ${UDExPagination.i18nBundle.getText(PREVIOUS_PAGE)}. ${this.activatePageAccessibleText} ${this.currentPageIndex}`;
250
+ const currentPageText = `${UDExPagination.i18nBundle.getText(CURRENT_PAGE)} ${this.currentPageIndex + 1}.`;
251
+ if (this._prevButtonPseudoDisabled || this.prevButtonDisabled) {
252
+ const effectiveDisabledText = this._prevButtonPseudoDisabled ? `${UDExPagination.i18nBundle.getText(DISABLED)}` : "";
253
+ return `${currentPageText} ${UDExPagination.i18nBundle.getText(PREVIOUS_PAGE)} ${effectiveDisabledText}`;
254
+ }
255
+ return `${currentPageText} ${UDExPagination.i18nBundle.getText(PREVIOUS_PAGE)}. ${this.activatePageAccessibleText} ${this.currentPageIndex}`;
235
256
  }
236
257
 
237
258
  get previousBtnTooltip(): string {
@@ -239,12 +260,16 @@ class UDExPagination extends UI5Element {
239
260
  }
240
261
 
241
262
  get nextPageAccessibleName(): string {
242
- if (this.pages && this.currentPageIndex === (this.pages - 1)) { return UDExPagination.i18nBundle.getText(NEXT_PAGE); }
243
- return `${UDExPagination.i18nBundle.getText(CURRENT_PAGE)} ${this.currentPageIndex + 1}. ${UDExPagination.i18nBundle.getText(NEXT_PAGE)}. ${this.activatePageAccessibleText} ${this.currentPageIndex + 2}`;
263
+ const currentPageText = `${UDExPagination.i18nBundle.getText(CURRENT_PAGE)} ${this.currentPageIndex + 1}.`;
264
+ if (this._nextButtonPseudoDisabled || this.nextButtonDisabled) {
265
+ const effectiveDisabledText = this._nextButtonPseudoDisabled ? `${UDExPagination.i18nBundle.getText(DISABLED)}` : "";
266
+ return `${currentPageText} ${UDExPagination.i18nBundle.getText(NEXT_PAGE)} ${effectiveDisabledText}`;
267
+ }
268
+ return `${currentPageText} ${UDExPagination.i18nBundle.getText(NEXT_PAGE)}. ${this.activatePageAccessibleText} ${this.currentPageIndex + 2}`;
244
269
  }
245
270
 
246
271
  get nextBtnTooltip(): string {
247
- return !this.nextButtonDisbled ? `${UDExPagination.i18nBundle.getText(NEXT_PAGE)}` : "";
272
+ return !this.nextButtonDisabled ? `${UDExPagination.i18nBundle.getText(NEXT_PAGE)}` : "";
248
273
  }
249
274
 
250
275
  get pagination(): Page[] {
@@ -297,46 +322,38 @@ class UDExPagination extends UI5Element {
297
322
  this.currentPageIndex = currentPage + 1;
298
323
  this._pageFocusedManually = false;
299
324
 
325
+ this._nextButtonPseudoDisabled = this.currentPageIndex === (this.pages - 1);
326
+
300
327
  this.emitChangeEvent();
301
328
  }
302
329
 
303
- setPrevPage(e: Event): void {
304
- e.preventDefault();
305
- const currentPage = this.currentPageIndex ?? 1;
306
- if (this.pages && currentPage <= 0) {
307
- return;
308
- }
309
- this.currentPageIndex -= 1;
310
- this._pageFocusedManually = false;
311
-
312
- this.emitChangeEvent();
330
+ get effectiveNextButtonDisabled(): boolean {
331
+ return !this._nextButtonPseudoDisabled && this.nextButtonDisabled;
313
332
  }
314
333
 
315
- setFirstPage(e: Event): void {
316
- e.preventDefault();
317
- const currentPage = this.currentPageIndex ?? 1;
318
- if (currentPage === 0) {
319
- return;
320
- }
334
+ get effectivePrevButtonDisabled(): boolean {
335
+ return !this._prevButtonPseudoDisabled && this.prevButtonDisabled;
336
+ }
321
337
 
322
- this._firstPageIndex = 0;
323
- this._lastPageIndex = this.displayNumber;
338
+ handlePrevFocusOut(): void {
339
+ this._prevButtonPseudoDisabled = false;
340
+ }
324
341
 
325
- this.currentPageIndex = 0;
326
- this.emitChangeEvent();
342
+ handleNextFocusOut(): void {
343
+ this._nextButtonPseudoDisabled = false;
327
344
  }
328
345
 
329
- setLastPage(e: Event): void {
346
+ setPrevPage(e: Event): void {
330
347
  e.preventDefault();
331
348
  const currentPage = this.currentPageIndex ?? 1;
332
- if (!this.pages || currentPage >= this.pages - 1) {
349
+ if (this.pages && currentPage <= 0) {
333
350
  return;
334
351
  }
352
+ this.currentPageIndex -= 1;
353
+ this._pageFocusedManually = false;
335
354
 
336
- this._firstPageIndex = this.pages - this.displayNumber;
337
- this._lastPageIndex = this.pages;
355
+ this._prevButtonPseudoDisabled = this.currentPageIndex === 0;
338
356
 
339
- this.currentPageIndex = this._lastPageIndex - 1;
340
357
  this.emitChangeEvent();
341
358
  }
342
359
 
@@ -64,7 +64,7 @@
64
64
  <img
65
65
  class="udex-phone-number-field__flag"
66
66
  aria-label="{{selectedCountryName}}"
67
- style="{{selectedFlagBackgroundPosition}}">
67
+ style="background-position-x: {{selectedFlagBackgroundPosition.x}}; background-position-y: {{selectedFlagBackgroundPosition.y}}">
68
68
  </div>
69
69
  </udex-button>
70
70
  {{/unless}}
@@ -24,7 +24,6 @@ import "@ui5/webcomponents-icons/dist/slim-arrow-up.js";
24
24
  import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
25
25
 
26
26
  import PhoneNumberFieldTemplate from "./generated/templates/PhoneNumberFieldTemplate.lit.js";
27
- import type UDExValueState from "./types/common.js";
28
27
 
29
28
  // Styles
30
29
  import PhoneNumberFieldCss from "./generated/themes/PhoneNumberField.css.js";
@@ -39,7 +38,16 @@ export enum UDExOpenButtonIcon {
39
38
  iconDown = "slim-arrow-down",
40
39
  }
41
40
 
42
- export type UDExPhoneNumberFieldValueState = Exclude<UDExValueState, "Warning">
41
+ export enum UDExPhoneNumberFieldValueState {
42
+ Standard = "Standard",
43
+ Error = "Error",
44
+ Success = "Success",
45
+ }
46
+
47
+ export type BackgroundPosition = {
48
+ x?: string,
49
+ y?: string,
50
+ };
43
51
 
44
52
  const initialPlaceholder: string = "+X XXX-XXX-XXXX";
45
53
  /**
@@ -101,7 +109,7 @@ class UDExPhoneNumberField extends UI5Element {
101
109
  * @public
102
110
  */
103
111
  @property()
104
- valueState: `${UDExPhoneNumberFieldValueState}` = "Standard";
112
+ valueState: `${UDExPhoneNumberFieldValueState}` = UDExPhoneNumberFieldValueState.Standard;
105
113
 
106
114
  /**
107
115
  * Defines supporting text under the input field.
@@ -561,7 +569,7 @@ class UDExPhoneNumberField extends UI5Element {
561
569
  || this.updatedCountriesList[0]?.countryName;
562
570
  }
563
571
 
564
- get selectedFlagBackgroundPosition() {
572
+ get selectedFlagBackgroundPosition(): BackgroundPosition {
565
573
  if (!this.countryIso) {
566
574
  return {};
567
575
  }
@@ -572,7 +580,7 @@ class UDExPhoneNumberField extends UI5Element {
572
580
  return {};
573
581
  }
574
582
 
575
- return { "backgroundPosition": `${selectedCountry.flagX} ${selectedCountry.flagY}` };
583
+ return { x: selectedCountry?.flagX, y: selectedCountry?.flagY };
576
584
  }
577
585
 
578
586
  get ariaInvalid(): string | null {
@@ -7,7 +7,7 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
7
7
  import {
8
8
  VALUE_STATE_ERROR, VALUE_STATE_SUCCESS, VALUE_STATE_WARNING, VALUE_STATE_INFORMATION,
9
9
  } from "./generated/i18n/i18n-defaults.js";
10
- import ProgressBarValueState from "./types/ProgressBar.js";
10
+ import UDExProgressBarValueState from "./types/ProgressBar.js";
11
11
 
12
12
  // Styles
13
13
  import ProgressBarCss from "./generated/themes/ProgressBar.css.js";
@@ -47,17 +47,17 @@ class UDExProgressBar extends ProgressIndicator {
47
47
  */
48
48
  @property()
49
49
  /** @ts-expect-error */
50
- valueState!: `${ProgressBarValueState}` = ProgressBarValueState.None;
50
+ valueState!: `${UDExProgressBarValueState}` = UDExProgressBarValueState.None;
51
51
 
52
52
  @i18n("@sapudex/web-components")
53
53
  static i18nBundle: I18nBundle;
54
54
 
55
55
  valueStateTextMappings(): Record<string, string> {
56
56
  return {
57
- [ProgressBarValueState.Error]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_ERROR),
58
- [ProgressBarValueState.Warning]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_WARNING),
59
- [ProgressBarValueState.Success]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_SUCCESS),
60
- [ProgressBarValueState.Information]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_INFORMATION),
57
+ [UDExProgressBarValueState.Error]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_ERROR),
58
+ [UDExProgressBarValueState.Warning]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_WARNING),
59
+ [UDExProgressBarValueState.Success]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_SUCCESS),
60
+ [UDExProgressBarValueState.Information]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_INFORMATION),
61
61
  };
62
62
  }
63
63
  }
@@ -7,7 +7,7 @@ import {
7
7
  } from "./generated/i18n/i18n-defaults.js";
8
8
  import RadioButton from "@ui5/webcomponents/dist/RadioButton.js";
9
9
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
10
- import RadioButtonValueState from "./types/RadioButton.js";
10
+ import UDExRadioButtonValueState from "./types/RadioButton.js";
11
11
 
12
12
  // Styles
13
13
  import RadioButtonCss from "./generated/themes/RadioButton.css.js";
@@ -53,7 +53,7 @@ class UDExRadioButton extends RadioButton {
53
53
  */
54
54
  @property()
55
55
  /** @ts-expect-error */
56
- valueState!: `${RadioButtonValueState}` = RadioButtonValueState.None;
56
+ valueState!: `${UDExRadioButtonValueState}` = UDExRadioButtonValueState.None;
57
57
 
58
58
  @i18n("@sapudex/web-components")
59
59
  static i18nBundle: I18nBundle;
@@ -65,13 +65,13 @@ class UDExRadioButton extends RadioButton {
65
65
 
66
66
  get valueStateText(): string {
67
67
  switch (this.valueState) {
68
- case RadioButtonValueState.Error:
68
+ case UDExRadioButtonValueState.Error:
69
69
  return RadioButton.i18nBundle.getText(VALUE_STATE_ERROR);
70
- case RadioButtonValueState.Success:
70
+ case UDExRadioButtonValueState.Success:
71
71
  return RadioButton.i18nBundle.getText(VALUE_STATE_SUCCESS);
72
- case RadioButtonValueState.Information:
72
+ case UDExRadioButtonValueState.Information:
73
73
  return RadioButton.i18nBundle.getText(VALUE_STATE_INFORMATION);
74
- case RadioButtonValueState.Warning:
74
+ case UDExRadioButtonValueState.Warning:
75
75
  return RadioButton.i18nBundle.getText(VALUE_STATE_WARNING);
76
76
  default:
77
77
  return "";
package/src/Search.hbs CHANGED
@@ -73,8 +73,8 @@
73
73
  @click="{{handleInputClick}}"
74
74
  />
75
75
  {{/if}}
76
- {{#if accInfo.ariaDescription}}
77
- <span role="status" id="search-description" class="hidden" aria-hidden="true">{{accInfo.ariaDescription}}</span>
76
+ {{#if open}}
77
+ <span aria-live="polite" aria-atomic="true" id="search-description" class="hidden" aria-hidden="true">{{suggestionsDescription}}</span>
78
78
  {{/if}}
79
79
  <div class="udex-search__icons">
80
80
  {{#if isShowHomeResetButton}}
@@ -123,6 +123,7 @@
123
123
  class="udex-search__icon"
124
124
  aria-hidden="true"
125
125
  accessible-name="{{accInfo.accessibleNameSearchIcon}}"
126
+ show-tooltip
126
127
  name="search">
127
128
  </ui5-icon>
128
129
  {{/if}}
package/src/Search.ts CHANGED
@@ -710,7 +710,6 @@ class UDExSearch extends UI5Element {
710
710
 
711
711
  getTextWithSuggestion(text: string): string {
712
712
  const escapedValue = this.escapeRegExp(this.value);
713
- console.warn(escapedValue);
714
713
  const search = new RegExp(escapedValue, "i");
715
714
  return text.replace(search, "<b>$&</b>");
716
715
  }
@@ -1285,14 +1284,13 @@ class UDExSearch extends UI5Element {
1285
1284
  get accInfo() {
1286
1285
  return {
1287
1286
  "ariaLabel": this.accessibleName || undefined,
1288
- "ariaDescription": this.open ? this.suggestionsDescription : undefined,
1289
1287
  "accessibleNameResetIcon": this.accessibleNameResetIcon || UDExSearch.i18nBundle.getText(ACCESSIBLE_NAME_RESET_ICON),
1290
1288
  "accessibleNameSearchIcon": this.accessibleNameSearchIcon || UDExSearch.i18nBundle.getText(ACCESSIBLE_NAME_SEARCH_ICON),
1291
1289
  };
1292
1290
  }
1293
1291
 
1294
1292
  get suggestionsDescription(): string {
1295
- return this.hasPopoverContent ? `${this.suggestedList.length} ${this._suggestionLabel}, ${this.recommendedList.length} ${this._recommendLabel}` : `${this.noResultText}`;
1293
+ return !this.showNoResultMessage ? `${this.suggestedList.length} ${this._suggestionLabel}, ${this.recommendedList.length} ${this._recommendLabel}` : `${this.noResultMessage}`;
1296
1294
  }
1297
1295
 
1298
1296
  get tooltipInfo() {
@@ -97,6 +97,15 @@ class UDExSearchableListBase extends UI5Element {
97
97
  @property({ type: Boolean })
98
98
  busy?: boolean;
99
99
 
100
+ /**
101
+ * Defines if the search input is visible.
102
+ *
103
+ * @default false
104
+ * @public
105
+ */
106
+ @property({ type: Boolean })
107
+ showSearchInput!: boolean;
108
+
100
109
  /**
101
110
  * Defines the delay in milliseconds, after which the busy indicator will show up for this component.
102
111
  *
@@ -502,8 +511,15 @@ class UDExSearchableListBase extends UI5Element {
502
511
  }
503
512
 
504
513
  get showSearch(): boolean {
505
- const items = this.getSlottedItems(this.items).filter(({ isGroup }) => !isGroup);
506
- return items.length > SHOW_SEARCH_AFTER_COUNT && !this.modeRadioGroup;
514
+ return this.showSearchInput || (this.isSearchActive && !this.modeRadioGroup);
515
+ }
516
+
517
+ get isSearchActive(): boolean {
518
+ return this.nonGroupItems.length > SHOW_SEARCH_AFTER_COUNT;
519
+ }
520
+
521
+ get nonGroupItems(): Array<UDExListItemBase> {
522
+ return this.getSlottedItems(this.items).filter(item => !item.isGroup);
507
523
  }
508
524
 
509
525
  get roleForGroupList(): string {
@@ -66,6 +66,7 @@
66
66
  label="{{heading}}"
67
67
  mobile-link-title="{{title}}"
68
68
  @ui5-sub-item-click="{{handleSubItemClick}}"
69
+ _is-mobile-menu-opener
69
70
  .subItems="{{this.parsedItems}}">
70
71
  {{#if hasMobileButtonsSlot}}
71
72
  {{>buttons}}
@@ -145,7 +145,8 @@ class UDExSecondaryNavigation extends UI5Element {
145
145
  _mobileBtnExpanded = false;
146
146
 
147
147
  _navItems!: Array<NavItem>;
148
- _showMoreButton: boolean;
148
+ _showMoreButton: boolean = true;
149
+ _shouldFocusFirstItem: boolean = true;
149
150
  _rootHolder!: HTMLElement | null | undefined;
150
151
  _clickedNavItem!: UDExSecondaryNavigationItem;
151
152
  _boundReflowItems: () => void;
@@ -155,7 +156,6 @@ class UDExSecondaryNavigation extends UI5Element {
155
156
 
156
157
  constructor() {
157
158
  super();
158
- this._showMoreButton = true;
159
159
  this._boundReflowItems = this._handleResize.bind(this);
160
160
  }
161
161
 
@@ -171,13 +171,6 @@ class UDExSecondaryNavigation extends UI5Element {
171
171
  ResizeHandler.deregister(this, this._boundReflowItems);
172
172
  }
173
173
 
174
- _handleResize() {
175
- this.reflowItems();
176
- if (this._clickedNavItem && this.isDesktopScreen) {
177
- this._clickedNavItem.closeDropdown();
178
- }
179
- }
180
-
181
174
  onInvalidation(changeInfo: ChangeInfo): void {
182
175
  if (changeInfo.name === "navItems") {
183
176
  this.reflowItems();
@@ -186,6 +179,12 @@ class UDExSecondaryNavigation extends UI5Element {
186
179
 
187
180
  onAfterRendering(): void {
188
181
  this._rootHolder = this.rootHolder;
182
+ if (!this._overflowItems.length) {
183
+ this._showMoreButton = true;
184
+ }
185
+ if (this._shouldFocusFirstItem && this.isDesktopScreen) {
186
+ this.domNavItems[0]._tabIndex = "0";
187
+ }
189
188
  this.handleOutsideClick();
190
189
  }
191
190
 
@@ -193,6 +192,16 @@ class UDExSecondaryNavigation extends UI5Element {
193
192
  this._requestRender = !this._requestRender;
194
193
  }
195
194
 
195
+ _handleResize() {
196
+ this.reflowItems();
197
+ if (this.isDesktopScreen) {
198
+ this.resetTabIndex();
199
+ }
200
+ if (this._clickedNavItem && this.isDesktopScreen) {
201
+ this._clickedNavItem.closeDropdown();
202
+ }
203
+ }
204
+
196
205
  reflowItems(): void {
197
206
  const availableWidth = this.rootHolder.offsetWidth - (this.headingHolder?.offsetWidth || 0) - (this.optionalButtons?.offsetWidth || 0);
198
207
  const moreButtonWidth = this.getMoreButtonWidth();
@@ -243,9 +252,12 @@ class UDExSecondaryNavigation extends UI5Element {
243
252
  const item = e.target as UDExSecondaryNavigationItem;
244
253
  const currentSelectedIndex = this.getCurrentIndex(item);
245
254
  const previousSelectIndex = currentSelectedIndex - 1;
255
+ const previousItem = this.domNavItems[previousSelectIndex];
246
256
  if (currentSelectedIndex > 0) {
247
257
  e.preventDefault();
248
- this.domNavItems[previousSelectIndex]?.focus();
258
+ this.domNavItems[currentSelectedIndex]._tabIndex = "-1";
259
+ previousItem._tabIndex = "0";
260
+ previousItem?.focus();
249
261
  }
250
262
  }
251
263
 
@@ -254,9 +266,12 @@ class UDExSecondaryNavigation extends UI5Element {
254
266
  const currentSelectedIndex = this.getCurrentIndex(item);
255
267
  const lastItemIndex = this.domNavItems.length - 1;
256
268
  const nextSelectIndex = currentSelectedIndex + 1;
269
+ const nextItem = this.domNavItems[nextSelectIndex];
257
270
  if (nextSelectIndex < lastItemIndex) {
258
271
  e.preventDefault();
259
- this.domNavItems[nextSelectIndex].focus();
272
+ this.domNavItems[currentSelectedIndex]._tabIndex = "-1";
273
+ nextItem._tabIndex = "0";
274
+ nextItem.focus();
260
275
  }
261
276
  }
262
277
 
@@ -305,6 +320,8 @@ class UDExSecondaryNavigation extends UI5Element {
305
320
  }
306
321
 
307
322
  this._clickedNavItem = clickedItem;
323
+ this._shouldFocusFirstItem = false;
324
+ this.setTabIndexById(_id);
308
325
  this.closePrevDropdown(_id);
309
326
 
310
327
  if (!subItems.length) {
@@ -401,7 +418,7 @@ class UDExSecondaryNavigation extends UI5Element {
401
418
 
402
419
  closePrevDropdown(clickedItemId: string): void {
403
420
  this.domNavItems.forEach(item => {
404
- if (clickedItemId !== item._id) {
421
+ if (item.isOpen && item._id !== clickedItemId) {
405
422
  item.closeDropdown();
406
423
  }
407
424
  });
@@ -411,6 +428,18 @@ class UDExSecondaryNavigation extends UI5Element {
411
428
  return string ? JSON.parse(string) as T[] : [];
412
429
  }
413
430
 
431
+ resetTabIndex(): void {
432
+ this.domNavItems.forEach((item, index) => {
433
+ item._tabIndex = index === 0 ? "0" : "-1";
434
+ });
435
+ }
436
+
437
+ setTabIndexById(id: string): void {
438
+ this.domNavItems.forEach(item => {
439
+ item._tabIndex = id === item._id ? "0" : "-1";
440
+ });
441
+ }
442
+
414
443
  get domNavItems(): Array<UDExSecondaryNavigationItem> {
415
444
  const items = this.shadowRoot?.querySelectorAll<UDExSecondaryNavigationItem>("[udex-secondary-navigation-item]");
416
445
  return items ? Array.from(items) : [];
@@ -5,6 +5,7 @@
5
5
  ?active="{{isActive}}"
6
6
  href="{{path}}"
7
7
  target="{{target}}"
8
+ tabindex="{{_tabIndex}}"
8
9
  aria-current="{{ariaCurrent}}"
9
10
  @keydown="{{handleItemLinkKeyDown}}"
10
11
  @click="{{fireNavItemClickEvent}}">
@@ -14,7 +15,7 @@
14
15
  <button
15
16
  class="udex-secondary-navigation__item"
16
17
  role="{{itemRole}}"
17
- tabindex="0"
18
+ tabindex="{{menuOpenerTabIndex}}"
18
19
  ?active="{{isActive}}"
19
20
  aria-haspopup="{{hasNestedItems}}"
20
21
  aria-expanded="{{isOpen}}"
@@ -157,9 +157,20 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
157
157
  @property({ type: Object })
158
158
  _processedItems: Array<NavItem> = [];
159
159
 
160
+ /**
161
+ * Defines if item is mobile menu opener.
162
+ *
163
+ * @private
164
+ * @default false
165
+ */
166
+ @property({ type: Boolean })
167
+ _isMobileMenuOpener!: boolean;
168
+
160
169
  _dropdownHistory: Array<Array<NavItem>> = [];
161
170
  _shouldFocusFirstSubItem!: boolean;
162
171
  _subTitle!: string | undefined;
172
+ _shouldResetTabIndex!: boolean;
173
+ _shouldSetTabIndex!: boolean;
163
174
 
164
175
  onAfterRendering(): void {
165
176
  if (this.isLastItem && this.isOpen && !this._isMobileView) {
@@ -174,6 +185,16 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
174
185
  if (this._isMobileView && this.isOpen) {
175
186
  this.setDropdownHeight();
176
187
  }
188
+
189
+ if (this._shouldSetTabIndex) {
190
+ this._tabIndex = "0";
191
+ this._shouldSetTabIndex = false;
192
+ }
193
+
194
+ if (this._shouldResetTabIndex) {
195
+ this._tabIndex = "-1";
196
+ this._shouldResetTabIndex = false;
197
+ }
177
198
  }
178
199
 
179
200
  onBeforeRendering() : void {
@@ -202,6 +223,7 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
202
223
  if (this.hasNestedItems) {
203
224
  this.setDropdownItems();
204
225
  this.isOpen = !this.isOpen;
226
+ this._shouldResetTabIndex = true;
205
227
  this.onShouldFocusFirstSubItem();
206
228
  }
207
229
 
@@ -210,6 +232,7 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
210
232
 
211
233
  closeDropdown(): void {
212
234
  this.isOpen = false;
235
+ this._shouldSetTabIndex = true;
213
236
  }
214
237
 
215
238
  handleItemLinkKeyDown(e: KeyboardEvent): void {
@@ -425,6 +448,14 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
425
448
  return this.shadowRoot!.querySelector<HTMLElement>(".udex-secondary-navigation__dropdown")!;
426
449
  }
427
450
 
451
+ get menuOpenerTabIndex(): string {
452
+ if (this._isMobileMenuOpener) {
453
+ return "0";
454
+ }
455
+
456
+ return this._tabIndex;
457
+ }
458
+
428
459
  get isLastItem(): boolean {
429
460
  return this._navItemsLength === this.index;
430
461
  }
@@ -94,6 +94,9 @@ class UDExSecondaryNavigationItemBase extends UI5Element {
94
94
  @property({ type: Boolean })
95
95
  _isMobileView!: boolean;
96
96
 
97
+ @property({ type: String })
98
+ _tabIndex: string = "-1";
99
+
97
100
  _handleResizeBound: ResizeObserverCallback;
98
101
 
99
102
  constructor() {
@@ -89,9 +89,6 @@ class UDExSecondaryNavigationSubItem extends UDExSecondaryNavigationItemBase {
89
89
  @property({ type: Object })
90
90
  nestedItems: Array<NavItem> = [];
91
91
 
92
- @property({ type: String })
93
- _tabIndex: string = "-1";
94
-
95
92
  @i18n("@sapudex/web-components")
96
93
  static i18nBundle: I18nBundle;
97
94
 
@@ -9,7 +9,7 @@ import { getScopedVarName } from "@ui5/webcomponents-base/dist/CustomElementsSco
9
9
  import SegmentedButtonSelectionMode from "@ui5/webcomponents/dist/types/SegmentedButtonSelectionMode.js";
10
10
  import SegmentedButtonCss from "./generated/themes/SegmentedButton.css.js";
11
11
  import UDExSegmentedButtonItem from "./SegmentedButtonItem.js";
12
- import { UDExButtonSize } from "./types/Button.js";
12
+ import UDExButtonSize from "./types/ButtonSize.js";
13
13
 
14
14
  /**
15
15
  * @class
@@ -5,7 +5,7 @@ import SegmentedButtonItem from "@ui5/webcomponents/dist/SegmentedButtonItem.js"
5
5
  // Styles
6
6
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
7
7
  import SegmentedButtonItemCss from "./generated/themes/SegmentedButtonItem.css.js";
8
- import { UDExButtonSize } from "./types/Button.js";
8
+ import UDExButtonSize from "./types/ButtonSize.js";
9
9
 
10
10
  /**
11
11
  * @class
@@ -44,7 +44,7 @@ class UDExSegmentedButtonItem extends SegmentedButtonItem {
44
44
  *
45
45
  * @private
46
46
  */
47
- @property()
47
+ @property({ type: Boolean })
48
48
  hasIcon: boolean = false;
49
49
 
50
50
  constructor() {
@@ -23,7 +23,6 @@ import StatusBadgeTemplate from "./generated/templates/StatusBadgeTemplate.lit.j
23
23
 
24
24
  // Styles
25
25
  import StatusBadgeCss from "./generated/themes/StatusBadge.css.js";
26
- import type UDExProgressBarValueState from "./types/ProgressBar.js";
27
26
 
28
27
  export enum IconMapping {
29
28
  Success = "sys-enter-2",
@@ -41,7 +40,13 @@ export enum BadgeSize {
41
40
  XL = "XL",
42
41
  }
43
42
 
44
- export type UDExStatusBadgeValueState = `${Exclude<UDExProgressBarValueState, "None">}` | "Edit";
43
+ export enum UDExStatusBadgeValueState {
44
+ Warning = "Warning",
45
+ Error = "Error",
46
+ Success = "Success",
47
+ Information = "Information",
48
+ Edit = "Edit"
49
+ }
45
50
 
46
51
  /**
47
52
  * @class
@@ -75,7 +80,7 @@ class UDExStatusBadge extends UI5Element {
75
80
  * @public
76
81
  */
77
82
  @property()
78
- valueState: UDExStatusBadgeValueState = "Information";
83
+ valueState: `${UDExStatusBadgeValueState}` = UDExStatusBadgeValueState.Information;
79
84
 
80
85
  /**
81
86
  * Defines predefined size of the component.