@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.
@@ -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, LeUtils } from '@lowentry/utils';
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
- if (typeof allowZero === 'undefined') {
28
- allowZero = true;
29
- }
30
- if (typeof allowNegative === 'undefined') {
31
- allowNegative = true;
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
- setVisualValue(getVisualValue(value));
52
- }, [value]);
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 targetValue = LeMuiUtils.purgePrependedHiddenChar(originalTargetValue);
56
- var text = targetValue;
57
- var val = 0;
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 {LeUtils, FLOAT_LAX, INT_LAX_ANY} from '@lowentry/utils';\nimport {LeMuiUtils} from '../LeMuiUtils.js';\nimport TextField from './TextField.jsx';\n\n\nconst NumericTextField = LeRed.memo(({decimals, allowZero, allowNegative, value, onChange, onRenderValue, className, inputProps, children, ...props}) =>\n{\n\tif(typeof allowZero === 'undefined')\n\t{\n\t\tallowZero = true;\n\t}\n\tif(typeof allowNegative === 'undefined')\n\t{\n\t\tallowNegative = true;\n\t}\n\tdecimals = INT_LAX_ANY(decimals, 2);\n\t\n\t\n\tconst getVisualValue = (value) =>\n\t{\n\t\tlet text = FLOAT_LAX(LeMuiUtils.purgePrependedHiddenChar(value));\n\t\tif(!allowNegative)\n\t\t{\n\t\t\ttext = Math.abs(text);\n\t\t}\n\t\t\n\t\ttext = text.toFixed(decimals); // rounds it\n\t\ttext = LeUtils.trimEnd(LeUtils.trimEnd(text, '0'), '.');\n\t\tif(!allowZero && (text === '0'))\n\t\t{\n\t\t\ttext = '';\n\t\t}\n\t\treturn text;\n\t};\n\t\n\t\n\tconst [visualValue, setVisualValue] = LeRed.useState(getVisualValue(value));\n\t\n\tLeRed.useEffect(() =>\n\t{\n\t\tsetVisualValue(getVisualValue(value));\n\t}, [value]);\n\t\n\t\n\tconst onChanged = LeRed.useCallback((event) =>\n\t{\n\t\tconst originalTargetValue = event.target.value;\n\t\tconst targetValue = LeMuiUtils.purgePrependedHiddenChar(originalTargetValue);\n\t\t\n\t\tlet text = targetValue;\n\t\tlet val = 0;\n\t\t\n\t\t{// visual >>\n\t\t\tconst minus = text.includes('-');\n\t\t\ttext = text.replace(',', '.').replace(/[^0-9.]/g, '');\n\t\t\tif(text !== '')\n\t\t\t{\n\t\t\t\tval = Math.abs(FLOAT_LAX(text));\n\t\t\t\tif(allowNegative && minus)\n\t\t\t\t{\n\t\t\t\t\tval = -val;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlet stringVal = val.toFixed(decimals + 1); // prevents rounding (by adding an extra digit and then cutting it off)\n\t\t\t\tstringVal = stringVal.substring(0, stringVal.length - 1);\n\t\t\t\t\n\t\t\t\tif(!text.includes('.') || (decimals <= 0))\n\t\t\t\t{\n\t\t\t\t\ttext = stringVal.split('.')[0];\n\t\t\t\t}\n\t\t\t\telse if(text.endsWith('.'))\n\t\t\t\t{\n\t\t\t\t\ttext = stringVal.split('.')[0] + '.';\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ttext = stringVal.substring(0, stringVal.length - Math.max(0, decimals - text.split('.')[1].length));\n\t\t\t\t}\n\t\t\t\tsetVisualValue(text);\n\t\t\t}\n\t\t}// visual <<\n\t\t\n\t\tif(onChange)\n\t\t{\n\t\t\tif(val !== 0)\n\t\t\t{\n\t\t\t\tif(decimals > 0)\n\t\t\t\t{\n\t\t\t\t\tval = Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tval = Math.round(val);\n\t\t\t\t}\n\t\t\t}\n\t\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":["NumericTextField","LeRed","memo","_ref","decimals","allowZero","allowNegative","value","onChange","onRenderValue","className","inputProps","children","props","_objectWithoutProperties","_excluded","INT_LAX_ANY","getVisualValue","text","FLOAT_LAX","LeMuiUtils","purgePrependedHiddenChar","Math","abs","toFixed","LeUtils","trimEnd","_LeRed$useState","useState","_LeRed$useState2","_slicedToArray","visualValue","setVisualValue","useEffect","onChanged","useCallback","event","originalTargetValue","target","targetValue","val","minus","includes","replace","stringVal","substring","length","split","endsWith","max","round","pow","newEvent","_objectSpread","valueText","valueRaw","React","createElement","Fragment","TextField","_extends","type","inputMode"],"mappings":"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"}
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":"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"}
@@ -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,CAAA;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ,CAAA;IAAEC,QAAQ,GAAAH,IAAA,CAARG,QAAQ,CAAA;IAAEC,SAAS,GAAAJ,IAAA,CAATI,SAAS,CAAA;IAAEC,QAAQ,GAAAL,IAAA,CAARK,QAAQ,CAAA;AAAKC,IAAKC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA,EAAA;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,EAAA,IAAA,eACPF,KAAA,CAAAC,aAAA,CAACE,gBAAgB,EAAA;IAAChB,SAAS,EAAE,8EAA8E,IAAIA,SAAS,KAAA,IAAA,IAATA,SAAS,KAATA,KAAAA,CAAAA,GAAAA,SAAS,GAAI,EAAE,CAAE;IAACiB,aAAa,EAAEN,UAAU,CAACO,iBAAkB;AAACpB,IAAAA,QAAQ,EAAEO,SAAU;AAACN,IAAAA,QAAQ,EAAEW,UAAAA;GAAaT,EAAAA,QAA2B,CACpP,CAAC,CAAA;AACJ,CAAC;;;;"}
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,7 +1,8 @@
1
1
  {
2
2
  "name": "@lowentry/mui",
3
- "version": "1.2.10",
3
+ "version": "1.2.11",
4
4
  "private": false,
5
+ "main": "./index.js",
5
6
  "description": "Provides utilities for Material UI.",
6
7
  "author": "Low Entry",
7
8
  "license": "MIT",
@@ -1,101 +1,99 @@
1
1
  import React from 'react';
2
2
  import {LeRed} from '@lowentry/react-redux';
3
- import {LeUtils, FLOAT_LAX, INT_LAX_ANY} from '@lowentry/utils';
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 NumericTextField = LeRed.memo(({decimals, allowZero, allowNegative, value, onChange, onRenderValue, className, inputProps, children, ...props}) =>
8
+ const getProcessedValue = (value, decimals, allowZero, allowNegative) =>
9
9
  {
10
- if(typeof allowZero === 'undefined')
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
- const getVisualValue = (value) =>
15
+ text = text.replace(',', '.').replace(/[^0-9.]/g, '');
16
+ if(text !== '')
22
17
  {
23
- let text = FLOAT_LAX(LeMuiUtils.purgePrependedHiddenChar(value));
24
- if(!allowNegative)
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 = Math.abs(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
- return text;
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
- setVisualValue(getVisualValue(value));
44
- }, [value]);
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 targetValue = LeMuiUtils.purgePrependedHiddenChar(originalTargetValue);
51
-
52
- let text = targetValue;
53
- let val = 0;
91
+ const {text, val} = getProcessedValue(originalTargetValue, decimals, allowZero, allowNegative);
54
92
 
55
- {// visual >>
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;