@fluentui/web-components 3.0.0-beta.32 → 3.0.0-beta.34

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.
@@ -1,7 +1,6 @@
1
1
  import { __decorate } from "tslib";
2
- import { autoUpdate, computePosition, flip, shift, size } from '@floating-ui/dom';
3
- import { attr, FASTElement, observable, Updates } from '@microsoft/fast-element';
4
- import { keyArrowLeft, keyArrowRight, keyEnter, keyEscape, keySpace } from '@microsoft/fast-web-utilities';
2
+ import { attr, FASTElement, observable } from '@microsoft/fast-element';
3
+ import { keyArrowLeft, keyArrowRight, keyEnter, keySpace } from '@microsoft/fast-web-utilities';
5
4
  import { StartEnd } from '../patterns/start-end.js';
6
5
  import { applyMixins } from '../utils/apply-mixins.js';
7
6
  import { MenuItemRole, roleForMenuItem } from './menu-item.options.js';
@@ -10,21 +9,13 @@ export { MenuItemRole, roleForMenuItem };
10
9
  * A Switch Custom HTML Element.
11
10
  * Implements {@link https://www.w3.org/TR/wai-aria-1.1/#menuitem | ARIA menuitem }, {@link https://www.w3.org/TR/wai-aria-1.1/#menuitemcheckbox | ARIA menuitemcheckbox}, or {@link https://www.w3.org/TR/wai-aria-1.1/#menuitemradio | ARIA menuitemradio }.
12
11
  *
13
- * @slot checked-indicator - The checked indicator
14
- * @slot radio-indicator - The radio indicator
12
+ * @slot indicator - The checkbox or radio indicator
15
13
  * @slot start - Content which can be provided before the menu item content
16
- * @slot end - Content which can be provided after the menu item content
17
14
  * @slot - The default slot for menu item content
18
- * @slot expand-collapse-indicator - The expand/collapse indicator
15
+ * @slot end - Content which can be provided after the menu item content
16
+ * @slot submenu-glyph - The submenu expand/collapse indicator
19
17
  * @slot submenu - Used to nest menu's within menu items
20
- * @csspart input-container - The element representing the visual checked or radio indicator
21
- * @csspart checkbox - The element wrapping the `menuitemcheckbox` indicator
22
- * @csspart radio - The element wrapping the `menuitemradio` indicator
23
18
  * @csspart content - The element wrapping the menu item content
24
- * @csspart expand-collapse-glyph-container - The element wrapping the expand collapse element
25
- * @csspart expand-collapse - The expand/collapse element
26
- * @csspart submenu-region - The container for the submenu, used for positioning
27
- * @fires expanded-change - Fires a custom 'expanded-change' event when the expanded state changes
28
19
  * @fires change - Fires a custom 'change' event when a non-submenu item with a role of `menuitemcheckbox`, `menuitemradio`, or `menuitem` is invoked
29
20
  *
30
21
  * @public
@@ -48,11 +39,11 @@ export class MenuItem extends FASTElement {
48
39
  * HTML Attribute: checked
49
40
  */
50
41
  this.checked = false;
51
- this.focusSubmenuOnLoad = false;
52
42
  /**
53
43
  * @internal
54
44
  */
55
45
  this.handleMenuItemKeyDown = (e) => {
46
+ var _a, _b, _c;
56
47
  if (e.defaultPrevented) {
57
48
  return false;
58
49
  }
@@ -63,21 +54,17 @@ export class MenuItem extends FASTElement {
63
54
  return false;
64
55
  case keyArrowRight:
65
56
  //open/focus on submenu
66
- this.expanded && this.submenu ? this.submenu.focus() : this.expandAndFocus();
67
- return false;
68
- case keyEscape:
69
- // close submenu
70
- if (this.expanded) {
71
- this.closeSubMenu();
72
- return false;
57
+ if (!this.disabled) {
58
+ (_a = this.submenu) === null || _a === void 0 ? void 0 : _a.togglePopover(true);
59
+ (_b = this.submenu) === null || _b === void 0 ? void 0 : _b.focus();
73
60
  }
74
- break;
61
+ return false;
75
62
  case keyArrowLeft:
76
63
  //close submenu
77
- if (this.expanded) {
78
- this.closeSubMenu();
79
- return false;
64
+ if ((_c = this.parentElement) === null || _c === void 0 ? void 0 : _c.hasAttribute('popover')) {
65
+ this.parentElement.togglePopover(false);
80
66
  }
67
+ return false;
81
68
  }
82
69
  return true;
83
70
  };
@@ -91,56 +78,42 @@ export class MenuItem extends FASTElement {
91
78
  this.invoke();
92
79
  return false;
93
80
  };
94
- /**
95
- * @internal
96
- */
97
- this.submenuLoaded = () => {
98
- if (!this.focusSubmenuOnLoad) {
99
- return;
100
- }
101
- this.focusSubmenuOnLoad = false;
102
- if (this.submenu) {
103
- this.submenu.focus();
104
- this.setAttribute('tabindex', '-1');
105
- }
106
- };
107
81
  /**
108
82
  * @internal
109
83
  */
110
84
  this.handleMouseOver = (e) => {
111
- if (this.disabled || !this.hasSubmenu || this.expanded) {
85
+ var _a;
86
+ if (this.disabled) {
112
87
  return false;
113
88
  }
114
- this.expanded = true;
89
+ (_a = this.submenu) === null || _a === void 0 ? void 0 : _a.togglePopover(true);
115
90
  return false;
116
91
  };
117
92
  /**
118
93
  * @internal
119
94
  */
120
95
  this.handleMouseOut = (e) => {
121
- if (!this.expanded || this.contains(document.activeElement)) {
96
+ var _a;
97
+ if (this.contains(document.activeElement)) {
122
98
  return false;
123
99
  }
124
- this.expanded = false;
100
+ (_a = this.submenu) === null || _a === void 0 ? void 0 : _a.togglePopover(false);
125
101
  return false;
126
102
  };
127
103
  /**
104
+ * Setup required ARIA on open/close
128
105
  * @internal
129
106
  */
130
- this.closeSubMenu = () => {
131
- // close submenu
132
- this.expanded = false;
133
- this.focus();
134
- };
135
- /**
136
- * @internal
137
- */
138
- this.expandAndFocus = () => {
139
- if (!this.hasSubmenu) {
140
- return;
107
+ this.toggleHandler = (e) => {
108
+ if (e instanceof ToggleEvent && e.newState === 'open') {
109
+ this.setAttribute('tabindex', '-1');
110
+ this.setAttribute('aria-expanded', 'true');
111
+ this.setSubmenuPosition();
112
+ }
113
+ if (e instanceof ToggleEvent && e.newState === 'closed') {
114
+ this.setAttribute('aria-expanded', 'false');
115
+ this.setAttribute('tabindex', '0');
141
116
  }
142
- this.focusSubmenuOnLoad = true;
143
- this.expanded = true;
144
117
  };
145
118
  /**
146
119
  * @internal
@@ -154,8 +127,9 @@ export class MenuItem extends FASTElement {
154
127
  this.checked = !this.checked;
155
128
  break;
156
129
  case MenuItemRole.menuitem:
157
- if (this.hasSubmenu) {
158
- this.expandAndFocus();
130
+ if (!!this.submenu) {
131
+ this.submenu.togglePopover(true);
132
+ this.submenu.focus();
159
133
  break;
160
134
  }
161
135
  this.$emit('change');
@@ -167,90 +141,54 @@ export class MenuItem extends FASTElement {
167
141
  break;
168
142
  }
169
143
  };
170
- }
171
- expandedChanged(prev, next) {
172
- if (this.$fastController.isConnected) {
173
- if (next && this.submenu) {
174
- this.updateSubmenu();
144
+ /**
145
+ * Set fallback position of menu on open when CSS anchor not supported
146
+ * @internal
147
+ */
148
+ this.setSubmenuPosition = () => {
149
+ if (!CSS.supports('anchor-name', '--anchor') && !!this.submenu) {
150
+ const thisRect = this.getBoundingClientRect();
151
+ const thisSubmenuRect = this.submenu.getBoundingClientRect();
152
+ const inlineEnd = getComputedStyle(this).direction === 'ltr' ? 'right' : 'left';
153
+ // If an open submenu is too wide for the viewport, move it above.
154
+ if (thisRect.width + thisSubmenuRect.width > window.innerWidth * 0.75) {
155
+ this.submenu.style.translate = '0 -100%';
156
+ return;
157
+ }
158
+ // If the open submenu is overflows the inline-end of the window (e.g. justify-content: end),
159
+ // move to inline-start of menu item
160
+ if (thisRect[inlineEnd] + thisSubmenuRect.width > window.innerWidth) {
161
+ this.submenu.style.translate = '-100% 0';
162
+ return;
163
+ }
164
+ // Default to inline-end of menu item
165
+ this.submenu.style.translate = `${thisRect.width - 8}px 0`;
175
166
  }
176
- this.$emit('expanded-change', this, { bubbles: false });
177
- }
167
+ };
178
168
  }
179
169
  checkedChanged(oldValue, newValue) {
180
170
  if (this.$fastController.isConnected) {
181
171
  this.$emit('change');
182
172
  }
183
173
  }
184
- /**
185
- * @internal
186
- */
187
- get hasSubmenu() {
188
- return !!this.submenu;
189
- }
190
174
  /**
191
175
  * Sets the submenu and updates its position.
192
176
  *
193
177
  * @internal
194
178
  */
195
179
  slottedSubmenuChanged(prev, next) {
180
+ var _a;
181
+ (_a = this.submenu) === null || _a === void 0 ? void 0 : _a.removeEventListener('toggle', this.toggleHandler);
196
182
  if (next.length) {
197
183
  this.submenu = next[0];
198
- this.updateSubmenu();
184
+ this.submenu.toggleAttribute('popover', true);
185
+ this.submenu.addEventListener('toggle', this.toggleHandler);
199
186
  }
200
187
  }
201
- /**
202
- * @internal
203
- */
204
- disconnectedCallback() {
205
- var _a;
206
- (_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
207
- super.disconnectedCallback();
208
- }
209
- /**
210
- * Calculate and apply submenu positioning.
211
- *
212
- * @public
213
- */
214
- updateSubmenu() {
215
- var _a;
216
- (_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
217
- if (!this.submenu || !this.expanded) {
218
- return;
219
- }
220
- Updates.enqueue(() => {
221
- this.cleanup = autoUpdate(this, this.submenuContainer, async () => {
222
- const fallbackPlacements = ['left-start', 'right-start'];
223
- const { x, y } = await computePosition(this, this.submenuContainer, {
224
- middleware: [
225
- shift(),
226
- size({
227
- apply: ({ availableWidth, rects }) => {
228
- if (availableWidth < rects.floating.width) {
229
- fallbackPlacements.push('bottom-end', 'top-end');
230
- }
231
- },
232
- }),
233
- flip({ fallbackPlacements }),
234
- ],
235
- placement: 'right-start',
236
- strategy: 'fixed',
237
- });
238
- Object.assign(this.submenuContainer.style, {
239
- left: `${x}px`,
240
- position: 'fixed',
241
- top: `${y}px`,
242
- });
243
- this.submenuLoaded();
244
- });
245
- });
246
- }
247
188
  }
248
189
  __decorate([
249
190
  attr({ mode: 'boolean' })
250
191
  ], MenuItem.prototype, "disabled", void 0);
251
- __decorate([
252
- attr({ mode: 'boolean' })
253
- ], MenuItem.prototype, "expanded", void 0);
254
192
  __decorate([
255
193
  attr
256
194
  ], MenuItem.prototype, "role", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item.js","sourceRoot":"","sources":["../../../src/menu-item/menu-item.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAG3G,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIvE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAYzC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,QAAS,SAAQ,WAAW;IAAzC;;QA8BE;;;;;;WAMG;QAEI,SAAI,GAAiB,YAAY,CAAC,QAAQ,CAAC;QASlD;;;;;;WAMG;QAEI,YAAO,GAAY,KAAK,CAAC;QAyDxB,uBAAkB,GAAY,KAAK,CAAC;QAU5C;;WAEG;QACI,0BAAqB,GAAG,CAAC,CAAgB,EAAW,EAAE;YAC3D,IAAI,CAAC,CAAC,gBAAgB,EAAE;gBACtB,OAAO,KAAK,CAAC;aACd;YAED,QAAQ,CAAC,CAAC,GAAG,EAAE;gBACb,KAAK,QAAQ,CAAC;gBACd,KAAK,QAAQ;oBACX,IAAI,CAAC,MAAM,EAAE,CAAC;oBACd,OAAO,KAAK,CAAC;gBAEf,KAAK,aAAa;oBAChB,uBAAuB;oBACvB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC7E,OAAO,KAAK,CAAC;gBAEf,KAAK,SAAS;oBACZ,gBAAgB;oBAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,IAAI,CAAC,YAAY,EAAE,CAAC;wBACpB,OAAO,KAAK,CAAC;qBACd;oBACD,MAAM;gBAER,KAAK,YAAY;oBACf,eAAe;oBACf,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,IAAI,CAAC,YAAY,EAAE,CAAC;wBACpB,OAAO,KAAK,CAAC;qBACd;aACJ;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF;;WAEG;QACI,wBAAmB,GAAG,CAAC,CAAa,EAAW,EAAE;YACtD,IAAI,CAAC,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACvC,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF;;WAEG;QACI,kBAAa,GAAG,GAAS,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC5B,OAAO;aACR;YAED,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;aACrC;QACH,CAAC,CAAC;QAEF;;WAEG;QACI,oBAAe,GAAG,CAAC,CAAa,EAAW,EAAE;YAClD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACtD,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF;;WAEG;QACI,mBAAc,GAAG,CAAC,CAAa,EAAW,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;gBAC3D,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YAEtB,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF;;WAEG;QACK,iBAAY,GAAG,GAAS,EAAE;YAChC,gBAAgB;YAChB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC;QAEF;;WAEG;QACK,mBAAc,GAAG,GAAS,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO;aACR;YAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC;QAEF;;WAEG;QACK,WAAM,GAAG,GAAS,EAAE;YAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,OAAO;aACR;YAED,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACjB,KAAK,YAAY,CAAC,gBAAgB;oBAChC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC7B,MAAM;gBAER,KAAK,YAAY,CAAC,QAAQ;oBACxB,IAAI,IAAI,CAAC,UAAU,EAAE;wBACnB,IAAI,CAAC,cAAc,EAAE,CAAC;wBACtB,MAAM;qBACP;oBAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACrB,MAAM;gBAER,KAAK,YAAY,CAAC,aAAa;oBAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;wBACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;qBACrB;oBACD,MAAM;aACT;QACH,CAAC,CAAC;IA2CJ,CAAC;IA7RW,eAAe,CAAC,IAAyB,EAAE,IAAa;QAChE,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;YACpC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;gBACxB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;YAED,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;SACzD;IACH,CAAC;IA4BS,cAAc,CAAC,QAAiB,EAAE,QAAiB;QAC3D,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;YACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACtB;IACH,CAAC;IAoBD;;OAEG;IACH,IAAW,UAAU;QACnB,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACO,qBAAqB,CAAC,IAA+B,EAAE,IAAmB;QAClF,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;IACH,CAAC;IAiBD;;OAEG;IACI,oBAAoB;;QACzB,MAAA,IAAI,CAAC,OAAO,oDAAI,CAAC;QACjB,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAC/B,CAAC;IAgJD;;;;OAIG;IACI,aAAa;;QAClB,MAAA,IAAI,CAAC,OAAO,oDAAI,CAAC;QAEjB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnC,OAAO;SACR;QAED,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YACnB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAChE,MAAM,kBAAkB,GAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;gBACtE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE;oBAClE,UAAU,EAAE;wBACV,KAAK,EAAE;wBACP,IAAI,CAAC;4BACH,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE;gCACnC,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;oCACzC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;iCAClD;4BACH,CAAC;yBACF,CAAC;wBACF,IAAI,CAAC,EAAE,kBAAkB,EAAE,CAAC;qBAC7B;oBACD,SAAS,EAAE,aAAa;oBACxB,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;oBACzC,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,QAAQ,EAAE,OAAO;oBACjB,GAAG,EAAE,GAAG,CAAC,IAAI;iBACd,CAAC,CAAC;gBAEH,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAxSC;IADC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;0CACA;AAU1B;IADC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;0CACA;AAmB1B;IADC,IAAI;sCAC6C;AAiBlD;IADC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;yCACM;AAehC;IADC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;wCACF;AAQxB;IADC,UAAU;gDAC2B;AAgCtC;IADC,UAAU;yCAC6B;AA6M1C,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"menu-item.js","sourceRoot":"","sources":["../../../src/menu-item/menu-item.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { css } from '@microsoft/fast-element';
2
- import { display } from '../utils/index.js';
3
- import { borderRadiusMedium, colorCompoundBrandForeground1Hover, colorCompoundBrandForeground1Pressed, colorNeutralBackground1, colorNeutralBackground1Hover, colorNeutralBackground1Selected, colorNeutralBackgroundDisabled, colorNeutralForeground2, colorNeutralForeground2Hover, colorNeutralForeground2Pressed, colorNeutralForeground3, colorNeutralForegroundDisabled, fontFamilyBase, fontSizeBase200, fontSizeBase300, fontSizeBase500, fontWeightRegular, lineHeightBase200, lineHeightBase300, } from '../theme/design-tokens.js';
2
+ import { display, forcedColorsStylesheetBehavior } from '../utils/index.js';
3
+ import { borderRadiusMedium, colorCompoundBrandForeground1Hover, colorCompoundBrandForeground1Pressed, colorNeutralBackground1, colorNeutralBackground1Hover, colorNeutralBackground1Selected, colorNeutralBackgroundDisabled, colorNeutralForeground2, colorNeutralForeground2Hover, colorNeutralForeground2Pressed, colorNeutralForeground3, colorNeutralForegroundDisabled, colorStrokeFocus2, fontFamilyBase, fontSizeBase200, fontSizeBase300, fontWeightRegular, lineHeightBase200, lineHeightBase300, } from '../theme/design-tokens.js';
4
4
  /** MenuItem styles
5
5
  * @public
6
6
  */
@@ -8,76 +8,25 @@ export const styles = css `
8
8
  ${display('grid')}
9
9
 
10
10
  :host {
11
- grid-template-columns: 20px 20px auto 20px;
11
+ --indent: 0;
12
12
  align-items: center;
13
- grid-gap: 4px;
14
- height: 32px;
15
13
  background: ${colorNeutralBackground1};
16
- font: ${fontWeightRegular} ${fontSizeBase300} / ${lineHeightBase300} ${fontFamilyBase};
17
14
  border-radius: ${borderRadiusMedium};
18
15
  color: ${colorNeutralForeground2};
19
- padding: 0 10px;
16
+ contain: layout;
20
17
  cursor: pointer;
18
+ /* Prevent shrinking of MenuItems when max-height is applied to MenuList */
19
+ flex-shrink: 0;
20
+ font: ${fontWeightRegular} ${fontSizeBase300} / ${lineHeightBase300} ${fontFamilyBase};
21
+ grid-gap: 4px;
22
+ grid-template-columns: 20px 20px auto 20px;
23
+ height: 32px;
21
24
  overflow: visible;
22
- contain: layout;
25
+ padding: 0 10px;
23
26
  }
24
27
 
25
28
  :host(:hover) {
26
29
  background: ${colorNeutralBackground1Hover};
27
- }
28
-
29
- .content {
30
- white-space: nowrap;
31
- flex-grow: 1;
32
- grid-column: auto / span 2;
33
- padding: 0 2px;
34
- }
35
-
36
- .checkbox,
37
- .radio {
38
- display: none;
39
- }
40
-
41
- .input-container,
42
- .expand-collapse-glyph-container,
43
- ::slotted([slot='start']),
44
- ::slotted([slot='end']),
45
- :host([checked]) .checkbox,
46
- :host([checked]) .radio {
47
- display: inline-flex;
48
- justify-content: center;
49
- align-items: center;
50
- color: ${colorNeutralForeground2};
51
- }
52
-
53
- .expand-collapse-glyph-container,
54
- ::slotted([slot='start']),
55
- ::slotted([slot='end']) {
56
- height: 32px;
57
- font-size: ${fontSizeBase500};
58
- width: fit-content;
59
- }
60
-
61
- .input-container {
62
- width: 20px;
63
- }
64
-
65
- ::slotted([slot='end']) {
66
- color: ${colorNeutralForeground3};
67
- font: ${fontWeightRegular} ${fontSizeBase200} / ${lineHeightBase200} ${fontFamilyBase};
68
- white-space: nowrap;
69
- grid-column: 4 / span 1;
70
- justify-self: flex-end;
71
- }
72
-
73
- .expand-collapse-glyph-container {
74
- grid-column: 4 / span 1;
75
- justify-self: flex-end;
76
- }
77
-
78
- :host(:hover) .input-container,
79
- :host(:hover) .expand-collapse-glyph-container,
80
- :host(:hover) .content {
81
30
  color: ${colorNeutralForeground2Hover};
82
31
  }
83
32
 
@@ -87,11 +36,6 @@ export const styles = css `
87
36
 
88
37
  :host(:active) {
89
38
  background-color: ${colorNeutralBackground1Selected};
90
- }
91
-
92
- :host(:active) .input-container,
93
- :host(:active) .expand-collapse-glyph-container,
94
- :host(:active) .content {
95
39
  color: ${colorNeutralForeground2Pressed};
96
40
  }
97
41
 
@@ -101,67 +45,48 @@ export const styles = css `
101
45
 
102
46
  :host([disabled]) {
103
47
  background-color: ${colorNeutralBackgroundDisabled};
104
- }
105
-
106
- :host([disabled]) .content,
107
- :host([disabled]) .expand-collapse-glyph-container,
108
- :host([disabled]) ::slotted([slot='end']),
109
- :host([disabled]) ::slotted([slot='start']) {
110
48
  color: ${colorNeutralForegroundDisabled};
111
49
  }
112
50
 
113
- :host([data-indent]) {
114
- display: grid;
115
- }
116
-
117
- :host([data-indent='1']) .content {
118
- grid-column: 2 / span 1;
119
- }
120
-
121
- :host([data-indent='1'][role='menuitemcheckbox']) {
122
- display: grid;
51
+ :host([disabled]) ::slotted([slot='start']),
52
+ :host([disabled]) ::slotted([slot='end']) {
53
+ color: ${colorNeutralForegroundDisabled};
123
54
  }
124
55
 
125
- :host([data-indent='2'][aria-haspopup='menu']) ::slotted([slot='end']) {
126
- grid-column: 4 / span 1;
56
+ :host(:focus-visible) {
57
+ border-radius: ${borderRadiusMedium};
58
+ outline: 2px solid ${colorStrokeFocus2};
127
59
  }
128
60
 
129
- :host([data-indent='2'][aria-haspopup='menu']) .expand-collapse-glyph-container {
130
- grid-column: 5 / span 1;
61
+ .content {
62
+ white-space: nowrap;
63
+ flex-grow: 1;
64
+ grid-column: auto / span 2;
65
+ padding: 0 2px;
131
66
  }
132
67
 
133
- :host([data-indent='1']) .content {
134
- grid-column: 2 / span 1;
68
+ :host(:not([checked])) .indicator,
69
+ :host(:not([checked])) ::slotted([slot='indicator']),
70
+ :host(:not([aria-haspopup='menu'])) .submenu-glyph,
71
+ :host(:not([aria-haspopup='menu'])) ::slotted([slot='submenu-glyph']) {
72
+ display: none;
135
73
  }
136
74
 
137
- :host([data-indent='1'][role='menuitemcheckbox']) .content,
138
- :host([data-indent='1'][role='menuitemradio']) .content {
139
- grid-column: auto / span 1;
75
+ ::slotted([slot='end']) {
76
+ color: ${colorNeutralForeground3};
77
+ font: ${fontWeightRegular} ${fontSizeBase200} / ${lineHeightBase200} ${fontFamilyBase};
78
+ white-space: nowrap;
140
79
  }
141
80
 
142
- :host([icon]) ::slotted([slot='end']),
143
- :host([data-indent='1']) ::slotted([slot='end']) {
144
- grid-column: 4 / span 1;
145
- justify-self: flex-end;
81
+ :host([data-indent='1']) {
82
+ --indent: 1;
146
83
  }
147
84
 
148
85
  :host([data-indent='2']) {
149
- display: grid;
86
+ --indent: 2;
150
87
  grid-template-columns: 20px 20px auto auto;
151
88
  }
152
89
 
153
- :host([data-indent='2']) .content {
154
- grid-column: 3 / span 1;
155
- }
156
-
157
- :host([data-indent='2']) .input-container {
158
- grid-column: 1 / span 1;
159
- }
160
-
161
- :host([data-indent='2']) ::slotted([slot='start']) {
162
- grid-column: 2 / span 1;
163
- }
164
-
165
90
  :host([aria-haspopup='menu']) {
166
91
  grid-template-columns: 20px auto auto 20px;
167
92
  }
@@ -170,14 +95,61 @@ export const styles = css `
170
95
  grid-template-columns: 20px 20px auto auto 20px;
171
96
  }
172
97
 
173
- :host([aria-haspopup='menu']) ::slotted([slot='end']) {
174
- grid-column: 3 / span 1;
175
- justify-self: flex-end;
98
+ .indicator,
99
+ ::slotted([slot='indicator']) {
100
+ grid-column: 1 / span 1;
101
+ width: 20px;
176
102
  }
177
103
 
178
- :host([data-indent='2'][aria-haspopup='menu']) ::slotted([slot='end']) {
179
- grid-column: 4 / span 1;
180
- justify-self: flex-end;
104
+ ::slotted([slot='start']) {
105
+ display: inline-flex;
106
+ grid-column: calc(var(--indent)) / span 1;
181
107
  }
182
- `;
108
+
109
+ .content {
110
+ grid-column: calc(var(--indent) + 1) / span 1;
111
+ }
112
+
113
+ ::slotted([slot='end']) {
114
+ grid-column: calc(var(--indent) + 2) / span 1;
115
+ justify-self: end;
116
+ }
117
+
118
+ .submenu-glyph,
119
+ ::slotted([slot='submenu-glyph']) {
120
+ grid-column: -2 / span 1;
121
+ justify-self: end;
122
+ }
123
+
124
+ @layer popover {
125
+ :host {
126
+ anchor-name: --menu-trigger;
127
+ position: relative;
128
+ }
129
+
130
+ ::slotted([popover]) {
131
+ inset-area: inline-end span-block-end;
132
+ margin: 0;
133
+ max-height: var(--menu-max-height, auto);
134
+ position: absolute;
135
+ position-anchor: --menu-trigger;
136
+ position-try-options: flip-inline, inset-area(block-start);
137
+ z-index: 1;
138
+ }
139
+
140
+ ::slotted([popover]:not(:popover-open)) {
141
+ display: none;
142
+ }
143
+
144
+ ::slotted([popover]:popover-open) {
145
+ inset: unset;
146
+ }
147
+ }
148
+ `.withBehaviors(forcedColorsStylesheetBehavior(css `
149
+ :host([disabled]),
150
+ :host([disabled]) ::slotted([slot='start']),
151
+ :host([disabled]) ::slotted([slot='end']) {
152
+ color: GrayText;
153
+ }
154
+ `));
183
155
  //# sourceMappingURL=menu-item.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item.styles.js","sourceRoot":"","sources":["../../../src/menu-item/menu-item.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,4BAA4B,EAC5B,8BAA8B,EAC9B,uBAAuB,EACvB,8BAA8B,EAC9B,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,OAAO,CAAC,MAAM,CAAC;;;;;;;kBAOD,uBAAuB;YAC7B,iBAAiB,IAAI,eAAe,MAAM,iBAAiB,IAAI,cAAc;qBACpE,kBAAkB;aAC1B,uBAAuB;;;;;;;;kBAQlB,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;aAwBjC,uBAAuB;;;;;;;iBAOnB,eAAe;;;;;;;;;aASnB,uBAAuB;YACxB,iBAAiB,IAAI,eAAe,MAAM,iBAAiB,IAAI,cAAc;;;;;;;;;;;;;;aAc5E,4BAA4B;;;;aAI5B,kCAAkC;;;;wBAIvB,+BAA+B;;;;;;aAM1C,8BAA8B;;;;aAI9B,oCAAoC;;;;wBAIzB,8BAA8B;;;;;;;aAOzC,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwE1C,CAAC"}
1
+ {"version":3,"file":"menu-item.styles.js","sourceRoot":"","sources":["../../../src/menu-item/menu-item.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EACL,kBAAkB,EAClB,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,4BAA4B,EAC5B,8BAA8B,EAC9B,uBAAuB,EACvB,8BAA8B,EAC9B,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,OAAO,CAAC,MAAM,CAAC;;;;;kBAKD,uBAAuB;qBACpB,kBAAkB;aAC1B,uBAAuB;;;;;YAKxB,iBAAiB,IAAI,eAAe,MAAM,iBAAiB,IAAI,cAAc;;;;;;;;;kBASvE,4BAA4B;aACjC,4BAA4B;;;;aAI5B,kCAAkC;;;;wBAIvB,+BAA+B;aAC1C,8BAA8B;;;;aAI9B,oCAAoC;;;;wBAIzB,8BAA8B;aACzC,8BAA8B;;;;;aAK9B,8BAA8B;;;;qBAItB,kBAAkB;yBACd,iBAAiB;;;;;;;;;;;;;;;;;;aAkB7B,uBAAuB;YACxB,iBAAiB,IAAI,eAAe,MAAM,iBAAiB,IAAI,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuExF,CAAC,aAAa,CACb,8BAA8B,CAAC,GAAG,CAAA;;;;;;GAMjC,CAAC,CACH,CAAC"}