@sapudex/web-components 2.3.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/.eslintignore +3 -0
- package/bundle.esm.js +2 -0
- package/cypress/fixtures/contact-numbers.ts +10 -0
- package/cypress/specs/Accordion.cy.tsx +24 -0
- package/cypress/specs/Contact.cy.tsx +92 -0
- package/cypress/specs/ContactItem.cy.tsx +56 -0
- package/cypress/support/commands.ts +31 -2
- package/cypress/support/component-imports.instrumented.ts +4 -0
- package/cypress/support/component-imports.src.ts +4 -0
- package/dist/Accordion.d.ts +7 -1
- package/dist/Accordion.js +3 -3
- package/dist/Accordion.js.map +1 -1
- package/dist/Assets.js +31 -0
- package/dist/Assets.js.map +1 -1
- package/dist/AssetsVariables.js +6 -1
- package/dist/AssetsVariables.js.map +1 -1
- package/dist/Contact.d.ts +102 -0
- package/dist/Contact.js +152 -0
- package/dist/Contact.js.map +1 -0
- package/dist/ContactItem.d.ts +67 -0
- package/dist/ContactItem.js +96 -0
- package/dist/ContactItem.js.map +1 -0
- package/dist/ContactItemTemplate.d.ts +2 -0
- package/dist/ContactItemTemplate.js +13 -0
- package/dist/ContactItemTemplate.js.map +1 -0
- package/dist/ContactTemplate.d.ts +4 -0
- package/dist/ContactTemplate.js +29 -0
- package/dist/ContactTemplate.js.map +1 -0
- package/dist/CountrySelector.d.ts +0 -2
- package/dist/CountrySelector.js +0 -4
- package/dist/CountrySelector.js.map +1 -1
- package/dist/Footer.d.ts +0 -1
- package/dist/Footer.js +7 -9
- package/dist/Footer.js.map +1 -1
- package/dist/List.d.ts +1 -1
- package/dist/List.js +1 -1
- package/dist/List.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 +13 -10
- package/dist/MastheadItem.js +24 -27
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadMenu.d.ts +3 -1
- package/dist/MastheadMenu.js +5 -4
- 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 -5
- package/dist/MastheadProfileMenu.js +9 -4
- 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/SearchableListBase.js +5 -1
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SecondaryNavigation.d.ts +0 -1
- package/dist/SecondaryNavigation.js +2 -4
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/assets/{InputSuggestions-BgbbJ4tc.js → InputSuggestions-B7dpC1q9.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-onAnn1Tj.js → ListItemStandardExpandableTextTemplate-BF6mHEec.js} +1 -1
- package/dist/assets/{bundle.esm-CwUfibNQ.js → bundle.esm-BFePNrxi.js} +241 -231
- package/dist/assets/messagebundle_en-DXEe5nWA.js +1 -0
- package/dist/css/themes/Accordion.css +1 -1
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/Contact.css +1 -0
- package/dist/css/themes/ContactItem.css +1 -0
- package/dist/css/themes/MastheadProfileMenu.css +1 -1
- package/dist/css/themes/Modal.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 +416 -21
- package/dist/custom-elements.json +393 -21
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +4 -1
- package/dist/generated/i18n/i18n-defaults.js +4 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/templates/AccordionTemplate.lit.js +4 -2
- package/dist/generated/templates/AccordionTemplate.lit.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/MastheadItemTemplate.lit.js +25 -22
- package/dist/generated/templates/MastheadItemTemplate.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/Accordion.css.d.ts +1 -1
- package/dist/generated/themes/Accordion.css.js +1 -1
- package/dist/generated/themes/Accordion.css.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/Contact.css.d.ts +2 -0
- package/dist/generated/themes/Contact.css.js +8 -0
- package/dist/generated/themes/Contact.css.js.map +1 -0
- package/dist/generated/themes/ContactItem.css.d.ts +2 -0
- package/dist/generated/themes/ContactItem.css.js +8 -0
- package/dist/generated/themes/ContactItem.css.js.map +1 -0
- 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/Modal.css.d.ts +1 -1
- package/dist/generated/themes/Modal.css.js +1 -1
- package/dist/generated/themes/Modal.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 +8 -0
- package/dist/messagebundle_en.properties +4 -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/ContactItemIcon.d.ts +6 -0
- package/dist/types/ContactItemIcon.js +8 -0
- package/dist/types/ContactItemIcon.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/utils/parseArrayFromString.d.ts +2 -0
- package/dist/utils/parseArrayFromString.js +5 -0
- package/dist/utils/parseArrayFromString.js.map +1 -0
- package/dist/vscode.html-custom-data.json +90 -26
- package/dist/web-types.json +184 -16
- package/package.json +2 -2
- package/src/Accordion.hbs +13 -9
- package/src/Accordion.ts +7 -4
- package/src/Assets.ts +29 -0
- package/src/AssetsVariables.ts +6 -1
- package/src/Contact.ts +200 -0
- package/src/ContactItem.ts +119 -0
- package/src/ContactItemTemplate.tsx +22 -0
- package/src/ContactTemplate.tsx +105 -0
- package/src/CountrySelector.ts +0 -5
- package/src/Footer.ts +7 -10
- package/src/List.ts +1 -1
- package/src/MastheadCountrySelector.hbs +3 -0
- package/src/MastheadCountrySelector.ts +13 -3
- package/src/MastheadItem.hbs +8 -0
- package/src/MastheadItem.ts +36 -35
- package/src/MastheadMenu.hbs +6 -1
- package/src/MastheadMenu.ts +7 -5
- 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 +13 -10
- package/src/MastheadShell.hbs +2 -0
- package/src/MastheadShell.ts +31 -14
- package/src/MessageStripTemplate.tsx +1 -0
- package/src/SearchableListBase.ts +6 -1
- package/src/SecondaryNavigation.ts +3 -5
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/AccordionTemplate.lit.ts +4 -2
- package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +3 -3
- package/src/generated/templates/MastheadItemTemplate.lit.ts +25 -22
- 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/Accordion.css.ts +1 -1
- package/src/generated/themes/Button.css.ts +1 -1
- package/src/generated/themes/Contact.css.ts +9 -0
- package/src/generated/themes/ContactItem.css.ts +9 -0
- package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
- package/src/generated/themes/Modal.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 +8 -0
- package/src/i18n/messagebundle_en.properties +4 -0
- package/src/themes/Accordion.css +1 -0
- package/src/themes/Button.css +8 -1
- package/src/themes/Contact.css +184 -0
- package/src/themes/ContactItem.css +44 -0
- package/src/themes/MastheadProfileMenu.css +2 -1
- package/src/themes/Modal.css +4 -4
- package/src/themes/Search.css +2 -1
- package/src/themes/TabInOverflow.css +1 -1
- package/src/types/AnalyticsName.ts +6 -0
- package/src/types/ContactItemIcon.ts +7 -0
- package/src/types/EventRibbon.ts +38 -13
- package/src/utils/parseArrayFromString.ts +5 -0
- package/dist/assets/messagebundle_en-CVKgy_9L.js +0 -1
package/dist/MastheadItem.js
CHANGED
|
@@ -16,12 +16,14 @@ import "@ui5/webcomponents-icons/dist/search.js";
|
|
|
16
16
|
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
17
17
|
import { isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
18
18
|
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
19
|
-
import { OPENS_IN_A_NEW_WINDOW, PROFILE, CART, COUNTRY_SELECTOR, SUPPORT, } from "./generated/i18n/i18n-defaults.js";
|
|
19
|
+
import { OPENS_IN_A_NEW_WINDOW, PROFILE, CART, COUNTRY_SELECTOR, SUPPORT, SEARCH, } from "./generated/i18n/i18n-defaults.js";
|
|
20
20
|
import UDExMastheadMenu from "./MastheadMenu.js";
|
|
21
21
|
import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
|
|
22
22
|
import MastheadItemTemplate from "./generated/templates/MastheadItemTemplate.lit.js";
|
|
23
23
|
import { UDExTarget } from "./types/common.js";
|
|
24
24
|
import { BreakpointUtils } from "./utils/Breakpoints.js";
|
|
25
|
+
import parseArrayFromString from "./utils/parseArrayFromString.js";
|
|
26
|
+
import AnalyticsName from "./types/AnalyticsName.js";
|
|
25
27
|
// Styles
|
|
26
28
|
import MastheadItemCss from "./generated/themes/MastheadItem.css.js";
|
|
27
29
|
export var UDExMastheadDropdownItemAction;
|
|
@@ -64,13 +66,6 @@ let UDExMastheadItem = UDExMastheadItem_1 = class UDExMastheadItem extends UI5El
|
|
|
64
66
|
* @public
|
|
65
67
|
*/
|
|
66
68
|
this.menuTitle = "";
|
|
67
|
-
/**
|
|
68
|
-
* Defines the text of item.
|
|
69
|
-
*
|
|
70
|
-
* @public
|
|
71
|
-
* @default ""
|
|
72
|
-
*/
|
|
73
|
-
this.text = "";
|
|
74
69
|
/**
|
|
75
70
|
* Defines the icon in the item.
|
|
76
71
|
*
|
|
@@ -97,6 +92,9 @@ let UDExMastheadItem = UDExMastheadItem_1 = class UDExMastheadItem extends UI5El
|
|
|
97
92
|
this.setAttribute("desktop", "");
|
|
98
93
|
}
|
|
99
94
|
}
|
|
95
|
+
onBeforeRendering() {
|
|
96
|
+
this.label = this.eventItemTitle;
|
|
97
|
+
}
|
|
100
98
|
onAfterRendering() {
|
|
101
99
|
this._profileAvatar = this.profileAvatar;
|
|
102
100
|
this._mastheadShell = this.mastheadShell;
|
|
@@ -174,15 +172,17 @@ let UDExMastheadItem = UDExMastheadItem_1 = class UDExMastheadItem extends UI5El
|
|
|
174
172
|
}
|
|
175
173
|
}
|
|
176
174
|
fireDropdownCloseEvent(title, action) {
|
|
177
|
-
this.fireDecoratorEvent("dropdown-closed", { title, action });
|
|
175
|
+
this.fireDecoratorEvent("dropdown-closed", { title, action, analyticsName: AnalyticsName.Header });
|
|
178
176
|
}
|
|
179
177
|
fireDropdownOpenEvent(title, action) {
|
|
180
|
-
this.fireDecoratorEvent("dropdown-opened", { title, action });
|
|
178
|
+
this.fireDecoratorEvent("dropdown-opened", { title, action, analyticsName: AnalyticsName.Header });
|
|
181
179
|
}
|
|
182
180
|
fireItemClickEvent(e) {
|
|
183
181
|
this.fireDecoratorEvent("item-click", {
|
|
184
182
|
item: this,
|
|
185
183
|
originalEvent: e,
|
|
184
|
+
analyticsName: AnalyticsName.Header,
|
|
185
|
+
sourceNode: e.currentTarget,
|
|
186
186
|
});
|
|
187
187
|
}
|
|
188
188
|
setDropdownInsetStart() {
|
|
@@ -224,16 +224,13 @@ let UDExMastheadItem = UDExMastheadItem_1 = class UDExMastheadItem extends UI5El
|
|
|
224
224
|
}
|
|
225
225
|
closeDropdown() {
|
|
226
226
|
this.selected = false;
|
|
227
|
-
this.fireDropdownCloseEvent(this.eventItemTitle, UDExMastheadDropdownItemAction.Close);
|
|
227
|
+
this.fireDropdownCloseEvent(this.accessibleName || this.eventItemTitle, UDExMastheadDropdownItemAction.Close);
|
|
228
228
|
}
|
|
229
229
|
getDomElement(selector) {
|
|
230
230
|
return this.shadowRoot?.querySelector(`${selector}`);
|
|
231
231
|
}
|
|
232
|
-
parseArrayFromString(string) {
|
|
233
|
-
return string ? JSON.parse(string) : [];
|
|
234
|
-
}
|
|
235
232
|
getSubItems() {
|
|
236
|
-
return
|
|
233
|
+
return parseArrayFromString(this.subItems);
|
|
237
234
|
}
|
|
238
235
|
get mastheadShell() {
|
|
239
236
|
return document.querySelector("[udex-masthead-shell]");
|
|
@@ -266,16 +263,13 @@ let UDExMastheadItem = UDExMastheadItem_1 = class UDExMastheadItem extends UI5El
|
|
|
266
263
|
}
|
|
267
264
|
get ariaDescribedBy() {
|
|
268
265
|
const labels = [];
|
|
269
|
-
if (this.text) {
|
|
270
|
-
labels.push(`${this.__id}-text`);
|
|
271
|
-
}
|
|
272
|
-
if (this.icon) {
|
|
273
|
-
labels.push(`${this.__id}-icon`);
|
|
274
|
-
}
|
|
275
266
|
if (this.isTargetBlank) {
|
|
276
267
|
labels.push(`new-win-desc`);
|
|
277
268
|
}
|
|
278
|
-
|
|
269
|
+
if (this.imageAlt) {
|
|
270
|
+
labels.push(`image-desc`);
|
|
271
|
+
}
|
|
272
|
+
return labels.length ? labels.join(" ").trim() : undefined;
|
|
279
273
|
}
|
|
280
274
|
get isDropdownOpened() {
|
|
281
275
|
return this.hasDropdownSlot && this.selected;
|
|
@@ -298,6 +292,9 @@ let UDExMastheadItem = UDExMastheadItem_1 = class UDExMastheadItem extends UI5El
|
|
|
298
292
|
get isCartBtn() {
|
|
299
293
|
return this.getAttribute("slot") === "cart";
|
|
300
294
|
}
|
|
295
|
+
get isSearchBtn() {
|
|
296
|
+
return this.icon === "search";
|
|
297
|
+
}
|
|
301
298
|
get isSupportBtn() {
|
|
302
299
|
return this.getAttribute("slot") === "support";
|
|
303
300
|
}
|
|
@@ -314,8 +311,8 @@ let UDExMastheadItem = UDExMastheadItem_1 = class UDExMastheadItem extends UI5El
|
|
|
314
311
|
return UDExMastheadItem_1.i18nBundle.getText(OPENS_IN_A_NEW_WINDOW);
|
|
315
312
|
}
|
|
316
313
|
get eventItemTitle() {
|
|
317
|
-
if (this.
|
|
318
|
-
return
|
|
314
|
+
if (this.isSearchBtn) {
|
|
315
|
+
return UDExMastheadItem_1.i18nBundle.getText(SEARCH);
|
|
319
316
|
}
|
|
320
317
|
if (this.isCartBtn) {
|
|
321
318
|
return UDExMastheadItem_1.i18nBundle.getText(CART);
|
|
@@ -338,9 +335,6 @@ __decorate([
|
|
|
338
335
|
__decorate([
|
|
339
336
|
property({ type: String })
|
|
340
337
|
], UDExMastheadItem.prototype, "menuTitle", void 0);
|
|
341
|
-
__decorate([
|
|
342
|
-
property({ type: String })
|
|
343
|
-
], UDExMastheadItem.prototype, "text", void 0);
|
|
344
338
|
__decorate([
|
|
345
339
|
property({ type: Boolean })
|
|
346
340
|
], UDExMastheadItem.prototype, "selected", void 0);
|
|
@@ -380,6 +374,9 @@ __decorate([
|
|
|
380
374
|
__decorate([
|
|
381
375
|
property({ type: Boolean })
|
|
382
376
|
], UDExMastheadItem.prototype, "_isMobileMode", void 0);
|
|
377
|
+
__decorate([
|
|
378
|
+
property({ type: String })
|
|
379
|
+
], UDExMastheadItem.prototype, "label", void 0);
|
|
383
380
|
__decorate([
|
|
384
381
|
slot({ type: HTMLElement })
|
|
385
382
|
], UDExMastheadItem.prototype, "dropdown", void 0);
|
package/dist/MastheadItem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MastheadItem.js","sourceRoot":"","sources":["../src/MastheadItem.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/search.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { isEscape } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport {\n OPENS_IN_A_NEW_WINDOW, PROFILE, CART, COUNTRY_SELECTOR, SUPPORT,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport UDExMastheadMenu from \"./MastheadMenu.js\";\nimport type UDExAvatar from \"./Avatar.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport type UDExMastheadShell from \"./MastheadShell.js\";\nimport MastheadItemTemplate from \"./generated/templates/MastheadItemTemplate.lit.js\";\nimport { UDExTarget } from \"./types/common.js\";\nimport { BreakpointUtils } from \"./utils/Breakpoints.js\";\n\n// Styles\nimport MastheadItemCss from \"./generated/themes/MastheadItem.css.js\";\n\nexport enum UDExMastheadDropdownItemAction {\n Open = \"Open\",\n Close = \"Close\",\n ClickOutside = \"Click Outside\",\n}\n\nexport interface IMastheadItem {\n text?: string;\n selected?: boolean;\n icon?: string;\n avatar?: Array<HTMLElement>;\n href?: string;\n}\n\nexport type CategoryItem = {\n title: string;\n url: string;\n externalLink: boolean;\n};\n\nexport type SubMenuLinkItem = {\n category: string;\n url?: string;\n items: CategoryItem[];\n index: number;\n};\n\nexport type MenuItem = {\n subMenuLinkItems: SubMenuLinkItem[];\n};\n\ntype UDExMastheadItemItemClickEventDetail = {\n originalEvent: PointerEvent,\n item: UDExMastheadItem,\n}\n\nexport type UDExMastheadDropdownEventDetail = {\n title: string,\n action: UDExMastheadDropdownItemAction,\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-masthead-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/MastheadItem.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-masthead-item\",\n renderer: litRender,\n languageAware: true,\n styles: MastheadItemCss,\n template: MastheadItemTemplate,\n dependencies: [\n UDExMastheadMenu,\n UI5Icon,\n ],\n})\n\n/**\n * Fires when item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"item-click\", { bubbles: true })\n\n/**\n * Fires when dropdown is closed\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"dropdown-closed\", { bubbles: true })\n\n/**\n * Fires when dropdown is opened\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"dropdown-opened\", { bubbles: true })\n\nclass UDExMastheadItem extends UI5Element implements IMastheadItem {\n eventDetails!: {\n \"item-click\": UDExMastheadItemItemClickEventDetail,\n \"dropdown-closed\": UDExMastheadDropdownEventDetail,\n \"dropdown-opened\": UDExMastheadDropdownEventDetail,\n };\n /**\n * Defines sub items for item\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n subItems: string = \"\";\n\n /**\n * Defines a title for sub menu items\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n menuTitle: string = \"\";\n\n /**\n * Defines the text of item.\n *\n * @public\n * @default \"\"\n */\n @property({ type: String })\n text: string = \"\";\n\n /**\n * Defines the selected item.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n selected!: boolean;\n\n /**\n * Defines if the arrow icon is hidden.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n hideArrowIcon!: boolean;\n\n /**\n * Defines the icon in the item.\n *\n * @public\n * @default \"\"\n */\n @property({ type: String })\n icon: string = \"\";\n\n /**\n * Defines the image in the item.\n *\n * @public\n * @default \"\"\n */\n @property({ type: String })\n image!: string;\n\n /**\n * Defines an alt text for item image\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n imageAlt!: string;\n\n /**\n * Defines the href of the item.\n *\n * @public\n */\n @property({ type: String })\n href!: string;\n\n /**\n * Define the target of the item\n * <b>Note:</b> Standard hyperlink behavior is supported.\n * @public\n */\n @property()\n target: UDExTarget = UDExTarget._self;\n\n /**\n * Controls the ARIA name of the item\n *\n * @default undefined\n * @public\n */\n @property({ type: String })\n accessibleName?: string;\n\n /**\n * Controls the ARIA role of the item\n *\n * @default undefined\n * @public\n */\n @property({ type: String })\n accessibleRole?: string;\n\n /**\n * Defines an alt text for item icon\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n iconAlt: string = \"\";\n\n /**\n * Hide active border for item\n *\n * @default \"\"\n * @public\n */\n @property({ type: Boolean })\n hideActiveBorder!: boolean;\n\n /**\n * Defines direction of the text.\n *\n * @private\n */\n @property({ type: String })\n _direction!: string;\n\n /**\n * Defines the mobile mode for component\n *\n * @private\n */\n @property({ type: Boolean })\n _isMobileMode!: boolean;\n\n /**\n * Slot for the dropdown\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement })\n dropdown?: Array<HTMLElement>;\n\n /**\n * Slot for any content\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true })\n content?: Array<HTMLElement>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _profileAvatar!: UDExAvatar;\n _mastheadShell!: UDExMastheadShell;\n _isEscPress!: boolean;\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n onAfterRendering(): void {\n this._profileAvatar = this.profileAvatar;\n this._mastheadShell = this.mastheadShell;\n this.handleDirection();\n if (this.selected && this.hasDropdownSlot && !this.isMobile && !this.isExploreBtn) {\n this.setDropdownInsetStart();\n }\n\n this.handleOutsideClick();\n this._isEscPress = false;\n }\n\n handleOutsideClick(): void {\n document.addEventListener(\"click\", (e: Event) => {\n const target = e.target as HTMLElement;\n const item = target.closest(\"[udex-masthead-item]\");\n if (item !== this && !this.isMobile) {\n if (this.isDropdownOpened) {\n this.fireDropdownCloseEvent(this.eventItemTitle, UDExMastheadDropdownItemAction.ClickOutside);\n }\n\n this.selected = false;\n }\n });\n }\n\n handleFocusout(e: FocusEvent): void {\n if (e.relatedTarget === null || this._isEscPress) {\n return;\n }\n\n const eTarget = e.target as HTMLElement;\n if (!this.isMobile && eTarget.getAttribute(\"slot\") === \"dropdown\") {\n this.closeDropdown();\n }\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n if (isEscape(e) && this.hasDropdownSlot) {\n if (this.isMobile) {\n this.handleKeyEscapeMobile();\n } else {\n this.handleKeyEscape();\n }\n }\n }\n\n handleKeyEscape(): void {\n this._isEscPress = true;\n this.closeDropdown();\n if (this.isProfileBtn) {\n this._profileAvatar.focus();\n } else {\n this.focus();\n }\n }\n\n handleKeyEscapeMobile(): void {\n this.fireDropdownCloseEvent(this.eventItemTitle, UDExMastheadDropdownItemAction.Close);\n this._mastheadShell.closeMobileMenu();\n this._mastheadShell.mobileBtn?.focus();\n }\n\n handleItemClick(e: PointerEvent): void {\n this.handleSelectedChange();\n this.fireItemClickEvent(e);\n this.fireDropdownEvents();\n }\n\n handleSelectedChange(): void {\n this.selected = this.isMobile ? true : !this.selected;\n }\n\n fireDropdownEvents(): void {\n if (this.hasDropdownSlot) {\n const { Open, Close } = UDExMastheadDropdownItemAction;\n const action = this.selected ? Open : Close;\n if (this.selected) {\n this.fireDropdownOpenEvent(this.eventItemTitle, action);\n } else {\n this.fireDropdownCloseEvent(this.eventItemTitle, action);\n }\n }\n }\n\n fireDropdownCloseEvent(title: string, action: UDExMastheadDropdownItemAction): void {\n this.fireDecoratorEvent(\"dropdown-closed\", { title, action });\n }\n\n fireDropdownOpenEvent(title: string, action: UDExMastheadDropdownItemAction): void {\n this.fireDecoratorEvent(\"dropdown-opened\", { title, action });\n }\n\n fireItemClickEvent(e: PointerEvent): void {\n this.fireDecoratorEvent(\"item-click\", {\n item: this,\n originalEvent: e,\n });\n }\n\n setDropdownInsetStart(): void {\n const dropdown = this.getDomElement(\".udex-masthead-item__dropdown\");\n if (dropdown) {\n const rect = dropdown.getBoundingClientRect();\n const marginInlineStart = this.calculateMarginInlineStart(rect);\n\n if (marginInlineStart !== null) {\n dropdown.style.marginInlineStart = `${marginInlineStart - 3}px`;\n }\n }\n }\n\n calculateMarginInlineStart(rect: DOMRect): number | null {\n const { left, right } = rect;\n\n if (this.isLtrDirection && left < 0) {\n return left * -1 + 15;\n }\n\n if (this.isRtlDirection && left < 0) {\n return left - 15;\n }\n\n if (this.isRtlDirection && right > window.innerWidth) {\n return right - window.innerWidth + 15;\n }\n\n if (this.isLtrDirection && right > window.innerWidth) {\n return window.innerWidth - right - 15;\n }\n\n return null;\n }\n\n handleDirection(): void {\n const directionStyles = window\n .getComputedStyle(this)\n .getPropertyValue(\"direction\");\n if (!directionStyles) {\n this._direction = \"ltr\";\n } else {\n this._direction = directionStyles;\n }\n }\n\n closeDropdown(): void {\n this.selected = false;\n this.fireDropdownCloseEvent(this.eventItemTitle, UDExMastheadDropdownItemAction.Close);\n }\n\n getDomElement(selector: string): HTMLElement | undefined | null {\n return this.shadowRoot?.querySelector(`${selector}`);\n }\n\n parseArrayFromString<T>(string: string): T[] {\n return string ? JSON.parse(string) as T[] : [];\n }\n\n getSubItems(): Array<MenuItem> {\n return this.parseArrayFromString(this.subItems);\n }\n\n get mastheadShell(): UDExMastheadShell {\n return document.querySelector<UDExMastheadShell>(\"[udex-masthead-shell]\")!;\n }\n\n get additionalClass(): string {\n const iconClass = (this.icon || this.image) ? \"udex-masthead-item__button--icon\" : \"\";\n const profileClass = this.isProfileBtn ? \"udex-masthead-item__button--profile\" : \"\";\n const exploreClass = this.isExploreBtn ? \"udex-masthead-item__button--explore\" : \"\";\n const supportClass = this.isSupportBtn ? \"udex-masthead-item__button--support\" : \"\";\n const countrySelectorClass = this.isCountrySelectorBtn ? \"udex-masthead-item__button--country-selector\" : \"\";\n return `udex-masthead-item ${iconClass} ${profileClass} ${exploreClass} ${countrySelectorClass} ${supportClass}`.trim();\n }\n\n get profileAvatar(): UDExAvatar {\n return this.querySelector(\"[udex-avatar]\")!;\n }\n\n get isRtlDirection(): boolean {\n return this._direction === \"rtl\";\n }\n\n get isLtrDirection(): boolean {\n return this._direction === \"ltr\";\n }\n\n get hasHref(): boolean {\n return !!this.href?.length;\n }\n\n get accessibleRoleName(): string {\n return this.accessibleRole ? this.accessibleRole : \"button\";\n }\n\n get selectedClass(): string {\n return this.selected ? \" udex-masthead-item__button--active\" : \"\";\n }\n\n get ariaDescribedBy(): string {\n const labels = [];\n\n if (this.text) {\n labels.push(`${this.__id}-text`);\n }\n\n if (this.icon) {\n labels.push(`${this.__id}-icon`);\n }\n\n if (this.isTargetBlank) {\n labels.push(`new-win-desc`);\n }\n\n return labels.join(\" \").trim();\n }\n\n get isDropdownOpened(): boolean {\n return this.hasDropdownSlot && this.selected;\n }\n\n get hasDropdownSlot(): boolean {\n return !!this.getSlottedNodes(\"dropdown\").length;\n }\n\n get hasArrowDown(): boolean {\n return this.hasDropdownSlot && !this.isProfileBtn && !this.icon.length && !this.hideArrowIcon;\n }\n\n get isProfileBtn(): boolean {\n return this.getAttribute(\"slot\") === \"profile\";\n }\n\n get isExploreBtn(): boolean {\n return this.getAttribute(\"slot\") === \"exploreSAP\";\n }\n\n get isCountrySelectorBtn(): boolean {\n return this.getAttribute(\"slot\") === \"countrySelector\";\n }\n\n get isCartBtn(): boolean {\n return this.getAttribute(\"slot\") === \"cart\";\n }\n\n get isSupportBtn(): boolean {\n return this.getAttribute(\"slot\") === \"support\";\n }\n\n get accessibleLabel(): string {\n return this.accessibleName || this.innerText || (this.isProfileBtn ? UDExMastheadItem.i18nBundle.getText(PROFILE) : \"\");\n }\n\n get isMobile(): boolean {\n return BreakpointUtils.isAtMost(\"M\") || this.mastheadShell?._isMobileMode;\n }\n\n get isTargetBlank(): boolean {\n return this.target === UDExTarget._blank;\n }\n\n get openInNewWindowText(): string {\n return UDExMastheadItem.i18nBundle.getText(OPENS_IN_A_NEW_WINDOW);\n }\n\n get eventItemTitle(): string {\n if (this.accessibleName) {\n return this.accessibleName.trim();\n }\n\n if (this.isCartBtn) {\n return UDExMastheadItem.i18nBundle.getText(CART);\n }\n\n if (this.isProfileBtn) {\n return UDExMastheadItem.i18nBundle.getText(PROFILE);\n }\n\n if (this.isCountrySelectorBtn) {\n return UDExMastheadItem.i18nBundle.getText(COUNTRY_SELECTOR);\n }\n\n if (this.isSupportBtn) {\n return UDExMastheadItem.i18nBundle.getText(SUPPORT);\n }\n\n return this.firstChild?.nodeValue?.trim() || \"\";\n }\n}\n\nUDExMastheadItem.define();\n\nexport default UDExMastheadItem;\n"]}
|
|
1
|
+
{"version":3,"file":"MastheadItem.js","sourceRoot":"","sources":["../src/MastheadItem.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/search.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { isEscape } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport {\n OPENS_IN_A_NEW_WINDOW, PROFILE, CART, COUNTRY_SELECTOR, SUPPORT, SEARCH,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport UDExMastheadMenu from \"./MastheadMenu.js\";\nimport type UDExAvatar from \"./Avatar.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport type UDExMastheadShell from \"./MastheadShell.js\";\nimport MastheadItemTemplate from \"./generated/templates/MastheadItemTemplate.lit.js\";\nimport { UDExTarget } from \"./types/common.js\";\nimport { BreakpointUtils } from \"./utils/Breakpoints.js\";\nimport parseArrayFromString from \"./utils/parseArrayFromString.js\";\nimport AnalyticsName from \"./types/AnalyticsName.js\";\n\n// Styles\nimport MastheadItemCss from \"./generated/themes/MastheadItem.css.js\";\n\nexport enum UDExMastheadDropdownItemAction {\n Open = \"Open\",\n Close = \"Close\",\n ClickOutside = \"Click Outside\",\n}\n\nexport interface IMastheadItem {\n selected?: boolean;\n icon?: string;\n avatar?: Array<HTMLElement>;\n href?: string;\n}\n\nexport type CategoryItem = {\n title: string;\n url: string;\n externalLink: boolean;\n};\n\nexport type SubMenuLinkItem = {\n category: string;\n url?: string;\n items: CategoryItem[];\n index: number;\n};\n\nexport type MenuItem = {\n subMenuLinkItems: SubMenuLinkItem[];\n};\n\ntype UDExMastheadItemItemClickEventDetail = {\n originalEvent: PointerEvent,\n item: UDExMastheadItem,\n analyticsName: AnalyticsName,\n sourceNode: HTMLElement,\n}\n\nexport type UDExMastheadDropdownEventDetail = {\n title: string,\n action: UDExMastheadDropdownItemAction,\n analyticsName: AnalyticsName,\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-masthead-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/MastheadItem.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-masthead-item\",\n renderer: litRender,\n languageAware: true,\n styles: MastheadItemCss,\n template: MastheadItemTemplate,\n dependencies: [\n UDExMastheadMenu,\n UI5Icon,\n ],\n})\n\n/**\n * Fires when item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"item-click\", { bubbles: true })\n\n/**\n * Fires when dropdown is closed\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"dropdown-closed\", { bubbles: true })\n\n/**\n * Fires when dropdown is opened\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"dropdown-opened\", { bubbles: true })\n\nclass UDExMastheadItem extends UI5Element implements IMastheadItem {\n eventDetails!: {\n \"item-click\": UDExMastheadItemItemClickEventDetail,\n \"dropdown-closed\": UDExMastheadDropdownEventDetail,\n \"dropdown-opened\": UDExMastheadDropdownEventDetail,\n };\n /**\n * Defines sub items for item\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n subItems: string = \"\";\n\n /**\n * Defines a title for sub menu items\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n menuTitle: string = \"\";\n\n /**\n * Defines the selected item.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n selected!: boolean;\n\n /**\n * Defines if the arrow icon is hidden.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n hideArrowIcon!: boolean;\n\n /**\n * Defines the icon in the item.\n *\n * @public\n * @default \"\"\n */\n @property({ type: String })\n icon: string = \"\";\n\n /**\n * Defines the image in the item.\n *\n * @public\n * @default \"\"\n */\n @property({ type: String })\n image!: string;\n\n /**\n * Defines an alt text for item image\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n imageAlt!: string;\n\n /**\n * Defines the href of the item.\n *\n * @public\n */\n @property({ type: String })\n href!: string;\n\n /**\n * Define the target of the item\n * <b>Note:</b> Standard hyperlink behavior is supported.\n * @public\n */\n @property()\n target: UDExTarget = UDExTarget._self;\n\n /**\n * Controls the ARIA name of the item\n *\n * @default undefined\n * @public\n */\n @property({ type: String })\n accessibleName?: string;\n\n /**\n * Controls the ARIA role of the item\n *\n * @default undefined\n * @public\n */\n @property({ type: String })\n accessibleRole?: string;\n\n /**\n * Defines an alt text for item icon\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n iconAlt: string = \"\";\n\n /**\n * Hide active border for item\n *\n * @default \"\"\n * @public\n */\n @property({ type: Boolean })\n hideActiveBorder!: boolean;\n\n /**\n * Defines direction of the text.\n *\n * @private\n */\n @property({ type: String })\n _direction!: string;\n\n /**\n * Defines the mobile mode for component\n *\n * @private\n */\n @property({ type: Boolean })\n _isMobileMode!: boolean;\n\n /**\n * Defines the label for analytics\n *\n * @public\n */\n @property({ type: String })\n label!: string;\n\n /**\n * Slot for the dropdown\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement })\n dropdown?: Array<HTMLElement>;\n\n /**\n * Slot for any content\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true })\n content?: Array<HTMLElement>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _profileAvatar!: UDExAvatar;\n _mastheadShell!: UDExMastheadShell;\n _isEscPress!: boolean;\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n onBeforeRendering(): void {\n this.label = this.eventItemTitle;\n }\n\n onAfterRendering(): void {\n this._profileAvatar = this.profileAvatar;\n this._mastheadShell = this.mastheadShell;\n this.handleDirection();\n if (this.selected && this.hasDropdownSlot && !this.isMobile && !this.isExploreBtn) {\n this.setDropdownInsetStart();\n }\n\n this.handleOutsideClick();\n this._isEscPress = false;\n }\n\n handleOutsideClick(): void {\n document.addEventListener(\"click\", (e: Event) => {\n const target = e.target as HTMLElement;\n const item = target.closest(\"[udex-masthead-item]\");\n if (item !== this && !this.isMobile) {\n if (this.isDropdownOpened) {\n this.fireDropdownCloseEvent(this.eventItemTitle, UDExMastheadDropdownItemAction.ClickOutside);\n }\n\n this.selected = false;\n }\n });\n }\n\n handleFocusout(e: FocusEvent): void {\n if (e.relatedTarget === null || this._isEscPress) {\n return;\n }\n\n const eTarget = e.target as HTMLElement;\n if (!this.isMobile && eTarget.getAttribute(\"slot\") === \"dropdown\") {\n this.closeDropdown();\n }\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n if (isEscape(e) && this.hasDropdownSlot) {\n if (this.isMobile) {\n this.handleKeyEscapeMobile();\n } else {\n this.handleKeyEscape();\n }\n }\n }\n\n handleKeyEscape(): void {\n this._isEscPress = true;\n this.closeDropdown();\n if (this.isProfileBtn) {\n this._profileAvatar.focus();\n } else {\n this.focus();\n }\n }\n\n handleKeyEscapeMobile(): void {\n this.fireDropdownCloseEvent(this.eventItemTitle, UDExMastheadDropdownItemAction.Close);\n this._mastheadShell.closeMobileMenu();\n this._mastheadShell.mobileBtn?.focus();\n }\n\n handleItemClick(e: PointerEvent): void {\n this.handleSelectedChange();\n this.fireItemClickEvent(e);\n this.fireDropdownEvents();\n }\n\n handleSelectedChange(): void {\n this.selected = this.isMobile ? true : !this.selected;\n }\n\n fireDropdownEvents(): void {\n if (this.hasDropdownSlot) {\n const { Open, Close } = UDExMastheadDropdownItemAction;\n const action = this.selected ? Open : Close;\n if (this.selected) {\n this.fireDropdownOpenEvent(this.eventItemTitle, action);\n } else {\n this.fireDropdownCloseEvent(this.eventItemTitle, action);\n }\n }\n }\n\n fireDropdownCloseEvent(title: string, action: UDExMastheadDropdownItemAction): void {\n this.fireDecoratorEvent(\"dropdown-closed\", { title, action, analyticsName: AnalyticsName.Header });\n }\n\n fireDropdownOpenEvent(title: string, action: UDExMastheadDropdownItemAction): void {\n this.fireDecoratorEvent(\"dropdown-opened\", { title, action, analyticsName: AnalyticsName.Header });\n }\n\n fireItemClickEvent(e: PointerEvent): void {\n this.fireDecoratorEvent(\"item-click\", {\n item: this,\n originalEvent: e,\n analyticsName: AnalyticsName.Header,\n sourceNode: e.currentTarget as HTMLElement,\n });\n }\n\n setDropdownInsetStart(): void {\n const dropdown = this.getDomElement(\".udex-masthead-item__dropdown\");\n if (dropdown) {\n const rect = dropdown.getBoundingClientRect();\n const marginInlineStart = this.calculateMarginInlineStart(rect);\n\n if (marginInlineStart !== null) {\n dropdown.style.marginInlineStart = `${marginInlineStart - 3}px`;\n }\n }\n }\n\n calculateMarginInlineStart(rect: DOMRect): number | null {\n const { left, right } = rect;\n\n if (this.isLtrDirection && left < 0) {\n return left * -1 + 15;\n }\n\n if (this.isRtlDirection && left < 0) {\n return left - 15;\n }\n\n if (this.isRtlDirection && right > window.innerWidth) {\n return right - window.innerWidth + 15;\n }\n\n if (this.isLtrDirection && right > window.innerWidth) {\n return window.innerWidth - right - 15;\n }\n\n return null;\n }\n\n handleDirection(): void {\n const directionStyles = window\n .getComputedStyle(this)\n .getPropertyValue(\"direction\");\n if (!directionStyles) {\n this._direction = \"ltr\";\n } else {\n this._direction = directionStyles;\n }\n }\n\n closeDropdown(): void {\n this.selected = false;\n this.fireDropdownCloseEvent(this.accessibleName || this.eventItemTitle, UDExMastheadDropdownItemAction.Close);\n }\n\n getDomElement(selector: string): HTMLElement | undefined | null {\n return this.shadowRoot?.querySelector(`${selector}`);\n }\n\n getSubItems(): Array<MenuItem> {\n return parseArrayFromString(this.subItems);\n }\n\n get mastheadShell(): UDExMastheadShell {\n return document.querySelector<UDExMastheadShell>(\"[udex-masthead-shell]\")!;\n }\n\n get additionalClass(): string {\n const iconClass = (this.icon || this.image) ? \"udex-masthead-item__button--icon\" : \"\";\n const profileClass = this.isProfileBtn ? \"udex-masthead-item__button--profile\" : \"\";\n const exploreClass = this.isExploreBtn ? \"udex-masthead-item__button--explore\" : \"\";\n const supportClass = this.isSupportBtn ? \"udex-masthead-item__button--support\" : \"\";\n const countrySelectorClass = this.isCountrySelectorBtn ? \"udex-masthead-item__button--country-selector\" : \"\";\n return `udex-masthead-item ${iconClass} ${profileClass} ${exploreClass} ${countrySelectorClass} ${supportClass}`.trim();\n }\n\n get profileAvatar(): UDExAvatar {\n return this.querySelector(\"[udex-avatar]\")!;\n }\n\n get isRtlDirection(): boolean {\n return this._direction === \"rtl\";\n }\n\n get isLtrDirection(): boolean {\n return this._direction === \"ltr\";\n }\n\n get hasHref(): boolean {\n return !!this.href?.length;\n }\n\n get accessibleRoleName(): string {\n return this.accessibleRole ? this.accessibleRole : \"button\";\n }\n\n get selectedClass(): string {\n return this.selected ? \" udex-masthead-item__button--active\" : \"\";\n }\n\n get ariaDescribedBy(): string | undefined {\n const labels = [];\n\n if (this.isTargetBlank) {\n labels.push(`new-win-desc`);\n }\n\n if (this.imageAlt) {\n labels.push(`image-desc`);\n }\n\n return labels.length ? labels.join(\" \").trim() : undefined;\n }\n\n get isDropdownOpened(): boolean {\n return this.hasDropdownSlot && this.selected;\n }\n\n get hasDropdownSlot(): boolean {\n return !!this.getSlottedNodes(\"dropdown\").length;\n }\n\n get hasArrowDown(): boolean {\n return this.hasDropdownSlot && !this.isProfileBtn && !this.icon.length && !this.hideArrowIcon;\n }\n\n get isProfileBtn(): boolean {\n return this.getAttribute(\"slot\") === \"profile\";\n }\n\n get isExploreBtn(): boolean {\n return this.getAttribute(\"slot\") === \"exploreSAP\";\n }\n\n get isCountrySelectorBtn(): boolean {\n return this.getAttribute(\"slot\") === \"countrySelector\";\n }\n\n get isCartBtn(): boolean {\n return this.getAttribute(\"slot\") === \"cart\";\n }\n\n get isSearchBtn(): boolean {\n return this.icon === \"search\";\n }\n\n get isSupportBtn(): boolean {\n return this.getAttribute(\"slot\") === \"support\";\n }\n\n get accessibleLabel(): string {\n return this.accessibleName || this.innerText || (this.isProfileBtn ? UDExMastheadItem.i18nBundle.getText(PROFILE) : \"\");\n }\n\n get isMobile(): boolean {\n return BreakpointUtils.isAtMost(\"M\") || this.mastheadShell?._isMobileMode;\n }\n\n get isTargetBlank(): boolean {\n return this.target === UDExTarget._blank;\n }\n\n get openInNewWindowText(): string {\n return UDExMastheadItem.i18nBundle.getText(OPENS_IN_A_NEW_WINDOW);\n }\n\n get eventItemTitle(): string {\n if (this.isSearchBtn) {\n return UDExMastheadItem.i18nBundle.getText(SEARCH);\n }\n if (this.isCartBtn) {\n return UDExMastheadItem.i18nBundle.getText(CART);\n }\n if (this.isProfileBtn) {\n return UDExMastheadItem.i18nBundle.getText(PROFILE);\n }\n if (this.isCountrySelectorBtn) {\n return UDExMastheadItem.i18nBundle.getText(COUNTRY_SELECTOR);\n }\n if (this.isSupportBtn) {\n return UDExMastheadItem.i18nBundle.getText(SUPPORT);\n }\n\n return this.firstChild?.nodeValue?.trim() || \"\";\n }\n}\n\nUDExMastheadItem.define();\n\nexport default UDExMastheadItem;\n"]}
|
package/dist/MastheadMenu.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
|
2
2
|
import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
|
|
3
3
|
import "@ui5/webcomponents-icons/dist/action.js";
|
|
4
4
|
import UDExMastheadMenuItem from "./MastheadMenuItem.js";
|
|
5
|
+
import AnalyticsName from "./types/AnalyticsName.js";
|
|
5
6
|
export type Item = {
|
|
6
7
|
title: string;
|
|
7
8
|
url: string;
|
|
@@ -20,6 +21,8 @@ type UDExMastheadMenuMenuItemClickEventDetail = {
|
|
|
20
21
|
category?: string;
|
|
21
22
|
originalEvent: PointerEvent;
|
|
22
23
|
item: UDExMastheadMenuItem;
|
|
24
|
+
analyticsName: AnalyticsName;
|
|
25
|
+
sourceNode: HTMLElement;
|
|
23
26
|
};
|
|
24
27
|
/**
|
|
25
28
|
* @class
|
|
@@ -69,7 +72,6 @@ declare class UDExMastheadMenu extends UI5Element {
|
|
|
69
72
|
focusPreviousItem(item: UDExMastheadMenuItem): void;
|
|
70
73
|
focusNextItem(item: UDExMastheadMenuItem): void;
|
|
71
74
|
getCurrentIndex(item: UDExMastheadMenuItem): number;
|
|
72
|
-
parseArrayFromString<T>(string: string): T[];
|
|
73
75
|
get links(): Array<UDExMastheadMenuItem>;
|
|
74
76
|
get itemsList(): Array<MenuItem>;
|
|
75
77
|
get oneRowClass(): string;
|
package/dist/MastheadMenu.js
CHANGED
|
@@ -17,6 +17,8 @@ import UDExBadge from "./Badge.js";
|
|
|
17
17
|
import UDExMastheadMenuItem, { UDExItemType } from "./MastheadMenuItem.js";
|
|
18
18
|
import UDExDivider from "./Divider.js";
|
|
19
19
|
import MastheadMenuTemplate from "./generated/templates/MastheadMenuTemplate.lit.js";
|
|
20
|
+
import parseArrayFromString from "./utils/parseArrayFromString.js";
|
|
21
|
+
import AnalyticsName from "./types/AnalyticsName.js";
|
|
20
22
|
// Styles
|
|
21
23
|
import MastheadMenuCss from "./generated/themes/MastheadMenu.css.js";
|
|
22
24
|
const rowClass = "udex-masthead-menu_with-one-column";
|
|
@@ -79,6 +81,8 @@ let UDExMastheadMenu = class UDExMastheadMenu extends UI5Element {
|
|
|
79
81
|
if (url?.length) {
|
|
80
82
|
const list = item.closest(".udex-masthead-menu__list");
|
|
81
83
|
this.fireDecoratorEvent("menu-item-click", {
|
|
84
|
+
sourceNode: item.shadowRoot?.querySelector(".udex-masthead-menu-item"),
|
|
85
|
+
analyticsName: AnalyticsName.Header,
|
|
82
86
|
item,
|
|
83
87
|
originalEvent: e,
|
|
84
88
|
...(type !== UDExItemType.Heading && { category: list?.getAttribute("category") || "" }),
|
|
@@ -99,16 +103,13 @@ let UDExMastheadMenu = class UDExMastheadMenu extends UI5Element {
|
|
|
99
103
|
getCurrentIndex(item) {
|
|
100
104
|
return this.links.indexOf(item);
|
|
101
105
|
}
|
|
102
|
-
parseArrayFromString(string) {
|
|
103
|
-
return string ? JSON.parse(string) : [];
|
|
104
|
-
}
|
|
105
106
|
get links() {
|
|
106
107
|
const menuItems = Array.from(this.shadowRoot.querySelectorAll("[udex-masthead-menu-item]"));
|
|
107
108
|
return menuItems.filter(({ url }) => url && url.length > 0);
|
|
108
109
|
}
|
|
109
110
|
get itemsList() {
|
|
110
111
|
let id = 1;
|
|
111
|
-
const parsedItems =
|
|
112
|
+
const parsedItems = parseArrayFromString(this.subItems);
|
|
112
113
|
return parsedItems.map((mainItem) => {
|
|
113
114
|
mainItem.subMenuLinkItems = mainItem.subMenuLinkItems.map((category) => {
|
|
114
115
|
category.categoryId = `${id++}`;
|
package/dist/MastheadMenu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MastheadMenu.js","sourceRoot":"","sources":["../src/MastheadMenu.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,SAAS,MAAM,sDAAsD,CAAC;AAC7E,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,mDAAmD,CAAC;AAC3D,OAAO,yCAAyC,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,oBAAoB,EAAE,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,oBAAoB,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"MastheadMenu.js","sourceRoot":"","sources":["../src/MastheadMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport \"@ui5/webcomponents-icons/dist/action.js\";\nimport { isUp, isDown } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport UDExBadge from \"./Badge.js\";\nimport UDExMastheadMenuItem, { UDExItemType } from \"./MastheadMenuItem.js\";\nimport UDExDivider from \"./Divider.js\";\nimport MastheadMenuTemplate from \"./generated/templates/MastheadMenuTemplate.lit.js\";\nimport parseArrayFromString from \"./utils/parseArrayFromString.js\";\nimport AnalyticsName from \"./types/AnalyticsName.js\";\n\n// Styles\nimport MastheadMenuCss from \"./generated/themes/MastheadMenu.css.js\";\n\nconst rowClass = \"udex-masthead-menu_with-one-column\";\n\nexport type Item = {\n title: string;\n url: string;\n externalLink: boolean;\n};\n\nexport type SubMenuLinkItem = {\n categoryId: string;\n category: string;\n url: string;\n items: Item[];\n};\n\nexport type MenuItem = {\n subMenuLinkItems: SubMenuLinkItem[];\n};\n\ntype UDExMastheadMenuMenuItemClickEventDetail = {\n category?: string,\n originalEvent: PointerEvent,\n item: UDExMastheadMenuItem,\n analyticsName: AnalyticsName,\n sourceNode: HTMLElement,\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-masthead-menu</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/MastheadMenu.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-masthead-menu\",\n renderer: litRender,\n styles: MastheadMenuCss,\n template: MastheadMenuTemplate,\n dependencies: [Icon, UDExBadge, UDExMastheadMenuItem, UDExDivider],\n})\n\n/**\n * Fires when menu item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"menu-item-click\", { bubbles: true })\n\nclass UDExMastheadMenu extends UI5Element {\n eventDetails!: {\n \"menu-item-click\": UDExMastheadMenuMenuItemClickEventDetail\n };\n /**\n * Defines a menu heading\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n menuTitle: string = \"\";\n\n /**\n * List of the menu items\n *\n * @default \"[]\"\n * @public\n */\n @property({ type: String })\n subItems: string = \"[]\";\n\n /**\n * Defines the mobile mode for component\n *\n * @private\n */\n @property({ type: Boolean })\n _isMobileMode!: boolean;\n\n handleKeyDown(e: KeyboardEvent): void {\n this.handleUpArrow(e);\n this.handleDownArrow(e);\n }\n\n handleUpArrow(e: KeyboardEvent): void {\n if (isUp(e)) {\n e.preventDefault();\n const currentItem = e.target as UDExMastheadMenuItem;\n this.focusPreviousItem(currentItem);\n }\n }\n\n handleDownArrow(e: KeyboardEvent): void {\n if (isDown(e)) {\n e.preventDefault();\n const currentItem = e.target as UDExMastheadMenuItem;\n this.focusNextItem(currentItem);\n }\n }\n\n handleMenuItemClick(e: PointerEvent): void {\n const item = e.target as UDExMastheadMenuItem;\n const { url, type } = item;\n if (url?.length) {\n const list = item.closest(\".udex-masthead-menu__list\") as HTMLElement;\n this.fireDecoratorEvent(\"menu-item-click\", {\n sourceNode: item.shadowRoot?.querySelector(\".udex-masthead-menu-item\") as HTMLElement,\n analyticsName: AnalyticsName.Header,\n item,\n originalEvent: e,\n ...(type !== UDExItemType.Heading && { category: list?.getAttribute(\"category\") || \"\" }),\n });\n }\n }\n\n focusPreviousItem(item: UDExMastheadMenuItem): void {\n const currentSelectedIndex = this.getCurrentIndex(item);\n const lastItemIndex = this.links.length - 1;\n const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;\n this.links[previousSelectIndex].focus();\n }\n\n focusNextItem(item: UDExMastheadMenuItem): void {\n const currentSelectedIndex = this.getCurrentIndex(item);\n const nextSelectIndex = currentSelectedIndex + 1 > this.links.length - 1 ? 0 : currentSelectedIndex + 1;\n this.links[nextSelectIndex].focus();\n }\n\n getCurrentIndex(item: UDExMastheadMenuItem): number {\n return this.links.indexOf(item);\n }\n\n get links(): Array<UDExMastheadMenuItem> {\n const menuItems: Array<UDExMastheadMenuItem> = Array.from(this.shadowRoot!.querySelectorAll(\"[udex-masthead-menu-item]\"));\n return menuItems.filter(({ url }) => url && url.length > 0);\n }\n\n get itemsList(): Array<MenuItem> {\n let id = 1;\n const parsedItems: Array<MenuItem> = parseArrayFromString(this.subItems);\n return parsedItems.map((mainItem: MenuItem) => {\n mainItem.subMenuLinkItems = mainItem.subMenuLinkItems.map((category: SubMenuLinkItem) => {\n category.categoryId = `${id++}`;\n return category;\n });\n\n return mainItem;\n });\n }\n\n get oneRowClass(): string {\n const hasOneColumn = this.itemsList.length === 1 && this.itemsList[0].subMenuLinkItems.length === 1;\n return hasOneColumn ? rowClass : \"\";\n }\n}\n\nUDExMastheadMenu.define();\n\nexport default UDExMastheadMenu;\n"]}
|
|
@@ -131,7 +131,7 @@ declare class UDExMastheadMenuItem extends UI5Element {
|
|
|
131
131
|
get leadingWordsOfLabel(): string;
|
|
132
132
|
get openInNewWindowText(): string;
|
|
133
133
|
get ariaDescribedby(): string | null;
|
|
134
|
-
get accessibleRoleText(): string
|
|
134
|
+
get accessibleRoleText(): string;
|
|
135
135
|
get partAttr(): string;
|
|
136
136
|
}
|
|
137
137
|
export default UDExMastheadMenuItem;
|
package/dist/MastheadMenuItem.js
CHANGED
|
@@ -105,7 +105,7 @@ let UDExMastheadMenuItem = UDExMastheadMenuItem_1 = class UDExMastheadMenuItem e
|
|
|
105
105
|
return this.externalLink ? "new-win-desc" : null;
|
|
106
106
|
}
|
|
107
107
|
get accessibleRoleText() {
|
|
108
|
-
return this.accessibleRole ? this.accessibleRole :
|
|
108
|
+
return this.accessibleRole ? this.accessibleRole : "menuitem";
|
|
109
109
|
}
|
|
110
110
|
get partAttr() {
|
|
111
111
|
return this.badge ? "menu-item-link-badge" : "menu-item-link";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MastheadMenuItem.js","sourceRoot":"","sources":["../src/MastheadMenuItem.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MastheadMenuItem.js","sourceRoot":"","sources":["../src/MastheadMenuItem.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport \"@ui5/webcomponents-icons/dist/action.js\";\n\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-left.js\";\nimport { OPENS_IN_A_NEW_WINDOW } from \"./generated/i18n/i18n-defaults.js\";\nimport { UDExTarget } from \"./types/common.js\";\n\nimport MastheadMenuItemTemplate from \"./generated/templates/MastheadMenuItemTemplate.lit.js\";\n\n// Styles\nimport MastheadMenuItemCss from \"./generated/themes/MastheadMenuItem.css.js\";\n\nexport enum UDExItemType {\n Heading = \"Heading\",\n Button = \"Button\",\n Link = \"Link\"\n}\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-masthead-menu-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/MastheadMenuItem.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @private\n */\n@customElement({\n tag: \"udex-masthead-menu-item\",\n languageAware: true,\n renderer: litRender,\n styles: MastheadMenuItemCss,\n template: MastheadMenuItemTemplate,\n dependencies: [Icon],\n})\n\nclass UDExMastheadMenuItem extends UI5Element {\n /**\n * Defines the type of the item.\n *\n * @default \"Link\"\n * @public\n */\n @property()\n type: `${UDExItemType}` = UDExItemType.Link;\n\n /**\n * Controls the ARIA role of the item\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n accessibleRole!: string;\n\n /**\n * Defines the label of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n label!: string;\n\n /**\n * Defines the url of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n url?: string;\n\n /**\n * Defines the badge of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n badge?: string;\n\n /**\n * Defines the externalLink of the component.\n *\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n externalLink?: boolean;\n\n /**\n * Defines the border for component.\n *\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n hasBorder?: boolean;\n\n /**\n * Defines the start position of icon arrow.\n *\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n iconStart?: boolean;\n\n /**\n * Defines the end position of icon arrow.\n *\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n iconEnd?: boolean;\n\n /**\n * Defines the index for the item.\n *\n * @public\n */\n @property({ type: Number })\n index!: number;\n\n /**\n * Defines the aria-haspopup attribute for the item.\n *\n * @public\n */\n @property({ type: String })\n ariaHasPopup!: string;\n\n /**\n * Define the target of the item\n * <b>Note:</b> Standard hyperlink behavior is supported.\n * @public\n * @default \"_self\"\n */\n @property()\n target: `${UDExTarget}` = UDExTarget._self;\n\n /**\n * Defines the tabindex attribute for the item.\n *\n * @private\n */\n @property({ type: String })\n _tabIndex!: string;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n get rootClass(): string {\n const prefixClass = \"udex-masthead-menu-item\";\n const badgeClass = this.badge ? `${prefixClass}_badge` : \"\";\n const rootClass = this.isHeadingType ? `${prefixClass}_is-header` : `${prefixClass}_is-list`;\n return `${rootClass} ${badgeClass}`;\n }\n\n get labelClass(): string {\n const root = \"udex-masthead-menu-item__label\";\n return this.externalLink ? `${root} ${root}__label_with-icon` : `${root}`;\n }\n\n get isHeadingType(): boolean {\n return this.type === UDExItemType.Heading;\n }\n\n get isButtonType(): boolean {\n return this.type === UDExItemType.Button;\n }\n\n get isActive(): boolean {\n return !!this.url && !this.isButtonType;\n }\n\n get targetLink(): string {\n if (this.externalLink) {\n return this.externalLink ? UDExTarget._blank : UDExTarget._self;\n }\n return this.target;\n }\n\n get lastWordOfLabel(): string | undefined {\n return this.label.split(\" \").pop();\n }\n\n get leadingWordsOfLabel(): string {\n const leadingWords = this.label.split(\" \").slice(0, -1).join(\" \");\n return `${leadingWords} `;\n }\n\n get openInNewWindowText(): string {\n return UDExMastheadMenuItem.i18nBundle.getText(OPENS_IN_A_NEW_WINDOW);\n }\n\n get ariaDescribedby(): string | null {\n return this.externalLink ? \"new-win-desc\" : null;\n }\n\n get accessibleRoleText(): string {\n return this.accessibleRole ? this.accessibleRole : \"menuitem\";\n }\n\n get partAttr(): string {\n return this.badge ? \"menu-item-link-badge\" : \"menu-item-link\";\n }\n}\n\nUDExMastheadMenuItem.define();\n\nexport default UDExMastheadMenuItem;\n"]}
|
|
@@ -3,14 +3,19 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
|
3
3
|
import type { MenuItem, SubMenuLinkItem } from "./MastheadItem.js";
|
|
4
4
|
import type UDExMastheadItem from "./MastheadItem.js";
|
|
5
5
|
import UDExMastheadMenuItem from "./MastheadMenuItem.js";
|
|
6
|
+
import AnalyticsName from "./types/AnalyticsName.js";
|
|
6
7
|
type UDExMastheadMobileMenuItemClickEventDetail = {
|
|
7
8
|
originalEvent: PointerEvent | KeyboardEvent;
|
|
8
9
|
item: UDExMastheadMenuItem;
|
|
9
10
|
category?: string;
|
|
10
11
|
isMobile: boolean;
|
|
12
|
+
analyticsName: AnalyticsName;
|
|
13
|
+
sourceNode: HTMLElement;
|
|
11
14
|
};
|
|
12
15
|
type UDExMastheadMobileMenuExploreClickEventDetail = {
|
|
13
16
|
originalEvent: PointerEvent | KeyboardEvent;
|
|
17
|
+
analyticsName: AnalyticsName;
|
|
18
|
+
sourceNode: HTMLElement;
|
|
14
19
|
};
|
|
15
20
|
/**
|
|
16
21
|
* @class
|
|
@@ -97,6 +102,7 @@ declare class UDExMastheadMobileMenu extends UI5Element {
|
|
|
97
102
|
showFirstLevelMenu(): void;
|
|
98
103
|
showCategories(): void;
|
|
99
104
|
fireMobileItemEvent(e: PointerEvent | KeyboardEvent, category?: string): void;
|
|
105
|
+
fireExploreSapMobileButton(e: PointerEvent | KeyboardEvent): void;
|
|
100
106
|
setFocusItemByIndex(index: number): void;
|
|
101
107
|
setFocusExploreBtn(): void;
|
|
102
108
|
getClickedItem(el: UDExMastheadItem): UDExMastheadItem;
|
|
@@ -15,6 +15,7 @@ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
|
15
15
|
import { isUp, isDown, isRight, isLeft, isHome, isEnd, } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
16
16
|
import UDExMastheadMenuItem, { UDExItemType } from "./MastheadMenuItem.js";
|
|
17
17
|
import { OVERVIEW } from "./generated/i18n/i18n-defaults.js";
|
|
18
|
+
import AnalyticsName from "./types/AnalyticsName.js";
|
|
18
19
|
import MastheadMobileMenuTemplate from "./generated/templates/MastheadMobileMenuTemplate.lit.js";
|
|
19
20
|
// Styles
|
|
20
21
|
import MastheadMobileMenuCss from "./generated/themes/MastheadMobileMenu.css.js";
|
|
@@ -60,7 +61,7 @@ let UDExMastheadMobileMenu = UDExMastheadMobileMenu_1 = class UDExMastheadMobile
|
|
|
60
61
|
e.preventDefault();
|
|
61
62
|
this.openExploreSapMenu(e);
|
|
62
63
|
this.setFocusItemByIndex(0);
|
|
63
|
-
this.
|
|
64
|
+
this.fireExploreSapMobileButton(e);
|
|
64
65
|
}
|
|
65
66
|
handleBackToMenuItems(e) {
|
|
66
67
|
e.stopPropagation();
|
|
@@ -281,13 +282,23 @@ let UDExMastheadMobileMenu = UDExMastheadMobileMenu_1 = class UDExMastheadMobile
|
|
|
281
282
|
this._showCategoryItems = false;
|
|
282
283
|
}
|
|
283
284
|
fireMobileItemEvent(e, category) {
|
|
285
|
+
const item = e.target;
|
|
284
286
|
this.fireDecoratorEvent("item-click", {
|
|
285
287
|
isMobile: true,
|
|
286
|
-
item
|
|
288
|
+
item,
|
|
287
289
|
originalEvent: e,
|
|
290
|
+
analyticsName: AnalyticsName.Header,
|
|
291
|
+
sourceNode: item.shadowRoot?.querySelector(".udex-masthead-menu-item"),
|
|
288
292
|
...(category && { category }),
|
|
289
293
|
});
|
|
290
294
|
}
|
|
295
|
+
fireExploreSapMobileButton(e) {
|
|
296
|
+
this.fireDecoratorEvent("explorer-menu-click", {
|
|
297
|
+
originalEvent: e,
|
|
298
|
+
analyticsName: AnalyticsName.Header,
|
|
299
|
+
sourceNode: e.target.shadowRoot?.querySelector(".udex-masthead-menu-item"),
|
|
300
|
+
});
|
|
301
|
+
}
|
|
291
302
|
setFocusItemByIndex(index) {
|
|
292
303
|
this._shouldFocusItemByIndex = true;
|
|
293
304
|
this._focusedItemIndex = index;
|