@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,434 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './tab.group.js';
3
- import './tab.js';
4
- import './tab.panel.js';
5
- import { emulateMedia } from '@web/test-runner-commands';
6
- import { expect, fixture, html, waitUntil } from '@open-wc/testing';
7
- import { sendKeys } from '@web/test-runner-commands';
8
- import GlideCoreTabGroup from './tab.group.js';
9
- import GlideCoreTabPanel from './tab.panel.js';
10
- import sinon from 'sinon';
11
- GlideCoreTabGroup.shadowRootOptions.mode = 'open';
12
- GlideCoreTabPanel.shadowRootOptions.mode = 'open';
13
- it('does not render overflow buttons when there is no overflow', async () => {
14
- const component = await fixture(html `
15
- <div style="width:25rem">
16
- <glide-core-tab-group>
17
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
18
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
19
- <glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
20
- <glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
21
- <glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
22
- <glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
23
-
24
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
25
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
26
- <glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
27
- <glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
28
- <glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
29
- <glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
30
- </glide-core-tab-group>
31
- </div>
32
- `);
33
- const tabGroup = component.querySelector('glide-core-tab-group');
34
- const startOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]');
35
- expect(startOverflowButton).to.be.null;
36
- const endOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]');
37
- expect(endOverflowButton).to.be.null;
38
- });
39
- it('renders overflow buttons when there is overflow', async () => {
40
- const component = await fixture(html `
41
- <div style="width:23rem">
42
- <glide-core-tab-group>
43
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
44
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
45
- <glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
46
- <glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
47
- <glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
48
- <glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
49
-
50
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
51
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
52
- <glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
53
- <glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
54
- <glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
55
- <glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
56
- </glide-core-tab-group>
57
- </div>
58
- `);
59
- const tabGroup = component.querySelector('glide-core-tab-group');
60
- await waitUntil(() => {
61
- return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
62
- tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
63
- });
64
- });
65
- it('renders a disabled start-overflow button when there is only overflow towards the end', async () => {
66
- const component = await fixture(html `
67
- <div style="width:23rem">
68
- <glide-core-tab-group>
69
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
70
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
71
- <glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
72
- <glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
73
- <glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
74
- <glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
75
-
76
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
77
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
78
- <glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
79
- <glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
80
- <glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
81
- <glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
82
- </glide-core-tab-group>
83
- </div>
84
- `);
85
- const tabGroup = component.querySelector('glide-core-tab-group');
86
- await waitUntil(() => {
87
- return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
88
- tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
89
- });
90
- const startOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]');
91
- expect(startOverflowButton?.disabled).to.be.true;
92
- const endOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]');
93
- expect(endOverflowButton?.disabled).to.be.false;
94
- });
95
- it('renders a disabled end-overflow button when there is only overflow at the start', async () => {
96
- const component = await fixture(html `
97
- <div style="width:23rem">
98
- <glide-core-tab-group>
99
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
100
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
101
- <glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
102
- <glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
103
- <glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
104
- <glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
105
-
106
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
107
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
108
- <glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
109
- <glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
110
- <glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
111
- <glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
112
- </glide-core-tab-group>
113
- </div>
114
- `);
115
- const tabGroup = component.querySelector('glide-core-tab-group');
116
- await waitUntil(() => {
117
- return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
118
- tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
119
- });
120
- // Need to get the tab group into a state where there
121
- // is overflow at the start -- do this by first scrolling to the end
122
- const startOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]');
123
- expect(startOverflowButton?.disabled).to.be.true;
124
- const endOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]');
125
- expect(endOverflowButton?.disabled).to.be.false;
126
- endOverflowButton?.click();
127
- await waitUntil(() => {
128
- return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]')?.disabled === true);
129
- });
130
- expect(startOverflowButton?.disabled).to.be.false;
131
- });
132
- it('scrolls tabs when overflow buttons are clicked', async () => {
133
- await emulateMedia({ reducedMotion: 'reduce' });
134
- const spy = sinon.spy();
135
- const component = await fixture(html `
136
- <div style="width:23rem">
137
- <glide-core-tab-group>
138
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
139
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
140
- <glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
141
- <glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
142
- <glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
143
- <glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
144
-
145
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
146
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
147
- <glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
148
- <glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
149
- <glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
150
- <glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
151
- </glide-core-tab-group>
152
- </div>
153
- `);
154
- const tabGroup = component.querySelector('glide-core-tab-group');
155
- await waitUntil(() => {
156
- return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
157
- tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
158
- });
159
- tabGroup?.shadowRoot
160
- ?.querySelector('[role="tablist"]')
161
- ?.addEventListener('scroll', spy);
162
- const endOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]');
163
- endOverflowButton?.click();
164
- await waitUntil(() => tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]')?.disabled === true);
165
- expect(spy.callCount).to.equal(1);
166
- spy.resetHistory();
167
- const startOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]');
168
- expect(startOverflowButton).to.be.not.null;
169
- expect(startOverflowButton?.disabled).to.be.false;
170
- startOverflowButton?.click();
171
- await waitUntil(() => tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]')?.disabled === true);
172
- expect(spy.callCount).to.equal(1);
173
- expect(startOverflowButton?.disabled).to.be.true;
174
- expect(endOverflowButton?.disabled).to.be.false;
175
- await emulateMedia({ reducedMotion: 'no-preference' });
176
- });
177
- it('removes overflow buttons when the component is resized and there is no overflow', async () => {
178
- const component = await fixture(html `
179
- <div style="width:23rem" data-test="test-parent">
180
- <glide-core-tab-group>
181
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
182
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
183
- <glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
184
- <glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
185
- <glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
186
- <glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
187
-
188
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
189
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
190
- <glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
191
- <glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
192
- <glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
193
- <glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
194
- </glide-core-tab-group>
195
- </div>
196
- `);
197
- const tabGroup = component.querySelector('glide-core-tab-group');
198
- await waitUntil(() => {
199
- return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
200
- tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
201
- });
202
- const container = document?.querySelector('[data-test="test-parent"]');
203
- expect(container).to.be.not.null;
204
- container.style.width = 'auto';
205
- await waitUntil(() => tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') === null &&
206
- tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') === null);
207
- });
208
- it('renders overflow buttons when the component is resized and there is overflow', async () => {
209
- const component = await fixture(html `
210
- <div data-test="test-parent">
211
- <glide-core-tab-group>
212
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
213
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
214
- <glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
215
- <glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
216
- <glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
217
- <glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
218
-
219
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
220
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
221
- <glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
222
- <glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
223
- <glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
224
- <glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
225
- </glide-core-tab-group>
226
- </div>
227
- `);
228
- const tabGroup = component.querySelector('glide-core-tab-group');
229
- const startOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]');
230
- const endOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]');
231
- expect(startOverflowButton).to.be.null;
232
- expect(endOverflowButton).to.be.null;
233
- const container = document?.querySelector('[data-test="test-parent"]');
234
- expect(container).to.be.not.null;
235
- container.style.width = '23rem';
236
- await waitUntil(() => tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
237
- tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
238
- });
239
- it('has only one active tab that is tabbable after pressing the Enter key', async () => {
240
- const component = await fixture(html `
241
- <glide-core-tab-group>
242
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
243
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
244
- <glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
245
- <glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
246
-
247
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
248
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
249
- <glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
250
- <glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
251
- </glide-core-tab-group>
252
- `);
253
- const [firstTab, secondTab, thirdTab, fourthTab] = component.tabElements;
254
- expect(firstTab.active).to.be.true;
255
- expect(secondTab.active).to.be.false;
256
- expect(thirdTab.active).to.be.false;
257
- expect(fourthTab.active).to.be.false;
258
- expect(firstTab.tabIndex).to.equal(0);
259
- expect(secondTab.tabIndex).to.equal(-1);
260
- expect(thirdTab.tabIndex).to.equal(-1);
261
- expect(fourthTab.tabIndex).to.equal(-1);
262
- firstTab.focus();
263
- await sendKeys({ press: 'ArrowRight' });
264
- await sendKeys({ press: 'Enter' });
265
- expect(firstTab.active).to.be.false;
266
- expect(secondTab.active).to.be.true;
267
- expect(thirdTab.active).to.be.false;
268
- expect(fourthTab.active).to.be.false;
269
- expect(firstTab.tabIndex).to.equal(-1);
270
- expect(secondTab.tabIndex).to.equal(0);
271
- expect(thirdTab.tabIndex).to.equal(-1);
272
- expect(fourthTab.tabIndex).to.equal(-1);
273
- await sendKeys({ press: 'End' });
274
- await sendKeys({ press: 'Enter' });
275
- expect(firstTab.active).to.be.false;
276
- expect(secondTab.active).to.be.false;
277
- expect(thirdTab.active).to.be.false;
278
- expect(fourthTab.active).to.be.true;
279
- expect(firstTab.tabIndex).to.equal(-1);
280
- expect(secondTab.tabIndex).to.equal(-1);
281
- expect(thirdTab.tabIndex).to.equal(-1);
282
- expect(fourthTab.tabIndex).to.equal(0);
283
- await sendKeys({ press: 'ArrowLeft' });
284
- await sendKeys({ press: 'Enter' });
285
- expect(firstTab.active).to.be.false;
286
- expect(secondTab.active).to.be.false;
287
- expect(thirdTab.active).to.be.true;
288
- expect(fourthTab.active).to.be.false;
289
- expect(firstTab.tabIndex).to.equal(-1);
290
- expect(secondTab.tabIndex).to.equal(-1);
291
- expect(thirdTab.tabIndex).to.equal(0);
292
- expect(fourthTab.tabIndex).to.equal(-1);
293
- await sendKeys({ press: 'Home' });
294
- await sendKeys({ press: 'Enter' });
295
- expect(firstTab.active).to.be.true;
296
- expect(secondTab.active).to.be.false;
297
- expect(thirdTab.active).to.be.false;
298
- expect(fourthTab.active).to.be.false;
299
- expect(firstTab.tabIndex).to.equal(0);
300
- expect(secondTab.tabIndex).to.equal(-1);
301
- expect(thirdTab.tabIndex).to.equal(-1);
302
- expect(fourthTab.tabIndex).to.equal(-1);
303
- });
304
- it('has only one active tab that is tabbable when clicked', async () => {
305
- const component = await fixture(html `
306
- <glide-core-tab-group>
307
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
308
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
309
- <glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
310
-
311
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
312
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
313
- <glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
314
- </glide-core-tab-group>
315
- `);
316
- const [firstTab, secondTab, thirdTab] = component.tabElements;
317
- expect(firstTab.active).to.be.true;
318
- expect(secondTab.active).to.be.false;
319
- expect(thirdTab.active).to.be.false;
320
- expect(firstTab.tabIndex).to.equal(0);
321
- expect(secondTab.tabIndex).to.equal(-1);
322
- expect(thirdTab.tabIndex).to.equal(-1);
323
- secondTab.click();
324
- expect(firstTab.active).to.be.false;
325
- expect(secondTab.active).to.be.true;
326
- expect(thirdTab.active).to.be.false;
327
- expect(firstTab.tabIndex).to.equal(-1);
328
- expect(secondTab.tabIndex).to.equal(0);
329
- expect(thirdTab.tabIndex).to.equal(-1);
330
- thirdTab.click();
331
- expect(firstTab.active).to.be.false;
332
- expect(secondTab.active).to.be.false;
333
- expect(thirdTab.active).to.be.true;
334
- expect(firstTab.tabIndex).to.equal(-1);
335
- expect(secondTab.tabIndex).to.equal(-1);
336
- expect(thirdTab.tabIndex).to.equal(0);
337
- });
338
- it('has only one tab panel that is active and tabbable when a tab is clicked', async () => {
339
- const component = await fixture(html `
340
- <glide-core-tab-group>
341
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
342
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
343
-
344
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
345
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
346
- </glide-core-tab-group>
347
- `);
348
- const [, secondTab] = component.tabElements;
349
- const [firstPanel, secondPanel] = component.panelElements;
350
- expect(firstPanel.isActive).to.be.true;
351
- expect(secondPanel.isActive).to.be.false;
352
- expect(firstPanel.tabIndex).to.equal(0);
353
- expect(secondPanel.tabIndex).to.equal(-1);
354
- secondTab.click();
355
- expect(firstPanel.isActive).to.be.false;
356
- expect(secondPanel.isActive).to.be.true;
357
- expect(firstPanel.tabIndex).to.equal(-1);
358
- expect(secondPanel.tabIndex).to.equal(0);
359
- });
360
- it('has only one tab panel that is active and tabbable when using the keyboard to make selections', async () => {
361
- const component = await fixture(html `
362
- <glide-core-tab-group>
363
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
364
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
365
-
366
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
367
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
368
- </glide-core-tab-group>
369
- `);
370
- const [firstTab] = component.tabElements;
371
- const [firstPanel, secondPanel] = component.panelElements;
372
- expect(firstPanel.isActive).to.be.true;
373
- expect(secondPanel.isActive).to.be.false;
374
- expect(firstPanel.tabIndex).to.equal(0);
375
- expect(secondPanel.tabIndex).to.equal(-1);
376
- firstTab.focus();
377
- await sendKeys({ press: 'ArrowRight' });
378
- await sendKeys({ press: 'Enter' });
379
- expect(firstPanel.isActive).to.be.false;
380
- expect(secondPanel.isActive).to.be.true;
381
- expect(firstPanel.tabIndex).to.equal(-1);
382
- expect(secondPanel.tabIndex).to.equal(0);
383
- });
384
- it('sets the last keyboard focused tab as tabbable ', async () => {
385
- const component = await fixture(html `
386
- <glide-core-tab-group>
387
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
388
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
389
-
390
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
391
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
392
- </glide-core-tab-group>
393
- `);
394
- const [firstTab, secondTab] = component.tabElements;
395
- expect(firstTab.active).to.be.true;
396
- expect(secondTab.active).to.be.false;
397
- expect(firstTab.tabIndex).to.equal(0);
398
- expect(secondTab.tabIndex).to.equal(-1);
399
- firstTab.focus();
400
- await sendKeys({ press: 'ArrowRight' });
401
- expect(firstTab.active).to.be.true;
402
- expect(secondTab.active).to.be.false;
403
- expect(firstTab.tabIndex).to.equal(-1);
404
- expect(secondTab.tabIndex).to.equal(0);
405
- });
406
- it('sets the active tab as tabbable on tab blur', async () => {
407
- // This behavior is to ensure that the last active tab is the first tabbable
408
- // element in the component.
409
- const component = await fixture(html `
410
- <glide-core-tab-group>
411
- <glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
412
- <glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
413
-
414
- <glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
415
- <glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
416
- </glide-core-tab-group>
417
- `);
418
- const [firstTab, secondTab] = component.tabElements;
419
- expect(firstTab.active).to.be.true;
420
- expect(secondTab.active).to.be.false;
421
- expect(firstTab.tabIndex).to.equal(0);
422
- expect(secondTab.tabIndex).to.equal(-1);
423
- firstTab.focus();
424
- await sendKeys({ press: 'ArrowRight' });
425
- expect(firstTab.active).to.be.true;
426
- expect(secondTab.active).to.be.false;
427
- expect(firstTab.tabIndex).to.equal(-1);
428
- expect(secondTab.tabIndex).to.equal(0);
429
- secondTab.blur();
430
- expect(firstTab.active).to.be.true;
431
- expect(secondTab.active).to.be.false;
432
- expect(firstTab.tabIndex).to.equal(0);
433
- expect(secondTab.tabIndex).to.equal(-1);
434
- });
@@ -1 +0,0 @@
1
- import './tab.js';
@@ -1,50 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './tab.js';
3
- import { expect, fixture, html } from '@open-wc/testing';
4
- import GlideCoreTab from './tab.js';
5
- GlideCoreTab.shadowRootOptions.mode = 'open';
6
- it('registers', async () => {
7
- expect(window.customElements.get('glide-core-tab')).to.equal(GlideCoreTab);
8
- });
9
- it('renders correct markup and sets correct attributes for the default case', async () => {
10
- const component = await fixture(html `
11
- <glide-core-tab>Tab</glide-core-tab>
12
- `);
13
- await expect(component).to.not.be.accessible();
14
- expect(component.active).to.be.false;
15
- expect(component.disabled).to.be.false;
16
- expect(component.getAttribute('aria-disabled')).to.equal(null, 'does not set aria-disabled');
17
- expect([...component.shadowRoot.firstElementChild.classList]).to.deep.equal(['component']);
18
- });
19
- it('sets the panel attribute', async () => {
20
- const component = await fixture(html `
21
- <glide-core-tab panel="details">Tab</glide-core-tab>
22
- `);
23
- expect(component.panel).to.equal('details');
24
- });
25
- it('sets the active attribute', async () => {
26
- const component = await fixture(html `
27
- <glide-core-tab active>Tab</glide-core-tab>
28
- `);
29
- expect(component.active).to.be.true;
30
- });
31
- it('sets the disabled attribute', async () => {
32
- const component = await fixture(html `
33
- <glide-core-tab disabled>Tab</glide-core-tab>
34
- `);
35
- expect(component.disabled).to.be.true;
36
- expect(component?.getAttribute('aria-disabled')).to.equal('true');
37
- });
38
- it('renders the icon slot', async () => {
39
- const component = await fixture(html `
40
- <glide-core-tab>
41
- <span slot="icon">Icon</span>
42
- <span>Tab</span>
43
- </glide-core-tab>
44
- `);
45
- const slotNodes = component
46
- .shadowRoot.querySelector('slot[name="icon"]')
47
- ?.assignedNodes();
48
- expect(slotNodes?.length).to.equal(1);
49
- expect(slotNodes?.at(0)?.textContent?.trim()).to.equal('Icon');
50
- });
@@ -1,8 +0,0 @@
1
- import './icons/storybook.js';
2
- import './tab.group.js';
3
- import './tab.panel.js';
4
- import type { Meta, StoryObj } from '@storybook/web-components';
5
- declare const meta: Meta;
6
- export default meta;
7
- export declare const Tabs: StoryObj;
8
- export declare const WithOverflow: StoryObj;
@@ -1,7 +0,0 @@
1
- import './icons/storybook.js';
2
- import './tag.js';
3
- import type { Meta, StoryObj } from '@storybook/web-components';
4
- declare const meta: Meta;
5
- export default meta;
6
- export declare const Tag: StoryObj;
7
- export declare const WithIcon: StoryObj;
@@ -1 +0,0 @@
1
- export {};
@@ -1,28 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import { aTimeout, elementUpdated, expect, fixture, html, } from '@open-wc/testing';
3
- import GlideCoreTag from './tag.js';
4
- GlideCoreTag.shadowRootOptions.mode = 'open';
5
- it('registers', async () => {
6
- expect(window.customElements.get('glide-core-tag')).to.equal(GlideCoreTag);
7
- });
8
- it('is accessible', async () => {
9
- const component = await fixture(html `<glide-core-tag label="Label"></glide-core-tag>`);
10
- // Wait for the animation to complete.
11
- await aTimeout(100);
12
- await expect(component).to.be.accessible();
13
- component.removable = true;
14
- await elementUpdated(component);
15
- await expect(component).to.be.accessible();
16
- });
17
- it('has defaults', async () => {
18
- const component = await fixture(html `<glide-core-tag label="Label"></glide-core-tag>`);
19
- expect(component.disabled).to.be.false;
20
- expect(component.removable).to.be.false;
21
- expect(component.size).to.equal('medium');
22
- });
23
- it('can be removed', async () => {
24
- const component = await fixture(html `<glide-core-tag label="Label" removable></glide-core-tag>`);
25
- const button = component.shadowRoot?.querySelector('[data-test="removal-button"]');
26
- expect(button?.checkVisibility()).to.be.true;
27
- expect(button?.getAttribute('aria-label')).to.equal('Remove tag: Label');
28
- });
@@ -1 +0,0 @@
1
- import './tag.js';
@@ -1,93 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './tag.js';
3
- import { expect, fixture, html, oneEvent } from '@open-wc/testing';
4
- import { sendKeys } from '@web/test-runner-commands';
5
- import GlideCoreTag from './tag.js';
6
- import sinon from 'sinon';
7
- GlideCoreTag.shadowRootOptions.mode = 'open';
8
- it('dispatches one "remove" event on click', async () => {
9
- const component = await fixture(html `<glide-core-tag label="Label" removable></glide-core-tag>`);
10
- setTimeout(() => {
11
- component.shadowRoot
12
- ?.querySelector('[data-test="removal-button"]')
13
- ?.click();
14
- });
15
- const spy = sinon.spy();
16
- component.addEventListener('remove', spy);
17
- const event = await oneEvent(component, 'remove');
18
- expect(event instanceof Event).to.be.true;
19
- expect(event.bubbles).to.be.true;
20
- expect(event.composed).to.be.true;
21
- expect(spy.callCount).to.equal(1);
22
- });
23
- it('dispatches one "remove" event on Enter ', async () => {
24
- const component = await fixture(html `<glide-core-tag label="Label" removable></glide-core-tag>`);
25
- component.shadowRoot
26
- ?.querySelector('[data-test="removal-button"]')
27
- ?.focus();
28
- sendKeys({ press: 'Enter' });
29
- const spy = sinon.spy();
30
- component.addEventListener('remove', spy);
31
- const event = await oneEvent(component, 'remove');
32
- expect(event instanceof Event).to.be.true;
33
- expect(event.bubbles).to.be.true;
34
- expect(event.composed).to.be.true;
35
- expect(spy.callCount).to.equal(1);
36
- });
37
- it('dispatches one "remove" event on Space ', async () => {
38
- const component = await fixture(html `<glide-core-tag label="Label" removable></glide-core-tag>`);
39
- component.shadowRoot
40
- ?.querySelector('[data-test="removal-button"]')
41
- ?.focus();
42
- sendKeys({ press: ' ' });
43
- const spy = sinon.spy();
44
- component.addEventListener('remove', spy);
45
- const event = await oneEvent(component, 'remove');
46
- expect(event instanceof Event).to.be.true;
47
- expect(event.bubbles).to.be.true;
48
- expect(event.composed).to.be.true;
49
- expect(spy.callCount).to.equal(1);
50
- });
51
- it('dispatches one "edit" event on click', async () => {
52
- const component = await fixture(html `<glide-core-tag label="Label" private-editable></glide-core-tag>`);
53
- setTimeout(() => {
54
- component.shadowRoot
55
- ?.querySelector('[data-test="edit-button"]')
56
- ?.click();
57
- });
58
- const spy = sinon.spy();
59
- component.addEventListener('edit', spy);
60
- const event = await oneEvent(component, 'edit');
61
- expect(event instanceof Event).to.be.true;
62
- expect(event.bubbles).to.be.true;
63
- expect(event.composed).to.be.true;
64
- expect(spy.callCount).to.equal(1);
65
- });
66
- it('dispatches one "edit" event on Enter ', async () => {
67
- const component = await fixture(html `<glide-core-tag label="Label" private-editable></glide-core-tag>`);
68
- component.shadowRoot
69
- ?.querySelector('[data-test="edit-button"]')
70
- ?.focus();
71
- sendKeys({ press: 'Enter' });
72
- const spy = sinon.spy();
73
- component.addEventListener('edit', spy);
74
- const event = await oneEvent(component, 'edit');
75
- expect(event instanceof Event).to.be.true;
76
- expect(event.bubbles).to.be.true;
77
- expect(event.composed).to.be.true;
78
- expect(spy.callCount).to.equal(1);
79
- });
80
- it('dispatches one "edit" event on Space ', async () => {
81
- const component = await fixture(html `<glide-core-tag label="Label" private-editable></glide-core-tag>`);
82
- component.shadowRoot
83
- ?.querySelector('[data-test="edit-button"]')
84
- ?.focus();
85
- sendKeys({ press: ' ' });
86
- const spy = sinon.spy();
87
- component.addEventListener('edit', spy);
88
- const event = await oneEvent(component, 'edit');
89
- expect(event instanceof Event).to.be.true;
90
- expect(event.bubbles).to.be.true;
91
- expect(event.composed).to.be.true;
92
- expect(spy.callCount).to.equal(1);
93
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,10 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import { expect, fixture, html } from '@open-wc/testing';
3
- import GlideCoreTag from './tag.js';
4
- GlideCoreTag.shadowRootOptions.mode = 'open';
5
- it('calling `focus()` focuses the button', async () => {
6
- const component = await fixture(html `<glide-core-tag label="Label" removable></glide-core-tag>`);
7
- component.focus();
8
- const button = component.shadowRoot?.querySelector('[data-test="removal-button"]');
9
- expect(component.shadowRoot?.activeElement).to.equal(button);
10
- });
@@ -1 +0,0 @@
1
- export {};