UNPKG

mdui

Version:

实现 material you 设计规范的 Web Components 组件库

138 lines (137 loc) 5.22 kB
import '@mdui/jq/methods/height.js'; import '@mdui/jq/methods/is.js'; import '@mdui/jq/methods/width.js'; import { MduiElement } from '@mdui/shared/base/mdui-element.js'; import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit'; /** * @summary 下拉组件 * * ```html * <mdui-dropdown> * ..<mdui-button slot="trigger">open dropdown</mdui-button> * ..<mdui-menu> * ....<mdui-menu-item>Item 1</mdui-menu-item> * ....<mdui-menu-item>Item 2</mdui-menu-item> * ..</mdui-menu> * </mdui-dropdown> * ``` * * @event open - 下拉组件开始打开时,事件被触发。可以通过调用 `event.preventDefault()` 阻止下拉组件打开 * @event opened - 下拉组件打开动画完成时,事件被触发 * @event close - 下拉组件开始关闭时,事件被触发。可以通过调用 `event.preventDefault()` 阻止下拉组件关闭 * @event closed - 下拉组件关闭动画完成时,事件被触发 * * @slot - 下拉组件的内容 * @slot trigger - 触发下拉组件的元素,例如 [`<mdui-button>`](/docs/2/components/button) 元素 * * @csspart trigger - 触发下拉组件的元素的容器,即 `trigger` slot 的容器 * @csspart panel - 下拉组件内容的容器 * * @cssprop --z-index - 组件的 CSS `z-index` 值 */ export declare class Dropdown extends MduiElement<DropdownEventMap> { static styles: CSSResultGroup; /** * 是否打开下拉组件 */ open: boolean; /** * 是否禁用下拉组件 */ disabled: boolean; /** * 下拉组件的触发方式,支持多个值,用空格分隔。可选值包括: * * * `click`:点击触发 * * `hover`:鼠标悬浮触发 * * `focus`:聚焦触发 * * `contextmenu`:鼠标右键点击、或触摸长按触发 * * `manual`:仅能通过编程方式打开和关闭下拉组件,不能再指定其他触发方式 */ trigger: /*点击触发*/ 'click' | /*鼠标悬浮触发*/ 'hover' | /*聚焦触发*/ 'focus' | /*鼠标右键点击、或触摸长按触发*/ 'contextmenu' | /*仅能通过编程方式打开和关闭下拉组件,不能再指定其他触发方式*/ 'manual' | string; /** * 下拉组件内容的位置。可选值包括: * * * `auto`:自动判断位置 * * `top-start`:上方左对齐 * * `top`:上方居中 * * `top-end`:上方右对齐 * * `bottom-start`:下方左对齐 * * `bottom`:下方居中 * * `bottom-end`:下方右对齐 * * `left-start`:左侧顶部对齐 * * `left`:左侧居中 * * `left-end`:左侧底部对齐 * * `right-start`:右侧顶部对齐 * * `right`:右侧居中 * * `right-end`:右侧底部对齐 */ placement: /*自动判断位置*/ 'auto' | /*上方左对齐*/ 'top-start' | /*上方居中*/ 'top' | /*上方右对齐*/ 'top-end' | /*下方左对齐*/ 'bottom-start' | /*下方居中*/ 'bottom' | /*下方右对齐*/ 'bottom-end' | /*左侧顶部对齐*/ 'left-start' | /*左侧居中*/ 'left' | /*左侧底部对齐*/ 'left-end' | /*右侧顶部对齐*/ 'right-start' | /*右侧居中*/ 'right' | /*右侧底部对齐*/ 'right-end'; /** * 点击 [`<mdui-menu-item>`](/docs/2/components/menu#menu-item-api) 后,下拉组件是否保持打开状态 */ stayOpenOnClick: boolean; /** * 鼠标悬浮触发下拉组件打开的延时,单位为毫秒 */ openDelay: number; /** * 鼠标悬浮触发下拉组件关闭的延时,单位为毫秒 */ closeDelay: number; /** * 是否在触发下拉组件的光标位置打开下拉组件,常用于打开鼠标右键菜单 */ openOnPointer: boolean; private readonly triggerElements; private readonly panelElements; private pointerOffsetX; private pointerOffsetY; private animateDirection; private openTimeout; private closeTimeout; private observeResize?; private overflowAncestors?; private readonly panelRef; private readonly definedController; constructor(); private get triggerElement(); private onPositionChange; private onOpenChange; connectedCallback(): void; disconnectedCallback(): void; protected firstUpdated(changedProperties: PropertyValues): void; protected render(): TemplateResult; /** * 获取 dropdown 打开、关闭动画的 CSS scaleX 或 scaleY */ private getCssScaleName; /** * 在 document 上点击时,根据条件判断是否要关闭 dropdown */ private onDocumentClick; /** * 在 document 上按下按键时,根据条件判断是否要关闭 dropdown */ private onDocumentKeydown; private onWindowScroll; private hasTrigger; private onFocus; private onClick; private onPanelClick; private onContextMenu; private onMouseEnter; private onMouseLeave; private updatePositioner; } export interface DropdownEventMap { open: CustomEvent<void>; opened: CustomEvent<void>; close: CustomEvent<void>; closed: CustomEvent<void>; } declare global { interface HTMLElementTagNameMap { 'mdui-dropdown': Dropdown; } }