@sapudex/web-components 2.21.0 → 2.23.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 (319) hide show
  1. package/bundle.esm.js +2 -0
  2. package/cypress/specs/CountrySelector.cy.tsx +158 -144
  3. package/cypress/specs/EventRibbon.cy.tsx +3 -1
  4. package/cypress/specs/ImageGridCloud.cy.tsx +78 -0
  5. package/cypress/specs/ImageGridCloudItem.cy.tsx +29 -0
  6. package/cypress/specs/SelectBox.cy.tsx +173 -206
  7. package/cypress/specs/Tag.cy.tsx +1 -1
  8. package/cypress/specs/TextField.cy.tsx +15 -0
  9. package/cypress/specs/Textarea.cy.tsx +15 -33
  10. package/cypress/support/component-imports.instrumented.ts +4 -0
  11. package/cypress/support/component-imports.src.ts +4 -0
  12. package/dist/Accordion.js +1 -0
  13. package/dist/Accordion.js.map +1 -1
  14. package/dist/AccordionItem.js +2 -0
  15. package/dist/AccordionItem.js.map +1 -1
  16. package/dist/AssetsVariables.js +2 -1
  17. package/dist/AssetsVariables.js.map +1 -1
  18. package/dist/Breadcrumbs.js +5 -0
  19. package/dist/Breadcrumbs.js.map +1 -1
  20. package/dist/ContactItem.js +2 -0
  21. package/dist/ContactItem.js.map +1 -1
  22. package/dist/CountrySelector.d.ts +25 -142
  23. package/dist/CountrySelector.js +91 -267
  24. package/dist/CountrySelector.js.map +1 -1
  25. package/dist/DatePicker.js +2 -1
  26. package/dist/DatePicker.js.map +1 -1
  27. package/dist/FilterMenu.d.ts +14 -2
  28. package/dist/FilterMenu.js +13 -1
  29. package/dist/FilterMenu.js.map +1 -1
  30. package/dist/Footer.js +27 -0
  31. package/dist/Footer.js.map +1 -1
  32. package/dist/ImageGridCloud.d.ts +76 -0
  33. package/dist/ImageGridCloud.js +153 -0
  34. package/dist/ImageGridCloud.js.map +1 -0
  35. package/dist/ImageGridCloudItem.d.ts +35 -0
  36. package/dist/ImageGridCloudItem.js +49 -0
  37. package/dist/ImageGridCloudItem.js.map +1 -0
  38. package/dist/ImageGridCloudItemTemplate.d.ts +2 -0
  39. package/dist/ImageGridCloudItemTemplate.js +5 -0
  40. package/dist/ImageGridCloudItemTemplate.js.map +1 -0
  41. package/dist/ImageGridCloudTemplate.d.ts +2 -0
  42. package/dist/ImageGridCloudTemplate.js +6 -0
  43. package/dist/ImageGridCloudTemplate.js.map +1 -0
  44. package/dist/ImageGridTicker.d.ts +2 -2
  45. package/dist/ImageGridTicker.js +1 -8
  46. package/dist/ImageGridTicker.js.map +1 -1
  47. package/dist/LinkListItem.js +1 -0
  48. package/dist/LinkListItem.js.map +1 -1
  49. package/dist/List.js +5 -3
  50. package/dist/List.js.map +1 -1
  51. package/dist/ListGroupHeader.js +1 -0
  52. package/dist/ListGroupHeader.js.map +1 -1
  53. package/dist/ListGroupHeaderBase.d.ts +1 -0
  54. package/dist/ListGroupHeaderBase.js +3 -0
  55. package/dist/ListGroupHeaderBase.js.map +1 -1
  56. package/dist/ListItem.js +2 -0
  57. package/dist/ListItem.js.map +1 -1
  58. package/dist/ListItemBase.d.ts +12 -0
  59. package/dist/ListItemBase.js +21 -2
  60. package/dist/ListItemBase.js.map +1 -1
  61. package/dist/ListSelectAll.js +1 -0
  62. package/dist/ListSelectAll.js.map +1 -1
  63. package/dist/MastheadCountrySelector.js +15 -0
  64. package/dist/MastheadCountrySelector.js.map +1 -1
  65. package/dist/MastheadItem.js +10 -0
  66. package/dist/MastheadItem.js.map +1 -1
  67. package/dist/MastheadMenu.js +6 -0
  68. package/dist/MastheadMenu.js.map +1 -1
  69. package/dist/MastheadMobileMenu.js +11 -0
  70. package/dist/MastheadMobileMenu.js.map +1 -1
  71. package/dist/MastheadProfileMenu.js +11 -0
  72. package/dist/MastheadProfileMenu.js.map +1 -1
  73. package/dist/MastheadShell.js +41 -0
  74. package/dist/MastheadShell.js.map +1 -1
  75. package/dist/MediaPlayer.js +3 -0
  76. package/dist/MediaPlayer.js.map +1 -1
  77. package/dist/MediaPlayerTemplate.js +4 -4
  78. package/dist/MediaPlayerTemplate.js.map +1 -1
  79. package/dist/MediaPlayerVimeo.d.ts +3 -3
  80. package/dist/MediaPlayerVimeo.js +1 -0
  81. package/dist/MediaPlayerVimeo.js.map +1 -1
  82. package/dist/MediaPlayerYoutube.js +3 -0
  83. package/dist/MediaPlayerYoutube.js.map +1 -1
  84. package/dist/Pagination.js +1 -1
  85. package/dist/Pagination.js.map +1 -1
  86. package/dist/Search.d.ts +2 -1
  87. package/dist/Search.js +18 -3
  88. package/dist/Search.js.map +1 -1
  89. package/dist/SearchTemplate.d.ts +2 -0
  90. package/dist/SearchTemplate.js +48 -0
  91. package/dist/SearchTemplate.js.map +1 -0
  92. package/dist/SearchableListBase.d.ts +26 -16
  93. package/dist/SearchableListBase.js +58 -72
  94. package/dist/SearchableListBase.js.map +1 -1
  95. package/dist/SecondaryNavigation.js +19 -0
  96. package/dist/SecondaryNavigation.js.map +1 -1
  97. package/dist/SecondaryNavigationItem.js +6 -0
  98. package/dist/SecondaryNavigationItem.js.map +1 -1
  99. package/dist/SecondaryNavigationSubItem.js +3 -0
  100. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  101. package/dist/SelectBase.d.ts +193 -0
  102. package/dist/SelectBase.js +428 -0
  103. package/dist/SelectBase.js.map +1 -0
  104. package/dist/SelectBox.d.ts +30 -152
  105. package/dist/SelectBox.js +140 -348
  106. package/dist/SelectBox.js.map +1 -1
  107. package/dist/SocialMediaButton.js +2 -0
  108. package/dist/SocialMediaButton.js.map +1 -1
  109. package/dist/StepInput.js +2 -0
  110. package/dist/StepInput.js.map +1 -1
  111. package/dist/TabNavigation.js +3 -0
  112. package/dist/TabNavigation.js.map +1 -1
  113. package/dist/Tag.js +1 -0
  114. package/dist/Tag.js.map +1 -1
  115. package/dist/TagGroup.d.ts +23 -5
  116. package/dist/TagGroup.js +40 -16
  117. package/dist/TagGroup.js.map +1 -1
  118. package/dist/TagTemplate.js +4 -2
  119. package/dist/TagTemplate.js.map +1 -1
  120. package/dist/TextArea.d.ts +1 -1
  121. package/dist/TextArea.js +5 -5
  122. package/dist/TextArea.js.map +1 -1
  123. package/dist/TextAreaTemplate.d.ts +2 -0
  124. package/dist/TextAreaTemplate.js +13 -0
  125. package/dist/TextAreaTemplate.js.map +1 -0
  126. package/dist/TextField.d.ts +29 -4
  127. package/dist/TextField.js +33 -16
  128. package/dist/TextField.js.map +1 -1
  129. package/dist/TextFieldTemplate.d.ts +2 -0
  130. package/dist/TextFieldTemplate.js +14 -0
  131. package/dist/TextFieldTemplate.js.map +1 -0
  132. package/dist/Tile.js +1 -0
  133. package/dist/Tile.js.map +1 -1
  134. package/dist/Upload.js +5 -0
  135. package/dist/Upload.js.map +1 -1
  136. package/dist/assets/{InputSuggestions-B0P5JAFd.js → InputSuggestions-C8m6N2-d.js} +1 -1
  137. package/dist/assets/{ListItemStandardExpandableTextTemplate-CFj3_UAT.js → ListItemStandardExpandableTextTemplate-BwD5bYhw.js} +1 -1
  138. package/dist/assets/{bundle.esm-BaPBMfCT.js → bundle.esm-hGsUwmUy.js} +222 -218
  139. package/dist/css/themes/CountrySelector.css +1 -1
  140. package/dist/css/themes/EventRibbon.css +1 -1
  141. package/dist/css/themes/ImageGridCloud.css +1 -0
  142. package/dist/css/themes/ImageGridCloudItem.css +1 -0
  143. package/dist/css/themes/ListItem.css +1 -1
  144. package/dist/css/themes/MastheadItem.css +1 -1
  145. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  146. package/dist/css/themes/Pagination.css +1 -1
  147. package/dist/css/themes/RatingIndicator.css +1 -1
  148. package/dist/css/themes/Search.css +1 -1
  149. package/dist/css/themes/SelectBase.css +1 -0
  150. package/dist/css/themes/SelectBox.css +1 -1
  151. package/dist/css/themes/Slider.css +1 -1
  152. package/dist/css/themes/TagGroup.css +1 -1
  153. package/dist/css/themes/TextField.css +1 -1
  154. package/dist/custom-elements-internal.json +4627 -1311
  155. package/dist/custom-elements.json +1260 -1249
  156. package/dist/generated/templates/CountrySelectorTemplate.lit.js +3 -3
  157. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  158. package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
  159. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  160. package/dist/generated/templates/SelectBoxTemplate.lit.js +10 -9
  161. package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
  162. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  163. package/dist/generated/themes/CountrySelector.css.js +1 -1
  164. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  165. package/dist/generated/themes/EventRibbon.css.d.ts +1 -1
  166. package/dist/generated/themes/EventRibbon.css.js +1 -1
  167. package/dist/generated/themes/EventRibbon.css.js.map +1 -1
  168. package/dist/generated/themes/ImageGridCloud.css.d.ts +2 -0
  169. package/dist/generated/themes/ImageGridCloud.css.js +8 -0
  170. package/dist/generated/themes/ImageGridCloud.css.js.map +1 -0
  171. package/dist/generated/themes/ImageGridCloudItem.css.d.ts +2 -0
  172. package/dist/generated/themes/ImageGridCloudItem.css.js +8 -0
  173. package/dist/generated/themes/ImageGridCloudItem.css.js.map +1 -0
  174. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  175. package/dist/generated/themes/ListItem.css.js +1 -1
  176. package/dist/generated/themes/ListItem.css.js.map +1 -1
  177. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  178. package/dist/generated/themes/MastheadItem.css.js +1 -1
  179. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  180. package/dist/generated/themes/MastheadMobileMenu.css.d.ts +1 -1
  181. package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
  182. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  183. package/dist/generated/themes/Pagination.css.d.ts +1 -1
  184. package/dist/generated/themes/Pagination.css.js +1 -1
  185. package/dist/generated/themes/Pagination.css.js.map +1 -1
  186. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  187. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  188. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  189. package/dist/generated/themes/Search.css.d.ts +1 -1
  190. package/dist/generated/themes/Search.css.js +1 -1
  191. package/dist/generated/themes/Search.css.js.map +1 -1
  192. package/dist/generated/themes/SelectBase.css.d.ts +2 -0
  193. package/dist/generated/themes/SelectBase.css.js +8 -0
  194. package/dist/generated/themes/SelectBase.css.js.map +1 -0
  195. package/dist/generated/themes/SelectBox.css.d.ts +1 -1
  196. package/dist/generated/themes/SelectBox.css.js +1 -1
  197. package/dist/generated/themes/SelectBox.css.js.map +1 -1
  198. package/dist/generated/themes/Slider.css.d.ts +1 -1
  199. package/dist/generated/themes/Slider.css.js +1 -1
  200. package/dist/generated/themes/Slider.css.js.map +1 -1
  201. package/dist/generated/themes/TagGroup.css.d.ts +1 -1
  202. package/dist/generated/themes/TagGroup.css.js +1 -1
  203. package/dist/generated/themes/TagGroup.css.js.map +1 -1
  204. package/dist/generated/themes/TextField.css.d.ts +1 -1
  205. package/dist/generated/themes/TextField.css.js +1 -1
  206. package/dist/generated/themes/TextField.css.js.map +1 -1
  207. package/dist/types/common.d.ts +1 -1
  208. package/dist/types/common.js +1 -1
  209. package/dist/types/common.js.map +1 -1
  210. package/dist/vscode.html-custom-data.json +49 -235
  211. package/dist/web-types.json +347 -832
  212. package/package.json +1 -1
  213. package/src/Accordion.ts +1 -0
  214. package/src/AccordionItem.ts +2 -0
  215. package/src/AssetsVariables.ts +2 -1
  216. package/src/Breadcrumbs.ts +5 -0
  217. package/src/ContactItem.ts +2 -0
  218. package/src/CountrySelector.hbs +6 -61
  219. package/src/CountrySelector.ts +93 -374
  220. package/src/DatePicker.ts +2 -1
  221. package/src/FilterMenu.ts +15 -3
  222. package/src/Footer.ts +27 -0
  223. package/src/ImageGridCloud.ts +188 -0
  224. package/src/ImageGridCloudItem.ts +57 -0
  225. package/src/ImageGridCloudItemTemplate.tsx +11 -0
  226. package/src/ImageGridCloudTemplate.tsx +16 -0
  227. package/src/ImageGridTicker.ts +3 -3
  228. package/src/LinkListItem.ts +1 -0
  229. package/src/List.ts +5 -3
  230. package/src/ListGroupHeader.ts +1 -0
  231. package/src/ListGroupHeaderBase.ts +4 -0
  232. package/src/ListItem.hbs +0 -1
  233. package/src/ListItem.ts +2 -0
  234. package/src/ListItemBase.ts +21 -3
  235. package/src/ListSelectAll.ts +1 -0
  236. package/src/MastheadCountrySelector.ts +15 -0
  237. package/src/MastheadItem.ts +10 -0
  238. package/src/MastheadMenu.ts +6 -0
  239. package/src/MastheadMobileMenu.ts +11 -0
  240. package/src/MastheadProfileMenu.ts +11 -0
  241. package/src/MastheadShell.ts +41 -0
  242. package/src/MediaPlayer.ts +3 -0
  243. package/src/MediaPlayerTemplate.tsx +0 -1
  244. package/src/MediaPlayerVimeo.ts +4 -3
  245. package/src/MediaPlayerYoutube.ts +3 -0
  246. package/src/Pagination.ts +1 -1
  247. package/src/Search.ts +20 -4
  248. package/src/SearchTemplate.tsx +353 -0
  249. package/src/SearchableListBase.ts +78 -83
  250. package/src/SecondaryNavigation.ts +19 -0
  251. package/src/SecondaryNavigationItem.ts +6 -0
  252. package/src/SecondaryNavigationSubItem.ts +3 -0
  253. package/src/SelectBase.ts +580 -0
  254. package/src/SelectBox.hbs +118 -107
  255. package/src/SelectBox.ts +156 -445
  256. package/src/SocialMediaButton.ts +2 -0
  257. package/src/StepInput.ts +2 -0
  258. package/src/TabNavigation.ts +3 -0
  259. package/src/Tag.ts +1 -0
  260. package/src/TagGroup.ts +56 -19
  261. package/src/TagTemplate.tsx +4 -2
  262. package/src/TextArea.ts +5 -5
  263. package/src/TextAreaTemplate.tsx +67 -0
  264. package/src/TextField.ts +58 -24
  265. package/src/TextFieldTemplate.tsx +90 -0
  266. package/src/Tile.ts +1 -0
  267. package/src/Upload.ts +5 -0
  268. package/src/generated/templates/CountrySelectorTemplate.lit.ts +2 -2
  269. package/src/generated/templates/ListItemTemplate.lit.ts +1 -1
  270. package/src/generated/templates/SelectBoxTemplate.lit.ts +10 -9
  271. package/src/generated/themes/CountrySelector.css.ts +1 -1
  272. package/src/generated/themes/EventRibbon.css.ts +1 -1
  273. package/src/generated/themes/ImageGridCloud.css.ts +9 -0
  274. package/src/generated/themes/ImageGridCloudItem.css.ts +9 -0
  275. package/src/generated/themes/ListItem.css.ts +1 -1
  276. package/src/generated/themes/MastheadItem.css.ts +1 -1
  277. package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
  278. package/src/generated/themes/Pagination.css.ts +1 -1
  279. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  280. package/src/generated/themes/Search.css.ts +1 -1
  281. package/src/generated/themes/SelectBase.css.ts +9 -0
  282. package/src/generated/themes/SelectBox.css.ts +1 -1
  283. package/src/generated/themes/Slider.css.ts +1 -1
  284. package/src/generated/themes/TagGroup.css.ts +1 -1
  285. package/src/generated/themes/TextField.css.ts +1 -1
  286. package/src/themes/CountrySelector.css +42 -115
  287. package/src/themes/EventRibbon.css +21 -13
  288. package/src/themes/ImageGridCloud.css +55 -0
  289. package/src/themes/ImageGridCloudItem.css +10 -0
  290. package/src/themes/ListItem.css +6 -0
  291. package/src/themes/MastheadItem.css +0 -2
  292. package/src/themes/MastheadMobileMenu.css +2 -0
  293. package/src/themes/Pagination.css +1 -1
  294. package/src/themes/Search.css +0 -1
  295. package/src/themes/SelectBase.css +239 -0
  296. package/src/themes/SelectBox.css +13 -195
  297. package/src/themes/TagGroup.css +0 -1
  298. package/src/themes/TextField.css +7 -7
  299. package/src/types/common.ts +1 -1
  300. package/dist/generated/templates/SearchSuggestionsTemplate.lit.d.ts +0 -3
  301. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +0 -17
  302. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +0 -1
  303. package/dist/generated/templates/SearchTemplate.lit.d.ts +0 -3
  304. package/dist/generated/templates/SearchTemplate.lit.js +0 -28
  305. package/dist/generated/templates/SearchTemplate.lit.js.map +0 -1
  306. package/dist/generated/templates/TextAreaTemplate.lit.d.ts +0 -3
  307. package/dist/generated/templates/TextAreaTemplate.lit.js +0 -13
  308. package/dist/generated/templates/TextAreaTemplate.lit.js.map +0 -1
  309. package/dist/generated/templates/TextFieldTemplate.lit.d.ts +0 -3
  310. package/dist/generated/templates/TextFieldTemplate.lit.js +0 -14
  311. package/dist/generated/templates/TextFieldTemplate.lit.js.map +0 -1
  312. package/src/Search.hbs +0 -155
  313. package/src/SearchSuggestions.hbs +0 -91
  314. package/src/TextArea.hbs +0 -54
  315. package/src/TextField.hbs +0 -78
  316. package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +0 -21
  317. package/src/generated/templates/SearchTemplate.lit.ts +0 -32
  318. package/src/generated/templates/TextAreaTemplate.lit.ts +0 -17
  319. package/src/generated/templates/TextFieldTemplate.lit.ts +0 -18
package/bundle.esm.js CHANGED
@@ -49,6 +49,8 @@ import "./dist/Feed.js";
49
49
  import "./dist/FeedItem.js";
50
50
  import "./dist/Footer.js";
51
51
  import "./dist/HeroBanner.js";
52
+ import "./dist/ImageGridCloud.js";
53
+ import "./dist/ImageGridCloudItem.js";
52
54
  import "./dist/ImageGridTicker.js";
53
55
  import "./dist/ImageGridTickerItem.js";
54
56
  import "./dist/InputGroup.js";
@@ -1,224 +1,238 @@
1
1
  import { UDExCountrySelector } from "../support/component-imports.js";
2
2
 
3
- const defaultCountrySelector = <UDExCountrySelector id="default"
4
- searchPlaceholder="Search Countries and Regions"
5
- label="Countries"
6
- blockedCountryCodes="PL">
7
- </UDExCountrySelector>
8
-
9
- const countrySelectorWithoutFlags = <UDExCountrySelector id="country-selector-no-flags"
10
- searchPlaceholder="Search Countries and Regions"
11
- blockedCountry-Codes="PL"
12
- hideFlagImages>
3
+ const defaultCountrySelector = <div style={{ width: "300px" }}><UDExCountrySelector
4
+ id="default"
5
+ label="Countries"
6
+ height="400px"
7
+ blockedCountryCodes="PL">
8
+ </UDExCountrySelector></div>
9
+
10
+ const countrySelectorWithoutFlags = <UDExCountrySelector
11
+ id="country-selector-no-flags"
12
+ blockedCountryCodes="PL"
13
+ hideFlagImages>
13
14
  </UDExCountrySelector>
14
15
 
15
16
  const countrySelectorWithSupportingText = <UDExCountrySelector
16
- id="country-selector-supporting-text"
17
- supportingText="Test supporting text"
18
- searchPlaceholder="Search Countries and Regions"
19
- height="400px">
17
+ id="country-selector-supporting-text"
18
+ supportingText="Test supporting text"
19
+ height="400px">
20
20
  </UDExCountrySelector>
21
21
 
22
- describe("CountrySelector", () => {
23
- const blockedCountryIsoCode = 'PL';
24
- const initialCountryData = {
25
- iso: 'FR',
26
- phoneFmt: "+xxxx xxxx xxxx",
27
- countryName: "France",
28
- localName: "France",
29
- }
30
-
31
- const countrySelectorNoFlagClass = "udex-country-selector__dropdown--hide-flag";
32
- const countrySelectorDisabledClass = "udex-country-selector__trigger--disabled";
33
- const countrySelectorReadOnlyClass = "udex-country-selector__trigger--readonly";
34
- const countrySelectorDisplayOnlyClass = "udex-country-selector__trigger--displayonly";
35
-
22
+ describe("CountrySelector component", () => {
36
23
  beforeEach(() => {
37
- cy.mount(defaultCountrySelector)
24
+ cy.mount(defaultCountrySelector);
25
+ cy.get("#default").shadow().as("defaultCountrySelector");
26
+ cy.get("@defaultCountrySelector").find(".udex-text-field__search").as("searchInput");
27
+ cy.get("@defaultCountrySelector").find(".udex-text-field__trigger").as("buttonTrigger");
28
+ cy.get("@defaultCountrySelector").find("[ui5-popover]").as("dropdownPopover");
38
29
  });
39
30
 
40
31
  it("is correctly rendered", () => {
41
- cy.get("#default").shadow().find(".udex-country-selector__dropdown").should("be.visible")
32
+ cy.get("@defaultCountrySelector").find(".udex-select-box__root").should("be.visible");
42
33
  });
43
34
 
44
35
  it("renders flag icon when no country is selected", () => {
45
- cy.get("#default").shadow().find(".udex-country-selector__image").should("be.visible")
36
+ cy.get("@defaultCountrySelector").find(".udex-text-field__image").should("be.visible");
46
37
  });
47
38
 
48
39
  it("renders label", () => {
49
- cy.get("#default").shadow().find("udex-text-field").shadow().find(".udex-text-field__label").should("have.text", "Countries")
50
- });
51
-
52
- it("renders placeholder in the dropdown's search", () => {
53
- cy.get("#default").shadow().find(".udex-country-selector__dropdown").find("udex-search").shadow().find("input").should("have.attr", "placeholder", "Search Countries and Regions")
40
+ cy.get("@defaultCountrySelector").find(".udex-text-field__label").should("be.visible");
54
41
  });
55
42
 
56
43
  it("renders supporting text", () => {
57
44
  cy.mount(countrySelectorWithSupportingText)
58
45
  cy.get("#country-selector-supporting-text")
59
- .shadow().find("udex-text-field")
60
- .shadow().find("udex-status-message")
61
- .shadow().find(".udex-status-message__supporting-text").should("have.text", "Test supporting text")
46
+ .shadow().find("[udex-status-message]")
47
+ .shadow().find(".udex-status-message__supporting-text")
48
+ .should("have.text", "Test supporting text");
62
49
  });
63
50
 
64
51
  it("renders Standard valueState by default", () => {
65
52
  cy.mount(countrySelectorWithSupportingText)
66
- cy.get("#country-selector-supporting-text").should("have.attr", "value-state", "Standard")
53
+ cy.get("#country-selector-supporting-text")
54
+ .shadow().find("[udex-status-message]")
55
+ .should("have.attr", "value-state", "Standard");
67
56
  });
68
57
 
69
58
  it("renders Error valueState", () => {
70
- cy.mount(<UDExCountrySelector valueState="Error"></UDExCountrySelector>)
71
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").should("have.attr", "value-state", "Error")
59
+ cy.mount(<UDExCountrySelector valueState="Error" supportingText="error"></UDExCountrySelector>)
60
+ cy.get("[udex-country-selector]")
61
+ .shadow().find("[udex-status-message]")
62
+ .should("have.attr", "value-state", "Error");
72
63
  });
73
64
 
74
65
  it("renders Warning valueState", () => {
75
- cy.mount(<UDExCountrySelector valueState="Warning"></UDExCountrySelector>)
76
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").should("have.attr", "value-state", "Warning")
66
+ cy.mount(<UDExCountrySelector valueState="Warning" supportingText="Warning"></UDExCountrySelector>)
67
+ cy.get("[udex-country-selector]")
68
+ .shadow().find("[udex-status-message]")
69
+ .should("have.attr", "value-state", "Warning");
77
70
  });
78
71
 
79
72
  it("renders Success valueState", () => {
80
- cy.mount(<UDExCountrySelector valueState="Success"></UDExCountrySelector>)
81
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").should("have.attr", "value-state", "Success")
73
+ cy.mount(<UDExCountrySelector valueState="Success" supportingText="Success"></UDExCountrySelector>)
74
+ cy.get("[udex-country-selector]")
75
+ .shadow().find("[udex-status-message]")
76
+ .should("have.attr", "value-state", "Success");
82
77
  });
83
78
 
84
- it('opens the dropdown on trigger click', () => {
85
- cy.get("#default").shadow().find("#udexTextField").click()
86
- cy.get("#default").shadow().find("#dropdown").should("have.attr", "open")
79
+ it("renders readonly country selector", () => {
80
+ cy.mount(<UDExCountrySelector readonly></UDExCountrySelector>);
81
+ cy.get("[udex-country-selector]").shadow().find("#search-input").should("have.attr", "readonly");
82
+ cy.get("[udex-country-selector]").shadow().find("#search-input").should("have.attr", "aria-readonly", "true");
87
83
  });
88
84
 
89
- it('closes the dropdown on trigger click', () => {
90
- cy.get("#default").shadow().find("#udexTextField").click()
91
- cy.get("#default").shadow().find("#udexTextField").click()
92
- cy.get("#default").shadow().find("#dropdown").should("not.have.attr", "open")
85
+ it("renders disabled country selector", () => {
86
+ cy.mount(<UDExCountrySelector disabled></UDExCountrySelector>);
87
+ cy.get("[udex-country-selector]").shadow().find("#search-input").should("have.attr", "disabled");
93
88
  });
94
89
 
95
- it('closes the dropdown on outside click', () => {
96
- cy.get("#default").shadow().find("#udexTextField").click()
97
- cy.get("body").click()
98
- cy.get("#default").shadow().find("#dropdown").should("not.have.attr", "open")
90
+ it("renders displayonly country selector", () => {
91
+ cy.mount(<UDExCountrySelector displayonly></UDExCountrySelector>);
92
+ cy.get("[udex-country-selector]").shadow().find("#search-input").should("have.attr", "readonly");
93
+ cy.get("[udex-country-selector]").shadow().find("#search-input").should("have.attr", "aria-readonly", "true");
99
94
  });
100
95
 
101
- it('closes the dropdown on country selection', () => {
102
- cy.get("#default").shadow().find("#udexTextField").click()
103
- cy.get("#default").shadow().find("#dropdown").find("udex-list")
104
- .find("udex-list-item").first().click()
105
- cy.get("#default").shadow().find("#dropdown").should("not.have.attr", "open")
96
+ it("renders initially selected country", () => {
97
+ cy.mount(<UDExCountrySelector preselectedCountry="PL"></UDExCountrySelector>);
98
+ cy.get("[udex-country-selector]").shadow().find(".udex-text-field__text-holder").should("have.text", "Poland (Polska)");
106
99
  });
107
100
 
108
- it('opens the dropdown on trigger icon click', () => {
109
- cy.get("#default").shadow().find("#udexTextField").shadow().find("udex-control-button").click()
110
- cy.get("#default").shadow().find("#dropdown").should("have.attr", "open")
101
+ it("renders no result dropdown", () => {
102
+ cy.get("@searchInput").click()
103
+ .realPress("x")
104
+ .realPress("y")
105
+ .realPress("z");
106
+ cy.get("@dropdownPopover").find(".udex-no-result").should("have.text", "No matches found.");
111
107
  });
112
108
 
113
- it('doesnt render blocked country', () => {
114
- cy.get("#default").shadow().find("#dropdown").find("udex-list-item[id='PL']").should("not.exist")
109
+ it("filtering options after typing input", () => {
110
+ cy.get("@searchInput").click()
111
+ .realPress("a")
112
+ .realPress("f")
113
+ .realPress("g");
114
+ cy.get("@dropdownPopover").find("udex-list-item").should("have.length", 1);
115
+ cy.get("@dropdownPopover").find("udex-list-item").first().should("have.attr", "data-token-id", "AF");
115
116
  });
116
117
 
117
- it('renders readonly country selector', () => {
118
- cy.mount(<UDExCountrySelector readonly></UDExCountrySelector>)
119
- cy.get("[udex-country-selector]").shadow().find(".udex-country-selector__trigger").should("have.class", countrySelectorReadOnlyClass)
120
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("input").should("have.attr", "readonly")
121
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("input").should("have.attr", "aria-readonly", "true")
118
+ it("opens the dropdown on trigger click", () => {
119
+ cy.get("@searchInput").click();
120
+ cy.get("@dropdownPopover").should("have.attr", "open");
122
121
  });
123
122
 
124
- it('renders disabled country selector', () => {
125
- cy.mount(<UDExCountrySelector disabled></UDExCountrySelector>)
126
- cy.get("[udex-country-selector]").shadow().find(".udex-country-selector__trigger").should("have.class", countrySelectorDisabledClass)
127
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("input").should("have.attr", "disabled")
123
+ it("closes the dropdown on trigger click", () => {
124
+ cy.get("@buttonTrigger").click();
125
+ cy.get("@buttonTrigger").click();
126
+ cy.get("@dropdownPopover").should("not.have.attr", "open");
128
127
  });
129
128
 
130
- it('renders displayonly country selector', () => {
131
- cy.mount(<UDExCountrySelector displayonly></UDExCountrySelector>)
132
- cy.get("[udex-country-selector]").shadow().find(".udex-country-selector__trigger").should("have.class", countrySelectorDisplayOnlyClass)
133
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("input").should("have.attr", "readonly")
134
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("input").should("have.attr", "aria-readonly", "true")
129
+ it("closes the dropdown on outside click", () => {
130
+ cy.get("@searchInput").click();
131
+ cy.get("body").realClick();
132
+ cy.get("@dropdownPopover").should("not.have.attr", "open");
135
133
  });
136
134
 
137
- it('hides trigger icon when displayonly', () => {
138
- cy.mount(<UDExCountrySelector displayonly></UDExCountrySelector>)
139
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("udex-control-button").should("not.exist")
135
+ it("closes the dropdown on country selection", () => {
136
+ cy.get("@searchInput").click();
137
+ cy.get("@defaultCountrySelector").find("[udex-list-item]").first().click();
138
+ cy.get("@dropdownPopover").should("not.have.attr", "open");
140
139
  });
141
140
 
142
- it('add special class when hideFlagImages is true', () => {
143
- cy.mount(countrySelectorWithoutFlags)
144
- cy.get("#country-selector-no-flags").shadow().find("#dropdown").find("udex-list")
145
- .find("udex-list-item").first().find(".udex-country-selector-item__image").should("not.exist")
141
+ it("opens the dropdown on trigger icon click", () => {
142
+ cy.get("@defaultCountrySelector").find(".udex-text-field__trigger").click();
143
+ cy.get("@dropdownPopover").should("have.attr", "open");
146
144
  });
147
145
 
148
- it('renders initially selected country', () => {
149
- cy.mount(<UDExCountrySelector id="country-selector-preselected" preselectedCountry="PL"></UDExCountrySelector>)
150
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").should("have.attr", "value", "Poland (Polska)")
146
+ it("doesnt render blocked country", () => {
147
+ cy.get("@dropdownPopover").find("udex-list-item[id='PL']").should("not.exist");
151
148
  });
152
149
 
153
- it("emits open/close when dropdown opened/closed", () => {
154
- const openHandler = cy.stub().as("openHandler")
155
- const closeHandler = cy.stub().as("closeHandler")
156
- cy.mount(<UDExCountrySelector onOpen={openHandler} onClose={closeHandler}></UDExCountrySelector>)
157
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").click()
158
- cy.get("@openHandler").should("have.been.called")
159
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").click()
160
- cy.get("@closeHandler").should("have.been.called")
150
+ it("hides trigger icon when displayonly", () => {
151
+ cy.mount(<UDExCountrySelector displayonly></UDExCountrySelector>);
152
+ cy.get("[udex-country-selector]").shadow().find(".udex-text-field__trigger").should("not.exist");
161
153
  });
162
154
 
163
- it('emits change-search when search field typing', () => {
164
- const changeHandler = cy.stub().as("changeHandler")
165
- cy.get("#default").then($countrySelector => {
166
- $countrySelector[0].addEventListener("change-search", changeHandler)
167
- })
168
- cy.get("#default").shadow().find("#udexTextField").click()
169
- cy.get("#default").shadow().find("udex-search").shadow().find(".udex-search__field").click().realPress("p").realPress("o").realPress("l").realPress("a")
170
- cy.get("@changeHandler").should("have.been.called")
155
+ it("hides image flag when hideFlagImages is true", () => {
156
+ cy.mount(countrySelectorWithoutFlags);
157
+ cy.get("#country-selector-no-flags").shadow().find("udex-list-item")
158
+ .first().find(".udex-country-selector-item__image").should("not.exist");
171
159
  });
172
160
 
173
- it("emits reset-search when search reset button is clicked", () => {
174
- const resetHandler = cy.stub().as("resetHandler")
175
- cy.get("#default").then($countrySelector => {
176
- $countrySelector[0].addEventListener("reset-search", resetHandler)
177
- })
178
- cy.get("#default").shadow().find("#udexTextField").click()
179
- cy.get("#default").shadow().find("udex-search").shadow().find(".udex-search__field").click().realPress("p").realPress("o").realPress("l").realPress("a")
180
- cy.get("#default").shadow().find("udex-search").shadow().find(".udex-search__reset-button").click()
181
- cy.get("@resetHandler").should("have.been.called")
161
+ it("set active country item on item option click", () => {
162
+ cy.get("@searchInput").click();
163
+ cy.get("@defaultCountrySelector").find("[udex-list-item]").first().click();
164
+ cy.get("@defaultCountrySelector").find(".udex-text-field__text-holder").should("have.text", "Afghanistan (افغانستان)");
182
165
  });
183
166
 
184
- it('emits submit-search when user presses Enter key in the search', () => {
185
- const submitHandler = cy.stub().as("submitHandler")
186
- cy.get("#default").then($countrySelector => {
187
- $countrySelector[0].addEventListener("submit-search", submitHandler)
188
- })
189
- cy.get("#default").shadow().find("#udexTextField").click()
190
- cy.get("#default").shadow().find("udex-search").shadow().find(".udex-search__field").click().realPress("p").realPress("o").realPress("l").realPress("a").realPress("Enter")
191
- cy.get("@submitHandler").should("have.been.called")
167
+ it("set active country item on item option click", () => {
168
+ cy.get("@searchInput").click();
169
+ cy.get("@defaultCountrySelector").find("[udex-list-item]").first().click();
170
+ cy.get("@defaultCountrySelector").find(".udex-text-field__text-holder").should("have.text", "Afghanistan (افغانستان)");
192
171
  });
193
172
 
194
- it('emits selection-change when list item is clicked', () => {
195
- const selectionHandler = cy.stub().as("selectionHandler")
196
- cy.mount(<UDExCountrySelector onSelectionChange={selectionHandler}></UDExCountrySelector>)
197
- cy.get("[udex-country-selector]").shadow().find("#udexTextField").click()
198
- cy.get("[udex-country-selector]").shadow().find("#dropdown").find("udex-list")
199
- .find("udex-list-item").first().click()
173
+ it("open dropdown press `ArrowDown` key on search", () => {
174
+ cy.get("@searchInput").click().realPress("{downarrow}");
175
+ cy.get("@dropdownPopover").should("have.attr", "open");
176
+ });
177
+
178
+ it("set active country item on `Enter` press", () => {
179
+ cy.get("@searchInput").click().realPress("{downarrow}").realPress("{enter}");
180
+ cy.get("@defaultCountrySelector").find(".udex-text-field__text-holder").should("have.text", "Afghanistan (افغانستان)");
181
+ });
182
+
183
+ it("close dropdown press `Escape` key on search", () => {
184
+ cy.get("@searchInput").click().realPress("{downarrow}").realPress("Escape");
185
+ cy.get("@dropdownPopover").should("not.have.attr", "open");
186
+ });
200
187
 
201
- cy.get("@selectionHandler").should("have.been.called")
188
+ it("emits before-open event when dropdown is about to open", () => {
189
+ const beforeOpenHandler = cy.stub().as("beforeOpenHandler");
190
+ cy.mount(<UDExCountrySelector onBeforeOpen={beforeOpenHandler}></UDExCountrySelector>);
191
+ cy.get("[udex-country-selector]").shadow().find("#search-input").click();
192
+ cy.get("@beforeOpenHandler").should("have.been.called");
202
193
  });
203
194
 
204
- it('focus on element with corresponding starting letter', () => {
205
- cy.get("#default").shadow().find("#udexTextField").click().realPress("Tab").realPress("a").realPress("a").realPress("Enter")
206
- cy.get("#default").shadow().find("#udexTextField").should("have.attr", "value", "Albania (Shqipëria)")
195
+ it("emits before-close event when dropdown is about to close", () => {
196
+ const beforeCloseHandler = cy.stub().as("beforeCloseHandler");
197
+ cy.mount(<UDExCountrySelector onBeforeClose={beforeCloseHandler}></UDExCountrySelector>);
198
+ cy.get("[udex-country-selector]").shadow().find(".udex-text-field__trigger").click();
199
+ cy.get("[udex-country-selector]").shadow().find(".udex-text-field__trigger").click();
200
+ cy.get("@beforeCloseHandler").should("have.been.called");
207
201
  });
208
202
 
209
- it('focus on element with corresponding starting letter filtered by search value', () => {
210
- cy.get("#default").shadow().find("#udexTextField").click()
211
- cy.get("#default").shadow().find("udex-search").shadow().find(".udex-search__field").click().realPress("p").realPress("o").realPress("l").realPress("a").realPress("Tab").realPress("Tab").realPress("Enter")
212
- cy.get("#default").shadow().find("#udexTextField").should("have.attr", "value", "Afghanistan (افغانستان)")
203
+ it("emits open event when dropdown is opened", () => {
204
+ const openHandler = cy.stub().as("openHandler");
205
+ cy.mount(<UDExCountrySelector onOpen={openHandler}></UDExCountrySelector>);
206
+ cy.get("[udex-country-selector]").shadow().find("#search-input").click();
207
+ cy.get("@openHandler").should("have.been.called");
213
208
  });
214
209
 
215
- it('keyboard focus navigation for `ArrowDown`', () => {
216
- cy.get("#default").shadow().find("#udexTextField").click().realPress("Tab").realPress("a").realPress("{downarrow}").realPress("Enter")
217
- cy.get("#default").shadow().find("#udexTextField").should("have.attr", "value", "Albania (Shqipëria)")
210
+ it("emits close event when dropdown is closed", () => {
211
+ const closeHandler = cy.stub().as("closeHandler");
212
+ cy.mount(<UDExCountrySelector onClose={closeHandler}></UDExCountrySelector>);
213
+ cy.get("[udex-country-selector]").shadow().find(".udex-text-field__trigger").click();
214
+ cy.get("[udex-country-selector]").shadow().find(".udex-text-field__trigger").click();
215
+ cy.get("@closeHandler").should("have.been.called");
218
216
  });
219
217
 
220
- it('keyboard focus navigation for `ArrowUp`', () => {
221
- cy.get("#default").shadow().find("#udexTextField").click().realPress("Tab").realPress("a").realPress("{downarrow}").realPress("{downarrow}").realPress("{uparrow}").realPress("Enter")
222
- cy.get("#default").shadow().find("#udexTextField").should("have.attr", "value", "Albania (Shqipëria)")
218
+ it('emits change-search when search field typing', () => {
219
+ const changeHandler = cy.stub().as("changeHandler");
220
+ cy.get("#default").then($countrySelector => {
221
+ $countrySelector[0].addEventListener("change-search", changeHandler)
222
+ });
223
+ cy.get("@searchInput").click()
224
+ .realPress("p")
225
+ .realPress("o")
226
+ .realPress("l")
227
+ .realPress("a");
228
+ cy.get("@changeHandler").should("have.been.called");
229
+ });
230
+
231
+ it('emits selection-change when list item is clicked', () => {
232
+ const selectionHandler = cy.stub().as("selectionHandler");
233
+ cy.mount(<UDExCountrySelector onSelectionChange={selectionHandler}></UDExCountrySelector>);
234
+ cy.get("[udex-country-selector]").shadow().find(".udex-text-field__trigger").click();
235
+ cy.get("[udex-country-selector]").shadow().find("[udex-list-item]").first().click();
236
+ cy.get("@selectionHandler").should("have.been.called");
223
237
  });
224
238
  });
@@ -105,7 +105,9 @@ describe("EventRibbon", () => {
105
105
  it("correctly renders background image", () => {
106
106
  cy.mount(imageEventRibbon)
107
107
  cy.get("[udex-event-ribbon]").shadow().find(".udex-event-ribbon__container").then($eventRibbon => {
108
- const { backgroundImage } = window.getComputedStyle($eventRibbon[0])
108
+ const container = $eventRibbon[0];
109
+ const beforeStyle = window.getComputedStyle(container, '::before');
110
+ const backgroundImage = beforeStyle.backgroundImage;
109
111
  assert.strictEqual(backgroundImage, 'url("https://cdn.udex.services.sap.com/dds/design-tokens/assets/logos/sap-logo.svg")')
110
112
  })
111
113
  });
@@ -0,0 +1,78 @@
1
+ import { UDExImageGridCloud, UDExImageGridCloudItem } from "../support/component-imports.js";
2
+
3
+ const imageGridCloud = <UDExImageGridCloud id="image-grid-cloud">
4
+ <UDExImageGridCloudItem src="./stories/image-grid/chiesi-customer-logo.svg" alt="chiesi logo"></UDExImageGridCloudItem>
5
+ <UDExImageGridCloudItem src="./stories/image-grid/embecta-customer-logo.png" alt="embecta logo"></UDExImageGridCloudItem>
6
+ <UDExImageGridCloudItem src="./stories/image-grid/mj-quinn-customer-logo.svg" alt="mj quinn logo"></UDExImageGridCloudItem>
7
+ <UDExImageGridCloudItem src="./stories/image-grid/mk-group-logo.png" alt="mk group logo"></UDExImageGridCloudItem>
8
+ <UDExImageGridCloudItem src="./stories/image-grid/natura-and-co-customer-logo.svg" alt="natura and co logo"></UDExImageGridCloudItem>
9
+ <UDExImageGridCloudItem src="./stories/image-grid/banco-galicia-customer-logo.png" alt="galicia logo"></UDExImageGridCloudItem>
10
+ <UDExImageGridCloudItem src="./stories/image-grid/celsa-uk-customer-logo.svg" alt="celsa logo"></UDExImageGridCloudItem>
11
+ <UDExImageGridCloudItem src="./stories/image-grid/kind-customer-logo.svg" alt="kind logo"></UDExImageGridCloudItem>
12
+ <UDExImageGridCloudItem src="./stories/image-grid/resonac-customer-logo.png" alt="resonac logo"></UDExImageGridCloudItem>
13
+ <UDExImageGridCloudItem src="./stories/image-grid/lion-customer-logo.png" alt="lion logo"></UDExImageGridCloudItem>
14
+ <UDExImageGridCloudItem src="./stories/image-grid/bank-islam-customer-logo.svg" alt="bank islam logo"></UDExImageGridCloudItem>
15
+ <UDExImageGridCloudItem src="./stories/image-grid/puretech-scientific-customer-logo.svg" alt="puretech scientific logo"></UDExImageGridCloudItem>
16
+ </UDExImageGridCloud>
17
+
18
+ describe("Image Grid Cloud", () => {
19
+ beforeEach(() => {
20
+ cy.mount(imageGridCloud);
21
+ cy.get("[udex-image-grid-cloud]").shadow().as("image-grid-cloud");
22
+ });
23
+
24
+ it("is correctly rendered", () => {
25
+ cy.get("@image-grid-cloud")
26
+ .find("#udex-image-grid-cloud")
27
+ .should("be.visible");
28
+ });
29
+
30
+ it("renders the correct number of items", () => {
31
+ cy.get("@image-grid-cloud")
32
+ .find("[udex-image-grid-cloud-item]")
33
+ .should("have.length", 12);
34
+ });
35
+
36
+ it("renders items in grayscale when enabled", () => {
37
+ cy.get("[udex-image-grid-cloud]")
38
+ .invoke("attr", "grayscale", "true");
39
+
40
+ cy.get("@image-grid-cloud")
41
+ .find("[udex-image-grid-cloud-item]")
42
+ .first()
43
+ .should("have.css", "filter", "grayscale(1)");
44
+ });
45
+
46
+ it("renders default Large size of items", () => {
47
+ cy.get("@image-grid-cloud")
48
+ .find("[udex-image-grid-cloud-item]")
49
+ .first()
50
+ .should("have.css", "width", "180px")
51
+ .should("have.css", "height", "90px");
52
+ });
53
+
54
+ it("renders Small size of items", () => {
55
+ cy.get("[udex-image-grid-cloud]")
56
+ .invoke("attr", "size", "Small");
57
+
58
+ cy.get("@image-grid-cloud")
59
+ .find("[udex-image-grid-cloud-item]")
60
+ .first()
61
+ .should("have.css", "width", "140px")
62
+ .should("have.css", "height", "70px");
63
+ });
64
+
65
+ it("renders rows with the correct number of items", () => {
66
+ cy.viewport(1600, 800);
67
+
68
+ cy.get("@image-grid-cloud")
69
+ .find("#udex-image-grid-cloud")
70
+ .children()
71
+ .then((items) => {
72
+ const containerWidth = 1600;
73
+ const itemWidth = 208; // item width + gap + borders
74
+ const expectedItemsPerRow = Math.floor(containerWidth / itemWidth);
75
+ expect(items.length).to.be.greaterThan(expectedItemsPerRow - 1);
76
+ });
77
+ });
78
+ });
@@ -0,0 +1,29 @@
1
+ import { UDExImageGridCloudItem } from "../support/component-imports.js";
2
+
3
+ const itemSrc = "./stories/image-grid/chiesi-customer-logo.svg";
4
+ const itemAlt = "chiesi logo";
5
+
6
+ const imageGridCloudItem = <UDExImageGridCloudItem
7
+ src={itemSrc}
8
+ alt={itemAlt}>
9
+ </UDExImageGridCloudItem>
10
+
11
+ describe("Image Grid Cloud Item", () => {
12
+ beforeEach(() => {
13
+ cy.mount(imageGridCloudItem);
14
+ cy.get("[udex-image-grid-cloud-item]").shadow().as("image-grid-cloud-item");
15
+ });
16
+
17
+ it("is correctly rendered", () => {
18
+ cy.get("@image-grid-cloud-item")
19
+ .find(".udex-image-grid-cloud-item-img")
20
+ .should("be.visible");
21
+ });
22
+
23
+ it("renders an image element with correct attributes", () => {
24
+ cy.get("@image-grid-cloud-item")
25
+ .find(".udex-image-grid-cloud-item-img")
26
+ .should("have.attr", "src", itemSrc)
27
+ .and("have.attr", "alt", itemAlt);
28
+ });
29
+ });