@crowdstrike/glide-core 0.13.0 → 0.14.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 (287) hide show
  1. package/dist/drawer.d.ts +2 -2
  2. package/dist/drawer.js +1 -1
  3. package/dist/drawer.styles.js +3 -3
  4. package/dist/dropdown.js +11 -11
  5. package/dist/dropdown.option.d.ts +1 -1
  6. package/dist/dropdown.option.js +1 -1
  7. package/dist/dropdown.styles.js +11 -16
  8. package/dist/input.styles.js +6 -1
  9. package/dist/styles/variables.css +1 -1
  10. package/dist/textarea.styles.js +6 -0
  11. package/dist/toasts.d.ts +2 -2
  12. package/dist/toasts.toast.d.ts +1 -1
  13. package/dist/toasts.toast.js +1 -1
  14. package/dist/toasts.toast.styles.js +8 -0
  15. package/dist/tree.item.styles.js +2 -2
  16. package/package.json +9 -6
  17. package/dist/accordion.stories.d.ts +0 -6
  18. package/dist/accordion.test.basics.d.ts +0 -1
  19. package/dist/accordion.test.basics.js +0 -28
  20. package/dist/accordion.test.events.d.ts +0 -1
  21. package/dist/accordion.test.events.js +0 -28
  22. package/dist/accordion.test.focus.d.ts +0 -1
  23. package/dist/accordion.test.focus.js +0 -11
  24. package/dist/accordion.test.interactions.d.ts +0 -1
  25. package/dist/accordion.test.interactions.js +0 -75
  26. package/dist/button-group.button.test.basics.d.ts +0 -1
  27. package/dist/button-group.button.test.basics.js +0 -97
  28. package/dist/button-group.button.test.events.d.ts +0 -1
  29. package/dist/button-group.button.test.events.js +0 -15
  30. package/dist/button-group.button.test.focus.d.ts +0 -1
  31. package/dist/button-group.button.test.focus.js +0 -13
  32. package/dist/button-group.button.test.interactions.d.ts +0 -1
  33. package/dist/button-group.button.test.interactions.js +0 -42
  34. package/dist/button-group.stories.d.ts +0 -7
  35. package/dist/button-group.test.basics.d.ts +0 -1
  36. package/dist/button-group.test.basics.js +0 -148
  37. package/dist/button-group.test.events.d.ts +0 -1
  38. package/dist/button-group.test.events.js +0 -241
  39. package/dist/button-group.test.focus.d.ts +0 -1
  40. package/dist/button-group.test.focus.js +0 -39
  41. package/dist/button-group.test.interactions.d.ts +0 -1
  42. package/dist/button-group.test.interactions.js +0 -91
  43. package/dist/button.stories.d.ts +0 -7
  44. package/dist/button.test.basics.d.ts +0 -1
  45. package/dist/button.test.basics.js +0 -69
  46. package/dist/button.test.events.d.ts +0 -1
  47. package/dist/button.test.events.js +0 -102
  48. package/dist/checkbox-group.stories.d.ts +0 -6
  49. package/dist/checkbox-group.test.basics.d.ts +0 -1
  50. package/dist/checkbox-group.test.basics.js +0 -116
  51. package/dist/checkbox-group.test.events.d.ts +0 -1
  52. package/dist/checkbox-group.test.events.js +0 -111
  53. package/dist/checkbox-group.test.focus.d.ts +0 -1
  54. package/dist/checkbox-group.test.focus.js +0 -70
  55. package/dist/checkbox-group.test.form.d.ts +0 -1
  56. package/dist/checkbox-group.test.form.js +0 -131
  57. package/dist/checkbox-group.test.interactions.d.ts +0 -1
  58. package/dist/checkbox-group.test.interactions.js +0 -82
  59. package/dist/checkbox-group.test.validity.d.ts +0 -1
  60. package/dist/checkbox-group.test.validity.js +0 -145
  61. package/dist/checkbox.stories.d.ts +0 -5
  62. package/dist/checkbox.test.basics.d.ts +0 -1
  63. package/dist/checkbox.test.basics.js +0 -90
  64. package/dist/checkbox.test.events.d.ts +0 -1
  65. package/dist/checkbox.test.events.js +0 -105
  66. package/dist/checkbox.test.focus.d.ts +0 -1
  67. package/dist/checkbox.test.focus.js +0 -51
  68. package/dist/checkbox.test.form.d.ts +0 -1
  69. package/dist/checkbox.test.form.js +0 -133
  70. package/dist/checkbox.test.interactions.d.ts +0 -1
  71. package/dist/checkbox.test.interactions.js +0 -131
  72. package/dist/checkbox.test.validity.d.ts +0 -1
  73. package/dist/checkbox.test.validity.js +0 -128
  74. package/dist/drawer.stories.d.ts +0 -6
  75. package/dist/drawer.test.accessibility.d.ts +0 -1
  76. package/dist/drawer.test.accessibility.js +0 -22
  77. package/dist/drawer.test.basics.d.ts +0 -1
  78. package/dist/drawer.test.basics.js +0 -44
  79. package/dist/drawer.test.closing.d.ts +0 -1
  80. package/dist/drawer.test.closing.js +0 -40
  81. package/dist/drawer.test.events.d.ts +0 -1
  82. package/dist/drawer.test.events.js +0 -42
  83. package/dist/drawer.test.methods.d.ts +0 -1
  84. package/dist/drawer.test.methods.js +0 -35
  85. package/dist/dropdown.option.test.basics.d.ts +0 -1
  86. package/dist/dropdown.option.test.basics.js +0 -34
  87. package/dist/dropdown.option.test.basics.multiple.d.ts +0 -1
  88. package/dist/dropdown.option.test.basics.multiple.js +0 -36
  89. package/dist/dropdown.option.test.basics.single.d.ts +0 -1
  90. package/dist/dropdown.option.test.basics.single.js +0 -29
  91. package/dist/dropdown.option.test.events.d.ts +0 -1
  92. package/dist/dropdown.option.test.events.js +0 -36
  93. package/dist/dropdown.option.test.focus.d.ts +0 -1
  94. package/dist/dropdown.option.test.focus.js +0 -11
  95. package/dist/dropdown.option.test.interactions.multiple.d.ts +0 -1
  96. package/dist/dropdown.option.test.interactions.multiple.js +0 -42
  97. package/dist/dropdown.option.test.interactions.single.d.ts +0 -1
  98. package/dist/dropdown.option.test.interactions.single.js +0 -76
  99. package/dist/dropdown.stories.d.ts +0 -8
  100. package/dist/dropdown.test.basics.d.ts +0 -1
  101. package/dist/dropdown.test.basics.filterable.d.ts +0 -1
  102. package/dist/dropdown.test.basics.filterable.js +0 -108
  103. package/dist/dropdown.test.basics.js +0 -181
  104. package/dist/dropdown.test.basics.multiple.d.ts +0 -1
  105. package/dist/dropdown.test.basics.multiple.js +0 -259
  106. package/dist/dropdown.test.basics.single.d.ts +0 -1
  107. package/dist/dropdown.test.basics.single.js +0 -122
  108. package/dist/dropdown.test.events.d.ts +0 -1
  109. package/dist/dropdown.test.events.filterable.d.ts +0 -1
  110. package/dist/dropdown.test.events.filterable.js +0 -31
  111. package/dist/dropdown.test.events.js +0 -251
  112. package/dist/dropdown.test.events.multiple.d.ts +0 -1
  113. package/dist/dropdown.test.events.multiple.js +0 -446
  114. package/dist/dropdown.test.events.single.d.ts +0 -1
  115. package/dist/dropdown.test.events.single.js +0 -343
  116. package/dist/dropdown.test.focus.d.ts +0 -1
  117. package/dist/dropdown.test.focus.filterable.d.ts +0 -1
  118. package/dist/dropdown.test.focus.filterable.js +0 -140
  119. package/dist/dropdown.test.focus.js +0 -107
  120. package/dist/dropdown.test.focus.multiple.d.ts +0 -1
  121. package/dist/dropdown.test.focus.multiple.js +0 -170
  122. package/dist/dropdown.test.focus.single.d.ts +0 -1
  123. package/dist/dropdown.test.focus.single.js +0 -42
  124. package/dist/dropdown.test.form.d.ts +0 -1
  125. package/dist/dropdown.test.form.js +0 -74
  126. package/dist/dropdown.test.form.multiple.d.ts +0 -1
  127. package/dist/dropdown.test.form.multiple.js +0 -151
  128. package/dist/dropdown.test.form.single.d.ts +0 -1
  129. package/dist/dropdown.test.form.single.js +0 -129
  130. package/dist/dropdown.test.interactions.d.ts +0 -1
  131. package/dist/dropdown.test.interactions.filterable.d.ts +0 -1
  132. package/dist/dropdown.test.interactions.filterable.js +0 -805
  133. package/dist/dropdown.test.interactions.js +0 -696
  134. package/dist/dropdown.test.interactions.multiple.d.ts +0 -1
  135. package/dist/dropdown.test.interactions.multiple.js +0 -1026
  136. package/dist/dropdown.test.interactions.single.d.ts +0 -1
  137. package/dist/dropdown.test.interactions.single.js +0 -569
  138. package/dist/dropdown.test.validity.d.ts +0 -1
  139. package/dist/dropdown.test.validity.js +0 -181
  140. package/dist/form-controls-layout.stories.d.ts +0 -10
  141. package/dist/form-controls-layout.test.basics.d.ts +0 -2
  142. package/dist/form-controls-layout.test.basics.js +0 -75
  143. package/dist/form-controls-layout.test.interactions.d.ts +0 -2
  144. package/dist/form-controls-layout.test.interactions.js +0 -26
  145. package/dist/icon-button.stories.d.ts +0 -6
  146. package/dist/icon-button.test.basics.d.ts +0 -1
  147. package/dist/icon-button.test.basics.js +0 -43
  148. package/dist/icon-button.test.focus.d.ts +0 -1
  149. package/dist/icon-button.test.focus.js +0 -13
  150. package/dist/input.stories.d.ts +0 -8
  151. package/dist/input.test.basics.d.ts +0 -1
  152. package/dist/input.test.basics.js +0 -138
  153. package/dist/input.test.events.d.ts +0 -1
  154. package/dist/input.test.events.js +0 -98
  155. package/dist/input.test.focus.d.ts +0 -1
  156. package/dist/input.test.focus.js +0 -58
  157. package/dist/input.test.form.d.ts +0 -1
  158. package/dist/input.test.form.js +0 -74
  159. package/dist/input.test.validity.d.ts +0 -1
  160. package/dist/input.test.validity.js +0 -258
  161. package/dist/label.test.basics.d.ts +0 -1
  162. package/dist/label.test.basics.js +0 -136
  163. package/dist/menu.button.test.basics.d.ts +0 -1
  164. package/dist/menu.button.test.basics.js +0 -43
  165. package/dist/menu.link.test.basics.d.ts +0 -1
  166. package/dist/menu.link.test.basics.js +0 -47
  167. package/dist/menu.options.test.basics.d.ts +0 -2
  168. package/dist/menu.options.test.basics.js +0 -44
  169. package/dist/menu.options.test.events.d.ts +0 -1
  170. package/dist/menu.options.test.events.js +0 -19
  171. package/dist/menu.stories.d.ts +0 -11
  172. package/dist/menu.test.basics.d.ts +0 -1
  173. package/dist/menu.test.basics.js +0 -178
  174. package/dist/menu.test.events.d.ts +0 -3
  175. package/dist/menu.test.events.js +0 -125
  176. package/dist/menu.test.focus.d.ts +0 -2
  177. package/dist/menu.test.focus.js +0 -102
  178. package/dist/menu.test.interactions.d.ts +0 -3
  179. package/dist/menu.test.interactions.js +0 -1069
  180. package/dist/modal.icon-button.test.basics.d.ts +0 -1
  181. package/dist/modal.icon-button.test.basics.js +0 -46
  182. package/dist/modal.stories.d.ts +0 -13
  183. package/dist/modal.tertiary-icon.test.basics.d.ts +0 -1
  184. package/dist/modal.tertiary-icon.test.basics.js +0 -60
  185. package/dist/modal.test.accessibility.d.ts +0 -1
  186. package/dist/modal.test.accessibility.js +0 -38
  187. package/dist/modal.test.basics.d.ts +0 -3
  188. package/dist/modal.test.basics.js +0 -204
  189. package/dist/modal.test.close.d.ts +0 -1
  190. package/dist/modal.test.close.js +0 -35
  191. package/dist/modal.test.events.d.ts +0 -1
  192. package/dist/modal.test.events.js +0 -99
  193. package/dist/modal.test.lock-scroll.d.ts +0 -1
  194. package/dist/modal.test.lock-scroll.js +0 -67
  195. package/dist/modal.test.methods.d.ts +0 -1
  196. package/dist/modal.test.methods.js +0 -20
  197. package/dist/modal.test.scrollbars.d.ts +0 -1
  198. package/dist/modal.test.scrollbars.js +0 -18
  199. package/dist/radio-group.stories.d.ts +0 -6
  200. package/dist/radio-group.test.basics.d.ts +0 -2
  201. package/dist/radio-group.test.basics.js +0 -324
  202. package/dist/radio-group.test.events.d.ts +0 -2
  203. package/dist/radio-group.test.events.js +0 -278
  204. package/dist/radio-group.test.focus.d.ts +0 -2
  205. package/dist/radio-group.test.focus.js +0 -95
  206. package/dist/radio-group.test.form.d.ts +0 -1
  207. package/dist/radio-group.test.form.js +0 -124
  208. package/dist/radio-group.test.validity.d.ts +0 -1
  209. package/dist/radio-group.test.validity.js +0 -311
  210. package/dist/split-button.primary-button.test.basics.d.ts +0 -1
  211. package/dist/split-button.primary-button.test.basics.js +0 -31
  212. package/dist/split-button.primary-button.test.focus.d.ts +0 -1
  213. package/dist/split-button.primary-button.test.focus.js +0 -14
  214. package/dist/split-button.primary-link.test.basics.d.ts +0 -1
  215. package/dist/split-button.primary-link.test.basics.js +0 -30
  216. package/dist/split-button.primary-link.test.focus.d.ts +0 -1
  217. package/dist/split-button.primary-link.test.focus.js +0 -15
  218. package/dist/split-button.secondary-button.test.basics.d.ts +0 -1
  219. package/dist/split-button.secondary-button.test.basics.js +0 -58
  220. package/dist/split-button.secondary-button.test.focus.d.ts +0 -1
  221. package/dist/split-button.secondary-button.test.focus.js +0 -14
  222. package/dist/split-button.secondary-button.test.interactions.d.ts +0 -2
  223. package/dist/split-button.secondary-button.test.interactions.js +0 -30
  224. package/dist/split-button.stories.d.ts +0 -13
  225. package/dist/split-button.test.basics.d.ts +0 -2
  226. package/dist/split-button.test.basics.js +0 -87
  227. package/dist/split-button.test.interactions.d.ts +0 -4
  228. package/dist/split-button.test.interactions.js +0 -51
  229. package/dist/tab.group.test.basics.d.ts +0 -3
  230. package/dist/tab.group.test.basics.js +0 -234
  231. package/dist/tab.group.test.interactions.d.ts +0 -3
  232. package/dist/tab.group.test.interactions.js +0 -434
  233. package/dist/tab.test.basics.d.ts +0 -1
  234. package/dist/tab.test.basics.js +0 -50
  235. package/dist/tabs.stories.d.ts +0 -8
  236. package/dist/tag.stories.d.ts +0 -7
  237. package/dist/tag.test.basics.d.ts +0 -1
  238. package/dist/tag.test.basics.js +0 -28
  239. package/dist/tag.test.events.d.ts +0 -1
  240. package/dist/tag.test.events.js +0 -93
  241. package/dist/tag.test.focus.d.ts +0 -1
  242. package/dist/tag.test.focus.js +0 -10
  243. package/dist/tag.test.interactions.d.ts +0 -1
  244. package/dist/tag.test.interactions.js +0 -36
  245. package/dist/textarea.stories.d.ts +0 -5
  246. package/dist/textarea.test.basics.d.ts +0 -1
  247. package/dist/textarea.test.basics.js +0 -177
  248. package/dist/textarea.test.events.d.ts +0 -1
  249. package/dist/textarea.test.events.js +0 -106
  250. package/dist/textarea.test.form.d.ts +0 -1
  251. package/dist/textarea.test.form.js +0 -71
  252. package/dist/textarea.test.validity.d.ts +0 -1
  253. package/dist/textarea.test.validity.js +0 -204
  254. package/dist/toasts.stories.d.ts +0 -7
  255. package/dist/toasts.test.basics.d.ts +0 -1
  256. package/dist/toasts.test.basics.js +0 -115
  257. package/dist/toasts.toast.test.basics.d.ts +0 -1
  258. package/dist/toasts.toast.test.basics.js +0 -139
  259. package/dist/toggle.stories.d.ts +0 -4
  260. package/dist/toggle.test.basics.d.ts +0 -1
  261. package/dist/toggle.test.basics.js +0 -69
  262. package/dist/toggle.test.events.d.ts +0 -1
  263. package/dist/toggle.test.events.js +0 -30
  264. package/dist/toggle.test.focus.d.ts +0 -1
  265. package/dist/toggle.test.focus.js +0 -9
  266. package/dist/toggle.test.interactions.d.ts +0 -1
  267. package/dist/toggle.test.interactions.js +0 -81
  268. package/dist/tooltip.stories.d.ts +0 -7
  269. package/dist/tooltip.test.basics.d.ts +0 -1
  270. package/dist/tooltip.test.basics.js +0 -100
  271. package/dist/tooltip.test.interactions.d.ts +0 -1
  272. package/dist/tooltip.test.interactions.js +0 -203
  273. package/dist/tree.item.icon-button.test.basics.d.ts +0 -1
  274. package/dist/tree.item.icon-button.test.basics.js +0 -22
  275. package/dist/tree.item.menu.test.basics.d.ts +0 -1
  276. package/dist/tree.item.menu.test.basics.js +0 -86
  277. package/dist/tree.item.test.basics.d.ts +0 -2
  278. package/dist/tree.item.test.basics.js +0 -138
  279. package/dist/tree.stories.d.ts +0 -9
  280. package/dist/tree.test.aria.d.ts +0 -1
  281. package/dist/tree.test.aria.js +0 -86
  282. package/dist/tree.test.basics.d.ts +0 -3
  283. package/dist/tree.test.basics.js +0 -130
  284. package/dist/tree.test.events.d.ts +0 -2
  285. package/dist/tree.test.events.js +0 -19
  286. package/dist/tree.test.focus.d.ts +0 -1
  287. package/dist/tree.test.focus.js +0 -383
@@ -1,259 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './dropdown.option.js';
3
- import { aTimeout, expect, fixture, html } from '@open-wc/testing';
4
- import GlideCoreDropdown from './dropdown.js';
5
- import GlideCoreTag from './tag.js';
6
- GlideCoreDropdown.shadowRootOptions.mode = 'open';
7
- it('is accessible', async () => {
8
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
9
- <glide-core-dropdown-option label="One"></glide-core-dropdown-option>
10
-
11
- <glide-core-dropdown-option
12
- label="Two"
13
- selected
14
- ></glide-core-dropdown-option>
15
- </glide-core-dropdown>`);
16
- await expect(component).to.be.accessible();
17
- });
18
- it('sets `value` to that of the initially selected options', async () => {
19
- const component = await fixture(html `<glide-core-dropdown open multiple>
20
- <glide-core-dropdown-option
21
- label="One"
22
- value="one"
23
- ></glide-core-dropdown-option>
24
-
25
- <glide-core-dropdown-option
26
- label="Two"
27
- value="two"
28
- selected
29
- ></glide-core-dropdown-option>
30
-
31
- <glide-core-dropdown-option
32
- label="Three"
33
- value="three"
34
- selected
35
- ></glide-core-dropdown-option>
36
- </glide-core-dropdown>`);
37
- expect(component.value).to.deep.equal(['two', 'three']);
38
- });
39
- it('has selected option labels when options are initially selected', async () => {
40
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
41
- <glide-core-dropdown-option
42
- label="One"
43
- selected
44
- ></glide-core-dropdown-option>
45
-
46
- <glide-core-dropdown-option
47
- label="Two"
48
- selected
49
- ></glide-core-dropdown-option>
50
- </glide-core-dropdown>`);
51
- const labels = component.shadowRoot?.querySelectorAll('[data-test="selected-option-label"]');
52
- expect(labels?.length).to.equal(2);
53
- expect(labels?.[0]?.textContent?.trim()).to.equal('One,');
54
- expect(labels?.[1]?.textContent?.trim()).to.equal('Two,');
55
- });
56
- it('has a tag when an option is initially selected', async () => {
57
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
58
- <glide-core-dropdown-option
59
- label="One"
60
- selected
61
- ></glide-core-dropdown-option>
62
-
63
- <glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
64
- </glide-core-dropdown>`);
65
- const tag = component.shadowRoot?.querySelector('[data-test="tag"]');
66
- expect(tag?.checkVisibility()).to.be.true;
67
- expect(tag?.label).to.equal('One');
68
- });
69
- it('shows Select All', async () => {
70
- const component = await fixture(html `<glide-core-dropdown
71
- label="Label"
72
- placeholder="Placeholder"
73
- multiple
74
- select-all
75
- open
76
- >
77
- <glide-core-dropdown-option
78
- label="One"
79
- selected
80
- ></glide-core-dropdown-option>
81
-
82
- <glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
83
- </glide-core-dropdown>`);
84
- // Wait for it to open.
85
- await aTimeout(0);
86
- const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
87
- expect(selectAll?.checkVisibility()).to.be.true;
88
- });
89
- it('sets Select All as selected when all options are initially selected', async () => {
90
- const component = await fixture(html `<glide-core-dropdown
91
- label="Label"
92
- placeholder="Placeholder"
93
- multiple
94
- select-all
95
- >
96
- <glide-core-dropdown-option
97
- label="One"
98
- selected
99
- ></glide-core-dropdown-option>
100
-
101
- <glide-core-dropdown-option
102
- label="Two"
103
- selected
104
- ></glide-core-dropdown-option>
105
- </glide-core-dropdown>`);
106
- const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
107
- expect(selectAll?.selected).to.be.true;
108
- });
109
- it('sets Select All as deselected when no options are initially selected', async () => {
110
- const component = await fixture(html `<glide-core-dropdown
111
- label="Label"
112
- placeholder="Placeholder"
113
- multiple
114
- select-all
115
- >
116
- <glide-core-dropdown-option label="One"></glide-core-dropdown-option>
117
- <glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
118
- </glide-core-dropdown>`);
119
- const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
120
- expect(selectAll?.selected).to.be.false;
121
- });
122
- it('sets Select All as indeterminate when not all options are initially selected', async () => {
123
- const component = await fixture(html `<glide-core-dropdown
124
- label="Label"
125
- placeholder="Placeholder"
126
- multiple
127
- select-all
128
- >
129
- <glide-core-dropdown-option
130
- label="One"
131
- selected
132
- ></glide-core-dropdown-option>
133
-
134
- <glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
135
- </glide-core-dropdown>`);
136
- const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
137
- expect(selectAll?.privateIndeterminate).to.be.true;
138
- });
139
- it('does not set Select All as indeterminate when no options are initially selected', async () => {
140
- const component = await fixture(html `<glide-core-dropdown
141
- label="Label"
142
- placeholder="Placeholder"
143
- multiple
144
- select-all
145
- >
146
- <glide-core-dropdown-option label="One"></glide-core-dropdown-option>
147
- <glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
148
- </glide-core-dropdown>`);
149
- const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
150
- expect(selectAll?.privateIndeterminate).to.be.false;
151
- });
152
- it('does not set Select All as indeterminate when all options are initially selected', async () => {
153
- const component = await fixture(html `<glide-core-dropdown
154
- label="Label"
155
- placeholder="Placeholder"
156
- multiple
157
- select-all
158
- >
159
- <glide-core-dropdown-option
160
- label="One"
161
- selected
162
- ></glide-core-dropdown-option>
163
-
164
- <glide-core-dropdown-option
165
- label="Two"
166
- selected
167
- ></glide-core-dropdown-option>
168
- </glide-core-dropdown>`);
169
- const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
170
- expect(selectAll?.privateIndeterminate).to.be.false;
171
- });
172
- it('sets its internal label to `placeholder` when no option is initially selected', async () => {
173
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
174
- <glide-core-dropdown-option label="One"></glide-core-dropdown-option>
175
- <glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
176
- </glide-core-dropdown>`);
177
- const label = component.shadowRoot?.querySelector('[data-test="internal-label"]');
178
- expect(label?.textContent?.trim()).to.equal('Placeholder');
179
- });
180
- it('has no internal label when an option is initially selected', async () => {
181
- const component = await fixture(html `<glide-core-dropdown
182
- label="Label"
183
- placeholder="Placeholder"
184
- open
185
- multiple
186
- >
187
- <glide-core-dropdown-option
188
- label="One"
189
- selected
190
- ></glide-core-dropdown-option>
191
-
192
- <glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
193
- </glide-core-dropdown>`);
194
- const label = component.shadowRoot?.querySelector('[data-test="internal-label"]');
195
- expect(label?.checkVisibility()).to.not.be.ok;
196
- });
197
- it('has a "multiselect" icon for each selected option with a value', async () => {
198
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
199
- <div slot="icon:one">✓</div>
200
- <div slot="icon:two">✓</div>
201
- <div slot="icon:three">✓</div>
202
-
203
- <glide-core-dropdown-option
204
- label="One"
205
- value="one"
206
- selected
207
- ></glide-core-dropdown-option>
208
-
209
- <glide-core-dropdown-option
210
- label="Two"
211
- value="two"
212
- selected
213
- ></glide-core-dropdown-option>
214
-
215
- <glide-core-dropdown-option
216
- label="Three"
217
- selected
218
- ></glide-core-dropdown-option>
219
- </glide-core-dropdown>`);
220
- const icons = component.shadowRoot?.querySelectorAll('[data-test="multiselect-icon-slot"]');
221
- expect(icons?.length).to.equal(2);
222
- });
223
- it('has no "multiselect" icons when no options are selected', async () => {
224
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
225
- <div slot="icon:one">✓</div>
226
- <div slot="icon:two">✓</div>
227
-
228
- <glide-core-dropdown-option
229
- label="One"
230
- value="one"
231
- ></glide-core-dropdown-option>
232
-
233
- <glide-core-dropdown-option
234
- label="Two"
235
- value="two"
236
- ></glide-core-dropdown-option>
237
- </glide-core-dropdown>`);
238
- const icons = component.shadowRoot?.querySelectorAll('[data-test="multiselect-icon-slot"]');
239
- expect(icons?.length).to.equal(0);
240
- });
241
- it('has no "single-select" icon', async () => {
242
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
243
- <div slot="icon:one">✓</div>
244
- <div slot="icon:two">✓</div>
245
-
246
- <glide-core-dropdown-option
247
- label="One"
248
- value="one"
249
- selected
250
- ></glide-core-dropdown-option>
251
-
252
- <glide-core-dropdown-option
253
- label="Two"
254
- value="two"
255
- ></glide-core-dropdown-option>
256
- </glide-core-dropdown>`);
257
- const iconSlot = component.shadowRoot?.querySelector('[data-test="single-select-icon-slot"]');
258
- expect(iconSlot).to.be.null;
259
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,122 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import { expect, fixture, html } from '@open-wc/testing';
3
- import GlideCoreDropdown from './dropdown.js';
4
- GlideCoreDropdown.shadowRootOptions.mode = 'open';
5
- it('is accessible ', async () => {
6
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
7
- <glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
8
- </glide-core-dropdown>`);
9
- await expect(component).to.be.accessible();
10
- });
11
- it('has a selected option label when an option is initially selected', async () => {
12
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
13
- <glide-core-dropdown-option
14
- label="One"
15
- selected
16
- ></glide-core-dropdown-option>
17
- </glide-core-dropdown>`);
18
- const labels = component.shadowRoot?.querySelectorAll('[data-test="selected-option-label"]');
19
- expect(labels?.length).to.equal(1);
20
- expect(labels?.[0]?.textContent?.trim()).to.equal('One,');
21
- });
22
- it('sets its internal `label` to the last initially selected option', async () => {
23
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
24
- <glide-core-dropdown-option
25
- label="One"
26
- selected
27
- ></glide-core-dropdown-option>
28
-
29
- <glide-core-dropdown-option
30
- label="Two"
31
- selected
32
- ></glide-core-dropdown-option>
33
- </glide-core-dropdown>`);
34
- const label = component.shadowRoot?.querySelector('[data-test="internal-label"]');
35
- expect(label?.textContent?.trim()).to.equal('Two');
36
- });
37
- it('sets `value` to that of the last initially selected option', async () => {
38
- const component = await fixture(html `<glide-core-dropdown open>
39
- <glide-core-dropdown-option
40
- label="One"
41
- value="one"
42
- ></glide-core-dropdown-option>
43
-
44
- <glide-core-dropdown-option
45
- label="Two"
46
- value="two"
47
- selected
48
- ></glide-core-dropdown-option>
49
-
50
- <glide-core-dropdown-option
51
- label="Three"
52
- value="three"
53
- selected
54
- ></glide-core-dropdown-option>
55
- </glide-core-dropdown>`);
56
- expect(component.value).to.deep.equal(['three']);
57
- });
58
- it('hides Select All', async () => {
59
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
60
- <glide-core-dropdown-option
61
- label="One"
62
- value="one"
63
- selected
64
- ></glide-core-dropdown-option>
65
-
66
- <glide-core-dropdown-option
67
- label="Two"
68
- value="two"
69
- ></glide-core-dropdown-option>
70
- </glide-core-dropdown>`);
71
- const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
72
- expect(selectAll?.checkVisibility()).to.not.be.ok;
73
- });
74
- it('has an icon when an option with a value is selected', async () => {
75
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
76
- <div slot="icon:one">✓</div>
77
- <div slot="icon:two">✓</div>
78
-
79
- <glide-core-dropdown-option label="One" value="one" selected>
80
- <div slot="icon">✓</div>
81
- </glide-core-dropdown-option>
82
-
83
- <glide-core-dropdown-option label="Two" value="two">
84
- <div slot="icon">✓</div>
85
- </glide-core-dropdown-option>
86
- </glide-core-dropdown>`);
87
- const iconSlot = component.shadowRoot?.querySelector('[data-test="single-select-icon-slot"]');
88
- expect(iconSlot instanceof HTMLSlotElement).to.be.true;
89
- expect(iconSlot?.assignedElements().at(0)?.slot).to.equal('icon:one');
90
- });
91
- it('has no icon when an option without a value is selected', async () => {
92
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
93
- <div slot="icon:one">✓</div>
94
- <div slot="icon:two">✓</div>
95
-
96
- <glide-core-dropdown-option label="One" selected>
97
- <div slot="icon">✓</div>
98
- </glide-core-dropdown-option>
99
-
100
- <glide-core-dropdown-option label="Two" value="two">
101
- <div slot="icon">✓</div>
102
- </glide-core-dropdown-option>
103
- </glide-core-dropdown>`);
104
- const iconSlot = component.shadowRoot?.querySelector('[data-test="single-select-icon-slot"]');
105
- expect(iconSlot).to.be.null;
106
- });
107
- it('has no icon when no option is selected', async () => {
108
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
109
- <div slot="icon:one">✓</div>
110
- <div slot="icon:two">✓</div>
111
-
112
- <glide-core-dropdown-option label="One" value="one">
113
- <div slot="icon">✓</div>
114
- </glide-core-dropdown-option>
115
-
116
- <glide-core-dropdown-option label="Two" value="two">
117
- <div slot="icon">✓</div>
118
- </glide-core-dropdown-option>
119
- </glide-core-dropdown>`);
120
- const iconSlot = component.shadowRoot?.querySelector('[data-test="single-select-icon-slot"]');
121
- expect(iconSlot).to.be.null;
122
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,31 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import * as sinon from 'sinon';
3
- import { expect, fixture, html } from '@open-wc/testing';
4
- import { sendKeys } from '@web/test-runner-commands';
5
- import GlideCoreDropdown from './dropdown.js';
6
- import GlideCoreDropdownOption from './dropdown.option.js';
7
- GlideCoreDropdown.shadowRootOptions.mode = 'open';
8
- GlideCoreDropdownOption.shadowRootOptions.mode = 'open';
9
- const defaultSlot = html `
10
- <glide-core-dropdown-option label="One"></glide-core-dropdown-option>
11
- <glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
12
- <glide-core-dropdown-option label="Three"></glide-core-dropdown-option>
13
- <glide-core-dropdown-option label="Four"></glide-core-dropdown-option>
14
- <glide-core-dropdown-option label="Five"></glide-core-dropdown-option>
15
- <glide-core-dropdown-option label="Six"></glide-core-dropdown-option>
16
- <glide-core-dropdown-option label="Seven"></glide-core-dropdown-option>
17
- <glide-core-dropdown-option label="Eight"></glide-core-dropdown-option>
18
- <glide-core-dropdown-option label="Nine"></glide-core-dropdown-option>
19
- <glide-core-dropdown-option label="Ten"></glide-core-dropdown-option>
20
- <glide-core-dropdown-option label="Eleven"></glide-core-dropdown-option>
21
- `;
22
- it('does not dispatch "input" events on input', async () => {
23
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
24
- ${defaultSlot}
25
- </glide-core-dropdown>`);
26
- const spy = sinon.spy();
27
- component.addEventListener('input', spy);
28
- component.focus();
29
- await sendKeys({ type: 'one' });
30
- expect(spy.callCount).to.equal(0);
31
- });
@@ -1,251 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import * as sinon from 'sinon';
3
- import { aTimeout, assert, expect, fixture, html, oneEvent, } from '@open-wc/testing';
4
- import { sendKeys } from '@web/test-runner-commands';
5
- import GlideCoreDropdown from './dropdown.js';
6
- import GlideCoreDropdownOption from './dropdown.option.js';
7
- GlideCoreDropdown.shadowRootOptions.mode = 'open';
8
- GlideCoreDropdownOption.shadowRootOptions.mode = 'open';
9
- // `await aTimeout(0)` is used throughout. Using `oneEvent` instead and
10
- // expecting it to throw would work. But it wouldn't throw until its
11
- // timeout, which would make for a slow test. Its timeout can likely be
12
- // configured. But waiting a turn of the event loop, when which the event
13
- // will have been dispatched, gets the job done as well.
14
- it('dispatches an "edit" event on click', async () => {
15
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
16
- <glide-core-dropdown-option
17
- label="Label"
18
- editable
19
- ></glide-core-dropdown-option>
20
- </glide-core-dropdown>`);
21
- setTimeout(() => {
22
- const button = component
23
- .querySelector('glide-core-dropdown-option')
24
- ?.shadowRoot?.querySelector('[data-test="edit-button"]');
25
- button?.dispatchEvent(new MouseEvent('mouseover'));
26
- button?.click();
27
- });
28
- const option = component.querySelector('glide-core-dropdown-option');
29
- assert(option);
30
- const event = await oneEvent(option, 'edit');
31
- expect(event instanceof Event).to.be.true;
32
- expect(event.bubbles).to.be.true;
33
- expect(event.composed).to.be.true;
34
- expect(event.target).to.equal(option);
35
- });
36
- it('dispatches an "edit" event on Enter', async () => {
37
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
38
- <glide-core-dropdown-option
39
- label="Label"
40
- editable
41
- ></glide-core-dropdown-option>
42
- </glide-core-dropdown>`);
43
- component
44
- .querySelector('glide-core-dropdown-option')
45
- ?.shadowRoot?.querySelector('[data-test="edit-button"]')
46
- ?.dispatchEvent(new MouseEvent('mouseover'));
47
- component.focus();
48
- await sendKeys({ press: 'ArrowDown' });
49
- sendKeys({ press: 'Enter' });
50
- const option = component.querySelector('glide-core-dropdown-option');
51
- assert(option);
52
- const event = await oneEvent(option, 'edit');
53
- expect(event instanceof Event).to.be.true;
54
- expect(event.bubbles).to.be.true;
55
- expect(event.composed).to.be.true;
56
- expect(event.target).to.equal(option);
57
- });
58
- it('dispatches an "edit" event on Space', async () => {
59
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
60
- <glide-core-dropdown-option
61
- label="Label"
62
- editable
63
- ></glide-core-dropdown-option>
64
- </glide-core-dropdown>`);
65
- component
66
- .querySelector('glide-core-dropdown-option')
67
- ?.shadowRoot?.querySelector('[data-test="edit-button"]')
68
- ?.dispatchEvent(new MouseEvent('mouseover'));
69
- component.focus();
70
- await sendKeys({ press: 'ArrowDown' });
71
- sendKeys({ press: ' ' });
72
- const option = component.querySelector('glide-core-dropdown-option');
73
- assert(option);
74
- const event = await oneEvent(option, 'edit');
75
- expect(event instanceof Event).to.be.true;
76
- expect(event.bubbles).to.be.true;
77
- expect(event.composed).to.be.true;
78
- expect(event.target).to.equal(option);
79
- });
80
- it('dispatches an "add" event on click', async () => {
81
- const component = await fixture(html `<glide-core-dropdown
82
- add-button-label="Add"
83
- label="Label"
84
- placeholder="Placeholder"
85
- open
86
- >
87
- <glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
88
- </glide-core-dropdown>`);
89
- // Wait for it to open.
90
- await aTimeout(0);
91
- setTimeout(async () => {
92
- const button = component.shadowRoot?.querySelector('[data-test="add-button"]');
93
- button?.dispatchEvent(new MouseEvent('mouseover'));
94
- button?.click();
95
- });
96
- const event = await oneEvent(component, 'add');
97
- expect(event instanceof Event).to.be.true;
98
- expect(event.bubbles).to.be.true;
99
- expect(event.composed).to.be.true;
100
- });
101
- it('dispatches an "add" event on Enter', async () => {
102
- const component = await fixture(html `<glide-core-dropdown
103
- add-button-label="Add"
104
- label="Label"
105
- placeholder="Placeholder"
106
- open
107
- >
108
- <glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
109
- </glide-core-dropdown>`);
110
- // Wait for it to open.
111
- await aTimeout(0);
112
- component.shadowRoot
113
- ?.querySelector('[data-test="add-button"]')
114
- ?.focus();
115
- sendKeys({ press: 'Enter' });
116
- const event = await oneEvent(component, 'add');
117
- expect(event instanceof Event).to.be.true;
118
- expect(event.bubbles).to.be.true;
119
- expect(event.composed).to.be.true;
120
- });
121
- it('dispatches an "add" event on Space', async () => {
122
- const component = await fixture(html `<glide-core-dropdown
123
- add-button-label="Add"
124
- label="Label"
125
- placeholder="Placeholder"
126
- open
127
- >
128
- <glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
129
- </glide-core-dropdown>`);
130
- // Wait for it to open.
131
- await aTimeout(0);
132
- component.shadowRoot
133
- ?.querySelector('[data-test="add-button"]')
134
- ?.focus();
135
- sendKeys({ press: ' ' });
136
- const event = await oneEvent(component, 'add');
137
- expect(event instanceof Event).to.be.true;
138
- expect(event.bubbles).to.be.true;
139
- expect(event.composed).to.be.true;
140
- });
141
- it('dispatches an "invalid" event on submit when required and no option is selected', async () => {
142
- const form = document.createElement('form');
143
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" required>
144
- <glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
145
- </glide-core-dropdown>`, { parentNode: form });
146
- setTimeout(() => form.requestSubmit());
147
- const event = await oneEvent(component, 'invalid');
148
- expect(event instanceof Event).to.be.true;
149
- });
150
- it('dispatches an "invalid" event when `checkValidity` is called when required and no option is selected', async () => {
151
- const form = document.createElement('form');
152
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" required>
153
- <glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
154
- </glide-core-dropdown>`, { parentNode: form });
155
- setTimeout(() => component.checkValidity());
156
- const event = await oneEvent(component, 'invalid');
157
- expect(event instanceof Event).to.be.true;
158
- });
159
- it('dispatches an "invalid" event when `reportValidity` is called when required and no option is selected', async () => {
160
- const form = document.createElement('form');
161
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" required>
162
- <glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
163
- </glide-core-dropdown>`, { parentNode: form });
164
- setTimeout(() => component.reportValidity());
165
- const event = await oneEvent(component, 'invalid');
166
- expect(event instanceof Event).to.be.true;
167
- });
168
- it('does not dispatch an "invalid" event when `checkValidity` is called when not required', async () => {
169
- const form = document.createElement('form');
170
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
171
- <glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
172
- </glide-core-dropdown>`, { parentNode: form });
173
- const spy = sinon.spy();
174
- component.addEventListener('invalid', spy);
175
- component.checkValidity();
176
- await aTimeout(0);
177
- expect(spy.callCount).to.equal(0);
178
- });
179
- it('does not dispatch an "invalid" event when `checkValidity` is called when required, disabled, and no option is selected', async () => {
180
- const form = document.createElement('form');
181
- const component = await fixture(html `<glide-core-dropdown
182
- label="Label"
183
- placeholder="Placeholder"
184
- disabled
185
- required
186
- >
187
- <glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
188
- </glide-core-dropdown>`, { parentNode: form });
189
- const spy = sinon.spy();
190
- component.addEventListener('invalid', spy);
191
- component.checkValidity();
192
- await aTimeout(0);
193
- expect(spy.callCount).to.equal(0);
194
- });
195
- it('does not dispatch an "invalid" event when `reportValidity` is called when not required,', async () => {
196
- const form = document.createElement('form');
197
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
198
- <glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
199
- </glide-core-dropdown>`, { parentNode: form });
200
- const spy = sinon.spy();
201
- component.addEventListener('invalid', spy);
202
- component.reportValidity();
203
- await aTimeout(0);
204
- expect(spy.callCount).to.equal(0);
205
- });
206
- it('does not dispatch an "invalid" event when `reportValidity` is called when required, disabled, and no option is selected', async () => {
207
- const form = document.createElement('form');
208
- const component = await fixture(html `<glide-core-dropdown
209
- label="Label"
210
- placeholder="Placeholder"
211
- disabled
212
- required
213
- >
214
- <glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
215
- </glide-core-dropdown>`, { parentNode: form });
216
- const spy = sinon.spy();
217
- component.addEventListener('invalid', spy);
218
- component.reportValidity();
219
- await aTimeout(0);
220
- expect(spy.callCount).to.equal(0);
221
- });
222
- it('does not dispatch a "change" event when an option is selected programmatically', async () => {
223
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" open>
224
- <glide-core-dropdown-option label="One"></glide-core-dropdown-option>
225
- <glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
226
- </glide-core-dropdown>`);
227
- const spy = sinon.spy();
228
- component.addEventListener('change', spy);
229
- setTimeout(() => {
230
- const option = component?.querySelector('glide-core-dropdown-option');
231
- assert(option);
232
- option.selected = true;
233
- });
234
- await aTimeout(0);
235
- expect(spy.callCount).to.equal(0);
236
- });
237
- it('does not dispatch a "input" event when an option is selected programmatically', async () => {
238
- const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" open>
239
- <glide-core-dropdown-option label="One"></glide-core-dropdown-option>
240
- <glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
241
- </glide-core-dropdown>`);
242
- const spy = sinon.spy();
243
- component.addEventListener('input', spy);
244
- setTimeout(() => {
245
- const option = component?.querySelector('glide-core-dropdown-option');
246
- assert(option);
247
- option.selected = true;
248
- });
249
- await aTimeout(0);
250
- expect(spy.callCount).to.equal(0);
251
- });
@@ -1 +0,0 @@
1
- export {};