@spectrum-web-components/menu 1.0.0 → 1.0.2

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 (50) hide show
  1. package/package.json +11 -12
  2. package/src/menu-item.css.dev.js +1 -1
  3. package/src/menu-item.css.dev.js.map +1 -1
  4. package/src/menu-item.css.js +1 -1
  5. package/src/menu-item.css.js.map +1 -1
  6. package/LICENSE +0 -201
  7. package/stories/index.js +0 -82
  8. package/stories/index.js.map +0 -7
  9. package/stories/menu-divider.stories.js +0 -32
  10. package/stories/menu-divider.stories.js.map +0 -7
  11. package/stories/menu-group.stories.js +0 -144
  12. package/stories/menu-group.stories.js.map +0 -7
  13. package/stories/menu-item.disconnected.stories.js +0 -176
  14. package/stories/menu-item.disconnected.stories.js.map +0 -7
  15. package/stories/menu-item.stories.js +0 -73
  16. package/stories/menu-item.stories.js.map +0 -7
  17. package/stories/menu-sizes.stories.js +0 -11
  18. package/stories/menu-sizes.stories.js.map +0 -7
  19. package/stories/menu.stories.js +0 -403
  20. package/stories/menu.stories.js.map +0 -7
  21. package/stories/submenu.stories.js +0 -346
  22. package/stories/submenu.stories.js.map +0 -7
  23. package/test/benchmark/test-basic.js +0 -24
  24. package/test/benchmark/test-basic.js.map +0 -7
  25. package/test/menu-divider.test-vrt.js +0 -5
  26. package/test/menu-divider.test-vrt.js.map +0 -7
  27. package/test/menu-group.test-vrt.js +0 -5
  28. package/test/menu-group.test-vrt.js.map +0 -7
  29. package/test/menu-group.test.js +0 -405
  30. package/test/menu-group.test.js.map +0 -7
  31. package/test/menu-item.disconnected.test-vrt.js +0 -5
  32. package/test/menu-item.disconnected.test-vrt.js.map +0 -7
  33. package/test/menu-item.test-vrt.js +0 -5
  34. package/test/menu-item.test-vrt.js.map +0 -7
  35. package/test/menu-item.test.js +0 -180
  36. package/test/menu-item.test.js.map +0 -7
  37. package/test/menu-memory.test.js +0 -5
  38. package/test/menu-memory.test.js.map +0 -7
  39. package/test/menu-selects.test.js +0 -530
  40. package/test/menu-selects.test.js.map +0 -7
  41. package/test/menu-sizes.test-vrt.js +0 -5
  42. package/test/menu-sizes.test-vrt.js.map +0 -7
  43. package/test/menu.test-vrt.js +0 -5
  44. package/test/menu.test-vrt.js.map +0 -7
  45. package/test/menu.test.js +0 -559
  46. package/test/menu.test.js.map +0 -7
  47. package/test/submenu.test-vrt.js +0 -5
  48. package/test/submenu.test-vrt.js.map +0 -7
  49. package/test/submenu.test.js +0 -970
  50. package/test/submenu.test.js.map +0 -7
@@ -1,180 +0,0 @@
1
- "use strict";
2
- import "@spectrum-web-components/menu/sp-menu.js";
3
- import "@spectrum-web-components/menu/sp-menu-item.js";
4
- import {
5
- elementUpdated,
6
- expect,
7
- fixture,
8
- html,
9
- waitUntil
10
- } from "@open-wc/testing";
11
- import { spy } from "sinon";
12
- import { sendMouse } from "../../../test/plugins/browser.js";
13
- describe("Menu item", () => {
14
- it("renders", async () => {
15
- const el = await fixture(
16
- html`
17
- <sp-menu>
18
- <sp-menu-item selected>Selected</sp-menu-item>
19
- </sp-menu>
20
- `
21
- );
22
- await waitUntil(
23
- () => el.childItems.length == 1,
24
- "expected menu group to manage 1 child"
25
- );
26
- await elementUpdated(el);
27
- await expect(el).to.be.accessible();
28
- });
29
- it("can be disabled", async () => {
30
- const el = await fixture(
31
- html`
32
- <sp-menu selects="single">
33
- <sp-menu-item selected label="This is not disabled">
34
- Selected
35
- </sp-menu-item>
36
- <sp-menu-item disabled>Disabled</sp-menu-item>
37
- </sp-menu>
38
- `
39
- );
40
- await elementUpdated(el);
41
- expect(el.value).to.equal("Selected");
42
- const disabled = el.querySelector("[disabled]");
43
- const boundingRect = disabled.getBoundingClientRect();
44
- sendMouse({
45
- steps: [
46
- {
47
- type: "move",
48
- position: [
49
- boundingRect.x + boundingRect.width / 2,
50
- boundingRect.y + boundingRect.height / 2
51
- ]
52
- },
53
- {
54
- type: "down"
55
- },
56
- {
57
- type: "up"
58
- }
59
- ]
60
- });
61
- await elementUpdated(el);
62
- expect(el.value).to.equal("Selected");
63
- disabled.click();
64
- await elementUpdated(el);
65
- expect(el.value).to.equal("Selected");
66
- disabled.dispatchEvent(
67
- new Event("click", {
68
- bubbles: true,
69
- composed: true
70
- })
71
- );
72
- await elementUpdated(el);
73
- expect(el.value).to.equal("Selected");
74
- });
75
- it("proxies `click()`", async () => {
76
- const clickTargetSpy = spy();
77
- const el = await fixture(
78
- html`
79
- <sp-menu
80
- @click=${(event) => {
81
- clickTargetSpy(
82
- event.composedPath()[0]
83
- );
84
- event.stopPropagation();
85
- event.preventDefault();
86
- }}
87
- >
88
- <sp-menu-item
89
- href="https://opensource.adobe.com/spectrum-web-components"
90
- >
91
- Selected Text
92
- </sp-menu-item>
93
- </sp-menu>
94
- `
95
- );
96
- await elementUpdated(el);
97
- const item = el.querySelector("sp-menu-item");
98
- const { anchorElement } = item;
99
- item.anchorElement.dispatchEvent(new FocusEvent("focus"));
100
- await elementUpdated(item);
101
- expect(el === document.activeElement).to.be.true;
102
- item.click();
103
- expect(clickTargetSpy.calledWith(anchorElement)).to.be.true;
104
- });
105
- it("value attribute", async () => {
106
- const el = await fixture(
107
- html`
108
- <sp-menu-item value="selected" selected>
109
- Selected Text
110
- </sp-menu-item>
111
- `
112
- );
113
- expect(el.itemText).to.equal("Selected Text");
114
- expect(el.value).to.equal("selected");
115
- });
116
- it("no value attribute", async () => {
117
- const el = await fixture(
118
- html`
119
- <sp-menu-item selected>Selected Text</sp-menu-item>
120
- `
121
- );
122
- expect(el.itemText).to.equal("Selected Text");
123
- expect(el.value).to.equal("Selected Text");
124
- });
125
- it("value property", async () => {
126
- const el = await fixture(
127
- html`
128
- <sp-menu-item selected>Selected Text</sp-menu-item>
129
- `
130
- );
131
- expect(el.itemText).to.equal("Selected Text");
132
- expect(el.value).to.equal("Selected Text");
133
- expect(el.hasAttribute("value")).to.be.false;
134
- el.value = "Selected Text";
135
- await elementUpdated(el);
136
- expect(el.value).to.equal("Selected Text");
137
- expect(el.getAttribute("value")).to.equal("Selected Text");
138
- el.value = "";
139
- await elementUpdated(el);
140
- expect(el.value).to.equal("Selected Text");
141
- expect(el.hasAttribute("value")).to.be.false;
142
- });
143
- it("assigns content to the description slot", async () => {
144
- const el = await fixture(
145
- html`
146
- <sp-menu-item selected>
147
- Menu Item Text
148
- <span slot="description">
149
- Description for the Menu-Item
150
- </span>
151
- </sp-menu-item>
152
- `
153
- );
154
- const descriptionElement = el.querySelector("span");
155
- expect(descriptionElement.assignedSlot).to.not.be.null;
156
- });
157
- it("acualizes a submenu", async () => {
158
- const test = await fixture(
159
- html`
160
- <sp-menu>
161
- <sp-menu-item selected>Selected</sp-menu-item>
162
- </sp-menu>
163
- `
164
- );
165
- const el = test.querySelector("sp-menu-item");
166
- expect(el.hasSubmenu).to.be.false;
167
- const submenuItem = document.createElement("sp-menu-item");
168
- const submenu = document.createElement("sp-menu");
169
- submenuItem.textContent = "Test Submenu Item";
170
- submenu.slot = "submenu";
171
- submenu.append(submenuItem);
172
- el.append(submenu);
173
- await elementUpdated(el);
174
- expect(el.hasSubmenu).to.be.true;
175
- submenu.remove();
176
- await elementUpdated(el);
177
- expect(el.hasSubmenu).to.be.false;
178
- });
179
- });
180
- //# sourceMappingURL=menu-item.test.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 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 '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport { Menu, MenuItem } from '@spectrum-web-components/menu';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n waitUntil,\n} from '@open-wc/testing';\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>(\n html`\n <sp-menu>\n <sp-menu-item selected>Selected</sp-menu-item>\n </sp-menu>\n `\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>(\n 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 );\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>(\n 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\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(el === document.activeElement).to.be.true;\n item.click();\n\n expect(clickTargetSpy.calledWith(anchorElement)).to.be.true;\n });\n it('value attribute', async () => {\n const el = await fixture<MenuItem>(\n html`\n <sp-menu-item value=\"selected\" selected>\n Selected Text\n </sp-menu-item>\n `\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>(\n html`\n <sp-menu-item selected>Selected Text</sp-menu-item>\n `\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>(\n html`\n <sp-menu-item selected>Selected Text</sp-menu-item>\n `\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>(\n html`\n <sp-menu-item selected>\n Menu Item Text\n <span slot=\"description\">\n Description for the Menu-Item\n </span>\n </sp-menu-item>\n `\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>(\n html`\n <sp-menu>\n <sp-menu-item selected>Selected</sp-menu-item>\n </sp-menu>\n `\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});\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,5 +0,0 @@
1
- "use strict";
2
- import { singleSelect } from "../stories/menu.stories.js";
3
- import { testForMemoryLeaks } from "../../../test/testing-helpers.js";
4
- testForMemoryLeaks(singleSelect());
5
- //# sourceMappingURL=menu-memory.test.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["menu-memory.test.ts"],
4
- "sourcesContent": ["/*\nCopyright 2023 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 { singleSelect } from '../stories/menu.stories.js';\nimport { testForMemoryLeaks } from '../../../test/testing-helpers.js';\n\ntestForMemoryLeaks(singleSelect());\n"],
5
- "mappings": ";AAYA,SAAS,oBAAoB;AAC7B,SAAS,0BAA0B;AAEnC,mBAAmB,aAAa,CAAC;",
6
- "names": []
7
- }