@@ -37,7 +37,7 @@ export default class SimpleStepper extends Component {
3737 stepValue : 1 ,
3838 backgroundColor : 'transparent' ,
3939 tintColor : 'blue' ,
40- valueChanged : null ,
40+ valueChanged : ( ) => { } ,
4141 decrementImage : require ( './assets/decrement.png' ) ,
4242 incrementImage : require ( './assets/increment.png' ) ,
4343 tintOnIncrementImage : true ,
@@ -48,8 +48,8 @@ export default class SimpleStepper extends Component {
4848 activeOpacity : 0.4 ,
4949 disabledOpacity : 0.5 ,
5050 disabled : false ,
51- renderDecrement : null ,
52- renderIncrement : null ,
51+ renderDecrement : undefined ,
52+ renderIncrement : undefined ,
5353 wraps : false ,
5454 } ;
5555 constructor ( props ) {
@@ -68,72 +68,72 @@ export default class SimpleStepper extends Component {
6868 this . decrementStyle = this . imageStyle ( props . imageWidth , props . imageHeight ) ;
6969 }
7070 componentDidMount ( ) {
71- const { initialValue, minimumValue, maximumValue, disabled, stepValue, wraps } = this . props ;
72- this . validateValue ( initialValue , minimumValue , maximumValue , disabled , stepValue , wraps ) ;
71+ this . validateValue ( this . props . initialValue , this . props ) ;
7372 }
7473 componentWillReceiveProps ( nextProps ) {
7574 const { initialValue, stepValue, minimumValue, maximumValue, disabled } = this . props ;
7675 if ( nextProps . initialValue !== initialValue ) {
77- this . validateValue ( nextProps . initialValue , nextProps . minimumValue , nextProps . maximumValue , nextProps . disabled , nextProps . stepValue , nextProps . wraps ) ;
76+ this . validateValue ( nextProps . initialValue , nextProps , true ) ;
7877 } else if ( nextProps . disabled !== disabled || nextProps . stepValue !== stepValue ) {
79- this . validateValue ( this . state . value , nextProps . minimumValue , nextProps . maximumValue , nextProps . disabled , nextProps . stepValue , nextProps . wraps ) ;
78+ this . validateValue ( nextProps . value , nextProps ) ;
8079 } else if ( nextProps . minimumValue !== minimumValue || nextProps . maximumValue !== maximumValue ) {
8180 const isValidNextMin = nextProps . minimumValue < maximumValue ;
8281 const isValidNextMax = nextProps . maximumValue > minimumValue ;
8382 if ( isValidNextMin && isValidNextMax ) {
84- this . validateValue ( this . state . value , nextProps . minimumValue , nextProps . maximumValue , nextProps . disabled , nextProps . stepValue , nextProps . wraps ) ;
83+ this . validateValue ( nextProps . value , nextProps ) ;
8584 }
8685 }
8786 }
8887 decrementAction = ( ) => {
8988 const { value, stepValue } = this . props ;
9089 const nextValue = value - stepValue ;
91- this . validateValue ( nextValue , this . props . minimumValue , this . props . maximumValue , this . props . disabled , stepValue , this . props . wraps ) ;
90+ this . validateValue ( nextValue , this . props , true ) ;
9291 } ;
9392 incrementAction = ( ) => {
9493 const { value, stepValue } = this . props ;
9594 const nextValue = value + stepValue ;
96- this . validateValue ( nextValue , this . props . minimumValue , this . props . maximumValue , this . props . disabled , stepValue , this . props . wraps ) ;
95+ this . validateValue ( nextValue , this . props , true ) ;
9796 } ;
98- validateValue = ( value , min , max , disabled , step , wraps ) => {
97+ validateValue = ( value , props , changed = false ) => {
98+ const { minimumValue, maximumValue, disabled, stepValue, wraps, valueChanged, disabledOpacity } = props ;
9999 let hasReachedMax = true ;
100100 let hasReachedMin = true ;
101101 switch ( true ) {
102- case step >= 0 :
103- if ( step === 0 ) {
104- console . warn ( "Warning: Simple Stepper's step value is set to 0." ) ;
102+ case wraps :
103+ hasReachedMin = false ;
104+ hasReachedMax = false ;
105+ break ;
106+ case stepValue >= 0 :
107+ if ( stepValue === 0 ) {
108+ console . warn ( "Warning: Simple Stepper's stepValue is set to 0." ) ;
105109 }
106- hasReachedMax = value >= max ;
107- hasReachedMin = value <= min ;
110+ hasReachedMax = value >= maximumValue ;
111+ hasReachedMin = value <= minimumValue ;
108112 break ;
109- case step < 0 :
113+ case stepValue < 0 :
110114 // step value is negative
111115 // swap the max and min conditions.
112- hasReachedMax = value <= min ;
113- hasReachedMin = value >= max ;
116+ hasReachedMax = value <= minimumValue ;
117+ hasReachedMin = value >= maximumValue ;
114118 break ;
115119 }
116- if ( wraps ) {
117- hasReachedMin = false ;
118- hasReachedMax = false ;
119- }
120- if ( value > max ) {
121- value = wraps ? min : max ;
122- } else if ( value == max ) {
123- value = max ;
124- } else if ( value < min ) {
125- value = wraps ? max : min ;
126- } else if ( value == min ) {
127- value = min ;
120+ if ( value > maximumValue ) {
121+ value = wraps ? minimumValue : maximumValue ;
122+ } else if ( value == maximumValue ) {
123+ value = maximumValue ;
124+ } else if ( value < minimumValue ) {
125+ value = wraps ? maximumValue : minimumValue ;
126+ } else if ( value == minimumValue ) {
127+ value = minimumValue ;
128128 }
129129 this . setState ( {
130130 hasReachedMin : hasReachedMin || disabled ,
131131 hasReachedMax : hasReachedMax || disabled ,
132- decrementOpacity : hasReachedMin || disabled ? this . props . disabledOpacity : 1 ,
133- incrementOpacity : hasReachedMax || disabled ? this . props . disabledOpacity : 1 ,
132+ decrementOpacity : hasReachedMin || disabled ? disabledOpacity : 1 ,
133+ incrementOpacity : hasReachedMax || disabled ? disabledOpacity : 1 ,
134134 } ) ;
135- if ( this . props . valueChanged ) {
136- this . props . valueChanged ( value ) ;
135+ if ( changed ) {
136+ valueChanged ( value ) ;
137137 }
138138 } ;
139139 tintStyle ( status , tintColor ) {
0 commit comments