@sapudex/web-components 2.57.0 → 2.58.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 (222) hide show
  1. package/cypress/specs/FilterMenu.cy.tsx +209 -19
  2. package/cypress/specs/List.cy.tsx +67 -4
  3. package/cypress/specs/ListItem.cy.tsx +35 -9
  4. package/cypress/specs/SelectBox.cy.tsx +100 -0
  5. package/cypress/specs/TabNavigation.cy.tsx +297 -21
  6. package/dist/List.d.ts +15 -1
  7. package/dist/List.js +23 -2
  8. package/dist/List.js.map +1 -1
  9. package/dist/ListGroupHeaderBase.d.ts +13 -0
  10. package/dist/ListGroupHeaderBase.js +43 -2
  11. package/dist/ListGroupHeaderBase.js.map +1 -1
  12. package/dist/ListGroupHeaderTemplate.js +26 -7
  13. package/dist/ListGroupHeaderTemplate.js.map +1 -1
  14. package/dist/ListItem.d.ts +0 -3
  15. package/dist/ListItem.js +18 -12
  16. package/dist/ListItem.js.map +1 -1
  17. package/dist/ListItemBase.d.ts +17 -0
  18. package/dist/ListItemBase.js +15 -0
  19. package/dist/ListItemBase.js.map +1 -1
  20. package/dist/ListItemTemplate.js +2 -2
  21. package/dist/ListItemTemplate.js.map +1 -1
  22. package/dist/MastheadCountrySelector.js +5 -5
  23. package/dist/MastheadCountrySelector.js.map +1 -1
  24. package/dist/MastheadCountrySelectorTemplate.d.ts +2 -0
  25. package/dist/MastheadCountrySelectorTemplate.js +15 -0
  26. package/dist/MastheadCountrySelectorTemplate.js.map +1 -0
  27. package/dist/MastheadItem.d.ts +0 -3
  28. package/dist/MastheadItem.js +3 -6
  29. package/dist/MastheadItem.js.map +1 -1
  30. package/dist/MastheadItemTemplate.d.ts +2 -0
  31. package/dist/MastheadItemTemplate.js +41 -0
  32. package/dist/MastheadItemTemplate.js.map +1 -0
  33. package/dist/MastheadMenu.d.ts +1 -0
  34. package/dist/MastheadMenu.js +4 -6
  35. package/dist/MastheadMenu.js.map +1 -1
  36. package/dist/MastheadMenuItem.d.ts +0 -3
  37. package/dist/MastheadMenuItem.js +3 -6
  38. package/dist/MastheadMenuItem.js.map +1 -1
  39. package/dist/MastheadMenuItemTemplate.d.ts +2 -0
  40. package/dist/MastheadMenuItemTemplate.js +36 -0
  41. package/dist/MastheadMenuItemTemplate.js.map +1 -0
  42. package/dist/MastheadMenuTemplate.d.ts +2 -0
  43. package/dist/MastheadMenuTemplate.js +13 -0
  44. package/dist/MastheadMenuTemplate.js.map +1 -0
  45. package/dist/MastheadMobileMenu.js +3 -3
  46. package/dist/MastheadMobileMenu.js.map +1 -1
  47. package/dist/MastheadMobileMenuTemplate.d.ts +2 -0
  48. package/dist/MastheadMobileMenuTemplate.js +33 -0
  49. package/dist/MastheadMobileMenuTemplate.js.map +1 -0
  50. package/dist/MastheadProfileMenu.d.ts +2 -4
  51. package/dist/MastheadProfileMenu.js +5 -20
  52. package/dist/MastheadProfileMenu.js.map +1 -1
  53. package/dist/MastheadProfileMenuTemplate.d.ts +2 -0
  54. package/dist/MastheadProfileMenuTemplate.js +24 -0
  55. package/dist/MastheadProfileMenuTemplate.js.map +1 -0
  56. package/dist/MastheadShell.js +3 -5
  57. package/dist/MastheadShell.js.map +1 -1
  58. package/dist/MastheadShellTemplate.d.ts +2 -0
  59. package/dist/MastheadShellTemplate.js +20 -0
  60. package/dist/MastheadShellTemplate.js.map +1 -0
  61. package/dist/SearchableListBase.d.ts +10 -0
  62. package/dist/SearchableListBase.js +34 -1
  63. package/dist/SearchableListBase.js.map +1 -1
  64. package/dist/SearchableListBaseTemplate.js +35 -4
  65. package/dist/SearchableListBaseTemplate.js.map +1 -1
  66. package/dist/SecondaryNavigation.d.ts +1 -0
  67. package/dist/SecondaryNavigation.js +20 -6
  68. package/dist/SecondaryNavigation.js.map +1 -1
  69. package/dist/SelectBase.js +8 -3
  70. package/dist/SelectBase.js.map +1 -1
  71. package/dist/Tab.d.ts +0 -7
  72. package/dist/Tab.js +4 -19
  73. package/dist/Tab.js.map +1 -1
  74. package/dist/TabHeaderTemplate.d.ts +2 -0
  75. package/dist/TabHeaderTemplate.js +15 -0
  76. package/dist/TabHeaderTemplate.js.map +1 -0
  77. package/dist/TabInOverflowTemplate.d.ts +2 -0
  78. package/dist/TabInOverflowTemplate.js +7 -0
  79. package/dist/TabInOverflowTemplate.js.map +1 -0
  80. package/dist/TabNavigation.d.ts +3 -4
  81. package/dist/TabNavigation.js +53 -40
  82. package/dist/TabNavigation.js.map +1 -1
  83. package/dist/TabNavigationPopoverTemplate.d.ts +2 -0
  84. package/dist/TabNavigationPopoverTemplate.js +9 -0
  85. package/dist/TabNavigationPopoverTemplate.js.map +1 -0
  86. package/dist/TabNavigationTemplate.d.ts +2 -0
  87. package/dist/TabNavigationTemplate.js +10 -0
  88. package/dist/TabNavigationTemplate.js.map +1 -0
  89. package/dist/TabTemplate.d.ts +2 -0
  90. package/dist/TabTemplate.js +5 -0
  91. package/dist/TabTemplate.js.map +1 -0
  92. package/dist/assets/{InputSuggestions-C8grDr_8.js → InputSuggestions-CMYjJsHw.js} +1 -1
  93. package/dist/assets/{ListItemStandardExpandableTextTemplate-BQtSr7yg.js → ListItemStandardExpandableTextTemplate-D2i8wWuR.js} +1 -1
  94. package/dist/assets/{bundle.esm-GvPkDyXP.js → bundle.esm-BjN47C_y.js} +242 -242
  95. package/dist/assets/messagebundle_en-B7YJOdQz.js +1 -0
  96. package/dist/css/themes/Button.css +1 -1
  97. package/dist/css/themes/ListGroupHeader.css +1 -1
  98. package/dist/css/themes/PromoTile.css +1 -1
  99. package/dist/css/themes/TabInOverflow.css +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  101. package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
  102. package/dist/generated/i18n/i18n-defaults.js +3 -1
  103. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  104. package/dist/generated/themes/Button.css.d.ts +1 -1
  105. package/dist/generated/themes/Button.css.js +1 -1
  106. package/dist/generated/themes/Button.css.js.map +1 -1
  107. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  108. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  109. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  110. package/dist/generated/themes/PromoTile.css.d.ts +1 -1
  111. package/dist/generated/themes/PromoTile.css.js +1 -1
  112. package/dist/generated/themes/PromoTile.css.js.map +1 -1
  113. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  114. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  115. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  116. package/dist/messagebundle.properties +4 -0
  117. package/dist/messagebundle_en.properties +2 -0
  118. package/dist/web-types.json +1 -1
  119. package/package.json +1 -1
  120. package/src/List.ts +24 -2
  121. package/src/ListGroupHeaderBase.ts +44 -2
  122. package/src/ListGroupHeaderTemplate.tsx +74 -23
  123. package/src/ListItem.ts +18 -15
  124. package/src/ListItemBase.ts +30 -0
  125. package/src/ListItemTemplate.tsx +4 -4
  126. package/src/MastheadCountrySelector.ts +5 -5
  127. package/src/MastheadCountrySelectorTemplate.tsx +98 -0
  128. package/src/MastheadItem.ts +3 -6
  129. package/src/MastheadItemTemplate.tsx +178 -0
  130. package/src/MastheadMenu.ts +5 -6
  131. package/src/MastheadMenuItem.ts +3 -7
  132. package/src/MastheadMenuItemTemplate.tsx +123 -0
  133. package/src/MastheadMenuTemplate.tsx +142 -0
  134. package/src/MastheadMobileMenu.ts +3 -3
  135. package/src/MastheadMobileMenuTemplate.tsx +274 -0
  136. package/src/MastheadProfileMenu.ts +10 -23
  137. package/src/MastheadProfileMenuTemplate.tsx +143 -0
  138. package/src/MastheadShell.ts +3 -5
  139. package/src/MastheadShellTemplate.tsx +228 -0
  140. package/src/SearchableListBase.ts +37 -1
  141. package/src/SearchableListBaseTemplate.tsx +38 -2
  142. package/src/SecondaryNavigation.ts +21 -6
  143. package/src/SelectBase.ts +8 -3
  144. package/src/Tab.ts +4 -24
  145. package/src/TabHeaderTemplate.tsx +153 -0
  146. package/src/TabInOverflowTemplate.tsx +68 -0
  147. package/src/TabNavigation.ts +61 -44
  148. package/src/TabNavigationPopoverTemplate.tsx +27 -0
  149. package/src/TabNavigationTemplate.tsx +98 -0
  150. package/src/TabTemplate.tsx +7 -0
  151. package/src/generated/i18n/i18n-defaults.ts +2 -2
  152. package/src/generated/themes/Button.css.ts +1 -1
  153. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  154. package/src/generated/themes/PromoTile.css.ts +1 -1
  155. package/src/generated/themes/TabInOverflow.css.ts +1 -1
  156. package/src/i18n/messagebundle.properties +4 -0
  157. package/src/i18n/messagebundle_en.properties +2 -0
  158. package/src/themes/Button.css +2 -1
  159. package/src/themes/ListGroupHeader.css +50 -7
  160. package/src/themes/PromoTile.css +1 -0
  161. package/src/themes/TabInOverflow.css +9 -4
  162. package/dist/assets/messagebundle_en-DBpf5Il2.js +0 -1
  163. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.d.ts +0 -3
  164. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +0 -13
  165. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +0 -1
  166. package/dist/generated/templates/MastheadItemTemplate.lit.d.ts +0 -3
  167. package/dist/generated/templates/MastheadItemTemplate.lit.js +0 -43
  168. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +0 -1
  169. package/dist/generated/templates/MastheadMenuItemTemplate.lit.d.ts +0 -3
  170. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +0 -21
  171. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +0 -1
  172. package/dist/generated/templates/MastheadMenuTemplate.lit.d.ts +0 -3
  173. package/dist/generated/templates/MastheadMenuTemplate.lit.js +0 -25
  174. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +0 -1
  175. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.d.ts +0 -3
  176. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +0 -37
  177. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +0 -1
  178. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.d.ts +0 -3
  179. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +0 -18
  180. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +0 -1
  181. package/dist/generated/templates/MastheadShellTemplate.lit.d.ts +0 -3
  182. package/dist/generated/templates/MastheadShellTemplate.lit.js +0 -28
  183. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +0 -1
  184. package/dist/generated/templates/TabHeaderTemplate.lit.d.ts +0 -3
  185. package/dist/generated/templates/TabHeaderTemplate.lit.js +0 -52
  186. package/dist/generated/templates/TabHeaderTemplate.lit.js.map +0 -1
  187. package/dist/generated/templates/TabInOverflowTemplate.lit.d.ts +0 -3
  188. package/dist/generated/templates/TabInOverflowTemplate.lit.js +0 -15
  189. package/dist/generated/templates/TabInOverflowTemplate.lit.js.map +0 -1
  190. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.d.ts +0 -3
  191. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js +0 -8
  192. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js.map +0 -1
  193. package/dist/generated/templates/TabNavigationTemplate.lit.d.ts +0 -3
  194. package/dist/generated/templates/TabNavigationTemplate.lit.js +0 -16
  195. package/dist/generated/templates/TabNavigationTemplate.lit.js.map +0 -1
  196. package/dist/generated/templates/TabTemplate.lit.d.ts +0 -3
  197. package/dist/generated/templates/TabTemplate.lit.js +0 -7
  198. package/dist/generated/templates/TabTemplate.lit.js.map +0 -1
  199. package/src/MastheadCountrySelector.hbs +0 -76
  200. package/src/MastheadItem.hbs +0 -136
  201. package/src/MastheadMenu.hbs +0 -131
  202. package/src/MastheadMenuItem.hbs +0 -102
  203. package/src/MastheadMobileMenu.hbs +0 -253
  204. package/src/MastheadProfileMenu.hbs +0 -121
  205. package/src/MastheadShell.hbs +0 -223
  206. package/src/Tab.hbs +0 -1
  207. package/src/TabHeader.hbs +0 -141
  208. package/src/TabInOverflow.hbs +0 -59
  209. package/src/TabNavigation.hbs +0 -88
  210. package/src/TabNavigationPopover.hbs +0 -18
  211. package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +0 -17
  212. package/src/generated/templates/MastheadItemTemplate.lit.ts +0 -47
  213. package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +0 -25
  214. package/src/generated/templates/MastheadMenuTemplate.lit.ts +0 -29
  215. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +0 -41
  216. package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +0 -22
  217. package/src/generated/templates/MastheadShellTemplate.lit.ts +0 -32
  218. package/src/generated/templates/TabHeaderTemplate.lit.ts +0 -56
  219. package/src/generated/templates/TabInOverflowTemplate.lit.ts +0 -19
  220. package/src/generated/templates/TabNavigationPopoverTemplate.lit.ts +0 -12
  221. package/src/generated/templates/TabNavigationTemplate.lit.ts +0 -20
  222. package/src/generated/templates/TabTemplate.lit.ts +0 -11
@@ -0,0 +1,274 @@
1
+ import UDExMastheadMenuItem from "./MastheadMenuItem.js";
2
+ import type UDExMastheadMobileMenu from "./MastheadMobileMenu.js";
3
+ import type { CategoryItem, SubMenuLinkItem } from "./MastheadItem.js";
4
+
5
+ export default function MastheadMobileMenuTemplate(this: UDExMastheadMobileMenu) {
6
+ return (
7
+ <nav class="udex-masthead-mobile-menu">
8
+ <div class="udex-masthead-mobile-menu__nav-holder">
9
+ {this.hasSearchSlot && (
10
+ <div class="udex-masthead-mobile-menu__list-search">
11
+ <slot name="search"></slot>
12
+ </div>
13
+ )}
14
+ <ul class="udex-masthead-mobile-menu__list" role="menu" onKeyDown={this.handlePressKey}>
15
+ {this.showNavigation && navItems.call(this)}
16
+ {this._showCategories && (
17
+ <>
18
+ <li class="udex-masthead-mobile-menu__list-item" role="none">
19
+ {this._hideExploreSapBtn ? (
20
+ <UDExMastheadMenuItem
21
+ class="udex-masthead-mobile-menu__back-item"
22
+ part="menu-item"
23
+ type="Button"
24
+ onClick={this.handleExploreBackToMenuItems as any}
25
+ label={this._clickedItem.innerText}
26
+ has-border={true}
27
+ icon-start={true}
28
+ {...{ "is-back": "", "is-explore-back": "" }}>
29
+ </UDExMastheadMenuItem>
30
+ ) : this.isNotMultipleMode ? (
31
+ <UDExMastheadMenuItem
32
+ class="udex-masthead-mobile-menu__heading"
33
+ part="menu-item"
34
+ type="Heading"
35
+ label={this._clickedItem.innerText}
36
+ has-border={true}>
37
+ </UDExMastheadMenuItem>
38
+ ) : (
39
+ <UDExMastheadMenuItem
40
+ class="udex-masthead-mobile-menu__back-item"
41
+ part="menu-item"
42
+ aria-haspopup="true"
43
+ type="Button"
44
+ onClick={this.handleBackToMenuItems as any}
45
+ label={this._clickedItem.innerText}
46
+ has-border={true}
47
+ icon-start={true}
48
+ {...{ "is-back": "", "is-back-to-nav": "" }}>
49
+ </UDExMastheadMenuItem>
50
+ )}
51
+ </li>
52
+ {categories.call(this)}
53
+ </>
54
+ )}
55
+ {this._showCategoryItems && (
56
+ <>
57
+ <li class="udex-masthead-mobile-menu__list-item" role="none">
58
+ <UDExMastheadMenuItem
59
+ class="udex-masthead-mobile-menu__back-item"
60
+ part="menu-item"
61
+ type="Button"
62
+ aria-haspopup="true"
63
+ onClick={this.handleBackToCategories as any}
64
+ label={this._category.category}
65
+ has-border={true}
66
+ icon-start={true}
67
+ {...{ "is-back": "", "is-back-to-categories": "" }}>
68
+ </UDExMastheadMenuItem>
69
+ </li>
70
+ {categoryItems.call(this)}
71
+ </>
72
+ )}
73
+ </ul>
74
+ </div>
75
+ {this.showExploreBtn && (
76
+ <UDExMastheadMenuItem
77
+ class="udex-masthead-mobile-menu__explore-btn"
78
+ part="menu-item"
79
+ type="Button"
80
+ aria-haspopup="true"
81
+ id={this.exploreItem._id}
82
+ onClick={this.handleExploreSapClick as any}
83
+ icon-end={true}
84
+ label={this.exploreItem.innerText}
85
+ {...{
86
+ "accessible-role-text": "button",
87
+ "first-level-btn": "",
88
+ "first-level": "",
89
+ "is-explore": "",
90
+ }}>
91
+ </UDExMastheadMenuItem>
92
+ )}
93
+ </nav>
94
+ );
95
+ }
96
+
97
+ function navItems(this: UDExMastheadMobileMenu) {
98
+ return this.items.map((item, index) => (
99
+ <li class="udex-masthead-mobile-menu__list-item" role="none" key={index}>
100
+ {item.subItems ? (
101
+ <UDExMastheadMenuItem
102
+ part="menu-item"
103
+ type="Button"
104
+ aria-haspopup="true"
105
+ onClick={this.handleMenuItemClick as any}
106
+ label={item.innerText}
107
+ id={item._id}
108
+ has-border={true}
109
+ icon-end={true}
110
+ {...{ "first-level-btn": "", "first-level": "" }}>
111
+ </UDExMastheadMenuItem>
112
+ ) : (
113
+ <UDExMastheadMenuItem
114
+ part="menu-item"
115
+ onClick={this.handleMobileItemEvent as any}
116
+ url={item.href}
117
+ label={item.innerText}
118
+ target={item.target}
119
+ has-border={true}
120
+ {...{ "first-level": "" }}>
121
+ </UDExMastheadMenuItem>
122
+ )}
123
+ </li>
124
+ ));
125
+ }
126
+
127
+ function categories(this: UDExMastheadMobileMenu) {
128
+ return (
129
+ <>
130
+ {this._clickedItem.href && (
131
+ <li class="udex-masthead-mobile-menu__list-item" role="none">
132
+ <UDExMastheadMenuItem
133
+ part="menu-item"
134
+ url={this._clickedItem.href}
135
+ label={this.overviewLinkText}
136
+ onClick={this.handleMobileItemEvent as any}
137
+ has-border={true}
138
+ {...{ "second-level": "" }}>
139
+ </UDExMastheadMenuItem>
140
+ </li>
141
+ )}
142
+ {this._categories.map((category, index) => categoryEntry.call(this, category, index))}
143
+ </>
144
+ );
145
+ }
146
+
147
+ function categoryEntry(this: UDExMastheadMobileMenu, category: SubMenuLinkItem, index: number) {
148
+ if (category.items.length) {
149
+ if (category.category) {
150
+ return (
151
+ <li class="udex-masthead-mobile-menu__list-item" role="none" key={index}>
152
+ <UDExMastheadMenuItem
153
+ part="menu-item"
154
+ onClick={this.handleMenuCategoryClick as any}
155
+ id={`${index}`}
156
+ label={category.category}
157
+ aria-haspopup="true"
158
+ type="Button"
159
+ has-border={true}
160
+ icon-end={true}
161
+ {...{ "second-level-btn": "", "second-level": "" }}>
162
+ </UDExMastheadMenuItem>
163
+ </li>
164
+ );
165
+ }
166
+
167
+ return category.items.map((item, itemIndex) => (
168
+ <li class="udex-masthead-mobile-menu__list-item" role="none" key={`${index}-${itemIndex}`}>
169
+ <UDExMastheadMenuItem
170
+ part="menu-item"
171
+ onClick={this.handleMobileItemEvent as any}
172
+ url={item.url}
173
+ label={item.title}
174
+ has-border={true}
175
+ {...{ "second-level": "" }}>
176
+ </UDExMastheadMenuItem>
177
+ </li>
178
+ ));
179
+ }
180
+
181
+ return (
182
+ <li class="udex-masthead-mobile-menu__list-item" role="none" key={index}>
183
+ {category.url ? (
184
+ <UDExMastheadMenuItem
185
+ id={`${index}`}
186
+ onClick={this.handleMobileItemEvent as any}
187
+ label={category.category}
188
+ url={category.url}
189
+ part="menu-item"
190
+ type="Link"
191
+ has-border={true}
192
+ {...{ "second-level": "" }}>
193
+ </UDExMastheadMenuItem>
194
+ ) : (
195
+ <UDExMastheadMenuItem
196
+ id={`${index}`}
197
+ onClick={this.handleMobileItemEvent as any}
198
+ label={category.category}
199
+ part="menu-item"
200
+ type="Button"
201
+ has-border={true}
202
+ {...{ "second-level": "" }}>
203
+ </UDExMastheadMenuItem>
204
+ )}
205
+ </li>
206
+ );
207
+ }
208
+
209
+ function categoryItems(this: UDExMastheadMobileMenu) {
210
+ return (
211
+ <>
212
+ {this._category.url && (
213
+ <li class="udex-masthead-mobile-menu__list-item" role="none">
214
+ <UDExMastheadMenuItem
215
+ part="menu-item"
216
+ onClick={this.handleMobileCategoryItemEvent as any}
217
+ url={this._category.url}
218
+ label={this.overviewLinkText}
219
+ has-border={true}
220
+ {...{ "third-level": "" }}>
221
+ </UDExMastheadMenuItem>
222
+ </li>
223
+ )}
224
+ {this._category.items.map((item, index) => categoryItemEntry.call(this, item, index))}
225
+ </>
226
+ );
227
+ }
228
+
229
+ function categoryItemEntry(this: UDExMastheadMobileMenu, item: CategoryItem, index: number) {
230
+ if (item.subItems) {
231
+ return (
232
+ <li class="udex-masthead-mobile-menu__list-item" role="none" key={index}>
233
+ {item.url ? (
234
+ <UDExMastheadMenuItem
235
+ class="udex-masthead-mobile-menu__sub-category"
236
+ part="menu-item"
237
+ onClick={this.handleMobileCategoryItemEvent as any}
238
+ label={item.title}
239
+ url={item.url}
240
+ {...{ "third-level": "" }}>
241
+ </UDExMastheadMenuItem>
242
+ ) : (
243
+ <span class="udex-masthead-mobile-menu__sub-category">{item.title}</span>
244
+ )}
245
+ <ul class="udex-masthead-mobile-menu__sub-list" aria-label={item.title}>
246
+ {item.subItems.map((subItem, subIndex) => (subItem.url ? (
247
+ <li class="udex-masthead-mobile-menu__list-item" role="none" key={`${index}-${subIndex}`}>
248
+ <UDExMastheadMenuItem
249
+ part="menu-item"
250
+ onClick={this.handleMobileCategoryItemEvent as any}
251
+ label={subItem.title}
252
+ url={subItem.url}
253
+ {...{ "third-level": "" }}>
254
+ </UDExMastheadMenuItem>
255
+ </li>
256
+ ) : undefined))}
257
+ </ul>
258
+ </li>
259
+ );
260
+ }
261
+
262
+ return item.url ? (
263
+ <li class="udex-masthead-mobile-menu__list-item" role="none" key={index}>
264
+ <UDExMastheadMenuItem
265
+ part="menu-item"
266
+ onClick={this.handleMobileCategoryItemEvent as any}
267
+ label={item.title}
268
+ url={item.url}
269
+ has-border={true}
270
+ {...{ "third-level": "" }}>
271
+ </UDExMastheadMenuItem>
272
+ </li>
273
+ ) : undefined;
274
+ }
@@ -4,7 +4,7 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
4
4
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
5
5
  import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
6
6
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
7
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
7
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
8
8
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
9
9
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
10
10
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
@@ -12,24 +12,19 @@ import {
12
12
  LOGOUT, SWITCH_ACCOUNT, BACK, OTHER_IDENTITIES, ADD_OR_REMOVE_ACCOUNT,
13
13
  } from "./generated/i18n/i18n-defaults.js";
14
14
  import { isEscape } from "@ui5/webcomponents-base/Keys.js";
15
- import UDExMastheadMenu from "./MastheadMenu.js";
16
- import UDExButton from "./Button.js";
17
- import UDExList from "./List.js";
18
- import UDExLink from "./Link.js";
19
- import UDExListItem from "./ListItem.js";
20
- import UDExMastheadMenuItem from "./MastheadMenuItem.js";
21
- import MastheadProfileMenuTemplate from "./generated/templates/MastheadProfileMenuTemplate.lit.js";
15
+ import MastheadProfileMenuTemplate from "./MastheadProfileMenuTemplate.js";
22
16
  import parseArrayFromString from "./utils/parseArrayFromString.js";
17
+ import translate from "./utils/translate.js";
23
18
  import AnalyticsName from "./types/AnalyticsName.js";
24
- import type UDExMastheadShell from "./MastheadShell.js";
25
- import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
26
- import "@ui5/webcomponents-icons/dist/action.js";
27
- import type { LinkClickEventDetail } from "@ui5/webcomponents/dist/Link.js";
19
+ import UDExMastheadMenu from "./MastheadMenu.js";
28
20
  import UDExStatusBadgeValueState from "./types/StatusBadgeValueState.js";
29
- import type { ResizeObserverCallback } from "@ui5/webcomponents-base/delegate/ResizeHandler.js";
30
21
  import ResizeHandler from "@ui5/webcomponents-base/delegate/ResizeHandler.js";
31
22
  import { BreakpointUtils } from "./utils/Breakpoints.js";
32
- import translate from "./utils/translate.js";
23
+ import type UDExMastheadShell from "./MastheadShell.js";
24
+ import type { LinkClickEventDetail } from "@ui5/webcomponents/dist/Link.js";
25
+ import type { ResizeObserverCallback } from "@ui5/webcomponents-base/delegate/ResizeHandler.js";
26
+ import type UDExButton from "./Button.js";
27
+ import type UDExMastheadMenuItem from "./MastheadMenuItem.js";
33
28
 
34
29
  // Styles
35
30
  import MastheadProfileMenuCss from "./generated/themes/MastheadProfileMenu.css.js";
@@ -91,17 +86,9 @@ type UDExMastheadProfileMenuAddOrRemoveClickEventDetail = {
91
86
  */
92
87
  @customElement({
93
88
  tag: "udex-masthead-profile-menu",
94
- renderer: litRender,
89
+ renderer: jsxRenderer,
95
90
  styles: [UDExMastheadMenu.styles, MastheadProfileMenuCss],
96
91
  template: MastheadProfileMenuTemplate,
97
- dependencies: [
98
- UDExMastheadMenuItem,
99
- UDExMastheadMenu,
100
- UDExListItem,
101
- UDExButton,
102
- UDExList,
103
- UDExLink,
104
- ],
105
92
  })
106
93
 
107
94
  /**
@@ -0,0 +1,143 @@
1
+ import actionIcon from "@ui5/webcomponents-icons/dist/action.js";
2
+ import slimArrowRightIcon from "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
3
+ import UI5LinkDesign from "@ui5/webcomponents/types/LinkDesign.js";
4
+ import UDExAvatar, { UDExAvatarSize } from "./Avatar.js";
5
+ import UDExButton from "./Button.js";
6
+ import UDExLink from "./Link.js";
7
+ import UDExList from "./List.js";
8
+ import UDExListItem from "./ListItem.js";
9
+ import UDExMastheadMenu from "./MastheadMenu.js";
10
+ import UDExMastheadMenuItem from "./MastheadMenuItem.js";
11
+ import UDExButtonSize from "./types/ButtonSize.js";
12
+ import UDExButtonDesign from "./types/ButtonDesign.js";
13
+ import { UDExListMode } from "./types/List.js";
14
+ import type UDExMastheadProfileMenu from "./MastheadProfileMenu.js";
15
+
16
+ export default function MastheadProfileMenuTemplate(this: UDExMastheadProfileMenu) {
17
+ return (
18
+ <div onKeyDown={this.handleKeydown} class={this.rootClass}>
19
+ {this._openIdentities ? accountIdentities.call(this) : accountProfile.call(this)}
20
+ </div>
21
+ );
22
+ }
23
+
24
+ function accountProfile(this: UDExMastheadProfileMenu) {
25
+ return (
26
+ <>
27
+ {this.hasUserData && (
28
+ <div class="udex-masthead-profile-menu__header">
29
+ <UDExAvatar
30
+ aria-hidden="true"
31
+ size={UDExAvatarSize.L}
32
+ initials={this.userData.avatarInitials}
33
+ fallback-icon={this.userData.fallbackIcon}>
34
+ {this.userData.avatarUrl && (
35
+ <img src={this.userData.avatarUrl} alt="avatar" />
36
+ )}
37
+ </UDExAvatar>
38
+ <div>
39
+ <p class="udex-profile-menu__account-name">{this.userData.name}</p>
40
+ <p class="udex-profile-menu__account-email">{this.userData.email}</p>
41
+ {this.hasIdentities && (
42
+ <UDExButton
43
+ onClick={this.handleSwitcherClick}
44
+ class="udex-masthead-profile-menu__btn-switcher"
45
+ size={UDExButtonSize.Large}
46
+ end-icon={slimArrowRightIcon}
47
+ design={UDExButtonDesign.Invisible}>
48
+ {this.switcherAccountText}
49
+ </UDExButton>
50
+ )}
51
+ </div>
52
+ </div>
53
+ )}
54
+ {this.messageAvailable && (
55
+ <div class="udex-masthead-profile-menu__message">
56
+ <slot name="message"></slot>
57
+ </div>
58
+ )}
59
+ <div class="udex-masthead-profile-menu__content">
60
+ <div
61
+ class="udex-masthead-profile-menu__links"
62
+ onScroll={this.handleProfileMenuShadowVisible}>
63
+ <UDExMastheadMenu
64
+ exportparts="badge, menu-item"
65
+ part="menu"
66
+ sub-items={this.linksList}
67
+ onui5-menu-item-click={this.handleProfileMenuItemClick}
68
+ {...{ "_scroll-into-view": "Center" }}>
69
+ </UDExMastheadMenu>
70
+ </div>
71
+ </div>
72
+ {this.hasActionButton && (
73
+ <div class="udex-masthead-profile-menu__actions">
74
+ {this.hasLogoutButton ? (
75
+ <div class="udex-masthead-profile-menu__btn">
76
+ <slot name="logoutButton"></slot>
77
+ </div>
78
+ ) : (
79
+ <UDExLink
80
+ accessible-role="Link"
81
+ onClick={this.handleUserLogoutClick as any}
82
+ end-icon={actionIcon}
83
+ design={UI5LinkDesign.Default}
84
+ href={this.logoutUrl}>
85
+ {this.logoutText}
86
+ </UDExLink>
87
+ )}
88
+ </div>
89
+ )}
90
+ </>
91
+ );
92
+ }
93
+
94
+ function accountIdentities(this: UDExMastheadProfileMenu) {
95
+ return (
96
+ <>
97
+ <div class="udex-masthead-profile-menu__header-wrap back-btn">
98
+ <UDExMastheadMenuItem
99
+ type="Button"
100
+ class="udex-masthead-profile-menu__btn-back"
101
+ onClick={this.handleSwitcherClick}
102
+ label={this.btnBackText}
103
+ icon-start={true}>
104
+ </UDExMastheadMenuItem>
105
+ <span class="udex-masthead-profile-menu__switcher-title">{this.switcherAccountText}</span>
106
+ </div>
107
+ <span class="udex-masthead-profile-menu__identities-list-title">{this.listTitleText}</span>
108
+ <div class="udex-masthead-profile-menu__identities-list-wrap">
109
+ {this.identitiesList.length > 0 && (
110
+ <UDExList
111
+ class="udex-masthead-profile-menu__identities-list"
112
+ mode={UDExListMode.SingleSelect}
113
+ accessible-name={this.listTitleText}
114
+ onScroll={this.handleIdentitiesListShadowVisible}
115
+ controlled={true}
116
+ {...{ "_scroll-into-view": "Center" }}>
117
+ {this.identitiesList.map((identity, index) => (
118
+ <UDExListItem
119
+ key={index}
120
+ id={identity.idsUser}
121
+ class="udex-masthead-profile-menu__identities-list-item"
122
+ onui5-item-press={this.fireEventIdentityItemClick}
123
+ image-badge-state={identity.statusBadge}
124
+ image={identity.avatarUrl}
125
+ image-alt={identity.name}
126
+ {...{ "supporting-text": identity.supportingText }}>
127
+ {identity.email}
128
+ </UDExListItem>
129
+ ))}
130
+ </UDExList>
131
+ )}
132
+ </div>
133
+ <UDExButton
134
+ onClick={this.fireEventAddOrRemoveAccountClick as any}
135
+ class="udex-masthead-profile-menu__add-remove-btn"
136
+ design={UDExButtonDesign.Primary}
137
+ end-icon={actionIcon}
138
+ size={UDExButtonSize.Large}>
139
+ {this.addOrRemoveAccountText}
140
+ </UDExButton>
141
+ </>
142
+ );
143
+ }
@@ -5,7 +5,7 @@ import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
5
5
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
6
6
  import type { DefaultSlot, Slot, ChangeInfo } from "@ui5/webcomponents-base/dist/UI5Element.js";
7
7
  import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
8
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
8
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
9
9
  import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
10
10
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
11
11
  import {
@@ -20,14 +20,13 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
20
20
  import { MAIN_LINKS, SEARCH } from "./generated/i18n/i18n-defaults.js";
21
21
  import UDExMastheadItem, { UDExMastheadDropdownItemAction } from "./MastheadItem.js";
22
22
  import UDExMastheadMenu from "./MastheadMenu.js";
23
- import UDExControlButton from "./ControlButton.js";
24
23
  import type UDExSearch from "./Search.js";
25
24
  import UDExMastheadMobileMenu from "./MastheadMobileMenu.js";
26
25
  import type UDExMastheadProfileMenu from "./MastheadProfileMenu.js";
27
26
  import type UDExMastheadCountrySelector from "./MastheadCountrySelector.js";
28
27
  import { BreakpointUtils } from "./utils/Breakpoints.js";
29
28
  import AnalyticsName from "./types/AnalyticsName.js";
30
- import MastheadShellTemplate from "./generated/templates/MastheadShellTemplate.lit.js";
29
+ import MastheadShellTemplate from "./MastheadShellTemplate.js";
31
30
  import translate from "./utils/translate.js";
32
31
  import ensureSearchBackdropStyles from "./utils/searchBackdrop.js";
33
32
 
@@ -82,12 +81,11 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
82
81
  @customElement({
83
82
  tag: "udex-masthead-shell",
84
83
  languageAware: true,
85
- renderer: litRender,
84
+ renderer: jsxRenderer,
86
85
  styles: MastheadShellCss,
87
86
  template: MastheadShellTemplate,
88
87
  dependencies: [
89
88
  UDExMastheadMobileMenu,
90
- UDExControlButton,
91
89
  UDExMastheadItem,
92
90
  UDExMastheadMenu,
93
91
  UI5Icon,