//
import * as PopperJS from "popper.js";
type ItemId = string | number;
interface IDropdownItemBase extends React.HTMLAttributes {
icon?: React.ReactNode;
itemId: ItemId;
isDisabled?: boolean;
isSelected?: boolean;
divider?: boolean;
onItemSelect?: (
itemId: ItemId,
event?: React.MouseEvent | React.KeyboardEvent
) => void;
}
export interface IGetItemBodyPayload extends IDropdownItemBase {
content: React.ReactNode;
isFocused?: boolean;
props: {
[key: string]: any;
};
onItemFocus?: (itemId: ItemId) => void;
onMouseOverItem?: (itemId: ItemId) => void;
}
export interface IDropdownProps {
children: React.ReactNode;
className?: string;
closeOnEscPress?: boolean;
closeOnEnterPress?: boolean;
closeKeyCodes?: number[];
eventsEnabled?: boolean;
isVisible: boolean;
modifiers?: PopperJS.Modifiers;
placement?: PopperJS.Placement;
positionFixed?: boolean;
referenceElement?: PopperJS.ReferenceObject;
shouldUpdateOnResize?: boolean;
zIndex?: number;
triggerRenderer?: (props: { ref: React.Ref }) => void;
onClose: () => void;
}
export interface IDropdownItem extends IDropdownItemBase {
content: React.ReactNode;
icon?: React.ReactNode;
props?: {
[key: string]: any;
};
onItemFocus?: (itemId: ItemId) => void;
}
export interface IDropdownListProps
extends React.HTMLAttributes {
autoFocusedItemId?: string;
autoFocusOnItemsCountChange?: boolean;
className?: string;
items: IDropdownItem[];
itemSelectKeyCodes?: number[];
keyboardEventsEnabled?: boolean;
getItemBody?(payload: IGetItemBodyPayload): React.ReactNode;
}
export interface IDropdownListItemProps extends IDropdownItemBase {
children: React.ReactNode;
icon?: React.ReactNode;
isFocused?: boolean;
onMouseOverItem?: (itemId: ItemId) => void;
}
export var Dropdown: React.ComponentType;
export var DropdownList: React.ComponentType;
export var DropdownListItem: React.ComponentType;