@panneau/field-number 1.0.0-alpha.251 → 1.0.0-alpha.263
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/es/index.js +37 -8
- package/lib/index.js +40 -9
- package/package.json +10 -9
package/es/index.js
CHANGED
|
@@ -2,10 +2,12 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
|
2
2
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
3
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
4
4
|
import React, { useCallback, useState } from 'react';
|
|
5
|
-
import PropTypes from 'prop-types';
|
|
6
|
-
import classNames from 'classnames';
|
|
7
|
-
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
8
5
|
import { faChevronDown } from '@fortawesome/free-solid-svg-icons';
|
|
6
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
7
|
+
import classNames from 'classnames';
|
|
8
|
+
import isNaN from 'lodash/isNaN';
|
|
9
|
+
import isNumber from 'lodash/isNumber';
|
|
10
|
+
import PropTypes from 'prop-types';
|
|
9
11
|
import TextField from '@panneau/field-text';
|
|
10
12
|
|
|
11
13
|
var styles = {"container":"panneau-field-number-container","arrow":"panneau-field-number-arrow","arrowIcon":"panneau-field-number-arrowIcon","dataListItems":"panneau-field-number-dataListItems","dataListItem":"panneau-field-number-dataListItem","dataListItemButton":"panneau-field-number-dataListItemButton"};
|
|
@@ -32,6 +34,13 @@ var defaultProps = {
|
|
|
32
34
|
onChange: null
|
|
33
35
|
};
|
|
34
36
|
|
|
37
|
+
function isNumeric(str) {
|
|
38
|
+
if (typeof str !== 'string') return false; // we only process strings!
|
|
39
|
+
|
|
40
|
+
return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
|
|
41
|
+
!isNaN(parseFloat(str));
|
|
42
|
+
}
|
|
43
|
+
|
|
35
44
|
var NumberField = function NumberField(_ref) {
|
|
36
45
|
var value = _ref.value,
|
|
37
46
|
step = _ref.step,
|
|
@@ -44,13 +53,33 @@ var NumberField = function NumberField(_ref) {
|
|
|
44
53
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
45
54
|
|
|
46
55
|
var parseValue = useCallback(function (newValue) {
|
|
47
|
-
|
|
48
|
-
|
|
56
|
+
if (newValue !== null) {
|
|
57
|
+
if (_float) {
|
|
58
|
+
return newValue;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (isNumber(newValue)) {
|
|
62
|
+
return newValue;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (isNumeric(newValue)) {
|
|
66
|
+
return _float ? parseFloat(newValue) : parseInt(newValue, 10);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return null;
|
|
71
|
+
}, [_float]);
|
|
49
72
|
var onInputChange = useCallback(function (val) {
|
|
50
73
|
if (onChange !== null) {
|
|
51
|
-
|
|
74
|
+
if (_float) {
|
|
75
|
+
onChange(val !== null && val.length > 0 ? val : null);
|
|
76
|
+
} else {
|
|
77
|
+
onChange(val !== null && val.length > 0 ? parseValue(val) : null);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
onChange(val !== null && val.length > 0 ? parseValue(val) : null);
|
|
52
81
|
}
|
|
53
|
-
}, [onChange]); // Datalist
|
|
82
|
+
}, [onChange, _float]); // Datalist
|
|
54
83
|
|
|
55
84
|
var hasDataList = dataList !== null;
|
|
56
85
|
|
|
@@ -70,7 +99,7 @@ var NumberField = function NumberField(_ref) {
|
|
|
70
99
|
}
|
|
71
100
|
}, [setDataListActive, hasDataList, dataListActive]);
|
|
72
101
|
var onDataListClick = useCallback(function (dataListValue) {
|
|
73
|
-
if (onChange !== null) {
|
|
102
|
+
if (onChange !== null && dataListValue !== null) {
|
|
74
103
|
onChange(parseValue(dataListValue));
|
|
75
104
|
setDataListActive(false);
|
|
76
105
|
}
|
package/lib/index.js
CHANGED
|
@@ -6,10 +6,12 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
|
6
6
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
7
7
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
8
8
|
var React = require('react');
|
|
9
|
-
var PropTypes = require('prop-types');
|
|
10
|
-
var classNames = require('classnames');
|
|
11
|
-
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
12
9
|
var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
|
|
10
|
+
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
11
|
+
var classNames = require('classnames');
|
|
12
|
+
var isNaN = require('lodash/isNaN');
|
|
13
|
+
var isNumber = require('lodash/isNumber');
|
|
14
|
+
var PropTypes = require('prop-types');
|
|
13
15
|
var TextField = require('@panneau/field-text');
|
|
14
16
|
|
|
15
17
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -18,8 +20,10 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
|
|
|
18
20
|
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
19
21
|
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
|
|
20
22
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
21
|
-
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
22
23
|
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
|
|
24
|
+
var isNaN__default = /*#__PURE__*/_interopDefaultLegacy(isNaN);
|
|
25
|
+
var isNumber__default = /*#__PURE__*/_interopDefaultLegacy(isNumber);
|
|
26
|
+
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
23
27
|
var TextField__default = /*#__PURE__*/_interopDefaultLegacy(TextField);
|
|
24
28
|
|
|
25
29
|
var styles = {"container":"panneau-field-number-container","arrow":"panneau-field-number-arrow","arrowIcon":"panneau-field-number-arrowIcon","dataListItems":"panneau-field-number-dataListItems","dataListItem":"panneau-field-number-dataListItem","dataListItemButton":"panneau-field-number-dataListItemButton"};
|
|
@@ -46,6 +50,13 @@ var defaultProps = {
|
|
|
46
50
|
onChange: null
|
|
47
51
|
};
|
|
48
52
|
|
|
53
|
+
function isNumeric(str) {
|
|
54
|
+
if (typeof str !== 'string') return false; // we only process strings!
|
|
55
|
+
|
|
56
|
+
return !isNaN__default["default"](str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
|
|
57
|
+
!isNaN__default["default"](parseFloat(str));
|
|
58
|
+
}
|
|
59
|
+
|
|
49
60
|
var NumberField = function NumberField(_ref) {
|
|
50
61
|
var value = _ref.value,
|
|
51
62
|
step = _ref.step,
|
|
@@ -58,13 +69,33 @@ var NumberField = function NumberField(_ref) {
|
|
|
58
69
|
props = _objectWithoutProperties__default["default"](_ref, _excluded);
|
|
59
70
|
|
|
60
71
|
var parseValue = React.useCallback(function (newValue) {
|
|
61
|
-
|
|
62
|
-
|
|
72
|
+
if (newValue !== null) {
|
|
73
|
+
if (_float) {
|
|
74
|
+
return newValue;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (isNumber__default["default"](newValue)) {
|
|
78
|
+
return newValue;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (isNumeric(newValue)) {
|
|
82
|
+
return _float ? parseFloat(newValue) : parseInt(newValue, 10);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return null;
|
|
87
|
+
}, [_float]);
|
|
63
88
|
var onInputChange = React.useCallback(function (val) {
|
|
64
89
|
if (onChange !== null) {
|
|
65
|
-
|
|
90
|
+
if (_float) {
|
|
91
|
+
onChange(val !== null && val.length > 0 ? val : null);
|
|
92
|
+
} else {
|
|
93
|
+
onChange(val !== null && val.length > 0 ? parseValue(val) : null);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
onChange(val !== null && val.length > 0 ? parseValue(val) : null);
|
|
66
97
|
}
|
|
67
|
-
}, [onChange]); // Datalist
|
|
98
|
+
}, [onChange, _float]); // Datalist
|
|
68
99
|
|
|
69
100
|
var hasDataList = dataList !== null;
|
|
70
101
|
|
|
@@ -84,7 +115,7 @@ var NumberField = function NumberField(_ref) {
|
|
|
84
115
|
}
|
|
85
116
|
}, [setDataListActive, hasDataList, dataListActive]);
|
|
86
117
|
var onDataListClick = React.useCallback(function (dataListValue) {
|
|
87
|
-
if (onChange !== null) {
|
|
118
|
+
if (onChange !== null && dataListValue !== null) {
|
|
88
119
|
onChange(parseValue(dataListValue));
|
|
89
120
|
setDataListActive(false);
|
|
90
121
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@panneau/field-number",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.263",
|
|
4
4
|
"description": "A number field",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"javascript"
|
|
@@ -44,26 +44,27 @@
|
|
|
44
44
|
"prepare": "../../scripts/prepare-package.sh"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"react": "^16.8.0 || ^17.0.0",
|
|
48
|
-
"react-dom": "^16.8.0 || ^17.0.0"
|
|
47
|
+
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
|
48
|
+
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
|
-
"react": "^16.8.0 || ^17.0.0",
|
|
52
|
-
"react-dom": "^16.8.0 || ^17.0.0"
|
|
51
|
+
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
|
52
|
+
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@babel/runtime": "^7.12.5",
|
|
56
56
|
"@fortawesome/fontawesome-svg-core": "^1.2.35",
|
|
57
57
|
"@fortawesome/free-solid-svg-icons": "^5.15.3",
|
|
58
58
|
"@fortawesome/react-fontawesome": "^0.1.14",
|
|
59
|
-
"@panneau/core": "^1.0.0-alpha.
|
|
60
|
-
"@panneau/field-text": "^1.0.0-alpha.
|
|
61
|
-
"@panneau/themes": "^1.0.0-alpha.
|
|
59
|
+
"@panneau/core": "^1.0.0-alpha.263",
|
|
60
|
+
"@panneau/field-text": "^1.0.0-alpha.263",
|
|
61
|
+
"@panneau/themes": "^1.0.0-alpha.263",
|
|
62
62
|
"classnames": "^2.2.6",
|
|
63
|
+
"lodash": "^4.17.21",
|
|
63
64
|
"prop-types": "^15.7.2"
|
|
64
65
|
},
|
|
65
66
|
"publishConfig": {
|
|
66
67
|
"access": "public"
|
|
67
68
|
},
|
|
68
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "6174c89cf31725bd7940c1a3791578f0e975a52a"
|
|
69
70
|
}
|