@spectrum-web-components/menu 1.2.0-beta.8 → 1.2.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/custom-elements.json +503 -253
- package/package.json +11 -11
- package/src/Menu.d.ts +62 -10
- package/src/Menu.dev.js +137 -169
- package/src/Menu.dev.js.map +2 -2
- package/src/Menu.js +2 -2
- package/src/Menu.js.map +3 -3
- package/src/MenuGroup.d.ts +9 -0
- package/src/MenuGroup.dev.js +13 -9
- package/src/MenuGroup.dev.js.map +2 -2
- package/src/MenuGroup.js +3 -3
- package/src/MenuGroup.js.map +2 -2
- package/src/MenuItem.d.ts +60 -1
- package/src/MenuItem.dev.js +107 -19
- package/src/MenuItem.dev.js.map +2 -2
- package/src/MenuItem.js +7 -7
- package/src/MenuItem.js.map +3 -3
- package/stories/index.js +13 -5
- package/stories/index.js.map +2 -2
- package/stories/menu.stories.js +20 -0
- package/stories/menu.stories.js.map +2 -2
- package/test/menu-group.test.js +88 -92
- package/test/menu-group.test.js.map +2 -2
- package/test/menu-item.test.js +39 -1
- package/test/menu-item.test.js.map +2 -2
- package/test/menu-selects.test.js +42 -49
- package/test/menu-selects.test.js.map +2 -2
- package/test/menu.test.js +102 -98
- package/test/menu.test.js.map +2 -2
- package/test/submenu.test.js +60 -34
- package/test/submenu.test.js.map +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["menu-item.test.ts"],
|
|
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 {\n elementUpdated,\n expect,\n fixture,\n html,\n waitUntil,\n} from '@open-wc/testing';\nimport '@spectrum-web-components/action-menu/sp-action-menu.js';\nimport { Menu, MenuItem } from '@spectrum-web-components/menu';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport { spy } from 'sinon';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\ndescribe('Menu item', () => {\n it('renders', async () => {\n const el = await fixture<Menu>(html`\n <sp-menu>\n <sp-menu-item selected>Selected</sp-menu-item>\n </sp-menu>\n `);\n await waitUntil(\n () => el.childItems.length == 1,\n 'expected menu group to manage 1 child'\n );\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('can be disabled', async () => {\n const el = await fixture<Menu>(html`\n <sp-menu selects=\"single\">\n <sp-menu-item selected label=\"This is not disabled\">\n Selected\n </sp-menu-item>\n <sp-menu-item disabled>Disabled</sp-menu-item>\n </sp-menu>\n `);\n await elementUpdated(el);\n expect(el.value).to.equal('Selected');\n\n const disabled = el.querySelector('[disabled]') as MenuItem;\n const boundingRect = disabled.getBoundingClientRect();\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await elementUpdated(el);\n expect(el.value).to.equal('Selected');\n\n disabled.click();\n await elementUpdated(el);\n expect(el.value).to.equal('Selected');\n\n disabled.dispatchEvent(\n new Event('click', {\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n expect(el.value).to.equal('Selected');\n });\n it('proxies `click()`', async () => {\n const clickTargetSpy = spy();\n const el = await fixture<Menu>(html`\n <sp-menu\n @click=${(event: Event) => {\n clickTargetSpy(\n event.composedPath()[0] as HTMLAnchorElement\n );\n event.stopPropagation();\n event.preventDefault();\n }}\n >\n <sp-menu-item\n href=\"https://opensource.adobe.com/spectrum-web-components\"\n >\n Selected Text\n </sp-menu-item>\n </sp-menu>\n `);\n\n await elementUpdated(el);\n\n const item = el.querySelector('sp-menu-item') as MenuItem;\n const { anchorElement } = item as unknown as {\n anchorElement: HTMLAnchorElement;\n };\n (\n item as unknown as { anchorElement: HTMLAnchorElement }\n ).anchorElement.dispatchEvent(new FocusEvent('focus'));\n\n await elementUpdated(item);\n expect(
|
|
5
|
-
"mappings": ";AAYA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,OAAO;AAEP,OAAO;AACP,OAAO;AACP,SAAS,WAAW;AACpB,SAAS,iBAAiB;AAE1B,SAAS,aAAa,MAAM;AACxB,KAAG,WAAW,YAAY;AACtB,UAAM,KAAK,MAAM,QAAc;AAAA;AAAA;AAAA;AAAA,SAI9B;AACD,UAAM;AAAA,MACF,MAAM,GAAG,WAAW,UAAU;AAAA,MAC9B;AAAA,IACJ;AACA,UAAM,eAAe,EAAE;AAEvB,UAAM,OAAO,EAAE,EAAE,GAAG,GAAG,WAAW;AAAA,EACtC,CAAC;AACD,KAAG,mBAAmB,YAAY;AAC9B,UAAM,KAAK,MAAM,QAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAO9B;AACD,UAAM,eAAe,EAAE;AACvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,UAAU;AAEpC,UAAM,WAAW,GAAG,cAAc,YAAY;AAC9C,UAAM,eAAe,SAAS,sBAAsB;AACpD,cAAU;AAAA,MACN,OAAO;AAAA,QACH;AAAA,UACI,MAAM;AAAA,UACN,UAAU;AAAA,YACN,aAAa,IAAI,aAAa,QAAQ;AAAA,YACtC,aAAa,IAAI,aAAa,SAAS;AAAA,UAC3C;AAAA,QACJ;AAAA,QACA;AAAA,UACI,MAAM;AAAA,QACV;AAAA,QACA;AAAA,UACI,MAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,UAAM,eAAe,EAAE;AACvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,UAAU;AAEpC,aAAS,MAAM;AACf,UAAM,eAAe,EAAE;AACvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,UAAU;AAEpC,aAAS;AAAA,MACL,IAAI,MAAM,SAAS;AAAA,QACf,SAAS;AAAA,QACT,UAAU;AAAA,MACd,CAAC;AAAA,IACL;AACA,UAAM,eAAe,EAAE;AACvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,UAAU;AAAA,EACxC,CAAC;AACD,KAAG,qBAAqB,YAAY;AAChC,UAAM,iBAAiB,IAAI;AAC3B,UAAM,KAAK,MAAM,QAAc;AAAA;AAAA,yBAEd,CAAC,UAAiB;AACvB;AAAA,QACI,MAAM,aAAa,EAAE,CAAC;AAAA,MAC1B;AACA,YAAM,gBAAgB;AACtB,YAAM,eAAe;AAAA,IACzB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAQR;AAED,UAAM,eAAe,EAAE;AAEvB,UAAM,OAAO,GAAG,cAAc,cAAc;AAC5C,UAAM,EAAE,cAAc,IAAI;AAG1B,IACI,KACF,cAAc,cAAc,IAAI,WAAW,OAAO,CAAC;AAErD,UAAM,eAAe,IAAI;
|
|
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 {\n elementUpdated,\n expect,\n fixture,\n html,\n waitUntil,\n} from '@open-wc/testing';\nimport '@spectrum-web-components/action-menu/sp-action-menu.js';\nimport { Menu, MenuItem } from '@spectrum-web-components/menu';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport { spy } from 'sinon';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\ndescribe('Menu item', () => {\n it('renders', async () => {\n const el = await fixture<Menu>(html`\n <sp-menu>\n <sp-menu-item selected>Selected</sp-menu-item>\n </sp-menu>\n `);\n await waitUntil(\n () => el.childItems.length == 1,\n 'expected menu group to manage 1 child'\n );\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('can be disabled', async () => {\n const el = await fixture<Menu>(html`\n <sp-menu selects=\"single\">\n <sp-menu-item selected label=\"This is not disabled\">\n Selected\n </sp-menu-item>\n <sp-menu-item disabled>Disabled</sp-menu-item>\n </sp-menu>\n `);\n await elementUpdated(el);\n expect(el.value).to.equal('Selected');\n\n const disabled = el.querySelector('[disabled]') as MenuItem;\n const boundingRect = disabled.getBoundingClientRect();\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await elementUpdated(el);\n expect(el.value).to.equal('Selected');\n\n disabled.click();\n await elementUpdated(el);\n expect(el.value).to.equal('Selected');\n\n disabled.dispatchEvent(\n new Event('click', {\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n expect(el.value).to.equal('Selected');\n });\n it('proxies `click()`', async () => {\n const clickTargetSpy = spy();\n const el = await fixture<Menu>(html`\n <sp-menu\n @click=${(event: Event) => {\n clickTargetSpy(\n event.composedPath()[0] as HTMLAnchorElement\n );\n event.stopPropagation();\n event.preventDefault();\n }}\n >\n <sp-menu-item\n href=\"https://opensource.adobe.com/spectrum-web-components\"\n >\n Selected Text\n </sp-menu-item>\n </sp-menu>\n `);\n\n await elementUpdated(el);\n\n const item = el.querySelector('sp-menu-item') as MenuItem;\n const { anchorElement } = item as unknown as {\n anchorElement: HTMLAnchorElement;\n };\n (\n item as unknown as { anchorElement: HTMLAnchorElement }\n ).anchorElement.dispatchEvent(new FocusEvent('focus'));\n\n await elementUpdated(item);\n\n expect(item === document.activeElement).to.be.true;\n item.click();\n\n expect(clickTargetSpy.calledWith(anchorElement)).to.be.true;\n });\n it('allows link click', async () => {\n const clickTargetSpy = spy();\n const el = await fixture<Menu>(html`\n <sp-menu\n @click=${(event: Event) => {\n clickTargetSpy(\n event.composedPath()[0] as HTMLAnchorElement\n );\n event.stopPropagation();\n event.preventDefault();\n }}\n >\n <sp-menu-item\n href=\"https://opensource.adobe.com/spectrum-web-components\"\n >\n Selected Text\n </sp-menu-item>\n </sp-menu>\n `);\n\n const item = el.querySelector('sp-menu-item') as MenuItem;\n const { anchorElement } = item as unknown as {\n anchorElement: HTMLAnchorElement;\n };\n (\n item as unknown as { anchorElement: HTMLAnchorElement }\n ).anchorElement.dispatchEvent(new FocusEvent('focus'));\n\n await elementUpdated(item);\n expect(item === document.activeElement).to.be.true;\n\n // tests mouse click events, and by extension VoiceOver CRTL+Option+Space click\n const rect = el.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n position: [\n rect.left + rect.width / 2,\n rect.top + rect.height / 2,\n ],\n type: 'click',\n },\n ],\n });\n\n expect(clickTargetSpy.calledWith(anchorElement)).to.be.true;\n });\n it('value attribute', async () => {\n const el = await fixture<MenuItem>(html`\n <sp-menu-item value=\"selected\" selected>Selected Text</sp-menu-item>\n `);\n expect(el.itemText).to.equal('Selected Text');\n expect(el.value).to.equal('selected');\n });\n it('no value attribute', async () => {\n const el = await fixture<MenuItem>(html`\n <sp-menu-item selected>Selected Text</sp-menu-item>\n `);\n expect(el.itemText).to.equal('Selected Text');\n expect(el.value).to.equal('Selected Text');\n });\n it('value property', async () => {\n const el = await fixture<MenuItem>(html`\n <sp-menu-item selected>Selected Text</sp-menu-item>\n `);\n expect(el.itemText).to.equal('Selected Text');\n expect(el.value).to.equal('Selected Text');\n expect(el.hasAttribute('value')).to.be.false;\n\n el.value = 'Selected Text';\n await elementUpdated(el);\n\n expect(el.value).to.equal('Selected Text');\n expect(el.getAttribute('value')).to.equal('Selected Text');\n\n el.value = '';\n await elementUpdated(el);\n\n expect(el.value).to.equal('Selected Text');\n expect(el.hasAttribute('value')).to.be.false;\n });\n it('assigns content to the description slot', async () => {\n const el = await fixture<MenuItem>(html`\n <sp-menu-item selected>\n Menu Item Text\n <span slot=\"description\">Description for the Menu-Item</span>\n </sp-menu-item>\n `);\n const descriptionElement = el.querySelector('span') as HTMLElement;\n expect(descriptionElement.assignedSlot).to.not.be.null;\n });\n it('acualizes a submenu', async () => {\n const test = await fixture<Menu>(html`\n <sp-menu>\n <sp-menu-item selected>Selected</sp-menu-item>\n </sp-menu>\n `);\n\n const el = test.querySelector('sp-menu-item') as MenuItem;\n\n expect(el.hasSubmenu).to.be.false;\n\n const submenuItem = document.createElement('sp-menu-item');\n const submenu = document.createElement('sp-menu');\n submenuItem.textContent = 'Test Submenu Item';\n submenu.slot = 'submenu';\n submenu.append(submenuItem);\n\n el.append(submenu);\n await elementUpdated(el);\n\n expect(el.hasSubmenu).to.be.true;\n\n submenu.remove();\n await elementUpdated(el);\n\n expect(el.hasSubmenu).to.be.false;\n });\n it('should not allow text-align to cascade when used inside an overlay', async () => {\n const element = await fixture<HTMLDivElement>(html`\n <div style=\"text-align: center\">\n <p>\n The paragraph and the button are centered. Menu items are\n not.\n </p>\n <sp-action-menu label=\"Actions\" selects=\"single\">\n <sp-menu-item>One</sp-menu-item>\n <sp-menu-item>Two</sp-menu-item>\n <sp-menu-item>This is a long option</sp-menu-item>\n <sp-menu-item>\n More options\n <sp-menu slot=\"submenu\">\n <sp-menu-item>Three</sp-menu-item>\n <sp-menu-item>Four</sp-menu-item>\n <sp-menu-item>Another long option</sp-menu-item>\n </sp-menu>\n </sp-menu-item>\n </sp-action-menu>\n </div>\n `);\n\n const menuItems = element.querySelectorAll(\n 'sp-menu-item'\n ) as NodeListOf<MenuItem>;\n\n for (const menuItem of menuItems)\n expect(getComputedStyle(menuItem).textAlign).to.equal('start');\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -17,15 +17,13 @@ describe("Menu [selects]", () => {
|
|
|
17
17
|
let el;
|
|
18
18
|
let options;
|
|
19
19
|
beforeEach(async () => {
|
|
20
|
-
el = await fixture(
|
|
21
|
-
|
|
22
|
-
<sp-menu
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
`
|
|
28
|
-
);
|
|
20
|
+
el = await fixture(html`
|
|
21
|
+
<sp-menu selects="single">
|
|
22
|
+
<sp-menu-item value="1">Option 1</sp-menu-item>
|
|
23
|
+
<sp-menu-item value="2">Option 2</sp-menu-item>
|
|
24
|
+
<sp-menu-item value="3">Option 3</sp-menu-item>
|
|
25
|
+
</sp-menu>
|
|
26
|
+
`);
|
|
29
27
|
options = [...el.querySelectorAll("sp-menu-item")];
|
|
30
28
|
await Promise.all(options.map((option) => option.updateComplete));
|
|
31
29
|
await nextFrame();
|
|
@@ -113,17 +111,15 @@ describe("Menu [selects] w/ group", () => {
|
|
|
113
111
|
let el;
|
|
114
112
|
let options;
|
|
115
113
|
beforeEach(async () => {
|
|
116
|
-
el = await fixture(
|
|
117
|
-
|
|
118
|
-
<sp-menu selects="
|
|
119
|
-
<sp-menu-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
`
|
|
126
|
-
);
|
|
114
|
+
el = await fixture(html`
|
|
115
|
+
<sp-menu selects="single">
|
|
116
|
+
<sp-menu-group selects="inherit">
|
|
117
|
+
<sp-menu-item value="1">Option 1</sp-menu-item>
|
|
118
|
+
<sp-menu-item value="2">Option 2</sp-menu-item>
|
|
119
|
+
<sp-menu-item value="3">Option 3</sp-menu-item>
|
|
120
|
+
</sp-menu-group>
|
|
121
|
+
</sp-menu>
|
|
122
|
+
`);
|
|
127
123
|
options = [...el.querySelectorAll("sp-menu-item")];
|
|
128
124
|
await Promise.all(options.map((option) => option.updateComplete));
|
|
129
125
|
await nextFrame();
|
|
@@ -212,17 +208,15 @@ describe("Menu w/ group [selects]", () => {
|
|
|
212
208
|
let group;
|
|
213
209
|
let options;
|
|
214
210
|
beforeEach(async () => {
|
|
215
|
-
el = await fixture(
|
|
216
|
-
|
|
217
|
-
<sp-menu>
|
|
218
|
-
<sp-menu-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
`
|
|
225
|
-
);
|
|
211
|
+
el = await fixture(html`
|
|
212
|
+
<sp-menu>
|
|
213
|
+
<sp-menu-group selects="single">
|
|
214
|
+
<sp-menu-item value="1">Option 1</sp-menu-item>
|
|
215
|
+
<sp-menu-item value="2">Option 2</sp-menu-item>
|
|
216
|
+
<sp-menu-item value="3">Option 3</sp-menu-item>
|
|
217
|
+
</sp-menu-group>
|
|
218
|
+
</sp-menu>
|
|
219
|
+
`);
|
|
226
220
|
group = el.querySelector("sp-menu-group");
|
|
227
221
|
options = [...el.querySelectorAll("sp-menu-item")];
|
|
228
222
|
await Promise.all(options.map((option) => option.updateComplete));
|
|
@@ -313,22 +307,20 @@ describe("Menu w/ groups [selects]", () => {
|
|
|
313
307
|
let groupB;
|
|
314
308
|
let options;
|
|
315
309
|
beforeEach(async () => {
|
|
316
|
-
el = await fixture(
|
|
317
|
-
|
|
318
|
-
<sp-menu>
|
|
319
|
-
<sp-menu-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
<sp-menu-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
`
|
|
331
|
-
);
|
|
310
|
+
el = await fixture(html`
|
|
311
|
+
<sp-menu>
|
|
312
|
+
<sp-menu-group selects="single" id="group-1">
|
|
313
|
+
<sp-menu-item value="1a">Option 1a</sp-menu-item>
|
|
314
|
+
<sp-menu-item value="2a">Option 2a</sp-menu-item>
|
|
315
|
+
<sp-menu-item value="3a">Option 3a</sp-menu-item>
|
|
316
|
+
</sp-menu-group>
|
|
317
|
+
<sp-menu-group selects="single" id="group-2">
|
|
318
|
+
<sp-menu-item value="1b">Option 1b</sp-menu-item>
|
|
319
|
+
<sp-menu-item value="2b">Option 2b</sp-menu-item>
|
|
320
|
+
<sp-menu-item value="3b">Option 3b</sp-menu-item>
|
|
321
|
+
</sp-menu-group>
|
|
322
|
+
</sp-menu>
|
|
323
|
+
`);
|
|
332
324
|
groupA = el.querySelector("sp-menu-group:first-child");
|
|
333
325
|
groupB = el.querySelector("sp-menu-group:last-child");
|
|
334
326
|
options = [...el.querySelectorAll("sp-menu-item")];
|
|
@@ -511,14 +503,15 @@ describe("Menu w/ groups [selects]", () => {
|
|
|
511
503
|
input.focus();
|
|
512
504
|
expect(document.activeElement === input).to.be.true;
|
|
513
505
|
await sendKeys({ press: "Shift+Tab" });
|
|
514
|
-
expect(document.activeElement ===
|
|
506
|
+
expect(document.activeElement === options[0]).to.be.true;
|
|
515
507
|
await sendKeys({ press: "ArrowDown" });
|
|
508
|
+
expect(document.activeElement === options[1]).to.be.true;
|
|
516
509
|
await sendKeys({ press: "ArrowUp" });
|
|
517
510
|
await elementUpdated(el);
|
|
518
511
|
let optionCount = 0;
|
|
519
512
|
for (const option of options) {
|
|
520
513
|
const parentElement = option.parentElement;
|
|
521
|
-
expect(document.activeElement ===
|
|
514
|
+
expect(document.activeElement === option, "option focused").to.be.true;
|
|
522
515
|
expect(option.focused, `option ${optionCount} visually focused`).to.be.true;
|
|
523
516
|
await sendKeys({ press: "Space" });
|
|
524
517
|
expect(parentElement.value).to.equal(option.value);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["menu-selects.test.ts"],
|
|
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-group.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport { Menu, MenuGroup, MenuItem } from '@spectrum-web-components/menu';\nimport {\n elementUpdated,\n expect,\n html,\n nextFrame,\n oneEvent,\n} from '@open-wc/testing';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { spy } from 'sinon';\nimport { fixture } from '../../../test/testing-helpers.js';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\ndescribe('Menu [selects]', () => {\n let el!: Menu;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu>\n `\n );\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n await Promise.all(options.map((option) => option.updateComplete));\n await nextFrame();\n await nextFrame();\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(el, 'change');\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n ],\n });\n await change;\n expect(el.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(el, 'change');\n item1.click();\n await change;\n expect(el.value).to.equal('1');\n });\n });\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n el.selects = 'multiple';\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n });\n});\n\ndescribe('Menu [selects] w/ group', () => {\n let el!: Menu;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-group selects=\"inherit\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n await Promise.all(options.map((option) => option.updateComplete));\n await nextFrame();\n await nextFrame();\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(el, 'change');\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n ],\n });\n await change;\n expect(el.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(el, 'change');\n item1.click();\n await change;\n expect(el.value).to.equal('1');\n });\n });\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(el.value).to.equal('');\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n el.selects = 'multiple';\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n });\n});\n\ndescribe('Menu w/ group [selects]', () => {\n let el!: Menu;\n let group!: MenuGroup;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu>\n <sp-menu-group selects=\"single\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n group = el.querySelector('sp-menu-group') as MenuGroup;\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n await Promise.all(options.map((option) => option.updateComplete));\n await nextFrame();\n await nextFrame();\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(group, 'change');\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n ],\n });\n await change;\n expect(group.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(group, 'change');\n item1.click();\n await change;\n expect(group.value).to.equal('1');\n });\n });\n\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(group.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(group.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n group.selects = 'multiple';\n\n await elementUpdated(group);\n\n expect(group.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(group.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(group.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('');\n });\n});\n\ndescribe('Menu w/ groups [selects]', () => {\n let el!: Menu;\n let groupA!: MenuGroup;\n let groupB!: MenuGroup;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu>\n <sp-menu-group selects=\"single\" id=\"group-1\">\n <sp-menu-item value=\"1a\">Option 1a</sp-menu-item>\n <sp-menu-item value=\"2a\">Option 2a</sp-menu-item>\n <sp-menu-item value=\"3a\">Option 3a</sp-menu-item>\n </sp-menu-group>\n <sp-menu-group selects=\"single\" id=\"group-2\">\n <sp-menu-item value=\"1b\">Option 1b</sp-menu-item>\n <sp-menu-item value=\"2b\">Option 2b</sp-menu-item>\n <sp-menu-item value=\"3b\">Option 3b</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n groupA = el.querySelector('sp-menu-group:first-child') as MenuGroup;\n groupB = el.querySelector('sp-menu-group:last-child') as MenuGroup;\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n await Promise.all(options.map((option) => option.updateComplete));\n await nextFrame();\n await nextFrame();\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1a = options[0];\n const item1b = options[3];\n const boundingRectA = item1a.getBoundingClientRect();\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n let change = oneEvent(el, 'change');\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n boundingRectA.x + boundingRectA.width / 2,\n boundingRectA.y + boundingRectA.height / 2,\n ],\n },\n ],\n });\n await change;\n await elementUpdated(item1a);\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('');\n change = oneEvent(el, 'change');\n const boundingRectB = item1b.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n boundingRectB.x + boundingRectB.width / 2,\n boundingRectB.y + boundingRectB.height / 2,\n ],\n },\n ],\n });\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('1b');\n });\n it('on JS clicks', async () => {\n const item1a = options[0];\n const item1b = options[3];\n let change = oneEvent(el, 'change');\n item1a.click();\n await change;\n expect(groupA.value).to.equal('1a');\n change = oneEvent(el, 'change');\n item1b.click();\n await change;\n expect(groupB.value).to.equal('1b');\n });\n it('can have them `preventDefault()`ed', async () => {\n const preventSpy = spy();\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n const item1a = options[0];\n const item1b = options[3];\n groupA.addEventListener('change', (event: Event) => {\n event.preventDefault();\n preventSpy();\n });\n const change = oneEvent(el, 'change');\n item1a.click();\n item1b.click();\n await change;\n expect(preventSpy.callCount).to.equal(1);\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('1b');\n });\n });\n\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(groupA.value).to.equal('1a');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('2a');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupB.value).to.equal('2b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupB.value).to.equal('3b');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n groupA.selects = 'multiple';\n groupB.selects = 'multiple';\n\n await elementUpdated(groupA);\n await elementUpdated(groupB);\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a');\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a');\n expect(groupB.value).to.equal('1b,2b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a,3a');\n expect(groupB.value).to.equal('1b,2b');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a,3a');\n expect(groupB.value).to.equal('1b,2b,3b');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(groupA.value).to.equal('2a,3a');\n expect(groupB.value).to.equal('1b,2b,3b');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n\n expect(groupA.value).to.equal('2a,3a');\n expect(groupB.value).to.equal('2b,3b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n expect(groupB.value).to.equal('2b,3b');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n expect(groupB.value).to.equal('3b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('3b');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n });\n it('manages focus', async function () {\n await elementUpdated(groupA);\n await elementUpdated(groupB);\n const input = document.createElement('input');\n el.insertAdjacentElement('afterend', input);\n input.focus();\n expect(document.activeElement === input).to.be.true;\n await sendKeys({ press: 'Shift+Tab' });\n expect(document.activeElement === groupA).to.be.true;\n await sendKeys({ press: 'ArrowDown' });\n await sendKeys({ press: 'ArrowUp' });\n\n await elementUpdated(el);\n let optionCount = 0;\n for (const option of options) {\n const parentElement = option.parentElement as Menu;\n expect(document.activeElement === parentElement, 'parent focused')\n .to.be.true;\n expect(option.focused, `option ${optionCount} visually focused`).to\n .be.true;\n await sendKeys({ press: 'Space' });\n expect(parentElement.value).to.equal(option.value);\n await sendKeys({ press: 'ArrowDown' });\n optionCount += 1;\n }\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
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-group.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport { Menu, MenuGroup, MenuItem } from '@spectrum-web-components/menu';\nimport {\n elementUpdated,\n expect,\n html,\n nextFrame,\n oneEvent,\n} from '@open-wc/testing';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { spy } from 'sinon';\nimport { fixture } from '../../../test/testing-helpers.js';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\ndescribe('Menu [selects]', () => {\n let el!: Menu;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(html`\n <sp-menu selects=\"single\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu>\n `);\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n await Promise.all(options.map((option) => option.updateComplete));\n await nextFrame();\n await nextFrame();\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(el, 'change');\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n ],\n });\n await change;\n expect(el.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(el, 'change');\n item1.click();\n await change;\n expect(el.value).to.equal('1');\n });\n });\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n el.selects = 'multiple';\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n });\n});\n\ndescribe('Menu [selects] w/ group', () => {\n let el!: Menu;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(html`\n <sp-menu selects=\"single\">\n <sp-menu-group selects=\"inherit\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `);\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n await Promise.all(options.map((option) => option.updateComplete));\n await nextFrame();\n await nextFrame();\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(el, 'change');\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n ],\n });\n await change;\n expect(el.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(el, 'change');\n item1.click();\n await change;\n expect(el.value).to.equal('1');\n });\n });\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(el.value).to.equal('');\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n el.selects = 'multiple';\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n });\n});\n\ndescribe('Menu w/ group [selects]', () => {\n let el!: Menu;\n let group!: MenuGroup;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(html`\n <sp-menu>\n <sp-menu-group selects=\"single\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `);\n group = el.querySelector('sp-menu-group') as MenuGroup;\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n await Promise.all(options.map((option) => option.updateComplete));\n await nextFrame();\n await nextFrame();\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(group, 'change');\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n ],\n });\n await change;\n expect(group.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(group, 'change');\n item1.click();\n await change;\n expect(group.value).to.equal('1');\n });\n });\n\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(group.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(group.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n group.selects = 'multiple';\n\n await elementUpdated(group);\n\n expect(group.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(group.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(group.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('');\n });\n});\n\ndescribe('Menu w/ groups [selects]', () => {\n let el!: Menu;\n let groupA!: MenuGroup;\n let groupB!: MenuGroup;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(html`\n <sp-menu>\n <sp-menu-group selects=\"single\" id=\"group-1\">\n <sp-menu-item value=\"1a\">Option 1a</sp-menu-item>\n <sp-menu-item value=\"2a\">Option 2a</sp-menu-item>\n <sp-menu-item value=\"3a\">Option 3a</sp-menu-item>\n </sp-menu-group>\n <sp-menu-group selects=\"single\" id=\"group-2\">\n <sp-menu-item value=\"1b\">Option 1b</sp-menu-item>\n <sp-menu-item value=\"2b\">Option 2b</sp-menu-item>\n <sp-menu-item value=\"3b\">Option 3b</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `);\n groupA = el.querySelector('sp-menu-group:first-child') as MenuGroup;\n groupB = el.querySelector('sp-menu-group:last-child') as MenuGroup;\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n await Promise.all(options.map((option) => option.updateComplete));\n await nextFrame();\n await nextFrame();\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1a = options[0];\n const item1b = options[3];\n const boundingRectA = item1a.getBoundingClientRect();\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n let change = oneEvent(el, 'change');\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n boundingRectA.x + boundingRectA.width / 2,\n boundingRectA.y + boundingRectA.height / 2,\n ],\n },\n ],\n });\n await change;\n await elementUpdated(item1a);\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('');\n change = oneEvent(el, 'change');\n const boundingRectB = item1b.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n boundingRectB.x + boundingRectB.width / 2,\n boundingRectB.y + boundingRectB.height / 2,\n ],\n },\n ],\n });\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('1b');\n });\n it('on JS clicks', async () => {\n const item1a = options[0];\n const item1b = options[3];\n let change = oneEvent(el, 'change');\n item1a.click();\n await change;\n expect(groupA.value).to.equal('1a');\n change = oneEvent(el, 'change');\n item1b.click();\n await change;\n expect(groupB.value).to.equal('1b');\n });\n it('can have them `preventDefault()`ed', async () => {\n const preventSpy = spy();\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n const item1a = options[0];\n const item1b = options[3];\n groupA.addEventListener('change', (event: Event) => {\n event.preventDefault();\n preventSpy();\n });\n const change = oneEvent(el, 'change');\n item1a.click();\n item1b.click();\n await change;\n expect(preventSpy.callCount).to.equal(1);\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('1b');\n });\n });\n\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(groupA.value).to.equal('1a');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('2a');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupB.value).to.equal('2b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupB.value).to.equal('3b');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n groupA.selects = 'multiple';\n groupB.selects = 'multiple';\n\n await elementUpdated(groupA);\n await elementUpdated(groupB);\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a');\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a');\n expect(groupB.value).to.equal('1b,2b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a,3a');\n expect(groupB.value).to.equal('1b,2b');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a,3a');\n expect(groupB.value).to.equal('1b,2b,3b');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(groupA.value).to.equal('2a,3a');\n expect(groupB.value).to.equal('1b,2b,3b');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n\n expect(groupA.value).to.equal('2a,3a');\n expect(groupB.value).to.equal('2b,3b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n expect(groupB.value).to.equal('2b,3b');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n expect(groupB.value).to.equal('3b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('3b');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n });\n it('manages focus', async function () {\n await elementUpdated(groupA);\n await elementUpdated(groupB);\n const input = document.createElement('input');\n el.insertAdjacentElement('afterend', input);\n input.focus();\n expect(document.activeElement === input).to.be.true;\n await sendKeys({ press: 'Shift+Tab' });\n expect(document.activeElement === options[0]).to.be.true;\n await sendKeys({ press: 'ArrowDown' });\n expect(document.activeElement === options[1]).to.be.true;\n await sendKeys({ press: 'ArrowUp' });\n\n await elementUpdated(el);\n let optionCount = 0;\n for (const option of options) {\n const parentElement = option.parentElement as Menu;\n expect(document.activeElement === option, 'option focused').to.be\n .true;\n expect(option.focused, `option ${optionCount} visually focused`).to\n .be.true;\n await sendKeys({ press: 'Space' });\n expect(parentElement.value).to.equal(option.value);\n await sendKeys({ press: 'ArrowDown' });\n optionCount += 1;\n }\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|