@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.
- package/bundle.esm.js +1 -1
- package/dist/Accordion.js +2 -1
- package/dist/Accordion.js.map +1 -1
- package/dist/AccordionItem.d.ts +0 -1
- package/dist/AccordionItem.js +2 -2
- package/dist/AccordionItem.js.map +1 -1
- package/dist/Badge.js +2 -1
- package/dist/Badge.js.map +1 -1
- package/dist/Breadcrumbs.d.ts +7 -7
- package/dist/Breadcrumbs.js +3 -3
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/CountrySelector.d.ts +2 -0
- package/dist/CountrySelector.js +10 -6
- package/dist/CountrySelector.js.map +1 -1
- package/dist/DatePicker.d.ts +53 -26
- package/dist/DatePicker.js +205 -39
- package/dist/DatePicker.js.map +1 -1
- package/dist/FilterMenu.d.ts +4 -6
- package/dist/FilterMenu.js +10 -10
- package/dist/FilterMenu.js.map +1 -1
- package/dist/Footer.js +6 -2
- package/dist/Footer.js.map +1 -1
- package/dist/HeroBanner.d.ts +0 -1
- package/dist/HeroBanner.js +2 -1
- package/dist/HeroBanner.js.map +1 -1
- package/dist/Link.js +2 -0
- package/dist/Link.js.map +1 -1
- package/dist/ListSelectAll.js +2 -0
- package/dist/ListSelectAll.js.map +1 -1
- package/dist/MastheadItem.d.ts +10 -1
- package/dist/MastheadItem.js +12 -6
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadMenu.d.ts +6 -0
- package/dist/MastheadMenu.js +4 -1
- package/dist/MastheadMenu.js.map +1 -1
- package/dist/MastheadMenuItem.d.ts +1 -0
- package/dist/MastheadMenuItem.js +3 -0
- package/dist/MastheadMenuItem.js.map +1 -1
- package/dist/MastheadMobileMenu.js +1 -1
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/MastheadProfileMenu.d.ts +6 -0
- package/dist/MastheadProfileMenu.js +3 -0
- package/dist/MastheadProfileMenu.js.map +1 -1
- package/dist/MastheadShell.d.ts +35 -4
- package/dist/MastheadShell.js +141 -11
- package/dist/MastheadShell.js.map +1 -1
- package/dist/MediaPlayer.js +2 -2
- package/dist/MediaPlayer.js.map +1 -1
- package/dist/MessageStrip.js +2 -1
- package/dist/MessageStrip.js.map +1 -1
- package/dist/Pagination.d.ts +3 -2
- package/dist/Pagination.js +4 -2
- package/dist/Pagination.js.map +1 -1
- package/dist/RadioButton.js +0 -1
- package/dist/RadioButton.js.map +1 -1
- package/dist/Search.js +0 -1
- package/dist/Search.js.map +1 -1
- package/dist/SearchableListBase.js +3 -3
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SecondaryNavigation.js +1 -1
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SecondaryNavigationItem.js +1 -1
- package/dist/SecondaryNavigationItem.js.map +1 -1
- package/dist/SelectBox.d.ts +5 -3
- package/dist/SelectBox.js +11 -7
- package/dist/SelectBox.js.map +1 -1
- package/dist/SideNavigationMobile.js +1 -1
- package/dist/SideNavigationMobile.js.map +1 -1
- package/dist/StepInput.js +1 -1
- package/dist/StepInput.js.map +1 -1
- package/dist/Tab.d.ts +4 -13
- package/dist/Tab.js +11 -14
- package/dist/Tab.js.map +1 -1
- package/dist/TabNavigation.d.ts +4 -5
- package/dist/TabNavigation.js +16 -15
- package/dist/TabNavigation.js.map +1 -1
- package/dist/Table.js +2 -2
- package/dist/Table.js.map +1 -1
- package/dist/TextArea.d.ts +13 -22
- package/dist/TextArea.js +30 -33
- package/dist/TextArea.js.map +1 -1
- package/dist/assets/{css_variables-a92ef9ad.css → bundle-c5e3cbf2.css} +1 -1
- package/dist/assets/{bundle.esm-f0e73f3b.js → bundle.esm-809b9769.js} +188 -188
- package/dist/assets/messagebundle_en-06c0dadc.js +1 -0
- package/dist/css/themes/AccordionItem.css +1 -1
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/CountrySelector.css +1 -1
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/MastheadItem.css +1 -1
- package/dist/css/themes/MastheadMenu.css +1 -1
- package/dist/css/themes/MastheadMenuItem.css +1 -1
- package/dist/css/themes/MastheadMobileMenu.css +1 -1
- package/dist/css/themes/MastheadProfileMenu.css +1 -1
- package/dist/css/themes/MastheadShell.css +1 -1
- package/dist/css/themes/MediaPlayer.css +1 -1
- package/dist/css/themes/MessageStrip.css +1 -1
- package/dist/css/themes/PhoneNumberField.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Review.css +1 -1
- package/dist/css/themes/ReviewItem.css +1 -1
- package/dist/css/themes/Search.css +1 -1
- package/dist/css/themes/SegmentedButton.css +1 -1
- package/dist/css/themes/SideNavigationMobileDropdown.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/StepInput.css +1 -1
- package/dist/css/themes/TabNavigation.css +1 -1
- package/dist/css/themes/Table.css +1 -1
- package/dist/css/themes/TextArea.css +1 -1
- package/dist/custom-elements-internal.json +127 -107
- package/dist/custom-elements.json +122 -104
- package/dist/features/SearchSuggestionsPopover.d.ts +1 -1
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
- package/dist/generated/i18n/i18n-defaults.js +2 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +1 -1
- package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/DatePickerPopoverTemplate.lit.js.map +1 -1
- package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
- package/dist/generated/templates/DatePickerTemplate.lit.js.map +1 -1
- package/dist/generated/templates/FilterMenuTemplate.lit.js +2 -2
- package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadItemTemplate.lit.js +3 -3
- package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +2 -2
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadShellTemplate.lit.js +8 -9
- package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
- package/dist/generated/templates/PaginationTemplate.lit.js +1 -1
- package/dist/generated/templates/PaginationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TabHeaderTemplate.lit.js +1 -1
- package/dist/generated/templates/TabHeaderTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.js +1 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TextAreaTemplate.lit.js +5 -4
- package/dist/generated/templates/TextAreaTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TextFieldTemplate.lit.js +1 -1
- package/dist/generated/templates/TextFieldTemplate.lit.js.map +1 -1
- package/dist/generated/themes/AccordionItem.css.js +1 -1
- package/dist/generated/themes/AccordionItem.css.js.map +1 -1
- package/dist/generated/themes/Button.css.js +1 -1
- package/dist/generated/themes/Button.css.js.map +1 -1
- package/dist/generated/themes/CountrySelector.css.js +1 -1
- package/dist/generated/themes/CountrySelector.css.js.map +1 -1
- package/dist/generated/themes/ListItem.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadItem.css.js +1 -1
- package/dist/generated/themes/MastheadItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadMenu.css.js +1 -1
- package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
- package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
- package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
- package/dist/generated/themes/MastheadShell.css.js +1 -1
- package/dist/generated/themes/MastheadShell.css.js.map +1 -1
- package/dist/generated/themes/MediaPlayer.css.js +1 -1
- package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
- package/dist/generated/themes/MessageStrip.css.js +1 -1
- package/dist/generated/themes/MessageStrip.css.js.map +1 -1
- package/dist/generated/themes/PhoneNumberField.css.js +1 -1
- package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/Review.css.js +1 -1
- package/dist/generated/themes/Review.css.js.map +1 -1
- package/dist/generated/themes/ReviewItem.css.js +1 -1
- package/dist/generated/themes/ReviewItem.css.js.map +1 -1
- package/dist/generated/themes/Search.css.js +1 -1
- package/dist/generated/themes/Search.css.js.map +1 -1
- package/dist/generated/themes/SegmentedButton.css.js +1 -1
- package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationMobileDropdown.css.js +1 -1
- package/dist/generated/themes/SideNavigationMobileDropdown.css.js.map +1 -1
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/generated/themes/StepInput.css.js +1 -1
- package/dist/generated/themes/StepInput.css.js.map +1 -1
- package/dist/generated/themes/TabNavigation.css.js +1 -1
- package/dist/generated/themes/TabNavigation.css.js.map +1 -1
- package/dist/generated/themes/Table.css.js +1 -1
- package/dist/generated/themes/Table.css.js.map +1 -1
- package/dist/generated/themes/TextArea.css.js +1 -1
- package/dist/generated/themes/TextArea.css.js.map +1 -1
- package/dist/i18n/messagebundle.properties +3 -0
- package/dist/i18n/messagebundle_en.properties +1 -0
- package/dist/vscode.html-custom-data.json +2 -12
- package/dist/web-types.json +21 -25
- package/package.json +2 -2
- package/src/Accordion.ts +2 -1
- package/src/AccordionItem.ts +2 -2
- package/src/Badge.ts +2 -1
- package/src/Breadcrumbs.hbs +3 -3
- package/src/Breadcrumbs.ts +14 -14
- package/src/BreadcrumbsPopover.hbs +1 -1
- package/src/CountrySelector.hbs +30 -30
- package/src/CountrySelector.ts +23 -18
- package/src/DatePicker.hbs +4 -5
- package/src/DatePicker.ts +257 -64
- package/src/DatePickerPopover.hbs +2 -2
- package/src/FilterMenu.hbs +2 -1
- package/src/FilterMenu.ts +13 -14
- package/src/Footer.ts +6 -2
- package/src/HeroBanner.ts +2 -1
- package/src/Link.ts +2 -0
- package/src/ListSelectAll.ts +2 -0
- package/src/MastheadItem.hbs +3 -3
- package/src/MastheadItem.ts +23 -11
- package/src/MastheadMenu.ts +9 -1
- package/src/MastheadMenuItem.hbs +2 -1
- package/src/MastheadMenuItem.ts +4 -0
- package/src/MastheadMobileMenu.ts +1 -1
- package/src/MastheadProfileMenu.ts +8 -0
- package/src/MastheadShell.hbs +69 -67
- package/src/MastheadShell.ts +177 -16
- package/src/MediaPlayer.ts +2 -2
- package/src/MessageStrip.ts +2 -1
- package/src/Pagination.hbs +2 -2
- package/src/Pagination.ts +8 -5
- package/src/RadioButton.ts +0 -1
- package/src/Search.ts +0 -1
- package/src/SearchableListBase.ts +3 -3
- package/src/SecondaryNavigation.ts +1 -1
- package/src/SecondaryNavigationItem.ts +1 -1
- package/src/SelectBox.ts +16 -10
- package/src/SideNavigationMobile.ts +1 -1
- package/src/StepInput.ts +1 -1
- package/src/Tab.ts +18 -29
- package/src/TabHeader.hbs +1 -1
- package/src/TabNavigation.hbs +1 -2
- package/src/TabNavigation.ts +21 -19
- package/src/Table.ts +2 -2
- package/src/TextArea.hbs +21 -21
- package/src/TextArea.ts +82 -78
- package/src/TextField.hbs +4 -2
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +1 -1
- package/src/generated/templates/DatePickerPopoverTemplate.lit.ts +1 -1
- package/src/generated/templates/DatePickerTemplate.lit.ts +1 -1
- package/src/generated/templates/FilterMenuTemplate.lit.ts +2 -2
- package/src/generated/templates/MastheadItemTemplate.lit.ts +3 -3
- package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +2 -2
- package/src/generated/templates/MastheadShellTemplate.lit.ts +8 -9
- package/src/generated/templates/PaginationTemplate.lit.ts +1 -1
- package/src/generated/templates/TabHeaderTemplate.lit.ts +1 -1
- package/src/generated/templates/TabNavigationTemplate.lit.ts +1 -1
- package/src/generated/templates/TextAreaTemplate.lit.ts +5 -4
- package/src/generated/templates/TextFieldTemplate.lit.ts +1 -1
- package/src/generated/themes/AccordionItem.css.ts +1 -1
- package/src/generated/themes/Button.css.ts +1 -1
- package/src/generated/themes/CountrySelector.css.ts +1 -1
- package/src/generated/themes/ListItem.css.ts +1 -1
- package/src/generated/themes/MastheadItem.css.ts +1 -1
- package/src/generated/themes/MastheadMenu.css.ts +1 -1
- package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
- package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
- package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
- package/src/generated/themes/MastheadShell.css.ts +1 -1
- package/src/generated/themes/MediaPlayer.css.ts +1 -1
- package/src/generated/themes/MessageStrip.css.ts +1 -1
- package/src/generated/themes/PhoneNumberField.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Review.css.ts +1 -1
- package/src/generated/themes/ReviewItem.css.ts +1 -1
- package/src/generated/themes/Search.css.ts +1 -1
- package/src/generated/themes/SegmentedButton.css.ts +1 -1
- package/src/generated/themes/SideNavigationMobileDropdown.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/StepInput.css.ts +1 -1
- package/src/generated/themes/TabNavigation.css.ts +1 -1
- package/src/generated/themes/Table.css.ts +1 -1
- package/src/generated/themes/TextArea.css.ts +1 -1
- package/src/i18n/messagebundle.properties +3 -0
- package/src/i18n/messagebundle_en.properties +1 -0
- package/src/themes/AccordionItem.css +2 -2
- package/src/themes/Button.css +5 -5
- package/src/themes/CountrySelector.css +35 -28
- package/src/themes/ListItem.css +1 -1
- package/src/themes/MastheadItem.css +40 -2
- package/src/themes/MastheadMenu.css +74 -2
- package/src/themes/MastheadMenuItem.css +1 -0
- package/src/themes/MastheadMobileMenu.css +2 -2
- package/src/themes/MastheadProfileMenu.css +10 -2
- package/src/themes/MastheadShell.css +59 -27
- package/src/themes/MediaPlayer.css +18 -9
- package/src/themes/MessageStrip.css +6 -6
- package/src/themes/PhoneNumberField.css +2 -2
- package/src/themes/Review.css +1 -1
- package/src/themes/ReviewItem.css +1 -1
- package/src/themes/Search.css +8 -2
- package/src/themes/SegmentedButton.css +1 -1
- package/src/themes/SelectBox.css +1 -1
- package/src/themes/SideNavigationMobileDropdown.css +1 -1
- package/src/themes/StepInput.css +5 -5
- package/src/themes/TabNavigation.css +6 -6
- package/src/themes/Table.css +5 -5
- package/src/themes/TextArea.css +12 -1
- package/dist/assets/messagebundle_en-4997b226.js +0 -1
package/src/MastheadItem.ts
CHANGED
|
@@ -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
|
-
|
|
284
|
-
|
|
285
|
-
mastheadShell.closeMobileMenu();
|
|
286
|
-
mastheadShell.mobileBtn?.focus();
|
|
293
|
+
this._mastheadShell.closeMobileMenu();
|
|
294
|
+
this._mastheadShell.mobileBtn?.focus();
|
|
287
295
|
}
|
|
288
296
|
|
|
289
|
-
|
|
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 {
|
package/src/MastheadMenu.ts
CHANGED
|
@@ -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
|
|
package/src/MastheadMenuItem.hbs
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
aria-describedby="{{ariaDescribedby}}"
|
|
12
12
|
role="{{accessibleRoleText}}"
|
|
13
13
|
href="{{url}}"
|
|
14
|
-
part="
|
|
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"
|
package/src/MastheadMenuItem.ts
CHANGED
|
@@ -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
|
*
|
package/src/MastheadShell.hbs
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
<
|
|
1
|
+
<header class="udex-masthead-shell" @keydown="{{handleKeyDown}}">
|
|
2
2
|
<div class="udex-masthead-shell__main-content">
|
|
3
|
-
|
|
4
|
-
{{
|
|
5
|
-
|
|
3
|
+
<div class="udex-masthead-shell__landing-wrap">
|
|
4
|
+
{{#if logoUrl}}
|
|
5
|
+
{{>logo}}
|
|
6
|
+
{{/if}}
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
{{#if siteLabel}}
|
|
9
|
+
{{>siteLabel}}
|
|
10
|
+
{{/if}}
|
|
11
|
+
</div>
|
|
10
12
|
|
|
11
13
|
{{#if isMainMenuVisible}}
|
|
12
|
-
<nav
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
accessible-
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
package/src/MastheadShell.ts
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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 >
|
|
454
|
-
|
|
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
|
-
|
|
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():
|
|
686
|
+
get mobileBtn(): MastheadItemType {
|
|
542
687
|
return this.shadowRoot?.querySelector(".udex-masthead-shell__menu-btn");
|
|
543
688
|
}
|
|
544
689
|
|
|
545
|
-
get closeBtn():
|
|
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
|
}
|
package/src/MediaPlayer.ts
CHANGED
|
@@ -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;
|