@@ -3,20 +3,17 @@ import Icon from './icons';
33
44
55export class TimePicker extends React . Component {
6- constructor ( props ) {
7- super ( props ) ;
8-
9- this . state = {
10- hh : props . hh || '12' ,
11- mm : props . mm || '00' ,
12- ss : props . ss || '00' ,
13- ampm : props . ampm || 'am' ,
14- } ;
6+ componentWillUnmount ( ) {
7+ let data = {
8+ hh : this . validateValue ( 'hh' , this . props . hh ) . toString ( ) . padStart ( 2 , '0' ) ,
9+ mm : this . validateValue ( 'mm' , this . props . mm ) . toString ( ) . padStart ( 2 , '0' ) ,
10+ ss : this . validateValue ( 'ss' , this . props . ss ) . toString ( ) . padStart ( 2 , '0' )
11+ }
12+ this . sendValue ( data ) ;
1513 }
1614
17- componentDidUpdate ( prevProps , prevState ) {
18- if ( this . state !== prevState )
19- this . props . onChange ( this . state ) ;
15+ sendValue = ( data ) => {
16+ this . props . onChange ( data ) ;
2017 }
2118
2219 validateValue = ( name , value ) => {
@@ -48,7 +45,7 @@ export class TimePicker extends React.Component {
4845 validValue = validValue . toString ( ) . padStart ( 2 , '0' ) ;
4946 }
5047
51- this . setState ( { [ name ] : value !== '' ? validValue . toString ( ) : '' } ) ;
48+ this . sendValue ( { [ name ] : value !== '' ? validValue . toString ( ) : '' } ) ;
5249 }
5350
5451 handleKeyDown = ( e ) => {
@@ -64,34 +61,32 @@ export class TimePicker extends React.Component {
6461 value -- ;
6562 }
6663
67- this . setState ( { [ name ] : this . validateValue ( name , value ) . toString ( ) . padStart ( 2 , '0' ) } ) ;
64+ this . sendValue ( { [ name ] : this . validateValue ( name , value ) . toString ( ) . padStart ( 2 , '0' ) } ) ;
6865 }
6966
7067 handleSpin = ( name , type ) => {
71- this . setState ( ( state ) => {
72- let value = state [ name ] ;
73-
74- if ( name === 'ampm' ) {
75- value = value === 'am' ? 'pm' : 'am' ;
68+ let value = this . props [ name ] ;
69+
70+ if ( name === 'ampm' ) {
71+ value = value === 'am' ? 'pm' : 'am' ;
72+ } else {
73+ value = parseInt ( value ) || 0 ;
74+ if ( type === 'up' ) {
75+ value ++ ;
7676 } else {
77- value = parseInt ( value ) || 0 ;
78- if ( type === 'up' ) {
79- value ++ ;
80- } else {
81- value -- ;
82- }
83- value = this . validateValue ( name , value ) . toString ( ) . padStart ( 2 , '0' ) ;
77+ value -- ;
8478 }
79+ value = this . validateValue ( name , value ) . toString ( ) . padStart ( 2 , '0' ) ;
80+ }
8581
86- return { [ name ] : value } ;
87- } ) ;
82+ this . sendValue ( { [ name ] : value } ) ;
8883 }
8984
9085 handleBlur = ( e ) => {
9186 let value = this . validateValue ( e . target . dataset . name , parseInt ( e . target . value ) || 0 ) ;
9287
9388 if ( value < 10 ) {
94- this . setState ( { [ e . target . dataset . name ] : value . toString ( ) . padStart ( 2 , '0' ) } ) ;
89+ this . sendValue ( { [ e . target . dataset . name ] : value . toString ( ) . padStart ( 2 , '0' ) } ) ;
9590 }
9691 }
9792
@@ -119,13 +114,13 @@ export class TimePicker extends React.Component {
119114 </ div >
120115
121116 < div className = "rjf-time-picker-row rjf-time-picker-values" >
122- < div className = "rjf-time-picker-col" > < input type = "text" data-name = "hh" value = { this . state . hh } onChange = { this . handleChange } onBlur = { this . handleBlur } onKeyDown = { this . handleKeyDown } /> </ div >
117+ < div className = "rjf-time-picker-col" > < input type = "text" data-name = "hh" value = { this . props . hh } onChange = { this . handleChange } onBlur = { this . handleBlur } onKeyDown = { this . handleKeyDown } /> </ div >
123118 < div className = "rjf-time-picker-col rjf-time-picker-col-sm" > :</ div >
124- < div className = "rjf-time-picker-col" > < input type = "text" data-name = "mm" value = { this . state . mm } onChange = { this . handleChange } onBlur = { this . handleBlur } onKeyDown = { this . handleKeyDown } /> </ div >
119+ < div className = "rjf-time-picker-col" > < input type = "text" data-name = "mm" value = { this . props . mm } onChange = { this . handleChange } onBlur = { this . handleBlur } onKeyDown = { this . handleKeyDown } /> </ div >
125120 < div className = "rjf-time-picker-col rjf-time-picker-col-sm" > :</ div >
126- < div className = "rjf-time-picker-col" > < input type = "text" data-name = "ss" value = { this . state . ss } onChange = { this . handleChange } onBlur = { this . handleBlur } onKeyDown = { this . handleKeyDown } /> </ div >
121+ < div className = "rjf-time-picker-col" > < input type = "text" data-name = "ss" value = { this . props . ss } onChange = { this . handleChange } onBlur = { this . handleBlur } onKeyDown = { this . handleKeyDown } /> </ div >
127122 < div className = "rjf-time-picker-col rjf-time-picker-col-sm" > </ div >
128- < div className = "rjf-time-picker-col" > { this . state . ampm } </ div >
123+ < div className = "rjf-time-picker-col" > { this . props . ampm } </ div >
129124 </ div >
130125
131126 < div className = "rjf-time-picker-row" >
0 commit comments