material-web/menu/menu.ts
Elliott Marquez 63b01425e7 refactor(menu,select)!: rename fixed to positioning
This will enable forwards compatibility for `positioning="top-layer"` with popover.

BREAKING CHANGE: refactor `fixed` property to `positioning="fixed"` in Menu and `menuFixed` to `menuPositioning="fixed"`

PiperOrigin-RevId: 567723646
2023-09-22 14:54:57 -07:00

76 lines
2.1 KiB
TypeScript

/**
* @license
* Copyright 2022 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import {customElement} from 'lit/decorators.js';
import {styles as forcedColors} from './internal/forced-colors-styles.css.js';
import {Menu} from './internal/menu.js';
import {styles} from './internal/menu-styles.css.js';
export {ListItem} from '../list/internal/listitem/list-item.js';
export {Corner} from './internal/menu.js';
export {CloseMenuEvent, FocusState, MenuItem} from './internal/shared.js';
declare global {
interface HTMLElementTagNameMap {
'md-menu': MdMenu;
}
}
/**
* @summary Menus display a list of choices on a temporary surface.
*
* @description
* Menus appear when users interact with a button, action, or other control.
*
* They can be opened from a variety of elements, most commonly icon buttons,
* buttons, and text fields.
*
* md-menu listens for the `close-menu` and `deselect-items` events.
*
* - `close-menu` closes the menu when dispatched from a child element.
* - `deselect-items` deselects all of its immediate menu-item children.
*
* @example
* ```html
* <div style="position:relative;">
* <button
* id="anchor"
* @click=${() => this.menuRef.value.show()}>
* Click to open menu
* </button>
* <!--
* `has-overflow` is required when using a submenu which overflows the
* menu's contents.
*
* Additionally, `anchor` ingests an idref which do not pass through shadow
* roots. You can also set `.anchorElement` to an element reference if
* necessary.
* -->
* <md-menu anchor="anchor" has-overflow ${ref(menuRef)}>
* <md-menu-item headline="This is a headline"></md-menu-item>
* <md-sub-menu>
* <md-menu-item
* slot="item"
* headline="this is a submenu item">
* </md-menu-item>
* <md-menu slot="menu">
* <md-menu-item headline="This is an item inside a submenu">
* </md-menu-item>
* </md-menu>
* </md-sub-menu>
* </md-menu>
* </div>
* ```
*
* @final
* @suppress {visibility}
*/
@customElement('md-menu')
export class MdMenu extends Menu {
static override styles = [styles, forcedColors];
}