@@ -8,13 +8,53 @@ const style: React.CSSProperties = {
88 margin : 50 ,
99} ;
1010
11+ // Basic editable with disabled handles
12+ const EditableWithDisabled = ( ) => {
13+ const [ value , setValue ] = useState < number [ ] > ( [ 0 , 30 , 100 ] ) ;
14+ const [ disabled , setDisabled ] = useState < boolean [ ] > ( [ true , false , true ] ) ;
15+
16+ return (
17+ < div >
18+ < Slider
19+ range = { {
20+ editable : true ,
21+ minCount : 2 ,
22+ maxCount : 5 ,
23+ } }
24+ value = { value }
25+ onChange = { ( v ) => setValue ( v as number [ ] ) }
26+ disabled = { disabled }
27+ />
28+ < div style = { { marginTop : 16 } } >
29+ { value . map ( ( val , index ) => (
30+ < label key = { index } style = { { marginRight : 16 } } >
31+ < input
32+ type = "checkbox"
33+ checked = { disabled [ index ] }
34+ onChange = { ( ) => {
35+ const newDisabled = [ ...disabled ] ;
36+ newDisabled [ index ] = ! newDisabled [ index ] ;
37+ setDisabled ( newDisabled ) ;
38+ } }
39+ />
40+ Handle { index + 1 } ({ val } ) { disabled [ index ] ? 'Disabled' : 'Enabled' }
41+ </ label >
42+ ) ) }
43+ </ div >
44+ < p style = { { marginTop : 8 , color : '#999' , fontSize : 12 } } >
45+ Try: Click track to add handle • Drag handle to edge to delete • Toggle checkboxes to disable handles
46+ </ p >
47+ </ div >
48+ ) ;
49+ } ;
50+
1151const BasicDisabledHandle = ( ) => {
1252 const [ value , setValue ] = useState < number [ ] > ( [ 0 , 30 , 60 , 100 ] ) ;
13- const [ disabled , setDisabled ] = useState ( [ true , false , false , true ] ) ;
53+ const [ disabled , setDisabled ] = useState ( [ true ] ) ;
1454
1555 return (
1656 < div >
17- < Slider range value = { value } onChange = { ( v ) => setValue ( v as number [ ] ) } disabled = { disabled } />
57+ < Slider range = { { draggableTrack : true } } value = { value } onChange = { ( v ) => setValue ( v as number [ ] ) } disabled = { disabled } />
1858 < div style = { { marginTop : 16 } } >
1959 { value . map ( ( val , index ) => (
2060 < label key = { index } style = { { marginRight : 16 } } >
@@ -50,36 +90,24 @@ const DisabledHandleAsBoundary = () => {
5090 ) ;
5191} ;
5292
53- const MultipleDisabledBoundaries = ( ) => {
54- const [ value , setValue ] = useState < number [ ] > ( [ 10 , 30 , 50 , 70 , 90 ] ) ;
55-
56- return (
57- < div >
58- < Slider range value = { value } onChange = { ( v ) => setValue ( v as number [ ] ) } disabled = { [ true , false , true , false , true ] } />
59- < p style = { { marginTop : 8 , color : '#999' } } >
60- Handles at 10, 50, 90 are disabled.
61- Handle at 30 can only move between 10-50, handle at 70 can only move between 50-90.
62- </ p >
63- </ div >
64- ) ;
65- } ;
66-
6793export default ( ) => (
6894 < div >
6995 < div style = { style } >
70- < h3 > Basic Disabled Handle</ h3 >
71- < p > Toggle checkboxes to disable/enable specific handles</ p >
96+ < h3 > Disabled Handle + Draggable Track </ h3 >
97+ < p > Toggle checkboxes to disable/enable specific handles. Drag the track area to move the range. </ p >
7298 < BasicDisabledHandle />
7399 </ div >
74100
75101 < div style = { style } >
76102 < h3 > Disabled Handle as Boundary</ h3 >
77103 < DisabledHandleAsBoundary />
78104 </ div >
79-
80- < div style = { style } >
81- < h3 > Multiple Disabled Boundaries</ h3 >
82- < MultipleDisabledBoundaries />
105+ < div >
106+ < div style = { style } >
107+ < h3 > Editable + Disabled Array</ h3 >
108+ < p > Toggle checkboxes to enable/disable handles in editable mode</ p >
109+ < EditableWithDisabled />
110+ </ div >
83111 </ div >
84112 </ div >
85113) ;
0 commit comments