diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.d.ts b/packages/mui-material/src/Autocomplete/Autocomplete.d.ts index 20c557ef3a3332..b9773c9d05ed25 100644 --- a/packages/mui-material/src/Autocomplete/Autocomplete.d.ts +++ b/packages/mui-material/src/Autocomplete/Autocomplete.d.ts @@ -293,4 +293,5 @@ export default function Autocomplete< Multiple extends boolean | undefined = false, DisableClearable extends boolean | undefined = false, FreeSolo extends boolean | undefined = false, ->(props: AutocompleteProps): JSX.Element; + ChipComponent extends React.ElementType = ChipTypeMap['defaultComponent'], +>(props: AutocompleteProps): JSX.Element; diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.spec.tsx b/packages/mui-material/src/Autocomplete/Autocomplete.spec.tsx index b4120b5c4bd6b8..236486b43de6c0 100644 --- a/packages/mui-material/src/Autocomplete/Autocomplete.spec.tsx +++ b/packages/mui-material/src/Autocomplete/Autocomplete.spec.tsx @@ -1,17 +1,20 @@ import * as React from 'react'; import Autocomplete, { + AutocompleteOwnerState, AutocompleteProps, AutocompleteRenderGetTagProps, } from '@mui/material/Autocomplete'; import TextField from '@mui/material/TextField'; import { expectType } from '@mui/types'; +import { ChipTypeMap } from '@mui/material/Chip'; interface MyAutocompleteProps< T, Multiple extends boolean | undefined, DisableClearable extends boolean | undefined, FreeSolo extends boolean | undefined, -> extends AutocompleteProps { + ChipComponent extends React.ElementType = ChipTypeMap['defaultComponent'], +> extends AutocompleteProps { myProp?: string; } @@ -20,10 +23,24 @@ function MyAutocomplete< Multiple extends boolean | undefined = false, DisableClearable extends boolean | undefined = false, FreeSolo extends boolean | undefined = false, ->(props: MyAutocompleteProps) { + ChipComponent extends React.ElementType = ChipTypeMap['defaultComponent'], +>(props: MyAutocompleteProps) { return ; } +// Test for ChipComponent generic type + + options={['1', '2', '3']} + renderTags={(value, getTagProps, ownerState) => { + expectType, typeof ownerState>( + ownerState, + ); + + return ''; + }} + renderInput={() => null} +/>; + // multiple prop can be assigned for components that extend AutocompleteProps