@@ -44,7 +44,7 @@ export interface SegmentedProps<ValueType = SegmentedValue>
44
44
name ?: string ;
45
45
classNames ?: Partial < Record < SemanticName , string > > ;
46
46
styles ?: Partial < Record < SemanticName , React . CSSProperties > > ;
47
- itemRender ?: ( node : React . ReactNode ) => React . ReactNode ;
47
+ itemRender ?: ( node : React . ReactNode , itemInfo : ItemInfo ) => React . ReactNode ;
48
48
}
49
49
50
50
function getValidTitle ( option : SegmentedLabeledOption ) {
@@ -75,7 +75,7 @@ function normalizeOptions(options: SegmentedOptions): SegmentedLabeledOption[] {
75
75
} ) ;
76
76
}
77
77
78
- const InternalSegmentedOption : React . FC < {
78
+ interface ItemInfo {
79
79
prefixCls : string ;
80
80
className ?: string ;
81
81
style ?: React . CSSProperties ;
@@ -87,7 +87,6 @@ const InternalSegmentedOption: React.FC<{
87
87
title ?: string ;
88
88
value : SegmentedRawOption ;
89
89
name ?: string ;
90
- itemRender ?: ( node : React . ReactNode ) => React . ReactNode ;
91
90
onChange : (
92
91
e : React . ChangeEvent < HTMLInputElement > ,
93
92
value : SegmentedRawOption ,
@@ -97,26 +96,33 @@ const InternalSegmentedOption: React.FC<{
97
96
onKeyDown : ( e : React . KeyboardEvent ) => void ;
98
97
onKeyUp : ( e : React . KeyboardEvent ) => void ;
99
98
onMouseDown : ( ) => void ;
100
- } > = ( {
101
- prefixCls,
102
- className,
103
- style,
104
- styles,
105
- classNames : segmentedClassNames ,
106
- disabled,
107
- checked,
108
- label,
109
- title,
110
- value,
111
- name,
112
- itemRender = ( node : React . ReactNode ) => node ,
113
- onChange,
114
- onFocus,
115
- onBlur,
116
- onKeyDown,
117
- onKeyUp,
118
- onMouseDown,
119
- } ) => {
99
+ }
100
+
101
+ const InternalSegmentedOption : React . FC <
102
+ {
103
+ itemRender ?: ( node : React . ReactNode , itemInfo : ItemInfo ) => React . ReactNode ;
104
+ } & ItemInfo
105
+ > = ( props ) => {
106
+ const {
107
+ prefixCls,
108
+ className,
109
+ style,
110
+ styles,
111
+ classNames : segmentedClassNames ,
112
+ disabled,
113
+ checked,
114
+ label,
115
+ title,
116
+ value,
117
+ name,
118
+ itemRender = ( node : React . ReactNode ) => node ,
119
+ onChange,
120
+ onFocus,
121
+ onBlur,
122
+ onKeyDown,
123
+ onKeyUp,
124
+ onMouseDown,
125
+ } = props ;
120
126
const handleChange = ( event : React . ChangeEvent < HTMLInputElement > ) => {
121
127
if ( disabled ) {
122
128
return ;
@@ -157,7 +163,10 @@ const InternalSegmentedOption: React.FC<{
157
163
</ div >
158
164
</ label >
159
165
) ;
160
- return itemRender ( ItemContent ) ;
166
+
167
+ const renderProps = { ...props } ;
168
+ delete renderProps . itemRender ;
169
+ return itemRender ( ItemContent , renderProps ) ;
161
170
} ;
162
171
163
172
const Segmented = React . forwardRef < HTMLDivElement , SegmentedProps > (
0 commit comments