@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.
- package/lib/alert-dialog.js +10 -4
- package/lib/alert-dialog.js.map +1 -1
- package/lib/checkbox.js +17 -5
- package/lib/checkbox.js.map +1 -1
- package/lib/choice-configuration/feedback-menu.js +38 -5
- package/lib/choice-configuration/feedback-menu.js.map +1 -1
- package/lib/choice-configuration/index.js +94 -48
- package/lib/choice-configuration/index.js.map +1 -1
- package/lib/choice-utils.js +11 -1
- package/lib/choice-utils.js.map +1 -1
- package/lib/feedback-config/feedback-selector.js +41 -9
- package/lib/feedback-config/feedback-selector.js.map +1 -1
- package/lib/feedback-config/group.js +16 -5
- package/lib/feedback-config/group.js.map +1 -1
- package/lib/feedback-config/index.js +46 -6
- package/lib/feedback-config/index.js.map +1 -1
- package/lib/form-section.js +12 -4
- package/lib/form-section.js.map +1 -1
- package/lib/help.js +37 -6
- package/lib/help.js.map +1 -1
- package/lib/index.js +29 -0
- package/lib/index.js.map +1 -1
- package/lib/input.js +37 -9
- package/lib/input.js.map +1 -1
- package/lib/inputs.js +35 -16
- package/lib/inputs.js.map +1 -1
- package/lib/langs.js +39 -10
- package/lib/langs.js.map +1 -1
- package/lib/layout/config-layout.js +26 -3
- package/lib/layout/config-layout.js.map +1 -1
- package/lib/layout/index.js +3 -0
- package/lib/layout/index.js.map +1 -1
- package/lib/layout/layout-contents.js +39 -13
- package/lib/layout/layout-contents.js.map +1 -1
- package/lib/layout/settings-box.js +24 -3
- package/lib/layout/settings-box.js.map +1 -1
- package/lib/mui-box/index.js +10 -3
- package/lib/mui-box/index.js.map +1 -1
- package/lib/number-text-field-custom.js +82 -29
- package/lib/number-text-field-custom.js.map +1 -1
- package/lib/number-text-field.js +66 -16
- package/lib/number-text-field.js.map +1 -1
- package/lib/radio-with-label.js +11 -4
- package/lib/radio-with-label.js.map +1 -1
- package/lib/settings/display-size.js +15 -3
- package/lib/settings/display-size.js.map +1 -1
- package/lib/settings/index.js +27 -4
- package/lib/settings/index.js.map +1 -1
- package/lib/settings/panel.js +102 -40
- package/lib/settings/panel.js.map +1 -1
- package/lib/settings/settings-radio-label.js +11 -4
- package/lib/settings/settings-radio-label.js.map +1 -1
- package/lib/settings/toggle.js +10 -3
- package/lib/settings/toggle.js.map +1 -1
- package/lib/tabs/index.js +29 -6
- package/lib/tabs/index.js.map +1 -1
- package/lib/tags-input/index.js +41 -4
- package/lib/tags-input/index.js.map +1 -1
- package/lib/two-choice.js +48 -14
- package/lib/two-choice.js.map +1 -1
- package/lib/with-stateful-model.js +19 -0
- package/lib/with-stateful-model.js.map +1 -1
- 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
|
-
|
|
96
|
-
|
|
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
|
-
|
|
101
|
-
|
|
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
|
-
|
|
113
|
-
|
|
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
|
-
|
|
129
|
-
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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
|
-
|
|
177
|
-
|
|
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
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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":"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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 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"}
|
package/lib/number-text-field.js
CHANGED
|
@@ -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
|
-
|
|
69
|
-
|
|
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
|
-
|
|
114
|
-
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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"}
|