@crowdstrike/glide-core 0.8.0 → 0.9.1
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.
- package/dist/accordion.d.ts +7 -3
- package/dist/button-group.button.d.ts +12 -16
- package/dist/button-group.button.js +1 -1
- package/dist/button-group.button.styles.js +76 -52
- package/dist/button-group.button.test.basics.d.ts +1 -1
- package/dist/button-group.button.test.basics.js +83 -147
- package/dist/button-group.button.test.events.js +8 -67
- package/dist/button-group.button.test.focus.js +13 -0
- package/dist/button-group.button.test.interactions.d.ts +1 -0
- package/dist/button-group.button.test.interactions.js +42 -0
- package/dist/button-group.d.ts +10 -10
- package/dist/button-group.js +1 -1
- package/dist/button-group.stories.d.ts +1 -5
- package/dist/button-group.styles.js +18 -6
- package/dist/button-group.test.basics.js +113 -234
- package/dist/button-group.test.events.js +210 -263
- package/dist/button-group.test.focus.d.ts +1 -0
- package/dist/button-group.test.focus.js +39 -0
- package/dist/button-group.test.interactions.d.ts +1 -0
- package/dist/button-group.test.interactions.js +91 -0
- package/dist/button.d.ts +3 -0
- package/dist/button.test.basics.js +1 -1
- package/dist/checkbox-group.d.ts +6 -2
- package/dist/checkbox-group.js +1 -1
- package/dist/checkbox-group.stories.d.ts +1 -1
- package/dist/checkbox-group.styles.js +1 -1
- package/dist/checkbox-group.test.basics.js +1 -1
- package/dist/checkbox-group.test.events.js +4 -4
- package/dist/checkbox-group.test.focus.js +4 -3
- package/dist/checkbox.d.ts +12 -5
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.stories.d.ts +1 -1
- package/dist/checkbox.styles.js +10 -0
- package/dist/checkbox.test.basics.js +15 -6
- package/dist/checkbox.test.events.js +16 -8
- package/dist/checkbox.test.focus.js +3 -3
- package/dist/checkbox.test.form.js +1 -0
- package/dist/checkbox.test.interactions.js +123 -0
- package/dist/drawer.d.ts +5 -5
- package/dist/drawer.js +1 -1
- package/dist/drawer.stories.d.ts +0 -1
- package/dist/dropdown.d.ts +9 -6
- package/dist/dropdown.js +1 -1
- package/dist/dropdown.option.d.ts +6 -2
- package/dist/dropdown.option.js +1 -1
- package/dist/dropdown.option.styles.js +13 -0
- package/dist/dropdown.option.test.basics.js +6 -3
- package/dist/dropdown.option.test.events.js +1 -1
- package/dist/dropdown.option.test.focus.js +1 -1
- package/dist/dropdown.option.test.interactions.multiple.js +1 -54
- package/dist/dropdown.option.test.interactions.single.js +51 -9
- package/dist/dropdown.styles.js +20 -19
- package/dist/dropdown.test.basics.js +143 -2
- package/dist/dropdown.test.basics.multiple.js +5 -2
- package/dist/dropdown.test.events.filterable.js +74 -0
- package/dist/dropdown.test.events.js +49 -160
- package/dist/dropdown.test.events.multiple.js +265 -8
- package/dist/dropdown.test.events.single.js +199 -2
- package/dist/dropdown.test.focus.filterable.js +9 -5
- package/dist/dropdown.test.focus.js +1 -1
- package/dist/dropdown.test.focus.multiple.js +1 -1
- package/dist/dropdown.test.focus.single.js +1 -1
- package/dist/dropdown.test.interactions.filterable.js +68 -11
- package/dist/dropdown.test.interactions.js +94 -5
- package/dist/dropdown.test.interactions.multiple.js +202 -5
- package/dist/dropdown.test.interactions.single.js +68 -6
- package/dist/form-controls-layout.test.basics.js +1 -1
- package/dist/icon-button.d.ts +2 -0
- package/dist/icon-button.test.basics.js +1 -1
- package/dist/icons/checked.d.ts +1 -1
- package/dist/icons/checked.js +1 -1
- package/dist/icons/magnifying-glass.js +1 -1
- package/dist/input.d.ts +4 -9
- package/dist/input.js +1 -1
- package/dist/input.styles.js +7 -2
- package/dist/input.test.basics.js +19 -5
- package/dist/input.test.events.js +4 -4
- package/dist/input.test.focus.js +4 -4
- package/dist/input.test.translations.d.ts +1 -0
- package/dist/input.test.translations.js +38 -0
- package/dist/input.test.validity.js +133 -4
- package/dist/label.d.ts +1 -1
- package/dist/label.js +1 -1
- package/dist/label.styles.js +25 -13
- package/dist/label.test.basics.js +26 -24
- package/dist/library/expect-argument-error.js +1 -1
- package/dist/library/localize.d.ts +4 -1
- package/dist/menu.d.ts +3 -5
- package/dist/menu.js +1 -1
- package/dist/menu.options.test.basics.js +2 -2
- package/dist/menu.styles.js +1 -15
- package/dist/menu.test.basics.d.ts +1 -2
- package/dist/menu.test.basics.js +22 -6
- package/dist/menu.test.events.js +197 -7
- package/dist/menu.test.focus.d.ts +1 -0
- package/dist/menu.test.focus.js +13 -6
- package/dist/menu.test.interactions.js +214 -58
- package/dist/modal.icon-button.test.basics.js +1 -1
- package/dist/modal.js +1 -1
- package/dist/modal.stories.d.ts +1 -0
- package/dist/modal.styles.js +18 -13
- package/dist/modal.tertiary-icon.d.ts +0 -1
- package/dist/modal.tertiary-icon.js +1 -1
- package/dist/modal.tertiary-icon.test.basics.js +3 -3
- package/dist/modal.test.basics.js +1 -1
- package/dist/modal.test.events.js +10 -10
- package/dist/radio-group.d.ts +4 -3
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.stories.d.ts +1 -1
- package/dist/radio-group.styles.js +1 -1
- package/dist/radio-group.test.focus.js +3 -3
- package/dist/radio.d.ts +2 -2
- package/dist/radio.js +1 -1
- package/dist/radio.styles.js +33 -0
- package/dist/split-container.d.ts +1 -1
- package/dist/split-container.test.basics.js +4 -0
- package/dist/split-link.test.interactions.js +1 -1
- package/dist/status-indicator.d.ts +1 -1
- package/dist/styles/variables.css +1 -1
- package/dist/tab.d.ts +1 -1
- package/dist/tab.group.js +1 -1
- package/dist/tab.group.test.basics.js +1 -1
- package/dist/tab.group.test.interactions.js +198 -2
- package/dist/tab.js +1 -1
- package/dist/tab.panel.d.ts +1 -0
- package/dist/tab.panel.js +1 -1
- package/dist/tab.panel.styles.js +11 -1
- package/dist/tabs.stories.d.ts +1 -0
- package/dist/tag.d.ts +3 -6
- package/dist/tag.test.basics.js +2 -2
- package/dist/textarea.d.ts +4 -4
- package/dist/textarea.js +2 -2
- package/dist/textarea.stories.d.ts +3 -4
- package/dist/textarea.styles.js +14 -3
- package/dist/textarea.test.basics.js +80 -44
- package/dist/textarea.test.events.js +56 -41
- package/dist/textarea.test.translations.d.ts +1 -0
- package/dist/textarea.test.translations.js +34 -0
- package/dist/textarea.test.validity.js +104 -20
- package/dist/toasts.js +1 -1
- package/dist/toasts.styles.js +8 -1
- package/dist/toasts.test.basics.js +20 -0
- package/dist/toggle.d.ts +3 -3
- package/dist/toggle.js +1 -1
- package/dist/toggle.stories.d.ts +1 -1
- package/dist/toggle.test.focus.js +1 -1
- package/dist/toggle.test.interactions.d.ts +1 -0
- package/dist/{toggle.test.states.js → toggle.test.interactions.js} +26 -0
- package/dist/tooltip.d.ts +9 -7
- package/dist/tooltip.js +1 -1
- package/dist/tooltip.styles.js +90 -25
- package/dist/tooltip.test.basics.js +38 -3
- package/dist/tooltip.test.interactions.js +136 -34
- package/dist/translations/en.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/tree.d.ts +1 -2
- package/dist/tree.item.d.ts +1 -5
- package/dist/tree.item.icon-button.d.ts +1 -0
- package/dist/tree.item.icon-button.js +1 -1
- package/dist/tree.item.icon-button.test.basics.js +9 -0
- package/dist/tree.item.js +1 -1
- package/dist/tree.item.menu.d.ts +2 -1
- package/dist/tree.item.menu.js +1 -1
- package/dist/tree.item.menu.test.basics.js +15 -0
- package/dist/tree.item.styles.js +2 -0
- package/dist/tree.item.test.basics.d.ts +2 -1
- package/dist/tree.item.test.basics.js +46 -4
- package/dist/tree.js +1 -1
- package/dist/tree.test.basics.js +1 -1
- package/dist/tree.test.focus.js +91 -4
- package/package.json +3 -4
- package/dist/checkbox.test.states.js +0 -63
- package/dist/drawer.test.floating-components.d.ts +0 -1
- package/dist/drawer.test.floating-components.js +0 -52
- package/dist/library/set-containing-block.d.ts +0 -15
- package/dist/library/set-containing-block.js +0 -1
- package/dist/modal.test.floating-components.js +0 -63
- /package/dist/{checkbox.test.states.d.ts → button-group.button.test.focus.d.ts} +0 -0
- /package/dist/{modal.test.floating-components.d.ts → checkbox.test.interactions.d.ts} +0 -0
- /package/dist/{toggle.test.states.d.ts → dropdown.test.events.filterable.d.ts} +0 -0
@@ -1,292 +1,239 @@
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
2
|
import './button-group.button.js';
|
3
|
-
import {
|
3
|
+
import { aTimeout, expect, fixture, html, oneEvent } from '@open-wc/testing';
|
4
4
|
import { sendKeys } from '@web/test-runner-commands';
|
5
5
|
import GlideCoreButtonGroup from './button-group.js';
|
6
6
|
import GlideCoreButtonGroupButton from './button-group.button.js';
|
7
|
+
import sinon from 'sinon';
|
7
8
|
GlideCoreButtonGroup.shadowRootOptions.mode = 'open';
|
8
9
|
GlideCoreButtonGroupButton.shadowRootOptions.mode = 'open';
|
9
|
-
it('emits a change event when
|
10
|
-
await fixture(html `<glide-core-button-group>
|
11
|
-
<glide-core-button-group-button
|
12
|
-
|
13
|
-
>
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
>Button 3</glide-core-button-group-button
|
19
|
-
>
|
10
|
+
it('emits a "change" event when a button is clicked and not already selected', async () => {
|
11
|
+
const component = await fixture(html `<glide-core-button-group>
|
12
|
+
<glide-core-button-group-button
|
13
|
+
label="One"
|
14
|
+
></glide-core-button-group-button>
|
15
|
+
|
16
|
+
<glide-core-button-group-button
|
17
|
+
label="Two"
|
18
|
+
></glide-core-button-group-button>
|
20
19
|
</glide-core-button-group>`);
|
21
|
-
const
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
const changeEventLeft = await oneEvent(buttonElements[0], 'change');
|
29
|
-
expect(changeEventLeft instanceof Event).to.be.true;
|
30
|
-
expect(changeEventLeft.bubbles).to.be.true;
|
31
|
-
setTimeout(async () => await sendKeys({ press: 'ArrowRight' }));
|
32
|
-
const changeEventRight = await oneEvent(buttonElements[1], 'change');
|
33
|
-
expect(changeEventRight instanceof Event).to.be.true;
|
34
|
-
expect(changeEventRight.bubbles).to.be.true;
|
35
|
-
setTimeout(async () => await sendKeys({ press: 'ArrowUp' }));
|
36
|
-
const changeEventUp = await oneEvent(buttonElements[0], 'change');
|
37
|
-
expect(changeEventUp instanceof Event).to.be.true;
|
38
|
-
expect(changeEventUp.bubbles).to.be.true;
|
39
|
-
setTimeout(async () => await sendKeys({ press: 'ArrowDown' }));
|
40
|
-
const changeEventDown = await oneEvent(buttonElements[1], 'change');
|
41
|
-
expect(changeEventDown instanceof Event).to.be.true;
|
42
|
-
expect(changeEventDown.bubbles).to.be.true;
|
20
|
+
const button = component.querySelector('glide-core-button-group-button:last-of-type');
|
21
|
+
setTimeout(() => {
|
22
|
+
button?.click();
|
23
|
+
});
|
24
|
+
const event = await oneEvent(component, 'change');
|
25
|
+
expect(event instanceof Event).to.be.true;
|
26
|
+
expect(event.bubbles).to.be.true;
|
43
27
|
});
|
44
|
-
it('emits an input event when
|
45
|
-
await fixture(html `<glide-core-button-group>
|
46
|
-
<glide-core-button-group-button
|
47
|
-
|
48
|
-
>
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
>Button 3</glide-core-button-group-button
|
54
|
-
>
|
28
|
+
it('emits an "input" event when a button is clicked and not already selected', async () => {
|
29
|
+
const component = await fixture(html `<glide-core-button-group>
|
30
|
+
<glide-core-button-group-button
|
31
|
+
label="One"
|
32
|
+
></glide-core-button-group-button>
|
33
|
+
|
34
|
+
<glide-core-button-group-button
|
35
|
+
label="Two"
|
36
|
+
></glide-core-button-group-button>
|
55
37
|
</glide-core-button-group>`);
|
56
|
-
const
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
expect(
|
62
|
-
|
63
|
-
const inputEventRight = await oneEvent(buttonElements[1], 'input');
|
64
|
-
expect(inputEventRight instanceof Event).to.be.true;
|
65
|
-
expect(inputEventRight.bubbles).to.be.true;
|
66
|
-
setTimeout(async () => await sendKeys({ press: 'ArrowUp' }));
|
67
|
-
const inputEventUp = await oneEvent(buttonElements[0], 'input');
|
68
|
-
expect(inputEventUp instanceof Event).to.be.true;
|
69
|
-
expect(inputEventUp.bubbles).to.be.true;
|
70
|
-
setTimeout(async () => await sendKeys({ press: 'ArrowDown' }));
|
71
|
-
const inputEventDown = await oneEvent(buttonElements[1], 'input');
|
72
|
-
expect(inputEventDown instanceof Event).to.be.true;
|
73
|
-
expect(inputEventDown.bubbles).to.be.true;
|
38
|
+
const button = component.querySelector('glide-core-button-group-button:last-of-type');
|
39
|
+
setTimeout(() => {
|
40
|
+
button?.click();
|
41
|
+
});
|
42
|
+
const event = await oneEvent(component, 'input');
|
43
|
+
expect(event instanceof Event).to.be.true;
|
44
|
+
expect(event.bubbles).to.be.true;
|
74
45
|
});
|
75
|
-
it('
|
76
|
-
await fixture(html `<glide-core-button-group>
|
77
|
-
<glide-core-button-group-button
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
>
|
46
|
+
it('does not emit an "change" event when clicked button is clicked and already selected', async () => {
|
47
|
+
const component = await fixture(html `<glide-core-button-group>
|
48
|
+
<glide-core-button-group-button
|
49
|
+
label="One"
|
50
|
+
selected
|
51
|
+
></glide-core-button-group-button>
|
52
|
+
|
53
|
+
<glide-core-button-group-button
|
54
|
+
label="One"
|
55
|
+
></glide-core-button-group-button>
|
86
56
|
</glide-core-button-group>`);
|
87
|
-
const
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
57
|
+
const spy = sinon.spy();
|
58
|
+
const button = component.querySelector('glide-core-button-group-button');
|
59
|
+
component.addEventListener('change', spy);
|
60
|
+
setTimeout(() => {
|
61
|
+
button?.click();
|
62
|
+
});
|
63
|
+
await aTimeout(0);
|
64
|
+
expect(spy.callCount).to.equal(0);
|
93
65
|
});
|
94
|
-
it('
|
95
|
-
await fixture(html `<glide-core-button-group>
|
96
|
-
<glide-core-button-group-button
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
>
|
66
|
+
it('does not emit an "input" event when clicked button is clicked and already selected', async () => {
|
67
|
+
const component = await fixture(html `<glide-core-button-group>
|
68
|
+
<glide-core-button-group-button
|
69
|
+
label="One"
|
70
|
+
selected
|
71
|
+
></glide-core-button-group-button>
|
72
|
+
|
73
|
+
<glide-core-button-group-button
|
74
|
+
label="Two"
|
75
|
+
></glide-core-button-group-button>
|
105
76
|
</glide-core-button-group>`);
|
106
|
-
const
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
await
|
113
|
-
expect(
|
77
|
+
const spy = sinon.spy();
|
78
|
+
const button = component.querySelector('glide-core-button-group-button');
|
79
|
+
component.addEventListener('input', spy);
|
80
|
+
setTimeout(() => {
|
81
|
+
button?.click();
|
82
|
+
});
|
83
|
+
await aTimeout(0);
|
84
|
+
expect(spy.callCount).to.equal(0);
|
114
85
|
});
|
115
|
-
it('
|
116
|
-
await fixture(html `<glide-core-button-group>
|
117
|
-
<glide-core-button-group-button
|
118
|
-
|
119
|
-
>
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
>
|
86
|
+
it('emits a "change" event when arrowing', async () => {
|
87
|
+
const component = await fixture(html `<glide-core-button-group>
|
88
|
+
<glide-core-button-group-button
|
89
|
+
label="One"
|
90
|
+
></glide-core-button-group-button>
|
91
|
+
|
92
|
+
<glide-core-button-group-button
|
93
|
+
label="Two"
|
94
|
+
selected
|
95
|
+
></glide-core-button-group-button>
|
126
96
|
</glide-core-button-group>`);
|
127
|
-
const
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
await
|
132
|
-
expect(
|
97
|
+
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
98
|
+
buttons[0].focus();
|
99
|
+
let event;
|
100
|
+
sendKeys({ press: 'ArrowRight' });
|
101
|
+
event = await oneEvent(component, 'change');
|
102
|
+
expect(event instanceof Event).to.be.true;
|
103
|
+
expect(event.bubbles).to.be.true;
|
104
|
+
sendKeys({ press: 'ArrowLeft' });
|
105
|
+
event = await oneEvent(component, 'change');
|
106
|
+
expect(event instanceof Event).to.be.true;
|
107
|
+
expect(event.bubbles).to.be.true;
|
108
|
+
sendKeys({ press: 'ArrowDown' });
|
109
|
+
event = await oneEvent(component, 'change');
|
110
|
+
expect(event instanceof Event).to.be.true;
|
111
|
+
expect(event.bubbles).to.be.true;
|
112
|
+
sendKeys({ press: 'ArrowUp' });
|
113
|
+
event = await oneEvent(component, 'change');
|
114
|
+
expect(event instanceof Event).to.be.true;
|
115
|
+
expect(event.bubbles).to.be.true;
|
133
116
|
});
|
134
|
-
it('
|
135
|
-
await fixture(html `<glide-core-button-group>
|
136
|
-
<glide-core-button-group-button
|
137
|
-
|
138
|
-
>
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
>Button 3</glide-core-button-group-button
|
144
|
-
>
|
117
|
+
it('emits an "input" event when arrowing', async () => {
|
118
|
+
const component = await fixture(html `<glide-core-button-group>
|
119
|
+
<glide-core-button-group-button
|
120
|
+
label="One"
|
121
|
+
></glide-core-button-group-button>
|
122
|
+
|
123
|
+
<glide-core-button-group-button
|
124
|
+
label="Two"
|
125
|
+
></glide-core-button-group-button>
|
145
126
|
</glide-core-button-group>`);
|
146
|
-
const
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
expect(
|
153
|
-
|
154
|
-
|
127
|
+
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
128
|
+
buttons[0].focus();
|
129
|
+
let event;
|
130
|
+
sendKeys({ press: 'ArrowRight' });
|
131
|
+
event = await oneEvent(component, 'input');
|
132
|
+
expect(event instanceof Event).to.be.true;
|
133
|
+
expect(event.bubbles).to.be.true;
|
134
|
+
sendKeys({ press: 'ArrowLeft' });
|
135
|
+
event = await oneEvent(component, 'input');
|
136
|
+
expect(event instanceof Event).to.be.true;
|
137
|
+
expect(event.bubbles).to.be.true;
|
138
|
+
sendKeys({ press: 'ArrowDown' });
|
139
|
+
event = await oneEvent(component, 'input');
|
140
|
+
expect(event instanceof Event).to.be.true;
|
141
|
+
expect(event.bubbles).to.be.true;
|
142
|
+
sendKeys({ press: 'ArrowUp' });
|
143
|
+
event = await oneEvent(component, 'input');
|
144
|
+
expect(event instanceof Event).to.be.true;
|
145
|
+
expect(event.bubbles).to.be.true;
|
155
146
|
});
|
156
|
-
it('
|
157
|
-
await fixture(html `<glide-core-button-group>
|
158
|
-
<glide-core-button-group-button
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
>
|
147
|
+
it('emits a "change" event when a button is selected via Space', async () => {
|
148
|
+
const component = await fixture(html `<glide-core-button-group>
|
149
|
+
<glide-core-button-group-button
|
150
|
+
label="One"
|
151
|
+
selected
|
152
|
+
></glide-core-button-group-button>
|
153
|
+
|
154
|
+
<glide-core-button-group-button
|
155
|
+
label="Two"
|
156
|
+
></glide-core-button-group-button>
|
167
157
|
</glide-core-button-group>`);
|
168
|
-
const
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
expect(buttonElements[2]).to.have.focus;
|
175
|
-
await sendKeys({ press: 'ArrowUp' });
|
176
|
-
expect(buttonElements[0]).to.have.focus;
|
158
|
+
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
159
|
+
buttons[1]?.focus();
|
160
|
+
sendKeys({ press: 'Space' });
|
161
|
+
const event = await oneEvent(component, 'input');
|
162
|
+
expect(event instanceof Event).to.be.true;
|
163
|
+
expect(event.bubbles).to.be.true;
|
177
164
|
});
|
178
|
-
it('
|
179
|
-
await fixture(html `<glide-core-button-group>
|
180
|
-
<glide-core-button-group-button
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
>
|
165
|
+
it('emits a "change" event when a button is selected programmatically', async () => {
|
166
|
+
const component = await fixture(html `<glide-core-button-group>
|
167
|
+
<glide-core-button-group-button
|
168
|
+
label="One"
|
169
|
+
selected
|
170
|
+
></glide-core-button-group-button>
|
171
|
+
|
172
|
+
<glide-core-button-group-button
|
173
|
+
label="Two"
|
174
|
+
></glide-core-button-group-button>
|
189
175
|
</glide-core-button-group>`);
|
190
|
-
const
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
expect(
|
197
|
-
await sendKeys({ press: 'ArrowDown' });
|
198
|
-
expect(buttonElements[2]).to.have.focus;
|
176
|
+
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
177
|
+
setTimeout(() => {
|
178
|
+
buttons[1].selected = true;
|
179
|
+
});
|
180
|
+
const event = await oneEvent(component, 'input');
|
181
|
+
expect(event instanceof Event).to.be.true;
|
182
|
+
expect(event.bubbles).to.be.true;
|
199
183
|
});
|
200
|
-
it('does not
|
201
|
-
await fixture(html `<glide-core-button-group>
|
202
|
-
<glide-core-button-group-button
|
203
|
-
|
204
|
-
|
184
|
+
it('does not emit a "change" event when an already selected button is selected via Space', async () => {
|
185
|
+
const component = await fixture(html `<glide-core-button-group>
|
186
|
+
<glide-core-button-group-button
|
187
|
+
label="One"
|
188
|
+
selected
|
189
|
+
></glide-core-button-group-button>
|
190
|
+
|
191
|
+
<glide-core-button-group-button
|
192
|
+
label="Two"
|
193
|
+
></glide-core-button-group-button>
|
205
194
|
</glide-core-button-group>`);
|
206
|
-
const
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
expect(
|
212
|
-
await sendKeys({ press: 'ArrowUp' });
|
213
|
-
expect(buttonElement).to.have.focus;
|
214
|
-
await sendKeys({ press: 'ArrowDown' });
|
215
|
-
expect(buttonElement).to.have.focus;
|
195
|
+
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
196
|
+
buttons[0]?.focus();
|
197
|
+
const spy = sinon.spy();
|
198
|
+
component.addEventListener('change', spy);
|
199
|
+
sendKeys({ press: 'Space' });
|
200
|
+
expect(spy.callCount).to.equal(0);
|
216
201
|
});
|
217
|
-
it('
|
218
|
-
const
|
219
|
-
<glide-core-button-group-button
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
>
|
202
|
+
it('does not emit a "change" event a button is selected programmatically', async () => {
|
203
|
+
const component = await fixture(html `<glide-core-button-group>
|
204
|
+
<glide-core-button-group-button
|
205
|
+
label="One"
|
206
|
+
selected
|
207
|
+
></glide-core-button-group-button>
|
208
|
+
|
209
|
+
<glide-core-button-group-button
|
210
|
+
label="Two"
|
211
|
+
></glide-core-button-group-button>
|
228
212
|
</glide-core-button-group>`);
|
229
|
-
const
|
230
|
-
const
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
expect(
|
236
|
-
expect(buttonElements[0]).to.not.have.attribute('selected');
|
213
|
+
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
214
|
+
const spy = sinon.spy();
|
215
|
+
component.addEventListener('change', spy);
|
216
|
+
setTimeout(() => {
|
217
|
+
buttons[1].selected = true;
|
218
|
+
});
|
219
|
+
expect(spy.callCount).to.equal(0);
|
237
220
|
});
|
238
|
-
it('does not
|
239
|
-
const
|
240
|
-
<glide-core-button-group-button
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
221
|
+
it('does not emit a "input" event a button is selected programmatically', async () => {
|
222
|
+
const component = await fixture(html `<glide-core-button-group>
|
223
|
+
<glide-core-button-group-button
|
224
|
+
label="One"
|
225
|
+
selected
|
226
|
+
></glide-core-button-group-button>
|
227
|
+
|
228
|
+
<glide-core-button-group-button
|
229
|
+
label="Two"
|
230
|
+
></glide-core-button-group-button>
|
246
231
|
</glide-core-button-group>`);
|
247
|
-
const
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
expect(
|
254
|
-
expect(buttonElements[0]).to.have.attribute('selected');
|
255
|
-
expect(buttonElements[1]).to.not.have.attribute('selected');
|
256
|
-
});
|
257
|
-
it('changes the "selected" attribute when pressing arrow and space keys', async () => {
|
258
|
-
await fixture(html `<glide-core-button-group>
|
259
|
-
<glide-core-button-group-button value="value-1" selected
|
260
|
-
>Button 1</glide-core-button-group-button
|
261
|
-
>
|
262
|
-
<glide-core-button-group-button value="value-2"
|
263
|
-
>Button 2</glide-core-button-group-button
|
264
|
-
>
|
265
|
-
<glide-core-button-group-button value="value-3"
|
266
|
-
>Button 3</glide-core-button-group-button
|
267
|
-
>
|
268
|
-
</glide-core-button-group>`);
|
269
|
-
const buttonElements = document.querySelectorAll('glide-core-button-group-button');
|
270
|
-
await sendKeys({ press: 'Tab' });
|
271
|
-
await sendKeys({ press: 'ArrowRight' });
|
272
|
-
expect(buttonElements[1]).to.have.focus;
|
273
|
-
expect(buttonElements[1]).to.have.attribute('selected');
|
274
|
-
expect(buttonElements[0]).to.not.have.attribute('selected');
|
275
|
-
await sendKeys({ press: 'ArrowDown' });
|
276
|
-
expect(buttonElements[2]).to.have.focus;
|
277
|
-
expect(buttonElements[2]).to.have.attribute('selected');
|
278
|
-
expect(buttonElements[1]).to.not.have.attribute('selected');
|
279
|
-
await sendKeys({ press: 'ArrowUp' });
|
280
|
-
expect(buttonElements[1]).to.have.focus;
|
281
|
-
expect(buttonElements[1]).to.have.attribute('selected');
|
282
|
-
expect(buttonElements[2]).to.not.have.attribute('selected');
|
283
|
-
await sendKeys({ press: 'ArrowLeft' });
|
284
|
-
expect(buttonElements[0]).to.have.focus;
|
285
|
-
expect(buttonElements[0]).to.have.attribute('selected');
|
286
|
-
expect(buttonElements[1]).to.not.have.attribute('selected');
|
287
|
-
buttonElements[2].focus();
|
288
|
-
await sendKeys({ press: ' ' });
|
289
|
-
expect(buttonElements[2]).to.have.focus;
|
290
|
-
expect(buttonElements[2]).to.have.attribute('selected');
|
291
|
-
expect(buttonElements[0]).to.not.have.attribute('selected');
|
232
|
+
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
233
|
+
const spy = sinon.spy();
|
234
|
+
component.addEventListener('input', spy);
|
235
|
+
setTimeout(() => {
|
236
|
+
buttons[1].selected = true;
|
237
|
+
});
|
238
|
+
expect(spy.callCount).to.equal(0);
|
292
239
|
});
|
@@ -0,0 +1 @@
|
|
1
|
+
import './button-group.button.js';
|
@@ -0,0 +1,39 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
+
import './button-group.button.js';
|
3
|
+
import { expect, fixture, html } from '@open-wc/testing';
|
4
|
+
import { sendKeys } from '@web/test-runner-commands';
|
5
|
+
import GlideCoreButtonGroup from './button-group.js';
|
6
|
+
import GlideCoreButtonGroupButton from './button-group.button.js';
|
7
|
+
GlideCoreButtonGroup.shadowRootOptions.mode = 'open';
|
8
|
+
GlideCoreButtonGroupButton.shadowRootOptions.mode = 'open';
|
9
|
+
it('moves focus', async () => {
|
10
|
+
await fixture(html `<glide-core-button-group>
|
11
|
+
<glide-core-button-group-button
|
12
|
+
label="One"
|
13
|
+
></glide-core-button-group-button>
|
14
|
+
|
15
|
+
<glide-core-button-group-button
|
16
|
+
label="Two"
|
17
|
+
disabled
|
18
|
+
></glide-core-button-group-button>
|
19
|
+
|
20
|
+
<glide-core-button-group-button
|
21
|
+
label="Three"
|
22
|
+
></glide-core-button-group-button>
|
23
|
+
|
24
|
+
<glide-core-button-group-button
|
25
|
+
label="Four"
|
26
|
+
selected
|
27
|
+
></glide-core-button-group-button>
|
28
|
+
</glide-core-button-group>`);
|
29
|
+
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
30
|
+
buttons[3]?.focus();
|
31
|
+
await sendKeys({ press: 'ArrowRight' });
|
32
|
+
expect(buttons[0]).to.have.focus;
|
33
|
+
await sendKeys({ press: 'ArrowUp' });
|
34
|
+
expect(buttons[3]).to.have.focus;
|
35
|
+
await sendKeys({ press: 'ArrowLeft' });
|
36
|
+
expect(buttons[2]).to.have.focus;
|
37
|
+
await sendKeys({ press: 'ArrowDown' });
|
38
|
+
expect(buttons[3]).to.have.focus;
|
39
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
import './button-group.button.js';
|
@@ -0,0 +1,91 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
+
import './button-group.button.js';
|
3
|
+
import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
|
4
|
+
import { sendKeys } from '@web/test-runner-commands';
|
5
|
+
import GlideCoreButtonGroup from './button-group.js';
|
6
|
+
import GlideCoreButtonGroupButton from './button-group.button.js';
|
7
|
+
GlideCoreButtonGroup.shadowRootOptions.mode = 'open';
|
8
|
+
GlideCoreButtonGroupButton.shadowRootOptions.mode = 'open';
|
9
|
+
it('selects a button when clicked', async () => {
|
10
|
+
const component = await fixture(html `<glide-core-button-group>
|
11
|
+
<glide-core-button-group-button
|
12
|
+
label="One"
|
13
|
+
selected
|
14
|
+
></glide-core-button-group-button>
|
15
|
+
|
16
|
+
<glide-core-button-group-button
|
17
|
+
label="Two"
|
18
|
+
></glide-core-button-group-button>
|
19
|
+
</glide-core-button-group>`);
|
20
|
+
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
21
|
+
buttons[1]?.click();
|
22
|
+
await elementUpdated(component);
|
23
|
+
expect(buttons[0].selected).to.be.false;
|
24
|
+
expect(buttons[1].selected).to.be.true;
|
25
|
+
});
|
26
|
+
it('selects buttons when arrowing', async () => {
|
27
|
+
await fixture(html `<glide-core-button-group>
|
28
|
+
<glide-core-button-group-button
|
29
|
+
label="One"
|
30
|
+
disabled
|
31
|
+
></glide-core-button-group-button>
|
32
|
+
|
33
|
+
<glide-core-button-group-button
|
34
|
+
label="Two"
|
35
|
+
selected
|
36
|
+
></glide-core-button-group-button>
|
37
|
+
|
38
|
+
<glide-core-button-group-button
|
39
|
+
label="Three"
|
40
|
+
></glide-core-button-group-button>
|
41
|
+
|
42
|
+
<glide-core-button-group-button
|
43
|
+
label="Four"
|
44
|
+
disabled
|
45
|
+
></glide-core-button-group-button>
|
46
|
+
</glide-core-button-group>`);
|
47
|
+
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
48
|
+
buttons[1]?.focus();
|
49
|
+
await sendKeys({ press: 'ArrowRight' });
|
50
|
+
expect(buttons[2].selected).to.be.true;
|
51
|
+
await sendKeys({ press: 'ArrowDown' });
|
52
|
+
expect(buttons[1].selected).to.be.true;
|
53
|
+
await sendKeys({ press: 'ArrowLeft' });
|
54
|
+
expect(buttons[2].selected).to.be.true;
|
55
|
+
await sendKeys({ press: 'ArrowUp' });
|
56
|
+
expect(buttons[1].selected).to.be.true;
|
57
|
+
});
|
58
|
+
it('selects a button on Space', async () => {
|
59
|
+
await fixture(html `<glide-core-button-group>
|
60
|
+
<glide-core-button-group-button
|
61
|
+
label="One"
|
62
|
+
selected
|
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
|
+
buttons[1]?.focus();
|
71
|
+
await sendKeys({ press: 'Space' });
|
72
|
+
expect(buttons[0].selected).to.be.false;
|
73
|
+
expect(buttons[1].selected).to.be.true;
|
74
|
+
});
|
75
|
+
it('does not select a disabled button', async () => {
|
76
|
+
await fixture(html `<glide-core-button-group>
|
77
|
+
<glide-core-button-group-button
|
78
|
+
label="One"
|
79
|
+
selected
|
80
|
+
></glide-core-button-group-button>
|
81
|
+
|
82
|
+
<glide-core-button-group-button
|
83
|
+
label="Two"
|
84
|
+
disabled
|
85
|
+
></glide-core-button-group-button>
|
86
|
+
</glide-core-button-group>`);
|
87
|
+
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
88
|
+
buttons[1]?.click();
|
89
|
+
expect(buttons[0].selected).to.be.true;
|
90
|
+
expect(buttons[1].selected).to.be.false;
|
91
|
+
});
|