@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,203 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './tooltip.js';
3
- import { aTimeout, assert, expect, fixture, html } from '@open-wc/testing';
4
- import { sendKeys } from '@web/test-runner-commands';
5
- import GlideCoreTooltip from './tooltip.js';
6
- GlideCoreTooltip.shadowRootOptions.mode = 'open';
7
- it('is open when opened programmatically', async () => {
8
- const component = await fixture(html `<glide-core-tooltip aria-label="Label">
9
- Tooltip
10
- <span slot="target" tabindex="0">Target</span>
11
- </glide-core-tooltip>`);
12
- component.open = true;
13
- // Wait for Floating UI.
14
- await aTimeout(0);
15
- const tooltip = component.shadowRoot?.querySelector('[data-test="tooltip"]');
16
- expect(tooltip?.checkVisibility()).to.be.true;
17
- });
18
- it('is open when `open` and enabled programmatically', async () => {
19
- const component = await fixture(html `<glide-core-tooltip aria-label="Label" open disabled>
20
- Tooltip
21
- <span slot="target" tabindex="0">Target</span>
22
- </glide-core-tooltip>`);
23
- component.disabled = false;
24
- // Wait for Floating UI.
25
- await aTimeout(0);
26
- const tooltip = component.shadowRoot?.querySelector('[data-test="tooltip"]');
27
- expect(tooltip?.checkVisibility()).to.be.true;
28
- });
29
- it('is not open when `open` and disabled programmatically', async () => {
30
- const component = await fixture(html `<glide-core-tooltip aria-label="Label" open>
31
- Tooltip
32
- <span slot="target" tabindex="0">Target</span>
33
- </glide-core-tooltip>`);
34
- // Wait for Floating UI.
35
- await aTimeout(0);
36
- component.disabled = true;
37
- // Wait for Floating UI.
38
- await aTimeout(0);
39
- const tooltip = component.shadowRoot?.querySelector('[data-test="tooltip"]');
40
- expect(tooltip?.checkVisibility()).to.be.false;
41
- });
42
- it('is not open when opened programmatically and disabled', async () => {
43
- const component = await fixture(html `<glide-core-tooltip aria-label="Label" disabled>
44
- Tooltip
45
- <span slot="target" tabindex="0">Target</span>
46
- </glide-core-tooltip>`);
47
- component.open = true;
48
- // Wait for Floating UI.
49
- await aTimeout(0);
50
- const tooltip = component.shadowRoot?.querySelector('[data-test="tooltip"]');
51
- expect(tooltip?.checkVisibility()).to.be.false;
52
- });
53
- it('is visible on "focusin"', async () => {
54
- const component = await fixture(html `<glide-core-tooltip>
55
- Tooltip
56
- <span slot="target" tabindex="0">Target</span>
57
- </glide-core-tooltip>`);
58
- component.shadowRoot
59
- ?.querySelector('[data-test="target"]')
60
- ?.dispatchEvent(new FocusEvent('focusin'));
61
- // Wait for Floating UI.
62
- await aTimeout(0);
63
- expect(component.shadowRoot
64
- ?.querySelector('[data-test="tooltip"]')
65
- ?.checkVisibility()).to.be.true;
66
- });
67
- it('is hidden on "focusin" when disabled', async () => {
68
- const component = await fixture(html `<glide-core-tooltip disabled>
69
- Tooltip
70
- <span slot="target" tabindex="0">Target</span>
71
- </glide-core-tooltip>`);
72
- component.shadowRoot
73
- ?.querySelector('[data-test="target"]')
74
- ?.dispatchEvent(new FocusEvent('focusin'));
75
- // Wait for Floating UI.
76
- await aTimeout(0);
77
- expect(component.shadowRoot
78
- ?.querySelector('[data-test="tooltip"]')
79
- ?.checkVisibility()).to.be.false;
80
- });
81
- it('is hidden on "blur"', async () => {
82
- const component = await fixture(html `<glide-core-tooltip>
83
- Tooltip
84
- <span slot="target" tabindex="0">Target</span>
85
- </glide-core-tooltip>`);
86
- const target = component.shadowRoot?.querySelector('[data-test="target"]');
87
- target?.dispatchEvent(new FocusEvent('focusin'));
88
- // Wait for Floating UI.
89
- await aTimeout(0);
90
- target?.dispatchEvent(new FocusEvent('focusout'));
91
- expect(component.shadowRoot
92
- ?.querySelector('[data-test="tooltip"]')
93
- ?.checkVisibility()).to.be.false;
94
- });
95
- it('is hidden on Escape', async () => {
96
- const component = await fixture(html `<glide-core-tooltip>
97
- Tooltip
98
- <span slot="target" tabindex="0">Target</span>
99
- </glide-core-tooltip>`);
100
- component.shadowRoot
101
- ?.querySelector('[data-test="target"]')
102
- ?.dispatchEvent(new FocusEvent('focusin'));
103
- // Wait for Floating UI.
104
- await aTimeout(0);
105
- component.querySelector('span')?.focus();
106
- await sendKeys({ press: 'Escape' });
107
- expect(component.shadowRoot
108
- ?.querySelector('[data-test="tooltip"]')
109
- ?.checkVisibility()).to.be.false;
110
- });
111
- it('is visible on "mouseover"', async () => {
112
- const component = await fixture(html `<glide-core-tooltip>
113
- Tooltip
114
- <span slot="target" tabindex="0">Target</span>
115
- </glide-core-tooltip>`);
116
- const tooltip = component.shadowRoot?.querySelector('[data-test="tooltip"]');
117
- assert(tooltip);
118
- tooltip.dataset.openDelay = '0';
119
- component.shadowRoot
120
- ?.querySelector('[data-test="component"')
121
- ?.dispatchEvent(new MouseEvent('mouseover'));
122
- // Wait for Floating UI and the open delay.
123
- await aTimeout(0);
124
- expect(tooltip.checkVisibility()).to.be.true;
125
- });
126
- it('is hidden on "mouseover" when disabled', async () => {
127
- const component = await fixture(html `<glide-core-tooltip disabled>
128
- Tooltip
129
- <span slot="target" tabindex="0">Target</span>
130
- </glide-core-tooltip>`);
131
- const tooltip = component.shadowRoot?.querySelector('[data-test="tooltip"]');
132
- assert(tooltip);
133
- tooltip.dataset.openDelay = '0';
134
- component.shadowRoot
135
- ?.querySelector('[data-test="component"')
136
- ?.dispatchEvent(new MouseEvent('mouseover'));
137
- // Wait for Floating UI.
138
- await aTimeout(0);
139
- expect(tooltip.checkVisibility()).to.be.false;
140
- });
141
- it('is hidden on "mouseout"', async () => {
142
- const component = await fixture(html `<glide-core-tooltip>
143
- Tooltip
144
- <span slot="target" tabindex="0">Target</span>
145
- </glide-core-tooltip>`);
146
- const tooltip = component.shadowRoot?.querySelector('[data-test="tooltip"]');
147
- assert(tooltip);
148
- tooltip.dataset.openDelay = '0';
149
- component.shadowRoot
150
- ?.querySelector('[data-test="component"')
151
- ?.dispatchEvent(new MouseEvent('mouseover'));
152
- // Wait for Floating UI and the open delay.
153
- await aTimeout(0);
154
- tooltip.dataset.closeDelay = '0';
155
- component.shadowRoot
156
- ?.querySelector('[data-test="component"')
157
- ?.dispatchEvent(new MouseEvent('mouseout'));
158
- // Wait for the close delay.
159
- await aTimeout(0);
160
- expect(tooltip.checkVisibility()).to.be.false;
161
- });
162
- it('remains hidden if "mouseout" fires before the "mouseover" delay', async () => {
163
- const component = await fixture(html `<glide-core-tooltip>
164
- Tooltip
165
- <span slot="target" tabindex="0">Target</span>
166
- </glide-core-tooltip>`);
167
- const tooltip = component.shadowRoot?.querySelector('[data-test="tooltip"]');
168
- assert(tooltip);
169
- tooltip.dataset.openDelay = '1';
170
- tooltip.dataset.closeDelay = '0';
171
- component.shadowRoot
172
- ?.querySelector('[data-test="component"')
173
- ?.dispatchEvent(new MouseEvent('mouseover'));
174
- expect(tooltip?.checkVisibility()).to.be.false;
175
- component.shadowRoot
176
- ?.querySelector('[data-test="component"')
177
- ?.dispatchEvent(new MouseEvent('mouseout'));
178
- await aTimeout(1);
179
- expect(tooltip.checkVisibility()).to.be.false;
180
- });
181
- // This would be better served by a visual regression test. It exists only
182
- // to meet our coverage threshold, so the `middlewareData.arrow.y` branch
183
- // is hit.
184
- it('positions the tooltip when `placement="right"`', async () => {
185
- const component = await fixture(html `<glide-core-tooltip
186
- placement="right"
187
- style="align-items: center; display: flex; height: 100vh; justify-content:center; width: 100vw;"
188
- >
189
- Tooltip
190
- <span slot="target" tabindex="0">Target</span>
191
- </glide-core-tooltip>`);
192
- component.shadowRoot
193
- ?.querySelector('[data-test="target"]')
194
- ?.dispatchEvent(new FocusEvent('focusin'));
195
- // Wait for Floating UI.
196
- await aTimeout(0);
197
- const tooltipContainer = component.shadowRoot?.querySelector('[data-test="tooltip"]');
198
- const arrow = component.shadowRoot?.querySelector('[data-test="arrow"]');
199
- expect(tooltipContainer?.style.left).to.not.be.empty.string;
200
- expect(tooltipContainer?.style.top).to.not.be.empty.string;
201
- expect(arrow?.style.left).to.be.empty.string;
202
- expect(arrow?.style.top).to.not.be.empty.string;
203
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,22 +0,0 @@
1
- import { expect, fixture, html } from '@open-wc/testing';
2
- import GlideCoreTreeItemIconButton from './tree.item.icon-button.js';
3
- import expectArgumentError from './library/expect-argument-error.js';
4
- GlideCoreTreeItemIconButton.shadowRootOptions.mode = 'open';
5
- it('registers', async () => {
6
- expect(window.customElements.get('glide-core-tree-item-icon-button')).to.equal(GlideCoreTreeItemIconButton);
7
- });
8
- it('throws if it does not have a default slot', async () => {
9
- await expectArgumentError(() => {
10
- return fixture(html `
11
- <glide-core-tree-item-icon-button></glide-core-tree-item-icon-button>
12
- `);
13
- });
14
- });
15
- it('passes its label to the icon button', async () => {
16
- const component = await fixture(html `
17
- <glide-core-tree-item-icon-button label="My label"
18
- >Hello</glide-core-tree-item-icon-button
19
- >
20
- `);
21
- expect(component.shadowRoot?.querySelector('glide-core-icon-button')?.label).to.equal('My label');
22
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,86 +0,0 @@
1
- import { assert, expect, fixture, html, waitUntil } from '@open-wc/testing';
2
- import GlideCoreMenu from './menu.js';
3
- import GlideCoreTreeItemMenu from './tree.item.menu.js';
4
- import expectArgumentError from './library/expect-argument-error.js';
5
- import sinon from 'sinon';
6
- GlideCoreTreeItemMenu.shadowRootOptions.mode = 'open';
7
- GlideCoreMenu.shadowRootOptions.mode = 'open';
8
- it('registers', async () => {
9
- expect(window.customElements.get('glide-core-tree-item-menu')).to.equal(GlideCoreTreeItemMenu);
10
- });
11
- it('throws if it does not have a default slot', async () => {
12
- await expectArgumentError(() => {
13
- return fixture(html `
14
- <glide-core-tree-item-menu></glide-core-tree-item-menu>
15
- `);
16
- });
17
- });
18
- it('throws if the default slot is the incorrect type', async () => {
19
- await expectArgumentError(() => {
20
- return fixture(html `
21
- <glide-core-tree-item-menu>
22
- <button>Button</button>
23
- </glide-core-tree-item-menu>
24
- `);
25
- });
26
- // Menu is rendered asynchronously outside of Tree Menu Item's lifecycle
27
- // and asserts against its default slot. That assertion, which is expected
28
- // to fail in this case, results in an unhandled rejection that gets logged.
29
- // `console.error` is stubbed so the logs aren't muddied.
30
- const stub = sinon.stub(console, 'error');
31
- // Menu asserts against its default slot once on `firstUpdated` and again
32
- // on "slotchange". So we wait until the stub is called twice before restoring
33
- // it.
34
- await waitUntil(() => stub.calledTwice);
35
- stub.restore();
36
- });
37
- it('defaults the placement of the menu to bottom start', async () => {
38
- const component = await fixture(html `
39
- <glide-core-tree-item-menu>
40
- <glide-core-menu-link label="One" url="/one"> </glide-core-menu-link>
41
- </glide-core-tree-item-menu>
42
- `);
43
- expect(component.shadowRoot?.querySelector('glide-core-menu')?.placement).to.equal('bottom-start');
44
- });
45
- it('can set placement of the menu', async () => {
46
- const component = await fixture(html `
47
- <glide-core-tree-item-menu placement="bottom-end">
48
- <glide-core-menu-link label="One" url="/one"> </glide-core-menu-link>
49
- </glide-core-tree-item-menu>
50
- `);
51
- expect(component.shadowRoot?.querySelector('glide-core-menu')?.placement).to.equal('bottom-end');
52
- });
53
- it('can be opened programmatically', async () => {
54
- const component = await fixture(html `
55
- <glide-core-tree-item-menu>
56
- <glide-core-menu-link label="One" url="/one"> </glide-core-menu-link>
57
- </glide-core-tree-item-menu>
58
- `);
59
- expect(component.shadowRoot
60
- ?.querySelector('glide-core-menu')
61
- ?.getAttribute('open')).to.equal(null);
62
- component.click();
63
- await component.updateComplete;
64
- expect(component.shadowRoot
65
- ?.querySelector('glide-core-menu')
66
- ?.getAttribute('open')).to.equal('');
67
- });
68
- it('can set a custom icon', async () => {
69
- const component = await fixture(html `
70
- <glide-core-tree-item-menu placement="bottom-end">
71
- <svg data-test-custom-icon="true" slot="icon"></svg>
72
- <glide-core-menu-link label="One" url="/one"> </glide-core-menu-link>
73
- </glide-core-tree-item-menu>
74
- `);
75
- const menu = component.shadowRoot?.querySelector('glide-core-menu');
76
- assert(menu);
77
- const menuTarget = menu.shadowRoot
78
- ?.querySelector('slot[name="target"]')
79
- ?.assignedElements()[0];
80
- assert(menuTarget);
81
- const icon = menuTarget
82
- ?.querySelector('slot[name="icon"]')
83
- ?.assignedElements()[0];
84
- assert(icon instanceof SVGElement);
85
- expect(icon.dataset.testCustomIcon).to.equal('true');
86
- });
@@ -1,2 +0,0 @@
1
- import './menu.link.js';
2
- import './tree.item.menu.js';
@@ -1,138 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './menu.link.js';
3
- import './tree.item.menu.js';
4
- import { expect, fixture, html } from '@open-wc/testing';
5
- import Menu from './menu.js';
6
- import TreeItem from './tree.item.js';
7
- import TreeItemMenu from './tree.item.menu.js';
8
- TreeItem.shadowRootOptions.mode = 'open';
9
- TreeItemMenu.shadowRootOptions.mode = 'open';
10
- Menu.shadowRootOptions.mode = 'open';
11
- it('registers', () => {
12
- expect(window.customElements.get('glide-core-tree-item')).to.equal(TreeItem);
13
- });
14
- it('renders and sets default attributes', async () => {
15
- const component = await fixture(html `
16
- <glide-core-tree-item label="Item"></glide-core-tree-item>
17
- `);
18
- expect(component.expanded).to.be.false;
19
- expect(component.label).to.equal('Item');
20
- expect(component.level).to.equal(1);
21
- expect(component.shadowRoot?.querySelector('.expand-icon-container')).to.be
22
- .ok;
23
- });
24
- it('does not render expand-icon-container if remove-indentation is set', async () => {
25
- const component = await fixture(html `
26
- <glide-core-tree-item
27
- label="Item"
28
- remove-indentation
29
- ></glide-core-tree-item>
30
- `);
31
- expect(component.shadowRoot?.querySelector('.expand-icon-container')).to.be
32
- .null;
33
- });
34
- it('renders with a prefix slot', async () => {
35
- await fixture(html `
36
- <glide-core-tree-item label="Item">
37
- <span slot="prefix" data-prefix>prefix</span>
38
- </glide-core-tree-item>
39
- `);
40
- expect(document.querySelector('[data-prefix]')).to.be.ok;
41
- });
42
- it('adds label to menu target', async () => {
43
- const component = await fixture(html `
44
- <glide-core-tree-item label="Item">
45
- <glide-core-tree-item-menu slot="menu" data-menu>
46
- <glide-core-menu-link label="Move" url="/move"> </glide-core-menu-link>
47
- </glide-core-tree-item-menu>
48
- </glide-core-tree-item>
49
- `);
50
- const menuTarget = component
51
- .querySelector('glide-core-tree-item-menu')
52
- ?.shadowRoot?.querySelector('glide-core-menu')
53
- ?.querySelector('glide-core-icon-button');
54
- expect(menuTarget?.label).to.equal('Actions for Item');
55
- });
56
- it('renders with a suffix slot', async () => {
57
- await fixture(html `
58
- <glide-core-tree-item label="Item">
59
- <span slot="suffix" data-suffix>suffix</span>
60
- </glide-core-tree-item>
61
- `);
62
- expect(document.querySelector('[data-suffix]')).to.be.ok;
63
- });
64
- it('does not have an expand icon if there are no child tree items', async () => {
65
- const component = await fixture(html `
66
- <glide-core-tree-item label="Item"></glide-core-tree-item>
67
- `);
68
- expect(component.shadowRoot?.querySelector('.expand-icon')).to.equal(null);
69
- });
70
- it('can expand', async () => {
71
- const component = await fixture(html `
72
- <glide-core-tree-item label="Item">
73
- <glide-core-tree-item label="Child Item 1"></glide-core-tree-item>
74
- </glide-core-tree-item>
75
- `);
76
- expect([
77
- ...component.shadowRoot.querySelector('.component').classList,
78
- ]).to.deep.equal(['component']);
79
- expect([
80
- ...component.shadowRoot.querySelector('.expand-icon').classList,
81
- ]).to.deep.equal(['expand-icon']);
82
- component.toggleExpand();
83
- await component.updateComplete;
84
- expect([
85
- ...component.shadowRoot.querySelector('.component').classList,
86
- ]).to.deep.equal(['component', 'expanded']);
87
- expect([
88
- ...component.shadowRoot.querySelector('.expand-icon').classList,
89
- ]).to.deep.equal(['expand-icon', 'expand-icon-expanded']);
90
- });
91
- it('renders child and grandchild tree items', async () => {
92
- const component = await fixture(html `
93
- <glide-core-tree-item expanded label="Item">
94
- <glide-core-tree-item label="Child Item 1"></glide-core-tree-item>
95
- <glide-core-tree-item label="Child Item 2">
96
- <glide-core-tree-item label="Grandchild Item 1"></glide-core-tree-item>
97
- </glide-core-tree-item>
98
- </glide-core-tree-item>
99
- `);
100
- expect(component.shadowRoot?.querySelector('.expand-icon')).to.be.ok;
101
- const childItems = component.slotElements;
102
- expect(childItems?.length).to.equal(2);
103
- expect(childItems?.[0].level).to.equal(2, 'Children are level 2');
104
- const grandchildItems = childItems?.[1].slotElements;
105
- expect(grandchildItems?.length).to.equal(1);
106
- expect(grandchildItems?.[0].level).to.equal(3, 'Grandchildren are level 3');
107
- });
108
- it('sets the level for tree items programmatically added later', async () => {
109
- const component = await fixture(html `
110
- <glide-core-tree-item expanded label="Item"></glide-core-tree-item>
111
- `);
112
- const newItem = Object.assign(document.createElement('glide-core-tree-item'), {
113
- label: 'Child',
114
- });
115
- component.append(newItem);
116
- await component.updateComplete;
117
- expect(newItem.level).to.equal(2);
118
- });
119
- it('can select child and grandchild items', async () => {
120
- const component = await fixture(html `
121
- <glide-core-tree-item expanded label="Item">
122
- <glide-core-tree-item label="Child Item 1"></glide-core-tree-item>
123
- <glide-core-tree-item label="Child Item 2">
124
- <glide-core-tree-item label="Grandchild Item 1"></glide-core-tree-item>
125
- </glide-core-tree-item>
126
- </glide-core-tree-item>
127
- `);
128
- const childItems = component.slotElements;
129
- const grandchildItems = childItems?.[1].slotElements;
130
- component.selectItem(childItems[0]);
131
- expect(childItems[0].selected).to.be.true;
132
- expect(childItems[1].selected).to.be.false;
133
- expect(grandchildItems[0].selected).to.be.false;
134
- component.selectItem(grandchildItems[0]);
135
- expect(childItems[0].selected).to.be.false;
136
- expect(childItems[1].selected).to.be.false;
137
- expect(grandchildItems[0].selected).to.be.true;
138
- });
@@ -1,9 +0,0 @@
1
- import './icon-button.js';
2
- import './icons/storybook.js';
3
- import './menu.link.js';
4
- import './tree.item.icon-button.js';
5
- import './tree.js';
6
- import type { Meta, StoryObj } from '@storybook/web-components';
7
- declare const meta: Meta;
8
- export default meta;
9
- export declare const Tree: StoryObj;
@@ -1 +0,0 @@
1
- export {};
@@ -1,86 +0,0 @@
1
- import { expect, fixture, html } from '@open-wc/testing';
2
- import GlideCoreTree from './tree.js';
3
- import GlideCoreTreeItem from './tree.item.js';
4
- GlideCoreTree.shadowRootOptions.mode = 'open';
5
- GlideCoreTreeItem.shadowRootOptions.mode = 'open';
6
- it('is accessible', async () => {
7
- const component = await fixture(html `
8
- <glide-core-tree>
9
- <glide-core-tree-item label="Child Item 1"></glide-core-tree-item>
10
- <glide-core-tree-item label="Child Item 2">
11
- <glide-core-tree-item label="Grandchild Item 1"></glide-core-tree-item>
12
- </glide-core-tree-item>
13
- </glide-core-tree>
14
- `);
15
- await expect(component).to.be.accessible();
16
- });
17
- it('sets roles tree and treeitem', async () => {
18
- const component = await fixture(html `
19
- <glide-core-tree>
20
- <glide-core-tree-item label="Child Item 1"></glide-core-tree-item>
21
- <glide-core-tree-item label="Child Item 2">
22
- <glide-core-tree-item label="Grandchild Item 1"></glide-core-tree-item>
23
- </glide-core-tree-item>
24
- </glide-core-tree>
25
- `);
26
- const childItems = component.slotElements;
27
- expect(component.shadowRoot?.firstElementChild?.getAttribute('role')).to.equal('tree');
28
- expect(childItems[0].shadowRoot?.querySelector('.component')?.getAttribute('role')).to.equal('treeitem');
29
- expect(childItems[1].shadowRoot?.querySelector('.component')?.getAttribute('role')).to.equal('treeitem');
30
- expect(childItems[1].slotElements[0].shadowRoot
31
- ?.querySelector('.component')
32
- ?.getAttribute('role')).to.equal('treeitem');
33
- });
34
- it('sets aria-expanded correctly', async () => {
35
- const component = await fixture(html `
36
- <glide-core-tree>
37
- <glide-core-tree-item label="Child Item 1"></glide-core-tree-item>
38
- <glide-core-tree-item label="Child Item 2">
39
- <glide-core-tree-item label="Grandchild Item 1"></glide-core-tree-item>
40
- </glide-core-tree-item>
41
- <glide-core-tree-item label="Expanded child item" expanded>
42
- <glide-core-tree-item label="Grandchild Item 2"></glide-core-tree-item>
43
- </glide-core-tree-item>
44
- </glide-core-tree>
45
- `);
46
- const childItems = component.slotElements;
47
- expect(childItems[0].getAttribute('aria-expanded')).to.equal(null, 'does not set at all if there are no child items');
48
- expect(childItems[1].shadowRoot
49
- ?.querySelector('.component')
50
- ?.getAttribute('aria-expanded')).to.equal('false', 'sets to string "false" if not expanded');
51
- childItems[1].toggleExpand();
52
- await childItems[1].updateComplete;
53
- expect(childItems[1].shadowRoot
54
- ?.querySelector('.component')
55
- ?.getAttribute('aria-expanded')).to.equal('true', 'sets to string "true" after being expanded');
56
- expect(childItems[2].shadowRoot
57
- ?.querySelector('.component')
58
- ?.getAttribute('aria-expanded')).to.equal('true', 'sets to string "true" if starts as expanded');
59
- });
60
- it('sets aria-selected correctly', async () => {
61
- const component = await fixture(html `
62
- <glide-core-tree>
63
- <glide-core-tree-item label="Child Item 1">
64
- <glide-core-tree-item label="Grandchild Item 1"></glide-core-tree-item>
65
- </glide-core-tree-item>
66
- <glide-core-tree-item label="Child Item 2"></glide-core-tree-item>
67
- <glide-core-tree-item
68
- label="Child Item 3"
69
- selected
70
- ></glide-core-tree-item>
71
- </glide-core-tree>
72
- `);
73
- const childItems = component.slotElements;
74
- expect(childItems[0].getAttribute('aria-selected')).to.equal(null, 'does not set at all if there are child items');
75
- expect(childItems[1].shadowRoot
76
- ?.querySelector('.component')
77
- ?.getAttribute('aria-selected')).to.equal('false', 'sets to string "false" if not selected');
78
- expect(childItems[2].shadowRoot
79
- ?.querySelector('.component')
80
- ?.getAttribute('aria-selected')).to.equal('true', 'sets to string "true" if starts as selected');
81
- component.selectItem(childItems[1]);
82
- await childItems[1].updateComplete;
83
- expect(childItems[1].shadowRoot
84
- ?.querySelector('.component')
85
- ?.getAttribute('aria-selected')).to.equal('true', 'sets to string "true" after being selected');
86
- });
@@ -1,3 +0,0 @@
1
- import './tree.item.icon-button.js';
2
- import './tree.item.js';
3
- import './tree.js';