import { InteractionEvent } from "pixi.js"; import { DButtonBase, DButtonBaseEvents, DButtonBaseOptions, DThemeButtonBase } from "./d-button-base"; import { DMenu, DMenuOptions, DThemeMenu } from "./d-menu"; import { DMenuItem } from "./d-menu-item"; import { DOnOptions } from "./d-on-options"; /** * {@link DDropdownBase} events. */ export interface DDropdownBaseEvents extends DButtonBaseEvents { /** * Triggered when a menu item is selected. * * @param value a value of a selected menu item * @param item a selected menu item * @param emitter an emitter */ select(value: VALUE, item: DMenuItem, emitter: EMITTER): void; /** * Triggered when a menu is opened. */ open(menu: DMenu, emitter: EMITTER): void; } /** * {@link DDropdownBase} "on" options. */ export interface DDropdownBaseOnOptions extends Partial>, DOnOptions { } /** * {@link DDropdownBase} options. */ export interface DDropdownBaseOptions = DThemeDropdownBase, EMITTER = any> extends DButtonBaseOptions { /** * Menu options. */ menu?: DMenuOptions | DMenu; on?: DDropdownBaseOnOptions; } /** * {@link DDropdownBase} theme. */ export interface DThemeDropdownBase extends DThemeButtonBase { } /** * A dropdown base class. */ export declare class DDropdownBase = DThemeDropdownBase, OPTIONS extends DDropdownBaseOptions = DDropdownBaseOptions> extends DButtonBase { protected _menu?: DMenu; protected _onMenuSelectBound?: (selected: VALUE, item: DMenuItem, menu: DMenu) => void; protected _onMenuCloseBound?: () => void; protected onMenuSelect(value: VALUE, item: DMenuItem, menu: DMenu): void; protected onMenuClose(menu?: DMenu): void; protected toMenu(theme: THEME, options?: OPTIONS): DMenu; protected toMenuOptions(theme: THEME, options?: DMenuOptions): DMenuOptions; get menu(): DMenu; set menu(newMenu: DMenu); protected onMenuReplaced(newMenu: DMenu, oldMenu?: DMenu): void; protected getType(): string; protected onKeyDown(e: KeyboardEvent): boolean; protected onKeyDownArrowDown(e: KeyboardEvent): boolean; protected onActivate(e?: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent): void; open(): void; protected onMenuOpening(menu: DMenu): void; protected onMenuOpened(menu: DMenu): void; close(): void; }