@@ -29,7 +29,10 @@ type SegmentType = Pick<SelectPickerOptionType, 'value'> & {
29
29
30
30
export interface NSegmentedControlProps {
31
31
segments : SegmentType [ ]
32
- // initialSelectedTab: TabType['value']
32
+ /**
33
+ * If defined, the component is controlled
34
+ */
35
+ value ?: SegmentType [ 'value' ]
33
36
onChange ?: ( selectedTab : SegmentType ) => void
34
37
name : string
35
38
size ?: Extract < ComponentSizeType , ComponentSizeType . xs | ComponentSizeType . small | ComponentSizeType . medium >
@@ -53,8 +56,15 @@ const wrapWithTooltip = (tooltipProps: SegmentType['tooltipProps']) => (children
53
56
</ Tooltip >
54
57
)
55
58
56
- const NSegmentedControl = ( { segments, onChange, name, size = ComponentSizeType . medium } : NSegmentedControlProps ) => {
59
+ const NSegmentedControl = ( {
60
+ segments,
61
+ onChange,
62
+ name,
63
+ size = ComponentSizeType . medium ,
64
+ value : controlledValue ,
65
+ } : NSegmentedControlProps ) => {
57
66
const [ selectedSegmentValue , setSelectedSegmentValue ] = useState < SegmentType [ 'value' ] | null > ( segments [ 0 ] . value )
67
+ const segmentValue = controlledValue === undefined ? selectedSegmentValue : controlledValue
58
68
59
69
const handleSegmentChange = ( updatedSegment : SegmentType ) => {
60
70
setSelectedSegmentValue ( updatedSegment . value )
@@ -67,7 +77,7 @@ const NSegmentedControl = ({ segments, onChange, name, size = ComponentSizeType.
67
77
>
68
78
{ segments . map ( ( segment ) => {
69
79
const { value, icon, isError, label, tooltipProps, ariaLabel } = segment
70
- const isSelected = value === selectedSegmentValue
80
+ const isSelected = value === segmentValue
71
81
72
82
return (
73
83
< ConditionalWrap
0 commit comments