@spectrum-web-components/menu 0.15.1-devmode2.0 → 0.16.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/package.json +9 -9
- package/sp-menu-divider.dev.js +1 -0
- package/sp-menu-divider.dev.js.map +1 -1
- package/sp-menu-divider.js +1 -2
- package/sp-menu-divider.js.map +2 -2
- package/sp-menu-group.dev.js +1 -0
- package/sp-menu-group.dev.js.map +1 -1
- package/sp-menu-group.js +1 -2
- package/sp-menu-group.js.map +2 -2
- package/sp-menu-item.dev.js +1 -0
- package/sp-menu-item.dev.js.map +1 -1
- package/sp-menu-item.js +1 -2
- package/sp-menu-item.js.map +2 -2
- package/sp-menu.dev.js +1 -0
- package/sp-menu.dev.js.map +1 -1
- package/sp-menu.js +1 -2
- package/sp-menu.js.map +2 -2
- package/src/Menu.dev.js +51 -24
- package/src/Menu.dev.js.map +1 -1
- package/src/Menu.js +2 -493
- package/src/Menu.js.map +2 -2
- package/src/MenuDivider.dev.js +1 -0
- package/src/MenuDivider.dev.js.map +1 -1
- package/src/MenuDivider.js +1 -12
- package/src/MenuDivider.js.map +2 -2
- package/src/MenuGroup.dev.js +4 -3
- package/src/MenuGroup.dev.js.map +1 -1
- package/src/MenuGroup.js +2 -71
- package/src/MenuGroup.js.map +2 -2
- package/src/MenuItem.dev.js +34 -9
- package/src/MenuItem.dev.js.map +2 -2
- package/src/MenuItem.js +7 -406
- package/src/MenuItem.js.map +2 -2
- package/src/index.dev.js +1 -0
- package/src/index.dev.js.map +1 -1
- package/src/index.js +1 -4
- package/src/index.js.map +1 -1
- package/src/menu-divider.css.dev.js +1 -0
- package/src/menu-divider.css.dev.js.map +1 -1
- package/src/menu-divider.css.js +2 -4
- package/src/menu-divider.css.js.map +2 -2
- package/src/menu-group.css.dev.js +1 -0
- package/src/menu-group.css.dev.js.map +1 -1
- package/src/menu-group.css.js +2 -4
- package/src/menu-group.css.js.map +2 -2
- package/src/menu-item.css.dev.js +1 -0
- package/src/menu-item.css.dev.js.map +1 -1
- package/src/menu-item.css.js +2 -4
- package/src/menu-item.css.js.map +2 -2
- package/src/menu.css.dev.js +1 -0
- package/src/menu.css.dev.js.map +1 -1
- package/src/menu.css.js +2 -4
- package/src/menu.css.js.map +2 -2
- package/src/spectrum-checkmark.css.dev.js +1 -0
- package/src/spectrum-checkmark.css.dev.js.map +1 -1
- package/src/spectrum-checkmark.css.js +2 -4
- package/src/spectrum-checkmark.css.js.map +2 -2
- package/src/spectrum-chevron.css.dev.js +1 -0
- package/src/spectrum-chevron.css.dev.js.map +1 -1
- package/src/spectrum-chevron.css.js +2 -4
- package/src/spectrum-chevron.css.js.map +2 -2
- package/src/spectrum-itemLabel.css.dev.js +1 -0
- package/src/spectrum-itemLabel.css.dev.js.map +1 -1
- package/src/spectrum-itemLabel.css.js +2 -4
- package/src/spectrum-itemLabel.css.js.map +2 -2
- package/src/spectrum-menu-divider.css.dev.js +1 -0
- package/src/spectrum-menu-divider.css.dev.js.map +1 -1
- package/src/spectrum-menu-divider.css.js +2 -4
- package/src/spectrum-menu-divider.css.js.map +2 -2
- package/src/spectrum-menu-item.css.dev.js +1 -0
- package/src/spectrum-menu-item.css.dev.js.map +1 -1
- package/src/spectrum-menu-item.css.js +2 -4
- package/src/spectrum-menu-item.css.js.map +2 -2
- package/src/spectrum-menu-sectionHeading.css.dev.js +1 -0
- package/src/spectrum-menu-sectionHeading.css.dev.js.map +1 -1
- package/src/spectrum-menu-sectionHeading.css.js +2 -4
- package/src/spectrum-menu-sectionHeading.css.js.map +2 -2
- package/src/spectrum-menu.css.dev.js +1 -0
- package/src/spectrum-menu.css.dev.js.map +1 -1
- package/src/spectrum-menu.css.js +2 -4
- package/src/spectrum-menu.css.js.map +2 -2
- package/stories/menu-group.stories.js +1 -0
- package/stories/menu-group.stories.js.map +2 -2
- package/stories/menu-item.stories.js +1 -0
- package/stories/menu-item.stories.js.map +1 -1
- package/stories/menu.stories.js +1 -0
- package/stories/menu.stories.js.map +1 -1
- package/stories/submenu.stories.js +10 -3
- package/stories/submenu.stories.js.map +2 -2
- package/test/benchmark/test-basic.js +1 -0
- package/test/benchmark/test-basic.js.map +1 -1
- package/test/menu-group.test-vrt.js +1 -0
- package/test/menu-group.test-vrt.js.map +1 -1
- package/test/menu-group.test.js +130 -43
- package/test/menu-group.test.js.map +1 -1
- package/test/menu-item.test-vrt.js +1 -0
- package/test/menu-item.test-vrt.js.map +1 -1
- package/test/menu-item.test.js +41 -21
- package/test/menu-item.test.js.map +1 -1
- package/test/menu-selects.test.js +17 -8
- package/test/menu-selects.test.js.map +1 -1
- package/test/menu.test-vrt.js +1 -0
- package/test/menu.test-vrt.js.map +1 -1
- package/test/menu.test.js +129 -50
- package/test/menu.test.js.map +1 -1
- package/test/submenu.test-vrt.js +1 -0
- package/test/submenu.test-vrt.js.map +1 -1
- package/test/submenu.test.js +71 -37
- package/test/submenu.test.js.map +1 -1
package/test/menu.test.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
import "@spectrum-web-components/menu/sp-menu.js";
|
|
2
3
|
import "@spectrum-web-components/menu/sp-menu-item.js";
|
|
3
4
|
import "@spectrum-web-components/menu/sp-menu-group.js";
|
|
@@ -20,9 +21,11 @@ import { spy } from "sinon";
|
|
|
20
21
|
import { sendKeys } from "@web/test-runner-commands";
|
|
21
22
|
describe("Menu", () => {
|
|
22
23
|
it("renders empty", async () => {
|
|
23
|
-
const el = await fixture(
|
|
24
|
+
const el = await fixture(
|
|
25
|
+
html`
|
|
24
26
|
<sp-menu tabindex="0"><a href="#anchor">Test</a></sp-menu>
|
|
25
|
-
`
|
|
27
|
+
`
|
|
28
|
+
);
|
|
26
29
|
const anchor = el.querySelector("a");
|
|
27
30
|
await elementUpdated(el);
|
|
28
31
|
expect(document.activeElement === el, "self not focused, 1").to.be.false;
|
|
@@ -38,11 +41,13 @@ describe("Menu", () => {
|
|
|
38
41
|
});
|
|
39
42
|
it("renders w/ [disabled] menu items", async () => {
|
|
40
43
|
const focusinSpy = spy();
|
|
41
|
-
const el = await fixture(
|
|
44
|
+
const el = await fixture(
|
|
45
|
+
html`
|
|
42
46
|
<sp-menu tabindex="0" @focusin=${() => focusinSpy()}>
|
|
43
47
|
<sp-menu-item disabled>Disabled item</sp-menu-item>
|
|
44
48
|
</sp-menu>
|
|
45
|
-
`
|
|
49
|
+
`
|
|
50
|
+
);
|
|
46
51
|
await elementUpdated(el);
|
|
47
52
|
expect(document.activeElement === el, "self not focused, 1").to.be.false;
|
|
48
53
|
el.focus();
|
|
@@ -52,12 +57,14 @@ describe("Menu", () => {
|
|
|
52
57
|
});
|
|
53
58
|
it("renders w/ all [disabled] menu items", async () => {
|
|
54
59
|
const focusinSpy = spy();
|
|
55
|
-
const el = await fixture(
|
|
60
|
+
const el = await fixture(
|
|
61
|
+
html`
|
|
56
62
|
<sp-menu tabindex="0" @focusin=${() => focusinSpy()}>
|
|
57
63
|
<sp-menu-item disabled>Disabled item 1</sp-menu-item>
|
|
58
64
|
<sp-menu-item disabled>Disabled item 2</sp-menu-item>
|
|
59
65
|
</sp-menu>
|
|
60
|
-
`
|
|
66
|
+
`
|
|
67
|
+
);
|
|
61
68
|
const firstItem = el.querySelector("sp-menu-item");
|
|
62
69
|
await elementUpdated(el);
|
|
63
70
|
expect(document.activeElement === el, "self not focused, 1").to.be.false;
|
|
@@ -72,7 +79,8 @@ describe("Menu", () => {
|
|
|
72
79
|
expect(el.matches(":focus-within")).to.be.false;
|
|
73
80
|
});
|
|
74
81
|
it("renders w/ menu items", async () => {
|
|
75
|
-
const el = await fixture(
|
|
82
|
+
const el = await fixture(
|
|
83
|
+
html`
|
|
76
84
|
<sp-menu label="Pick an action:">
|
|
77
85
|
<sp-menu-item>Deselect</sp-menu-item>
|
|
78
86
|
<sp-menu-item>Select Inverse</sp-menu-item>
|
|
@@ -82,33 +90,46 @@ describe("Menu", () => {
|
|
|
82
90
|
<sp-menu-item>Save Selection</sp-menu-item>
|
|
83
91
|
<sp-menu-item disabled>Make Work Path</sp-menu-item>
|
|
84
92
|
</sp-menu>
|
|
85
|
-
`
|
|
86
|
-
|
|
93
|
+
`
|
|
94
|
+
);
|
|
95
|
+
await waitUntil(
|
|
96
|
+
() => el.childItems.length == 6,
|
|
97
|
+
"expected menu to manage 6 menu items"
|
|
98
|
+
);
|
|
87
99
|
await elementUpdated(el);
|
|
88
|
-
const inTabindexElement = el.querySelector(
|
|
100
|
+
const inTabindexElement = el.querySelector(
|
|
101
|
+
'[tabindex]:not([tabindex="-1"])'
|
|
102
|
+
);
|
|
89
103
|
expect(inTabindexElement).to.be.null;
|
|
90
104
|
await expect(el).to.be.accessible();
|
|
91
105
|
});
|
|
92
|
-
testForLitDevWarnings(
|
|
106
|
+
testForLitDevWarnings(
|
|
107
|
+
async () => await fixture(
|
|
108
|
+
html`
|
|
93
109
|
<sp-menu selects="single">
|
|
94
110
|
<sp-menu-item>Not Selected</sp-menu-item>
|
|
95
111
|
<sp-menu-item selected>Selected</sp-menu-item>
|
|
96
112
|
<sp-menu-item>Other</sp-menu-item>
|
|
97
113
|
</sp-menu>
|
|
98
|
-
`
|
|
114
|
+
`
|
|
115
|
+
)
|
|
116
|
+
);
|
|
99
117
|
it("renders w/ selected", async () => {
|
|
100
|
-
const el = await fixture(
|
|
118
|
+
const el = await fixture(
|
|
119
|
+
html`
|
|
101
120
|
<sp-menu selects="single">
|
|
102
121
|
<sp-menu-item>Not Selected</sp-menu-item>
|
|
103
122
|
<sp-menu-item selected>Selected</sp-menu-item>
|
|
104
123
|
<sp-menu-item>Other</sp-menu-item>
|
|
105
124
|
</sp-menu>
|
|
106
|
-
`
|
|
125
|
+
`
|
|
126
|
+
);
|
|
107
127
|
await elementUpdated(el);
|
|
108
128
|
await expect(el).to.be.accessible();
|
|
109
129
|
});
|
|
110
130
|
it("renders w/ hrefs", async () => {
|
|
111
|
-
const el = await fixture(
|
|
131
|
+
const el = await fixture(
|
|
132
|
+
html`
|
|
112
133
|
<sp-menu>
|
|
113
134
|
<sp-menu-item href="not-selected.html">
|
|
114
135
|
Not Selected
|
|
@@ -116,14 +137,19 @@ describe("Menu", () => {
|
|
|
116
137
|
<sp-menu-item href="selected.html">Selected</sp-menu-item>
|
|
117
138
|
<sp-menu-item href="other.html">Other</sp-menu-item>
|
|
118
139
|
</sp-menu>
|
|
119
|
-
`
|
|
120
|
-
|
|
140
|
+
`
|
|
141
|
+
);
|
|
142
|
+
await waitUntil(
|
|
143
|
+
() => el.childItems.length == 3,
|
|
144
|
+
"expected menu to manage 3 items"
|
|
145
|
+
);
|
|
121
146
|
await elementUpdated(el);
|
|
122
147
|
await expect(el).to.be.accessible();
|
|
123
148
|
expect(el.getAttribute("role")).to.equal("menu");
|
|
124
149
|
});
|
|
125
150
|
it("handle focus and keyboard input", async () => {
|
|
126
|
-
const el = await fixture(
|
|
151
|
+
const el = await fixture(
|
|
152
|
+
html`
|
|
127
153
|
<sp-menu>
|
|
128
154
|
<sp-menu-item>Deselect</sp-menu-item>
|
|
129
155
|
<sp-menu-item>Select Inverse</sp-menu-item>
|
|
@@ -133,12 +159,22 @@ describe("Menu", () => {
|
|
|
133
159
|
<sp-menu-item>Save Selection</sp-menu-item>
|
|
134
160
|
<sp-menu-item disabled>Make Work Path</sp-menu-item>
|
|
135
161
|
</sp-menu>
|
|
136
|
-
`
|
|
137
|
-
|
|
162
|
+
`
|
|
163
|
+
);
|
|
164
|
+
await waitUntil(
|
|
165
|
+
() => el.childItems.length == 6,
|
|
166
|
+
"expected menu to manage 6 items"
|
|
167
|
+
);
|
|
138
168
|
await elementUpdated(el);
|
|
139
|
-
const firstItem = el.querySelector(
|
|
140
|
-
|
|
141
|
-
|
|
169
|
+
const firstItem = el.querySelector(
|
|
170
|
+
"sp-menu-item:nth-of-type(1)"
|
|
171
|
+
);
|
|
172
|
+
const thirdToLastItem = el.querySelector(
|
|
173
|
+
"sp-menu-item:nth-last-of-type(3)"
|
|
174
|
+
);
|
|
175
|
+
const secondToLastItem = el.querySelector(
|
|
176
|
+
"sp-menu-item:nth-last-of-type(2)"
|
|
177
|
+
);
|
|
142
178
|
el.focus();
|
|
143
179
|
await elementUpdated(el);
|
|
144
180
|
await sendKeys({ press: "ArrowDown" });
|
|
@@ -155,17 +191,24 @@ describe("Menu", () => {
|
|
|
155
191
|
expect(secondToLastItem.focused).to.be.true;
|
|
156
192
|
});
|
|
157
193
|
it("handle focus and late descendent additions", async () => {
|
|
158
|
-
const el = await fixture(
|
|
194
|
+
const el = await fixture(
|
|
195
|
+
html`
|
|
159
196
|
<sp-menu>
|
|
160
197
|
<sp-menu-group selects="inherit">
|
|
161
198
|
<span slot="header">Options</span>
|
|
162
199
|
<sp-menu-item>Deselect</sp-menu-item>
|
|
163
200
|
</sp-menu-group>
|
|
164
201
|
</sp-menu>
|
|
165
|
-
`
|
|
166
|
-
|
|
202
|
+
`
|
|
203
|
+
);
|
|
204
|
+
await waitUntil(
|
|
205
|
+
() => el.childItems.length == 1,
|
|
206
|
+
"expected menu to manage 1 item"
|
|
207
|
+
);
|
|
167
208
|
await elementUpdated(el);
|
|
168
|
-
const firstItem = el.querySelector(
|
|
209
|
+
const firstItem = el.querySelector(
|
|
210
|
+
"sp-menu-item:nth-of-type(1)"
|
|
211
|
+
);
|
|
169
212
|
el.focus();
|
|
170
213
|
await elementUpdated(el);
|
|
171
214
|
await sendKeys({ press: "ArrowDown" });
|
|
@@ -198,18 +241,29 @@ describe("Menu", () => {
|
|
|
198
241
|
expect(appendedItem.focused, "last visibly focused").to.be.true;
|
|
199
242
|
});
|
|
200
243
|
it("cleans up when tabbing away", async () => {
|
|
201
|
-
const el = await fixture(
|
|
244
|
+
const el = await fixture(
|
|
245
|
+
html`
|
|
202
246
|
<sp-menu tabindex="0">
|
|
203
247
|
<sp-menu-item>Deselect</sp-menu-item>
|
|
204
248
|
<sp-menu-item>Select Inverse</sp-menu-item>
|
|
205
249
|
<sp-menu-item>Third Item</sp-menu-item>
|
|
206
250
|
</sp-menu>
|
|
207
|
-
`
|
|
208
|
-
|
|
251
|
+
`
|
|
252
|
+
);
|
|
253
|
+
await waitUntil(
|
|
254
|
+
() => el.childItems.length == 3,
|
|
255
|
+
"expected menu to manage 3 items"
|
|
256
|
+
);
|
|
209
257
|
await elementUpdated(el);
|
|
210
|
-
const firstItem = el.querySelector(
|
|
211
|
-
|
|
212
|
-
|
|
258
|
+
const firstItem = el.querySelector(
|
|
259
|
+
"sp-menu-item:nth-of-type(1)"
|
|
260
|
+
);
|
|
261
|
+
const secondItem = el.querySelector(
|
|
262
|
+
"sp-menu-item:nth-of-type(2)"
|
|
263
|
+
);
|
|
264
|
+
const thirdItem = el.querySelector(
|
|
265
|
+
"sp-menu-item:nth-of-type(3)"
|
|
266
|
+
);
|
|
213
267
|
el.focus();
|
|
214
268
|
await sendKeys({ press: "ArrowDown" });
|
|
215
269
|
await sendKeys({ press: "ArrowUp" });
|
|
@@ -219,17 +273,20 @@ describe("Menu", () => {
|
|
|
219
273
|
el.dispatchEvent(arrowDownEvent());
|
|
220
274
|
expect(thirdItem.focused, "third").to.be.true;
|
|
221
275
|
el.dispatchEvent(tabEvent());
|
|
222
|
-
el.dispatchEvent(
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
276
|
+
el.dispatchEvent(
|
|
277
|
+
new CustomEvent("focusout", {
|
|
278
|
+
composed: true,
|
|
279
|
+
bubbles: true
|
|
280
|
+
})
|
|
281
|
+
);
|
|
226
282
|
await nextFrame();
|
|
227
283
|
el.startListeningToKeyboard();
|
|
228
284
|
el.dispatchEvent(arrowDownEvent());
|
|
229
285
|
expect(secondItem.focused, "second").to.be.true;
|
|
230
286
|
});
|
|
231
287
|
it("handles focus across focused MenuItem removals", async () => {
|
|
232
|
-
const el = await fixture(
|
|
288
|
+
const el = await fixture(
|
|
289
|
+
html`
|
|
233
290
|
<sp-menu id="test">
|
|
234
291
|
<sp-menu-item class="first">Deselect</sp-menu-item>
|
|
235
292
|
<sp-menu-item>Invert Selection</sp-menu-item>
|
|
@@ -239,7 +296,8 @@ describe("Menu", () => {
|
|
|
239
296
|
Save Selection
|
|
240
297
|
</sp-menu-item>
|
|
241
298
|
</sp-menu>
|
|
242
|
-
`
|
|
299
|
+
`
|
|
300
|
+
);
|
|
243
301
|
const firstItem = el.querySelector(".first");
|
|
244
302
|
const selectedItem = el.querySelector(".selected");
|
|
245
303
|
await elementUpdated(el);
|
|
@@ -252,18 +310,30 @@ describe("Menu", () => {
|
|
|
252
310
|
expect(firstItem.focused).to.be.true;
|
|
253
311
|
});
|
|
254
312
|
it("handles single selection", async () => {
|
|
255
|
-
const el = await fixture(
|
|
313
|
+
const el = await fixture(
|
|
314
|
+
html`
|
|
256
315
|
<sp-menu selects="single">
|
|
257
316
|
<sp-menu-item selected>First</sp-menu-item>
|
|
258
317
|
<sp-menu-item>Second</sp-menu-item>
|
|
259
318
|
<sp-menu-item>Third</sp-menu-item>
|
|
260
319
|
</sp-menu>
|
|
261
|
-
`
|
|
262
|
-
|
|
263
|
-
await waitUntil(
|
|
320
|
+
`
|
|
321
|
+
);
|
|
322
|
+
await waitUntil(
|
|
323
|
+
() => el.childItems.length == 3,
|
|
324
|
+
"expected menu to manage 3 items"
|
|
325
|
+
);
|
|
326
|
+
await waitUntil(
|
|
327
|
+
() => el.selectedItems.length == 1,
|
|
328
|
+
"expected menu to have 1 selected item"
|
|
329
|
+
);
|
|
264
330
|
await elementUpdated(el);
|
|
265
|
-
const firstItem = el.querySelector(
|
|
266
|
-
|
|
331
|
+
const firstItem = el.querySelector(
|
|
332
|
+
"sp-menu-item:nth-of-type(1)"
|
|
333
|
+
);
|
|
334
|
+
const secondItem = el.querySelector(
|
|
335
|
+
"sp-menu-item:nth-of-type(2)"
|
|
336
|
+
);
|
|
267
337
|
expect(firstItem.getAttribute("role")).to.equal("menuitemradio");
|
|
268
338
|
expect(secondItem.getAttribute("role")).to.equal("menuitemradio");
|
|
269
339
|
expect(firstItem.selected).to.be.true;
|
|
@@ -283,17 +353,26 @@ describe("Menu", () => {
|
|
|
283
353
|
});
|
|
284
354
|
it("handles multiple selection", async () => {
|
|
285
355
|
const changeSpy = spy();
|
|
286
|
-
const el = await fixture(
|
|
356
|
+
const el = await fixture(
|
|
357
|
+
html`
|
|
287
358
|
<sp-menu selects="multiple" @change=${() => changeSpy()}>
|
|
288
359
|
<sp-menu-item selected>First</sp-menu-item>
|
|
289
360
|
<sp-menu-item>Second</sp-menu-item>
|
|
290
361
|
<sp-menu-item>Third</sp-menu-item>
|
|
291
362
|
</sp-menu>
|
|
292
|
-
`
|
|
293
|
-
|
|
363
|
+
`
|
|
364
|
+
);
|
|
365
|
+
await waitUntil(
|
|
366
|
+
() => el.childItems.length == 3,
|
|
367
|
+
"expected menu to manage 3 items"
|
|
368
|
+
);
|
|
294
369
|
await elementUpdated(el);
|
|
295
|
-
const firstItem = el.querySelector(
|
|
296
|
-
|
|
370
|
+
const firstItem = el.querySelector(
|
|
371
|
+
"sp-menu-item:nth-of-type(1)"
|
|
372
|
+
);
|
|
373
|
+
const secondItem = el.querySelector(
|
|
374
|
+
"sp-menu-item:nth-of-type(2)"
|
|
375
|
+
);
|
|
297
376
|
expect(firstItem.getAttribute("role")).to.equal("menuitemcheckbox");
|
|
298
377
|
expect(secondItem.getAttribute("role")).to.equal("menuitemcheckbox");
|
|
299
378
|
expect(firstItem.selected).to.be.true;
|
package/test/menu.test.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["menu.test.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/menu/sp-menu-group.js';\nimport { Menu, MenuItem } from '@spectrum-web-components/menu';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n nextFrame,\n waitUntil,\n} from '@open-wc/testing';\nimport {\n arrowDownEvent,\n arrowUpEvent,\n tabEvent,\n testForLitDevWarnings,\n tEvent,\n} from '../../../test/testing-helpers.js';\nimport { spy } from 'sinon';\nimport { sendKeys } from '@web/test-runner-commands';\n\ndescribe('Menu', () => {\n it('renders empty', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu tabindex=\"0\"><a href=\"#anchor\">Test</a></sp-menu>\n `\n );\n\n const anchor = el.querySelector('a') as HTMLAnchorElement;\n await elementUpdated(el);\n expect(document.activeElement === el, 'self not focused, 1').to.be\n .false;\n expect(document.activeElement === anchor, 'child not focused, 1').to.be\n .false;\n\n expect(el.getAttribute('role')).to.equal('menu');\n\n el.focus();\n await elementUpdated(el);\n expect(document.activeElement === el, 'self not focused, 2').to.be\n .false;\n expect(document.activeElement === anchor, 'child not focused, 2').to.be\n .false;\n\n anchor.focus();\n expect(document.activeElement === el, 'self not focused, 3').to.be\n .false;\n expect(document.activeElement === anchor, 'anchor').to.be.true;\n });\n it('renders w/ [disabled] menu items', async () => {\n const focusinSpy = spy();\n const el = await fixture<Menu>(\n html`\n <sp-menu tabindex=\"0\" @focusin=${() => focusinSpy()}>\n <sp-menu-item disabled>Disabled item</sp-menu-item>\n </sp-menu>\n `\n );\n\n await elementUpdated(el);\n expect(document.activeElement === el, 'self not focused, 1').to.be\n .false;\n\n el.focus();\n await elementUpdated(el);\n expect(document.activeElement === el, 'self not focused, 2').to.be\n .false;\n expect(focusinSpy.callCount).to.equal(0);\n });\n it('renders w/ all [disabled] menu items', async () => {\n const focusinSpy = spy();\n const el = await fixture<Menu>(\n html`\n <sp-menu tabindex=\"0\" @focusin=${() => focusinSpy()}>\n <sp-menu-item disabled>Disabled item 1</sp-menu-item>\n <sp-menu-item disabled>Disabled item 2</sp-menu-item>\n </sp-menu>\n `\n );\n const firstItem = el.querySelector('sp-menu-item') as MenuItem;\n\n await elementUpdated(el);\n expect(document.activeElement === el, 'self not focused, 1').to.be\n .false;\n\n el.focus();\n await elementUpdated(el);\n expect(document.activeElement === el, 'self not focused, 2').to.be\n .false;\n expect(focusinSpy.callCount).to.equal(0);\n firstItem.focus();\n await elementUpdated(el);\n expect(document.activeElement === el, 'self not focused, 2').to.be\n .false;\n expect(focusinSpy.callCount).to.equal(0);\n expect(el.matches(':focus-within')).to.be.false;\n });\n it('renders w/ menu items', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu label=\"Pick an action:\">\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select Inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and Mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save Selection</sp-menu-item>\n <sp-menu-item disabled>Make Work Path</sp-menu-item>\n </sp-menu>\n `\n );\n\n await waitUntil(\n () => el.childItems.length == 6,\n 'expected menu to manage 6 menu items'\n );\n await elementUpdated(el);\n\n const inTabindexElement = el.querySelector(\n '[tabindex]:not([tabindex=\"-1\"])'\n );\n expect(inTabindexElement).to.be.null;\n await expect(el).to.be.accessible();\n });\n\n testForLitDevWarnings(\n async () =>\n await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-item>Not Selected</sp-menu-item>\n <sp-menu-item selected>Selected</sp-menu-item>\n <sp-menu-item>Other</sp-menu-item>\n </sp-menu>\n `\n )\n );\n\n it('renders w/ selected', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-item>Not Selected</sp-menu-item>\n <sp-menu-item selected>Selected</sp-menu-item>\n <sp-menu-item>Other</sp-menu-item>\n </sp-menu>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n\n it('renders w/ hrefs', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu>\n <sp-menu-item href=\"not-selected.html\">\n Not Selected\n </sp-menu-item>\n <sp-menu-item href=\"selected.html\">Selected</sp-menu-item>\n <sp-menu-item href=\"other.html\">Other</sp-menu-item>\n </sp-menu>\n `\n );\n\n await waitUntil(\n () => el.childItems.length == 3,\n 'expected menu to manage 3 items'\n );\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n\n expect(el.getAttribute('role')).to.equal('menu');\n });\n\n it('handle focus and keyboard input', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select Inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and Mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save Selection</sp-menu-item>\n <sp-menu-item disabled>Make Work Path</sp-menu-item>\n </sp-menu>\n `\n );\n\n await waitUntil(\n () => el.childItems.length == 6,\n 'expected menu to manage 6 items'\n );\n await elementUpdated(el);\n\n const firstItem = el.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const thirdToLastItem = el.querySelector(\n 'sp-menu-item:nth-last-of-type(3)'\n ) as MenuItem;\n const secondToLastItem = el.querySelector(\n 'sp-menu-item:nth-last-of-type(2)'\n ) as MenuItem;\n\n el.focus();\n await elementUpdated(el);\n // Activate :focus-visible\n await sendKeys({ press: 'ArrowDown' });\n await sendKeys({ press: 'ArrowUp' });\n\n expect(document.activeElement === el).to.be.true;\n expect(firstItem.focused).to.be.true;\n\n el.dispatchEvent(arrowUpEvent());\n el.dispatchEvent(arrowUpEvent());\n el.dispatchEvent(tEvent());\n\n expect(document.activeElement === el).to.be.true;\n expect(thirdToLastItem.focused).to.be.true;\n\n el.dispatchEvent(arrowDownEvent());\n\n expect(document.activeElement === el).to.be.true;\n expect(secondToLastItem.focused).to.be.true;\n });\n\n it('handle focus and late descendent additions', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu>\n <sp-menu-group selects=\"inherit\">\n <span slot=\"header\">Options</span>\n <sp-menu-item>Deselect</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n\n await waitUntil(\n () => el.childItems.length == 1,\n 'expected menu to manage 1 item'\n );\n await elementUpdated(el);\n\n const firstItem = el.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n\n el.focus();\n\n await elementUpdated(el);\n // Activate :focus-visible\n await sendKeys({ press: 'ArrowDown' });\n await sendKeys({ press: 'ArrowUp' });\n\n expect(document.activeElement === el, 'active element').to.be.true;\n expect(firstItem.focused, 'visually focused').to.be.true;\n\n el.blur();\n\n const group = el.querySelector('sp-menu-group') as HTMLElement;\n const prependedItem = document.createElement('sp-menu-item');\n prependedItem.textContent = 'Prepended Item';\n const appendedItem = document.createElement('sp-menu-item');\n appendedItem.textContent = 'Appended Item';\n group.prepend(prependedItem);\n group.append(appendedItem);\n await elementUpdated(el);\n\n await waitUntil(() => {\n return el.childItems.length == 3;\n }, 'expected menu to manage 3 items');\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n expect(firstItem.focused).to.be.false;\n expect(prependedItem.focused).to.be.false;\n\n el.focus();\n // Activate :focus-visible\n await sendKeys({ press: 'ArrowDown' });\n await sendKeys({ press: 'ArrowUp' });\n\n expect(document.activeElement === el, 'another active element').to.be\n .true;\n expect(prependedItem.focused, 'another visibly focused').to.be.true;\n\n el.dispatchEvent(arrowUpEvent());\n\n expect(document.activeElement === el, 'last active element').to.be.true;\n expect(appendedItem.focused, 'last visibly focused').to.be.true;\n });\n it('cleans up when tabbing away', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu tabindex=\"0\">\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select Inverse</sp-menu-item>\n <sp-menu-item>Third Item</sp-menu-item>\n </sp-menu>\n `\n );\n\n await waitUntil(\n () => el.childItems.length == 3,\n 'expected menu to manage 3 items'\n );\n await elementUpdated(el);\n\n const firstItem = el.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const secondItem = el.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n const thirdItem = el.querySelector(\n 'sp-menu-item:nth-of-type(3)'\n ) as MenuItem;\n\n el.focus();\n // Activate :focus-visible\n await sendKeys({ press: 'ArrowDown' });\n await sendKeys({ press: 'ArrowUp' });\n expect(document.activeElement === el).to.be.true;\n expect(firstItem.focused, 'first').to.be.true;\n el.dispatchEvent(arrowDownEvent());\n el.dispatchEvent(arrowDownEvent());\n expect(thirdItem.focused, 'third').to.be.true;\n // imitate tabbing away\n el.dispatchEvent(tabEvent());\n el.dispatchEvent(\n new CustomEvent('focusout', {\n composed: true,\n bubbles: true,\n })\n );\n await nextFrame();\n // re-bind keyevents\n el.startListeningToKeyboard();\n // focus management should start again from the first item.\n el.dispatchEvent(arrowDownEvent());\n expect(secondItem.focused, 'second').to.be.true;\n });\n it('handles focus across focused MenuItem removals', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu id=\"test\">\n <sp-menu-item class=\"first\">Deselect</sp-menu-item>\n <sp-menu-item>Invert Selection</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and Mask...</sp-menu-item>\n <sp-menu-item selected class=\"selected\">\n Save Selection\n </sp-menu-item>\n </sp-menu>\n `\n );\n const firstItem = el.querySelector('.first') as MenuItem;\n const selectedItem = el.querySelector('.selected') as MenuItem;\n\n await elementUpdated(el);\n\n el.focus();\n\n expect(document.activeElement).to.equal(el);\n expect(selectedItem.focused).to.be.true;\n\n selectedItem.remove();\n await elementUpdated(el);\n\n expect(document.activeElement).to.equal(el);\n expect(firstItem.focused).to.be.true;\n });\n it('handles single selection', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-item selected>First</sp-menu-item>\n <sp-menu-item>Second</sp-menu-item>\n <sp-menu-item>Third</sp-menu-item>\n </sp-menu>\n `\n );\n\n await waitUntil(\n () => el.childItems.length == 3,\n 'expected menu to manage 3 items'\n );\n await waitUntil(\n () => el.selectedItems.length == 1,\n 'expected menu to have 1 selected item'\n );\n await elementUpdated(el);\n\n const firstItem = el.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n\n const secondItem = el.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n\n expect(firstItem.getAttribute('role')).to.equal('menuitemradio');\n expect(secondItem.getAttribute('role')).to.equal('menuitemradio');\n\n expect(firstItem.selected).to.be.true;\n expect(secondItem.selected).to.be.false;\n expect(firstItem.getAttribute('aria-checked')).to.equal('true');\n expect(secondItem.getAttribute('aria-checked')).to.equal('false');\n expect(el.value).to.equal('First');\n\n secondItem.click();\n\n await elementUpdated(el);\n await elementUpdated(firstItem);\n await elementUpdated(secondItem);\n\n expect(firstItem.selected).to.be.false;\n expect(secondItem.selected).to.be.true;\n expect(firstItem.getAttribute('aria-checked')).to.equal('false');\n expect(secondItem.getAttribute('aria-checked')).to.equal('true');\n expect(el.value).to.equal('Second');\n });\n it('handles multiple selection', async () => {\n const changeSpy = spy();\n const el = await fixture<Menu>(\n html`\n <sp-menu selects=\"multiple\" @change=${() => changeSpy()}>\n <sp-menu-item selected>First</sp-menu-item>\n <sp-menu-item>Second</sp-menu-item>\n <sp-menu-item>Third</sp-menu-item>\n </sp-menu>\n `\n );\n\n await waitUntil(\n () => el.childItems.length == 3,\n 'expected menu to manage 3 items'\n );\n await elementUpdated(el);\n\n const firstItem = el.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n\n const secondItem = el.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n\n expect(firstItem.getAttribute('role')).to.equal('menuitemcheckbox');\n expect(secondItem.getAttribute('role')).to.equal('menuitemcheckbox');\n\n expect(firstItem.selected).to.be.true;\n expect(secondItem.selected).to.be.false;\n expect(firstItem.getAttribute('aria-checked')).to.equal('true');\n expect(secondItem.getAttribute('aria-checked')).to.equal('false');\n expect(el.value).to.equal('First');\n expect(el.selectedItems.length).to.equal(1);\n\n secondItem.click();\n\n await elementUpdated(el);\n await elementUpdated(firstItem);\n await elementUpdated(secondItem);\n\n expect(changeSpy.callCount, 'one change').to.equal(1);\n expect(firstItem.selected).to.be.true;\n expect(secondItem.selected).to.be.true;\n expect(firstItem.getAttribute('aria-checked')).to.equal('true');\n expect(secondItem.getAttribute('aria-checked')).to.equal('true');\n expect(el.value).to.equal('First,Second');\n expect(el.selectedItems.length).to.equal(2);\n\n firstItem.click();\n\n await elementUpdated(el);\n await elementUpdated(firstItem);\n await elementUpdated(secondItem);\n\n expect(changeSpy.callCount, 'two changes').to.equal(2);\n expect(firstItem.selected).to.be.false;\n expect(secondItem.selected).to.be.true;\n expect(firstItem.getAttribute('aria-checked')).to.equal('false');\n expect(secondItem.getAttribute('aria-checked')).to.equal('true');\n expect(el.value).to.equal('Second');\n expect(el.selectedItems.length).to.equal(1);\n });\n});\n"],
|
|
5
|
-
"mappings": "AAWA;
|
|
5
|
+
"mappings": ";AAWA,OAAO;AACP,OAAO;AACP,OAAO;AAEP;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,WAAW;AACpB,SAAS,gBAAgB;AAEzB,SAAS,QAAQ,MAAM;AACnB,KAAG,iBAAiB,YAAY;AAC5B,UAAM,KAAK,MAAM;AAAA,MACb;AAAA;AAAA;AAAA,IAGJ;AAEA,UAAM,SAAS,GAAG,cAAc,GAAG;AACnC,UAAM,eAAe,EAAE;AACvB,WAAO,SAAS,kBAAkB,IAAI,qBAAqB,EAAE,GAAG,GAC3D;AACL,WAAO,SAAS,kBAAkB,QAAQ,sBAAsB,EAAE,GAAG,GAChE;AAEL,WAAO,GAAG,aAAa,MAAM,CAAC,EAAE,GAAG,MAAM,MAAM;AAE/C,OAAG,MAAM;AACT,UAAM,eAAe,EAAE;AACvB,WAAO,SAAS,kBAAkB,IAAI,qBAAqB,EAAE,GAAG,GAC3D;AACL,WAAO,SAAS,kBAAkB,QAAQ,sBAAsB,EAAE,GAAG,GAChE;AAEL,WAAO,MAAM;AACb,WAAO,SAAS,kBAAkB,IAAI,qBAAqB,EAAE,GAAG,GAC3D;AACL,WAAO,SAAS,kBAAkB,QAAQ,QAAQ,EAAE,GAAG,GAAG;AAAA,EAC9D,CAAC;AACD,KAAG,oCAAoC,YAAY;AAC/C,UAAM,aAAa,IAAI;AACvB,UAAM,KAAK,MAAM;AAAA,MACb;AAAA,iDACqC,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA,IAI1D;AAEA,UAAM,eAAe,EAAE;AACvB,WAAO,SAAS,kBAAkB,IAAI,qBAAqB,EAAE,GAAG,GAC3D;AAEL,OAAG,MAAM;AACT,UAAM,eAAe,EAAE;AACvB,WAAO,SAAS,kBAAkB,IAAI,qBAAqB,EAAE,GAAG,GAC3D;AACL,WAAO,WAAW,SAAS,EAAE,GAAG,MAAM,CAAC;AAAA,EAC3C,CAAC;AACD,KAAG,wCAAwC,YAAY;AACnD,UAAM,aAAa,IAAI;AACvB,UAAM,KAAK,MAAM;AAAA,MACb;AAAA,iDACqC,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,IAK1D;AACA,UAAM,YAAY,GAAG,cAAc,cAAc;AAEjD,UAAM,eAAe,EAAE;AACvB,WAAO,SAAS,kBAAkB,IAAI,qBAAqB,EAAE,GAAG,GAC3D;AAEL,OAAG,MAAM;AACT,UAAM,eAAe,EAAE;AACvB,WAAO,SAAS,kBAAkB,IAAI,qBAAqB,EAAE,GAAG,GAC3D;AACL,WAAO,WAAW,SAAS,EAAE,GAAG,MAAM,CAAC;AACvC,cAAU,MAAM;AAChB,UAAM,eAAe,EAAE;AACvB,WAAO,SAAS,kBAAkB,IAAI,qBAAqB,EAAE,GAAG,GAC3D;AACL,WAAO,WAAW,SAAS,EAAE,GAAG,MAAM,CAAC;AACvC,WAAO,GAAG,QAAQ,eAAe,CAAC,EAAE,GAAG,GAAG;AAAA,EAC9C,CAAC;AACD,KAAG,yBAAyB,YAAY;AACpC,UAAM,KAAK,MAAM;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWJ;AAEA,UAAM;AAAA,MACF,MAAM,GAAG,WAAW,UAAU;AAAA,MAC9B;AAAA,IACJ;AACA,UAAM,eAAe,EAAE;AAEvB,UAAM,oBAAoB,GAAG;AAAA,MACzB;AAAA,IACJ;AACA,WAAO,iBAAiB,EAAE,GAAG,GAAG;AAChC,UAAM,OAAO,EAAE,EAAE,GAAG,GAAG,WAAW;AAAA,EACtC,CAAC;AAED;AAAA,IACI,YACI,MAAM;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOJ;AAAA,EACR;AAEA,KAAG,uBAAuB,YAAY;AAClC,UAAM,KAAK,MAAM;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOJ;AAEA,UAAM,eAAe,EAAE;AAEvB,UAAM,OAAO,EAAE,EAAE,GAAG,GAAG,WAAW;AAAA,EACtC,CAAC;AAED,KAAG,oBAAoB,YAAY;AAC/B,UAAM,KAAK,MAAM;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASJ;AAEA,UAAM;AAAA,MACF,MAAM,GAAG,WAAW,UAAU;AAAA,MAC9B;AAAA,IACJ;AACA,UAAM,eAAe,EAAE;AAEvB,UAAM,OAAO,EAAE,EAAE,GAAG,GAAG,WAAW;AAElC,WAAO,GAAG,aAAa,MAAM,CAAC,EAAE,GAAG,MAAM,MAAM;AAAA,EACnD,CAAC;AAED,KAAG,mCAAmC,YAAY;AAC9C,UAAM,KAAK,MAAM;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWJ;AAEA,UAAM;AAAA,MACF,MAAM,GAAG,WAAW,UAAU;AAAA,MAC9B;AAAA,IACJ;AACA,UAAM,eAAe,EAAE;AAEvB,UAAM,YAAY,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,UAAM,kBAAkB,GAAG;AAAA,MACvB;AAAA,IACJ;AACA,UAAM,mBAAmB,GAAG;AAAA,MACxB;AAAA,IACJ;AAEA,OAAG,MAAM;AACT,UAAM,eAAe,EAAE;AAEvB,UAAM,SAAS,EAAE,OAAO,YAAY,CAAC;AACrC,UAAM,SAAS,EAAE,OAAO,UAAU,CAAC;AAEnC,WAAO,SAAS,kBAAkB,EAAE,EAAE,GAAG,GAAG;AAC5C,WAAO,UAAU,OAAO,EAAE,GAAG,GAAG;AAEhC,OAAG,cAAc,aAAa,CAAC;AAC/B,OAAG,cAAc,aAAa,CAAC;AAC/B,OAAG,cAAc,OAAO,CAAC;AAEzB,WAAO,SAAS,kBAAkB,EAAE,EAAE,GAAG,GAAG;AAC5C,WAAO,gBAAgB,OAAO,EAAE,GAAG,GAAG;AAEtC,OAAG,cAAc,eAAe,CAAC;AAEjC,WAAO,SAAS,kBAAkB,EAAE,EAAE,GAAG,GAAG;AAC5C,WAAO,iBAAiB,OAAO,EAAE,GAAG,GAAG;AAAA,EAC3C,CAAC;AAED,KAAG,8CAA8C,YAAY;AACzD,UAAM,KAAK,MAAM;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQJ;AAEA,UAAM;AAAA,MACF,MAAM,GAAG,WAAW,UAAU;AAAA,MAC9B;AAAA,IACJ;AACA,UAAM,eAAe,EAAE;AAEvB,UAAM,YAAY,GAAG;AAAA,MACjB;AAAA,IACJ;AAEA,OAAG,MAAM;AAET,UAAM,eAAe,EAAE;AAEvB,UAAM,SAAS,EAAE,OAAO,YAAY,CAAC;AACrC,UAAM,SAAS,EAAE,OAAO,UAAU,CAAC;AAEnC,WAAO,SAAS,kBAAkB,IAAI,gBAAgB,EAAE,GAAG,GAAG;AAC9D,WAAO,UAAU,SAAS,kBAAkB,EAAE,GAAG,GAAG;AAEpD,OAAG,KAAK;AAER,UAAM,QAAQ,GAAG,cAAc,eAAe;AAC9C,UAAM,gBAAgB,SAAS,cAAc,cAAc;AAC3D,kBAAc,cAAc;AAC5B,UAAM,eAAe,SAAS,cAAc,cAAc;AAC1D,iBAAa,cAAc;AAC3B,UAAM,QAAQ,aAAa;AAC3B,UAAM,OAAO,YAAY;AACzB,UAAM,eAAe,EAAE;AAEvB,UAAM,UAAU,MAAM;AAClB,aAAO,GAAG,WAAW,UAAU;AAAA,IACnC,GAAG,iCAAiC;AACpC,UAAM,eAAe,EAAE;AAEvB,WAAO,SAAS,kBAAkB,EAAE,EAAE,GAAG,GAAG;AAC5C,WAAO,UAAU,OAAO,EAAE,GAAG,GAAG;AAChC,WAAO,cAAc,OAAO,EAAE,GAAG,GAAG;AAEpC,OAAG,MAAM;AAET,UAAM,SAAS,EAAE,OAAO,YAAY,CAAC;AACrC,UAAM,SAAS,EAAE,OAAO,UAAU,CAAC;AAEnC,WAAO,SAAS,kBAAkB,IAAI,wBAAwB,EAAE,GAAG,GAC9D;AACL,WAAO,cAAc,SAAS,yBAAyB,EAAE,GAAG,GAAG;AAE/D,OAAG,cAAc,aAAa,CAAC;AAE/B,WAAO,SAAS,kBAAkB,IAAI,qBAAqB,EAAE,GAAG,GAAG;AACnE,WAAO,aAAa,SAAS,sBAAsB,EAAE,GAAG,GAAG;AAAA,EAC/D,CAAC;AACD,KAAG,+BAA+B,YAAY;AAC1C,UAAM,KAAK,MAAM;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOJ;AAEA,UAAM;AAAA,MACF,MAAM,GAAG,WAAW,UAAU;AAAA,MAC9B;AAAA,IACJ;AACA,UAAM,eAAe,EAAE;AAEvB,UAAM,YAAY,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,UAAM,aAAa,GAAG;AAAA,MAClB;AAAA,IACJ;AACA,UAAM,YAAY,GAAG;AAAA,MACjB;AAAA,IACJ;AAEA,OAAG,MAAM;AAET,UAAM,SAAS,EAAE,OAAO,YAAY,CAAC;AACrC,UAAM,SAAS,EAAE,OAAO,UAAU,CAAC;AACnC,WAAO,SAAS,kBAAkB,EAAE,EAAE,GAAG,GAAG;AAC5C,WAAO,UAAU,SAAS,OAAO,EAAE,GAAG,GAAG;AACzC,OAAG,cAAc,eAAe,CAAC;AACjC,OAAG,cAAc,eAAe,CAAC;AACjC,WAAO,UAAU,SAAS,OAAO,EAAE,GAAG,GAAG;AAEzC,OAAG,cAAc,SAAS,CAAC;AAC3B,OAAG;AAAA,MACC,IAAI,YAAY,YAAY;AAAA,QACxB,UAAU;AAAA,QACV,SAAS;AAAA,MACb,CAAC;AAAA,IACL;AACA,UAAM,UAAU;AAEhB,OAAG,yBAAyB;AAE5B,OAAG,cAAc,eAAe,CAAC;AACjC,WAAO,WAAW,SAAS,QAAQ,EAAE,GAAG,GAAG;AAAA,EAC/C,CAAC;AACD,KAAG,kDAAkD,YAAY;AAC7D,UAAM,KAAK,MAAM;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWJ;AACA,UAAM,YAAY,GAAG,cAAc,QAAQ;AAC3C,UAAM,eAAe,GAAG,cAAc,WAAW;AAEjD,UAAM,eAAe,EAAE;AAEvB,OAAG,MAAM;AAET,WAAO,SAAS,aAAa,EAAE,GAAG,MAAM,EAAE;AAC1C,WAAO,aAAa,OAAO,EAAE,GAAG,GAAG;AAEnC,iBAAa,OAAO;AACpB,UAAM,eAAe,EAAE;AAEvB,WAAO,SAAS,aAAa,EAAE,GAAG,MAAM,EAAE;AAC1C,WAAO,UAAU,OAAO,EAAE,GAAG,GAAG;AAAA,EACpC,CAAC;AACD,KAAG,4BAA4B,YAAY;AACvC,UAAM,KAAK,MAAM;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOJ;AAEA,UAAM;AAAA,MACF,MAAM,GAAG,WAAW,UAAU;AAAA,MAC9B;AAAA,IACJ;AACA,UAAM;AAAA,MACF,MAAM,GAAG,cAAc,UAAU;AAAA,MACjC;AAAA,IACJ;AACA,UAAM,eAAe,EAAE;AAEvB,UAAM,YAAY,GAAG;AAAA,MACjB;AAAA,IACJ;AAEA,UAAM,aAAa,GAAG;AAAA,MAClB;AAAA,IACJ;AAEA,WAAO,UAAU,aAAa,MAAM,CAAC,EAAE,GAAG,MAAM,eAAe;AAC/D,WAAO,WAAW,aAAa,MAAM,CAAC,EAAE,GAAG,MAAM,eAAe;AAEhE,WAAO,UAAU,QAAQ,EAAE,GAAG,GAAG;AACjC,WAAO,WAAW,QAAQ,EAAE,GAAG,GAAG;AAClC,WAAO,UAAU,aAAa,cAAc,CAAC,EAAE,GAAG,MAAM,MAAM;AAC9D,WAAO,WAAW,aAAa,cAAc,CAAC,EAAE,GAAG,MAAM,OAAO;AAChE,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,OAAO;AAEjC,eAAW,MAAM;AAEjB,UAAM,eAAe,EAAE;AACvB,UAAM,eAAe,SAAS;AAC9B,UAAM,eAAe,UAAU;AAE/B,WAAO,UAAU,QAAQ,EAAE,GAAG,GAAG;AACjC,WAAO,WAAW,QAAQ,EAAE,GAAG,GAAG;AAClC,WAAO,UAAU,aAAa,cAAc,CAAC,EAAE,GAAG,MAAM,OAAO;AAC/D,WAAO,WAAW,aAAa,cAAc,CAAC,EAAE,GAAG,MAAM,MAAM;AAC/D,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,QAAQ;AAAA,EACtC,CAAC;AACD,KAAG,8BAA8B,YAAY;AACzC,UAAM,YAAY,IAAI;AACtB,UAAM,KAAK,MAAM;AAAA,MACb;AAAA,sDAC0C,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAM9D;AAEA,UAAM;AAAA,MACF,MAAM,GAAG,WAAW,UAAU;AAAA,MAC9B;AAAA,IACJ;AACA,UAAM,eAAe,EAAE;AAEvB,UAAM,YAAY,GAAG;AAAA,MACjB;AAAA,IACJ;AAEA,UAAM,aAAa,GAAG;AAAA,MAClB;AAAA,IACJ;AAEA,WAAO,UAAU,aAAa,MAAM,CAAC,EAAE,GAAG,MAAM,kBAAkB;AAClE,WAAO,WAAW,aAAa,MAAM,CAAC,EAAE,GAAG,MAAM,kBAAkB;AAEnE,WAAO,UAAU,QAAQ,EAAE,GAAG,GAAG;AACjC,WAAO,WAAW,QAAQ,EAAE,GAAG,GAAG;AAClC,WAAO,UAAU,aAAa,cAAc,CAAC,EAAE,GAAG,MAAM,MAAM;AAC9D,WAAO,WAAW,aAAa,cAAc,CAAC,EAAE,GAAG,MAAM,OAAO;AAChE,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,OAAO;AACjC,WAAO,GAAG,cAAc,MAAM,EAAE,GAAG,MAAM,CAAC;AAE1C,eAAW,MAAM;AAEjB,UAAM,eAAe,EAAE;AACvB,UAAM,eAAe,SAAS;AAC9B,UAAM,eAAe,UAAU;AAE/B,WAAO,UAAU,WAAW,YAAY,EAAE,GAAG,MAAM,CAAC;AACpD,WAAO,UAAU,QAAQ,EAAE,GAAG,GAAG;AACjC,WAAO,WAAW,QAAQ,EAAE,GAAG,GAAG;AAClC,WAAO,UAAU,aAAa,cAAc,CAAC,EAAE,GAAG,MAAM,MAAM;AAC9D,WAAO,WAAW,aAAa,cAAc,CAAC,EAAE,GAAG,MAAM,MAAM;AAC/D,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,cAAc;AACxC,WAAO,GAAG,cAAc,MAAM,EAAE,GAAG,MAAM,CAAC;AAE1C,cAAU,MAAM;AAEhB,UAAM,eAAe,EAAE;AACvB,UAAM,eAAe,SAAS;AAC9B,UAAM,eAAe,UAAU;AAE/B,WAAO,UAAU,WAAW,aAAa,EAAE,GAAG,MAAM,CAAC;AACrD,WAAO,UAAU,QAAQ,EAAE,GAAG,GAAG;AACjC,WAAO,WAAW,QAAQ,EAAE,GAAG,GAAG;AAClC,WAAO,UAAU,aAAa,cAAc,CAAC,EAAE,GAAG,MAAM,OAAO;AAC/D,WAAO,WAAW,aAAa,cAAc,CAAC,EAAE,GAAG,MAAM,MAAM;AAC/D,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,QAAQ;AAClC,WAAO,GAAG,cAAc,MAAM,EAAE,GAAG,MAAM,CAAC;AAAA,EAC9C,CAAC;AACL,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/test/submenu.test-vrt.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["submenu.test-vrt.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport * as stories from '../stories/submenu.stories.js';\nimport { regressVisuals } from '../../../test/visual/test.js';\n\nregressVisuals('SubmenuStories', stories);\n"],
|
|
5
|
-
"mappings": "AAYA;
|
|
5
|
+
"mappings": ";AAYA,YAAY,aAAa;AACzB,SAAS,sBAAsB;AAE/B,eAAe,kBAAkB,OAAO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|