///
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;
}