@sapudex/web-components 2.0.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/cypress/fixtures/footer-links.ts +221 -0
  2. package/cypress/specs/Checkbox.cy.tsx +92 -0
  3. package/cypress/specs/CountrySelector.cy.tsx +215 -0
  4. package/cypress/specs/Footer.cy.tsx +313 -0
  5. package/cypress/specs/PhoneNumberField.cy.tsx +2 -2
  6. package/cypress/specs/Table.cy.tsx +361 -0
  7. package/cypress/specs/TextField.cy.tsx +4 -0
  8. package/cypress/specs/Tooltip.cy.tsx +26 -0
  9. package/cypress/specs/Upload.cy.tsx +20 -3
  10. package/dist/AssetsVariables.js +1 -1
  11. package/dist/AssetsVariables.js.map +1 -1
  12. package/dist/Checkbox.d.ts +17 -0
  13. package/dist/Checkbox.js +36 -1
  14. package/dist/Checkbox.js.map +1 -1
  15. package/dist/FilterMenu.d.ts +7 -0
  16. package/dist/FilterMenu.js +3 -0
  17. package/dist/FilterMenu.js.map +1 -1
  18. package/dist/Link.d.ts +3 -4
  19. package/dist/Link.js +4 -5
  20. package/dist/Link.js.map +1 -1
  21. package/dist/MastheadItem.d.ts +21 -2
  22. package/dist/MastheadItem.js +95 -13
  23. package/dist/MastheadItem.js.map +1 -1
  24. package/dist/MastheadMenu.d.ts +1 -0
  25. package/dist/MastheadMenu.js +11 -5
  26. package/dist/MastheadMenu.js.map +1 -1
  27. package/dist/MastheadMobileMenu.d.ts +8 -2
  28. package/dist/MastheadMobileMenu.js +8 -2
  29. package/dist/MastheadMobileMenu.js.map +1 -1
  30. package/dist/MastheadShell.d.ts +24 -12
  31. package/dist/MastheadShell.js +75 -26
  32. package/dist/MastheadShell.js.map +1 -1
  33. package/dist/PasswordField.d.ts +10 -0
  34. package/dist/PasswordField.js +14 -0
  35. package/dist/PasswordField.js.map +1 -1
  36. package/dist/PhoneNumberField.d.ts +1 -0
  37. package/dist/PhoneNumberField.js +15 -1
  38. package/dist/PhoneNumberField.js.map +1 -1
  39. package/dist/RadioButton.d.ts +1 -0
  40. package/dist/RadioButton.js +1 -0
  41. package/dist/RadioButton.js.map +1 -1
  42. package/dist/SecondaryNavigation.d.ts +6 -5
  43. package/dist/SecondaryNavigation.js +8 -6
  44. package/dist/SecondaryNavigation.js.map +1 -1
  45. package/dist/SecondaryNavigationItem.d.ts +9 -6
  46. package/dist/SecondaryNavigationItem.js +19 -13
  47. package/dist/SecondaryNavigationItem.js.map +1 -1
  48. package/dist/SecondaryNavigationSubItem.d.ts +8 -4
  49. package/dist/SecondaryNavigationSubItem.js +6 -5
  50. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  51. package/dist/Table.d.ts +1 -1
  52. package/dist/Table.js +1 -1
  53. package/dist/Table.js.map +1 -1
  54. package/dist/TextField.d.ts +8 -0
  55. package/dist/TextField.js +15 -0
  56. package/dist/TextField.js.map +1 -1
  57. package/dist/Tooltip.d.ts +5 -0
  58. package/dist/Tooltip.js +11 -1
  59. package/dist/Tooltip.js.map +1 -1
  60. package/dist/Upload.d.ts +12 -2
  61. package/dist/Upload.js +25 -1
  62. package/dist/Upload.js.map +1 -1
  63. package/dist/assets/{InputSuggestions-pMcXiozG.js → InputSuggestions-CP3cBQsh.js} +1 -1
  64. package/dist/assets/{ListItemStandardExpandableTextTemplate-BoB9C9hl.js → ListItemStandardExpandableTextTemplate-CLBtdbBK.js} +1 -1
  65. package/dist/assets/bundle-C9ZlnwwH.css +1 -0
  66. package/dist/assets/{bundle.esm-4ejJpC9l.js → bundle.esm-jHcdiVfj.js} +224 -224
  67. package/dist/assets/messagebundle_en-CVKgy_9L.js +1 -0
  68. package/dist/css/themes/Button.css +1 -1
  69. package/dist/css/themes/Checkbox.css +1 -1
  70. package/dist/css/themes/MastheadItem.css +1 -1
  71. package/dist/css/themes/RadioButton.css +1 -1
  72. package/dist/css/themes/RatingIndicator.css +1 -1
  73. package/dist/css/themes/Search.css +1 -1
  74. package/dist/css/themes/Slider.css +1 -1
  75. package/dist/css/themes/Tooltip.css +1 -1
  76. package/dist/css/themes/Upload.css +1 -1
  77. package/dist/css/themes/WizardTab.css +1 -1
  78. package/dist/custom-elements-internal.json +204 -12
  79. package/dist/custom-elements.json +165 -8
  80. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  81. package/dist/generated/i18n/i18n-defaults.d.ts +4 -1
  82. package/dist/generated/i18n/i18n-defaults.js +4 -1
  83. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  84. package/dist/generated/templates/FilterMenuTemplate.lit.js +1 -1
  85. package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
  86. package/dist/generated/templates/MastheadItemTemplate.lit.js +2 -2
  87. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  88. package/dist/generated/templates/MastheadMenuTemplate.lit.js +1 -1
  89. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
  90. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +2 -2
  91. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  92. package/dist/generated/templates/MastheadShellTemplate.lit.js +6 -5
  93. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  94. package/dist/generated/templates/PasswordFieldTemplate.lit.js +1 -1
  95. package/dist/generated/templates/PasswordFieldTemplate.lit.js.map +1 -1
  96. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +1 -1
  97. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -1
  98. package/dist/generated/templates/TextFieldTemplate.lit.js +1 -1
  99. package/dist/generated/templates/TextFieldTemplate.lit.js.map +1 -1
  100. package/dist/generated/templates/UploadTemplate.lit.js +2 -2
  101. package/dist/generated/templates/UploadTemplate.lit.js.map +1 -1
  102. package/dist/generated/themes/Button.css.d.ts +1 -1
  103. package/dist/generated/themes/Button.css.js +1 -1
  104. package/dist/generated/themes/Button.css.js.map +1 -1
  105. package/dist/generated/themes/Checkbox.css.d.ts +1 -1
  106. package/dist/generated/themes/Checkbox.css.js +1 -1
  107. package/dist/generated/themes/Checkbox.css.js.map +1 -1
  108. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  109. package/dist/generated/themes/MastheadItem.css.js +1 -1
  110. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  111. package/dist/generated/themes/RadioButton.css.d.ts +1 -1
  112. package/dist/generated/themes/RadioButton.css.js +1 -1
  113. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  114. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  115. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  116. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  117. package/dist/generated/themes/Search.css.d.ts +1 -1
  118. package/dist/generated/themes/Search.css.js +1 -1
  119. package/dist/generated/themes/Search.css.js.map +1 -1
  120. package/dist/generated/themes/Slider.css.d.ts +1 -1
  121. package/dist/generated/themes/Slider.css.js +1 -1
  122. package/dist/generated/themes/Slider.css.js.map +1 -1
  123. package/dist/generated/themes/Tooltip.css.d.ts +1 -1
  124. package/dist/generated/themes/Tooltip.css.js +1 -1
  125. package/dist/generated/themes/Tooltip.css.js.map +1 -1
  126. package/dist/generated/themes/Upload.css.d.ts +1 -1
  127. package/dist/generated/themes/Upload.css.js +1 -1
  128. package/dist/generated/themes/Upload.css.js.map +1 -1
  129. package/dist/generated/themes/WizardTab.css.d.ts +1 -1
  130. package/dist/generated/themes/WizardTab.css.js +1 -1
  131. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  132. package/dist/messagebundle.properties +9 -1
  133. package/dist/messagebundle_en.properties +4 -1
  134. package/dist/vscode.html-custom-data.json +29 -4
  135. package/dist/web-types.json +113 -11
  136. package/package.json +1 -1
  137. package/src/AssetsVariables.ts +1 -1
  138. package/src/Checkbox.ts +47 -0
  139. package/src/FilterMenu.hbs +2 -0
  140. package/src/FilterMenu.ts +8 -0
  141. package/src/Link.ts +4 -5
  142. package/src/MastheadItem.hbs +2 -2
  143. package/src/MastheadItem.ts +119 -15
  144. package/src/MastheadMenu.hbs +4 -1
  145. package/src/MastheadMenu.ts +12 -5
  146. package/src/MastheadMobileMenu.hbs +2 -2
  147. package/src/MastheadMobileMenu.ts +16 -3
  148. package/src/MastheadShell.hbs +14 -3
  149. package/src/MastheadShell.ts +98 -36
  150. package/src/PasswordField.hbs +1 -0
  151. package/src/PasswordField.ts +14 -0
  152. package/src/PhoneNumberField.ts +19 -1
  153. package/src/RadioButton.ts +1 -0
  154. package/src/SecondaryNavigation.ts +14 -10
  155. package/src/SecondaryNavigationItem.hbs +1 -1
  156. package/src/SecondaryNavigationItem.ts +25 -16
  157. package/src/SecondaryNavigationSubItem.ts +13 -7
  158. package/src/Table.ts +2 -2
  159. package/src/TextField.hbs +2 -0
  160. package/src/TextField.ts +16 -0
  161. package/src/Tooltip.ts +19 -0
  162. package/src/Upload.hbs +4 -4
  163. package/src/Upload.ts +24 -3
  164. package/src/generated/i18n/i18n-defaults.ts +2 -2
  165. package/src/generated/templates/FilterMenuTemplate.lit.ts +1 -1
  166. package/src/generated/templates/MastheadItemTemplate.lit.ts +2 -2
  167. package/src/generated/templates/MastheadMenuTemplate.lit.ts +1 -1
  168. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +2 -2
  169. package/src/generated/templates/MastheadShellTemplate.lit.ts +6 -5
  170. package/src/generated/templates/PasswordFieldTemplate.lit.ts +1 -1
  171. package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +1 -1
  172. package/src/generated/templates/TextFieldTemplate.lit.ts +1 -1
  173. package/src/generated/templates/UploadTemplate.lit.ts +2 -2
  174. package/src/generated/themes/Button.css.ts +1 -1
  175. package/src/generated/themes/Checkbox.css.ts +1 -1
  176. package/src/generated/themes/MastheadItem.css.ts +1 -1
  177. package/src/generated/themes/RadioButton.css.ts +1 -1
  178. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  179. package/src/generated/themes/Search.css.ts +1 -1
  180. package/src/generated/themes/Slider.css.ts +1 -1
  181. package/src/generated/themes/Tooltip.css.ts +1 -1
  182. package/src/generated/themes/Upload.css.ts +1 -1
  183. package/src/generated/themes/WizardTab.css.ts +1 -1
  184. package/src/i18n/messagebundle.properties +9 -1
  185. package/src/i18n/messagebundle_en.properties +4 -1
  186. package/src/themes/Button.css +9 -5
  187. package/src/themes/Checkbox.css +15 -1
  188. package/src/themes/MastheadItem.css +9 -3
  189. package/src/themes/RadioButton.css +2 -0
  190. package/src/themes/Search.css +1 -0
  191. package/src/themes/Tooltip.css +1 -1
  192. package/src/themes/Upload.css +10 -2
  193. package/src/themes/WizardTab.css +5 -0
  194. package/dist/assets/bundle-7XIcgsQH.css +0 -1
  195. package/dist/assets/messagebundle_en-BYIX4tmE.js +0 -1
@@ -0,0 +1,221 @@
1
+ export const quickLinks = [
2
+ {
3
+ "title":"Cloud Solutions",
4
+ "url":"#",
5
+ "id":"cloud",
6
+ "target":"_blank",
7
+ },
8
+ {
9
+ "title":"Sustainability Management",
10
+ "url":"#",
11
+ "id":"sustainability",
12
+ "target":"_blank",
13
+ },
14
+ {
15
+ "title":"Business Network",
16
+ "url":"#",
17
+ "id":"business",
18
+ "target":"_blank",
19
+ },
20
+ {
21
+ "title":"Conversational AI",
22
+ "url":"#",
23
+ "id":"conversational",
24
+ "target":"_blank",
25
+ },
26
+ {
27
+ "title":"SAP Insights",
28
+ "url":"#",
29
+ "id":"sapInsights",
30
+ "target":"_blank",
31
+ },
32
+ {
33
+ "title":"SAP Community",
34
+ "url":"#",
35
+ "id":"sapCommunity",
36
+ "target":"_blank",
37
+ }
38
+ ];
39
+
40
+ export const trendingLinks = [
41
+ {
42
+ "title":"What is Grow?",
43
+ "url":"#",
44
+ "id":"whatIsGrow",
45
+ "target":"_self",
46
+ },
47
+ {
48
+ "title":"What is RISE?",
49
+ "url":"#",
50
+ "id":"whatIsRise",
51
+ "target":"_blank",
52
+ },
53
+ {
54
+ "title":"Sustainability",
55
+ "url":"#",
56
+ "id":"sustainability",
57
+ "target":"_blank",
58
+ },
59
+ {
60
+ "title":"Transforming Offerings",
61
+ "url":"#",
62
+ "id":"transforming",
63
+ "target":"_blank",
64
+ },
65
+ {
66
+ "title":"Partner Ecosystem",
67
+ "url":"#",
68
+ "target":"_blank",
69
+ },
70
+ {
71
+ "title":"SAP Community",
72
+ "url":"#",
73
+ "target":"_blank",
74
+ },
75
+ {
76
+ "title":"Developer",
77
+ "url":"#",
78
+ "id":"developer",
79
+ "target":"_blank",
80
+ },
81
+ {
82
+ "title":"Support Portal",
83
+ "url":"#",
84
+ "target":"_blank",
85
+ }
86
+ ];
87
+
88
+ export const aboutLinks = [
89
+ {
90
+ "title":"Company Information",
91
+ "url":"#",
92
+ "id":"company",
93
+ "target":"_top",
94
+ },
95
+ {
96
+ "title":"Worldwide Directory",
97
+ "url":"#",
98
+ "id":"worldwide",
99
+ "target":"_blank",
100
+ },
101
+ {
102
+ "title":"Investor Relations",
103
+ "url":"#",
104
+ "id":"investor",
105
+ "target":"_blank",
106
+ },
107
+ {
108
+ "title":"Careers",
109
+ "url":"#",
110
+ "target":"_blank",
111
+ },
112
+ {
113
+ "title":"News and Press",
114
+ "url":"#",
115
+ "target":"_blank",
116
+ },
117
+ {
118
+ "title":"Events",
119
+ "url":"#",
120
+ "target":"_blank",
121
+ },
122
+ {
123
+ "title":"Customer Stories",
124
+ "url":"#",
125
+ "target":"_blank",
126
+ },
127
+ {
128
+ "title":"Newsletter",
129
+ "url":"#",
130
+ "target":"_blank",
131
+ }
132
+ ];
133
+
134
+ export const siteInformationLinks = [
135
+ {
136
+ "title":"Privacy",
137
+ "url":"#",
138
+ "id":"privacy",
139
+ "target":"_parent",
140
+ },
141
+ {
142
+ "title":"Terms of Use",
143
+ "url":"#",
144
+ "id":"terms",
145
+ "target":"_blank",
146
+ },
147
+ {
148
+ "title":"Legal Disclosure",
149
+ "url":"#",
150
+ "id":"legal",
151
+ "target":"_blank",
152
+ },
153
+ {
154
+ "title":"Copyright",
155
+ "url":"#",
156
+ "id":"copyright",
157
+ "target":"_blank",
158
+ },
159
+ {
160
+ "title":"Trademark",
161
+ "url":"#",
162
+ "id":"trademark",
163
+ "target":"_blank",
164
+ },
165
+ {
166
+ "title":"Cookie Preferences",
167
+ "url":"#",
168
+ "id":"cookie",
169
+ "target":"_blank",
170
+ },
171
+ {
172
+ "title":"Do Not Share/Sell My Personal Information",
173
+ "url":"#",
174
+ "target":"_blank",
175
+ }
176
+ ];
177
+
178
+ export const socialLinks = [
179
+ {
180
+ "url":"https://facebook.com",
181
+ "iconUrl":"./assets/facebook.svg",
182
+ "id":"facebookId",
183
+ "name":"facebook",
184
+ "target":"_blank",
185
+ },
186
+ {
187
+ "url":"https://twitter.com",
188
+ "iconUrl":"./assets/twitter.svg",
189
+ "id":"twitterId",
190
+ "name":"twitter",
191
+ "target":"_blank",
192
+ },
193
+ {
194
+ "url":"https://youtube.com",
195
+ "iconUrl":"./assets/youtube.svg",
196
+ "id":"youtubeId",
197
+ "name":"youtube",
198
+ "target":"_blank",
199
+ },
200
+ {
201
+ "url":"https://linkedin.com",
202
+ "iconUrl":"./assets/linkedin.svg",
203
+ "id":"linkedinId",
204
+ "name":"linkedin",
205
+ "target":"_blank",
206
+ },
207
+ {
208
+ "url":"https://instagram.com",
209
+ "iconUrl":"./assets/instagram.svg",
210
+ "id":"instagramId",
211
+ "name":"instagram",
212
+ "target":"_blank",
213
+ },
214
+ {
215
+ "url":"https://sap.com",
216
+ "iconUrl":"./assets/email.svg",
217
+ "id":"sapId",
218
+ "name":"sap",
219
+ "target":"_blank",
220
+ }
221
+ ];
@@ -0,0 +1,92 @@
1
+ import UDExCheckbox from "../../src/Checkbox.js";
2
+
3
+ describe("Checkbox", () => {
4
+ it("renders corectly", () => {
5
+ cy.mount(<UDExCheckbox></UDExCheckbox>)
6
+ cy.get("[udex-checkbox]").should("exist")
7
+ });
8
+
9
+ it("correctly text as label", () => {
10
+ cy.mount(<UDExCheckbox text="checkbox"></UDExCheckbox>)
11
+ cy.get("[udex-checkbox]").shadow().find("ui5-label")
12
+ .should("have.text", "checkbox")
13
+ });
14
+
15
+ it("renders readonly corectly", () => {
16
+ cy.mount(<UDExCheckbox readonly></UDExCheckbox>)
17
+ cy.get("[udex-checkbox]").shadow().find(".ui5-checkbox-root")
18
+ .should("have.attr", "aria-readonly", "true")
19
+ cy.get("[udex-checkbox]").shadow().find(".ui5-checkbox-inner").then($checkbox => {
20
+ const {color} = window.getComputedStyle($checkbox[0])
21
+ expect(color).eqls("rgb(85, 107, 129)")
22
+ })
23
+ });
24
+
25
+ it("renders disabled corectly", () => {
26
+ cy.mount(<UDExCheckbox disabled></UDExCheckbox>)
27
+ cy.get("[udex-checkbox]").shadow().find(".ui5-checkbox-root")
28
+ .should("have.attr", "aria-disabled", "true")
29
+ cy.get("[udex-checkbox]").shadow().find(".ui5-checkbox-inner").then($checkbox => {
30
+ const { opacity } = window.getComputedStyle($checkbox[0])
31
+ expect(opacity).eqls("1")
32
+ })
33
+ });
34
+
35
+ it("renders displayonly corectly", () => {
36
+ cy.mount(<UDExCheckbox displayOnly></UDExCheckbox>)
37
+ cy.get("[udex-checkbox]").shadow().find("ui5-icon").should("be.visible")
38
+ });
39
+
40
+ it("correctly sets aria-checked", () => {
41
+ cy.mount(<UDExCheckbox checked></UDExCheckbox>)
42
+ cy.get("[udex-checkbox]").shadow().find(".ui5-checkbox-root")
43
+ .should("have.attr", "aria-checked", "true")
44
+ });
45
+
46
+ it("renders required corectly", () => {
47
+ cy.mount(<UDExCheckbox required></UDExCheckbox>)
48
+ cy.get("[udex-checkbox]").shadow().find(".ui5-checkbox-root")
49
+ .should("have.attr", "aria-required", "true")
50
+ });
51
+
52
+ it("sets wrappintType to `None` by default", () => {
53
+ cy.mount(<UDExCheckbox required></UDExCheckbox>)
54
+ cy.get("[udex-checkbox]").should("have.attr", "wrapping-type", "None")
55
+ });
56
+
57
+ it("correctly sets accessible name", () => {
58
+ cy.mount(<UDExCheckbox accessibleName="checkbox"></UDExCheckbox>)
59
+ cy.get("[udex-checkbox]").shadow().find(".ui5-checkbox-root")
60
+ .should("have.attr", "aria-label", "checkbox")
61
+ });
62
+
63
+ it("correctly sets accessible name ref", () => {
64
+ cy.mount(<>
65
+ <p id="checkbox">Checkox</p>
66
+ <UDExCheckbox accessibleNameRef="checkbox"></UDExCheckbox>
67
+ </> )
68
+ cy.get("[udex-checkbox]").shadow().find(".ui5-checkbox-root")
69
+ .should("have.attr", "aria-label", "Checkox")
70
+ });
71
+
72
+ it("correctly sets valueState to `None` by default", () => {
73
+ cy.mount(<UDExCheckbox></UDExCheckbox>)
74
+ cy.get("[udex-checkbox]").should("have.attr", "value-state", "None")
75
+ });
76
+
77
+ it("correctly sets valueState to `Success`", () => {
78
+ cy.mount(<UDExCheckbox valueState="Success"></UDExCheckbox>)
79
+ cy.get("[udex-checkbox]").shadow().find(".ui5-checkbox-inner").then($checkbox => {
80
+ const {borderColor} = window.getComputedStyle($checkbox[0])
81
+ expect(borderColor).eqls("rgb(54, 164, 29)")
82
+ })
83
+ });
84
+
85
+ it("correctly sets valueState to `Error`", () => {
86
+ cy.mount(<UDExCheckbox valueState="Error"></UDExCheckbox>)
87
+ cy.get("[udex-checkbox]").shadow().find(".ui5-checkbox-inner").then($checkbox => {
88
+ const {borderColor} = window.getComputedStyle($checkbox[0])
89
+ expect(borderColor).eqls("rgb(238, 57, 57)")
90
+ })
91
+ });
92
+ });
@@ -0,0 +1,215 @@
1
+ import UDExCountrySelector from "../../src/CountrySelector.js";
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>
13
+ </UDExCountrySelector>
14
+
15
+ const countrySelectorWithSupportingText = <UDExCountrySelector
16
+ id="country-selector-supporting-text"
17
+ supportingText="Test supporting text"
18
+ searchPlaceholder="Search Countries and Regions"
19
+ height="400px">
20
+ </UDExCountrySelector>
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
+
36
+ beforeEach(() => {
37
+ cy.mount(defaultCountrySelector)
38
+ });
39
+
40
+ it("is correctly rendered", () => {
41
+ cy.get("#default").shadow().find(".udex-country-selector__dropdown").should("be.visible")
42
+ });
43
+
44
+ it("renders flag icon when no country is selected", () => {
45
+ cy.get("#default").shadow().find(".udex-country-selector__image").should("be.visible")
46
+ });
47
+
48
+ 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")
54
+ });
55
+
56
+ it("renders supporting text", () => {
57
+ cy.mount(countrySelectorWithSupportingText)
58
+ cy.get("#country-selector-supporting-text").shadow().find("udex-status-message").shadow().find(".udex-status-message__supporting-text").should("have.text", "Test supporting text")
59
+ });
60
+
61
+ it("renders Standard valueState by default", () => {
62
+ cy.mount(countrySelectorWithSupportingText)
63
+ cy.get("#country-selector-supporting-text").should("have.attr", "value-state", "Standard")
64
+ });
65
+
66
+ it("renders Error valueState", () => {
67
+ cy.mount(<UDExCountrySelector valueState="Error"></UDExCountrySelector>)
68
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").should("have.attr", "value-state", "Error")
69
+ });
70
+
71
+ it("renders Warning valueState", () => {
72
+ cy.mount(<UDExCountrySelector valueState="Warning"></UDExCountrySelector>)
73
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").should("have.attr", "value-state", "Warning")
74
+ });
75
+
76
+ it("renders Success valueState", () => {
77
+ cy.mount(<UDExCountrySelector valueState="Success"></UDExCountrySelector>)
78
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").should("have.attr", "value-state", "Success")
79
+ });
80
+
81
+ it('opens the dropdown on trigger click', () => {
82
+ cy.get("#default").shadow().find("#udexTextField").click()
83
+ cy.get("#default").shadow().find("#dropdown").should("have.attr", "open")
84
+ });
85
+
86
+ it('closes the dropdown on trigger click', () => {
87
+ cy.get("#default").shadow().find("#udexTextField").click()
88
+ cy.get("#default").shadow().find("#udexTextField").click()
89
+ cy.get("#default").shadow().find("#dropdown").should("not.have.attr", "open")
90
+ });
91
+
92
+ it('closes the dropdown on outside click', () => {
93
+ cy.get("#default").shadow().find("#udexTextField").click()
94
+ cy.get("body").click()
95
+ cy.get("#default").shadow().find("#dropdown").should("not.have.attr", "open")
96
+ });
97
+
98
+ it('closes the dropdown on country selection', () => {
99
+ cy.get("#default").shadow().find("#udexTextField").click()
100
+ cy.get("#default").shadow().find("#dropdown").find("udex-list")
101
+ .find("udex-list-item").first().click()
102
+ cy.get("#default").shadow().find("#dropdown").should("not.have.attr", "open")
103
+ });
104
+
105
+ it('opens the dropdown on trigger icon click', () => {
106
+ cy.get("#default").shadow().find("#udexTextField").shadow().find("udex-control-button").click()
107
+ cy.get("#default").shadow().find("#dropdown").should("have.attr", "open")
108
+ });
109
+
110
+ it('doesnt render blocked country', () => {
111
+ cy.get("#default").shadow().find("#dropdown").find("udex-list-item[id='PL']").should("not.exist")
112
+ });
113
+
114
+ it('renders readonly country selector', () => {
115
+ cy.mount(<UDExCountrySelector readonly></UDExCountrySelector>)
116
+ cy.get("[udex-country-selector]").shadow().find(".udex-country-selector__trigger").should("have.class", countrySelectorReadOnlyClass)
117
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("input").should("have.attr", "readonly")
118
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("input").should("have.attr", "aria-readonly", "true")
119
+ });
120
+
121
+ it('renders disabled country selector', () => {
122
+ cy.mount(<UDExCountrySelector disabled></UDExCountrySelector>)
123
+ cy.get("[udex-country-selector]").shadow().find(".udex-country-selector__trigger").should("have.class", countrySelectorDisabledClass)
124
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("input").should("have.attr", "disabled")
125
+ });
126
+
127
+ it('renders displayonly country selector', () => {
128
+ cy.mount(<UDExCountrySelector displayonly></UDExCountrySelector>)
129
+ cy.get("[udex-country-selector]").shadow().find(".udex-country-selector__trigger").should("have.class", countrySelectorDisplayOnlyClass)
130
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("input").should("have.attr", "readonly")
131
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("input").should("have.attr", "aria-readonly", "true")
132
+ });
133
+
134
+ it('hides trigger icon when displayonly', () => {
135
+ cy.mount(<UDExCountrySelector displayonly></UDExCountrySelector>)
136
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").shadow().find("udex-control-button").should("not.be.visible")
137
+ });
138
+
139
+ it('add special class when hideFlagImages is true', () => {
140
+ cy.mount(countrySelectorWithoutFlags)
141
+ cy.get("#country-selector-no-flags").shadow().find("#dropdown").find("udex-list")
142
+ .find("udex-list-item").first().find(".udex-country-selector-item__image").should("not.exist")
143
+ });
144
+
145
+ it('renders initially selected country', () => {
146
+ cy.mount(<UDExCountrySelector id="country-selector-preselected" preselectedCountry="PL"></UDExCountrySelector>)
147
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").should("have.attr", "value", "Poland (Polska)")
148
+ });
149
+
150
+ it("emits open/close when dropdown opened/closed", () => {
151
+ const openHandler = cy.stub().as("openHandler")
152
+ const closeHandler = cy.stub().as("closeHandler")
153
+ cy.mount(<UDExCountrySelector onOpen={openHandler} onClose={closeHandler}></UDExCountrySelector>)
154
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").click()
155
+ cy.get("@openHandler").should("have.been.called")
156
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").click()
157
+ cy.get("@closeHandler").should("have.been.called")
158
+ });
159
+
160
+ it('emits change-search when search field typing', () => {
161
+ const changeHandler = cy.stub().as("changeHandler")
162
+ document.addEventListener("change-search", changeHandler)
163
+ cy.get("#default").shadow().find("#udexTextField").click()
164
+ cy.get("#default").shadow().find("udex-search").shadow().find(".udex-search__field").click().realPress("p").realPress("o").realPress("l").realPress("a")
165
+ cy.get("@changeHandler").should("have.been.called")
166
+ });
167
+
168
+ it("emits reset-search when search reset button is clicked", () => {
169
+ const resetHandler = cy.stub().as("resetHandler")
170
+ document.addEventListener("reset-search", resetHandler)
171
+ cy.get("#default").shadow().find("#udexTextField").click()
172
+ cy.get("#default").shadow().find("udex-search").shadow().find(".udex-search__field").click().realPress("p").realPress("o").realPress("l").realPress("a")
173
+ cy.get("#default").shadow().find("udex-search").shadow().find(".udex-search__reset-button").click()
174
+ cy.get("@resetHandler").should("have.been.called")
175
+ });
176
+
177
+ it('emits submit-search when user presses Enter key in the search', () => {
178
+ const submitHandler = cy.stub().as("submitHandler")
179
+ document.addEventListener("submit-search", submitHandler)
180
+ cy.get("#default").shadow().find("#udexTextField").click()
181
+ cy.get("#default").shadow().find("udex-search").shadow().find(".udex-search__field").click().realPress("p").realPress("o").realPress("l").realPress("a").realPress("Enter")
182
+ cy.get("@submitHandler").should("have.been.called")
183
+ });
184
+
185
+ it('emits selection-change when list item is clicked', () => {
186
+ const selectionHandler = cy.stub().as("selectionHandler")
187
+ cy.mount(<UDExCountrySelector onSelectionChange={selectionHandler}></UDExCountrySelector>)
188
+ cy.get("[udex-country-selector]").shadow().find("#udexTextField").click()
189
+ cy.get("[udex-country-selector]").shadow().find("#dropdown").find("udex-list")
190
+ .find("udex-list-item").first().click()
191
+
192
+ cy.get("@selectionHandler").should("have.been.called")
193
+ });
194
+
195
+ it('focus on element with corresponding starting letter', () => {
196
+ cy.get("#default").shadow().find("#udexTextField").click().realPress("Tab").realPress("a").realPress("a").realPress("Enter")
197
+ cy.get("#default").shadow().find("#udexTextField").should("have.attr", "value", "Albania (Shqipëria)")
198
+ });
199
+
200
+ it('focus on element with corresponding starting letter filtered by search value', () => {
201
+ cy.get("#default").shadow().find("#udexTextField").click()
202
+ 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")
203
+ cy.get("#default").shadow().find("#udexTextField").should("have.attr", "value", "Afghanistan (افغانستان)")
204
+ });
205
+
206
+ it('keyboard focus navigation for `ArrowDown`', () => {
207
+ cy.get("#default").shadow().find("#udexTextField").click().realPress("Tab").realPress("a").realPress("{downarrow}").realPress("Enter")
208
+ cy.get("#default").shadow().find("#udexTextField").should("have.attr", "value", "Albania (Shqipëria)")
209
+ });
210
+
211
+ it('keyboard focus navigation for `ArrowUp`', () => {
212
+ cy.get("#default").shadow().find("#udexTextField").click().realPress("Tab").realPress("a").realPress("{downarrow}").realPress("{downarrow}").realPress("{uparrow}").realPress("Enter")
213
+ cy.get("#default").shadow().find("#udexTextField").should("have.attr", "value", "Albania (Shqipëria)")
214
+ });
215
+ });