///
import { ClickOutsideHandler } from '../../hooks/useClickOutside/useClickOutside';
import { PropsWithHTMLAttributes, PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';
import { Direction, Position } from '../Popover/Popover';
export declare const defaultGroupId = "context-menu-no-group";
export declare const contextMenuSizes: readonly ["m", "s", "l"];
export declare type ContextMenuPropSize = typeof contextMenuSizes[number];
export declare const contextMenuDefaultSize: ContextMenuPropSize;
export declare const contextMenuAccent: readonly ["alert", "warning", "success"];
export declare type ContextMenuAccent = typeof contextMenuAccent[number];
export declare type ContextMenuPropGetLabel- = (item: ITEM) => string | number;
export declare type ContextMenuPropGetSide
- = (item: ITEM) => React.ReactNode | null;
export declare type ContextMenuPropGetSubItems
- = (item: ITEM) => ITEM[] | undefined;
export declare type ContextMenuPropGetAccent
- = (item: ITEM) => ContextMenuAccent | undefined;
export declare type ContextMenuPropGetGroupId
- = (item: ITEM) => string | number | undefined;
export declare type ContextMenuPropGetKey
- = (item: ITEM) => string | number;
export declare type ContextMenuPropGetDisable
- = (item: ITEM) => boolean | undefined;
export declare type ContextMenuPropGetGroupLabel = (id: string | number | undefined) => string | number | undefined;
export declare type ContextMenuPropSortGroup = (a: string | number, b: string | number) => number;
export declare type ContextMenuPropGetOnClick
- = (item: ITEM) => React.EventHandler>;
export declare const contextMenuPropSubMenuDirections: readonly ["rightStartUp", "rightStartDown", "leftStartUp", "leftStartDown"];
export declare type ContextMenuPropSubMenuDirection = typeof contextMenuPropSubMenuDirections[number];
export declare const contextMenuPropDefaultSubMenuDirection: ContextMenuPropSubMenuDirection;
declare type PositioningProps = {
anchorRef: React.RefObject;
position?: never;
} | {
anchorRef?: never;
position: Position;
};
export declare type ContextMenuProps
- = PropsWithHTMLAttributesAndRef<{
items: ITEM[];
getLabel: ContextMenuPropGetLabel
- ;
getLeftSideBar?: ContextMenuPropGetSide
- ;
getRightSideBar?: ContextMenuPropGetSide
- ;
getSubItems?: ContextMenuPropGetSubItems
- ;
getGroupId?: ContextMenuPropGetGroupId
- ;
getGroupLabel?: ContextMenuPropGetGroupLabel;
getAccent?: ContextMenuPropGetAccent
- ;
size?: ContextMenuPropSize;
sortGroup?: ContextMenuPropSortGroup;
getOnClick?: ContextMenuPropGetOnClick
- ;
direction?: Direction;
possibleDirections?: readonly Direction[];
subMenuDirection?: ContextMenuPropSubMenuDirection;
getKey?: ContextMenuPropGetKey
- ;
getDisabled?: ContextMenuPropGetDisable
- ;
offset?: number;
onClickOutside?: ClickOutsideHandler;
spareDirection?: Direction;
} & PositioningProps, HTMLDivElement>;
export declare type AddLevel
- = (level: number, items: ITEM[], anchorRef: React.RefObject, activeItem: string) => void;
export declare type DeleteLevel = (level: number) => void;
declare type ContextMenuLevelProps
- = Omit & {
level: number;
addLevel: AddLevel
- ;
deleteLevel: DeleteLevel;
activeItem?: string;
onSetDirection?: (direction: Direction) => void;
hoveredParenLevel: number;
setHoveredParenLevel: (level: number) => void;
}, 'subMenuDirection' | 'getKey' | 'onClickOutside' | 'offset' | 'isOpen'>;
export declare type ContextMenuItemProps
- = PropsWithHTMLAttributes<{
label: string | number;
rightSide?: React.ReactNode;
leftSide?: React.ReactNode;
size?: ContextMenuPropSize;
active?: boolean;
withSubMenu: boolean;
accent?: ContextMenuAccent;
disabled?: boolean;
} & React.RefAttributes, HTMLDivElement>;
export declare type Level
- = {
items: ITEM[];
activeItem?: string;
direction?: Direction;
possibleDirections?: readonly Direction[];
offset?: number;
} & PositioningProps;
export declare type ContextMenuItem =
- (props: ContextMenuItemProps
- , ref: React.Ref) => React.ReactElement | null;
export declare type ContextMenuType =
- (props: ContextMenuProps
- ) => React.ReactElement | null;
export declare type ContextMenuLevelType =
- (props: ContextMenuLevelProps
- , ref: React.Ref) => React.ReactElement | null;
declare type Group
- = {
items: ITEM[];
id: string | number;
};
declare type getGroupsResult
- = Group
- [];
export declare function getGroups
- (items: ITEM[], getGroupId?: ContextMenuPropGetGroupId
- , sortGroup?: ContextMenuPropSortGroup): getGroupsResult
- ;
export {};