Skip to content

Commit 701e750

Browse files
committed
chore: add itemWrapperRender
1 parent 1d903d2 commit 701e750

File tree

2 files changed

+30
-26
lines changed

2 files changed

+30
-26
lines changed

src/Step.tsx

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export interface StepProps {
2828
iconRender?: StepsProps['iconRender'];
2929
icon?: React.ReactNode;
3030
itemRender?: StepsProps['itemRender'];
31+
itemWrapperRender?: StepsProps['itemWrapperRender'];
3132

3233
// Event
3334
onClick?: (index: number) => void;
@@ -50,6 +51,7 @@ export default function Step(props: StepProps) {
5051
// render
5152
itemRender,
5253
iconRender,
54+
itemWrapperRender,
5355

5456
// events
5557
onClick,
@@ -122,6 +124,30 @@ export default function Step(props: StepProps) {
122124
classNames.item,
123125
);
124126

127+
const wrapperNode = (
128+
<div className={`${itemCls}-wrapper`} {...accessibilityProps}>
129+
<div className={`${itemCls}-icon`}>{iconRender?.(renderInfo)}</div>
130+
<div className={`${itemCls}-section`}>
131+
<div className={`${itemCls}-header`}>
132+
<div className={`${itemCls}-title`}>{title}</div>
133+
{subTitle && (
134+
<div
135+
title={typeof subTitle === 'string' ? subTitle : undefined}
136+
className={`${itemCls}-subtitle`}
137+
>
138+
{subTitle}
139+
</div>
140+
)}
141+
142+
{!last && (
143+
<Rail prefixCls={itemCls} classNames={classNames} styles={styles} status={nextStatus} />
144+
)}
145+
</div>
146+
{mergedContent && <div className={`${itemCls}-description`}>{mergedContent}</div>}
147+
</div>
148+
</div>
149+
);
150+
125151
let stepNode: React.ReactNode = (
126152
<div
127153
{...restItemProps}
@@ -131,32 +157,7 @@ export default function Step(props: StepProps) {
131157
...style,
132158
}}
133159
>
134-
<div className={`${itemCls}-wrapper`} {...accessibilityProps}>
135-
<div className={`${itemCls}-icon`}>{iconRender?.(renderInfo)}</div>
136-
<div className={`${itemCls}-section`}>
137-
<div className={`${itemCls}-header`}>
138-
<div className={`${itemCls}-title`}>{title}</div>
139-
{subTitle && (
140-
<div
141-
title={typeof subTitle === 'string' ? subTitle : undefined}
142-
className={`${itemCls}-subtitle`}
143-
>
144-
{subTitle}
145-
</div>
146-
)}
147-
148-
{!last && (
149-
<Rail
150-
prefixCls={itemCls}
151-
classNames={classNames}
152-
styles={styles}
153-
status={nextStatus}
154-
/>
155-
)}
156-
</div>
157-
{mergedContent && <div className={`${itemCls}-description`}>{mergedContent}</div>}
158-
</div>
159-
</div>
160+
{itemWrapperRender ? itemWrapperRender(wrapperNode) : wrapperNode}
160161
</div>
161162
);
162163

src/Steps.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export interface StepsProps {
5757
// render
5858
iconRender?: (info: RenderInfo) => React.ReactNode;
5959
itemRender?: (originNode: React.ReactElement, info: RenderInfo) => React.ReactNode;
60+
itemWrapperRender?: (originNode: React.ReactElement) => React.ReactNode;
6061
}
6162

6263
export default function Steps(props: StepsProps) {
@@ -83,6 +84,7 @@ export default function Steps(props: StepsProps) {
8384
// render
8485
iconRender,
8586
itemRender,
87+
itemWrapperRender,
8688

8789
...restProps
8890
} = props;
@@ -159,6 +161,7 @@ export default function Steps(props: StepsProps) {
159161
// Render
160162
iconRender={iconRender}
161163
itemRender={itemRender}
164+
itemWrapperRender={itemWrapperRender}
162165
onClick={onChange && onStepClick}
163166
/>
164167
);

0 commit comments

Comments
 (0)