UNPKG

1.44 kBTypeScriptView Raw
1import * as React from 'react';
2import type { MenuRef as RcMenuRef } from 'rc-menu';
3import { ItemGroup } from 'rc-menu';
4import type { ItemType, MenuItemType } from './hooks/useItems';
5import type { MenuProps } from './menu';
6import type { MenuTheme } from './MenuContext';
7import MenuDivider from './MenuDivider';
8import Item, { type MenuItemProps } from './MenuItem';
9import SubMenu, { type SubMenuProps } from './SubMenu';
10export type { MenuItemGroupProps } from 'rc-menu';
11export type { MenuDividerProps } from './MenuDivider';
12export type { MenuItemProps, MenuProps, MenuTheme, SubMenuProps };
13export type MenuRef = {
14 menu: RcMenuRef | null;
15 focus: (options?: FocusOptions) => void;
16};
17type ComponentProps = MenuProps & React.RefAttributes<MenuRef>;
18type GenericItemType<T = unknown> = T extends infer U extends MenuItemType ? unknown extends U ? ItemType : ItemType<U> : ItemType;
19type GenericComponentProps<T = unknown> = Omit<ComponentProps, 'items'> & {
20 items?: GenericItemType<T>[];
21};
22type CompoundedComponent = React.ForwardRefExoticComponent<GenericComponentProps> & {
23 Item: typeof Item;
24 SubMenu: typeof SubMenu;
25 Divider: typeof MenuDivider;
26 ItemGroup: typeof ItemGroup;
27};
28interface GenericComponent extends Omit<CompoundedComponent, ''> {
29 <T extends MenuItemType>(props: GenericComponentProps<T>): ReturnType<CompoundedComponent>;
30}
31declare const Menu: GenericComponent;
32export default Menu;