@lowentry/mui 1.2.10 → 1.2.11
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.
- package/NumericTextField/index.js +52 -54
- package/NumericTextField/index.js.map +1 -1
- package/RemovableNumericTextField/index.js +5 -5
- package/RemovableNumericTextField/index.js.map +1 -1
- package/package.json +2 -1
- package/src/components/NumericTextField.jsx +64 -66
- package/src/components/RemovableNumericTextField.jsx +1 -1
|
@@ -4,7 +4,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
|
4
4
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
5
5
|
import React from 'react';
|
|
6
6
|
import { LeRed } from '@lowentry/react-redux';
|
|
7
|
-
import { INT_LAX_ANY, FLOAT_LAX,
|
|
7
|
+
import { INT_LAX_ANY, FLOAT_LAX, STRING } from '@lowentry/utils';
|
|
8
8
|
import { L as LeMuiUtils } from '../LeMuiUtils-c46ed1cc.js';
|
|
9
9
|
import TextField from '../TextField/index.js';
|
|
10
10
|
import '@mui/material';
|
|
@@ -13,6 +13,42 @@ import '../style-inject.es-1f59c1d0.js';
|
|
|
13
13
|
var _excluded = ["decimals", "allowZero", "allowNegative", "value", "onChange", "onRenderValue", "className", "inputProps", "children"];
|
|
14
14
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15
15
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
|
+
var getProcessedValue = function getProcessedValue(value, decimals, allowZero, allowNegative) {
|
|
17
|
+
var text = LeMuiUtils.purgePrependedHiddenChar(STRING(value));
|
|
18
|
+
var val = 0;
|
|
19
|
+
var negative = text.includes('-');
|
|
20
|
+
text = text.replace(',', '.').replace(/[^0-9.]/g, '');
|
|
21
|
+
if (text !== '') {
|
|
22
|
+
var stringVal = Math.abs(FLOAT_LAX(text)).toFixed(decimals + 1); // prevents rounding (by adding an extra digit and then cutting it off)
|
|
23
|
+
stringVal = stringVal.substring(0, stringVal.length - 1);
|
|
24
|
+
var textDotCount = text.split('.').length - 1;
|
|
25
|
+
if (textDotCount <= 0 || decimals <= 0) {
|
|
26
|
+
text = stringVal.split('.')[0];
|
|
27
|
+
} else if (textDotCount === 1 && text.endsWith('.')) {
|
|
28
|
+
text = stringVal.split('.')[0] + '.';
|
|
29
|
+
} else {
|
|
30
|
+
text = stringVal.substring(0, stringVal.length - Math.max(0, decimals - text.split('.')[1].length));
|
|
31
|
+
}
|
|
32
|
+
if (!allowZero && text === '0') {
|
|
33
|
+
text = '';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (allowNegative && negative) {
|
|
37
|
+
text = '-' + text;
|
|
38
|
+
}
|
|
39
|
+
val = FLOAT_LAX(text);
|
|
40
|
+
if (val !== 0) {
|
|
41
|
+
if (decimals > 0) {
|
|
42
|
+
val = Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);
|
|
43
|
+
} else {
|
|
44
|
+
val = Math.round(val);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
text: text,
|
|
49
|
+
val: val
|
|
50
|
+
};
|
|
51
|
+
};
|
|
16
52
|
var NumericTextField = LeRed.memo(function (_ref) {
|
|
17
53
|
var decimals = _ref.decimals,
|
|
18
54
|
allowZero = _ref.allowZero,
|
|
@@ -24,67 +60,29 @@ var NumericTextField = LeRed.memo(function (_ref) {
|
|
|
24
60
|
inputProps = _ref.inputProps,
|
|
25
61
|
children = _ref.children,
|
|
26
62
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
decimals = INT_LAX_ANY(decimals, 2);
|
|
34
|
-
var getVisualValue = function getVisualValue(value) {
|
|
35
|
-
var text = FLOAT_LAX(LeMuiUtils.purgePrependedHiddenChar(value));
|
|
36
|
-
if (!allowNegative) {
|
|
37
|
-
text = Math.abs(text);
|
|
38
|
-
}
|
|
39
|
-
text = text.toFixed(decimals); // rounds it
|
|
40
|
-
text = LeUtils.trimEnd(LeUtils.trimEnd(text, '0'), '.');
|
|
41
|
-
if (!allowZero && text === '0') {
|
|
42
|
-
text = '';
|
|
43
|
-
}
|
|
44
|
-
return text;
|
|
45
|
-
};
|
|
63
|
+
allowZero = !!allowZero;
|
|
64
|
+
allowNegative = !!allowNegative;
|
|
65
|
+
decimals = INT_LAX_ANY(decimals, 0);
|
|
66
|
+
var getVisualValue = LeRed.useCallback(function (value) {
|
|
67
|
+
return getProcessedValue(value, decimals, allowZero, allowNegative).text;
|
|
68
|
+
}, [decimals, allowZero, allowNegative]);
|
|
46
69
|
var _LeRed$useState = LeRed.useState(getVisualValue(value)),
|
|
47
70
|
_LeRed$useState2 = _slicedToArray(_LeRed$useState, 2),
|
|
48
71
|
visualValue = _LeRed$useState2[0],
|
|
49
72
|
setVisualValue = _LeRed$useState2[1];
|
|
50
73
|
LeRed.useEffect(function () {
|
|
51
|
-
|
|
52
|
-
|
|
74
|
+
var newVisualValue = getVisualValue(value);
|
|
75
|
+
if (FLOAT_LAX(visualValue) !== FLOAT_LAX(newVisualValue)) {
|
|
76
|
+
setVisualValue(newVisualValue);
|
|
77
|
+
}
|
|
78
|
+
}, [value, getVisualValue]);
|
|
53
79
|
var onChanged = LeRed.useCallback(function (event) {
|
|
54
80
|
var originalTargetValue = event.target.value;
|
|
55
|
-
var
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
// visual >>
|
|
60
|
-
var minus = text.includes('-');
|
|
61
|
-
text = text.replace(',', '.').replace(/[^0-9.]/g, '');
|
|
62
|
-
if (text !== '') {
|
|
63
|
-
val = Math.abs(FLOAT_LAX(text));
|
|
64
|
-
if (allowNegative && minus) {
|
|
65
|
-
val = -val;
|
|
66
|
-
}
|
|
67
|
-
var stringVal = val.toFixed(decimals + 1); // prevents rounding (by adding an extra digit and then cutting it off)
|
|
68
|
-
stringVal = stringVal.substring(0, stringVal.length - 1);
|
|
69
|
-
if (!text.includes('.') || decimals <= 0) {
|
|
70
|
-
text = stringVal.split('.')[0];
|
|
71
|
-
} else if (text.endsWith('.')) {
|
|
72
|
-
text = stringVal.split('.')[0] + '.';
|
|
73
|
-
} else {
|
|
74
|
-
text = stringVal.substring(0, stringVal.length - Math.max(0, decimals - text.split('.')[1].length));
|
|
75
|
-
}
|
|
76
|
-
setVisualValue(text);
|
|
77
|
-
}
|
|
78
|
-
} // visual <<
|
|
79
|
-
|
|
81
|
+
var _getProcessedValue = getProcessedValue(originalTargetValue, decimals, allowZero, allowNegative),
|
|
82
|
+
text = _getProcessedValue.text,
|
|
83
|
+
val = _getProcessedValue.val;
|
|
84
|
+
setVisualValue(text);
|
|
80
85
|
if (onChange) {
|
|
81
|
-
if (val !== 0) {
|
|
82
|
-
if (decimals > 0) {
|
|
83
|
-
val = Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);
|
|
84
|
-
} else {
|
|
85
|
-
val = Math.round(val);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
86
|
var newEvent = _objectSpread(_objectSpread({}, event), {}, {
|
|
89
87
|
target: _objectSpread(_objectSpread({}, event.target), {}, {
|
|
90
88
|
value: val,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/NumericTextField.jsx"],"sourcesContent":["import React from 'react';\nimport {LeRed} from '@lowentry/react-redux';\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/NumericTextField.jsx"],"sourcesContent":["import React from 'react';\nimport {LeRed} from '@lowentry/react-redux';\nimport {FLOAT_LAX, INT_LAX_ANY, STRING} from '@lowentry/utils';\nimport {LeMuiUtils} from '../LeMuiUtils.js';\nimport TextField from './TextField.jsx';\n\n\nconst getProcessedValue = (value, decimals, allowZero, allowNegative) =>\n{\n\tlet text = LeMuiUtils.purgePrependedHiddenChar(STRING(value));\n\tlet val = 0;\n\t\n\tconst negative = text.includes('-');\n\t\n\ttext = text.replace(',', '.').replace(/[^0-9.]/g, '');\n\tif(text !== '')\n\t{\n\t\tlet stringVal = Math.abs(FLOAT_LAX(text)).toFixed(decimals + 1); // prevents rounding (by adding an extra digit and then cutting it off)\n\t\tstringVal = stringVal.substring(0, stringVal.length - 1);\n\t\t\n\t\tconst textDotCount = text.split('.').length - 1;\n\t\tif((textDotCount <= 0) || (decimals <= 0))\n\t\t{\n\t\t\ttext = stringVal.split('.')[0];\n\t\t}\n\t\telse if((textDotCount === 1) && text.endsWith('.'))\n\t\t{\n\t\t\ttext = stringVal.split('.')[0] + '.';\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttext = stringVal.substring(0, stringVal.length - Math.max(0, decimals - text.split('.')[1].length));\n\t\t}\n\t\t\n\t\tif(!allowZero && (text === '0'))\n\t\t{\n\t\t\ttext = '';\n\t\t}\n\t}\n\t\n\tif(allowNegative && negative)\n\t{\n\t\ttext = '-' + text;\n\t}\n\t\n\tval = FLOAT_LAX(text);\n\tif(val !== 0)\n\t{\n\t\tif(decimals > 0)\n\t\t{\n\t\t\tval = Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tval = Math.round(val);\n\t\t}\n\t}\n\t\n\treturn {text, val};\n};\n\n\nconst NumericTextField = LeRed.memo(({decimals, allowZero, allowNegative, value, onChange, onRenderValue, className, inputProps, children, ...props}) =>\n{\n\tallowZero = !!allowZero;\n\tallowNegative = !!allowNegative;\n\tdecimals = INT_LAX_ANY(decimals, 0);\n\t\n\t\n\tconst getVisualValue = LeRed.useCallback((value) =>\n\t{\n\t\treturn getProcessedValue(value, decimals, allowZero, allowNegative).text;\n\t}, [decimals, allowZero, allowNegative]);\n\t\n\t\n\tconst [visualValue, setVisualValue] = LeRed.useState(getVisualValue(value));\n\t\n\tLeRed.useEffect(() =>\n\t{\n\t\tconst newVisualValue = getVisualValue(value);\n\t\tif(FLOAT_LAX(visualValue) !== FLOAT_LAX(newVisualValue))\n\t\t{\n\t\t\tsetVisualValue(newVisualValue);\n\t\t}\n\t}, [value, getVisualValue]);\n\t\n\t\n\tconst onChanged = LeRed.useCallback((event) =>\n\t{\n\t\tconst originalTargetValue = event.target.value;\n\t\tconst {text, val} = getProcessedValue(originalTargetValue, decimals, allowZero, allowNegative);\n\t\t\n\t\tsetVisualValue(text);\n\t\t\n\t\tif(onChange)\n\t\t{\n\t\t\tconst newEvent = {\n\t\t\t\t...event,\n\t\t\t\ttarget:{\n\t\t\t\t\t...event.target,\n\t\t\t\t\tvalue: val,\n\t\t\t\t\tvalueText:text,\n\t\t\t\t\tvalueRaw: originalTargetValue,\n\t\t\t\t},\n\t\t\t};\n\t\t\tonChange(newEvent);\n\t\t}\n\t}, [onChange]);\n\t\n\t\n\treturn (<>\n\t\t<TextField className={'lowentry-mui--numeric-textfield ' + (className ?? '')} type=\"text\" inputProps={{inputMode:'decimal', ...(inputProps ?? {})}} value={!!onRenderValue ? onRenderValue(visualValue) : visualValue} onChange={onChanged} {...props}>{children}</TextField>\n\t</>);\n});\nexport default NumericTextField;\n"],"names":["getProcessedValue","value","decimals","allowZero","allowNegative","text","LeMuiUtils","purgePrependedHiddenChar","STRING","val","negative","includes","replace","stringVal","Math","abs","FLOAT_LAX","toFixed","substring","length","textDotCount","split","endsWith","max","round","pow","NumericTextField","LeRed","memo","_ref","onChange","onRenderValue","className","inputProps","children","props","_objectWithoutProperties","_excluded","INT_LAX_ANY","getVisualValue","useCallback","_LeRed$useState","useState","_LeRed$useState2","_slicedToArray","visualValue","setVisualValue","useEffect","newVisualValue","onChanged","event","originalTargetValue","target","_getProcessedValue","newEvent","_objectSpread","valueText","valueRaw","React","createElement","Fragment","TextField","_extends","type","inputMode"],"mappings":";;;;;;;;;;;;;;;AAOA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,KAAK,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,aAAa,EACpE;EACC,IAAIC,IAAI,GAAGC,UAAU,CAACC,wBAAwB,CAACC,MAAM,CAACP,KAAK,CAAC,CAAC,CAAA;EAC7D,IAAIQ,GAAG,GAAG,CAAC,CAAA;AAEX,EAAA,IAAMC,QAAQ,GAAGL,IAAI,CAACM,QAAQ,CAAC,GAAG,CAAC,CAAA;AAEnCN,EAAAA,IAAI,GAAGA,IAAI,CAACO,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAACA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;EACrD,IAAGP,IAAI,KAAK,EAAE,EACd;AACC,IAAA,IAAIQ,SAAS,GAAGC,IAAI,CAACC,GAAG,CAACC,SAAS,CAACX,IAAI,CAAC,CAAC,CAACY,OAAO,CAACf,QAAQ,GAAG,CAAC,CAAC,CAAC;AAChEW,IAAAA,SAAS,GAAGA,SAAS,CAACK,SAAS,CAAC,CAAC,EAAEL,SAAS,CAACM,MAAM,GAAG,CAAC,CAAC,CAAA;IAExD,IAAMC,YAAY,GAAGf,IAAI,CAACgB,KAAK,CAAC,GAAG,CAAC,CAACF,MAAM,GAAG,CAAC,CAAA;AAC/C,IAAA,IAAIC,YAAY,IAAI,CAAC,IAAMlB,QAAQ,IAAI,CAAE,EACzC;MACCG,IAAI,GAAGQ,SAAS,CAACQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/B,KAAC,MACI,IAAID,YAAY,KAAK,CAAC,IAAKf,IAAI,CAACiB,QAAQ,CAAC,GAAG,CAAC,EAClD;MACCjB,IAAI,GAAGQ,SAAS,CAACQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;AACrC,KAAC,MAED;AACChB,MAAAA,IAAI,GAAGQ,SAAS,CAACK,SAAS,CAAC,CAAC,EAAEL,SAAS,CAACM,MAAM,GAAGL,IAAI,CAACS,GAAG,CAAC,CAAC,EAAErB,QAAQ,GAAGG,IAAI,CAACgB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACF,MAAM,CAAC,CAAC,CAAA;AACpG,KAAA;AAEA,IAAA,IAAG,CAAChB,SAAS,IAAKE,IAAI,KAAK,GAAI,EAC/B;AACCA,MAAAA,IAAI,GAAG,EAAE,CAAA;AACV,KAAA;AACD,GAAA;EAEA,IAAGD,aAAa,IAAIM,QAAQ,EAC5B;IACCL,IAAI,GAAG,GAAG,GAAGA,IAAI,CAAA;AAClB,GAAA;AAEAI,EAAAA,GAAG,GAAGO,SAAS,CAACX,IAAI,CAAC,CAAA;EACrB,IAAGI,GAAG,KAAK,CAAC,EACZ;IACC,IAAGP,QAAQ,GAAG,CAAC,EACf;MACCO,GAAG,GAAGK,IAAI,CAACU,KAAK,CAACf,GAAG,GAAGK,IAAI,CAACW,GAAG,CAAC,EAAE,EAAEvB,QAAQ,CAAC,CAAC,GAAGY,IAAI,CAACW,GAAG,CAAC,EAAE,EAAEvB,QAAQ,CAAC,CAAA;AACxE,KAAC,MAED;AACCO,MAAAA,GAAG,GAAGK,IAAI,CAACU,KAAK,CAACf,GAAG,CAAC,CAAA;AACtB,KAAA;AACD,GAAA;EAEA,OAAO;AAACJ,IAAAA,IAAI,EAAJA,IAAI;AAAEI,IAAAA,GAAG,EAAHA,GAAAA;GAAI,CAAA;AACnB,CAAC,CAAA;AAGKiB,IAAAA,gBAAgB,GAAGC,KAAK,CAACC,IAAI,CAAC,UAAAC,IAAA,EACpC;AAAA,EAAA,IADsC3B,QAAQ,GAAA2B,IAAA,CAAR3B,QAAQ;IAAEC,SAAS,GAAA0B,IAAA,CAAT1B,SAAS;IAAEC,aAAa,GAAAyB,IAAA,CAAbzB,aAAa;IAAEH,KAAK,GAAA4B,IAAA,CAAL5B,KAAK;IAAE6B,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,aAAa,GAAAF,IAAA,CAAbE,aAAa;IAAEC,SAAS,GAAAH,IAAA,CAATG,SAAS;IAAEC,UAAU,GAAAJ,IAAA,CAAVI,UAAU;IAAEC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;AAAKC,IAAAA,KAAK,GAAAC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA,CAAA,CAAA;EAElJlC,SAAS,GAAG,CAAC,CAACA,SAAS,CAAA;EACvBC,aAAa,GAAG,CAAC,CAACA,aAAa,CAAA;AAC/BF,EAAAA,QAAQ,GAAGoC,WAAW,CAACpC,QAAQ,EAAE,CAAC,CAAC,CAAA;EAGnC,IAAMqC,cAAc,GAAGZ,KAAK,CAACa,WAAW,CAAC,UAACvC,KAAK,EAC/C;IACC,OAAOD,iBAAiB,CAACC,KAAK,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,aAAa,CAAC,CAACC,IAAI,CAAA;GACxE,EAAE,CAACH,QAAQ,EAAEC,SAAS,EAAEC,aAAa,CAAC,CAAC,CAAA;EAGxC,IAAAqC,eAAA,GAAsCd,KAAK,CAACe,QAAQ,CAACH,cAAc,CAACtC,KAAK,CAAC,CAAC;IAAA0C,gBAAA,GAAAC,cAAA,CAAAH,eAAA,EAAA,CAAA,CAAA;AAApEI,IAAAA,WAAW,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,cAAc,GAAAH,gBAAA,CAAA,CAAA,CAAA,CAAA;EAElChB,KAAK,CAACoB,SAAS,CAAC,YAChB;AACC,IAAA,IAAMC,cAAc,GAAGT,cAAc,CAACtC,KAAK,CAAC,CAAA;IAC5C,IAAGe,SAAS,CAAC6B,WAAW,CAAC,KAAK7B,SAAS,CAACgC,cAAc,CAAC,EACvD;MACCF,cAAc,CAACE,cAAc,CAAC,CAAA;AAC/B,KAAA;AACD,GAAC,EAAE,CAAC/C,KAAK,EAAEsC,cAAc,CAAC,CAAC,CAAA;EAG3B,IAAMU,SAAS,GAAGtB,KAAK,CAACa,WAAW,CAAC,UAACU,KAAK,EAC1C;AACC,IAAA,IAAMC,mBAAmB,GAAGD,KAAK,CAACE,MAAM,CAACnD,KAAK,CAAA;IAC9C,IAAAoD,kBAAA,GAAoBrD,iBAAiB,CAACmD,mBAAmB,EAAEjD,QAAQ,EAAEC,SAAS,EAAEC,aAAa,CAAC;MAAvFC,IAAI,GAAAgD,kBAAA,CAAJhD,IAAI;MAAEI,GAAG,GAAA4C,kBAAA,CAAH5C,GAAG,CAAA;IAEhBqC,cAAc,CAACzC,IAAI,CAAC,CAAA;AAEpB,IAAA,IAAGyB,QAAQ,EACX;AACC,MAAA,IAAMwB,QAAQ,GAAAC,aAAA,CAAAA,aAAA,KACVL,KAAK,CAAA,EAAA,EAAA,EAAA;AACRE,QAAAA,MAAM,EAAAG,aAAA,CAAAA,aAAA,CACFL,EAAAA,EAAAA,KAAK,CAACE,MAAM,CAAA,EAAA,EAAA,EAAA;AACfnD,UAAAA,KAAK,EAAKQ,GAAG;AACb+C,UAAAA,SAAS,EAACnD,IAAI;AACdoD,UAAAA,QAAQ,EAAEN,mBAAAA;AAAmB,SAAA,CAAA;OAE9B,CAAA,CAAA;MACDrB,QAAQ,CAACwB,QAAQ,CAAC,CAAA;AACnB,KAAA;AACD,GAAC,EAAE,CAACxB,QAAQ,CAAC,CAAC,CAAA;AAGd,EAAA,oBAAQ4B,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAE,QAAA,EACPF,IAAAA,eAAAA,KAAA,CAAAC,aAAA,CAACE,SAAS,EAAAC,QAAA,CAAA;IAAC9B,SAAS,EAAE,kCAAkC,IAAIA,SAAS,KAAA,IAAA,IAATA,SAAS,KAATA,KAAAA,CAAAA,GAAAA,SAAS,GAAI,EAAE,CAAE;AAAC+B,IAAAA,IAAI,EAAC,MAAM;AAAC9B,IAAAA,UAAU,EAAAsB,aAAA,CAAA;AAAGS,MAAAA,SAAS,EAAC,SAAA;KAAe/B,EAAAA,UAAU,aAAVA,UAAU,KAAA,KAAA,CAAA,GAAVA,UAAU,GAAI,EAAE,CAAG;IAAChC,KAAK,EAAE,CAAC,CAAC8B,aAAa,GAAGA,aAAa,CAACc,WAAW,CAAC,GAAGA,WAAY;AAACf,IAAAA,QAAQ,EAAEmB,SAAAA;AAAU,GAAA,EAAKd,KAAK,CAAA,EAAGD,QAAoB,CAC3Q,CAAC,CAAA;AACJ,CAAC;;;;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/extends';
|
|
1
2
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { LeRed } from '@lowentry/react-redux';
|
|
4
5
|
import { L as LeMuiUtils } from '../LeMuiUtils-c46ed1cc.js';
|
|
5
6
|
import NumericTextField from '../NumericTextField/index.js';
|
|
6
7
|
import '@lowentry/utils';
|
|
7
|
-
import '@babel/runtime/helpers/extends';
|
|
8
8
|
import '@babel/runtime/helpers/defineProperty';
|
|
9
9
|
import '@babel/runtime/helpers/slicedToArray';
|
|
10
10
|
import '../TextField/index.js';
|
|
@@ -17,8 +17,8 @@ var RemovableNumericTextField = LeRed.memo(function (_ref) {
|
|
|
17
17
|
onChange = _ref.onChange,
|
|
18
18
|
onSelect = _ref.onSelect,
|
|
19
19
|
className = _ref.className,
|
|
20
|
-
children = _ref.children
|
|
21
|
-
_objectWithoutProperties(_ref, _excluded);
|
|
20
|
+
children = _ref.children,
|
|
21
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
22
22
|
var onChanged = LeRed.useCallback(function (event) {
|
|
23
23
|
if (event.target.valueRaw === '') {
|
|
24
24
|
if (onRemove) {
|
|
@@ -36,12 +36,12 @@ var RemovableNumericTextField = LeRed.memo(function (_ref) {
|
|
|
36
36
|
onSelect(event);
|
|
37
37
|
}
|
|
38
38
|
}, [onSelect]);
|
|
39
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(NumericTextField, {
|
|
39
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(NumericTextField, _extends({
|
|
40
40
|
className: 'lowentry-mui--removable-textfield lowentry-mui--removable-numeric-textfield ' + (className !== null && className !== void 0 ? className : ''),
|
|
41
41
|
onRenderValue: LeMuiUtils.prependHiddenChar,
|
|
42
42
|
onChange: onChanged,
|
|
43
43
|
onSelect: onSelected
|
|
44
|
-
}, children));
|
|
44
|
+
}, props), children));
|
|
45
45
|
});
|
|
46
46
|
|
|
47
47
|
export { RemovableNumericTextField as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/RemovableNumericTextField.jsx"],"sourcesContent":["import React from 'react';\nimport {LeRed} from '@lowentry/react-redux';\nimport {LeMuiUtils} from '../LeMuiUtils';\nimport NumericTextField from './NumericTextField.jsx';\n\n\nconst RemovableNumericTextField = LeRed.memo(({onRemove, onChange, onSelect, className, children, ...props}) =>\n{\n\tconst onChanged = LeRed.useCallback((event) =>\n\t{\n\t\tif(event.target.valueRaw === '')\n\t\t{\n\t\t\tif(onRemove)\n\t\t\t{\n\t\t\t\tonRemove(event);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(onChange)\n\t\t{\n\t\t\tonChange(event);\n\t\t}\n\t}, [onRemove, onChange]);\n\t\n\t\n\tconst onSelected = LeRed.useCallback((event) =>\n\t{\n\t\tLeMuiUtils.onSelectEnsureMinimumOffset(1)(event);\n\t\tif(onSelect)\n\t\t{\n\t\t\tonSelect(event);\n\t\t}\n\t}, [onSelect]);\n\t\n\t\n\treturn (<>\n\t\t<NumericTextField className={'lowentry-mui--removable-textfield lowentry-mui--removable-numeric-textfield ' + (className ?? '')} onRenderValue={LeMuiUtils.prependHiddenChar} onChange={onChanged} onSelect={onSelected}>{children}</NumericTextField>\n\t</>);\n});\nexport default RemovableNumericTextField;\n"],"names":["RemovableNumericTextField","LeRed","memo","_ref","onRemove","onChange","onSelect","className","children","props","_objectWithoutProperties","_excluded","onChanged","useCallback","event","target","valueRaw","onSelected","LeMuiUtils","onSelectEnsureMinimumOffset","React","createElement","Fragment","NumericTextField","onRenderValue","prependHiddenChar"],"mappings":";;;;;;;;;;;;;;AAMMA,IAAAA,yBAAyB,GAAGC,KAAK,CAACC,IAAI,CAAC,UAAAC,IAAA,EAC7C;AAAA,EAAA,IAD+CC,QAAQ,GAAAD,IAAA,CAARC,QAAQ
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/RemovableNumericTextField.jsx"],"sourcesContent":["import React from 'react';\nimport {LeRed} from '@lowentry/react-redux';\nimport {LeMuiUtils} from '../LeMuiUtils';\nimport NumericTextField from './NumericTextField.jsx';\n\n\nconst RemovableNumericTextField = LeRed.memo(({onRemove, onChange, onSelect, className, children, ...props}) =>\n{\n\tconst onChanged = LeRed.useCallback((event) =>\n\t{\n\t\tif(event.target.valueRaw === '')\n\t\t{\n\t\t\tif(onRemove)\n\t\t\t{\n\t\t\t\tonRemove(event);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(onChange)\n\t\t{\n\t\t\tonChange(event);\n\t\t}\n\t}, [onRemove, onChange]);\n\t\n\t\n\tconst onSelected = LeRed.useCallback((event) =>\n\t{\n\t\tLeMuiUtils.onSelectEnsureMinimumOffset(1)(event);\n\t\tif(onSelect)\n\t\t{\n\t\t\tonSelect(event);\n\t\t}\n\t}, [onSelect]);\n\t\n\t\n\treturn (<>\n\t\t<NumericTextField className={'lowentry-mui--removable-textfield lowentry-mui--removable-numeric-textfield ' + (className ?? '')} onRenderValue={LeMuiUtils.prependHiddenChar} onChange={onChanged} onSelect={onSelected} {...props}>{children}</NumericTextField>\n\t</>);\n});\nexport default RemovableNumericTextField;\n"],"names":["RemovableNumericTextField","LeRed","memo","_ref","onRemove","onChange","onSelect","className","children","props","_objectWithoutProperties","_excluded","onChanged","useCallback","event","target","valueRaw","onSelected","LeMuiUtils","onSelectEnsureMinimumOffset","React","createElement","Fragment","NumericTextField","_extends","onRenderValue","prependHiddenChar"],"mappings":";;;;;;;;;;;;;;AAMMA,IAAAA,yBAAyB,GAAGC,KAAK,CAACC,IAAI,CAAC,UAAAC,IAAA,EAC7C;AAAA,EAAA,IAD+CC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IAAEC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IAAEC,SAAS,GAAAJ,IAAA,CAATI,SAAS;IAAEC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;AAAKC,IAAAA,KAAK,GAAAC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA,CAAA,CAAA;EAEzG,IAAMC,SAAS,GAAGX,KAAK,CAACY,WAAW,CAAC,UAACC,KAAK,EAC1C;AACC,IAAA,IAAGA,KAAK,CAACC,MAAM,CAACC,QAAQ,KAAK,EAAE,EAC/B;AACC,MAAA,IAAGZ,QAAQ,EACX;QACCA,QAAQ,CAACU,KAAK,CAAC,CAAA;AAChB,OAAA;AACA,MAAA,OAAA;AACD,KAAA;AAEA,IAAA,IAAGT,QAAQ,EACX;MACCA,QAAQ,CAACS,KAAK,CAAC,CAAA;AAChB,KAAA;AACD,GAAC,EAAE,CAACV,QAAQ,EAAEC,QAAQ,CAAC,CAAC,CAAA;EAGxB,IAAMY,UAAU,GAAGhB,KAAK,CAACY,WAAW,CAAC,UAACC,KAAK,EAC3C;AACCI,IAAAA,UAAU,CAACC,2BAA2B,CAAC,CAAC,CAAC,CAACL,KAAK,CAAC,CAAA;AAChD,IAAA,IAAGR,QAAQ,EACX;MACCA,QAAQ,CAACQ,KAAK,CAAC,CAAA;AAChB,KAAA;AACD,GAAC,EAAE,CAACR,QAAQ,CAAC,CAAC,CAAA;AAGd,EAAA,oBAAQc,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAE,QAAA,EACPF,IAAAA,eAAAA,KAAA,CAAAC,aAAA,CAACE,gBAAgB,EAAAC,QAAA,CAAA;IAACjB,SAAS,EAAE,8EAA8E,IAAIA,SAAS,KAAA,IAAA,IAATA,SAAS,KAATA,KAAAA,CAAAA,GAAAA,SAAS,GAAI,EAAE,CAAE;IAACkB,aAAa,EAAEP,UAAU,CAACQ,iBAAkB;AAACrB,IAAAA,QAAQ,EAAEO,SAAU;AAACN,IAAAA,QAAQ,EAAEW,UAAAA;AAAW,GAAA,EAAKR,KAAK,CAAA,EAAGD,QAA2B,CAC/P,CAAC,CAAA;AACJ,CAAC;;;;"}
|
package/package.json
CHANGED
|
@@ -1,101 +1,99 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import {LeRed} from '@lowentry/react-redux';
|
|
3
|
-
import {
|
|
3
|
+
import {FLOAT_LAX, INT_LAX_ANY, STRING} from '@lowentry/utils';
|
|
4
4
|
import {LeMuiUtils} from '../LeMuiUtils.js';
|
|
5
5
|
import TextField from './TextField.jsx';
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const getProcessedValue = (value, decimals, allowZero, allowNegative) =>
|
|
9
9
|
{
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
allowZero = true;
|
|
13
|
-
}
|
|
14
|
-
if(typeof allowNegative === 'undefined')
|
|
15
|
-
{
|
|
16
|
-
allowNegative = true;
|
|
17
|
-
}
|
|
18
|
-
decimals = INT_LAX_ANY(decimals, 2);
|
|
10
|
+
let text = LeMuiUtils.purgePrependedHiddenChar(STRING(value));
|
|
11
|
+
let val = 0;
|
|
19
12
|
|
|
13
|
+
const negative = text.includes('-');
|
|
20
14
|
|
|
21
|
-
|
|
15
|
+
text = text.replace(',', '.').replace(/[^0-9.]/g, '');
|
|
16
|
+
if(text !== '')
|
|
22
17
|
{
|
|
23
|
-
let
|
|
24
|
-
|
|
18
|
+
let stringVal = Math.abs(FLOAT_LAX(text)).toFixed(decimals + 1); // prevents rounding (by adding an extra digit and then cutting it off)
|
|
19
|
+
stringVal = stringVal.substring(0, stringVal.length - 1);
|
|
20
|
+
|
|
21
|
+
const textDotCount = text.split('.').length - 1;
|
|
22
|
+
if((textDotCount <= 0) || (decimals <= 0))
|
|
23
|
+
{
|
|
24
|
+
text = stringVal.split('.')[0];
|
|
25
|
+
}
|
|
26
|
+
else if((textDotCount === 1) && text.endsWith('.'))
|
|
25
27
|
{
|
|
26
|
-
text =
|
|
28
|
+
text = stringVal.split('.')[0] + '.';
|
|
29
|
+
}
|
|
30
|
+
else
|
|
31
|
+
{
|
|
32
|
+
text = stringVal.substring(0, stringVal.length - Math.max(0, decimals - text.split('.')[1].length));
|
|
27
33
|
}
|
|
28
34
|
|
|
29
|
-
text = text.toFixed(decimals); // rounds it
|
|
30
|
-
text = LeUtils.trimEnd(LeUtils.trimEnd(text, '0'), '.');
|
|
31
35
|
if(!allowZero && (text === '0'))
|
|
32
36
|
{
|
|
33
37
|
text = '';
|
|
34
38
|
}
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if(allowNegative && negative)
|
|
42
|
+
{
|
|
43
|
+
text = '-' + text;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
val = FLOAT_LAX(text);
|
|
47
|
+
if(val !== 0)
|
|
48
|
+
{
|
|
49
|
+
if(decimals > 0)
|
|
50
|
+
{
|
|
51
|
+
val = Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);
|
|
52
|
+
}
|
|
53
|
+
else
|
|
54
|
+
{
|
|
55
|
+
val = Math.round(val);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return {text, val};
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
const NumericTextField = LeRed.memo(({decimals, allowZero, allowNegative, value, onChange, onRenderValue, className, inputProps, children, ...props}) =>
|
|
64
|
+
{
|
|
65
|
+
allowZero = !!allowZero;
|
|
66
|
+
allowNegative = !!allowNegative;
|
|
67
|
+
decimals = INT_LAX_ANY(decimals, 0);
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
const getVisualValue = LeRed.useCallback((value) =>
|
|
71
|
+
{
|
|
72
|
+
return getProcessedValue(value, decimals, allowZero, allowNegative).text;
|
|
73
|
+
}, [decimals, allowZero, allowNegative]);
|
|
37
74
|
|
|
38
75
|
|
|
39
76
|
const [visualValue, setVisualValue] = LeRed.useState(getVisualValue(value));
|
|
40
77
|
|
|
41
78
|
LeRed.useEffect(() =>
|
|
42
79
|
{
|
|
43
|
-
|
|
44
|
-
|
|
80
|
+
const newVisualValue = getVisualValue(value);
|
|
81
|
+
if(FLOAT_LAX(visualValue) !== FLOAT_LAX(newVisualValue))
|
|
82
|
+
{
|
|
83
|
+
setVisualValue(newVisualValue);
|
|
84
|
+
}
|
|
85
|
+
}, [value, getVisualValue]);
|
|
45
86
|
|
|
46
87
|
|
|
47
88
|
const onChanged = LeRed.useCallback((event) =>
|
|
48
89
|
{
|
|
49
90
|
const originalTargetValue = event.target.value;
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
let text = targetValue;
|
|
53
|
-
let val = 0;
|
|
91
|
+
const {text, val} = getProcessedValue(originalTargetValue, decimals, allowZero, allowNegative);
|
|
54
92
|
|
|
55
|
-
|
|
56
|
-
const minus = text.includes('-');
|
|
57
|
-
text = text.replace(',', '.').replace(/[^0-9.]/g, '');
|
|
58
|
-
if(text !== '')
|
|
59
|
-
{
|
|
60
|
-
val = Math.abs(FLOAT_LAX(text));
|
|
61
|
-
if(allowNegative && minus)
|
|
62
|
-
{
|
|
63
|
-
val = -val;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
let stringVal = val.toFixed(decimals + 1); // prevents rounding (by adding an extra digit and then cutting it off)
|
|
67
|
-
stringVal = stringVal.substring(0, stringVal.length - 1);
|
|
68
|
-
|
|
69
|
-
if(!text.includes('.') || (decimals <= 0))
|
|
70
|
-
{
|
|
71
|
-
text = stringVal.split('.')[0];
|
|
72
|
-
}
|
|
73
|
-
else if(text.endsWith('.'))
|
|
74
|
-
{
|
|
75
|
-
text = stringVal.split('.')[0] + '.';
|
|
76
|
-
}
|
|
77
|
-
else
|
|
78
|
-
{
|
|
79
|
-
text = stringVal.substring(0, stringVal.length - Math.max(0, decimals - text.split('.')[1].length));
|
|
80
|
-
}
|
|
81
|
-
setVisualValue(text);
|
|
82
|
-
}
|
|
83
|
-
}// visual <<
|
|
93
|
+
setVisualValue(text);
|
|
84
94
|
|
|
85
95
|
if(onChange)
|
|
86
96
|
{
|
|
87
|
-
if(val !== 0)
|
|
88
|
-
{
|
|
89
|
-
if(decimals > 0)
|
|
90
|
-
{
|
|
91
|
-
val = Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);
|
|
92
|
-
}
|
|
93
|
-
else
|
|
94
|
-
{
|
|
95
|
-
val = Math.round(val);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
97
|
const newEvent = {
|
|
100
98
|
...event,
|
|
101
99
|
target:{
|
|
@@ -35,7 +35,7 @@ const RemovableNumericTextField = LeRed.memo(({onRemove, onChange, onSelect, cla
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
return (<>
|
|
38
|
-
<NumericTextField className={'lowentry-mui--removable-textfield lowentry-mui--removable-numeric-textfield ' + (className ?? '')} onRenderValue={LeMuiUtils.prependHiddenChar} onChange={onChanged} onSelect={onSelected}>{children}</NumericTextField>
|
|
38
|
+
<NumericTextField className={'lowentry-mui--removable-textfield lowentry-mui--removable-numeric-textfield ' + (className ?? '')} onRenderValue={LeMuiUtils.prependHiddenChar} onChange={onChanged} onSelect={onSelected} {...props}>{children}</NumericTextField>
|
|
39
39
|
</>);
|
|
40
40
|
});
|
|
41
41
|
export default RemovableNumericTextField;
|