monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
72 lines (71 loc) • 2.97 kB
TypeScript
import React, { AriaAttributes, ReactElement } from "react";
import { DialogPosition } from "../../../constants";
import { TooltipProps } from "../../../components/Tooltip/Tooltip";
import { SubIcon, VibeComponent, VibeComponentProps } from "../../../types";
import { IconType } from "../../Icon/IconConstants";
import { TooltipPosition } from "./MenuItemConstants";
import { CloseMenuOption, MenuChild } from "../Menu/MenuConstants";
import Label from "../../Label/Label";
import { SubmenuPosition } from "./MenuItem.Types";
export interface MenuItemProps extends VibeComponentProps {
title?: string;
label?: string | React.ReactElement<typeof Label>;
icon?: SubIcon;
iconType?: IconType;
iconBackgroundColor?: string;
disabled?: boolean;
disableReason?: string;
selected?: boolean;
onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;
activeItemIndex?: number;
setActiveItemIndex?: (index: number) => void;
index?: number;
key?: string;
isParentMenuVisible?: boolean;
resetOpenSubMenuIndex?: () => void;
hasOpenSubMenu?: boolean;
setSubMenuIsOpenByIndex?: (index: number, isOpen: boolean) => void;
useDocumentEventListeners?: boolean;
tooltipContent?: string;
tooltipPosition?: TooltipPosition;
tooltipShowDelay?: number;
tooltipProps?: Partial<TooltipProps>;
onMouseLeave?: (event: React.MouseEvent) => void;
onMouseEnter?: (event: React.MouseEvent) => void;
/**
* @deprecated - use className instead
*/
classname?: string;
/**
* Class name which is added to div which wraps an Icon
*/
iconWrapperClassName?: string;
isInitialSelectedState?: boolean;
shouldScrollMenu?: boolean;
closeMenu?: (option: CloseMenuOption) => void;
menuRef?: React.RefObject<HTMLElement>;
children?: MenuChild | MenuChild[];
/**
* Type of menu item with sub menu, which has two click/hover options-
* 1. click on the main menu item will trigger onClick
* 2. click/hover on icon button will open the sub menu
*/
splitMenuItem?: boolean;
"aria-label"?: AriaAttributes["aria-label"];
submenuPosition?: SubmenuPosition;
}
export interface MenuItemTitleComponentProps extends Omit<MenuItemProps, "title"> {
title: ReactElement;
"aria-label": NonNullable<AriaAttributes["aria-label"]>;
}
declare const _default: ((VibeComponent<(MenuItemProps | MenuItemTitleComponentProps) & React.RefAttributes<HTMLElement>, HTMLElement> & Partial<{
iconType: typeof IconType;
tooltipPositions: typeof DialogPosition;
}>) | (React.FC<(MenuItemProps | MenuItemTitleComponentProps) & React.RefAttributes<HTMLElement>> & Partial<{
iconType: typeof IconType;
tooltipPositions: typeof DialogPosition;
}>)) & {
iconType: typeof IconType;
tooltipPositions: typeof DialogPosition;
};
export default _default;