@spectrum-web-components/menu 0.14.2-slim.2 → 0.14.4
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 +28 -221
- package/package.json +11 -10
- package/src/Menu.d.ts +0 -8
- package/src/Menu.js +4 -47
- package/src/Menu.js.map +1 -1
- package/src/MenuDivider.js.map +1 -1
- package/src/MenuGroup.js.map +1 -1
- package/src/MenuItem.d.ts +3 -4
- package/src/MenuItem.js +32 -41
- package/src/MenuItem.js.map +1 -1
- package/stories/menu-group.stories.js +11 -7
- package/stories/menu-group.stories.js.map +1 -1
- package/test/submenu.test.js +264 -0
- package/test/submenu.test.js.map +1 -1
package/custom-elements.json
CHANGED
|
@@ -77,37 +77,6 @@
|
|
|
77
77
|
}
|
|
78
78
|
],
|
|
79
79
|
"members": [
|
|
80
|
-
{
|
|
81
|
-
"kind": "field",
|
|
82
|
-
"name": "closeSelfAsSubmenu",
|
|
83
|
-
"type": {
|
|
84
|
-
"text": "(leave?: boolean) => void"
|
|
85
|
-
},
|
|
86
|
-
"privacy": "public"
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
"kind": "method",
|
|
90
|
-
"name": "setCloseSelfAsSubmenu",
|
|
91
|
-
"privacy": "public",
|
|
92
|
-
"return": {
|
|
93
|
-
"type": {
|
|
94
|
-
"text": "void"
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
"parameters": [
|
|
98
|
-
{
|
|
99
|
-
"name": "cb",
|
|
100
|
-
"type": {
|
|
101
|
-
"text": "(leave?: boolean) => void"
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
]
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
"kind": "field",
|
|
108
|
-
"name": "_closeSelfAsSubmenu",
|
|
109
|
-
"default": "noop"
|
|
110
|
-
},
|
|
111
80
|
{
|
|
112
81
|
"kind": "field",
|
|
113
82
|
"name": "isSubmenu",
|
|
@@ -117,46 +86,6 @@
|
|
|
117
86
|
"privacy": "public",
|
|
118
87
|
"default": "false"
|
|
119
88
|
},
|
|
120
|
-
{
|
|
121
|
-
"kind": "field",
|
|
122
|
-
"name": "closeOpenSubmenu",
|
|
123
|
-
"type": {
|
|
124
|
-
"text": "(leave?: boolean) => void"
|
|
125
|
-
},
|
|
126
|
-
"privacy": "public"
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
"kind": "method",
|
|
130
|
-
"name": "setCloseOpenSubmenu",
|
|
131
|
-
"privacy": "public",
|
|
132
|
-
"return": {
|
|
133
|
-
"type": {
|
|
134
|
-
"text": "void"
|
|
135
|
-
}
|
|
136
|
-
},
|
|
137
|
-
"parameters": [
|
|
138
|
-
{
|
|
139
|
-
"name": "cb",
|
|
140
|
-
"type": {
|
|
141
|
-
"text": "(leave?: boolean) => void"
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
]
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
"kind": "field",
|
|
148
|
-
"name": "_closeOpenSubmenu",
|
|
149
|
-
"default": "noop"
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
"kind": "field",
|
|
153
|
-
"name": "hasOpenSubmenu",
|
|
154
|
-
"type": {
|
|
155
|
-
"text": "boolean"
|
|
156
|
-
},
|
|
157
|
-
"privacy": "public",
|
|
158
|
-
"default": "false"
|
|
159
|
-
},
|
|
160
89
|
{
|
|
161
90
|
"kind": "field",
|
|
162
91
|
"name": "label",
|
|
@@ -400,24 +329,6 @@
|
|
|
400
329
|
}
|
|
401
330
|
]
|
|
402
331
|
},
|
|
403
|
-
{
|
|
404
|
-
"kind": "method",
|
|
405
|
-
"name": "submenuWillCloseOn",
|
|
406
|
-
"privacy": "public",
|
|
407
|
-
"return": {
|
|
408
|
-
"type": {
|
|
409
|
-
"text": "void"
|
|
410
|
-
}
|
|
411
|
-
},
|
|
412
|
-
"parameters": [
|
|
413
|
-
{
|
|
414
|
-
"name": "menuItem",
|
|
415
|
-
"type": {
|
|
416
|
-
"text": "MenuItem"
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
]
|
|
420
|
-
},
|
|
421
332
|
{
|
|
422
333
|
"kind": "method",
|
|
423
334
|
"name": "onClick",
|
|
@@ -699,6 +610,12 @@
|
|
|
699
610
|
"text": "Event"
|
|
700
611
|
},
|
|
701
612
|
"description": "Announces that the `value` of the element has changed"
|
|
613
|
+
},
|
|
614
|
+
{
|
|
615
|
+
"name": "close",
|
|
616
|
+
"type": {
|
|
617
|
+
"text": "Event"
|
|
618
|
+
}
|
|
702
619
|
}
|
|
703
620
|
],
|
|
704
621
|
"attributes": [
|
|
@@ -858,49 +775,6 @@
|
|
|
858
775
|
}
|
|
859
776
|
}
|
|
860
777
|
},
|
|
861
|
-
{
|
|
862
|
-
"kind": "field",
|
|
863
|
-
"name": "closeSelfAsSubmenu",
|
|
864
|
-
"type": {
|
|
865
|
-
"text": "(leave?: boolean) => void"
|
|
866
|
-
},
|
|
867
|
-
"privacy": "public",
|
|
868
|
-
"inheritedFrom": {
|
|
869
|
-
"name": "Menu",
|
|
870
|
-
"module": "src/Menu.ts"
|
|
871
|
-
}
|
|
872
|
-
},
|
|
873
|
-
{
|
|
874
|
-
"kind": "method",
|
|
875
|
-
"name": "setCloseSelfAsSubmenu",
|
|
876
|
-
"privacy": "public",
|
|
877
|
-
"return": {
|
|
878
|
-
"type": {
|
|
879
|
-
"text": "void"
|
|
880
|
-
}
|
|
881
|
-
},
|
|
882
|
-
"parameters": [
|
|
883
|
-
{
|
|
884
|
-
"name": "cb",
|
|
885
|
-
"type": {
|
|
886
|
-
"text": "(leave?: boolean) => void"
|
|
887
|
-
}
|
|
888
|
-
}
|
|
889
|
-
],
|
|
890
|
-
"inheritedFrom": {
|
|
891
|
-
"name": "Menu",
|
|
892
|
-
"module": "src/Menu.ts"
|
|
893
|
-
}
|
|
894
|
-
},
|
|
895
|
-
{
|
|
896
|
-
"kind": "field",
|
|
897
|
-
"name": "_closeSelfAsSubmenu",
|
|
898
|
-
"default": "noop",
|
|
899
|
-
"inheritedFrom": {
|
|
900
|
-
"name": "Menu",
|
|
901
|
-
"module": "src/Menu.ts"
|
|
902
|
-
}
|
|
903
|
-
},
|
|
904
778
|
{
|
|
905
779
|
"kind": "field",
|
|
906
780
|
"name": "isSubmenu",
|
|
@@ -914,62 +788,6 @@
|
|
|
914
788
|
"module": "src/Menu.ts"
|
|
915
789
|
}
|
|
916
790
|
},
|
|
917
|
-
{
|
|
918
|
-
"kind": "field",
|
|
919
|
-
"name": "closeOpenSubmenu",
|
|
920
|
-
"type": {
|
|
921
|
-
"text": "(leave?: boolean) => void"
|
|
922
|
-
},
|
|
923
|
-
"privacy": "public",
|
|
924
|
-
"inheritedFrom": {
|
|
925
|
-
"name": "Menu",
|
|
926
|
-
"module": "src/Menu.ts"
|
|
927
|
-
}
|
|
928
|
-
},
|
|
929
|
-
{
|
|
930
|
-
"kind": "method",
|
|
931
|
-
"name": "setCloseOpenSubmenu",
|
|
932
|
-
"privacy": "public",
|
|
933
|
-
"return": {
|
|
934
|
-
"type": {
|
|
935
|
-
"text": "void"
|
|
936
|
-
}
|
|
937
|
-
},
|
|
938
|
-
"parameters": [
|
|
939
|
-
{
|
|
940
|
-
"name": "cb",
|
|
941
|
-
"type": {
|
|
942
|
-
"text": "(leave?: boolean) => void"
|
|
943
|
-
}
|
|
944
|
-
}
|
|
945
|
-
],
|
|
946
|
-
"inheritedFrom": {
|
|
947
|
-
"name": "Menu",
|
|
948
|
-
"module": "src/Menu.ts"
|
|
949
|
-
}
|
|
950
|
-
},
|
|
951
|
-
{
|
|
952
|
-
"kind": "field",
|
|
953
|
-
"name": "_closeOpenSubmenu",
|
|
954
|
-
"default": "noop",
|
|
955
|
-
"inheritedFrom": {
|
|
956
|
-
"name": "Menu",
|
|
957
|
-
"module": "src/Menu.ts"
|
|
958
|
-
}
|
|
959
|
-
},
|
|
960
|
-
{
|
|
961
|
-
"kind": "field",
|
|
962
|
-
"name": "hasOpenSubmenu",
|
|
963
|
-
"type": {
|
|
964
|
-
"text": "boolean"
|
|
965
|
-
},
|
|
966
|
-
"privacy": "public",
|
|
967
|
-
"default": "false",
|
|
968
|
-
"inheritedFrom": {
|
|
969
|
-
"name": "Menu",
|
|
970
|
-
"module": "src/Menu.ts"
|
|
971
|
-
}
|
|
972
|
-
},
|
|
973
791
|
{
|
|
974
792
|
"kind": "field",
|
|
975
793
|
"name": "label",
|
|
@@ -1293,28 +1111,6 @@
|
|
|
1293
1111
|
"module": "src/Menu.ts"
|
|
1294
1112
|
}
|
|
1295
1113
|
},
|
|
1296
|
-
{
|
|
1297
|
-
"kind": "method",
|
|
1298
|
-
"name": "submenuWillCloseOn",
|
|
1299
|
-
"privacy": "public",
|
|
1300
|
-
"return": {
|
|
1301
|
-
"type": {
|
|
1302
|
-
"text": "void"
|
|
1303
|
-
}
|
|
1304
|
-
},
|
|
1305
|
-
"parameters": [
|
|
1306
|
-
{
|
|
1307
|
-
"name": "menuItem",
|
|
1308
|
-
"type": {
|
|
1309
|
-
"text": "MenuItem"
|
|
1310
|
-
}
|
|
1311
|
-
}
|
|
1312
|
-
],
|
|
1313
|
-
"inheritedFrom": {
|
|
1314
|
-
"name": "Menu",
|
|
1315
|
-
"module": "src/Menu.ts"
|
|
1316
|
-
}
|
|
1317
|
-
},
|
|
1318
1114
|
{
|
|
1319
1115
|
"kind": "method",
|
|
1320
1116
|
"name": "onClick",
|
|
@@ -1740,6 +1536,16 @@
|
|
|
1740
1536
|
"name": "Menu",
|
|
1741
1537
|
"module": "src/Menu.ts"
|
|
1742
1538
|
}
|
|
1539
|
+
},
|
|
1540
|
+
{
|
|
1541
|
+
"name": "close",
|
|
1542
|
+
"type": {
|
|
1543
|
+
"text": "Event"
|
|
1544
|
+
},
|
|
1545
|
+
"inheritedFrom": {
|
|
1546
|
+
"name": "Menu",
|
|
1547
|
+
"module": "src/Menu.ts"
|
|
1548
|
+
}
|
|
1743
1549
|
}
|
|
1744
1550
|
]
|
|
1745
1551
|
}
|
|
@@ -2136,11 +1942,21 @@
|
|
|
2136
1942
|
}
|
|
2137
1943
|
}
|
|
2138
1944
|
},
|
|
1945
|
+
{
|
|
1946
|
+
"kind": "method",
|
|
1947
|
+
"name": "closeOverlaysForRoot",
|
|
1948
|
+
"privacy": "protected",
|
|
1949
|
+
"return": {
|
|
1950
|
+
"type": {
|
|
1951
|
+
"text": "void"
|
|
1952
|
+
}
|
|
1953
|
+
}
|
|
1954
|
+
},
|
|
2139
1955
|
{
|
|
2140
1956
|
"kind": "field",
|
|
2141
1957
|
"name": "closeOverlay",
|
|
2142
1958
|
"type": {
|
|
2143
|
-
"text": "(
|
|
1959
|
+
"text": "() => Promise<void> | undefined"
|
|
2144
1960
|
},
|
|
2145
1961
|
"privacy": "public"
|
|
2146
1962
|
},
|
|
@@ -2201,16 +2017,7 @@
|
|
|
2201
2017
|
"type": {
|
|
2202
2018
|
"text": "Promise<void>"
|
|
2203
2019
|
}
|
|
2204
|
-
}
|
|
2205
|
-
"parameters": [
|
|
2206
|
-
{
|
|
2207
|
-
"name": "{\n immediate,\n }",
|
|
2208
|
-
"default": "{}",
|
|
2209
|
-
"type": {
|
|
2210
|
-
"text": "{ immediate?: boolean }"
|
|
2211
|
-
}
|
|
2212
|
-
}
|
|
2213
|
-
]
|
|
2020
|
+
}
|
|
2214
2021
|
},
|
|
2215
2022
|
{
|
|
2216
2023
|
"kind": "method",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spectrum-web-components/menu",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.4",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -50,22 +50,23 @@
|
|
|
50
50
|
"lit-html"
|
|
51
51
|
],
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@
|
|
54
|
-
"@spectrum-web-components/
|
|
55
|
-
"@spectrum-web-components/
|
|
56
|
-
"@spectrum-web-components/
|
|
57
|
-
"@spectrum-web-components/
|
|
58
|
-
"@spectrum-web-components/
|
|
59
|
-
"@spectrum-web-components/
|
|
53
|
+
"@lit-labs/observers": "^1.0.1",
|
|
54
|
+
"@spectrum-web-components/action-button": "^0.9.0",
|
|
55
|
+
"@spectrum-web-components/base": "^0.5.8",
|
|
56
|
+
"@spectrum-web-components/divider": "^0.4.11",
|
|
57
|
+
"@spectrum-web-components/icon": "^0.11.11",
|
|
58
|
+
"@spectrum-web-components/icons-ui": "^0.8.11",
|
|
59
|
+
"@spectrum-web-components/overlay": "^0.16.5",
|
|
60
|
+
"@spectrum-web-components/shared": "^0.14.4",
|
|
60
61
|
"tslib": "^2.0.0"
|
|
61
62
|
},
|
|
62
63
|
"devDependencies": {
|
|
63
|
-
"@spectrum-css/menu": "^4.0.
|
|
64
|
+
"@spectrum-css/menu": "^4.0.4"
|
|
64
65
|
},
|
|
65
66
|
"types": "./src/index.d.ts",
|
|
66
67
|
"customElements": "custom-elements.json",
|
|
67
68
|
"sideEffects": [
|
|
68
69
|
"./sp-*.js"
|
|
69
70
|
],
|
|
70
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "3be62133721efba844cd7032566a2c49ed6d9875"
|
|
71
72
|
}
|
package/src/Menu.d.ts
CHANGED
|
@@ -22,14 +22,7 @@ export interface MenuChildItem {
|
|
|
22
22
|
*/
|
|
23
23
|
export declare class Menu extends SpectrumElement {
|
|
24
24
|
static get styles(): CSSResultArray;
|
|
25
|
-
get closeSelfAsSubmenu(): (leave?: boolean) => void;
|
|
26
|
-
setCloseSelfAsSubmenu(cb: (leave?: boolean) => void): void;
|
|
27
|
-
_closeSelfAsSubmenu: () => void;
|
|
28
25
|
isSubmenu: boolean;
|
|
29
|
-
get closeOpenSubmenu(): (leave?: boolean) => void;
|
|
30
|
-
setCloseOpenSubmenu(cb: (leave?: boolean) => void): void;
|
|
31
|
-
_closeOpenSubmenu: () => void;
|
|
32
|
-
hasOpenSubmenu: boolean;
|
|
33
26
|
label: string;
|
|
34
27
|
selects: undefined | 'inherit' | 'single' | 'multiple';
|
|
35
28
|
value: string;
|
|
@@ -75,7 +68,6 @@ export declare class Menu extends SpectrumElement {
|
|
|
75
68
|
private removeChildItem;
|
|
76
69
|
constructor();
|
|
77
70
|
focus({ preventScroll }?: FocusOptions): void;
|
|
78
|
-
submenuWillCloseOn(menuItem: MenuItem): void;
|
|
79
71
|
private onClick;
|
|
80
72
|
handleFocusin(event: FocusEvent): void;
|
|
81
73
|
startListeningToKeyboard(): void;
|
package/src/Menu.js
CHANGED
|
@@ -17,10 +17,6 @@ import menuStyles from './menu.css.js';
|
|
|
17
17
|
function elementIsOrContains(el, isOrContains) {
|
|
18
18
|
return !!isOrContains && (el === isOrContains || el.contains(isOrContains));
|
|
19
19
|
}
|
|
20
|
-
/* c8 ignore next 3 */
|
|
21
|
-
const noop = () => {
|
|
22
|
-
return;
|
|
23
|
-
};
|
|
24
20
|
/**
|
|
25
21
|
* Spectrum Menu Component
|
|
26
22
|
* @element sp-menu
|
|
@@ -37,10 +33,7 @@ const noop = () => {
|
|
|
37
33
|
export class Menu extends SpectrumElement {
|
|
38
34
|
constructor() {
|
|
39
35
|
super();
|
|
40
|
-
this._closeSelfAsSubmenu = noop;
|
|
41
36
|
this.isSubmenu = false;
|
|
42
|
-
this._closeOpenSubmenu = noop;
|
|
43
|
-
this.hasOpenSubmenu = false;
|
|
44
37
|
this.label = '';
|
|
45
38
|
this.value = '';
|
|
46
39
|
// For the multiple select case, we'll join the value strings together
|
|
@@ -68,32 +61,6 @@ export class Menu extends SpectrumElement {
|
|
|
68
61
|
static get styles() {
|
|
69
62
|
return [menuStyles];
|
|
70
63
|
}
|
|
71
|
-
get closeSelfAsSubmenu() {
|
|
72
|
-
this.isSubmenu = false;
|
|
73
|
-
return this._closeSelfAsSubmenu;
|
|
74
|
-
}
|
|
75
|
-
setCloseSelfAsSubmenu(cb) {
|
|
76
|
-
if (cb === this._closeSelfAsSubmenu) {
|
|
77
|
-
this.isSubmenu = false;
|
|
78
|
-
this._closeSelfAsSubmenu = noop;
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
this.isSubmenu = true;
|
|
82
|
-
this._closeSelfAsSubmenu = cb;
|
|
83
|
-
}
|
|
84
|
-
get closeOpenSubmenu() {
|
|
85
|
-
this.hasOpenSubmenu = false;
|
|
86
|
-
return this._closeOpenSubmenu;
|
|
87
|
-
}
|
|
88
|
-
setCloseOpenSubmenu(cb) {
|
|
89
|
-
if (cb === this._closeOpenSubmenu) {
|
|
90
|
-
this.hasOpenSubmenu = false;
|
|
91
|
-
this._closeOpenSubmenu = noop;
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
this.hasOpenSubmenu = true;
|
|
95
|
-
this._closeOpenSubmenu = cb;
|
|
96
|
-
}
|
|
97
64
|
get childItems() {
|
|
98
65
|
if (!this.cachedChildItems) {
|
|
99
66
|
this.cachedChildItems = this.updateCachedMenuItems();
|
|
@@ -219,10 +186,6 @@ export class Menu extends SpectrumElement {
|
|
|
219
186
|
selectedItem.scrollIntoView({ block: 'nearest' });
|
|
220
187
|
}
|
|
221
188
|
}
|
|
222
|
-
submenuWillCloseOn(menuItem) {
|
|
223
|
-
this.focusedItemIndex = this.childItems.indexOf(menuItem);
|
|
224
|
-
this.focusInItemIndex = this.focusedItemIndex;
|
|
225
|
-
}
|
|
226
189
|
onClick(event) {
|
|
227
190
|
if (event.defaultPrevented) {
|
|
228
191
|
return;
|
|
@@ -244,12 +207,6 @@ export class Menu extends SpectrumElement {
|
|
|
244
207
|
if (target.hasSubmenu || target.open) {
|
|
245
208
|
return;
|
|
246
209
|
}
|
|
247
|
-
if (this.hasOpenSubmenu) {
|
|
248
|
-
this.closeOpenSubmenu();
|
|
249
|
-
}
|
|
250
|
-
if (this.isSubmenu) {
|
|
251
|
-
this.closeSelfAsSubmenu();
|
|
252
|
-
}
|
|
253
210
|
this.selectOrToggleItem(target);
|
|
254
211
|
}
|
|
255
212
|
else {
|
|
@@ -390,11 +347,11 @@ export class Menu extends SpectrumElement {
|
|
|
390
347
|
// Remove focus while opening overlay from keyboard or the visible focus
|
|
391
348
|
// will slip back to the first item in the menu.
|
|
392
349
|
this.blur();
|
|
393
|
-
lastFocusedItem.openOverlay(
|
|
350
|
+
lastFocusedItem.openOverlay();
|
|
394
351
|
}
|
|
395
352
|
}
|
|
396
|
-
else if (this.isSubmenu
|
|
397
|
-
this.
|
|
353
|
+
else if (shouldCloseSelfAsSubmenu && this.isSubmenu) {
|
|
354
|
+
this.dispatchEvent(new Event('close', { bubbles: true }));
|
|
398
355
|
}
|
|
399
356
|
}
|
|
400
357
|
handleKeydown(event) {
|
|
@@ -410,7 +367,7 @@ export class Menu extends SpectrumElement {
|
|
|
410
367
|
// Remove focus while opening overlay from keyboard or the visible focus
|
|
411
368
|
// will slip back to the first item in the menu.
|
|
412
369
|
this.blur();
|
|
413
|
-
lastFocusedItem.openOverlay(
|
|
370
|
+
lastFocusedItem.openOverlay();
|
|
414
371
|
return;
|
|
415
372
|
}
|
|
416
373
|
}
|