import type ContextMenu from './ContextMenu';
import type Button from './Button';
import type Popup from './Popup';
import { ClassNameKey } from '../Globals.js';
export declare class ContextMenuButton implements Button {
/**
* The wrapper `
` element for the button.
*/
wrapper?: HTMLLIElement;
/**
* The context menu that the button belongs to.
*/
contextMenu?: ContextMenu;
popup?: Popup;
/**
* Used to remove the event listeners when the button is destroyed.
*/
protected eventListenerDestroyers: Function[];
/**
* Whether the button is active.
*/
protected isActive: boolean;
/**
* The options for the context menu button.
*/
protected options: ContextMenuButtonOptions;
/**
* The container for the icon element.
*/
private iconWrapper?;
/**
* The default icon for the context menu button.
*/
private icon?;
/**
* The button element.
*/
private buttonEl?;
/**
* The span element for the label.
*/
private spanEl?;
constructor(options: ContextMenuButtonOptions);
/**
* Adds the button to the context menu.
*
* @param contextMenu
* The context menu to add the button to.
*/
add(contextMenu: ContextMenu): this | undefined;
focus(): void;
/**
* Triggers button click programmatically.
*/
click(): void;
setLabel(label: string): void;
/**
* Sets the icon for the button.
*
* @param icon
* The icon to set (built-in name or custom name from rendering.icons).
*/
setIcon(icon?: string): void;
setActive(active: boolean): void;
setHighlighted(highlighted: boolean): void;
/**
* Destroys the button.
*/
destroy(): void;
/**
* Initializes the state of the button.
*/
protected refreshState(): void;
/**
* Handles the click event for the button.
*
* @param event
* The mouse event.
*/
protected clickHandler(event: MouseEvent): void;
/**
* Adds event listeners to the button.
*/
protected addEventListeners(): void;
/**
* Removes event listeners from the button.
*/
private removeEventListeners;
}
export interface ContextMenuButtonOptions {
/**
* The label for the button.
*/
label?: string;
/**
* The icon for the button (built-in name or custom from rendering.icons).
*/
icon?: string;
/**
* A class name key applied to the `` wrapper of the button.
*/
classNameKey?: ClassNameKey;
/**
* The icon for the active state of the button.
*/
activeIcon?: string;
/**
* The icon for the highlighted state of the button.
*/
highlightedIcon?: string;
/**
* The tooltip string for the button.
*/
tooltip?: string;
/**
* If the chevron icon should be rendered.
*/
chevron?: boolean;
/**
* The click handler for the button.
*/
onClick?: (event: MouseEvent, button: ContextMenuButton) => void;
}
export default ContextMenuButton;