@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.
Files changed (190) hide show
  1. package/cypress/specs/HeroBanner.cy.tsx +6 -6
  2. package/cypress/specs/PasswordField.cy.tsx +91 -0
  3. package/cypress/specs/RatingBar.cy.tsx +41 -0
  4. package/cypress/specs/Tooltip.cy.tsx +6 -11
  5. package/cypress/support/component-imports.instrumented.ts +3 -1
  6. package/cypress/support/component-imports.src.ts +3 -1
  7. package/dist/Accordion.js +44 -30
  8. package/dist/Accordion.js.map +1 -1
  9. package/dist/AvatarGroup.d.ts +1 -0
  10. package/dist/AvatarGroup.js +8 -4
  11. package/dist/AvatarGroup.js.map +1 -1
  12. package/dist/Footer.d.ts +17 -21
  13. package/dist/Footer.js +5 -11
  14. package/dist/Footer.js.map +1 -1
  15. package/dist/FooterTemplate.d.ts +2 -0
  16. package/dist/FooterTemplate.js +27 -0
  17. package/dist/FooterTemplate.js.map +1 -0
  18. package/dist/HeroBanner.js +4 -4
  19. package/dist/HeroBanner.js.map +1 -1
  20. package/dist/HeroBannerTemplate.d.ts +2 -0
  21. package/dist/HeroBannerTemplate.js +10 -0
  22. package/dist/HeroBannerTemplate.js.map +1 -0
  23. package/dist/LinkListItemTemplate.js +1 -1
  24. package/dist/LinkListItemTemplate.js.map +1 -1
  25. package/dist/List.js +7 -1
  26. package/dist/List.js.map +1 -1
  27. package/dist/ListGroupHeader.js +7 -1
  28. package/dist/ListGroupHeader.js.map +1 -1
  29. package/dist/ListSelectAll.js +7 -1
  30. package/dist/ListSelectAll.js.map +1 -1
  31. package/dist/PasswordField.d.ts +3 -5
  32. package/dist/PasswordField.js +6 -8
  33. package/dist/PasswordField.js.map +1 -1
  34. package/dist/PasswordFieldTemplate.d.ts +4 -0
  35. package/dist/PasswordFieldTemplate.js +8 -0
  36. package/dist/PasswordFieldTemplate.js.map +1 -0
  37. package/dist/RatingBar.js +3 -3
  38. package/dist/RatingBar.js.map +1 -1
  39. package/dist/RatingBarTemplate.d.ts +2 -0
  40. package/dist/RatingBarTemplate.js +8 -0
  41. package/dist/RatingBarTemplate.js.map +1 -0
  42. package/dist/StatusBadge.js +3 -3
  43. package/dist/StatusBadge.js.map +1 -1
  44. package/dist/StatusBadgeTemplate.d.ts +2 -0
  45. package/dist/StatusBadgeTemplate.js +7 -0
  46. package/dist/StatusBadgeTemplate.js.map +1 -0
  47. package/dist/StatusMessage.js +3 -3
  48. package/dist/StatusMessage.js.map +1 -1
  49. package/dist/StatusMessageTemplate.d.ts +2 -0
  50. package/dist/StatusMessageTemplate.js +8 -0
  51. package/dist/StatusMessageTemplate.js.map +1 -0
  52. package/dist/Switch.d.ts +1 -4
  53. package/dist/Switch.js +4 -8
  54. package/dist/Switch.js.map +1 -1
  55. package/dist/SwitchTemplate.d.ts +2 -0
  56. package/dist/SwitchTemplate.js +12 -0
  57. package/dist/SwitchTemplate.js.map +1 -0
  58. package/dist/TagGroup.d.ts +2 -0
  59. package/dist/TagGroup.js +10 -3
  60. package/dist/TagGroup.js.map +1 -1
  61. package/dist/TextField.d.ts +5 -3
  62. package/dist/TextField.js +5 -3
  63. package/dist/TextField.js.map +1 -1
  64. package/dist/Tooltip.d.ts +5 -0
  65. package/dist/Tooltip.js.map +1 -1
  66. package/dist/assets/{InputSuggestions-D5z6eIC2.js → InputSuggestions-C-OeoyHk.js} +1 -1
  67. package/dist/assets/{ListItemStandardExpandableTextTemplate-BKeYxhnX.js → ListItemStandardExpandableTextTemplate-D05JXl_S.js} +1 -1
  68. package/dist/assets/{bundle.esm-DXwtYGLH.js → bundle.esm-jB2aQPid.js} +208 -208
  69. package/dist/css/themes/AccordionItem.css +1 -1
  70. package/dist/css/themes/CountrySelector.css +1 -1
  71. package/dist/css/themes/Link.css +1 -1
  72. package/dist/css/themes/PhoneNumberField.css +1 -1
  73. package/dist/css/themes/RatingBar.css +1 -1
  74. package/dist/css/themes/RatingIndicator.css +1 -1
  75. package/dist/css/themes/Search.css +1 -1
  76. package/dist/css/themes/SelectBox.css +1 -1
  77. package/dist/css/themes/Slider.css +1 -1
  78. package/dist/css/themes/TextArea.css +1 -1
  79. package/dist/css/themes/TextField.css +1 -1
  80. package/dist/custom-elements-internal.json +214 -141
  81. package/dist/custom-elements.json +187 -126
  82. package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
  83. package/dist/generated/themes/AccordionItem.css.js +1 -1
  84. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  85. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  86. package/dist/generated/themes/CountrySelector.css.js +1 -1
  87. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  88. package/dist/generated/themes/Link.css.d.ts +1 -1
  89. package/dist/generated/themes/Link.css.js +1 -1
  90. package/dist/generated/themes/Link.css.js.map +1 -1
  91. package/dist/generated/themes/PhoneNumberField.css.d.ts +1 -1
  92. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  93. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  94. package/dist/generated/themes/RatingBar.css.d.ts +1 -1
  95. package/dist/generated/themes/RatingBar.css.js +1 -1
  96. package/dist/generated/themes/RatingBar.css.js.map +1 -1
  97. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  98. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  99. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  100. package/dist/generated/themes/Search.css.d.ts +1 -1
  101. package/dist/generated/themes/Search.css.js +1 -1
  102. package/dist/generated/themes/Search.css.js.map +1 -1
  103. package/dist/generated/themes/SelectBox.css.d.ts +1 -1
  104. package/dist/generated/themes/SelectBox.css.js +1 -1
  105. package/dist/generated/themes/SelectBox.css.js.map +1 -1
  106. package/dist/generated/themes/Slider.css.d.ts +1 -1
  107. package/dist/generated/themes/Slider.css.js +1 -1
  108. package/dist/generated/themes/Slider.css.js.map +1 -1
  109. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  110. package/dist/generated/themes/TextArea.css.js +1 -1
  111. package/dist/generated/themes/TextArea.css.js.map +1 -1
  112. package/dist/generated/themes/TextField.css.d.ts +1 -1
  113. package/dist/generated/themes/TextField.css.js +1 -1
  114. package/dist/generated/themes/TextField.css.js.map +1 -1
  115. package/dist/vscode.html-custom-data.json +21 -3
  116. package/dist/web-types.json +60 -6
  117. package/package.json +1 -1
  118. package/src/Accordion.ts +56 -26
  119. package/src/AvatarGroup.ts +10 -5
  120. package/src/Footer.ts +28 -35
  121. package/src/FooterTemplate.tsx +410 -0
  122. package/src/HeroBanner.ts +4 -4
  123. package/src/HeroBannerTemplate.tsx +101 -0
  124. package/src/LinkListItemTemplate.tsx +4 -1
  125. package/src/List.ts +5 -0
  126. package/src/ListGroupHeader.ts +5 -0
  127. package/src/ListSelectAll.ts +5 -1
  128. package/src/PasswordField.ts +7 -10
  129. package/src/PasswordFieldTemplate.tsx +29 -0
  130. package/src/RatingBar.ts +3 -3
  131. package/src/RatingBarTemplate.tsx +38 -0
  132. package/src/StatusBadge.ts +5 -4
  133. package/src/StatusBadgeTemplate.tsx +18 -0
  134. package/src/StatusMessage.ts +3 -3
  135. package/src/StatusMessageTemplate.tsx +20 -0
  136. package/src/Switch.ts +5 -11
  137. package/src/SwitchTemplate.tsx +50 -0
  138. package/src/TagGroup.ts +13 -3
  139. package/src/TextField.ts +5 -3
  140. package/src/Tooltip.ts +5 -0
  141. package/src/generated/themes/AccordionItem.css.ts +1 -1
  142. package/src/generated/themes/CountrySelector.css.ts +1 -1
  143. package/src/generated/themes/Link.css.ts +1 -1
  144. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  145. package/src/generated/themes/RatingBar.css.ts +1 -1
  146. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  147. package/src/generated/themes/Search.css.ts +1 -1
  148. package/src/generated/themes/SelectBox.css.ts +1 -1
  149. package/src/generated/themes/Slider.css.ts +1 -1
  150. package/src/generated/themes/TextArea.css.ts +1 -1
  151. package/src/generated/themes/TextField.css.ts +1 -1
  152. package/src/themes/AccordionItem.css +0 -1
  153. package/src/themes/CountrySelector.css +0 -14
  154. package/src/themes/Link.css +11 -4
  155. package/src/themes/PhoneNumberField.css +6 -8
  156. package/src/themes/RatingBar.css +2 -2
  157. package/src/themes/Search.css +3 -3
  158. package/src/themes/SelectBox.css +4 -0
  159. package/src/themes/TextArea.css +6 -6
  160. package/src/themes/TextField.css +6 -10
  161. package/dist/generated/templates/FooterTemplate.lit.d.ts +0 -3
  162. package/dist/generated/templates/FooterTemplate.lit.js +0 -39
  163. package/dist/generated/templates/FooterTemplate.lit.js.map +0 -1
  164. package/dist/generated/templates/PasswordFieldTemplate.lit.d.ts +0 -3
  165. package/dist/generated/templates/PasswordFieldTemplate.lit.js +0 -7
  166. package/dist/generated/templates/PasswordFieldTemplate.lit.js.map +0 -1
  167. package/dist/generated/templates/RatingBarTemplate.lit.d.ts +0 -3
  168. package/dist/generated/templates/RatingBarTemplate.lit.js +0 -8
  169. package/dist/generated/templates/RatingBarTemplate.lit.js.map +0 -1
  170. package/dist/generated/templates/StatusBadgeTemplate.lit.d.ts +0 -3
  171. package/dist/generated/templates/StatusBadgeTemplate.lit.js +0 -7
  172. package/dist/generated/templates/StatusBadgeTemplate.lit.js.map +0 -1
  173. package/dist/generated/templates/StatusMessageTemplate.lit.d.ts +0 -3
  174. package/dist/generated/templates/StatusMessageTemplate.lit.js +0 -8
  175. package/dist/generated/templates/StatusMessageTemplate.lit.js.map +0 -1
  176. package/dist/generated/templates/SwitchTemplate.lit.d.ts +0 -3
  177. package/dist/generated/templates/SwitchTemplate.lit.js +0 -14
  178. package/dist/generated/templates/SwitchTemplate.lit.js.map +0 -1
  179. package/src/Footer.hbs +0 -296
  180. package/src/PasswordField.hbs +0 -18
  181. package/src/RatingBar.hbs +0 -11
  182. package/src/StatusBadge.hbs +0 -9
  183. package/src/StatusMessage.hbs +0 -6
  184. package/src/Switch.hbs +0 -35
  185. package/src/generated/templates/FooterTemplate.lit.ts +0 -43
  186. package/src/generated/templates/PasswordFieldTemplate.lit.ts +0 -11
  187. package/src/generated/templates/RatingBarTemplate.lit.ts +0 -12
  188. package/src/generated/templates/StatusBadgeTemplate.lit.ts +0 -11
  189. package/src/generated/templates/StatusMessageTemplate.lit.ts +0 -12
  190. 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(to bottom, #1e5799 0%,#7db9e8 100%)";
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 = "#fbdab9";
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", "alt", backgroundVideoLabel);
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:${linearGradient}`);
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
- if (e.key !== "Tab") {
83
- e.preventDefault();
84
- }
85
- const len = this._items.length;
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
- switch (e.key) {
92
- case "Home":
93
- focusOnItem(0);
94
- break;
95
- case "End":
96
- focusOnItem(len - 1);
97
- break;
98
- case "ArrowUp":
99
- if (this._activeItemIndex > 0) {
100
- focusOnItem(this._activeItemIndex - 1);
101
- }
102
- else if (this._activeItemIndex === 0) {
103
- focusOnItem(len - 1);
104
- }
105
- break;
106
- case "ArrowDown":
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) {
@@ -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"]}
@@ -24,5 +24,6 @@ declare class UDExAvatarGroup extends AvatarGroup {
24
24
  _onHover(hover: boolean): void;
25
25
  _onfocusin(e: FocusEvent): void;
26
26
  _prepareAvatars(): void;
27
+ get _isIndividual(): boolean;
27
28
  }
28
29
  export default UDExAvatarGroup;
@@ -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._isGroup
61
- ? []
62
- : this.items.slice(0, this._hiddenStartIndex).map(item => item.shadowRoot?.firstElementChild);
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
- avatar.style.marginInlineEnd = avatarOffsets[avatar.effectiveSize][this.type];
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({
@@ -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,QAAQ;oBAClB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAC/C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAqC,CAC/D,CAAC;YACN,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACD,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,MAAM,SAAS,GAAgB,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,yBAAyB,CAAgB,CAAC;QACxG,SAAS,EAAE,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,SAAS,EAAE,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,SAAS;QACP,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,MAAM,SAAS,GAAgB,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,yBAAyB,CAAgB,CAAC;QACxG,SAAS,EAAE,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7E,SAAS,EAAE,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,QAAQ,CAAC,KAAc;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBACxB,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACvC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YACxB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,UAAU,CAAC,CAAa;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;YAC9B,CAAC,CAAC,CAAC,CAAC,aAAa;YACjB,CAAC,CAAE,CAAC,CAAC,MAAsB,CAAC,UAAU,EAAE,iBAAiB,CAAC;QAC5D,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,UAA8B,CAAC,CAAC;IACtE,CAAC;IAED,eAAe;QACb,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAE3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACnC,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACvB,CAAC;YACD,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YACpC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAE3C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAhEK,eAAe;IAPpB,aAAa,CAAC;QACb,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,CAAC,iBAAiB,CAAC;QAC3B,YAAY,EAAE,CAAC,UAAU,CAAC;KAC3B,CAAC;GAEI,eAAe,CAgEpB;AAED,eAAe,CAAC,MAAM,EAAE,CAAC;AAEzB,eAAe,eAAe,CAAC","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._isGroup\n ? []\n : this.items.slice(0, this._hiddenStartIndex).map(\n item => item.shadowRoot?.firstElementChild as IAvatarGroupItem,\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 avatar.style.marginInlineEnd = avatarOffsets[avatar.effectiveSize][this.type];\n }\n });\n }\n}\n\nUDExAvatarGroup.define();\n\nexport default UDExAvatarGroup;\n"]}
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: PointerEvent;
25
+ originalEvent: MouseEvent;
30
26
  name: string | undefined;
31
27
  id?: string;
32
28
  sourceNode: HTMLElement;
33
29
  };
34
30
  type UDExFooterBaseEventDetail = {
35
- originalEvent: PointerEvent;
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: PointerEvent): void;
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: PointerEvent): void;
280
- _onContactPhoneClick(e: PointerEvent): void;
281
- _onContactPhoneLocalNumbersClick(e: PointerEvent): void;
282
- _onContactEmailClick(e: PointerEvent): void;
283
- _onContactChatClick(e: PointerEvent): void;
284
- _onQuickLinksClick(e: PointerEvent): void;
285
- _onTrendingClick(e: PointerEvent): void;
286
- _onAboutSapClick(e: PointerEvent): void;
287
- _onSiteInformationClick(e: PointerEvent): void;
288
- _onSocialMediaLinkClick(e: PointerEvent): void;
289
- fireFooterBaseEvent(e: PointerEvent, eventName: BaseEvents): void;
290
- fireFooterDetailedClickEvent(e: PointerEvent, eventName: DetailedEvents): void;
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 litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
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
- // Template
26
- import FooterTemplate from "./generated/templates/FooterTemplate.lit.js";
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: litRender,
382
+ renderer: jsxRenderer,
389
383
  styles: [FooterCss],
390
384
  template: FooterTemplate,
391
385
  dependencies: [UDExAccordion, UDExAccordionItem, Icon, UDExButton, UDExDivider, UDExLink, UDExSocialMediaButton],