@pie-lib/config-ui 10.10.4-next.62 → 10.10.4-next.626
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/CHANGELOG.md +346 -0
- package/lib/alert-dialog.js +44 -0
- package/lib/alert-dialog.js.map +1 -0
- package/lib/checkbox.js +4 -4
- package/lib/checkbox.js.map +1 -1
- package/lib/choice-configuration/feedback-menu.js +41 -53
- package/lib/choice-configuration/feedback-menu.js.map +1 -1
- package/lib/choice-configuration/index.js +93 -81
- package/lib/choice-configuration/index.js.map +1 -1
- package/lib/choice-utils.js +8 -8
- package/lib/choice-utils.js.map +1 -1
- package/lib/feedback-config/feedback-selector.js +44 -48
- package/lib/feedback-config/feedback-selector.js.map +1 -1
- package/lib/feedback-config/group.js +5 -5
- package/lib/feedback-config/group.js.map +1 -1
- package/lib/feedback-config/index.js +46 -52
- package/lib/feedback-config/index.js.map +1 -1
- package/lib/form-section.js +8 -6
- package/lib/form-section.js.map +1 -1
- package/lib/help.js +30 -37
- package/lib/help.js.map +1 -1
- package/lib/index.js +66 -45
- package/lib/index.js.map +1 -1
- package/lib/input.js +35 -40
- package/lib/input.js.map +1 -1
- package/lib/inputs.js +28 -17
- package/lib/inputs.js.map +1 -1
- package/lib/langs.js +37 -45
- package/lib/langs.js.map +1 -1
- package/lib/layout/config-layout.js +29 -37
- package/lib/layout/config-layout.js.map +1 -1
- package/lib/layout/index.js +2 -2
- package/lib/layout/index.js.map +1 -1
- package/lib/layout/layout-contents.js +28 -34
- package/lib/layout/layout-contents.js.map +1 -1
- package/lib/layout/settings-box.js +23 -31
- package/lib/layout/settings-box.js.map +1 -1
- package/lib/mui-box/index.js +3 -3
- package/lib/mui-box/index.js.map +1 -1
- package/lib/number-text-field-custom.js +364 -0
- package/lib/number-text-field-custom.js.map +1 -0
- package/lib/number-text-field.js +33 -42
- package/lib/number-text-field.js.map +1 -1
- package/lib/radio-with-label.js +4 -4
- package/lib/radio-with-label.js.map +1 -1
- package/lib/settings/display-size.js +10 -10
- package/lib/settings/display-size.js.map +1 -1
- package/lib/settings/index.js +11 -17
- package/lib/settings/index.js.map +1 -1
- package/lib/settings/panel.js +58 -68
- package/lib/settings/panel.js.map +1 -1
- package/lib/settings/settings-radio-label.js +4 -4
- package/lib/settings/settings-radio-label.js.map +1 -1
- package/lib/settings/toggle.js +5 -5
- package/lib/settings/toggle.js.map +1 -1
- package/lib/tabs/index.js +28 -35
- package/lib/tabs/index.js.map +1 -1
- package/lib/tags-input/index.js +32 -40
- package/lib/tags-input/index.js.map +1 -1
- package/lib/two-choice.js +38 -48
- package/lib/two-choice.js.map +1 -1
- package/lib/with-stateful-model.js +23 -30
- package/lib/with-stateful-model.js.map +1 -1
- package/package.json +4 -4
- package/src/alert-dialog.jsx +43 -0
- package/src/choice-configuration/index.jsx +22 -2
- package/src/feedback-config/feedback-selector.jsx +1 -0
- package/src/form-section.jsx +2 -2
- package/src/index.js +4 -0
- package/src/inputs.jsx +13 -5
- package/src/number-text-field-custom.jsx +276 -0
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = exports.NumberTextFieldCustom = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
|
|
24
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
25
|
+
|
|
26
|
+
var _react = _interopRequireDefault(require("react"));
|
|
27
|
+
|
|
28
|
+
var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
|
|
29
|
+
|
|
30
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
31
|
+
|
|
32
|
+
var _styles = require("@material-ui/core/styles");
|
|
33
|
+
|
|
34
|
+
var _isFinite = _interopRequireDefault(require("lodash/isFinite"));
|
|
35
|
+
|
|
36
|
+
var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
|
|
37
|
+
|
|
38
|
+
var _InputAdornment = _interopRequireDefault(require("@material-ui/core/InputAdornment"));
|
|
39
|
+
|
|
40
|
+
var _Remove = _interopRequireDefault(require("@material-ui/icons/Remove"));
|
|
41
|
+
|
|
42
|
+
var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
|
|
43
|
+
|
|
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
|
+
|
|
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
|
+
|
|
48
|
+
var styles = function styles(theme) {
|
|
49
|
+
return {
|
|
50
|
+
input: {
|
|
51
|
+
'& input[type=number]': {
|
|
52
|
+
'-moz-appearance': 'textfield'
|
|
53
|
+
},
|
|
54
|
+
'& input[type=number]::-webkit-outer-spin-button': {
|
|
55
|
+
'-webkit-appearance': 'none',
|
|
56
|
+
margin: 0
|
|
57
|
+
},
|
|
58
|
+
'& input[type=number]::-webkit-inner-spin-button': {
|
|
59
|
+
'-webkit-appearance': 'none',
|
|
60
|
+
margin: 0
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
iconButton: {
|
|
64
|
+
padding: '2px'
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
var fallbackNumber = function fallbackNumber(min, max) {
|
|
70
|
+
if (!(0, _isFinite["default"])(min) && !(0, _isFinite["default"])(max)) {
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (!(0, _isFinite["default"])(min) && (0, _isFinite["default"])(max)) {
|
|
75
|
+
return max;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if ((0, _isFinite["default"])(min)) {
|
|
79
|
+
return min;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
84
|
+
(0, _inherits2["default"])(NumberTextFieldCustom, _React$Component);
|
|
85
|
+
|
|
86
|
+
var _super = _createSuper(NumberTextFieldCustom);
|
|
87
|
+
|
|
88
|
+
function NumberTextFieldCustom(props) {
|
|
89
|
+
var _this;
|
|
90
|
+
|
|
91
|
+
(0, _classCallCheck2["default"])(this, NumberTextFieldCustom);
|
|
92
|
+
_this = _super.call(this, props);
|
|
93
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "normalizeValueAndIndex", function (customValues, number) {
|
|
94
|
+
var value = _this.clamp(number);
|
|
95
|
+
|
|
96
|
+
var currentIndex = (customValues || []).findIndex(function (val) {
|
|
97
|
+
return val === value;
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
if ((customValues || []).length > 0 && currentIndex === -1) {
|
|
101
|
+
var closestValue = _this.getClosestValue(customValues, value);
|
|
102
|
+
|
|
103
|
+
return {
|
|
104
|
+
value: closestValue.value,
|
|
105
|
+
currentIndex: closestValue.index
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return {
|
|
110
|
+
value: value,
|
|
111
|
+
currentIndex: currentIndex
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getClosestValue", function (customValues, number) {
|
|
115
|
+
return customValues.reduce(function (closest, value, index) {
|
|
116
|
+
return Math.abs(value - number) < Math.abs(closest.value - number) ? {
|
|
117
|
+
value: value,
|
|
118
|
+
index: index
|
|
119
|
+
} : closest;
|
|
120
|
+
}, {
|
|
121
|
+
value: customValues[0],
|
|
122
|
+
index: 0
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onBlur", function (event) {
|
|
126
|
+
var _this$props = _this.props,
|
|
127
|
+
customValues = _this$props.customValues,
|
|
128
|
+
onlyIntegersAllowed = _this$props.onlyIntegersAllowed;
|
|
129
|
+
var value = event.target.value;
|
|
130
|
+
var rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);
|
|
131
|
+
|
|
132
|
+
var _this$normalizeValueA = _this.normalizeValueAndIndex(customValues, rawNumber),
|
|
133
|
+
number = _this$normalizeValueA.value,
|
|
134
|
+
currentIndex = _this$normalizeValueA.currentIndex;
|
|
135
|
+
|
|
136
|
+
if (number !== _this.state.value) {
|
|
137
|
+
_this.setState({
|
|
138
|
+
value: number.toString(),
|
|
139
|
+
currentIndex: currentIndex
|
|
140
|
+
}, function () {
|
|
141
|
+
return _this.props.onChange(event, number);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
var _this$normalizeValueA2 = _this.normalizeValueAndIndex(props.customValues, props.value),
|
|
147
|
+
_value = _this$normalizeValueA2.value,
|
|
148
|
+
_currentIndex = _this$normalizeValueA2.currentIndex;
|
|
149
|
+
|
|
150
|
+
_this.state = {
|
|
151
|
+
value: _value,
|
|
152
|
+
currentIndex: _currentIndex
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
if (_value !== props.value) {
|
|
156
|
+
_this.props.onChange({}, _value);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
_this.onChange = _this.onChange.bind((0, _assertThisInitialized2["default"])(_this));
|
|
160
|
+
return _this;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
(0, _createClass2["default"])(NumberTextFieldCustom, [{
|
|
164
|
+
key: "UNSAFE_componentWillReceiveProps",
|
|
165
|
+
value: function UNSAFE_componentWillReceiveProps(props) {
|
|
166
|
+
var _this$normalizeValueA3 = this.normalizeValueAndIndex(props.customValues, props.value),
|
|
167
|
+
value = _this$normalizeValueA3.value,
|
|
168
|
+
currentIndex = _this$normalizeValueA3.currentIndex;
|
|
169
|
+
|
|
170
|
+
this.setState({
|
|
171
|
+
value: value,
|
|
172
|
+
currentIndex: currentIndex
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}, {
|
|
176
|
+
key: "clamp",
|
|
177
|
+
value: function clamp(value) {
|
|
178
|
+
var _this$props2 = this.props,
|
|
179
|
+
min = _this$props2.min,
|
|
180
|
+
max = _this$props2.max,
|
|
181
|
+
customValues = _this$props2.customValues;
|
|
182
|
+
|
|
183
|
+
if ((customValues || []).length > 0) {
|
|
184
|
+
return value;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (!(0, _isFinite["default"])(value)) {
|
|
188
|
+
return fallbackNumber(min, max);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if ((0, _isFinite["default"])(max)) {
|
|
192
|
+
value = Math.min(value, max);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if ((0, _isFinite["default"])(min)) {
|
|
196
|
+
value = Math.max(value, min);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return value;
|
|
200
|
+
}
|
|
201
|
+
}, {
|
|
202
|
+
key: "onChange",
|
|
203
|
+
value: function onChange(event) {
|
|
204
|
+
var value = event.target.value;
|
|
205
|
+
this.setState({
|
|
206
|
+
value: value
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}, {
|
|
210
|
+
key: "changeValue",
|
|
211
|
+
value: function changeValue(event) {
|
|
212
|
+
var sign = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
213
|
+
var shouldUpdate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
214
|
+
event.preventDefault();
|
|
215
|
+
var _this$props3 = this.props,
|
|
216
|
+
customValues = _this$props3.customValues,
|
|
217
|
+
step = _this$props3.step,
|
|
218
|
+
onlyIntegersAllowed = _this$props3.onlyIntegersAllowed,
|
|
219
|
+
onChange = _this$props3.onChange;
|
|
220
|
+
var _this$state = this.state,
|
|
221
|
+
currentIndex = _this$state.currentIndex,
|
|
222
|
+
value = _this$state.value;
|
|
223
|
+
var updatedIndex = currentIndex + sign * 1;
|
|
224
|
+
var number;
|
|
225
|
+
|
|
226
|
+
if (customValues.length > 0) {
|
|
227
|
+
if (updatedIndex < 0 || updatedIndex >= customValues.length) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
number = customValues[updatedIndex];
|
|
232
|
+
} else {
|
|
233
|
+
var rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);
|
|
234
|
+
var updatedValue = (rawNumber * 10000 + step * sign * 10000) / 10000;
|
|
235
|
+
number = this.clamp(updatedValue);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
this.setState({
|
|
239
|
+
value: number.toString(),
|
|
240
|
+
currentIndex: updatedIndex
|
|
241
|
+
}, function () {
|
|
242
|
+
if (shouldUpdate) {
|
|
243
|
+
onChange(event, number);
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}, {
|
|
248
|
+
key: "render",
|
|
249
|
+
value: function render() {
|
|
250
|
+
var _this2 = this;
|
|
251
|
+
|
|
252
|
+
var _this$props4 = this.props,
|
|
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;
|
|
265
|
+
var value = this.state.value;
|
|
266
|
+
var names = (0, _classnames["default"])(className, classes.input);
|
|
267
|
+
return /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
|
|
268
|
+
variant: variant,
|
|
269
|
+
inputRef: function inputRef(ref) {
|
|
270
|
+
return _this2.inputRef = ref;
|
|
271
|
+
},
|
|
272
|
+
disabled: disabled,
|
|
273
|
+
label: label,
|
|
274
|
+
value: value,
|
|
275
|
+
error: error,
|
|
276
|
+
helperText: helperText,
|
|
277
|
+
onChange: this.onChange,
|
|
278
|
+
onBlur: this.onBlur,
|
|
279
|
+
onKeyPress: function onKeyPress(e) {
|
|
280
|
+
// once the Enter key is pressed, we force input blur
|
|
281
|
+
if (e.key === 'Enter' && _this2.inputRef) {
|
|
282
|
+
_this2.inputRef.blur();
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
onKeyDown: function onKeyDown(e) {
|
|
286
|
+
if (e.key === 'ArrowUp') {
|
|
287
|
+
_this2.changeValue(e);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
if (e.key === 'ArrowDown') {
|
|
291
|
+
_this2.changeValue(e, -1);
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
type: "number",
|
|
295
|
+
className: names,
|
|
296
|
+
InputProps: {
|
|
297
|
+
className: inputClassName,
|
|
298
|
+
disableUnderline: disableUnderline,
|
|
299
|
+
startAdornment: /*#__PURE__*/_react["default"].createElement(_InputAdornment["default"], {
|
|
300
|
+
position: "start"
|
|
301
|
+
}, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
|
|
302
|
+
className: classes.iconButton,
|
|
303
|
+
disabled: disabled,
|
|
304
|
+
onClick: function onClick(e) {
|
|
305
|
+
return _this2.changeValue(e, -1, true);
|
|
306
|
+
}
|
|
307
|
+
}, /*#__PURE__*/_react["default"].createElement(_Remove["default"], {
|
|
308
|
+
fontSize: "small"
|
|
309
|
+
}))),
|
|
310
|
+
endAdornment: /*#__PURE__*/_react["default"].createElement(_InputAdornment["default"], {
|
|
311
|
+
position: "end"
|
|
312
|
+
}, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
|
|
313
|
+
className: classes.iconButton,
|
|
314
|
+
disabled: disabled,
|
|
315
|
+
onClick: function onClick(e) {
|
|
316
|
+
return _this2.changeValue(e, 1, true);
|
|
317
|
+
}
|
|
318
|
+
}, /*#__PURE__*/_react["default"].createElement(_Add["default"], {
|
|
319
|
+
fontSize: "small"
|
|
320
|
+
})))
|
|
321
|
+
},
|
|
322
|
+
inputProps: {
|
|
323
|
+
style: {
|
|
324
|
+
textAlign: textAlign
|
|
325
|
+
},
|
|
326
|
+
min: min,
|
|
327
|
+
max: max
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
}]);
|
|
332
|
+
return NumberTextFieldCustom;
|
|
333
|
+
}(_react["default"].Component);
|
|
334
|
+
|
|
335
|
+
exports.NumberTextFieldCustom = NumberTextFieldCustom;
|
|
336
|
+
(0, _defineProperty2["default"])(NumberTextFieldCustom, "propTypes", {
|
|
337
|
+
classes: _propTypes["default"].object.isRequired,
|
|
338
|
+
className: _propTypes["default"].string,
|
|
339
|
+
customValues: _propTypes["default"].array,
|
|
340
|
+
disabled: _propTypes["default"].bool,
|
|
341
|
+
error: _propTypes["default"].bool,
|
|
342
|
+
inputClassName: _propTypes["default"].string,
|
|
343
|
+
onChange: _propTypes["default"].func.isRequired,
|
|
344
|
+
onlyIntegersAllowed: _propTypes["default"].bool,
|
|
345
|
+
value: _propTypes["default"].number,
|
|
346
|
+
min: _propTypes["default"].number,
|
|
347
|
+
max: _propTypes["default"].number,
|
|
348
|
+
step: _propTypes["default"].number,
|
|
349
|
+
label: _propTypes["default"].string,
|
|
350
|
+
disableUnderline: _propTypes["default"].bool,
|
|
351
|
+
variant: _propTypes["default"].string
|
|
352
|
+
});
|
|
353
|
+
(0, _defineProperty2["default"])(NumberTextFieldCustom, "defaultProps", {
|
|
354
|
+
step: 1,
|
|
355
|
+
customValues: [],
|
|
356
|
+
textAlign: 'center',
|
|
357
|
+
variant: 'standard',
|
|
358
|
+
onlyIntegersAllowed: false
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
var _default = (0, _styles.withStyles)(styles)(NumberTextFieldCustom);
|
|
362
|
+
|
|
363
|
+
exports["default"] = _default;
|
|
364
|
+
//# sourceMappingURL=number-text-field-custom.js.map
|
|
@@ -0,0 +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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"}
|
package/lib/number-text-field.js
CHANGED
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports["default"] = exports.NumberTextField = void 0;
|
|
7
9
|
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
|
|
8
24
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
25
|
|
|
10
26
|
var _react = _interopRequireDefault(require("react"));
|
|
@@ -21,27 +37,9 @@ var _isFinite = _interopRequireDefault(require("lodash/isFinite"));
|
|
|
21
37
|
|
|
22
38
|
var _InputAdornment = _interopRequireDefault(require("@material-ui/core/InputAdornment"));
|
|
23
39
|
|
|
24
|
-
function
|
|
25
|
-
|
|
26
|
-
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
27
|
-
|
|
28
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
29
|
-
|
|
30
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
31
|
-
|
|
32
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
33
|
-
|
|
34
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
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); }; }
|
|
35
41
|
|
|
36
|
-
function
|
|
37
|
-
|
|
38
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
39
|
-
|
|
40
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
41
|
-
|
|
42
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
43
|
-
|
|
44
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
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; } }
|
|
45
43
|
|
|
46
44
|
var log = (0, _debug["default"])('@pie-lib:config-ui:number-text-field');
|
|
47
45
|
|
|
@@ -67,19 +65,17 @@ var fallbackNumber = function fallbackNumber(min, max) {
|
|
|
67
65
|
}
|
|
68
66
|
};
|
|
69
67
|
|
|
70
|
-
var NumberTextField =
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
var NumberTextField = /*#__PURE__*/function (_React$Component) {
|
|
69
|
+
(0, _inherits2["default"])(NumberTextField, _React$Component);
|
|
70
|
+
|
|
71
|
+
var _super = _createSuper(NumberTextField);
|
|
74
72
|
|
|
75
73
|
function NumberTextField(props) {
|
|
76
74
|
var _this;
|
|
77
75
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
_defineProperty(_assertThisInitialized(_this), "onBlur", function (event) {
|
|
76
|
+
(0, _classCallCheck2["default"])(this, NumberTextField);
|
|
77
|
+
_this = _super.call(this, props);
|
|
78
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onBlur", function (event) {
|
|
83
79
|
var value = event.target.value;
|
|
84
80
|
var rawNumber = parseFloat(value);
|
|
85
81
|
log('rawNumber: ', rawNumber);
|
|
@@ -98,8 +94,7 @@ function (_React$Component) {
|
|
|
98
94
|
});
|
|
99
95
|
}
|
|
100
96
|
});
|
|
101
|
-
|
|
102
|
-
_defineProperty(_assertThisInitialized(_this), "errorMessage", function () {
|
|
97
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "errorMessage", function () {
|
|
103
98
|
var _this$props = _this.props,
|
|
104
99
|
min = _this$props.min,
|
|
105
100
|
max = _this$props.max;
|
|
@@ -116,8 +111,7 @@ function (_React$Component) {
|
|
|
116
111
|
return "The value must be less than ".concat(max);
|
|
117
112
|
}
|
|
118
113
|
});
|
|
119
|
-
|
|
120
|
-
_defineProperty(_assertThisInitialized(_this), "getError", function () {
|
|
114
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getError", function () {
|
|
121
115
|
var value = _this.state.value;
|
|
122
116
|
|
|
123
117
|
var _float = parseFloat(value);
|
|
@@ -139,11 +133,11 @@ function (_React$Component) {
|
|
|
139
133
|
_this.props.onChange({}, _value);
|
|
140
134
|
}
|
|
141
135
|
|
|
142
|
-
_this.onChange = _this.onChange.bind(
|
|
136
|
+
_this.onChange = _this.onChange.bind((0, _assertThisInitialized2["default"])(_this));
|
|
143
137
|
return _this;
|
|
144
138
|
}
|
|
145
139
|
|
|
146
|
-
|
|
140
|
+
(0, _createClass2["default"])(NumberTextField, [{
|
|
147
141
|
key: "UNSAFE_componentWillReceiveProps",
|
|
148
142
|
value: function UNSAFE_componentWillReceiveProps(props) {
|
|
149
143
|
var value = this.clamp(props.value);
|
|
@@ -204,7 +198,7 @@ function (_React$Component) {
|
|
|
204
198
|
variant = _this$props3.variant;
|
|
205
199
|
var names = (0, _classnames["default"])(classes.root, className);
|
|
206
200
|
var error = showErrorWhenOutsideRange && this.getError();
|
|
207
|
-
return _react["default"].createElement(_TextField["default"], {
|
|
201
|
+
return /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
|
|
208
202
|
variant: variant || 'standard',
|
|
209
203
|
inputRef: function inputRef(ref) {
|
|
210
204
|
_this2.inputRef = ref;
|
|
@@ -228,7 +222,7 @@ function (_React$Component) {
|
|
|
228
222
|
shrink: true
|
|
229
223
|
},
|
|
230
224
|
InputProps: {
|
|
231
|
-
endAdornment: suffix && _react["default"].createElement(_InputAdornment["default"], {
|
|
225
|
+
endAdornment: suffix && /*#__PURE__*/_react["default"].createElement(_InputAdornment["default"], {
|
|
232
226
|
position: "end"
|
|
233
227
|
}, suffix),
|
|
234
228
|
className: inputClassName,
|
|
@@ -242,13 +236,11 @@ function (_React$Component) {
|
|
|
242
236
|
});
|
|
243
237
|
}
|
|
244
238
|
}]);
|
|
245
|
-
|
|
246
239
|
return NumberTextField;
|
|
247
240
|
}(_react["default"].Component);
|
|
248
241
|
|
|
249
242
|
exports.NumberTextField = NumberTextField;
|
|
250
|
-
|
|
251
|
-
_defineProperty(NumberTextField, "propTypes", {
|
|
243
|
+
(0, _defineProperty2["default"])(NumberTextField, "propTypes", {
|
|
252
244
|
disabled: _propTypes["default"].bool,
|
|
253
245
|
classes: _propTypes["default"].object.isRequired,
|
|
254
246
|
className: _propTypes["default"].string,
|
|
@@ -263,8 +255,7 @@ _defineProperty(NumberTextField, "propTypes", {
|
|
|
263
255
|
disableUnderline: _propTypes["default"].bool,
|
|
264
256
|
variant: _propTypes["default"].string
|
|
265
257
|
});
|
|
266
|
-
|
|
267
|
-
_defineProperty(NumberTextField, "defaultProps", {
|
|
258
|
+
(0, _defineProperty2["default"])(NumberTextField, "defaultProps", {
|
|
268
259
|
showErrorWhenOutsideRange: false
|
|
269
260
|
});
|
|
270
261
|
|
|
@@ -1 +1 @@
|
|
|
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"}
|
|
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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"}
|
package/lib/radio-with-label.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -13,8 +15,6 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
13
15
|
|
|
14
16
|
var _styles = require("@material-ui/core/styles");
|
|
15
17
|
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
17
|
-
|
|
18
18
|
var _default = (0, _styles.withStyles)({
|
|
19
19
|
label: {
|
|
20
20
|
left: '-5px',
|
|
@@ -26,10 +26,10 @@ var _default = (0, _styles.withStyles)({
|
|
|
26
26
|
checked = _ref.checked,
|
|
27
27
|
onChange = _ref.onChange,
|
|
28
28
|
classes = _ref.classes;
|
|
29
|
-
return _react["default"].createElement(_FormControlLabel["default"], {
|
|
29
|
+
return /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
|
|
30
30
|
value: value,
|
|
31
31
|
classes: classes,
|
|
32
|
-
control: _react["default"].createElement(_Radio["default"], {
|
|
32
|
+
control: /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
|
|
33
33
|
checked: checked,
|
|
34
34
|
onChange: onChange
|
|
35
35
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"radio-with-label.js","names":["withStyles","label","left","position","value","checked","onChange","classes"],"sources":["../src/radio-with-label.jsx"],"sourcesContent":["import FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Radio from '@material-ui/core/Radio';\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\n\nexport default withStyles({\n label: {\n left: '-5px',\n position: 'relative'\n }\n})(({ label, value, checked, onChange, classes }) => (\n <FormControlLabel\n value={value}\n classes={classes}\n control={<Radio checked={checked} onChange={onChange} />}\n label={label}\n />\n));\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;eAEe,IAAAA,kBAAA,EAAW;EACxBC,KAAK,EAAE;IACLC,IAAI,EAAE,MADD;IAELC,QAAQ,EAAE;EAFL;AADiB,CAAX,EAKZ;EAAA,IAAGF,KAAH,QAAGA,KAAH;EAAA,IAAUG,KAAV,QAAUA,KAAV;EAAA,IAAiBC,OAAjB,QAAiBA,OAAjB;EAAA,IAA0BC,QAA1B,QAA0BA,QAA1B;EAAA,IAAoCC,OAApC,QAAoCA,OAApC;EAAA,oBACD,gCAAC,4BAAD;IACE,KAAK,EAAEH,KADT;IAEE,OAAO,EAAEG,OAFX;IAGE,OAAO,eAAE,gCAAC,iBAAD;MAAO,OAAO,EAAEF,OAAhB;MAAyB,QAAQ,EAAEC;IAAnC,EAHX;IAIE,KAAK,EAAEL;EAJT,EADC;AAAA,CALY,C"}
|