@spectrum-web-components/menu 0.16.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.
Files changed (109) hide show
  1. package/package.json +5 -5
  2. package/sp-menu-divider.dev.js +1 -0
  3. package/sp-menu-divider.dev.js.map +1 -1
  4. package/sp-menu-divider.js +1 -1
  5. package/sp-menu-divider.js.map +2 -2
  6. package/sp-menu-group.dev.js +1 -0
  7. package/sp-menu-group.dev.js.map +1 -1
  8. package/sp-menu-group.js +1 -1
  9. package/sp-menu-group.js.map +2 -2
  10. package/sp-menu-item.dev.js +1 -0
  11. package/sp-menu-item.dev.js.map +1 -1
  12. package/sp-menu-item.js +1 -1
  13. package/sp-menu-item.js.map +2 -2
  14. package/sp-menu.dev.js +1 -0
  15. package/sp-menu.dev.js.map +1 -1
  16. package/sp-menu.js +1 -1
  17. package/sp-menu.js.map +2 -2
  18. package/src/Menu.dev.js +51 -24
  19. package/src/Menu.dev.js.map +1 -1
  20. package/src/Menu.js +2 -2
  21. package/src/Menu.js.map +2 -2
  22. package/src/MenuDivider.dev.js +1 -0
  23. package/src/MenuDivider.dev.js.map +1 -1
  24. package/src/MenuDivider.js +1 -1
  25. package/src/MenuDivider.js.map +2 -2
  26. package/src/MenuGroup.dev.js +4 -3
  27. package/src/MenuGroup.dev.js.map +1 -1
  28. package/src/MenuGroup.js +2 -2
  29. package/src/MenuGroup.js.map +2 -2
  30. package/src/MenuItem.dev.js +34 -9
  31. package/src/MenuItem.dev.js.map +2 -2
  32. package/src/MenuItem.js +2 -2
  33. package/src/MenuItem.js.map +2 -2
  34. package/src/index.dev.js +1 -0
  35. package/src/index.dev.js.map +1 -1
  36. package/src/index.js +1 -1
  37. package/src/index.js.map +1 -1
  38. package/src/menu-divider.css.dev.js +1 -0
  39. package/src/menu-divider.css.dev.js.map +1 -1
  40. package/src/menu-divider.css.js +1 -1
  41. package/src/menu-divider.css.js.map +2 -2
  42. package/src/menu-group.css.dev.js +1 -0
  43. package/src/menu-group.css.dev.js.map +1 -1
  44. package/src/menu-group.css.js +1 -1
  45. package/src/menu-group.css.js.map +2 -2
  46. package/src/menu-item.css.dev.js +1 -0
  47. package/src/menu-item.css.dev.js.map +1 -1
  48. package/src/menu-item.css.js +1 -1
  49. package/src/menu-item.css.js.map +2 -2
  50. package/src/menu.css.dev.js +1 -0
  51. package/src/menu.css.dev.js.map +1 -1
  52. package/src/menu.css.js +1 -1
  53. package/src/menu.css.js.map +2 -2
  54. package/src/spectrum-checkmark.css.dev.js +1 -0
  55. package/src/spectrum-checkmark.css.dev.js.map +1 -1
  56. package/src/spectrum-checkmark.css.js +1 -1
  57. package/src/spectrum-checkmark.css.js.map +2 -2
  58. package/src/spectrum-chevron.css.dev.js +1 -0
  59. package/src/spectrum-chevron.css.dev.js.map +1 -1
  60. package/src/spectrum-chevron.css.js +1 -1
  61. package/src/spectrum-chevron.css.js.map +2 -2
  62. package/src/spectrum-itemLabel.css.dev.js +1 -0
  63. package/src/spectrum-itemLabel.css.dev.js.map +1 -1
  64. package/src/spectrum-itemLabel.css.js +1 -1
  65. package/src/spectrum-itemLabel.css.js.map +2 -2
  66. package/src/spectrum-menu-divider.css.dev.js +1 -0
  67. package/src/spectrum-menu-divider.css.dev.js.map +1 -1
  68. package/src/spectrum-menu-divider.css.js +1 -1
  69. package/src/spectrum-menu-divider.css.js.map +2 -2
  70. package/src/spectrum-menu-item.css.dev.js +1 -0
  71. package/src/spectrum-menu-item.css.dev.js.map +1 -1
  72. package/src/spectrum-menu-item.css.js +1 -1
  73. package/src/spectrum-menu-item.css.js.map +2 -2
  74. package/src/spectrum-menu-sectionHeading.css.dev.js +1 -0
  75. package/src/spectrum-menu-sectionHeading.css.dev.js.map +1 -1
  76. package/src/spectrum-menu-sectionHeading.css.js +1 -1
  77. package/src/spectrum-menu-sectionHeading.css.js.map +2 -2
  78. package/src/spectrum-menu.css.dev.js +1 -0
  79. package/src/spectrum-menu.css.dev.js.map +1 -1
  80. package/src/spectrum-menu.css.js +1 -1
  81. package/src/spectrum-menu.css.js.map +2 -2
  82. package/stories/menu-group.stories.js +61 -9
  83. package/stories/menu-group.stories.js.map +2 -2
  84. package/stories/menu-item.stories.js +25 -4
  85. package/stories/menu-item.stories.js.map +1 -1
  86. package/stories/menu.stories.js +47 -8
  87. package/stories/menu.stories.js.map +1 -1
  88. package/stories/submenu.stories.js +160 -16
  89. package/stories/submenu.stories.js.map +2 -2
  90. package/test/benchmark/test-basic.js +8 -1
  91. package/test/benchmark/test-basic.js.map +1 -1
  92. package/test/menu-group.test-vrt.js +4 -1
  93. package/test/menu-group.test-vrt.js.map +1 -1
  94. package/test/menu-group.test.js +257 -6
  95. package/test/menu-group.test.js.map +1 -1
  96. package/test/menu-item.test-vrt.js +4 -1
  97. package/test/menu-item.test-vrt.js.map +1 -1
  98. package/test/menu-item.test.js +121 -8
  99. package/test/menu-item.test.js.map +1 -1
  100. package/test/menu-selects.test.js +513 -5
  101. package/test/menu-selects.test.js.map +1 -1
  102. package/test/menu.test-vrt.js +4 -1
  103. package/test/menu.test-vrt.js.map +1 -1
  104. package/test/menu.test.js +337 -17
  105. package/test/menu.test.js.map +1 -1
  106. package/test/submenu.test-vrt.js +4 -1
  107. package/test/submenu.test-vrt.js.map +1 -1
  108. package/test/submenu.test.js +516 -21
  109. package/test/submenu.test.js.map +1 -1
@@ -1,2 +1,5 @@
1
- import*as r from"../stories/menu.stories.js";import{regressVisuals as s}from"../../../test/visual/test.js";s("MenuStories",r);
1
+ "use strict";
2
+ import * as stories from "../stories/menu.stories.js";
3
+ import { regressVisuals } from "../../../test/visual/test.js";
4
+ regressVisuals("MenuStories", stories);
2
5
  //# sourceMappingURL=menu.test-vrt.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["menu.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/menu.stories.js';\nimport { regressVisuals } from '../../../test/visual/test.js';\n\nregressVisuals('MenuStories', stories);\n"],
5
- "mappings": "AAYA,6CACA,8DAEA,EAAe,cAAe,CAAO",
5
+ "mappings": ";AAYA,YAAY,aAAa;AACzB,SAAS,sBAAsB;AAE/B,eAAe,eAAe,OAAO;",
6
6
  "names": []
7
7
  }
package/test/menu.test.js CHANGED
@@ -1,15 +1,86 @@
1
- import"@spectrum-web-components/menu/sp-menu.js";import"@spectrum-web-components/menu/sp-menu-item.js";import"@spectrum-web-components/menu/sp-menu-group.js";import{elementUpdated as m,expect as t,fixture as u,html as i,nextFrame as f,waitUntil as o}from"@open-wc/testing";import{arrowDownEvent as l,arrowUpEvent as d,tabEvent as h,testForLitDevWarnings as b,tEvent as w}from"../../../test/testing-helpers.js";import{spy as p}from"sinon";import{sendKeys as c}from"@web/test-runner-commands";describe("Menu",()=>{it("renders empty",async()=>{const e=await u(i`
1
+ "use strict";
2
+ import "@spectrum-web-components/menu/sp-menu.js";
3
+ import "@spectrum-web-components/menu/sp-menu-item.js";
4
+ import "@spectrum-web-components/menu/sp-menu-group.js";
5
+ import {
6
+ elementUpdated,
7
+ expect,
8
+ fixture,
9
+ html,
10
+ nextFrame,
11
+ waitUntil
12
+ } from "@open-wc/testing";
13
+ import {
14
+ arrowDownEvent,
15
+ arrowUpEvent,
16
+ tabEvent,
17
+ testForLitDevWarnings,
18
+ tEvent
19
+ } from "../../../test/testing-helpers.js";
20
+ import { spy } from "sinon";
21
+ import { sendKeys } from "@web/test-runner-commands";
22
+ describe("Menu", () => {
23
+ it("renders empty", async () => {
24
+ const el = await fixture(
25
+ html`
2
26
  <sp-menu tabindex="0"><a href="#anchor">Test</a></sp-menu>
3
- `),s=e.querySelector("a");await m(e),t(document.activeElement===e,"self not focused, 1").to.be.false,t(document.activeElement===s,"child not focused, 1").to.be.false,t(e.getAttribute("role")).to.equal("menu"),e.focus(),await m(e),t(document.activeElement===e,"self not focused, 2").to.be.false,t(document.activeElement===s,"child not focused, 2").to.be.false,s.focus(),t(document.activeElement===e,"self not focused, 3").to.be.false,t(document.activeElement===s,"anchor").to.be.true}),it("renders w/ [disabled] menu items",async()=>{const e=p(),s=await u(i`
4
- <sp-menu tabindex="0" @focusin=${()=>e()}>
27
+ `
28
+ );
29
+ const anchor = el.querySelector("a");
30
+ await elementUpdated(el);
31
+ expect(document.activeElement === el, "self not focused, 1").to.be.false;
32
+ expect(document.activeElement === anchor, "child not focused, 1").to.be.false;
33
+ expect(el.getAttribute("role")).to.equal("menu");
34
+ el.focus();
35
+ await elementUpdated(el);
36
+ expect(document.activeElement === el, "self not focused, 2").to.be.false;
37
+ expect(document.activeElement === anchor, "child not focused, 2").to.be.false;
38
+ anchor.focus();
39
+ expect(document.activeElement === el, "self not focused, 3").to.be.false;
40
+ expect(document.activeElement === anchor, "anchor").to.be.true;
41
+ });
42
+ it("renders w/ [disabled] menu items", async () => {
43
+ const focusinSpy = spy();
44
+ const el = await fixture(
45
+ html`
46
+ <sp-menu tabindex="0" @focusin=${() => focusinSpy()}>
5
47
  <sp-menu-item disabled>Disabled item</sp-menu-item>
6
48
  </sp-menu>
7
- `);await m(s),t(document.activeElement===s,"self not focused, 1").to.be.false,s.focus(),await m(s),t(document.activeElement===s,"self not focused, 2").to.be.false,t(e.callCount).to.equal(0)}),it("renders w/ all [disabled] menu items",async()=>{const e=p(),s=await u(i`
8
- <sp-menu tabindex="0" @focusin=${()=>e()}>
49
+ `
50
+ );
51
+ await elementUpdated(el);
52
+ expect(document.activeElement === el, "self not focused, 1").to.be.false;
53
+ el.focus();
54
+ await elementUpdated(el);
55
+ expect(document.activeElement === el, "self not focused, 2").to.be.false;
56
+ expect(focusinSpy.callCount).to.equal(0);
57
+ });
58
+ it("renders w/ all [disabled] menu items", async () => {
59
+ const focusinSpy = spy();
60
+ const el = await fixture(
61
+ html`
62
+ <sp-menu tabindex="0" @focusin=${() => focusinSpy()}>
9
63
  <sp-menu-item disabled>Disabled item 1</sp-menu-item>
10
64
  <sp-menu-item disabled>Disabled item 2</sp-menu-item>
11
65
  </sp-menu>
12
- `),n=s.querySelector("sp-menu-item");await m(s),t(document.activeElement===s,"self not focused, 1").to.be.false,s.focus(),await m(s),t(document.activeElement===s,"self not focused, 2").to.be.false,t(e.callCount).to.equal(0),n.focus(),await m(s),t(document.activeElement===s,"self not focused, 2").to.be.false,t(e.callCount).to.equal(0),t(s.matches(":focus-within")).to.be.false}),it("renders w/ menu items",async()=>{const e=await u(i`
66
+ `
67
+ );
68
+ const firstItem = el.querySelector("sp-menu-item");
69
+ await elementUpdated(el);
70
+ expect(document.activeElement === el, "self not focused, 1").to.be.false;
71
+ el.focus();
72
+ await elementUpdated(el);
73
+ expect(document.activeElement === el, "self not focused, 2").to.be.false;
74
+ expect(focusinSpy.callCount).to.equal(0);
75
+ firstItem.focus();
76
+ await elementUpdated(el);
77
+ expect(document.activeElement === el, "self not focused, 2").to.be.false;
78
+ expect(focusinSpy.callCount).to.equal(0);
79
+ expect(el.matches(":focus-within")).to.be.false;
80
+ });
81
+ it("renders w/ menu items", async () => {
82
+ const el = await fixture(
83
+ html`
13
84
  <sp-menu label="Pick an action:">
14
85
  <sp-menu-item>Deselect</sp-menu-item>
15
86
  <sp-menu-item>Select Inverse</sp-menu-item>
@@ -19,19 +90,46 @@ import"@spectrum-web-components/menu/sp-menu.js";import"@spectrum-web-components
19
90
  <sp-menu-item>Save Selection</sp-menu-item>
20
91
  <sp-menu-item disabled>Make Work Path</sp-menu-item>
21
92
  </sp-menu>
22
- `);await o(()=>e.childItems.length==6,"expected menu to manage 6 menu items"),await m(e);const s=e.querySelector('[tabindex]:not([tabindex="-1"])');t(s).to.be.null,await t(e).to.be.accessible()}),b(async()=>await u(i`
93
+ `
94
+ );
95
+ await waitUntil(
96
+ () => el.childItems.length == 6,
97
+ "expected menu to manage 6 menu items"
98
+ );
99
+ await elementUpdated(el);
100
+ const inTabindexElement = el.querySelector(
101
+ '[tabindex]:not([tabindex="-1"])'
102
+ );
103
+ expect(inTabindexElement).to.be.null;
104
+ await expect(el).to.be.accessible();
105
+ });
106
+ testForLitDevWarnings(
107
+ async () => await fixture(
108
+ html`
23
109
  <sp-menu selects="single">
24
110
  <sp-menu-item>Not Selected</sp-menu-item>
25
111
  <sp-menu-item selected>Selected</sp-menu-item>
26
112
  <sp-menu-item>Other</sp-menu-item>
27
113
  </sp-menu>
28
- `)),it("renders w/ selected",async()=>{const e=await u(i`
114
+ `
115
+ )
116
+ );
117
+ it("renders w/ selected", async () => {
118
+ const el = await fixture(
119
+ html`
29
120
  <sp-menu selects="single">
30
121
  <sp-menu-item>Not Selected</sp-menu-item>
31
122
  <sp-menu-item selected>Selected</sp-menu-item>
32
123
  <sp-menu-item>Other</sp-menu-item>
33
124
  </sp-menu>
34
- `);await m(e),await t(e).to.be.accessible()}),it("renders w/ hrefs",async()=>{const e=await u(i`
125
+ `
126
+ );
127
+ await elementUpdated(el);
128
+ await expect(el).to.be.accessible();
129
+ });
130
+ it("renders w/ hrefs", async () => {
131
+ const el = await fixture(
132
+ html`
35
133
  <sp-menu>
36
134
  <sp-menu-item href="not-selected.html">
37
135
  Not Selected
@@ -39,7 +137,19 @@ import"@spectrum-web-components/menu/sp-menu.js";import"@spectrum-web-components
39
137
  <sp-menu-item href="selected.html">Selected</sp-menu-item>
40
138
  <sp-menu-item href="other.html">Other</sp-menu-item>
41
139
  </sp-menu>
42
- `);await o(()=>e.childItems.length==3,"expected menu to manage 3 items"),await m(e),await t(e).to.be.accessible(),t(e.getAttribute("role")).to.equal("menu")}),it("handle focus and keyboard input",async()=>{const e=await u(i`
140
+ `
141
+ );
142
+ await waitUntil(
143
+ () => el.childItems.length == 3,
144
+ "expected menu to manage 3 items"
145
+ );
146
+ await elementUpdated(el);
147
+ await expect(el).to.be.accessible();
148
+ expect(el.getAttribute("role")).to.equal("menu");
149
+ });
150
+ it("handle focus and keyboard input", async () => {
151
+ const el = await fixture(
152
+ html`
43
153
  <sp-menu>
44
154
  <sp-menu-item>Deselect</sp-menu-item>
45
155
  <sp-menu-item>Select Inverse</sp-menu-item>
@@ -49,20 +159,134 @@ import"@spectrum-web-components/menu/sp-menu.js";import"@spectrum-web-components
49
159
  <sp-menu-item>Save Selection</sp-menu-item>
50
160
  <sp-menu-item disabled>Make Work Path</sp-menu-item>
51
161
  </sp-menu>
52
- `);await o(()=>e.childItems.length==6,"expected menu to manage 6 items"),await m(e);const s=e.querySelector("sp-menu-item:nth-of-type(1)"),n=e.querySelector("sp-menu-item:nth-last-of-type(3)"),a=e.querySelector("sp-menu-item:nth-last-of-type(2)");e.focus(),await m(e),await c({press:"ArrowDown"}),await c({press:"ArrowUp"}),t(document.activeElement===e).to.be.true,t(s.focused).to.be.true,e.dispatchEvent(d()),e.dispatchEvent(d()),e.dispatchEvent(w()),t(document.activeElement===e).to.be.true,t(n.focused).to.be.true,e.dispatchEvent(l()),t(document.activeElement===e).to.be.true,t(a.focused).to.be.true}),it("handle focus and late descendent additions",async()=>{const e=await u(i`
162
+ `
163
+ );
164
+ await waitUntil(
165
+ () => el.childItems.length == 6,
166
+ "expected menu to manage 6 items"
167
+ );
168
+ await elementUpdated(el);
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
+ );
178
+ el.focus();
179
+ await elementUpdated(el);
180
+ await sendKeys({ press: "ArrowDown" });
181
+ await sendKeys({ press: "ArrowUp" });
182
+ expect(document.activeElement === el).to.be.true;
183
+ expect(firstItem.focused).to.be.true;
184
+ el.dispatchEvent(arrowUpEvent());
185
+ el.dispatchEvent(arrowUpEvent());
186
+ el.dispatchEvent(tEvent());
187
+ expect(document.activeElement === el).to.be.true;
188
+ expect(thirdToLastItem.focused).to.be.true;
189
+ el.dispatchEvent(arrowDownEvent());
190
+ expect(document.activeElement === el).to.be.true;
191
+ expect(secondToLastItem.focused).to.be.true;
192
+ });
193
+ it("handle focus and late descendent additions", async () => {
194
+ const el = await fixture(
195
+ html`
53
196
  <sp-menu>
54
197
  <sp-menu-group selects="inherit">
55
198
  <span slot="header">Options</span>
56
199
  <sp-menu-item>Deselect</sp-menu-item>
57
200
  </sp-menu-group>
58
201
  </sp-menu>
59
- `);await o(()=>e.childItems.length==1,"expected menu to manage 1 item"),await m(e);const s=e.querySelector("sp-menu-item:nth-of-type(1)");e.focus(),await m(e),await c({press:"ArrowDown"}),await c({press:"ArrowUp"}),t(document.activeElement===e,"active element").to.be.true,t(s.focused,"visually focused").to.be.true,e.blur();const n=e.querySelector("sp-menu-group"),a=document.createElement("sp-menu-item");a.textContent="Prepended Item";const r=document.createElement("sp-menu-item");r.textContent="Appended Item",n.prepend(a),n.append(r),await m(e),await o(()=>e.childItems.length==3,"expected menu to manage 3 items"),await m(e),t(document.activeElement===e).to.be.false,t(s.focused).to.be.false,t(a.focused).to.be.false,e.focus(),await c({press:"ArrowDown"}),await c({press:"ArrowUp"}),t(document.activeElement===e,"another active element").to.be.true,t(a.focused,"another visibly focused").to.be.true,e.dispatchEvent(d()),t(document.activeElement===e,"last active element").to.be.true,t(r.focused,"last visibly focused").to.be.true}),it("cleans up when tabbing away",async()=>{const e=await u(i`
202
+ `
203
+ );
204
+ await waitUntil(
205
+ () => el.childItems.length == 1,
206
+ "expected menu to manage 1 item"
207
+ );
208
+ await elementUpdated(el);
209
+ const firstItem = el.querySelector(
210
+ "sp-menu-item:nth-of-type(1)"
211
+ );
212
+ el.focus();
213
+ await elementUpdated(el);
214
+ await sendKeys({ press: "ArrowDown" });
215
+ await sendKeys({ press: "ArrowUp" });
216
+ expect(document.activeElement === el, "active element").to.be.true;
217
+ expect(firstItem.focused, "visually focused").to.be.true;
218
+ el.blur();
219
+ const group = el.querySelector("sp-menu-group");
220
+ const prependedItem = document.createElement("sp-menu-item");
221
+ prependedItem.textContent = "Prepended Item";
222
+ const appendedItem = document.createElement("sp-menu-item");
223
+ appendedItem.textContent = "Appended Item";
224
+ group.prepend(prependedItem);
225
+ group.append(appendedItem);
226
+ await elementUpdated(el);
227
+ await waitUntil(() => {
228
+ return el.childItems.length == 3;
229
+ }, "expected menu to manage 3 items");
230
+ await elementUpdated(el);
231
+ expect(document.activeElement === el).to.be.false;
232
+ expect(firstItem.focused).to.be.false;
233
+ expect(prependedItem.focused).to.be.false;
234
+ el.focus();
235
+ await sendKeys({ press: "ArrowDown" });
236
+ await sendKeys({ press: "ArrowUp" });
237
+ expect(document.activeElement === el, "another active element").to.be.true;
238
+ expect(prependedItem.focused, "another visibly focused").to.be.true;
239
+ el.dispatchEvent(arrowUpEvent());
240
+ expect(document.activeElement === el, "last active element").to.be.true;
241
+ expect(appendedItem.focused, "last visibly focused").to.be.true;
242
+ });
243
+ it("cleans up when tabbing away", async () => {
244
+ const el = await fixture(
245
+ html`
60
246
  <sp-menu tabindex="0">
61
247
  <sp-menu-item>Deselect</sp-menu-item>
62
248
  <sp-menu-item>Select Inverse</sp-menu-item>
63
249
  <sp-menu-item>Third Item</sp-menu-item>
64
250
  </sp-menu>
65
- `);await o(()=>e.childItems.length==3,"expected menu to manage 3 items"),await m(e);const s=e.querySelector("sp-menu-item:nth-of-type(1)"),n=e.querySelector("sp-menu-item:nth-of-type(2)"),a=e.querySelector("sp-menu-item:nth-of-type(3)");e.focus(),await c({press:"ArrowDown"}),await c({press:"ArrowUp"}),t(document.activeElement===e).to.be.true,t(s.focused,"first").to.be.true,e.dispatchEvent(l()),e.dispatchEvent(l()),t(a.focused,"third").to.be.true,e.dispatchEvent(h()),e.dispatchEvent(new CustomEvent("focusout",{composed:!0,bubbles:!0})),await f(),e.startListeningToKeyboard(),e.dispatchEvent(l()),t(n.focused,"second").to.be.true}),it("handles focus across focused MenuItem removals",async()=>{const e=await u(i`
251
+ `
252
+ );
253
+ await waitUntil(
254
+ () => el.childItems.length == 3,
255
+ "expected menu to manage 3 items"
256
+ );
257
+ await elementUpdated(el);
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
+ );
267
+ el.focus();
268
+ await sendKeys({ press: "ArrowDown" });
269
+ await sendKeys({ press: "ArrowUp" });
270
+ expect(document.activeElement === el).to.be.true;
271
+ expect(firstItem.focused, "first").to.be.true;
272
+ el.dispatchEvent(arrowDownEvent());
273
+ el.dispatchEvent(arrowDownEvent());
274
+ expect(thirdItem.focused, "third").to.be.true;
275
+ el.dispatchEvent(tabEvent());
276
+ el.dispatchEvent(
277
+ new CustomEvent("focusout", {
278
+ composed: true,
279
+ bubbles: true
280
+ })
281
+ );
282
+ await nextFrame();
283
+ el.startListeningToKeyboard();
284
+ el.dispatchEvent(arrowDownEvent());
285
+ expect(secondItem.focused, "second").to.be.true;
286
+ });
287
+ it("handles focus across focused MenuItem removals", async () => {
288
+ const el = await fixture(
289
+ html`
66
290
  <sp-menu id="test">
67
291
  <sp-menu-item class="first">Deselect</sp-menu-item>
68
292
  <sp-menu-item>Invert Selection</sp-menu-item>
@@ -72,17 +296,113 @@ import"@spectrum-web-components/menu/sp-menu.js";import"@spectrum-web-components
72
296
  Save Selection
73
297
  </sp-menu-item>
74
298
  </sp-menu>
75
- `),s=e.querySelector(".first"),n=e.querySelector(".selected");await m(e),e.focus(),t(document.activeElement).to.equal(e),t(n.focused).to.be.true,n.remove(),await m(e),t(document.activeElement).to.equal(e),t(s.focused).to.be.true}),it("handles single selection",async()=>{const e=await u(i`
299
+ `
300
+ );
301
+ const firstItem = el.querySelector(".first");
302
+ const selectedItem = el.querySelector(".selected");
303
+ await elementUpdated(el);
304
+ el.focus();
305
+ expect(document.activeElement).to.equal(el);
306
+ expect(selectedItem.focused).to.be.true;
307
+ selectedItem.remove();
308
+ await elementUpdated(el);
309
+ expect(document.activeElement).to.equal(el);
310
+ expect(firstItem.focused).to.be.true;
311
+ });
312
+ it("handles single selection", async () => {
313
+ const el = await fixture(
314
+ html`
76
315
  <sp-menu selects="single">
77
316
  <sp-menu-item selected>First</sp-menu-item>
78
317
  <sp-menu-item>Second</sp-menu-item>
79
318
  <sp-menu-item>Third</sp-menu-item>
80
319
  </sp-menu>
81
- `);await o(()=>e.childItems.length==3,"expected menu to manage 3 items"),await o(()=>e.selectedItems.length==1,"expected menu to have 1 selected item"),await m(e);const s=e.querySelector("sp-menu-item:nth-of-type(1)"),n=e.querySelector("sp-menu-item:nth-of-type(2)");t(s.getAttribute("role")).to.equal("menuitemradio"),t(n.getAttribute("role")).to.equal("menuitemradio"),t(s.selected).to.be.true,t(n.selected).to.be.false,t(s.getAttribute("aria-checked")).to.equal("true"),t(n.getAttribute("aria-checked")).to.equal("false"),t(e.value).to.equal("First"),n.click(),await m(e),await m(s),await m(n),t(s.selected).to.be.false,t(n.selected).to.be.true,t(s.getAttribute("aria-checked")).to.equal("false"),t(n.getAttribute("aria-checked")).to.equal("true"),t(e.value).to.equal("Second")}),it("handles multiple selection",async()=>{const e=p(),s=await u(i`
82
- <sp-menu selects="multiple" @change=${()=>e()}>
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
+ );
330
+ await elementUpdated(el);
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
+ );
337
+ expect(firstItem.getAttribute("role")).to.equal("menuitemradio");
338
+ expect(secondItem.getAttribute("role")).to.equal("menuitemradio");
339
+ expect(firstItem.selected).to.be.true;
340
+ expect(secondItem.selected).to.be.false;
341
+ expect(firstItem.getAttribute("aria-checked")).to.equal("true");
342
+ expect(secondItem.getAttribute("aria-checked")).to.equal("false");
343
+ expect(el.value).to.equal("First");
344
+ secondItem.click();
345
+ await elementUpdated(el);
346
+ await elementUpdated(firstItem);
347
+ await elementUpdated(secondItem);
348
+ expect(firstItem.selected).to.be.false;
349
+ expect(secondItem.selected).to.be.true;
350
+ expect(firstItem.getAttribute("aria-checked")).to.equal("false");
351
+ expect(secondItem.getAttribute("aria-checked")).to.equal("true");
352
+ expect(el.value).to.equal("Second");
353
+ });
354
+ it("handles multiple selection", async () => {
355
+ const changeSpy = spy();
356
+ const el = await fixture(
357
+ html`
358
+ <sp-menu selects="multiple" @change=${() => changeSpy()}>
83
359
  <sp-menu-item selected>First</sp-menu-item>
84
360
  <sp-menu-item>Second</sp-menu-item>
85
361
  <sp-menu-item>Third</sp-menu-item>
86
362
  </sp-menu>
87
- `);await o(()=>s.childItems.length==3,"expected menu to manage 3 items"),await m(s);const n=s.querySelector("sp-menu-item:nth-of-type(1)"),a=s.querySelector("sp-menu-item:nth-of-type(2)");t(n.getAttribute("role")).to.equal("menuitemcheckbox"),t(a.getAttribute("role")).to.equal("menuitemcheckbox"),t(n.selected).to.be.true,t(a.selected).to.be.false,t(n.getAttribute("aria-checked")).to.equal("true"),t(a.getAttribute("aria-checked")).to.equal("false"),t(s.value).to.equal("First"),t(s.selectedItems.length).to.equal(1),a.click(),await m(s),await m(n),await m(a),t(e.callCount,"one change").to.equal(1),t(n.selected).to.be.true,t(a.selected).to.be.true,t(n.getAttribute("aria-checked")).to.equal("true"),t(a.getAttribute("aria-checked")).to.equal("true"),t(s.value).to.equal("First,Second"),t(s.selectedItems.length).to.equal(2),n.click(),await m(s),await m(n),await m(a),t(e.callCount,"two changes").to.equal(2),t(n.selected).to.be.false,t(a.selected).to.be.true,t(n.getAttribute("aria-checked")).to.equal("false"),t(a.getAttribute("aria-checked")).to.equal("true"),t(s.value).to.equal("Second"),t(s.selectedItems.length).to.equal(1)})});
363
+ `
364
+ );
365
+ await waitUntil(
366
+ () => el.childItems.length == 3,
367
+ "expected menu to manage 3 items"
368
+ );
369
+ await elementUpdated(el);
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
+ );
376
+ expect(firstItem.getAttribute("role")).to.equal("menuitemcheckbox");
377
+ expect(secondItem.getAttribute("role")).to.equal("menuitemcheckbox");
378
+ expect(firstItem.selected).to.be.true;
379
+ expect(secondItem.selected).to.be.false;
380
+ expect(firstItem.getAttribute("aria-checked")).to.equal("true");
381
+ expect(secondItem.getAttribute("aria-checked")).to.equal("false");
382
+ expect(el.value).to.equal("First");
383
+ expect(el.selectedItems.length).to.equal(1);
384
+ secondItem.click();
385
+ await elementUpdated(el);
386
+ await elementUpdated(firstItem);
387
+ await elementUpdated(secondItem);
388
+ expect(changeSpy.callCount, "one change").to.equal(1);
389
+ expect(firstItem.selected).to.be.true;
390
+ expect(secondItem.selected).to.be.true;
391
+ expect(firstItem.getAttribute("aria-checked")).to.equal("true");
392
+ expect(secondItem.getAttribute("aria-checked")).to.equal("true");
393
+ expect(el.value).to.equal("First,Second");
394
+ expect(el.selectedItems.length).to.equal(2);
395
+ firstItem.click();
396
+ await elementUpdated(el);
397
+ await elementUpdated(firstItem);
398
+ await elementUpdated(secondItem);
399
+ expect(changeSpy.callCount, "two changes").to.equal(2);
400
+ expect(firstItem.selected).to.be.false;
401
+ expect(secondItem.selected).to.be.true;
402
+ expect(firstItem.getAttribute("aria-checked")).to.equal("false");
403
+ expect(secondItem.getAttribute("aria-checked")).to.equal("true");
404
+ expect(el.value).to.equal("Second");
405
+ expect(el.selectedItems.length).to.equal(1);
406
+ });
407
+ });
88
408
  //# sourceMappingURL=menu.test.js.map
@@ -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": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,5 @@
1
- import*as r from"../stories/submenu.stories.js";import{regressVisuals as s}from"../../../test/visual/test.js";s("SubmenuStories",r);
1
+ "use strict";
2
+ import * as stories from "../stories/submenu.stories.js";
3
+ import { regressVisuals } from "../../../test/visual/test.js";
4
+ regressVisuals("SubmenuStories", stories);
2
5
  //# sourceMappingURL=submenu.test-vrt.js.map
@@ -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,gDACA,8DAEA,EAAe,iBAAkB,CAAO",
5
+ "mappings": ";AAYA,YAAY,aAAa;AACzB,SAAS,sBAAsB;AAE/B,eAAe,kBAAkB,OAAO;",
6
6
  "names": []
7
7
  }