@pie-lib/config-ui 11.1.5-next.48 → 11.1.5-next.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.
Files changed (63) hide show
  1. package/lib/alert-dialog.js +10 -4
  2. package/lib/alert-dialog.js.map +1 -1
  3. package/lib/checkbox.js +17 -5
  4. package/lib/checkbox.js.map +1 -1
  5. package/lib/choice-configuration/feedback-menu.js +38 -5
  6. package/lib/choice-configuration/feedback-menu.js.map +1 -1
  7. package/lib/choice-configuration/index.js +94 -48
  8. package/lib/choice-configuration/index.js.map +1 -1
  9. package/lib/choice-utils.js +11 -1
  10. package/lib/choice-utils.js.map +1 -1
  11. package/lib/feedback-config/feedback-selector.js +41 -9
  12. package/lib/feedback-config/feedback-selector.js.map +1 -1
  13. package/lib/feedback-config/group.js +16 -5
  14. package/lib/feedback-config/group.js.map +1 -1
  15. package/lib/feedback-config/index.js +46 -6
  16. package/lib/feedback-config/index.js.map +1 -1
  17. package/lib/form-section.js +12 -4
  18. package/lib/form-section.js.map +1 -1
  19. package/lib/help.js +37 -6
  20. package/lib/help.js.map +1 -1
  21. package/lib/index.js +29 -0
  22. package/lib/index.js.map +1 -1
  23. package/lib/input.js +37 -9
  24. package/lib/input.js.map +1 -1
  25. package/lib/inputs.js +35 -16
  26. package/lib/inputs.js.map +1 -1
  27. package/lib/langs.js +39 -10
  28. package/lib/langs.js.map +1 -1
  29. package/lib/layout/config-layout.js +26 -3
  30. package/lib/layout/config-layout.js.map +1 -1
  31. package/lib/layout/index.js +3 -0
  32. package/lib/layout/index.js.map +1 -1
  33. package/lib/layout/layout-contents.js +39 -13
  34. package/lib/layout/layout-contents.js.map +1 -1
  35. package/lib/layout/settings-box.js +24 -3
  36. package/lib/layout/settings-box.js.map +1 -1
  37. package/lib/mui-box/index.js +10 -3
  38. package/lib/mui-box/index.js.map +1 -1
  39. package/lib/number-text-field-custom.js +82 -29
  40. package/lib/number-text-field-custom.js.map +1 -1
  41. package/lib/number-text-field.js +66 -16
  42. package/lib/number-text-field.js.map +1 -1
  43. package/lib/radio-with-label.js +11 -4
  44. package/lib/radio-with-label.js.map +1 -1
  45. package/lib/settings/display-size.js +15 -3
  46. package/lib/settings/display-size.js.map +1 -1
  47. package/lib/settings/index.js +27 -4
  48. package/lib/settings/index.js.map +1 -1
  49. package/lib/settings/panel.js +102 -40
  50. package/lib/settings/panel.js.map +1 -1
  51. package/lib/settings/settings-radio-label.js +11 -4
  52. package/lib/settings/settings-radio-label.js.map +1 -1
  53. package/lib/settings/toggle.js +10 -3
  54. package/lib/settings/toggle.js.map +1 -1
  55. package/lib/tabs/index.js +29 -6
  56. package/lib/tabs/index.js.map +1 -1
  57. package/lib/tags-input/index.js +41 -4
  58. package/lib/tags-input/index.js.map +1 -1
  59. package/lib/two-choice.js +48 -14
  60. package/lib/two-choice.js.map +1 -1
  61. package/lib/with-stateful-model.js +19 -0
  62. package/lib/with-stateful-model.js.map +1 -1
  63. package/package.json +3 -3
@@ -1,29 +1,50 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = exports.NumberTextFieldCustom = void 0;
9
+
8
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
9
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
10
14
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
11
16
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
12
18
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
13
20
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
14
22
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
15
24
  var _propTypes = _interopRequireDefault(require("prop-types"));
25
+
16
26
  var _react = _interopRequireDefault(require("react"));
27
+
17
28
  var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
29
+
18
30
  var _classnames = _interopRequireDefault(require("classnames"));
31
+
19
32
  var _styles = require("@material-ui/core/styles");
33
+
20
34
  var _isFinite = _interopRequireDefault(require("lodash/isFinite"));
35
+
21
36
  var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
37
+
22
38
  var _InputAdornment = _interopRequireDefault(require("@material-ui/core/InputAdornment"));
39
+
23
40
  var _Remove = _interopRequireDefault(require("@material-ui/icons/Remove"));
41
+
24
42
  var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
43
+
25
44
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
45
+
26
46
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
47
+
27
48
  var styles = function styles(theme) {
28
49
  return {
29
50
  input: {
@@ -44,36 +65,47 @@ var styles = function styles(theme) {
44
65
  }
45
66
  };
46
67
  };
68
+
47
69
  var fallbackNumber = function fallbackNumber(min, max) {
48
70
  if (!(0, _isFinite["default"])(min) && !(0, _isFinite["default"])(max)) {
49
71
  return 0;
50
72
  }
73
+
51
74
  if (!(0, _isFinite["default"])(min) && (0, _isFinite["default"])(max)) {
52
75
  return max;
53
76
  }
77
+
54
78
  if ((0, _isFinite["default"])(min)) {
55
79
  return min;
56
80
  }
57
81
  };
82
+
58
83
  var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
59
84
  (0, _inherits2["default"])(NumberTextFieldCustom, _React$Component);
85
+
60
86
  var _super = _createSuper(NumberTextFieldCustom);
87
+
61
88
  function NumberTextFieldCustom(props) {
62
89
  var _this;
90
+
63
91
  (0, _classCallCheck2["default"])(this, NumberTextFieldCustom);
64
92
  _this = _super.call(this, props);
65
93
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "normalizeValueAndIndex", function (customValues, number) {
66
94
  var value = _this.clamp(number);
95
+
67
96
  var currentIndex = (customValues || []).findIndex(function (val) {
68
97
  return val === value;
69
98
  });
99
+
70
100
  if ((customValues || []).length > 0 && currentIndex === -1) {
71
101
  var closestValue = _this.getClosestValue(customValues, value);
102
+
72
103
  return {
73
104
  value: closestValue.value,
74
105
  currentIndex: closestValue.index
75
106
  };
76
107
  }
108
+
77
109
  return {
78
110
  value: value,
79
111
  currentIndex: currentIndex
@@ -92,13 +124,15 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
92
124
  });
93
125
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onBlur", function (event) {
94
126
  var _this$props = _this.props,
95
- customValues = _this$props.customValues,
96
- onlyIntegersAllowed = _this$props.onlyIntegersAllowed;
127
+ customValues = _this$props.customValues,
128
+ onlyIntegersAllowed = _this$props.onlyIntegersAllowed;
97
129
  var value = event.target.value;
98
130
  var rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);
131
+
99
132
  var _this$normalizeValueA = _this.normalizeValueAndIndex(customValues, rawNumber),
100
- number = _this$normalizeValueA.value,
101
- currentIndex = _this$normalizeValueA.currentIndex;
133
+ number = _this$normalizeValueA.value,
134
+ currentIndex = _this$normalizeValueA.currentIndex;
135
+
102
136
  if (number !== _this.state.value) {
103
137
  _this.setState({
104
138
  value: number.toString(),
@@ -108,25 +142,31 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
108
142
  });
109
143
  }
110
144
  });
145
+
111
146
  var _this$normalizeValueA2 = _this.normalizeValueAndIndex(props.customValues, props.value),
112
- _value = _this$normalizeValueA2.value,
113
- _currentIndex = _this$normalizeValueA2.currentIndex;
147
+ _value = _this$normalizeValueA2.value,
148
+ _currentIndex = _this$normalizeValueA2.currentIndex;
149
+
114
150
  _this.state = {
115
151
  value: _value,
116
152
  currentIndex: _currentIndex
117
153
  };
154
+
118
155
  if (_value !== props.value) {
119
156
  _this.props.onChange({}, _value);
120
157
  }
158
+
121
159
  _this.onChange = _this.onChange.bind((0, _assertThisInitialized2["default"])(_this));
122
160
  return _this;
123
161
  }
162
+
124
163
  (0, _createClass2["default"])(NumberTextFieldCustom, [{
125
164
  key: "UNSAFE_componentWillReceiveProps",
126
165
  value: function UNSAFE_componentWillReceiveProps(props) {
127
166
  var _this$normalizeValueA3 = this.normalizeValueAndIndex(props.customValues, props.value),
128
- value = _this$normalizeValueA3.value,
129
- currentIndex = _this$normalizeValueA3.currentIndex;
167
+ value = _this$normalizeValueA3.value,
168
+ currentIndex = _this$normalizeValueA3.currentIndex;
169
+
130
170
  this.setState({
131
171
  value: value,
132
172
  currentIndex: currentIndex
@@ -136,21 +176,26 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
136
176
  key: "clamp",
137
177
  value: function clamp(value) {
138
178
  var _this$props2 = this.props,
139
- min = _this$props2.min,
140
- max = _this$props2.max,
141
- customValues = _this$props2.customValues;
179
+ min = _this$props2.min,
180
+ max = _this$props2.max,
181
+ customValues = _this$props2.customValues;
182
+
142
183
  if ((customValues || []).length > 0) {
143
184
  return value;
144
185
  }
186
+
145
187
  if (!(0, _isFinite["default"])(value)) {
146
188
  return fallbackNumber(min, max);
147
189
  }
190
+
148
191
  if ((0, _isFinite["default"])(max)) {
149
192
  value = Math.min(value, max);
150
193
  }
194
+
151
195
  if ((0, _isFinite["default"])(min)) {
152
196
  value = Math.max(value, min);
153
197
  }
198
+
154
199
  return value;
155
200
  }
156
201
  }, {
@@ -168,25 +213,28 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
168
213
  var shouldUpdate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
169
214
  event.preventDefault();
170
215
  var _this$props3 = this.props,
171
- customValues = _this$props3.customValues,
172
- step = _this$props3.step,
173
- onlyIntegersAllowed = _this$props3.onlyIntegersAllowed,
174
- onChange = _this$props3.onChange;
216
+ customValues = _this$props3.customValues,
217
+ step = _this$props3.step,
218
+ onlyIntegersAllowed = _this$props3.onlyIntegersAllowed,
219
+ onChange = _this$props3.onChange;
175
220
  var _this$state = this.state,
176
- currentIndex = _this$state.currentIndex,
177
- value = _this$state.value;
221
+ currentIndex = _this$state.currentIndex,
222
+ value = _this$state.value;
178
223
  var updatedIndex = currentIndex + sign * 1;
179
224
  var number;
225
+
180
226
  if (customValues.length > 0) {
181
227
  if (updatedIndex < 0 || updatedIndex >= customValues.length) {
182
228
  return;
183
229
  }
230
+
184
231
  number = customValues[updatedIndex];
185
232
  } else {
186
233
  var rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);
187
234
  var updatedValue = (rawNumber * 10000 + step * sign * 10000) / 10000;
188
235
  number = this.clamp(updatedValue);
189
236
  }
237
+
190
238
  this.setState({
191
239
  value: number.toString(),
192
240
  currentIndex: updatedIndex
@@ -200,19 +248,20 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
200
248
  key: "render",
201
249
  value: function render() {
202
250
  var _this2 = this;
251
+
203
252
  var _this$props4 = this.props,
204
- className = _this$props4.className,
205
- classes = _this$props4.classes,
206
- label = _this$props4.label,
207
- disabled = _this$props4.disabled,
208
- error = _this$props4.error,
209
- min = _this$props4.min,
210
- max = _this$props4.max,
211
- inputClassName = _this$props4.inputClassName,
212
- disableUnderline = _this$props4.disableUnderline,
213
- helperText = _this$props4.helperText,
214
- variant = _this$props4.variant,
215
- textAlign = _this$props4.textAlign;
253
+ className = _this$props4.className,
254
+ classes = _this$props4.classes,
255
+ label = _this$props4.label,
256
+ disabled = _this$props4.disabled,
257
+ error = _this$props4.error,
258
+ min = _this$props4.min,
259
+ max = _this$props4.max,
260
+ inputClassName = _this$props4.inputClassName,
261
+ disableUnderline = _this$props4.disableUnderline,
262
+ helperText = _this$props4.helperText,
263
+ variant = _this$props4.variant,
264
+ textAlign = _this$props4.textAlign;
216
265
  var value = this.state.value;
217
266
  var names = (0, _classnames["default"])(className, classes.input);
218
267
  return /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
@@ -237,6 +286,7 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
237
286
  if (e.key === 'ArrowUp') {
238
287
  _this2.changeValue(e);
239
288
  }
289
+
240
290
  if (e.key === 'ArrowDown') {
241
291
  _this2.changeValue(e, -1);
242
292
  }
@@ -281,6 +331,7 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
281
331
  }]);
282
332
  return NumberTextFieldCustom;
283
333
  }(_react["default"].Component);
334
+
284
335
  exports.NumberTextFieldCustom = NumberTextFieldCustom;
285
336
  (0, _defineProperty2["default"])(NumberTextFieldCustom, "propTypes", {
286
337
  classes: _propTypes["default"].object.isRequired,
@@ -306,6 +357,8 @@ exports.NumberTextFieldCustom = NumberTextFieldCustom;
306
357
  variant: 'standard',
307
358
  onlyIntegersAllowed: false
308
359
  });
360
+
309
361
  var _default = (0, _styles.withStyles)(styles)(NumberTextFieldCustom);
362
+
310
363
  exports["default"] = _default;
311
364
  //# sourceMappingURL=number-text-field-custom.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-text-field-custom.js","names":["styles","theme","input","margin","iconButton","padding","fallbackNumber","min","max","isFinite","NumberTextFieldCustom","props","customValues","number","value","clamp","currentIndex","findIndex","val","length","closestValue","getClosestValue","index","reduce","closest","Math","abs","event","onlyIntegersAllowed","target","rawNumber","parseInt","parseFloat","normalizeValueAndIndex","state","setState","toString","onChange","bind","sign","shouldUpdate","preventDefault","step","updatedIndex","updatedValue","className","classes","label","disabled","error","inputClassName","disableUnderline","helperText","variant","textAlign","names","classNames","ref","inputRef","onBlur","e","key","blur","changeValue","startAdornment","endAdornment","style","React","Component","PropTypes","object","isRequired","string","array","bool","func","withStyles"],"sources":["../src/number-text-field-custom.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport TextField from '@material-ui/core/TextField';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport isFinite from 'lodash/isFinite';\nimport IconButton from '@material-ui/core/IconButton';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport Remove from '@material-ui/icons/Remove';\nimport Add from '@material-ui/icons/Add';\n\nconst styles = (theme) => ({\n input: {\n '& input[type=number]': {\n '-moz-appearance': 'textfield',\n },\n '& input[type=number]::-webkit-outer-spin-button': {\n '-webkit-appearance': 'none',\n margin: 0,\n },\n '& input[type=number]::-webkit-inner-spin-button': {\n '-webkit-appearance': 'none',\n margin: 0,\n },\n },\n iconButton: {\n padding: '2px',\n },\n});\n\nconst fallbackNumber = (min, max) => {\n if (!isFinite(min) && !isFinite(max)) {\n return 0;\n }\n\n if (!isFinite(min) && isFinite(max)) {\n return max;\n }\n\n if (isFinite(min)) {\n return min;\n }\n};\n\nexport class NumberTextFieldCustom extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n customValues: PropTypes.array,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n inputClassName: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onlyIntegersAllowed: PropTypes.bool,\n value: PropTypes.number,\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number,\n label: PropTypes.string,\n disableUnderline: PropTypes.bool,\n variant: PropTypes.string,\n };\n\n static defaultProps = {\n step: 1,\n customValues: [],\n textAlign: 'center',\n variant: 'standard',\n onlyIntegersAllowed: false,\n };\n\n constructor(props) {\n super(props);\n\n const { value, currentIndex } = this.normalizeValueAndIndex(props.customValues, props.value);\n\n this.state = {\n value,\n currentIndex,\n };\n\n if (value !== props.value) {\n this.props.onChange({}, value);\n }\n\n this.onChange = this.onChange.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n const { value, currentIndex } = this.normalizeValueAndIndex(props.customValues, props.value);\n\n this.setState({ value, currentIndex });\n }\n\n clamp(value) {\n const { min, max, customValues } = this.props;\n\n if ((customValues || []).length > 0) {\n return value;\n }\n\n if (!isFinite(value)) {\n return fallbackNumber(min, max);\n }\n\n if (isFinite(max)) {\n value = Math.min(value, max);\n }\n\n if (isFinite(min)) {\n value = Math.max(value, min);\n }\n\n return value;\n }\n\n normalizeValueAndIndex = (customValues, number) => {\n const value = this.clamp(number);\n const currentIndex = (customValues || []).findIndex((val) => val === value);\n\n if ((customValues || []).length > 0 && currentIndex === -1) {\n const closestValue = this.getClosestValue(customValues, value);\n\n return { value: closestValue.value, currentIndex: closestValue.index };\n }\n\n return { value, currentIndex };\n };\n\n getClosestValue = (customValues, number) =>\n customValues.reduce(\n (closest, value, index) =>\n Math.abs(value - number) < Math.abs(closest.value - number) ? { value, index } : closest,\n { value: customValues[0], index: 0 },\n );\n\n onBlur = (event) => {\n const { customValues, onlyIntegersAllowed } = this.props;\n const { value } = event.target;\n const rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);\n\n const { value: number, currentIndex } = this.normalizeValueAndIndex(customValues, rawNumber);\n\n if (number !== this.state.value) {\n this.setState(\n {\n value: number.toString(),\n currentIndex,\n },\n () => this.props.onChange(event, number),\n );\n }\n };\n\n onChange(event) {\n const { value } = event.target;\n\n this.setState({ value });\n }\n\n changeValue(event, sign = 1, shouldUpdate = false) {\n event.preventDefault();\n\n const { customValues, step, onlyIntegersAllowed, onChange } = this.props;\n const { currentIndex, value } = this.state;\n const updatedIndex = currentIndex + sign * 1;\n let number;\n\n if (customValues.length > 0) {\n if (updatedIndex < 0 || updatedIndex >= customValues.length) {\n return;\n }\n\n number = customValues[updatedIndex];\n } else {\n const rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);\n const updatedValue = (rawNumber * 10000 + step * sign * 10000) / 10000;\n number = this.clamp(updatedValue);\n }\n\n this.setState(\n {\n value: number.toString(),\n currentIndex: updatedIndex,\n },\n () => {\n if (shouldUpdate) {\n onChange(event, number);\n }\n },\n );\n }\n\n render() {\n const {\n className,\n classes,\n label,\n disabled,\n error,\n min,\n max,\n inputClassName,\n disableUnderline,\n helperText,\n variant,\n textAlign,\n } = this.props;\n const { value } = this.state;\n const names = classNames(className, classes.input);\n\n return (\n <TextField\n variant={variant}\n inputRef={(ref) => (this.inputRef = ref)}\n disabled={disabled}\n label={label}\n value={value}\n error={error}\n helperText={helperText}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onKeyPress={(e) => {\n // once the Enter key is pressed, we force input blur\n if (e.key === 'Enter' && this.inputRef) {\n this.inputRef.blur();\n }\n }}\n onKeyDown={(e) => {\n if (e.key === 'ArrowUp') {\n this.changeValue(e);\n }\n\n if (e.key === 'ArrowDown') {\n this.changeValue(e, -1);\n }\n }}\n type=\"number\"\n className={names}\n InputProps={{\n className: inputClassName,\n disableUnderline: disableUnderline,\n startAdornment: (\n <InputAdornment position=\"start\">\n <IconButton\n className={classes.iconButton}\n disabled={disabled}\n onClick={(e) => this.changeValue(e, -1, true)}\n >\n <Remove fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n className={classes.iconButton}\n disabled={disabled}\n onClick={(e) => this.changeValue(e, 1, true)}\n >\n <Add fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n }}\n inputProps={{\n style: { textAlign },\n min,\n max,\n }}\n />\n );\n }\n}\n\nexport default withStyles(styles)(NumberTextFieldCustom);\n"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/number-text-field-custom.jsx"],"names":["styles","theme","input","margin","iconButton","padding","fallbackNumber","min","max","NumberTextFieldCustom","props","customValues","number","value","clamp","currentIndex","findIndex","val","length","closestValue","getClosestValue","index","reduce","closest","Math","abs","event","onlyIntegersAllowed","target","rawNumber","parseInt","parseFloat","normalizeValueAndIndex","state","setState","toString","onChange","bind","sign","shouldUpdate","preventDefault","step","updatedIndex","updatedValue","className","classes","label","disabled","error","inputClassName","disableUnderline","helperText","variant","textAlign","names","ref","inputRef","onBlur","e","key","blur","changeValue","startAdornment","endAdornment","style","React","Component","PropTypes","object","isRequired","string","array","bool","func"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,KAAK,EAAE;AACL,8BAAwB;AACtB,2BAAmB;AADG,OADnB;AAIL,yDAAmD;AACjD,8BAAsB,MAD2B;AAEjDC,QAAAA,MAAM,EAAE;AAFyC,OAJ9C;AAQL,yDAAmD;AACjD,8BAAsB,MAD2B;AAEjDA,QAAAA,MAAM,EAAE;AAFyC;AAR9C,KADkB;AAczBC,IAAAA,UAAU,EAAE;AACVC,MAAAA,OAAO,EAAE;AADC;AAda,GAAZ;AAAA,CAAf;;AAmBA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,GAAD,EAAMC,GAAN,EAAc;AACnC,MAAI,CAAC,0BAASD,GAAT,CAAD,IAAkB,CAAC,0BAASC,GAAT,CAAvB,EAAsC;AACpC,WAAO,CAAP;AACD;;AAED,MAAI,CAAC,0BAASD,GAAT,CAAD,IAAkB,0BAASC,GAAT,CAAtB,EAAqC;AACnC,WAAOA,GAAP;AACD;;AAED,MAAI,0BAASD,GAAT,CAAJ,EAAmB;AACjB,WAAOA,GAAP;AACD;AACF,CAZD;;IAcaE,qB;;;;;AA2BX,iCAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,+GA6CM,UAACC,YAAD,EAAeC,MAAf,EAA0B;AACjD,UAAMC,KAAK,GAAG,MAAKC,KAAL,CAAWF,MAAX,CAAd;;AACA,UAAMG,YAAY,GAAG,CAACJ,YAAY,IAAI,EAAjB,EAAqBK,SAArB,CAA+B,UAACC,GAAD;AAAA,eAASA,GAAG,KAAKJ,KAAjB;AAAA,OAA/B,CAArB;;AAEA,UAAI,CAACF,YAAY,IAAI,EAAjB,EAAqBO,MAArB,GAA8B,CAA9B,IAAmCH,YAAY,KAAK,CAAC,CAAzD,EAA4D;AAC1D,YAAMI,YAAY,GAAG,MAAKC,eAAL,CAAqBT,YAArB,EAAmCE,KAAnC,CAArB;;AAEA,eAAO;AAAEA,UAAAA,KAAK,EAAEM,YAAY,CAACN,KAAtB;AAA6BE,UAAAA,YAAY,EAAEI,YAAY,CAACE;AAAxD,SAAP;AACD;;AAED,aAAO;AAAER,QAAAA,KAAK,EAALA,KAAF;AAASE,QAAAA,YAAY,EAAZA;AAAT,OAAP;AACD,KAxDkB;AAAA,wGA0DD,UAACJ,YAAD,EAAeC,MAAf;AAAA,aAChBD,YAAY,CAACW,MAAb,CACE,UAACC,OAAD,EAAUV,KAAV,EAAiBQ,KAAjB;AAAA,eACEG,IAAI,CAACC,GAAL,CAASZ,KAAK,GAAGD,MAAjB,IAA2BY,IAAI,CAACC,GAAL,CAASF,OAAO,CAACV,KAAR,GAAgBD,MAAzB,CAA3B,GAA8D;AAAEC,UAAAA,KAAK,EAALA,KAAF;AAASQ,UAAAA,KAAK,EAALA;AAAT,SAA9D,GAAiFE,OADnF;AAAA,OADF,EAGE;AAAEV,QAAAA,KAAK,EAAEF,YAAY,CAAC,CAAD,CAArB;AAA0BU,QAAAA,KAAK,EAAE;AAAjC,OAHF,CADgB;AAAA,KA1DC;AAAA,+FAiEV,UAACK,KAAD,EAAW;AAClB,wBAA8C,MAAKhB,KAAnD;AAAA,UAAQC,YAAR,eAAQA,YAAR;AAAA,UAAsBgB,mBAAtB,eAAsBA,mBAAtB;AACA,UAAQd,KAAR,GAAkBa,KAAK,CAACE,MAAxB,CAAQf,KAAR;AACA,UAAMgB,SAAS,GAAGF,mBAAmB,GAAGG,QAAQ,CAACjB,KAAD,CAAX,GAAqBkB,UAAU,CAAClB,KAAD,CAApE;;AAEA,kCAAwC,MAAKmB,sBAAL,CAA4BrB,YAA5B,EAA0CkB,SAA1C,CAAxC;AAAA,UAAejB,MAAf,yBAAQC,KAAR;AAAA,UAAuBE,YAAvB,yBAAuBA,YAAvB;;AAEA,UAAIH,MAAM,KAAK,MAAKqB,KAAL,CAAWpB,KAA1B,EAAiC;AAC/B,cAAKqB,QAAL,CACE;AACErB,UAAAA,KAAK,EAAED,MAAM,CAACuB,QAAP,EADT;AAEEpB,UAAAA,YAAY,EAAZA;AAFF,SADF,EAKE;AAAA,iBAAM,MAAKL,KAAL,CAAW0B,QAAX,CAAoBV,KAApB,EAA2Bd,MAA3B,CAAN;AAAA,SALF;AAOD;AACF,KAjFkB;;AAGjB,iCAAgC,MAAKoB,sBAAL,CAA4BtB,KAAK,CAACC,YAAlC,EAAgDD,KAAK,CAACG,KAAtD,CAAhC;AAAA,QAAQA,MAAR,0BAAQA,KAAR;AAAA,QAAeE,aAAf,0BAAeA,YAAf;;AAEA,UAAKkB,KAAL,GAAa;AACXpB,MAAAA,KAAK,EAALA,MADW;AAEXE,MAAAA,YAAY,EAAZA;AAFW,KAAb;;AAKA,QAAIF,MAAK,KAAKH,KAAK,CAACG,KAApB,EAA2B;AACzB,YAAKH,KAAL,CAAW0B,QAAX,CAAoB,EAApB,EAAwBvB,MAAxB;AACD;;AAED,UAAKuB,QAAL,GAAgB,MAAKA,QAAL,CAAcC,IAAd,gDAAhB;AAdiB;AAelB;;;;WAED,0CAAiC3B,KAAjC,EAAwC;AACtC,mCAAgC,KAAKsB,sBAAL,CAA4BtB,KAAK,CAACC,YAAlC,EAAgDD,KAAK,CAACG,KAAtD,CAAhC;AAAA,UAAQA,KAAR,0BAAQA,KAAR;AAAA,UAAeE,YAAf,0BAAeA,YAAf;;AAEA,WAAKmB,QAAL,CAAc;AAAErB,QAAAA,KAAK,EAALA,KAAF;AAASE,QAAAA,YAAY,EAAZA;AAAT,OAAd;AACD;;;WAED,eAAMF,KAAN,EAAa;AACX,yBAAmC,KAAKH,KAAxC;AAAA,UAAQH,GAAR,gBAAQA,GAAR;AAAA,UAAaC,GAAb,gBAAaA,GAAb;AAAA,UAAkBG,YAAlB,gBAAkBA,YAAlB;;AAEA,UAAI,CAACA,YAAY,IAAI,EAAjB,EAAqBO,MAArB,GAA8B,CAAlC,EAAqC;AACnC,eAAOL,KAAP;AACD;;AAED,UAAI,CAAC,0BAASA,KAAT,CAAL,EAAsB;AACpB,eAAOP,cAAc,CAACC,GAAD,EAAMC,GAAN,CAArB;AACD;;AAED,UAAI,0BAASA,GAAT,CAAJ,EAAmB;AACjBK,QAAAA,KAAK,GAAGW,IAAI,CAACjB,GAAL,CAASM,KAAT,EAAgBL,GAAhB,CAAR;AACD;;AAED,UAAI,0BAASD,GAAT,CAAJ,EAAmB;AACjBM,QAAAA,KAAK,GAAGW,IAAI,CAAChB,GAAL,CAASK,KAAT,EAAgBN,GAAhB,CAAR;AACD;;AAED,aAAOM,KAAP;AACD;;;WAwCD,kBAASa,KAAT,EAAgB;AACd,UAAQb,KAAR,GAAkBa,KAAK,CAACE,MAAxB,CAAQf,KAAR;AAEA,WAAKqB,QAAL,CAAc;AAAErB,QAAAA,KAAK,EAALA;AAAF,OAAd;AACD;;;WAED,qBAAYa,KAAZ,EAAmD;AAAA,UAAhCY,IAAgC,uEAAzB,CAAyB;AAAA,UAAtBC,YAAsB,uEAAP,KAAO;AACjDb,MAAAA,KAAK,CAACc,cAAN;AAEA,yBAA8D,KAAK9B,KAAnE;AAAA,UAAQC,YAAR,gBAAQA,YAAR;AAAA,UAAsB8B,IAAtB,gBAAsBA,IAAtB;AAAA,UAA4Bd,mBAA5B,gBAA4BA,mBAA5B;AAAA,UAAiDS,QAAjD,gBAAiDA,QAAjD;AACA,wBAAgC,KAAKH,KAArC;AAAA,UAAQlB,YAAR,eAAQA,YAAR;AAAA,UAAsBF,KAAtB,eAAsBA,KAAtB;AACA,UAAM6B,YAAY,GAAG3B,YAAY,GAAGuB,IAAI,GAAG,CAA3C;AACA,UAAI1B,MAAJ;;AAEA,UAAID,YAAY,CAACO,MAAb,GAAsB,CAA1B,EAA6B;AAC3B,YAAIwB,YAAY,GAAG,CAAf,IAAoBA,YAAY,IAAI/B,YAAY,CAACO,MAArD,EAA6D;AAC3D;AACD;;AAEDN,QAAAA,MAAM,GAAGD,YAAY,CAAC+B,YAAD,CAArB;AACD,OAND,MAMO;AACL,YAAMb,SAAS,GAAGF,mBAAmB,GAAGG,QAAQ,CAACjB,KAAD,CAAX,GAAqBkB,UAAU,CAAClB,KAAD,CAApE;AACA,YAAM8B,YAAY,GAAG,CAACd,SAAS,GAAG,KAAZ,GAAoBY,IAAI,GAAGH,IAAP,GAAc,KAAnC,IAA4C,KAAjE;AACA1B,QAAAA,MAAM,GAAG,KAAKE,KAAL,CAAW6B,YAAX,CAAT;AACD;;AAED,WAAKT,QAAL,CACE;AACErB,QAAAA,KAAK,EAAED,MAAM,CAACuB,QAAP,EADT;AAEEpB,QAAAA,YAAY,EAAE2B;AAFhB,OADF,EAKE,YAAM;AACJ,YAAIH,YAAJ,EAAkB;AAChBH,UAAAA,QAAQ,CAACV,KAAD,EAAQd,MAAR,CAAR;AACD;AACF,OATH;AAWD;;;WAED,kBAAS;AAAA;;AACP,yBAaI,KAAKF,KAbT;AAAA,UACEkC,SADF,gBACEA,SADF;AAAA,UAEEC,OAFF,gBAEEA,OAFF;AAAA,UAGEC,KAHF,gBAGEA,KAHF;AAAA,UAIEC,QAJF,gBAIEA,QAJF;AAAA,UAKEC,KALF,gBAKEA,KALF;AAAA,UAMEzC,GANF,gBAMEA,GANF;AAAA,UAOEC,GAPF,gBAOEA,GAPF;AAAA,UAQEyC,cARF,gBAQEA,cARF;AAAA,UASEC,gBATF,gBASEA,gBATF;AAAA,UAUEC,UAVF,gBAUEA,UAVF;AAAA,UAWEC,OAXF,gBAWEA,OAXF;AAAA,UAYEC,SAZF,gBAYEA,SAZF;AAcA,UAAQxC,KAAR,GAAkB,KAAKoB,KAAvB,CAAQpB,KAAR;AACA,UAAMyC,KAAK,GAAG,4BAAWV,SAAX,EAAsBC,OAAO,CAAC3C,KAA9B,CAAd;AAEA,0BACE,gCAAC,qBAAD;AACE,QAAA,OAAO,EAAEkD,OADX;AAEE,QAAA,QAAQ,EAAE,kBAACG,GAAD;AAAA,iBAAU,MAAI,CAACC,QAAL,GAAgBD,GAA1B;AAAA,SAFZ;AAGE,QAAA,QAAQ,EAAER,QAHZ;AAIE,QAAA,KAAK,EAAED,KAJT;AAKE,QAAA,KAAK,EAAEjC,KALT;AAME,QAAA,KAAK,EAAEmC,KANT;AAOE,QAAA,UAAU,EAAEG,UAPd;AAQE,QAAA,QAAQ,EAAE,KAAKf,QARjB;AASE,QAAA,MAAM,EAAE,KAAKqB,MATf;AAUE,QAAA,UAAU,EAAE,oBAACC,CAAD,EAAO;AACjB;AACA,cAAIA,CAAC,CAACC,GAAF,KAAU,OAAV,IAAqB,MAAI,CAACH,QAA9B,EAAwC;AACtC,YAAA,MAAI,CAACA,QAAL,CAAcI,IAAd;AACD;AACF,SAfH;AAgBE,QAAA,SAAS,EAAE,mBAACF,CAAD,EAAO;AAChB,cAAIA,CAAC,CAACC,GAAF,KAAU,SAAd,EAAyB;AACvB,YAAA,MAAI,CAACE,WAAL,CAAiBH,CAAjB;AACD;;AAED,cAAIA,CAAC,CAACC,GAAF,KAAU,WAAd,EAA2B;AACzB,YAAA,MAAI,CAACE,WAAL,CAAiBH,CAAjB,EAAoB,CAAC,CAArB;AACD;AACF,SAxBH;AAyBE,QAAA,IAAI,EAAC,QAzBP;AA0BE,QAAA,SAAS,EAAEJ,KA1Bb;AA2BE,QAAA,UAAU,EAAE;AACVV,UAAAA,SAAS,EAAEK,cADD;AAEVC,UAAAA,gBAAgB,EAAEA,gBAFR;AAGVY,UAAAA,cAAc,eACZ,gCAAC,0BAAD;AAAgB,YAAA,QAAQ,EAAC;AAAzB,0BACE,gCAAC,sBAAD;AACE,YAAA,SAAS,EAAEjB,OAAO,CAACzC,UADrB;AAEE,YAAA,QAAQ,EAAE2C,QAFZ;AAGE,YAAA,OAAO,EAAE,iBAACW,CAAD;AAAA,qBAAO,MAAI,CAACG,WAAL,CAAiBH,CAAjB,EAAoB,CAAC,CAArB,EAAwB,IAAxB,CAAP;AAAA;AAHX,0BAKE,gCAAC,kBAAD;AAAQ,YAAA,QAAQ,EAAC;AAAjB,YALF,CADF,CAJQ;AAcVK,UAAAA,YAAY,eACV,gCAAC,0BAAD;AAAgB,YAAA,QAAQ,EAAC;AAAzB,0BACE,gCAAC,sBAAD;AACE,YAAA,SAAS,EAAElB,OAAO,CAACzC,UADrB;AAEE,YAAA,QAAQ,EAAE2C,QAFZ;AAGE,YAAA,OAAO,EAAE,iBAACW,CAAD;AAAA,qBAAO,MAAI,CAACG,WAAL,CAAiBH,CAAjB,EAAoB,CAApB,EAAuB,IAAvB,CAAP;AAAA;AAHX,0BAKE,gCAAC,eAAD;AAAK,YAAA,QAAQ,EAAC;AAAd,YALF,CADF;AAfQ,SA3Bd;AAqDE,QAAA,UAAU,EAAE;AACVM,UAAAA,KAAK,EAAE;AAAEX,YAAAA,SAAS,EAATA;AAAF,WADG;AAEV9C,UAAAA,GAAG,EAAHA,GAFU;AAGVC,UAAAA,GAAG,EAAHA;AAHU;AArDd,QADF;AA6DD;;;EApOwCyD,kBAAMC,S;;;iCAApCzD,qB,eACQ;AACjBoC,EAAAA,OAAO,EAAEsB,sBAAUC,MAAV,CAAiBC,UADT;AAEjBzB,EAAAA,SAAS,EAAEuB,sBAAUG,MAFJ;AAGjB3D,EAAAA,YAAY,EAAEwD,sBAAUI,KAHP;AAIjBxB,EAAAA,QAAQ,EAAEoB,sBAAUK,IAJH;AAKjBxB,EAAAA,KAAK,EAAEmB,sBAAUK,IALA;AAMjBvB,EAAAA,cAAc,EAAEkB,sBAAUG,MANT;AAOjBlC,EAAAA,QAAQ,EAAE+B,sBAAUM,IAAV,CAAeJ,UAPR;AAQjB1C,EAAAA,mBAAmB,EAAEwC,sBAAUK,IARd;AASjB3D,EAAAA,KAAK,EAAEsD,sBAAUvD,MATA;AAUjBL,EAAAA,GAAG,EAAE4D,sBAAUvD,MAVE;AAWjBJ,EAAAA,GAAG,EAAE2D,sBAAUvD,MAXE;AAYjB6B,EAAAA,IAAI,EAAE0B,sBAAUvD,MAZC;AAajBkC,EAAAA,KAAK,EAAEqB,sBAAUG,MAbA;AAcjBpB,EAAAA,gBAAgB,EAAEiB,sBAAUK,IAdX;AAejBpB,EAAAA,OAAO,EAAEe,sBAAUG;AAfF,C;iCADR7D,qB,kBAmBW;AACpBgC,EAAAA,IAAI,EAAE,CADc;AAEpB9B,EAAAA,YAAY,EAAE,EAFM;AAGpB0C,EAAAA,SAAS,EAAE,QAHS;AAIpBD,EAAAA,OAAO,EAAE,UAJW;AAKpBzB,EAAAA,mBAAmB,EAAE;AALD,C;;eAoNT,wBAAW3B,MAAX,EAAmBS,qBAAnB,C","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport TextField from '@material-ui/core/TextField';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport isFinite from 'lodash/isFinite';\nimport IconButton from '@material-ui/core/IconButton';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport Remove from '@material-ui/icons/Remove';\nimport Add from '@material-ui/icons/Add';\n\nconst styles = (theme) => ({\n input: {\n '& input[type=number]': {\n '-moz-appearance': 'textfield',\n },\n '& input[type=number]::-webkit-outer-spin-button': {\n '-webkit-appearance': 'none',\n margin: 0,\n },\n '& input[type=number]::-webkit-inner-spin-button': {\n '-webkit-appearance': 'none',\n margin: 0,\n },\n },\n iconButton: {\n padding: '2px',\n },\n});\n\nconst fallbackNumber = (min, max) => {\n if (!isFinite(min) && !isFinite(max)) {\n return 0;\n }\n\n if (!isFinite(min) && isFinite(max)) {\n return max;\n }\n\n if (isFinite(min)) {\n return min;\n }\n};\n\nexport class NumberTextFieldCustom extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n customValues: PropTypes.array,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n inputClassName: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onlyIntegersAllowed: PropTypes.bool,\n value: PropTypes.number,\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number,\n label: PropTypes.string,\n disableUnderline: PropTypes.bool,\n variant: PropTypes.string,\n };\n\n static defaultProps = {\n step: 1,\n customValues: [],\n textAlign: 'center',\n variant: 'standard',\n onlyIntegersAllowed: false,\n };\n\n constructor(props) {\n super(props);\n\n const { value, currentIndex } = this.normalizeValueAndIndex(props.customValues, props.value);\n\n this.state = {\n value,\n currentIndex,\n };\n\n if (value !== props.value) {\n this.props.onChange({}, value);\n }\n\n this.onChange = this.onChange.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n const { value, currentIndex } = this.normalizeValueAndIndex(props.customValues, props.value);\n\n this.setState({ value, currentIndex });\n }\n\n clamp(value) {\n const { min, max, customValues } = this.props;\n\n if ((customValues || []).length > 0) {\n return value;\n }\n\n if (!isFinite(value)) {\n return fallbackNumber(min, max);\n }\n\n if (isFinite(max)) {\n value = Math.min(value, max);\n }\n\n if (isFinite(min)) {\n value = Math.max(value, min);\n }\n\n return value;\n }\n\n normalizeValueAndIndex = (customValues, number) => {\n const value = this.clamp(number);\n const currentIndex = (customValues || []).findIndex((val) => val === value);\n\n if ((customValues || []).length > 0 && currentIndex === -1) {\n const closestValue = this.getClosestValue(customValues, value);\n\n return { value: closestValue.value, currentIndex: closestValue.index };\n }\n\n return { value, currentIndex };\n };\n\n getClosestValue = (customValues, number) =>\n customValues.reduce(\n (closest, value, index) =>\n Math.abs(value - number) < Math.abs(closest.value - number) ? { value, index } : closest,\n { value: customValues[0], index: 0 },\n );\n\n onBlur = (event) => {\n const { customValues, onlyIntegersAllowed } = this.props;\n const { value } = event.target;\n const rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);\n\n const { value: number, currentIndex } = this.normalizeValueAndIndex(customValues, rawNumber);\n\n if (number !== this.state.value) {\n this.setState(\n {\n value: number.toString(),\n currentIndex,\n },\n () => this.props.onChange(event, number),\n );\n }\n };\n\n onChange(event) {\n const { value } = event.target;\n\n this.setState({ value });\n }\n\n changeValue(event, sign = 1, shouldUpdate = false) {\n event.preventDefault();\n\n const { customValues, step, onlyIntegersAllowed, onChange } = this.props;\n const { currentIndex, value } = this.state;\n const updatedIndex = currentIndex + sign * 1;\n let number;\n\n if (customValues.length > 0) {\n if (updatedIndex < 0 || updatedIndex >= customValues.length) {\n return;\n }\n\n number = customValues[updatedIndex];\n } else {\n const rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);\n const updatedValue = (rawNumber * 10000 + step * sign * 10000) / 10000;\n number = this.clamp(updatedValue);\n }\n\n this.setState(\n {\n value: number.toString(),\n currentIndex: updatedIndex,\n },\n () => {\n if (shouldUpdate) {\n onChange(event, number);\n }\n },\n );\n }\n\n render() {\n const {\n className,\n classes,\n label,\n disabled,\n error,\n min,\n max,\n inputClassName,\n disableUnderline,\n helperText,\n variant,\n textAlign,\n } = this.props;\n const { value } = this.state;\n const names = classNames(className, classes.input);\n\n return (\n <TextField\n variant={variant}\n inputRef={(ref) => (this.inputRef = ref)}\n disabled={disabled}\n label={label}\n value={value}\n error={error}\n helperText={helperText}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onKeyPress={(e) => {\n // once the Enter key is pressed, we force input blur\n if (e.key === 'Enter' && this.inputRef) {\n this.inputRef.blur();\n }\n }}\n onKeyDown={(e) => {\n if (e.key === 'ArrowUp') {\n this.changeValue(e);\n }\n\n if (e.key === 'ArrowDown') {\n this.changeValue(e, -1);\n }\n }}\n type=\"number\"\n className={names}\n InputProps={{\n className: inputClassName,\n disableUnderline: disableUnderline,\n startAdornment: (\n <InputAdornment position=\"start\">\n <IconButton\n className={classes.iconButton}\n disabled={disabled}\n onClick={(e) => this.changeValue(e, -1, true)}\n >\n <Remove fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n className={classes.iconButton}\n disabled={disabled}\n onClick={(e) => this.changeValue(e, 1, true)}\n >\n <Add fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n }}\n inputProps={{\n style: { textAlign },\n min,\n max,\n }}\n />\n );\n }\n}\n\nexport default withStyles(styles)(NumberTextFieldCustom);\n"],"file":"number-text-field-custom.js"}
@@ -1,28 +1,48 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = exports.NumberTextField = void 0;
9
+
8
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
9
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
10
14
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
11
16
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
12
18
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
13
20
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
14
22
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
15
24
  var _propTypes = _interopRequireDefault(require("prop-types"));
25
+
16
26
  var _react = _interopRequireDefault(require("react"));
27
+
17
28
  var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
29
+
18
30
  var _classnames = _interopRequireDefault(require("classnames"));
31
+
19
32
  var _styles = require("@material-ui/core/styles");
33
+
20
34
  var _debug = _interopRequireDefault(require("debug"));
35
+
21
36
  var _isFinite = _interopRequireDefault(require("lodash/isFinite"));
37
+
22
38
  var _InputAdornment = _interopRequireDefault(require("@material-ui/core/InputAdornment"));
39
+
23
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
41
+
24
42
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
43
+
25
44
  var log = (0, _debug["default"])('@pie-lib:config-ui:number-text-field');
45
+
26
46
  var styles = function styles(theme) {
27
47
  return {
28
48
  root: {
@@ -30,32 +50,43 @@ var styles = function styles(theme) {
30
50
  }
31
51
  };
32
52
  };
53
+
33
54
  var fallbackNumber = function fallbackNumber(min, max) {
34
55
  if (!(0, _isFinite["default"])(min) && !(0, _isFinite["default"])(max)) {
35
56
  return 0;
36
57
  }
58
+
37
59
  if (!(0, _isFinite["default"])(min) && (0, _isFinite["default"])(max)) {
38
60
  return max;
39
61
  }
62
+
40
63
  if ((0, _isFinite["default"])(min)) {
41
64
  return min;
42
65
  }
43
66
  };
67
+
44
68
  var NumberTextField = /*#__PURE__*/function (_React$Component) {
45
69
  (0, _inherits2["default"])(NumberTextField, _React$Component);
70
+
46
71
  var _super = _createSuper(NumberTextField);
72
+
47
73
  function NumberTextField(props) {
48
74
  var _this;
75
+
49
76
  (0, _classCallCheck2["default"])(this, NumberTextField);
50
77
  _this = _super.call(this, props);
51
78
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onBlur", function (event) {
52
79
  var value = event.target.value;
53
80
  var rawNumber = parseFloat(value);
54
81
  log('rawNumber: ', rawNumber);
82
+
55
83
  var number = _this.clamp(rawNumber);
84
+
56
85
  log('number: ', number);
86
+
57
87
  if (number !== _this.state.value) {
58
88
  log('trigger update...');
89
+
59
90
  _this.setState({
60
91
  value: number.toString()
61
92
  }, function () {
@@ -65,36 +96,47 @@ var NumberTextField = /*#__PURE__*/function (_React$Component) {
65
96
  });
66
97
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "errorMessage", function () {
67
98
  var _this$props = _this.props,
68
- min = _this$props.min,
69
- max = _this$props.max;
99
+ min = _this$props.min,
100
+ max = _this$props.max;
101
+
70
102
  if (min && max) {
71
103
  return "The value must be between ".concat(min, " and ").concat(max);
72
104
  }
105
+
73
106
  if (min) {
74
107
  return "The value must be greater than ".concat(min);
75
108
  }
109
+
76
110
  if (max) {
77
111
  return "The value must be less than ".concat(max);
78
112
  }
79
113
  });
80
114
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getError", function () {
81
115
  var value = _this.state.value;
116
+
82
117
  var _float = parseFloat(value);
118
+
83
119
  var clamped = _this.clamp(_float);
120
+
84
121
  if (clamped !== _float) {
85
122
  return _this.errorMessage();
86
123
  }
87
124
  });
125
+
88
126
  var _value = _this.clamp(props.value);
127
+
89
128
  _this.state = {
90
129
  value: _value
91
130
  };
131
+
92
132
  if (_value !== props.value) {
93
133
  _this.props.onChange({}, _value);
94
134
  }
135
+
95
136
  _this.onChange = _this.onChange.bind((0, _assertThisInitialized2["default"])(_this));
96
137
  return _this;
97
138
  }
139
+
98
140
  (0, _createClass2["default"])(NumberTextField, [{
99
141
  key: "UNSAFE_componentWillReceiveProps",
100
142
  value: function UNSAFE_componentWillReceiveProps(props) {
@@ -109,22 +151,26 @@ var NumberTextField = /*#__PURE__*/function (_React$Component) {
109
151
  if (!(0, _isFinite["default"])(value)) {
110
152
  return fallbackNumber(this.props.min, this.props.max);
111
153
  }
154
+
112
155
  var _this$props2 = this.props,
113
- min = _this$props2.min,
114
- max = _this$props2.max;
156
+ min = _this$props2.min,
157
+ max = _this$props2.max;
158
+
115
159
  if ((0, _isFinite["default"])(max)) {
116
160
  value = Math.min(value, max);
117
161
  }
162
+
118
163
  if ((0, _isFinite["default"])(min)) {
119
164
  value = Math.max(value, min);
120
165
  }
166
+
121
167
  return value;
122
168
  }
123
-
124
169
  /**
125
170
  * on Blur (this can be triggered by pressing Enter, see below)
126
171
  * we check the entered value and reset it if needed
127
172
  */
173
+
128
174
  }, {
129
175
  key: "onChange",
130
176
  value: function onChange(event) {
@@ -137,18 +183,19 @@ var NumberTextField = /*#__PURE__*/function (_React$Component) {
137
183
  key: "render",
138
184
  value: function render() {
139
185
  var _this2 = this;
186
+
140
187
  var _this$props3 = this.props,
141
- className = _this$props3.className,
142
- classes = _this$props3.classes,
143
- label = _this$props3.label,
144
- disabled = _this$props3.disabled,
145
- suffix = _this$props3.suffix,
146
- min = _this$props3.min,
147
- max = _this$props3.max,
148
- inputClassName = _this$props3.inputClassName,
149
- disableUnderline = _this$props3.disableUnderline,
150
- showErrorWhenOutsideRange = _this$props3.showErrorWhenOutsideRange,
151
- variant = _this$props3.variant;
188
+ className = _this$props3.className,
189
+ classes = _this$props3.classes,
190
+ label = _this$props3.label,
191
+ disabled = _this$props3.disabled,
192
+ suffix = _this$props3.suffix,
193
+ min = _this$props3.min,
194
+ max = _this$props3.max,
195
+ inputClassName = _this$props3.inputClassName,
196
+ disableUnderline = _this$props3.disableUnderline,
197
+ showErrorWhenOutsideRange = _this$props3.showErrorWhenOutsideRange,
198
+ variant = _this$props3.variant;
152
199
  var names = (0, _classnames["default"])(classes.root, className);
153
200
  var error = showErrorWhenOutsideRange && this.getError();
154
201
  return /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
@@ -191,6 +238,7 @@ var NumberTextField = /*#__PURE__*/function (_React$Component) {
191
238
  }]);
192
239
  return NumberTextField;
193
240
  }(_react["default"].Component);
241
+
194
242
  exports.NumberTextField = NumberTextField;
195
243
  (0, _defineProperty2["default"])(NumberTextField, "propTypes", {
196
244
  disabled: _propTypes["default"].bool,
@@ -210,6 +258,8 @@ exports.NumberTextField = NumberTextField;
210
258
  (0, _defineProperty2["default"])(NumberTextField, "defaultProps", {
211
259
  showErrorWhenOutsideRange: false
212
260
  });
261
+
213
262
  var _default = (0, _styles.withStyles)(styles)(NumberTextField);
263
+
214
264
  exports["default"] = _default;
215
265
  //# sourceMappingURL=number-text-field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-text-field.js","names":["log","debug","styles","theme","root","marginRight","spacing","unit","fallbackNumber","min","max","isFinite","NumberTextField","props","event","value","target","rawNumber","parseFloat","number","clamp","state","setState","toString","onChange","float","clamped","errorMessage","bind","Math","className","classes","label","disabled","suffix","inputClassName","disableUnderline","showErrorWhenOutsideRange","variant","names","classNames","error","getError","ref","inputRef","onBlur","e","key","blur","shrink","endAdornment","React","Component","PropTypes","bool","object","isRequired","string","func","withStyles"],"sources":["../src/number-text-field.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport TextField from '@material-ui/core/TextField';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport debug from 'debug';\nimport isFinite from 'lodash/isFinite';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nconst log = debug('@pie-lib:config-ui:number-text-field');\n\nconst styles = (theme) => ({\n root: { marginRight: theme.spacing.unit },\n});\n\nconst fallbackNumber = (min, max) => {\n if (!isFinite(min) && !isFinite(max)) {\n return 0;\n }\n if (!isFinite(min) && isFinite(max)) {\n return max;\n }\n\n if (isFinite(min)) {\n return min;\n }\n};\n\nexport class NumberTextField extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n inputClassName: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.number,\n min: PropTypes.number,\n max: PropTypes.number,\n label: PropTypes.string,\n suffix: PropTypes.string,\n showErrorWhenOutsideRange: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n variant: PropTypes.string,\n };\n\n static defaultProps = {\n showErrorWhenOutsideRange: false,\n };\n\n constructor(props) {\n super(props);\n\n const value = this.clamp(props.value);\n\n this.state = {\n value,\n };\n\n if (value !== props.value) {\n this.props.onChange({}, value);\n }\n\n this.onChange = this.onChange.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n const value = this.clamp(props.value);\n this.setState({ value });\n }\n\n clamp(value) {\n if (!isFinite(value)) {\n return fallbackNumber(this.props.min, this.props.max);\n }\n\n const { min, max } = this.props;\n\n if (isFinite(max)) {\n value = Math.min(value, max);\n }\n if (isFinite(min)) {\n value = Math.max(value, min);\n }\n return value;\n }\n\n /**\n * on Blur (this can be triggered by pressing Enter, see below)\n * we check the entered value and reset it if needed\n */\n onBlur = (event) => {\n const value = event.target.value;\n\n const rawNumber = parseFloat(value);\n log('rawNumber: ', rawNumber);\n\n const number = this.clamp(rawNumber);\n log('number: ', number);\n\n if (number !== this.state.value) {\n log('trigger update...');\n this.setState({ value: number.toString() }, () => {\n this.props.onChange(event, number);\n });\n }\n };\n\n onChange(event) {\n const value = event.target.value;\n this.setState({ value });\n }\n\n errorMessage = () => {\n const { min, max } = this.props;\n if (min && max) {\n return `The value must be between ${min} and ${max}`;\n }\n if (min) {\n return `The value must be greater than ${min}`;\n }\n if (max) {\n return `The value must be less than ${max}`;\n }\n };\n\n /**\n * if the input has to show error when outside range,\n * and the entered value is not matching the requirements\n * we display error message\n */\n\n getError = () => {\n const { value } = this.state;\n const float = parseFloat(value);\n const clamped = this.clamp(float);\n if (clamped !== float) {\n return this.errorMessage();\n }\n };\n\n render() {\n const {\n className,\n classes,\n label,\n disabled,\n suffix,\n min,\n max,\n inputClassName,\n disableUnderline,\n showErrorWhenOutsideRange,\n variant,\n } = this.props;\n const names = classNames(classes.root, className);\n\n const error = showErrorWhenOutsideRange && this.getError();\n return (\n <TextField\n variant={variant || 'standard'}\n inputRef={(ref) => {\n this.inputRef = ref;\n }}\n disabled={disabled}\n label={label}\n value={this.state.value}\n error={!!error}\n helperText={error}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onKeyPress={(e) => {\n // once the Enter key is pressed, we force input blur\n if (e.key === 'Enter' && this.inputRef) {\n this.inputRef.blur();\n }\n }}\n type=\"number\"\n className={names}\n InputLabelProps={{\n shrink: true,\n }}\n InputProps={{\n endAdornment: suffix && <InputAdornment position=\"end\">{suffix}</InputAdornment>,\n className: inputClassName,\n disableUnderline: disableUnderline,\n }}\n inputProps={{\n min,\n max,\n }}\n margin=\"normal\"\n />\n );\n }\n}\n\nexport default withStyles(styles)(NumberTextField);\n"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/number-text-field.jsx"],"names":["log","styles","theme","root","marginRight","spacing","unit","fallbackNumber","min","max","NumberTextField","props","event","value","target","rawNumber","parseFloat","number","clamp","state","setState","toString","onChange","float","clamped","errorMessage","bind","Math","className","classes","label","disabled","suffix","inputClassName","disableUnderline","showErrorWhenOutsideRange","variant","names","error","getError","ref","inputRef","onBlur","e","key","blur","shrink","endAdornment","React","Component","PropTypes","bool","object","isRequired","string","func"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport TextField from '@material-ui/core/TextField';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport debug from 'debug';\nimport isFinite from 'lodash/isFinite';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nconst log = debug('@pie-lib:config-ui:number-text-field');\n\nconst styles = (theme) => ({\n root: { marginRight: theme.spacing.unit },\n});\n\nconst fallbackNumber = (min, max) => {\n if (!isFinite(min) && !isFinite(max)) {\n return 0;\n }\n if (!isFinite(min) && isFinite(max)) {\n return max;\n }\n\n if (isFinite(min)) {\n return min;\n }\n};\n\nexport class NumberTextField extends React.Component {\n static propTypes = {\n disabled: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n inputClassName: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.number,\n min: PropTypes.number,\n max: PropTypes.number,\n label: PropTypes.string,\n suffix: PropTypes.string,\n showErrorWhenOutsideRange: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n variant: PropTypes.string,\n };\n\n static defaultProps = {\n showErrorWhenOutsideRange: false,\n };\n\n constructor(props) {\n super(props);\n\n const value = this.clamp(props.value);\n\n this.state = {\n value,\n };\n\n if (value !== props.value) {\n this.props.onChange({}, value);\n }\n\n this.onChange = this.onChange.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n const value = this.clamp(props.value);\n this.setState({ value });\n }\n\n clamp(value) {\n if (!isFinite(value)) {\n return fallbackNumber(this.props.min, this.props.max);\n }\n\n const { min, max } = this.props;\n\n if (isFinite(max)) {\n value = Math.min(value, max);\n }\n if (isFinite(min)) {\n value = Math.max(value, min);\n }\n return value;\n }\n\n /**\n * on Blur (this can be triggered by pressing Enter, see below)\n * we check the entered value and reset it if needed\n */\n onBlur = (event) => {\n const value = event.target.value;\n\n const rawNumber = parseFloat(value);\n log('rawNumber: ', rawNumber);\n\n const number = this.clamp(rawNumber);\n log('number: ', number);\n\n if (number !== this.state.value) {\n log('trigger update...');\n this.setState({ value: number.toString() }, () => {\n this.props.onChange(event, number);\n });\n }\n };\n\n onChange(event) {\n const value = event.target.value;\n this.setState({ value });\n }\n\n errorMessage = () => {\n const { min, max } = this.props;\n if (min && max) {\n return `The value must be between ${min} and ${max}`;\n }\n if (min) {\n return `The value must be greater than ${min}`;\n }\n if (max) {\n return `The value must be less than ${max}`;\n }\n };\n\n /**\n * if the input has to show error when outside range,\n * and the entered value is not matching the requirements\n * we display error message\n */\n\n getError = () => {\n const { value } = this.state;\n const float = parseFloat(value);\n const clamped = this.clamp(float);\n if (clamped !== float) {\n return this.errorMessage();\n }\n };\n\n render() {\n const {\n className,\n classes,\n label,\n disabled,\n suffix,\n min,\n max,\n inputClassName,\n disableUnderline,\n showErrorWhenOutsideRange,\n variant,\n } = this.props;\n const names = classNames(classes.root, className);\n\n const error = showErrorWhenOutsideRange && this.getError();\n return (\n <TextField\n variant={variant || 'standard'}\n inputRef={(ref) => {\n this.inputRef = ref;\n }}\n disabled={disabled}\n label={label}\n value={this.state.value}\n error={!!error}\n helperText={error}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onKeyPress={(e) => {\n // once the Enter key is pressed, we force input blur\n if (e.key === 'Enter' && this.inputRef) {\n this.inputRef.blur();\n }\n }}\n type=\"number\"\n className={names}\n InputLabelProps={{\n shrink: true,\n }}\n InputProps={{\n endAdornment: suffix && <InputAdornment position=\"end\">{suffix}</InputAdornment>,\n className: inputClassName,\n disableUnderline: disableUnderline,\n }}\n inputProps={{\n min,\n max,\n }}\n margin=\"normal\"\n />\n );\n }\n}\n\nexport default withStyles(styles)(NumberTextField);\n"],"file":"number-text-field.js"}