UNPKG

1.75 kBTypeScriptView Raw
1import * as React from 'react';
2import { Simplify } from '@mui/types';
3import { PolymorphicProps, SlotComponentProps } from '../utils';
4export interface MenuItemRootSlotPropsOverrides {
5}
6export type MenuItemOwnerState = Simplify<MenuItemOwnProps & {
7 disabled: boolean;
8 focusVisible: boolean;
9 highlighted: boolean;
10}>;
11export interface MenuItemOwnProps {
12 children?: React.ReactNode;
13 className?: string;
14 onClick?: React.MouseEventHandler<HTMLElement>;
15 /**
16 * If `true`, the menu item will be disabled.
17 * @default false
18 */
19 disabled?: boolean;
20 /**
21 * The components used for each slot inside the MenuItem.
22 * Either a string to use a HTML element or a component.
23 * @default {}
24 */
25 slots?: MenuItemSlots;
26 /**
27 * The props used for each slot inside the MenuItem.
28 * @default {}
29 */
30 slotProps?: {
31 root?: SlotComponentProps<'li', MenuItemRootSlotPropsOverrides, MenuItemOwnerState>;
32 };
33 /**
34 * A text representation of the menu item's content.
35 * Used for keyboard text navigation matching.
36 */
37 label?: string;
38}
39export interface MenuItemSlots {
40 /**
41 * The component that renders the root.
42 * @default 'li'
43 */
44 root?: React.ElementType;
45}
46export interface MenuItemTypeMap<AdditionalProps = {}, RootComponentType extends React.ElementType = 'li'> {
47 props: MenuItemOwnProps & AdditionalProps;
48 defaultComponent: RootComponentType;
49}
50export type MenuItemProps<RootComponentType extends React.ElementType = MenuItemTypeMap['defaultComponent']> = PolymorphicProps<MenuItemTypeMap<{}, RootComponentType>, RootComponentType>;
51export interface MenuItemState {
52 disabled: boolean;
53 highlighted: boolean;
54}