@semcore/input-number 4.0.6 → 4.0.9
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 +18 -0
- package/README.md +2 -2
- package/lib/cjs/InputNumber.js +14 -11
- package/lib/cjs/InputNumber.js.map +1 -1
- package/lib/es6/InputNumber.js +14 -11
- package/lib/es6/InputNumber.js.map +1 -1
- package/package.json +3 -3
- package/src/InputNumber.jsx +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
|
|
4
4
|
|
|
5
|
+
## [4.0.9] - 2022-07-14
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Version patch update due to children dependencies update (`@semcore/input` [3.0.7 ~> 3.0.8]).
|
|
10
|
+
|
|
11
|
+
## [4.0.8] - 2022-07-14
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Version patch update due to children dependencies update (`@semcore/input` [3.0.6 ~> 3.0.7]).
|
|
16
|
+
|
|
17
|
+
## [4.0.7] - 2022-07-13
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- Fixed rounding float numbers.
|
|
22
|
+
|
|
5
23
|
## [4.0.6] - 2022-07-07
|
|
6
24
|
|
|
7
25
|
### Changed
|
package/README.md
CHANGED
|
@@ -42,12 +42,12 @@ of the components that is discussed below. There should only be one version of t
|
|
|
42
42
|
|
|
43
43
|
You can use the package the same way but without `/ui/` in the import path.
|
|
44
44
|
|
|
45
|
-
</details>
|
|
46
|
-
|
|
47
45
|
```jsx
|
|
48
46
|
import InputNumber from '@semcore/input-number';
|
|
49
47
|
```
|
|
50
48
|
|
|
49
|
+
</details>
|
|
50
|
+
|
|
51
51
|
## 👤 Author
|
|
52
52
|
|
|
53
53
|
[UI-kit team](https://github.com/semrush/intergalactic/blob/master/MAINTAINERS) and [others ❤️](https://github.com/semrush/intergalactic/graphs/contributors)
|
package/lib/cjs/InputNumber.js
CHANGED
|
@@ -48,19 +48,19 @@ var style = (
|
|
|
48
48
|
/*__reshadow_css_start__*/
|
|
49
49
|
_core.sstyled.insert(
|
|
50
50
|
/*__inner_css_start__*/
|
|
51
|
-
".
|
|
51
|
+
".___SInputNumber_o7h4u_gg_:hover .___SValue_o7h4u_gg_:not(.__disabled_o7h4u_gg_)~.___SControls_o7h4u_gg_{visibility:visible}.___SValue_o7h4u_gg_:focus~.___SControls_o7h4u_gg_{visibility:visible}.___SControls_o7h4u_gg_{display:flex;flex-flow:column;justify-content:center;height:100%;visibility:hidden;box-sizing:border-box}.___SControls_o7h4u_gg_.__showControls_o7h4u_gg_{visibility:visible}.___SDown_o7h4u_gg_,.___SUp_o7h4u_gg_{padding:0;width:16px;color:#a9abb6;box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}.___SDown_o7h4u_gg_:focus,.___SUp_o7h4u_gg_:focus{outline:none}.___SDown_o7h4u_gg_:hover,.___SUp_o7h4u_gg_:hover{color:#484a54}.___SUp_o7h4u_gg_{padding-bottom:1px}.___SDown_o7h4u_gg_{padding-top:1px}.___SValue_o7h4u_gg_::-webkit-inner-spin-button,.___SValue_o7h4u_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_o7h4u_gg_._type_number_o7h4u_gg_{-moz-appearance:textfield}.___SValue_o7h4u_gg_.__disabled_o7h4u_gg_~.___SControls_o7h4u_gg_{opacity:0.3;cursor:default;pointer-events:none}"
|
|
52
52
|
/*__inner_css_end__*/
|
|
53
|
-
, "
|
|
53
|
+
, "o7h4u_gg_")
|
|
54
54
|
/*__reshadow_css_end__*/
|
|
55
55
|
, {
|
|
56
|
-
"__SInputNumber": "
|
|
57
|
-
"__SValue": "
|
|
58
|
-
"_disabled": "
|
|
59
|
-
"__SControls": "
|
|
60
|
-
"_showControls": "
|
|
61
|
-
"__SDown": "
|
|
62
|
-
"__SUp": "
|
|
63
|
-
"_type_number": "
|
|
56
|
+
"__SInputNumber": "___SInputNumber_o7h4u_gg_",
|
|
57
|
+
"__SValue": "___SValue_o7h4u_gg_",
|
|
58
|
+
"_disabled": "__disabled_o7h4u_gg_",
|
|
59
|
+
"__SControls": "___SControls_o7h4u_gg_",
|
|
60
|
+
"_showControls": "__showControls_o7h4u_gg_",
|
|
61
|
+
"__SDown": "___SDown_o7h4u_gg_",
|
|
62
|
+
"__SUp": "___SUp_o7h4u_gg_",
|
|
63
|
+
"_type_number": "_type_number_o7h4u_gg_"
|
|
64
64
|
});
|
|
65
65
|
|
|
66
66
|
function parseValueWithMinMax(value) {
|
|
@@ -165,6 +165,7 @@ var Value = /*#__PURE__*/function (_Component2) {
|
|
|
165
165
|
min = _this2$asProps.min,
|
|
166
166
|
max = _this2$asProps.max,
|
|
167
167
|
step = _this2$asProps.step;
|
|
168
|
+
var roundCoefficient = step < 1 ? step.toString().split('.')[1].length : 1;
|
|
168
169
|
|
|
169
170
|
if (Number.isNaN(e.currentTarget.valueAsNumber)) {
|
|
170
171
|
e.currentTarget.value = '';
|
|
@@ -183,7 +184,9 @@ var Value = /*#__PURE__*/function (_Component2) {
|
|
|
183
184
|
}
|
|
184
185
|
}
|
|
185
186
|
|
|
186
|
-
|
|
187
|
+
var numberValueRounded = Number(numberValue.toFixed(roundCoefficient));
|
|
188
|
+
|
|
189
|
+
_this2.handlers.value(String(numberValueRounded), e);
|
|
187
190
|
}
|
|
188
191
|
});
|
|
189
192
|
return _this2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/InputNumber.jsx"],"names":["parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","IconUp","BUTTONS","up","IconDown","down","InputNumber","React","createRef","e","inputRef","current","stepUp","inputHandlersRef","stepDown","ref","$inputHandlers","size","asProps","inc","handlerInc","dec","handlerDec","SInputNumber","Input","style","Component","Value","step","isNaN","currentTarget","valueAsNumber","handlers","numberValue","parseFloat","r","roundRemainder","abs","
|
|
1
|
+
{"version":3,"sources":["../../src/InputNumber.jsx"],"names":["parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","IconUp","BUTTONS","up","IconDown","down","InputNumber","React","createRef","e","inputRef","current","stepUp","inputHandlersRef","stepDown","ref","$inputHandlers","size","asProps","inc","handlerInc","dec","handlerDec","SInputNumber","Input","style","Component","Value","step","roundCoefficient","toString","split","length","isNaN","currentTarget","valueAsNumber","handlers","numberValue","parseFloat","r","roundRemainder","abs","numberValueRounded","toFixed","String","countDecimals","floor","toPrecision","SValue","styles","handleValidation","defaultValue","Controls","props","Children","SControls","Addon","SUp","SDown"],"mappings":"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","sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Input from '@semcore/input';\nimport BUTTONS from './buttons';\n\nimport style from './style/input-number.shadow.css';\n\nfunction parseValueWithMinMax(value, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(max, value));\n}\n\nconst IconUp = () => BUTTONS.up;\nconst IconDown = () => BUTTONS.down;\n\nclass InputNumber extends Component {\n static displayName = 'InputNumber';\n static style = style;\n static defaultProps = {\n size: 'm',\n };\n\n inputRef = React.createRef();\n inputHandlersRef = React.createRef();\n\n handlerInc = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepUp && this.inputRef.current?.stepUp();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n handlerDec = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepDown && this.inputRef.current?.stepDown();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n getValueProps() {\n return {\n ref: this.inputRef,\n $inputHandlers: this.inputHandlersRef,\n };\n }\n\n getControlsProps() {\n const { size } = this.asProps;\n return {\n size,\n inc: this.handlerInc,\n dec: this.handlerDec,\n };\n }\n\n render() {\n const SInputNumber = Root;\n return sstyled(this.asProps.style)(<SInputNumber render={Input} />);\n }\n}\n\nclass Value extends Component {\n static defaultProps = {\n defaultValue: '',\n step: 1,\n };\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n roundRemainder(value, step) {\n const countDecimals = Math.floor(step) === step ? 0 : step.toString().split('.')[1].length || 0;\n return countDecimals === 0\n ? Number.parseFloat(value)\n : Number.parseFloat(value).toPrecision(countDecimals);\n }\n\n handleValidation = (e) => {\n const { value, min, max, step } = this.asProps;\n const roundCoefficient = step < 1 ? step.toString().split('.')[1].length : 1;\n if (Number.isNaN(e.currentTarget.valueAsNumber)) {\n e.currentTarget.value = '';\n this.handlers.value('', e);\n } else {\n let numberValue = parseValueWithMinMax(Number.parseFloat(value), min, max);\n const r = this.roundRemainder(numberValue % step, step);\n if (r !== 0) {\n if (r >= step / 2) {\n numberValue += step - r;\n } else if (Math.abs(r) < step) {\n numberValue -= r;\n }\n }\n const numberValueRounded = Number(numberValue.toFixed(roundCoefficient));\n this.handlers.value(String(numberValueRounded), e);\n }\n };\n\n render() {\n const SValue = Root;\n const { styles, $inputHandlers } = this.asProps;\n\n // 🐒 не делайте так\n $inputHandlers.current = this.handlers;\n\n return sstyled(styles)(\n <SValue\n render={Input.Value}\n type=\"number\"\n autoComplete=\"off\"\n onBlur={this.handleValidation}\n onInvalid={this.handleValidation}\n />,\n );\n }\n}\n\nfunction Controls(props) {\n const { Children, inc, dec, size, styles } = props;\n const SControls = Root;\n const SUp = 'button';\n const SDown = 'button';\n\n return sstyled(styles)(\n <SControls render={Input.Addon}>\n <SUp onClick={inc} tabIndex={-1} type=\"button\" size={size} aria-label=\"Increment number\">\n <IconUp />\n </SUp>\n <SDown onClick={dec} tabIndex={-1} type=\"button\" size={size} aria-label=\"Decrement number\">\n <IconDown />\n </SDown>\n <Children />\n </SControls>,\n );\n}\n\nexport default createComponent(InputNumber, {\n Value,\n Controls,\n Addon: Input.Addon,\n});\n"],"file":"InputNumber.js"}
|
package/lib/es6/InputNumber.js
CHANGED
|
@@ -28,19 +28,19 @@ var style = (
|
|
|
28
28
|
/*__reshadow_css_start__*/
|
|
29
29
|
_sstyled.insert(
|
|
30
30
|
/*__inner_css_start__*/
|
|
31
|
-
".
|
|
31
|
+
".___SInputNumber_o7h4u_gg_:hover .___SValue_o7h4u_gg_:not(.__disabled_o7h4u_gg_)~.___SControls_o7h4u_gg_{visibility:visible}.___SValue_o7h4u_gg_:focus~.___SControls_o7h4u_gg_{visibility:visible}.___SControls_o7h4u_gg_{display:flex;flex-flow:column;justify-content:center;height:100%;visibility:hidden;box-sizing:border-box}.___SControls_o7h4u_gg_.__showControls_o7h4u_gg_{visibility:visible}.___SDown_o7h4u_gg_,.___SUp_o7h4u_gg_{padding:0;width:16px;color:#a9abb6;box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}.___SDown_o7h4u_gg_:focus,.___SUp_o7h4u_gg_:focus{outline:none}.___SDown_o7h4u_gg_:hover,.___SUp_o7h4u_gg_:hover{color:#484a54}.___SUp_o7h4u_gg_{padding-bottom:1px}.___SDown_o7h4u_gg_{padding-top:1px}.___SValue_o7h4u_gg_::-webkit-inner-spin-button,.___SValue_o7h4u_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_o7h4u_gg_._type_number_o7h4u_gg_{-moz-appearance:textfield}.___SValue_o7h4u_gg_.__disabled_o7h4u_gg_~.___SControls_o7h4u_gg_{opacity:0.3;cursor:default;pointer-events:none}"
|
|
32
32
|
/*__inner_css_end__*/
|
|
33
|
-
, "
|
|
33
|
+
, "o7h4u_gg_")
|
|
34
34
|
/*__reshadow_css_end__*/
|
|
35
35
|
, {
|
|
36
|
-
"__SInputNumber": "
|
|
37
|
-
"__SValue": "
|
|
38
|
-
"_disabled": "
|
|
39
|
-
"__SControls": "
|
|
40
|
-
"_showControls": "
|
|
41
|
-
"__SDown": "
|
|
42
|
-
"__SUp": "
|
|
43
|
-
"_type_number": "
|
|
36
|
+
"__SInputNumber": "___SInputNumber_o7h4u_gg_",
|
|
37
|
+
"__SValue": "___SValue_o7h4u_gg_",
|
|
38
|
+
"_disabled": "__disabled_o7h4u_gg_",
|
|
39
|
+
"__SControls": "___SControls_o7h4u_gg_",
|
|
40
|
+
"_showControls": "__showControls_o7h4u_gg_",
|
|
41
|
+
"__SDown": "___SDown_o7h4u_gg_",
|
|
42
|
+
"__SUp": "___SUp_o7h4u_gg_",
|
|
43
|
+
"_type_number": "_type_number_o7h4u_gg_"
|
|
44
44
|
});
|
|
45
45
|
|
|
46
46
|
function parseValueWithMinMax(value) {
|
|
@@ -154,6 +154,7 @@ var Value = /*#__PURE__*/function (_Component2) {
|
|
|
154
154
|
min = _this2$asProps.min,
|
|
155
155
|
max = _this2$asProps.max,
|
|
156
156
|
step = _this2$asProps.step;
|
|
157
|
+
var roundCoefficient = step < 1 ? step.toString().split('.')[1].length : 1;
|
|
157
158
|
|
|
158
159
|
if (Number.isNaN(e.currentTarget.valueAsNumber)) {
|
|
159
160
|
e.currentTarget.value = '';
|
|
@@ -172,7 +173,9 @@ var Value = /*#__PURE__*/function (_Component2) {
|
|
|
172
173
|
}
|
|
173
174
|
}
|
|
174
175
|
|
|
175
|
-
|
|
176
|
+
var numberValueRounded = Number(numberValue.toFixed(roundCoefficient));
|
|
177
|
+
|
|
178
|
+
_this2.handlers.value(String(numberValueRounded), e);
|
|
176
179
|
}
|
|
177
180
|
});
|
|
178
181
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/InputNumber.jsx"],"names":["React","createComponent","Component","sstyled","Root","Input","BUTTONS","parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","IconUp","up","IconDown","down","InputNumber","createRef","e","inputRef","current","stepUp","inputHandlersRef","stepDown","ref","$inputHandlers","size","asProps","inc","handlerInc","dec","handlerDec","SInputNumber","style","Value","step","isNaN","currentTarget","valueAsNumber","handlers","numberValue","parseFloat","r","roundRemainder","abs","
|
|
1
|
+
{"version":3,"sources":["../../src/InputNumber.jsx"],"names":["React","createComponent","Component","sstyled","Root","Input","BUTTONS","parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","IconUp","up","IconDown","down","InputNumber","createRef","e","inputRef","current","stepUp","inputHandlersRef","stepDown","ref","$inputHandlers","size","asProps","inc","handlerInc","dec","handlerDec","SInputNumber","style","Value","step","roundCoefficient","toString","split","length","isNaN","currentTarget","valueAsNumber","handlers","numberValue","parseFloat","r","roundRemainder","abs","numberValueRounded","toFixed","String","countDecimals","floor","toPrecision","SValue","styles","handleValidation","defaultValue","Controls","props","Children","SControls","Addon","SUp","SDown"],"mappings":"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","sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Input from '@semcore/input';\nimport BUTTONS from './buttons';\n\nimport style from './style/input-number.shadow.css';\n\nfunction parseValueWithMinMax(value, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(max, value));\n}\n\nconst IconUp = () => BUTTONS.up;\nconst IconDown = () => BUTTONS.down;\n\nclass InputNumber extends Component {\n static displayName = 'InputNumber';\n static style = style;\n static defaultProps = {\n size: 'm',\n };\n\n inputRef = React.createRef();\n inputHandlersRef = React.createRef();\n\n handlerInc = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepUp && this.inputRef.current?.stepUp();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n handlerDec = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepDown && this.inputRef.current?.stepDown();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n getValueProps() {\n return {\n ref: this.inputRef,\n $inputHandlers: this.inputHandlersRef,\n };\n }\n\n getControlsProps() {\n const { size } = this.asProps;\n return {\n size,\n inc: this.handlerInc,\n dec: this.handlerDec,\n };\n }\n\n render() {\n const SInputNumber = Root;\n return sstyled(this.asProps.style)(<SInputNumber render={Input} />);\n }\n}\n\nclass Value extends Component {\n static defaultProps = {\n defaultValue: '',\n step: 1,\n };\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n roundRemainder(value, step) {\n const countDecimals = Math.floor(step) === step ? 0 : step.toString().split('.')[1].length || 0;\n return countDecimals === 0\n ? Number.parseFloat(value)\n : Number.parseFloat(value).toPrecision(countDecimals);\n }\n\n handleValidation = (e) => {\n const { value, min, max, step } = this.asProps;\n const roundCoefficient = step < 1 ? step.toString().split('.')[1].length : 1;\n if (Number.isNaN(e.currentTarget.valueAsNumber)) {\n e.currentTarget.value = '';\n this.handlers.value('', e);\n } else {\n let numberValue = parseValueWithMinMax(Number.parseFloat(value), min, max);\n const r = this.roundRemainder(numberValue % step, step);\n if (r !== 0) {\n if (r >= step / 2) {\n numberValue += step - r;\n } else if (Math.abs(r) < step) {\n numberValue -= r;\n }\n }\n const numberValueRounded = Number(numberValue.toFixed(roundCoefficient));\n this.handlers.value(String(numberValueRounded), e);\n }\n };\n\n render() {\n const SValue = Root;\n const { styles, $inputHandlers } = this.asProps;\n\n // 🐒 не делайте так\n $inputHandlers.current = this.handlers;\n\n return sstyled(styles)(\n <SValue\n render={Input.Value}\n type=\"number\"\n autoComplete=\"off\"\n onBlur={this.handleValidation}\n onInvalid={this.handleValidation}\n />,\n );\n }\n}\n\nfunction Controls(props) {\n const { Children, inc, dec, size, styles } = props;\n const SControls = Root;\n const SUp = 'button';\n const SDown = 'button';\n\n return sstyled(styles)(\n <SControls render={Input.Addon}>\n <SUp onClick={inc} tabIndex={-1} type=\"button\" size={size} aria-label=\"Increment number\">\n <IconUp />\n </SUp>\n <SDown onClick={dec} tabIndex={-1} type=\"button\" size={size} aria-label=\"Decrement number\">\n <IconDown />\n </SDown>\n <Children />\n </SControls>,\n );\n}\n\nexport default createComponent(InputNumber, {\n Value,\n Controls,\n Addon: Input.Addon,\n});\n"],"file":"InputNumber.js"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semcore/input-number",
|
|
3
3
|
"description": "SEMRush InputNumber Component",
|
|
4
|
-
"version": "4.0.
|
|
4
|
+
"version": "4.0.9",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/es6/index.js",
|
|
7
7
|
"typings": "lib/types/index.d.ts",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"test": "jest"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@semcore/
|
|
17
|
-
"@semcore/
|
|
16
|
+
"@semcore/input": "^3.0.0",
|
|
17
|
+
"@semcore/utils": "^3.15"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
20
|
"@semcore/core": "^1.11",
|
package/src/InputNumber.jsx
CHANGED
|
@@ -77,6 +77,7 @@ class Value extends Component {
|
|
|
77
77
|
|
|
78
78
|
handleValidation = (e) => {
|
|
79
79
|
const { value, min, max, step } = this.asProps;
|
|
80
|
+
const roundCoefficient = step < 1 ? step.toString().split('.')[1].length : 1;
|
|
80
81
|
if (Number.isNaN(e.currentTarget.valueAsNumber)) {
|
|
81
82
|
e.currentTarget.value = '';
|
|
82
83
|
this.handlers.value('', e);
|
|
@@ -90,7 +91,8 @@ class Value extends Component {
|
|
|
90
91
|
numberValue -= r;
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
|
-
|
|
94
|
+
const numberValueRounded = Number(numberValue.toFixed(roundCoefficient));
|
|
95
|
+
this.handlers.value(String(numberValueRounded), e);
|
|
94
96
|
}
|
|
95
97
|
};
|
|
96
98
|
|