UNPKG

@coconut-software/ui

Version:

React components for faster and easier web development.

53 lines (52 loc) 2.18 kB
import type { Placement } from '@popperjs/core'; import type { Dispatch, MutableRefObject, PropsWithChildren, RefObject } from 'react'; import React from 'react'; import type { Actions } from './Actions'; import type { ButtonProps } from './Button'; import type { ItemProps, MenuItemDataRef, SubmenuActions } from './Item'; interface MenuProps { focusRef?: MutableRefObject<Pick<HTMLOrSVGElement, 'focus'>>; headless?: boolean; onClose?: () => void; onOpen?: () => void; placement?: Placement; } interface MenuState { activeItemIndex: number | null; buttonRef: MutableRefObject<HTMLButtonElement | HTMLDivElement | HTMLLabelElement>; focusRef?: MutableRefObject<HTMLElement>; headless: boolean; itemsRef: MutableRefObject<HTMLUListElement>; items: { id: string; dataRef: MenuItemDataRef; }[]; id: string; integratedMultiSelect: boolean; listbox: boolean; minWidth: string; onCloseRef: RefObject<() => void | undefined>; onOpenRef: RefObject<() => void | undefined>; parentItemRef: MutableRefObject<HTMLButtonElement>; parentRef: MutableRefObject<HTMLUListElement>; placement: Placement; search: string; searchable: boolean; selectedItem: { id: string | null; index: number | null; }; show: boolean; notifyAction?: SubmenuActions; openSubmenuItemId: string | null; } type UseMenuValues = [MenuState, Dispatch<Actions>]; export declare const useMenu: () => UseMenuValues; declare function Menu({ children, focusRef, headless, onClose, onOpen, placement, }: PropsWithChildren<MenuProps>): JSX.Element; declare namespace Menu { var Button: React.ForwardRefExoticComponent<PropsWithChildren<ButtonProps> & React.RefAttributes<HTMLButtonElement>>; var Group: typeof import("./Group").default; var Item: React.ForwardRefExoticComponent<PropsWithChildren<ItemProps> & React.RefAttributes<HTMLButtonElement>>; var Items: React.ForwardRefExoticComponent<Omit<PropsWithChildren<Record<string, unknown>>, "ref"> & React.RefAttributes<HTMLUListElement>>; } export default Menu;