UNPKG

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