Skip to content

Commit e1452fa

Browse files
committed
perf: uninstall classnames, install clsx
1 parent 40ff6ac commit e1452fa

File tree

6 files changed

+26
-47
lines changed

6 files changed

+26
-47
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ lib
2727
es
2828
coverage
2929
package-lock.json
30+
pnpm-lock.yaml
3031
yarn.lock
3132
.doc
3233
.umi

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,16 @@
5252
]
5353
},
5454
"dependencies": {
55-
"classnames": "^2.2.3",
56-
"@rc-component/util": "^1.2.1"
55+
"@rc-component/util": "^1.2.1",
56+
"clsx": "^2.1.1"
5757
},
5858
"devDependencies": {
5959
"@rc-component/father-plugin": "^2.0.2",
6060
"@rc-component/np": "^1.0.0",
6161
"@testing-library/jest-dom": "^6.4.5",
6262
"@testing-library/react": "^15.0.6",
63-
"@types/classnames": "^2.2.9",
6463
"@types/jest": "^29.4.0",
64+
"@types/node": "^24.5.2",
6565
"@types/react": "^18.0.28",
6666
"@types/react-dom": "^18.0.11",
6767
"@umijs/fabric": "^4.0.1",

src/Rail.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 cls from 'classnames';
2+
import { clsx } from 'clsx';
33
import type { Status } from './Steps';
44

55
export interface RailProps {
@@ -14,5 +14,5 @@ export default function Rail(props: RailProps) {
1414
const railCls = `${prefixCls}-rail`;
1515

1616
// ============================= render =============================
17-
return <div className={cls(railCls, `${railCls}-${status}`, className)} style={style} />;
17+
return <div className={clsx(railCls, `${railCls}-${status}`, className)} style={style} />;
1818
}

src/Step.tsx

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint react/prop-types: 0 */
22
import * as React from 'react';
3-
import cls from 'classnames';
3+
import { clsx } from 'clsx';
44
import KeyCode from '@rc-component/util/lib/KeyCode';
55
import type { Status, StepItem, StepsProps } from './Steps';
66
import Rail from './Rail';
@@ -126,7 +126,7 @@ export default function Step(props: StepProps) {
126126
const hasTitle = hasContent(title);
127127
const hasSubTitle = hasContent(subTitle);
128128

129-
const classString = cls(
129+
const classString = clsx(
130130
itemCls,
131131
`${itemCls}-${mergedStatus}`,
132132
{
@@ -152,11 +152,8 @@ export default function Step(props: StepProps) {
152152

153153
const wrapperNode = (
154154
<div
155-
className={cls(`${itemCls}-wrapper`, classNames.itemWrapper, itemClassNames.wrapper)}
156-
style={{
157-
...styles.itemWrapper,
158-
...itemStyles.wrapper,
159-
}}
155+
className={clsx(`${itemCls}-wrapper`, classNames.itemWrapper, itemClassNames.wrapper)}
156+
style={{ ...styles.itemWrapper, ...itemStyles.wrapper }}
160157
>
161158
{/* Icon */}
162159
<StepIconSemanticContext.Provider
@@ -169,42 +166,30 @@ export default function Step(props: StepProps) {
169166
</StepIconSemanticContext.Provider>
170167

171168
<div
172-
className={cls(`${itemCls}-section`, classNames.itemSection, itemClassNames.section)}
173-
style={{
174-
...styles.itemSection,
175-
...itemStyles.section,
176-
}}
169+
className={clsx(`${itemCls}-section`, classNames.itemSection, itemClassNames.section)}
170+
style={{ ...styles.itemSection, ...itemStyles.section }}
177171
>
178172
<div
179-
className={cls(`${itemCls}-header`, classNames.itemHeader, itemClassNames.header)}
180-
style={{
181-
...styles.itemHeader,
182-
...itemStyles.header,
183-
}}
173+
className={clsx(`${itemCls}-header`, classNames.itemHeader, itemClassNames.header)}
174+
style={{ ...styles.itemHeader, ...itemStyles.header }}
184175
>
185176
{hasTitle && (
186177
<div
187-
className={cls(`${itemCls}-title`, classNames.itemTitle, itemClassNames.title)}
188-
style={{
189-
...styles.itemTitle,
190-
...itemStyles.title,
191-
}}
178+
className={clsx(`${itemCls}-title`, classNames.itemTitle, itemClassNames.title)}
179+
style={{ ...styles.itemTitle, ...itemStyles.title }}
192180
>
193181
{title}
194182
</div>
195183
)}
196184
{hasSubTitle && (
197185
<div
198186
title={typeof subTitle === 'string' ? subTitle : undefined}
199-
className={cls(
187+
className={clsx(
200188
`${itemCls}-subtitle`,
201189
classNames.itemSubtitle,
202190
itemClassNames.subtitle,
203191
)}
204-
style={{
205-
...styles.itemSubtitle,
206-
...itemStyles.subtitle,
207-
}}
192+
style={{ ...styles.itemSubtitle, ...itemStyles.subtitle }}
208193
>
209194
{subTitle}
210195
</div>
@@ -213,18 +198,15 @@ export default function Step(props: StepProps) {
213198
{!last && (
214199
<Rail
215200
prefixCls={itemCls}
216-
className={cls(classNames.itemRail, itemClassNames.rail)}
217-
style={{
218-
...styles.itemRail,
219-
...itemStyles.rail,
220-
}}
201+
className={clsx(classNames.itemRail, itemClassNames.rail)}
202+
style={{ ...styles.itemRail, ...itemStyles.rail }}
221203
status={railFollowPrevStatus ? status : nextStatus}
222204
/>
223205
)}
224206
</div>
225207
{hasContent(mergedContent) && (
226208
<div
227-
className={cls(`${itemCls}-content`, classNames.itemContent, itemClassNames.content)}
209+
className={clsx(`${itemCls}-content`, classNames.itemContent, itemClassNames.content)}
228210
style={{ ...styles.itemContent, ...itemStyles.content }}
229211
>
230212
{mergedContent}

src/StepIcon.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from 'react';
2-
import cls from 'classnames';
2+
import { clsx } from 'clsx';
33
import { StepsContext } from './Context';
44
import pickAttrs from '@rc-component/util/lib/pickAttrs';
55

@@ -24,12 +24,8 @@ const StepIcon = React.forwardRef<HTMLDivElement, StepIconProps>((props, ref) =>
2424
<div
2525
{...pickAttrs(restProps, false)}
2626
ref={ref}
27-
className={cls(`${itemCls}-icon`, classNames.itemIcon, itemClassName, className)}
28-
style={{
29-
...styles.itemIcon,
30-
...itemStyle,
31-
...style,
32-
}}
27+
className={clsx(`${itemCls}-icon`, classNames.itemIcon, itemClassName, className)}
28+
style={{ ...styles.itemIcon, ...itemStyle, ...style }}
3329
>
3430
{children}
3531
</div>

src/Steps.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint react/no-did-mount-set-state: 0, react/prop-types: 0 */
2-
import cls from 'classnames';
2+
import { clsx } from 'clsx';
33
import React from 'react';
44
import Step from './Step';
55
import { StepsContext, type StepsContextProps } from './Context';
@@ -140,7 +140,7 @@ export default function Steps(props: StepsProps) {
140140
!isVertical && titlePlacement === 'vertical' ? 'vertical' : 'horizontal';
141141

142142
// ============================= styles =============================
143-
const classString = cls(
143+
const classString = clsx(
144144
prefixCls,
145145
`${prefixCls}-${mergedOrientation}`,
146146
`${prefixCls}-title-${mergeTitlePlacement}`,

0 commit comments

Comments
 (0)