@semcore/input-number 17.2.2 → 17.3.0-prerelease.11

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,17 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [17.3.0] - 2026-09-10
6
+
7
+ ### Added
8
+
9
+ - `Number` as possible type for value.
10
+
11
+ ### Fixed
12
+
13
+ - Display the value corresponding to the current one after backspace for
14
+ negative numbers.
15
+
5
16
  ## [17.2.2] - 2026-07-10
6
17
 
7
18
  ### Fixed
@@ -6,8 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  exports.parseValueWithMinMax = parseValueWithMinMax;
9
+ var _applyDecs2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecs2311"));
10
+ var _identity2 = _interopRequireDefault(require("@babel/runtime/helpers/identity"));
9
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
12
  var _core = require("@semcore/core");
13
+ var _propsObserver = _interopRequireDefault(require("@semcore/core/lib/decorators/propsObserver"));
11
14
  var _assignProps4 = require("@semcore/core/lib/utils/assignProps");
12
15
  var _i18nEnhance = _interopRequireDefault(require("@semcore/core/lib/utils/enhances/i18nEnhance"));
13
16
  var _ref7 = require("@semcore/core/lib/utils/ref");
@@ -15,18 +18,20 @@ var _input = _interopRequireDefault(require("@semcore/input"));
15
18
  var _react = _interopRequireDefault(require("react"));
16
19
  var _buttons = require("./buttons");
17
20
  var _intergalacticDynamicLocales = require("./translations/__intergalactic-dynamic-locales");
21
+ var _Class, _Value3;
22
+ let _initClass, _Value2;
18
23
  /*!__reshadow-styles__:"./style/input-number.shadow.css"*/
19
- const style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___SValue_1i69c_gg_:focus~.___SControls_1i69c_gg_{display:flex}.___SControls_1i69c_gg_{display:none;flex-flow:column;justify-content:center;height:100%;box-sizing:border-box}.___SControls_1i69c_gg_.__showControls_1i69c_gg_{display:flex}.___SDown_1i69c_gg_,.___SUp_1i69c_gg_{padding:0;width:16px;color:var(--intergalactic-icon-secondary-neutral,rgba(0,5,2,.385));box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}@media (color-gamut:p3){.___SDown_1i69c_gg_,.___SUp_1i69c_gg_{color:var(--intergalactic-icon-secondary-neutral,oklch(.104 .023 162.3/.385))}}.___SDown_1i69c_gg_:focus,.___SUp_1i69c_gg_:focus{outline:none}@media (hover:hover){.___SDown_1i69c_gg_:hover,.___SUp_1i69c_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,#0005026e)}@media (color-gamut:p3){.___SDown_1i69c_gg_:hover,.___SUp_1i69c_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,oklch(.1 .023 159.1/.433))}}}.___SUp_1i69c_gg_{padding-bottom:1px}.___SDown_1i69c_gg_{padding-top:1px}.___SValue_1i69c_gg_::-webkit-inner-spin-button,.___SValue_1i69c_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_1i69c_gg_._type_number_1i69c_gg_{-moz-appearance:textfield}.___SValue_1i69c_gg_.__disabled_1i69c_gg_~.___SControls_1i69c_gg_{opacity:var(--intergalactic-disabled-opacity,.4);cursor:default;pointer-events:none}.___SValueHidden_1i69c_gg_{position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden}", /*__inner_css_end__*/"1i69c_gg_"),
24
+ const style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___SValue_9udw0_gg_:focus~.___SControls_9udw0_gg_{display:flex}.___SControls_9udw0_gg_{display:none;flex-flow:column;justify-content:center;height:100%;box-sizing:border-box}.___SControls_9udw0_gg_.__showControls_9udw0_gg_{display:flex}.___SDown_9udw0_gg_,.___SUp_9udw0_gg_{padding:0;width:16px;color:var(--intergalactic-icon-secondary-neutral,rgba(0,5,2,.385));box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}@media (color-gamut:p3){.___SDown_9udw0_gg_,.___SUp_9udw0_gg_{color:var(--intergalactic-icon-secondary-neutral,oklch(.104 .023 162.3/.385))}}.___SDown_9udw0_gg_:focus,.___SUp_9udw0_gg_:focus{outline:none}@media (hover:hover){.___SDown_9udw0_gg_:hover,.___SUp_9udw0_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,#0005026e)}@media (color-gamut:p3){.___SDown_9udw0_gg_:hover,.___SUp_9udw0_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,oklch(.1 .023 159.1/.433))}}}.___SUp_9udw0_gg_{padding-bottom:1px}.___SDown_9udw0_gg_{padding-top:1px}.___SValue_9udw0_gg_::-webkit-inner-spin-button,.___SValue_9udw0_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_9udw0_gg_._type_number_9udw0_gg_{-moz-appearance:textfield}.___SValue_9udw0_gg_.__disabled_9udw0_gg_~.___SControls_9udw0_gg_{opacity:var(--intergalactic-disabled-opacity,.4);cursor:default;pointer-events:none}.___SValueHidden_9udw0_gg_{position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden}", /*__inner_css_end__*/"9udw0_gg_"),
20
25
  /*__reshadow_css_end__*/
21
26
  {
22
- "__SValue": "___SValue_1i69c_gg_",
23
- "__SControls": "___SControls_1i69c_gg_",
24
- "_showControls": "__showControls_1i69c_gg_",
25
- "__SUp": "___SUp_1i69c_gg_",
26
- "__SDown": "___SDown_1i69c_gg_",
27
- "_disabled": "__disabled_1i69c_gg_",
28
- "__SValueHidden": "___SValueHidden_1i69c_gg_",
29
- "_type_number": "_type_number_1i69c_gg_"
27
+ "__SValue": "___SValue_9udw0_gg_",
28
+ "__SControls": "___SControls_9udw0_gg_",
29
+ "_showControls": "__showControls_9udw0_gg_",
30
+ "__SUp": "___SUp_9udw0_gg_",
31
+ "__SDown": "___SDown_9udw0_gg_",
32
+ "_disabled": "__disabled_9udw0_gg_",
33
+ "__SValueHidden": "___SValueHidden_9udw0_gg_",
34
+ "_type_number": "_type_number_9udw0_gg_"
30
35
  });
31
36
  /** Events that can trigger a value step (buttons, keyboard arrows, mouse wheel). */
32
37
 
@@ -88,39 +93,35 @@ class InputNumber extends _core.Component {
88
93
  i18n: _intergalacticDynamicLocales.localizedMessages,
89
94
  locale: 'en'
90
95
  });
91
- class Value extends _core.Component {
96
+ let _Value;
97
+ new (_Value2 = (_Value3 = class Value extends _core.Component {
92
98
  constructor(...args) {
93
99
  super(...args);
100
+ (0, _defineProperty2.default)(this, "valueType", typeof this.props.value === 'number' || this.props.value === null ? 'number' : 'string');
94
101
  (0, _defineProperty2.default)(this, "state", {
95
102
  displayValue: ''
96
103
  });
97
104
  (0, _defineProperty2.default)(this, "valueInputRef", /*#__PURE__*/_react.default.createRef());
98
105
  (0, _defineProperty2.default)(this, "cursorPosition", -1);
99
106
  (0, _defineProperty2.default)(this, "getFormattedValue", value => {
100
- return value.replace(new RegExp(`[${this.separatorThousands}]`, 'g'), '').replace(this.separatorDecimal, '.');
107
+ return value.replace(new RegExp(`[${this.separatorThousands}]`, 'g'), '').replace(this.separatorDecimal, '.').replace(new RegExp('\\.\\.', 'g'), '.');
101
108
  });
102
- (0, _defineProperty2.default)(this, "valueParser", (value, prevValue, prevDisplayValue) => {
109
+ (0, _defineProperty2.default)(this, "getDisplayValue", (value, prevDisplayValue) => {
103
110
  const {
104
111
  numberFormatter
105
112
  } = this.props;
106
- const stringNumber = this.getFormattedValue(String(value));
113
+ const stringNumber = String(value);
107
114
  if (Number.isNaN(Number(stringNumber))) {
108
- return {
109
- parsedValue: prevValue,
110
- displayValue: prevDisplayValue
111
- };
115
+ return prevDisplayValue;
112
116
  }
113
117
  let displayValue = '';
114
118
  if (/\.[0-9]*0$/.test(stringNumber)) {
115
- const [int, decimal] = stringNumber.split(this.separatorDecimal);
119
+ const [int, decimal] = stringNumber.split('.');
116
120
  displayValue = numberFormatter.format(+int) + this.separatorDecimal + decimal;
117
121
  } else if (stringNumber !== '') {
118
122
  displayValue = numberFormatter.format(+stringNumber);
119
123
  }
120
- return {
121
- parsedValue: stringNumber,
122
- displayValue: displayValue
123
- };
124
+ return displayValue;
124
125
  });
125
126
  (0, _defineProperty2.default)(this, "handleValidation", event => {
126
127
  const {
@@ -129,15 +130,10 @@ class Value extends _core.Component {
129
130
  max,
130
131
  step
131
132
  } = this.asProps;
132
- const {
133
- displayValue
134
- } = this.state;
135
- const {
136
- parsedValue
137
- } = this.valueParser(event.currentTarget.value, value, displayValue);
133
+ const parsedValue = this.getFormattedValue(event.currentTarget.value);
138
134
  if (Number.isNaN(value) || Number.isNaN(Number.parseFloat(parsedValue))) {
139
135
  event.currentTarget.value = '';
140
- this.handlers.value('', event);
136
+ this.handlers.value(this.processedValue(''), event);
141
137
  } else {
142
138
  let numberValue = parseValueWithMinMax(Number.parseFloat(parsedValue), min, max);
143
139
  const rounded = this.round(numberValue % step);
@@ -148,7 +144,7 @@ class Value extends _core.Component {
148
144
  numberValue -= rounded;
149
145
  }
150
146
  }
151
- this.handlers.value(this.getDisplayValue(numberValue), event);
147
+ this.handlers.value(this.processedValue(this.getStringValue(numberValue)), event);
152
148
  }
153
149
  });
154
150
  (0, _defineProperty2.default)(this, "onWheel", event => {
@@ -180,19 +176,26 @@ class Value extends _core.Component {
180
176
  return false;
181
177
  }
182
178
  if (value.endsWith('.')) {
183
- if (value.length > prevValue.length) {
179
+ if (prevValue !== null && value.length > prevValue.toString().length) {
184
180
  this.setState({
185
181
  displayValue: numberFormatter.format(value) + this.separatorDecimal
186
182
  });
187
183
  return false;
188
184
  } else {
189
- this.handlers.value(value.slice(0, -1), event);
185
+ this.handlers.value(this.processedValue(value.slice(0, -1)), event);
190
186
  return false;
191
187
  }
192
188
  }
193
189
  const digits = /^[0-9.-]+$/.test(value);
194
190
  if (digits || value === '') {
195
- this.handlers.value(this.limitDecimals(value), event);
191
+ const newValue = this.limitDecimals(value);
192
+ this.handlers.value(this.processedValue(newValue), event);
193
+ if (newValue === prevValue) {
194
+ const displayValue = this.getDisplayValue(newValue ?? '', this.state.displayValue);
195
+ this.setState({
196
+ displayValue
197
+ });
198
+ }
196
199
  }
197
200
  });
198
201
  (0, _defineProperty2.default)(this, "handleKeyUp", event => {
@@ -321,14 +324,14 @@ class Value extends _core.Component {
321
324
  let numberValue;
322
325
 
323
326
  // https://stackoverflow.com/questions/68010124/safari-number-input-stepup-stepdown-not-functioning-with-empty-value
324
- if (value === '') {
327
+ if (value === '' || value === null) {
325
328
  numberValue = min ?? 0;
326
329
  } else {
327
330
  numberValue = Number.parseFloat(value);
328
331
  }
329
332
  if (Number.isNaN(numberValue)) return;
330
333
  const nextValue = Math.min(numberValue + step, max);
331
- this.handlers.value(this.getDisplayValue(nextValue), event);
334
+ this.handlers.value(this.processedValue(this.getStringValue(nextValue)), event);
332
335
  });
333
336
  (0, _defineProperty2.default)(this, "stepDown", event => {
334
337
  const {
@@ -338,14 +341,14 @@ class Value extends _core.Component {
338
341
  value
339
342
  } = this.asProps;
340
343
  let numberValue;
341
- if (value === '') {
344
+ if (value === '' || value === null) {
342
345
  numberValue = max ?? 0;
343
346
  } else {
344
347
  numberValue = Number.parseFloat(value);
345
348
  }
346
349
  if (Number.isNaN(numberValue)) return;
347
350
  const nextValue = Math.max(numberValue - step, min);
348
- this.handlers.value(this.getDisplayValue(nextValue), event);
351
+ this.handlers.value(this.processedValue(this.getStringValue(nextValue)), event);
349
352
  });
350
353
  }
351
354
  uncontrolledProps() {
@@ -354,17 +357,11 @@ class Value extends _core.Component {
354
357
  const {
355
358
  displayValue: prevDisplayValue
356
359
  } = this.state;
357
- const {
358
- value: prevValue
359
- } = this.asProps;
360
- const {
361
- parsedValue,
362
- displayValue
363
- } = this.valueParser(newValue ?? '', prevValue, prevDisplayValue);
360
+ const displayValue = this.getDisplayValue(newValue ?? '', prevDisplayValue);
364
361
  this.setState({
365
362
  displayValue
366
363
  });
367
- return parsedValue;
364
+ return String(newValue);
368
365
  }]
369
366
  };
370
367
  }
@@ -378,7 +375,19 @@ class Value extends _core.Component {
378
375
  const {
379
376
  numberFormatter
380
377
  } = this.props;
381
- return numberFormatter.format(1111).replace(/\d/g, '');
378
+ return numberFormatter.format(11111).replace(/\d/g, '');
379
+ }
380
+ onPropsChange(changedProps) {
381
+ const {
382
+ value
383
+ } = changedProps;
384
+ if (value !== undefined) {
385
+ if (typeof value === 'number' || value === null) {
386
+ this.valueType = 'number';
387
+ } else {
388
+ this.valueType = 'string';
389
+ }
390
+ }
382
391
  }
383
392
  get stepPrecision() {
384
393
  const {
@@ -387,7 +396,7 @@ class Value extends _core.Component {
387
396
  const [_, decimals] = step?.toString().split('.') ?? [];
388
397
  return decimals?.length ?? 0;
389
398
  }
390
- getDisplayValue(value) {
399
+ getStringValue(value) {
391
400
  return value === 0 ? `${value}` : value.toFixed(this.stepPrecision);
392
401
  }
393
402
  limitDecimals(value) {
@@ -423,9 +432,7 @@ class Value extends _core.Component {
423
432
  inputRef.current.stepDown = this.stepDown;
424
433
  }
425
434
  if (value !== '') {
426
- const {
427
- displayValue
428
- } = this.valueParser(value, '', '');
435
+ const displayValue = this.getDisplayValue(value, '');
429
436
  this.setState({
430
437
  displayValue
431
438
  });
@@ -433,9 +440,7 @@ class Value extends _core.Component {
433
440
  }
434
441
  componentDidUpdate(prevProps, prevState) {
435
442
  if (prevProps.value !== this.props.value) {
436
- const {
437
- displayValue
438
- } = this.valueParser(this.props.value ?? '', prevProps.value, prevState.displayValue);
443
+ const displayValue = this.getDisplayValue(this.props.value ?? '', prevState.displayValue);
439
444
  this.setState({
440
445
  displayValue
441
446
  });
@@ -444,6 +449,15 @@ class Value extends _core.Component {
444
449
  componentWillUnmount() {
445
450
  this.valueInputRef.current?.removeEventListener('wheel', this.onWheel);
446
451
  }
452
+ processedValue(value) {
453
+ if (this.valueType === 'string') {
454
+ return value;
455
+ }
456
+ if (value === '') {
457
+ return null;
458
+ }
459
+ return Number(value);
460
+ }
447
461
  render() {
448
462
  var _ref2 = this.asProps,
449
463
  _ref5;
@@ -476,13 +490,15 @@ class Value extends _core.Component {
476
490
  }, _ref2)
477
491
  })));
478
492
  }
479
- }
480
- (0, _defineProperty2.default)(Value, "style", style);
481
- (0, _defineProperty2.default)(Value, "defaultProps", {
482
- defaultValue: '',
483
- defaultDisplayValue: '',
484
- step: 1
485
- });
493
+ }, [_Value, _initClass] = (0, _applyDecs2.default)(_Value3, [(0, _propsObserver.default)(['value'])], [], 0, void 0, _core.Component).c, _Value3), _Class = class extends _identity2.default {
494
+ constructor() {
495
+ super(_Value), (0, _defineProperty2.default)(this, "style", style), (0, _defineProperty2.default)(this, "defaultProps", {
496
+ defaultValue: '',
497
+ defaultDisplayValue: '',
498
+ step: 1
499
+ }), _initClass();
500
+ }
501
+ }, (0, _defineProperty2.default)(_Class, _Value2, void 0), _Class)();
486
502
  function Controls(props) {
487
503
  var _ref3 = arguments[0],
488
504
  _ref6;
@@ -520,7 +536,7 @@ Controls.style = style;
520
536
  * {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-api/|API} | {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-code/|Examples}
521
537
  */
522
538
  var _default = exports.default = (0, _core.createComponent)(InputNumber, {
523
- Value,
539
+ Value: _Value,
524
540
  Controls,
525
541
  Addon: _input.default.Addon
526
542
  });
@@ -1 +1 @@
1
- {"version":3,"file":"InputNumber.js","names":["_core","require","_assignProps4","_i18nEnhance","_interopRequireDefault","_ref7","_input","_react","_buttons","_intergalacticDynamicLocales","style","sstyled","insert","parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","InputNumber","Component","constructor","args","_defineProperty2","default","React","createRef","event","inputRef","current","stepUp","stepDown","getValueProps","numberFormatter","Intl","NumberFormat","asProps","locale","maximumFractionDigits","increment","decrement","getControlsProps","getI18nText","render","_ref","_ref4","SInputNumber","Input","createElement","cn","assignProps","i18nEnhance","localizedMessages","size","i18n","Value","displayValue","replace","RegExp","separatorThousands","separatorDecimal","prevValue","prevDisplayValue","props","stringNumber","getFormattedValue","String","isNaN","parsedValue","test","int","decimal","split","format","step","state","valueParser","currentTarget","parseFloat","handlers","numberValue","rounded","round","abs","getDisplayValue","callAllEventHandlers","onWheel","handleWheel","target","valueInputRef","document","activeElement","preventDefault","deltaY","setState","endsWith","length","slice","digits","limitDecimals","key","cursorPosition","element","indexOf","stopPropagation","selectionStart","includes","afterSelection","selectionEnd","undefined","requestAnimationFrame","newValue","index","lastIndexOf","setSelectionRange","cursorIndex","shiftKey","moveSelectionLeft","moveSelectionRight","nextPosition","nextValue","uncontrolledProps","stepPrecision","_","decimals","toString","toFixed","dotIndex","toPrecision","componentDidMount","addEventListener","autoFocus","setTimeout","focus","componentDidUpdate","prevProps","prevState","componentWillUnmount","removeEventListener","_ref2","_ref5","SValue","styles","forwardRef","Fragment","handleValidation","handleChange","handleKeyDown","handleKeyUp","handleClick","forkRef","isInteger","defaultValue","defaultDisplayValue","Controls","_ref3","arguments[0]","_ref6","Children","SControls","Addon","SUp","SDown","IncrementIcon","DecrementIcon","_default","exports","createComponent"],"sources":["../../src/InputNumber.tsx"],"sourcesContent":["import type { Intergalactic } from '@semcore/core';\nimport { Component, createComponent, Root, sstyled } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport type { WithI18nEnhanceProps } from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport Input from '@semcore/input';\nimport React from 'react';\n\nimport { DecrementIcon, IncrementIcon } from './buttons';\nimport type { NSInputNumber } from './InputNumber.type';\nimport style from './style/input-number.shadow.css';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\n\n/** Events that can trigger a value step (buttons, keyboard arrows, mouse wheel). */\ntype StepEvent =\n | React.MouseEvent\n | React.KeyboardEvent\n | WheelEvent;\n\n/**\n * The input DOM node whose native `stepUp`/`stepDown` methods are replaced at runtime\n * (see `Value.componentDidMount`) with event-aware versions.\n */\ntype InputElement = Omit<HTMLInputElement, 'stepUp' | 'stepDown'> & {\n stepUp: (event: StepEvent) => void;\n stepDown: (event: StepEvent) => void;\n};\n\nexport function parseValueWithMinMax(\n value: number,\n min = Number.MIN_SAFE_INTEGER,\n max = Number.MAX_SAFE_INTEGER,\n) {\n return Math.max(min, Math.min(max, value));\n}\n\nclass InputNumber extends Component<\n Intergalactic.InternalTypings.InferComponentProps<NSInputNumber.Component>,\n typeof InputNumber.enhance,\n {},\n WithI18nEnhanceProps,\n {},\n NSInputNumber.DefaultProps\n> {\n static displayName = 'InputNumber';\n static style = style;\n static enhance = [i18nEnhance(localizedMessages)] as const;\n static defaultProps = {\n size: 'm',\n i18n: localizedMessages,\n locale: 'en',\n } as const;\n\n inputRef = React.createRef<InputElement>();\n\n increment = (event: React.MouseEvent) => {\n (this.inputRef.current)?.stepUp?.(event);\n };\n\n decrement = (event: React.MouseEvent) => {\n (this.inputRef.current)?.stepDown?.(event);\n };\n\n getValueProps() {\n const numberFormatter = new Intl.NumberFormat(this.asProps.locale, {\n style: 'decimal',\n maximumFractionDigits: 100,\n });\n\n return {\n inputRef: this.inputRef,\n increment: this.increment,\n decrement: this.decrement,\n numberFormatter,\n };\n }\n\n getControlsProps() {\n const { getI18nText } = this.asProps;\n return {\n increment: this.increment,\n decrement: this.decrement,\n getI18nText,\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 Intergalactic.InternalTypings.InferChildComponentProps<NSInputNumber.Value.Component, typeof InputNumber, 'Value'>,\n [],\n NSInputNumber.Value.Handlers,\n {},\n NSInputNumber.Value.State,\n NSInputNumber.Value.DefaultProps\n> {\n static style = style;\n static defaultProps = {\n defaultValue: '',\n defaultDisplayValue: '',\n step: 1,\n } as const;\n\n state: NSInputNumber.Value.State = {\n displayValue: '',\n };\n\n valueInputRef = React.createRef<HTMLInputElement>();\n\n cursorPosition: number | null = -1;\n\n uncontrolledProps(): NSInputNumber.Value.Handlers {\n return {\n value: [\n null,\n (newValue) => {\n const { displayValue: prevDisplayValue } = this.state;\n const { value: prevValue } = this.asProps;\n\n const { parsedValue, displayValue } = this.valueParser(\n newValue ?? '',\n prevValue,\n prevDisplayValue,\n );\n\n this.setState({ displayValue });\n\n return parsedValue;\n },\n ],\n };\n }\n\n get separatorDecimal() {\n const { numberFormatter } = this.props;\n\n return numberFormatter.format(11.11).replace(/\\d/g, '');\n }\n\n get separatorThousands() {\n const { numberFormatter } = this.props;\n\n return numberFormatter.format(1111).replace(/\\d/g, '');\n }\n\n getFormattedValue = (value: string) => {\n return value\n .replace(new RegExp(`[${this.separatorThousands}]`, 'g'), '')\n .replace(this.separatorDecimal, '.');\n };\n\n valueParser = (\n value: typeof this.asProps['value'],\n prevValue: typeof this.asProps['value'],\n prevDisplayValue: NSInputNumber.Value.State['displayValue'],\n ) => {\n const { numberFormatter } = this.props;\n\n const stringNumber = this.getFormattedValue(String(value));\n\n if (Number.isNaN(Number(stringNumber))) {\n return {\n parsedValue: prevValue,\n displayValue: prevDisplayValue,\n };\n }\n\n let displayValue = '';\n\n if (/\\.[0-9]*0$/.test(stringNumber)) {\n const [int, decimal] = stringNumber.split(this.separatorDecimal);\n displayValue = numberFormatter.format(+int) + this.separatorDecimal + decimal;\n } else if (stringNumber !== '') {\n displayValue = numberFormatter.format(+stringNumber);\n }\n\n return {\n parsedValue: stringNumber,\n displayValue: displayValue,\n };\n };\n\n get stepPrecision() {\n const { step } = this.asProps;\n const [_, decimals] = step?.toString().split('.') ?? [];\n\n return decimals?.length ?? 0;\n }\n\n getDisplayValue(value: number): string {\n return value === 0 ? `${value}` : value.toFixed(this.stepPrecision);\n }\n\n limitDecimals(value: string) {\n const { stepPrecision } = this;\n if (stepPrecision === 0) return value;\n\n const dotIndex = value.indexOf('.');\n if (dotIndex === -1 || value.length - dotIndex - 1 <= stepPrecision) return value;\n\n return value.slice(0, dotIndex + 1 + stepPrecision);\n }\n\n round(value: number): number {\n const { stepPrecision } = this;\n\n return stepPrecision === 0\n ? value\n : Number(value.toPrecision(stepPrecision));\n }\n\n handleValidation = (event: React.FocusEvent<HTMLInputElement>) => {\n const { value, min, max, step } = this.asProps;\n const { displayValue } = this.state;\n const { parsedValue } = this.valueParser(event.currentTarget.value, value, displayValue);\n\n if (Number.isNaN(value) || Number.isNaN(Number.parseFloat(parsedValue))) {\n event.currentTarget.value = '';\n this.handlers.value('', event);\n } else {\n let numberValue = parseValueWithMinMax(Number.parseFloat(parsedValue), min, max);\n const rounded = this.round(numberValue % step);\n if (rounded !== 0) {\n if (rounded >= step / 2) {\n numberValue += step - rounded;\n } else if (Math.abs(rounded) < step) {\n numberValue -= rounded;\n }\n }\n\n this.handlers.value(this.getDisplayValue(numberValue), event);\n }\n };\n\n // https://stackoverflow.com/questions/57358640/cancel-wheel-event-with-e-preventdefault-in-react-event-bubbling\n componentDidMount() {\n this.valueInputRef.current?.addEventListener('wheel', this.onWheel);\n\n const { inputRef, value, autoFocus } = this.asProps;\n\n if (autoFocus) {\n setTimeout(() => {\n this.valueInputRef.current?.focus();\n });\n }\n\n if (inputRef.current) {\n inputRef.current.stepUp = this.stepUp;\n inputRef.current.stepDown = this.stepDown;\n }\n\n if (value !== '') {\n const { displayValue } = this.valueParser(value, '', '');\n this.setState({ displayValue });\n }\n }\n\n componentDidUpdate(prevProps: typeof this.asProps, prevState: typeof this.state) {\n if (prevProps.value !== this.props.value) {\n const { displayValue } = this.valueParser(\n this.props.value ?? '',\n prevProps.value,\n prevState.displayValue,\n );\n this.setState({ displayValue });\n }\n }\n\n componentWillUnmount() {\n this.valueInputRef.current?.removeEventListener('wheel', this.onWheel);\n }\n\n onWheel = (event: WheelEvent) => {\n callAllEventHandlers(this.asProps.onWheel, this.handleWheel)(event);\n };\n\n handleWheel = (event: WheelEvent) => {\n if (event.target !== this.valueInputRef.current) return;\n if (document.activeElement !== this.valueInputRef.current) return;\n event.preventDefault();\n if (event.deltaY < 0) {\n this.stepUp(event);\n } else if (event.deltaY > 0) {\n this.stepDown(event);\n }\n };\n\n handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = this.getFormattedValue(event.currentTarget.value);\n const { numberFormatter, value: prevValue } = this.asProps;\n\n if (value === '.' || value === '-') {\n this.setState({ displayValue: value });\n return false;\n }\n\n if (value.endsWith('-')) {\n return false;\n }\n\n if (value.endsWith('.')) {\n if (value.length > prevValue.length) {\n this.setState({ displayValue: numberFormatter.format(value as `${number}`) + this.separatorDecimal });\n return false;\n } else {\n this.handlers.value(value.slice(0, -1), event);\n return false;\n }\n }\n\n const digits = /^[0-9.-]+$/.test(value);\n\n if (digits || value === '') {\n this.handlers.value(this.limitDecimals(value), event);\n }\n };\n\n handleKeyUp = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Shift') {\n this.cursorPosition = -1;\n }\n };\n\n handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const element = event.currentTarget;\n const value = element.value;\n const length = value.length;\n const { displayValue } = this.state;\n\n if (event.key === '.' || event.key === ',') {\n // for the first decimal separator we should replace both ',' and '.' to '.' because of how js convert strings to numbers (with ',' it will be Number.NaN)\n if (value.indexOf(this.separatorDecimal) === -1 && event.key === ',') {\n event.currentTarget.value = value + '.';\n } else if (value.indexOf(this.separatorDecimal) !== -1) { // we could press decimal separator second time - prevent this '1.5.'\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n }\n\n if (event.key === 'Backspace' && value.endsWith(this.separatorDecimal)) {\n event.preventDefault();\n event.stopPropagation();\n this.setState({ displayValue: displayValue?.slice(0, -1) });\n return false;\n }\n\n if (\n element.selectionStart !== length &&\n (event.key === 'Backspace' ||\n event.key === this.separatorDecimal ||\n ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(event.key))\n ) {\n const afterSelection = value.slice(element.selectionEnd ?? undefined);\n\n requestAnimationFrame(() => {\n const newValue = this.state.displayValue;\n const index = newValue.lastIndexOf(afterSelection);\n const selectionStart = index;\n const selectionEnd = index;\n\n element.setSelectionRange(selectionStart, selectionEnd);\n });\n }\n\n // For correct moving cursor with skip separatorThousands.\n // Examples:\n // - Press ArrowLeft: `12,3|4 -> 12|,34`\n // - Press ArrowRight: `1|,55 -> 1,5|5`\n const cursorIndex = 2;\n\n if (event.shiftKey && this.cursorPosition === -1) {\n this.cursorPosition = element.selectionStart;\n }\n\n switch (event.key) {\n case 'ArrowLeft': {\n event.preventDefault();\n this.moveSelectionLeft(element, cursorIndex);\n break;\n }\n case 'ArrowRight': {\n event.preventDefault();\n this.moveSelectionRight(element, cursorIndex);\n break;\n }\n case 'ArrowDown': {\n event.preventDefault();\n this.stepDown(event);\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n this.stepUp(event);\n break;\n }\n }\n };\n\n moveSelectionLeft = (element: React.KeyboardEvent<HTMLInputElement>['currentTarget'], cursorIndex: number) => {\n if (element.selectionStart === null) return;\n\n const value = element.value;\n\n const nextPosition = element.selectionStart - 1 >= 0 ? element.selectionStart - 1 : 0;\n\n const cursorPosition =\n value[element.selectionStart - cursorIndex] === this.separatorThousands\n ? element.selectionStart - cursorIndex\n : nextPosition;\n\n if (this.cursorPosition === -1) {\n // without shift\n element.setSelectionRange(cursorPosition, cursorPosition);\n } else {\n if (\n this.cursorPosition &&\n element.selectionStart <= this.cursorPosition &&\n element.selectionEnd === this.cursorPosition\n ) {\n element.setSelectionRange(cursorPosition, element.selectionEnd);\n } else if (element.selectionEnd !== null) {\n element.setSelectionRange(\n element.selectionStart,\n value[element.selectionEnd - cursorIndex] === this.separatorThousands\n ? element.selectionEnd - cursorIndex\n : element.selectionEnd - 1,\n );\n }\n }\n };\n\n moveSelectionRight = (element: React.KeyboardEvent<HTMLInputElement>['currentTarget'], cursorIndex: number) => {\n if (element.selectionEnd === null) return;\n\n const value = element.value;\n const nextPosition = element.selectionEnd + 1;\n\n const cursorPosition =\n value[element.selectionEnd] === this.separatorThousands\n ? element.selectionEnd + cursorIndex\n : nextPosition;\n\n if (this.cursorPosition === -1) {\n // without shift\n element.setSelectionRange(cursorPosition, cursorPosition);\n } else {\n if (\n this.cursorPosition &&\n element.selectionEnd >= this.cursorPosition &&\n element.selectionStart === this.cursorPosition\n ) {\n element.setSelectionRange(element.selectionStart, cursorPosition);\n } else if (element.selectionStart !== null) {\n element.setSelectionRange(\n value[element.selectionStart] === this.separatorThousands\n ? element.selectionStart + cursorIndex\n : element.selectionStart + 1,\n element.selectionEnd,\n );\n }\n }\n };\n\n handleClick = (event: React.MouseEvent<HTMLInputElement>) => {\n const element = event.currentTarget;\n const value = element.value;\n\n if (element.selectionStart !== null && value[element.selectionStart - 1] === this.separatorThousands) {\n element.setSelectionRange(element.selectionStart - 1, element.selectionEnd! - 1);\n }\n };\n\n stepUp = (event: StepEvent) => {\n const { max = Number.MAX_SAFE_INTEGER, min, step, value } = this.asProps;\n\n let numberValue;\n\n // https://stackoverflow.com/questions/68010124/safari-number-input-stepup-stepdown-not-functioning-with-empty-value\n if (value === '') {\n numberValue = min ?? 0;\n } else {\n numberValue = Number.parseFloat(value);\n }\n\n if (Number.isNaN(numberValue)) return;\n\n const nextValue = Math.min(numberValue + step, max);\n\n this.handlers.value(this.getDisplayValue(nextValue), event);\n };\n\n stepDown = (event: StepEvent) => {\n const { max, min = Number.MIN_SAFE_INTEGER, step, value } = this.asProps;\n\n let numberValue;\n\n if (value === '') {\n numberValue = max ?? 0;\n } else {\n numberValue = Number.parseFloat(value);\n }\n\n if (Number.isNaN(numberValue)) return;\n\n const nextValue = Math.max(numberValue - step, min);\n\n this.handlers.value(this.getDisplayValue(nextValue), event);\n };\n\n render() {\n const SValue = Root;\n const { styles, min, max, step, forwardRef, inputRef } = this.asProps;\n const { displayValue } = this.state;\n\n return sstyled(styles)(\n <>\n <SValue\n render={Input.Value}\n autoComplete='off'\n onBlur={this.handleValidation}\n use:onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onKeyUp={this.handleKeyUp}\n onClick={this.handleClick}\n use:ref={forkRef(this.valueInputRef, inputRef, forwardRef ?? null)}\n use:value={displayValue}\n inputMode={Number.isInteger(step) ? 'numeric' : 'decimal'}\n min={min}\n max={max}\n step={step}\n />\n </>,\n );\n }\n}\n\nfunction Controls(\n props: Intergalactic.InternalTypings.InferChildComponentProps<NSInputNumber.Controls.Component, typeof InputNumber, 'Controls'>,\n) {\n const { Children, increment, decrement, styles, getI18nText } = props;\n const SControls = Root;\n const SUp = 'button';\n const SDown = 'button';\n\n return sstyled(styles)(\n <SControls render={Input.Addon} aria-hidden='true'>\n <SUp\n onClick={increment}\n tabIndex={-1}\n type='button'\n aria-label={getI18nText('increment')}\n >\n <IncrementIcon />\n </SUp>\n <SDown\n onClick={decrement}\n tabIndex={-1}\n type='button'\n aria-label={getI18nText('decrement')}\n >\n <DecrementIcon />\n </SDown>\n <Children />\n </SControls>,\n );\n}\nControls.style = style;\n\n/**\n * InputNumber\n *\n * {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-api/|API} | {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-code/|Examples}\n */\nexport default createComponent<\n NSInputNumber.Component,\n typeof InputNumber\n>(InputNumber, {\n Value,\n Controls,\n Addon: Input.Addon,\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"InputNumber.js","names":["_core","require","_propsObserver","_interopRequireDefault","_assignProps4","_i18nEnhance","_ref7","_input","_react","_buttons","_intergalacticDynamicLocales","_Class","_Value3","_initClass","_Value2","style","sstyled","insert","parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","InputNumber","Component","constructor","args","_defineProperty2","default","React","createRef","event","inputRef","current","stepUp","stepDown","getValueProps","numberFormatter","Intl","NumberFormat","asProps","locale","maximumFractionDigits","increment","decrement","getControlsProps","getI18nText","render","_ref","_ref4","SInputNumber","Input","createElement","cn","assignProps","i18nEnhance","localizedMessages","size","i18n","_Value","Value","props","displayValue","replace","RegExp","separatorThousands","separatorDecimal","prevDisplayValue","stringNumber","String","isNaN","test","int","decimal","split","format","step","parsedValue","getFormattedValue","currentTarget","parseFloat","handlers","processedValue","numberValue","rounded","round","abs","getStringValue","callAllEventHandlers","onWheel","handleWheel","target","valueInputRef","document","activeElement","preventDefault","deltaY","prevValue","setState","endsWith","length","toString","slice","digits","newValue","limitDecimals","getDisplayValue","state","key","cursorPosition","element","indexOf","stopPropagation","selectionStart","includes","afterSelection","selectionEnd","undefined","requestAnimationFrame","index","lastIndexOf","setSelectionRange","cursorIndex","shiftKey","moveSelectionLeft","moveSelectionRight","nextPosition","nextValue","uncontrolledProps","onPropsChange","changedProps","valueType","stepPrecision","_","decimals","toFixed","dotIndex","toPrecision","componentDidMount","addEventListener","autoFocus","setTimeout","focus","componentDidUpdate","prevProps","prevState","componentWillUnmount","removeEventListener","_ref2","_ref5","SValue","styles","forwardRef","Fragment","handleValidation","handleChange","handleKeyDown","handleKeyUp","handleClick","forkRef","isInteger","_applyDecs2","propsObserver","c","_identity2","defaultValue","defaultDisplayValue","Controls","_ref3","arguments[0]","_ref6","Children","SControls","Addon","SUp","SDown","IncrementIcon","DecrementIcon","_default","exports","createComponent"],"sources":["../../src/InputNumber.tsx"],"sourcesContent":["import type { Intergalactic } from '@semcore/core';\nimport { Component, createComponent, Root, sstyled } from '@semcore/core';\nimport propsObserver from '@semcore/core/lib/decorators/propsObserver';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport type { WithI18nEnhanceProps } from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport Input from '@semcore/input';\nimport React from 'react';\n\nimport { DecrementIcon, IncrementIcon } from './buttons';\nimport type { NSInputNumber } from './InputNumber.type';\nimport style from './style/input-number.shadow.css';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\n\n/** Events that can trigger a value step (buttons, keyboard arrows, mouse wheel). */\ntype StepEvent =\n | React.MouseEvent\n | React.KeyboardEvent\n | WheelEvent;\n\n/**\n * The input DOM node whose native `stepUp`/`stepDown` methods are replaced at runtime\n * (see `Value.componentDidMount`) with event-aware versions.\n */\ntype InputElement = Omit<HTMLInputElement, 'stepUp' | 'stepDown'> & {\n stepUp: (event: StepEvent) => void;\n stepDown: (event: StepEvent) => void;\n};\n\nexport function parseValueWithMinMax(\n value: number,\n min = Number.MIN_SAFE_INTEGER,\n max = Number.MAX_SAFE_INTEGER,\n) {\n return Math.max(min, Math.min(max, value));\n}\n\nclass InputNumber extends Component<\n Intergalactic.InternalTypings.InferComponentProps<NSInputNumber.Component>,\n typeof InputNumber.enhance,\n {},\n WithI18nEnhanceProps,\n {},\n NSInputNumber.DefaultProps\n> {\n static displayName = 'InputNumber';\n static style = style;\n static enhance = [i18nEnhance(localizedMessages)] as const;\n static defaultProps = {\n size: 'm',\n i18n: localizedMessages,\n locale: 'en',\n } as const;\n\n inputRef = React.createRef<InputElement>();\n\n increment = (event: React.MouseEvent) => {\n (this.inputRef.current)?.stepUp?.(event);\n };\n\n decrement = (event: React.MouseEvent) => {\n (this.inputRef.current)?.stepDown?.(event);\n };\n\n getValueProps() {\n const numberFormatter = new Intl.NumberFormat(this.asProps.locale, {\n style: 'decimal',\n maximumFractionDigits: 100,\n });\n\n return {\n inputRef: this.inputRef,\n increment: this.increment,\n decrement: this.decrement,\n numberFormatter,\n };\n }\n\n getControlsProps() {\n const { getI18nText } = this.asProps;\n return {\n increment: this.increment,\n decrement: this.decrement,\n getI18nText,\n };\n }\n\n render() {\n const SInputNumber = Root;\n return sstyled(this.asProps.style)(<SInputNumber render={Input} />);\n }\n}\n\n@propsObserver(['value'])\nclass Value extends Component<\n Intergalactic.InternalTypings.InferChildComponentProps<NSInputNumber.Value.Component, typeof InputNumber, 'Value'>,\n [],\n NSInputNumber.Value.Handlers,\n {},\n NSInputNumber.Value.State,\n NSInputNumber.Value.DefaultProps\n > {\n static style = style;\n static defaultProps = {\n defaultValue: '',\n defaultDisplayValue: '',\n step: 1,\n } as const;\n\n valueType: 'string' | 'number' = (typeof this.props.value === 'number' || this.props.value === null) ? 'number' : 'string';\n\n state: NSInputNumber.Value.State = {\n displayValue: '',\n };\n\n valueInputRef = React.createRef<HTMLInputElement>();\n\n cursorPosition: number | null = -1;\n\n uncontrolledProps(): NSInputNumber.Value.Handlers {\n return {\n value: [\n null,\n (newValue) => {\n const { displayValue: prevDisplayValue } = this.state;\n\n const displayValue = this.getDisplayValue(\n newValue ?? '',\n prevDisplayValue,\n );\n\n this.setState({ displayValue });\n\n return String(newValue);\n },\n ],\n };\n }\n\n get separatorDecimal() {\n const { numberFormatter } = this.props;\n\n return numberFormatter.format(11.11).replace(/\\d/g, '');\n }\n\n get separatorThousands() {\n const { numberFormatter } = this.props;\n\n return numberFormatter.format(11111).replace(/\\d/g, '');\n }\n\n onPropsChange(changedProps: { value?: string | number | null }) {\n const { value } = changedProps;\n\n if (value !== undefined) {\n if (typeof value === 'number' || value === null) {\n this.valueType = 'number';\n } else {\n this.valueType = 'string';\n }\n }\n }\n\n getFormattedValue = (value: string) => {\n return value\n .replace(new RegExp(`[${this.separatorThousands}]`, 'g'), '')\n .replace(this.separatorDecimal, '.')\n .replace(new RegExp('\\\\.\\\\.', 'g'), '.');\n };\n\n getDisplayValue = (\n value: string | number,\n prevDisplayValue: NSInputNumber.Value.State['displayValue'],\n ) => {\n const { numberFormatter } = this.props;\n const stringNumber = String(value);\n\n if (Number.isNaN(Number(stringNumber))) {\n return prevDisplayValue;\n }\n\n let displayValue = '';\n\n if (/\\.[0-9]*0$/.test(stringNumber)) {\n const [int, decimal] = stringNumber.split('.');\n displayValue = numberFormatter.format(+int) + this.separatorDecimal + decimal;\n } else if (stringNumber !== '') {\n displayValue = numberFormatter.format(+stringNumber);\n }\n\n return displayValue;\n };\n\n get stepPrecision() {\n const { step } = this.asProps;\n const [_, decimals] = step?.toString().split('.') ?? [];\n\n return decimals?.length ?? 0;\n }\n\n getStringValue(value: number): string {\n return value === 0 ? `${value}` : value.toFixed(this.stepPrecision);\n }\n\n limitDecimals(value: string) {\n const { stepPrecision } = this;\n if (stepPrecision === 0) return value;\n\n const dotIndex = value.indexOf('.');\n if (dotIndex === -1 || value.length - dotIndex - 1 <= stepPrecision) return value;\n\n return value.slice(0, dotIndex + 1 + stepPrecision);\n }\n\n round(value: number): number {\n const { stepPrecision } = this;\n\n return stepPrecision === 0\n ? value\n : Number(value.toPrecision(stepPrecision));\n }\n\n handleValidation = (event: React.FocusEvent<HTMLInputElement>) => {\n const { value, min, max, step } = this.asProps;\n const parsedValue = this.getFormattedValue(event.currentTarget.value);\n\n if (Number.isNaN(value) || Number.isNaN(Number.parseFloat(parsedValue))) {\n event.currentTarget.value = '';\n this.handlers.value(this.processedValue(''), event);\n } else {\n let numberValue = parseValueWithMinMax(Number.parseFloat(parsedValue), min, max);\n const rounded = this.round(numberValue % step);\n if (rounded !== 0) {\n if (rounded >= step / 2) {\n numberValue += step - rounded;\n } else if (Math.abs(rounded) < step) {\n numberValue -= rounded;\n }\n }\n\n this.handlers.value(this.processedValue(this.getStringValue(numberValue)), event);\n }\n };\n\n // https://stackoverflow.com/questions/57358640/cancel-wheel-event-with-e-preventdefault-in-react-event-bubbling\n componentDidMount() {\n this.valueInputRef.current?.addEventListener('wheel', this.onWheel);\n\n const { inputRef, value, autoFocus } = this.asProps;\n\n if (autoFocus) {\n setTimeout(() => {\n this.valueInputRef.current?.focus();\n });\n }\n\n if (inputRef.current) {\n inputRef.current.stepUp = this.stepUp;\n inputRef.current.stepDown = this.stepDown;\n }\n\n if (value !== '') {\n const displayValue = this.getDisplayValue(value, '');\n this.setState({ displayValue });\n }\n }\n\n componentDidUpdate(prevProps: typeof this.asProps, prevState: typeof this.state) {\n if (prevProps.value !== this.props.value) {\n const displayValue = this.getDisplayValue(\n this.props.value ?? '',\n prevState.displayValue,\n );\n this.setState({ displayValue });\n }\n }\n\n componentWillUnmount() {\n this.valueInputRef.current?.removeEventListener('wheel', this.onWheel);\n }\n\n onWheel = (event: WheelEvent) => {\n callAllEventHandlers(this.asProps.onWheel, this.handleWheel)(event);\n };\n\n handleWheel = (event: WheelEvent) => {\n if (event.target !== this.valueInputRef.current) return;\n if (document.activeElement !== this.valueInputRef.current) return;\n event.preventDefault();\n if (event.deltaY < 0) {\n this.stepUp(event);\n } else if (event.deltaY > 0) {\n this.stepDown(event);\n }\n };\n\n handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = this.getFormattedValue(event.currentTarget.value);\n const { numberFormatter, value: prevValue } = this.asProps;\n\n if (value === '.' || value === '-') {\n this.setState({ displayValue: value });\n return false;\n }\n\n if (value.endsWith('-')) {\n return false;\n }\n\n if (value.endsWith('.')) {\n if (prevValue !== null && value.length > prevValue.toString().length) {\n this.setState({ displayValue: numberFormatter.format(value as `${number}`) + this.separatorDecimal });\n return false;\n } else {\n this.handlers.value(this.processedValue(value.slice(0, -1)), event);\n return false;\n }\n }\n\n const digits = /^[0-9.-]+$/.test(value);\n\n if (digits || value === '') {\n const newValue = this.limitDecimals(value);\n this.handlers.value(this.processedValue(newValue), event);\n if (newValue === prevValue) {\n const displayValue = this.getDisplayValue(\n newValue ?? '',\n this.state.displayValue,\n );\n this.setState({ displayValue });\n }\n }\n };\n\n handleKeyUp = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Shift') {\n this.cursorPosition = -1;\n }\n };\n\n handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const element = event.currentTarget;\n const value = element.value;\n const length = value.length;\n const { displayValue } = this.state;\n\n if (event.key === '.' || event.key === ',') {\n // for the first decimal separator we should replace both ',' and '.' to '.' because of how js convert strings to numbers (with ',' it will be Number.NaN)\n if (value.indexOf(this.separatorDecimal) === -1 && event.key === ',') {\n event.currentTarget.value = value + '.';\n } else if (value.indexOf(this.separatorDecimal) !== -1) { // we could press decimal separator second time - prevent this '1.5.'\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n }\n\n if (event.key === 'Backspace' && value.endsWith(this.separatorDecimal)) {\n event.preventDefault();\n event.stopPropagation();\n this.setState({ displayValue: displayValue?.slice(0, -1) });\n return false;\n }\n\n if (\n element.selectionStart !== length &&\n (event.key === 'Backspace' ||\n event.key === this.separatorDecimal ||\n ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(event.key))\n ) {\n const afterSelection = value.slice(element.selectionEnd ?? undefined);\n\n requestAnimationFrame(() => {\n const newValue = this.state.displayValue;\n const index = newValue.lastIndexOf(afterSelection);\n const selectionStart = index;\n const selectionEnd = index;\n\n element.setSelectionRange(selectionStart, selectionEnd);\n });\n }\n\n // For correct moving cursor with skip separatorThousands.\n // Examples:\n // - Press ArrowLeft: `12,3|4 -> 12|,34`\n // - Press ArrowRight: `1|,55 -> 1,5|5`\n const cursorIndex = 2;\n\n if (event.shiftKey && this.cursorPosition === -1) {\n this.cursorPosition = element.selectionStart;\n }\n\n switch (event.key) {\n case 'ArrowLeft': {\n event.preventDefault();\n this.moveSelectionLeft(element, cursorIndex);\n break;\n }\n case 'ArrowRight': {\n event.preventDefault();\n this.moveSelectionRight(element, cursorIndex);\n break;\n }\n case 'ArrowDown': {\n event.preventDefault();\n this.stepDown(event);\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n this.stepUp(event);\n break;\n }\n }\n };\n\n moveSelectionLeft = (element: React.KeyboardEvent<HTMLInputElement>['currentTarget'], cursorIndex: number) => {\n if (element.selectionStart === null) return;\n\n const value = element.value;\n\n const nextPosition = element.selectionStart - 1 >= 0 ? element.selectionStart - 1 : 0;\n\n const cursorPosition =\n value[element.selectionStart - cursorIndex] === this.separatorThousands\n ? element.selectionStart - cursorIndex\n : nextPosition;\n\n if (this.cursorPosition === -1) {\n // without shift\n element.setSelectionRange(cursorPosition, cursorPosition);\n } else {\n if (\n this.cursorPosition &&\n element.selectionStart <= this.cursorPosition &&\n element.selectionEnd === this.cursorPosition\n ) {\n element.setSelectionRange(cursorPosition, element.selectionEnd);\n } else if (element.selectionEnd !== null) {\n element.setSelectionRange(\n element.selectionStart,\n value[element.selectionEnd - cursorIndex] === this.separatorThousands\n ? element.selectionEnd - cursorIndex\n : element.selectionEnd - 1,\n );\n }\n }\n };\n\n moveSelectionRight = (element: React.KeyboardEvent<HTMLInputElement>['currentTarget'], cursorIndex: number) => {\n if (element.selectionEnd === null) return;\n\n const value = element.value;\n const nextPosition = element.selectionEnd + 1;\n\n const cursorPosition =\n value[element.selectionEnd] === this.separatorThousands\n ? element.selectionEnd + cursorIndex\n : nextPosition;\n\n if (this.cursorPosition === -1) {\n // without shift\n element.setSelectionRange(cursorPosition, cursorPosition);\n } else {\n if (\n this.cursorPosition &&\n element.selectionEnd >= this.cursorPosition &&\n element.selectionStart === this.cursorPosition\n ) {\n element.setSelectionRange(element.selectionStart, cursorPosition);\n } else if (element.selectionStart !== null) {\n element.setSelectionRange(\n value[element.selectionStart] === this.separatorThousands\n ? element.selectionStart + cursorIndex\n : element.selectionStart + 1,\n element.selectionEnd,\n );\n }\n }\n };\n\n handleClick = (event: React.MouseEvent<HTMLInputElement>) => {\n const element = event.currentTarget;\n const value = element.value;\n\n if (element.selectionStart !== null && value[element.selectionStart - 1] === this.separatorThousands) {\n element.setSelectionRange(element.selectionStart - 1, element.selectionEnd! - 1);\n }\n };\n\n stepUp = (event: StepEvent) => {\n const { max = Number.MAX_SAFE_INTEGER, min, step, value } = this.asProps;\n\n let numberValue;\n\n // https://stackoverflow.com/questions/68010124/safari-number-input-stepup-stepdown-not-functioning-with-empty-value\n if (value === '' || value === null) {\n numberValue = min ?? 0;\n } else {\n numberValue = Number.parseFloat(value);\n }\n\n if (Number.isNaN(numberValue)) return;\n\n const nextValue = Math.min(numberValue + step, max);\n\n this.handlers.value(this.processedValue(this.getStringValue(nextValue)), event);\n };\n\n stepDown = (event: StepEvent) => {\n const { max, min = Number.MIN_SAFE_INTEGER, step, value } = this.asProps;\n\n let numberValue;\n\n if (value === '' || value === null) {\n numberValue = max ?? 0;\n } else {\n numberValue = Number.parseFloat(value);\n }\n\n if (Number.isNaN(numberValue)) return;\n\n const nextValue = Math.max(numberValue - step, min);\n\n this.handlers.value(this.processedValue(this.getStringValue(nextValue)), event);\n };\n\n processedValue(value: string): NSInputNumber.Value | NSInputNumber.ValueNumber {\n if (this.valueType === 'string') {\n return value;\n }\n\n if (value === '') {\n return null;\n }\n\n return Number(value);\n }\n\n render() {\n const SValue = Root;\n const { styles, min, max, step, forwardRef, inputRef } = this.asProps;\n const { displayValue } = this.state;\n\n return sstyled(styles)(\n <>\n <SValue\n render={Input.Value}\n autoComplete='off'\n onBlur={this.handleValidation}\n use:onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onKeyUp={this.handleKeyUp}\n onClick={this.handleClick}\n use:ref={forkRef(this.valueInputRef, inputRef, forwardRef ?? null)}\n use:value={displayValue}\n inputMode={Number.isInteger(step) ? 'numeric' : 'decimal'}\n min={min}\n max={max}\n step={step}\n />\n </>,\n );\n }\n}\n\nfunction Controls(\n props: Intergalactic.InternalTypings.InferChildComponentProps<NSInputNumber.Controls.Component, typeof InputNumber, 'Controls'>,\n) {\n const { Children, increment, decrement, styles, getI18nText } = props;\n const SControls = Root;\n const SUp = 'button';\n const SDown = 'button';\n\n return sstyled(styles)(\n <SControls render={Input.Addon} aria-hidden='true'>\n <SUp\n onClick={increment}\n tabIndex={-1}\n type='button'\n aria-label={getI18nText('increment')}\n >\n <IncrementIcon />\n </SUp>\n <SDown\n onClick={decrement}\n tabIndex={-1}\n type='button'\n aria-label={getI18nText('decrement')}\n >\n <DecrementIcon />\n </SDown>\n <Children />\n </SControls>,\n );\n}\nControls.style = style;\n\n/**\n * InputNumber\n *\n * {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-api/|API} | {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-code/|Examples}\n */\nexport default createComponent<\n NSInputNumber.Component,\n typeof InputNumber\n>(InputNumber, {\n Value,\n Controls,\n Addon: Input.Addon,\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"InputNumber.type.js","names":[],"sources":["../../src/InputNumber.type.ts"],"sourcesContent":["import type { Intergalactic, PropGetterFn } from '@semcore/core';\nimport type { NSInput } from '@semcore/input';\nimport type React from 'react';\n\nimport type { LocalizedMessages } from './translations/__intergalactic-dynamic-locales';\n\ndeclare namespace NSInputNumber {\n type Value = string;\n type Size = 'm' | 'l';\n type Props = NSInput.Props & {\n /** Input size\n * @default m\n * */\n size?: NSInputNumber.Size;\n /**\n * Locale value\n */\n locale?: string;\n };\n type DefaultProps = {\n size: 'm';\n i18n: LocalizedMessages;\n locale: 'en';\n };\n type Ctx = {\n getValueProps: PropGetterFn;\n getControlsProps: PropGetterFn;\n getAddonProps: PropGetterFn;\n };\n\n namespace Value {\n type Props = NSInput.Value.Props & {\n /** Minimum value\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n /** Maximum value\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n /** Value change step\n * @default 1\n */\n step?: number;\n /** Numeric value */\n value?: NSInputNumber.Value;\n /** Called when the input value changes, it returns its current value in numeric format */\n onChange?: (value: NSInputNumber.Value, event?: React.SyntheticEvent<HTMLInputElement>) => void;\n };\n type DefaultProps = {\n defaultValue: '';\n step: 1;\n };\n type State = {\n displayValue: NSInputNumber.Value;\n };\n type Handlers = {\n value: [\n null,\n (value: Props['value'], event: React.SyntheticEvent | WheelEvent) => void,\n ];\n };\n\n type Component = Intergalactic.Component<'input', Props>;\n }\n\n namespace Controls {\n type Props = NSInput.Addon.Props & {\n /** Always displays controls (steppers)\n * @default false\n */\n showControls?: boolean;\n };\n\n type Component = Intergalactic.Component<'div', Props>;\n }\n\n namespace Addon {\n type Component = Intergalactic.Component<'div', NSInput.Addon.Props>;\n }\n\n type Component = Intergalactic.Component<'div', Props, Ctx> & {\n Value: Value.Component;\n Controls: Controls.Component;\n Addon: Addon.Component;\n };\n}\n\n/** @deprecated It will be removed in v18. */\nexport type InputNumberValue = NSInputNumber.Value;\n/** @deprecated It will be removed in v18. */\nexport type InputNumberSize = NSInputNumber.Size;\n/** @deprecated It will be removed in v18. */\nexport type InputNumberProps = NSInputNumber.Props;\n/** @deprecated It will be removed in v18. */\nexport type InputNumberValueProps = NSInputNumber.Value.Props;\n/** @deprecated It will be removed in v18. */\nexport type InputNumberControlsProps = NSInputNumber.Controls.Props;\n/** @deprecated It will be removed in v18. */\nexport type InputNumberCtx = NSInputNumber.Ctx;\n\nexport type { NSInputNumber };\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"InputNumber.type.js","names":[],"sources":["../../src/InputNumber.type.ts"],"sourcesContent":["import type { Intergalactic, PropGetterFn } from '@semcore/core';\nimport type { NSInput } from '@semcore/input';\nimport type React from 'react';\n\nimport type { LocalizedMessages } from './translations/__intergalactic-dynamic-locales';\n\ndeclare namespace NSInputNumber {\n type Value = string;\n type ValueNumber = number | null;\n type CalculatedValue<V> = V extends Value ? Value : ValueNumber;\n type Size = 'm' | 'l';\n type Props = NSInput.Props & {\n /** Input size\n * @default m\n * */\n size?: NSInputNumber.Size;\n /**\n * Locale value\n */\n locale?: string;\n };\n type DefaultProps = {\n size: 'm';\n i18n: LocalizedMessages;\n locale: 'en';\n };\n type Ctx = {\n getValueProps: PropGetterFn;\n getControlsProps: PropGetterFn;\n getAddonProps: PropGetterFn;\n };\n\n namespace Value {\n type Props<V extends Value | ValueNumber> = Intergalactic.InternalTypings.EfficientOmit<NSInput.Value.Props, 'value' | 'onChange'> & {\n /** Minimum value\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n /** Maximum value\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n /** Value change step\n * @default 1\n */\n step?: number;\n /** Numeric value */\n value?: CalculatedValue<V>;\n /** Called when the input value changes, it returns its current value in numeric format */\n onChange?: (value: CalculatedValue<V>, event?: React.SyntheticEvent<HTMLInputElement>) => void;\n };\n type DefaultProps = {\n defaultValue: '';\n step: 1;\n };\n type State = {\n displayValue: NSInputNumber.Value;\n };\n type Handlers = {\n value: [\n null,\n (value: Value | ValueNumber | undefined, event: React.SyntheticEvent | WheelEvent) => void,\n ];\n };\n\n type Component = (<\n V extends Value | ValueNumber = Value,\n Tag extends Intergalactic.Tag = 'input',\n >(\n props: Intergalactic.InternalTypings.EfficientOmit<\n Intergalactic.InternalTypings.ComponentProps<Tag, 'input', Props<V>>,\n 'tag' | 'children'\n >\n ) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'input', 'input', Props<any>>;\n }\n\n namespace Controls {\n type Props = NSInput.Addon.Props & {\n /** Always displays controls (steppers)\n * @default false\n */\n showControls?: boolean;\n };\n\n type Component = Intergalactic.Component<'div', Props>;\n }\n\n namespace Addon {\n type Component = Intergalactic.Component<'div', NSInput.Addon.Props>;\n }\n\n type Component = Intergalactic.Component<'div', Props, Ctx> & {\n Value: Value.Component;\n Controls: Controls.Component;\n Addon: Addon.Component;\n };\n}\n\n/** @deprecated It will be removed in v19. */\nexport type InputNumberValue = NSInputNumber.Value;\n/** @deprecated It will be removed in v19. */\nexport type InputNumberSize = NSInputNumber.Size;\n/** @deprecated It will be removed in v19. */\nexport type InputNumberProps = NSInputNumber.Props;\n/** @deprecated It will be removed in v19. */\nexport type InputNumberValueProps = NSInputNumber.Value.Props<string>;\n/** @deprecated It will be removed in v19. */\nexport type InputNumberControlsProps = NSInputNumber.Controls.Props;\n/** @deprecated It will be removed in v19. */\nexport type InputNumberCtx = NSInputNumber.Ctx;\n\nexport type { NSInputNumber };\n"],"mappings":"","ignoreList":[]}