@orca-fe/pocket
Version:
UI components by orca-team
43 lines (42 loc) • 1.87 kB
TypeScript
import type { ForwardedRef, ReactNode, RefObject } from 'react';
import React from 'react';
export type Bounds = {
top: number;
left: number;
width: number;
height: number;
};
export type ContextMenuItemType = {
key: string;
text: ReactNode;
children?: ContextMenuItemWithSplitType[];
disabled?: boolean;
icon?: ReactNode;
extra?: ReactNode;
onClick?: (e: React.MouseEvent) => any;
};
export type ContextMenuItemWithSplitType = ContextMenuItemType | 'split-line';
export type MenuItemProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & Omit<ContextMenuItemType, 'key'> & {
menuKey: string;
hasIcon?: boolean;
onMenuClick?: (menu: ContextMenuItemType, event: React.MouseEvent) => void;
};
export declare const MenuItem: (props: MenuItemProps) => import("react/jsx-runtime").JSX.Element;
export interface MenuContainerProps extends React.HTMLAttributes<HTMLDivElement> {
bounds?: Bounds;
data?: ContextMenuItemWithSplitType[];
onMenuClick?: (menu: ContextMenuItemType, event: React.MouseEvent) => void;
}
export declare const MenuContainer: (props: MenuContainerProps) => import("react/jsx-runtime").JSX.Element;
export interface ContextMenuProps<T extends ContextMenuItemType> extends React.HTMLAttributes<HTMLDivElement> {
data?: (T | 'split-line')[] | ((el: HTMLElement | null) => (T | 'split-line')[]);
onMenuClick?: (menu: T, event: React.MouseEvent) => void;
getContainer?: (element: HTMLElement) => HTMLElement;
menuContainerClassName?: string;
mainMenuMinWidth?: number;
wrapperStyle?: React.CSSProperties;
disabled?: boolean;
ref?: RefObject<HTMLDivElement>;
}
declare const _default: <T extends ContextMenuItemType>(props: ContextMenuProps<T>, pRef: ForwardedRef<HTMLDivElement>) => import("react/jsx-runtime").JSX.Element;
export default _default;