@coconut-software/ui
Version:
React components for faster and easier web development.
63 lines (62 loc) • 2.2 kB
TypeScript
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;