@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,131 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import { aTimeout, elementUpdated, expect, fixture, html, } from '@open-wc/testing';
3
- import GlideCoreCheckbox from './checkbox.js';
4
- GlideCoreCheckbox.shadowRootOptions.mode = 'open';
5
- it('is checked after being clicked', async () => {
6
- const component = await fixture(html `<glide-core-checkbox label="Label"></glide-core-checkbox>`);
7
- component.click();
8
- await elementUpdated(component);
9
- expect(component.checked).to.be.true;
10
- expect(component.hasAttribute('checked')).to.be.false;
11
- });
12
- it('is unchecked after being clicked', async () => {
13
- const component = await fixture(html `<glide-core-checkbox label="Label" checked></glide-core-checkbox>`);
14
- component.click();
15
- await elementUpdated(component);
16
- expect(component.checked).to.be.false;
17
- expect(component.hasAttribute('checked')).to.be.true;
18
- });
19
- it('is checked and not indeterminate after being clicked when unchecked and indeterminate', async () => {
20
- const component = await fixture(html `<glide-core-checkbox
21
- label="Label"
22
- indeterminate
23
- ></glide-core-checkbox>`);
24
- component.click();
25
- await elementUpdated(component);
26
- const input = component.shadowRoot?.querySelector('[data-test="input"]');
27
- expect(input?.indeterminate).to.be.false;
28
- expect(component.checked).to.be.true;
29
- expect(component.indeterminate).to.be.false;
30
- expect(component.hasAttribute('checked')).to.be.false;
31
- expect(component.hasAttribute('indeterminate')).to.be.true;
32
- });
33
- it('is unchecked and not indeterminate after being clicked when checked and indeterminate', async () => {
34
- const component = await fixture(html `<glide-core-checkbox
35
- label="Label"
36
- checked
37
- indeterminate
38
- ></glide-core-checkbox>`);
39
- component.click();
40
- await elementUpdated(component);
41
- const input = component.shadowRoot?.querySelector('[data-test="input"]');
42
- expect(input?.indeterminate).to.be.false;
43
- expect(component.checked).to.be.false;
44
- expect(component.indeterminate).to.be.false;
45
- expect(component.hasAttribute('checked')).to.be.true;
46
- expect(component.hasAttribute('indeterminate')).to.be.true;
47
- });
48
- it('is still checked after being clicked when checked but disabled', async () => {
49
- const component = await fixture(html `<glide-core-checkbox
50
- label="Label"
51
- checked
52
- disabled
53
- ></glide-core-checkbox>`);
54
- component.click();
55
- await elementUpdated(component);
56
- expect(component.checked).to.be.true;
57
- expect(component.hasAttribute('checked')).to.be.true;
58
- });
59
- it('is still unchecked after being clicked when unchecked and disabled', async () => {
60
- const component = await fixture(html `<glide-core-checkbox label="Label" disabled></glide-core-checkbox>`);
61
- component.click();
62
- await elementUpdated(component);
63
- expect(component.hasAttribute('checked')).to.be.false;
64
- expect(component.checked).to.be.false;
65
- });
66
- it('is unchecked after being clicked then forcibly unchecked via a "input" listener', async () => {
67
- const component = await fixture(html `<glide-core-checkbox label="Label"></glide-core-checkbox>`);
68
- component.addEventListener('input', async () => {
69
- await component.updateComplete;
70
- component.checked = false;
71
- });
72
- component.click();
73
- await elementUpdated(component);
74
- expect(component.hasAttribute('checked')).to.be.false;
75
- expect(component.checked).to.be.false;
76
- });
77
- it('is unchecked after being clicked then forcibly unchecked via an "change" listener', async () => {
78
- const component = await fixture(html `<glide-core-checkbox label="Label"></glide-core-checkbox>`);
79
- component.addEventListener('change', async () => {
80
- await component.updateComplete;
81
- component.checked = false;
82
- });
83
- component.click();
84
- await elementUpdated(component);
85
- expect(component.hasAttribute('checked')).to.be.false;
86
- expect(component.checked).to.be.false;
87
- });
88
- it('is still indeterminate after being clicked when unchecked and disabled', async () => {
89
- const component = await fixture(html `<glide-core-checkbox
90
- label="Label"
91
- disabled
92
- indeterminate
93
- ></glide-core-checkbox>`);
94
- component.click();
95
- await elementUpdated(component);
96
- const input = component.shadowRoot?.querySelector('[data-test="input"]');
97
- expect(input?.indeterminate).to.be.true;
98
- expect(component.indeterminate).to.be.true;
99
- expect(component.hasAttribute('indeterminate')).to.be.true;
100
- });
101
- it('has a tooltip when minimal and with a long label', async () => {
102
- const component = await fixture(html `<glide-core-checkbox
103
- style="display: block; max-width: 100px;"
104
- label=${'.'.repeat(100)}
105
- private-variant="minimal"
106
- private-show-label-tooltip
107
- ></glide-core-checkbox>`);
108
- // Wait for the tooltip.
109
- await aTimeout(0);
110
- const tooltip = component.shadowRoot?.querySelector('[data-test="tooltip"]');
111
- expect(tooltip?.checkVisibility()).to.be.true;
112
- });
113
- it('has no tooltip when minimal and with a short label', async () => {
114
- const component = await fixture(html `<glide-core-checkbox
115
- label="Label"
116
- private-variant="minimal"
117
- private-show-label-tooltip
118
- ></glide-core-checkbox>`);
119
- // Wait for the tooltip.
120
- await aTimeout(0);
121
- const tooltip = component.shadowRoot?.querySelector('[data-test="tooltip"]');
122
- expect(tooltip?.checkVisibility()).to.be.false;
123
- });
124
- it('remains unchecked when its "click" event is canceled', async () => {
125
- const component = await fixture(html `<glide-core-checkbox label="Label"></glide-core-checkbox>`);
126
- component.addEventListener('click', (event) => {
127
- event.preventDefault();
128
- });
129
- component.click();
130
- expect(component.checked).to.be.false;
131
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,128 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
3
- import GlideCoreCheckbox from './checkbox.js';
4
- GlideCoreCheckbox.shadowRootOptions.mode = 'open';
5
- it('is valid if unchecked but not required', async () => {
6
- const component = await fixture(html `<glide-core-checkbox label="Label"></glide-core-checkbox>`);
7
- expect(component.validity.valid).to.be.true;
8
- expect(component.validity?.valueMissing).to.be.false;
9
- expect(component.checkValidity()).to.be.true;
10
- expect(component.reportValidity()).to.be.true;
11
- });
12
- it('is valid but not aria-invalid after being checked when unchecked and required', async () => {
13
- const component = await fixture(html `<glide-core-checkbox label="Label" required></glide-core-checkbox>`);
14
- component.click();
15
- expect(component.validity.valid).to.be.true;
16
- expect(component.validity?.valueMissing).to.be.false;
17
- expect(component.checkValidity()).to.be.true;
18
- expect(component.reportValidity()).to.be.true;
19
- expect(component.shadowRoot?.querySelector('input')?.getAttribute('aria-invalid')).to.equal('false');
20
- });
21
- it('is invalid but not aria-invalid if unchecked and required', async () => {
22
- const component = await fixture(html `<glide-core-checkbox label="Label" required></glide-core-checkbox>`);
23
- expect(component.validity.valid).to.be.false;
24
- expect(component.validity?.valueMissing).to.be.true;
25
- expect(component.checkValidity()).to.be.false;
26
- expect(component.reportValidity()).to.be.false;
27
- expect(component.shadowRoot?.querySelector('input')?.getAttribute('aria-invalid')).to.equal('false');
28
- });
29
- it('is invalid but not aria-invalid after being unchecked when required', async () => {
30
- const component = await fixture(html `<glide-core-checkbox
31
- label="Label"
32
- checked
33
- required
34
- ></glide-core-checkbox>`);
35
- component.click();
36
- expect(component.validity.valid).to.be.false;
37
- expect(component.validity?.valueMissing).to.be.true;
38
- expect(component.checkValidity()).to.be.false;
39
- expect(component.reportValidity()).to.be.false;
40
- expect(component.shadowRoot?.querySelector('input')?.getAttribute('aria-invalid')).to.equal('false');
41
- });
42
- it('is both invalid and valid if unchecked and required but disabled', async () => {
43
- const component = await fixture(html `<glide-core-checkbox
44
- label="Label"
45
- disabled
46
- required
47
- ></glide-core-checkbox>`);
48
- expect(component.validity.valid).to.be.false;
49
- expect(component.validity?.valueMissing).to.be.true;
50
- expect(component.checkValidity()).to.be.true;
51
- expect(component.reportValidity()).to.be.true;
52
- });
53
- it('is valid when `value` is empty and `required` is updated to `false` programmatically', async () => {
54
- const component = await fixture(html `<glide-core-checkbox label="Label" required></glide-core-checkbox>`);
55
- expect(component.validity?.valid).to.be.false;
56
- expect(component.validity?.valueMissing).to.be.true;
57
- expect(component.checkValidity()).to.be.false;
58
- expect(component.reportValidity()).to.be.false;
59
- await elementUpdated(component);
60
- expect(component.shadowRoot?.querySelector('input')?.getAttribute('aria-invalid')).to.equal('true');
61
- component.required = false;
62
- await elementUpdated(component);
63
- expect(component.validity?.valid).to.be.true;
64
- expect(component.validity?.valueMissing).to.be.false;
65
- expect(component.checkValidity()).to.be.true;
66
- expect(component.reportValidity()).to.be.true;
67
- expect(component.shadowRoot?.querySelector('input')?.getAttribute('aria-invalid')).to.equal('false');
68
- });
69
- it('sets the validity message with `setCustomValidity()`', async () => {
70
- const component = await fixture(html `<glide-core-checkbox label="Label"></glide-core-checkbox>`);
71
- component.setCustomValidity('validity message');
72
- expect(component.validity?.valid).to.be.false;
73
- expect(component.validity?.customError).to.be.true;
74
- expect(component.checkValidity()).to.be.false;
75
- await elementUpdated(component);
76
- // Like native, the validity message shouldn't display until `reportValidity()` is called.
77
- expect(component.shadowRoot?.querySelector('[data-test="validity-message"]')
78
- ?.textContent).to.be.undefined;
79
- expect(component.reportValidity()).to.be.false;
80
- await elementUpdated(component);
81
- expect(component.shadowRoot?.querySelector('input')?.getAttribute('aria-invalid')).to.equal('true');
82
- expect(component.shadowRoot?.querySelector('[data-test="validity-message"]')
83
- ?.textContent).to.equal('validity message');
84
- });
85
- it('removes a validity message with an empty argument to `setCustomValidity()`', async () => {
86
- const component = await fixture(html `<glide-core-checkbox label="Label"></glide-core-checkbox>`);
87
- component.setCustomValidity('validity message');
88
- component.reportValidity();
89
- await elementUpdated(component);
90
- component.setCustomValidity('');
91
- await elementUpdated(component);
92
- expect(component.shadowRoot?.querySelector('[data-test="validity-message"]')
93
- ?.textContent).to.be.undefined;
94
- });
95
- it('is invalid when `setValidity()` is called', async () => {
96
- const component = await fixture(html `<glide-core-checkbox label="Label"></glide-core-checkbox>`);
97
- component.setValidity({ customError: true }, 'validity message');
98
- expect(component.validity.valid).to.be.false;
99
- await elementUpdated(component);
100
- // Like native, the validity message shouldn't display until `reportValidity()` is called.
101
- expect(component.shadowRoot?.querySelector('[data-test="validity-message"]')
102
- ?.textContent).to.be.undefined;
103
- expect(component.validity?.customError).to.be.true;
104
- component.reportValidity();
105
- await elementUpdated(component);
106
- expect(component.shadowRoot?.querySelector('input')?.getAttribute('aria-invalid')).to.equal('true');
107
- expect(component.shadowRoot?.querySelector('[data-test="validity-message"]')
108
- ?.textContent).to.equal('validity message');
109
- });
110
- it('is valid when `setValidity()` is called', async () => {
111
- const component = await fixture(html `<glide-core-checkbox label="Label"></glide-core-checkbox>`);
112
- component.setValidity({ customError: true }, 'validity message');
113
- component.setValidity({});
114
- await elementUpdated(component);
115
- expect(component.validity.valid).to.be.true;
116
- expect(component.validity.customError).to.be.false;
117
- expect(component.reportValidity()).to.be.true;
118
- await elementUpdated(component);
119
- expect(component.shadowRoot?.querySelector('[data-test="validity-message"]')
120
- ?.textContent).to.be.undefined;
121
- });
122
- it('retains existing validity state when `setCustomValidity()` is called', async () => {
123
- const component = await fixture(html `<glide-core-checkbox label="Label" required></glide-core-checkbox>`);
124
- component.setCustomValidity('validity message');
125
- expect(component.validity?.valid).to.be.false;
126
- expect(component.validity?.customError).to.be.true;
127
- expect(component.validity?.valueMissing).to.be.true;
128
- });
@@ -1,6 +0,0 @@
1
- import './button.js';
2
- import './drawer.js';
3
- import type { Meta, StoryObj } from '@storybook/web-components';
4
- declare const meta: Meta;
5
- export default meta;
6
- export declare const Drawer: StoryObj;
@@ -1 +0,0 @@
1
- import './drawer.js';
@@ -1,22 +0,0 @@
1
- import './drawer.js';
2
- import { expect, fixture, html } from '@open-wc/testing';
3
- import GlideCoreDrawer from './drawer.js';
4
- GlideCoreDrawer.shadowRootOptions.mode = 'open';
5
- // NOTE: Due to https://github.com/modernweb-dev/web/issues/2520, we sometimes need
6
- // to manually dispatch the `transitionend` event in tests.
7
- it('is accessible', async () => {
8
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`);
9
- component.shadowRoot
10
- ?.querySelector('aside')
11
- ?.dispatchEvent(new TransitionEvent('transitionend'));
12
- component.show();
13
- await expect(component).to.be.accessible();
14
- });
15
- it('focuses the aside upon opening', async () => {
16
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`);
17
- component.show();
18
- component.shadowRoot
19
- ?.querySelector('aside')
20
- ?.dispatchEvent(new TransitionEvent('transitionend'));
21
- expect(component.shadowRoot?.activeElement).to.equal(component.shadowRoot?.querySelector('aside'));
22
- });
@@ -1 +0,0 @@
1
- import './drawer.js';
@@ -1,44 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './drawer.js';
3
- import { expect, fixture, html } from '@open-wc/testing';
4
- import GlideCoreDrawer from './drawer.js';
5
- import expectArgumentError from './library/expect-argument-error.js';
6
- GlideCoreDrawer.shadowRootOptions.mode = 'open';
7
- it('registers', async () => {
8
- expect(window.customElements.get('glide-core-drawer')).to.equal(GlideCoreDrawer);
9
- });
10
- it('adds an aria-label when "label" is set', async () => {
11
- const component = await fixture(html `<glide-core-drawer label="label">Drawer content</glide-core-drawer>`);
12
- expect(component.shadowRoot?.querySelector('aside')?.ariaLabel).to.equal('label');
13
- });
14
- it('does not add an aria-label when "label" is unset', async () => {
15
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`);
16
- expect(component.shadowRoot?.querySelector('aside')).to.not.have.attribute('aria-label');
17
- });
18
- it('can have a default slot', async () => {
19
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`);
20
- component.show();
21
- expect(component.textContent).to.equal('Drawer content');
22
- });
23
- it('sets the width of the element based on the "--width" CSS variable', async () => {
24
- const styledDiv = document.createElement('div');
25
- styledDiv.setAttribute('style', '--width: 750px');
26
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`, { parentNode: styledDiv });
27
- component.show();
28
- expect(component.shadowRoot?.querySelector('aside')?.clientWidth).to.equal(750);
29
- });
30
- it('throws if it does not have a default slot', async () => {
31
- await expectArgumentError(() => {
32
- return fixture(html `<glide-core-drawer></glide-core-drawer>`);
33
- });
34
- });
35
- it('adds a class when the "pinned" attribute is set', async () => {
36
- const component = await fixture(html `<glide-core-drawer pinned>Drawer content</glide-core-drawer>`);
37
- component.show();
38
- expect(component.shadowRoot?.querySelector('aside')?.classList.contains('pinned')).to.be.true;
39
- });
40
- it('does not add a class when the "pinned" attribute is not set', async () => {
41
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`);
42
- component.show();
43
- expect(component.shadowRoot?.querySelector('aside')?.classList.contains('pinned')).to.be.false;
44
- });
@@ -1 +0,0 @@
1
- import './drawer.js';
@@ -1,40 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './drawer.js';
3
- import { elementUpdated, expect, fixture, html, oneEvent, } from '@open-wc/testing';
4
- import { emulateMedia } from '@web/test-runner-commands';
5
- import { sendKeys } from '@web/test-runner-commands';
6
- import GlideCoreDrawer from './drawer.js';
7
- GlideCoreDrawer.shadowRootOptions.mode = 'open';
8
- // NOTE: Due to https://github.com/modernweb-dev/web/issues/2520, we sometimes need
9
- // to manually dispatch the `transitionend` event in tests.
10
- it('closes when the "Escape" key is pressed', async () => {
11
- await emulateMedia({ reducedMotion: 'no-preference' });
12
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`);
13
- component.show();
14
- component.shadowRoot
15
- ?.querySelector('aside')
16
- ?.dispatchEvent(new TransitionEvent('transitionend'));
17
- await elementUpdated(component);
18
- await sendKeys({ press: 'Escape' });
19
- setTimeout(() => {
20
- component.shadowRoot
21
- ?.querySelector('aside')
22
- ?.dispatchEvent(new TransitionEvent('transitionend'));
23
- });
24
- await oneEvent(component, 'close');
25
- await elementUpdated(component);
26
- expect(component?.shadowRoot?.querySelector('aside[data-test-state="closed"]')).to.be.not.null;
27
- });
28
- it('does not close when a key other than "Escape" is pressed', async () => {
29
- await emulateMedia({ reducedMotion: 'no-preference' });
30
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`);
31
- component.show();
32
- component.shadowRoot
33
- ?.querySelector('aside')
34
- ?.dispatchEvent(new TransitionEvent('transitionend'));
35
- await elementUpdated(component);
36
- component.shadowRoot?.querySelector('aside')?.focus();
37
- await sendKeys({ press: 'Enter' });
38
- expect(component?.shadowRoot?.querySelector('aside[data-test-state="open"]'))
39
- .to.be.not.null;
40
- });
@@ -1 +0,0 @@
1
- import './drawer.js';
@@ -1,42 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './drawer.js';
3
- import { elementUpdated, expect, fixture, html, oneEvent, } from '@open-wc/testing';
4
- import { sendKeys } from '@web/test-runner-commands';
5
- import GlideCoreDrawer from './drawer.js';
6
- GlideCoreDrawer.shadowRootOptions.mode = 'open';
7
- // NOTE: Due to https://github.com/modernweb-dev/web/issues/2520, we sometimes need
8
- // to manually dispatch the `transitionend` event in tests.
9
- it('dispatches a "close" event when the "Escape" key is pressed', async () => {
10
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`);
11
- const closeEvent = oneEvent(component, 'close');
12
- component.show();
13
- component.shadowRoot
14
- ?.querySelector('aside')
15
- ?.dispatchEvent(new TransitionEvent('transitionend'));
16
- await elementUpdated(component);
17
- await sendKeys({ press: 'Escape' });
18
- setTimeout(() => {
19
- component.shadowRoot
20
- ?.querySelector('aside')
21
- ?.dispatchEvent(new TransitionEvent('transitionend'));
22
- });
23
- const event = await closeEvent;
24
- expect(event instanceof Event).to.be.true;
25
- });
26
- it('dispatches a "close" event when closed via the "close" method', async () => {
27
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`);
28
- const closeEvent = oneEvent(component, 'close');
29
- component.show();
30
- component.shadowRoot
31
- ?.querySelector('aside')
32
- ?.dispatchEvent(new TransitionEvent('transitionend'));
33
- await elementUpdated(component);
34
- component.close();
35
- setTimeout(() => {
36
- component.shadowRoot
37
- ?.querySelector('aside')
38
- ?.dispatchEvent(new TransitionEvent('transitionend'));
39
- });
40
- const event = await closeEvent;
41
- expect(event instanceof Event).to.be.true;
42
- });
@@ -1 +0,0 @@
1
- import './drawer.js';
@@ -1,35 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './drawer.js';
3
- import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
4
- import GlideCoreDrawer from './drawer.js';
5
- GlideCoreDrawer.shadowRootOptions.mode = 'open';
6
- // NOTE: Due to https://github.com/modernweb-dev/web/issues/2520, we sometimes need
7
- // to manually dispatch the `transitionend` event in tests.
8
- it('opens the drawer via the "show()" method and closes it via "close()"', async () => {
9
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`);
10
- component.show();
11
- await elementUpdated(component);
12
- component.shadowRoot
13
- ?.querySelector('aside')
14
- ?.dispatchEvent(new TransitionEvent('transitionend'));
15
- expect(component.shadowRoot?.querySelector('aside[data-test-state="open"]'))
16
- .to.be.not.null;
17
- component.close();
18
- component.shadowRoot
19
- ?.querySelector('aside')
20
- ?.dispatchEvent(new TransitionEvent('transitionend'));
21
- await elementUpdated(component);
22
- expect(component.shadowRoot?.querySelector('aside[data-test-state="closed"]'))
23
- .to.be.not.null;
24
- });
25
- it('remains open if "show()" is called an additional time after it is already opened', async () => {
26
- const component = await fixture(html `<glide-core-drawer>Drawer content</glide-core-drawer>`);
27
- component.show();
28
- await elementUpdated(component);
29
- expect(component.shadowRoot?.querySelector('aside[data-test-state="open"]'))
30
- .to.be.not.null;
31
- component.show();
32
- await elementUpdated(component);
33
- expect(component.shadowRoot?.querySelector('aside[data-test-state="open"]'))
34
- .to.be.not.null;
35
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,34 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import { expect, fixture, html } from '@open-wc/testing';
3
- import GlideCoreDropdownOption from './dropdown.option.js';
4
- GlideCoreDropdownOption.shadowRootOptions.mode = 'open';
5
- it('registers', async () => {
6
- expect(window.customElements.get('glide-core-dropdown-option')).to.equal(GlideCoreDropdownOption);
7
- });
8
- it('has defaults', async () => {
9
- // Required attributes are supplied and not asserted below. The idea is that
10
- // this test shouldn't fail to typecheck if these templates are eventually
11
- // typechecked, which means supplying required attributes and slots.
12
- const component = await fixture(html `<glide-core-dropdown-option
13
- label="Label"
14
- ></glide-core-dropdown-option>`);
15
- expect(component.privateMultiple).to.be.false;
16
- expect(component.getAttribute('private-multiple')).to.equal(null);
17
- expect(component.privateSize).to.equal('large');
18
- expect(component.getAttribute('private-size')).to.equal('large');
19
- expect(component.selected).to.be.false;
20
- expect(component.hasAttribute('selected')).to.be.false;
21
- expect(component.value).to.equal('');
22
- expect(component.getAttribute('value')).to.equal('');
23
- // None are reflected, so no attribute assertions are necessary.
24
- expect(component.privateActive).to.be.false;
25
- expect(component.privateIndeterminate).to.be.false;
26
- });
27
- it('is selectable', async () => {
28
- const component = await fixture(html `<glide-core-dropdown-option
29
- label="Label"
30
- selected
31
- ></glide-core-dropdown-option>`);
32
- const checkedIconContainer = component.shadowRoot?.querySelector('[data-test="checked-icon-container"]');
33
- expect(checkedIconContainer instanceof Element).to.be.true;
34
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,36 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import { expect, fixture, html } from '@open-wc/testing';
3
- import GlideCoreDropdownOption from './dropdown.option.js';
4
- GlideCoreDropdownOption.shadowRootOptions.mode = 'open';
5
- it('is selected when initially selected', async () => {
6
- const component = await fixture(html `<glide-core-dropdown-option
7
- label="Label"
8
- value="value"
9
- private-multiple
10
- selected
11
- ></glide-core-dropdown-option>`);
12
- const checkbox = component.shadowRoot?.querySelector('glide-core-checkbox');
13
- expect(component.selected).to.be.true;
14
- expect(component.ariaSelected).to.equal('true');
15
- expect(checkbox?.checked).to.be.true;
16
- });
17
- it('is deselected when initially deselected', async () => {
18
- const component = await fixture(html `<glide-core-dropdown-option
19
- label="Label"
20
- value="value"
21
- private-multiple
22
- ></glide-core-dropdown-option>`);
23
- const checkbox = component.shadowRoot?.querySelector('glide-core-checkbox');
24
- expect(component.selected).to.be.false;
25
- expect(component.ariaSelected).to.equal('false');
26
- expect(checkbox?.checked).to.be.false;
27
- });
28
- it('is editable', async () => {
29
- const component = await fixture(html `<glide-core-dropdown-option
30
- label="Label"
31
- editable
32
- private-multiple
33
- ></glide-core-dropdown-option>`);
34
- const button = component.shadowRoot?.querySelector('[data-test="edit-button"]');
35
- expect(button?.checkVisibility()).to.be.true;
36
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,29 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import { expect, fixture, html } from '@open-wc/testing';
3
- import GlideCoreDropdownOption from './dropdown.option.js';
4
- GlideCoreDropdownOption.shadowRootOptions.mode = 'open';
5
- it('is selected when initially selected', async () => {
6
- const component = await fixture(html `<glide-core-dropdown-option
7
- label="Label"
8
- value="value"
9
- selected
10
- ></glide-core-dropdown-option>`);
11
- expect(component.selected).to.be.true;
12
- expect(component.ariaSelected).to.equal('true');
13
- });
14
- it('is deselected when initially deselected', async () => {
15
- const component = await fixture(html `<glide-core-dropdown-option
16
- label="Label"
17
- value="value"
18
- ></glide-core-dropdown-option>`);
19
- expect(component.selected).to.be.false;
20
- expect(component.ariaSelected).to.equal('false');
21
- });
22
- it('is editable', async () => {
23
- const component = await fixture(html `<glide-core-dropdown-option
24
- label="Label"
25
- editable
26
- ></glide-core-dropdown-option>`);
27
- const button = component.shadowRoot?.querySelector('[data-test="edit-button"]');
28
- expect(button?.checkVisibility()).to.be.true;
29
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,36 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import { expect, fixture, html, oneEvent } from '@open-wc/testing';
3
- import GlideCoreDropdownOption from './dropdown.option.js';
4
- GlideCoreDropdownOption.shadowRootOptions.mode = 'open';
5
- it('dispatches a "private-label-change" event', async () => {
6
- const component = await fixture(html `<glide-core-dropdown-option label="One"></glide-core-dropdown-option>`);
7
- setTimeout(() => {
8
- component.label = 'Two';
9
- });
10
- const event = await oneEvent(component, 'private-label-change');
11
- expect(event instanceof Event).to.be.true;
12
- expect(event.bubbles).to.be.true;
13
- });
14
- it('dispatches a "private-selected-change" event', async () => {
15
- const component = await fixture(html `<glide-core-dropdown-option
16
- label="Label"
17
- ></glide-core-dropdown-option>`);
18
- setTimeout(() => {
19
- component.selected = true;
20
- });
21
- const event = await oneEvent(component, 'private-selected-change');
22
- expect(event instanceof Event).to.be.true;
23
- expect(event.bubbles).to.be.true;
24
- });
25
- it('dispatches a "private-value-change" event', async () => {
26
- const component = await fixture(html `<glide-core-dropdown-option
27
- label="Label"
28
- value="value"
29
- ></glide-core-dropdown-option>`);
30
- setTimeout(() => {
31
- component.value = '';
32
- });
33
- const event = await oneEvent(component, 'private-value-change');
34
- expect(event instanceof Event).to.be.true;
35
- expect(event.bubbles).to.be.true;
36
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,11 +0,0 @@
1
- import { expect, fixture, html } from '@open-wc/testing';
2
- import GlideCoreDropdownOption from './dropdown.option.js';
3
- GlideCoreDropdownOption.shadowRootOptions.mode = 'open';
4
- it('focuses itself when `focus()` is called', async () => {
5
- const component = await fixture(html `<glide-core-dropdown-option
6
- label="Label"
7
- value="value"
8
- ></glide-core-dropdown-option>`);
9
- component.focus();
10
- expect(document.activeElement).to.equal(component);
11
- });
@@ -1 +0,0 @@
1
- export {};