@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,324 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './radio-group.js';
3
- import './radio.js';
4
- import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
5
- import GlideCoreRadio from './radio.js';
6
- import GlideCoreRadioGroup from './radio-group.js';
7
- import expectArgumentError from './library/expect-argument-error.js';
8
- GlideCoreRadio.shadowRootOptions.mode = 'open';
9
- GlideCoreRadioGroup.shadowRootOptions.mode = 'open';
10
- it('registers', async () => {
11
- expect(window.customElements.get('glide-core-radio-group')).to.equal(GlideCoreRadioGroup);
12
- expect(window.customElements.get('glide-core-radio')).to.equal(GlideCoreRadio);
13
- });
14
- it('is accessible', async () => {
15
- const component = await fixture(html `
16
- <glide-core-radio-group label="label" name="name" value="value-1">
17
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
18
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
19
- <glide-core-radio value="value-3" label="Three"></glide-core-radio>
20
- <span slot="tooltip">Tooltip</span>
21
- <div slot="description">Description</div>
22
- </glide-core-radio-group>
23
- `);
24
- await expect(component).to.be.accessible();
25
- });
26
- it('renders appropriate attributes on glide-core-radio', async () => {
27
- await fixture(html `
28
- <glide-core-radio-group label="label" name="name">
29
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
30
- <glide-core-radio value="value-2" label="Two" checked></glide-core-radio>
31
- </glide-core-radio-group>
32
- `);
33
- const radios = document.querySelectorAll('glide-core-radio');
34
- expect(radios[0].getAttribute('value')).to.equal('value-1');
35
- expect(radios[0].getAttribute('tabindex')).to.equal('-1');
36
- expect(radios[0]).to.not.have.attribute('checked');
37
- expect(radios[0].getAttribute('role')).to.equal('radio');
38
- expect(radios[0].getAttribute('aria-checked')).to.equal('false');
39
- expect(radios[0].getAttribute('aria-disabled')).to.equal('false');
40
- expect(radios[0].getAttribute('aria-invalid')).to.equal('false');
41
- expect(radios[0].getAttribute('aria-required')).to.equal('false');
42
- expect(radios[1].getAttribute('value')).to.equal('value-2');
43
- expect(radios[1].getAttribute('tabindex')).to.equal('0');
44
- expect(radios[1].hasAttribute('checked')).to.be.true;
45
- expect(radios[1].getAttribute('role')).to.equal('radio');
46
- expect(radios[1].getAttribute('aria-checked')).to.equal('true');
47
- expect(radios[1].getAttribute('aria-disabled')).to.equal('false');
48
- expect(radios[1].getAttribute('aria-invalid')).to.equal('false');
49
- expect(radios[1].getAttribute('aria-required')).to.equal('false');
50
- });
51
- it('renders a label, radio group, description, and tooltip when given', async () => {
52
- const component = await fixture(html `
53
- <glide-core-radio-group label="label" name="name" value="value-1">
54
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
55
- <span slot="tooltip" data-test="tooltip">Tooltip</span>
56
- <div slot="description" data-test="description">Description</div>
57
- </glide-core-radio-group>
58
- `);
59
- const label = component.shadowRoot?.querySelector('[data-test="label"]');
60
- const radioGroup = component?.shadowRoot?.querySelector('[role="radiogroup"]');
61
- const tooltip = document.querySelector('[data-test="tooltip"]');
62
- const description = document?.querySelector('[data-test="description"]');
63
- expect(component).to.not.be.null;
64
- expect(label).to.not.be.null;
65
- expect(radioGroup).to.not.be.null;
66
- expect(tooltip).to.not.be.null;
67
- expect(description).to.not.be.null;
68
- });
69
- it('does not render a required symbol when a "label" is given and "required" is not set', async () => {
70
- await fixture(html `
71
- <glide-core-radio-group label="label" name="name" value="value-1">
72
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
73
- </glide-core-radio-group>
74
- `);
75
- const group = document.querySelector('glide-core-radio-group');
76
- const requiredSymbol = group?.shadowRoot?.querySelector('[data-test="label-required"]');
77
- expect(requiredSymbol).to.be.null;
78
- });
79
- it('sets "required" attributes on radios when "required" is set on the group', async () => {
80
- await fixture(html `
81
- <glide-core-radio-group label="label" name="name" value="value-1" required>
82
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
83
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
84
- </glide-core-radio-group>
85
- `);
86
- const radios = document.querySelectorAll('glide-core-radio');
87
- expect(radios[0].hasAttribute('required')).to.be.true;
88
- expect(radios[0].getAttribute('aria-required')).to.equal('true');
89
- expect(radios[1].hasAttribute('required')).to.be.true;
90
- expect(radios[1].getAttribute('aria-required')).to.equal('true');
91
- });
92
- it('does not set "required" attributes on radios when "required" is not set on the group', async () => {
93
- await fixture(html `
94
- <glide-core-radio-group label="label" name="name" value="value-1">
95
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
96
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
97
- </glide-core-radio-group>
98
- `);
99
- const radios = document.querySelectorAll('glide-core-radio');
100
- expect(radios[0]).to.not.have.attribute('required');
101
- expect(radios[0].getAttribute('aria-required')).to.equal('false');
102
- expect(radios[1]).to.not.have.attribute('required');
103
- expect(radios[1].getAttribute('aria-required')).to.equal('false');
104
- });
105
- it('renders radios as "disabled" when "disabled" is set on the group', async () => {
106
- await fixture(html `
107
- <glide-core-radio-group label="label" name="name" value="value-1" disabled>
108
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
109
- </glide-core-radio-group>
110
- `);
111
- const radio = document.querySelector('glide-core-radio');
112
- expect(radio?.hasAttribute('disabled')).to.be.true;
113
- expect(radio?.getAttribute('aria-disabled')).to.equal('true');
114
- expect(radio?.shadowRoot?.querySelector('.disabled')).to.be.not.null;
115
- });
116
- it('does not render radios as "disabled" when "disabled" is not set on the group', async () => {
117
- await fixture(html `
118
- <glide-core-radio-group label="label" name="name" value="value-1">
119
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
120
- </glide-core-radio-group>
121
- `);
122
- const radio = document.querySelector('glide-core-radio');
123
- expect(radio).to.not.have.attribute('disabled');
124
- expect(radio?.getAttribute('aria-disabled')).to.equal('false');
125
- expect(radio?.shadowRoot?.querySelector('.disabled')).to.be.null;
126
- });
127
- it('renders radios as "disabled" when "disabled" is dynamically set and removed on the group', async () => {
128
- const component = await fixture(html `
129
- <glide-core-radio-group label="label" name="name" value="value-1">
130
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
131
- </glide-core-radio-group>
132
- `);
133
- const radio = document.querySelector('glide-core-radio');
134
- expect(radio).to.not.have.attribute('disabled');
135
- expect(radio?.getAttribute('aria-disabled')).to.equal('false');
136
- expect(radio?.shadowRoot?.querySelector('.disabled')).to.be.null;
137
- component.disabled = true;
138
- await elementUpdated(component);
139
- expect(radio?.hasAttribute('disabled')).to.be.true;
140
- expect(radio?.getAttribute('aria-disabled')).to.equal('true');
141
- expect(radio?.shadowRoot?.querySelector('.disabled')).to.be.not.null;
142
- component.disabled = false;
143
- await elementUpdated(component);
144
- expect(radio).to.not.have.attribute('disabled');
145
- expect(radio?.getAttribute('aria-disabled')).to.equal('false');
146
- expect(radio?.shadowRoot?.querySelector('.disabled')).to.be.null;
147
- });
148
- it('sets the radio group to an empty value when no radio is "checked"', async () => {
149
- const component = await fixture(html `
150
- <glide-core-radio-group label="label" name="name">
151
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
152
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
153
- </glide-core-radio-group>
154
- `);
155
- const radios = document.querySelectorAll('glide-core-radio');
156
- expect(component.value).to.equal('');
157
- expect(radios.length).to.equal(2);
158
- expect(radios[0]).to.not.have.attribute('checked');
159
- expect(radios[0]?.getAttribute('aria-checked')).to.equal('false');
160
- expect(radios[1]).to.not.have.attribute('checked');
161
- expect(radios[1]?.getAttribute('aria-checked')).to.equal('false');
162
- });
163
- it('sets the group "value" when a radio is set as "checked"', async () => {
164
- await fixture(html `
165
- <glide-core-radio-group label="label" name="name">
166
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
167
- <glide-core-radio value="value-2" checked label="Two"></glide-core-radio>
168
- </glide-core-radio-group>
169
- `);
170
- const group = document.querySelector('glide-core-radio-group');
171
- expect(group?.getAttribute('value')).to.equal('value-2');
172
- });
173
- it('throws an error when an component other than `glide-core-radio` is a child of the default slot', async () => {
174
- await expectArgumentError(() => {
175
- return fixture(html `
176
- <glide-core-radio-group label="label" name="name">
177
- <div>Option 1</div>
178
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
179
- </glide-core-radio-group>
180
- `);
181
- });
182
- });
183
- it('throws an error when the group has no children', async () => {
184
- await expectArgumentError(() => {
185
- return fixture(html `<glide-core-radio-group label="label" name="name">
186
- </glide-core-radio-group>`);
187
- });
188
- });
189
- it('sets the first radio to be tabbable when none are checked', async () => {
190
- await fixture(html `<glide-core-radio-group name="name">
191
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
192
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
193
- <glide-core-radio value="value-3" label="Three"></glide-core-radio>
194
- </glide-core-radio-group>`);
195
- const radios = document.querySelectorAll('glide-core-radio');
196
- expect(radios.length).to.equal(3);
197
- expect(radios[0]?.getAttribute('tabindex')).to.equal('0');
198
- expect(radios[1]?.getAttribute('tabindex')).to.equal('-1');
199
- expect(radios[2]?.getAttribute('tabindex')).to.equal('-1');
200
- });
201
- it('sets the first non-disabled radio as tabbable when none are checked', async () => {
202
- await fixture(html `<glide-core-radio-group name="name">
203
- <glide-core-radio value="value-1" disabled label="One"></glide-core-radio>
204
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
205
- <glide-core-radio value="value-3" label="Three"></glide-core-radio>
206
- </glide-core-radio-group>`);
207
- const radios = document.querySelectorAll('glide-core-radio');
208
- expect(radios.length).to.equal(3);
209
- expect(radios[0]?.getAttribute('tabindex')).to.equal('-1');
210
- expect(radios[1]?.getAttribute('tabindex')).to.equal('0');
211
- expect(radios[2]?.getAttribute('tabindex')).to.equal('-1');
212
- });
213
- it('no radios are tabbable when the group is "disabled"', async () => {
214
- await fixture(html `<glide-core-radio-group name="name" disabled>
215
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
216
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
217
- <glide-core-radio
218
- value="value-3"
219
- checked
220
- label="Three"
221
- ></glide-core-radio>
222
- </glide-core-radio-group>`);
223
- const radios = document.querySelectorAll('glide-core-radio');
224
- expect(radios.length).to.equal(3);
225
- expect(radios[0]?.getAttribute('tabindex')).to.equal('-1');
226
- expect(radios[1]?.getAttribute('tabindex')).to.equal('-1');
227
- expect(radios[2]?.getAttribute('tabindex')).to.equal('-1');
228
- });
229
- it('disabled radios are not tabbable', async () => {
230
- await fixture(html `<glide-core-radio-group name="name">
231
- <glide-core-radio value="value-1" disabled label="One"></glide-core-radio>
232
- <glide-core-radio value="value-2" disabled label="Two"></glide-core-radio>
233
- </glide-core-radio-group>`);
234
- const radios = document.querySelectorAll('glide-core-radio');
235
- expect(radios.length).to.equal(2);
236
- expect(radios[0]?.getAttribute('tabindex')).to.equal('-1');
237
- expect(radios[1]?.getAttribute('tabindex')).to.equal('-1');
238
- });
239
- it('sets only the "checked" radio as tabbable', async () => {
240
- await fixture(html `<glide-core-radio-group name="name">
241
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
242
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
243
- <glide-core-radio
244
- value="value-3"
245
- label="Three"
246
- checked
247
- ></glide-core-radio>
248
- </glide-core-radio-group>`);
249
- const radios = document.querySelectorAll('glide-core-radio');
250
- expect(radios.length).to.equal(3);
251
- expect(radios[0]?.getAttribute('tabindex')).to.equal('-1');
252
- expect(radios[1]?.getAttribute('tabindex')).to.equal('-1');
253
- expect(radios[2]?.getAttribute('tabindex')).to.equal('0');
254
- });
255
- it('has reactive radio attribute "aria-checked"', async () => {
256
- await fixture(html `<glide-core-radio-group name="name">
257
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
258
- </glide-core-radio-group>`);
259
- const radio = document.querySelector('glide-core-radio');
260
- expect(radio).to.not.be.null;
261
- expect(radio?.getAttribute('aria-checked')).to.equal('false');
262
- radio?.setAttribute('checked', '');
263
- await elementUpdated(radio);
264
- expect(radio?.getAttribute('aria-checked')).to.equal('true');
265
- radio?.removeAttribute('checked');
266
- await elementUpdated(radio);
267
- expect(radio?.getAttribute('aria-checked')).to.equal('false');
268
- });
269
- it('has reactive radio attribute "aria-disabled"', async () => {
270
- await fixture(html `<glide-core-radio-group name="name">
271
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
272
- </glide-core-radio-group>`);
273
- const radio = document.querySelector('glide-core-radio');
274
- expect(radio).to.not.be.null;
275
- expect(radio?.getAttribute('aria-disabled')).to.equal('false');
276
- radio?.setAttribute('disabled', '');
277
- await elementUpdated(radio);
278
- expect(radio?.getAttribute('aria-disabled')).to.equal('true');
279
- radio?.removeAttribute('disabled');
280
- await elementUpdated(radio);
281
- expect(radio?.getAttribute('aria-disabled')).to.equal('false');
282
- });
283
- it('has reactive radio attribute "aria-required"', async () => {
284
- await fixture(html `<glide-core-radio-group name="name">
285
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
286
- </glide-core-radio-group>`);
287
- const radio = document.querySelector('glide-core-radio');
288
- expect(radio).to.not.be.null;
289
- expect(radio?.getAttribute('aria-required')).to.equal('false');
290
- radio?.setAttribute('required', '');
291
- await elementUpdated(radio);
292
- expect(radio?.getAttribute('aria-required')).to.equal('true');
293
- radio?.removeAttribute('required');
294
- await elementUpdated(radio);
295
- expect(radio?.getAttribute('aria-required')).to.equal('false');
296
- });
297
- it('has reactive radio attribute "aria-invalid"', async () => {
298
- await fixture(html `<glide-core-radio-group name="name">
299
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
300
- </glide-core-radio-group>`);
301
- const radio = document.querySelector('glide-core-radio');
302
- expect(radio).to.not.be.null;
303
- expect(radio?.getAttribute('aria-invalid')).to.equal('false');
304
- radio?.setAttribute('invalid', '');
305
- await elementUpdated(radio);
306
- expect(radio?.getAttribute('aria-invalid')).to.equal('true');
307
- radio?.removeAttribute('invalid');
308
- await elementUpdated(radio);
309
- expect(radio?.getAttribute('aria-invalid')).to.equal('false');
310
- });
311
- it('adds a label to radio when given', async () => {
312
- const component = await fixture(html `<glide-core-radio value="value-1" label="One"></glide-core-radio>`);
313
- const label = component.shadowRoot.querySelector('.component')?.textContent;
314
- expect(label).to.contain('One');
315
- expect(component.ariaLabel).to.equal('One');
316
- });
317
- it('changes the radio label dynamically as when given', async () => {
318
- const component = await fixture(html `<glide-core-radio value="value-1" label="One"></glide-core-radio>`);
319
- component.label = 'Two';
320
- await elementUpdated(component);
321
- const label = component.shadowRoot.querySelector('.component')?.textContent;
322
- expect(label).to.contain('Two');
323
- expect(component.ariaLabel).to.equal('Two');
324
- });
@@ -1,2 +0,0 @@
1
- import './radio-group.js';
2
- import './radio.js';
@@ -1,278 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './radio-group.js';
3
- import './radio.js';
4
- import { elementUpdated, expect, fixture, html, oneEvent, } from '@open-wc/testing';
5
- import { sendKeys } from '@web/test-runner-commands';
6
- import GlideCoreRadio from './radio.js';
7
- import GlideCoreRadioGroup from './radio-group.js';
8
- GlideCoreRadio.shadowRootOptions.mode = 'open';
9
- GlideCoreRadioGroup.shadowRootOptions.mode = 'open';
10
- it('emits a change event when arrow keys are pressed', async () => {
11
- await fixture(html `<glide-core-radio-group name="name">
12
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
13
- <glide-core-radio value="value-2" checked label="Two"></glide-core-radio>
14
- <glide-core-radio value="value-3" label="Three"></glide-core-radio>
15
- </glide-core-radio-group>`);
16
- const radios = document.querySelectorAll('glide-core-radio');
17
- await sendKeys({ press: 'Tab' });
18
- // This pattern is adopted from https://open-wc.org/docs/testing/helpers/#testing-events
19
- // Without the setTimeout the test fails. An `await` is used since `sendKeys` returns a
20
- // promise, however the test seems to work without it. Keeping `await` here until this can
21
- // be investigated further.
22
- setTimeout(async () => await sendKeys({ press: 'ArrowLeft' }));
23
- const changeEventLeft = await oneEvent(radios[0], 'change');
24
- expect(changeEventLeft instanceof Event).to.be.true;
25
- expect(changeEventLeft.bubbles).to.be.true;
26
- setTimeout(async () => await sendKeys({ press: 'ArrowRight' }));
27
- const changeEventRight = await oneEvent(radios[1], 'change');
28
- expect(changeEventRight instanceof Event).to.be.true;
29
- expect(changeEventRight.bubbles).to.be.true;
30
- setTimeout(async () => await sendKeys({ press: 'ArrowUp' }));
31
- const changeEventUp = await oneEvent(radios[0], 'change');
32
- expect(changeEventUp instanceof Event).to.be.true;
33
- expect(changeEventUp.bubbles).to.be.true;
34
- setTimeout(async () => await sendKeys({ press: 'ArrowDown' }));
35
- const changeEventDown = await oneEvent(radios[1], 'change');
36
- expect(changeEventDown instanceof Event).to.be.true;
37
- expect(changeEventDown.bubbles).to.be.true;
38
- });
39
- it('emits an input event when arrow keys are pressed', async () => {
40
- await fixture(html `<glide-core-radio-group name="name">
41
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
42
- <glide-core-radio value="value-2" checked label="Two"></glide-core-radio>
43
- <glide-core-radio value="value-3" label="Three"></glide-core-radio>
44
- </glide-core-radio-group>`);
45
- const radios = document.querySelectorAll('glide-core-radio');
46
- await sendKeys({ press: 'Tab' });
47
- setTimeout(async () => await sendKeys({ press: 'ArrowLeft' }));
48
- const inputEventLeft = await oneEvent(radios[0], 'input');
49
- expect(inputEventLeft instanceof Event).to.be.true;
50
- expect(inputEventLeft.bubbles).to.be.true;
51
- setTimeout(async () => await sendKeys({ press: 'ArrowRight' }));
52
- const inputEventRight = await oneEvent(radios[1], 'input');
53
- expect(inputEventRight instanceof Event).to.be.true;
54
- expect(inputEventRight.bubbles).to.be.true;
55
- setTimeout(async () => await sendKeys({ press: 'ArrowUp' }));
56
- const inputEventUp = await oneEvent(radios[0], 'input');
57
- expect(inputEventUp instanceof Event).to.be.true;
58
- expect(inputEventUp.bubbles).to.be.true;
59
- setTimeout(async () => await sendKeys({ press: 'ArrowDown' }));
60
- const inputEventDown = await oneEvent(radios[1], 'input');
61
- expect(inputEventDown instanceof Event).to.be.true;
62
- expect(inputEventDown.bubbles).to.be.true;
63
- });
64
- it('moves focus to previous radio when left or up arrow keys are pressed', async () => {
65
- await fixture(html `<glide-core-radio-group name="name">
66
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
67
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
68
- <glide-core-radio
69
- value="value-3"
70
- checked
71
- label="Three"
72
- ></glide-core-radio>
73
- </glide-core-radio-group>`);
74
- const radios = document.querySelectorAll('glide-core-radio');
75
- await sendKeys({ press: 'Tab' });
76
- await sendKeys({ press: 'ArrowLeft' });
77
- expect(radios[1]).to.have.focus;
78
- await sendKeys({ press: 'ArrowUp' });
79
- expect(radios[0]).to.have.focus;
80
- });
81
- it('moves focus to last radio when left or up arrow keys are pressed on the first radio', async () => {
82
- await fixture(html `<glide-core-radio-group name="name">
83
- <glide-core-radio value="value-1" checked label="One"></glide-core-radio>
84
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
85
- <glide-core-radio value="value-3" label="Three"></glide-core-radio>
86
- </glide-core-radio-group>`);
87
- const radios = document.querySelectorAll('glide-core-radio');
88
- await sendKeys({ press: 'Tab' });
89
- await sendKeys({ press: 'ArrowLeft' });
90
- expect(radios[2]).to.have.focus;
91
- radios[0].focus();
92
- await sendKeys({ press: ' ' });
93
- await sendKeys({ press: 'ArrowUp' });
94
- expect(radios[2]).to.have.focus;
95
- });
96
- it('moves focus to next radio when right or down arrow keys are pressed', async () => {
97
- await fixture(html `<glide-core-radio-group name="name">
98
- <glide-core-radio value="value-1" checked label="One"></glide-core-radio>
99
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
100
- <glide-core-radio value="value-3" label="Three"></glide-core-radio>
101
- </glide-core-radio-group>`);
102
- const radios = document.querySelectorAll('glide-core-radio');
103
- await sendKeys({ press: 'Tab' });
104
- await sendKeys({ press: 'ArrowRight' });
105
- expect(radios[1]).to.have.focus;
106
- await sendKeys({ press: 'ArrowDown' });
107
- expect(radios[2]).to.have.focus;
108
- });
109
- it('moves focus to first radio when right or down arrow keys are pressed on the last radio', async () => {
110
- await fixture(html `<glide-core-radio-group name="name">
111
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
112
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
113
- <glide-core-radio
114
- value="value-3"
115
- checked
116
- label="Three"
117
- ></glide-core-radio>
118
- </glide-core-radio-group>`);
119
- const radios = document.querySelectorAll('glide-core-radio');
120
- await sendKeys({ press: 'Tab' });
121
- await sendKeys({ press: 'ArrowRight' });
122
- expect(radios[0]).to.have.focus;
123
- radios[2].focus();
124
- await sendKeys({ press: ' ' });
125
- expect(radios[2]).to.have.focus;
126
- await sendKeys({ press: 'ArrowDown' });
127
- expect(radios[0]).to.have.focus;
128
- });
129
- it('moves focus to previous enabled radio when pressing left or up arrow keys', async () => {
130
- await fixture(html `<glide-core-radio-group name="name">
131
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
132
- <glide-core-radio value="value-2" disabled label="Two"></glide-core-radio>
133
- <glide-core-radio
134
- value="value-3"
135
- checked
136
- label="Three"
137
- ></glide-core-radio>
138
- </glide-core-radio-group>`);
139
- const radios = document.querySelectorAll('glide-core-radio');
140
- await sendKeys({ press: 'Tab' });
141
- await sendKeys({ press: 'ArrowLeft' });
142
- expect(radios[0]).to.have.focus;
143
- radios[2].focus();
144
- await sendKeys({ press: ' ' });
145
- expect(radios[2]).to.have.focus;
146
- await sendKeys({ press: 'ArrowUp' });
147
- expect(radios[0]).to.have.focus;
148
- });
149
- it('moves focus to next enabled radio when pressing right or down arrow keys', async () => {
150
- await fixture(html `<glide-core-radio-group name="name">
151
- <glide-core-radio value="value-1" checked label="One"></glide-core-radio>
152
- <glide-core-radio value="value-2" disabled label="Two"></glide-core-radio>
153
- <glide-core-radio value="value-3" label="Three"></glide-core-radio>
154
- </glide-core-radio-group>`);
155
- const radios = document.querySelectorAll('glide-core-radio');
156
- await sendKeys({ press: 'Tab' });
157
- await sendKeys({ press: 'ArrowRight' });
158
- expect(radios[2]).to.have.focus;
159
- radios[0].focus();
160
- await sendKeys({ press: ' ' });
161
- expect(radios[0]).to.have.focus;
162
- await sendKeys({ press: 'ArrowDown' });
163
- expect(radios[2]).to.have.focus;
164
- });
165
- it('does not move focus if there is only one button when pressing arrow keys', async () => {
166
- await fixture(html `<glide-core-radio-group name="name">
167
- <glide-core-radio value="value-1" label="One"></glide-core-radio>
168
- </glide-core-radio-group>`);
169
- const radio = document.querySelector('glide-core-radio');
170
- await sendKeys({ press: 'Tab' });
171
- await sendKeys({ press: 'ArrowLeft' });
172
- expect(radio).to.have.focus;
173
- await sendKeys({ press: 'ArrowRight' });
174
- expect(radio).to.have.focus;
175
- await sendKeys({ press: 'ArrowUp' });
176
- expect(radio).to.have.focus;
177
- await sendKeys({ press: 'ArrowDown' });
178
- expect(radio).to.have.focus;
179
- });
180
- it('changes the "checked" attribute when clicking', async () => {
181
- const component = await fixture(html `<glide-core-radio-group name="name">
182
- <glide-core-radio value="value-1" checked label="One"></glide-core-radio>
183
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
184
- <glide-core-radio value="value-3" label="Three"></glide-core-radio>
185
- </glide-core-radio-group>`);
186
- const radios = document.querySelectorAll('glide-core-radio');
187
- expect(radios.length).to.equal(3);
188
- radios[2].click();
189
- await elementUpdated(component);
190
- expect(radios[2]).to.have.focus;
191
- expect(radios[2]?.hasAttribute('checked')).to.be.true;
192
- expect(radios[0]).to.not.have.attribute('checked');
193
- });
194
- it('does not change focus nor the "checked" attribute when clicking a disabled radio', async () => {
195
- const component = await fixture(html `<glide-core-radio-group name="name">
196
- <glide-core-radio value="value-1" checked label="One"></glide-core-radio>
197
- <glide-core-radio value="value-2" disabled label="Two"></glide-core-radio>
198
- </glide-core-radio-group>`);
199
- const radios = document.querySelectorAll('glide-core-radio');
200
- expect(radios.length).to.equal(2);
201
- radios[1].click();
202
- await elementUpdated(component);
203
- expect(radios[0]).to.have.focus;
204
- expect(radios[0]?.hasAttribute('checked')).to.be.true;
205
- expect(radios[1]).to.not.have.attribute('checked');
206
- });
207
- it('does not change focus nor the "checked" attribute when clicking a disabled group', async () => {
208
- const component = await fixture(html `<glide-core-radio-group name="name" disabled>
209
- <glide-core-radio value="value-1" checked label="One"></glide-core-radio>
210
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
211
- </glide-core-radio-group>`);
212
- const radios = document.querySelectorAll('glide-core-radio');
213
- expect(radios.length).to.equal(2);
214
- radios[1].click();
215
- await elementUpdated(component);
216
- expect(radios[0]).to.not.have.focus;
217
- expect(radios[0]?.hasAttribute('checked')).to.be.true;
218
- expect(radios[1]).to.not.have.attribute('checked');
219
- });
220
- it('changes the "checked" attribute when pressing arrow and space keys', async () => {
221
- await fixture(html `<glide-core-radio-group name="name">
222
- <glide-core-radio value="value-1" checked label="One"></glide-core-radio>
223
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
224
- <glide-core-radio value="value-3" label="Three"></glide-core-radio>
225
- </glide-core-radio-group>`);
226
- const radios = document.querySelectorAll('glide-core-radio');
227
- await sendKeys({ press: 'Tab' });
228
- await sendKeys({ press: 'ArrowRight' });
229
- expect(radios[1]).to.have.focus;
230
- expect(radios[1]?.hasAttribute('checked')).to.be.true;
231
- expect(radios[0]).to.not.have.attribute('checked');
232
- await sendKeys({ press: 'ArrowDown' });
233
- expect(radios[2]).to.have.focus;
234
- expect(radios[2]?.hasAttribute('checked')).to.be.true;
235
- expect(radios[1]).to.not.have.attribute('checked');
236
- await sendKeys({ press: 'ArrowUp' });
237
- expect(radios[1]).to.have.focus;
238
- expect(radios[1]?.hasAttribute('checked')).to.be.true;
239
- expect(radios[2]).to.not.have.attribute('checked');
240
- await sendKeys({ press: 'ArrowLeft' });
241
- expect(radios[0]).to.have.focus;
242
- expect(radios[0]?.hasAttribute('checked')).to.be.true;
243
- expect(radios[1]).to.not.have.attribute('checked');
244
- radios[2].focus();
245
- await sendKeys({ press: ' ' });
246
- expect(radios[2]).to.have.focus;
247
- expect(radios[2]?.hasAttribute('checked')).to.be.true;
248
- expect(radios[0]).to.not.have.attribute('checked');
249
- });
250
- it('does not change the "checked" attribute nor focus when pressing arrow and space keys when the group is disabled', async () => {
251
- await fixture(html `<glide-core-radio-group name="name" disabled>
252
- <glide-core-radio value="value-1" checked label="One"></glide-core-radio>
253
- <glide-core-radio value="value-2" label="Two"></glide-core-radio>
254
- <glide-core-radio value="value-3" label="Three"></glide-core-radio>
255
- </glide-core-radio-group>`);
256
- const radios = document.querySelectorAll('glide-core-radio');
257
- radios[0].focus();
258
- await sendKeys({ press: 'ArrowRight' });
259
- expect(radios[0]).to.have.focus;
260
- expect(radios[0]?.hasAttribute('checked')).to.be.true;
261
- expect(radios[2]).to.not.have.attribute('checked');
262
- await sendKeys({ press: 'ArrowDown' });
263
- expect(radios[0]).to.have.focus;
264
- expect(radios[0]?.hasAttribute('checked')).to.be.true;
265
- expect(radios[2]).to.not.have.attribute('checked');
266
- await sendKeys({ press: 'ArrowUp' });
267
- expect(radios[0]).to.have.focus;
268
- expect(radios[0]?.hasAttribute('checked')).to.be.true;
269
- expect(radios[1]).to.not.have.attribute('checked');
270
- await sendKeys({ press: 'ArrowLeft' });
271
- expect(radios[0]).to.have.focus;
272
- expect(radios[0]?.hasAttribute('checked')).to.be.true;
273
- expect(radios[1]).to.not.have.attribute('checked');
274
- radios[1].focus();
275
- await sendKeys({ press: ' ' });
276
- expect(radios[0]?.hasAttribute('checked')).to.be.true;
277
- expect(radios[1]).to.not.have.attribute('checked');
278
- });
@@ -1,2 +0,0 @@
1
- import './radio-group.js';
2
- import './radio.js';