@sapudex/web-components 2.34.0 → 2.36.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 (178) hide show
  1. package/cypress/specs/Breadcrumbs.cy.tsx +4 -5
  2. package/cypress/specs/ListItem.cy.tsx +25 -21
  3. package/cypress/specs/MastheadMenu.cy.tsx +81 -0
  4. package/cypress/specs/MastheadShell.cy.tsx +79 -0
  5. package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +14 -0
  6. package/cypress/specs/SelectBox.cy.tsx +166 -1
  7. package/cypress/specs/Wizard.cy.tsx +6 -0
  8. package/cypress/support/component-imports.instrumented.ts +2 -0
  9. package/cypress/support/component-imports.src.ts +2 -0
  10. package/dist/BreadcrumbsPopoverTemplate.js +1 -1
  11. package/dist/BreadcrumbsPopoverTemplate.js.map +1 -1
  12. package/dist/BreadcrumbsTemplate.js +1 -1
  13. package/dist/BreadcrumbsTemplate.js.map +1 -1
  14. package/dist/CountrySelector.d.ts +1 -0
  15. package/dist/CountrySelector.js +3 -0
  16. package/dist/CountrySelector.js.map +1 -1
  17. package/dist/FilterMenu.d.ts +1 -0
  18. package/dist/FilterMenu.js +3 -0
  19. package/dist/FilterMenu.js.map +1 -1
  20. package/dist/ListItemBase.d.ts +2 -0
  21. package/dist/ListItemBase.js +6 -0
  22. package/dist/ListItemBase.js.map +1 -1
  23. package/dist/MastheadItem.d.ts +10 -0
  24. package/dist/MastheadItem.js +35 -3
  25. package/dist/MastheadItem.js.map +1 -1
  26. package/dist/MastheadMenu.d.ts +3 -0
  27. package/dist/MastheadMenu.js +16 -6
  28. package/dist/MastheadMenu.js.map +1 -1
  29. package/dist/MediaPlayer.d.ts +1 -1
  30. package/dist/MediaPlayer.js.map +1 -1
  31. package/dist/SecondaryNavigationItem.d.ts +5 -1
  32. package/dist/SecondaryNavigationItem.js +35 -5
  33. package/dist/SecondaryNavigationItem.js.map +1 -1
  34. package/dist/SelectBase.js +13 -4
  35. package/dist/SelectBase.js.map +1 -1
  36. package/dist/SelectBox.d.ts +1 -0
  37. package/dist/SelectBox.js +3 -0
  38. package/dist/SelectBox.js.map +1 -1
  39. package/dist/Wizard.js +2 -2
  40. package/dist/Wizard.js.map +1 -1
  41. package/dist/assets/{InputSuggestions-Bz7HZXUc.js → InputSuggestions-BIR_sdOv.js} +1 -1
  42. package/dist/assets/{ListItemStandardExpandableTextTemplate-CjE7hAvu.js → ListItemStandardExpandableTextTemplate-5xOuY0en.js} +1 -1
  43. package/dist/assets/{bundle.esm-mAR7ytdB.js → bundle.esm-C8GwJvJr.js} +633 -219
  44. package/dist/css/themes/Breadcrumbs.css +1 -1
  45. package/dist/css/themes/BreadcrumbsPopover.css +1 -1
  46. package/dist/css/themes/FilterMenu.css +1 -1
  47. package/dist/css/themes/ListGroupHeader.css +1 -1
  48. package/dist/css/themes/MastheadCountrySelector.css +1 -1
  49. package/dist/css/themes/MastheadItem.css +1 -1
  50. package/dist/css/themes/MastheadMenu.css +1 -1
  51. package/dist/css/themes/MastheadMenuItem.css +1 -1
  52. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  53. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  54. package/dist/css/themes/RatingIndicator.css +1 -1
  55. package/dist/css/themes/SearchableList.css +1 -1
  56. package/dist/css/themes/SecondaryNavigation.css +1 -1
  57. package/dist/css/themes/SecondaryNavigationItem.css +1 -1
  58. package/dist/css/themes/SelectBase.css +1 -1
  59. package/dist/css/themes/Slider.css +1 -1
  60. package/dist/custom-elements-internal.json +166 -166
  61. package/dist/custom-elements.json +151 -151
  62. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +16 -12
  63. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +1 -1
  64. package/dist/generated/templates/ListItemTemplate.lit.js +40 -36
  65. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  66. package/dist/generated/templates/MastheadItemTemplate.lit.js +2 -2
  67. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  68. package/dist/generated/templates/MastheadShellTemplate.lit.js +3 -3
  69. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  70. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +1 -1
  71. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  72. package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
  73. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  74. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  75. package/dist/generated/themes/BreadcrumbsPopover.css.d.ts +1 -1
  76. package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
  77. package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
  78. package/dist/generated/themes/FilterMenu.css.d.ts +1 -1
  79. package/dist/generated/themes/FilterMenu.css.js +1 -1
  80. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  81. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  82. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  83. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  84. package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
  85. package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
  86. package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
  87. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  88. package/dist/generated/themes/MastheadItem.css.js +1 -1
  89. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  90. package/dist/generated/themes/MastheadMenu.css.d.ts +1 -1
  91. package/dist/generated/themes/MastheadMenu.css.js +1 -1
  92. package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
  93. package/dist/generated/themes/MastheadMenuItem.css.d.ts +1 -1
  94. package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
  95. package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
  96. package/dist/generated/themes/MastheadMobileMenu.css.d.ts +1 -1
  97. package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
  98. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  99. package/dist/generated/themes/MastheadProfileMenu.css.d.ts +1 -1
  100. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  101. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  102. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  103. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  104. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  105. package/dist/generated/themes/SearchableList.css.d.ts +1 -1
  106. package/dist/generated/themes/SearchableList.css.js +1 -1
  107. package/dist/generated/themes/SearchableList.css.js.map +1 -1
  108. package/dist/generated/themes/SecondaryNavigation.css.d.ts +1 -1
  109. package/dist/generated/themes/SecondaryNavigation.css.js +1 -1
  110. package/dist/generated/themes/SecondaryNavigation.css.js.map +1 -1
  111. package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +1 -1
  112. package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
  113. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
  114. package/dist/generated/themes/SelectBase.css.d.ts +1 -1
  115. package/dist/generated/themes/SelectBase.css.js +1 -1
  116. package/dist/generated/themes/SelectBase.css.js.map +1 -1
  117. package/dist/generated/themes/Slider.css.d.ts +1 -1
  118. package/dist/generated/themes/Slider.css.js +1 -1
  119. package/dist/generated/themes/Slider.css.js.map +1 -1
  120. package/dist/types/List.d.ts +2 -0
  121. package/dist/types/List.js +2 -0
  122. package/dist/types/List.js.map +1 -1
  123. package/dist/vscode.html-custom-data.json +72 -12
  124. package/dist/web-types.json +71 -21
  125. package/package.json +1 -1
  126. package/src/BreadcrumbsPopoverTemplate.tsx +1 -1
  127. package/src/BreadcrumbsTemplate.tsx +1 -1
  128. package/src/CountrySelector.ts +3 -0
  129. package/src/FilterMenu.ts +3 -0
  130. package/src/ListGroupHeader.hbs +11 -7
  131. package/src/ListItem.hbs +2 -0
  132. package/src/ListItemBase.ts +8 -0
  133. package/src/MastheadItem.hbs +2 -0
  134. package/src/MastheadItem.ts +37 -3
  135. package/src/MastheadMenu.ts +19 -6
  136. package/src/MastheadShell.hbs +3 -0
  137. package/src/MediaPlayer.ts +1 -1
  138. package/src/SearchableListBase.hbs +9 -1
  139. package/src/SecondaryNavigationItem.ts +37 -5
  140. package/src/SelectBase.ts +14 -4
  141. package/src/SelectBox.ts +3 -0
  142. package/src/Wizard.ts +2 -2
  143. package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +16 -12
  144. package/src/generated/templates/ListItemTemplate.lit.ts +40 -36
  145. package/src/generated/templates/MastheadItemTemplate.lit.ts +2 -2
  146. package/src/generated/templates/MastheadShellTemplate.lit.ts +3 -3
  147. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +1 -1
  148. package/src/generated/themes/Breadcrumbs.css.ts +1 -1
  149. package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
  150. package/src/generated/themes/FilterMenu.css.ts +1 -1
  151. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  152. package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
  153. package/src/generated/themes/MastheadItem.css.ts +1 -1
  154. package/src/generated/themes/MastheadMenu.css.ts +1 -1
  155. package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
  156. package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
  157. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  158. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  159. package/src/generated/themes/SearchableList.css.ts +1 -1
  160. package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
  161. package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
  162. package/src/generated/themes/SelectBase.css.ts +1 -1
  163. package/src/generated/themes/Slider.css.ts +1 -1
  164. package/src/themes/Breadcrumbs.css +17 -2
  165. package/src/themes/BreadcrumbsPopover.css +18 -3
  166. package/src/themes/FilterMenu.css +4 -9
  167. package/src/themes/ListGroupHeader.css +11 -0
  168. package/src/themes/MastheadCountrySelector.css +8 -4
  169. package/src/themes/MastheadItem.css +44 -10
  170. package/src/themes/MastheadMenu.css +6 -5
  171. package/src/themes/MastheadMenuItem.css +16 -8
  172. package/src/themes/MastheadMobileMenu.css +5 -4
  173. package/src/themes/MastheadProfileMenu.css +2 -1
  174. package/src/themes/SearchableList.css +18 -3
  175. package/src/themes/SecondaryNavigation.css +1 -1
  176. package/src/themes/SecondaryNavigationItem.css +5 -2
  177. package/src/themes/SelectBase.css +0 -9
  178. package/src/types/List.ts +2 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@sapudex/web-components",
4
- "version": "2.34.0",
4
+ "version": "2.36.0",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -2127,7 +2127,10 @@
2127
2127
  {
2128
2128
  "name": "type",
2129
2129
  "description": "Defines the type of the item.",
2130
- "value": { "type": "\"None\" | \"Icon\"", "default": "\"None\"" }
2130
+ "value": {
2131
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\"",
2132
+ "default": "\"None\""
2133
+ }
2131
2134
  },
2132
2135
  {
2133
2136
  "name": "collapsible",
@@ -2234,7 +2237,9 @@
2234
2237
  {
2235
2238
  "name": "type",
2236
2239
  "description": "Defines the type of the item.",
2237
- "value": { "type": "\"None\" | \"Icon\"" }
2240
+ "value": {
2241
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\""
2242
+ }
2238
2243
  },
2239
2244
  {
2240
2245
  "name": "collapsible",
@@ -2346,7 +2351,10 @@
2346
2351
  {
2347
2352
  "name": "type",
2348
2353
  "description": "Defines the type of the item.",
2349
- "value": { "type": "\"None\" | \"Icon\"", "default": "\"None\"" }
2354
+ "value": {
2355
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\"",
2356
+ "default": "\"None\""
2357
+ }
2350
2358
  },
2351
2359
  {
2352
2360
  "name": "collapsible",
@@ -2449,7 +2457,9 @@
2449
2457
  {
2450
2458
  "name": "type",
2451
2459
  "description": "Defines the type of the item.",
2452
- "value": { "type": "\"None\" | \"Icon\"" }
2460
+ "value": {
2461
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\""
2462
+ }
2453
2463
  },
2454
2464
  {
2455
2465
  "name": "collapsible",
@@ -2562,7 +2572,10 @@
2562
2572
  {
2563
2573
  "name": "type",
2564
2574
  "description": "Defines the type of the item.",
2565
- "value": { "type": "\"None\" | \"Icon\"", "default": "\"None\"" }
2575
+ "value": {
2576
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\"",
2577
+ "default": "\"None\""
2578
+ }
2566
2579
  },
2567
2580
  {
2568
2581
  "name": "collapsible",
@@ -2672,7 +2685,9 @@
2672
2685
  {
2673
2686
  "name": "type",
2674
2687
  "description": "Defines the type of the item.",
2675
- "value": { "type": "\"None\" | \"Icon\"" }
2688
+ "value": {
2689
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\""
2690
+ }
2676
2691
  },
2677
2692
  {
2678
2693
  "name": "collapsible",
@@ -3711,7 +3726,10 @@
3711
3726
  {
3712
3727
  "name": "type",
3713
3728
  "description": "Defines the type of the item.",
3714
- "value": { "type": "\"None\" | \"Icon\"", "default": "\"None\"" }
3729
+ "value": {
3730
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\"",
3731
+ "default": "\"None\""
3732
+ }
3715
3733
  },
3716
3734
  {
3717
3735
  "name": "height",
@@ -3770,7 +3788,9 @@
3770
3788
  {
3771
3789
  "name": "type",
3772
3790
  "description": "Defines the type of the item.",
3773
- "value": { "type": "\"None\" | \"Icon\"" }
3791
+ "value": {
3792
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\""
3793
+ }
3774
3794
  },
3775
3795
  {
3776
3796
  "name": "height",
@@ -3890,7 +3910,10 @@
3890
3910
  {
3891
3911
  "name": "type",
3892
3912
  "description": "Defines the type of the item.",
3893
- "value": { "type": "\"None\" | \"Icon\"", "default": "\"None\"" }
3913
+ "value": {
3914
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\"",
3915
+ "default": "\"None\""
3916
+ }
3894
3917
  },
3895
3918
  {
3896
3919
  "name": "collapsible",
@@ -4004,7 +4027,9 @@
4004
4027
  {
4005
4028
  "name": "type",
4006
4029
  "description": "Defines the type of the item.",
4007
- "value": { "type": "\"None\" | \"Icon\"" }
4030
+ "value": {
4031
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\""
4032
+ }
4008
4033
  },
4009
4034
  {
4010
4035
  "name": "collapsible",
@@ -4183,7 +4208,10 @@
4183
4208
  {
4184
4209
  "name": "type",
4185
4210
  "description": "Defines the type of the item.",
4186
- "value": { "type": "\"None\" | \"Icon\"", "default": "\"None\"" }
4211
+ "value": {
4212
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\"",
4213
+ "default": "\"None\""
4214
+ }
4187
4215
  },
4188
4216
  {
4189
4217
  "name": "collapsible",
@@ -4354,7 +4382,9 @@
4354
4382
  {
4355
4383
  "name": "type",
4356
4384
  "description": "Defines the type of the item.",
4357
- "value": { "type": "\"None\" | \"Icon\"" }
4385
+ "value": {
4386
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\""
4387
+ }
4358
4388
  },
4359
4389
  {
4360
4390
  "name": "collapsible",
@@ -4475,7 +4505,10 @@
4475
4505
  {
4476
4506
  "name": "type",
4477
4507
  "description": "Defines the type of the item.",
4478
- "value": { "type": "\"None\" | \"Icon\"", "default": "\"None\"" }
4508
+ "value": {
4509
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\"",
4510
+ "default": "\"None\""
4511
+ }
4479
4512
  },
4480
4513
  {
4481
4514
  "name": "collapsible",
@@ -4589,7 +4622,9 @@
4589
4622
  {
4590
4623
  "name": "type",
4591
4624
  "description": "Defines the type of the item.",
4592
- "value": { "type": "\"None\" | \"Icon\"" }
4625
+ "value": {
4626
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\""
4627
+ }
4593
4628
  },
4594
4629
  {
4595
4630
  "name": "collapsible",
@@ -7632,7 +7667,10 @@
7632
7667
  {
7633
7668
  "name": "type",
7634
7669
  "description": "Defines the type of the item.",
7635
- "value": { "type": "\"None\" | \"Icon\"", "default": "\"None\"" }
7670
+ "value": {
7671
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\"",
7672
+ "default": "\"None\""
7673
+ }
7636
7674
  },
7637
7675
  {
7638
7676
  "name": "collapsible",
@@ -7742,7 +7780,9 @@
7742
7780
  {
7743
7781
  "name": "type",
7744
7782
  "description": "Defines the type of the item.",
7745
- "value": { "type": "\"None\" | \"Icon\"" }
7783
+ "value": {
7784
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\""
7785
+ }
7746
7786
  },
7747
7787
  {
7748
7788
  "name": "collapsible",
@@ -7863,7 +7903,10 @@
7863
7903
  {
7864
7904
  "name": "type",
7865
7905
  "description": "Defines the type of the item.",
7866
- "value": { "type": "\"None\" | \"Icon\"", "default": "\"None\"" }
7906
+ "value": {
7907
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\"",
7908
+ "default": "\"None\""
7909
+ }
7867
7910
  },
7868
7911
  {
7869
7912
  "name": "collapsible",
@@ -7979,7 +8022,9 @@
7979
8022
  {
7980
8023
  "name": "type",
7981
8024
  "description": "Defines the type of the item.",
7982
- "value": { "type": "\"None\" | \"Icon\"" }
8025
+ "value": {
8026
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\""
8027
+ }
7983
8028
  },
7984
8029
  {
7985
8030
  "name": "collapsible",
@@ -8092,7 +8137,10 @@
8092
8137
  {
8093
8138
  "name": "type",
8094
8139
  "description": "Defines the type of the item.",
8095
- "value": { "type": "\"None\" | \"Icon\"", "default": "\"None\"" }
8140
+ "value": {
8141
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\"",
8142
+ "default": "\"None\""
8143
+ }
8096
8144
  },
8097
8145
  {
8098
8146
  "name": "collapsible",
@@ -8202,7 +8250,9 @@
8202
8250
  {
8203
8251
  "name": "type",
8204
8252
  "description": "Defines the type of the item.",
8205
- "value": { "type": "\"None\" | \"Icon\"" }
8253
+ "value": {
8254
+ "type": "\"Circle\" | \"Number\" | \"None\" | \"Icon\""
8255
+ }
8206
8256
  },
8207
8257
  {
8208
8258
  "name": "collapsible",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@sapudex/web-components",
4
- "version": "2.34.0",
4
+ "version": "2.36.0",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
7
7
  },
@@ -25,7 +25,7 @@ export default function BreadcrumbsPopoverTemplate(this: Breadcrumbs) {
25
25
  if (!item._isCurrentPageItem) { focusablePos++; }
26
26
  const posLabel = `${item.accessibleName || item.textContent || ""}, ${focusablePos} ${ofText} ${focusableCount}`;
27
27
  return item._isCurrentPageItem ? (
28
- <li key={index} aria-hidden="true">
28
+ <li key={index}>
29
29
  <span
30
30
  id={`${item._id}-li`}
31
31
  className={`${this._rootClass}__item ${this._rootClass}__item--current ${this._rootClass}__item--hidden ${this._rootClass}__item--${index}`}
@@ -32,7 +32,7 @@ export default function BreadcrumbsTemplate(this: Breadcrumbs) {
32
32
  id={`${linkData._id}-link-wrapper`}>
33
33
  {linkData._isCurrentPageItem ? (
34
34
  <>
35
- <span className={`${this._rootClass}__separator`} aria-hidden="true"></span>
35
+ <span className={`${this._rootClass}__separator`}></span>
36
36
  <span
37
37
  id={`${linkData._id}-link`}
38
38
  class={`${rootClass}__item ${this._rootClass}__item--visible ${this._rootClass}__item--current-page`}
@@ -6,6 +6,8 @@ import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
6
6
  import "@ui5/webcomponents-icons/dist/navigation-up-arrow.js";
7
7
  import type { Country } from "./data/CountryListISO3166.js";
8
8
  import { CountryListDB } from "./data/CountryListISO3166.js";
9
+ import IllustratedMessage from "@ui5/webcomponents-fiori/dist/IllustratedMessage.js";
10
+ import "@ui5/webcomponents-fiori/dist/illustrations/NoSearchResults.js";
9
11
  import UDExSearch from "./Search.js";
10
12
  import UDExDropdown from "./Dropdown.js";
11
13
  import UDExList from "./List.js";
@@ -63,6 +65,7 @@ type UDExCountrySelectorChangeSearchEventDetail = {
63
65
  UDExDropdown,
64
66
  UDExTextField,
65
67
  UDExStatusMessage,
68
+ IllustratedMessage,
66
69
  ],
67
70
  })
68
71
 
package/src/FilterMenu.ts CHANGED
@@ -11,6 +11,8 @@ import PopupAccessibleRole from "@ui5/webcomponents/dist/types/PopupAccessibleRo
11
11
  import Popover from "@ui5/webcomponents/dist/Popover.js";
12
12
  import UDExBusyIndicator from "./BusyIndicator.js";
13
13
  import Icon from "@ui5/webcomponents/dist/Icon.js";
14
+ import IllustratedMessage from "@ui5/webcomponents-fiori/dist/IllustratedMessage.js";
15
+ import "@ui5/webcomponents-fiori/dist/illustrations/NoSearchResults.js";
14
16
  import UDExList from "./List.js";
15
17
  import UDExListItem from "./ListItem.js";
16
18
  import UDExListGroupHeader from "./ListGroupHeader.js";
@@ -80,6 +82,7 @@ type UDExFilterMenuResetClickEventDetail = {
80
82
  styles: [FilterMenuCss, SearchableListCss, getEffectiveScrollbarStyle()],
81
83
  template: FilterMenuTemplate,
82
84
  dependencies: [
85
+ IllustratedMessage,
83
86
  Popover,
84
87
  Icon,
85
88
  UDExBusyIndicator,
@@ -125,6 +125,8 @@
125
125
 
126
126
  {{#*inline "single-group-header"}}
127
127
  <div class="udex-list__group-content udex-list__group-header-wrap {{sizeClass}}" part="group-item">
128
+ {{#if typeNumber}}<span class="udex-list__number">{{numberOfItem}}.</span>{{/if}}
129
+ {{#if typeCircle}}<span class="udex-list__circle">&#x2022;</span>{{/if}}
128
130
  {{#if typeIcon}}
129
131
  <ui5-icon
130
132
  class="udex-list__icon"
@@ -145,13 +147,15 @@
145
147
 
146
148
  {{#*inline "single-group-header-collapsible"}}
147
149
  <div class="udex-list__group-content udex-list__group-header-wrap {{sizeClass}}" part="group-item"
148
- id="{{this._id}}_group-content__focusable"
149
- role="button"
150
- tabindex="0"
151
- @keydown="{{handleKeyDown}}"
152
- _tab-index="{{_effectiveTabIndex}}"
153
- aria-expanded="{{expanded}}"
154
- aria-controls="{{ariaControlsId}}">
150
+ id="{{this._id}}_group-content__focusable"
151
+ role="button"
152
+ tabindex="0"
153
+ @keydown="{{handleKeyDown}}"
154
+ _tab-index="{{_effectiveTabIndex}}"
155
+ aria-expanded="{{expanded}}"
156
+ aria-controls="{{ariaControlsId}}">
157
+ {{#if typeNumber}}<span class="udex-list__number">{{numberOfItem}}.</span>{{/if}}
158
+ {{#if typeCircle}}<span class="udex-list__circle">&#x2022;</span>{{/if}}
155
159
  {{#if typeIcon}}
156
160
  <ui5-icon
157
161
  class="udex-list__icon"
package/src/ListItem.hbs CHANGED
@@ -56,6 +56,8 @@
56
56
  <span class="udex-list__flag" style="background-position: {{flagPosition}}"></span>
57
57
  </div>
58
58
  {{/if}}
59
+ {{#if typeNumber}}<span class="udex-list__number">{{numberOfItem}}.</span>{{/if}}
60
+ {{#if typeCircle}}<span class="udex-list__circle">&#x2022;</span>{{/if}}
59
61
  {{#if typeIcon}}
60
62
  <ui5-icon
61
63
  class="udex-list__icon"
@@ -334,6 +334,14 @@ class UDExListItemBase extends UI5Element {
334
334
  return this.modeMultiSelect || this.modeRadioGroup;
335
335
  }
336
336
 
337
+ get typeNumber(): boolean {
338
+ return this.type === UDExListStyleType.Number;
339
+ }
340
+
341
+ get typeCircle(): boolean {
342
+ return this.type === UDExListStyleType.Circle;
343
+ }
344
+
337
345
  get typeIcon(): boolean {
338
346
  return this.type === UDExListStyleType.Icon;
339
347
  }
@@ -24,6 +24,7 @@
24
24
  <button
25
25
  id="{{this._id}}"
26
26
  class="udex-masthead-item__btn udex-masthead-item__profile-btn {{additionalClass}}"
27
+ tabindex="0"
27
28
  aria-expanded="{{buttonAriaExpanded}}"
28
29
  aria-describedby="{{ariaDescribedBy}}"
29
30
  aria-controls="{{this._id}}_dropdown"
@@ -41,6 +42,7 @@
41
42
  role="{{accessibleRoleName}}"
42
43
  id="{{this._id}}"
43
44
  class="udex-masthead-item__btn {{additionalClass}}"
45
+ tabindex="0"
44
46
  aria-expanded="{{buttonAriaExpanded}}"
45
47
  aria-controls="{{this._id}}_dropdown"
46
48
  aria-describedby="{{ariaDescribedBy}}"
@@ -8,7 +8,7 @@ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
8
8
  import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
9
9
  import "@ui5/webcomponents-icons/dist/search.js";
10
10
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
11
- import { isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
11
+ import { isEscape, isTabNext } from "@ui5/webcomponents-base/dist/Keys.js";
12
12
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
13
13
  import {
14
14
  OPENS_IN_A_NEW_WINDOW, PROFILE, CART, COUNTRY_SELECTOR, SUPPORT, SEARCH,
@@ -324,6 +324,14 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
324
324
  @property({ type: Boolean })
325
325
  _imageLoadError = false;
326
326
 
327
+ /**
328
+ * Defines if the item has the dropdown with four columns menu
329
+ *
330
+ * @private
331
+ */
332
+ @property({ type: Boolean })
333
+ _hasFourColumnsMenu = false;
334
+
327
335
  @i18n("@sapudex/web-components")
328
336
  static i18nBundle: I18nBundle;
329
337
 
@@ -338,13 +346,16 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
338
346
 
339
347
  onBeforeRendering(): void {
340
348
  this.label = this.eventItemTitle;
349
+ if (this.hasFourColumnsMenu && !this.isExploreBtn) {
350
+ this._hasFourColumnsMenu = true;
351
+ }
341
352
  }
342
353
 
343
354
  onAfterRendering(): void {
344
355
  this._profileAvatar = this.profileAvatar;
345
356
  this._mastheadShell = this.mastheadShell;
346
357
  this.handleDirection();
347
- if (this.selected && this.hasDropdownSlot && !this.isMobile && !this.isExploreBtn) {
358
+ if (this.selected && this.hasDropdownSlot && !this.isMobile && !this.isExploreBtn && !this.hasFourColumnsMenu) {
348
359
  this.setDropdownInsetStart();
349
360
  }
350
361
 
@@ -398,6 +409,20 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
398
409
  this.handleKeyEscape();
399
410
  }
400
411
  }
412
+ if (isTabNext(e) && this.isDropdownOpened) {
413
+ const button = this.getDomElement(".udex-masthead-item__btn, .udex-masthead-item__profile-btn");
414
+ if (button && e.currentTarget === button) {
415
+ this.handleTabIntoDropdown(e);
416
+ }
417
+ }
418
+ }
419
+
420
+ handleTabIntoDropdown(e: KeyboardEvent): void {
421
+ const menu = this.getSlottedNodes<UDExMastheadMenu>("dropdown")[0];
422
+ if (menu && typeof menu.focusFirstItem === "function") {
423
+ e.preventDefault();
424
+ menu.focusFirstItem();
425
+ }
401
426
  }
402
427
 
403
428
  handleKeyEscape(): void {
@@ -484,7 +509,7 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
484
509
 
485
510
  recalculateDropdownPosition(): void {
486
511
  const dropdown = this.dropdownHolder;
487
- if (dropdown) {
512
+ if (dropdown && !this.hasFourColumnsMenu) {
488
513
  dropdown.style.marginInlineStart = "";
489
514
  this.setDropdownInsetStart();
490
515
  }
@@ -704,6 +729,15 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
704
729
  get imageLoadError(): boolean {
705
730
  return this._imageLoadError && this.isCountrySelectorBtn;
706
731
  }
732
+
733
+ get dropdownMenu(): UDExMastheadMenu | undefined {
734
+ return this.getSlottedNodes<UDExMastheadMenu>("dropdown")
735
+ .find(el => el instanceof UDExMastheadMenu);
736
+ }
737
+
738
+ get hasFourColumnsMenu(): boolean {
739
+ return !!this.dropdownMenu?.hasFourColumns;
740
+ }
707
741
  }
708
742
 
709
743
  UDExMastheadItem.define();
@@ -156,14 +156,12 @@ class UDExMastheadMenu extends UI5Element {
156
156
 
157
157
  handleHomeKey(e: KeyboardEvent): void {
158
158
  e.preventDefault();
159
- const firstItem = this.links[0];
160
- firstItem.focus();
159
+ this.focusInnerElement(this.links[0]);
161
160
  }
162
161
 
163
162
  handleEndKey(e: KeyboardEvent): void {
164
163
  e.preventDefault();
165
- const lastItem = this.links[this.links.length - 1];
166
- lastItem.focus();
164
+ this.focusInnerElement(this.links[this.links.length - 1]);
167
165
  }
168
166
 
169
167
  handlePreviousItemFocus(e: KeyboardEvent): void {
@@ -208,7 +206,7 @@ class UDExMastheadMenu extends UI5Element {
208
206
  if (this._scrollIntoView) {
209
207
  this.scrollToItem(this.links[previousSelectIndex]);
210
208
  }
211
- this.links[previousSelectIndex].focus();
209
+ this.focusInnerElement(this.links[previousSelectIndex]);
212
210
  }
213
211
 
214
212
  focusNextItem(item: UDExMastheadMenuItem): void {
@@ -217,13 +215,24 @@ class UDExMastheadMenu extends UI5Element {
217
215
  if (this._scrollIntoView) {
218
216
  this.scrollToItem(this.links[nextSelectIndex]);
219
217
  }
220
- this.links[nextSelectIndex].focus();
218
+ this.focusInnerElement(this.links[nextSelectIndex]);
221
219
  }
222
220
 
223
221
  getCurrentIndex(item: UDExMastheadMenuItem): number {
224
222
  return this.links.indexOf(item);
225
223
  }
226
224
 
225
+ focusFirstItem(): void {
226
+ const firstItem = this.links[0];
227
+ if (firstItem) {
228
+ this.focusInnerElement(firstItem);
229
+ }
230
+ }
231
+
232
+ private focusInnerElement(item: UDExMastheadMenuItem): void {
233
+ item.shadowRoot?.querySelector<HTMLElement>(".udex-masthead-menu-item")?.focus();
234
+ }
235
+
227
236
  scrollToItem(item: UDExMastheadMenuItem): void {
228
237
  item.scrollIntoView({ block: this._scrollIntoView?.toLowerCase() as ScrollLogicalPosition });
229
238
  }
@@ -261,6 +270,10 @@ class UDExMastheadMenu extends UI5Element {
261
270
  get overviewHeaderLinkText(): string {
262
271
  return translate(UDExMastheadMenu, OVERVIEW);
263
272
  }
273
+
274
+ get hasFourColumns(): boolean {
275
+ return this.itemsList.some(item => item.subMenuLinkItems.length === 4);
276
+ }
264
277
  }
265
278
 
266
279
  UDExMastheadMenu.define();
@@ -151,6 +151,7 @@
151
151
  @click="{{handleLogoClick}}"
152
152
  role="link"
153
153
  href="{{homeUrl}}"
154
+ tabindex="0"
154
155
  title="{{logoTitle}}"
155
156
  target="_self"
156
157
  aria-label="{{homepageAriaLabel}}"
@@ -178,6 +179,7 @@
178
179
  @click="{{handleSiteLabelClick}}"
179
180
  role="link"
180
181
  href="{{siteLabelUrl}}"
182
+ tabindex="0"
181
183
  title="{{siteLabelTitle}}"
182
184
  target="_self"
183
185
  aria-label="{{siteLabelAriaLabel}}"
@@ -196,6 +198,7 @@
196
198
  class="udex-masthead-shell__co-brand-link"
197
199
  @click="{{handleCoBrandClick}}"
198
200
  href="{{coBrandUrl}}"
201
+ tabindex="0"
199
202
  title="{{coBrandTitle}}"
200
203
  aria-label="{{coBrandAriaLabel}}"
201
204
  target="_self"
@@ -670,4 +670,4 @@ class UDExMediaPlayer extends UI5Element {
670
670
  UDExMediaPlayer.define();
671
671
 
672
672
  export default UDExMediaPlayer;
673
- export type { UDExMediaPlayerVideoProgressEventDetail };
673
+ export type { UDExMediaPlayerVideoProgressEventDetail, UDExMediaPlayerVideojsReadyEventDetail };
@@ -16,7 +16,15 @@
16
16
  </span>
17
17
  {{/if}}
18
18
  {{#if isListEmpty}}
19
- <div class="udex-no-result"><span>{{getNoResultText}}</span></div>
19
+ <div class="udex-no-result">
20
+ <ui5-illustrated-message
21
+ name="NoSearchResults"
22
+ design="Dot"
23
+ title-text=" "
24
+ subtitle-text=" ">
25
+ </ui5-illustrated-message>
26
+ <span>{{getNoResultText}}</span>
27
+ </div>
20
28
  {{else if busy}}
21
29
  <udex-busy-indicator
22
30
  class="udex-busy-indicator"
@@ -19,6 +19,8 @@ import SecondaryNavigationItemTemplate from "./generated/templates/SecondaryNavi
19
19
  // Styles
20
20
  import SecondaryNavigationItemCss from "./generated/themes/SecondaryNavigationItem.css.js";
21
21
 
22
+ const DESKTOP_DROPDOWN_BOTTOM_GAP = 24;
23
+
22
24
  type UDExSecondaryNavigationItemClickEventDetail = {
23
25
  item: HTMLElement,
24
26
  index: number,
@@ -175,8 +177,12 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
175
177
  this._shouldFocusFirstSubItem = false;
176
178
  }
177
179
 
178
- if (this._isMobileView && this.isOpen) {
179
- this.setDropdownHeight();
180
+ if (this.isOpen) {
181
+ if (this._isMobileView) {
182
+ this.setMobileDropdownMaxHeight();
183
+ } else {
184
+ this.setDesktopDropdownMaxHeight();
185
+ }
180
186
  }
181
187
  }
182
188
 
@@ -184,6 +190,26 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
184
190
  this._subTitle = this.subActiveItemTitle || this._subTitle;
185
191
  }
186
192
 
193
+ _handleWindowResize = (): void => {
194
+ if (!this.isOpen) { return; }
195
+
196
+ if (this._isMobileView) {
197
+ this.setMobileDropdownMaxHeight();
198
+ } else {
199
+ this.setDesktopDropdownMaxHeight();
200
+ }
201
+ };
202
+
203
+ onEnterDOM(): void {
204
+ super.onEnterDOM();
205
+ window.addEventListener("resize", this._handleWindowResize);
206
+ }
207
+
208
+ onExitDOM(): void {
209
+ super.onExitDOM();
210
+ window.removeEventListener("resize", this._handleWindowResize);
211
+ }
212
+
187
213
  handleSubItemClick(e: CustomEvent | KeyboardEvent): void {
188
214
  const originalEvent: PointerEvent | KeyboardEvent = (e instanceof CustomEvent && e.detail?.originalEvent) ? e.detail.originalEvent : e as KeyboardEvent;
189
215
  const { index } = e.target as UDExSecondaryNavigationSubItem;
@@ -366,15 +392,21 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
366
392
  this._processedItems = this.subItems;
367
393
  }
368
394
 
369
- setDropdownHeight(): void {
395
+ setDesktopDropdownMaxHeight(): void {
396
+ const { top } = this.dropdown.getBoundingClientRect();
397
+ const maxHeight = window.innerHeight - top - DESKTOP_DROPDOWN_BOTTOM_GAP;
398
+ this.style.setProperty("--udex-secondary-navigation-item-dropdown-desktop-max-height", `${maxHeight}px`);
399
+ }
400
+
401
+ setMobileDropdownMaxHeight(): void {
370
402
  if (!this._maxHeight || this._dropdownMaxHeightExceeds || !this.heightSatisfiesType) {
371
403
  const secondaryNavigationMobileTrigger = this.shadowRoot!.querySelector(".udex-secondary-navigation__item")!;
372
404
  const maxDropdownHeight = window.innerHeight - secondaryNavigationMobileTrigger.clientHeight;
373
- this.style.setProperty("--udex-secondary-navigation-item-dropdown-max-height", `${maxDropdownHeight}px`);
405
+ this.style.setProperty("--udex-secondary-navigation-item-dropdown-mobile-max-height", `${maxDropdownHeight}px`);
374
406
  return;
375
407
  }
376
408
 
377
- this.style.setProperty("--udex-secondary-navigation-item-dropdown-max-height", `${this._maxHeight}`);
409
+ this.style.setProperty("--udex-secondary-navigation-item-dropdown-mobile-max-height", `${this._maxHeight}`);
378
410
  }
379
411
 
380
412
  get _dropdownMaxHeightExceeds(): boolean {