UNPKG

@coconut-software/ui

Version:

React components for faster and easier web development.

63 lines (62 loc) 2.2 kB
import type { ChangeEventHandler, Dispatch, JSXElementConstructor, MouseEventHandler, MutableRefObject, PropsWithChildren, ReactElement, Ref, RefObject } from 'react'; import type SvgIcon from '../SvgIcon/SvgIcon'; export type SubmenuActions = { type: SubmenuActionTypes.CloseAll; } | { type: SubmenuActionTypes.CloseMenu; } | { type: SubmenuActionTypes.OpenMenu; } | { type: SubmenuActionTypes.RegisterMenu; id: string; } | { type: SubmenuActionTypes.UnregisterMenu; }; export declare enum SubmenuActionTypes { CloseAll = 0, OpenMenu = 1, CloseMenu = 2, RegisterMenu = 3, UnregisterMenu = 4 } type SubmenuState = { id: string; ref: Ref<HTMLButtonElement>; show: boolean | undefined; }; type UseSubmenuValues = [SubmenuState, Dispatch<SubmenuActions>]; export declare const useSubmenu: () => UseSubmenuValues; type StartAdornmentProps = { checkbox?: never; color?: never; startAdornment?: JSXElementConstructor<unknown> | ReactElement; } | { checkbox?: true; color?: ItemColor; startAdornment?: never; }; export type ItemProps = { action?: boolean; 'aria-label'?: string; 'data-key'?: string; dataSet?: Record<string, string | undefined>; defaultChecked?: boolean; disabled?: boolean; endAdornment?: typeof SvgIcon; inset?: boolean; onChange?: ChangeEventHandler<HTMLInputElement>; onClick?: MouseEventHandler<HTMLButtonElement>; selectable?: boolean; selected?: boolean; value?: string; applyFocusRef?: RefObject<HTMLElement>; } & StartAdornmentProps; type ItemColor = 'danger' | 'primary' | 'secondary'; export type MenuItemDataRef = MutableRefObject<{ checkbox?: boolean; disabled: boolean; hasSubmenu: boolean; textValue?: string; }>; declare function Item({ action, applyFocusRef, 'aria-label': label, checkbox, children, color, 'data-key': key, dataSet, defaultChecked, disabled, endAdornment, inset, onChange, onClick, selectable, selected, startAdornment: StartAdornment, value, }: PropsWithChildren<ItemProps>, ref: Ref<HTMLButtonElement>): JSX.Element; export default Item;