@axelor/aos-mobile-ui 9.1.5 → 9.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
19
19
|
import { Platform, StyleSheet, TouchableOpacity, View, } from 'react-native';
|
|
20
|
-
import { formatNumber as _format, unformatNumber as _unformat, } from '../../../utils/formatters';
|
|
21
20
|
import { useDigitFormat, useOutsideClickHandler } from '../../../hooks';
|
|
22
21
|
import { useThemeColor } from '../../../theme';
|
|
22
|
+
import { formatNumber as _format, unformatNumber as _unformat, } from '../../../utils';
|
|
23
23
|
import { Input } from '../../atoms';
|
|
24
24
|
import IncrementButton from './IncrementButton';
|
|
25
|
-
const Increment = ({ style, inputStyle, value, decimalSpacer, thousandSpacer, onValueChange, onFocus, onBlur, readonly = false, defaultFormatting = true, stepSize = 1, minValue = 0, maxValue
|
|
25
|
+
const Increment = ({ style, inputStyle, value, decimalSpacer, thousandSpacer, onValueChange, onFocus, onBlur, readonly = false, defaultFormatting = true, stepSize = 1, minValue = 0, maxValue, isBigButton = false, keyboardType = 'numeric', scale, }) => {
|
|
26
26
|
const Colors = useThemeColor();
|
|
27
27
|
const cutDecimalExcess = useDigitFormat();
|
|
28
28
|
const containerRef = useRef(null);
|
|
@@ -30,21 +30,16 @@ const Increment = ({ style, inputStyle, value, decimalSpacer, thousandSpacer, on
|
|
|
30
30
|
const [valueQty, setValueQty] = useState(value);
|
|
31
31
|
const [isFocused, setIsFocused] = useState(false);
|
|
32
32
|
const handleDecimal = useCallback((numberToFormat) => {
|
|
33
|
-
if (scale == null)
|
|
33
|
+
if (scale == null)
|
|
34
34
|
return cutDecimalExcess(numberToFormat);
|
|
35
|
-
}
|
|
36
35
|
const _scale = Math.max(scale, 0);
|
|
37
36
|
const _value = typeof numberToFormat === 'string'
|
|
38
37
|
? parseFloat(numberToFormat)
|
|
39
38
|
: numberToFormat;
|
|
40
39
|
return _value.toFixed(_scale);
|
|
41
40
|
}, [cutDecimalExcess, scale]);
|
|
42
|
-
const format = useCallback((number) =>
|
|
43
|
-
|
|
44
|
-
}, [handleDecimal, decimalSpacer, thousandSpacer]);
|
|
45
|
-
const unformat = useCallback(number => {
|
|
46
|
-
return _unformat(number, decimalSpacer, thousandSpacer);
|
|
47
|
-
}, [decimalSpacer, thousandSpacer]);
|
|
41
|
+
const format = useCallback((number) => _format(number, decimalSpacer, thousandSpacer, handleDecimal), [handleDecimal, decimalSpacer, thousandSpacer]);
|
|
42
|
+
const unformat = useCallback((number) => _unformat(number, decimalSpacer, thousandSpacer), [decimalSpacer, thousandSpacer]);
|
|
48
43
|
const handleValueFormatting = useCallback((_value) => {
|
|
49
44
|
if (defaultFormatting) {
|
|
50
45
|
setValueQty(format(_value));
|
|
@@ -53,23 +48,29 @@ const Increment = ({ style, inputStyle, value, decimalSpacer, thousandSpacer, on
|
|
|
53
48
|
setValueQty(typeof _value === 'string' ? _value : _value.toString());
|
|
54
49
|
}
|
|
55
50
|
}, [defaultFormatting, format]);
|
|
51
|
+
const clampValue = useCallback((_value) => {
|
|
52
|
+
if (minValue != null && _value <= minValue)
|
|
53
|
+
return minValue;
|
|
54
|
+
if (maxValue != null && _value >= maxValue)
|
|
55
|
+
return maxValue;
|
|
56
|
+
return _value;
|
|
57
|
+
}, [maxValue, minValue]);
|
|
56
58
|
const handleResult = useCallback((_value) => {
|
|
57
|
-
|
|
58
|
-
if (minValue != null && _value <= minValue) {
|
|
59
|
-
resultValue = minValue;
|
|
60
|
-
}
|
|
61
|
-
else if (maxValue != null && _value >= maxValue) {
|
|
62
|
-
resultValue = maxValue;
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
resultValue = _value;
|
|
66
|
-
}
|
|
59
|
+
const resultValue = clampValue(_value);
|
|
67
60
|
handleValueFormatting(resultValue);
|
|
68
61
|
onValueChange(resultValue);
|
|
69
|
-
}, [
|
|
62
|
+
}, [clampValue, handleValueFormatting, onValueChange]);
|
|
63
|
+
const handleInputChange = useCallback((_value) => {
|
|
64
|
+
setValueQty(_value);
|
|
65
|
+
const unformattedValue = defaultFormatting ? unformat(_value) : _value;
|
|
66
|
+
const parsedValue = parseFloat(unformattedValue);
|
|
67
|
+
onValueChange(isNaN(parsedValue) ? 0 : clampValue(parsedValue));
|
|
68
|
+
}, [clampValue, defaultFormatting, onValueChange, unformat]);
|
|
70
69
|
useEffect(() => {
|
|
70
|
+
if (isFocused)
|
|
71
|
+
return;
|
|
71
72
|
handleValueFormatting(parseFloat(value || '0')?.toString());
|
|
72
|
-
}, [handleValueFormatting, value]);
|
|
73
|
+
}, [handleValueFormatting, isFocused, value]);
|
|
73
74
|
const handlePlus = () => {
|
|
74
75
|
const unformattedValue = defaultFormatting ? unformat(valueQty) : valueQty;
|
|
75
76
|
const newValue = parseFloat(unformattedValue) + stepSize;
|
|
@@ -110,7 +111,7 @@ const Increment = ({ style, inputStyle, value, decimalSpacer, thousandSpacer, on
|
|
|
110
111
|
return (<TouchableOpacity ref={containerRef} style={[styles.container_increment, style]} activeOpacity={0.9} onPress={() => inputRef.current?.focus()} testID="incrementContainer">
|
|
111
112
|
<IncrementButton iconName="dash-lg" onPress={handleMinus} readonly={readonly} disabled={minValue != null && parseFloat(valueQty) <= minValue} isBigButton={isBigButton}/>
|
|
112
113
|
<View style={[styles.inputLine, isBigButton ? styles.fixedInputWidth : null]}>
|
|
113
|
-
<Input inputRef={inputRef} style={[styles.input, inputStyle]} value={valueQty != null ? String(valueQty) : ''} onChange={
|
|
114
|
+
<Input inputRef={inputRef} style={[styles.input, inputStyle]} value={valueQty != null ? String(valueQty) : ''} onChange={handleInputChange} keyboardType={keyboardType} onSelection={handleFocus} onEndFocus={handleEndInput} readOnly={readonly}/>
|
|
114
115
|
</View>
|
|
115
116
|
<IncrementButton iconName="plus-lg" onPress={handlePlus} readonly={readonly} disabled={maxValue != null && parseFloat(valueQty) >= maxValue} isBigButton={isBigButton}/>
|
|
116
117
|
</TouchableOpacity>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Increment.js","sourceRoot":"","sources":["../../../../src/components/molecules/Increment/Increment.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC/E,OAAO,EAEL,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,IAAI,GACL,MAAM,cAAc,CAAC;AACtB,OAAO,
|
|
1
|
+
{"version":3,"file":"Increment.js","sourceRoot":"","sources":["../../../../src/components/molecules/Increment/Increment.tsx"],"names":[],"mappings":"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"}
|