1
1
import { Theme , withStyles } from '@material-ui/core' ;
2
+
2
3
import FormControl from '@material-ui/core/FormControl' ;
3
4
import FormHelperText from '@material-ui/core/FormHelperText' ;
4
5
import FormLabel from '@material-ui/core/FormLabel' ;
@@ -9,18 +10,18 @@ import { componentMapper } from '@bluebase/component-mapper';
9
10
10
11
const styles = ( theme : Theme ) : any => ( {
11
12
helperText : {
12
- marginTop : theme . spacing . unit * 2
13
+ marginTop : theme . spacing . unit * 2 ,
13
14
} ,
14
15
inlineSlider : {
15
16
display : 'flex' ,
16
17
flex : 1 ,
17
18
} ,
18
19
inlineValue : {
19
- marginLeft : theme . spacing . unit * 2
20
+ marginLeft : theme . spacing . unit * 2 ,
20
21
} ,
21
22
label : {
22
23
flex : 1 ,
23
- marginBottom : theme . spacing . unit * 2
24
+ marginBottom : theme . spacing . unit * 2 ,
24
25
} ,
25
26
labelWrapper : {
26
27
display : 'flex' ,
@@ -32,81 +33,93 @@ const styles = (theme: Theme): any => ({
32
33
flex : 1 ,
33
34
} ,
34
35
value : {
35
- marginBottom : theme . spacing . unit * 2
36
+ marginBottom : theme . spacing . unit * 2 ,
36
37
} ,
37
38
} ) ;
38
39
39
- export const Slider = withStyles ( styles ) ( componentMapper < SliderProps > ( MUISlider , {
40
+ export const Slider = withStyles ( styles ) (
41
+ componentMapper < SliderProps > (
42
+ MUISlider ,
43
+ {
44
+ max : 'maximumValue' ,
45
+ min : 'minimumValue' ,
40
46
41
- max : 'maximumValue' ,
42
- min : 'minimumValue' ,
47
+ onChange : ( { onChange, onValueChange } : any ) => ( event : any , value : number ) => {
48
+ if ( onChange ) {
49
+ onChange ( event , value ) ;
50
+ }
43
51
44
- onChange : ( { onChange , onValueChange } : any ) => ( event : any , value : number ) => {
45
- if ( onChange ) {
46
- onChange ( event , value ) ;
47
- }
52
+ if ( onValueChange ) {
53
+ onValueChange ( value ) ;
54
+ }
55
+ } ,
48
56
49
- if ( onValueChange ) {
50
- onValueChange ( value ) ;
51
- }
52
- }
57
+ classes : 'classes' ,
58
+ disabled : 'disabled' ,
59
+ error : 'error' ,
60
+ helperText : 'helperText' ,
61
+ id : 'id' ,
62
+ label : 'label' ,
63
+ name : 'name' ,
64
+ required : 'required' ,
65
+ showValue : 'showValue' ,
66
+ step : 'step' ,
67
+ value : 'value' ,
68
+ } ,
69
+ {
70
+ render ( newProps : any , Component : any ) {
71
+ const { error, helperText, id, label, required, classes, showValue, ...props } = newProps ;
53
72
54
- } , {
55
- ignore : [ 'onValueChange' ] ,
56
- rest : true ,
57
- render ( newProps : any , Component : any ) {
58
- const {
59
- error,
60
- helperText,
61
- id,
62
- label,
63
- required,
64
- classes,
65
- showValue,
66
- ...props
67
- } = newProps ;
73
+ const formControlProps = {
74
+ error,
75
+ required,
76
+ } ;
68
77
69
- const formControlProps = {
70
- error,
71
- required,
72
- } ;
78
+ // Label
79
+ let labelNode : React . ReactNode = null ;
73
80
74
- // Label
75
- let labelNode : React . ReactNode = null ;
76
-
77
- // Render a simple label
78
- if ( label && ! showValue ) {
79
- labelNode = < FormLabel className = { classes . label } htmlFor = { id } > { label } </ FormLabel > ;
80
- }
81
- // If we have label and show value, then we show value in line with the label
82
- else if ( label && showValue ) {
83
- labelNode = (
84
- < div className = { classes . labelWrapper } >
85
- < FormLabel className = { classes . label } htmlFor = { id } > { label } </ FormLabel >
86
- < FormLabel className = { classes . value } > { props . value } </ FormLabel >
87
- </ div >
88
- ) ;
89
- }
81
+ // Render a simple label
82
+ if ( label && ! showValue ) {
83
+ labelNode = (
84
+ < FormLabel className = { classes . label } htmlFor = { id } >
85
+ { label }
86
+ </ FormLabel >
87
+ ) ;
88
+ }
89
+ // If we have label and show value, then we show value in line with the label
90
+ else if ( label && showValue ) {
91
+ labelNode = (
92
+ < div className = { classes . labelWrapper } >
93
+ < FormLabel className = { classes . label } htmlFor = { id } >
94
+ { label }
95
+ </ FormLabel >
96
+ < FormLabel className = { classes . value } > { props . value } </ FormLabel >
97
+ </ div >
98
+ ) ;
99
+ }
90
100
101
+ let sliderNode = < Component id = { id } { ...props } /> ;
91
102
92
- let sliderNode = < Component id = { id } { ...props } /> ;
103
+ // If theres no label then we show value in line with the slider
104
+ if ( ! label && showValue ) {
105
+ sliderNode = (
106
+ < div className = { classes . sliderWrapper } >
107
+ < div className = { classes . inlineSlider } > { sliderNode } </ div >
108
+ < FormLabel className = { classes . inlineValue } > { props . value } </ FormLabel >
109
+ </ div >
110
+ ) ;
111
+ }
93
112
94
- // If theres no label then we show value in line with the slider
95
- if ( ! label && showValue ) {
96
- sliderNode = (
97
- < div className = { classes . sliderWrapper } >
98
- < div className = { classes . inlineSlider } > { sliderNode } </ div >
99
- < FormLabel className = { classes . inlineValue } > { props . value } </ FormLabel >
100
- </ div >
101
- ) ;
113
+ return (
114
+ < FormControl { ...formControlProps } >
115
+ { labelNode }
116
+ { sliderNode }
117
+ { helperText ? (
118
+ < FormHelperText className = { classes . helperText } > { helperText } </ FormHelperText >
119
+ ) : null }
120
+ </ FormControl >
121
+ ) ;
122
+ } ,
102
123
}
103
-
104
- return (
105
- < FormControl { ...formControlProps } >
106
- { labelNode }
107
- { sliderNode }
108
- { helperText ? < FormHelperText className = { classes . helperText } > { helperText } </ FormHelperText > : null }
109
- </ FormControl >
110
- ) ;
111
- }
112
- } ) ) as React . ComponentType < SliderProps > ;
124
+ )
125
+ ) as React . ComponentType < SliderProps > ;
0 commit comments