@sapudex/web-components 2.4.0 → 2.4.1
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/dist/AssetsVariables.js +6 -1
- package/dist/AssetsVariables.js.map +1 -1
- package/dist/MastheadCountrySelector.d.ts +6 -0
- package/dist/MastheadCountrySelector.js +8 -2
- package/dist/MastheadCountrySelector.js.map +1 -1
- package/dist/MastheadItem.d.ts +12 -7
- package/dist/MastheadItem.js +18 -16
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadMenu.d.ts +3 -0
- package/dist/MastheadMenu.js +3 -0
- package/dist/MastheadMenu.js.map +1 -1
- package/dist/MastheadMenuItem.d.ts +1 -1
- package/dist/MastheadMenuItem.js +1 -1
- package/dist/MastheadMenuItem.js.map +1 -1
- package/dist/MastheadMobileMenu.d.ts +6 -0
- package/dist/MastheadMobileMenu.js +13 -2
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/MastheadProfileMenu.d.ts +4 -4
- package/dist/MastheadProfileMenu.js +7 -0
- package/dist/MastheadProfileMenu.js.map +1 -1
- package/dist/MastheadShell.d.ts +12 -4
- package/dist/MastheadShell.js +19 -10
- package/dist/MastheadShell.js.map +1 -1
- package/dist/MessageStripTemplate.js +1 -1
- package/dist/MessageStripTemplate.js.map +1 -1
- package/dist/assets/{InputSuggestions-CYW_6A8K.js → InputSuggestions-B7dpC1q9.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-BDrgWGjT.js → ListItemStandardExpandableTextTemplate-BF6mHEec.js} +1 -1
- package/dist/assets/{bundle.esm-DRCvw6Ji.js → bundle.esm-BFePNrxi.js} +238 -233
- package/dist/assets/messagebundle_en-DXEe5nWA.js +1 -0
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/MastheadProfileMenu.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Search.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/TabInOverflow.css +1 -1
- package/dist/custom-elements-internal.json +156 -143
- package/dist/custom-elements.json +140 -127
- 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/MastheadCountrySelectorTemplate.lit.js +3 -3
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +1 -1
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMenuTemplate.lit.js +2 -2
- package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +14 -14
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +1 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadShellTemplate.lit.js +2 -2
- package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
- package/dist/generated/themes/Button.css.d.ts +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/MastheadProfileMenu.css.d.ts +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/RatingIndicator.css.d.ts +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/Search.css.d.ts +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/Slider.css.d.ts +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/TabInOverflow.css.d.ts +1 -1
- package/dist/generated/themes/TabInOverflow.css.js +1 -1
- package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
- package/dist/messagebundle.properties +3 -0
- package/dist/messagebundle_en.properties +1 -0
- package/dist/types/AnalyticsName.d.ts +5 -0
- package/dist/types/AnalyticsName.js +7 -0
- package/dist/types/AnalyticsName.js.map +1 -0
- package/dist/types/EventRibbon.d.ts +38 -13
- package/dist/types/EventRibbon.js +39 -12
- package/dist/types/EventRibbon.js.map +1 -1
- package/dist/vscode.html-custom-data.json +6 -25
- package/dist/web-types.json +13 -15
- package/package.json +1 -1
- package/src/AssetsVariables.ts +6 -1
- package/src/MastheadCountrySelector.hbs +3 -0
- package/src/MastheadCountrySelector.ts +13 -3
- package/src/MastheadItem.ts +28 -19
- package/src/MastheadMenu.hbs +6 -1
- package/src/MastheadMenu.ts +5 -0
- package/src/MastheadMenuItem.hbs +1 -1
- package/src/MastheadMenuItem.ts +2 -2
- package/src/MastheadMobileMenu.hbs +24 -9
- package/src/MastheadMobileMenu.ts +19 -3
- package/src/MastheadProfileMenu.hbs +2 -0
- package/src/MastheadProfileMenu.ts +11 -5
- package/src/MastheadShell.hbs +2 -0
- package/src/MastheadShell.ts +31 -14
- package/src/MessageStripTemplate.tsx +1 -0
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +3 -3
- package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +1 -1
- package/src/generated/templates/MastheadMenuTemplate.lit.ts +2 -2
- package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +14 -14
- package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +1 -1
- package/src/generated/templates/MastheadShellTemplate.lit.ts +2 -2
- package/src/generated/themes/Button.css.ts +1 -1
- package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Search.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/TabInOverflow.css.ts +1 -1
- package/src/i18n/messagebundle.properties +3 -0
- package/src/i18n/messagebundle_en.properties +1 -0
- package/src/themes/Button.css +1 -0
- package/src/themes/MastheadProfileMenu.css +2 -1
- package/src/themes/Search.css +2 -1
- package/src/themes/TabInOverflow.css +1 -1
- package/src/types/AnalyticsName.ts +6 -0
- package/src/types/EventRibbon.ts +38 -13
- package/dist/assets/messagebundle_en-BK8-Eyic.js +0 -1
package/src/MastheadItem.ts
CHANGED
|
@@ -11,7 +11,7 @@ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
|
11
11
|
import { isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
12
12
|
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
13
13
|
import {
|
|
14
|
-
OPENS_IN_A_NEW_WINDOW, PROFILE, CART, COUNTRY_SELECTOR, SUPPORT,
|
|
14
|
+
OPENS_IN_A_NEW_WINDOW, PROFILE, CART, COUNTRY_SELECTOR, SUPPORT, SEARCH,
|
|
15
15
|
} from "./generated/i18n/i18n-defaults.js";
|
|
16
16
|
import UDExMastheadMenu from "./MastheadMenu.js";
|
|
17
17
|
import type UDExAvatar from "./Avatar.js";
|
|
@@ -21,6 +21,7 @@ import MastheadItemTemplate from "./generated/templates/MastheadItemTemplate.lit
|
|
|
21
21
|
import { UDExTarget } from "./types/common.js";
|
|
22
22
|
import { BreakpointUtils } from "./utils/Breakpoints.js";
|
|
23
23
|
import parseArrayFromString from "./utils/parseArrayFromString.js";
|
|
24
|
+
import AnalyticsName from "./types/AnalyticsName.js";
|
|
24
25
|
|
|
25
26
|
// Styles
|
|
26
27
|
import MastheadItemCss from "./generated/themes/MastheadItem.css.js";
|
|
@@ -58,11 +59,14 @@ export type MenuItem = {
|
|
|
58
59
|
type UDExMastheadItemItemClickEventDetail = {
|
|
59
60
|
originalEvent: PointerEvent,
|
|
60
61
|
item: UDExMastheadItem,
|
|
62
|
+
analyticsName: AnalyticsName,
|
|
63
|
+
sourceNode: HTMLElement,
|
|
61
64
|
}
|
|
62
65
|
|
|
63
66
|
export type UDExMastheadDropdownEventDetail = {
|
|
64
67
|
title: string,
|
|
65
68
|
action: UDExMastheadDropdownItemAction,
|
|
69
|
+
analyticsName: AnalyticsName,
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
/**
|
|
@@ -142,15 +146,6 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
142
146
|
@property({ type: String })
|
|
143
147
|
menuTitle: string = "";
|
|
144
148
|
|
|
145
|
-
/**
|
|
146
|
-
* Defines the text of item.
|
|
147
|
-
*
|
|
148
|
-
* @public
|
|
149
|
-
* @default ""
|
|
150
|
-
*/
|
|
151
|
-
@property({ type: String })
|
|
152
|
-
text: string = "";
|
|
153
|
-
|
|
154
149
|
/**
|
|
155
150
|
* Defines the selected item.
|
|
156
151
|
*
|
|
@@ -264,6 +259,14 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
264
259
|
@property({ type: Boolean })
|
|
265
260
|
_isMobileMode!: boolean;
|
|
266
261
|
|
|
262
|
+
/**
|
|
263
|
+
* Defines the label for analytics
|
|
264
|
+
*
|
|
265
|
+
* @public
|
|
266
|
+
*/
|
|
267
|
+
@property({ type: String })
|
|
268
|
+
label!: string;
|
|
269
|
+
|
|
267
270
|
/**
|
|
268
271
|
* Slot for the dropdown
|
|
269
272
|
*
|
|
@@ -295,6 +298,10 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
295
298
|
}
|
|
296
299
|
}
|
|
297
300
|
|
|
301
|
+
onBeforeRendering(): void {
|
|
302
|
+
this.label = this.eventItemTitle;
|
|
303
|
+
}
|
|
304
|
+
|
|
298
305
|
onAfterRendering(): void {
|
|
299
306
|
this._profileAvatar = this.profileAvatar;
|
|
300
307
|
this._mastheadShell = this.mastheadShell;
|
|
@@ -381,17 +388,19 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
381
388
|
}
|
|
382
389
|
|
|
383
390
|
fireDropdownCloseEvent(title: string, action: UDExMastheadDropdownItemAction): void {
|
|
384
|
-
this.fireDecoratorEvent("dropdown-closed", { title, action });
|
|
391
|
+
this.fireDecoratorEvent("dropdown-closed", { title, action, analyticsName: AnalyticsName.Header });
|
|
385
392
|
}
|
|
386
393
|
|
|
387
394
|
fireDropdownOpenEvent(title: string, action: UDExMastheadDropdownItemAction): void {
|
|
388
|
-
this.fireDecoratorEvent("dropdown-opened", { title, action });
|
|
395
|
+
this.fireDecoratorEvent("dropdown-opened", { title, action, analyticsName: AnalyticsName.Header });
|
|
389
396
|
}
|
|
390
397
|
|
|
391
398
|
fireItemClickEvent(e: PointerEvent): void {
|
|
392
399
|
this.fireDecoratorEvent("item-click", {
|
|
393
400
|
item: this,
|
|
394
401
|
originalEvent: e,
|
|
402
|
+
analyticsName: AnalyticsName.Header,
|
|
403
|
+
sourceNode: e.currentTarget as HTMLElement,
|
|
395
404
|
});
|
|
396
405
|
}
|
|
397
406
|
|
|
@@ -442,7 +451,7 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
442
451
|
|
|
443
452
|
closeDropdown(): void {
|
|
444
453
|
this.selected = false;
|
|
445
|
-
this.fireDropdownCloseEvent(this.eventItemTitle, UDExMastheadDropdownItemAction.Close);
|
|
454
|
+
this.fireDropdownCloseEvent(this.accessibleName || this.eventItemTitle, UDExMastheadDropdownItemAction.Close);
|
|
446
455
|
}
|
|
447
456
|
|
|
448
457
|
getDomElement(selector: string): HTMLElement | undefined | null {
|
|
@@ -532,6 +541,10 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
532
541
|
return this.getAttribute("slot") === "cart";
|
|
533
542
|
}
|
|
534
543
|
|
|
544
|
+
get isSearchBtn(): boolean {
|
|
545
|
+
return this.icon === "search";
|
|
546
|
+
}
|
|
547
|
+
|
|
535
548
|
get isSupportBtn(): boolean {
|
|
536
549
|
return this.getAttribute("slot") === "support";
|
|
537
550
|
}
|
|
@@ -553,22 +566,18 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
553
566
|
}
|
|
554
567
|
|
|
555
568
|
get eventItemTitle(): string {
|
|
556
|
-
if (this.
|
|
557
|
-
return
|
|
569
|
+
if (this.isSearchBtn) {
|
|
570
|
+
return UDExMastheadItem.i18nBundle.getText(SEARCH);
|
|
558
571
|
}
|
|
559
|
-
|
|
560
572
|
if (this.isCartBtn) {
|
|
561
573
|
return UDExMastheadItem.i18nBundle.getText(CART);
|
|
562
574
|
}
|
|
563
|
-
|
|
564
575
|
if (this.isProfileBtn) {
|
|
565
576
|
return UDExMastheadItem.i18nBundle.getText(PROFILE);
|
|
566
577
|
}
|
|
567
|
-
|
|
568
578
|
if (this.isCountrySelectorBtn) {
|
|
569
579
|
return UDExMastheadItem.i18nBundle.getText(COUNTRY_SELECTOR);
|
|
570
580
|
}
|
|
571
|
-
|
|
572
581
|
if (this.isSupportBtn) {
|
|
573
582
|
return UDExMastheadItem.i18nBundle.getText(SUPPORT);
|
|
574
583
|
}
|
package/src/MastheadMenu.hbs
CHANGED
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
{{#*inline "header"}}
|
|
23
23
|
<div class="udex-masthead-menu__header">
|
|
24
24
|
<udex-masthead-menu-item
|
|
25
|
+
part="menu-item"
|
|
26
|
+
exportparts="menu-item"
|
|
25
27
|
id="category-{{categoryId}}"
|
|
26
28
|
@click="{{../../handleMenuItemClick}}"
|
|
27
29
|
url="{{this.url}}"
|
|
@@ -42,11 +44,14 @@
|
|
|
42
44
|
<li>
|
|
43
45
|
{{#if this.url}}
|
|
44
46
|
<udex-masthead-menu-item
|
|
47
|
+
part="menu-item"
|
|
48
|
+
exportparts="menu-item"
|
|
45
49
|
@click="{{../../../handleMenuItemClick}}"
|
|
46
50
|
badge="{{this.badge}}"
|
|
47
51
|
?external-link="{{this.externalLink}}"
|
|
48
52
|
url="{{this.url}}"
|
|
49
|
-
label="{{this.title}}"
|
|
53
|
+
label="{{this.title}}"
|
|
54
|
+
exportparts="badge">
|
|
50
55
|
</udex-masthead-menu-item>
|
|
51
56
|
{{else}}
|
|
52
57
|
<udex-divider class="udex-masthead-menu__item-divider"></udex-divider>
|
package/src/MastheadMenu.ts
CHANGED
|
@@ -12,6 +12,7 @@ import UDExMastheadMenuItem, { UDExItemType } from "./MastheadMenuItem.js";
|
|
|
12
12
|
import UDExDivider from "./Divider.js";
|
|
13
13
|
import MastheadMenuTemplate from "./generated/templates/MastheadMenuTemplate.lit.js";
|
|
14
14
|
import parseArrayFromString from "./utils/parseArrayFromString.js";
|
|
15
|
+
import AnalyticsName from "./types/AnalyticsName.js";
|
|
15
16
|
|
|
16
17
|
// Styles
|
|
17
18
|
import MastheadMenuCss from "./generated/themes/MastheadMenu.css.js";
|
|
@@ -39,6 +40,8 @@ type UDExMastheadMenuMenuItemClickEventDetail = {
|
|
|
39
40
|
category?: string,
|
|
40
41
|
originalEvent: PointerEvent,
|
|
41
42
|
item: UDExMastheadMenuItem,
|
|
43
|
+
analyticsName: AnalyticsName,
|
|
44
|
+
sourceNode: HTMLElement,
|
|
42
45
|
}
|
|
43
46
|
|
|
44
47
|
/**
|
|
@@ -131,6 +134,8 @@ class UDExMastheadMenu extends UI5Element {
|
|
|
131
134
|
if (url?.length) {
|
|
132
135
|
const list = item.closest(".udex-masthead-menu__list") as HTMLElement;
|
|
133
136
|
this.fireDecoratorEvent("menu-item-click", {
|
|
137
|
+
sourceNode: item.shadowRoot?.querySelector(".udex-masthead-menu-item") as HTMLElement,
|
|
138
|
+
analyticsName: AnalyticsName.Header,
|
|
134
139
|
item,
|
|
135
140
|
originalEvent: e,
|
|
136
141
|
...(type !== UDExItemType.Heading && { category: list?.getAttribute("category") || "" }),
|
package/src/MastheadMenuItem.hbs
CHANGED
package/src/MastheadMenuItem.ts
CHANGED
|
@@ -225,8 +225,8 @@ class UDExMastheadMenuItem extends UI5Element {
|
|
|
225
225
|
return this.externalLink ? "new-win-desc" : null;
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
-
get accessibleRoleText(): string
|
|
229
|
-
return this.accessibleRole ? this.accessibleRole :
|
|
228
|
+
get accessibleRoleText(): string {
|
|
229
|
+
return this.accessibleRole ? this.accessibleRole : "menuitem";
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
get partAttr(): string {
|
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
{{>nav-items}}
|
|
11
11
|
{{/if}}
|
|
12
12
|
{{#if _showCategories}}
|
|
13
|
-
<li class="udex-masthead-mobile-menu__list-item" role="
|
|
13
|
+
<li class="udex-masthead-mobile-menu__list-item" role="none">
|
|
14
14
|
{{#if _hideExploreSapBtn}}
|
|
15
15
|
<udex-masthead-menu-item
|
|
16
|
+
part="menu-item"
|
|
16
17
|
class="udex-masthead-mobile-menu__back-item"
|
|
17
18
|
@click="{{handleExploreBackToMenuItems}}"
|
|
18
19
|
label="{{_clickedItem.innerText}}"
|
|
@@ -24,6 +25,7 @@
|
|
|
24
25
|
{{else}}
|
|
25
26
|
{{#if isNotMultipleMode}}
|
|
26
27
|
<udex-masthead-menu-item
|
|
28
|
+
part="menu-item"
|
|
27
29
|
class="udex-masthead-mobile-menu__heading"
|
|
28
30
|
label="{{_clickedItem.innerText}}"
|
|
29
31
|
type="Heading"
|
|
@@ -31,9 +33,11 @@
|
|
|
31
33
|
</udex-masthead-menu-item>
|
|
32
34
|
{{else}}
|
|
33
35
|
<udex-masthead-menu-item
|
|
36
|
+
part="menu-item"
|
|
34
37
|
class="udex-masthead-mobile-menu__back-item"
|
|
35
38
|
@click="{{handleBackToMenuItems}}"
|
|
36
39
|
label="{{_clickedItem.innerText}}"
|
|
40
|
+
aria-has-popup="true"
|
|
37
41
|
type="Button"
|
|
38
42
|
has-border
|
|
39
43
|
icon-start
|
|
@@ -45,12 +49,14 @@
|
|
|
45
49
|
{{>categories}}
|
|
46
50
|
{{/if}}
|
|
47
51
|
{{#if _showCategoryItems}}
|
|
48
|
-
<li class="udex-masthead-mobile-menu__list-item" role="
|
|
52
|
+
<li class="udex-masthead-mobile-menu__list-item" role="none">
|
|
49
53
|
<udex-masthead-menu-item
|
|
54
|
+
part="menu-item"
|
|
50
55
|
class="udex-masthead-mobile-menu__back-item"
|
|
51
56
|
@click="{{handleBackToCategories}}"
|
|
52
57
|
label="{{_category.category}}"
|
|
53
58
|
type="Button"
|
|
59
|
+
aria-has-popup="true"
|
|
54
60
|
has-border
|
|
55
61
|
icon-start
|
|
56
62
|
is-back-to-categories>
|
|
@@ -62,11 +68,13 @@
|
|
|
62
68
|
</div>
|
|
63
69
|
{{#if showExploreBtn}}
|
|
64
70
|
<udex-masthead-menu-item
|
|
71
|
+
part="menu-item"
|
|
65
72
|
class="udex-masthead-mobile-menu__explore-btn"
|
|
66
73
|
id="{{exploreItem._id}}"
|
|
67
74
|
@click="{{handleExploreSapClick}}"
|
|
68
75
|
@keydown="{{handleLeftRightKeys}}"
|
|
69
|
-
accessible-role="button"
|
|
76
|
+
accessible-role-text="button"
|
|
77
|
+
aria-has-popup="true"
|
|
70
78
|
type="Button"
|
|
71
79
|
first-level
|
|
72
80
|
icon-end
|
|
@@ -78,9 +86,10 @@
|
|
|
78
86
|
|
|
79
87
|
{{#*inline "nav-items"}}
|
|
80
88
|
{{#each items}}
|
|
81
|
-
<li class="udex-masthead-mobile-menu__list-item" role="
|
|
89
|
+
<li class="udex-masthead-mobile-menu__list-item" role="none">
|
|
82
90
|
{{#if this.subItems}}
|
|
83
91
|
<udex-masthead-menu-item
|
|
92
|
+
part="menu-item"
|
|
84
93
|
@click="{{../handleMenuItemClick}}"
|
|
85
94
|
label="{{this.innerText}}"
|
|
86
95
|
aria-has-popup="true"
|
|
@@ -92,6 +101,7 @@
|
|
|
92
101
|
</udex-masthead-menu-item>
|
|
93
102
|
{{else}}
|
|
94
103
|
<udex-masthead-menu-item
|
|
104
|
+
part="menu-item"
|
|
95
105
|
@click="{{../handleMobileItemEvent}}"
|
|
96
106
|
url="{{this.href}}"
|
|
97
107
|
label="{{this.innerText}}"
|
|
@@ -105,8 +115,9 @@
|
|
|
105
115
|
|
|
106
116
|
{{#*inline "categories"}}
|
|
107
117
|
{{#if _clickedItem.href}}
|
|
108
|
-
<li class="udex-masthead-mobile-menu__list-item" role="
|
|
118
|
+
<li class="udex-masthead-mobile-menu__list-item" role="none">
|
|
109
119
|
<udex-masthead-menu-item
|
|
120
|
+
part="menu-item"
|
|
110
121
|
url="{{_clickedItem.href}}"
|
|
111
122
|
label="{{overviewLinkText}}"
|
|
112
123
|
@click="{{handleMobileItemEvent}}"
|
|
@@ -116,8 +127,9 @@
|
|
|
116
127
|
{{/if}}
|
|
117
128
|
{{#each _categories}}
|
|
118
129
|
{{#if this.category}}
|
|
119
|
-
<li class="udex-masthead-mobile-menu__list-item" role="
|
|
130
|
+
<li class="udex-masthead-mobile-menu__list-item" role="none">
|
|
120
131
|
<udex-masthead-menu-item
|
|
132
|
+
part="menu-item"
|
|
121
133
|
@click="{{../handleMenuCategoryClick}}"
|
|
122
134
|
url="{{this.url}}"
|
|
123
135
|
id="{{@index}}"
|
|
@@ -131,8 +143,9 @@
|
|
|
131
143
|
</li>
|
|
132
144
|
{{else}}
|
|
133
145
|
{{#each this.items}}
|
|
134
|
-
<li class="udex-masthead-mobile-menu__list-item" role="
|
|
146
|
+
<li class="udex-masthead-mobile-menu__list-item" role="none">
|
|
135
147
|
<udex-masthead-menu-item
|
|
148
|
+
part="menu-item"
|
|
136
149
|
@click="{{../handleMobileItemEvent}}"
|
|
137
150
|
url="{{this.url}}"
|
|
138
151
|
label="{{this.title}}"
|
|
@@ -146,8 +159,9 @@
|
|
|
146
159
|
|
|
147
160
|
{{#*inline "category-items"}}
|
|
148
161
|
{{#if _category.url}}
|
|
149
|
-
<li class="udex-masthead-mobile-menu__list-item" role="
|
|
162
|
+
<li class="udex-masthead-mobile-menu__list-item" role="none">
|
|
150
163
|
<udex-masthead-menu-item
|
|
164
|
+
part="menu-item"
|
|
151
165
|
@click="{{../handleMobileCategoryItemEvent}}"
|
|
152
166
|
url="{{this._category.url}}"
|
|
153
167
|
label="{{overviewLinkText}}"
|
|
@@ -157,8 +171,9 @@
|
|
|
157
171
|
{{/if}}
|
|
158
172
|
{{#each _category.items}}
|
|
159
173
|
{{#if this.url}}
|
|
160
|
-
<li class="udex-masthead-mobile-menu__list-item" role="
|
|
174
|
+
<li class="udex-masthead-mobile-menu__list-item" role="none">
|
|
161
175
|
<udex-masthead-menu-item
|
|
176
|
+
part="menu-item"
|
|
162
177
|
@click="{{../handleMobileCategoryItemEvent}}"
|
|
163
178
|
label="{{this.title}}"
|
|
164
179
|
url="{{this.url}}"
|
|
@@ -13,7 +13,7 @@ import type { MenuItem, SubMenuLinkItem } from "./MastheadItem.js";
|
|
|
13
13
|
import type UDExMastheadItem from "./MastheadItem.js";
|
|
14
14
|
import UDExMastheadMenuItem, { UDExItemType } from "./MastheadMenuItem.js";
|
|
15
15
|
import { OVERVIEW } from "./generated/i18n/i18n-defaults.js";
|
|
16
|
-
|
|
16
|
+
import AnalyticsName from "./types/AnalyticsName.js";
|
|
17
17
|
import MastheadMobileMenuTemplate from "./generated/templates/MastheadMobileMenuTemplate.lit.js";
|
|
18
18
|
|
|
19
19
|
// Styles
|
|
@@ -24,10 +24,14 @@ type UDExMastheadMobileMenuItemClickEventDetail = {
|
|
|
24
24
|
item: UDExMastheadMenuItem,
|
|
25
25
|
category?: string,
|
|
26
26
|
isMobile: boolean,
|
|
27
|
+
analyticsName: AnalyticsName,
|
|
28
|
+
sourceNode: HTMLElement,
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
type UDExMastheadMobileMenuExploreClickEventDetail = {
|
|
30
32
|
originalEvent: PointerEvent | KeyboardEvent,
|
|
33
|
+
analyticsName: AnalyticsName,
|
|
34
|
+
sourceNode: HTMLElement,
|
|
31
35
|
}
|
|
32
36
|
|
|
33
37
|
/**
|
|
@@ -151,7 +155,7 @@ class UDExMastheadMobileMenu extends UI5Element {
|
|
|
151
155
|
e.preventDefault();
|
|
152
156
|
this.openExploreSapMenu(e);
|
|
153
157
|
this.setFocusItemByIndex(0);
|
|
154
|
-
this.
|
|
158
|
+
this.fireExploreSapMobileButton(e);
|
|
155
159
|
}
|
|
156
160
|
|
|
157
161
|
handleBackToMenuItems(e: PointerEvent) {
|
|
@@ -411,14 +415,26 @@ class UDExMastheadMobileMenu extends UI5Element {
|
|
|
411
415
|
}
|
|
412
416
|
|
|
413
417
|
fireMobileItemEvent(e: PointerEvent | KeyboardEvent, category?: string) {
|
|
418
|
+
const item = e.target as UDExMastheadMenuItem;
|
|
419
|
+
|
|
414
420
|
this.fireDecoratorEvent("item-click", {
|
|
415
421
|
isMobile: true,
|
|
416
|
-
item
|
|
422
|
+
item,
|
|
417
423
|
originalEvent: e,
|
|
424
|
+
analyticsName: AnalyticsName.Header,
|
|
425
|
+
sourceNode: item.shadowRoot?.querySelector(".udex-masthead-menu-item") as HTMLElement,
|
|
418
426
|
...(category && { category }),
|
|
419
427
|
});
|
|
420
428
|
}
|
|
421
429
|
|
|
430
|
+
fireExploreSapMobileButton(e: PointerEvent | KeyboardEvent) {
|
|
431
|
+
this.fireDecoratorEvent("explorer-menu-click", {
|
|
432
|
+
originalEvent: e,
|
|
433
|
+
analyticsName: AnalyticsName.Header,
|
|
434
|
+
sourceNode: (e.target as HTMLElement).shadowRoot?.querySelector(".udex-masthead-menu-item") as HTMLElement,
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
|
|
422
438
|
setFocusItemByIndex(index: number) {
|
|
423
439
|
this._shouldFocusItemByIndex = true;
|
|
424
440
|
this._focusedItemIndex = index;
|
|
@@ -11,6 +11,7 @@ import UDExMastheadMenu from "./MastheadMenu.js";
|
|
|
11
11
|
import MastheadProfileMenuTemplate from "./generated/templates/MastheadProfileMenuTemplate.lit.js";
|
|
12
12
|
import type UDExMastheadMenuItem from "./MastheadMenuItem.js";
|
|
13
13
|
import parseArrayFromString from "./utils/parseArrayFromString.js";
|
|
14
|
+
import AnalyticsName from "./types/AnalyticsName.js";
|
|
14
15
|
|
|
15
16
|
// Styles
|
|
16
17
|
import MastheadProfileMenuCss from "./generated/themes/MastheadProfileMenu.css.js";
|
|
@@ -23,13 +24,11 @@ interface UserData {
|
|
|
23
24
|
avatarInitials?: string
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
type UDExMastheadProfileMenuLogoutClickEventDetail = {
|
|
27
|
-
originalEvent: PointerEvent,
|
|
28
|
-
}
|
|
29
|
-
|
|
30
27
|
type UDExMastheadProfileMenuItemClickEventDetail = {
|
|
31
28
|
item: UDExMastheadMenuItem,
|
|
32
29
|
originalEvent: PointerEvent,
|
|
30
|
+
analyticsName: AnalyticsName,
|
|
31
|
+
sourceNode: HTMLElement,
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
/**
|
|
@@ -72,7 +71,7 @@ type UDExMastheadProfileMenuItemClickEventDetail = {
|
|
|
72
71
|
|
|
73
72
|
class UDExMastheadProfileMenu extends UI5Element {
|
|
74
73
|
eventDetails!: {
|
|
75
|
-
"logout":
|
|
74
|
+
"logout": UDExMastheadProfileMenuItemClickEventDetail,
|
|
76
75
|
"profile-item-click": UDExMastheadProfileMenuItemClickEventDetail
|
|
77
76
|
};
|
|
78
77
|
/**
|
|
@@ -122,8 +121,13 @@ class UDExMastheadProfileMenu extends UI5Element {
|
|
|
122
121
|
static i18nBundle: I18nBundle;
|
|
123
122
|
|
|
124
123
|
handleUserLogoutItemClick(e: PointerEvent): void {
|
|
124
|
+
const item = e.target as UDExMastheadMenuItem;
|
|
125
|
+
|
|
125
126
|
this.fireDecoratorEvent("logout", {
|
|
127
|
+
item,
|
|
128
|
+
sourceNode: item.shadowRoot?.querySelector(".udex-masthead-menu-item") as HTMLElement,
|
|
126
129
|
originalEvent: e,
|
|
130
|
+
analyticsName: AnalyticsName.Header,
|
|
127
131
|
});
|
|
128
132
|
}
|
|
129
133
|
|
|
@@ -133,6 +137,8 @@ class UDExMastheadProfileMenu extends UI5Element {
|
|
|
133
137
|
this.fireDecoratorEvent("profile-item-click", {
|
|
134
138
|
item,
|
|
135
139
|
originalEvent,
|
|
140
|
+
analyticsName: AnalyticsName.Header,
|
|
141
|
+
sourceNode: item.shadowRoot.querySelector(".udex-masthead-menu-item") as HTMLElement,
|
|
136
142
|
});
|
|
137
143
|
}
|
|
138
144
|
|
package/src/MastheadShell.hbs
CHANGED
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
class="udex-masthead-shell__close-search-btn"
|
|
40
40
|
size="Small"
|
|
41
41
|
icon="decline"
|
|
42
|
+
part="search-close-button"
|
|
42
43
|
tooltip="{{closeButtonAccessibleName}}"
|
|
43
44
|
accessible-name="{{closeButtonAccessibleName}}"
|
|
44
45
|
@click="{{handleCloseSearch}}">
|
|
@@ -71,6 +72,7 @@
|
|
|
71
72
|
<udex-masthead-item
|
|
72
73
|
class="udex-masthead-shell__search-btn"
|
|
73
74
|
icon="search"
|
|
75
|
+
part="search-button"
|
|
74
76
|
@click="{{handleSearchClick}}"
|
|
75
77
|
accessible-name="search">
|
|
76
78
|
</udex-masthead-item>
|
package/src/MastheadShell.ts
CHANGED
|
@@ -25,6 +25,7 @@ import type UDExMastheadProfileMenu from "./MastheadProfileMenu.js";
|
|
|
25
25
|
import type UDExMastheadCountrySelector from "./MastheadCountrySelector.js";
|
|
26
26
|
import MastheadShellTemplate from "./generated/templates/MastheadShellTemplate.lit.js";
|
|
27
27
|
import { BreakpointUtils } from "./utils/Breakpoints.js";
|
|
28
|
+
import AnalyticsName from "./types/AnalyticsName.js";
|
|
28
29
|
|
|
29
30
|
// Styles
|
|
30
31
|
import MastheadShellCss from "./generated/themes/MastheadShell.css.js";
|
|
@@ -35,6 +36,13 @@ type MastheadItemType = UDExMastheadItem | null | undefined;
|
|
|
35
36
|
|
|
36
37
|
type UDExMastheadShellBaseEventDetail = {
|
|
37
38
|
originalEvent: PointerEvent,
|
|
39
|
+
analyticsName: AnalyticsName,
|
|
40
|
+
sourceNode: HTMLElement,
|
|
41
|
+
item?: UDExMastheadItem,
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
type UDExMastheadShellAnalyticsNameEventDetail = {
|
|
45
|
+
analyticsName: AnalyticsName,
|
|
38
46
|
}
|
|
39
47
|
|
|
40
48
|
/**
|
|
@@ -155,10 +163,10 @@ type UDExMastheadShellBaseEventDetail = {
|
|
|
155
163
|
|
|
156
164
|
class UDExMastheadShell extends UI5Element {
|
|
157
165
|
eventDetails!: {
|
|
158
|
-
"mobile-menu-open":
|
|
159
|
-
"mobile-menu-close":
|
|
160
|
-
"search-opened":
|
|
161
|
-
"search-closed":
|
|
166
|
+
"mobile-menu-open": UDExMastheadShellAnalyticsNameEventDetail,
|
|
167
|
+
"mobile-menu-close": UDExMastheadShellAnalyticsNameEventDetail,
|
|
168
|
+
"search-opened": UDExMastheadShellAnalyticsNameEventDetail,
|
|
169
|
+
"search-closed": UDExMastheadShellAnalyticsNameEventDetail,
|
|
162
170
|
"cart-click": UDExMastheadShellBaseEventDetail,
|
|
163
171
|
"support-click": UDExMastheadShellBaseEventDetail,
|
|
164
172
|
"profile-click": UDExMastheadShellBaseEventDetail,
|
|
@@ -498,37 +506,37 @@ class UDExMastheadShell extends UI5Element {
|
|
|
498
506
|
}
|
|
499
507
|
|
|
500
508
|
handleLogoClick(e: PointerEvent): void {
|
|
501
|
-
this.
|
|
509
|
+
this.fireMastheadEvent("logo-click", e);
|
|
502
510
|
}
|
|
503
511
|
|
|
504
512
|
handleSiteLabelClick(e: PointerEvent): void {
|
|
505
|
-
this.
|
|
513
|
+
this.fireMastheadEvent("site-label-click", e);
|
|
506
514
|
}
|
|
507
515
|
|
|
508
516
|
handleSearchClick(e: PointerEvent): void {
|
|
509
517
|
e.stopPropagation();
|
|
510
|
-
this.
|
|
518
|
+
this.fireMastheadEvent("search-click", e);
|
|
511
519
|
this.openSearch();
|
|
512
520
|
}
|
|
513
521
|
|
|
514
522
|
handleCartClick(e: PointerEvent): void {
|
|
515
523
|
e.stopPropagation();
|
|
516
|
-
this.
|
|
524
|
+
this.fireMastheadEvent("cart-click", e);
|
|
517
525
|
}
|
|
518
526
|
|
|
519
527
|
handleProfileClick(e: PointerEvent): void {
|
|
520
528
|
e.stopPropagation();
|
|
521
|
-
this.
|
|
529
|
+
this.fireMastheadEvent("profile-click", e);
|
|
522
530
|
}
|
|
523
531
|
|
|
524
532
|
handleSupportClick(e: PointerEvent): void {
|
|
525
533
|
e.stopPropagation();
|
|
526
|
-
this.
|
|
534
|
+
this.fireMastheadEvent("support-click", e);
|
|
527
535
|
}
|
|
528
536
|
|
|
529
537
|
handleCountrySelectorClick(e: PointerEvent): void {
|
|
530
538
|
e.stopPropagation();
|
|
531
|
-
this.
|
|
539
|
+
this.fireMastheadEvent("country-selector-click", e);
|
|
532
540
|
}
|
|
533
541
|
|
|
534
542
|
handleOpenMobileMenu(): void {
|
|
@@ -549,7 +557,7 @@ class UDExMastheadShell extends UI5Element {
|
|
|
549
557
|
|
|
550
558
|
handleCloseSearch(e: PointerEvent): void {
|
|
551
559
|
this._closeBtnClicked = true;
|
|
552
|
-
this.
|
|
560
|
+
this.fireMastheadEvent("search-close-click", e);
|
|
553
561
|
this.closeSearch();
|
|
554
562
|
}
|
|
555
563
|
|
|
@@ -736,13 +744,22 @@ class UDExMastheadShell extends UI5Element {
|
|
|
736
744
|
});
|
|
737
745
|
}
|
|
738
746
|
|
|
747
|
+
fireMastheadEvent(eventName: keyof this["eventDetails"], e?: PointerEvent): void {
|
|
748
|
+
const eventDetails = {
|
|
749
|
+
analyticsName: AnalyticsName.Header,
|
|
750
|
+
...(e && { originalEvent: e }),
|
|
751
|
+
...(e && { sourceNode: e.currentTarget as HTMLElement }),
|
|
752
|
+
} as this["eventDetails"][typeof eventName];
|
|
753
|
+
this.fireDecoratorEvent(eventName, eventDetails);
|
|
754
|
+
}
|
|
755
|
+
|
|
739
756
|
/**
|
|
740
757
|
* Close the search panel.
|
|
741
758
|
* @public
|
|
742
759
|
*/
|
|
743
760
|
closeSearch(): void {
|
|
744
761
|
this._isSearchOpened = false;
|
|
745
|
-
this.
|
|
762
|
+
this.fireMastheadEvent("search-closed");
|
|
746
763
|
}
|
|
747
764
|
|
|
748
765
|
/**
|
|
@@ -766,7 +783,7 @@ class UDExMastheadShell extends UI5Element {
|
|
|
766
783
|
this._searchOpener.selected = false;
|
|
767
784
|
}
|
|
768
785
|
|
|
769
|
-
this.
|
|
786
|
+
this.fireMastheadEvent("search-opened");
|
|
770
787
|
}
|
|
771
788
|
|
|
772
789
|
/**
|