Skip to content

Commit 0476b66

Browse files
authored
[TabsList] Drop component prop (#37042)
1 parent 988e0ad commit 0476b66

File tree

6 files changed

+18
-23
lines changed

6 files changed

+18
-23
lines changed

docs/pages/base/api/tabs-list.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
{
22
"props": {
33
"children": { "type": { "name": "node" } },
4-
"component": { "type": { "name": "elementType" } },
54
"slotProps": {
65
"type": { "name": "shape", "description": "{ root?: func<br>&#124;&nbsp;object }" },
76
"default": "{}"

docs/translations/api-docs-base/tabs-list/tabs-list.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
"componentDescription": "",
33
"propDescriptions": {
44
"children": "The content of the component.",
5-
"component": "The component used for the root node. Either a string to use a HTML element or a component.",
65
"slotProps": "The props used for each slot inside the TabsList.",
76
"slots": "The components used for each slot inside the TabsList. Either a string to use a HTML element or a component. See <a href=\"#slots\">Slots API</a> below for more details."
87
},

packages/mui-base/src/TabsList/TabsList.spec.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,23 @@ const polymorphicComponentTest = () => {
2020
{/* @ts-expect-error */}
2121
<TabsList invalidProp={0} />
2222

23-
<TabsList component="a" href="#" />
23+
<TabsList<'a'> slots={{ root: 'a' }} href="#" />
2424

25-
<TabsList component={CustomComponent} stringProp="test" numberProp={0} />
25+
<TabsList<typeof CustomComponent>
26+
slots={{ root: CustomComponent }}
27+
stringProp="test"
28+
numberProp={0}
29+
/>
2630
{/* @ts-expect-error */}
27-
<TabsList component={CustomComponent} />
31+
<TabsList<typeof CustomComponent> slots={{ root: CustomComponent }} />
2832

29-
<TabsList
30-
component="button"
33+
<TabsList<'button'>
34+
slots={{ root: 'button' }}
3135
onClick={(e: React.MouseEvent<HTMLButtonElement>) => e.currentTarget.checkValidity()}
3236
/>
3337

3438
<TabsList<'button'>
35-
component="button"
39+
slots={{ root: 'button' }}
3640
ref={(elem) => {
3741
expectType<HTMLButtonElement | null, typeof elem>(elem);
3842
}}

packages/mui-base/src/TabsList/TabsList.test.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ describe('<TabsList />', () => {
5252
},
5353
skip: [
5454
'reactTestRenderer', // Need to be wrapped with TabsContext
55+
'componentProp',
5556
],
5657
}));
5758
});

packages/mui-base/src/TabsList/TabsList.tsx

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import * as React from 'react';
22
import PropTypes from 'prop-types';
3-
import { OverridableComponent } from '@mui/types';
43
import composeClasses from '../composeClasses';
5-
import { useSlotProps, WithOptionalOwnerState } from '../utils';
4+
import { PolymorphicComponent, useSlotProps, WithOptionalOwnerState } from '../utils';
65
import { getTabsListUtilityClass } from './tabsListClasses';
76
import {
87
TabsListOwnerState,
@@ -38,7 +37,7 @@ const TabsList = React.forwardRef(function TabsList<RootComponentType extends Re
3837
props: TabsListProps<RootComponentType>,
3938
forwardedRef: React.ForwardedRef<Element>,
4039
) {
41-
const { children, component, slotProps = {}, slots = {}, ...other } = props;
40+
const { children, slotProps = {}, slots = {}, ...other } = props;
4241

4342
const { isRtl, orientation, getRootProps, contextValue } = useTabsList({
4443
rootRef: forwardedRef,
@@ -52,7 +51,7 @@ const TabsList = React.forwardRef(function TabsList<RootComponentType extends Re
5251

5352
const classes = useUtilityClasses(ownerState);
5453

55-
const TabsListRoot: React.ElementType = component ?? slots.root ?? 'div';
54+
const TabsListRoot: React.ElementType = slots.root ?? 'div';
5655
const tabsListRootProps: WithOptionalOwnerState<TabsListRootSlotProps> = useSlotProps({
5756
elementType: TabsListRoot,
5857
getSlotProps: getRootProps,
@@ -67,7 +66,7 @@ const TabsList = React.forwardRef(function TabsList<RootComponentType extends Re
6766
<TabsListRoot {...tabsListRootProps}>{children}</TabsListRoot>
6867
</TabsListProvider>
6968
);
70-
}) as OverridableComponent<TabsListTypeMap>;
69+
}) as PolymorphicComponent<TabsListTypeMap>;
7170

7271
TabsList.propTypes /* remove-proptypes */ = {
7372
// ----------------------------- Warning --------------------------------
@@ -78,11 +77,6 @@ TabsList.propTypes /* remove-proptypes */ = {
7877
* The content of the component.
7978
*/
8079
children: PropTypes.node,
81-
/**
82-
* The component used for the root node.
83-
* Either a string to use a HTML element or a component.
84-
*/
85-
component: PropTypes.elementType,
8680
/**
8781
* The props used for each slot inside the TabsList.
8882
* @default {}

packages/mui-base/src/TabsList/TabsList.types.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as React from 'react';
2-
import { OverrideProps, Simplify } from '@mui/types';
2+
import { Simplify } from '@mui/types';
33
import { UseTabsListRootSlotProps } from '../useTabsList';
4-
import { SlotComponentProps } from '../utils';
4+
import { PolymorphicProps, SlotComponentProps } from '../utils';
55

66
export interface TabsListRootSlotPropsOverrides {}
77

@@ -44,9 +44,7 @@ export interface TabsListTypeMap<
4444

4545
export type TabsListProps<
4646
RootComponentType extends React.ElementType = TabsListTypeMap['defaultComponent'],
47-
> = OverrideProps<TabsListTypeMap<{}, RootComponentType>, RootComponentType> & {
48-
component?: RootComponentType;
49-
};
47+
> = PolymorphicProps<TabsListTypeMap<{}, RootComponentType>, RootComponentType>;
5048

5149
export type TabsListOwnerState = Simplify<
5250
TabsListOwnProps & {

0 commit comments

Comments
 (0)