@sapudex/web-components 2.15.0 → 2.16.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/cypress/specs/HeroBanner.cy.tsx +6 -6
- package/cypress/specs/PasswordField.cy.tsx +91 -0
- package/cypress/specs/RatingBar.cy.tsx +41 -0
- package/cypress/specs/Tooltip.cy.tsx +6 -11
- package/cypress/support/component-imports.instrumented.ts +3 -1
- package/cypress/support/component-imports.src.ts +3 -1
- package/dist/Accordion.js +44 -30
- package/dist/Accordion.js.map +1 -1
- package/dist/AvatarGroup.d.ts +1 -0
- package/dist/AvatarGroup.js +8 -4
- package/dist/AvatarGroup.js.map +1 -1
- package/dist/Footer.d.ts +17 -21
- package/dist/Footer.js +5 -11
- package/dist/Footer.js.map +1 -1
- package/dist/FooterTemplate.d.ts +2 -0
- package/dist/FooterTemplate.js +27 -0
- package/dist/FooterTemplate.js.map +1 -0
- package/dist/HeroBanner.js +4 -4
- package/dist/HeroBanner.js.map +1 -1
- package/dist/HeroBannerTemplate.d.ts +2 -0
- package/dist/HeroBannerTemplate.js +10 -0
- package/dist/HeroBannerTemplate.js.map +1 -0
- package/dist/LinkListItemTemplate.js +1 -1
- package/dist/LinkListItemTemplate.js.map +1 -1
- package/dist/List.js +7 -1
- package/dist/List.js.map +1 -1
- package/dist/ListGroupHeader.js +7 -1
- package/dist/ListGroupHeader.js.map +1 -1
- package/dist/ListSelectAll.js +7 -1
- package/dist/ListSelectAll.js.map +1 -1
- package/dist/PasswordField.d.ts +3 -5
- package/dist/PasswordField.js +6 -8
- package/dist/PasswordField.js.map +1 -1
- package/dist/PasswordFieldTemplate.d.ts +4 -0
- package/dist/PasswordFieldTemplate.js +8 -0
- package/dist/PasswordFieldTemplate.js.map +1 -0
- package/dist/RatingBar.js +3 -3
- package/dist/RatingBar.js.map +1 -1
- package/dist/RatingBarTemplate.d.ts +2 -0
- package/dist/RatingBarTemplate.js +8 -0
- package/dist/RatingBarTemplate.js.map +1 -0
- package/dist/StatusBadge.js +3 -3
- package/dist/StatusBadge.js.map +1 -1
- package/dist/StatusBadgeTemplate.d.ts +2 -0
- package/dist/StatusBadgeTemplate.js +7 -0
- package/dist/StatusBadgeTemplate.js.map +1 -0
- package/dist/StatusMessage.js +3 -3
- package/dist/StatusMessage.js.map +1 -1
- package/dist/StatusMessageTemplate.d.ts +2 -0
- package/dist/StatusMessageTemplate.js +8 -0
- package/dist/StatusMessageTemplate.js.map +1 -0
- package/dist/Switch.d.ts +1 -4
- package/dist/Switch.js +4 -8
- package/dist/Switch.js.map +1 -1
- package/dist/SwitchTemplate.d.ts +2 -0
- package/dist/SwitchTemplate.js +12 -0
- package/dist/SwitchTemplate.js.map +1 -0
- package/dist/TagGroup.d.ts +2 -0
- package/dist/TagGroup.js +10 -3
- package/dist/TagGroup.js.map +1 -1
- package/dist/TextField.d.ts +5 -3
- package/dist/TextField.js +5 -3
- package/dist/TextField.js.map +1 -1
- package/dist/Tooltip.d.ts +5 -0
- package/dist/Tooltip.js.map +1 -1
- package/dist/assets/{InputSuggestions-D5z6eIC2.js → InputSuggestions-C-OeoyHk.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-BKeYxhnX.js → ListItemStandardExpandableTextTemplate-D05JXl_S.js} +1 -1
- package/dist/assets/{bundle.esm-DXwtYGLH.js → bundle.esm-jB2aQPid.js} +208 -208
- package/dist/css/themes/AccordionItem.css +1 -1
- package/dist/css/themes/CountrySelector.css +1 -1
- package/dist/css/themes/Link.css +1 -1
- package/dist/css/themes/PhoneNumberField.css +1 -1
- package/dist/css/themes/RatingBar.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Search.css +1 -1
- package/dist/css/themes/SelectBox.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/TextArea.css +1 -1
- package/dist/css/themes/TextField.css +1 -1
- package/dist/custom-elements-internal.json +214 -141
- package/dist/custom-elements.json +187 -126
- package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
- package/dist/generated/themes/AccordionItem.css.js +1 -1
- package/dist/generated/themes/AccordionItem.css.js.map +1 -1
- package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
- package/dist/generated/themes/CountrySelector.css.js +1 -1
- package/dist/generated/themes/CountrySelector.css.js.map +1 -1
- package/dist/generated/themes/Link.css.d.ts +1 -1
- package/dist/generated/themes/Link.css.js +1 -1
- package/dist/generated/themes/Link.css.js.map +1 -1
- package/dist/generated/themes/PhoneNumberField.css.d.ts +1 -1
- package/dist/generated/themes/PhoneNumberField.css.js +1 -1
- package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
- package/dist/generated/themes/RatingBar.css.d.ts +1 -1
- package/dist/generated/themes/RatingBar.css.js +1 -1
- package/dist/generated/themes/RatingBar.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/SelectBox.css.d.ts +1 -1
- package/dist/generated/themes/SelectBox.css.js +1 -1
- package/dist/generated/themes/SelectBox.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/TextArea.css.d.ts +1 -1
- package/dist/generated/themes/TextArea.css.js +1 -1
- package/dist/generated/themes/TextArea.css.js.map +1 -1
- package/dist/generated/themes/TextField.css.d.ts +1 -1
- package/dist/generated/themes/TextField.css.js +1 -1
- package/dist/generated/themes/TextField.css.js.map +1 -1
- package/dist/vscode.html-custom-data.json +21 -3
- package/dist/web-types.json +60 -6
- package/package.json +1 -1
- package/src/Accordion.ts +56 -26
- package/src/AvatarGroup.ts +10 -5
- package/src/Footer.ts +28 -35
- package/src/FooterTemplate.tsx +410 -0
- package/src/HeroBanner.ts +4 -4
- package/src/HeroBannerTemplate.tsx +101 -0
- package/src/LinkListItemTemplate.tsx +4 -1
- package/src/List.ts +5 -0
- package/src/ListGroupHeader.ts +5 -0
- package/src/ListSelectAll.ts +5 -1
- package/src/PasswordField.ts +7 -10
- package/src/PasswordFieldTemplate.tsx +29 -0
- package/src/RatingBar.ts +3 -3
- package/src/RatingBarTemplate.tsx +38 -0
- package/src/StatusBadge.ts +5 -4
- package/src/StatusBadgeTemplate.tsx +18 -0
- package/src/StatusMessage.ts +3 -3
- package/src/StatusMessageTemplate.tsx +20 -0
- package/src/Switch.ts +5 -11
- package/src/SwitchTemplate.tsx +50 -0
- package/src/TagGroup.ts +13 -3
- package/src/TextField.ts +5 -3
- package/src/Tooltip.ts +5 -0
- package/src/generated/themes/AccordionItem.css.ts +1 -1
- package/src/generated/themes/CountrySelector.css.ts +1 -1
- package/src/generated/themes/Link.css.ts +1 -1
- package/src/generated/themes/PhoneNumberField.css.ts +1 -1
- package/src/generated/themes/RatingBar.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/SelectBox.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/TextArea.css.ts +1 -1
- package/src/generated/themes/TextField.css.ts +1 -1
- package/src/themes/AccordionItem.css +0 -1
- package/src/themes/CountrySelector.css +0 -14
- package/src/themes/Link.css +11 -4
- package/src/themes/PhoneNumberField.css +6 -8
- package/src/themes/RatingBar.css +2 -2
- package/src/themes/Search.css +3 -3
- package/src/themes/SelectBox.css +4 -0
- package/src/themes/TextArea.css +6 -6
- package/src/themes/TextField.css +6 -10
- package/dist/generated/templates/FooterTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/FooterTemplate.lit.js +0 -39
- package/dist/generated/templates/FooterTemplate.lit.js.map +0 -1
- package/dist/generated/templates/PasswordFieldTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/PasswordFieldTemplate.lit.js +0 -7
- package/dist/generated/templates/PasswordFieldTemplate.lit.js.map +0 -1
- package/dist/generated/templates/RatingBarTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/RatingBarTemplate.lit.js +0 -8
- package/dist/generated/templates/RatingBarTemplate.lit.js.map +0 -1
- package/dist/generated/templates/StatusBadgeTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/StatusBadgeTemplate.lit.js +0 -7
- package/dist/generated/templates/StatusBadgeTemplate.lit.js.map +0 -1
- package/dist/generated/templates/StatusMessageTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/StatusMessageTemplate.lit.js +0 -8
- package/dist/generated/templates/StatusMessageTemplate.lit.js.map +0 -1
- package/dist/generated/templates/SwitchTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/SwitchTemplate.lit.js +0 -14
- package/dist/generated/templates/SwitchTemplate.lit.js.map +0 -1
- package/src/Footer.hbs +0 -296
- package/src/PasswordField.hbs +0 -18
- package/src/RatingBar.hbs +0 -11
- package/src/StatusBadge.hbs +0 -9
- package/src/StatusMessage.hbs +0 -6
- package/src/Switch.hbs +0 -35
- package/src/generated/templates/FooterTemplate.lit.ts +0 -43
- package/src/generated/templates/PasswordFieldTemplate.lit.ts +0 -11
- package/src/generated/templates/RatingBarTemplate.lit.ts +0 -12
- package/src/generated/templates/StatusBadgeTemplate.lit.ts +0 -11
- package/src/generated/templates/StatusMessageTemplate.lit.ts +0 -12
- package/src/generated/templates/SwitchTemplate.lit.ts +0 -18
|
@@ -8,9 +8,9 @@ const backgroundImageLabel = "Hero Banner background image label";
|
|
|
8
8
|
const backgroundImageSrc = "./stories/hero-banner/bg1.png";
|
|
9
9
|
const backgroundVideoSrc = "./stories/hero-banner-bg-video.mp4";
|
|
10
10
|
const mediaContentImage = "./stories/hero-banner/bg6.jpg";
|
|
11
|
-
const linearGradient = "linear-gradient(
|
|
11
|
+
const linearGradient = "linear-gradient(rgb(30, 87, 153) 0%, rgb(125, 185, 232) 100%)";
|
|
12
12
|
const contentText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis posuere in massa id fringilla. Nunc rutrum turpis purus, et dignissim arcu gravida ut. Morbi sed sem ac magna consectetur tincidunt dapibus sed ipsum.";
|
|
13
|
-
const backgroundColor = "
|
|
13
|
+
const backgroundColor = "rgb(251, 218, 185)";
|
|
14
14
|
|
|
15
15
|
const heroBanner = <>
|
|
16
16
|
<UDExHeroBanner
|
|
@@ -115,7 +115,7 @@ describe("Hero Banner component", () => {
|
|
|
115
115
|
});
|
|
116
116
|
|
|
117
117
|
it("tests if correct background color is applied", () => {
|
|
118
|
-
cy.get("@heroBannerDefault").find(".udex-hero-banner").should("have.attr", "style", `background-color: ${backgroundColor}
|
|
118
|
+
cy.get("@heroBannerDefault").find(".udex-hero-banner").should("have.attr", "style", `background-color: ${backgroundColor};`);
|
|
119
119
|
});
|
|
120
120
|
|
|
121
121
|
it("tests if correct breadcrumbs is applied", () => {
|
|
@@ -143,14 +143,14 @@ describe("Hero Banner component", () => {
|
|
|
143
143
|
});
|
|
144
144
|
|
|
145
145
|
it("tests if correct background video label is applied", () => {
|
|
146
|
-
cy.get("@videoBackground").find("video.udex-hero-banner__background-video").should("have.attr", "
|
|
146
|
+
cy.get("@videoBackground").find("video.udex-hero-banner__background-video").should("have.attr", "aria-label", backgroundVideoLabel);
|
|
147
147
|
});
|
|
148
148
|
});
|
|
149
149
|
|
|
150
150
|
describe("Hero Banner with gradient", () => {
|
|
151
151
|
it("tests if correct gradient background is applied", () => {
|
|
152
152
|
cy.mount(heroBannerWithGradient);
|
|
153
|
-
cy.get("#heroBannerWithGradient").shadow().find(".udex-hero-banner").should("have.attr", "style", `background-color: transparent; background-image
|
|
153
|
+
cy.get("#heroBannerWithGradient").shadow().find(".udex-hero-banner").should("have.attr", "style", `background-color: transparent; background-image: ${linearGradient};`);
|
|
154
154
|
});
|
|
155
155
|
});
|
|
156
156
|
|
|
@@ -164,7 +164,7 @@ describe("Hero Banner component", () => {
|
|
|
164
164
|
});
|
|
165
165
|
|
|
166
166
|
it("tests if defaults for properties are correctly applied", () => {
|
|
167
|
-
cy.get("#heroBannerWithAdditionalContent").shadow().find(".udex-hero-banner").should("have.attr", "style", "background-color: transparent;
|
|
167
|
+
cy.get("#heroBannerWithAdditionalContent").shadow().find(".udex-hero-banner").should("have.attr", "style", "background-color: transparent;");
|
|
168
168
|
|
|
169
169
|
cy.get("#heroBannerWithAdditionalContent").shadow().find(".udex-hero-banner__background-image").should("not.exist");
|
|
170
170
|
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { UDExPasswordField } from "../support/component-imports.js";
|
|
2
|
+
|
|
3
|
+
const fieldAutocomplete = "on";
|
|
4
|
+
const fieldValue = "test";
|
|
5
|
+
const fieldMaxLength = 5;
|
|
6
|
+
const fieldLabel = "Label";
|
|
7
|
+
const fieldState = "Error";
|
|
8
|
+
const fieldText = "Supporting Text";
|
|
9
|
+
const fieldIcon = "show";
|
|
10
|
+
const fieldTooltip = "Tooltip";
|
|
11
|
+
const fieldACCName = "Accessible Name";
|
|
12
|
+
const fieldACCNameRef = "Accessible Name Ref";
|
|
13
|
+
|
|
14
|
+
const defaultPasswordField = <UDExPasswordField></UDExPasswordField>
|
|
15
|
+
const customPasswordField = <UDExPasswordField
|
|
16
|
+
autocomplete={fieldAutocomplete}
|
|
17
|
+
value={fieldValue}
|
|
18
|
+
maxlength={fieldMaxLength}
|
|
19
|
+
label={fieldLabel}
|
|
20
|
+
show-asterisk
|
|
21
|
+
value-state={fieldState}
|
|
22
|
+
supporting-text={fieldText}
|
|
23
|
+
show-button-enabled
|
|
24
|
+
show-button-tooltip={fieldTooltip}
|
|
25
|
+
accessible-name={fieldACCName}
|
|
26
|
+
accessible-name-ref={fieldACCNameRef}></UDExPasswordField>
|
|
27
|
+
const disabledPasswordField = <UDExPasswordField id="disabled" label={fieldLabel} disabled></UDExPasswordField>
|
|
28
|
+
const readonlyPasswordField = <UDExPasswordField id="readonly" label={fieldLabel} readonly></UDExPasswordField>
|
|
29
|
+
const displayonlyPasswordField = <UDExPasswordField id="displayonly" label={fieldLabel} displayonly></UDExPasswordField>
|
|
30
|
+
|
|
31
|
+
describe("Password Field", () => {
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
cy.mount(defaultPasswordField);
|
|
34
|
+
});
|
|
35
|
+
it("renders password field", () => {
|
|
36
|
+
cy.get("[udex-password-field]").shadow().find("[udex-text-field]").should("be.visible");
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("renders with default attributes", () => {
|
|
40
|
+
cy.get("[udex-password-field]").should("have.attr", "value-state", "Standard");
|
|
41
|
+
cy.get("[udex-password-field]").should("have.attr", "autocomplete", "off");
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
describe("Attributes propagation", () => {
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
cy.mount(customPasswordField);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("renders with autocomplete on", () => {
|
|
51
|
+
cy.get("[udex-password-field]").shadow().find("[udex-text-field]").shadow().find(".udex-text-field__container input").should("have.attr", "autocomplete", fieldAutocomplete);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it("renders with custom value", () => {
|
|
55
|
+
cy.get("[udex-password-field]").shadow().find("[udex-text-field]").shadow().find(".udex-text-field__container input").should("have.value", fieldValue);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("renders as required with label", () => {
|
|
59
|
+
cy.get("[udex-password-field]").shadow().find("[udex-text-field]").shadow().find(".udex-text-field__container label").should("have.text", `${fieldLabel} *`);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it("renders with error stare", () => {
|
|
63
|
+
cy.get("[udex-password-field]").shadow().find("[udex-text-field]").should("have.attr", "value-state", fieldState);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it("renders with supporting text", () => {
|
|
67
|
+
cy.get("[udex-password-field]").shadow().find("[udex-text-field]").shadow().find("[udex-status-message]").should("have.attr", "supporting-text", fieldText);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it("renders with enabled button", () => {
|
|
71
|
+
cy.get("[udex-password-field]").shadow().find("[udex-text-field]").shadow().find("[udex-control-button]").should("have.attr", "icon", fieldIcon);
|
|
72
|
+
cy.get("[udex-password-field]").shadow().find("[udex-text-field]").shadow().find("[udex-control-button]").should("have.attr", "accessible-name", fieldTooltip);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("renders with acessible name", () => {
|
|
76
|
+
cy.get("[udex-password-field]").shadow().find("[udex-text-field]").shadow().find(".udex-text-field__container input").should("have.attr", "aria-label", fieldACCName);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
describe("General interaction", () => {
|
|
82
|
+
beforeEach(() => {
|
|
83
|
+
cy.mount(customPasswordField);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it("change icon and type on click", () => {
|
|
87
|
+
cy.get("[udex-password-field]").shadow().find("[udex-text-field]").shadow().find("[udex-control-button]").click();
|
|
88
|
+
cy.get("[udex-password-field]").shadow().find("[udex-text-field]").should("have.attr", "icon", "hide");
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { UDExRatingBar } from "../support/component-imports.js";
|
|
2
|
+
|
|
3
|
+
const ratingBar = <UDExRatingBar id="rating-bar1" percentage={50} rating={4}></UDExRatingBar>
|
|
4
|
+
|
|
5
|
+
const ratingBarWithPercentage = <UDExRatingBar id="rating-bar2" percentage={50} rating={4} show-percentage></UDExRatingBar>
|
|
6
|
+
|
|
7
|
+
const ratingBarWithHighRating = <UDExRatingBar id="rating-bar3" percentage={120} rating={400}></UDExRatingBar>
|
|
8
|
+
|
|
9
|
+
const ratingBarWithNegativeRating = <UDExRatingBar id="rating-bar4" percentage={30} rating={-400}></UDExRatingBar>
|
|
10
|
+
|
|
11
|
+
describe("RatingBar", () => {
|
|
12
|
+
it("Tests basic rating bar rendering specified progress", () => {
|
|
13
|
+
cy.mount(ratingBar);
|
|
14
|
+
cy.get("#rating-bar1").shadow().find(".udex-rating-bar__track").invoke("width").then((trackWidth) => {
|
|
15
|
+
const expectedWidth = Math.round(0.5 * trackWidth);
|
|
16
|
+
const width = cy.get("#rating-bar1").shadow().find(".udex-rating-bar__progress").invoke("width");
|
|
17
|
+
const widthRounded = width.then((w) => Math.round(w as number));
|
|
18
|
+
widthRounded.should("equal", expectedWidth);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it("Tests basic rating bar rendering rating", () => {
|
|
23
|
+
cy.mount(ratingBar);
|
|
24
|
+
cy.get("#rating-bar1").shadow().find(".udex-rating-bar__rating").should("have.text", "4");
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it("Tests basic rating bar rendering breakdown", () => {
|
|
28
|
+
cy.mount(ratingBarWithPercentage);
|
|
29
|
+
cy.get("#rating-bar2").shadow().find(".udex-rating-bar__percentage").should("have.text", "50%");
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("Tests rating bar rendering maximum rating when rating exceeds it", () => {
|
|
33
|
+
cy.mount(ratingBarWithNegativeRating);
|
|
34
|
+
cy.get("#rating-bar4").shadow().find(".udex-rating-bar__rating").should("have.text", "0");
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it("Tests rating bar rendering minimum rating when rating exceeds it", () => {
|
|
38
|
+
cy.mount(ratingBarWithHighRating);
|
|
39
|
+
cy.get("#rating-bar3").shadow().find(".udex-rating-bar__rating").should("have.text", "5");
|
|
40
|
+
});
|
|
41
|
+
});
|
|
@@ -80,21 +80,16 @@ describe("Tooltip", () => {
|
|
|
80
80
|
</>
|
|
81
81
|
);
|
|
82
82
|
|
|
83
|
-
cy.get('#udex-tooltip').as("tooltip")
|
|
84
|
-
.invoke('attr', 'open', 'true');
|
|
83
|
+
cy.get('#udex-tooltip').shadow().find(".udex-tooltip__pane").as("tooltip").invoke('attr', 'open', 'true');
|
|
85
84
|
|
|
86
|
-
cy.get("@tooltip")
|
|
87
|
-
.should("have.attr", "open");
|
|
85
|
+
cy.get("@tooltip").should("have.attr", "open");
|
|
88
86
|
|
|
89
87
|
cy.get("body").realClick();
|
|
90
88
|
|
|
91
|
-
cy.get("@tooltip")
|
|
92
|
-
.should("not.have.attr", "open");
|
|
89
|
+
cy.get("@tooltip").should("not.have.attr", "open");
|
|
93
90
|
|
|
94
|
-
cy.get('#udex-tooltip').as("tooltip")
|
|
95
|
-
.invoke('attr', 'open', 'true');
|
|
91
|
+
cy.get('#udex-tooltip').as("tooltip").invoke('attr', 'open', 'true');
|
|
96
92
|
|
|
97
|
-
cy.get("@tooltip")
|
|
98
|
-
.should("have.attr", "open");
|
|
93
|
+
cy.get("@tooltip").should("have.attr", "open");
|
|
99
94
|
});
|
|
100
|
-
});
|
|
95
|
+
});
|
|
@@ -59,6 +59,7 @@ import UDExMessageStrip from "../../instrumented/MessageStrip.js";
|
|
|
59
59
|
import UDExHeroBanner from "../../instrumented/HeroBanner.js";
|
|
60
60
|
import UDExCheckbox from "../../instrumented/Checkbox.js";
|
|
61
61
|
import UDExInputGroup from "../../instrumented/InputGroup.js";
|
|
62
|
+
import UDExPasswordField from "../../instrumented/PasswordField.js";
|
|
62
63
|
|
|
63
64
|
export {
|
|
64
65
|
UDExAccordion,
|
|
@@ -121,5 +122,6 @@ export {
|
|
|
121
122
|
UDExMessageStrip,
|
|
122
123
|
UDExHeroBanner,
|
|
123
124
|
UDExCheckbox,
|
|
124
|
-
UDExInputGroup
|
|
125
|
+
UDExInputGroup,
|
|
126
|
+
UDExPasswordField
|
|
125
127
|
};
|
|
@@ -59,6 +59,7 @@ import UDExMessageStrip from "../../src/MessageStrip.js";
|
|
|
59
59
|
import UDExHeroBanner from "../../src/HeroBanner.js";
|
|
60
60
|
import UDExCheckbox from "../../src/Checkbox.js";
|
|
61
61
|
import UDExInputGroup from "../../src/InputGroup.js";
|
|
62
|
+
import UDExPasswordField from "../../src/PasswordField.js";
|
|
62
63
|
|
|
63
64
|
export {
|
|
64
65
|
UDExAccordion,
|
|
@@ -121,5 +122,6 @@ export {
|
|
|
121
122
|
UDExMessageStrip,
|
|
122
123
|
UDExHeroBanner,
|
|
123
124
|
UDExCheckbox,
|
|
124
|
-
UDExInputGroup
|
|
125
|
+
UDExInputGroup,
|
|
126
|
+
UDExPasswordField
|
|
125
127
|
};
|
package/dist/Accordion.js
CHANGED
|
@@ -13,7 +13,7 @@ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
|
13
13
|
import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
14
14
|
import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
|
|
15
15
|
import "@ui5/webcomponents-icons/dist/feeder-arrow.js";
|
|
16
|
-
import { isEnter, isSpace } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
16
|
+
import { isEnter, isSpace, isUp, isDown, isEnd, isHome, isTabPrevious, isTabNext, } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
17
17
|
import AccordionTemplate from "./AccordionTemplate.js";
|
|
18
18
|
import { COLLAPSE_ALL, EXPAND_ALL } from "./generated/i18n/i18n-defaults.js";
|
|
19
19
|
// Styles
|
|
@@ -79,40 +79,54 @@ let UDExAccordion = UDExAccordion_1 = class UDExAccordion extends UI5Element {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
keydownHandler(e) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const
|
|
82
|
+
const activeItem = this._items[this._activeItemIndex];
|
|
83
|
+
const previousItem = this._items[this._activeItemIndex - 1];
|
|
84
|
+
const isLastItem = this._activeItemIndex === this._items.length - 1;
|
|
85
|
+
const isFirstItem = this._activeItemIndex === 0;
|
|
86
|
+
const lastItem = this._items[this._items.length - 1];
|
|
87
|
+
const updateTabIndex = (elements, value) => {
|
|
88
|
+
elements.forEach(element => element.setAttribute("tabindex", value));
|
|
89
|
+
};
|
|
90
|
+
const getInteractiveElements = (item) => {
|
|
91
|
+
const selectors = ["button", "a[href]", "input", "select", "textarea", "[tabindex]"];
|
|
92
|
+
return item.querySelectorAll(selectors.join(","));
|
|
93
|
+
};
|
|
94
|
+
const handleTabNavigation = (keyboardEvent) => {
|
|
95
|
+
if (isLastItem && isTabNext(keyboardEvent) && !lastItem.expanded) {
|
|
96
|
+
updateTabIndex(getInteractiveElements(activeItem), "-1");
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
if ((activeItem?.expanded && isTabNext(e))
|
|
100
|
+
|| (previousItem?.expanded && isTabPrevious(e))
|
|
101
|
+
|| (isFirstItem && isTabPrevious(e))) {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
if (isEnter(e) && isLastItem) {
|
|
105
|
+
updateTabIndex(getInteractiveElements(activeItem), "0");
|
|
106
|
+
}
|
|
107
|
+
return false;
|
|
108
|
+
};
|
|
86
109
|
const focusOnItem = (itemIndex) => {
|
|
87
110
|
const item = this._items[itemIndex];
|
|
88
111
|
this._activeItemIndex = itemIndex;
|
|
89
112
|
item?.shadowRoot?.querySelector(".udex-accordion-item__header")?.focus();
|
|
90
113
|
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (this._activeItemIndex < len - 1) {
|
|
108
|
-
focusOnItem(this._activeItemIndex + 1);
|
|
109
|
-
}
|
|
110
|
-
else if (this._activeItemIndex === len - 1) {
|
|
111
|
-
focusOnItem(0);
|
|
112
|
-
}
|
|
113
|
-
break;
|
|
114
|
-
default:
|
|
115
|
-
break;
|
|
114
|
+
if (handleTabNavigation(e)) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
e.preventDefault();
|
|
118
|
+
const len = this._items.length;
|
|
119
|
+
if (isHome(e)) {
|
|
120
|
+
focusOnItem(0);
|
|
121
|
+
}
|
|
122
|
+
if (isEnd(e)) {
|
|
123
|
+
focusOnItem(len - 1);
|
|
124
|
+
}
|
|
125
|
+
if (isTabPrevious(e) || isUp(e)) {
|
|
126
|
+
focusOnItem(this._activeItemIndex > 0 ? this._activeItemIndex - 1 : len - 1);
|
|
127
|
+
}
|
|
128
|
+
if (isTabNext(e) || isDown(e)) {
|
|
129
|
+
focusOnItem(this._activeItemIndex < len - 1 ? this._activeItemIndex + 1 : 0);
|
|
116
130
|
}
|
|
117
131
|
}
|
|
118
132
|
itemFocusHandler(e) {
|
package/dist/Accordion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../src/Accordion.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 event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport \"@ui5/webcomponents-icons/dist/feeder-arrow.js\";\nimport { isEnter, isSpace } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport AccordionTemplate from \"./AccordionTemplate.js\";\nimport type UDExAccordionItem from \"./AccordionItem.js\";\nimport { COLLAPSE_ALL, EXPAND_ALL } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport AccordionCss from \"./generated/themes/Accordion.css.js\";\n\nexport enum UDExAccordionHeadlineLevel {\n H1 = \"H1\",\n H2 = \"H2\",\n H3 = \"H3\",\n H4 = \"H4\",\n H5 = \"H5\",\n H6 = \"H6\"\n}\n\ntype UDExAccordionToggleItemsEventDetail = {\n isOpen: boolean\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-accordion</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Accordion.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-accordion\n * @public\n */\n@customElement({\n tag: \"udex-accordion\",\n renderer: jsxRenderer,\n styles: AccordionCss,\n template: AccordionTemplate,\n})\n\n/**\n * Triggered when the user clicks on the Expand/Collapse All button..\n *\n * @public\n */\n@event(\"toggle-items\", { bubbles: true })\n\nclass UDExAccordion extends UI5Element {\n eventDetails!: {\n \"toggle-items\": UDExAccordionToggleItemsEventDetail,\n };\n\n /**\n * Used internally to store expand/collapse button state.\n *\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _allExpanded!: boolean;\n\n /**\n * Defines if expandAll button should be displayed.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n hideExpandButton!: boolean;\n\n /**\n * Defines direction of the accordion component.\n *\n * @private\n */\n @property({ type: String })\n _direction?: string;\n\n /**\n * Defines the headline text of the accordion component.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n headline!: string;\n\n /**\n * Defines the semantic level of the headline.\n *\n * @default UDExAccordionHeadlineLevel.h3\n * @public\n */\n @property()\n headlineLevel: UDExAccordionHeadlineLevel = UDExAccordionHeadlineLevel.H3;\n\n /**\n * Slot for accordion items.\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true, individualSlots: true })\n _items!: Array<UDExAccordionItem>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _activeItemIndex: number;\n\n constructor() {\n super();\n this._allExpanded = false;\n this._activeItemIndex = -1;\n }\n\n onEnterDOM() {\n this.updateAllExpandedStatus();\n }\n\n toggleAllHandler(e: Event) {\n e.preventDefault();\n this._allExpanded = !this._allExpanded;\n this.toggleOpenItems(this._allExpanded);\n this.fireDecoratorEvent(\"toggle-items\", { isOpen: this._allExpanded });\n }\n\n toggleOpenItems(isOpen: boolean) {\n this._items.forEach(item => {\n item.expanded = isOpen;\n });\n }\n\n toggleKeyAllHandler(e: KeyboardEvent) {\n if (isEnter(e) || isSpace(e)) {\n this.toggleAllHandler(e);\n }\n }\n\n keydownHandler(e: KeyboardEvent) {\n if (e.key !== \"Tab\") {\n e.preventDefault();\n }\n const len = this._items.length;\n const focusOnItem = (itemIndex: number) => {\n const item = this._items[itemIndex];\n this._activeItemIndex = itemIndex;\n (item?.shadowRoot?.querySelector(\".udex-accordion-item__header\") as HTMLElement)?.focus();\n };\n\n switch (e.key) {\n case \"Home\":\n focusOnItem(0);\n break;\n case \"End\":\n focusOnItem(len - 1);\n break;\n case \"ArrowUp\":\n if (this._activeItemIndex > 0) {\n focusOnItem(this._activeItemIndex - 1);\n } else if (this._activeItemIndex === 0) {\n focusOnItem(len - 1);\n }\n break;\n case \"ArrowDown\":\n if (this._activeItemIndex < len - 1) {\n focusOnItem(this._activeItemIndex + 1);\n } else if (this._activeItemIndex === len - 1) {\n focusOnItem(0);\n }\n break;\n default:\n break;\n }\n }\n\n itemFocusHandler(e: CustomEvent) {\n const target = e.target as UDExAccordionItem;\n if (target) {\n this._activeItemIndex = this._items?.indexOf(target) ?? -1;\n }\n }\n\n updateAllExpandedStatus() {\n this._allExpanded = this._items.every(item => item.expanded);\n }\n\n get toggleAllText(): string {\n return this._allExpanded\n ? UDExAccordion.i18nBundle.getText(COLLAPSE_ALL)\n : UDExAccordion.i18nBundle.getText(EXPAND_ALL);\n }\n\n get items(): {item: UDExAccordionItem}[] {\n return this._items.map(el => {\n return {\n item: el,\n };\n });\n }\n}\n\nUDExAccordion.define();\n\nexport default UDExAccordion;\nexport type { UDExAccordionToggleItemsEventDetail };\n"]}
|
|
1
|
+
{"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../src/Accordion.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 event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport \"@ui5/webcomponents-icons/dist/feeder-arrow.js\";\nimport {\n isEnter, isSpace, isUp, isDown, isEnd, isHome, isTabPrevious, isTabNext,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport AccordionTemplate from \"./AccordionTemplate.js\";\nimport type UDExAccordionItem from \"./AccordionItem.js\";\nimport { COLLAPSE_ALL, EXPAND_ALL } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport AccordionCss from \"./generated/themes/Accordion.css.js\";\n\nexport enum UDExAccordionHeadlineLevel {\n H1 = \"H1\",\n H2 = \"H2\",\n H3 = \"H3\",\n H4 = \"H4\",\n H5 = \"H5\",\n H6 = \"H6\"\n}\n\ntype UDExAccordionToggleItemsEventDetail = {\n isOpen: boolean\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-accordion</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Accordion.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-accordion\n * @public\n */\n@customElement({\n tag: \"udex-accordion\",\n renderer: jsxRenderer,\n styles: AccordionCss,\n template: AccordionTemplate,\n})\n\n/**\n * Triggered when the user clicks on the Expand/Collapse All button..\n *\n * @public\n */\n@event(\"toggle-items\", { bubbles: true })\n\nclass UDExAccordion extends UI5Element {\n eventDetails!: {\n \"toggle-items\": UDExAccordionToggleItemsEventDetail,\n };\n\n /**\n * Used internally to store expand/collapse button state.\n *\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _allExpanded!: boolean;\n\n /**\n * Defines if expandAll button should be displayed.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n hideExpandButton!: boolean;\n\n /**\n * Defines direction of the accordion component.\n *\n * @private\n */\n @property({ type: String })\n _direction?: string;\n\n /**\n * Defines the headline text of the accordion component.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n headline!: string;\n\n /**\n * Defines the semantic level of the headline.\n *\n * @default UDExAccordionHeadlineLevel.h3\n * @public\n */\n @property()\n headlineLevel: UDExAccordionHeadlineLevel = UDExAccordionHeadlineLevel.H3;\n\n /**\n * Slot for accordion items.\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true, individualSlots: true })\n _items!: Array<UDExAccordionItem>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _activeItemIndex: number;\n\n constructor() {\n super();\n this._allExpanded = false;\n this._activeItemIndex = -1;\n }\n\n onEnterDOM() {\n this.updateAllExpandedStatus();\n }\n\n toggleAllHandler(e: Event) {\n e.preventDefault();\n this._allExpanded = !this._allExpanded;\n this.toggleOpenItems(this._allExpanded);\n this.fireDecoratorEvent(\"toggle-items\", { isOpen: this._allExpanded });\n }\n\n toggleOpenItems(isOpen: boolean) {\n this._items.forEach(item => {\n item.expanded = isOpen;\n });\n }\n\n toggleKeyAllHandler(e: KeyboardEvent) {\n if (isEnter(e) || isSpace(e)) {\n this.toggleAllHandler(e);\n }\n }\n\n keydownHandler(e: KeyboardEvent) {\n const activeItem = this._items[this._activeItemIndex];\n const previousItem = this._items[this._activeItemIndex - 1];\n const isLastItem = this._activeItemIndex === this._items.length - 1;\n const isFirstItem = this._activeItemIndex === 0;\n const lastItem = this._items[this._items.length - 1];\n\n const updateTabIndex = (elements: NodeListOf<Element>, value: string) => {\n elements.forEach(element => element.setAttribute(\"tabindex\", value));\n };\n\n const getInteractiveElements = (item: HTMLElement) => {\n const selectors = [\"button\", \"a[href]\", \"input\", \"select\", \"textarea\", \"[tabindex]\"];\n return item.querySelectorAll(selectors.join(\",\"));\n };\n\n const handleTabNavigation = (keyboardEvent: KeyboardEvent) => {\n if (isLastItem && isTabNext(keyboardEvent) && !lastItem.expanded) {\n updateTabIndex(getInteractiveElements(activeItem), \"-1\");\n return true;\n }\n\n if ((activeItem?.expanded && isTabNext(e))\n || (previousItem?.expanded && isTabPrevious(e))\n || (isFirstItem && isTabPrevious(e))) {\n return true;\n }\n\n if (isEnter(e) && isLastItem) {\n updateTabIndex(getInteractiveElements(activeItem), \"0\");\n }\n\n return false;\n };\n\n const focusOnItem = (itemIndex: number) => {\n const item = this._items[itemIndex];\n this._activeItemIndex = itemIndex;\n (item?.shadowRoot?.querySelector(\".udex-accordion-item__header\") as HTMLElement)?.focus();\n };\n\n if (handleTabNavigation(e)) {\n return;\n }\n\n e.preventDefault();\n const len = this._items.length;\n\n if (isHome(e)) {\n focusOnItem(0);\n }\n\n if (isEnd(e)) {\n focusOnItem(len - 1);\n }\n\n if (isTabPrevious(e) || isUp(e)) {\n focusOnItem(this._activeItemIndex > 0 ? this._activeItemIndex - 1 : len - 1);\n }\n\n if (isTabNext(e) || isDown(e)) {\n focusOnItem(this._activeItemIndex < len - 1 ? this._activeItemIndex + 1 : 0);\n }\n }\n\n itemFocusHandler(e: CustomEvent) {\n const target = e.target as UDExAccordionItem;\n if (target) {\n this._activeItemIndex = this._items?.indexOf(target) ?? -1;\n }\n }\n\n updateAllExpandedStatus() {\n this._allExpanded = this._items.every(item => item.expanded);\n }\n\n get toggleAllText(): string {\n return this._allExpanded\n ? UDExAccordion.i18nBundle.getText(COLLAPSE_ALL)\n : UDExAccordion.i18nBundle.getText(EXPAND_ALL);\n }\n\n get items(): {item: UDExAccordionItem}[] {\n return this._items.map(el => {\n return {\n item: el,\n };\n });\n }\n}\n\nUDExAccordion.define();\n\nexport default UDExAccordion;\nexport type { UDExAccordionToggleItemsEventDetail };\n"]}
|
package/dist/AvatarGroup.d.ts
CHANGED
package/dist/AvatarGroup.js
CHANGED
|
@@ -57,9 +57,9 @@ let UDExAvatarGroup = class UDExAvatarGroup extends AvatarGroup {
|
|
|
57
57
|
super();
|
|
58
58
|
this._itemNavigation = new ItemNavigation(this, {
|
|
59
59
|
getItemsCallback: () => {
|
|
60
|
-
return this.
|
|
61
|
-
?
|
|
62
|
-
:
|
|
60
|
+
return this._isIndividual
|
|
61
|
+
? this.items.slice(0, this._hiddenStartIndex).map(item => item.shadowRoot?.firstElementChild)
|
|
62
|
+
: [];
|
|
63
63
|
},
|
|
64
64
|
});
|
|
65
65
|
}
|
|
@@ -102,10 +102,14 @@ let UDExAvatarGroup = class UDExAvatarGroup extends AvatarGroup {
|
|
|
102
102
|
avatar.setAttribute("color-scheme", visibleColors[this._colorIndex]);
|
|
103
103
|
}
|
|
104
104
|
if (index !== this._itemsCount - 1 || this._customOverflowButton) {
|
|
105
|
-
|
|
105
|
+
const avatarSize = avatar.effectiveSize || UDExAvatarSize.S;
|
|
106
|
+
avatar.style.marginInlineEnd = avatarOffsets[avatarSize][this.type];
|
|
106
107
|
}
|
|
107
108
|
});
|
|
108
109
|
}
|
|
110
|
+
get _isIndividual() {
|
|
111
|
+
return this.type === AvatarGroupType.Individual;
|
|
112
|
+
}
|
|
109
113
|
};
|
|
110
114
|
UDExAvatarGroup = __decorate([
|
|
111
115
|
customElement({
|
package/dist/AvatarGroup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarGroup.js","sourceRoot":"","sources":["../src/AvatarGroup.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,WAAW,MAAM,wCAAwC,CAAC;AACjE,OAAO,eAAe,MAAM,kDAAkD,CAAC;AAC/E,OAAO,cAAc,MAAM,yDAAyD,CAAC;AACrF,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAE/E,SAAS;AACT,OAAO,iBAAiB,MAAM,6DAA6D,CAAC;AAE5F,OAAO,UAAU,EAAE,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhF,MAAM,aAAa,GAAG;IACpB,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;QACnB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,WAAW;QACzC,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,UAAU;KACpC;IACD,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;QAClB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,UAAU;QACxC,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,UAAU;KACpC;IACD,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;QAClB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,UAAU;QACxC,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,WAAW;KACrC;IACD,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;QAClB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,UAAU;QACxC,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,OAAO;KACjC;IACD,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;QACnB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,SAAS;QACvC,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,UAAU;KACpC;CACF,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AAQH,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,WAAW;IACvC;QACE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE;YAC9C,gBAAgB,EAAE,GAAG,EAAE;gBACrB,OAAO,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"AvatarGroup.js","sourceRoot":"","sources":["../src/AvatarGroup.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IAvatarGroupItem } from \"@ui5/webcomponents/dist/AvatarGroup.js\";\nimport AvatarGroup from \"@ui5/webcomponents/dist/AvatarGroup.js\";\nimport AvatarGroupType from \"@ui5/webcomponents/dist/types/AvatarGroupType.js\";\nimport ItemNavigation from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\n\n// Styles\nimport UI5AvatarGroupCss from \"@ui5/webcomponents/dist/generated/themes/AvatarGroup.css.js\";\n\nimport UDExAvatar, { UDExAvatarColorScheme, UDExAvatarSize } from \"./Avatar.js\";\n\nconst avatarOffsets = {\n [UDExAvatarSize.XS]: {\n [AvatarGroupType.Individual]: \"0.0625rem\",\n [AvatarGroupType.Group]: \"-0.75rem\",\n },\n [UDExAvatarSize.S]: {\n [AvatarGroupType.Individual]: \"0.125rem\",\n [AvatarGroupType.Group]: \"-1.25rem\",\n },\n [UDExAvatarSize.M]: {\n [AvatarGroupType.Individual]: \"0.125rem\",\n [AvatarGroupType.Group]: \"-1.625rem\",\n },\n [UDExAvatarSize.L]: {\n [AvatarGroupType.Individual]: \"0.125rem\",\n [AvatarGroupType.Group]: \"-2rem\",\n },\n [UDExAvatarSize.XL]: {\n [AvatarGroupType.Individual]: \"0.25rem\",\n [AvatarGroupType.Group]: \"-2.75rem\",\n },\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-avatar-group</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/AvatarGroup.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends AvatarGroup\n * @public\n */\n@customElement({\n tag: \"udex-avatar-group\",\n renderer: jsxRenderer,\n styles: [UI5AvatarGroupCss],\n dependencies: [UDExAvatar],\n})\n\nclass UDExAvatarGroup extends AvatarGroup {\n constructor() {\n super();\n\n this._itemNavigation = new ItemNavigation(this, {\n getItemsCallback: () => {\n return this._isIndividual\n ? this.items.slice(0, this._hiddenStartIndex).map(\n item => item.shadowRoot?.firstElementChild as IAvatarGroupItem,\n )\n : [];\n },\n });\n }\n onEnterDOM(): void {\n super.onEnterDOM();\n const container: HTMLElement = this.shadowRoot?.querySelector(\".ui5-avatar-group-items\") as HTMLElement;\n container?.addEventListener(\"mouseenter\", this._onHover.bind(this, true));\n container?.addEventListener(\"mouseleave\", this._onHover.bind(this, false));\n }\n\n onExitDOM(): void {\n super.onExitDOM();\n const container: HTMLElement = this.shadowRoot?.querySelector(\".ui5-avatar-group-items\") as HTMLElement;\n container?.removeEventListener(\"mouseenter\", this._onHover.bind(this, true));\n container?.removeEventListener(\"mouseleave\", this._onHover.bind(this, false));\n }\n\n _onHover(hover: boolean) {\n if (this._isGroup) {\n this.items.every(avatar => {\n avatar.toggleAttribute(\"hover\", hover);\n return !avatar.hidden;\n });\n }\n }\n\n _onfocusin(e: FocusEvent) {\n const targetItem = this._isGroup\n ? e.currentTarget\n : (e.target as HTMLElement).shadowRoot?.firstElementChild;\n this._itemNavigation.setCurrentItem(targetItem as IAvatarGroupItem);\n }\n\n _prepareAvatars() {\n this._colorIndex = 0;\n const visibleColors = Object.values(UDExAvatarColorScheme);\n\n this.items.forEach((avatar, index) => {\n if (++this._colorIndex > visibleColors.length - 3) {\n this._colorIndex = 1;\n }\n avatar.interactive = !this._isGroup;\n avatar.toggleAttribute(\"ui5-avatar\", true);\n\n if (!avatar.getAttribute(\"color-scheme\")) {\n avatar.setAttribute(\"color-scheme\", visibleColors[this._colorIndex]);\n }\n\n if (index !== this._itemsCount - 1 || this._customOverflowButton) {\n const avatarSize = avatar.effectiveSize || UDExAvatarSize.S;\n avatar.style.marginInlineEnd = avatarOffsets[avatarSize][this.type];\n }\n });\n }\n\n get _isIndividual() {\n return this.type === AvatarGroupType.Individual;\n }\n}\n\nUDExAvatarGroup.define();\n\nexport default UDExAvatarGroup;\n"]}
|
package/dist/Footer.d.ts
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
2
|
import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
3
|
+
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
3
4
|
import type { UDExSocialMediaButtonType } from "./types/SocialMediaButtonType.js";
|
|
4
5
|
import type { UDExTarget } from "./types/common.js";
|
|
5
|
-
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
6
|
-
import "@ui5/webcomponents-icons/dist/headset.js";
|
|
7
|
-
import "@ui5/webcomponents-icons/dist/email.js";
|
|
8
|
-
import "@ui5/webcomponents-icons/dist/back-to-top.js";
|
|
9
|
-
import "@ui5/webcomponents-icons/dist/discussion-2.js";
|
|
10
|
-
import "@ui5/webcomponents-icons/dist/navigation-right-arrow.js";
|
|
11
6
|
export declare const chineseICPDefaultLink = "https://beian.miit.gov.cn/";
|
|
12
7
|
export type FooterLink = {
|
|
8
|
+
id: string;
|
|
13
9
|
title: string;
|
|
14
10
|
url: string;
|
|
15
11
|
target: UDExTarget;
|
|
@@ -26,13 +22,13 @@ export type FooterContactNumber = {
|
|
|
26
22
|
country: string;
|
|
27
23
|
};
|
|
28
24
|
type UDExFooterDetailedClickEventDetail = {
|
|
29
|
-
originalEvent:
|
|
25
|
+
originalEvent: MouseEvent;
|
|
30
26
|
name: string | undefined;
|
|
31
27
|
id?: string;
|
|
32
28
|
sourceNode: HTMLElement;
|
|
33
29
|
};
|
|
34
30
|
type UDExFooterBaseEventDetail = {
|
|
35
|
-
originalEvent:
|
|
31
|
+
originalEvent: MouseEvent | Event;
|
|
36
32
|
};
|
|
37
33
|
type BaseEvents = "contact-chat-click" | "contact-phone-local-numbers-click" | "contact-email-click" | "contact-phone-click" | "logo-click" | "back-to-top-click";
|
|
38
34
|
type DetailedEvents = "quick-links-click" | "trending-click" | "about-sap-click" | "site-information-click" | "social-media-link-click";
|
|
@@ -245,7 +241,7 @@ declare class UDExFooter extends UI5Element {
|
|
|
245
241
|
onExitDOM(): void;
|
|
246
242
|
onEnterDOM(): void;
|
|
247
243
|
_handleResize(): void;
|
|
248
|
-
onBackToTopClick(e:
|
|
244
|
+
onBackToTopClick(e: Event): void;
|
|
249
245
|
get quickLinksArray(): FooterLink[];
|
|
250
246
|
get trendingLinksArray(): FooterLink[];
|
|
251
247
|
get aboutLinksArray(): FooterLink[];
|
|
@@ -276,18 +272,18 @@ declare class UDExFooter extends UI5Element {
|
|
|
276
272
|
get currentTaglineUrl(): string | undefined;
|
|
277
273
|
get taglineClass(): string;
|
|
278
274
|
get logoClass(): string;
|
|
279
|
-
_onLogoClick(e:
|
|
280
|
-
_onContactPhoneClick(e:
|
|
281
|
-
_onContactPhoneLocalNumbersClick(e:
|
|
282
|
-
_onContactEmailClick(e:
|
|
283
|
-
_onContactChatClick(e:
|
|
284
|
-
_onQuickLinksClick(e:
|
|
285
|
-
_onTrendingClick(e:
|
|
286
|
-
_onAboutSapClick(e:
|
|
287
|
-
_onSiteInformationClick(e:
|
|
288
|
-
_onSocialMediaLinkClick(e:
|
|
289
|
-
fireFooterBaseEvent(e:
|
|
290
|
-
fireFooterDetailedClickEvent(e:
|
|
275
|
+
_onLogoClick(e: MouseEvent): void;
|
|
276
|
+
_onContactPhoneClick(e: MouseEvent): void;
|
|
277
|
+
_onContactPhoneLocalNumbersClick(e: Event): void;
|
|
278
|
+
_onContactEmailClick(e: MouseEvent): void;
|
|
279
|
+
_onContactChatClick(e: MouseEvent): void;
|
|
280
|
+
_onQuickLinksClick(e: MouseEvent): void;
|
|
281
|
+
_onTrendingClick(e: MouseEvent): void;
|
|
282
|
+
_onAboutSapClick(e: MouseEvent): void;
|
|
283
|
+
_onSiteInformationClick(e: MouseEvent): void;
|
|
284
|
+
_onSocialMediaLinkClick(e: MouseEvent): void;
|
|
285
|
+
fireFooterBaseEvent(e: MouseEvent | Event, eventName: BaseEvents): void;
|
|
286
|
+
fireFooterDetailedClickEvent(e: MouseEvent, eventName: DetailedEvents): void;
|
|
291
287
|
}
|
|
292
288
|
export default UDExFooter;
|
|
293
289
|
export type { UDExFooterBaseEventDetail, UDExFooterDetailedClickEventDetail };
|
package/dist/Footer.js
CHANGED
|
@@ -6,13 +6,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
var UDExFooter_1;
|
|
8
8
|
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
9
|
-
import
|
|
9
|
+
import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
|
|
10
10
|
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
11
11
|
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
12
12
|
import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
13
13
|
import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
14
14
|
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
15
15
|
import { getLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
|
|
16
|
+
import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
16
17
|
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
17
18
|
import UDExAccordionItem from "./AccordionItem.js";
|
|
18
19
|
import UDExButton from "./Button.js";
|
|
@@ -22,17 +23,10 @@ import UDExDivider from "./Divider.js";
|
|
|
22
23
|
import UDExSocialMediaButton from "./SocialMediaButton.js";
|
|
23
24
|
import { BreakpointUtils } from "./utils/Breakpoints.js";
|
|
24
25
|
import parseArrayFromString from "./utils/parseArrayFromString.js";
|
|
25
|
-
|
|
26
|
-
import
|
|
26
|
+
import FooterTemplate from "./FooterTemplate.js";
|
|
27
|
+
import { ABOUT_SAP, CHAT_WITH_US, CONTACT_US, EMAIL, LOCAL_COUNTRY_NAMES, PHONE_NUMBER, QUICK_LINKS, SEE_COMPLETE_LIST, SITE_INFORMATION, TRENDING, COPYRIGHT, PUBLIC_SECURITY_NETWORK_NUMBER, ICP_NUMBER, } from "./generated/i18n/i18n-defaults.js";
|
|
27
28
|
// Styles
|
|
28
29
|
import FooterCss from "./generated/themes/Footer.css.js";
|
|
29
|
-
import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
30
|
-
import { ABOUT_SAP, CHAT_WITH_US, CONTACT_US, EMAIL, LOCAL_COUNTRY_NAMES, PHONE_NUMBER, QUICK_LINKS, SEE_COMPLETE_LIST, SITE_INFORMATION, TRENDING, COPYRIGHT, PUBLIC_SECURITY_NETWORK_NUMBER, ICP_NUMBER, } from "./generated/i18n/i18n-defaults.js";
|
|
31
|
-
import "@ui5/webcomponents-icons/dist/headset.js";
|
|
32
|
-
import "@ui5/webcomponents-icons/dist/email.js";
|
|
33
|
-
import "@ui5/webcomponents-icons/dist/back-to-top.js";
|
|
34
|
-
import "@ui5/webcomponents-icons/dist/discussion-2.js";
|
|
35
|
-
import "@ui5/webcomponents-icons/dist/navigation-right-arrow.js";
|
|
36
30
|
export const chineseICPDefaultLink = "https://beian.miit.gov.cn/";
|
|
37
31
|
/**
|
|
38
32
|
* @class
|
|
@@ -385,7 +379,7 @@ UDExFooter = UDExFooter_1 = __decorate([
|
|
|
385
379
|
customElement({
|
|
386
380
|
languageAware: true,
|
|
387
381
|
tag: "udex-footer",
|
|
388
|
-
renderer:
|
|
382
|
+
renderer: jsxRenderer,
|
|
389
383
|
styles: [FooterCss],
|
|
390
384
|
template: FooterTemplate,
|
|
391
385
|
dependencies: [UDExAccordion, UDExAccordionItem, Icon, UDExButton, UDExDivider, UDExLink, UDExSocialMediaButton],
|