@fluentui/web-components 3.0.0-beta.33 → 3.0.0-beta.35
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/CHANGELOG.md +20 -2
- package/dist/dts/menu/menu.d.ts +55 -39
- package/dist/dts/menu-item/menu-item.d.ts +11 -57
- package/dist/dts/menu-list/menu-list.d.ts +5 -10
- package/dist/dts/text/text.d.ts +40 -1
- package/dist/esm/menu/menu.js +98 -127
- package/dist/esm/menu/menu.js.map +1 -1
- package/dist/esm/menu/menu.styles.js +22 -8
- package/dist/esm/menu/menu.styles.js.map +1 -1
- package/dist/esm/menu/menu.template.js +3 -10
- package/dist/esm/menu/menu.template.js.map +1 -1
- package/dist/esm/menu-item/menu-item.js +59 -121
- package/dist/esm/menu-item/menu-item.js.map +1 -1
- package/dist/esm/menu-item/menu-item.styles.js +88 -116
- package/dist/esm/menu-item/menu-item.styles.js.map +1 -1
- package/dist/esm/menu-item/menu-item.template.js +17 -47
- package/dist/esm/menu-item/menu-item.template.js.map +1 -1
- package/dist/esm/menu-list/menu-list.js +12 -48
- package/dist/esm/menu-list/menu-list.js.map +1 -1
- package/dist/esm/text/text.js +91 -1
- package/dist/esm/text/text.js.map +1 -1
- package/dist/esm/text/text.styles.js +56 -57
- package/dist/esm/text/text.styles.js.map +1 -1
- package/dist/web-components.d.ts +111 -107
- package/dist/web-components.js +213 -1212
- package/dist/web-components.min.js +337 -334
- package/package.json +1 -2
package/dist/esm/menu/menu.js
CHANGED
|
@@ -1,9 +1,43 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { attr, FASTElement, observable, Updates } from '@microsoft/fast-element';
|
|
3
|
-
import { autoUpdate, computePosition, flip, hide, size } from '@floating-ui/dom';
|
|
4
3
|
import { keyEnter, keyEscape, keySpace, keyTab } from '@microsoft/fast-web-utilities';
|
|
5
4
|
/**
|
|
6
|
-
*
|
|
5
|
+
* A Menu component that provides a customizable menu element.
|
|
6
|
+
* @class Menu
|
|
7
|
+
* @extends FASTElement
|
|
8
|
+
*
|
|
9
|
+
* @attr open-on-hover - Determines if the menu should open on hover.
|
|
10
|
+
* @attr open-on-context - Determines if the menu should open on right click.
|
|
11
|
+
* @attr close-on-scroll - Determines if the menu should close on scroll.
|
|
12
|
+
* @attr persist-on-item-click - Determines if the menu open state should persist on click of menu item.
|
|
13
|
+
*
|
|
14
|
+
* @cssproperty --menu-max-height - The max-height of the menu.
|
|
15
|
+
*
|
|
16
|
+
* @slot trigger - Slot for the trigger elements.
|
|
17
|
+
* @slot - Default slot for the menu list.
|
|
18
|
+
*
|
|
19
|
+
* @method connectedCallback - Called when the element is connected to the DOM. Sets up the component.
|
|
20
|
+
* @method disconnectedCallback - Called when the element is disconnected from the DOM. Removes event listeners.
|
|
21
|
+
* @method setComponent - Sets the component state.
|
|
22
|
+
* @method toggleMenu - Toggles the open state of the menu.
|
|
23
|
+
* @method closeMenu - Closes the menu.
|
|
24
|
+
* @method openMenu - Opens the menu.
|
|
25
|
+
* @method focusMenuList - Focuses on the menu list.
|
|
26
|
+
* @method focusTrigger - Focuses on the menu trigger.
|
|
27
|
+
* @method openOnHoverChanged - Called whenever the 'openOnHover' property changes.
|
|
28
|
+
* @method persistOnItemClickChanged - Called whenever the 'persistOnItemClick' property changes.
|
|
29
|
+
* @method openOnContextChanged - Called whenever the 'openOnContext' property changes.
|
|
30
|
+
* @method closeOnScrollChanged - Called whenever the 'closeOnScroll' property changes.
|
|
31
|
+
* @method addListeners - Adds event listeners.
|
|
32
|
+
* @method removeListeners - Removes event listeners.
|
|
33
|
+
* @method menuKeydownHandler - Handles keyboard interaction for the menu.
|
|
34
|
+
* @method triggerKeydownHandler - Handles keyboard interaction for the trigger.
|
|
35
|
+
* @method documentClickHandler - Handles document click events to close the menu when a click occurs outside of the menu or the trigger.
|
|
36
|
+
*
|
|
37
|
+
* @summary The Menu component functions as a customizable menu element.
|
|
38
|
+
*
|
|
39
|
+
* @tag fluent-menu
|
|
40
|
+
*
|
|
7
41
|
* @public
|
|
8
42
|
*/
|
|
9
43
|
export class Menu extends FASTElement {
|
|
@@ -29,11 +63,6 @@ export class Menu extends FASTElement {
|
|
|
29
63
|
* @public
|
|
30
64
|
*/
|
|
31
65
|
this.persistOnItemClick = false;
|
|
32
|
-
/**
|
|
33
|
-
* Defines whether the menu is open or not.
|
|
34
|
-
* @public
|
|
35
|
-
*/
|
|
36
|
-
this.open = false;
|
|
37
66
|
/**
|
|
38
67
|
* Holds the slotted menu list.
|
|
39
68
|
* @public
|
|
@@ -44,24 +73,26 @@ export class Menu extends FASTElement {
|
|
|
44
73
|
* @public
|
|
45
74
|
*/
|
|
46
75
|
this.slottedTriggers = [];
|
|
76
|
+
/**
|
|
77
|
+
* Defines whether the menu is open or not.
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
80
|
+
this._open = false;
|
|
47
81
|
/**
|
|
48
82
|
* Toggles the open state of the menu.
|
|
49
83
|
* @public
|
|
50
84
|
*/
|
|
51
85
|
this.toggleMenu = () => {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
this.openMenu();
|
|
57
|
-
}
|
|
86
|
+
var _a;
|
|
87
|
+
(_a = this._menuList) === null || _a === void 0 ? void 0 : _a.togglePopover(!this._open);
|
|
58
88
|
};
|
|
59
89
|
/**
|
|
60
90
|
* Closes the menu.
|
|
61
91
|
* @public
|
|
62
92
|
*/
|
|
63
93
|
this.closeMenu = () => {
|
|
64
|
-
|
|
94
|
+
var _a;
|
|
95
|
+
(_a = this._menuList) === null || _a === void 0 ? void 0 : _a.togglePopover(false);
|
|
65
96
|
if (this.closeOnScroll) {
|
|
66
97
|
document.removeEventListener('scroll', this.closeMenu);
|
|
67
98
|
}
|
|
@@ -71,7 +102,8 @@ export class Menu extends FASTElement {
|
|
|
71
102
|
* @public
|
|
72
103
|
*/
|
|
73
104
|
this.openMenu = (e) => {
|
|
74
|
-
|
|
105
|
+
var _a;
|
|
106
|
+
(_a = this._menuList) === null || _a === void 0 ? void 0 : _a.togglePopover(true);
|
|
75
107
|
if (e && this.openOnContext) {
|
|
76
108
|
e.preventDefault();
|
|
77
109
|
}
|
|
@@ -80,11 +112,19 @@ export class Menu extends FASTElement {
|
|
|
80
112
|
}
|
|
81
113
|
};
|
|
82
114
|
/**
|
|
83
|
-
*
|
|
84
|
-
* @
|
|
115
|
+
* Handles the 'toggle' event on the popover.
|
|
116
|
+
* @public
|
|
117
|
+
* @param e - the event
|
|
118
|
+
* @returns void
|
|
85
119
|
*/
|
|
86
|
-
this.
|
|
87
|
-
|
|
120
|
+
this.toggleHandler = (e) => {
|
|
121
|
+
var _a;
|
|
122
|
+
if (e instanceof ToggleEvent) {
|
|
123
|
+
const newState = e.newState === 'open' ? true : false;
|
|
124
|
+
(_a = this._trigger) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', `${newState}`);
|
|
125
|
+
this._open = newState;
|
|
126
|
+
this.focusMenuList();
|
|
127
|
+
}
|
|
88
128
|
};
|
|
89
129
|
/**
|
|
90
130
|
* Handles keyboard interaction for the trigger. Toggles the menu when the Space or Enter key is pressed. If the menu
|
|
@@ -93,7 +133,7 @@ export class Menu extends FASTElement {
|
|
|
93
133
|
* @param e - the keyboard event
|
|
94
134
|
* @public
|
|
95
135
|
*/
|
|
96
|
-
this.
|
|
136
|
+
this.triggerKeydownHandler = (e) => {
|
|
97
137
|
if (e.defaultPrevented) {
|
|
98
138
|
return;
|
|
99
139
|
}
|
|
@@ -103,21 +143,18 @@ export class Menu extends FASTElement {
|
|
|
103
143
|
case keyEnter:
|
|
104
144
|
e.preventDefault();
|
|
105
145
|
this.toggleMenu();
|
|
106
|
-
if (this.open) {
|
|
107
|
-
this.focusMenuList();
|
|
108
|
-
}
|
|
109
146
|
break;
|
|
110
147
|
default:
|
|
111
148
|
return true;
|
|
112
149
|
}
|
|
113
150
|
};
|
|
114
151
|
/**
|
|
115
|
-
* Handles document click events to close
|
|
152
|
+
* Handles document click events to close a menu opened with contextmenu in popover="manual" mode.
|
|
116
153
|
* @internal
|
|
117
154
|
* @param e - The event triggered on document click.
|
|
118
155
|
*/
|
|
119
|
-
this.
|
|
120
|
-
if (
|
|
156
|
+
this.documentClickHandler = (e) => {
|
|
157
|
+
if (!e.composedPath().some((el) => el === this._trigger || el === this._menuList)) {
|
|
121
158
|
this.closeMenu();
|
|
122
159
|
}
|
|
123
160
|
};
|
|
@@ -137,9 +174,7 @@ export class Menu extends FASTElement {
|
|
|
137
174
|
* @public
|
|
138
175
|
*/
|
|
139
176
|
disconnectedCallback() {
|
|
140
|
-
var _a;
|
|
141
177
|
super.disconnectedCallback();
|
|
142
|
-
(_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
143
178
|
this.removeListeners();
|
|
144
179
|
}
|
|
145
180
|
/**
|
|
@@ -152,7 +187,8 @@ export class Menu extends FASTElement {
|
|
|
152
187
|
this._trigger = this.slottedTriggers[0];
|
|
153
188
|
this._menuList = this.slottedMenuList[0];
|
|
154
189
|
this._trigger.setAttribute('aria-haspopup', 'true');
|
|
155
|
-
this._trigger.setAttribute('aria-expanded', `${this.
|
|
190
|
+
this._trigger.setAttribute('aria-expanded', `${this._open}`);
|
|
191
|
+
this._menuList.setAttribute('popover', this.openOnContext ? 'manual' : '');
|
|
156
192
|
this.addListeners();
|
|
157
193
|
}
|
|
158
194
|
}
|
|
@@ -161,43 +197,18 @@ export class Menu extends FASTElement {
|
|
|
161
197
|
* @public
|
|
162
198
|
*/
|
|
163
199
|
focusMenuList() {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
});
|
|
168
|
-
}
|
|
200
|
+
Updates.enqueue(() => {
|
|
201
|
+
this._menuList.focus();
|
|
202
|
+
});
|
|
169
203
|
}
|
|
170
204
|
/**
|
|
171
205
|
* Focuses on the menu trigger.
|
|
172
206
|
* @public
|
|
173
207
|
*/
|
|
174
208
|
focusTrigger() {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Called whenever the open state changes.
|
|
183
|
-
* Updates the 'aria-expanded' attribute and sets the positioning of the menu.
|
|
184
|
-
* Sets menu list position
|
|
185
|
-
* emits openChanged event
|
|
186
|
-
*
|
|
187
|
-
* @param oldValue - The previous value of 'open'.
|
|
188
|
-
* @param newValue - The new value of 'open'.
|
|
189
|
-
* @public
|
|
190
|
-
*/
|
|
191
|
-
openChanged(oldValue, newValue) {
|
|
192
|
-
var _a;
|
|
193
|
-
if (this.$fastController.isConnected && this._trigger instanceof HTMLElement) {
|
|
194
|
-
this._trigger.setAttribute('aria-expanded', `${this.open}`);
|
|
195
|
-
if (this._menuList && this.open) {
|
|
196
|
-
Updates.enqueue(this.setPositioningTask);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
(_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
200
|
-
this.$emit('onOpenChange', { open: newValue });
|
|
209
|
+
Updates.enqueue(() => {
|
|
210
|
+
this._trigger.focus();
|
|
211
|
+
});
|
|
201
212
|
}
|
|
202
213
|
/**
|
|
203
214
|
* Called whenever the 'openOnHover' property changes.
|
|
@@ -263,90 +274,56 @@ export class Menu extends FASTElement {
|
|
|
263
274
|
document.removeEventListener('scroll', this.closeMenu);
|
|
264
275
|
}
|
|
265
276
|
}
|
|
266
|
-
/**
|
|
267
|
-
* Sets the positioning of the menu.
|
|
268
|
-
* @internal
|
|
269
|
-
*/
|
|
270
|
-
setPositioning() {
|
|
271
|
-
if (this.$fastController.isConnected && this._menuList && this.open && this._trigger) {
|
|
272
|
-
this.cleanup = autoUpdate(this, this.positioningContainer, async () => {
|
|
273
|
-
var _a, _b;
|
|
274
|
-
const { middlewareData, x, y } = await computePosition(this._trigger, this.positioningContainer, {
|
|
275
|
-
placement: 'bottom',
|
|
276
|
-
strategy: 'fixed',
|
|
277
|
-
middleware: [
|
|
278
|
-
flip(),
|
|
279
|
-
size({
|
|
280
|
-
apply: ({ availableHeight, rects }) => {
|
|
281
|
-
var _a;
|
|
282
|
-
((_a = this.positioningContainer) === null || _a === void 0 ? void 0 : _a.style) &&
|
|
283
|
-
Object.assign(this.positioningContainer.style, {
|
|
284
|
-
maxHeight: `${availableHeight}px`,
|
|
285
|
-
width: `${rects.reference.width}px`,
|
|
286
|
-
});
|
|
287
|
-
},
|
|
288
|
-
}),
|
|
289
|
-
hide(),
|
|
290
|
-
],
|
|
291
|
-
});
|
|
292
|
-
if ((_a = middlewareData.hide) === null || _a === void 0 ? void 0 : _a.referenceHidden) {
|
|
293
|
-
this.open = false;
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
((_b = this.positioningContainer) === null || _b === void 0 ? void 0 : _b.style) &&
|
|
297
|
-
Object.assign(this.positioningContainer.style, {
|
|
298
|
-
position: 'fixed',
|
|
299
|
-
top: '0',
|
|
300
|
-
left: '0',
|
|
301
|
-
transform: `translate(${x}px, ${y}px)`,
|
|
302
|
-
});
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
277
|
/**
|
|
307
278
|
* Adds event listeners.
|
|
308
|
-
* Adds click and keydown event listeners to the trigger
|
|
279
|
+
* Adds click and keydown event listeners to the trigger.
|
|
280
|
+
* Adds a 'toggle' event listener to the menu list.
|
|
309
281
|
* If 'openOnHover' is true, adds a 'mouseover' event listener to the trigger.
|
|
310
|
-
*
|
|
282
|
+
* If 'openOnContext' is true, adds a 'contextmenu' event listener to the trigger and a document 'click' event listener.
|
|
283
|
+
* @internal
|
|
311
284
|
*/
|
|
312
285
|
addListeners() {
|
|
313
|
-
var _a, _b, _c, _d, _e;
|
|
314
|
-
|
|
315
|
-
(
|
|
286
|
+
var _a, _b, _c, _d, _e, _f;
|
|
287
|
+
(_a = this._menuList) === null || _a === void 0 ? void 0 : _a.addEventListener('toggle', this.toggleHandler);
|
|
288
|
+
(_b = this._trigger) === null || _b === void 0 ? void 0 : _b.addEventListener('keydown', this.triggerKeydownHandler);
|
|
316
289
|
if (!this.persistOnItemClick) {
|
|
317
|
-
(
|
|
290
|
+
(_c = this._menuList) === null || _c === void 0 ? void 0 : _c.addEventListener('click', this.closeMenu);
|
|
318
291
|
}
|
|
319
292
|
if (this.openOnHover) {
|
|
320
|
-
(
|
|
293
|
+
(_d = this._trigger) === null || _d === void 0 ? void 0 : _d.addEventListener('mouseover', this.openMenu);
|
|
321
294
|
}
|
|
322
295
|
else if (this.openOnContext) {
|
|
323
|
-
(
|
|
296
|
+
(_e = this._trigger) === null || _e === void 0 ? void 0 : _e.addEventListener('contextmenu', this.openMenu);
|
|
297
|
+
document.addEventListener('click', this.documentClickHandler);
|
|
324
298
|
}
|
|
325
299
|
else {
|
|
326
|
-
(
|
|
300
|
+
(_f = this._trigger) === null || _f === void 0 ? void 0 : _f.addEventListener('click', this.toggleMenu);
|
|
327
301
|
}
|
|
328
302
|
}
|
|
329
303
|
/**
|
|
330
304
|
* Removes event listeners.
|
|
331
|
-
* Removes click and keydown event listeners from the trigger
|
|
305
|
+
* Removes click and keydown event listeners from the trigger.
|
|
306
|
+
* Also removes toggle event listener from the menu list.
|
|
332
307
|
* Also removes 'mouseover' event listeners from the trigger.
|
|
308
|
+
* Also removes 'contextmenu' event listeners from the trigger and document 'click' event listeners.
|
|
333
309
|
* @internal
|
|
334
310
|
*/
|
|
335
311
|
removeListeners() {
|
|
336
|
-
var _a, _b, _c, _d, _e;
|
|
337
|
-
|
|
338
|
-
(
|
|
312
|
+
var _a, _b, _c, _d, _e, _f;
|
|
313
|
+
(_a = this._menuList) === null || _a === void 0 ? void 0 : _a.removeEventListener('toggle', this.toggleHandler);
|
|
314
|
+
(_b = this._trigger) === null || _b === void 0 ? void 0 : _b.removeEventListener('keydown', this.triggerKeydownHandler);
|
|
339
315
|
if (!this.persistOnItemClick) {
|
|
340
|
-
(
|
|
316
|
+
(_c = this._menuList) === null || _c === void 0 ? void 0 : _c.removeEventListener('click', this.closeMenu);
|
|
341
317
|
}
|
|
342
318
|
if (this.openOnHover) {
|
|
343
|
-
(
|
|
319
|
+
(_d = this._trigger) === null || _d === void 0 ? void 0 : _d.removeEventListener('mouseover', this.openMenu);
|
|
344
320
|
}
|
|
345
321
|
if (this.openOnContext) {
|
|
346
|
-
(
|
|
322
|
+
(_e = this._trigger) === null || _e === void 0 ? void 0 : _e.removeEventListener('contextmenu', this.openMenu);
|
|
323
|
+
document.removeEventListener('click', this.documentClickHandler);
|
|
347
324
|
}
|
|
348
325
|
else {
|
|
349
|
-
(
|
|
326
|
+
(_f = this._trigger) === null || _f === void 0 ? void 0 : _f.removeEventListener('click', this.toggleMenu);
|
|
350
327
|
}
|
|
351
328
|
}
|
|
352
329
|
/**
|
|
@@ -356,7 +333,7 @@ export class Menu extends FASTElement {
|
|
|
356
333
|
* @param e - the keyboard event
|
|
357
334
|
* @public
|
|
358
335
|
*/
|
|
359
|
-
|
|
336
|
+
menuKeydownHandler(e) {
|
|
360
337
|
if (e.defaultPrevented) {
|
|
361
338
|
return;
|
|
362
339
|
}
|
|
@@ -364,18 +341,16 @@ export class Menu extends FASTElement {
|
|
|
364
341
|
switch (key) {
|
|
365
342
|
case keyEscape:
|
|
366
343
|
e.preventDefault();
|
|
367
|
-
if (this.
|
|
344
|
+
if (this._open) {
|
|
368
345
|
this.closeMenu();
|
|
369
346
|
this.focusTrigger();
|
|
370
347
|
}
|
|
371
348
|
break;
|
|
372
349
|
case keyTab:
|
|
373
|
-
if (this.
|
|
350
|
+
if (this._open)
|
|
374
351
|
this.closeMenu();
|
|
375
|
-
|
|
376
|
-
if (e.shiftKey) {
|
|
352
|
+
if (e.shiftKey)
|
|
377
353
|
this.focusTrigger();
|
|
378
|
-
}
|
|
379
354
|
default:
|
|
380
355
|
return true;
|
|
381
356
|
}
|
|
@@ -397,10 +372,6 @@ __decorate([
|
|
|
397
372
|
observable,
|
|
398
373
|
attr({ attribute: 'persist-on-item-click', mode: 'boolean' })
|
|
399
374
|
], Menu.prototype, "persistOnItemClick", void 0);
|
|
400
|
-
__decorate([
|
|
401
|
-
observable,
|
|
402
|
-
attr({ mode: 'boolean' })
|
|
403
|
-
], Menu.prototype, "open", void 0);
|
|
404
375
|
__decorate([
|
|
405
376
|
observable
|
|
406
377
|
], Menu.prototype, "slottedMenuList", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../src/menu/menu.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../src/menu/menu.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,31 @@
|
|
|
1
1
|
import { css } from '@microsoft/fast-element';
|
|
2
|
+
import { display } from '../utils/index.js';
|
|
2
3
|
/** Menu styles
|
|
3
4
|
* @public
|
|
4
5
|
*/
|
|
5
6
|
export const styles = css `
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
${display('inline-block')}
|
|
8
|
+
|
|
9
|
+
::slotted([slot='trigger']) {
|
|
10
|
+
anchor-name: --menu-trigger;
|
|
9
11
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
|
|
13
|
+
::slotted([popover]) {
|
|
14
|
+
inset-area: block-end span-inline-end;
|
|
15
|
+
margin: 0;
|
|
16
|
+
max-height: var(--menu-max-height, auto);
|
|
17
|
+
position-anchor: --menu-trigger;
|
|
18
|
+
position-try-options: flip-block;
|
|
19
|
+
position: absolute;
|
|
20
|
+
z-index: 1;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
::slotted([popover]:popover-open) {
|
|
24
|
+
inset: unset;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
::slotted([popover]:not(:popover-open)) {
|
|
28
|
+
display: none;
|
|
15
29
|
}
|
|
16
30
|
`;
|
|
17
31
|
//# sourceMappingURL=menu.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.styles.js","sourceRoot":"","sources":["../../../src/menu/menu.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"menu.styles.js","sourceRoot":"","sources":["../../../src/menu/menu.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,OAAO,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuB1B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { elements, html,
|
|
1
|
+
import { elements, html, slotted } from '@microsoft/fast-element';
|
|
2
2
|
export function menuTemplate() {
|
|
3
3
|
return html `
|
|
4
4
|
<template
|
|
@@ -6,17 +6,10 @@ export function menuTemplate() {
|
|
|
6
6
|
?open-on-context="${x => x.openOnContext}"
|
|
7
7
|
?close-on-scroll="${x => x.closeOnScroll}"
|
|
8
8
|
?persist-on-item-click="${x => x.persistOnItemClick}"
|
|
9
|
-
@keydown="${(x, c) => x.
|
|
9
|
+
@keydown="${(x, c) => x.menuKeydownHandler(c.event)}"
|
|
10
10
|
>
|
|
11
11
|
<slot name="trigger" ${slotted({ property: 'slottedTriggers', filter: elements() })}></slot>
|
|
12
|
-
<
|
|
13
|
-
${ref('positioningContainer')}
|
|
14
|
-
part="positioning-container"
|
|
15
|
-
class="positioning-container"
|
|
16
|
-
?hidden="${x => !x.open}"
|
|
17
|
-
>
|
|
18
|
-
<slot ${slotted({ property: 'slottedMenuList', filter: elements() })}></slot>
|
|
19
|
-
</span>
|
|
12
|
+
<slot ${slotted({ property: 'slottedMenuList', filter: elements() })}></slot>
|
|
20
13
|
</template>
|
|
21
14
|
`;
|
|
22
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.template.js","sourceRoot":"","sources":["../../../src/menu/menu.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"menu.template.js","sourceRoot":"","sources":["../../../src/menu/menu.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,IAAI,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvF,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAG;;wBAEQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;0BAChB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;0BACpB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;gCACd,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB;kBACvC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAsB,CAAC;;6BAE7C,OAAO,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;cAC3E,OAAO,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;;GAEvE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAA8B,YAAY,EAAE,CAAC"}
|