@semcore/input-number 4.0.14 → 4.0.15

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 CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [4.0.15] - 2022-08-25
6
+
7
+ ### Added
8
+
9
+ - Added screen reader notification of input value and aria attributes for better a11y.
10
+
5
11
  ## [4.0.14] - 2022-08-23
6
12
 
7
13
  ### Changed
@@ -48,19 +48,20 @@ var style = (
48
48
  /*__reshadow_css_start__*/
49
49
  _core.sstyled.insert(
50
50
  /*__inner_css_start__*/
51
- ".___SInputNumber_1hp6d_gg_:hover .___SValue_1hp6d_gg_:not(.__disabled_1hp6d_gg_)~.___SControls_1hp6d_gg_{visibility:visible}.___SValue_1hp6d_gg_:focus~.___SControls_1hp6d_gg_{visibility:visible}.___SControls_1hp6d_gg_{display:flex;flex-flow:column;justify-content:center;height:100%;visibility:hidden;box-sizing:border-box}.___SControls_1hp6d_gg_.__showControls_1hp6d_gg_{visibility:visible}.___SDown_1hp6d_gg_,.___SUp_1hp6d_gg_{padding:0;width:16px;color:#a9abb6;box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}.___SDown_1hp6d_gg_:focus,.___SUp_1hp6d_gg_:focus{outline:none}.___SDown_1hp6d_gg_:hover,.___SUp_1hp6d_gg_:hover{color:#484a54}.___SUp_1hp6d_gg_{padding-bottom:1px}.___SDown_1hp6d_gg_{padding-top:1px}.___SValue_1hp6d_gg_::-webkit-inner-spin-button,.___SValue_1hp6d_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_1hp6d_gg_._type_number_1hp6d_gg_{-moz-appearance:textfield}.___SValue_1hp6d_gg_.__disabled_1hp6d_gg_~.___SControls_1hp6d_gg_{opacity:0.3;cursor:default;pointer-events:none}"
51
+ ".___SInputNumber_1ntl1_gg_:hover .___SValue_1ntl1_gg_:not(.__disabled_1ntl1_gg_)~.___SControls_1ntl1_gg_{visibility:visible}.___SValue_1ntl1_gg_:focus~.___SControls_1ntl1_gg_{visibility:visible}.___SControls_1ntl1_gg_{display:flex;flex-flow:column;justify-content:center;height:100%;visibility:hidden;box-sizing:border-box}.___SControls_1ntl1_gg_.__showControls_1ntl1_gg_{visibility:visible}.___SDown_1ntl1_gg_,.___SUp_1ntl1_gg_{padding:0;width:16px;color:#a9abb6;box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}.___SDown_1ntl1_gg_:focus,.___SUp_1ntl1_gg_:focus{outline:none}.___SDown_1ntl1_gg_:hover,.___SUp_1ntl1_gg_:hover{color:#484a54}.___SUp_1ntl1_gg_{padding-bottom:1px}.___SDown_1ntl1_gg_{padding-top:1px}.___SValue_1ntl1_gg_::-webkit-inner-spin-button,.___SValue_1ntl1_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_1ntl1_gg_._type_number_1ntl1_gg_{-moz-appearance:textfield}.___SValue_1ntl1_gg_.__disabled_1ntl1_gg_~.___SControls_1ntl1_gg_{opacity:0.3;cursor:default;pointer-events:none}.___SValueHidden_1ntl1_gg_{position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden}"
52
52
  /*__inner_css_end__*/
53
- , "1hp6d_gg_")
53
+ , "1ntl1_gg_")
54
54
  /*__reshadow_css_end__*/
55
55
  , {
56
- "__SInputNumber": "___SInputNumber_1hp6d_gg_",
57
- "__SValue": "___SValue_1hp6d_gg_",
58
- "_disabled": "__disabled_1hp6d_gg_",
59
- "__SControls": "___SControls_1hp6d_gg_",
60
- "_showControls": "__showControls_1hp6d_gg_",
61
- "__SDown": "___SDown_1hp6d_gg_",
62
- "__SUp": "___SUp_1hp6d_gg_",
63
- "_type_number": "_type_number_1hp6d_gg_"
56
+ "__SInputNumber": "___SInputNumber_1ntl1_gg_",
57
+ "__SValue": "___SValue_1ntl1_gg_",
58
+ "_disabled": "__disabled_1ntl1_gg_",
59
+ "__SControls": "___SControls_1ntl1_gg_",
60
+ "_showControls": "__showControls_1ntl1_gg_",
61
+ "__SDown": "___SDown_1ntl1_gg_",
62
+ "__SUp": "___SUp_1ntl1_gg_",
63
+ "_type_number": "_type_number_1ntl1_gg_",
64
+ "__SValueHidden": "___SValueHidden_1ntl1_gg_"
64
65
  });
65
66
 
66
67
  function parseValueWithMinMax(value) {
@@ -216,17 +217,27 @@ var Value = /*#__PURE__*/function (_Component2) {
216
217
  _ref5;
217
218
 
218
219
  var SValue = _input["default"].Value;
220
+ var SValueHidden = 'div';
219
221
  var _this$asProps = this.asProps,
220
222
  styles = _this$asProps.styles,
221
- $inputHandlers = _this$asProps.$inputHandlers; // 🐒 не делайте так
223
+ $inputHandlers = _this$asProps.$inputHandlers,
224
+ value = _this$asProps.value,
225
+ min = _this$asProps.min,
226
+ max = _this$asProps.max; // 🐒 не делайте так
222
227
 
223
228
  $inputHandlers.current = this.handlers;
224
- return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SValue, _ref5.cn("SValue", _objectSpread({}, (0, _core.assignProps)({
229
+ return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(SValue, _ref5.cn("SValue", _objectSpread({}, (0, _core.assignProps)({
225
230
  "type": "number",
226
231
  "autoComplete": "off",
227
232
  "onBlur": this.handleValidation,
228
- "onInvalid": this.handleValidation
229
- }, _ref2))));
233
+ "onInvalid": this.handleValidation,
234
+ "aria-valuenow": value,
235
+ "aria-valuemin": min,
236
+ "aria-valuemax": max
237
+ }, _ref2)))), /*#__PURE__*/_react["default"].createElement(SValueHidden, _ref5.cn("SValueHidden", {
238
+ "aria-live": "polite",
239
+ "aria-atomic": true
240
+ }), value));
230
241
  }
231
242
  }]);
232
243
  return Value;
@@ -1 +1 @@
1
- {"version":3,"file":"InputNumber.js","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","sstyled","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","createComponent"],"sources":["../../src/InputNumber.jsx"],"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"],"mappings":"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"}
1
+ {"version":3,"file":"InputNumber.js","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","sstyled","style","Component","Value","step","roundCoefficient","toString","split","length","isNaN","currentTarget","valueAsNumber","handlers","numberValue","parseFloat","r","roundRemainder","abs","numberValueRounded","toFixed","String","countDecimals","floor","toPrecision","SValue","SValueHidden","styles","handleValidation","defaultValue","Controls","props","Children","SControls","Addon","SUp","SDown","createComponent"],"sources":["../../src/InputNumber.jsx"],"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 SValueHidden = 'div';\n const { styles, $inputHandlers, value, min, max } = this.asProps;\n\n // 🐒 не делайте так\n $inputHandlers.current = this.handlers;\n\n return sstyled(styles)(\n <>\n <SValue\n render={Input.Value}\n type=\"number\"\n autoComplete=\"off\"\n onBlur={this.handleValidation}\n onInvalid={this.handleValidation}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n />\n {/* the next hidden div is necessary for the screen reader to report the value \n in the input, because after validation the value can change to the `min` or `max` \n if entered less than `min` or more than `max` */}\n <SValueHidden aria-live=\"polite\" aria-atomic={true}>\n {value}\n </SValueHidden>\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"],"mappings":"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"}
@@ -69,3 +69,12 @@ SValue[disabled] ~ SControls {
69
69
  cursor: default;
70
70
  pointer-events: none;
71
71
  }
72
+
73
+ SValueHidden {
74
+ position: absolute;
75
+ top: 0;
76
+ width: 1px;
77
+ height: 1px;
78
+ padding: 0;
79
+ overflow: hidden;
80
+ }
@@ -28,19 +28,20 @@ var style = (
28
28
  /*__reshadow_css_start__*/
29
29
  _sstyled.insert(
30
30
  /*__inner_css_start__*/
31
- ".___SInputNumber_1hp6d_gg_:hover .___SValue_1hp6d_gg_:not(.__disabled_1hp6d_gg_)~.___SControls_1hp6d_gg_{visibility:visible}.___SValue_1hp6d_gg_:focus~.___SControls_1hp6d_gg_{visibility:visible}.___SControls_1hp6d_gg_{display:flex;flex-flow:column;justify-content:center;height:100%;visibility:hidden;box-sizing:border-box}.___SControls_1hp6d_gg_.__showControls_1hp6d_gg_{visibility:visible}.___SDown_1hp6d_gg_,.___SUp_1hp6d_gg_{padding:0;width:16px;color:#a9abb6;box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}.___SDown_1hp6d_gg_:focus,.___SUp_1hp6d_gg_:focus{outline:none}.___SDown_1hp6d_gg_:hover,.___SUp_1hp6d_gg_:hover{color:#484a54}.___SUp_1hp6d_gg_{padding-bottom:1px}.___SDown_1hp6d_gg_{padding-top:1px}.___SValue_1hp6d_gg_::-webkit-inner-spin-button,.___SValue_1hp6d_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_1hp6d_gg_._type_number_1hp6d_gg_{-moz-appearance:textfield}.___SValue_1hp6d_gg_.__disabled_1hp6d_gg_~.___SControls_1hp6d_gg_{opacity:0.3;cursor:default;pointer-events:none}"
31
+ ".___SInputNumber_1ntl1_gg_:hover .___SValue_1ntl1_gg_:not(.__disabled_1ntl1_gg_)~.___SControls_1ntl1_gg_{visibility:visible}.___SValue_1ntl1_gg_:focus~.___SControls_1ntl1_gg_{visibility:visible}.___SControls_1ntl1_gg_{display:flex;flex-flow:column;justify-content:center;height:100%;visibility:hidden;box-sizing:border-box}.___SControls_1ntl1_gg_.__showControls_1ntl1_gg_{visibility:visible}.___SDown_1ntl1_gg_,.___SUp_1ntl1_gg_{padding:0;width:16px;color:#a9abb6;box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}.___SDown_1ntl1_gg_:focus,.___SUp_1ntl1_gg_:focus{outline:none}.___SDown_1ntl1_gg_:hover,.___SUp_1ntl1_gg_:hover{color:#484a54}.___SUp_1ntl1_gg_{padding-bottom:1px}.___SDown_1ntl1_gg_{padding-top:1px}.___SValue_1ntl1_gg_::-webkit-inner-spin-button,.___SValue_1ntl1_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_1ntl1_gg_._type_number_1ntl1_gg_{-moz-appearance:textfield}.___SValue_1ntl1_gg_.__disabled_1ntl1_gg_~.___SControls_1ntl1_gg_{opacity:0.3;cursor:default;pointer-events:none}.___SValueHidden_1ntl1_gg_{position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden}"
32
32
  /*__inner_css_end__*/
33
- , "1hp6d_gg_")
33
+ , "1ntl1_gg_")
34
34
  /*__reshadow_css_end__*/
35
35
  , {
36
- "__SInputNumber": "___SInputNumber_1hp6d_gg_",
37
- "__SValue": "___SValue_1hp6d_gg_",
38
- "_disabled": "__disabled_1hp6d_gg_",
39
- "__SControls": "___SControls_1hp6d_gg_",
40
- "_showControls": "__showControls_1hp6d_gg_",
41
- "__SDown": "___SDown_1hp6d_gg_",
42
- "__SUp": "___SUp_1hp6d_gg_",
43
- "_type_number": "_type_number_1hp6d_gg_"
36
+ "__SInputNumber": "___SInputNumber_1ntl1_gg_",
37
+ "__SValue": "___SValue_1ntl1_gg_",
38
+ "_disabled": "__disabled_1ntl1_gg_",
39
+ "__SControls": "___SControls_1ntl1_gg_",
40
+ "_showControls": "__showControls_1ntl1_gg_",
41
+ "__SDown": "___SDown_1ntl1_gg_",
42
+ "__SUp": "___SUp_1ntl1_gg_",
43
+ "_type_number": "_type_number_1ntl1_gg_",
44
+ "__SValueHidden": "___SValueHidden_1ntl1_gg_"
44
45
  });
45
46
 
46
47
  function parseValueWithMinMax(value) {
@@ -206,17 +207,27 @@ var Value = /*#__PURE__*/function (_Component2) {
206
207
  _ref5;
207
208
 
208
209
  var SValue = Input.Value;
210
+ var SValueHidden = 'div';
209
211
  var _this$asProps = this.asProps,
210
212
  styles = _this$asProps.styles,
211
- $inputHandlers = _this$asProps.$inputHandlers; // 🐒 не делайте так
213
+ $inputHandlers = _this$asProps.$inputHandlers,
214
+ value = _this$asProps.value,
215
+ min = _this$asProps.min,
216
+ max = _this$asProps.max; // 🐒 не делайте так
212
217
 
213
218
  $inputHandlers.current = this.handlers;
214
- return _ref5 = sstyled(styles), /*#__PURE__*/React.createElement(SValue, _ref5.cn("SValue", _objectSpread({}, _assignProps2({
219
+ return _ref5 = sstyled(styles), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SValue, _ref5.cn("SValue", _objectSpread({}, _assignProps2({
215
220
  "type": "number",
216
221
  "autoComplete": "off",
217
222
  "onBlur": this.handleValidation,
218
- "onInvalid": this.handleValidation
219
- }, _ref2))));
223
+ "onInvalid": this.handleValidation,
224
+ "aria-valuenow": value,
225
+ "aria-valuemin": min,
226
+ "aria-valuemax": max
227
+ }, _ref2)))), /*#__PURE__*/React.createElement(SValueHidden, _ref5.cn("SValueHidden", {
228
+ "aria-live": "polite",
229
+ "aria-atomic": true
230
+ }), value));
220
231
  }
221
232
  }]);
222
233
 
@@ -1 +1 @@
1
- {"version":3,"file":"InputNumber.js","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"],"sources":["../../src/InputNumber.jsx"],"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"],"mappings":"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"}
1
+ {"version":3,"file":"InputNumber.js","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","SValueHidden","styles","handleValidation","defaultValue","Controls","props","Children","SControls","Addon","SUp","SDown"],"sources":["../../src/InputNumber.jsx"],"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 SValueHidden = 'div';\n const { styles, $inputHandlers, value, min, max } = this.asProps;\n\n // 🐒 не делайте так\n $inputHandlers.current = this.handlers;\n\n return sstyled(styles)(\n <>\n <SValue\n render={Input.Value}\n type=\"number\"\n autoComplete=\"off\"\n onBlur={this.handleValidation}\n onInvalid={this.handleValidation}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n />\n {/* the next hidden div is necessary for the screen reader to report the value \n in the input, because after validation the value can change to the `min` or `max` \n if entered less than `min` or more than `max` */}\n <SValueHidden aria-live=\"polite\" aria-atomic={true}>\n {value}\n </SValueHidden>\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"],"mappings":"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"}
@@ -69,3 +69,12 @@ SValue[disabled] ~ SControls {
69
69
  cursor: default;
70
70
  pointer-events: none;
71
71
  }
72
+
73
+ SValueHidden {
74
+ position: absolute;
75
+ top: 0;
76
+ width: 1px;
77
+ height: 1px;
78
+ padding: 0;
79
+ overflow: hidden;
80
+ }
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.14",
4
+ "version": "4.0.15",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",