@fluentui/web-components 3.0.0-beta.2 → 3.0.0-beta.3
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 +11 -2
- package/dist/dts/index.d.ts +1 -0
- package/dist/dts/menu/define.d.ts +1 -0
- package/dist/dts/menu/index.d.ts +4 -0
- package/dist/dts/menu/menu.d.ts +194 -0
- package/dist/dts/menu/menu.definition.d.ts +9 -0
- package/dist/dts/menu/menu.styles.d.ts +4 -0
- package/dist/dts/menu/menu.template.d.ts +4 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/menu/define.js +4 -0
- package/dist/esm/menu/define.js.map +1 -0
- package/dist/esm/menu/index.js +5 -0
- package/dist/esm/menu/index.js.map +1 -0
- package/dist/esm/menu/menu.definition.js +17 -0
- package/dist/esm/menu/menu.definition.js.map +1 -0
- package/dist/esm/menu/menu.js +413 -0
- package/dist/esm/menu/menu.js.map +1 -0
- package/dist/esm/menu/menu.styles.js +17 -0
- package/dist/esm/menu/menu.styles.js.map +1 -0
- package/dist/esm/menu/menu.template.js +24 -0
- package/dist/esm/menu/menu.template.js.map +1 -0
- package/dist/fluent-web-components.api.json +1081 -0
- package/dist/storybook/{651.e36cf1e8.iframe.bundle.js → 677.939f187f.iframe.bundle.js} +5 -5
- package/dist/storybook/{651.e36cf1e8.iframe.bundle.js.map → 677.939f187f.iframe.bundle.js.map} +1 -1
- package/dist/storybook/iframe.html +1 -1
- package/dist/storybook/main.b782e9fb.iframe.bundle.js +2 -0
- package/dist/storybook/main.b782e9fb.iframe.bundle.js.LICENSE.txt +1 -0
- package/dist/storybook/project.json +1 -1
- package/dist/web-components.d.ts +209 -0
- package/dist/web-components.js +558 -222
- package/dist/web-components.min.js +67 -66
- package/docs/api-report.md +40 -0
- package/package.json +5 -1
- package/dist/storybook/main.696937e6.iframe.bundle.js +0 -1
- /package/dist/storybook/{651.e36cf1e8.iframe.bundle.js.LICENSE.txt → 677.939f187f.iframe.bundle.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { attr, FASTElement, observable, Updates } from '@microsoft/fast-element';
|
|
8
|
+
import { autoUpdate, computePosition, flip, hide, size } from '@floating-ui/dom';
|
|
9
|
+
import { keyEnter, keyEscape, keySpace, keyTab } from '@microsoft/fast-web-utilities';
|
|
10
|
+
/**
|
|
11
|
+
* The Menu class represents a menu component.
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export class Menu extends FASTElement {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
/**
|
|
18
|
+
* Determines if the menu should open on hover.
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
this.openOnHover = false;
|
|
22
|
+
/**
|
|
23
|
+
* Determines if the menu should open on right click.
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
this.openOnContext = false;
|
|
27
|
+
/**
|
|
28
|
+
* Determines if the menu should close on scroll.
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
this.closeOnScroll = false;
|
|
32
|
+
/**
|
|
33
|
+
* Determines if the menu open state should persis on click of menu item
|
|
34
|
+
* @public
|
|
35
|
+
*/
|
|
36
|
+
this.persistOnItemClick = false;
|
|
37
|
+
/**
|
|
38
|
+
* Defines whether the menu is open or not.
|
|
39
|
+
* @public
|
|
40
|
+
*/
|
|
41
|
+
this.open = false;
|
|
42
|
+
/**
|
|
43
|
+
* Holds the slotted menu list.
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
this.slottedMenuList = [];
|
|
47
|
+
/**
|
|
48
|
+
* Holds the slotted triggers.
|
|
49
|
+
* @public
|
|
50
|
+
*/
|
|
51
|
+
this.slottedTriggers = [];
|
|
52
|
+
/**
|
|
53
|
+
* Toggles the open state of the menu.
|
|
54
|
+
* @public
|
|
55
|
+
*/
|
|
56
|
+
this.toggleMenu = () => {
|
|
57
|
+
if (this.open) {
|
|
58
|
+
this.closeMenu();
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.openMenu();
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Closes the menu.
|
|
66
|
+
* @public
|
|
67
|
+
*/
|
|
68
|
+
this.closeMenu = () => {
|
|
69
|
+
this.open = false;
|
|
70
|
+
if (this.closeOnScroll) {
|
|
71
|
+
document.removeEventListener('scroll', this.closeMenu);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Opens the menu.
|
|
76
|
+
* @public
|
|
77
|
+
*/
|
|
78
|
+
this.openMenu = (e) => {
|
|
79
|
+
this.open = true;
|
|
80
|
+
if (e && this.openOnContext) {
|
|
81
|
+
e.preventDefault();
|
|
82
|
+
}
|
|
83
|
+
if (this.closeOnScroll) {
|
|
84
|
+
document.addEventListener('scroll', this.closeMenu);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* The task to set the positioning of the menu.
|
|
89
|
+
* @protected
|
|
90
|
+
*/
|
|
91
|
+
this.setPositioningTask = () => {
|
|
92
|
+
this.setPositioning();
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Handles keyboard interaction for the trigger.
|
|
96
|
+
* Toggles the menu when the Space or Enter key is pressed.
|
|
97
|
+
* If the menu is open, focuses on the menu list.
|
|
98
|
+
* @public
|
|
99
|
+
* @param {KeyboardEvent} e - the keyboard event
|
|
100
|
+
*/
|
|
101
|
+
this.handleTriggerKeydown = (e) => {
|
|
102
|
+
if (e.defaultPrevented) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const key = e.key;
|
|
106
|
+
switch (key) {
|
|
107
|
+
case keySpace:
|
|
108
|
+
case keyEnter:
|
|
109
|
+
e.preventDefault();
|
|
110
|
+
this.toggleMenu();
|
|
111
|
+
if (this.open) {
|
|
112
|
+
this.focusMenuList();
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
default:
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Handles document click events to close the menu when a click occurs outside of the menu or the trigger.
|
|
121
|
+
* @private
|
|
122
|
+
* @param {Event} e - The event triggered on document click.
|
|
123
|
+
*/
|
|
124
|
+
this.handleDocumentClick = (e) => {
|
|
125
|
+
if (e && !e.composedPath().includes(this._menuList) && !e.composedPath().includes(this._trigger)) {
|
|
126
|
+
this.closeMenu();
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Called when the element is connected to the DOM.
|
|
132
|
+
* Sets up the component.
|
|
133
|
+
* @public
|
|
134
|
+
*/
|
|
135
|
+
connectedCallback() {
|
|
136
|
+
super.connectedCallback();
|
|
137
|
+
Updates.enqueue(() => this.setComponent());
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Called when the element is disconnected from the DOM.
|
|
141
|
+
* Removes event listeners.
|
|
142
|
+
* @public
|
|
143
|
+
*/
|
|
144
|
+
disconnectedCallback() {
|
|
145
|
+
var _a;
|
|
146
|
+
super.disconnectedCallback();
|
|
147
|
+
(_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
148
|
+
this.removeListeners();
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Sets the component.
|
|
152
|
+
* Sets the trigger and menu list elements and adds event listeners.
|
|
153
|
+
* @public
|
|
154
|
+
*/
|
|
155
|
+
setComponent() {
|
|
156
|
+
if (this.$fastController.isConnected && this.slottedMenuList.length && this.slottedTriggers.length) {
|
|
157
|
+
this._trigger = this.slottedTriggers[0];
|
|
158
|
+
this._menuList = this.slottedMenuList[0];
|
|
159
|
+
this._trigger.setAttribute('aria-haspopup', 'true');
|
|
160
|
+
this._trigger.setAttribute('aria-expanded', `${this.open}`);
|
|
161
|
+
this.addListeners();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Focuses on the menu list.
|
|
166
|
+
* @public
|
|
167
|
+
*/
|
|
168
|
+
focusMenuList() {
|
|
169
|
+
if (this.open && this._menuList) {
|
|
170
|
+
Updates.enqueue(() => {
|
|
171
|
+
this._menuList.focus();
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Focuses on the menu trigger.
|
|
177
|
+
* @public
|
|
178
|
+
*/
|
|
179
|
+
focusTrigger() {
|
|
180
|
+
if (!this.open && this._trigger) {
|
|
181
|
+
Updates.enqueue(() => {
|
|
182
|
+
this._trigger.focus();
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Called whenever the open state changes.
|
|
188
|
+
* Updates the 'aria-expanded' attribute and sets the positioning of the menu.
|
|
189
|
+
* Sets menu list position
|
|
190
|
+
* emits openChanged event
|
|
191
|
+
* @public
|
|
192
|
+
* @param {boolean} oldValue - The previous value of 'open'.
|
|
193
|
+
* @param {boolean} newValue - The new value of 'open'.
|
|
194
|
+
*/
|
|
195
|
+
openChanged(oldValue, newValue) {
|
|
196
|
+
var _a;
|
|
197
|
+
if (this.$fastController.isConnected && this._trigger instanceof HTMLElement) {
|
|
198
|
+
this._trigger.setAttribute('aria-expanded', `${this.open}`);
|
|
199
|
+
if (this._menuList && this.open) {
|
|
200
|
+
Updates.enqueue(this.setPositioningTask);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
(_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
204
|
+
this.$emit('onOpenChange', { open: newValue });
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Called whenever the 'openOnHover' property changes.
|
|
208
|
+
* Adds or removes a 'mouseover' event listener to the trigger based on the new value.
|
|
209
|
+
* @public
|
|
210
|
+
* @param {boolean} oldValue - The previous value of 'openOnHover'.
|
|
211
|
+
* @param {boolean} newValue - The new value of 'openOnHover'.
|
|
212
|
+
*/
|
|
213
|
+
openOnHoverChanged(oldValue, newValue) {
|
|
214
|
+
var _a, _b;
|
|
215
|
+
if (newValue) {
|
|
216
|
+
(_a = this._trigger) === null || _a === void 0 ? void 0 : _a.addEventListener('mouseover', this.openMenu);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
(_b = this._trigger) === null || _b === void 0 ? void 0 : _b.removeEventListener('mouseover', this.openMenu);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Called whenever the 'persistOnItemClick' property changes.
|
|
224
|
+
* Adds or removes a 'click' event listener to the menu list based on the new value.
|
|
225
|
+
* @public
|
|
226
|
+
* @param {boolean} oldValue - The previous value of 'persistOnItemClick'.
|
|
227
|
+
* @param {boolean} newValue - The new value of 'persistOnItemClick'.
|
|
228
|
+
*/
|
|
229
|
+
persistOnItemClickChanged(oldValue, newValue) {
|
|
230
|
+
var _a, _b;
|
|
231
|
+
if (!newValue) {
|
|
232
|
+
(_a = this._menuList) === null || _a === void 0 ? void 0 : _a.addEventListener('click', this.closeMenu);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
(_b = this._menuList) === null || _b === void 0 ? void 0 : _b.removeEventListener('click', this.closeMenu);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Called whenever the 'openOnContext' property changes.
|
|
240
|
+
* Adds or removes a 'contextmenu' event listener to the trigger based on the new value.
|
|
241
|
+
* @public
|
|
242
|
+
* @param {boolean} oldValue - The previous value of 'openOnContext'.
|
|
243
|
+
* @param {boolean} newValue - The new value of 'openOnContext'.
|
|
244
|
+
*/
|
|
245
|
+
openOnContextChanged(oldValue, newValue) {
|
|
246
|
+
var _a, _b;
|
|
247
|
+
if (newValue) {
|
|
248
|
+
(_a = this._trigger) === null || _a === void 0 ? void 0 : _a.addEventListener('contextmenu', this.openMenu);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
(_b = this._trigger) === null || _b === void 0 ? void 0 : _b.removeEventListener('contextmenu', this.openMenu);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Called whenever the 'closeOnScroll' property changes.
|
|
256
|
+
* Adds or removes a 'closeOnScroll' event listener to the trigger based on the new value.
|
|
257
|
+
* @public
|
|
258
|
+
* @param {boolean} oldValue - The previous value of 'closeOnScroll'.
|
|
259
|
+
* @param {boolean} newValue - The new value of 'closeOnScroll'.
|
|
260
|
+
*/
|
|
261
|
+
closeOnScrollChanged(oldValue, newValue) {
|
|
262
|
+
if (newValue) {
|
|
263
|
+
document.addEventListener('scroll', this.closeMenu);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
document.removeEventListener('scroll', this.closeMenu);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Sets the positioning of the menu.
|
|
271
|
+
* @protected
|
|
272
|
+
*/
|
|
273
|
+
setPositioning() {
|
|
274
|
+
if (this.$fastController.isConnected && this._menuList && this.open && this._trigger) {
|
|
275
|
+
this.cleanup = autoUpdate(this, this.positioningContainer, async () => {
|
|
276
|
+
var _a, _b;
|
|
277
|
+
const { middlewareData, x, y } = await computePosition(this._trigger, this.positioningContainer, {
|
|
278
|
+
placement: 'bottom',
|
|
279
|
+
strategy: 'fixed',
|
|
280
|
+
middleware: [
|
|
281
|
+
flip(),
|
|
282
|
+
size({
|
|
283
|
+
apply: ({ availableHeight, rects }) => {
|
|
284
|
+
var _a;
|
|
285
|
+
((_a = this.positioningContainer) === null || _a === void 0 ? void 0 : _a.style) &&
|
|
286
|
+
Object.assign(this.positioningContainer.style, {
|
|
287
|
+
maxHeight: `${availableHeight}px`,
|
|
288
|
+
width: `${rects.reference.width}px`,
|
|
289
|
+
});
|
|
290
|
+
},
|
|
291
|
+
}),
|
|
292
|
+
hide(),
|
|
293
|
+
],
|
|
294
|
+
});
|
|
295
|
+
if ((_a = middlewareData.hide) === null || _a === void 0 ? void 0 : _a.referenceHidden) {
|
|
296
|
+
this.open = false;
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
((_b = this.positioningContainer) === null || _b === void 0 ? void 0 : _b.style) &&
|
|
300
|
+
Object.assign(this.positioningContainer.style, {
|
|
301
|
+
position: 'fixed',
|
|
302
|
+
top: '0',
|
|
303
|
+
left: '0',
|
|
304
|
+
transform: `translate(${x}px, ${y}px)`,
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Adds event listeners.
|
|
311
|
+
* Adds click and keydown event listeners to the trigger and a click event listener to the document.
|
|
312
|
+
* If 'openOnHover' is true, adds a 'mouseover' event listener to the trigger.
|
|
313
|
+
* @public
|
|
314
|
+
*/
|
|
315
|
+
addListeners() {
|
|
316
|
+
var _a, _b, _c, _d, _e;
|
|
317
|
+
document.addEventListener('click', this.handleDocumentClick);
|
|
318
|
+
(_a = this._trigger) === null || _a === void 0 ? void 0 : _a.addEventListener('keydown', this.handleTriggerKeydown);
|
|
319
|
+
if (!this.persistOnItemClick) {
|
|
320
|
+
(_b = this._menuList) === null || _b === void 0 ? void 0 : _b.addEventListener('click', this.closeMenu);
|
|
321
|
+
}
|
|
322
|
+
if (this.openOnHover) {
|
|
323
|
+
(_c = this._trigger) === null || _c === void 0 ? void 0 : _c.addEventListener('mouseover', this.openMenu);
|
|
324
|
+
}
|
|
325
|
+
else if (this.openOnContext) {
|
|
326
|
+
(_d = this._trigger) === null || _d === void 0 ? void 0 : _d.addEventListener('contextmenu', this.openMenu);
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
(_e = this._trigger) === null || _e === void 0 ? void 0 : _e.addEventListener('click', this.toggleMenu);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Removes event listeners.
|
|
334
|
+
* Removes click and keydown event listeners from the trigger and a click event listener from the document.
|
|
335
|
+
* Also removes 'mouseover' event listeners from the trigger.
|
|
336
|
+
* @private
|
|
337
|
+
*/
|
|
338
|
+
removeListeners() {
|
|
339
|
+
var _a, _b, _c, _d, _e;
|
|
340
|
+
document.removeEventListener('click', this.handleDocumentClick);
|
|
341
|
+
(_a = this._trigger) === null || _a === void 0 ? void 0 : _a.removeEventListener('keydown', this.handleTriggerKeydown);
|
|
342
|
+
if (!this.persistOnItemClick) {
|
|
343
|
+
(_b = this._menuList) === null || _b === void 0 ? void 0 : _b.removeEventListener('click', this.closeMenu);
|
|
344
|
+
}
|
|
345
|
+
if (this.openOnHover) {
|
|
346
|
+
(_c = this._trigger) === null || _c === void 0 ? void 0 : _c.removeEventListener('mouseover', this.openMenu);
|
|
347
|
+
}
|
|
348
|
+
if (this.openOnContext) {
|
|
349
|
+
(_d = this._trigger) === null || _d === void 0 ? void 0 : _d.removeEventListener('contextmenu', this.openMenu);
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
(_e = this._trigger) === null || _e === void 0 ? void 0 : _e.removeEventListener('click', this.toggleMenu);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Handles keyboard interaction for the menu.
|
|
357
|
+
* Closes the menu and focuses on the trigger when the Escape key is pressed.
|
|
358
|
+
* Closes the menu when the Tab key is pressed.
|
|
359
|
+
* @public
|
|
360
|
+
* @param {KeyboardEvent} e - the keyboard event
|
|
361
|
+
*/
|
|
362
|
+
handleMenuKeydown(e) {
|
|
363
|
+
if (e.defaultPrevented) {
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
const key = e.key;
|
|
367
|
+
switch (key) {
|
|
368
|
+
case keyEscape:
|
|
369
|
+
e.preventDefault();
|
|
370
|
+
if (this.open) {
|
|
371
|
+
this.closeMenu();
|
|
372
|
+
this.focusTrigger();
|
|
373
|
+
}
|
|
374
|
+
break;
|
|
375
|
+
case keyTab:
|
|
376
|
+
if (this.open) {
|
|
377
|
+
this.closeMenu();
|
|
378
|
+
}
|
|
379
|
+
if (e.shiftKey) {
|
|
380
|
+
this.focusTrigger();
|
|
381
|
+
}
|
|
382
|
+
default:
|
|
383
|
+
return true;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
__decorate([
|
|
388
|
+
observable,
|
|
389
|
+
attr({ attribute: 'open-on-hover', mode: 'boolean' })
|
|
390
|
+
], Menu.prototype, "openOnHover", void 0);
|
|
391
|
+
__decorate([
|
|
392
|
+
observable,
|
|
393
|
+
attr({ attribute: 'open-on-context', mode: 'boolean' })
|
|
394
|
+
], Menu.prototype, "openOnContext", void 0);
|
|
395
|
+
__decorate([
|
|
396
|
+
observable,
|
|
397
|
+
attr({ attribute: 'close-on-scroll', mode: 'boolean' })
|
|
398
|
+
], Menu.prototype, "closeOnScroll", void 0);
|
|
399
|
+
__decorate([
|
|
400
|
+
observable,
|
|
401
|
+
attr({ attribute: 'persist-on-item-click', mode: 'boolean' })
|
|
402
|
+
], Menu.prototype, "persistOnItemClick", void 0);
|
|
403
|
+
__decorate([
|
|
404
|
+
observable,
|
|
405
|
+
attr({ mode: 'boolean' })
|
|
406
|
+
], Menu.prototype, "open", void 0);
|
|
407
|
+
__decorate([
|
|
408
|
+
observable
|
|
409
|
+
], Menu.prototype, "slottedMenuList", void 0);
|
|
410
|
+
__decorate([
|
|
411
|
+
observable
|
|
412
|
+
], Menu.prototype, "slottedTriggers", void 0);
|
|
413
|
+
//# sourceMappingURL=menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../src/menu/menu.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { css } from '@microsoft/fast-element';
|
|
2
|
+
/** Menu styles
|
|
3
|
+
* @public
|
|
4
|
+
*/
|
|
5
|
+
export const styles = css `
|
|
6
|
+
:host {
|
|
7
|
+
position: relative;
|
|
8
|
+
z-index: var(--z-index-menu, 1);
|
|
9
|
+
}
|
|
10
|
+
.positioning-container {
|
|
11
|
+
position: fixed;
|
|
12
|
+
top: 0;
|
|
13
|
+
left: 0;
|
|
14
|
+
transform: translate(0, 0);
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
//# sourceMappingURL=menu.styles.js.map
|
|
@@ -0,0 +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;AAG9C;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;CAWxB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { elements, html, ref, slotted } from '@microsoft/fast-element';
|
|
2
|
+
export function menuTemplate() {
|
|
3
|
+
return html `
|
|
4
|
+
<template
|
|
5
|
+
?open-on-hover="${x => x.openOnHover}"
|
|
6
|
+
?open-on-context="${x => x.openOnContext}"
|
|
7
|
+
?close-on-scroll="${x => x.closeOnScroll}"
|
|
8
|
+
?persist-on-item-click="${x => x.persistOnItemClick}"
|
|
9
|
+
@keydown="${(x, c) => x.handleMenuKeydown(c.event)}"
|
|
10
|
+
>
|
|
11
|
+
<slot name="trigger" ${slotted({ property: 'slottedTriggers', filter: elements() })}></slot>
|
|
12
|
+
<span
|
|
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>
|
|
20
|
+
</template>
|
|
21
|
+
`;
|
|
22
|
+
}
|
|
23
|
+
export const template = menuTemplate();
|
|
24
|
+
//# sourceMappingURL=menu.template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.template.js","sourceRoot":"","sources":["../../../src/menu/menu.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAG5F,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,iBAAiB,CAAC,CAAC,CAAC,KAAsB,CAAC;;6BAE5C,OAAO,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;;UAE/E,GAAG,CAAC,sBAAsB,CAAC;;;mBAGlB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;;gBAEf,OAAO,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;;;GAGzE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAA8B,YAAY,EAAE,CAAC"}
|