import type { BasePubSubService } from '@slickgrid-universal/event-pub-sub'; import type { SlickEventData } from '../core/slickCore.js'; import type { Column, DOMEvent, DOMMouseOrTouchEvent, HeaderMenu, HeaderMenuItems, HeaderMenuOption, MenuCommandItem, MenuCommandItemCallbackArgs, OnHeaderCellRenderedEventArgs } from '../interfaces/index.js'; import type { FilterService } from '../services/filter.service.js'; import type { SharedService } from '../services/shared.service.js'; import type { SortService } from '../services/sort.service.js'; import type { ExtensionUtility } from './extensionUtility.js'; import { MenuBaseClass, type ExtendableItemTypes, type ExtractMenuType, type MenuType } from './menuBaseClass.js'; /** * A plugin to add drop-down menus to column headers. * To specify a custom button in a column header, extend the column definition like so: * this.columns = [{ * id: 'myColumn', name: 'My column', * header: { * menu: { * commandItems: [{ ...menu item options... }, { ...menu item options... }] * } * } * }]; */ export declare class SlickHeaderMenu extends MenuBaseClass { protected readonly extensionUtility: ExtensionUtility; protected readonly filterService: FilterService; protected readonly pubSubService: BasePubSubService; protected readonly sharedService: SharedService; protected readonly sortService: SortService; protected _activeHeaderColumnElm?: HTMLDivElement | null; protected _headerButtonDivElm?: HTMLDivElement | null; protected _subMenuParentId: string; protected _defaults: HeaderMenuOption; readonly pluginName = "HeaderMenu"; /** Constructor of the SlickGrid 3rd party plugin, it can optionally receive options */ constructor(extensionUtility: ExtensionUtility, filterService: FilterService, pubSubService: BasePubSubService, sharedService: SharedService, sortService: SortService); /** Initialize plugin. */ init(headerMenuOptions?: HeaderMenu): void; /** Dispose (destroy) of the plugin */ dispose(): void; /** Hide a column from the grid */ hideColumn(column: Column): void; /** Hide the Header Menu */ hideMenu(): void; repositionSubMenu(e: DOMMouseOrTouchEvent | SlickEventData, item: MenuCommandItem, level: number, columnDef: Column): void; /** Translate the Header Menu titles, we need to loop through all column definition to re-translate them */ translateHeaderMenu(): void; /** * Event handler when column title header are being rendered * @param {Object} event - The event * @param {Object} args - object arguments */ protected handleHeaderCellRendered(_e: SlickEventData, args: OnHeaderCellRenderedEventArgs): void; /** * Event handler before the header cell is being destroyed * @param {Object} event - The event * @param {Object} args.column - The column definition */ protected handleBeforeHeaderCellDestroy(_e: SlickEventData, args: { column: Column; node: HTMLElement; }): void; /** Mouse down handler when clicking anywhere in the DOM body */ protected handleBodyMouseDown(e: DOMEvent): void; protected handleMenuItemCommandClick(event: DOMMouseOrTouchEvent | SlickEventData, _type: MenuType, item: ExtractMenuType, level?: number, columnDef?: Column): boolean | void; protected handleMenuItemMouseOver(e: DOMMouseOrTouchEvent | SlickEventData, _type: MenuType, item: ExtractMenuType, level?: number, columnDef?: Column): void; /** * Create Header Menu with Custom Commands if user has enabled Header Menu * @param gridOptions * @param columns * @return header menu */ protected addHeaderMenuCustomCommands(columns: Column[]): HeaderMenu; /** Clear the Filter on the current column (if it's actually filtered) */ protected clearColumnFilter(event: DOMMouseOrTouchEvent | SlickEventData, args: MenuCommandItemCallbackArgs): void; /** Clear the Sort on the current column (if it's actually sorted) */ protected clearColumnSort(event: DOMMouseOrTouchEvent | SlickEventData, args: MenuCommandItemCallbackArgs): void; protected removeCommandWhenFound(columnHeaderMenuItems: Array, command: string): void; /** freeze or unfreeze columns command */ protected freezeOrUnfreezeColumns(column: Column, command: 'freeze-columns' | 'unfreeze-columns'): void; protected createParentMenu(e: DOMMouseOrTouchEvent, columnDef: Column, menu: HeaderMenuItems): void; /** Create the menu or sub-menu(s) but without the column picker which is a separate single process */ protected createCommandMenu(triggeredByElm: HTMLElement, commandItems: Array, columnDef: Column, level?: number, item?: MenuCommandItem | 'divider'): HTMLDivElement; /** * Reset all the internal Menu options which have text to translate * @param header menu object */ protected resetHeaderMenuTranslations(columns: Column[]): void; /** Sort the current column */ protected sortColumn(event: DOMMouseOrTouchEvent | SlickEventData, args: MenuCommandItemCallbackArgs, isSortingAsc?: boolean): void; protected recreateHeaderMenu(newColumns: Column[]): void; } //# sourceMappingURL=slickHeaderMenu.d.ts.map