UNPKG

@kwiz/fluentui

Version:
49 lines (48 loc) 1.67 kB
import { MenuListProps, MenuPopoverProps, MenuProps, SplitButtonProps } from '@fluentui/react-components'; import React, { MutableRefObject } from 'react'; import { ButtonEXProps } from '../types'; interface iMenuItemEXItem { type?: "item"; title: string; onClick: (e: React.MouseEvent) => void; disabled?: boolean; icon?: JSX.Element; items?: iMenuItemEX[]; checked?: boolean; /** render this control instead of the item IMPORTANT! pass in a key to this control */ as?: JSX.Element; } interface iMenuItemEXSeparator { type: "separator"; } interface iMenuItemEXGroup { type: "group"; title: string; items: (iMenuItemEX & { type?: "separator" | "item"; })[]; } export type iMenuItemEX = iMenuItemEXItem | iMenuItemEXSeparator | iMenuItemEXGroup; interface IPropsBase { menuProps?: Partial<MenuProps>; menuPopOverProps?: MenuPopoverProps; menuListProps?: MenuListProps; items: iMenuItemEX[]; /** default 8 null/false to disable */ filterThreshold?: number | false; /** default 8, null/false to disable */ pageSize?: number | false; closeMenu?: MutableRefObject<() => void>; } interface IPropsNoSplit { trigger: JSX.Element | string | ButtonEXProps; SplitButton?: false; } interface IPropsSplit { trigger: SplitButtonProps; /** send to to render trigger element as primary action on a split button. Only works with trigger as JSX.Element for primary button */ SplitButton: true; } export type iMenuExProps = IPropsBase & (IPropsNoSplit | IPropsSplit); export declare const MenuEx: React.FunctionComponent<React.PropsWithChildren<iMenuExProps>>; export {};