import { PopoverChildrenContext, PopoverContentContext } from 'components/popover'; import { PopoverProps } from 'components/popover/Popover.types'; import { ReactElement, ReactNode } from 'react'; import { RenderFuncProp } from '../../types'; import { RenderFunction } from 'utils'; export interface DropdownActionProps extends React.ButtonHTMLAttributes { label: string; icon?: JSX.Element; hintText?: string; onClick?: () => void; danger?: boolean; disabled?: boolean; focused?: boolean; renderFunc?: RenderFuncProp; 'data-active'?: boolean; keyProp?: string; badge?: string | number | JSX.Element; } export interface DropdownCheckboxProps extends Omit, 'onChange'> { checked: boolean; onChange: (state: boolean) => void; label: string; focused?: boolean; disabled?: boolean; } export interface DropdownRadioListProps extends Omit, 'onChange'> { value: T; onChange: (value: T) => void; children: ReactElement> | ReactElement>[]; label?: string; } export interface DropdownRadioListItem extends Omit, 'value'> { value: T; label: string; disabled?: boolean; focused?: boolean; } export interface DropdownChildMenuProps extends React.ButtonHTMLAttributes { icon?: ReactElement; children: ReactElement | null | (ReactElement | null)[]; label: string; disabled?: boolean; } export interface DropdownMenuProps extends Omit, 'children'> { children: ReactElement | null | (ReactElement | null)[]; defaultFocusItemIndex?: number; onChangeFocusItemIndex?: (index: number) => void; } export interface DropdownMenuRef { selectedIndex: number; menuNode: HTMLElement | null; } export interface DropdownProps extends PopoverProps { closeParentPopover?: boolean; children: RenderFunction; content: RenderFunction; }