/// import type { SVGProps } from 'react'; import { stardust } from '@nebula.js/stardust'; export declare enum MenuAvailabilityFlags { SORTING = "sorting", SEARCHING = "searching", SELECTIONS = "selections", ADJUST_HEADER_SIZE = "adjustHeaderSize" } export type SortingRelatedArgs = { sortFromMenu: (evt: React.MouseEvent, newSortDirection: SortDirection) => Promise; changeActivelySortedHeader?: (headerData: HeaderData) => Promise; }; export type SearchRelatedArgs = { embed: stardust.Embed; listboxRef: React.RefObject; }; export type SelectionRelatedArgs = Partial<{ app: EngineAPI.IApp; model: EngineAPI.IGenericObject; }>; export type AdjustHeaderSizeRelatedArgs = { setFocusOnColumnAdjuster: (anchorRef: React.RefObject) => void; }; export interface HeadCellMenuProps { headerData: HeaderData; translator: stardust.Translator; anchorRef: React.RefObject; handleHeadCellMenuKeyDown?: (evt: React.KeyboardEvent) => void; menuAvailabilityFlags: Partial>; open: boolean; setOpen: React.Dispatch>; interactions: stardust.Interactions; shouldShowMenuIcon: boolean; sortRelatedArgs?: SortingRelatedArgs; searchRelatedArgs?: SearchRelatedArgs; selectionRelatedArgs?: SelectionRelatedArgs; adjustHeaderSizeRelatedArgs?: AdjustHeaderSizeRelatedArgs; } export type MenuItemGroup = Array<{ groupHeading?: string; items: HeadCellMenuItem[]; }>; export interface HeadCellMenuItem { id: number; autoFocus?: boolean; icon: (props: SVGProps) => JSX.Element; itemTitle: string; enabled: boolean; isActive?: boolean; onClick?: (evt: React.MouseEvent) => Promise | void; subMenus?: MenuItemGroup[]; isSubMenu?: boolean; } export interface ExtendedHeadCellMenuItem extends HeadCellMenuItem { handleHeadCellMenuKeyDown?: (evt: React.KeyboardEvent) => void; } export interface UseFieldSelectionOutput { fieldInstance: EngineAPI.IField | null; selectionActionsEnabledStatus: Record; resetSelectionActionsEnabledStatus: () => void; updateSelectionActionsEnabledStatus: (layout: EngineAPI.IGenericHyperCubeLayout) => void; } export interface UseFieldSelectionProps { headerData: HeaderData; app?: EngineAPI.IApp; } export type SortDirection = 'A' | 'D'; export type Align = 'left' | 'center' | 'right'; export interface HeaderData { id: string; isDim: boolean; qLibraryId?: string; colIdx: number; fieldId: string; label: string; headTextAlign: Align; sortDirection: SortDirection; isActivelySorted?: boolean; }