@spectrum-web-components/menu 0.14.4 → 0.14.5-devmode.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.
- package/package.json +53 -19
- package/sp-menu-divider.dev.js +3 -0
- package/sp-menu-divider.dev.js.map +7 -0
- package/sp-menu-divider.js +3 -14
- package/sp-menu-divider.js.map +7 -1
- package/sp-menu-group.dev.js +3 -0
- package/sp-menu-group.dev.js.map +7 -0
- package/sp-menu-group.js +3 -14
- package/sp-menu-group.js.map +7 -1
- package/sp-menu-item.dev.js +3 -0
- package/sp-menu-item.dev.js.map +7 -0
- package/sp-menu-item.js +3 -14
- package/sp-menu-item.js.map +7 -1
- package/sp-menu.dev.js +3 -0
- package/sp-menu.dev.js.map +7 -0
- package/sp-menu.js +3 -14
- package/sp-menu.js.map +7 -1
- package/src/Menu.dev.js +495 -0
- package/src/Menu.dev.js.map +7 -0
- package/src/Menu.js +487 -574
- package/src/Menu.js.map +7 -1
- package/src/MenuDivider.dev.js +13 -0
- package/src/MenuDivider.dev.js.map +7 -0
- package/src/MenuDivider.js +11 -25
- package/src/MenuDivider.js.map +7 -1
- package/src/MenuGroup.dev.js +82 -0
- package/src/MenuGroup.dev.js.map +7 -0
- package/src/MenuGroup.js +67 -71
- package/src/MenuGroup.js.map +7 -1
- package/src/MenuItem.dev.js +424 -0
- package/src/MenuItem.dev.js.map +7 -0
- package/src/MenuItem.js +397 -432
- package/src/MenuItem.js.map +7 -1
- package/src/index.dev.js +5 -0
- package/src/index.dev.js.map +7 -0
- package/src/index.js +5 -16
- package/src/index.js.map +7 -1
- package/src/menu-divider.css.dev.js +6 -0
- package/src/menu-divider.css.dev.js.map +7 -0
- package/src/menu-divider.css.js +3 -14
- package/src/menu-divider.css.js.map +7 -1
- package/src/menu-group.css.dev.js +8 -0
- package/src/menu-group.css.dev.js.map +7 -0
- package/src/menu-group.css.js +3 -14
- package/src/menu-group.css.js.map +7 -1
- package/src/menu-item.css.dev.js +73 -0
- package/src/menu-item.css.dev.js.map +7 -0
- package/src/menu-item.css.js +3 -14
- package/src/menu-item.css.js.map +7 -1
- package/src/menu.css.dev.js +61 -0
- package/src/menu.css.dev.js.map +7 -0
- package/src/menu.css.js +3 -14
- package/src/menu.css.js.map +7 -1
- package/src/spectrum-checkmark.css.dev.js +10 -0
- package/src/spectrum-checkmark.css.dev.js.map +7 -0
- package/src/spectrum-checkmark.css.js +3 -14
- package/src/spectrum-checkmark.css.js.map +7 -1
- package/src/spectrum-chevron.css.dev.js +10 -0
- package/src/spectrum-chevron.css.dev.js.map +7 -0
- package/src/spectrum-chevron.css.js +3 -14
- package/src/spectrum-chevron.css.js.map +7 -1
- package/src/spectrum-itemLabel.css.dev.js +6 -0
- package/src/spectrum-itemLabel.css.dev.js.map +7 -0
- package/src/spectrum-itemLabel.css.js +3 -14
- package/src/spectrum-itemLabel.css.js.map +7 -1
- package/src/spectrum-menu-divider.css.dev.js +6 -0
- package/src/spectrum-menu-divider.css.dev.js.map +7 -0
- package/src/spectrum-menu-divider.css.js +3 -14
- package/src/spectrum-menu-divider.css.js.map +7 -1
- package/src/spectrum-menu-item.css.dev.js +65 -0
- package/src/spectrum-menu-item.css.dev.js.map +7 -0
- package/src/spectrum-menu-item.css.js +3 -14
- package/src/spectrum-menu-item.css.js.map +7 -1
- package/src/spectrum-menu-sectionHeading.css.dev.js +8 -0
- package/src/spectrum-menu-sectionHeading.css.dev.js.map +7 -0
- package/src/spectrum-menu-sectionHeading.css.js +3 -14
- package/src/spectrum-menu-sectionHeading.css.js.map +7 -1
- package/src/spectrum-menu.css.dev.js +61 -0
- package/src/spectrum-menu.css.dev.js.map +7 -0
- package/src/spectrum-menu.css.js +3 -14
- package/src/spectrum-menu.css.js.map +7 -1
- package/stories/menu-group.stories.js +51 -58
- package/stories/menu-group.stories.js.map +7 -1
- package/stories/menu-item.stories.js +12 -32
- package/stories/menu-item.stories.js.map +7 -1
- package/stories/menu.stories.js +22 -33
- package/stories/menu.stories.js.map +7 -1
- package/stories/submenu.stories.js +125 -136
- package/stories/submenu.stories.js.map +7 -1
- package/test/benchmark/test-basic.js +8 -19
- package/test/benchmark/test-basic.js.map +7 -1
- package/test/menu-group.test-vrt.js +4 -15
- package/test/menu-group.test-vrt.js.map +7 -1
- package/test/menu-group.test.js +161 -168
- package/test/menu-group.test.js.map +7 -1
- package/test/menu-item.test-vrt.js +4 -15
- package/test/menu-item.test-vrt.js.map +7 -1
- package/test/menu-item.test.js +93 -99
- package/test/menu-item.test.js.map +7 -1
- package/test/menu-selects.test.js +488 -494
- package/test/menu-selects.test.js.map +7 -1
- package/test/menu.test-vrt.js +4 -15
- package/test/menu.test-vrt.js.map +7 -1
- package/test/menu.test.js +240 -257
- package/test/menu.test.js.map +7 -1
- package/test/submenu.test-vrt.js +4 -15
- package/test/submenu.test-vrt.js.map +7 -1
- package/test/submenu.test.js +452 -486
- package/test/submenu.test.js.map +7 -1
|
@@ -1,123 +1,118 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
describe('Menu [selects]', () => {
|
|
20
|
-
let el;
|
|
21
|
-
let options;
|
|
22
|
-
beforeEach(async () => {
|
|
23
|
-
el = await fixture(html `
|
|
1
|
+
import "@spectrum-web-components/menu/sp-menu.js";
|
|
2
|
+
import "@spectrum-web-components/menu/sp-menu-group.js";
|
|
3
|
+
import "@spectrum-web-components/menu/sp-menu-item.js";
|
|
4
|
+
import {
|
|
5
|
+
elementUpdated,
|
|
6
|
+
expect,
|
|
7
|
+
fixture,
|
|
8
|
+
html,
|
|
9
|
+
oneEvent
|
|
10
|
+
} from "@open-wc/testing";
|
|
11
|
+
import { sendKeys } from "@web/test-runner-commands";
|
|
12
|
+
import { spy } from "sinon";
|
|
13
|
+
import { sendMouse } from "../../../test/plugins/browser.js";
|
|
14
|
+
describe("Menu [selects]", () => {
|
|
15
|
+
let el;
|
|
16
|
+
let options;
|
|
17
|
+
beforeEach(async () => {
|
|
18
|
+
el = await fixture(html`
|
|
24
19
|
<sp-menu selects="single">
|
|
25
20
|
<sp-menu-item value="1">Option 1</sp-menu-item>
|
|
26
21
|
<sp-menu-item value="2">Option 2</sp-menu-item>
|
|
27
22
|
<sp-menu-item value="3">Option 3</sp-menu-item>
|
|
28
23
|
</sp-menu>
|
|
29
24
|
`);
|
|
30
|
-
|
|
25
|
+
options = [...el.querySelectorAll("sp-menu-item")];
|
|
26
|
+
});
|
|
27
|
+
describe("fires `change` events", async () => {
|
|
28
|
+
it("on browser clicks", async () => {
|
|
29
|
+
const item1 = options[0];
|
|
30
|
+
const boundingRect = item1.getBoundingClientRect();
|
|
31
|
+
const change = oneEvent(el, "change");
|
|
32
|
+
sendMouse({
|
|
33
|
+
steps: [
|
|
34
|
+
{
|
|
35
|
+
type: "move",
|
|
36
|
+
position: [
|
|
37
|
+
boundingRect.x + boundingRect.width / 2,
|
|
38
|
+
boundingRect.y + boundingRect.height / 2
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
type: "down"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
type: "up"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
});
|
|
49
|
+
await change;
|
|
50
|
+
expect(el.value).to.equal("1");
|
|
31
51
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
steps: [
|
|
39
|
-
{
|
|
40
|
-
type: 'move',
|
|
41
|
-
position: [
|
|
42
|
-
boundingRect.x + boundingRect.width / 2,
|
|
43
|
-
boundingRect.y + boundingRect.height / 2,
|
|
44
|
-
],
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
type: 'down',
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
type: 'up',
|
|
51
|
-
},
|
|
52
|
-
],
|
|
53
|
-
});
|
|
54
|
-
await change;
|
|
55
|
-
expect(el.value).to.equal('1');
|
|
56
|
-
});
|
|
57
|
-
it('on JS clicks', async () => {
|
|
58
|
-
const item1 = options[0];
|
|
59
|
-
const change = oneEvent(el, 'change');
|
|
60
|
-
item1.click();
|
|
61
|
-
await change;
|
|
62
|
-
expect(el.value).to.equal('1');
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
it('manages a single selection when [selects="single"]', async () => {
|
|
66
|
-
expect(el.value).to.equal('');
|
|
67
|
-
let change = oneEvent(el, 'change');
|
|
68
|
-
options[0].click();
|
|
69
|
-
await change;
|
|
70
|
-
expect(el.value).to.equal('1');
|
|
71
|
-
change = oneEvent(el, 'change');
|
|
72
|
-
options[1].click();
|
|
73
|
-
await change;
|
|
74
|
-
await elementUpdated(el);
|
|
75
|
-
expect(el.value).to.equal('2');
|
|
76
|
-
change = oneEvent(el, 'change');
|
|
77
|
-
options[2].click();
|
|
78
|
-
await change;
|
|
79
|
-
await elementUpdated(el);
|
|
80
|
-
expect(el.value).to.equal('3');
|
|
81
|
-
});
|
|
82
|
-
it('manages multiple selections when [selects="multiple"]', async () => {
|
|
83
|
-
el.selects = 'multiple';
|
|
84
|
-
await elementUpdated(el);
|
|
85
|
-
expect(el.value).to.equal('');
|
|
86
|
-
let change = oneEvent(el, 'change');
|
|
87
|
-
options[0].click();
|
|
88
|
-
await change;
|
|
89
|
-
expect(el.value).to.equal('1');
|
|
90
|
-
change = oneEvent(el, 'change');
|
|
91
|
-
options[1].click();
|
|
92
|
-
await change;
|
|
93
|
-
await elementUpdated(el);
|
|
94
|
-
expect(el.value).to.equal('1,2');
|
|
95
|
-
change = oneEvent(el, 'change');
|
|
96
|
-
options[2].click();
|
|
97
|
-
await change;
|
|
98
|
-
await elementUpdated(el);
|
|
99
|
-
expect(el.value).to.equal('1,2,3');
|
|
100
|
-
change = oneEvent(el, 'change');
|
|
101
|
-
options[0].click();
|
|
102
|
-
await change;
|
|
103
|
-
expect(el.value).to.equal('2,3');
|
|
104
|
-
change = oneEvent(el, 'change');
|
|
105
|
-
options[1].click();
|
|
106
|
-
await change;
|
|
107
|
-
await elementUpdated(el);
|
|
108
|
-
expect(el.value).to.equal('3');
|
|
109
|
-
change = oneEvent(el, 'change');
|
|
110
|
-
options[2].click();
|
|
111
|
-
await change;
|
|
112
|
-
await elementUpdated(el);
|
|
113
|
-
expect(el.value).to.equal('');
|
|
52
|
+
it("on JS clicks", async () => {
|
|
53
|
+
const item1 = options[0];
|
|
54
|
+
const change = oneEvent(el, "change");
|
|
55
|
+
item1.click();
|
|
56
|
+
await change;
|
|
57
|
+
expect(el.value).to.equal("1");
|
|
114
58
|
});
|
|
59
|
+
});
|
|
60
|
+
it('manages a single selection when [selects="single"]', async () => {
|
|
61
|
+
expect(el.value).to.equal("");
|
|
62
|
+
let change = oneEvent(el, "change");
|
|
63
|
+
options[0].click();
|
|
64
|
+
await change;
|
|
65
|
+
expect(el.value).to.equal("1");
|
|
66
|
+
change = oneEvent(el, "change");
|
|
67
|
+
options[1].click();
|
|
68
|
+
await change;
|
|
69
|
+
await elementUpdated(el);
|
|
70
|
+
expect(el.value).to.equal("2");
|
|
71
|
+
change = oneEvent(el, "change");
|
|
72
|
+
options[2].click();
|
|
73
|
+
await change;
|
|
74
|
+
await elementUpdated(el);
|
|
75
|
+
expect(el.value).to.equal("3");
|
|
76
|
+
});
|
|
77
|
+
it('manages multiple selections when [selects="multiple"]', async () => {
|
|
78
|
+
el.selects = "multiple";
|
|
79
|
+
await elementUpdated(el);
|
|
80
|
+
expect(el.value).to.equal("");
|
|
81
|
+
let change = oneEvent(el, "change");
|
|
82
|
+
options[0].click();
|
|
83
|
+
await change;
|
|
84
|
+
expect(el.value).to.equal("1");
|
|
85
|
+
change = oneEvent(el, "change");
|
|
86
|
+
options[1].click();
|
|
87
|
+
await change;
|
|
88
|
+
await elementUpdated(el);
|
|
89
|
+
expect(el.value).to.equal("1,2");
|
|
90
|
+
change = oneEvent(el, "change");
|
|
91
|
+
options[2].click();
|
|
92
|
+
await change;
|
|
93
|
+
await elementUpdated(el);
|
|
94
|
+
expect(el.value).to.equal("1,2,3");
|
|
95
|
+
change = oneEvent(el, "change");
|
|
96
|
+
options[0].click();
|
|
97
|
+
await change;
|
|
98
|
+
expect(el.value).to.equal("2,3");
|
|
99
|
+
change = oneEvent(el, "change");
|
|
100
|
+
options[1].click();
|
|
101
|
+
await change;
|
|
102
|
+
await elementUpdated(el);
|
|
103
|
+
expect(el.value).to.equal("3");
|
|
104
|
+
change = oneEvent(el, "change");
|
|
105
|
+
options[2].click();
|
|
106
|
+
await change;
|
|
107
|
+
await elementUpdated(el);
|
|
108
|
+
expect(el.value).to.equal("");
|
|
109
|
+
});
|
|
115
110
|
});
|
|
116
|
-
describe(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
111
|
+
describe("Menu [selects] w/ group", () => {
|
|
112
|
+
let el;
|
|
113
|
+
let options;
|
|
114
|
+
beforeEach(async () => {
|
|
115
|
+
el = await fixture(html`
|
|
121
116
|
<sp-menu selects="single">
|
|
122
117
|
<sp-menu-group selects="inherit">
|
|
123
118
|
<sp-menu-item value="1">Option 1</sp-menu-item>
|
|
@@ -126,98 +121,98 @@ describe('Menu [selects] w/ group', () => {
|
|
|
126
121
|
</sp-menu-group>
|
|
127
122
|
</sp-menu>
|
|
128
123
|
`);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
});
|
|
156
|
-
it('on JS clicks', async () => {
|
|
157
|
-
const item1 = options[0];
|
|
158
|
-
const change = oneEvent(el, 'change');
|
|
159
|
-
item1.click();
|
|
160
|
-
await change;
|
|
161
|
-
expect(el.value).to.equal('1');
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
it('manages a single selection when [selects="single"]', async () => {
|
|
165
|
-
expect(el.value).to.equal('');
|
|
166
|
-
let change = oneEvent(el, 'change');
|
|
167
|
-
options[0].click();
|
|
168
|
-
await change;
|
|
169
|
-
expect(el.value).to.equal('1');
|
|
170
|
-
change = oneEvent(el, 'change');
|
|
171
|
-
options[1].click();
|
|
172
|
-
await change;
|
|
173
|
-
await elementUpdated(el);
|
|
174
|
-
expect(el.value).to.equal('2');
|
|
175
|
-
change = oneEvent(el, 'change');
|
|
176
|
-
options[2].click();
|
|
177
|
-
await change;
|
|
178
|
-
await elementUpdated(el);
|
|
179
|
-
expect(el.value).to.equal('3');
|
|
124
|
+
options = [...el.querySelectorAll("sp-menu-item")];
|
|
125
|
+
});
|
|
126
|
+
describe("fires `change` events", async () => {
|
|
127
|
+
it("on browser clicks", async () => {
|
|
128
|
+
const item1 = options[0];
|
|
129
|
+
const boundingRect = item1.getBoundingClientRect();
|
|
130
|
+
const change = oneEvent(el, "change");
|
|
131
|
+
sendMouse({
|
|
132
|
+
steps: [
|
|
133
|
+
{
|
|
134
|
+
type: "move",
|
|
135
|
+
position: [
|
|
136
|
+
boundingRect.x + boundingRect.width / 2,
|
|
137
|
+
boundingRect.y + boundingRect.height / 2
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: "down"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: "up"
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
});
|
|
148
|
+
await change;
|
|
149
|
+
expect(el.value).to.equal("1");
|
|
180
150
|
});
|
|
181
|
-
it(
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
await change;
|
|
188
|
-
expect(el.value).to.equal('1');
|
|
189
|
-
change = oneEvent(el, 'change');
|
|
190
|
-
options[1].click();
|
|
191
|
-
await change;
|
|
192
|
-
await elementUpdated(el);
|
|
193
|
-
expect(el.value).to.equal('1,2');
|
|
194
|
-
change = oneEvent(el, 'change');
|
|
195
|
-
options[2].click();
|
|
196
|
-
await change;
|
|
197
|
-
await elementUpdated(el);
|
|
198
|
-
expect(el.value).to.equal('1,2,3');
|
|
199
|
-
change = oneEvent(el, 'change');
|
|
200
|
-
options[0].click();
|
|
201
|
-
await change;
|
|
202
|
-
expect(el.value).to.equal('2,3');
|
|
203
|
-
change = oneEvent(el, 'change');
|
|
204
|
-
options[1].click();
|
|
205
|
-
await change;
|
|
206
|
-
await elementUpdated(el);
|
|
207
|
-
expect(el.value).to.equal('3');
|
|
208
|
-
change = oneEvent(el, 'change');
|
|
209
|
-
options[2].click();
|
|
210
|
-
await change;
|
|
211
|
-
await elementUpdated(el);
|
|
212
|
-
expect(el.value).to.equal('');
|
|
151
|
+
it("on JS clicks", async () => {
|
|
152
|
+
const item1 = options[0];
|
|
153
|
+
const change = oneEvent(el, "change");
|
|
154
|
+
item1.click();
|
|
155
|
+
await change;
|
|
156
|
+
expect(el.value).to.equal("1");
|
|
213
157
|
});
|
|
158
|
+
});
|
|
159
|
+
it('manages a single selection when [selects="single"]', async () => {
|
|
160
|
+
expect(el.value).to.equal("");
|
|
161
|
+
let change = oneEvent(el, "change");
|
|
162
|
+
options[0].click();
|
|
163
|
+
await change;
|
|
164
|
+
expect(el.value).to.equal("1");
|
|
165
|
+
change = oneEvent(el, "change");
|
|
166
|
+
options[1].click();
|
|
167
|
+
await change;
|
|
168
|
+
await elementUpdated(el);
|
|
169
|
+
expect(el.value).to.equal("2");
|
|
170
|
+
change = oneEvent(el, "change");
|
|
171
|
+
options[2].click();
|
|
172
|
+
await change;
|
|
173
|
+
await elementUpdated(el);
|
|
174
|
+
expect(el.value).to.equal("3");
|
|
175
|
+
});
|
|
176
|
+
it('manages multiple selections when [selects="multiple"]', async () => {
|
|
177
|
+
el.selects = "multiple";
|
|
178
|
+
await elementUpdated(el);
|
|
179
|
+
expect(el.value).to.equal("");
|
|
180
|
+
let change = oneEvent(el, "change");
|
|
181
|
+
options[0].click();
|
|
182
|
+
await change;
|
|
183
|
+
expect(el.value).to.equal("1");
|
|
184
|
+
change = oneEvent(el, "change");
|
|
185
|
+
options[1].click();
|
|
186
|
+
await change;
|
|
187
|
+
await elementUpdated(el);
|
|
188
|
+
expect(el.value).to.equal("1,2");
|
|
189
|
+
change = oneEvent(el, "change");
|
|
190
|
+
options[2].click();
|
|
191
|
+
await change;
|
|
192
|
+
await elementUpdated(el);
|
|
193
|
+
expect(el.value).to.equal("1,2,3");
|
|
194
|
+
change = oneEvent(el, "change");
|
|
195
|
+
options[0].click();
|
|
196
|
+
await change;
|
|
197
|
+
expect(el.value).to.equal("2,3");
|
|
198
|
+
change = oneEvent(el, "change");
|
|
199
|
+
options[1].click();
|
|
200
|
+
await change;
|
|
201
|
+
await elementUpdated(el);
|
|
202
|
+
expect(el.value).to.equal("3");
|
|
203
|
+
change = oneEvent(el, "change");
|
|
204
|
+
options[2].click();
|
|
205
|
+
await change;
|
|
206
|
+
await elementUpdated(el);
|
|
207
|
+
expect(el.value).to.equal("");
|
|
208
|
+
});
|
|
214
209
|
});
|
|
215
|
-
describe(
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
210
|
+
describe("Menu w/ group [selects]", () => {
|
|
211
|
+
let el;
|
|
212
|
+
let group;
|
|
213
|
+
let options;
|
|
214
|
+
beforeEach(async () => {
|
|
215
|
+
el = await fixture(html`
|
|
221
216
|
<sp-menu>
|
|
222
217
|
<sp-menu-group selects="single">
|
|
223
218
|
<sp-menu-item value="1">Option 1</sp-menu-item>
|
|
@@ -226,100 +221,100 @@ describe('Menu w/ group [selects]', () => {
|
|
|
226
221
|
</sp-menu-group>
|
|
227
222
|
</sp-menu>
|
|
228
223
|
`);
|
|
229
|
-
|
|
230
|
-
|
|
224
|
+
group = el.querySelector("sp-menu-group");
|
|
225
|
+
options = [...el.querySelectorAll("sp-menu-item")];
|
|
226
|
+
});
|
|
227
|
+
describe("fires `change` events", async () => {
|
|
228
|
+
it("on browser clicks", async () => {
|
|
229
|
+
const item1 = options[0];
|
|
230
|
+
const boundingRect = item1.getBoundingClientRect();
|
|
231
|
+
const change = oneEvent(group, "change");
|
|
232
|
+
sendMouse({
|
|
233
|
+
steps: [
|
|
234
|
+
{
|
|
235
|
+
type: "move",
|
|
236
|
+
position: [
|
|
237
|
+
boundingRect.x + boundingRect.width / 2,
|
|
238
|
+
boundingRect.y + boundingRect.height / 2
|
|
239
|
+
]
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
type: "down"
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
type: "up"
|
|
246
|
+
}
|
|
247
|
+
]
|
|
248
|
+
});
|
|
249
|
+
await change;
|
|
250
|
+
expect(group.value).to.equal("1");
|
|
231
251
|
});
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
steps: [
|
|
239
|
-
{
|
|
240
|
-
type: 'move',
|
|
241
|
-
position: [
|
|
242
|
-
boundingRect.x + boundingRect.width / 2,
|
|
243
|
-
boundingRect.y + boundingRect.height / 2,
|
|
244
|
-
],
|
|
245
|
-
},
|
|
246
|
-
{
|
|
247
|
-
type: 'down',
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
type: 'up',
|
|
251
|
-
},
|
|
252
|
-
],
|
|
253
|
-
});
|
|
254
|
-
await change;
|
|
255
|
-
expect(group.value).to.equal('1');
|
|
256
|
-
});
|
|
257
|
-
it('on JS clicks', async () => {
|
|
258
|
-
const item1 = options[0];
|
|
259
|
-
const change = oneEvent(group, 'change');
|
|
260
|
-
item1.click();
|
|
261
|
-
await change;
|
|
262
|
-
expect(group.value).to.equal('1');
|
|
263
|
-
});
|
|
264
|
-
});
|
|
265
|
-
it('manages a single selection when [selects="single"]', async () => {
|
|
266
|
-
expect(group.value).to.equal('');
|
|
267
|
-
let change = oneEvent(el, 'change');
|
|
268
|
-
options[0].click();
|
|
269
|
-
await change;
|
|
270
|
-
expect(group.value).to.equal('1');
|
|
271
|
-
change = oneEvent(el, 'change');
|
|
272
|
-
options[1].click();
|
|
273
|
-
await change;
|
|
274
|
-
await elementUpdated(el);
|
|
275
|
-
expect(group.value).to.equal('2');
|
|
276
|
-
change = oneEvent(el, 'change');
|
|
277
|
-
options[2].click();
|
|
278
|
-
await change;
|
|
279
|
-
await elementUpdated(el);
|
|
280
|
-
expect(group.value).to.equal('3');
|
|
281
|
-
});
|
|
282
|
-
it('manages multiple selections when [selects="multiple"]', async () => {
|
|
283
|
-
group.selects = 'multiple';
|
|
284
|
-
await elementUpdated(group);
|
|
285
|
-
expect(group.value).to.equal('');
|
|
286
|
-
let change = oneEvent(el, 'change');
|
|
287
|
-
options[0].click();
|
|
288
|
-
await change;
|
|
289
|
-
expect(group.value).to.equal('1');
|
|
290
|
-
change = oneEvent(el, 'change');
|
|
291
|
-
options[1].click();
|
|
292
|
-
await change;
|
|
293
|
-
await elementUpdated(el);
|
|
294
|
-
expect(group.value).to.equal('1,2');
|
|
295
|
-
change = oneEvent(el, 'change');
|
|
296
|
-
options[2].click();
|
|
297
|
-
await change;
|
|
298
|
-
await elementUpdated(el);
|
|
299
|
-
expect(group.value).to.equal('1,2,3');
|
|
300
|
-
change = oneEvent(el, 'change');
|
|
301
|
-
options[0].click();
|
|
302
|
-
await change;
|
|
303
|
-
expect(group.value).to.equal('2,3');
|
|
304
|
-
change = oneEvent(el, 'change');
|
|
305
|
-
options[1].click();
|
|
306
|
-
await change;
|
|
307
|
-
await elementUpdated(el);
|
|
308
|
-
expect(group.value).to.equal('3');
|
|
309
|
-
change = oneEvent(el, 'change');
|
|
310
|
-
options[2].click();
|
|
311
|
-
await change;
|
|
312
|
-
await elementUpdated(el);
|
|
313
|
-
expect(group.value).to.equal('');
|
|
252
|
+
it("on JS clicks", async () => {
|
|
253
|
+
const item1 = options[0];
|
|
254
|
+
const change = oneEvent(group, "change");
|
|
255
|
+
item1.click();
|
|
256
|
+
await change;
|
|
257
|
+
expect(group.value).to.equal("1");
|
|
314
258
|
});
|
|
259
|
+
});
|
|
260
|
+
it('manages a single selection when [selects="single"]', async () => {
|
|
261
|
+
expect(group.value).to.equal("");
|
|
262
|
+
let change = oneEvent(el, "change");
|
|
263
|
+
options[0].click();
|
|
264
|
+
await change;
|
|
265
|
+
expect(group.value).to.equal("1");
|
|
266
|
+
change = oneEvent(el, "change");
|
|
267
|
+
options[1].click();
|
|
268
|
+
await change;
|
|
269
|
+
await elementUpdated(el);
|
|
270
|
+
expect(group.value).to.equal("2");
|
|
271
|
+
change = oneEvent(el, "change");
|
|
272
|
+
options[2].click();
|
|
273
|
+
await change;
|
|
274
|
+
await elementUpdated(el);
|
|
275
|
+
expect(group.value).to.equal("3");
|
|
276
|
+
});
|
|
277
|
+
it('manages multiple selections when [selects="multiple"]', async () => {
|
|
278
|
+
group.selects = "multiple";
|
|
279
|
+
await elementUpdated(group);
|
|
280
|
+
expect(group.value).to.equal("");
|
|
281
|
+
let change = oneEvent(el, "change");
|
|
282
|
+
options[0].click();
|
|
283
|
+
await change;
|
|
284
|
+
expect(group.value).to.equal("1");
|
|
285
|
+
change = oneEvent(el, "change");
|
|
286
|
+
options[1].click();
|
|
287
|
+
await change;
|
|
288
|
+
await elementUpdated(el);
|
|
289
|
+
expect(group.value).to.equal("1,2");
|
|
290
|
+
change = oneEvent(el, "change");
|
|
291
|
+
options[2].click();
|
|
292
|
+
await change;
|
|
293
|
+
await elementUpdated(el);
|
|
294
|
+
expect(group.value).to.equal("1,2,3");
|
|
295
|
+
change = oneEvent(el, "change");
|
|
296
|
+
options[0].click();
|
|
297
|
+
await change;
|
|
298
|
+
expect(group.value).to.equal("2,3");
|
|
299
|
+
change = oneEvent(el, "change");
|
|
300
|
+
options[1].click();
|
|
301
|
+
await change;
|
|
302
|
+
await elementUpdated(el);
|
|
303
|
+
expect(group.value).to.equal("3");
|
|
304
|
+
change = oneEvent(el, "change");
|
|
305
|
+
options[2].click();
|
|
306
|
+
await change;
|
|
307
|
+
await elementUpdated(el);
|
|
308
|
+
expect(group.value).to.equal("");
|
|
309
|
+
});
|
|
315
310
|
});
|
|
316
|
-
describe(
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
311
|
+
describe("Menu w/ groups [selects]", () => {
|
|
312
|
+
let el;
|
|
313
|
+
let groupA;
|
|
314
|
+
let groupB;
|
|
315
|
+
let options;
|
|
316
|
+
beforeEach(async () => {
|
|
317
|
+
el = await fixture(html`
|
|
323
318
|
<sp-menu>
|
|
324
319
|
<sp-menu-group selects="single" id="group-1">
|
|
325
320
|
<sp-menu-item value="1a">Option 1a</sp-menu-item>
|
|
@@ -333,210 +328,209 @@ describe('Menu w/ groups [selects]', () => {
|
|
|
333
328
|
</sp-menu-group>
|
|
334
329
|
</sp-menu>
|
|
335
330
|
`);
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
});
|
|
392
|
-
it('on JS clicks', async () => {
|
|
393
|
-
const item1a = options[0];
|
|
394
|
-
const item1b = options[3];
|
|
395
|
-
let change = oneEvent(el, 'change');
|
|
396
|
-
item1a.click();
|
|
397
|
-
await change;
|
|
398
|
-
expect(groupA.value).to.equal('1a');
|
|
399
|
-
change = oneEvent(el, 'change');
|
|
400
|
-
item1b.click();
|
|
401
|
-
await change;
|
|
402
|
-
expect(groupB.value).to.equal('1b');
|
|
403
|
-
});
|
|
404
|
-
it('can have them `preventDefault()`ed', async () => {
|
|
405
|
-
const preventSpy = spy();
|
|
406
|
-
expect(groupA.value).to.equal('');
|
|
407
|
-
expect(groupB.value).to.equal('');
|
|
408
|
-
const item1a = options[0];
|
|
409
|
-
const item1b = options[3];
|
|
410
|
-
groupA.addEventListener('change', (event) => {
|
|
411
|
-
event.preventDefault();
|
|
412
|
-
preventSpy();
|
|
413
|
-
});
|
|
414
|
-
const change = oneEvent(el, 'change');
|
|
415
|
-
item1a.click();
|
|
416
|
-
item1b.click();
|
|
417
|
-
await change;
|
|
418
|
-
expect(preventSpy.callCount).to.equal(1);
|
|
419
|
-
expect(groupA.value).to.equal('');
|
|
420
|
-
expect(groupB.value).to.equal('1b');
|
|
421
|
-
});
|
|
422
|
-
});
|
|
423
|
-
it('manages a single selection when [selects="single"]', async () => {
|
|
424
|
-
expect(groupA.value).to.equal('');
|
|
425
|
-
expect(groupB.value).to.equal('');
|
|
426
|
-
let change = oneEvent(el, 'change');
|
|
427
|
-
options[0].click();
|
|
428
|
-
await change;
|
|
429
|
-
expect(groupA.value).to.equal('1a');
|
|
430
|
-
change = oneEvent(el, 'change');
|
|
431
|
-
options[3].click();
|
|
432
|
-
await change;
|
|
433
|
-
expect(groupB.value).to.equal('1b');
|
|
434
|
-
change = oneEvent(el, 'change');
|
|
435
|
-
options[1].click();
|
|
436
|
-
await change;
|
|
437
|
-
expect(groupA.value).to.equal('2a');
|
|
438
|
-
change = oneEvent(el, 'change');
|
|
439
|
-
options[4].click();
|
|
440
|
-
await change;
|
|
441
|
-
expect(groupB.value).to.equal('2b');
|
|
442
|
-
change = oneEvent(el, 'change');
|
|
443
|
-
options[2].click();
|
|
444
|
-
await change;
|
|
445
|
-
expect(groupA.value).to.equal('3a');
|
|
446
|
-
change = oneEvent(el, 'change');
|
|
447
|
-
options[5].click();
|
|
448
|
-
await change;
|
|
449
|
-
expect(groupB.value).to.equal('3b');
|
|
331
|
+
groupA = el.querySelector("sp-menu-group:first-child");
|
|
332
|
+
groupB = el.querySelector("sp-menu-group:last-child");
|
|
333
|
+
options = [...el.querySelectorAll("sp-menu-item")];
|
|
334
|
+
});
|
|
335
|
+
describe("fires `change` events", async () => {
|
|
336
|
+
it("on browser clicks", async () => {
|
|
337
|
+
const item1a = options[0];
|
|
338
|
+
const item1b = options[3];
|
|
339
|
+
const boundingRectA = item1a.getBoundingClientRect();
|
|
340
|
+
expect(groupA.value).to.equal("");
|
|
341
|
+
expect(groupB.value).to.equal("");
|
|
342
|
+
let change = oneEvent(el, "change");
|
|
343
|
+
sendMouse({
|
|
344
|
+
steps: [
|
|
345
|
+
{
|
|
346
|
+
type: "move",
|
|
347
|
+
position: [
|
|
348
|
+
boundingRectA.x + boundingRectA.width / 2,
|
|
349
|
+
boundingRectA.y + boundingRectA.height / 2
|
|
350
|
+
]
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
type: "down"
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
type: "up"
|
|
357
|
+
}
|
|
358
|
+
]
|
|
359
|
+
});
|
|
360
|
+
await change;
|
|
361
|
+
await elementUpdated(item1a);
|
|
362
|
+
expect(groupA.value).to.equal("1a");
|
|
363
|
+
expect(groupB.value).to.equal("");
|
|
364
|
+
change = oneEvent(el, "change");
|
|
365
|
+
const boundingRectB = item1b.getBoundingClientRect();
|
|
366
|
+
sendMouse({
|
|
367
|
+
steps: [
|
|
368
|
+
{
|
|
369
|
+
type: "move",
|
|
370
|
+
position: [
|
|
371
|
+
boundingRectB.x + boundingRectB.width / 2,
|
|
372
|
+
boundingRectB.y + boundingRectB.height / 2
|
|
373
|
+
]
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
type: "down"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
type: "up"
|
|
380
|
+
}
|
|
381
|
+
]
|
|
382
|
+
});
|
|
383
|
+
await change;
|
|
384
|
+
expect(groupA.value).to.equal("1a");
|
|
385
|
+
expect(groupB.value).to.equal("1b");
|
|
450
386
|
});
|
|
451
|
-
it(
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
expect(groupB.value).to.equal('');
|
|
463
|
-
change = oneEvent(el, 'change');
|
|
464
|
-
options[3].click();
|
|
465
|
-
await change;
|
|
466
|
-
expect(groupA.value).to.equal('1a');
|
|
467
|
-
expect(groupB.value).to.equal('1b');
|
|
468
|
-
change = oneEvent(el, 'change');
|
|
469
|
-
options[1].click();
|
|
470
|
-
await change;
|
|
471
|
-
expect(groupA.value).to.equal('1a,2a');
|
|
472
|
-
expect(groupB.value).to.equal('1b');
|
|
473
|
-
change = oneEvent(el, 'change');
|
|
474
|
-
options[4].click();
|
|
475
|
-
await change;
|
|
476
|
-
expect(groupA.value).to.equal('1a,2a');
|
|
477
|
-
expect(groupB.value).to.equal('1b,2b');
|
|
478
|
-
change = oneEvent(el, 'change');
|
|
479
|
-
options[2].click();
|
|
480
|
-
await change;
|
|
481
|
-
expect(groupA.value).to.equal('1a,2a,3a');
|
|
482
|
-
expect(groupB.value).to.equal('1b,2b');
|
|
483
|
-
change = oneEvent(el, 'change');
|
|
484
|
-
options[5].click();
|
|
485
|
-
await change;
|
|
486
|
-
expect(groupA.value).to.equal('1a,2a,3a');
|
|
487
|
-
expect(groupB.value).to.equal('1b,2b,3b');
|
|
488
|
-
change = oneEvent(el, 'change');
|
|
489
|
-
options[0].click();
|
|
490
|
-
await change;
|
|
491
|
-
expect(groupA.value).to.equal('2a,3a');
|
|
492
|
-
expect(groupB.value).to.equal('1b,2b,3b');
|
|
493
|
-
change = oneEvent(el, 'change');
|
|
494
|
-
options[3].click();
|
|
495
|
-
await change;
|
|
496
|
-
expect(groupA.value).to.equal('2a,3a');
|
|
497
|
-
expect(groupB.value).to.equal('2b,3b');
|
|
498
|
-
change = oneEvent(el, 'change');
|
|
499
|
-
options[1].click();
|
|
500
|
-
await change;
|
|
501
|
-
expect(groupA.value).to.equal('3a');
|
|
502
|
-
expect(groupB.value).to.equal('2b,3b');
|
|
503
|
-
change = oneEvent(el, 'change');
|
|
504
|
-
options[4].click();
|
|
505
|
-
await change;
|
|
506
|
-
expect(groupA.value).to.equal('3a');
|
|
507
|
-
expect(groupB.value).to.equal('3b');
|
|
508
|
-
change = oneEvent(el, 'change');
|
|
509
|
-
options[2].click();
|
|
510
|
-
await change;
|
|
511
|
-
expect(groupA.value).to.equal('');
|
|
512
|
-
expect(groupB.value).to.equal('3b');
|
|
513
|
-
change = oneEvent(el, 'change');
|
|
514
|
-
options[5].click();
|
|
515
|
-
await change;
|
|
516
|
-
expect(groupA.value).to.equal('');
|
|
517
|
-
expect(groupB.value).to.equal('');
|
|
387
|
+
it("on JS clicks", async () => {
|
|
388
|
+
const item1a = options[0];
|
|
389
|
+
const item1b = options[3];
|
|
390
|
+
let change = oneEvent(el, "change");
|
|
391
|
+
item1a.click();
|
|
392
|
+
await change;
|
|
393
|
+
expect(groupA.value).to.equal("1a");
|
|
394
|
+
change = oneEvent(el, "change");
|
|
395
|
+
item1b.click();
|
|
396
|
+
await change;
|
|
397
|
+
expect(groupB.value).to.equal("1b");
|
|
518
398
|
});
|
|
519
|
-
it(
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
await sendKeys({ press: 'Space' });
|
|
537
|
-
expect(parentElement.value).to.equal(option.value);
|
|
538
|
-
await sendKeys({ press: 'ArrowDown' });
|
|
539
|
-
}
|
|
399
|
+
it("can have them `preventDefault()`ed", async () => {
|
|
400
|
+
const preventSpy = spy();
|
|
401
|
+
expect(groupA.value).to.equal("");
|
|
402
|
+
expect(groupB.value).to.equal("");
|
|
403
|
+
const item1a = options[0];
|
|
404
|
+
const item1b = options[3];
|
|
405
|
+
groupA.addEventListener("change", (event) => {
|
|
406
|
+
event.preventDefault();
|
|
407
|
+
preventSpy();
|
|
408
|
+
});
|
|
409
|
+
const change = oneEvent(el, "change");
|
|
410
|
+
item1a.click();
|
|
411
|
+
item1b.click();
|
|
412
|
+
await change;
|
|
413
|
+
expect(preventSpy.callCount).to.equal(1);
|
|
414
|
+
expect(groupA.value).to.equal("");
|
|
415
|
+
expect(groupB.value).to.equal("1b");
|
|
540
416
|
});
|
|
417
|
+
});
|
|
418
|
+
it('manages a single selection when [selects="single"]', async () => {
|
|
419
|
+
expect(groupA.value).to.equal("");
|
|
420
|
+
expect(groupB.value).to.equal("");
|
|
421
|
+
let change = oneEvent(el, "change");
|
|
422
|
+
options[0].click();
|
|
423
|
+
await change;
|
|
424
|
+
expect(groupA.value).to.equal("1a");
|
|
425
|
+
change = oneEvent(el, "change");
|
|
426
|
+
options[3].click();
|
|
427
|
+
await change;
|
|
428
|
+
expect(groupB.value).to.equal("1b");
|
|
429
|
+
change = oneEvent(el, "change");
|
|
430
|
+
options[1].click();
|
|
431
|
+
await change;
|
|
432
|
+
expect(groupA.value).to.equal("2a");
|
|
433
|
+
change = oneEvent(el, "change");
|
|
434
|
+
options[4].click();
|
|
435
|
+
await change;
|
|
436
|
+
expect(groupB.value).to.equal("2b");
|
|
437
|
+
change = oneEvent(el, "change");
|
|
438
|
+
options[2].click();
|
|
439
|
+
await change;
|
|
440
|
+
expect(groupA.value).to.equal("3a");
|
|
441
|
+
change = oneEvent(el, "change");
|
|
442
|
+
options[5].click();
|
|
443
|
+
await change;
|
|
444
|
+
expect(groupB.value).to.equal("3b");
|
|
445
|
+
});
|
|
446
|
+
it('manages multiple selections when [selects="multiple"]', async () => {
|
|
447
|
+
groupA.selects = "multiple";
|
|
448
|
+
groupB.selects = "multiple";
|
|
449
|
+
await elementUpdated(groupA);
|
|
450
|
+
await elementUpdated(groupB);
|
|
451
|
+
expect(groupA.value).to.equal("");
|
|
452
|
+
expect(groupB.value).to.equal("");
|
|
453
|
+
let change = oneEvent(el, "change");
|
|
454
|
+
options[0].click();
|
|
455
|
+
await change;
|
|
456
|
+
expect(groupA.value).to.equal("1a");
|
|
457
|
+
expect(groupB.value).to.equal("");
|
|
458
|
+
change = oneEvent(el, "change");
|
|
459
|
+
options[3].click();
|
|
460
|
+
await change;
|
|
461
|
+
expect(groupA.value).to.equal("1a");
|
|
462
|
+
expect(groupB.value).to.equal("1b");
|
|
463
|
+
change = oneEvent(el, "change");
|
|
464
|
+
options[1].click();
|
|
465
|
+
await change;
|
|
466
|
+
expect(groupA.value).to.equal("1a,2a");
|
|
467
|
+
expect(groupB.value).to.equal("1b");
|
|
468
|
+
change = oneEvent(el, "change");
|
|
469
|
+
options[4].click();
|
|
470
|
+
await change;
|
|
471
|
+
expect(groupA.value).to.equal("1a,2a");
|
|
472
|
+
expect(groupB.value).to.equal("1b,2b");
|
|
473
|
+
change = oneEvent(el, "change");
|
|
474
|
+
options[2].click();
|
|
475
|
+
await change;
|
|
476
|
+
expect(groupA.value).to.equal("1a,2a,3a");
|
|
477
|
+
expect(groupB.value).to.equal("1b,2b");
|
|
478
|
+
change = oneEvent(el, "change");
|
|
479
|
+
options[5].click();
|
|
480
|
+
await change;
|
|
481
|
+
expect(groupA.value).to.equal("1a,2a,3a");
|
|
482
|
+
expect(groupB.value).to.equal("1b,2b,3b");
|
|
483
|
+
change = oneEvent(el, "change");
|
|
484
|
+
options[0].click();
|
|
485
|
+
await change;
|
|
486
|
+
expect(groupA.value).to.equal("2a,3a");
|
|
487
|
+
expect(groupB.value).to.equal("1b,2b,3b");
|
|
488
|
+
change = oneEvent(el, "change");
|
|
489
|
+
options[3].click();
|
|
490
|
+
await change;
|
|
491
|
+
expect(groupA.value).to.equal("2a,3a");
|
|
492
|
+
expect(groupB.value).to.equal("2b,3b");
|
|
493
|
+
change = oneEvent(el, "change");
|
|
494
|
+
options[1].click();
|
|
495
|
+
await change;
|
|
496
|
+
expect(groupA.value).to.equal("3a");
|
|
497
|
+
expect(groupB.value).to.equal("2b,3b");
|
|
498
|
+
change = oneEvent(el, "change");
|
|
499
|
+
options[4].click();
|
|
500
|
+
await change;
|
|
501
|
+
expect(groupA.value).to.equal("3a");
|
|
502
|
+
expect(groupB.value).to.equal("3b");
|
|
503
|
+
change = oneEvent(el, "change");
|
|
504
|
+
options[2].click();
|
|
505
|
+
await change;
|
|
506
|
+
expect(groupA.value).to.equal("");
|
|
507
|
+
expect(groupB.value).to.equal("3b");
|
|
508
|
+
change = oneEvent(el, "change");
|
|
509
|
+
options[5].click();
|
|
510
|
+
await change;
|
|
511
|
+
expect(groupA.value).to.equal("");
|
|
512
|
+
expect(groupB.value).to.equal("");
|
|
513
|
+
});
|
|
514
|
+
it("manages focus", async () => {
|
|
515
|
+
await elementUpdated(groupA);
|
|
516
|
+
await elementUpdated(groupB);
|
|
517
|
+
const input = document.createElement("input");
|
|
518
|
+
el.insertAdjacentElement("afterend", input);
|
|
519
|
+
input.focus();
|
|
520
|
+
expect(document.activeElement === input).to.be.true;
|
|
521
|
+
await sendKeys({ press: "Shift+Tab" });
|
|
522
|
+
expect(document.activeElement === groupA).to.be.true;
|
|
523
|
+
await sendKeys({ press: "ArrowDown" });
|
|
524
|
+
await sendKeys({ press: "ArrowUp" });
|
|
525
|
+
await elementUpdated(el);
|
|
526
|
+
for (const option of options) {
|
|
527
|
+
const parentElement = option.parentElement;
|
|
528
|
+
expect(document.activeElement === parentElement, "parent focused").to.be.true;
|
|
529
|
+
expect(option.focused, "option visually focused").to.be.true;
|
|
530
|
+
await sendKeys({ press: "Space" });
|
|
531
|
+
expect(parentElement.value).to.equal(option.value);
|
|
532
|
+
await sendKeys({ press: "ArrowDown" });
|
|
533
|
+
}
|
|
534
|
+
});
|
|
541
535
|
});
|
|
542
|
-
//# sourceMappingURL=menu-selects.test.js.map
|
|
536
|
+
//# sourceMappingURL=menu-selects.test.js.map
|