@snack-uikit/fields 0.51.4 → 0.51.5
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
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## <small>0.51.5 (2025-10-09)</small>
|
|
7
|
+
|
|
8
|
+
* fix(PDS-811): fix field stepper step ([4033ad6](https://github.com/cloud-ru-tech/snack-uikit/commit/4033ad6))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## <small>0.51.4 (2025-09-24)</small>
|
|
7
15
|
|
|
8
16
|
### Only dependencies have been changed
|
package/README.md
CHANGED
|
@@ -213,7 +213,6 @@ FieldStepper в основном предназначен для работы с
|
|
|
213
213
|
### Props
|
|
214
214
|
| name | type | default value | description |
|
|
215
215
|
|------|------|---------------|-------------|
|
|
216
|
-
| autoFocus* | `unknown` | - | |
|
|
217
216
|
| open | `boolean` | - | Открыт color-picker |
|
|
218
217
|
| onOpenChange | `(value: boolean) => void` | - | Колбек открытия пикера |
|
|
219
218
|
| showCopyButton | `boolean` | - | Отображение кнопки копирования |
|
|
@@ -232,6 +231,7 @@ FieldStepper в основном предназначен для работы с
|
|
|
232
231
|
| onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
|
|
233
232
|
| onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
|
|
234
233
|
| placeholder | `string` | - | Значение плейсхолдера |
|
|
234
|
+
| autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
|
|
235
235
|
| label | `string` | - | Лейбл |
|
|
236
236
|
| labelTooltip | `ReactNode` | - | Всплывающая подсказка лейбла |
|
|
237
237
|
| required | `boolean` | - | Является ли поле обязательным |
|
|
@@ -248,7 +248,6 @@ FieldStepper в основном предназначен для работы с
|
|
|
248
248
|
### Props
|
|
249
249
|
| name | type | default value | description |
|
|
250
250
|
|------|------|---------------|-------------|
|
|
251
|
-
| autoFocus* | `unknown` | - | |
|
|
252
251
|
| mode* | "date" \| "date-time" | - | |
|
|
253
252
|
| open | `boolean` | - | Открыт date-picker |
|
|
254
253
|
| onOpenChange | `(value: boolean) => void` | - | Колбек открытия пикера |
|
|
@@ -264,6 +263,7 @@ FieldStepper в основном предназначен для работы с
|
|
|
264
263
|
| readonly | `boolean` | - | Является ли поле доступным только для чтения |
|
|
265
264
|
| onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
|
|
266
265
|
| onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
|
|
266
|
+
| autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
|
|
267
267
|
| className | `string` | - | CSS-класс |
|
|
268
268
|
| label | `string` | - | Лейбл |
|
|
269
269
|
| labelTooltip | `ReactNode` | - | Всплывающая подсказка лейбла |
|
|
@@ -304,7 +304,6 @@ FieldStepper в основном предназначен для работы с
|
|
|
304
304
|
### Props
|
|
305
305
|
| name | type | default value | description |
|
|
306
306
|
|------|------|---------------|-------------|
|
|
307
|
-
| autoFocus* | `unknown` | - | |
|
|
308
307
|
| hidden | `boolean` | - | Замаскированно ли значение поля |
|
|
309
308
|
| onHiddenChange | `(value: boolean) => void` | - | Колбек смены маскирования |
|
|
310
309
|
| showCopyButton | `boolean` | - | Отображение кнопки копирования |
|
|
@@ -321,6 +320,7 @@ FieldStepper в основном предназначен для работы с
|
|
|
321
320
|
| onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
|
|
322
321
|
| onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
|
|
323
322
|
| placeholder | `string` | - | Значение плейсхолдера |
|
|
323
|
+
| autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
|
|
324
324
|
| maxLength | `number` | - | Максимальная длина вводимого значения |
|
|
325
325
|
| autoComplete | `string \| boolean` | false | Включен ли автокомплит для поля |
|
|
326
326
|
| className | `string` | - | CSS-класс |
|
|
@@ -341,7 +341,6 @@ FieldStepper в основном предназначен для работы с
|
|
|
341
341
|
| name | type | default value | description |
|
|
342
342
|
|------|------|---------------|-------------|
|
|
343
343
|
| options* | `OptionProps[]` | - | |
|
|
344
|
-
| autoFocus* | `unknown` | - | |
|
|
345
344
|
| id | `string` | - | Значение html-атрибута id |
|
|
346
345
|
| name | `string` | - | Значение html-атрибута name |
|
|
347
346
|
| disabled | `boolean` | false | Является ли поле деактивированным |
|
|
@@ -349,6 +348,7 @@ FieldStepper в основном предназначен для работы с
|
|
|
349
348
|
| onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
|
|
350
349
|
| onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
|
|
351
350
|
| placeholder | `string` | - | Значение плейсхолдера |
|
|
351
|
+
| autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
|
|
352
352
|
| onKeyDown | `KeyboardEventHandler<HTMLInputElement>` | - | Колбек обработки начала нажатия клавиши клавиатуры |
|
|
353
353
|
| className | `string` | - | CSS-класс |
|
|
354
354
|
| label | `string` | - | Лейбл |
|
|
@@ -400,7 +400,6 @@ FieldStepper в основном предназначен для работы с
|
|
|
400
400
|
### Props
|
|
401
401
|
| name | type | default value | description |
|
|
402
402
|
|------|------|---------------|-------------|
|
|
403
|
-
| autoFocus* | `unknown` | - | |
|
|
404
403
|
| postfixIcon | `ReactElement<any, string \| JSXElementConstructor<any>>` | - | Иконка-постфикс для поля |
|
|
405
404
|
| showScaleBar | `boolean` | true | Отображение линейки |
|
|
406
405
|
| textInputFormatter | `TextInputFormatter` | - | Функция для форматирования значений в текстовом поле |
|
|
@@ -413,6 +412,7 @@ FieldStepper в основном предназначен для работы с
|
|
|
413
412
|
| readonly | `boolean` | - | Является ли поле доступным только для чтения |
|
|
414
413
|
| onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
|
|
415
414
|
| onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
|
|
415
|
+
| autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
|
|
416
416
|
| onChange | `(value: number \| number[]) => void` | - | |
|
|
417
417
|
| value | `number \| number[]` | - | |
|
|
418
418
|
| range | `boolean` | - | |
|
|
@@ -436,7 +436,6 @@ FieldStepper в основном предназначен для работы с
|
|
|
436
436
|
### Props
|
|
437
437
|
| name | type | default value | description |
|
|
438
438
|
|------|------|---------------|-------------|
|
|
439
|
-
| autoFocus* | `unknown` | - | |
|
|
440
439
|
| value | `number` | - | Значение поля |
|
|
441
440
|
| onChange | `(value: number, e?: ChangeEvent<HTMLInputElement>) => void` | - | Колбек смены значения |
|
|
442
441
|
| step | `number` | 1 | Шаг поля |
|
|
@@ -451,6 +450,7 @@ FieldStepper в основном предназначен для работы с
|
|
|
451
450
|
| readonly | `boolean` | - | Является ли поле доступным только для чтения |
|
|
452
451
|
| onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
|
|
453
452
|
| onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
|
|
453
|
+
| autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
|
|
454
454
|
| min | `number` | Number.NEGATIVE_INFINITY | Минимальное значение поля |
|
|
455
455
|
| max | `number` | Number.POSITIVE_INFINITY | Максимальное значение поля |
|
|
456
456
|
| className | `string` | - | CSS-класс |
|
|
@@ -470,7 +470,6 @@ FieldStepper в основном предназначен для работы с
|
|
|
470
470
|
### Props
|
|
471
471
|
| name | type | default value | description |
|
|
472
472
|
|------|------|---------------|-------------|
|
|
473
|
-
| autoFocus* | `unknown` | - | |
|
|
474
473
|
| showCopyButton | `boolean` | - | Отображение кнопки Копировать для поля (актуально только для `readonly = true`) |
|
|
475
474
|
| onCopyButtonClick | `() => void` | - | Колбек клика по кнопке Копировать для поля |
|
|
476
475
|
| showClearButton | `boolean` | true | Отображение кнопки очистки поля |
|
|
@@ -482,7 +481,7 @@ FieldStepper в основном предназначен для работы с
|
|
|
482
481
|
| type | "text" \| "tel" \| "email" | text | |
|
|
483
482
|
| onChange | `(value: string, e?: ChangeEvent<HTMLInputElement>) => void` | - | Колбек смены значения |
|
|
484
483
|
| value | `string` | - | Значение input |
|
|
485
|
-
| inputMode | enum InputMode: `"text"`, `"search"`, `"tel"`, `"email"`, `"decimal"`, `"numeric"`, `"url"` | - | Режим работы экранной клавиатуры |
|
|
484
|
+
| inputMode | enum InputMode: `"none"`, `"text"`, `"search"`, `"tel"`, `"email"`, `"decimal"`, `"numeric"`, `"url"` | - | Режим работы экранной клавиатуры |
|
|
486
485
|
| id | `string` | - | Значение html-атрибута id |
|
|
487
486
|
| name | `string` | - | Значение html-атрибута name |
|
|
488
487
|
| disabled | `boolean` | - | Является ли поле деактивированным |
|
|
@@ -490,6 +489,7 @@ FieldStepper в основном предназначен для работы с
|
|
|
490
489
|
| onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
|
|
491
490
|
| onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
|
|
492
491
|
| placeholder | `string` | - | Значение плейсхолдера |
|
|
492
|
+
| autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
|
|
493
493
|
| maxLength | `number` | - | Максимальная длина вводимого значения |
|
|
494
494
|
| autoComplete | `string \| boolean` | false | Включен ли автокомплит для поля |
|
|
495
495
|
| spellCheck | `boolean` | true | Значение атрибута spellcheck (проверка орфографии) |
|
|
@@ -532,7 +532,7 @@ FieldStepper в основном предназначен для работы с
|
|
|
532
532
|
| placeholder | `string` | - | Плейсхолдер |
|
|
533
533
|
| autoFocus | `boolean` | - | Включен ли авто-фокус |
|
|
534
534
|
| maxLength | `number` | - | Максимальное кол-во символов |
|
|
535
|
-
| inputMode | enum InputMode: `"text"`, `"search"`, `"tel"`, `"email"`, `"decimal"`, `"numeric"`, `"url"` | - | Режим работы экранной клавиатуры |
|
|
535
|
+
| inputMode | enum InputMode: `"none"`, `"text"`, `"search"`, `"tel"`, `"email"`, `"decimal"`, `"numeric"`, `"url"` | - | Режим работы экранной клавиатуры |
|
|
536
536
|
| spellCheck | `boolean` | true | Включение проверки орфографии |
|
|
537
537
|
| onKeyDown | `KeyboardEventHandler<HTMLTextAreaElement>` | - | Колбек нажатия клавиши клавиатуры |
|
|
538
538
|
| className | `string` | - | CSS-класс |
|
|
@@ -552,7 +552,6 @@ FieldStepper в основном предназначен для работы с
|
|
|
552
552
|
### Props
|
|
553
553
|
| name | type | default value | description |
|
|
554
554
|
|------|------|---------------|-------------|
|
|
555
|
-
| autoFocus* | `unknown` | - | |
|
|
556
555
|
| open | `boolean` | - | Открыт time-picker |
|
|
557
556
|
| onOpenChange | `(value: boolean) => void` | - | Колбек открытия пикера |
|
|
558
557
|
| value | `TimeValue` | - | Значение поля |
|
|
@@ -567,6 +566,7 @@ FieldStepper в основном предназначен для работы с
|
|
|
567
566
|
| readonly | `boolean` | - | Является ли поле доступным только для чтения |
|
|
568
567
|
| onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
|
|
569
568
|
| onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
|
|
569
|
+
| autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
|
|
570
570
|
| className | `string` | - | CSS-класс |
|
|
571
571
|
| label | `string` | - | Лейбл |
|
|
572
572
|
| labelTooltip | `ReactNode` | - | Всплывающая подсказка лейбла |
|
|
@@ -19,6 +19,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
19
19
|
exports.FieldStepper = void 0;
|
|
20
20
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
21
21
|
const classnames_1 = __importDefault(require("classnames"));
|
|
22
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
22
23
|
const merge_refs_1 = __importDefault(require("merge-refs"));
|
|
23
24
|
const react_1 = require("react");
|
|
24
25
|
const button_1 = require("@snack-uikit/button");
|
|
@@ -145,12 +146,14 @@ exports.FieldStepper = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
145
146
|
const handleMinusButtonClick = e => {
|
|
146
147
|
e.preventDefault();
|
|
147
148
|
e.stopPropagation();
|
|
148
|
-
|
|
149
|
+
const newValue = new decimal_js_1.default(value).minus(step).toNumber();
|
|
150
|
+
setValue(Math.min(Math.max(min, newValue), max));
|
|
149
151
|
};
|
|
150
152
|
const handlePlusButtonClick = e => {
|
|
151
153
|
e.preventDefault();
|
|
152
154
|
e.stopPropagation();
|
|
153
|
-
|
|
155
|
+
const newValue = new decimal_js_1.default(value).plus(step).toNumber();
|
|
156
|
+
setValue(Math.max(Math.min(max, newValue), min));
|
|
154
157
|
};
|
|
155
158
|
const handleMinusButtonKeyDown = () => {
|
|
156
159
|
if (readonly || disabled) {
|
|
@@ -11,6 +11,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
13
|
import cn from 'classnames';
|
|
14
|
+
import Decimal from 'decimal.js';
|
|
14
15
|
import mergeRefs from 'merge-refs';
|
|
15
16
|
import { forwardRef, useEffect, useRef, useState, } from 'react';
|
|
16
17
|
import { ButtonFunction } from '@snack-uikit/button';
|
|
@@ -96,12 +97,14 @@ export const FieldStepper = forwardRef((_a, ref) => {
|
|
|
96
97
|
const handleMinusButtonClick = (e) => {
|
|
97
98
|
e.preventDefault();
|
|
98
99
|
e.stopPropagation();
|
|
99
|
-
|
|
100
|
+
const newValue = new Decimal(value).minus(step).toNumber();
|
|
101
|
+
setValue(Math.min(Math.max(min, newValue), max));
|
|
100
102
|
};
|
|
101
103
|
const handlePlusButtonClick = (e) => {
|
|
102
104
|
e.preventDefault();
|
|
103
105
|
e.stopPropagation();
|
|
104
|
-
|
|
106
|
+
const newValue = new Decimal(value).plus(step).toNumber();
|
|
107
|
+
setValue(Math.max(Math.min(max, newValue), min));
|
|
105
108
|
};
|
|
106
109
|
const handleMinusButtonKeyDown = () => {
|
|
107
110
|
if (readonly || disabled) {
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "Fields",
|
|
7
|
-
"version": "0.51.
|
|
7
|
+
"version": "0.51.5",
|
|
8
8
|
"sideEffects": [
|
|
9
9
|
"*.css",
|
|
10
10
|
"*.woff",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"@snack-uikit/utils": "4.0.0",
|
|
54
54
|
"classnames": "2.5.1",
|
|
55
55
|
"copy-to-clipboard": "3.3.3",
|
|
56
|
+
"decimal.js": "10.6.0",
|
|
56
57
|
"fuzzy-search": "3.2.1",
|
|
57
58
|
"merge-refs": "1.3.0",
|
|
58
59
|
"react-textarea-autosize": "8.5.3",
|
|
@@ -65,5 +66,5 @@
|
|
|
65
66
|
"peerDependencies": {
|
|
66
67
|
"@snack-uikit/locale": "*"
|
|
67
68
|
},
|
|
68
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "947af41accb00c4fee550db954f1e0bb637fd1ba"
|
|
69
70
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import cn from 'classnames';
|
|
2
|
+
import Decimal from 'decimal.js';
|
|
2
3
|
import mergeRefs from 'merge-refs';
|
|
3
4
|
import {
|
|
4
5
|
ChangeEvent,
|
|
@@ -193,13 +194,15 @@ export const FieldStepper = forwardRef<HTMLInputElement, FieldStepperProps>(
|
|
|
193
194
|
const handleMinusButtonClick = (e: MouseEvent) => {
|
|
194
195
|
e.preventDefault();
|
|
195
196
|
e.stopPropagation();
|
|
196
|
-
|
|
197
|
+
const newValue = new Decimal(value).minus(step).toNumber();
|
|
198
|
+
setValue(Math.min(Math.max(min, newValue), max));
|
|
197
199
|
};
|
|
198
200
|
|
|
199
201
|
const handlePlusButtonClick = (e: MouseEvent) => {
|
|
200
202
|
e.preventDefault();
|
|
201
203
|
e.stopPropagation();
|
|
202
|
-
|
|
204
|
+
const newValue = new Decimal(value).plus(step).toNumber();
|
|
205
|
+
setValue(Math.max(Math.min(max, newValue), min));
|
|
203
206
|
};
|
|
204
207
|
|
|
205
208
|
const handleMinusButtonKeyDown: KeyboardEventHandler<HTMLInputElement> = () => {
|