@datability/8ui 0.1.47 → 0.1.49

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(getIn(values, name)), showValue = _h[0], setShowValue = _h[1];
9
+ var _h = useState(''), showValue = _h[0], setShowValue = _h[1];
13
10
  useEffect(function () {
14
- setShowValue(getIn(values, name));
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,31 +31,48 @@ var InputNumber = function (_a) {
24
31
  setFieldValue(name, 0);
25
32
  setShowValue('0');
26
33
  }
34
+ return;
27
35
  }
28
- else if (isPhoneNumber) {
36
+ // เบอร์โทร: ไม่แปลง comma
37
+ if (isPhoneNumber) {
29
38
  setFieldValue(name, value);
30
39
  setShowValue(value);
40
+ return;
31
41
  }
32
- else {
33
- var rawValue = value.split(',').join('');
34
- // ถ้าอนุญาตให้ติดลบ ให้รวมเครื่องหมาย - ด้วย
35
- var regex = isAvailableMinus ? /^-?[0-9]*\.?[0-9]*$/ : /^[0-9]*\.?[0-9]*$/;
36
- if (regex.test(rawValue)) {
37
- // ถ้าเริ่มต้นด้วย 0 แล้วไม่ใช่ทศนิยม เช่น "0123"
38
- if (!rawValue.includes('.') && rawValue.search('0') === 0 && rawValue.length > 1 && rawValue[1] !== '.') {
39
- var subFirstString = rawValue.substring(1);
40
- setFieldValue(name, Number(subFirstString));
41
- setShowValue(subFirstString);
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
- 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 })));
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 })));
52
76
  };
53
77
  export default InputNumber;
54
78
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Input/InputNumber/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Input/InputNumber/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,cAAc,CAAA;AACrB,OAAO,SAAS,MAAM,cAAc,CAAA;AAGpC,IAAM,WAAW,GAA+B,UAAC,EAShD;QARC,IAAI,UAAA,EACJ,KAAK,WAAA,EACL,WAAW,iBAAA,EACX,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,eAAe,EAAf,OAAO,mBAAG,KAAK,KAAA,EACf,iBAAiB,EAAjB,SAAS,mBAAG,KAAK,KAAA,EACjB,qBAAqB,EAArB,aAAa,mBAAG,KAAK,KAAA,EACrB,wBAAwB,EAAxB,gBAAgB,mBAAG,KAAK,KAAA;IAElB,IAAA,KAA6C,gBAAgB,EAAE,EAA7D,MAAM,YAAA,EAAE,OAAO,aAAA,EAAE,MAAM,YAAA,EAAE,aAAa,mBAAuB,CAAA;IACrE,IAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IAEhE,IAAA,KAA4B,QAAQ,CAAS,EAAE,CAAC,EAA/C,SAAS,QAAA,EAAE,YAAY,QAAwB,CAAA;IAEtD,SAAS,CAAC;QACR,IAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,aAAa,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACxE,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;SAChD;aAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YACxC,YAAY,CAAC,SAAS,CAAC,CAAA;SACxB;aAAM;YACL,YAAY,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC,CAAA;SAC9B;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAEzB,IAAM,YAAY,GAAG,UAAC,KAA0C;QACtD,IAAA,KAAK,GAAK,KAAK,CAAC,MAAM,MAAjB,CAAiB;QAE9B,eAAe;QACf,IAAI,KAAK,KAAK,EAAE,EAAE;YAChB,IAAI,aAAa,EAAE;gBACjB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;gBACvB,YAAY,CAAC,EAAE,CAAC,CAAA;aACjB;iBAAM;gBACL,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtB,YAAY,CAAC,GAAG,CAAC,CAAA;aAClB;YACD,OAAM;SACP;QAED,0BAA0B;QAC1B,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAC1B,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,OAAM;SACP;QAED,0BAA0B;QAC1B,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAExC,8CAA8C;QAC9C,IAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAA;QAC5E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAM;QAEjC,yCAAyC;QACzC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC1B,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAA;YACvC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC7B,OAAM;SACP;QAED,4BAA4B;QAC5B,IAAI,QAAQ,KAAK,GAAG,EAAE;YACpB,YAAY,CAAC,QAAQ,CAAC,CAAA;YACtB,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC7B,OAAM;SACP;QAED,IAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QACrC,IAAI,KAAK,CAAC,YAAY,CAAC;YAAE,OAAM;QAE/B,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QACjC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzC,CAAC,CAAA;IAED,0CAA0C;IAC1C,IAAM,eAAe,GAAG,UAAC,GAAW;QAClC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,GAAG,CAAA;QAElE,IAAA,KAAqB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlC,OAAO,QAAA,EAAE,OAAO,QAAkB,CAAA;QACzC,IAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAC3E,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,UAAG,YAAY,cAAI,OAAO,CAAE,CAAC,CAAC,CAAC,YAAY,CAAA;IAC5E,CAAC,CAAA;IAED,OAAO,CACL,oBAAC,SAAS,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;QAC/F,+BACE,SAAS,EAAC,kBAAkB,EAC5B,IAAI,EAAC,MAAM,EACX,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAC,qBAAoB,EAC5B,SAAS,EAAC,SAAS,kBACL,SAAS,GACvB,CACQ,CACb,CAAA;AACH,CAAC,CAAA;AAED,eAAe,WAAW,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datability/8ui",
3
- "version": "0.1.47",
3
+ "version": "0.1.49",
4
4
  "description": "",
5
5
  "main": "dist/components/index.js",
6
6
  "types": "dist/components/index.d.ts",