rsuite
Version:
A suite of react components
73 lines (72 loc) • 2.85 kB
TypeScript
import React from 'react';
import Button from '../Button';
import DropdownMenu from './DropdownMenu';
import DropdownItem from './DropdownItem';
import DropdownSeparator from './DropdownSeparator';
import { IconProps } from '@rsuite/icons/Icon';
import type { PlacementCorners, WithAsProps, InternalRefForwardingComponent, SanitizedHTMListProps } from '../internals/types';
export type DropdownTrigger = 'click' | 'hover' | 'contextMenu';
interface DeprecatedDropdownProps {
/**
* Deprecated. Use `renderToggle` instead.
* @deprecated
*/
renderTitle?: (children: React.ReactNode) => React.ReactNode;
}
export interface DropdownProps<T = any> extends WithAsProps, DeprecatedDropdownProps, SanitizedHTMListProps {
/** The active option, corresponding to the eventKey in Dropdown.Item */
activeKey?: T;
/** Default open state */
defaultOpen?: boolean;
/** Whether to disable the component */
disabled?: boolean;
/** The value of the current option */
eventKey?: T;
/** Set icon */
icon?: React.ReactElement<IconProps>;
/** Menu style */
menuStyle?: React.CSSProperties;
/** Do not display caret */
noCaret?: boolean;
/** Controlled open state */
open?: boolean;
/** Menu position */
placement?: PlacementCorners;
/** Define the title of the submenu */
title?: React.ReactNode;
/** Toggle component class name */
toggleClassName?: string;
/** Custom element type can be used for this toggle component */
toggleAs?: React.ElementType;
/** Trigger event */
trigger?: DropdownTrigger | DropdownTrigger[];
/** Custom toggle component */
renderToggle?: (props: WithAsProps, ref: React.Ref<any>) => any;
/** Callback function for closing the menu */
onClose?: () => void;
/** Callback function for opening the menu */
onOpen?: () => void;
/** Selection callback function */
onSelect?: (eventKey: T | undefined, event: React.SyntheticEvent) => void;
/** Callback function for menu state toggle */
onToggle?: (open?: boolean) => void;
}
export interface DropdownComponent extends InternalRefForwardingComponent<'div', DropdownProps> {
<ToggleAs extends React.ElementType = typeof Button>(props: DropdownProps & {
ref?: React.Ref<any>;
toggleAs?: ToggleAs;
} & React.ComponentProps<ToggleAs>, context: any): React.ReactElement | null;
Item: typeof DropdownItem;
Menu: typeof DropdownMenu;
Separator: typeof DropdownSeparator;
}
/**
* The `Dropdown` component is used to select an option from a set of options.
* @see https://rsuitejs.com/components/dropdown
*
* The `<Dropdown>` API
* - When used inside `<Sidenav>`, renders a `<TreeviewRootItem>`;
* - Otherwise renders a `<MenuRoot>`
*/
declare const Dropdown: DropdownComponent;
export default Dropdown;