@sapudex/web-components 2.22.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 (170) hide show
  1. package/cypress/specs/CountrySelector.cy.tsx +158 -144
  2. package/cypress/specs/EventRibbon.cy.tsx +3 -1
  3. package/cypress/specs/SelectBox.cy.tsx +173 -206
  4. package/cypress/specs/Tag.cy.tsx +1 -1
  5. package/cypress/specs/TextField.cy.tsx +15 -0
  6. package/cypress/specs/Textarea.cy.tsx +15 -33
  7. package/dist/CountrySelector.d.ts +25 -142
  8. package/dist/CountrySelector.js +91 -268
  9. package/dist/CountrySelector.js.map +1 -1
  10. package/dist/FilterMenu.d.ts +14 -2
  11. package/dist/FilterMenu.js +11 -1
  12. package/dist/FilterMenu.js.map +1 -1
  13. package/dist/List.js +2 -3
  14. package/dist/List.js.map +1 -1
  15. package/dist/ListGroupHeaderBase.d.ts +1 -0
  16. package/dist/ListGroupHeaderBase.js +3 -0
  17. package/dist/ListGroupHeaderBase.js.map +1 -1
  18. package/dist/ListItemBase.d.ts +12 -0
  19. package/dist/ListItemBase.js +17 -2
  20. package/dist/ListItemBase.js.map +1 -1
  21. package/dist/MediaPlayer.js +2 -0
  22. package/dist/MediaPlayer.js.map +1 -1
  23. package/dist/MediaPlayerTemplate.js +4 -4
  24. package/dist/MediaPlayerTemplate.js.map +1 -1
  25. package/dist/SearchableListBase.d.ts +23 -16
  26. package/dist/SearchableListBase.js +48 -72
  27. package/dist/SearchableListBase.js.map +1 -1
  28. package/dist/SelectBase.d.ts +193 -0
  29. package/dist/SelectBase.js +428 -0
  30. package/dist/SelectBase.js.map +1 -0
  31. package/dist/SelectBox.d.ts +30 -152
  32. package/dist/SelectBox.js +139 -348
  33. package/dist/SelectBox.js.map +1 -1
  34. package/dist/TagGroup.d.ts +23 -5
  35. package/dist/TagGroup.js +37 -16
  36. package/dist/TagGroup.js.map +1 -1
  37. package/dist/TagTemplate.js +4 -2
  38. package/dist/TagTemplate.js.map +1 -1
  39. package/dist/TextArea.d.ts +1 -1
  40. package/dist/TextArea.js +5 -5
  41. package/dist/TextArea.js.map +1 -1
  42. package/dist/TextAreaTemplate.d.ts +2 -0
  43. package/dist/TextAreaTemplate.js +13 -0
  44. package/dist/TextAreaTemplate.js.map +1 -0
  45. package/dist/TextField.d.ts +29 -4
  46. package/dist/TextField.js +32 -16
  47. package/dist/TextField.js.map +1 -1
  48. package/dist/TextFieldTemplate.d.ts +2 -0
  49. package/dist/TextFieldTemplate.js +14 -0
  50. package/dist/TextFieldTemplate.js.map +1 -0
  51. package/dist/assets/{InputSuggestions-By00xQan.js → InputSuggestions-C8m6N2-d.js} +1 -1
  52. package/dist/assets/{ListItemStandardExpandableTextTemplate-BGtoxRbA.js → ListItemStandardExpandableTextTemplate-BwD5bYhw.js} +1 -1
  53. package/dist/assets/{bundle.esm-9yDdQqR5.js → bundle.esm-hGsUwmUy.js} +218 -217
  54. package/dist/css/themes/CountrySelector.css +1 -1
  55. package/dist/css/themes/EventRibbon.css +1 -1
  56. package/dist/css/themes/ListItem.css +1 -1
  57. package/dist/css/themes/MastheadItem.css +1 -1
  58. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  59. package/dist/css/themes/RatingIndicator.css +1 -1
  60. package/dist/css/themes/Search.css +1 -1
  61. package/dist/css/themes/SelectBase.css +1 -0
  62. package/dist/css/themes/SelectBox.css +1 -1
  63. package/dist/css/themes/Slider.css +1 -1
  64. package/dist/css/themes/TagGroup.css +1 -1
  65. package/dist/css/themes/TextField.css +1 -1
  66. package/dist/custom-elements-internal.json +1088 -1284
  67. package/dist/custom-elements.json +284 -934
  68. package/dist/generated/templates/CountrySelectorTemplate.lit.js +3 -3
  69. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  70. package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
  71. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  72. package/dist/generated/templates/SelectBoxTemplate.lit.js +10 -9
  73. package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
  74. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  75. package/dist/generated/themes/CountrySelector.css.js +1 -1
  76. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  77. package/dist/generated/themes/EventRibbon.css.d.ts +1 -1
  78. package/dist/generated/themes/EventRibbon.css.js +1 -1
  79. package/dist/generated/themes/EventRibbon.css.js.map +1 -1
  80. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  81. package/dist/generated/themes/ListItem.css.js +1 -1
  82. package/dist/generated/themes/ListItem.css.js.map +1 -1
  83. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  84. package/dist/generated/themes/MastheadItem.css.js +1 -1
  85. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  86. package/dist/generated/themes/MastheadMobileMenu.css.d.ts +1 -1
  87. package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
  88. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  89. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  90. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  91. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  92. package/dist/generated/themes/Search.css.d.ts +1 -1
  93. package/dist/generated/themes/Search.css.js +1 -1
  94. package/dist/generated/themes/Search.css.js.map +1 -1
  95. package/dist/generated/themes/SelectBase.css.d.ts +2 -0
  96. package/dist/generated/themes/SelectBase.css.js +8 -0
  97. package/dist/generated/themes/SelectBase.css.js.map +1 -0
  98. package/dist/generated/themes/SelectBox.css.d.ts +1 -1
  99. package/dist/generated/themes/SelectBox.css.js +1 -1
  100. package/dist/generated/themes/SelectBox.css.js.map +1 -1
  101. package/dist/generated/themes/Slider.css.d.ts +1 -1
  102. package/dist/generated/themes/Slider.css.js +1 -1
  103. package/dist/generated/themes/Slider.css.js.map +1 -1
  104. package/dist/generated/themes/TagGroup.css.d.ts +1 -1
  105. package/dist/generated/themes/TagGroup.css.js +1 -1
  106. package/dist/generated/themes/TagGroup.css.js.map +1 -1
  107. package/dist/generated/themes/TextField.css.d.ts +1 -1
  108. package/dist/generated/themes/TextField.css.js +1 -1
  109. package/dist/generated/themes/TextField.css.js.map +1 -1
  110. package/dist/types/common.d.ts +1 -1
  111. package/dist/types/common.js +1 -1
  112. package/dist/types/common.js.map +1 -1
  113. package/dist/vscode.html-custom-data.json +23 -234
  114. package/dist/web-types.json +256 -811
  115. package/package.json +1 -1
  116. package/src/CountrySelector.hbs +6 -61
  117. package/src/CountrySelector.ts +93 -375
  118. package/src/FilterMenu.ts +13 -3
  119. package/src/List.ts +2 -3
  120. package/src/ListGroupHeaderBase.ts +4 -0
  121. package/src/ListItem.hbs +0 -1
  122. package/src/ListItemBase.ts +17 -3
  123. package/src/MediaPlayer.ts +2 -0
  124. package/src/MediaPlayerTemplate.tsx +0 -1
  125. package/src/SearchableListBase.ts +68 -83
  126. package/src/SelectBase.ts +580 -0
  127. package/src/SelectBox.hbs +118 -107
  128. package/src/SelectBox.ts +155 -445
  129. package/src/TagGroup.ts +53 -19
  130. package/src/TagTemplate.tsx +4 -2
  131. package/src/TextArea.ts +5 -5
  132. package/src/TextAreaTemplate.tsx +67 -0
  133. package/src/TextField.ts +57 -24
  134. package/src/TextFieldTemplate.tsx +90 -0
  135. package/src/generated/templates/CountrySelectorTemplate.lit.ts +2 -2
  136. package/src/generated/templates/ListItemTemplate.lit.ts +1 -1
  137. package/src/generated/templates/SelectBoxTemplate.lit.ts +10 -9
  138. package/src/generated/themes/CountrySelector.css.ts +1 -1
  139. package/src/generated/themes/EventRibbon.css.ts +1 -1
  140. package/src/generated/themes/ListItem.css.ts +1 -1
  141. package/src/generated/themes/MastheadItem.css.ts +1 -1
  142. package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
  143. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  144. package/src/generated/themes/Search.css.ts +1 -1
  145. package/src/generated/themes/SelectBase.css.ts +9 -0
  146. package/src/generated/themes/SelectBox.css.ts +1 -1
  147. package/src/generated/themes/Slider.css.ts +1 -1
  148. package/src/generated/themes/TagGroup.css.ts +1 -1
  149. package/src/generated/themes/TextField.css.ts +1 -1
  150. package/src/themes/CountrySelector.css +42 -115
  151. package/src/themes/EventRibbon.css +21 -13
  152. package/src/themes/ListItem.css +6 -0
  153. package/src/themes/MastheadItem.css +0 -2
  154. package/src/themes/MastheadMobileMenu.css +2 -0
  155. package/src/themes/Search.css +0 -1
  156. package/src/themes/SelectBase.css +239 -0
  157. package/src/themes/SelectBox.css +13 -195
  158. package/src/themes/TagGroup.css +0 -1
  159. package/src/themes/TextField.css +7 -7
  160. package/src/types/common.ts +1 -1
  161. package/dist/generated/templates/TextAreaTemplate.lit.d.ts +0 -3
  162. package/dist/generated/templates/TextAreaTemplate.lit.js +0 -13
  163. package/dist/generated/templates/TextAreaTemplate.lit.js.map +0 -1
  164. package/dist/generated/templates/TextFieldTemplate.lit.d.ts +0 -3
  165. package/dist/generated/templates/TextFieldTemplate.lit.js +0 -14
  166. package/dist/generated/templates/TextFieldTemplate.lit.js.map +0 -1
  167. package/src/TextArea.hbs +0 -54
  168. package/src/TextField.hbs +0 -78
  169. package/src/generated/templates/TextAreaTemplate.lit.ts +0 -17
  170. package/src/generated/templates/TextFieldTemplate.lit.ts +0 -18
@@ -25,7 +25,7 @@ const fullComponent = <UDExSelectBox
25
25
  <UDExSelectBoxItem label="R" supportingText="Language for statistical computing"></UDExSelectBoxItem>
26
26
  </UDExSelectBox>
27
27
 
28
- const multiSelect = <div style="width: 300px; position:relative;">
28
+ const multiSelect = <div style="width: 350px; position:relative;">
29
29
  <a id="previous-focus" href="#">Previous focusable element</a>
30
30
  <UDExSelectBox
31
31
  id="select-box"
@@ -122,6 +122,7 @@ describe("SelectBox", () => {
122
122
  cy.mount(<UDExSelectBox></UDExSelectBox>);
123
123
 
124
124
  cy.get("[udex-select-box]").should("exist");
125
+ cy.get("[udex-select-box]").should("exist");
125
126
  });
126
127
 
127
128
  it("correct height style is applied", () => {
@@ -141,7 +142,9 @@ describe("SelectBox", () => {
141
142
  it("correct label is applied", () => {
142
143
  cy.mount(fullComponent);
143
144
  cy.get("#select-box").shadow().find(".udex-text-field__label")
144
- .should("have.text", "Programming languages")
145
+ .invoke('text')
146
+ .then((text) => text.trim())
147
+ .should("equal", "Programming languages");
145
148
  });
146
149
 
147
150
  it("correct supporting text is applied", () => {
@@ -155,15 +158,7 @@ describe("SelectBox", () => {
155
158
  cy.get("#select-box").find("udex-select-box-item").should("have.length", 15);
156
159
  });
157
160
 
158
- it("render the search input if \"showSearchInput\" property is set", () => {
159
- cy.mount(shortComponent);
160
- cy.get("#select-box").invoke('attr', 'show-search-input', '');
161
- cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
162
-
163
- cy.get("#select-box").shadow().find(".udex-filter-menu__search").should("exist");
164
- });
165
-
166
- it('click on trigger opens/closes the dropdown', () => {
161
+ it("click on trigger opens/closes the dropdown", () => {
167
162
  cy.mount(fullComponent);
168
163
  const trigger = cy.get("#select-box").shadow().find(".udex-text-field__trigger");
169
164
  trigger.click();
@@ -175,23 +170,7 @@ describe("SelectBox", () => {
175
170
  dropdown.should("not.have.attr","open");
176
171
  });
177
172
 
178
- it('clicking on \"Space\" or \"Enter\" field should open/close dropdown', () => {
179
- cy.mount(<div>
180
- <UDExSelectBox id="select-box" label="Programming languages">
181
- <UDExSelectBoxItem label="JavaScript" supportingText="Frontend web development"></UDExSelectBoxItem>
182
- </UDExSelectBox>
183
- </div>);
184
- cy.realPress("Tab");
185
- cy.realPress("Space");
186
-
187
- cy.get("#select-box").shadow().find(".udex-select-box__dropdown").should("have.attr","open");
188
-
189
- cy.realPress("Enter");
190
-
191
- cy.get("#select-box").shadow().find(".udex-select-box__dropdown").should("not.have.attr","open");
192
- });
193
-
194
- it('checking label and supporting text for the item', () => {
173
+ it("checking label and supporting text for the item", () => {
195
174
  cy.mount(fullComponent);
196
175
  cy.get("#select-box").shadow()
197
176
  .find(".udex-text-field__trigger")
@@ -208,7 +187,7 @@ describe("SelectBox", () => {
208
187
  .should("have.text", "Frontend web development");
209
188
  });
210
189
 
211
- it('checking the custom content for the item', () => {
190
+ it("checking the custom content for the item", () => {
212
191
  cy.mount(fullComponent);
213
192
  cy.get("#select-box").shadow()
214
193
  .find(".udex-text-field__trigger")
@@ -221,31 +200,7 @@ describe("SelectBox", () => {
221
200
  .should("have.text", "Lorem ipsum");
222
201
  });
223
202
 
224
- it('show search if filter has more than 14 items', () => {
225
- cy.mount(fullComponent);
226
- cy.get("#select-box").shadow()
227
- .find(".udex-text-field__trigger")
228
- .click();
229
-
230
- cy.get("#select-box")
231
- .shadow()
232
- .find(".udex-filter-menu__search")
233
- .should("be.visible");
234
- });
235
-
236
- it('does not show search if filter has less than 14 items', () => {
237
- cy.mount(shortComponent);
238
- cy.get("#select-box").shadow()
239
- .find(".udex-text-field__trigger")
240
- .click();
241
-
242
- cy.get("#select-box")
243
- .shadow()
244
- .find(".udex-filter-menu__search")
245
- .should("not.exist");
246
- });
247
-
248
- it('render the additional text in the item', () => {
203
+ it("render the additional text in the item", () => {
249
204
  cy.mount(shortComponent);
250
205
  cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
251
206
  cy.get("#select-box").shadow().find("udex-list-item").eq(0).as("firstItem");
@@ -253,49 +208,42 @@ describe("SelectBox", () => {
253
208
  cy.get("@firstItem").should("have.attr", "additional-text", "Additional Text");
254
209
  });
255
210
 
256
- it('render the first icon slot in the item', () => {
211
+ it("render the first icon slot in the item", () => {
257
212
  cy.mount(shortComponent);
258
213
  cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
259
214
  cy.get("#select-box").shadow().find("udex-list-item").eq(0).as("firstItem");
260
215
  cy.get("@firstItem").find("#firstIcon").should("exist");
261
216
  });
262
217
 
263
- it('render the second icon slot in the item', () => {
218
+ it("render the second icon slot in the item", () => {
264
219
  cy.mount(shortComponent);
265
220
  cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
266
221
  cy.get("#select-box").shadow().find("udex-list-item").eq(0).as("firstItem");
267
222
  cy.get("@firstItem").find("#secondIcon").should("exist");
268
223
  });
269
224
 
270
- it('should filter items based on search input', () => {
225
+ it("should filter items based on search input", () => {
271
226
  cy.mount(fullComponent);
272
- cy.get("#select-box").shadow()
273
- .find(".udex-text-field__trigger")
274
- .click();
275
227
 
276
228
  cy.get("#select-box").shadow()
277
- .find(".udex-filter-menu__search")
278
- .shadow()
279
- .find(".udex-search__field")
280
- .click();
281
- cy.realType("java");
229
+ .find(".udex-text-field__search").as("searchField");
282
230
 
231
+ cy.get("@searchField").click();
232
+ cy.realType("java");
283
233
 
284
- cy.get("#select-box").shadow()
285
- .find("udex-list-item")
234
+ cy.get("#select-box").shadow().find("udex-list-item")
286
235
  .should("have.length", 2);
236
+
237
+ cy.get("#select-box").shadow().find("udex-list-item").eq(0)
238
+ .shadow().find(".udex-list__item")
239
+ .should("include.text", "Java");
287
240
  });
288
241
 
289
- it('test if reset searching value using resetSearch method', () => {
242
+ it("test if reset searching value using resetSearch method", () => {
290
243
  cy.mount(fullComponent);
291
- cy.get("#select-box").shadow()
292
- .find(".udex-text-field__trigger")
293
- .click();
294
244
 
295
245
  cy.get("#select-box").shadow()
296
- .find(".udex-filter-menu__search")
297
- .shadow()
298
- .find(".udex-search__field").as("searchField");
246
+ .find(".udex-text-field__search").as("searchField");
299
247
 
300
248
  cy.get("@searchField")
301
249
  .click();
@@ -311,7 +259,7 @@ describe("SelectBox", () => {
311
259
  .should("have.value", "");
312
260
  });
313
261
 
314
- it('test if close dropdown using close method', () => {
262
+ it("test if close dropdown using close method", () => {
315
263
  cy.mount(fullComponent);
316
264
  cy.get("#select-box").shadow()
317
265
  .find(".udex-text-field__trigger")
@@ -328,16 +276,11 @@ describe("SelectBox", () => {
328
276
  .should("not.have.attr","open");
329
277
  });
330
278
 
331
- it('should show empty msg if the search does not produce results', () => {
279
+ it("should show empty msg if the search does not produce results", () => {
332
280
  cy.mount(fullComponent);
333
- cy.get("#select-box").shadow()
334
- .find(".udex-text-field__trigger")
335
- .click();
336
281
 
337
282
  cy.get("#select-box").shadow()
338
- .find(".udex-filter-menu__search")
339
- .shadow()
340
- .find(".udex-search__field")
283
+ .find(".udex-text-field__search")
341
284
  .click();
342
285
  cy.realType("x");
343
286
 
@@ -346,7 +289,7 @@ describe("SelectBox", () => {
346
289
  .should("include.text", "No matches found.");
347
290
  });
348
291
 
349
- it('show tooltip in display only mode', () => {
292
+ it("show tooltip in display only mode", () => {
350
293
  cy.mount(displayOnly);
351
294
 
352
295
  cy.get("#select-box").shadow()
@@ -358,80 +301,94 @@ describe("SelectBox", () => {
358
301
  .click();
359
302
 
360
303
  cy.get("@tagGroup")
361
- .find("udex-tooltip").shadow()
362
- .find(".udex-tooltip__pane")
304
+ .find("udex-tooltip")
363
305
  .should("have.attr", "open");
364
306
  });
365
307
 
366
-
367
- it('focus on element with corresponding starting letter', () => {
368
- const testLetterKey = "p";
308
+ it("dropdown opens on pressing the `ArrowDown` key on the search", () => {
369
309
  cy.mount(fullComponent);
370
310
  cy.get("#select-box").shadow()
371
- .find(".udex-text-field__trigger")
372
- .click();
311
+ .find(".udex-text-field__search")
312
+ .click()
313
+ .realPress("ArrowDown");
373
314
 
374
315
  cy.get("#select-box").shadow()
375
- .find(".udex-filter-menu__search")
376
- .shadow()
377
- .find(".udex-search__field")
378
- .click();
316
+ .find(".udex-select-box__dropdown")
317
+ .should("have.attr","open");
318
+ });
379
319
 
380
- cy.realPress("Tab")
381
- cy.realPress(testLetterKey);
320
+ it("dropdown closes on pressing the `Escape`", () => {
321
+ cy.mount(fullComponent);
322
+ cy.get("#select-box").shadow()
323
+ .find(".udex-text-field__search")
324
+ .click()
325
+ .realPress("ArrowDown");
382
326
 
383
327
  cy.get("#select-box").shadow()
384
- .find("udex-list-item").eq(1)
385
- .should("have.focus");
328
+ .find(".udex-text-field__search")
329
+ .realPress("Escape");
386
330
 
387
- cy.realPress(testLetterKey);
388
331
  cy.get("#select-box").shadow()
389
- .find("udex-list-item").eq(5)
390
- .should("have.focus");
332
+ .find(".udex-select-box__dropdown")
333
+ .should("not.have.attr","open");
391
334
  });
392
335
 
393
- it('focus on element with corresponding starting letter filtered by search value', () =>{
394
- cy.mount(fullComponent);
336
+ it("sets option label when Arrow Down key press on the list items", () => {
337
+ cy.mount(shortComponent);
395
338
  cy.get("#select-box").shadow()
396
- .find(".udex-text-field__trigger")
397
- .click();
339
+ .find(".udex-text-field__search")
340
+ .click()
341
+ .realPress("ArrowDown")
342
+ .realPress("ArrowDown");
398
343
 
399
344
  cy.get("#select-box").shadow()
400
- .find(".udex-filter-menu__search")
401
- .shadow()
402
- .find(".udex-search__field")
403
- .click();
345
+ .find(".udex-text-field__single-label")
346
+ .should("have.text", "Python");
347
+ });
404
348
 
405
- cy.realType("java");
406
- cy.realPress("Tab");
407
- cy.realPress("Tab");
408
- cy.realPress("j");
349
+ it("sets option label when Arrow Up key press on the list items", () => {
350
+ cy.mount(shortComponent);
351
+ cy.get("#select-box").shadow()
352
+ .find(".udex-text-field__search")
353
+ .click()
354
+ .realPress("ArrowDown")
355
+ .realPress("ArrowDown")
356
+ .realPress("ArrowUp");
409
357
 
410
358
  cy.get("#select-box").shadow()
411
- .find("udex-list-item").eq(0)
412
- .should("have.focus");
359
+ .find(".udex-text-field__single-label")
360
+ .should("have.text", "JavaScript");
413
361
  });
414
362
 
415
- it('keyboard focus navigation on ArrowDown and ArrowUp element', () => {
363
+ it("sets option label when End key press on the list items", () => {
416
364
  cy.mount(shortComponent);
417
365
  cy.get("#select-box").shadow()
418
- .find(".udex-text-field__trigger")
419
- .click();
366
+ .find(".udex-text-field__search")
367
+ .click()
368
+ .realPress("ArrowDown")
369
+ .realPress("ArrowDown")
370
+ .realPress("End");
420
371
 
421
- cy.realPress("ArrowDown");
422
- cy.realPress("ArrowDown");
372
+ cy.get("#select-box").shadow()
373
+ .find(".udex-text-field__single-label")
374
+ .should("have.text", "Perl");
375
+ });
423
376
 
377
+ it("sets option label when Home key press on the list items", () => {
378
+ cy.mount(shortComponent);
424
379
  cy.get("#select-box").shadow()
425
- .find("udex-list-item").eq(2)
426
- .should("have.focus");
380
+ .find(".udex-text-field__search")
381
+ .click()
382
+ .realPress("ArrowDown")
383
+ .realPress("ArrowDown")
384
+ .realPress("Home");
427
385
 
428
- cy.realPress("ArrowUp");
429
386
  cy.get("#select-box").shadow()
430
- .find("udex-list-item").eq(1)
431
- .should("have.focus");
387
+ .find(".udex-text-field__single-label")
388
+ .should("have.text", "JavaScript");
432
389
  });
433
390
 
434
- it('SingleSelect mode - after clicking on the item dropdown is closed', () => {
391
+ it("SingleSelect mode - after clicking on the item dropdown is closed", () => {
435
392
  cy.mount(shortComponent);
436
393
  cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
437
394
 
@@ -445,7 +402,7 @@ describe("SelectBox", () => {
445
402
  dropdown.should("not.have.attr","open");
446
403
  });
447
404
 
448
- it('SingleSelect mode - after clicking on the item it is selected', () => {
405
+ it("SingleSelect mode - after clicking on the item it is selected", () => {
449
406
  cy.mount(shortComponent);
450
407
  cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
451
408
 
@@ -458,7 +415,7 @@ describe("SelectBox", () => {
458
415
  .should("have.attr", "data-selected","true")
459
416
  });
460
417
 
461
- it('SingleSelect mode - value sets on the field after clicking on the item ', () => {
418
+ it("SingleSelect mode - value sets on the field after clicking on the item", () => {
462
419
  cy.mount(shortComponent);
463
420
  cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
464
421
 
@@ -471,7 +428,7 @@ describe("SelectBox", () => {
471
428
  .should("have.text", "JavaScript");
472
429
  });
473
430
 
474
- it('MultiSelect mode - after clicking on the item dropdown is opened', () => {
431
+ it("MultiSelect mode - after clicking on the item dropdown is opened", () => {
475
432
  cy.mount(multiSelect);
476
433
  cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
477
434
 
@@ -484,7 +441,7 @@ describe("SelectBox", () => {
484
441
  .should("have.attr","open");
485
442
  });
486
443
 
487
- it('MultiSelect mode - rendering tags after clicking on the items', () => {
444
+ it("MultiSelect mode - rendering tags after clicking on the items", () => {
488
445
  cy.mount(multiSelect);
489
446
  cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
490
447
 
@@ -501,7 +458,7 @@ describe("SelectBox", () => {
501
458
  .should("have.length", 3);
502
459
  });
503
460
 
504
- it('MultiSelect mode - after clicking the delete icon of a tag removes it from the selection', () => {
461
+ it("MultiSelect mode - after clicking the delete icon of a tag removes it from the selection", () => {
505
462
  cy.mount(multiSelect);
506
463
  cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
507
464
 
@@ -524,9 +481,9 @@ describe("SelectBox", () => {
524
481
  .should("not.exist")
525
482
  });
526
483
 
527
- it('MultiSelect mode - n more is applied after clicking on the items', () => {
484
+ it("MultiSelect mode - n more is applied after clicking on the items", () => {
528
485
  cy.mount(multiSelect);
529
- cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
486
+ cy.get("#select-box").shadow().find(".udex-text-field__search").click();
530
487
 
531
488
  cy.get("#select-box").shadow()
532
489
  .find("udex-list-item").as("items")
@@ -535,8 +492,7 @@ describe("SelectBox", () => {
535
492
  cy.get("@items").eq(1).click();
536
493
  cy.get("@items").eq(2).click();
537
494
  cy.get("@items").eq(3).click();
538
-
539
- cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
495
+ cy.get("body").realClick();
540
496
 
541
497
  cy.get("#select-box").shadow()
542
498
  .find("udex-tag-group").shadow()
@@ -545,9 +501,9 @@ describe("SelectBox", () => {
545
501
  .should("have.text", "2 more");
546
502
  });
547
503
 
548
- it('MultiSelect mode - open dropdown after clicking on the more button', () => {
504
+ it("MultiSelect mode - open dropdown after clicking on the more button", () => {
549
505
  cy.mount(multiSelect);
550
- cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
506
+ cy.get("#select-box").shadow().find(".udex-text-field__search").click();
551
507
 
552
508
  cy.get("#select-box").shadow()
553
509
  .find("udex-list-item").as("items")
@@ -556,8 +512,7 @@ describe("SelectBox", () => {
556
512
  cy.get("@items").eq(1).click();
557
513
  cy.get("@items").eq(2).click();
558
514
  cy.get("@items").eq(3).click();
559
-
560
- cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
515
+ cy.get("body").realClick();
561
516
 
562
517
  cy.get("#select-box").shadow()
563
518
  .find("udex-tag-group").shadow()
@@ -570,9 +525,9 @@ describe("SelectBox", () => {
570
525
  .should("have.attr","open");
571
526
  });
572
527
 
573
- it('MultiSelect mode - should truncate the tag when it is long and open the dropdown on click', () => {
528
+ it("MultiSelect mode - should truncate the tag when it is long and open the dropdown on click", () => {
574
529
  cy.mount(multiSelect);
575
- cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
530
+ cy.get("#select-box").shadow().find(".udex-text-field__search").click();
576
531
 
577
532
  cy.get("#select-box").shadow()
578
533
  .find("udex-list-item").eq(4).click();
@@ -588,9 +543,9 @@ describe("SelectBox", () => {
588
543
  .should("have.text", "C# - is a general-purpose high-level programming language supporting multiple paradigms")
589
544
  });
590
545
 
591
- it('MultiSelect mode - the truncated tag is selected when clicking on', () => {
546
+ it("MultiSelect mode - the truncated tag is selected when clicking on", () => {
592
547
  cy.mount(multiSelect);
593
- cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
548
+ cy.get("#select-box").shadow().find(".udex-text-field__search").click();
594
549
 
595
550
  cy.get("#select-box").shadow()
596
551
  .find("udex-list-item").eq(4).click();
@@ -600,13 +555,11 @@ describe("SelectBox", () => {
600
555
  .find("udex-tag").as("tag")
601
556
 
602
557
  cy.get("@tag").click();
603
- cy.get("#select-box").shadow().find(".udex-text-field__trigger").realClick();
604
558
 
605
- cy.get("@tag")
606
- .should("have.attr", "selected")
559
+ cy.get("@tag").should("have.attr", "selected")
607
560
  });
608
561
 
609
- describe('Select Box group header tests', () => {
562
+ describe("Select Box group header tests", () => {
610
563
  it('MultiSelect mode - checks label and supporting text for the group header item', () => {
611
564
  cy.mount(groupHeader);
612
565
  cy.get("#select-box").shadow().as("select")
@@ -624,7 +577,7 @@ describe("SelectBox", () => {
624
577
  .should("have.text", "Digital Builders");
625
578
  });
626
579
 
627
- it('MultiSelect mode - checks nonInteractive state for the group item header', () => {
580
+ it("MultiSelect mode - checks nonInteractive state for the group item header", () => {
628
581
  cy.mount(groupHeader);
629
582
  cy.get("udex-select-box-group-header")
630
583
  .then($el => {
@@ -639,7 +592,7 @@ describe("SelectBox", () => {
639
592
  });
640
593
  });
641
594
 
642
- describe('Select Box focus tests', () => {
595
+ describe("Select Box focus tests", () => {
643
596
  it("focus moves to previous interactive element on the page when press Shift+Tab on a tag", () => {
644
597
  cy.mount(multiSelect);
645
598
  cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
@@ -662,10 +615,10 @@ describe("SelectBox", () => {
662
615
  .should("be.focused");
663
616
  });
664
617
 
665
- it("focus moves to trigger when press Tab on a tag", () => {
618
+ it("focus moves to input search when press Tab on a tag", () => {
666
619
  cy.mount(selectAll);
667
620
  cy.get("#select-box").shadow().as("select");
668
- cy.get("@select").find(".udex-text-field__trigger").as("trigger")
621
+ cy.get("@select").find(".udex-text-field__search").as("trigger")
669
622
 
670
623
  cy.get("@trigger").click();
671
624
 
@@ -684,21 +637,19 @@ describe("SelectBox", () => {
684
637
 
685
638
  cy.realPress("Tab");
686
639
 
687
- cy.get("@trigger")
688
- .should("be.focused");
640
+ cy.get("@trigger").should("be.focused");
689
641
  });
690
642
 
691
643
  it("focus moves to previous interactive element on the page when press Shift+Tab on a trigger and no tags", () => {
692
644
  cy.mount(selectAll);
693
645
  cy.get("#select-box").shadow().as("select");
694
- cy.get("@select").find(".udex-text-field__trigger").as("trigger")
646
+ cy.get("@select").find(".udex-text-field__search").as("trigger")
695
647
 
696
648
  cy.get("@trigger").focus();
697
649
 
698
650
  cy.realPress(["Shift", "Tab"]);
699
651
 
700
- cy.get("#previous-focus")
701
- .should("be.focused");
652
+ cy.get("#previous-focus").should("be.focused");
702
653
  });
703
654
 
704
655
  it("focus moves to the first tag when press Shift+Tab on a trigger", () => {
@@ -730,14 +681,13 @@ describe("SelectBox", () => {
730
681
  it("focus moves to next interactive element on the page when press Tab on a trigger", () => {
731
682
  cy.mount(selectAll);
732
683
  cy.get("#select-box").shadow().as("select");
733
- cy.get("@select").find(".udex-text-field__trigger").as("trigger")
684
+ cy.get("@select").find(".udex-text-field__search").as("trigger")
734
685
 
735
686
  cy.get("@trigger").focus();
736
687
 
737
688
  cy.realPress(["Tab"]);
738
689
 
739
- cy.get("#next-focus")
740
- .should("be.focused");
690
+ cy.get("#next-focus").should("be.focused");
741
691
  });
742
692
 
743
693
  it("focus moves to next interactive element on the page when press Tab on a list item", () => {
@@ -757,7 +707,7 @@ describe("SelectBox", () => {
757
707
  .should("be.focused");
758
708
  });
759
709
 
760
- it("focus moves to trigger when I press Shift+Tab on a list item and list has no search", () => {
710
+ it("focus moves to input when press Prev Tab on a list item", () => {
761
711
  cy.mount(selectAll);
762
712
  cy.get("#select-box").shadow().as("select");
763
713
  cy.get("@select").find(".udex-text-field__trigger").as("trigger")
@@ -770,12 +720,31 @@ describe("SelectBox", () => {
770
720
 
771
721
  cy.realPress(["Shift", "Tab"]);
772
722
 
773
- cy.get("@trigger")
774
- .should("be.focused");
723
+ cy.get("@select").find(".udex-text-field__search").should("be.focused");
724
+ });
725
+
726
+ it("focus moves to input and dropdown closes when press Esc on the list items", () => {
727
+ cy.mount(selectAll);
728
+ cy.get("#select-box").shadow().as("select");
729
+ cy.get("@select").find(".udex-text-field__trigger").as("trigger")
730
+
731
+ cy.get("@trigger").click();
732
+
733
+ cy.get("#select-box").shadow()
734
+ .find("udex-list-item").eq(1)
735
+ .click();
736
+
737
+ cy.realPress("Escape");
738
+
739
+ cy.get("@select").find(".udex-text-field__search").should("be.focused");
740
+
741
+ cy.get("@select")
742
+ .find(".udex-select-box__dropdown")
743
+ .should("not.have.attr","open");
775
744
  });
776
745
  });
777
746
 
778
- describe('Select Box Select All header tests',async () => {
747
+ describe("Select Box Select All header tests",async () => {
779
748
  it("render the correct label for the Select All header", () => {
780
749
  cy.mount(selectAll);
781
750
  cy.get("#select-box").as("select");
@@ -813,8 +782,8 @@ describe("SelectBox", () => {
813
782
  });
814
783
  });
815
784
 
816
- describe('Select Box events tests',async () => {
817
- it('emit selection-change when list items clicked', () => {
785
+ describe("Select Box events tests",async () => {
786
+ it("emit selection-change when list items clicked", () => {
818
787
  cy.mount(fullComponent);
819
788
  cy.get("#select-box").then(select => {
820
789
  select.get(0).addEventListener("selection-change", cy.stub().as("selectionchange"));
@@ -831,75 +800,74 @@ describe("SelectBox", () => {
831
800
  .should("have.been.called");
832
801
  });
833
802
 
834
- it('emit change-search when search field typing', () => {
803
+ it("emit open when dropdown list opened", () => {
835
804
  cy.mount(fullComponent);
836
805
  cy.get("#select-box").then(select => {
837
- select.get(0).addEventListener("change-search", cy.stub().as("changesearch"));
806
+ select.get(0).addEventListener("open", cy.stub().as("open"));
838
807
  });
839
808
  cy.get("#select-box").shadow()
840
809
  .find(".udex-text-field__trigger")
841
810
  .click();
842
811
 
843
- cy.get("#select-box").shadow()
844
- .find(".udex-filter-menu__search")
845
- .shadow()
846
- .find(".udex-search__field")
847
- .click();
848
- cy.realType("java");
849
-
850
- cy.get("@changesearch")
851
- .should("have.been.called");
812
+ cy.get("@open").should("have.been.called");
852
813
  });
853
814
 
854
- it("emit reset-search when search reset button is clicked", () => {
815
+ it("emit close when dropdown list closed", () => {
855
816
  cy.mount(fullComponent);
856
817
  cy.get("#select-box").then(select => {
857
- select.get(0).addEventListener("reset-search", cy.stub().as("resetsearch"));
818
+ select.get(0).addEventListener("close", cy.stub().as("close"));
858
819
  });
859
- cy.get("#select-box").shadow().as("select")
820
+ cy.get("#select-box").shadow()
860
821
  .find(".udex-text-field__trigger")
861
822
  .click();
862
-
863
- cy.get("@select")
864
- .find(".udex-filter-menu__search")
865
- .shadow()
866
- .find(".udex-search__field")
823
+ cy.get("#select-box").shadow()
824
+ .find(".udex-text-field__trigger")
867
825
  .click();
868
- cy.realType("java");
869
826
 
870
- cy.get("@select")
871
- .find(".udex-filter-menu__search")
872
- .shadow()
873
- .find("#reset-button")
827
+ cy.get("@close").should("have.been.called");
828
+ });
829
+
830
+ it("emit before-open when dropdown list opened", () => {
831
+ cy.mount(fullComponent);
832
+ cy.get("#select-box").then(select => {
833
+ select.get(0).addEventListener("before-open", cy.stub().as("beforeopen"));
834
+ });
835
+ cy.get("#select-box").shadow()
836
+ .find(".udex-text-field__trigger")
874
837
  .click();
875
838
 
876
- cy.get("@resetsearch")
877
- .should("have.been.called");
839
+ cy.get("@beforeopen").should("have.been.called");
878
840
  });
879
841
 
880
- it('emit submit-search when user presses Enter key in the search', () => {
842
+ it("emit before-close when dropdown list closed", () => {
881
843
  cy.mount(fullComponent);
882
844
  cy.get("#select-box").then(select => {
883
- select.get(0).addEventListener("submit-search", cy.stub().as("submitsearch"));
845
+ select.get(0).addEventListener("before-close", cy.stub().as("beforeclose"));
884
846
  });
885
847
  cy.get("#select-box").shadow()
886
848
  .find(".udex-text-field__trigger")
887
849
  .click();
850
+ cy.get("#select-box").shadow()
851
+ .find(".udex-text-field__trigger")
852
+ .click();
853
+
854
+ cy.get("@beforeclose").should("have.been.called");
855
+ });
888
856
 
857
+ it("emit change-search when search field typing", () => {
858
+ cy.mount(fullComponent);
859
+ cy.get("#select-box").then(select => {
860
+ select.get(0).addEventListener("change-search", cy.stub().as("changesearch"));
861
+ });
889
862
  cy.get("#select-box").shadow()
890
- .find(".udex-filter-menu__search")
891
- .shadow()
892
- .find(".udex-search__field")
863
+ .find(".udex-text-field__search")
893
864
  .click();
894
865
  cy.realType("java");
895
866
 
896
- cy.realPress("Enter");
897
-
898
- cy.get("@submitsearch")
899
- .should("have.been.called");
867
+ cy.get("@changesearch").should("have.been.called");
900
868
  });
901
869
 
902
- it('emit remove when click on decline icon in the tag', () => {
870
+ it("emit remove when click on decline icon in the tag", () => {
903
871
  cy.mount(multiSelect);
904
872
  cy.get("#select-box").then(select => {
905
873
  select.get(0).addEventListener("remove", cy.stub().as("remove"));
@@ -925,7 +893,7 @@ describe("SelectBox", () => {
925
893
  .should("have.been.called");
926
894
  });
927
895
 
928
- it('emit show-more when more button clicked', () => {
896
+ it("emit show-more when more button clicked", () => {
929
897
  cy.mount(multiSelect);
930
898
  cy.get("#select-box").then(select => {
931
899
  select.get(0).addEventListener("show-more", cy.stub().as("showmore"));
@@ -940,8 +908,7 @@ describe("SelectBox", () => {
940
908
  cy.get("@items").eq(1).click();
941
909
  cy.get("@items").eq(2).click();
942
910
  cy.get("@items").eq(3).click();
943
-
944
- cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
911
+ cy.get("body").realClick();
945
912
 
946
913
  cy.get("#select-box").shadow()
947
914
  .find("udex-tag-group").shadow()
@@ -953,7 +920,7 @@ describe("SelectBox", () => {
953
920
  .should("have.been.called");
954
921
  });
955
922
 
956
- it('emit first-icon-click when first icon clicked', () => {
923
+ it("emit first-icon-click when first icon clicked", () => {
957
924
  let eventType;
958
925
  let itemLabel;
959
926
  cy.mount(shortComponent);
@@ -973,7 +940,7 @@ describe("SelectBox", () => {
973
940
  });
974
941
  });
975
942
 
976
- it('emit second-icon-click when second icon clicked', () => {
943
+ it("emit second-icon-click when second icon clicked", () => {
977
944
  let eventType;
978
945
  let itemAdditionalText;
979
946
  cy.mount(shortComponent);