@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,6 +0,0 @@
1
- import './icons/storybook.js';
2
- import type { Meta, StoryObj } from '@storybook/web-components';
3
- declare const meta: Meta;
4
- export default meta;
5
- export declare const Accordion: StoryObj;
6
- export declare const WithIcons: StoryObj;
@@ -1 +0,0 @@
1
- import './accordion.js';
@@ -1,28 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './accordion.js';
3
- import { expect, fixture, html } from '@open-wc/testing';
4
- import GlideCoreAccordion from './accordion.js';
5
- GlideCoreAccordion.shadowRootOptions.mode = 'open';
6
- it('registers', async () => {
7
- expect(window.customElements.get('glide-core-accordion')).to.equal(GlideCoreAccordion);
8
- });
9
- it('is accessible', async () => {
10
- const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
11
- await expect(component).to.be.accessible();
12
- });
13
- it('has defaults', async () => {
14
- const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
15
- expect(component.open).to.be.false;
16
- });
17
- it('`#onPrefixIconSlotChange` coverage', async () => {
18
- await fixture(html `<glide-core-accordion label="Label">
19
- Content
20
- <div slot="prefix-icon"></div>
21
- </glide-core-accordion>`);
22
- });
23
- it('`#onSuffixIconsSlotChange` coverage', async () => {
24
- await fixture(html `<glide-core-accordion label="Label">
25
- Content
26
- <div slot="suffix-icons"></div>
27
- </glide-core-accordion>`);
28
- });
@@ -1 +0,0 @@
1
- import './accordion.js';
@@ -1,28 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './accordion.js';
3
- import { emulateMedia } from '@web/test-runner-commands';
4
- import { expect, fixture, html, oneEvent } from '@open-wc/testing';
5
- import GlideCoreAccordion from './accordion.js';
6
- GlideCoreAccordion.shadowRootOptions.mode = 'open';
7
- it('dispatches a "toggle" event on open', async () => {
8
- await emulateMedia({ reducedMotion: 'reduce' });
9
- const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
10
- setTimeout(() => {
11
- component.click();
12
- });
13
- const event = await oneEvent(component, 'toggle');
14
- expect(event instanceof Event).to.be.true;
15
- expect(event.bubbles).to.be.true;
16
- });
17
- it('dispatches a "toggle" event on close', async () => {
18
- await emulateMedia({ reducedMotion: 'reduce' });
19
- const component = await fixture(html `<glide-core-accordion label="Label" open>
20
- Content
21
- </glide-core-accordion>`);
22
- setTimeout(() => {
23
- component.click();
24
- });
25
- const event = await oneEvent(component, 'toggle');
26
- expect(event instanceof Event).to.be.true;
27
- expect(event.bubbles).to.be.true;
28
- });
@@ -1 +0,0 @@
1
- import './accordion.js';
@@ -1,11 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './accordion.js';
3
- import { expect, fixture, html } from '@open-wc/testing';
4
- import GlideCoreAccordion from './accordion.js';
5
- GlideCoreAccordion.shadowRootOptions.mode = 'open';
6
- it('focuses itself when `focus()` is called', async () => {
7
- const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
8
- component.focus();
9
- const summary = component?.shadowRoot?.querySelector('[data-test="summary"]');
10
- expect(component?.shadowRoot?.activeElement).to.equal(summary);
11
- });
@@ -1 +0,0 @@
1
- import './accordion.js';
@@ -1,75 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './accordion.js';
3
- import { emulateMedia } from '@web/test-runner-commands';
4
- import { expect, fixture, html, waitUntil } from '@open-wc/testing';
5
- import { sendKeys } from '@web/test-runner-commands';
6
- import GlideCoreAccordion from './accordion.js';
7
- GlideCoreAccordion.shadowRootOptions.mode = 'open';
8
- it('can be opened via click', async () => {
9
- await emulateMedia({ reducedMotion: 'reduce' });
10
- const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
11
- component.click();
12
- expect(component.open).to.be.true;
13
- });
14
- it('can be opened via click when animated', async () => {
15
- await emulateMedia({ reducedMotion: 'no-preference' });
16
- const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
17
- component.click();
18
- let animation;
19
- let isAnimationFinished = false;
20
- await waitUntil(() => {
21
- animation = component.shadowRoot
22
- ?.querySelector('[data-test="default-slot"]')
23
- ?.getAnimations()
24
- ?.at(0);
25
- return animation;
26
- });
27
- animation?.addEventListener('finish', () => {
28
- isAnimationFinished = true;
29
- });
30
- await waitUntil(() => isAnimationFinished);
31
- expect(component.open).to.be.true;
32
- });
33
- it('can be opened via Space', async () => {
34
- await emulateMedia({ reducedMotion: 'reduce' });
35
- const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
36
- component.focus();
37
- await sendKeys({ press: ' ' });
38
- expect(component.open).to.be.true;
39
- });
40
- it('can be opened via Enter', async () => {
41
- await emulateMedia({ reducedMotion: 'reduce' });
42
- const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
43
- component.focus();
44
- await sendKeys({ press: 'Enter' });
45
- expect(component.open).to.be.true;
46
- });
47
- it('can be closed via click', async () => {
48
- await emulateMedia({ reducedMotion: 'reduce' });
49
- const component = await fixture(html `<glide-core-accordion label="Label" open>
50
- Content
51
- </glide-core-accordion>`);
52
- component.click();
53
- expect(component.open).to.be.false;
54
- });
55
- it('can be closed via click when animated', async () => {
56
- await emulateMedia({ reducedMotion: 'no-preference' });
57
- const component = await fixture(html `<glide-core-accordion label="Label" open>
58
- Content
59
- </glide-core-accordion>`);
60
- component.click();
61
- let animation;
62
- let isAnimationFinished = false;
63
- await waitUntil(() => {
64
- animation = component.shadowRoot
65
- ?.querySelector('[data-test="default-slot"]')
66
- ?.getAnimations()
67
- ?.at(0);
68
- return animation;
69
- });
70
- animation?.addEventListener('finish', () => {
71
- isAnimationFinished = true;
72
- });
73
- await waitUntil(() => isAnimationFinished);
74
- expect(component.open).to.be.false;
75
- });
@@ -1 +0,0 @@
1
- import './button-group.button.js';
@@ -1,97 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './button-group.button.js';
3
- import { ArgumentError } from 'ow';
4
- import { expect, fixture, html } from '@open-wc/testing';
5
- import GlideCoreButtonGroupButton from './button-group.button.js';
6
- import sinon from 'sinon';
7
- GlideCoreButtonGroupButton.shadowRootOptions.mode = 'open';
8
- it('registers', async () => {
9
- expect(window.customElements.get('glide-core-button-group-button')).to.equal(GlideCoreButtonGroupButton);
10
- });
11
- it('has defaults', async () => {
12
- const component = await fixture(html `
13
- <glide-core-button-group-button
14
- label="Button"
15
- ></glide-core-button-group-button>
16
- `);
17
- expect(component.disabled).to.be.false;
18
- expect(component.selected).to.be.false;
19
- expect(component.value).to.equal('');
20
- expect(component.getAttribute('value')).to.equal('');
21
- expect(component).to.not.have.attribute('disabled');
22
- expect(component).to.not.have.attribute('selected');
23
- });
24
- it('is accessible', async () => {
25
- const component = await fixture(html `<glide-core-button-group-button
26
- label="Button"
27
- ></glide-core-button-group-button>`);
28
- await expect(component).to.be.accessible();
29
- });
30
- it('can have a label', async () => {
31
- const component = await fixture(html `<glide-core-button-group-button
32
- label="Button"
33
- selected
34
- ></glide-core-button-group-button>`);
35
- expect(component.shadowRoot?.textContent?.trim()).to.equal('Button');
36
- });
37
- it('sets `aria-checked` when selected', async () => {
38
- const component = await fixture(html `<glide-core-button-group-button
39
- label="Button"
40
- selected
41
- ></glide-core-button-group-button>`);
42
- const radio = component.shadowRoot?.querySelector('[role="radio"]');
43
- expect(radio?.getAttribute('aria-checked')).to.equal('true');
44
- });
45
- it('sets `aria-checked` when not selected', async () => {
46
- const component = await fixture(html `<glide-core-button-group-button
47
- label="Button"
48
- ></glide-core-button-group-button>`);
49
- const radio = component.shadowRoot?.querySelector('[role="radio"]');
50
- expect(radio?.getAttribute('aria-checked')).to.equal('false');
51
- });
52
- it('sets `aria-disabled` when disabled', async () => {
53
- const component = await fixture(html `<glide-core-button-group-button
54
- label="Button"
55
- disabled
56
- ></glide-core-button-group-button>`);
57
- const radio = component.shadowRoot?.querySelector('[role="radio"]');
58
- expect(radio?.getAttribute('aria-disabled')).to.equal('true');
59
- });
60
- it('sets `aria-disabled` when not disabled', async () => {
61
- const component = await fixture(html `<glide-core-button-group-button
62
- label="Button"
63
- ></glide-core-button-group-button>`);
64
- const radio = component.shadowRoot?.querySelector('[role="radio"]');
65
- expect(radio?.getAttribute('aria-disabled')).to.equal('false');
66
- });
67
- it('is tabbable when selected', async () => {
68
- const component = await fixture(html `<glide-core-button-group-button
69
- label="Button"
70
- selected
71
- ></glide-core-button-group-button>`);
72
- const radio = component.shadowRoot?.querySelector('[role="radio"]');
73
- expect(radio?.getAttribute('tabindex')).to.equal('0');
74
- });
75
- it('is not tabbable when not selected', async () => {
76
- const component = await fixture(html `<glide-core-button-group-button
77
- label="Button"
78
- ></glide-core-button-group-button>`);
79
- const radio = component.shadowRoot?.querySelector('[role="radio"]');
80
- expect(radio?.getAttribute('tabindex')).to.equal('-1');
81
- });
82
- it('throws when icon-only and no "icon" slot', async () => {
83
- const spy = sinon.spy();
84
- try {
85
- await fixture(html `<glide-core-button-group-button
86
- value="value"
87
- selected
88
- privateVariant="icon-only"
89
- ></glide-core-button-group-button>`);
90
- }
91
- catch (error) {
92
- if (error instanceof ArgumentError) {
93
- spy();
94
- }
95
- }
96
- expect(spy.callCount).to.equal(1);
97
- });
@@ -1 +0,0 @@
1
- import './button-group.button.js';
@@ -1,15 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './button-group.button.js';
3
- import { expect, fixture, html, oneEvent } from '@open-wc/testing';
4
- import GlideCoreButtonGroupButton from './button-group.button.js';
5
- it('emits a "private-selected" event when selected', async () => {
6
- const component = await fixture(html `<glide-core-button-group-button
7
- label="Button"
8
- ></glide-core-button-group-button>`);
9
- setTimeout(() => {
10
- component.selected = true;
11
- });
12
- const event = await oneEvent(component, 'private-selected');
13
- expect(event instanceof Event).to.be.true;
14
- expect(event.bubbles).to.be.true;
15
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,13 +0,0 @@
1
- import { expect, fixture, html } from '@open-wc/testing';
2
- import GlideCoreButtonGroupButton from './button-group.button.js';
3
- GlideCoreButtonGroupButton.shadowRootOptions.mode = 'open';
4
- it('focuses itself when `focus()` is called ', async () => {
5
- const component = await fixture(html `
6
- <glide-core-button-group-button
7
- label="Button"
8
- ></glide-core-button-group-button>
9
- `);
10
- component.focus();
11
- const radio = component.shadowRoot?.querySelector('[role="radio"]');
12
- expect(component.shadowRoot?.activeElement).to.equal(radio);
13
- });
@@ -1 +0,0 @@
1
- import './button-group.button.js';
@@ -1,42 +0,0 @@
1
- import './button-group.button.js';
2
- import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
3
- import GlideCoreButtonGroupButton from './button-group.button.js';
4
- GlideCoreButtonGroupButton.shadowRootOptions.mode = 'open';
5
- it('sets `aria-checked` when selected programmatically', async () => {
6
- const component = await fixture(html `<glide-core-button-group-button
7
- label="Button"
8
- ></glide-core-button-group-button>`);
9
- component.selected = true;
10
- await elementUpdated(component);
11
- const radio = component.shadowRoot?.querySelector('[role="radio"]');
12
- expect(radio?.getAttribute('aria-checked')).to.equal('true');
13
- });
14
- it('sets `aria-checked` when deselected programmatically', async () => {
15
- const component = await fixture(html `<glide-core-button-group-button
16
- label="Button"
17
- selected
18
- ></glide-core-button-group-button>`);
19
- component.selected = false;
20
- await elementUpdated(component);
21
- const radio = component.shadowRoot?.querySelector('[role="radio"]');
22
- expect(radio?.getAttribute('aria-checked')).to.equal('false');
23
- });
24
- it('sets `aria-disabled` when disabled programmatically', async () => {
25
- const component = await fixture(html `<glide-core-button-group-button
26
- label="Button"
27
- ></glide-core-button-group-button>`);
28
- component.disabled = true;
29
- await elementUpdated(component);
30
- const radio = component.shadowRoot?.querySelector('[role="radio"]');
31
- expect(radio?.getAttribute('aria-disabled')).to.equal('true');
32
- });
33
- it('sets `aria-disabled` when enabled programmatically', async () => {
34
- const component = await fixture(html `<glide-core-button-group-button
35
- label="Button"
36
- disabled
37
- ></glide-core-button-group-button>`);
38
- component.disabled = false;
39
- await elementUpdated(component);
40
- const radio = component.shadowRoot?.querySelector('[role="radio"]');
41
- expect(radio?.getAttribute('aria-disabled')).to.equal('false');
42
- });
@@ -1,7 +0,0 @@
1
- import './button-group.js';
2
- import './icons/storybook.js';
3
- import type { Meta, StoryObj } from '@storybook/web-components';
4
- declare const meta: Meta;
5
- export default meta;
6
- export declare const ButtonGroup: StoryObj;
7
- export declare const WithIcons: StoryObj;
@@ -1 +0,0 @@
1
- import './button-group.js';
@@ -1,148 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-expressions */
2
- import './button-group.js';
3
- import { expect, fixture, html } from '@open-wc/testing';
4
- import GlideCoreButtonGroup from './button-group.js';
5
- import GlideCoreButtonGroupButton from './button-group.button.js';
6
- import expectArgumentError from './library/expect-argument-error.js';
7
- GlideCoreButtonGroup.shadowRootOptions.mode = 'open';
8
- GlideCoreButtonGroupButton.shadowRootOptions.mode = 'open';
9
- it('registers', async () => {
10
- expect(window.customElements.get('glide-core-button-group')).to.equal(GlideCoreButtonGroup);
11
- });
12
- it('has defaults', async () => {
13
- const component = await fixture(html `<glide-core-button-group label="Label">
14
- <glide-core-button-group-button
15
- label="One"
16
- ></glide-core-button-group-button>
17
-
18
- <glide-core-button-group-button
19
- label="Two"
20
- ></glide-core-button-group-button>
21
- </glide-core-button-group>`);
22
- expect(component.orientation).to.equal('horizontal');
23
- expect(component.variant).to.equal(undefined);
24
- expect(component.getAttribute('orientation')).to.equal('horizontal');
25
- expect(component).to.not.have.attribute('variant');
26
- });
27
- it('is accessible', async () => {
28
- const component = await fixture(html `<glide-core-button-group label="Label">
29
- <glide-core-button-group-button
30
- label="One"
31
- ></glide-core-button-group-button>
32
-
33
- <glide-core-button-group-button
34
- label="Two"
35
- ></glide-core-button-group-button>
36
- </glide-core-button-group>`);
37
- // It's unfortunate to ignore this rule. But the label doesn't meet color
38
- // contrast requirements.
39
- // Axe has an `ignoreTags` but no `ignoreSelectors`.
40
- await expect(component).to.be.accessible({
41
- ignoredRules: ['color-contrast'],
42
- });
43
- });
44
- it('can have a label', async () => {
45
- const component = await fixture(html `<glide-core-button-group label="Label">
46
- <glide-core-button-group-button
47
- label="One"
48
- ></glide-core-button-group-button>
49
-
50
- <glide-core-button-group-button
51
- label="Two"
52
- ></glide-core-button-group-button>
53
- </glide-core-button-group>`);
54
- const label = component.shadowRoot?.querySelector('[data-test="label"]');
55
- const radioGroup = component.shadowRoot?.querySelector('[role="radiogroup"]');
56
- expect(label?.textContent).to.equal('Label');
57
- expect(radioGroup?.getAttribute('aria-labelledby')).to.equal(label?.id);
58
- });
59
- it('sets the orientation of each button when horizontal', async () => {
60
- await fixture(html `<glide-core-button-group>
61
- <glide-core-button-group-button
62
- label="One"
63
- ></glide-core-button-group-button>
64
-
65
- <glide-core-button-group-button
66
- label="Two"
67
- ></glide-core-button-group-button>
68
- </glide-core-button-group>`);
69
- const buttons = document.querySelectorAll('glide-core-button-group-button');
70
- expect(buttons[0]?.privateOrientation).to.equal('horizontal');
71
- expect(buttons[1]?.privateOrientation).to.equal('horizontal');
72
- });
73
- it('sets the orientation of each button when vertical', async () => {
74
- await fixture(html `<glide-core-button-group orientation="vertical">
75
- <glide-core-button-group-button
76
- label="One"
77
- ></glide-core-button-group-button>
78
-
79
- <glide-core-button-group-button
80
- label="Two"
81
- ></glide-core-button-group-button>
82
- </glide-core-button-group>`);
83
- const buttons = document.querySelectorAll('glide-core-button-group-button');
84
- expect(buttons[0]?.privateOrientation).to.equal('vertical');
85
- expect(buttons[1]?.privateOrientation).to.equal('vertical');
86
- });
87
- it('sets `privateVariant` on each button', async () => {
88
- await fixture(html `<glide-core-button-group label="Label" variant="icon-only">
89
- <glide-core-button-group-button label="One">
90
- <div slot="icon">Icon</div>
91
- </glide-core-button-group-button>
92
-
93
- <glide-core-button-group-button label="Two">
94
- <div slot="icon">Icon</div>
95
- </glide-core-button-group-button>
96
- </glide-core-button-group>`);
97
- const buttons = document.querySelectorAll('glide-core-button-group-button');
98
- expect(buttons[0].privateVariant).to.equal('icon-only');
99
- expect(buttons[1].privateVariant).to.equal('icon-only');
100
- });
101
- it('throws when its default slot is the wrong type', async () => {
102
- await expectArgumentError(() => {
103
- return fixture(html `
104
- <glide-core-button-group label="Label">
105
- <div></div>
106
- </glide-core-button-group>
107
- `);
108
- });
109
- await expectArgumentError(() => {
110
- return fixture(html `<glide-core-button-group label="Label"> </glide-core-button-group>`);
111
- });
112
- });
113
- it('selects the first button not disabled', async () => {
114
- await fixture(html `<glide-core-button-group>
115
- <glide-core-button-group-button
116
- label="One"
117
- disabled
118
- ></glide-core-button-group-button>
119
-
120
- <glide-core-button-group-button
121
- label="Two"
122
- ></glide-core-button-group-button>
123
-
124
- <glide-core-button-group-button
125
- label="Three"
126
- ></glide-core-button-group-button>
127
- </glide-core-button-group>`);
128
- const buttons = document.querySelectorAll('glide-core-button-group-button');
129
- expect(buttons[0].selected).to.be.false;
130
- expect(buttons[1].selected).to.be.true;
131
- expect(buttons[2].selected).to.be.false;
132
- });
133
- it('selects no buttons when all are disabled', async () => {
134
- await fixture(html `<glide-core-button-group>
135
- <glide-core-button-group-button
136
- label="One"
137
- disabled
138
- ></glide-core-button-group-button>
139
-
140
- <glide-core-button-group-button
141
- label="Two"
142
- disabled
143
- ></glide-core-button-group-button>
144
- </glide-core-button-group>`);
145
- const buttons = document.querySelectorAll('glide-core-button-group-button');
146
- expect(buttons[0].selected).to.be.false;
147
- expect(buttons[1].selected).to.be.false;
148
- });
@@ -1 +0,0 @@
1
- import './button-group.button.js';