Skip to content

Commit 4cb9c3f

Browse files
authored
perf: uninstall classnames, install clsx (#794)
* perf: uninstall classnames, install clsx * perf: uninstall classnames, install clsx
1 parent 45d53c2 commit 4cb9c3f

File tree

9 files changed

+26
-34
lines changed

9 files changed

+26
-34
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"@rc-component/motion": "^1.1.4",
4848
"@rc-component/trigger": "^3.0.0",
4949
"@rc-component/util": "^1.3.0",
50-
"classnames": "2.x",
50+
"clsx": "^2.1.1",
5151
"rc-overflow": "^1.3.1"
5252
},
5353
"devDependencies": {

src/Divider.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from 'react';
2-
import classNames from 'classnames';
2+
import { clsx } from 'clsx';
33
import { MenuContext } from './context/MenuContext';
44
import { useMeasure } from './context/PathContext';
55
import type { MenuDividerType } from './interface';
@@ -15,10 +15,6 @@ export default function Divider({ className, style }: DividerProps) {
1515
}
1616

1717
return (
18-
<li
19-
role="separator"
20-
className={classNames(`${prefixCls}-item-divider`, className)}
21-
style={style}
22-
/>
18+
<li role="separator" className={clsx(`${prefixCls}-item-divider`, className)} style={style} />
2319
);
2420
}

src/Menu.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import classNames from 'classnames';
1+
import { clsx } from 'clsx';
22
import type { CSSMotionProps } from '@rc-component/motion';
33
import Overflow from 'rc-overflow';
44
import useControlledState from '@rc-component/util/lib/hooks/useControlledState';
@@ -563,7 +563,7 @@ const Menu = React.forwardRef<MenuRef, MenuProps>((props, ref) => {
563563
prefixCls={`${prefixCls}-overflow`}
564564
component="ul"
565565
itemComponent={MenuItem}
566-
className={classNames(
566+
className={clsx(
567567
prefixCls,
568568
`${prefixCls}-root`,
569569
`${prefixCls}-${internalMode}`,

src/MenuItem.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import classNames from 'classnames';
1+
import { clsx } from 'clsx';
22
import Overflow from 'rc-overflow';
33
import KeyCode from '@rc-component/util/lib/KeyCode';
44
import omit from '@rc-component/util/lib/omit';
@@ -214,7 +214,7 @@ const InternalMenuItem = React.forwardRef((props: MenuItemProps, ref: React.Ref<
214214
...directionStyle,
215215
...style,
216216
}}
217-
className={classNames(
217+
className={clsx(
218218
itemCls,
219219
{
220220
[`${itemCls}-active`]: active,

src/MenuItemGroup.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import classNames from 'classnames';
1+
import { clsx } from 'clsx';
22
import omit from '@rc-component/util/lib/omit';
33
import * as React from 'react';
44
import { MenuContext } from './context/MenuContext';
@@ -30,19 +30,19 @@ const InternalMenuItemGroup = React.forwardRef<HTMLLIElement, MenuItemGroupProps
3030
role="presentation"
3131
{...restProps}
3232
onClick={e => e.stopPropagation()}
33-
className={classNames(groupPrefixCls, className)}
33+
className={clsx(groupPrefixCls, className)}
3434
>
3535
<div
3636
role="presentation"
37-
className={classNames(`${groupPrefixCls}-title`, menuClassNames?.listTitle)}
37+
className={clsx(`${groupPrefixCls}-title`, menuClassNames?.listTitle)}
3838
style={styles?.listTitle}
3939
title={typeof title === 'string' ? title : undefined}
4040
>
4141
{title}
4242
</div>
4343
<ul
4444
role="group"
45-
className={classNames(`${groupPrefixCls}-list`, menuClassNames?.list)}
45+
className={clsx(`${groupPrefixCls}-list`, menuClassNames?.list)}
4646
style={styles?.list}
4747
>
4848
{children}

src/SubMenu/PopupTrigger.tsx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as React from 'react';
22
import Trigger from '@rc-component/trigger';
3-
import classNames from 'classnames';
3+
import { clsx } from 'clsx';
44
import raf from '@rc-component/util/lib/raf';
55
import type { CSSMotionProps } from '@rc-component/motion';
66
import { MenuContext } from '../context/MenuContext';
@@ -96,11 +96,9 @@ export default function PopupTrigger({
9696
return (
9797
<Trigger
9898
prefixCls={prefixCls}
99-
popupClassName={classNames(
99+
popupClassName={clsx(
100100
`${prefixCls}-popup`,
101-
{
102-
[`${prefixCls}-rtl`]: rtl,
103-
},
101+
{ [`${prefixCls}-rtl`]: rtl },
104102
popupClassName,
105103
rootClassName,
106104
)}

src/SubMenu/SubMenuList.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import * as React from 'react';
2-
import classNames from 'classnames';
2+
import { clsx } from 'clsx';
33
import { MenuContext } from '../context/MenuContext';
44

5-
export interface SubMenuListProps
6-
extends React.HTMLAttributes<HTMLUListElement> {
5+
export interface SubMenuListProps extends React.HTMLAttributes<HTMLUListElement> {
76
children?: React.ReactNode;
87
}
98

@@ -15,7 +14,7 @@ const InternalSubMenuList = (
1514

1615
return (
1716
<ul
18-
className={classNames(
17+
className={clsx(
1918
prefixCls,
2019
rtl && `${prefixCls}-rtl`,
2120
`${prefixCls}-sub`,
@@ -33,6 +32,9 @@ const InternalSubMenuList = (
3332
};
3433

3534
const SubMenuList = React.forwardRef(InternalSubMenuList);
36-
SubMenuList.displayName = 'SubMenuList';
35+
36+
if (process.env.NODE_ENV !== 'production') {
37+
SubMenuList.displayName = 'SubMenuList';
38+
}
3739

3840
export default SubMenuList;

src/SubMenu/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from 'react';
2-
import classNames from 'classnames';
2+
import { clsx } from 'clsx';
33
import Overflow from 'rc-overflow';
44
import warning from '@rc-component/util/lib/warning';
55
import SubMenuList from './SubMenuList';
@@ -339,7 +339,7 @@ const InternalSubMenu = React.forwardRef<HTMLLIElement, SubMenuProps>((props, re
339339
{...restProps}
340340
component="li"
341341
style={style}
342-
className={classNames(subMenuPrefixCls, `${subMenuPrefixCls}-${mode}`, className, {
342+
className={clsx(subMenuPrefixCls, `${subMenuPrefixCls}-${mode}`, className, {
343343
[`${subMenuPrefixCls}-open`]: open,
344344
[`${subMenuPrefixCls}-active`]: mergedActive,
345345
[`${subMenuPrefixCls}-selected`]: childrenSelected,

tests/Private.spec.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable no-undef */
22
import { render } from '@testing-library/react';
3-
import classnames from 'classnames';
3+
import { clsx } from 'clsx';
44
import React from 'react';
55
import Menu, { MenuItem, SubMenu } from '../src';
66

@@ -9,9 +9,7 @@ describe('Private Props', () => {
99
const { container } = render(
1010
<Menu
1111
_internalRenderMenuItem={node =>
12-
React.cloneElement(node, {
13-
className: classnames(node.props.className, 'inject-cls'),
14-
})
12+
React.cloneElement(node, { className: clsx(node.props.className, 'inject-cls') })
1513
}
1614
>
1715
<MenuItem key="1">1</MenuItem>
@@ -27,9 +25,7 @@ describe('Private Props', () => {
2725
mode="inline"
2826
openKeys={['1']}
2927
_internalRenderSubMenuItem={node =>
30-
React.cloneElement(node, {
31-
className: classnames(node.props.className, 'inject-cls'),
32-
})
28+
React.cloneElement(node, { className: clsx(node.props.className, 'inject-cls') })
3329
}
3430
>
3531
<SubMenu key="1" title="1">

0 commit comments

Comments
 (0)