@crowdstrike/glide-core 0.13.1 → 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 (284) 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.styles.js +3 -2
  5. package/dist/input.styles.js +1 -0
  6. package/dist/styles/variables.css +1 -1
  7. package/dist/textarea.styles.js +2 -0
  8. package/dist/toasts.d.ts +2 -2
  9. package/dist/toasts.toast.d.ts +1 -1
  10. package/dist/toasts.toast.js +1 -1
  11. package/dist/toasts.toast.styles.js +8 -0
  12. package/dist/tree.item.styles.js +2 -2
  13. package/package.json +8 -5
  14. package/dist/accordion.stories.d.ts +0 -6
  15. package/dist/accordion.test.basics.d.ts +0 -1
  16. package/dist/accordion.test.basics.js +0 -28
  17. package/dist/accordion.test.events.d.ts +0 -1
  18. package/dist/accordion.test.events.js +0 -28
  19. package/dist/accordion.test.focus.d.ts +0 -1
  20. package/dist/accordion.test.focus.js +0 -11
  21. package/dist/accordion.test.interactions.d.ts +0 -1
  22. package/dist/accordion.test.interactions.js +0 -75
  23. package/dist/button-group.button.test.basics.d.ts +0 -1
  24. package/dist/button-group.button.test.basics.js +0 -97
  25. package/dist/button-group.button.test.events.d.ts +0 -1
  26. package/dist/button-group.button.test.events.js +0 -15
  27. package/dist/button-group.button.test.focus.d.ts +0 -1
  28. package/dist/button-group.button.test.focus.js +0 -13
  29. package/dist/button-group.button.test.interactions.d.ts +0 -1
  30. package/dist/button-group.button.test.interactions.js +0 -42
  31. package/dist/button-group.stories.d.ts +0 -7
  32. package/dist/button-group.test.basics.d.ts +0 -1
  33. package/dist/button-group.test.basics.js +0 -148
  34. package/dist/button-group.test.events.d.ts +0 -1
  35. package/dist/button-group.test.events.js +0 -241
  36. package/dist/button-group.test.focus.d.ts +0 -1
  37. package/dist/button-group.test.focus.js +0 -39
  38. package/dist/button-group.test.interactions.d.ts +0 -1
  39. package/dist/button-group.test.interactions.js +0 -91
  40. package/dist/button.stories.d.ts +0 -7
  41. package/dist/button.test.basics.d.ts +0 -1
  42. package/dist/button.test.basics.js +0 -69
  43. package/dist/button.test.events.d.ts +0 -1
  44. package/dist/button.test.events.js +0 -102
  45. package/dist/checkbox-group.stories.d.ts +0 -6
  46. package/dist/checkbox-group.test.basics.d.ts +0 -1
  47. package/dist/checkbox-group.test.basics.js +0 -116
  48. package/dist/checkbox-group.test.events.d.ts +0 -1
  49. package/dist/checkbox-group.test.events.js +0 -111
  50. package/dist/checkbox-group.test.focus.d.ts +0 -1
  51. package/dist/checkbox-group.test.focus.js +0 -70
  52. package/dist/checkbox-group.test.form.d.ts +0 -1
  53. package/dist/checkbox-group.test.form.js +0 -131
  54. package/dist/checkbox-group.test.interactions.d.ts +0 -1
  55. package/dist/checkbox-group.test.interactions.js +0 -82
  56. package/dist/checkbox-group.test.validity.d.ts +0 -1
  57. package/dist/checkbox-group.test.validity.js +0 -145
  58. package/dist/checkbox.stories.d.ts +0 -5
  59. package/dist/checkbox.test.basics.d.ts +0 -1
  60. package/dist/checkbox.test.basics.js +0 -90
  61. package/dist/checkbox.test.events.d.ts +0 -1
  62. package/dist/checkbox.test.events.js +0 -105
  63. package/dist/checkbox.test.focus.d.ts +0 -1
  64. package/dist/checkbox.test.focus.js +0 -51
  65. package/dist/checkbox.test.form.d.ts +0 -1
  66. package/dist/checkbox.test.form.js +0 -133
  67. package/dist/checkbox.test.interactions.d.ts +0 -1
  68. package/dist/checkbox.test.interactions.js +0 -131
  69. package/dist/checkbox.test.validity.d.ts +0 -1
  70. package/dist/checkbox.test.validity.js +0 -128
  71. package/dist/drawer.stories.d.ts +0 -6
  72. package/dist/drawer.test.accessibility.d.ts +0 -1
  73. package/dist/drawer.test.accessibility.js +0 -22
  74. package/dist/drawer.test.basics.d.ts +0 -1
  75. package/dist/drawer.test.basics.js +0 -44
  76. package/dist/drawer.test.closing.d.ts +0 -1
  77. package/dist/drawer.test.closing.js +0 -40
  78. package/dist/drawer.test.events.d.ts +0 -1
  79. package/dist/drawer.test.events.js +0 -42
  80. package/dist/drawer.test.methods.d.ts +0 -1
  81. package/dist/drawer.test.methods.js +0 -35
  82. package/dist/dropdown.option.test.basics.d.ts +0 -1
  83. package/dist/dropdown.option.test.basics.js +0 -34
  84. package/dist/dropdown.option.test.basics.multiple.d.ts +0 -1
  85. package/dist/dropdown.option.test.basics.multiple.js +0 -36
  86. package/dist/dropdown.option.test.basics.single.d.ts +0 -1
  87. package/dist/dropdown.option.test.basics.single.js +0 -29
  88. package/dist/dropdown.option.test.events.d.ts +0 -1
  89. package/dist/dropdown.option.test.events.js +0 -36
  90. package/dist/dropdown.option.test.focus.d.ts +0 -1
  91. package/dist/dropdown.option.test.focus.js +0 -11
  92. package/dist/dropdown.option.test.interactions.multiple.d.ts +0 -1
  93. package/dist/dropdown.option.test.interactions.multiple.js +0 -42
  94. package/dist/dropdown.option.test.interactions.single.d.ts +0 -1
  95. package/dist/dropdown.option.test.interactions.single.js +0 -76
  96. package/dist/dropdown.stories.d.ts +0 -8
  97. package/dist/dropdown.test.basics.d.ts +0 -1
  98. package/dist/dropdown.test.basics.filterable.d.ts +0 -1
  99. package/dist/dropdown.test.basics.filterable.js +0 -108
  100. package/dist/dropdown.test.basics.js +0 -181
  101. package/dist/dropdown.test.basics.multiple.d.ts +0 -1
  102. package/dist/dropdown.test.basics.multiple.js +0 -259
  103. package/dist/dropdown.test.basics.single.d.ts +0 -1
  104. package/dist/dropdown.test.basics.single.js +0 -122
  105. package/dist/dropdown.test.events.d.ts +0 -1
  106. package/dist/dropdown.test.events.filterable.d.ts +0 -1
  107. package/dist/dropdown.test.events.filterable.js +0 -31
  108. package/dist/dropdown.test.events.js +0 -251
  109. package/dist/dropdown.test.events.multiple.d.ts +0 -1
  110. package/dist/dropdown.test.events.multiple.js +0 -446
  111. package/dist/dropdown.test.events.single.d.ts +0 -1
  112. package/dist/dropdown.test.events.single.js +0 -343
  113. package/dist/dropdown.test.focus.d.ts +0 -1
  114. package/dist/dropdown.test.focus.filterable.d.ts +0 -1
  115. package/dist/dropdown.test.focus.filterable.js +0 -140
  116. package/dist/dropdown.test.focus.js +0 -107
  117. package/dist/dropdown.test.focus.multiple.d.ts +0 -1
  118. package/dist/dropdown.test.focus.multiple.js +0 -170
  119. package/dist/dropdown.test.focus.single.d.ts +0 -1
  120. package/dist/dropdown.test.focus.single.js +0 -42
  121. package/dist/dropdown.test.form.d.ts +0 -1
  122. package/dist/dropdown.test.form.js +0 -74
  123. package/dist/dropdown.test.form.multiple.d.ts +0 -1
  124. package/dist/dropdown.test.form.multiple.js +0 -151
  125. package/dist/dropdown.test.form.single.d.ts +0 -1
  126. package/dist/dropdown.test.form.single.js +0 -129
  127. package/dist/dropdown.test.interactions.d.ts +0 -1
  128. package/dist/dropdown.test.interactions.filterable.d.ts +0 -1
  129. package/dist/dropdown.test.interactions.filterable.js +0 -805
  130. package/dist/dropdown.test.interactions.js +0 -696
  131. package/dist/dropdown.test.interactions.multiple.d.ts +0 -1
  132. package/dist/dropdown.test.interactions.multiple.js +0 -1026
  133. package/dist/dropdown.test.interactions.single.d.ts +0 -1
  134. package/dist/dropdown.test.interactions.single.js +0 -569
  135. package/dist/dropdown.test.validity.d.ts +0 -1
  136. package/dist/dropdown.test.validity.js +0 -181
  137. package/dist/form-controls-layout.stories.d.ts +0 -10
  138. package/dist/form-controls-layout.test.basics.d.ts +0 -2
  139. package/dist/form-controls-layout.test.basics.js +0 -75
  140. package/dist/form-controls-layout.test.interactions.d.ts +0 -2
  141. package/dist/form-controls-layout.test.interactions.js +0 -26
  142. package/dist/icon-button.stories.d.ts +0 -6
  143. package/dist/icon-button.test.basics.d.ts +0 -1
  144. package/dist/icon-button.test.basics.js +0 -43
  145. package/dist/icon-button.test.focus.d.ts +0 -1
  146. package/dist/icon-button.test.focus.js +0 -13
  147. package/dist/input.stories.d.ts +0 -8
  148. package/dist/input.test.basics.d.ts +0 -1
  149. package/dist/input.test.basics.js +0 -138
  150. package/dist/input.test.events.d.ts +0 -1
  151. package/dist/input.test.events.js +0 -98
  152. package/dist/input.test.focus.d.ts +0 -1
  153. package/dist/input.test.focus.js +0 -58
  154. package/dist/input.test.form.d.ts +0 -1
  155. package/dist/input.test.form.js +0 -74
  156. package/dist/input.test.validity.d.ts +0 -1
  157. package/dist/input.test.validity.js +0 -258
  158. package/dist/label.test.basics.d.ts +0 -1
  159. package/dist/label.test.basics.js +0 -136
  160. package/dist/menu.button.test.basics.d.ts +0 -1
  161. package/dist/menu.button.test.basics.js +0 -43
  162. package/dist/menu.link.test.basics.d.ts +0 -1
  163. package/dist/menu.link.test.basics.js +0 -47
  164. package/dist/menu.options.test.basics.d.ts +0 -2
  165. package/dist/menu.options.test.basics.js +0 -44
  166. package/dist/menu.options.test.events.d.ts +0 -1
  167. package/dist/menu.options.test.events.js +0 -19
  168. package/dist/menu.stories.d.ts +0 -11
  169. package/dist/menu.test.basics.d.ts +0 -1
  170. package/dist/menu.test.basics.js +0 -178
  171. package/dist/menu.test.events.d.ts +0 -3
  172. package/dist/menu.test.events.js +0 -125
  173. package/dist/menu.test.focus.d.ts +0 -2
  174. package/dist/menu.test.focus.js +0 -102
  175. package/dist/menu.test.interactions.d.ts +0 -3
  176. package/dist/menu.test.interactions.js +0 -1069
  177. package/dist/modal.icon-button.test.basics.d.ts +0 -1
  178. package/dist/modal.icon-button.test.basics.js +0 -46
  179. package/dist/modal.stories.d.ts +0 -13
  180. package/dist/modal.tertiary-icon.test.basics.d.ts +0 -1
  181. package/dist/modal.tertiary-icon.test.basics.js +0 -60
  182. package/dist/modal.test.accessibility.d.ts +0 -1
  183. package/dist/modal.test.accessibility.js +0 -38
  184. package/dist/modal.test.basics.d.ts +0 -3
  185. package/dist/modal.test.basics.js +0 -204
  186. package/dist/modal.test.close.d.ts +0 -1
  187. package/dist/modal.test.close.js +0 -35
  188. package/dist/modal.test.events.d.ts +0 -1
  189. package/dist/modal.test.events.js +0 -99
  190. package/dist/modal.test.lock-scroll.d.ts +0 -1
  191. package/dist/modal.test.lock-scroll.js +0 -67
  192. package/dist/modal.test.methods.d.ts +0 -1
  193. package/dist/modal.test.methods.js +0 -20
  194. package/dist/modal.test.scrollbars.d.ts +0 -1
  195. package/dist/modal.test.scrollbars.js +0 -18
  196. package/dist/radio-group.stories.d.ts +0 -6
  197. package/dist/radio-group.test.basics.d.ts +0 -2
  198. package/dist/radio-group.test.basics.js +0 -324
  199. package/dist/radio-group.test.events.d.ts +0 -2
  200. package/dist/radio-group.test.events.js +0 -278
  201. package/dist/radio-group.test.focus.d.ts +0 -2
  202. package/dist/radio-group.test.focus.js +0 -95
  203. package/dist/radio-group.test.form.d.ts +0 -1
  204. package/dist/radio-group.test.form.js +0 -124
  205. package/dist/radio-group.test.validity.d.ts +0 -1
  206. package/dist/radio-group.test.validity.js +0 -311
  207. package/dist/split-button.primary-button.test.basics.d.ts +0 -1
  208. package/dist/split-button.primary-button.test.basics.js +0 -31
  209. package/dist/split-button.primary-button.test.focus.d.ts +0 -1
  210. package/dist/split-button.primary-button.test.focus.js +0 -14
  211. package/dist/split-button.primary-link.test.basics.d.ts +0 -1
  212. package/dist/split-button.primary-link.test.basics.js +0 -30
  213. package/dist/split-button.primary-link.test.focus.d.ts +0 -1
  214. package/dist/split-button.primary-link.test.focus.js +0 -15
  215. package/dist/split-button.secondary-button.test.basics.d.ts +0 -1
  216. package/dist/split-button.secondary-button.test.basics.js +0 -58
  217. package/dist/split-button.secondary-button.test.focus.d.ts +0 -1
  218. package/dist/split-button.secondary-button.test.focus.js +0 -14
  219. package/dist/split-button.secondary-button.test.interactions.d.ts +0 -2
  220. package/dist/split-button.secondary-button.test.interactions.js +0 -30
  221. package/dist/split-button.stories.d.ts +0 -13
  222. package/dist/split-button.test.basics.d.ts +0 -2
  223. package/dist/split-button.test.basics.js +0 -87
  224. package/dist/split-button.test.interactions.d.ts +0 -4
  225. package/dist/split-button.test.interactions.js +0 -51
  226. package/dist/tab.group.test.basics.d.ts +0 -3
  227. package/dist/tab.group.test.basics.js +0 -234
  228. package/dist/tab.group.test.interactions.d.ts +0 -3
  229. package/dist/tab.group.test.interactions.js +0 -434
  230. package/dist/tab.test.basics.d.ts +0 -1
  231. package/dist/tab.test.basics.js +0 -50
  232. package/dist/tabs.stories.d.ts +0 -8
  233. package/dist/tag.stories.d.ts +0 -7
  234. package/dist/tag.test.basics.d.ts +0 -1
  235. package/dist/tag.test.basics.js +0 -28
  236. package/dist/tag.test.events.d.ts +0 -1
  237. package/dist/tag.test.events.js +0 -93
  238. package/dist/tag.test.focus.d.ts +0 -1
  239. package/dist/tag.test.focus.js +0 -10
  240. package/dist/tag.test.interactions.d.ts +0 -1
  241. package/dist/tag.test.interactions.js +0 -36
  242. package/dist/textarea.stories.d.ts +0 -5
  243. package/dist/textarea.test.basics.d.ts +0 -1
  244. package/dist/textarea.test.basics.js +0 -177
  245. package/dist/textarea.test.events.d.ts +0 -1
  246. package/dist/textarea.test.events.js +0 -106
  247. package/dist/textarea.test.form.d.ts +0 -1
  248. package/dist/textarea.test.form.js +0 -71
  249. package/dist/textarea.test.validity.d.ts +0 -1
  250. package/dist/textarea.test.validity.js +0 -204
  251. package/dist/toasts.stories.d.ts +0 -7
  252. package/dist/toasts.test.basics.d.ts +0 -1
  253. package/dist/toasts.test.basics.js +0 -115
  254. package/dist/toasts.toast.test.basics.d.ts +0 -1
  255. package/dist/toasts.toast.test.basics.js +0 -139
  256. package/dist/toggle.stories.d.ts +0 -4
  257. package/dist/toggle.test.basics.d.ts +0 -1
  258. package/dist/toggle.test.basics.js +0 -69
  259. package/dist/toggle.test.events.d.ts +0 -1
  260. package/dist/toggle.test.events.js +0 -30
  261. package/dist/toggle.test.focus.d.ts +0 -1
  262. package/dist/toggle.test.focus.js +0 -9
  263. package/dist/toggle.test.interactions.d.ts +0 -1
  264. package/dist/toggle.test.interactions.js +0 -81
  265. package/dist/tooltip.stories.d.ts +0 -7
  266. package/dist/tooltip.test.basics.d.ts +0 -1
  267. package/dist/tooltip.test.basics.js +0 -100
  268. package/dist/tooltip.test.interactions.d.ts +0 -1
  269. package/dist/tooltip.test.interactions.js +0 -203
  270. package/dist/tree.item.icon-button.test.basics.d.ts +0 -1
  271. package/dist/tree.item.icon-button.test.basics.js +0 -22
  272. package/dist/tree.item.menu.test.basics.d.ts +0 -1
  273. package/dist/tree.item.menu.test.basics.js +0 -86
  274. package/dist/tree.item.test.basics.d.ts +0 -2
  275. package/dist/tree.item.test.basics.js +0 -138
  276. package/dist/tree.stories.d.ts +0 -9
  277. package/dist/tree.test.aria.d.ts +0 -1
  278. package/dist/tree.test.aria.js +0 -86
  279. package/dist/tree.test.basics.d.ts +0 -3
  280. package/dist/tree.test.basics.js +0 -130
  281. package/dist/tree.test.events.d.ts +0 -2
  282. package/dist/tree.test.events.js +0 -19
  283. package/dist/tree.test.focus.d.ts +0 -1
  284. 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 {};