@sapudex/web-components 0.176.0 → 0.192.2

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 (301) hide show
  1. package/bundle.esm.js +1 -1
  2. package/dist/Accordion.js +2 -1
  3. package/dist/Accordion.js.map +1 -1
  4. package/dist/AccordionItem.d.ts +0 -1
  5. package/dist/AccordionItem.js +2 -2
  6. package/dist/AccordionItem.js.map +1 -1
  7. package/dist/Badge.js +2 -1
  8. package/dist/Badge.js.map +1 -1
  9. package/dist/Breadcrumbs.d.ts +7 -7
  10. package/dist/Breadcrumbs.js +3 -3
  11. package/dist/Breadcrumbs.js.map +1 -1
  12. package/dist/CountrySelector.d.ts +2 -0
  13. package/dist/CountrySelector.js +10 -6
  14. package/dist/CountrySelector.js.map +1 -1
  15. package/dist/DatePicker.d.ts +53 -26
  16. package/dist/DatePicker.js +205 -39
  17. package/dist/DatePicker.js.map +1 -1
  18. package/dist/FilterMenu.d.ts +4 -6
  19. package/dist/FilterMenu.js +10 -10
  20. package/dist/FilterMenu.js.map +1 -1
  21. package/dist/Footer.js +6 -2
  22. package/dist/Footer.js.map +1 -1
  23. package/dist/HeroBanner.d.ts +0 -1
  24. package/dist/HeroBanner.js +2 -1
  25. package/dist/HeroBanner.js.map +1 -1
  26. package/dist/Link.js +2 -0
  27. package/dist/Link.js.map +1 -1
  28. package/dist/ListSelectAll.js +2 -0
  29. package/dist/ListSelectAll.js.map +1 -1
  30. package/dist/MastheadItem.d.ts +10 -1
  31. package/dist/MastheadItem.js +12 -6
  32. package/dist/MastheadItem.js.map +1 -1
  33. package/dist/MastheadMenu.d.ts +6 -0
  34. package/dist/MastheadMenu.js +4 -1
  35. package/dist/MastheadMenu.js.map +1 -1
  36. package/dist/MastheadMenuItem.d.ts +1 -0
  37. package/dist/MastheadMenuItem.js +3 -0
  38. package/dist/MastheadMenuItem.js.map +1 -1
  39. package/dist/MastheadMobileMenu.js +1 -1
  40. package/dist/MastheadMobileMenu.js.map +1 -1
  41. package/dist/MastheadProfileMenu.d.ts +6 -0
  42. package/dist/MastheadProfileMenu.js +3 -0
  43. package/dist/MastheadProfileMenu.js.map +1 -1
  44. package/dist/MastheadShell.d.ts +35 -4
  45. package/dist/MastheadShell.js +141 -11
  46. package/dist/MastheadShell.js.map +1 -1
  47. package/dist/MediaPlayer.js +2 -2
  48. package/dist/MediaPlayer.js.map +1 -1
  49. package/dist/MessageStrip.js +2 -1
  50. package/dist/MessageStrip.js.map +1 -1
  51. package/dist/Pagination.d.ts +3 -2
  52. package/dist/Pagination.js +4 -2
  53. package/dist/Pagination.js.map +1 -1
  54. package/dist/RadioButton.js +0 -1
  55. package/dist/RadioButton.js.map +1 -1
  56. package/dist/Search.js +0 -1
  57. package/dist/Search.js.map +1 -1
  58. package/dist/SearchableListBase.js +3 -3
  59. package/dist/SearchableListBase.js.map +1 -1
  60. package/dist/SecondaryNavigation.js +1 -1
  61. package/dist/SecondaryNavigation.js.map +1 -1
  62. package/dist/SecondaryNavigationItem.js +1 -1
  63. package/dist/SecondaryNavigationItem.js.map +1 -1
  64. package/dist/SelectBox.d.ts +5 -3
  65. package/dist/SelectBox.js +11 -7
  66. package/dist/SelectBox.js.map +1 -1
  67. package/dist/SideNavigationMobile.js +1 -1
  68. package/dist/SideNavigationMobile.js.map +1 -1
  69. package/dist/StepInput.js +1 -1
  70. package/dist/StepInput.js.map +1 -1
  71. package/dist/Tab.d.ts +4 -13
  72. package/dist/Tab.js +11 -14
  73. package/dist/Tab.js.map +1 -1
  74. package/dist/TabNavigation.d.ts +4 -5
  75. package/dist/TabNavigation.js +16 -15
  76. package/dist/TabNavigation.js.map +1 -1
  77. package/dist/Table.js +2 -2
  78. package/dist/Table.js.map +1 -1
  79. package/dist/TextArea.d.ts +13 -22
  80. package/dist/TextArea.js +30 -33
  81. package/dist/TextArea.js.map +1 -1
  82. package/dist/assets/{css_variables-a92ef9ad.css → bundle-c5e3cbf2.css} +1 -1
  83. package/dist/assets/{bundle.esm-f0e73f3b.js → bundle.esm-809b9769.js} +188 -188
  84. package/dist/assets/messagebundle_en-06c0dadc.js +1 -0
  85. package/dist/css/themes/AccordionItem.css +1 -1
  86. package/dist/css/themes/Button.css +1 -1
  87. package/dist/css/themes/CountrySelector.css +1 -1
  88. package/dist/css/themes/ListItem.css +1 -1
  89. package/dist/css/themes/MastheadItem.css +1 -1
  90. package/dist/css/themes/MastheadMenu.css +1 -1
  91. package/dist/css/themes/MastheadMenuItem.css +1 -1
  92. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  93. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  94. package/dist/css/themes/MastheadShell.css +1 -1
  95. package/dist/css/themes/MediaPlayer.css +1 -1
  96. package/dist/css/themes/MessageStrip.css +1 -1
  97. package/dist/css/themes/PhoneNumberField.css +1 -1
  98. package/dist/css/themes/RatingIndicator.css +1 -1
  99. package/dist/css/themes/Review.css +1 -1
  100. package/dist/css/themes/ReviewItem.css +1 -1
  101. package/dist/css/themes/Search.css +1 -1
  102. package/dist/css/themes/SegmentedButton.css +1 -1
  103. package/dist/css/themes/SideNavigationMobileDropdown.css +1 -1
  104. package/dist/css/themes/Slider.css +1 -1
  105. package/dist/css/themes/StepInput.css +1 -1
  106. package/dist/css/themes/TabNavigation.css +1 -1
  107. package/dist/css/themes/Table.css +1 -1
  108. package/dist/css/themes/TextArea.css +1 -1
  109. package/dist/custom-elements-internal.json +127 -107
  110. package/dist/custom-elements.json +122 -104
  111. package/dist/features/SearchSuggestionsPopover.d.ts +1 -1
  112. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  113. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  114. package/dist/generated/i18n/i18n-defaults.js +2 -1
  115. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  116. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
  117. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +1 -1
  118. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +1 -1
  119. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js.map +1 -1
  120. package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
  121. package/dist/generated/templates/DatePickerTemplate.lit.js.map +1 -1
  122. package/dist/generated/templates/FilterMenuTemplate.lit.js +2 -2
  123. package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
  124. package/dist/generated/templates/MastheadItemTemplate.lit.js +3 -3
  125. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  126. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +2 -2
  127. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
  128. package/dist/generated/templates/MastheadShellTemplate.lit.js +8 -9
  129. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  130. package/dist/generated/templates/PaginationTemplate.lit.js +1 -1
  131. package/dist/generated/templates/PaginationTemplate.lit.js.map +1 -1
  132. package/dist/generated/templates/TabHeaderTemplate.lit.js +1 -1
  133. package/dist/generated/templates/TabHeaderTemplate.lit.js.map +1 -1
  134. package/dist/generated/templates/TabNavigationTemplate.lit.js +1 -1
  135. package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
  136. package/dist/generated/templates/TextAreaTemplate.lit.js +5 -4
  137. package/dist/generated/templates/TextAreaTemplate.lit.js.map +1 -1
  138. package/dist/generated/templates/TextFieldTemplate.lit.js +1 -1
  139. package/dist/generated/templates/TextFieldTemplate.lit.js.map +1 -1
  140. package/dist/generated/themes/AccordionItem.css.js +1 -1
  141. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  142. package/dist/generated/themes/Button.css.js +1 -1
  143. package/dist/generated/themes/Button.css.js.map +1 -1
  144. package/dist/generated/themes/CountrySelector.css.js +1 -1
  145. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  146. package/dist/generated/themes/ListItem.css.js +1 -1
  147. package/dist/generated/themes/ListItem.css.js.map +1 -1
  148. package/dist/generated/themes/MastheadItem.css.js +1 -1
  149. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  150. package/dist/generated/themes/MastheadMenu.css.js +1 -1
  151. package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
  152. package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
  153. package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
  154. package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
  155. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  156. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  157. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  158. package/dist/generated/themes/MastheadShell.css.js +1 -1
  159. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  160. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  161. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  162. package/dist/generated/themes/MessageStrip.css.js +1 -1
  163. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  164. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  165. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  166. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  167. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  168. package/dist/generated/themes/Review.css.js +1 -1
  169. package/dist/generated/themes/Review.css.js.map +1 -1
  170. package/dist/generated/themes/ReviewItem.css.js +1 -1
  171. package/dist/generated/themes/ReviewItem.css.js.map +1 -1
  172. package/dist/generated/themes/Search.css.js +1 -1
  173. package/dist/generated/themes/Search.css.js.map +1 -1
  174. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  175. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  176. package/dist/generated/themes/SideNavigationMobileDropdown.css.js +1 -1
  177. package/dist/generated/themes/SideNavigationMobileDropdown.css.js.map +1 -1
  178. package/dist/generated/themes/Slider.css.js +1 -1
  179. package/dist/generated/themes/Slider.css.js.map +1 -1
  180. package/dist/generated/themes/StepInput.css.js +1 -1
  181. package/dist/generated/themes/StepInput.css.js.map +1 -1
  182. package/dist/generated/themes/TabNavigation.css.js +1 -1
  183. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  184. package/dist/generated/themes/Table.css.js +1 -1
  185. package/dist/generated/themes/Table.css.js.map +1 -1
  186. package/dist/generated/themes/TextArea.css.js +1 -1
  187. package/dist/generated/themes/TextArea.css.js.map +1 -1
  188. package/dist/i18n/messagebundle.properties +3 -0
  189. package/dist/i18n/messagebundle_en.properties +1 -0
  190. package/dist/vscode.html-custom-data.json +2 -12
  191. package/dist/web-types.json +21 -25
  192. package/package.json +2 -2
  193. package/src/Accordion.ts +2 -1
  194. package/src/AccordionItem.ts +2 -2
  195. package/src/Badge.ts +2 -1
  196. package/src/Breadcrumbs.hbs +3 -3
  197. package/src/Breadcrumbs.ts +14 -14
  198. package/src/BreadcrumbsPopover.hbs +1 -1
  199. package/src/CountrySelector.hbs +30 -30
  200. package/src/CountrySelector.ts +23 -18
  201. package/src/DatePicker.hbs +4 -5
  202. package/src/DatePicker.ts +257 -64
  203. package/src/DatePickerPopover.hbs +2 -2
  204. package/src/FilterMenu.hbs +2 -1
  205. package/src/FilterMenu.ts +13 -14
  206. package/src/Footer.ts +6 -2
  207. package/src/HeroBanner.ts +2 -1
  208. package/src/Link.ts +2 -0
  209. package/src/ListSelectAll.ts +2 -0
  210. package/src/MastheadItem.hbs +3 -3
  211. package/src/MastheadItem.ts +23 -11
  212. package/src/MastheadMenu.ts +9 -1
  213. package/src/MastheadMenuItem.hbs +2 -1
  214. package/src/MastheadMenuItem.ts +4 -0
  215. package/src/MastheadMobileMenu.ts +1 -1
  216. package/src/MastheadProfileMenu.ts +8 -0
  217. package/src/MastheadShell.hbs +69 -67
  218. package/src/MastheadShell.ts +177 -16
  219. package/src/MediaPlayer.ts +2 -2
  220. package/src/MessageStrip.ts +2 -1
  221. package/src/Pagination.hbs +2 -2
  222. package/src/Pagination.ts +8 -5
  223. package/src/RadioButton.ts +0 -1
  224. package/src/Search.ts +0 -1
  225. package/src/SearchableListBase.ts +3 -3
  226. package/src/SecondaryNavigation.ts +1 -1
  227. package/src/SecondaryNavigationItem.ts +1 -1
  228. package/src/SelectBox.ts +16 -10
  229. package/src/SideNavigationMobile.ts +1 -1
  230. package/src/StepInput.ts +1 -1
  231. package/src/Tab.ts +18 -29
  232. package/src/TabHeader.hbs +1 -1
  233. package/src/TabNavigation.hbs +1 -2
  234. package/src/TabNavigation.ts +21 -19
  235. package/src/Table.ts +2 -2
  236. package/src/TextArea.hbs +21 -21
  237. package/src/TextArea.ts +82 -78
  238. package/src/TextField.hbs +4 -2
  239. package/src/generated/i18n/i18n-defaults.ts +2 -2
  240. package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +1 -1
  241. package/src/generated/templates/DatePickerPopoverTemplate.lit.ts +1 -1
  242. package/src/generated/templates/DatePickerTemplate.lit.ts +1 -1
  243. package/src/generated/templates/FilterMenuTemplate.lit.ts +2 -2
  244. package/src/generated/templates/MastheadItemTemplate.lit.ts +3 -3
  245. package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +2 -2
  246. package/src/generated/templates/MastheadShellTemplate.lit.ts +8 -9
  247. package/src/generated/templates/PaginationTemplate.lit.ts +1 -1
  248. package/src/generated/templates/TabHeaderTemplate.lit.ts +1 -1
  249. package/src/generated/templates/TabNavigationTemplate.lit.ts +1 -1
  250. package/src/generated/templates/TextAreaTemplate.lit.ts +5 -4
  251. package/src/generated/templates/TextFieldTemplate.lit.ts +1 -1
  252. package/src/generated/themes/AccordionItem.css.ts +1 -1
  253. package/src/generated/themes/Button.css.ts +1 -1
  254. package/src/generated/themes/CountrySelector.css.ts +1 -1
  255. package/src/generated/themes/ListItem.css.ts +1 -1
  256. package/src/generated/themes/MastheadItem.css.ts +1 -1
  257. package/src/generated/themes/MastheadMenu.css.ts +1 -1
  258. package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
  259. package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
  260. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  261. package/src/generated/themes/MastheadShell.css.ts +1 -1
  262. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  263. package/src/generated/themes/MessageStrip.css.ts +1 -1
  264. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  265. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  266. package/src/generated/themes/Review.css.ts +1 -1
  267. package/src/generated/themes/ReviewItem.css.ts +1 -1
  268. package/src/generated/themes/Search.css.ts +1 -1
  269. package/src/generated/themes/SegmentedButton.css.ts +1 -1
  270. package/src/generated/themes/SideNavigationMobileDropdown.css.ts +1 -1
  271. package/src/generated/themes/Slider.css.ts +1 -1
  272. package/src/generated/themes/StepInput.css.ts +1 -1
  273. package/src/generated/themes/TabNavigation.css.ts +1 -1
  274. package/src/generated/themes/Table.css.ts +1 -1
  275. package/src/generated/themes/TextArea.css.ts +1 -1
  276. package/src/i18n/messagebundle.properties +3 -0
  277. package/src/i18n/messagebundle_en.properties +1 -0
  278. package/src/themes/AccordionItem.css +2 -2
  279. package/src/themes/Button.css +5 -5
  280. package/src/themes/CountrySelector.css +35 -28
  281. package/src/themes/ListItem.css +1 -1
  282. package/src/themes/MastheadItem.css +40 -2
  283. package/src/themes/MastheadMenu.css +74 -2
  284. package/src/themes/MastheadMenuItem.css +1 -0
  285. package/src/themes/MastheadMobileMenu.css +2 -2
  286. package/src/themes/MastheadProfileMenu.css +10 -2
  287. package/src/themes/MastheadShell.css +59 -27
  288. package/src/themes/MediaPlayer.css +18 -9
  289. package/src/themes/MessageStrip.css +6 -6
  290. package/src/themes/PhoneNumberField.css +2 -2
  291. package/src/themes/Review.css +1 -1
  292. package/src/themes/ReviewItem.css +1 -1
  293. package/src/themes/Search.css +8 -2
  294. package/src/themes/SegmentedButton.css +1 -1
  295. package/src/themes/SelectBox.css +1 -1
  296. package/src/themes/SideNavigationMobileDropdown.css +1 -1
  297. package/src/themes/StepInput.css +5 -5
  298. package/src/themes/TabNavigation.css +6 -6
  299. package/src/themes/Table.css +5 -5
  300. package/src/themes/TextArea.css +12 -1
  301. package/dist/assets/messagebundle_en-4997b226.js +0 -1
@@ -13,9 +13,8 @@ import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
13
13
  import { OPENS_IN_A_NEW_WINDOW, PROFILE } from "./generated/i18n/i18n-defaults.js";
14
14
  import UDExMastheadMenu from "./MastheadMenu.js";
15
15
  import UDExAvatar from "./Avatar.js";
16
- import MastheadShell from "./MastheadShell.js";
17
16
  import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
18
-
17
+ import UDExMastheadShell from "./MastheadShell.js";
19
18
  import MastheadItemTemplate from "./generated/templates/MastheadItemTemplate.lit.js";
20
19
 
21
20
  // Styles
@@ -212,6 +211,14 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
212
211
  @property({ type: String })
213
212
  _direction?: string;
214
213
 
214
+ /**
215
+ * Defines the mobile mode for component
216
+ *
217
+ * @private
218
+ */
219
+ @property({ type: Boolean })
220
+ _isMobileMode!: boolean;
221
+
215
222
  /**
216
223
  * Slot for the dropdown
217
224
  *
@@ -231,20 +238,23 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
231
238
  content?: Array<HTMLElement>;
232
239
 
233
240
  _profileAvatar!: UDExAvatar;
241
+ _mastheadShell!: UDExMastheadShell;
242
+
234
243
  static i18nBundle: I18nBundle;
235
244
 
236
245
  static async onDefine(): Promise<void> {
237
246
  UDExMastheadItem.i18nBundle = await getI18nBundle("@udex/web-components");
238
247
  }
239
248
 
240
- onEnterDOM() {
249
+ onEnterDOM(): void {
241
250
  if (isDesktop()) {
242
251
  this.setAttribute("desktop", "");
243
252
  }
244
253
  }
245
254
 
246
- onAfterRendering() {
255
+ onAfterRendering(): void {
247
256
  this._profileAvatar = this.profileAvatar;
257
+ this._mastheadShell = this.mastheadShell;
248
258
  this.handleDirection();
249
259
  if (this.selected && this.hasDropdownSlot && !this.isMobile && !this.isExploreBtn) {
250
260
  this.setDropdownInsetStart();
@@ -280,13 +290,11 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
280
290
  }
281
291
 
282
292
  handleKeyEscapeMobile(): void {
283
- const mastheadShell: MastheadShell = document.querySelector<MastheadShell>("udex-masthead-shell")!;
284
-
285
- mastheadShell.closeMobileMenu();
286
- mastheadShell.mobileBtn?.focus();
293
+ this._mastheadShell.closeMobileMenu();
294
+ this._mastheadShell.mobileBtn?.focus();
287
295
  }
288
296
 
289
- handleNavigationItemClick(e: Event): void {
297
+ handleItemClick(e: Event): void {
290
298
  this.selected = this.isMobile ? true : !this.selected;
291
299
 
292
300
  this.fireEvent<ItemClickEventDetail>("item-click", {
@@ -357,6 +365,10 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
357
365
  return this.parseArrayFromString(this.subItems);
358
366
  }
359
367
 
368
+ get mastheadShell(): UDExMastheadShell {
369
+ return document.querySelector<UDExMastheadShell>("[udex-masthead-shell]")!;
370
+ }
371
+
360
372
  get additionalClass(): string {
361
373
  const iconClass = this.icon ? "udex-masthead-item__button--icon" : "";
362
374
  const profileClass = this.isProfileBtn ? "udex-masthead-item__button--profile" : "";
@@ -365,7 +377,7 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
365
377
  }
366
378
 
367
379
  get profileAvatar(): UDExAvatar {
368
- return this.querySelector("udex-avatar")!;
380
+ return this.querySelector("[udex-avatar]")!;
369
381
  }
370
382
 
371
383
  get isRtlDirection(): boolean {
@@ -435,7 +447,7 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
435
447
  }
436
448
 
437
449
  get isMobile(): boolean {
438
- return window.innerWidth < breakpointSizeM;
450
+ return window.innerWidth < breakpointSizeM || this.mastheadShell?._isMobileMode;
439
451
  }
440
452
 
441
453
  get isTargetBlank(): boolean {
@@ -99,6 +99,14 @@ class UDExMastheadMenu extends UI5Element {
99
99
  @property({ type: String, defaultValue: "[]" })
100
100
  subItems!: string;
101
101
 
102
+ /**
103
+ * Defines the mobile mode for component
104
+ *
105
+ * @private
106
+ */
107
+ @property({ type: Boolean })
108
+ _isMobileMode!: boolean;
109
+
102
110
  handleKeyDown(e: KeyboardEvent): void {
103
111
  this.handleUpArrow(e);
104
112
  this.handleDownArrow(e);
@@ -149,7 +157,7 @@ class UDExMastheadMenu extends UI5Element {
149
157
  }
150
158
 
151
159
  get links(): Array<UDExMastheadMenuItem> {
152
- const menuItems: Array<UDExMastheadMenuItem> = Array.from(this.shadowRoot!.querySelectorAll("udex-masthead-menu-item"));
160
+ const menuItems: Array<UDExMastheadMenuItem> = Array.from(this.shadowRoot!.querySelectorAll("[udex-masthead-menu-item]"));
153
161
  return menuItems.filter(({ url }) => url && url.length > 0);
154
162
  }
155
163
 
@@ -11,7 +11,7 @@
11
11
  aria-describedby="{{ariaDescribedby}}"
12
12
  role="{{accessibleRoleText}}"
13
13
  href="{{url}}"
14
- part="menu-item-link"
14
+ part="{{partAttr}}"
15
15
  target="{{target}}">
16
16
  {{#if iconStart}}
17
17
  {{>arrow-left}}
@@ -25,6 +25,7 @@
25
25
  </a>
26
26
  {{#if badge}}
27
27
  <udex-badge
28
+ part="badge"
28
29
  class="udex-masthead-menu-item-badge"
29
30
  type="Number"
30
31
  number-design="Blue"
@@ -196,6 +196,10 @@ class UDExMastheadMenuItem extends UI5Element {
196
196
  get accessibleRoleText(): string | null {
197
197
  return this.accessibleRole ? this.accessibleRole : null;
198
198
  }
199
+
200
+ get partAttr(): string {
201
+ return this.badge ? "menu-item-link-badge" : "menu-item-link";
202
+ }
199
203
  }
200
204
 
201
205
  UDExMastheadMenuItem.define();
@@ -401,7 +401,7 @@ class UDExMastheadMobileMenu extends UI5Element {
401
401
  }
402
402
 
403
403
  getListItemByIndex(index: number): HTMLElement | null {
404
- return this.navigationItems[index]?.querySelector("udex-masthead-menu-item");
404
+ return this.navigationItems[index]?.querySelector("[udex-masthead-menu-item]");
405
405
  }
406
406
 
407
407
  get exploreBtnMenu(): UDExMastheadMenuItem {
@@ -112,6 +112,14 @@ class UDExMastheadProfileMenu extends UI5Element {
112
112
  @property()
113
113
  logoutUrl!: string;
114
114
 
115
+ /**
116
+ * Defines the mobile mode for component
117
+ *
118
+ * @private
119
+ */
120
+ @property({ type: Boolean })
121
+ _isMobileMode!: boolean;
122
+
115
123
  /**
116
124
  * Placeholder for message strip.
117
125
  *
@@ -1,15 +1,19 @@
1
- <div class="udex-masthead-shell" @keydown="{{handleKeyDown}}">
1
+ <header class="udex-masthead-shell" @keydown="{{handleKeyDown}}">
2
2
  <div class="udex-masthead-shell__main-content">
3
- {{#if logoUrl}}
4
- {{>logo}}
5
- {{/if}}
3
+ <div class="udex-masthead-shell__landing-wrap">
4
+ {{#if logoUrl}}
5
+ {{>logo}}
6
+ {{/if}}
6
7
 
7
- {{#if siteLabel}}
8
- {{>siteLabel}}
9
- {{/if}}
8
+ {{#if siteLabel}}
9
+ {{>siteLabel}}
10
+ {{/if}}
11
+ </div>
10
12
 
11
13
  {{#if isMainMenuVisible}}
12
- <nav aria-label="{{mainNavigationAriaLabel}}">
14
+ <nav
15
+ class="udex-masthead-shell__nav"
16
+ aria-label="{{mainNavigationAriaLabel}}">
13
17
  <ul
14
18
  class="udex-masthead-shell__main-menu"
15
19
  aria-label="{{mainNavigationAriaLabel}}">
@@ -39,67 +43,65 @@
39
43
  {{/if}}
40
44
  {{/if}}
41
45
 
42
- {{#if isRightMenuVisible}}
43
- <div class="udex-masthead-shell__right-menu">
44
- {{#if hasMobileMenuButtons}}
45
- <udex-masthead-item
46
- @ui5-item-click="{{handleMobileMenuClick}}"
47
- class="udex-masthead-shell__menu-btn"
48
- accessible-role="button"
49
- icon="menu2"
50
- part="menu-open-btn"
51
- accessible-name="menu">
52
- <slot slot="dropdown" name="mobileMenu"></slot>
53
- </udex-masthead-item>
54
- {{/if}}
55
- {{#if hasExploreSAP}}
56
- <div
57
- class="udex-masthead-shell__explore"
58
- @ui5-item-click="{{setSelectedItem}}">
59
- <slot name="exploreSAP"></slot>
60
- </div>
61
- {{/if}}
62
- {{#if hasSearch}}
63
- <div class="udex-masthead-shell__search-icon">
64
- <udex-masthead-item
65
- class="udex-masthead-shell__search-btn"
66
- icon="search"
67
- @click="{{handleSearchClick}}"
68
- accessible-name="search">
69
- </udex-masthead-item>
70
- </div>
71
- {{/if}}
72
- {{#if hasCart}}
73
- <div
74
- class="udex-masthead-shell__cart"
75
- @ui5-item-click="{{setSelectedItem}}"
76
- @click="{{handleCartClick}}">
77
- <slot name="cart"></slot>
78
- </div>
79
- {{/if}}
80
- {{#if hasProfile}}
81
- <div
82
- class="udex-masthead-shell__profile"
83
- @ui5-item-click="{{setSelectedItem}}"
84
- @click="{{handleProfileClick}}">
85
- <slot name="profile"></slot>
86
- </div>
87
- {{/if}}
88
- {{#if hasMobileMenuButtons}}
46
+ <div class="udex-masthead-shell__right-menu">
47
+ {{#if hasMobileMenuButtons}}
48
+ <udex-masthead-item
49
+ @ui5-item-click="{{handleMobileMenuClick}}"
50
+ class="udex-masthead-shell__menu-btn"
51
+ accessible-role="button"
52
+ icon="menu2"
53
+ part="menu-open-btn"
54
+ accessible-name="menu">
55
+ <slot slot="dropdown" name="mobileMenu"></slot>
56
+ </udex-masthead-item>
57
+ {{/if}}
58
+ {{#if hasExploreSAP}}
59
+ <div
60
+ class="udex-masthead-shell__explore"
61
+ @ui5-item-click="{{setSelectedItem}}">
62
+ <slot name="exploreSAP"></slot>
63
+ </div>
64
+ {{/if}}
65
+ {{#if hasSearch}}
66
+ <div class="udex-masthead-shell__search-icon udex-masthead-shell__item_icon">
89
67
  <udex-masthead-item
90
- @keydown="{{handleEnterAndSpaceOnCloseBtn}}"
91
- @ui5-item-click="{{handleMobileCloseClick}}"
92
- class="udex-masthead-shell__close-btn"
93
- accessible-role="button"
94
- icon="decline"
95
- accessible-name="close"
96
- part="menu-close-btn"
97
- hide-active-border>
68
+ class="udex-masthead-shell__search-btn"
69
+ icon="search"
70
+ @click="{{handleSearchClick}}"
71
+ accessible-name="search">
98
72
  </udex-masthead-item>
99
- {{/if}}
100
- </div>
101
- {{/if}}
102
- </div>
73
+ </div>
74
+ {{/if}}
75
+ {{#if hasCart}}
76
+ <div
77
+ class="udex-masthead-shell__cart udex-masthead-shell__item_icon"
78
+ @ui5-item-click="{{setSelectedItem}}"
79
+ @click="{{handleCartClick}}">
80
+ <slot name="cart"></slot>
81
+ </div>
82
+ {{/if}}
83
+ {{#if hasProfile}}
84
+ <div
85
+ class="udex-masthead-shell__profile udex-masthead-shell__item_icon"
86
+ @ui5-item-click="{{setSelectedItem}}"
87
+ @click="{{handleProfileClick}}">
88
+ <slot name="profile"></slot>
89
+ </div>
90
+ {{/if}}
91
+ {{#if hasMobileMenuButtons}}
92
+ <udex-masthead-item
93
+ @keydown="{{handleEnterAndSpaceOnCloseBtn}}"
94
+ @ui5-item-click="{{handleMobileCloseClick}}"
95
+ class="udex-masthead-shell__close-btn"
96
+ accessible-role="button"
97
+ icon="decline"
98
+ accessible-name="close"
99
+ part="menu-close-btn"
100
+ hide-active-border>
101
+ </udex-masthead-item>
102
+ {{/if}}
103
+ </div>
104
+ </header>
103
105
 
104
106
  {{#*inline "item"}}
105
107
  <li
@@ -15,19 +15,22 @@ import "@ui5/webcomponents-icons/dist/search.js";
15
15
  import "@ui5/webcomponents-icons/dist/cart.js";
16
16
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
17
17
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
18
+ import { MAIN_LINKS } from "./generated/i18n/i18n-defaults.js";
18
19
  import UDExMastheadItem from "./MastheadItem.js";
19
20
  import UDExMastheadMenu from "./MastheadMenu.js";
20
21
  import UDExControlButton from "./ControlButton.js";
21
22
  import UDExSearch from "./Search.js";
22
23
  import UDExMastheadMobileMenu from "./MastheadMobileMenu.js";
23
-
24
+ import UDExMastheadProfileMenu from "./MastheadProfileMenu.js";
24
25
  import MastheadShellTemplate from "./generated/templates/MastheadShellTemplate.lit.js";
25
26
 
26
27
  // Styles
27
28
  import MastheadShellCss from "./generated/themes/MastheadShell.css.js";
28
- import { MAIN_LINKS } from "./generated/i18n/i18n-defaults.js";
29
29
 
30
30
  const breakpointSizeM: number = 1279;
31
+ const canvasContentFont = "16px '72 Brand Variable'";
32
+ type MastheadSlottedItem = UDExMastheadItem | UDExMastheadProfileMenu | UDExMastheadMenu | undefined | null;
33
+ type MastheadItemType = UDExMastheadItem | null | undefined;
31
34
  /**
32
35
  * @class
33
36
  *
@@ -60,6 +63,20 @@ const breakpointSizeM: number = 1279;
60
63
  ],
61
64
  })
62
65
 
66
+ /**
67
+ * Fired event when the user clicks the mobile menu button opener.
68
+ *
69
+ * @public
70
+ */
71
+ @event("mobile-menu-open")
72
+
73
+ /**
74
+ * Fired event when the user clicks the mobile menu button closer.
75
+ *
76
+ * @public
77
+ */
78
+ @event("mobile-menu-close")
79
+
63
80
  /**
64
81
  * Fired event when the user clicks the search button trigger.
65
82
  *
@@ -279,6 +296,14 @@ class UDExMastheadShell extends UI5Element {
279
296
  @property({ type: Boolean })
280
297
  _isMobileMenuOpen!: boolean;
281
298
 
299
+ /**
300
+ * Defines the mobile mode for component
301
+ *
302
+ * @private
303
+ */
304
+ @property({ type: Boolean })
305
+ _isMobileMode!: boolean;
306
+
282
307
  /**
283
308
  * Defines if the close button was clicked
284
309
  *
@@ -329,11 +354,15 @@ class UDExMastheadShell extends UI5Element {
329
354
  }
330
355
 
331
356
  _handleResize(): void {
357
+ if (this.shouldHandleMobileView) {
358
+ this.handleMobileMode();
359
+ }
360
+
332
361
  if (this.isBreakpointSizeM) {
333
362
  this._isSearchOpened = false;
334
363
  }
335
364
 
336
- if (this._shouldHandleResize && this.isBreakpointSizeM) {
365
+ if (this._shouldHandleResize && this._isMobileMenuOpen) {
337
366
  this.closeMobileMenu();
338
367
  return;
339
368
  }
@@ -341,6 +370,23 @@ class UDExMastheadShell extends UI5Element {
341
370
  this._shouldHandleResize = true;
342
371
  }
343
372
 
373
+ handleMobileMode(): void {
374
+ const rootHolder = this.getDomRef();
375
+ if (rootHolder) {
376
+ const rootHolderWidth = this.getRootHolderWidth(rootHolder);
377
+ const landingHolderWidth = this.getLandingHolderWidth();
378
+ const rightMenuWidth = this.getRightMenuWidth();
379
+ const mainMenuWidth = this.getMainMenuWidth();
380
+ const availableWidth = rootHolderWidth - rightMenuWidth - landingHolderWidth;
381
+
382
+ if (mainMenuWidth >= availableWidth) {
383
+ this.setMobileMode();
384
+ } else {
385
+ this.removeMobileMode();
386
+ }
387
+ }
388
+ }
389
+
344
390
  handleKeyDown(e: KeyboardEvent): void {
345
391
  e.stopPropagation();
346
392
  this.handleLeftArrow(e);
@@ -402,22 +448,27 @@ class UDExMastheadShell extends UI5Element {
402
448
  handleMobileMenuClick(e: CustomEvent) {
403
449
  e.stopPropagation();
404
450
  this.setSelectedItem(e);
451
+
405
452
  this._isMobileMenuOpen = true;
406
453
 
407
454
  if (this.bodyOverflow) {
408
455
  this.setOverflowBody();
409
456
  }
457
+
458
+ this.fireEvent("mobile-menu-open");
410
459
  }
411
460
 
412
461
  handleMobileCloseClick(e: CustomEvent) {
413
462
  e.preventDefault();
414
463
  this.closeMobileMenu();
464
+ this.fireMobileMenuCloseEvent();
415
465
  }
416
466
 
417
467
  handleEnterAndSpaceOnCloseBtn(e: KeyboardEvent) {
418
468
  if (isSpace(e) || isEnter(e)) {
419
469
  e.preventDefault();
420
470
  this.closeMobileMenu();
471
+ this.fireMobileMenuCloseEvent();
421
472
  this.mobileBtn?.focus();
422
473
  }
423
474
  }
@@ -425,7 +476,7 @@ class UDExMastheadShell extends UI5Element {
425
476
  handleOutsideClick(): void {
426
477
  document.addEventListener("click", (e: Event) => {
427
478
  const el = e.target as UDExMastheadItem;
428
- const isMobile = window.innerWidth < 1280;
479
+ const isMobile = window.innerWidth < 1280 || this._isMobileMode;
429
480
  const isDropdownSlot = el.getAttribute("slot") === "dropdown";
430
481
  if (!isDropdownSlot && !el.isMenuItem && !isMobile) {
431
482
  this.resetSelectedItems();
@@ -434,7 +485,7 @@ class UDExMastheadShell extends UI5Element {
434
485
  }
435
486
 
436
487
  focusSearchInput(): void {
437
- const searchSlot = this.querySelector<UDExSearch>("udex-search");
488
+ const searchSlot = this.querySelector<UDExSearch>("[udex-search]");
438
489
  if (searchSlot) {
439
490
  const input = searchSlot.shadowRoot!.querySelector<HTMLElement>("input");
440
491
  input?.focus();
@@ -442,16 +493,18 @@ class UDExMastheadShell extends UI5Element {
442
493
  }
443
494
 
444
495
  focusPreviousMenuItem(item: UDExMastheadItem): void {
496
+ const menuItems = this.menuItems;
497
+ const lastItemIndex = menuItems.length - 1;
445
498
  const currentSelectedIndex = this.getCurrentIndex(item);
446
- const lastItemIndex = this.menuItems.length - 1;
447
499
  const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;
448
- this.menuItems[previousSelectIndex].focus();
500
+ menuItems[previousSelectIndex].focus();
449
501
  }
450
502
 
451
503
  focusNextMenuItem(item: UDExMastheadItem): void {
504
+ const menuItems = this.menuItems;
452
505
  const currentSelectedIndex = this.getCurrentIndex(item);
453
- const nextSelectIndex = currentSelectedIndex + 1 > this.menuItems.length - 1 ? 0 : currentSelectedIndex + 1;
454
- this.menuItems[nextSelectIndex].focus();
506
+ const nextSelectIndex = currentSelectedIndex + 1 > menuItems.length - 1 ? 0 : currentSelectedIndex + 1;
507
+ menuItems[nextSelectIndex].focus();
455
508
  }
456
509
 
457
510
  resetSelectedItems(): void {
@@ -501,6 +554,74 @@ class UDExMastheadShell extends UI5Element {
501
554
  return buttonsArray.filter(({ selected }) => selected);
502
555
  }
503
556
 
557
+ getRootHolderWidth(root: HTMLElement): number {
558
+ const rootPadding = parseInt(window.getComputedStyle(root).getPropertyValue("padding-left")) * 2;
559
+ const scrollWidth = window.innerWidth - document.documentElement.clientWidth;
560
+ return this.getDomRef()!.clientWidth + scrollWidth - rootPadding;
561
+ }
562
+
563
+ getLandingHolderWidth(): number {
564
+ const landingHolder = this.getDomElement(".udex-masthead-shell__landing-wrap");
565
+ return landingHolder?.offsetWidth || 0;
566
+ }
567
+
568
+ getRightMenuWidth(): number {
569
+ const itemsIcon = [...this.shadowRoot!.querySelectorAll<HTMLDivElement>(".udex-masthead-shell__item_icon")];
570
+ const itemIconWidths = itemsIcon.length * this.getItemIconWidth();
571
+ const itemIconGaps = itemsIcon.length * this.getItemIconGap();
572
+ const exploreSAPWidth = this.hasExploreSAP ? this.getItemWidth(this.exploreSAP[0]) : 0;
573
+ const rightMenuGaps = this.getRightMenuGap() + this.getExploreSapBtnGap() + itemIconGaps;
574
+ return exploreSAPWidth + itemIconWidths + rightMenuGaps;
575
+ }
576
+
577
+ getItemIconWidth(): number {
578
+ const style = window.getComputedStyle(this.profileItem);
579
+ const itemIconWidthVar = style.getPropertyValue("--udex-masthead-item-button-icon-size");
580
+ return parseInt(itemIconWidthVar);
581
+ }
582
+
583
+ getMainMenuWidth(): number {
584
+ const mainItems = this.getSlottedNodes("menuItems");
585
+ const gapItemVar = this.getRootVar("--udex-masthead-shell-item-gap");
586
+ return mainItems.reduce((accumulatedWidth, item, index) => {
587
+ return accumulatedWidth + this.getItemWidth(item as UDExMastheadItem) + (index && parseInt(gapItemVar));
588
+ }, 0);
589
+ }
590
+
591
+ getDomElement(selector: string): HTMLElement | undefined | null {
592
+ return this.shadowRoot?.querySelector(`${selector}`);
593
+ }
594
+
595
+ getItemWidth(item: UDExMastheadItem): number {
596
+ const context = this.getCanvasContext();
597
+ context.font = canvasContentFont;
598
+ return Math.ceil(context.measureText(item.innerText.trim()).width);
599
+ }
600
+
601
+ getCanvasContext(): CanvasRenderingContext2D {
602
+ const canvas = document.createElement("canvas");
603
+ return canvas.getContext("2d")!;
604
+ }
605
+
606
+ getItemIconGap(): number {
607
+ const gapIconItemVar = this.getRootVar("--udex-masthead-shell-item-icon-gap");
608
+ return parseInt(gapIconItemVar);
609
+ }
610
+
611
+ getExploreSapBtnGap(): number {
612
+ const exploreSapBtnGapVar = this.getRootVar("--udex-masthead-shell-explore-margin");
613
+ return this.hasExploreSAP ? parseInt(exploreSapBtnGapVar) : 0;
614
+ }
615
+
616
+ getRightMenuGap(): number {
617
+ const rightMenuGapVar = this.getRootVar("--udex-masthead-right-menu-padding");
618
+ return parseInt(rightMenuGapVar);
619
+ }
620
+
621
+ getRootVar(variableName: string): string {
622
+ return window.getComputedStyle(this.getDomRef()!).getPropertyValue(`${variableName}`);
623
+ }
624
+
504
625
  isNavigationItem(item: UDExMastheadItem): boolean {
505
626
  return this.menuItems.some(menuItem => menuItem === item);
506
627
  }
@@ -526,7 +647,31 @@ class UDExMastheadShell extends UI5Element {
526
647
  }
527
648
  }
528
649
 
529
- get searchOpener(): UDExMastheadItem | null | undefined {
650
+ setMobileMode(): void {
651
+ this._isMobileMode = true;
652
+ this.slottedItems.forEach((item: MastheadSlottedItem) => {
653
+ if (item) {
654
+ item._isMobileMode = true;
655
+ }
656
+ });
657
+ }
658
+
659
+ removeMobileMode(): void {
660
+ this._isMobileMode = false;
661
+ this.slottedItems.forEach((item: MastheadSlottedItem) => {
662
+ item?.removeAttribute("_is-mobile-mode");
663
+ });
664
+ }
665
+
666
+ fireMobileMenuCloseEvent(): void {
667
+ this.fireEvent("mobile-menu-close");
668
+ }
669
+
670
+ get slottedItems(): (MastheadSlottedItem)[] {
671
+ return [this.profileItem, this.cartItem, this.profileMenu, this.profileMenuLinks];
672
+ }
673
+
674
+ get searchOpener(): MastheadItemType {
530
675
  return this.shadowRoot?.querySelector(".udex-masthead-shell__search-btn");
531
676
  }
532
677
 
@@ -538,14 +683,30 @@ class UDExMastheadShell extends UI5Element {
538
683
  return this.querySelector("[udex-masthead-mobile-menu]");
539
684
  }
540
685
 
541
- get mobileBtn(): UDExMastheadItem | null | undefined {
686
+ get mobileBtn(): MastheadItemType {
542
687
  return this.shadowRoot?.querySelector(".udex-masthead-shell__menu-btn");
543
688
  }
544
689
 
545
- get closeBtn(): UDExMastheadItem | null | undefined {
690
+ get closeBtn(): MastheadItemType {
546
691
  return this.shadowRoot?.querySelector(".udex-masthead-shell__close-btn");
547
692
  }
548
693
 
694
+ get profileItem(): UDExMastheadItem {
695
+ return this.getSlottedNodes<UDExMastheadItem>("profile")[0];
696
+ }
697
+
698
+ get cartItem(): MastheadItemType {
699
+ return this.getSlottedNodes<UDExMastheadItem>("cart")[0];
700
+ }
701
+
702
+ get profileMenu(): UDExMastheadProfileMenu {
703
+ return this.querySelector("[udex-masthead-profile-menu]")!;
704
+ }
705
+
706
+ get profileMenuLinks(): UDExMastheadMenu | undefined | null {
707
+ return this.profileMenu?.shadowRoot?.querySelector("[udex-masthead-menu]");
708
+ }
709
+
549
710
  get hasProfile(): boolean {
550
711
  return !!this.profile.length;
551
712
  }
@@ -574,14 +735,14 @@ class UDExMastheadShell extends UI5Element {
574
735
  return !this.showSearchByDefault && !this._isSearchOpened;
575
736
  }
576
737
 
577
- get isRightMenuVisible(): boolean {
578
- return this.showSearchByDefault || !this._isSearchOpened;
579
- }
580
-
581
738
  get isSearchVisible(): boolean {
582
739
  return this.showSearchByDefault || this._isSearchOpened;
583
740
  }
584
741
 
742
+ get shouldHandleMobileView(): boolean {
743
+ return !this.isBreakpointSizeM && !this.showSearchByDefault;
744
+ }
745
+
585
746
  get mainNavigationAriaLabel(): string {
586
747
  return UDExMastheadShell.i18nBundle.getText(MAIN_LINKS);
587
748
  }
@@ -347,11 +347,11 @@ class UDExMediaPlayer extends UI5Element {
347
347
  */
348
348
  getPlayer(): HTMLVideoElement | HTMLAudioElement | YT.Player | VimeoPlayer | null {
349
349
  if (this._youtubeSrc) {
350
- const player = this.shadowRoot?.querySelector("udex-media-player-youtube") as UDExMediaPlayerYoutube;
350
+ const player = this.shadowRoot?.querySelector("[udex-media-player-youtube]") as UDExMediaPlayerYoutube;
351
351
  return player?.getPlayer() || null;
352
352
  }
353
353
  if (this._vimeoSrc) {
354
- const player = this.shadowRoot?.querySelector("udex-media-player-vimeo") as UDExMediaPlayerVimeo;
354
+ const player = this.shadowRoot?.querySelector("[udex-media-player-vimeo]") as UDExMediaPlayerVimeo;
355
355
  return player?.getPlayer() || null;
356
356
  }
357
357
  return this.shadowRoot?.querySelector(".video-js video") as HTMLVideoElement || this.shadowRoot?.querySelector(".video-js audio") || null;