@@ -6,6 +6,7 @@ import * as React from 'react';
6
6
7
7
import MotionThumb from './MotionThumb' ;
8
8
9
+ export type SemanticName = 'item' | 'label' ;
9
10
export type SegmentedValue = string | number ;
10
11
11
12
export type SegmentedRawOption = SegmentedValue ;
@@ -41,6 +42,8 @@ export interface SegmentedProps<ValueType = SegmentedValue>
41
42
motionName ?: string ;
42
43
vertical ?: boolean ;
43
44
name ?: string ;
45
+ classNames ?: Partial < Record < SemanticName , string > > ;
46
+ styles ?: Partial < Record < SemanticName , React . CSSProperties > > ;
44
47
}
45
48
46
49
function getValidTitle ( option : SegmentedLabeledOption ) {
@@ -74,6 +77,9 @@ function normalizeOptions(options: SegmentedOptions): SegmentedLabeledOption[] {
74
77
const InternalSegmentedOption : React . FC < {
75
78
prefixCls : string ;
76
79
className ?: string ;
80
+ style ?: React . CSSProperties ;
81
+ classNames ?: Partial < Record < SemanticName , string > > ;
82
+ styles ?: Partial < Record < SemanticName , React . CSSProperties > > ;
77
83
disabled ?: boolean ;
78
84
checked : boolean ;
79
85
label : React . ReactNode ;
@@ -92,6 +98,9 @@ const InternalSegmentedOption: React.FC<{
92
98
} > = ( {
93
99
prefixCls,
94
100
className,
101
+ style,
102
+ styles,
103
+ classNames : segmentedClassNames ,
95
104
disabled,
96
105
checked,
97
106
label,
@@ -117,6 +126,7 @@ const InternalSegmentedOption: React.FC<{
117
126
className = { classNames ( className , {
118
127
[ `${ prefixCls } -item-disabled` ] : disabled ,
119
128
} ) }
129
+ style = { style }
120
130
onMouseDown = { onMouseDown }
121
131
>
122
132
< input
@@ -132,9 +142,13 @@ const InternalSegmentedOption: React.FC<{
132
142
onKeyUp = { onKeyUp }
133
143
/>
134
144
< div
135
- className = { `${ prefixCls } -item-label` }
145
+ className = { classNames (
146
+ `${ prefixCls } -item-label` ,
147
+ segmentedClassNames ?. label ,
148
+ ) }
136
149
title = { title }
137
150
aria-selected = { checked }
151
+ style = { styles ?. label }
138
152
>
139
153
{ label }
140
154
</ div >
@@ -155,6 +169,9 @@ const Segmented = React.forwardRef<HTMLDivElement, SegmentedProps>(
155
169
name,
156
170
onChange,
157
171
className = '' ,
172
+ style,
173
+ styles,
174
+ classNames : segmentedClassNames ,
158
175
motionName = 'thumb-motion' ,
159
176
...restProps
160
177
} = props ;
@@ -240,12 +257,12 @@ const Segmented = React.forwardRef<HTMLDivElement, SegmentedProps>(
240
257
break ;
241
258
}
242
259
} ;
243
-
244
260
return (
245
261
< div
246
262
role = "radiogroup"
247
263
aria-label = "segmented control"
248
264
tabIndex = { disabled ? undefined : 0 }
265
+ style = { style }
249
266
{ ...divProps }
250
267
className = { classNames (
251
268
prefixCls ,
@@ -285,6 +302,7 @@ const Segmented = React.forwardRef<HTMLDivElement, SegmentedProps>(
285
302
className = { classNames (
286
303
segmentedOption . className ,
287
304
`${ prefixCls } -item` ,
305
+ segmentedClassNames ?. item ,
288
306
{
289
307
[ `${ prefixCls } -item-selected` ] :
290
308
segmentedOption . value === rawValue && ! thumbShow ,
@@ -294,6 +312,9 @@ const Segmented = React.forwardRef<HTMLDivElement, SegmentedProps>(
294
312
segmentedOption . value === rawValue ,
295
313
} ,
296
314
) }
315
+ style = { styles ?. item }
316
+ classNames = { segmentedClassNames }
317
+ styles = { styles }
297
318
checked = { segmentedOption . value === rawValue }
298
319
onChange = { handleChange }
299
320
onFocus = { handleFocus }
0 commit comments