@sapudex/web-components 2.10.0 → 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/bundle.esm.js +1 -0
  2. package/cypress/fixtures/profile-menu.ts +75 -0
  3. package/cypress/specs/Accordion.cy.tsx +19 -0
  4. package/cypress/specs/AccordionItem.cy.tsx +9 -0
  5. package/cypress/specs/Footer.cy.tsx +48 -11
  6. package/cypress/specs/ListItem.cy.tsx +66 -52
  7. package/cypress/specs/MastheadProfileMenu.cy.tsx +174 -0
  8. package/cypress/specs/PromoTile.cy.tsx +124 -0
  9. package/cypress/specs/Quote.cy.tsx +65 -0
  10. package/cypress/specs/SelectBox.cy.tsx +134 -66
  11. package/cypress/support/component-imports.instrumented.ts +8 -0
  12. package/cypress/support/component-imports.src.ts +9 -1
  13. package/dist/Accordion.d.ts +15 -0
  14. package/dist/Accordion.js +19 -0
  15. package/dist/Accordion.js.map +1 -1
  16. package/dist/AccordionItem.d.ts +19 -0
  17. package/dist/AccordionItem.js +23 -0
  18. package/dist/AccordionItem.js.map +1 -1
  19. package/dist/AccordionItemTemplate.js +7 -2
  20. package/dist/AccordionItemTemplate.js.map +1 -1
  21. package/dist/AccordionTemplate.js +21 -1
  22. package/dist/AccordionTemplate.js.map +1 -1
  23. package/dist/Button.d.ts +8 -0
  24. package/dist/Button.js +11 -0
  25. package/dist/Button.js.map +1 -1
  26. package/dist/Footer.d.ts +45 -3
  27. package/dist/Footer.js +41 -17
  28. package/dist/Footer.js.map +1 -1
  29. package/dist/List.d.ts +9 -2
  30. package/dist/List.js +19 -8
  31. package/dist/List.js.map +1 -1
  32. package/dist/ListGroupHeader.d.ts +2 -1
  33. package/dist/ListGroupHeader.js.map +1 -1
  34. package/dist/ListItem.d.ts +12 -1
  35. package/dist/ListItem.js +15 -1
  36. package/dist/ListItem.js.map +1 -1
  37. package/dist/ListItemBase.d.ts +10 -0
  38. package/dist/ListItemBase.js +31 -0
  39. package/dist/ListItemBase.js.map +1 -1
  40. package/dist/ListSelectAll.d.ts +2 -1
  41. package/dist/ListSelectAll.js.map +1 -1
  42. package/dist/MastheadItem.d.ts +2 -0
  43. package/dist/MastheadItem.js +6 -0
  44. package/dist/MastheadItem.js.map +1 -1
  45. package/dist/MastheadProfileMenu.d.ts +67 -3
  46. package/dist/MastheadProfileMenu.js +164 -10
  47. package/dist/MastheadProfileMenu.js.map +1 -1
  48. package/dist/MastheadShell.d.ts +1 -0
  49. package/dist/MastheadShell.js +6 -1
  50. package/dist/MastheadShell.js.map +1 -1
  51. package/dist/PromoTile.d.ts +143 -0
  52. package/dist/PromoTile.js +198 -0
  53. package/dist/PromoTile.js.map +1 -0
  54. package/dist/PromoTileTemplate.d.ts +2 -0
  55. package/dist/PromoTileTemplate.js +22 -0
  56. package/dist/PromoTileTemplate.js.map +1 -0
  57. package/dist/Quote.d.ts +11 -0
  58. package/dist/Quote.js +18 -3
  59. package/dist/Quote.js.map +1 -1
  60. package/dist/Search.d.ts +3 -1
  61. package/dist/Search.js +1 -0
  62. package/dist/Search.js.map +1 -1
  63. package/dist/SearchableListBase.d.ts +16 -0
  64. package/dist/SearchableListBase.js +31 -1
  65. package/dist/SearchableListBase.js.map +1 -1
  66. package/dist/SelectBox.js +10 -0
  67. package/dist/SelectBox.js.map +1 -1
  68. package/dist/SelectBoxItem.d.ts +29 -0
  69. package/dist/SelectBoxItem.js +26 -0
  70. package/dist/SelectBoxItem.js.map +1 -1
  71. package/dist/StatusBadge.d.ts +1 -7
  72. package/dist/StatusBadge.js +1 -8
  73. package/dist/StatusBadge.js.map +1 -1
  74. package/dist/StepInputTemplate.js +1 -1
  75. package/dist/StepInputTemplate.js.map +1 -1
  76. package/dist/assets/{InputSuggestions-xcV7PZDf.js → InputSuggestions-DtUQULbo.js} +1 -1
  77. package/dist/assets/{ListItemStandardExpandableTextTemplate-RYCr4pVL.js → ListItemStandardExpandableTextTemplate-B62PaSFk.js} +1 -1
  78. package/dist/assets/{bundle.esm-bg-64miJ.js → bundle.esm-Ba8g4ech.js} +211 -210
  79. package/dist/assets/messagebundle_en-PmkE-Vht.js +1 -0
  80. package/dist/css/themes/AccordionItem.css +1 -1
  81. package/dist/css/themes/BreadcrumbsPopover.css +1 -1
  82. package/dist/css/themes/Button.css +1 -1
  83. package/dist/css/themes/CountrySelector.css +1 -1
  84. package/dist/css/themes/Divider.css +1 -1
  85. package/dist/css/themes/Footer.css +1 -1
  86. package/dist/css/themes/HeroBanner.css +1 -1
  87. package/dist/css/themes/ListItem.css +1 -1
  88. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  89. package/dist/css/themes/PromoTile.css +1 -0
  90. package/dist/css/themes/Quote.css +1 -1
  91. package/dist/css/themes/RatingIndicator.css +1 -1
  92. package/dist/css/themes/Slider.css +1 -1
  93. package/dist/css/themes/StepInput.css +1 -1
  94. package/dist/css/themes/Tag.css +1 -1
  95. package/dist/custom-elements-internal.json +1515 -277
  96. package/dist/custom-elements.json +1220 -146
  97. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  98. package/dist/generated/i18n/i18n-defaults.d.ts +7 -1
  99. package/dist/generated/i18n/i18n-defaults.js +7 -1
  100. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  101. package/dist/generated/templates/FooterTemplate.lit.js +33 -32
  102. package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
  103. package/dist/generated/templates/HeroBannerTemplate.lit.js +1 -1
  104. package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
  105. package/dist/generated/templates/ListItemTemplate.lit.js +31 -23
  106. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  107. package/dist/generated/templates/ListTemplate.lit.js +2 -2
  108. package/dist/generated/templates/ListTemplate.lit.js.map +1 -1
  109. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +11 -6
  110. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
  111. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +6 -6
  112. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  113. package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
  114. package/dist/generated/themes/AccordionItem.css.js +1 -1
  115. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  116. package/dist/generated/themes/BreadcrumbsPopover.css.d.ts +1 -1
  117. package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
  118. package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
  119. package/dist/generated/themes/Button.css.d.ts +1 -1
  120. package/dist/generated/themes/Button.css.js +1 -1
  121. package/dist/generated/themes/Button.css.js.map +1 -1
  122. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  123. package/dist/generated/themes/CountrySelector.css.js +1 -1
  124. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  125. package/dist/generated/themes/Divider.css.d.ts +1 -1
  126. package/dist/generated/themes/Divider.css.js +1 -1
  127. package/dist/generated/themes/Divider.css.js.map +1 -1
  128. package/dist/generated/themes/Footer.css.d.ts +1 -1
  129. package/dist/generated/themes/Footer.css.js +1 -1
  130. package/dist/generated/themes/Footer.css.js.map +1 -1
  131. package/dist/generated/themes/HeroBanner.css.d.ts +1 -1
  132. package/dist/generated/themes/HeroBanner.css.js +1 -1
  133. package/dist/generated/themes/HeroBanner.css.js.map +1 -1
  134. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  135. package/dist/generated/themes/ListItem.css.js +1 -1
  136. package/dist/generated/themes/ListItem.css.js.map +1 -1
  137. package/dist/generated/themes/MastheadProfileMenu.css.d.ts +1 -1
  138. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  139. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  140. package/dist/generated/themes/PromoTile.css.d.ts +2 -0
  141. package/dist/generated/themes/PromoTile.css.js +8 -0
  142. package/dist/generated/themes/PromoTile.css.js.map +1 -0
  143. package/dist/generated/themes/Quote.css.d.ts +1 -1
  144. package/dist/generated/themes/Quote.css.js +1 -1
  145. package/dist/generated/themes/Quote.css.js.map +1 -1
  146. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  147. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  148. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  149. package/dist/generated/themes/Slider.css.d.ts +1 -1
  150. package/dist/generated/themes/Slider.css.js +1 -1
  151. package/dist/generated/themes/Slider.css.js.map +1 -1
  152. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  153. package/dist/generated/themes/StepInput.css.js +1 -1
  154. package/dist/generated/themes/StepInput.css.js.map +1 -1
  155. package/dist/generated/themes/Tag.css.d.ts +1 -1
  156. package/dist/generated/themes/Tag.css.js +1 -1
  157. package/dist/generated/themes/Tag.css.js.map +1 -1
  158. package/dist/messagebundle.properties +10 -0
  159. package/dist/messagebundle_en.properties +6 -0
  160. package/dist/types/PromoTile.d.ts +60 -0
  161. package/dist/types/PromoTile.js +63 -0
  162. package/dist/types/PromoTile.js.map +1 -0
  163. package/dist/types/StatusBadgeValueState.d.ts +8 -0
  164. package/dist/types/StatusBadgeValueState.js +10 -0
  165. package/dist/types/StatusBadgeValueState.js.map +1 -0
  166. package/dist/utils/debounce.d.ts +3 -1
  167. package/dist/utils/debounce.js +16 -4
  168. package/dist/utils/debounce.js.map +1 -1
  169. package/dist/vscode.html-custom-data.json +185 -16
  170. package/dist/web-types.json +603 -34
  171. package/package.json +1 -1
  172. package/src/Accordion.ts +19 -0
  173. package/src/AccordionItem.ts +28 -0
  174. package/src/AccordionItemTemplate.tsx +25 -10
  175. package/src/AccordionTemplate.tsx +22 -1
  176. package/src/Button.ts +10 -0
  177. package/src/Footer.hbs +39 -36
  178. package/src/Footer.ts +81 -6
  179. package/src/HeroBanner.hbs +0 -1
  180. package/src/List.hbs +0 -2
  181. package/src/List.ts +27 -8
  182. package/src/ListGroupHeader.ts +2 -1
  183. package/src/ListItem.hbs +16 -2
  184. package/src/ListItem.ts +29 -2
  185. package/src/ListItemBase.ts +42 -0
  186. package/src/ListSelectAll.ts +2 -1
  187. package/src/MastheadItem.ts +9 -0
  188. package/src/MastheadProfileMenu.hbs +79 -15
  189. package/src/MastheadProfileMenu.ts +228 -13
  190. package/src/MastheadShell.ts +7 -1
  191. package/src/PromoTile.ts +290 -0
  192. package/src/PromoTileTemplate.tsx +68 -0
  193. package/src/Quote.ts +17 -3
  194. package/src/Search.ts +1 -0
  195. package/src/SearchableListBase.hbs +18 -1
  196. package/src/SearchableListBase.ts +47 -1
  197. package/src/SelectBox.ts +11 -0
  198. package/src/SelectBoxItem.ts +39 -0
  199. package/src/StatusBadge.ts +1 -8
  200. package/src/StepInputTemplate.tsx +1 -1
  201. package/src/generated/i18n/i18n-defaults.ts +2 -2
  202. package/src/generated/templates/FooterTemplate.lit.ts +33 -32
  203. package/src/generated/templates/HeroBannerTemplate.lit.ts +1 -1
  204. package/src/generated/templates/ListItemTemplate.lit.ts +31 -23
  205. package/src/generated/templates/ListTemplate.lit.ts +2 -2
  206. package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +10 -5
  207. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +6 -6
  208. package/src/generated/themes/AccordionItem.css.ts +1 -1
  209. package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
  210. package/src/generated/themes/Button.css.ts +1 -1
  211. package/src/generated/themes/CountrySelector.css.ts +1 -1
  212. package/src/generated/themes/Divider.css.ts +1 -1
  213. package/src/generated/themes/Footer.css.ts +1 -1
  214. package/src/generated/themes/HeroBanner.css.ts +1 -1
  215. package/src/generated/themes/ListItem.css.ts +1 -1
  216. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  217. package/src/generated/themes/PromoTile.css.ts +9 -0
  218. package/src/generated/themes/Quote.css.ts +1 -1
  219. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  220. package/src/generated/themes/Slider.css.ts +1 -1
  221. package/src/generated/themes/StepInput.css.ts +1 -1
  222. package/src/generated/themes/Tag.css.ts +1 -1
  223. package/src/i18n/messagebundle.properties +10 -0
  224. package/src/i18n/messagebundle_en.properties +6 -0
  225. package/src/themes/AccordionItem.css +61 -22
  226. package/src/themes/BreadcrumbsPopover.css +2 -1
  227. package/src/themes/Button.css +13 -0
  228. package/src/themes/CountrySelector.css +4 -0
  229. package/src/themes/Divider.css +2 -1
  230. package/src/themes/Footer.css +44 -9
  231. package/src/themes/HeroBanner.css +34 -32
  232. package/src/themes/ListItem.css +4 -9
  233. package/src/themes/MastheadProfileMenu.css +87 -3
  234. package/src/themes/PromoTile.css +152 -0
  235. package/src/themes/Quote.css +21 -24
  236. package/src/themes/StepInput.css +10 -0
  237. package/src/themes/Tag.css +18 -24
  238. package/src/types/PromoTile.ts +61 -0
  239. package/src/types/StatusBadgeValueState.ts +9 -0
  240. package/src/utils/debounce.ts +19 -4
  241. package/dist/assets/messagebundle_en-BHfPJk-2.js +0 -1
@@ -0,0 +1,124 @@
1
+ import { UDExPromoTile } from "../support/component-imports.js";
2
+
3
+ const eyebrow = "Eyebrow";
4
+ const header = "Header";
5
+ const iconName = "add";
6
+ const imageLabel = "image label";
7
+ const logoUrl = "http://test.com";
8
+ const buttonLabel = "Button";
9
+ const design = "Tertiary";
10
+ const colorScheme = "Grey9";
11
+ const promoTile = <UDExPromoTile>Text</UDExPromoTile>;
12
+ const simplePromoTile = <UDExPromoTile eyebrow={eyebrow} header={header}>Text</UDExPromoTile>;
13
+ const iconPromoTile = <UDExPromoTile icon={iconName} image-label={imageLabel}>Text</UDExPromoTile>;
14
+ const logoPromoTile = <UDExPromoTile logoUrl={logoUrl} image-label={imageLabel}>Text</UDExPromoTile>;
15
+ const buttonPromoTile = <UDExPromoTile button={buttonLabel} button-design={design}>Text</UDExPromoTile>;
16
+ const horizontalPromoTile = <UDExPromoTile orientation="Horizontal" button={buttonLabel}>Text</UDExPromoTile>;
17
+ const darkPromoTile = <UDExPromoTile color-scheme={colorScheme} button={buttonLabel}>Text</UDExPromoTile>;
18
+
19
+ describe("Promo Tile", () => {
20
+ it("renders simple promo tile", () => {
21
+ cy.mount(promoTile)
22
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("be.visible");
23
+ });
24
+
25
+ it("renders promo tile with default classes", () => {
26
+ cy.mount(promoTile)
27
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--vertical");
28
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--light");
29
+ });
30
+
31
+ it("renders promo tile with default aria label", () => {
32
+ cy.mount(promoTile)
33
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.attr", "aria-label", "Promo Tile");
34
+ });
35
+
36
+ it("renders promo tile without footer", () => {
37
+ cy.mount(promoTile)
38
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__footer").should("not.exist");
39
+ });
40
+
41
+ it("renders promo tile in horizontal orientation", () => {
42
+ cy.mount(horizontalPromoTile)
43
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--horizontal");
44
+ });
45
+
46
+ it("renders promo tile with eyebrow", () => {
47
+ cy.mount(simplePromoTile)
48
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__eyebrow").should("have.text", eyebrow);
49
+ });
50
+
51
+ it("renders promo tile with header", () => {
52
+ cy.mount(simplePromoTile)
53
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.attr", "aria-label", header);
54
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__header").should("have.text", header);
55
+ });
56
+
57
+ it("renders promo tile with UI5 icon", () => {
58
+ cy.mount(iconPromoTile)
59
+ cy.get("[udex-promo-tile]").shadow().find("[ui5-icon]").should("have.attr", "name", iconName);
60
+ cy.get("[udex-promo-tile]").shadow().find("[ui5-icon]").should("have.attr", "accessible-name", imageLabel);
61
+ });
62
+
63
+ it("renders promo tile with custom logo", () => {
64
+ cy.mount(logoPromoTile)
65
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__pictogram").should("have.class", "udex-promo-tile__pictogram--logo");
66
+ cy.get("[udex-promo-tile]").shadow().find("img").should("have.attr", "src", logoUrl);
67
+ cy.get("[udex-promo-tile]").shadow().find("img").should("have.attr", "alt", imageLabel);
68
+ });
69
+
70
+ it("renders promo tile with dark color scheme", () => {
71
+ cy.mount(darkPromoTile)
72
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--dark");
73
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").should("have.attr", "design", "Secondary");
74
+ });
75
+ });
76
+
77
+ describe("Promo Tile - CTA button", () => {
78
+ beforeEach(() => {
79
+ cy.mount(buttonPromoTile)
80
+ })
81
+
82
+ it("renders promo tile with CTA button", () => {
83
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__footer").should("be.visible");
84
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").shadow().find("button").should("have.attr", "aria-label", buttonLabel);
85
+ });
86
+
87
+ it("renders promo tile with CTA default desktop size", () => {
88
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").should("have.attr", "size", "Large");
89
+ });
90
+
91
+ it("renders promo tile with CTA button Tertiary design", () => {
92
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").should("have.attr", "design", design);
93
+ });
94
+
95
+ it("button click emits \"button-click\" event", () => {
96
+ const stub = cy.stub();
97
+ cy.get("[udex-promo-tile]").then($tiles => {
98
+ $tiles.get(0).addEventListener("button-click", stub);
99
+ });
100
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").click()
101
+ .then(() => {
102
+ expect(stub).to.have.been.called;
103
+ });
104
+ });
105
+ });
106
+
107
+ describe("Promo Tile - Mobile tests", () => {
108
+ beforeEach(() => {
109
+ cy.simulateDevice();
110
+ cy.mount(horizontalPromoTile);
111
+ });
112
+
113
+ it("renders promo tile with smaller CTA button size", () => {
114
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").should("have.attr", "size", "Medium");
115
+ });
116
+
117
+ it("renders promo tile with mobile design", () => {
118
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").then($tiles => {
119
+ const tileStyles = window.getComputedStyle($tiles[0]);
120
+ expect(tileStyles.padding).eqls("24px");
121
+ expect(tileStyles.flexDirection).eqls("column");
122
+ })
123
+ });
124
+ });
@@ -0,0 +1,65 @@
1
+ import {UDExFilterMenu, UDExQuote} from "../support/component-imports.js";
2
+ import { UDExLink } from "../support/component-imports.js";
3
+ import { UDExMaskType, UDExSizeType, UDExImagePlacement } from "../../src/Quote.js";
4
+
5
+
6
+ const componentQuote = <UDExQuote
7
+ image-size={UDExSizeType.large}
8
+ text-size={UDExSizeType.large}
9
+ mask={UDExMaskType.avatar}>
10
+ <img
11
+ alt="John Ford avatar"
12
+ slot="image"
13
+ style="border-radius: 100px;"
14
+ src="https://cdn.udex.services.sap.com/dds/design-tokens/assets/logos/sap-logo.svg"
15
+ />
16
+ It is great for data management and comparing data. It does analysis of data
17
+ and compares old data and new data as well. Data is easily stored and easily
18
+ editable.
19
+ <span slot="author">John Ford, Job Title, Company, Inc.</span>
20
+ <UDExLink
21
+ slot="link"
22
+ design="Default"
23
+ interactive-area-size="Normal"
24
+ wrapping-type="Normal">
25
+ Read more
26
+ </UDExLink>
27
+ </UDExQuote>
28
+
29
+ describe("Quote", () => {
30
+ beforeEach(() => {
31
+ cy.mount(componentQuote)
32
+ })
33
+
34
+ it("Default slot content renders correctly", () => {
35
+ cy.get("[udex-quote]").shadow().find(".content-container__text").should("exist");
36
+ });
37
+
38
+ it("Image slot content renders correctly", () => {
39
+ cy.get("[udex-quote]").shadow().find("[slot=image]").should("exist");
40
+ });
41
+
42
+ it("Author slot content renders correctly", () => {
43
+ cy.get("[udex-quote]").shadow().find("[slot=author]").should("exist");
44
+ });
45
+
46
+ it("Link slot content renders correctly", () => {
47
+ cy.get("[udex-quote]").shadow().find("[slot=link]").should("exist");
48
+ });
49
+
50
+ it("Updates image placement to 'right' correctly", () => {
51
+ cy.get("[udex-quote]").then($quote => {
52
+ const quote = $quote[0] as UDExQuote;
53
+ quote.imagePlacement = UDExImagePlacement.right;
54
+ });
55
+ cy.get("[udex-quote]").should("have.attr", "image-placement", "right");
56
+ });
57
+
58
+ it("Updates image size correctly", () => {
59
+ cy.get("[udex-quote]").then($quote => {
60
+ const quote = $quote[0] as UDExQuote;
61
+ quote.imageSize = UDExSizeType.small;
62
+ });
63
+ cy.get("[udex-quote]").should("have.attr", "image-size", "small");
64
+ });
65
+ });
@@ -1,10 +1,11 @@
1
- import { UDExSelectBox, UDExSelectBoxSelectAll, UDExSelectBoxGroupHeader, UDExSelectBoxItem } from "../support/component-imports.js";
1
+ import { UDExSelectBox, UDExSelectBoxSelectAll, UDExSelectBoxGroupHeader, UDExSelectBoxItem, UDExButton } from "../support/component-imports.js";
2
+ import { UDExListMode } from "../../src/types/List.js";
2
3
 
3
4
  const fullComponent = <UDExSelectBox
4
- id="select-box"
5
- height="400px"
6
- label="Programming languages"
7
- supportingText="category lists">
5
+ id="select-box"
6
+ height="400px"
7
+ label="Programming languages"
8
+ supportingText="category lists">
8
9
  <UDExSelectBoxItem label="JavaScript" supportingText="Frontend web development">
9
10
  <span class="custom-content">Lorem ipsum</span>
10
11
  </UDExSelectBoxItem>
@@ -26,59 +27,65 @@ supportingText="category lists">
26
27
 
27
28
  const multiSelect = <div style="width: 300px; position:relative;">
28
29
  <a id="previous-focus" href="#">Previous focusable element</a>
29
- <UDExSelectBox
30
- id="select-box"
31
- height="400px"
32
- label="Programming languages"
33
- supportingText="category lists"
34
- mode="MultiSelect">
35
- <UDExSelectBoxItem label="JavaScript" supportingText="Frontend web development"></UDExSelectBoxItem>
36
- <UDExSelectBoxItem label="Python" supportingText="Used in data analysis"></UDExSelectBoxItem>
37
- <UDExSelectBoxItem label="Java" supportingText="Building large-scale applications"></UDExSelectBoxItem>
38
- <UDExSelectBoxItem label="Swift" supportingText="iOS app development"></UDExSelectBoxItem>
39
- <UDExSelectBoxItem label="C# - is a general-purpose high-level programming language supporting multiple paradigms" supportingText="Object-oriented language"></UDExSelectBoxItem>
40
- <UDExSelectBoxItem label="Perl" supportingText="General-purpose scripting language"></UDExSelectBoxItem>
41
- <UDExSelectBoxItem label="Rust" supportingText="Focused on safety and speed"></UDExSelectBoxItem>
42
- <UDExSelectBoxItem label="PHP" supportingText="Server-side scripting language"></UDExSelectBoxItem>
43
- <UDExSelectBoxItem label="Go" supportingText="Statically typed language"></UDExSelectBoxItem>
44
- <UDExSelectBoxItem label="Kotlin" supportingText="For Android development"></UDExSelectBoxItem>
45
- <UDExSelectBoxItem label="TypeScript" supportingText="Super set of JS with static typing"></UDExSelectBoxItem>
46
- <UDExSelectBoxItem label="Ruby" supportingText="Readable and easy-to-use"></UDExSelectBoxItem>
47
- <UDExSelectBoxItem label="C++" supportingText="Efficient and flexible language"></UDExSelectBoxItem>
48
- <UDExSelectBoxItem label="C" supportingText="Most widely used programming language" disabled></UDExSelectBoxItem>
49
- <UDExSelectBoxItem label="R" supportingText="Language for statistical computing"></UDExSelectBoxItem>
50
- </UDExSelectBox></div>
30
+ <UDExSelectBox
31
+ id="select-box"
32
+ height="400px"
33
+ label="Programming languages"
34
+ supportingText="category lists"
35
+ mode={UDExListMode.MultiSelect}>
36
+ <UDExSelectBoxItem label="JavaScript" supportingText="Frontend web development"></UDExSelectBoxItem>
37
+ <UDExSelectBoxItem label="Python" supportingText="Used in data analysis"></UDExSelectBoxItem>
38
+ <UDExSelectBoxItem label="Java" supportingText="Building large-scale applications"></UDExSelectBoxItem>
39
+ <UDExSelectBoxItem label="Swift" supportingText="iOS app development"></UDExSelectBoxItem>
40
+ <UDExSelectBoxItem label="C# - is a general-purpose high-level programming language supporting multiple paradigms" supportingText="Object-oriented language"></UDExSelectBoxItem>
41
+ <UDExSelectBoxItem label="Perl" supportingText="General-purpose scripting language"></UDExSelectBoxItem>
42
+ <UDExSelectBoxItem label="Rust" supportingText="Focused on safety and speed"></UDExSelectBoxItem>
43
+ <UDExSelectBoxItem label="PHP" supportingText="Server-side scripting language"></UDExSelectBoxItem>
44
+ <UDExSelectBoxItem label="Go" supportingText="Statically typed language"></UDExSelectBoxItem>
45
+ <UDExSelectBoxItem label="Kotlin" supportingText="For Android development"></UDExSelectBoxItem>
46
+ <UDExSelectBoxItem label="TypeScript" supportingText="Super set of JS with static typing"></UDExSelectBoxItem>
47
+ <UDExSelectBoxItem label="Ruby" supportingText="Readable and easy-to-use"></UDExSelectBoxItem>
48
+ <UDExSelectBoxItem label="C++" supportingText="Efficient and flexible language"></UDExSelectBoxItem>
49
+ <UDExSelectBoxItem label="C" supportingText="Most widely used programming language" disabled></UDExSelectBoxItem>
50
+ <UDExSelectBoxItem label="R" supportingText="Language for statistical computing"></UDExSelectBoxItem>
51
+ </UDExSelectBox>
52
+ </div>
51
53
 
52
- const displayOnly = <div style="width: 350px; position:relative;"><UDExSelectBox
53
- id="select-box"
54
- height="400px"
55
- label="Programming languages"
56
- supportingText="category lists"
57
- mode="MultiSelect"
58
- displayonly>
59
- <UDExSelectBoxItem selected label="JavaScript" supportingText="Frontend web development"></UDExSelectBoxItem>
60
- <UDExSelectBoxItem selected label="Python" supportingText="Used in data analysis"></UDExSelectBoxItem>
61
- <UDExSelectBoxItem selected label="Java" supportingText="Building large-scale applications"></UDExSelectBoxItem>
62
- <UDExSelectBoxItem selected label="Swift" supportingText="iOS app development"></UDExSelectBoxItem>
63
- <UDExSelectBoxItem selected label="C#" supportingText="Object-oriented language"></UDExSelectBoxItem>
64
- <UDExSelectBoxItem selected label="Perl" supportingText="General-purpose scripting language"></UDExSelectBoxItem>
65
- <UDExSelectBoxItem selected label="Rust" supportingText="Focused on safety and speed"></UDExSelectBoxItem>
66
- <UDExSelectBoxItem selected label="PHP" supportingText="Server-side scripting language"></UDExSelectBoxItem>
67
- <UDExSelectBoxItem selected label="Go" supportingText="Statically typed language"></UDExSelectBoxItem>
68
- <UDExSelectBoxItem selected label="Kotlin" supportingText="For Android development"></UDExSelectBoxItem>
69
- <UDExSelectBoxItem selected label="TypeScript" supportingText="Super set of JS with static typing"></UDExSelectBoxItem>
70
- <UDExSelectBoxItem selected label="Ruby" supportingText="Readable and easy-to-use"></UDExSelectBoxItem>
71
- <UDExSelectBoxItem selected label="C++" supportingText="Efficient and flexible language"></UDExSelectBoxItem>
72
- <UDExSelectBoxItem label="C" supportingText="Most widely used programming language" disabled></UDExSelectBoxItem>
73
- <UDExSelectBoxItem label="R" supportingText="Language for statistical computing"></UDExSelectBoxItem>
74
- </UDExSelectBox></div>
54
+ const displayOnly = <div style="width: 350px; position:relative;">
55
+ <UDExSelectBox
56
+ id="select-box"
57
+ height="400px"
58
+ label="Programming languages"
59
+ supportingText="category lists"
60
+ mode={UDExListMode.MultiSelect}
61
+ displayonly>
62
+ <UDExSelectBoxItem selected label="JavaScript" supportingText="Frontend web development"></UDExSelectBoxItem>
63
+ <UDExSelectBoxItem selected label="Python" supportingText="Used in data analysis"></UDExSelectBoxItem>
64
+ <UDExSelectBoxItem selected label="Java" supportingText="Building large-scale applications"></UDExSelectBoxItem>
65
+ <UDExSelectBoxItem selected label="Swift" supportingText="iOS app development"></UDExSelectBoxItem>
66
+ <UDExSelectBoxItem selected label="C#" supportingText="Object-oriented language"></UDExSelectBoxItem>
67
+ <UDExSelectBoxItem selected label="Perl" supportingText="General-purpose scripting language"></UDExSelectBoxItem>
68
+ <UDExSelectBoxItem selected label="Rust" supportingText="Focused on safety and speed"></UDExSelectBoxItem>
69
+ <UDExSelectBoxItem selected label="PHP" supportingText="Server-side scripting language"></UDExSelectBoxItem>
70
+ <UDExSelectBoxItem selected label="Go" supportingText="Statically typed language"></UDExSelectBoxItem>
71
+ <UDExSelectBoxItem selected label="Kotlin" supportingText="For Android development"></UDExSelectBoxItem>
72
+ <UDExSelectBoxItem selected label="TypeScript" supportingText="Super set of JS with static typing"></UDExSelectBoxItem>
73
+ <UDExSelectBoxItem selected label="Ruby" supportingText="Readable and easy-to-use"></UDExSelectBoxItem>
74
+ <UDExSelectBoxItem selected label="C++" supportingText="Efficient and flexible language"></UDExSelectBoxItem>
75
+ <UDExSelectBoxItem label="C" supportingText="Most widely used programming language" disabled></UDExSelectBoxItem>
76
+ <UDExSelectBoxItem label="R" supportingText="Language for statistical computing"></UDExSelectBoxItem>
77
+ </UDExSelectBox>
78
+ </div>
75
79
 
76
80
  const shortComponent = <div style="width: 350px; position:relative;"><UDExSelectBox
77
- id="select-box"
78
- height="400px"
79
- label="Programming languages"
80
- supportingText="category lists">
81
- <UDExSelectBoxItem label="JavaScript"></UDExSelectBoxItem>
81
+ id="select-box"
82
+ height="400px"
83
+ label="Programming languages"
84
+ supportingText="category lists">
85
+ <UDExSelectBoxItem label="JavaScript" additionalText="Additional Text">
86
+ <UDExButton id='firstIcon' accessible-name='Action' slot='firstIcon' design='Tertiary' icon='action' size='Small'></UDExButton>
87
+ <UDExButton id='secondIcon' accessible-name='Email' slot='secondIcon' design='Tertiary' icon='email' size='Small'></UDExButton>
88
+ </UDExSelectBoxItem>
82
89
  <UDExSelectBoxItem label="Python"></UDExSelectBoxItem>
83
90
  <UDExSelectBoxItem label="Java"></UDExSelectBoxItem>
84
91
  <UDExSelectBoxItem label="Swift"></UDExSelectBoxItem>
@@ -87,21 +94,21 @@ supportingText="category lists">
87
94
  </UDExSelectBox></div>
88
95
 
89
96
  const groupHeader = <div style="width: 350px; position:relative;"><UDExSelectBox
90
- id="select-box"
91
- mode="MultiSelect"
92
- label="Programming languages">
93
- <UDExSelectBoxGroupHeader label="Programming Languages" supportingText="Digital Builders">
94
- <UDExSelectBoxItem label="JavaScript" supportingText="Frontend web development"></UDExSelectBoxItem>
95
- <UDExSelectBoxItem label="Python" supportingText="Used in data analysis"></UDExSelectBoxItem>
96
- </UDExSelectBoxGroupHeader>
97
+ id="select-box"
98
+ mode={UDExListMode.MultiSelect}
99
+ label="Programming languages">
100
+ <UDExSelectBoxGroupHeader label="Programming Languages" supportingText="Digital Builders">
101
+ <UDExSelectBoxItem label="JavaScript" supportingText="Frontend web development"></UDExSelectBoxItem>
102
+ <UDExSelectBoxItem label="Python" supportingText="Used in data analysis"></UDExSelectBoxItem>
103
+ </UDExSelectBoxGroupHeader>
97
104
  </UDExSelectBox></div>
98
105
 
99
106
  const selectAll = <div style="width: 350px; position:relative;">
100
107
  <a id="previous-focus" href="#">Previous focusable element</a>
101
108
  <UDExSelectBox
102
- id="select-box"
103
- mode="MultiSelect"
104
- label="Programming languages">
109
+ id="select-box"
110
+ mode={UDExListMode.MultiSelect}
111
+ label="Programming languages">
105
112
  <UDExSelectBoxSelectAll>
106
113
  <UDExSelectBoxItem label="JavaScript" supportingText="Frontend web development"></UDExSelectBoxItem>
107
114
  <UDExSelectBoxItem label="Python" supportingText="Used in data analysis"></UDExSelectBoxItem>
@@ -238,6 +245,28 @@ describe("SelectBox", () => {
238
245
  .should("not.exist");
239
246
  });
240
247
 
248
+ it('render the additional text in the item', () => {
249
+ cy.mount(shortComponent);
250
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
251
+ cy.get("#select-box").shadow().find("udex-list-item").eq(0).as("firstItem");
252
+
253
+ cy.get("@firstItem").should("have.attr", "additional-text", "Additional Text");
254
+ });
255
+
256
+ it('render the first icon slot in the item', () => {
257
+ cy.mount(shortComponent);
258
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
259
+ cy.get("#select-box").shadow().find("udex-list-item").eq(0).as("firstItem");
260
+ cy.get("@firstItem").find("#firstIcon").should("exist");
261
+ });
262
+
263
+ it('render the second icon slot in the item', () => {
264
+ cy.mount(shortComponent);
265
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
266
+ cy.get("#select-box").shadow().find("udex-list-item").eq(0).as("firstItem");
267
+ cy.get("@firstItem").find("#secondIcon").should("exist");
268
+ });
269
+
241
270
  it('should filter items based on search input', () => {
242
271
  cy.mount(fullComponent);
243
272
  cy.get("#select-box").shadow()
@@ -906,6 +935,45 @@ describe("SelectBox", () => {
906
935
  cy.get("@showmore")
907
936
  .should("have.been.called");
908
937
  });
909
- });
910
938
 
939
+ it('emit first-icon-click when first icon clicked', () => {
940
+ let eventType;
941
+ let itemLabel;
942
+ cy.mount(shortComponent);
943
+ cy.get("#select-box").then(menu => {
944
+ menu.get(0).addEventListener("ui5-first-icon-click", (e: CustomEvent) => {
945
+ eventType = e.type;
946
+ itemLabel = e.detail.item.label;
947
+ e.detail.originalEvent.stopPropagation();
948
+ });
949
+ });
950
+
951
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
952
+ cy.get("#select-box").shadow().find("udex-list-item").eq(0).as("firstItem");
953
+ cy.get("@firstItem").find("#firstIcon").click().then(() => {
954
+ expect(eventType).to.equal("ui5-first-icon-click");
955
+ expect(itemLabel).to.equal("JavaScript");
956
+ });
957
+ });
958
+
959
+ it('emit second-icon-click when second icon clicked', () => {
960
+ let eventType;
961
+ let itemAdditionalText;
962
+ cy.mount(shortComponent);
963
+ cy.get("#select-box").then(menu => {
964
+ menu.get(0).addEventListener("ui5-second-icon-click", (e: CustomEvent) => {
965
+ eventType = e.type;
966
+ itemAdditionalText = e.detail.item.additionalText;
967
+ e.detail.originalEvent.stopPropagation();
968
+ });
969
+ });
970
+
971
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
972
+ cy.get("#select-box").shadow().find("udex-list-item").eq(0).as("firstItem");
973
+ cy.get("@firstItem").find("#secondIcon").click().then(() => {
974
+ expect(eventType).to.equal("ui5-second-icon-click");
975
+ expect(itemAdditionalText).to.equal("Additional Text");
976
+ });
977
+ });
978
+ });
911
979
  });
@@ -52,6 +52,10 @@ import UDExFilterMenuItem from "../../instrumented/FilterMenuItem.js";
52
52
  import UDExFilterMenuGroupHeader from "../../instrumented/FilterMenuGroupHeader.js";
53
53
  import UDExFilterMenuSelectAll from "../../instrumented/FilterMenuSelectAll.js";
54
54
  import UDExSocialMediaButton from "../../instrumented/SocialMediaButton.js";
55
+ import UDExPromoTile from "../../instrumented/PromoTile.js";
56
+ import UDExQuote from "../../instrumented/Quote.js";
57
+ import UDExMastheadProfileMenu from "../../instrumented/MastheadProfileMenu.js";
58
+ import UDExMessageStrip from "../../instrumented/MessageStrip.js";
55
59
 
56
60
  export {
57
61
  UDExAccordion,
@@ -77,6 +81,7 @@ export {
77
81
  UDExLinkListItem,
78
82
  UDExListItem,
79
83
  UDExPhoneNumberField,
84
+ UDExPromoTile,
80
85
  UDExRatingBar,
81
86
  UDExRatingIndicator,
82
87
  UDExReview,
@@ -108,4 +113,7 @@ export {
108
113
  UDExUploadItem,
109
114
  UDExWizard,
110
115
  UDExWizardStep,
116
+ UDExQuote,
117
+ UDExMastheadProfileMenu,
118
+ UDExMessageStrip,
111
119
  };
@@ -52,6 +52,10 @@ import UDExFilterMenuItem from "../../src/FilterMenuItem.js";
52
52
  import UDExFilterMenuGroupHeader from "../../src/FilterMenuGroupHeader.js";
53
53
  import UDExFilterMenuSelectAll from "../../src/FilterMenuSelectAll.js";
54
54
  import UDExSocialMediaButton from "../../src/SocialMediaButton.js";
55
+ import UDExPromoTile from "../../src/PromoTile.js";
56
+ import UDExQuote from "../../src/Quote.js";
57
+ import UDExMastheadProfileMenu from "../../src/MastheadProfileMenu.js";
58
+ import UDExMessageStrip from "../../src/MessageStrip.js";
55
59
 
56
60
  export {
57
61
  UDExAccordion,
@@ -77,6 +81,7 @@ export {
77
81
  UDExLinkListItem,
78
82
  UDExListItem,
79
83
  UDExPhoneNumberField,
84
+ UDExPromoTile,
80
85
  UDExRatingBar,
81
86
  UDExRatingIndicator,
82
87
  UDExReview,
@@ -107,5 +112,8 @@ export {
107
112
  UDExUpload,
108
113
  UDExUploadItem,
109
114
  UDExWizard,
110
- UDExWizardStep
115
+ UDExWizardStep,
116
+ UDExQuote,
117
+ UDExMastheadProfileMenu,
118
+ UDExMessageStrip,
111
119
  };
@@ -5,6 +5,14 @@ import type UDExAccordionItem from "./AccordionItem.js";
5
5
  type UDExAccordionToggleItemsEventDetail = {
6
6
  isOpen: boolean;
7
7
  };
8
+ export declare enum UDExAccordionHeadlineLevel {
9
+ H1 = "H1",
10
+ H2 = "H2",
11
+ H3 = "H3",
12
+ H4 = "H4",
13
+ H5 = "H5",
14
+ H6 = "H6"
15
+ }
8
16
  /**
9
17
  * @class
10
18
  *
@@ -54,6 +62,13 @@ declare class UDExAccordion extends UI5Element {
54
62
  * @public
55
63
  */
56
64
  headline: string;
65
+ /**
66
+ * Defines the semantic level of the headline.
67
+ *
68
+ * @default UDExAccordionHeadlineLevel.h3
69
+ * @public
70
+ */
71
+ headlineLevel: UDExAccordionHeadlineLevel;
57
72
  /**
58
73
  * Slot for accordion items.
59
74
  *
package/dist/Accordion.js CHANGED
@@ -18,6 +18,15 @@ import AccordionTemplate from "./AccordionTemplate.js";
18
18
  import { COLLAPSE_ALL, EXPAND_ALL } from "./generated/i18n/i18n-defaults.js";
19
19
  // Styles
20
20
  import AccordionCss from "./generated/themes/Accordion.css.js";
21
+ export var UDExAccordionHeadlineLevel;
22
+ (function (UDExAccordionHeadlineLevel) {
23
+ UDExAccordionHeadlineLevel["H1"] = "H1";
24
+ UDExAccordionHeadlineLevel["H2"] = "H2";
25
+ UDExAccordionHeadlineLevel["H3"] = "H3";
26
+ UDExAccordionHeadlineLevel["H4"] = "H4";
27
+ UDExAccordionHeadlineLevel["H5"] = "H5";
28
+ UDExAccordionHeadlineLevel["H6"] = "H6";
29
+ })(UDExAccordionHeadlineLevel || (UDExAccordionHeadlineLevel = {}));
21
30
  /**
22
31
  * @class
23
32
  *
@@ -40,6 +49,13 @@ import AccordionCss from "./generated/themes/Accordion.css.js";
40
49
  let UDExAccordion = UDExAccordion_1 = class UDExAccordion extends UI5Element {
41
50
  constructor() {
42
51
  super();
52
+ /**
53
+ * Defines the semantic level of the headline.
54
+ *
55
+ * @default UDExAccordionHeadlineLevel.h3
56
+ * @public
57
+ */
58
+ this.headlineLevel = UDExAccordionHeadlineLevel.H3;
43
59
  this._allExpanded = false;
44
60
  this._activeItemIndex = -1;
45
61
  }
@@ -133,6 +149,9 @@ __decorate([
133
149
  __decorate([
134
150
  property({ type: String })
135
151
  ], UDExAccordion.prototype, "headline", void 0);
152
+ __decorate([
153
+ property()
154
+ ], UDExAccordion.prototype, "headlineLevel", void 0);
136
155
  __decorate([
137
156
  slot({ type: HTMLElement, "default": true, individualSlots: true })
138
157
  ], UDExAccordion.prototype, "_items", void 0);
@@ -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\ntype UDExAccordionToggleItemsEventDetail = {\n isOpen: boolean\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 * 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;\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 { 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\ntype UDExAccordionToggleItemsEventDetail = {\n isOpen: boolean\n}\n\nexport enum UDExAccordionHeadlineLevel {\n H1 = \"H1\",\n H2 = \"H2\",\n H3 = \"H3\",\n H4 = \"H4\",\n H5 = \"H5\",\n H6 = \"H6\"\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;\n"]}
@@ -1,4 +1,8 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ export declare enum UDExAccordionItemTitleSize {
3
+ Standard = "Standard",
4
+ Large = "Large"
5
+ }
2
6
  /**
3
7
  * @class
4
8
  *
@@ -37,6 +41,20 @@ declare class UDExAccordionItem extends UI5Element {
37
41
  * @public
38
42
  */
39
43
  label: string;
44
+ /**
45
+ * Defines the size of label.
46
+ *
47
+ * @default UDExAccordionItemTitleSize.Standard
48
+ * @public
49
+ */
50
+ labelSize: UDExAccordionItemTitleSize;
51
+ /**
52
+ * Defines icon name to be display with title.
53
+ *
54
+ * @default ""
55
+ * @public
56
+ */
57
+ labelIcon: string;
40
58
  /**
41
59
  * Defines if the accordion item is expanded by default
42
60
  *
@@ -67,6 +85,7 @@ declare class UDExAccordionItem extends UI5Element {
67
85
  constructor();
68
86
  onAfterRendering(): void;
69
87
  onEnterDOM(): void;
88
+ setContentHeight(): void;
70
89
  contentKeydown(e: KeyboardEvent): void;
71
90
  itemClickHandler(e: Event): void;
72
91
  focusHandler(): void;