@datability/8ui 0.1.47 → 0.1.48
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.
|
@@ -1,20 +1,27 @@
|
|
|
1
|
-
// Lib
|
|
2
1
|
import React, { useEffect, useState } from 'react';
|
|
3
2
|
import { getIn, useFormikContext } from 'formik';
|
|
4
|
-
// Images
|
|
5
|
-
// Include in project
|
|
6
3
|
import './index.scss';
|
|
7
4
|
import InputBase from '../InputBase';
|
|
8
5
|
var InputNumber = function (_a) {
|
|
9
6
|
var name = _a.name, label = _a.label, placeholder = _a.placeholder, _b = _a.disabled, disabled = _b === void 0 ? false : _b, _c = _a.require, require = _c === void 0 ? false : _c, _d = _a.fullWidth, fullWidth = _d === void 0 ? false : _d, _e = _a.isPhoneNumber, isPhoneNumber = _e === void 0 ? false : _e, _f = _a.isAvailableMinus, isAvailableMinus = _f === void 0 ? false : _f;
|
|
10
7
|
var _g = useFormikContext(), values = _g.values, touched = _g.touched, errors = _g.errors, setFieldValue = _g.setFieldValue;
|
|
11
8
|
var isInvalid = getIn(touched, name) && Boolean(getIn(errors, name));
|
|
12
|
-
var _h = useState(
|
|
9
|
+
var _h = useState(''), showValue = _h[0], setShowValue = _h[1];
|
|
13
10
|
useEffect(function () {
|
|
14
|
-
|
|
11
|
+
var formValue = getIn(values, name);
|
|
12
|
+
if (!isPhoneNumber && typeof formValue === 'number' && !isNaN(formValue)) {
|
|
13
|
+
setShowValue(formValue.toLocaleString('en-US'));
|
|
14
|
+
}
|
|
15
|
+
else if (typeof formValue === 'string') {
|
|
16
|
+
setShowValue(formValue);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
setShowValue(formValue !== null && formValue !== void 0 ? formValue : '');
|
|
20
|
+
}
|
|
15
21
|
}, [getIn(values, name)]);
|
|
16
22
|
var handleChange = function (event) {
|
|
17
23
|
var value = event.target.value;
|
|
24
|
+
// กรณีล้างช่อง
|
|
18
25
|
if (value === '') {
|
|
19
26
|
if (isPhoneNumber) {
|
|
20
27
|
setFieldValue(name, '');
|
|
@@ -24,28 +31,45 @@ var InputNumber = function (_a) {
|
|
|
24
31
|
setFieldValue(name, 0);
|
|
25
32
|
setShowValue('0');
|
|
26
33
|
}
|
|
34
|
+
return;
|
|
27
35
|
}
|
|
28
|
-
|
|
36
|
+
// เบอร์โทร: ไม่แปลง comma
|
|
37
|
+
if (isPhoneNumber) {
|
|
29
38
|
setFieldValue(name, value);
|
|
30
39
|
setShowValue(value);
|
|
40
|
+
return;
|
|
31
41
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
else {
|
|
44
|
-
setFieldValue(name, Number(rawValue === '-' ? '0' : rawValue));
|
|
45
|
-
setShowValue(rawValue);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
42
|
+
// ตัด comma ออกก่อน parse
|
|
43
|
+
var rawValue = value.replace(/,/g, '');
|
|
44
|
+
// ✅ regex: ตัวเลข ทศนิยม และอาจมีลบ (ถ้าเปิด)
|
|
45
|
+
var regex = isAvailableMinus ? /^-?[0-9]*\.?[0-9]*$/ : /^[0-9]*\.?[0-9]*$/;
|
|
46
|
+
if (!regex.test(rawValue))
|
|
47
|
+
return;
|
|
48
|
+
// ✅ ถ้ายังพิมพ์ "." ค้างไว้ เช่น "1234."
|
|
49
|
+
if (rawValue.endsWith('.')) {
|
|
50
|
+
setShowValue(formatWithComma(rawValue));
|
|
51
|
+
setFieldValue(name, rawValue);
|
|
52
|
+
return;
|
|
48
53
|
}
|
|
54
|
+
// ✅ ถ้ายังพิมพ์ "-" ค้างไว้
|
|
55
|
+
if (rawValue === '-') {
|
|
56
|
+
setShowValue(rawValue);
|
|
57
|
+
setFieldValue(name, rawValue);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
var numericValue = Number(rawValue);
|
|
61
|
+
if (isNaN(numericValue))
|
|
62
|
+
return;
|
|
63
|
+
setFieldValue(name, numericValue);
|
|
64
|
+
setShowValue(formatWithComma(rawValue));
|
|
65
|
+
};
|
|
66
|
+
// 🧠 helper: ใส่ comma แต่อย่าทำให้จุดหาย
|
|
67
|
+
var formatWithComma = function (val) {
|
|
68
|
+
if (val === '' || val === '-' || val === '.' || val === '-.')
|
|
69
|
+
return val;
|
|
70
|
+
var _a = val.split('.'), intPart = _a[0], decPart = _a[1];
|
|
71
|
+
var formattedInt = intPart ? Number(intPart).toLocaleString('en-US') : '';
|
|
72
|
+
return decPart !== undefined ? "".concat(formattedInt, ".").concat(decPart) : formattedInt;
|
|
49
73
|
};
|
|
50
74
|
return (React.createElement(InputBase, { name: name, label: label, require: require, fullWidth: fullWidth, isInvalid: isInvalid },
|
|
51
75
|
React.createElement("input", { className: "DBui-inputNumber", type: "text", placeholder: placeholder, disabled: disabled, value: showValue, onChange: handleChange, name: name, pattern: "[0-9]*\\.?[0-9]*", inputMode: "decimal", "data-invalid": isInvalid })));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Input/InputNumber/index.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Input/InputNumber/index.tsx"],"names":[],"mappings":"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"}
|