@@ -25,8 +25,9 @@ const SettingsStepInput: React.FC<SettingsStepInputProps> = (
25
25
valueRoundedToScale === value ? value + step : valueRoundedToScale ;
26
26
const newValue = limitValueByCondition (
27
27
calculatedValue ,
28
+ maxValue ,
28
29
calculatedValue >= maxValue ,
29
- ( ) => setStepUpDisabled ( true )
30
+ disableStepUp
30
31
) ;
31
32
32
33
setSettingsStateValue ( newValue ) ;
@@ -38,22 +39,24 @@ const SettingsStepInput: React.FC<SettingsStepInputProps> = (
38
39
valueRoundedToScale === value ? value - step : valueRoundedToScale ;
39
40
const newValue = limitValueByCondition (
40
41
calculatedValue ,
42
+ minValue ,
41
43
calculatedValue <= minValue ,
42
- ( ) => setStepDownDisabled ( true )
44
+ disableStepDown
43
45
) ;
44
46
45
47
setSettingsStateValue ( newValue ) ;
46
48
} ;
47
49
48
50
const limitValueByCondition = (
49
51
calculatedValue : number ,
52
+ limitedValue : number ,
50
53
condition : boolean ,
51
54
onConditionTrue : ( ) => void ,
52
55
onConditionFalse = enableButtons
53
56
) : number => {
54
57
if ( condition ) {
55
58
onConditionTrue ( ) ;
56
- return minValue ;
59
+ return limitedValue ;
57
60
} else {
58
61
onConditionFalse ( ) ;
59
62
return calculatedValue ;
@@ -65,6 +68,14 @@ const SettingsStepInput: React.FC<SettingsStepInputProps> = (
65
68
setStepDownDisabled ( false ) ;
66
69
} ;
67
70
71
+ const disableStepUp = ( ) : void => {
72
+ setStepUpDisabled ( true ) ;
73
+ } ;
74
+
75
+ const disableStepDown = ( ) : void => {
76
+ setStepDownDisabled ( true ) ;
77
+ } ;
78
+
68
79
const onUserInput = ( event : React . ChangeEvent < HTMLInputElement > ) : void => {
69
80
const { value : eventValue } = event . target ;
70
81
@@ -77,12 +88,18 @@ const SettingsStepInput: React.FC<SettingsStepInputProps> = (
77
88
if ( ! isNaN ( number ) && number !== value ) {
78
89
let newValue ;
79
90
if ( number > value ) {
80
- newValue = limitValueByCondition ( number , number >= maxValue , ( ) =>
81
- setStepUpDisabled ( true )
91
+ newValue = limitValueByCondition (
92
+ number ,
93
+ maxValue ,
94
+ number >= maxValue ,
95
+ disableStepUp
82
96
) ;
83
97
} else {
84
- newValue = limitValueByCondition ( number , number <= minValue , ( ) =>
85
- setStepDownDisabled ( true )
98
+ newValue = limitValueByCondition (
99
+ number ,
100
+ minValue ,
101
+ number <= minValue ,
102
+ disableStepDown
86
103
) ;
87
104
}
88
105
0 commit comments