@sapudex/web-components 2.27.0 → 2.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/dev-server.mjs +8 -0
- package/cypress/specs/PromoTile.cy.tsx +16 -2
- package/cypress/specs/RatingIndicator.cy.tsx +6 -5
- package/cypress/specs/Tag.cy.tsx +6 -0
- package/dist/MastheadCountrySelector.d.ts +16 -0
- package/dist/MastheadCountrySelector.js +21 -6
- package/dist/MastheadCountrySelector.js.map +1 -1
- package/dist/MessageStrip.d.ts +14 -0
- package/dist/MessageStrip.js +7 -1
- package/dist/MessageStrip.js.map +1 -1
- package/dist/MessageStripTemplate.js +1 -1
- package/dist/MessageStripTemplate.js.map +1 -1
- package/dist/PromoTile.d.ts +8 -1
- package/dist/PromoTile.js +9 -6
- package/dist/PromoTile.js.map +1 -1
- package/dist/PromoTileTemplate.js +5 -5
- package/dist/PromoTileTemplate.js.map +1 -1
- package/dist/RatingIndicator.d.ts +7 -0
- package/dist/RatingIndicator.js +10 -5
- package/dist/RatingIndicator.js.map +1 -1
- package/dist/RatingIndicatorTemplate.js +16 -4
- package/dist/RatingIndicatorTemplate.js.map +1 -1
- package/dist/Review.js +1 -1
- package/dist/Review.js.map +1 -1
- package/dist/SearchableListBase.js +1 -1
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SelectBase.d.ts +2 -0
- package/dist/SelectBase.js +6 -1
- package/dist/SelectBase.js.map +1 -1
- package/dist/TabNavigation.d.ts +1 -1
- package/dist/TabNavigation.js +2 -7
- package/dist/TabNavigation.js.map +1 -1
- package/dist/Tag.d.ts +7 -1
- package/dist/Tag.js +4 -1
- package/dist/Tag.js.map +1 -1
- package/dist/TagTemplate.js +1 -1
- package/dist/TagTemplate.js.map +1 -1
- package/dist/assets/{InputSuggestions-Bm_0fOBQ.js → InputSuggestions-GMbG8xQ2.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-CHXlUP-E.js → ListItemStandardExpandableTextTemplate-IyZB_qzJ.js} +1 -1
- package/dist/assets/{bundle.esm-D_SXCGNu.js → bundle.esm-Dg7j0PXg.js} +207 -207
- package/dist/assets/messagebundle_en-DfoXjU7o.js +1 -0
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/Checkbox.css +1 -1
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/MastheadCountrySelector.css +1 -1
- package/dist/css/themes/MastheadMenuItem.css +1 -1
- package/dist/css/themes/MastheadProfileMenu.css +1 -1
- package/dist/css/themes/PromoTile.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Review.css +1 -1
- package/dist/css/themes/ReviewItem.css +1 -1
- package/dist/css/themes/SearchableList.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/custom-elements-internal.json +293 -154
- package/dist/custom-elements.json +274 -139
- 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 +1 -1
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadItemTemplate.lit.js +3 -3
- package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
- package/dist/generated/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/Checkbox.css.d.ts +1 -1
- package/dist/generated/themes/Checkbox.css.js +1 -1
- package/dist/generated/themes/Checkbox.css.js.map +1 -1
- package/dist/generated/themes/ListItem.css.d.ts +1 -1
- package/dist/generated/themes/ListItem.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
- package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
- package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.d.ts +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
- package/dist/generated/themes/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/PromoTile.css.d.ts +1 -1
- package/dist/generated/themes/PromoTile.css.js +1 -1
- package/dist/generated/themes/PromoTile.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/Review.css.d.ts +1 -1
- package/dist/generated/themes/Review.css.js +1 -1
- package/dist/generated/themes/Review.css.js.map +1 -1
- package/dist/generated/themes/ReviewItem.css.d.ts +1 -1
- package/dist/generated/themes/ReviewItem.css.js +1 -1
- package/dist/generated/themes/ReviewItem.css.js.map +1 -1
- package/dist/generated/themes/SearchableList.css.d.ts +1 -1
- package/dist/generated/themes/SearchableList.css.js +1 -1
- package/dist/generated/themes/SearchableList.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/messagebundle.properties +1 -0
- package/dist/messagebundle_en.properties +1 -0
- package/dist/vscode.html-custom-data.json +36 -1
- package/dist/web-types.json +76 -2
- package/package.json +1 -1
- package/src/MastheadCountrySelector.hbs +1 -0
- package/src/MastheadCountrySelector.ts +36 -6
- package/src/MastheadItem.hbs +1 -0
- package/src/MessageStrip.ts +19 -1
- package/src/MessageStripTemplate.tsx +1 -0
- package/src/PromoTile.ts +17 -10
- package/src/PromoTileTemplate.tsx +18 -14
- package/src/RatingIndicator.ts +18 -6
- package/src/RatingIndicatorTemplate.tsx +37 -9
- package/src/Review.ts +1 -1
- package/src/SearchableListBase.ts +1 -1
- package/src/SelectBase.ts +8 -1
- package/src/TabNavigation.ts +3 -10
- package/src/Tag.ts +10 -2
- package/src/TagTemplate.tsx +4 -0
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +1 -1
- package/src/generated/templates/MastheadItemTemplate.lit.ts +3 -3
- package/src/generated/themes/Button.css.ts +1 -1
- package/src/generated/themes/Checkbox.css.ts +1 -1
- package/src/generated/themes/ListItem.css.ts +1 -1
- package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
- package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
- package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
- package/src/generated/themes/PromoTile.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Review.css.ts +1 -1
- package/src/generated/themes/ReviewItem.css.ts +1 -1
- package/src/generated/themes/SearchableList.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/i18n/messagebundle.properties +1 -0
- package/src/i18n/messagebundle_en.properties +1 -0
- package/src/themes/Button.css +9 -20
- package/src/themes/Checkbox.css +9 -4
- package/src/themes/ListItem.css +1 -0
- package/src/themes/MastheadCountrySelector.css +4 -0
- package/src/themes/MastheadMenuItem.css +8 -2
- package/src/themes/MastheadProfileMenu.css +2 -0
- package/src/themes/PromoTile.css +4 -0
- package/src/themes/RatingIndicator.css +24 -9
- package/src/themes/Review.css +24 -31
- package/src/themes/ReviewItem.css +10 -11
- package/src/themes/SearchableList.css +1 -1
- package/dist/assets/messagebundle_en-mjqY85LY.js +0 -1
package/config/dev-server.mjs
CHANGED
|
@@ -2,6 +2,7 @@ import fs from "fs/promises";
|
|
|
2
2
|
import { createServer } from 'vite';
|
|
3
3
|
import yargs from 'yargs';
|
|
4
4
|
import { hideBin } from 'yargs/helpers';
|
|
5
|
+
import { pathToFileURL } from "url";
|
|
5
6
|
|
|
6
7
|
const startVite = async (config, port) => {
|
|
7
8
|
const server = await createServer({
|
|
@@ -65,6 +66,13 @@ async function start(outArgv) {
|
|
|
65
66
|
}
|
|
66
67
|
};
|
|
67
68
|
|
|
69
|
+
const filePath = process.argv[1];
|
|
70
|
+
const fileUrl = pathToFileURL(filePath).href;
|
|
71
|
+
|
|
72
|
+
if (import.meta.url === fileUrl) {
|
|
73
|
+
start(process.argv)
|
|
74
|
+
}
|
|
75
|
+
|
|
68
76
|
export default {
|
|
69
77
|
_ui5mainFn: start
|
|
70
78
|
}
|
|
@@ -14,6 +14,14 @@ const iconPromoTile = <UDExPromoTile icon={iconName} image-label={imageLabel}>Te
|
|
|
14
14
|
const logoPromoTile = <UDExPromoTile logoUrl={logoUrl} image-label={imageLabel}>Text</UDExPromoTile>;
|
|
15
15
|
const buttonPromoTile = <UDExPromoTile button={buttonLabel} button-design={design}>Text</UDExPromoTile>;
|
|
16
16
|
const horizontalPromoTile = <UDExPromoTile orientation="Horizontal" button={buttonLabel}>Text</UDExPromoTile>;
|
|
17
|
+
const pictogramPromoTile = <UDExPromoTile button={buttonLabel}>
|
|
18
|
+
Text
|
|
19
|
+
<img
|
|
20
|
+
alt="John Ford avatar"
|
|
21
|
+
slot="pictogram"
|
|
22
|
+
src="https://cdn.udex.services.sap.com/dds/design-tokens/assets/logos/sap-logo.svg"
|
|
23
|
+
/>
|
|
24
|
+
</UDExPromoTile>;
|
|
17
25
|
const darkPromoTile = <UDExPromoTile color-scheme={colorScheme} button={buttonLabel}>Text</UDExPromoTile>;
|
|
18
26
|
|
|
19
27
|
describe("Promo Tile", () => {
|
|
@@ -22,6 +30,12 @@ describe("Promo Tile", () => {
|
|
|
22
30
|
cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("be.visible");
|
|
23
31
|
});
|
|
24
32
|
|
|
33
|
+
it("renders promo tile with custom pictogram", () => {
|
|
34
|
+
cy.mount(pictogramPromoTile);
|
|
35
|
+
cy.get("[udex-promo-tile]").shadow().find("slot[name='pictogram']").should("exist");
|
|
36
|
+
cy.get("[udex-promo-tile]").find("img[slot='pictogram']").should("have.attr", "src", "https://cdn.udex.services.sap.com/dds/design-tokens/assets/logos/sap-logo.svg");
|
|
37
|
+
});
|
|
38
|
+
|
|
25
39
|
it("renders promo tile with default classes", () => {
|
|
26
40
|
cy.mount(promoTile)
|
|
27
41
|
cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--vertical");
|
|
@@ -37,7 +51,7 @@ describe("Promo Tile", () => {
|
|
|
37
51
|
cy.mount(promoTile)
|
|
38
52
|
cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__footer").should("not.exist");
|
|
39
53
|
});
|
|
40
|
-
|
|
54
|
+
|
|
41
55
|
it("renders promo tile in horizontal orientation", () => {
|
|
42
56
|
cy.mount(horizontalPromoTile)
|
|
43
57
|
cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--horizontal");
|
|
@@ -121,4 +135,4 @@ describe("Promo Tile - Mobile tests", () => {
|
|
|
121
135
|
expect(tileStyles.flexDirection).eqls("column");
|
|
122
136
|
})
|
|
123
137
|
});
|
|
124
|
-
});
|
|
138
|
+
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { UDExRatingIndicator } from "../support/component-imports.js";
|
|
2
2
|
|
|
3
|
+
const ratingCount = 2.5;
|
|
3
4
|
const totalCount = 100;
|
|
4
5
|
const ratingValue = 2.5;
|
|
5
6
|
const newValue = 4;
|
|
@@ -7,7 +8,7 @@ const maxSymbols = 10;
|
|
|
7
8
|
const displayType = "Mobile";
|
|
8
9
|
const accName = "test";
|
|
9
10
|
|
|
10
|
-
const ratingIndicator = <UDExRatingIndicator total-count={totalCount} value={ratingValue} max={maxSymbols} display={displayType} accessible-name={accName}></UDExRatingIndicator>
|
|
11
|
+
const ratingIndicator = <UDExRatingIndicator total-count={totalCount} ratingCount={ratingCount} value={ratingValue} max={maxSymbols} display={displayType} accessible-name={accName}></UDExRatingIndicator>
|
|
11
12
|
const disabledRatingIndicator = <UDExRatingIndicator value={ratingValue} disabled></UDExRatingIndicator>
|
|
12
13
|
|
|
13
14
|
describe("Rating Indicator", () => {
|
|
@@ -32,8 +33,8 @@ describe("Rating Indicator", () => {
|
|
|
32
33
|
cy.get("[udex-rating-indicator]").shadow().find(".udex-rating-indicator__item").should("have.length", maxSymbols);
|
|
33
34
|
});
|
|
34
35
|
|
|
35
|
-
it("renders with total count", () => {
|
|
36
|
-
cy.get("[udex-rating-indicator]").shadow().find(".udex-rating-indicator__total").should("have.text",
|
|
36
|
+
it("renders with total count and rating count", () => {
|
|
37
|
+
cy.get("[udex-rating-indicator]").shadow().find(".udex-rating-indicator__total").should("have.text", `${ratingValue} (${totalCount})`);
|
|
37
38
|
});
|
|
38
39
|
|
|
39
40
|
it("renders with mobile display", () => {
|
|
@@ -41,7 +42,7 @@ describe("Rating Indicator", () => {
|
|
|
41
42
|
});
|
|
42
43
|
|
|
43
44
|
it("renders with proper accessible name", () => {
|
|
44
|
-
cy.get("[udex-rating-indicator]").shadow().find(".udex-rating-indicator").should("have.attr", "aria-label", `${accName}, Total ${totalCount}`);
|
|
45
|
+
cy.get("[udex-rating-indicator]").shadow().find(".udex-rating-indicator").should("have.attr", "aria-label", `${accName}, Rating ${ratingValue}, Total ${totalCount}`);
|
|
45
46
|
});
|
|
46
47
|
|
|
47
48
|
it("renders disabled", () => {
|
|
@@ -71,4 +72,4 @@ describe("General interaction", () => {
|
|
|
71
72
|
cy.get("[udex-rating-indicator]").shadow().find(".udex-rating-indicator__item").eq(newValue).click();
|
|
72
73
|
cy.get("[udex-rating-indicator]").should("have.attr", "value", `${ratingValue}`);
|
|
73
74
|
});
|
|
74
|
-
});
|
|
75
|
+
});
|
package/cypress/specs/Tag.cy.tsx
CHANGED
|
@@ -13,6 +13,7 @@ const readonlyTag = <UDExTag id="tag-readonly" text="Tag text" icon="accept" rea
|
|
|
13
13
|
const nonselectableTag = <UDExTag id="tag-nonselectable" text="Non selectable" non-selectable></UDExTag>
|
|
14
14
|
const nonselectableIconTag = <UDExTag id="tag-nonselectable-icon" text="Non selectable" icon="decline" non-selectable></UDExTag>
|
|
15
15
|
const linkTag = <UDExTag id="tag-link" text="SAP home page" href="https://sap.com"></UDExTag>
|
|
16
|
+
const nonInteractiveTag = <UDExTag id="tag-nonselectable" text="Non selectable" icon="decline" non-interactive></UDExTag>
|
|
16
17
|
|
|
17
18
|
describe("Tag", () => {
|
|
18
19
|
it("is rendered", () => {
|
|
@@ -115,6 +116,11 @@ describe("Tag", () => {
|
|
|
115
116
|
cy.get("#tag-nonselectable-icon").shadow().find(".udex-tag__btn-icon").click()
|
|
116
117
|
});
|
|
117
118
|
|
|
119
|
+
it("icon is not focusable when non-interactive attribute is set", () => {
|
|
120
|
+
cy.mount(nonInteractiveTag)
|
|
121
|
+
cy.get("#tag-nonselectable").shadow().find(".udex-tag__icon").should("have.attr", "mode", "Decorative")
|
|
122
|
+
});
|
|
123
|
+
|
|
118
124
|
it("tests if tag with link is correctly rendered", () => {
|
|
119
125
|
cy.mount(linkTag)
|
|
120
126
|
cy.get("#tag-link").shadow().find("a").should("be.visible")
|
|
@@ -13,6 +13,7 @@ export type Country = {
|
|
|
13
13
|
displayTitle: string;
|
|
14
14
|
countryCode: string;
|
|
15
15
|
url: string;
|
|
16
|
+
active: boolean;
|
|
16
17
|
};
|
|
17
18
|
type UDExMastheadCountrySelectorRegionClickEventDetail = {
|
|
18
19
|
item: {
|
|
@@ -60,6 +61,20 @@ declare class UDExMastheadCountrySelector extends UI5Element {
|
|
|
60
61
|
"country-selector-search": UDExMastheadCountrySelectorSearchEventDetail;
|
|
61
62
|
"region-item-click": UDExMastheadCountrySelectorRegionClickEventDetail;
|
|
62
63
|
};
|
|
64
|
+
/**
|
|
65
|
+
* Defines active country code of the regions menu
|
|
66
|
+
*
|
|
67
|
+
* @default ""
|
|
68
|
+
* @public
|
|
69
|
+
*/
|
|
70
|
+
activeCountryCode: string;
|
|
71
|
+
/**
|
|
72
|
+
* Defines active country url of the regions menu
|
|
73
|
+
*
|
|
74
|
+
* @default ""
|
|
75
|
+
* @public
|
|
76
|
+
*/
|
|
77
|
+
activeCountryUrl: string;
|
|
63
78
|
/**
|
|
64
79
|
* Defines title of the regions menu
|
|
65
80
|
*
|
|
@@ -169,6 +184,7 @@ declare class UDExMastheadCountrySelector extends UI5Element {
|
|
|
169
184
|
handleCountryListShadowVisible(): void;
|
|
170
185
|
addScrollableClassToCountryList(): void;
|
|
171
186
|
removeScrollableClassInCountryList(): void;
|
|
187
|
+
isActiveCountry(countryCode: string, url: string): boolean;
|
|
172
188
|
get scrollBottomCountriesList(): number;
|
|
173
189
|
get isScrollableCountriesList(): boolean;
|
|
174
190
|
get countryListHolder(): HTMLElement;
|
|
@@ -93,11 +93,8 @@ let UDExMastheadCountrySelector = UDExMastheadCountrySelector_1 = class UDExMast
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
handleBackKeyboard(e) {
|
|
96
|
-
if (isLeft(e) && !this.isRtlDirection) {
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
if (isRight(e) && this.isRtlDirection) {
|
|
100
|
-
return this.backToRegions();
|
|
96
|
+
if ((isLeft(e) && !this.isRtlDirection) || (isRight(e) && this.isRtlDirection)) {
|
|
97
|
+
this.backToRegions();
|
|
101
98
|
}
|
|
102
99
|
}
|
|
103
100
|
handleRightArrow(e) {
|
|
@@ -334,6 +331,11 @@ let UDExMastheadCountrySelector = UDExMastheadCountrySelector_1 = class UDExMast
|
|
|
334
331
|
removeScrollableClassInCountryList() {
|
|
335
332
|
this.countryListHolder.classList.remove(`${this._countriesListHolderClassName}_scrollable`);
|
|
336
333
|
}
|
|
334
|
+
isActiveCountry(countryCode, url) {
|
|
335
|
+
const matchedURL = this.activeCountryUrl?.toUpperCase() === url.toUpperCase();
|
|
336
|
+
const matchedCode = this.activeCountryCode?.toUpperCase() === countryCode.toUpperCase();
|
|
337
|
+
return matchedURL && matchedCode;
|
|
338
|
+
}
|
|
337
339
|
get scrollBottomCountriesList() {
|
|
338
340
|
const countriesList = this.countryListHolder;
|
|
339
341
|
return countriesList.scrollHeight - countriesList.scrollTop - countriesList.clientHeight;
|
|
@@ -356,7 +358,14 @@ let UDExMastheadCountrySelector = UDExMastheadCountrySelector_1 = class UDExMast
|
|
|
356
358
|
return items ? Array.from(items) : [];
|
|
357
359
|
}
|
|
358
360
|
get regionsData() {
|
|
359
|
-
|
|
361
|
+
const regions = this.regions ? JSON.parse(this.regions) : [];
|
|
362
|
+
return regions.map(region => ({
|
|
363
|
+
...region,
|
|
364
|
+
countries: region.countries.map(country => ({
|
|
365
|
+
...country,
|
|
366
|
+
active: this.isActiveCountry(country.countryCode, country.url),
|
|
367
|
+
})),
|
|
368
|
+
}));
|
|
360
369
|
}
|
|
361
370
|
get isRtlDirection() {
|
|
362
371
|
return this._direction === "rtl";
|
|
@@ -374,6 +383,12 @@ let UDExMastheadCountrySelector = UDExMastheadCountrySelector_1 = class UDExMast
|
|
|
374
383
|
return document.querySelector("[udex-masthead-shell]");
|
|
375
384
|
}
|
|
376
385
|
};
|
|
386
|
+
__decorate([
|
|
387
|
+
property({ type: String })
|
|
388
|
+
], UDExMastheadCountrySelector.prototype, "activeCountryCode", void 0);
|
|
389
|
+
__decorate([
|
|
390
|
+
property({ type: String })
|
|
391
|
+
], UDExMastheadCountrySelector.prototype, "activeCountryUrl", void 0);
|
|
377
392
|
__decorate([
|
|
378
393
|
property({ type: String })
|
|
379
394
|
], UDExMastheadCountrySelector.prototype, "regionTitle", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MastheadCountrySelector.js","sourceRoot":"","sources":["../src/MastheadCountrySelector.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 event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport {\n isUp, isDown, isRight, isLeft, isEnd, isHome,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport UDExMastheadMenuItem from \"./MastheadMenuItem.js\";\nimport UDExSearch, { Mode as UDExSearchMode } from \"./Search.js\";\nimport MastheadCountrySelectorTemplate from \"./generated/templates/MastheadCountrySelectorTemplate.lit.js\";\nimport AnalyticsName from \"./types/AnalyticsName.js\";\nimport { BreakpointUtils } from \"./utils/Breakpoints.js\";\nimport type UDExMastheadShell from \"./MastheadShell.js\";\nimport { NO_MATCHES_FOUND, RESULT_RETURNED } from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport MastheadCountrySelectorCss from \"./generated/themes/MastheadCountrySelector.css.js\";\n\nexport type Region = {\n title: string,\n countries: Array<Country>,\n};\n\nexport type Country = {\n displayTitle: string,\n countryCode: string,\n url: string,\n};\n\ntype UDExMastheadCountrySelectorRegionClickEventDetail = {\n item: {\n title: string,\n countries: Array<Country>,\n },\n originalEvent: Event,\n analyticsName: AnalyticsName,\n sourceNode: HTMLElement,\n}\n\ntype UDExMastheadCountrySelectorItemClickEventDetail = {\n item: {\n displayTitle: string,\n countryCode: string,\n url: string,\n },\n originalEvent: Event,\n analyticsName: AnalyticsName,\n sourceNode: HTMLElement,\n}\n\ntype UDExMastheadCountrySelectorSearchEventDetail = {\n value: string,\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>masthead-country-selector</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/MastheadCountrySelector.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-masthead-country-selector\",\n renderer: litRender,\n styles: MastheadCountrySelectorCss,\n template: MastheadCountrySelectorTemplate,\n dependencies: [UI5Icon, UDExMastheadMenuItem, UDExSearch],\n})\n\n/**\n * Fires when region item is clicked\n *\n * @public\n * @param {Event} originalEvent the original event object\n * @param {Object} item the clicked region item\n * @param {string} item.title the title of the region\n * @param {Array} item.countries the countries of the region\n * @param {AnalyticsName} analyticsName The analytics name for the event\n * @param {HTMLElement} sourceNode The source node which triggered the event\n */\n@event(\"region-item-click\", { bubbles: true })\n\n/**\n * Fires when region item is clicked\n *\n * @public\n * @param {Event} originalEvent the original event object\n * @param {Object} item the clicked country item\n * @param {string} item.displayTitle the display title of the country\n * @param {string} item.countryCode the country code of the country\n * @param {string} item.url the url of the country\n * @param {AnalyticsName} analyticsName The analytics name for the event\n * @param {HTMLElement} sourceNode The source node which triggered the event\n */\n@event(\"country-item-click\", { bubbles: true })\n\n/**\n * Fired event when the user typed to search field.\n *\n * @public\n * @param {string} value The search value\n * @param {AnalyticsName} analyticsName The analytics name for the event\n */\n@event(\"country-selector-search\", { bubbles: true })\n\nclass UDExMastheadCountrySelector extends UI5Element {\n eventDetails!: {\n \"country-item-click\": UDExMastheadCountrySelectorItemClickEventDetail,\n \"country-selector-search\": UDExMastheadCountrySelectorSearchEventDetail,\n \"region-item-click\": UDExMastheadCountrySelectorRegionClickEventDetail\n };\n /**\n * Defines title of the regions menu\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n regionTitle!: string;\n\n /**\n * Defines title of the countries menu\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n countryTitle!: string;\n\n /**\n * Defines the object of the regions\n *\n * @default \"\"\n * @public\n */\n @property()\n regions!: string;\n\n /**\n * Defines the label of the search\n *\n * @default \"en-US\"\n * @public\n */\n @property()\n searchLabel!: string;\n\n /**\n * Defines display the voice button for the search field.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n showSearchVoiceButton!: boolean;\n\n /**\n * Defines the language voice of the search\n *\n * @default \"\"\n * @public\n */\n @property()\n languageVoice!: string;\n\n /**\n * Defines the country list of the region is opened\n *\n * @private\n */\n @property({ type: Boolean })\n _isActiveRegionOpen!: boolean;\n\n /**\n * Defines the mobile mode for component\n *\n * @private\n */\n @property({ type: Boolean })\n _isMobileMode!: boolean;\n\n /**\n * Defines direction of the component.\n *\n * @private\n */\n @property({ type: String })\n _direction!: string;\n\n @property({ type: Boolean, noAttribute: true })\n _requestRender = false;\n\n _activeRegion!: Region | null;\n _activeCountries!: Array<Country>;\n _shouldFocusBackBtn!: boolean;\n _shouldFocusRegionByIndex!: boolean;\n _accSearchResultInfo?: string;\n _activeRegionIndex!: number;\n _mastheadShell!: UDExMastheadShell;\n _countriesListHolderClassName = \"udex-masthead-country-selector__list-wrap\";\n _itemClassName = \"udex-masthead-country-selector__item\";\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n constructor() {\n super();\n this._activeCountries = [];\n }\n\n onAfterRendering(): void {\n this._mastheadShell = this.mastheadShell;\n this.handleFocusItem();\n this.setTabIndexForItems();\n this.handleDirection();\n this.handleOutsideClick();\n\n if (this.isSingleMode) {\n this.handleSingleRegionMode();\n }\n\n if (this._activeCountries) {\n this.checkScrollableCountriesList();\n }\n }\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n handleRegionClick(e: CustomEvent): void {\n this.openCountriesByRegion(e);\n this.fireEventRegionItemClick(e);\n }\n\n handleCountryClick(e: CustomEvent): void {\n this.fireEventCountryItemClick(e);\n if (this._mastheadShell && this.isMobile) {\n this.closeMenu();\n }\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n const item = e.target as UDExMastheadMenuItem;\n\n if (item.hasAttribute(\"is-back\")) {\n this.handleBackKeyboard(e);\n return;\n }\n\n if (item.hasAttribute(\"is-nav-item\")) {\n this.handleUpArrow(e);\n this.handleDownArrow(e);\n this.handleRightArrow(e);\n this.handleLeftArrow(e);\n this.handleHomeKey(e);\n this.handleEndKey(e);\n }\n }\n\n handleBackKeyboard(e: KeyboardEvent): void {\n if (isLeft(e) && !this.isRtlDirection) {\n return this.backToRegions();\n }\n if (isRight(e) && this.isRtlDirection) {\n return this.backToRegions();\n }\n }\n\n handleRightArrow(e: KeyboardEvent): void {\n if (isRight(e) && !this.isRtlDirection) {\n this.openCountriesByRegion(e);\n this.fireEventRegionItemClick(e);\n }\n }\n\n handleLeftArrow(e: KeyboardEvent): void {\n if (isLeft(e) && this.isRtlDirection) {\n this.openCountriesByRegion(e);\n this.fireEventRegionItemClick(e);\n }\n }\n\n handleUpArrow(e: KeyboardEvent): void {\n if (isUp(e)) {\n e.preventDefault();\n this.focusPreviousItem(e);\n }\n }\n\n handleDownArrow(e: KeyboardEvent): void {\n if (isDown(e)) {\n e.preventDefault();\n this.focusNextItem(e);\n }\n }\n\n handleSearch(e: CustomEvent): void {\n const searchTerm = e.detail.value.toLowerCase().trim() as string;\n\n if (!this._activeRegion || !this._activeRegion.countries) {\n this.setActiveCountries([]);\n return;\n }\n\n if (!searchTerm) {\n this.setActiveCountries([...this._activeRegion.countries]);\n } else {\n this.setActiveCountries(this._activeRegion.countries.filter(country => country.displayTitle.toLowerCase().includes(searchTerm)));\n }\n\n this._accSearchResultInfo = this._activeCountries.length\n ? `${this._activeCountries.length} ${this.resultReturnedText}`\n : this.noMatchesFoundText;\n\n this._shouldFocusBackBtn = false;\n this.fireDecoratorEvent(\"country-selector-search\", {\n value: e.detail.value,\n analyticsName: AnalyticsName.Header,\n });\n this.refreshRendering();\n }\n\n handleSearchReset(): void {\n this.setActiveCountries([...this._activeRegion?.countries || []]);\n this.refreshRendering();\n }\n\n handleFocusItem(): void {\n if (this._shouldFocusBackBtn) {\n this.focusBackBtn();\n }\n\n if (this._shouldFocusRegionByIndex) {\n this.focusRegionByIndex();\n }\n }\n\n refreshRendering(): void {\n this._requestRender = !this._requestRender;\n }\n\n handleDirection() {\n const directionStyles: string = window\n .getComputedStyle(this)\n .getPropertyValue(\"direction\");\n if (!directionStyles) {\n this._direction = \"ltr\";\n } else {\n this._direction = directionStyles;\n }\n }\n\n handleOutsideClick(): void {\n document.addEventListener(\"mousedown\", (e: Event): void => {\n if (e.target !== this && !this.isMobile) {\n this.handleSearchReset();\n this._isActiveRegionOpen = false;\n this.setActiveRegion(null);\n }\n });\n }\n\n openCountriesByRegion(e: CustomEvent | KeyboardEvent): void {\n const item = e.target as UDExMastheadMenuItem;\n const activeRegion = this.regionsData[item.index];\n this.setActiveRegion(activeRegion);\n this.setActiveCountries(activeRegion.countries);\n this._isActiveRegionOpen = true;\n this._activeRegionIndex = item.index;\n this._shouldFocusBackBtn = true;\n this._shouldFocusRegionByIndex = false;\n }\n\n backToRegions(): void {\n this._isActiveRegionOpen = false;\n this.setActiveRegion(null);\n this._shouldFocusRegionByIndex = true;\n }\n\n focusPreviousItem(e: KeyboardEvent): void {\n const currentIndex = (e.target as UDExMastheadMenuItem).index;\n const lastItemIndex = this.items.length - 1;\n const prevIndex = currentIndex - 1 < 0 ? lastItemIndex : currentIndex - 1;\n const prevItem = this.items[prevIndex];\n this.items[currentIndex]._tabIndex = \"-1\";\n prevItem._tabIndex = \"0\";\n prevItem.scrollIntoView({ block: \"center\" });\n prevItem.focus({ preventScroll: true });\n }\n\n focusNextItem(e: KeyboardEvent): void {\n const currentIndex = (e.target as UDExMastheadMenuItem).index;\n const lastItemIndex = this.items.length - 1;\n const nextIndex = currentIndex + 1 > lastItemIndex ? 0 : currentIndex + 1;\n const nextItem = this.items[nextIndex];\n this.items[currentIndex]._tabIndex = \"-1\";\n nextItem._tabIndex = \"0\";\n nextItem.scrollIntoView({ block: \"center\" });\n nextItem.focus({ preventScroll: true });\n }\n\n focusLastItem(e: KeyboardEvent): void {\n const currentIndex = (e.target as UDExMastheadMenuItem).index;\n const lastItemIndex = this.items.length - 1;\n const lastItem = this.items[lastItemIndex];\n\n this.items[currentIndex]._tabIndex = \"-1\";\n lastItem._tabIndex = \"0\";\n lastItem.scrollIntoView({ block: \"end\" });\n lastItem.focus({ preventScroll: true });\n }\n\n focusFirstItem(e: KeyboardEvent): void {\n const currentIndex = (e.target as UDExMastheadMenuItem).index;\n const firstItem = this.items[0];\n\n this.items[currentIndex]._tabIndex = \"-1\";\n firstItem._tabIndex = \"0\";\n firstItem.focus();\n }\n\n handleEndKey(e: KeyboardEvent): void {\n if (isEnd(e)) {\n e.preventDefault();\n\n if (this.isScrollableCountriesList) {\n this.removeScrollableClassInCountryList();\n }\n\n this.focusLastItem(e);\n }\n }\n\n handleHomeKey(e: KeyboardEvent): void {\n if (isHome(e)) {\n e.preventDefault();\n\n if (this.isScrollableCountriesList) {\n this.addScrollableClassToCountryList();\n }\n\n this.focusFirstItem(e);\n }\n }\n\n handleSingleRegionMode(): void {\n this.setActiveRegion(this.regionsData[0]);\n this.setActiveCountries([...this.regionsData[0].countries]);\n this._isActiveRegionOpen = true;\n }\n\n focusBackBtn(): void {\n const backBtn = this.shadowRoot?.querySelector<HTMLElement>(\".udex-masthead-country-selector__region-back-item\") || null;\n backBtn?.focus();\n }\n\n focusRegionByIndex(): void {\n const regionItems = this.shadowRoot?.querySelectorAll<HTMLElement>(\".udex-masthead-country-selector__item_region\") || [];\n regionItems[this._activeRegionIndex].focus();\n }\n\n fireEventRegionItemClick(e: CustomEvent | KeyboardEvent): void {\n const item = e.target as UDExMastheadMenuItem;\n\n this.fireDecoratorEvent(\"region-item-click\", {\n item: {\n title: item.label,\n countries: this._activeRegion?.countries || [],\n },\n originalEvent: e,\n analyticsName: AnalyticsName.Header,\n sourceNode: item.shadowRoot?.querySelector(\".udex-masthead-menu-item\") as HTMLElement,\n });\n }\n\n fireEventCountryItemClick(e: CustomEvent | KeyboardEvent): void {\n const item = e.target as UDExMastheadMenuItem;\n const { label, url } = item;\n\n this.fireDecoratorEvent(\"country-item-click\", {\n item: {\n displayTitle: label,\n countryCode: item.getAttribute(\"_country-code\") || \"\",\n url: url || \"\",\n },\n originalEvent: e,\n analyticsName: AnalyticsName.Header,\n sourceNode: item.shadowRoot?.querySelector(\".udex-masthead-menu-item\") as HTMLElement,\n });\n }\n\n setActiveRegion(region: Region | null): void {\n this._activeRegion = region;\n }\n\n setActiveCountries(countries: Array<Country>): void {\n this._activeCountries = countries;\n }\n\n setTabIndexForItems(): void {\n this.items.forEach((item, index) => {\n if (this._activeRegionIndex > 0 && this._shouldFocusRegionByIndex) {\n item._tabIndex = index === this._activeRegionIndex ? \"0\" : \"-1\";\n return;\n }\n\n item._tabIndex = index === 0 ? \"0\" : \"-1\";\n });\n }\n\n closeMenu():void {\n this._mastheadShell.closeMobileMenu();\n this._mastheadShell.mobileBtn?.focus();\n }\n\n checkScrollableCountriesList(): void {\n if (this.countryListHolder) {\n requestAnimationFrame(() => {\n if (this.isScrollableCountriesList) {\n this.addScrollableClassToCountryList();\n } else {\n this.removeScrollableClassInCountryList();\n }\n });\n }\n }\n\n handleCountryListShadowVisible(): void {\n if (this.scrollBottomCountriesList === 0) {\n this.removeScrollableClassInCountryList();\n } else {\n this.addScrollableClassToCountryList();\n }\n }\n\n addScrollableClassToCountryList(): void {\n this.countryListHolder.classList.add(`${this._countriesListHolderClassName}_scrollable`);\n }\n\n removeScrollableClassInCountryList(): void {\n this.countryListHolder.classList.remove(`${this._countriesListHolderClassName}_scrollable`);\n }\n\n get scrollBottomCountriesList(): number {\n const countriesList = this.countryListHolder;\n return countriesList.scrollHeight - countriesList.scrollTop - countriesList.clientHeight;\n }\n\n get isScrollableCountriesList(): boolean {\n const countriesList = this.countryListHolder;\n return countriesList ? countriesList.scrollHeight > countriesList.clientHeight : false;\n }\n\n get countryListHolder(): HTMLElement {\n return this.shadowRoot?.querySelector<HTMLElement>(`.${this._countriesListHolderClassName}`) as HTMLElement;\n }\n\n get noMatchesFoundText(): string {\n return translate(UDExMastheadCountrySelector, NO_MATCHES_FOUND);\n }\n\n get resultReturnedText(): string {\n return translate(UDExMastheadCountrySelector, RESULT_RETURNED);\n }\n\n get items(): Array<UDExMastheadMenuItem> {\n const items = this.shadowRoot?.querySelectorAll<UDExMastheadMenuItem>(`.${this._itemClassName}`);\n return items ? Array.from(items) : [];\n }\n\n get regionsData(): Array<Region> {\n return this.regions ? JSON.parse(this.regions) as Array<Region> : [];\n }\n\n get isRtlDirection(): boolean {\n return this._direction === \"rtl\";\n }\n\n get homeSearchMode(): UDExSearchMode {\n return UDExSearchMode.HomeSearch;\n }\n\n get isSingleMode(): boolean {\n return this.regionsData.length === 1;\n }\n\n get isMobile(): boolean {\n return BreakpointUtils.isAtMost(\"M\") || this.mastheadShell?._isMobileMode;\n }\n\n get mastheadShell(): UDExMastheadShell {\n return document.querySelector<UDExMastheadShell>(\"[udex-masthead-shell]\")!;\n }\n}\n\nUDExMastheadCountrySelector.define();\n\nexport default UDExMastheadCountrySelector;\nexport type { UDExMastheadCountrySelectorSearchEventDetail, UDExMastheadCountrySelectorItemClickEventDetail, UDExMastheadCountrySelectorRegionClickEventDetail };\n"]}
|
|
1
|
+
{"version":3,"file":"MastheadCountrySelector.js","sourceRoot":"","sources":["../src/MastheadCountrySelector.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 event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport {\n isUp, isDown, isRight, isLeft, isEnd, isHome,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport UDExMastheadMenuItem from \"./MastheadMenuItem.js\";\nimport UDExSearch, { Mode as UDExSearchMode } from \"./Search.js\";\nimport MastheadCountrySelectorTemplate from \"./generated/templates/MastheadCountrySelectorTemplate.lit.js\";\nimport AnalyticsName from \"./types/AnalyticsName.js\";\nimport { BreakpointUtils } from \"./utils/Breakpoints.js\";\nimport type UDExMastheadShell from \"./MastheadShell.js\";\nimport { NO_MATCHES_FOUND, RESULT_RETURNED } from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport MastheadCountrySelectorCss from \"./generated/themes/MastheadCountrySelector.css.js\";\n\nexport type Region = {\n title: string,\n countries: Array<Country>,\n};\n\nexport type Country = {\n displayTitle: string,\n countryCode: string,\n url: string,\n active: boolean,\n};\n\ntype UDExMastheadCountrySelectorRegionClickEventDetail = {\n item: {\n title: string,\n countries: Array<Country>,\n },\n originalEvent: Event,\n analyticsName: AnalyticsName,\n sourceNode: HTMLElement,\n}\n\ntype UDExMastheadCountrySelectorItemClickEventDetail = {\n item: {\n displayTitle: string,\n countryCode: string,\n url: string,\n },\n originalEvent: Event,\n analyticsName: AnalyticsName,\n sourceNode: HTMLElement,\n}\n\ntype UDExMastheadCountrySelectorSearchEventDetail = {\n value: string,\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>masthead-country-selector</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/MastheadCountrySelector.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-masthead-country-selector\",\n renderer: litRender,\n styles: MastheadCountrySelectorCss,\n template: MastheadCountrySelectorTemplate,\n dependencies: [UI5Icon, UDExMastheadMenuItem, UDExSearch],\n})\n\n/**\n * Fires when region item is clicked\n *\n * @public\n * @param {Event} originalEvent the original event object\n * @param {Object} item the clicked region item\n * @param {string} item.title the title of the region\n * @param {Array} item.countries the countries of the region\n * @param {AnalyticsName} analyticsName The analytics name for the event\n * @param {HTMLElement} sourceNode The source node which triggered the event\n */\n@event(\"region-item-click\", { bubbles: true })\n\n/**\n * Fires when region item is clicked\n *\n * @public\n * @param {Event} originalEvent the original event object\n * @param {Object} item the clicked country item\n * @param {string} item.displayTitle the display title of the country\n * @param {string} item.countryCode the country code of the country\n * @param {string} item.url the url of the country\n * @param {AnalyticsName} analyticsName The analytics name for the event\n * @param {HTMLElement} sourceNode The source node which triggered the event\n */\n@event(\"country-item-click\", { bubbles: true })\n\n/**\n * Fired event when the user typed to search field.\n *\n * @public\n * @param {string} value The search value\n * @param {AnalyticsName} analyticsName The analytics name for the event\n */\n@event(\"country-selector-search\", { bubbles: true })\n\nclass UDExMastheadCountrySelector extends UI5Element {\n eventDetails!: {\n \"country-item-click\": UDExMastheadCountrySelectorItemClickEventDetail,\n \"country-selector-search\": UDExMastheadCountrySelectorSearchEventDetail,\n \"region-item-click\": UDExMastheadCountrySelectorRegionClickEventDetail\n };\n\n /**\n * Defines active country code of the regions menu\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n activeCountryCode !: string;\n\n /**\n * Defines active country url of the regions menu\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n activeCountryUrl!: string;\n\n /**\n * Defines title of the regions menu\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n regionTitle!: string;\n\n /**\n * Defines title of the countries menu\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n countryTitle!: string;\n\n /**\n * Defines the object of the regions\n *\n * @default \"\"\n * @public\n */\n @property()\n regions!: string;\n\n /**\n * Defines the label of the search\n *\n * @default \"en-US\"\n * @public\n */\n @property()\n searchLabel!: string;\n\n /**\n * Defines display the voice button for the search field.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n showSearchVoiceButton!: boolean;\n\n /**\n * Defines the language voice of the search\n *\n * @default \"\"\n * @public\n */\n @property()\n languageVoice!: string;\n\n /**\n * Defines the country list of the region is opened\n *\n * @private\n */\n @property({ type: Boolean })\n _isActiveRegionOpen!: boolean;\n\n /**\n * Defines the mobile mode for component\n *\n * @private\n */\n @property({ type: Boolean })\n _isMobileMode!: boolean;\n\n /**\n * Defines direction of the component.\n *\n * @private\n */\n @property({ type: String })\n _direction!: string;\n\n @property({ type: Boolean, noAttribute: true })\n _requestRender = false;\n\n _activeRegion!: Region | null;\n _activeCountries!: Array<Country>;\n _shouldFocusBackBtn!: boolean;\n _shouldFocusRegionByIndex!: boolean;\n _accSearchResultInfo?: string;\n _activeRegionIndex!: number;\n _mastheadShell!: UDExMastheadShell;\n _countriesListHolderClassName = \"udex-masthead-country-selector__list-wrap\";\n _itemClassName = \"udex-masthead-country-selector__item\";\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n constructor() {\n super();\n this._activeCountries = [];\n }\n\n onAfterRendering(): void {\n this._mastheadShell = this.mastheadShell;\n this.handleFocusItem();\n this.setTabIndexForItems();\n this.handleDirection();\n this.handleOutsideClick();\n\n if (this.isSingleMode) {\n this.handleSingleRegionMode();\n }\n\n if (this._activeCountries) {\n this.checkScrollableCountriesList();\n }\n }\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n handleRegionClick(e: CustomEvent): void {\n this.openCountriesByRegion(e);\n this.fireEventRegionItemClick(e);\n }\n\n handleCountryClick(e: CustomEvent): void {\n this.fireEventCountryItemClick(e);\n if (this._mastheadShell && this.isMobile) {\n this.closeMenu();\n }\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n const item = e.target as UDExMastheadMenuItem;\n\n if (item.hasAttribute(\"is-back\")) {\n this.handleBackKeyboard(e);\n return;\n }\n\n if (item.hasAttribute(\"is-nav-item\")) {\n this.handleUpArrow(e);\n this.handleDownArrow(e);\n this.handleRightArrow(e);\n this.handleLeftArrow(e);\n this.handleHomeKey(e);\n this.handleEndKey(e);\n }\n }\n\n handleBackKeyboard(e: KeyboardEvent): void {\n if ((isLeft(e) && !this.isRtlDirection) || (isRight(e) && this.isRtlDirection)) {\n this.backToRegions();\n }\n }\n\n handleRightArrow(e: KeyboardEvent): void {\n if (isRight(e) && !this.isRtlDirection) {\n this.openCountriesByRegion(e);\n this.fireEventRegionItemClick(e);\n }\n }\n\n handleLeftArrow(e: KeyboardEvent): void {\n if (isLeft(e) && this.isRtlDirection) {\n this.openCountriesByRegion(e);\n this.fireEventRegionItemClick(e);\n }\n }\n\n handleUpArrow(e: KeyboardEvent): void {\n if (isUp(e)) {\n e.preventDefault();\n this.focusPreviousItem(e);\n }\n }\n\n handleDownArrow(e: KeyboardEvent): void {\n if (isDown(e)) {\n e.preventDefault();\n this.focusNextItem(e);\n }\n }\n\n handleSearch(e: CustomEvent): void {\n const searchTerm = e.detail.value.toLowerCase().trim() as string;\n\n if (!this._activeRegion || !this._activeRegion.countries) {\n this.setActiveCountries([]);\n return;\n }\n\n if (!searchTerm) {\n this.setActiveCountries([...this._activeRegion.countries]);\n } else {\n this.setActiveCountries(this._activeRegion.countries.filter(country => country.displayTitle.toLowerCase().includes(searchTerm)));\n }\n\n this._accSearchResultInfo = this._activeCountries.length\n ? `${this._activeCountries.length} ${this.resultReturnedText}`\n : this.noMatchesFoundText;\n\n this._shouldFocusBackBtn = false;\n this.fireDecoratorEvent(\"country-selector-search\", {\n value: e.detail.value,\n analyticsName: AnalyticsName.Header,\n });\n this.refreshRendering();\n }\n\n handleSearchReset(): void {\n this.setActiveCountries([...this._activeRegion?.countries || []]);\n this.refreshRendering();\n }\n\n handleFocusItem(): void {\n if (this._shouldFocusBackBtn) {\n this.focusBackBtn();\n }\n\n if (this._shouldFocusRegionByIndex) {\n this.focusRegionByIndex();\n }\n }\n\n refreshRendering(): void {\n this._requestRender = !this._requestRender;\n }\n\n handleDirection() {\n const directionStyles: string = window\n .getComputedStyle(this)\n .getPropertyValue(\"direction\");\n if (!directionStyles) {\n this._direction = \"ltr\";\n } else {\n this._direction = directionStyles;\n }\n }\n\n handleOutsideClick(): void {\n document.addEventListener(\"mousedown\", (e: Event): void => {\n if (e.target !== this && !this.isMobile) {\n this.handleSearchReset();\n this._isActiveRegionOpen = false;\n this.setActiveRegion(null);\n }\n });\n }\n\n openCountriesByRegion(e: CustomEvent | KeyboardEvent): void {\n const item = e.target as UDExMastheadMenuItem;\n const activeRegion = this.regionsData[item.index];\n this.setActiveRegion(activeRegion);\n this.setActiveCountries(activeRegion.countries);\n this._isActiveRegionOpen = true;\n this._activeRegionIndex = item.index;\n this._shouldFocusBackBtn = true;\n this._shouldFocusRegionByIndex = false;\n }\n\n backToRegions(): void {\n this._isActiveRegionOpen = false;\n this.setActiveRegion(null);\n this._shouldFocusRegionByIndex = true;\n }\n\n focusPreviousItem(e: KeyboardEvent): void {\n const currentIndex = (e.target as UDExMastheadMenuItem).index;\n const lastItemIndex = this.items.length - 1;\n const prevIndex = currentIndex - 1 < 0 ? lastItemIndex : currentIndex - 1;\n const prevItem = this.items[prevIndex];\n this.items[currentIndex]._tabIndex = \"-1\";\n prevItem._tabIndex = \"0\";\n prevItem.scrollIntoView({ block: \"center\" });\n prevItem.focus({ preventScroll: true });\n }\n\n focusNextItem(e: KeyboardEvent): void {\n const currentIndex = (e.target as UDExMastheadMenuItem).index;\n const lastItemIndex = this.items.length - 1;\n const nextIndex = currentIndex + 1 > lastItemIndex ? 0 : currentIndex + 1;\n const nextItem = this.items[nextIndex];\n this.items[currentIndex]._tabIndex = \"-1\";\n nextItem._tabIndex = \"0\";\n nextItem.scrollIntoView({ block: \"center\" });\n nextItem.focus({ preventScroll: true });\n }\n\n focusLastItem(e: KeyboardEvent): void {\n const currentIndex = (e.target as UDExMastheadMenuItem).index;\n const lastItemIndex = this.items.length - 1;\n const lastItem = this.items[lastItemIndex];\n\n this.items[currentIndex]._tabIndex = \"-1\";\n lastItem._tabIndex = \"0\";\n lastItem.scrollIntoView({ block: \"end\" });\n lastItem.focus({ preventScroll: true });\n }\n\n focusFirstItem(e: KeyboardEvent): void {\n const currentIndex = (e.target as UDExMastheadMenuItem).index;\n const firstItem = this.items[0];\n\n this.items[currentIndex]._tabIndex = \"-1\";\n firstItem._tabIndex = \"0\";\n firstItem.focus();\n }\n\n handleEndKey(e: KeyboardEvent): void {\n if (isEnd(e)) {\n e.preventDefault();\n\n if (this.isScrollableCountriesList) {\n this.removeScrollableClassInCountryList();\n }\n\n this.focusLastItem(e);\n }\n }\n\n handleHomeKey(e: KeyboardEvent): void {\n if (isHome(e)) {\n e.preventDefault();\n\n if (this.isScrollableCountriesList) {\n this.addScrollableClassToCountryList();\n }\n\n this.focusFirstItem(e);\n }\n }\n\n handleSingleRegionMode(): void {\n this.setActiveRegion(this.regionsData[0]);\n this.setActiveCountries([...this.regionsData[0].countries]);\n this._isActiveRegionOpen = true;\n }\n\n focusBackBtn(): void {\n const backBtn = this.shadowRoot?.querySelector<HTMLElement>(\".udex-masthead-country-selector__region-back-item\") || null;\n backBtn?.focus();\n }\n\n focusRegionByIndex(): void {\n const regionItems = this.shadowRoot?.querySelectorAll<HTMLElement>(\".udex-masthead-country-selector__item_region\") || [];\n regionItems[this._activeRegionIndex].focus();\n }\n\n fireEventRegionItemClick(e: CustomEvent | KeyboardEvent): void {\n const item = e.target as UDExMastheadMenuItem;\n\n this.fireDecoratorEvent(\"region-item-click\", {\n item: {\n title: item.label,\n countries: this._activeRegion?.countries || [],\n },\n originalEvent: e,\n analyticsName: AnalyticsName.Header,\n sourceNode: item.shadowRoot?.querySelector(\".udex-masthead-menu-item\") as HTMLElement,\n });\n }\n\n fireEventCountryItemClick(e: CustomEvent | KeyboardEvent): void {\n const item = e.target as UDExMastheadMenuItem;\n const { label, url } = item;\n\n this.fireDecoratorEvent(\"country-item-click\", {\n item: {\n displayTitle: label,\n countryCode: item.getAttribute(\"_country-code\") || \"\",\n url: url || \"\",\n },\n originalEvent: e,\n analyticsName: AnalyticsName.Header,\n sourceNode: item.shadowRoot?.querySelector(\".udex-masthead-menu-item\") as HTMLElement,\n });\n }\n\n setActiveRegion(region: Region | null): void {\n this._activeRegion = region;\n }\n\n setActiveCountries(countries: Array<Country>): void {\n this._activeCountries = countries;\n }\n\n setTabIndexForItems(): void {\n this.items.forEach((item, index) => {\n if (this._activeRegionIndex > 0 && this._shouldFocusRegionByIndex) {\n item._tabIndex = index === this._activeRegionIndex ? \"0\" : \"-1\";\n return;\n }\n\n item._tabIndex = index === 0 ? \"0\" : \"-1\";\n });\n }\n\n closeMenu():void {\n this._mastheadShell.closeMobileMenu();\n this._mastheadShell.mobileBtn?.focus();\n }\n\n checkScrollableCountriesList(): void {\n if (this.countryListHolder) {\n requestAnimationFrame(() => {\n if (this.isScrollableCountriesList) {\n this.addScrollableClassToCountryList();\n } else {\n this.removeScrollableClassInCountryList();\n }\n });\n }\n }\n\n handleCountryListShadowVisible(): void {\n if (this.scrollBottomCountriesList === 0) {\n this.removeScrollableClassInCountryList();\n } else {\n this.addScrollableClassToCountryList();\n }\n }\n\n addScrollableClassToCountryList(): void {\n this.countryListHolder.classList.add(`${this._countriesListHolderClassName}_scrollable`);\n }\n\n removeScrollableClassInCountryList(): void {\n this.countryListHolder.classList.remove(`${this._countriesListHolderClassName}_scrollable`);\n }\n\n isActiveCountry(countryCode: string, url: string): boolean {\n const matchedURL = this.activeCountryUrl?.toUpperCase() === url.toUpperCase();\n const matchedCode = this.activeCountryCode?.toUpperCase() === countryCode.toUpperCase();\n return matchedURL && matchedCode;\n }\n\n get scrollBottomCountriesList(): number {\n const countriesList = this.countryListHolder;\n return countriesList.scrollHeight - countriesList.scrollTop - countriesList.clientHeight;\n }\n\n get isScrollableCountriesList(): boolean {\n const countriesList = this.countryListHolder;\n return countriesList ? countriesList.scrollHeight > countriesList.clientHeight : false;\n }\n\n get countryListHolder(): HTMLElement {\n return this.shadowRoot?.querySelector<HTMLElement>(`.${this._countriesListHolderClassName}`) as HTMLElement;\n }\n\n get noMatchesFoundText(): string {\n return translate(UDExMastheadCountrySelector, NO_MATCHES_FOUND);\n }\n\n get resultReturnedText(): string {\n return translate(UDExMastheadCountrySelector, RESULT_RETURNED);\n }\n\n get items(): Array<UDExMastheadMenuItem> {\n const items = this.shadowRoot?.querySelectorAll<UDExMastheadMenuItem>(`.${this._itemClassName}`);\n return items ? Array.from(items) : [];\n }\n\n get regionsData(): Array<Region> {\n const regions: Array<Region> = this.regions ? JSON.parse(this.regions) as Array<Region> : [];\n return regions.map(region => ({\n ...region,\n countries: region.countries.map(country => ({\n ...country,\n active: this.isActiveCountry(country.countryCode, country.url),\n })),\n }));\n }\n\n get isRtlDirection(): boolean {\n return this._direction === \"rtl\";\n }\n\n get homeSearchMode(): UDExSearchMode {\n return UDExSearchMode.HomeSearch;\n }\n\n get isSingleMode(): boolean {\n return this.regionsData.length === 1;\n }\n\n get isMobile(): boolean {\n return BreakpointUtils.isAtMost(\"M\") || this.mastheadShell?._isMobileMode;\n }\n\n get mastheadShell(): UDExMastheadShell {\n return document.querySelector<UDExMastheadShell>(\"[udex-masthead-shell]\")!;\n }\n}\n\nUDExMastheadCountrySelector.define();\n\nexport default UDExMastheadCountrySelector;\nexport type { UDExMastheadCountrySelectorSearchEventDetail, UDExMastheadCountrySelectorItemClickEventDetail, UDExMastheadCountrySelectorRegionClickEventDetail };\n"]}
|
package/dist/MessageStrip.d.ts
CHANGED
|
@@ -30,6 +30,20 @@ declare class UDExMessageStrip extends MessageStrip {
|
|
|
30
30
|
* @public
|
|
31
31
|
*/
|
|
32
32
|
hideCloseButton: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Defines accessible name for close icon
|
|
35
|
+
*
|
|
36
|
+
* @default ""
|
|
37
|
+
* @public
|
|
38
|
+
*/
|
|
39
|
+
closeIconAccessibleName: string;
|
|
40
|
+
/**
|
|
41
|
+
* Defines tooltip for close icon
|
|
42
|
+
*
|
|
43
|
+
* @default ""
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
closeIconTooltip: string;
|
|
33
47
|
/**
|
|
34
48
|
* Defines the content of the component.
|
|
35
49
|
*
|
package/dist/MessageStrip.js
CHANGED
|
@@ -83,7 +83,7 @@ let UDExMessageStrip = UDExMessageStrip_1 = class UDExMessageStrip extends Messa
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
get _closeButtonText() {
|
|
86
|
-
return `${this.textStatus ?? ""} ${this.getTranslation(MESSAGE_STRIP_CLOSE_BUTTON)}`;
|
|
86
|
+
return this.closeIconTooltip || `${this.textStatus ?? ""} ${this.getTranslation(MESSAGE_STRIP_CLOSE_BUTTON)}`;
|
|
87
87
|
}
|
|
88
88
|
get isNotIconStatusType() {
|
|
89
89
|
return this.statusType !== UDExMessageStripStatusType.Icon;
|
|
@@ -108,6 +108,12 @@ __decorate([
|
|
|
108
108
|
__decorate([
|
|
109
109
|
property({ type: Boolean })
|
|
110
110
|
], UDExMessageStrip.prototype, "hideCloseButton", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
property()
|
|
113
|
+
], UDExMessageStrip.prototype, "closeIconAccessibleName", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
property()
|
|
116
|
+
], UDExMessageStrip.prototype, "closeIconTooltip", void 0);
|
|
111
117
|
__decorate([
|
|
112
118
|
slot({ type: Node })
|
|
113
119
|
], UDExMessageStrip.prototype, "default", void 0);
|
package/dist/MessageStrip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageStrip.js","sourceRoot":"","sources":["../src/MessageStrip.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,YAAY,MAAM,yCAAyC,CAAC;AACnE,OAAO,IAAI,MAAM,iDAAiD,CAAC;AAGnE,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAE7C,WAAW;AACX,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,SAAS;AACT,OAAO,eAAe,MAAM,wCAAwC,CAAC;AAErE;;;;;;;GAOG;AAQH,IAAM,gBAAgB,wBAAtB,MAAM,gBAAiB,SAAQ,YAAY;IAA3C;;QACE;;;;WAIG;QAGD,WAAM,GAAiC,sBAAsB,CAAC,MAAM,CAAC;QAEvE;;;;WAIG;QAED,eAAU,GAAoC,0BAA0B,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageStrip.js","sourceRoot":"","sources":["../src/MessageStrip.ts"],"names":[],"mappings":"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","sourcesContent":["import 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 jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport MessageStrip from \"@ui5/webcomponents/dist/MessageStrip.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { I18nText } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport {\n MESSAGE_STRIP_ERROR,\n MESSAGE_STRIP_INFORMATION,\n MESSAGE_STRIP_SUCCESS,\n MESSAGE_STRIP_WARNING,\n MESSAGE_STRIP_ACTION,\n MESSAGE_STRIP_CLOSE_BUTTON,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport { UDExMessageStripDesign, UDExMessageStripStatusType } from \"./types/MessageStrip.js\";\nimport translate from \"./utils/translate.js\";\n\n// Template\nimport MessageStripTemplate from \"./MessageStripTemplate.js\";\n\n// Styles\nimport MessageStripCss from \"./generated/themes/MessageStrip.css.js\";\n\n/**\n * @class\n *\n * @constructor\n * @extends MessageStrip\n * @tagname udex-message-strip\n * @public\n */\n@customElement({\n tag: \"udex-message-strip\",\n renderer: jsxRenderer,\n styles: [MessageStrip.styles, MessageStripCss],\n template: MessageStripTemplate,\n})\n\nclass UDExMessageStrip extends MessageStrip {\n /**\n * Defines the component type.\n *\n * @public\n */\n @property()\n /** @ts-expect-error */\n design!: `${UDExMessageStripDesign}` = UDExMessageStripDesign.Action;\n\n /**\n * Defines the component Status Type.\n *\n * @public\n */\n @property()\n statusType: `${UDExMessageStripStatusType}` = UDExMessageStripStatusType.Icon;\n\n /**\n * Defines whether the MessageStrip renders close button.\n *\n * @public\n */\n @property({ type: Boolean })\n hideCloseButton!: boolean;\n\n /**\n * Defines accessible name for close icon\n *\n * @default \"\"\n * @public\n */\n @property()\n closeIconAccessibleName!: string;\n\n /**\n * Defines tooltip for close icon\n *\n * @default \"\"\n * @public\n */\n @property()\n closeIconTooltip!: string;\n\n /**\n * Defines the content of the component.\n *\n * @slot\n * @public\n */\n @slot({ type: Node }) default!: Node;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n onBeforeRendering() {\n if (this.isDesignActionOrIsNotIconType) {\n this.hideIcon = true;\n }\n }\n\n getTranslation(text: I18nText): string {\n return translate(UDExMessageStrip, text);\n }\n\n textStatusTypeMapping(): Record<string, string> {\n return {\n [UDExMessageStripDesign.Information]: this.getTranslation(MESSAGE_STRIP_INFORMATION),\n [UDExMessageStripDesign.Positive]: this.getTranslation(MESSAGE_STRIP_SUCCESS),\n [UDExMessageStripDesign.Negative]: this.getTranslation(MESSAGE_STRIP_ERROR),\n [UDExMessageStripDesign.Warning]: this.getTranslation(MESSAGE_STRIP_WARNING),\n [UDExMessageStripDesign.Action]: this.getTranslation(MESSAGE_STRIP_ACTION),\n };\n }\n\n isDesignAction(): boolean {\n return this.design === UDExMessageStripDesign.Action;\n }\n\n get isDesignWarning(): boolean {\n return this.design === UDExMessageStripDesign.Warning;\n }\n\n _closeClick(): void {\n this.fireDecoratorEvent(\"close\");\n }\n\n get shouldHideIcon(): boolean {\n if (this.isDesignActionOrIsNotIconType) {\n return this.hideIcon || this.icon.length === 0;\n }\n\n return this.hideIcon;\n }\n\n get hideTextStatus(): boolean {\n return this.statusType !== UDExMessageStripStatusType.Text || this.isDesignAction();\n }\n\n get textStatus(): string | undefined {\n if (this.design !== UDExMessageStripDesign.Action) {\n return this.textStatusTypeMapping()[this.design];\n }\n }\n\n get _closeButtonText(): string {\n return this.closeIconTooltip || `${this.textStatus ?? \"\"} ${this.getTranslation(MESSAGE_STRIP_CLOSE_BUTTON)}`;\n }\n\n get isNotIconStatusType(): boolean {\n return this.statusType !== UDExMessageStripStatusType.Icon;\n }\n\n get hasIcon(): boolean {\n return this.icon.length > 0;\n }\n\n get isDesignActionOrIsNotIconType(): boolean {\n return this.isDesignAction() || this.isNotIconStatusType;\n }\n\n get hiddenText(): string {\n return `${this.textStatusTypeMapping()[this.design]} ${this.hideCloseButton ? \"\" : this._closableText}`;\n }\n}\n\nUDExMessageStrip.define();\n\nexport default UDExMessageStrip;\n"]}
|
|
@@ -17,7 +17,7 @@ export default function MessageStripTemplate() {
|
|
|
17
17
|
"ui5-message-strip-root-hide-close-button": this.hideCloseButton,
|
|
18
18
|
"ui5-message-strip-root--critical": this.isDesignWarning,
|
|
19
19
|
...(this.designClasses ? { [this.designClasses]: true } : {}),
|
|
20
|
-
}, id: this._id, role: "note", "aria-labelledby": this._id, children: [!this.shouldHideIcon && (_jsx("div", { class: "ui5-message-strip-icon-wrapper udex-message-strip", "aria-hidden": "true", children: this.hasIcon ? (_jsx("slot", { name: "icon" })) : (_jsx(Icon, { name: standardIconName.call(this), class: "ui5-message-strip-icon" })) })), _jsx("span", { class: "ui5-hidden-text", children: this.hiddenText }), _jsxs("span", { class: "ui5-message-strip-text message-strip__text", children: [!this.hideTextStatus && (_jsxs("strong", { class: "message-strip__text-status", children: [this.textStatus, ":"] })), _jsx("slot", {})] }), !this.hideCloseButton && (_jsx(UDExButton, { size: UDExButtonSize.Small, icon: decline, design: UDExButtonDesign.Tertiary, onClick: this._closeClick, tooltip: this._closeButtonText, part: "close-button" }))] }));
|
|
20
|
+
}, id: this._id, role: "note", "aria-labelledby": this._id, children: [!this.shouldHideIcon && (_jsx("div", { class: "ui5-message-strip-icon-wrapper udex-message-strip", "aria-hidden": "true", children: this.hasIcon ? (_jsx("slot", { name: "icon" })) : (_jsx(Icon, { name: standardIconName.call(this), class: "ui5-message-strip-icon" })) })), _jsx("span", { class: "ui5-hidden-text", children: this.hiddenText }), _jsxs("span", { class: "ui5-message-strip-text message-strip__text", children: [!this.hideTextStatus && (_jsxs("strong", { class: "message-strip__text-status", children: [this.textStatus, ":"] })), _jsx("slot", {})] }), !this.hideCloseButton && (_jsx(UDExButton, { size: UDExButtonSize.Small, icon: decline, design: UDExButtonDesign.Tertiary, onClick: this._closeClick, tooltip: this._closeButtonText, accessibleName: this.closeIconAccessibleName, part: "close-button" }))] }));
|
|
21
21
|
}
|
|
22
22
|
function standardIconName() {
|
|
23
23
|
switch (this.design) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageStripTemplate.js","sourceRoot":"","sources":["../src/MessageStripTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,OAAO,MAAM,0CAA0C,CAAC;AAC/D,OAAO,WAAW,MAAM,8CAA8C,CAAC;AACvE,OAAO,SAAS,MAAM,8CAA8C,CAAC;AACrE,OAAO,KAAK,MAAM,wCAAwC,CAAC;AAC3D,OAAO,KAAK,MAAM,wCAAwC,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,oBAAoB;IAC1C,OAAO,CACL,eACE,KAAK,EAAE;YACL,oBAAoB,EAAE,IAAI;YAC1B,wBAAwB,EAAE,IAAI;YAC9B,kCAAkC,EAAE,IAAI,CAAC,cAAc;YACvD,0CAA0C,EAAE,IAAI,CAAC,eAAe;YAChE,kCAAkC,EAAE,IAAI,CAAC,eAAe;YACxD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,EACD,EAAE,EAAE,IAAI,CAAC,GAAG,EACZ,IAAI,EAAC,MAAM,qBACM,IAAI,CAAC,GAAG,aAExB,CAAC,IAAI,CAAC,cAAc,IAAI,CACvB,cACE,KAAK,EAAC,mDAAmD,iBAC7C,MAAM,YAEjB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACd,eAAM,IAAI,EAAC,MAAM,GAAQ,CAC1B,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IACH,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,KAAK,EAAC,wBAAwB,GAC9B,CACH,GACG,CACP,EACD,eAAM,KAAK,EAAC,iBAAiB,YAAE,IAAI,CAAC,UAAU,GAAQ,EACtD,gBAAM,KAAK,EAAC,4CAA4C,aACrD,CAAC,IAAI,CAAC,cAAc,IAAI,CACvB,kBAAQ,KAAK,EAAC,4BAA4B,aAAE,IAAI,CAAC,UAAU,SAAW,CACvE,EACD,gBAAa,IACR,EACN,CAAC,IAAI,CAAC,eAAe,IAAI,CACxB,KAAC,UAAU,IACT,IAAI,EAAE,cAAc,CAAC,KAAK,EAC1B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EACjC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,IAAI,EAAC,cAAc,GACnB,CACH,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,sBAAsB,CAAC,OAAO;YACjC,OAAO,KAAK,CAAC;QACf,KAAK,sBAAsB,CAAC,QAAQ;YAClC,OAAO,SAAS,CAAC;QACnB,KAAK,sBAAsB,CAAC,QAAQ;YAClC,OAAO,KAAK,CAAC;QACf,KAAK,sBAAsB,CAAC,WAAW;YACrC,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC","sourcesContent":["import type UDExMessageStrip from \"./MessageStrip.js\";\nimport UDExButton from \"./Button.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport decline from \"@ui5/webcomponents-icons/dist/decline.js\";\nimport information from \"@ui5/webcomponents-icons/dist/information.js\";\nimport sysEnter2 from \"@ui5/webcomponents-icons/dist/sys-enter-2.js\";\nimport error from \"@ui5/webcomponents-icons/dist/error.js\";\nimport alert from \"@ui5/webcomponents-icons/dist/alert.js\";\nimport { UDExMessageStripDesign } from \"./types/MessageStrip.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\n\nexport default function MessageStripTemplate(this: UDExMessageStrip) {\n return (\n <div\n class={{\n \"udex-message-strip\": true,\n \"ui5-message-strip-root\": true,\n \"ui5-message-strip-root-hide-icon\": this.shouldHideIcon,\n \"ui5-message-strip-root-hide-close-button\": this.hideCloseButton,\n \"ui5-message-strip-root--critical\": this.isDesignWarning,\n ...(this.designClasses ? { [this.designClasses]: true } : {}),\n }}\n id={this._id}\n role=\"note\"\n aria-labelledby={this._id}\n >\n {!this.shouldHideIcon && (\n <div\n class=\"ui5-message-strip-icon-wrapper udex-message-strip\"\n aria-hidden=\"true\"\n >\n {this.hasIcon ? (\n <slot name=\"icon\"></slot>\n ) : (\n <Icon\n name={standardIconName.call(this)}\n class=\"ui5-message-strip-icon\"\n />\n )}\n </div>\n )}\n <span class=\"ui5-hidden-text\">{this.hiddenText}</span>\n <span class=\"ui5-message-strip-text message-strip__text\">\n {!this.hideTextStatus && (\n <strong class=\"message-strip__text-status\">{this.textStatus}:</strong>\n )}\n <slot></slot>\n </span>\n {!this.hideCloseButton && (\n <UDExButton\n size={UDExButtonSize.Small}\n icon={decline}\n design={UDExButtonDesign.Tertiary}\n onClick={this._closeClick}\n tooltip={this._closeButtonText}\n part=\"close-button\"\n />\n )}\n </div>\n );\n}\n\nfunction standardIconName(this: UDExMessageStrip) {\n switch (this.design) {\n case UDExMessageStripDesign.Warning:\n return alert;\n case UDExMessageStripDesign.Positive:\n return sysEnter2;\n case UDExMessageStripDesign.Negative:\n return error;\n case UDExMessageStripDesign.Information:\n return information;\n default:\n return undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MessageStripTemplate.js","sourceRoot":"","sources":["../src/MessageStripTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,OAAO,MAAM,0CAA0C,CAAC;AAC/D,OAAO,WAAW,MAAM,8CAA8C,CAAC;AACvE,OAAO,SAAS,MAAM,8CAA8C,CAAC;AACrE,OAAO,KAAK,MAAM,wCAAwC,CAAC;AAC3D,OAAO,KAAK,MAAM,wCAAwC,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,oBAAoB;IAC1C,OAAO,CACL,eACE,KAAK,EAAE;YACL,oBAAoB,EAAE,IAAI;YAC1B,wBAAwB,EAAE,IAAI;YAC9B,kCAAkC,EAAE,IAAI,CAAC,cAAc;YACvD,0CAA0C,EAAE,IAAI,CAAC,eAAe;YAChE,kCAAkC,EAAE,IAAI,CAAC,eAAe;YACxD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,EACD,EAAE,EAAE,IAAI,CAAC,GAAG,EACZ,IAAI,EAAC,MAAM,qBACM,IAAI,CAAC,GAAG,aAExB,CAAC,IAAI,CAAC,cAAc,IAAI,CACvB,cACE,KAAK,EAAC,mDAAmD,iBAC7C,MAAM,YAEjB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACd,eAAM,IAAI,EAAC,MAAM,GAAQ,CAC1B,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IACH,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,KAAK,EAAC,wBAAwB,GAC9B,CACH,GACG,CACP,EACD,eAAM,KAAK,EAAC,iBAAiB,YAAE,IAAI,CAAC,UAAU,GAAQ,EACtD,gBAAM,KAAK,EAAC,4CAA4C,aACrD,CAAC,IAAI,CAAC,cAAc,IAAI,CACvB,kBAAQ,KAAK,EAAC,4BAA4B,aAAE,IAAI,CAAC,UAAU,SAAW,CACvE,EACD,gBAAa,IACR,EACN,CAAC,IAAI,CAAC,eAAe,IAAI,CACxB,KAAC,UAAU,IACT,IAAI,EAAE,cAAc,CAAC,KAAK,EAC1B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EACjC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,cAAc,EAAE,IAAI,CAAC,uBAAuB,EAC5C,IAAI,EAAC,cAAc,GACnB,CACH,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,sBAAsB,CAAC,OAAO;YACjC,OAAO,KAAK,CAAC;QACf,KAAK,sBAAsB,CAAC,QAAQ;YAClC,OAAO,SAAS,CAAC;QACnB,KAAK,sBAAsB,CAAC,QAAQ;YAClC,OAAO,KAAK,CAAC;QACf,KAAK,sBAAsB,CAAC,WAAW;YACrC,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC","sourcesContent":["import type UDExMessageStrip from \"./MessageStrip.js\";\nimport UDExButton from \"./Button.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport decline from \"@ui5/webcomponents-icons/dist/decline.js\";\nimport information from \"@ui5/webcomponents-icons/dist/information.js\";\nimport sysEnter2 from \"@ui5/webcomponents-icons/dist/sys-enter-2.js\";\nimport error from \"@ui5/webcomponents-icons/dist/error.js\";\nimport alert from \"@ui5/webcomponents-icons/dist/alert.js\";\nimport { UDExMessageStripDesign } from \"./types/MessageStrip.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\n\nexport default function MessageStripTemplate(this: UDExMessageStrip) {\n return (\n <div\n class={{\n \"udex-message-strip\": true,\n \"ui5-message-strip-root\": true,\n \"ui5-message-strip-root-hide-icon\": this.shouldHideIcon,\n \"ui5-message-strip-root-hide-close-button\": this.hideCloseButton,\n \"ui5-message-strip-root--critical\": this.isDesignWarning,\n ...(this.designClasses ? { [this.designClasses]: true } : {}),\n }}\n id={this._id}\n role=\"note\"\n aria-labelledby={this._id}\n >\n {!this.shouldHideIcon && (\n <div\n class=\"ui5-message-strip-icon-wrapper udex-message-strip\"\n aria-hidden=\"true\"\n >\n {this.hasIcon ? (\n <slot name=\"icon\"></slot>\n ) : (\n <Icon\n name={standardIconName.call(this)}\n class=\"ui5-message-strip-icon\"\n />\n )}\n </div>\n )}\n <span class=\"ui5-hidden-text\">{this.hiddenText}</span>\n <span class=\"ui5-message-strip-text message-strip__text\">\n {!this.hideTextStatus && (\n <strong class=\"message-strip__text-status\">{this.textStatus}:</strong>\n )}\n <slot></slot>\n </span>\n {!this.hideCloseButton && (\n <UDExButton\n size={UDExButtonSize.Small}\n icon={decline}\n design={UDExButtonDesign.Tertiary}\n onClick={this._closeClick}\n tooltip={this._closeButtonText}\n accessibleName={this.closeIconAccessibleName}\n part=\"close-button\"\n />\n )}\n </div>\n );\n}\n\nfunction standardIconName(this: UDExMessageStrip) {\n switch (this.design) {\n case UDExMessageStripDesign.Warning:\n return alert;\n case UDExMessageStripDesign.Positive:\n return sysEnter2;\n case UDExMessageStripDesign.Negative:\n return error;\n case UDExMessageStripDesign.Information:\n return information;\n default:\n return undefined;\n }\n}\n"]}
|
package/dist/PromoTile.d.ts
CHANGED
|
@@ -37,6 +37,13 @@ declare class UDExPromoTile extends UI5Element {
|
|
|
37
37
|
* @public
|
|
38
38
|
*/
|
|
39
39
|
content: Array<HTMLElement>;
|
|
40
|
+
/**
|
|
41
|
+
* Defines the custom pictogram of the Promo Tile.
|
|
42
|
+
*
|
|
43
|
+
* @slot pictogram
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
pictogram?: Array<HTMLElement>;
|
|
40
47
|
/**
|
|
41
48
|
* Defines the orientation of the Promo Tile component.
|
|
42
49
|
*
|
|
@@ -123,11 +130,11 @@ declare class UDExPromoTile extends UI5Element {
|
|
|
123
130
|
getColorNumber(colorScheme: string): number;
|
|
124
131
|
checkColorMode(colorScheme: string): UDExPromoTileMode;
|
|
125
132
|
checkEyebrowColor(colorScheme: string): string;
|
|
133
|
+
handleCTAButtonClick(e: Event): void;
|
|
126
134
|
get isMobile(): boolean;
|
|
127
135
|
get promoTileContainerText(): string;
|
|
128
136
|
get _showPictogram(): boolean;
|
|
129
137
|
get _showLogo(): boolean;
|
|
130
138
|
get _imageLabel(): string;
|
|
131
|
-
handleCTAButtonClick(e: Event): void;
|
|
132
139
|
}
|
|
133
140
|
export default UDExPromoTile;
|
package/dist/PromoTile.js
CHANGED
|
@@ -20,9 +20,9 @@ import { BreakpointUtils } from "./utils/Breakpoints.js";
|
|
|
20
20
|
import UDExButtonSize from "./types/ButtonSize.js";
|
|
21
21
|
import UDExButtonDesign from "./types/ButtonDesign.js";
|
|
22
22
|
import { UDExPromoTileColorScheme, UDExPromoTileMode } from "./types/PromoTile.js";
|
|
23
|
+
import translate from "./utils/translate.js";
|
|
23
24
|
// Styles
|
|
24
25
|
import PromoTileCss from "./generated/themes/PromoTile.css.js";
|
|
25
|
-
import translate from "./utils/translate.js";
|
|
26
26
|
export var UDExOrientation;
|
|
27
27
|
(function (UDExOrientation) {
|
|
28
28
|
UDExOrientation["Vertical"] = "Vertical";
|
|
@@ -122,6 +122,10 @@ let UDExPromoTile = UDExPromoTile_1 = class UDExPromoTile extends UI5Element {
|
|
|
122
122
|
}
|
|
123
123
|
return color;
|
|
124
124
|
}
|
|
125
|
+
handleCTAButtonClick(e) {
|
|
126
|
+
e.preventDefault();
|
|
127
|
+
this.fireDecoratorEvent("button-click");
|
|
128
|
+
}
|
|
125
129
|
get isMobile() {
|
|
126
130
|
return BreakpointUtils.isAtMost("S");
|
|
127
131
|
}
|
|
@@ -129,7 +133,7 @@ let UDExPromoTile = UDExPromoTile_1 = class UDExPromoTile extends UI5Element {
|
|
|
129
133
|
return this.accessibleName || this.header || translate(UDExPromoTile_1, PROMO_TILE);
|
|
130
134
|
}
|
|
131
135
|
get _showPictogram() {
|
|
132
|
-
return !!this.icon || !!this.logoUrl;
|
|
136
|
+
return !!this.icon || !!this.logoUrl || !!this.pictogram?.length;
|
|
133
137
|
}
|
|
134
138
|
get _showLogo() {
|
|
135
139
|
return !this.icon && !!this.logoUrl;
|
|
@@ -137,14 +141,13 @@ let UDExPromoTile = UDExPromoTile_1 = class UDExPromoTile extends UI5Element {
|
|
|
137
141
|
get _imageLabel() {
|
|
138
142
|
return this.imageLabel || translate(UDExPromoTile_1, PROMO_TILE_ICON);
|
|
139
143
|
}
|
|
140
|
-
handleCTAButtonClick(e) {
|
|
141
|
-
e.preventDefault();
|
|
142
|
-
this.fireDecoratorEvent("button-click");
|
|
143
|
-
}
|
|
144
144
|
};
|
|
145
145
|
__decorate([
|
|
146
146
|
slot({ type: HTMLElement, "default": true })
|
|
147
147
|
], UDExPromoTile.prototype, "content", void 0);
|
|
148
|
+
__decorate([
|
|
149
|
+
slot({ type: HTMLElement })
|
|
150
|
+
], UDExPromoTile.prototype, "pictogram", void 0);
|
|
148
151
|
__decorate([
|
|
149
152
|
property()
|
|
150
153
|
], UDExPromoTile.prototype, "orientation", void 0);
|