@steroidsjs/core 3.0.50 → 3.0.52
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/actions/notifications.js +12 -2
- package/docs-autogen-result.json +179 -2
- package/en.json +46 -43
- package/hooks/useSaveCursorPosition.d.ts +17 -3
- package/hooks/useSaveCursorPosition.js +40 -9
- package/package.json +1 -1
- package/ui/content/Accordion/Accordion.d.ts +9 -0
- package/ui/content/Accordion/Accordion.js +6 -1
- package/ui/form/DateField/DateField.js +3 -2
- package/ui/form/DateRangeField/DateRangeField.d.ts +1 -0
- package/ui/form/DateRangeField/DateRangeField.js +4 -3
- package/ui/form/DateTimeField/DateTimeField.js +3 -2
- package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +1 -0
- package/ui/form/DateTimeRangeField/DateTimeRangeField.js +5 -4
- package/ui/form/EmailField/EmailField.js +3 -1
- package/ui/form/InputField/InputField.d.ts +5 -0
- package/ui/form/InputField/InputField.js +6 -1
- package/ui/form/NumberField/NumberField.d.ts +5 -0
- package/ui/form/NumberField/NumberField.js +6 -1
- package/ui/form/PasswordField/PasswordField.js +3 -1
- package/ui/form/TextField/TextField.js +3 -1
- package/ui/form/TimeField/TimeField.js +1 -1
- package/ui/form/TimeRangeField/TimeRangeField.js +3 -3
package/actions/notifications.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
15
|
};
|
|
@@ -22,9 +33,8 @@ var closeNotification = function (id) {
|
|
|
22
33
|
exports.closeNotification = closeNotification;
|
|
23
34
|
var showNotification = function (message, level, params) {
|
|
24
35
|
if (level === void 0) { level = null; }
|
|
25
|
-
if (params === void 0) { params = showNotificationDefaults; }
|
|
26
36
|
return function (dispatch) {
|
|
27
|
-
var _a = params, position = _a.position, timeOut = _a.timeOut;
|
|
37
|
+
var _a = __assign(__assign({}, showNotificationDefaults), params), position = _a.position, timeOut = _a.timeOut;
|
|
28
38
|
var id = (0, uniqueId_1["default"])();
|
|
29
39
|
dispatch({
|
|
30
40
|
type: exports.NOTIFICATIONS_SHOW,
|
package/docs-autogen-result.json
CHANGED
|
@@ -4301,6 +4301,103 @@
|
|
|
4301
4301
|
],
|
|
4302
4302
|
"methods": []
|
|
4303
4303
|
},
|
|
4304
|
+
"IDebounceConfig": {
|
|
4305
|
+
"name": "IDebounceConfig",
|
|
4306
|
+
"moduleName": "hooks/useSaveCursorPosition",
|
|
4307
|
+
"title": "",
|
|
4308
|
+
"description": "",
|
|
4309
|
+
"tags": {},
|
|
4310
|
+
"defaultProps": null,
|
|
4311
|
+
"extends": [],
|
|
4312
|
+
"properties": [
|
|
4313
|
+
{
|
|
4314
|
+
"name": "delayMs",
|
|
4315
|
+
"decorators": [],
|
|
4316
|
+
"description": "Задержка в мс",
|
|
4317
|
+
"required": true,
|
|
4318
|
+
"type": "number",
|
|
4319
|
+
"example": null
|
|
4320
|
+
}
|
|
4321
|
+
],
|
|
4322
|
+
"methods": []
|
|
4323
|
+
},
|
|
4324
|
+
"ISaveCursorPositionConfig": {
|
|
4325
|
+
"name": "ISaveCursorPositionConfig",
|
|
4326
|
+
"moduleName": "hooks/useSaveCursorPosition",
|
|
4327
|
+
"title": "",
|
|
4328
|
+
"description": "",
|
|
4329
|
+
"tags": {},
|
|
4330
|
+
"defaultProps": null,
|
|
4331
|
+
"extends": [],
|
|
4332
|
+
"properties": [
|
|
4333
|
+
{
|
|
4334
|
+
"name": "debounce",
|
|
4335
|
+
"decorators": [],
|
|
4336
|
+
"description": "",
|
|
4337
|
+
"required": false,
|
|
4338
|
+
"type": "ISaveCursorPositionDebounceConfig",
|
|
4339
|
+
"example": null
|
|
4340
|
+
},
|
|
4341
|
+
{
|
|
4342
|
+
"name": "inputParams",
|
|
4343
|
+
"decorators": [],
|
|
4344
|
+
"description": "",
|
|
4345
|
+
"required": true,
|
|
4346
|
+
"type": "IInputParams",
|
|
4347
|
+
"example": null
|
|
4348
|
+
}
|
|
4349
|
+
],
|
|
4350
|
+
"methods": [
|
|
4351
|
+
{
|
|
4352
|
+
"name": "onChangeCallback",
|
|
4353
|
+
"decorators": [],
|
|
4354
|
+
"description": "",
|
|
4355
|
+
"required": false,
|
|
4356
|
+
"type": "void",
|
|
4357
|
+
"example": null,
|
|
4358
|
+
"parameters": [
|
|
4359
|
+
{
|
|
4360
|
+
"name": "value",
|
|
4361
|
+
"decorators": [],
|
|
4362
|
+
"description": "",
|
|
4363
|
+
"required": true,
|
|
4364
|
+
"type": "any",
|
|
4365
|
+
"example": null
|
|
4366
|
+
}
|
|
4367
|
+
]
|
|
4368
|
+
}
|
|
4369
|
+
]
|
|
4370
|
+
},
|
|
4371
|
+
"ISaveCursorPositionDebounceConfig": {
|
|
4372
|
+
"name": "ISaveCursorPositionDebounceConfig",
|
|
4373
|
+
"moduleName": "hooks/useSaveCursorPosition",
|
|
4374
|
+
"title": "",
|
|
4375
|
+
"description": "",
|
|
4376
|
+
"tags": {},
|
|
4377
|
+
"defaultProps": null,
|
|
4378
|
+
"extends": [
|
|
4379
|
+
"Partial<IDebounceConfig>"
|
|
4380
|
+
],
|
|
4381
|
+
"properties": [
|
|
4382
|
+
{
|
|
4383
|
+
"name": "delayMs",
|
|
4384
|
+
"decorators": [],
|
|
4385
|
+
"description": "Задержка в мс",
|
|
4386
|
+
"required": false,
|
|
4387
|
+
"type": "number",
|
|
4388
|
+
"example": null
|
|
4389
|
+
},
|
|
4390
|
+
{
|
|
4391
|
+
"name": "enabled",
|
|
4392
|
+
"decorators": [],
|
|
4393
|
+
"description": "",
|
|
4394
|
+
"required": true,
|
|
4395
|
+
"type": "boolean",
|
|
4396
|
+
"example": null
|
|
4397
|
+
}
|
|
4398
|
+
],
|
|
4399
|
+
"methods": []
|
|
4400
|
+
},
|
|
4304
4401
|
"IPreparedTreeItem": {
|
|
4305
4402
|
"name": "IPreparedTreeItem",
|
|
4306
4403
|
"moduleName": "hooks/useTree",
|
|
@@ -5704,7 +5801,9 @@
|
|
|
5704
5801
|
"title": "",
|
|
5705
5802
|
"description": "",
|
|
5706
5803
|
"tags": {},
|
|
5707
|
-
"defaultProps":
|
|
5804
|
+
"defaultProps": {
|
|
5805
|
+
"isInitialOpenAll": "false"
|
|
5806
|
+
},
|
|
5708
5807
|
"extends": [
|
|
5709
5808
|
"Omit<IAccordionProps",
|
|
5710
5809
|
"'onChange'>"
|
|
@@ -5773,6 +5872,15 @@
|
|
|
5773
5872
|
"example": "'circle'",
|
|
5774
5873
|
"defaultValue": null
|
|
5775
5874
|
},
|
|
5875
|
+
{
|
|
5876
|
+
"name": "isInitialOpenAll",
|
|
5877
|
+
"decorators": [],
|
|
5878
|
+
"description": "Изначально отображать все элементы раскрытыми",
|
|
5879
|
+
"required": false,
|
|
5880
|
+
"type": "boolean",
|
|
5881
|
+
"example": null,
|
|
5882
|
+
"defaultValue": "false"
|
|
5883
|
+
},
|
|
5776
5884
|
{
|
|
5777
5885
|
"name": "isShowMore",
|
|
5778
5886
|
"decorators": [],
|
|
@@ -5882,7 +5990,9 @@
|
|
|
5882
5990
|
"title": "Accordion",
|
|
5883
5991
|
"description": "\nКомпонент-аккордеон позволяет создавать интерактивные списки или контейнеры,\nгде содержимое может быть развернуто или свернуто по требованию пользователя.\nКаждый элемент аккордеона может быть раскрытым или свернутым, и пользователь может\nизменять их состояние путем нажатия на соответствующий заголовок элемента.\n\nКомпонент `Accordion` обычно используется для создания разделов, подразделов или\nсписков, где необходимо показывать или скрывать дополнительную информацию по требованию.\n\nВнутри компонента `Accordion` могут быть использованы дочерние элементы `AccordionItem`,\nкаждый из которых представляет отдельный элемент аккордеона с заголовком и содержимым.\nПри нажатии на заголовок, соответствующий элемент может быть развернут или свернут.\n\nПримечание: В компоненте `Accordion` должен быть указан хотя бы один дочерний элемент `AccordionItem`.\n",
|
|
5884
5992
|
"tags": {},
|
|
5885
|
-
"defaultProps":
|
|
5993
|
+
"defaultProps": {
|
|
5994
|
+
"isInitialOpenAll": "false"
|
|
5995
|
+
},
|
|
5886
5996
|
"extends": [
|
|
5887
5997
|
"IUiComponent"
|
|
5888
5998
|
],
|
|
@@ -5941,6 +6051,15 @@
|
|
|
5941
6051
|
"example": "'circle'",
|
|
5942
6052
|
"defaultValue": null
|
|
5943
6053
|
},
|
|
6054
|
+
{
|
|
6055
|
+
"name": "isInitialOpenAll",
|
|
6056
|
+
"decorators": [],
|
|
6057
|
+
"description": "Изначально отображать все элементы раскрытыми",
|
|
6058
|
+
"required": false,
|
|
6059
|
+
"type": "boolean",
|
|
6060
|
+
"example": null,
|
|
6061
|
+
"defaultValue": "false"
|
|
6062
|
+
},
|
|
5944
6063
|
{
|
|
5945
6064
|
"name": "position",
|
|
5946
6065
|
"decorators": [],
|
|
@@ -17664,6 +17783,14 @@
|
|
|
17664
17783
|
"type": "string | boolean",
|
|
17665
17784
|
"example": "calendar-day"
|
|
17666
17785
|
},
|
|
17786
|
+
{
|
|
17787
|
+
"name": "id",
|
|
17788
|
+
"decorators": [],
|
|
17789
|
+
"description": "",
|
|
17790
|
+
"required": true,
|
|
17791
|
+
"type": "string",
|
|
17792
|
+
"example": null
|
|
17793
|
+
},
|
|
17667
17794
|
{
|
|
17668
17795
|
"name": "inputProps",
|
|
17669
17796
|
"decorators": [],
|
|
@@ -18400,6 +18527,14 @@
|
|
|
18400
18527
|
"type": "string | boolean",
|
|
18401
18528
|
"example": "calendar-day"
|
|
18402
18529
|
},
|
|
18530
|
+
{
|
|
18531
|
+
"name": "id",
|
|
18532
|
+
"decorators": [],
|
|
18533
|
+
"description": "",
|
|
18534
|
+
"required": true,
|
|
18535
|
+
"type": "string",
|
|
18536
|
+
"example": null
|
|
18537
|
+
},
|
|
18403
18538
|
{
|
|
18404
18539
|
"name": "inputProps",
|
|
18405
18540
|
"decorators": [],
|
|
@@ -18624,6 +18759,14 @@
|
|
|
18624
18759
|
"type": "string | ReactElement | IAccordionIcon",
|
|
18625
18760
|
"example": "'circle'"
|
|
18626
18761
|
},
|
|
18762
|
+
{
|
|
18763
|
+
"name": "isInitialOpenAll",
|
|
18764
|
+
"decorators": [],
|
|
18765
|
+
"description": "Изначально отображать все элементы раскрытыми",
|
|
18766
|
+
"required": false,
|
|
18767
|
+
"type": "boolean",
|
|
18768
|
+
"example": null
|
|
18769
|
+
},
|
|
18627
18770
|
{
|
|
18628
18771
|
"name": "isItemToSelectAll",
|
|
18629
18772
|
"decorators": [],
|
|
@@ -24873,6 +25016,15 @@
|
|
|
24873
25016
|
"example": null,
|
|
24874
25017
|
"defaultValue": null
|
|
24875
25018
|
},
|
|
25019
|
+
{
|
|
25020
|
+
"name": "debounce",
|
|
25021
|
+
"decorators": [],
|
|
25022
|
+
"description": "Задержка применения введённого значения",
|
|
25023
|
+
"required": false,
|
|
25024
|
+
"type": "boolean | IDebounceConfig",
|
|
25025
|
+
"example": null,
|
|
25026
|
+
"defaultValue": null
|
|
25027
|
+
},
|
|
24876
25028
|
{
|
|
24877
25029
|
"name": "disabled",
|
|
24878
25030
|
"decorators": [],
|
|
@@ -25180,6 +25332,14 @@
|
|
|
25180
25332
|
"type": "any",
|
|
25181
25333
|
"example": null
|
|
25182
25334
|
},
|
|
25335
|
+
{
|
|
25336
|
+
"name": "debounce",
|
|
25337
|
+
"decorators": [],
|
|
25338
|
+
"description": "Задержка применения введённого значения",
|
|
25339
|
+
"required": false,
|
|
25340
|
+
"type": "boolean | IDebounceConfig",
|
|
25341
|
+
"example": null
|
|
25342
|
+
},
|
|
25183
25343
|
{
|
|
25184
25344
|
"name": "defaultValue",
|
|
25185
25345
|
"decorators": [],
|
|
@@ -25800,6 +25960,15 @@
|
|
|
25800
25960
|
"example": null,
|
|
25801
25961
|
"defaultValue": null
|
|
25802
25962
|
},
|
|
25963
|
+
{
|
|
25964
|
+
"name": "debounce",
|
|
25965
|
+
"decorators": [],
|
|
25966
|
+
"description": "Задержка применения введённого значения",
|
|
25967
|
+
"required": false,
|
|
25968
|
+
"type": "boolean | IDebounceConfig",
|
|
25969
|
+
"example": null,
|
|
25970
|
+
"defaultValue": null
|
|
25971
|
+
},
|
|
25803
25972
|
{
|
|
25804
25973
|
"name": "decimal",
|
|
25805
25974
|
"decorators": [],
|
|
@@ -26091,6 +26260,14 @@
|
|
|
26091
26260
|
"type": "any",
|
|
26092
26261
|
"example": null
|
|
26093
26262
|
},
|
|
26263
|
+
{
|
|
26264
|
+
"name": "debounce",
|
|
26265
|
+
"decorators": [],
|
|
26266
|
+
"description": "Задержка применения введённого значения",
|
|
26267
|
+
"required": false,
|
|
26268
|
+
"type": "boolean | IDebounceConfig",
|
|
26269
|
+
"example": null
|
|
26270
|
+
},
|
|
26094
26271
|
{
|
|
26095
26272
|
"name": "decimal",
|
|
26096
26273
|
"decorators": [],
|
package/en.json
CHANGED
|
@@ -934,49 +934,49 @@
|
|
|
934
934
|
"Фиксированная высота обертки в пикселях": "Fixed wrapper height in pixels",
|
|
935
935
|
"Чекбоксы\nМогут служить в качестве настраиваемых контроллов для создания функционала": "Checkboxes\nCan serve as customizable controls to create functionality",
|
|
936
936
|
"Заголовок графика": "Chart title",
|
|
937
|
-
"Срок хранения токена в хранилище в днях": "",
|
|
938
|
-
"Свойства для модалного окна группы событий": "",
|
|
939
|
-
"Внутреннее описания события": "",
|
|
940
|
-
"Кнопки\nМогут служить в качестве настаиваемых контроллов для создания функционала": "",
|
|
941
|
-
"Чекбоксы\nМогут служить в качестве настаиваемых контроллов для создания функционала": "",
|
|
942
|
-
"Иконка, которая отобразится слева от заголовка": "",
|
|
943
|
-
"Метод, который можно вызвать при login": "",
|
|
944
|
-
"Метод, который можно вызвать при logout": "",
|
|
945
|
-
"Получение состояние": "",
|
|
946
|
-
"\nСписок с вложенными чекбоксами. Используется в формах для создания иерархической структуры и выбора нескольких значений.\n": "",
|
|
947
|
-
"\nСоздает список из сгруппированных полей формы.\nДля загрузки файлов с помощью `FileField` внутри строк `FieldList`, нужно использовать форму с флагом `useRedux`.\n": "",
|
|
948
|
-
" Текущая страница, используется для корректного отображения пагинации": "",
|
|
949
|
-
" Количество элементов на странице, используется для корректного отображения пагинации": "",
|
|
950
|
-
" Параметры роутинга": "",
|
|
951
|
-
"Расстояние вложенных элементов от родителя для каждого уровня": "",
|
|
952
|
-
"Первичный ключ для доступа к вложенным элементам": "",
|
|
953
|
-
"Устанавливать ли фокус и показывать календарь сразу после рендера страницы": "",
|
|
954
|
-
"Заголовок для колонки таблицы": "",
|
|
955
|
-
"Будет ли отображён item?": "",
|
|
956
|
-
"Устанавливать ли фокус и показывать панель времени сразу после рендера страницы": "",
|
|
957
|
-
"Флаг, определяющий раскрывать вложенные элементы по клику на весь элемент или только на иконку": "",
|
|
958
|
-
"\nКомпонент для создания пошаговой формы. Предоставляет управление и синхронизацию состояния формы,\nа также список шагов формы для удобной навигации.\nПоля для шагов можно передавать как в виде компонентов, так и в виде объекта с названием поля.\nПозволяет выполнять отправку данных формы на сервер с возможностью валидации и перехода к неверно заполненным полям.\n\n": "",
|
|
959
|
-
"\nКомпонент TimeFormatter предназначен для форматирования времени с использованием заданного формата.\nОн позволяет кастомизировать отображение времени, используя переданный view React компонент.\n": "",
|
|
960
|
-
"При повторном нажатии на выбранный элемент из дерева, он продолжит отображаться как активный.": "",
|
|
961
|
-
"Дополнительные свойства, которые передаются во view компонента": "",
|
|
962
|
-
"Пропсы для инпута загрузки файлов": "",
|
|
963
|
-
"Переопределение view React компонента для кастомизации отображения элемента инпута": "",
|
|
964
|
-
"Кастомный placeholder для инпута": "",
|
|
965
|
-
"Если true, то location.pathname будет совпадать с теми путями, которые содержат слеш в конце.\nНапример, если указать путь '/catalog/', тогда совпадение будет с '/catalog/' и '/catalog/chapter', но не '/catalog'.": "",
|
|
966
|
-
"Кастомная иконка, заменяющая иконку раскрытия по умолчанию": "",
|
|
967
|
-
"Опции маски для полей": "",
|
|
968
|
-
"Дополнительные кнопки": "",
|
|
969
|
-
"Свойства для Form": "",
|
|
970
|
-
"Свойства для кнопки продолжить/отправить": "",
|
|
971
|
-
"Свойства для кнопки возврата": "",
|
|
972
|
-
"Показывать ли шаги": "",
|
|
973
|
-
"Ориентация списка шагов формы": "",
|
|
974
|
-
"Коллекция полей и аттрибутов для каждого шага формы. Можно передавать как компонент, так и объект с полями.\nГлавное, чтобы внутри шага использовался один из способов.": "",
|
|
975
|
-
"Свойства для Steps": "",
|
|
976
|
-
"Формат времени": "",
|
|
977
|
-
"Время": "",
|
|
978
|
-
"Флаг, который позволяет использовать вложенные роуты c указанием вложенного пути": "",
|
|
979
|
-
"Скрыть иконку c лева от элемента": "",
|
|
937
|
+
"Срок хранения токена в хранилище в днях": "Storage period of the token in the store in days",
|
|
938
|
+
"Свойства для модалного окна группы событий": "Properties for the modal window of the event group",
|
|
939
|
+
"Внутреннее описания события": "Internal event description",
|
|
940
|
+
"Кнопки\nМогут служить в качестве настаиваемых контроллов для создания функционала": "Buttons\nCan serve as insistent controls for creating functionality",
|
|
941
|
+
"Чекбоксы\nМогут служить в качестве настаиваемых контроллов для создания функционала": "Checkboxes\nCan serve as insistent controls for creating functionality",
|
|
942
|
+
"Иконка, которая отобразится слева от заголовка": "The icon that is displayed to the left of the header",
|
|
943
|
+
"Метод, который можно вызвать при login": "A method that can be called when login",
|
|
944
|
+
"Метод, который можно вызвать при logout": "A method that can be called when logout",
|
|
945
|
+
"Получение состояние": "Getting the state",
|
|
946
|
+
"\nСписок с вложенными чекбоксами. Используется в формах для создания иерархической структуры и выбора нескольких значений.\n": "\nA list with nested checkboxes. It is used in forms to create a hierarchical structure and select multiple values.\n",
|
|
947
|
+
"\nСоздает список из сгруппированных полей формы.\nДля загрузки файлов с помощью `FileField` внутри строк `FieldList`, нужно использовать форму с флагом `useRedux`.\n": "\nCreates a list of grouped form fields.\nTo upload files using the `FileField` inside the `FieldList' lines, you need to use the form with the `useRedux` flag.\n",
|
|
948
|
+
" Текущая страница, используется для корректного отображения пагинации": " The current page. It's used to display pagination correctly",
|
|
949
|
+
" Количество элементов на странице, используется для корректного отображения пагинации": " The number of elements on the page. It's used to display pagination correctly.",
|
|
950
|
+
" Параметры роутинга": " Routing parameters",
|
|
951
|
+
"Расстояние вложенных элементов от родителя для каждого уровня": "The distance of nested elements from the parent for each level",
|
|
952
|
+
"Первичный ключ для доступа к вложенным элементам": "The primary key for accessing nested elements",
|
|
953
|
+
"Устанавливать ли фокус и показывать календарь сразу после рендера страницы": "Set the focus and show the calendar immediately after the page render",
|
|
954
|
+
"Заголовок для колонки таблицы": "Header for the table column",
|
|
955
|
+
"Будет ли отображён item?": "Will the item be displayed?",
|
|
956
|
+
"Устанавливать ли фокус и показывать панель времени сразу после рендера страницы": "Set the focus and show the time panel immediately after the page render",
|
|
957
|
+
"Флаг, определяющий раскрывать вложенные элементы по клику на весь элемент или только на иконку": "Expand nested elements by clicking on the entire element or only on the icon",
|
|
958
|
+
"\nКомпонент для создания пошаговой формы. Предоставляет управление и синхронизацию состояния формы,\nа также список шагов формы для удобной навигации.\nПоля для шагов можно передавать как в виде компонентов, так и в виде объекта с названием поля.\nПозволяет выполнять отправку данных формы на сервер с возможностью валидации и перехода к неверно заполненным полям.\n\n": "\nA component for creating a step-by-step form. Provides control and synchronization of the form status,\nas well as a list of form steps for easy navigation.\nFields for steps can be passed either as components or as an object with the field name.\nAllows you to send form data to the server with the ability to validate and navigate to incorrectly filled fields.\n\n",
|
|
959
|
+
"\nКомпонент TimeFormatter предназначен для форматирования времени с использованием заданного формата.\nОн позволяет кастомизировать отображение времени, используя переданный view React компонент.\n": "\nThe TimeFormatter component is designed to format time using a preset format.\nIt allows you to customize the time display using the passed view React component.\n",
|
|
960
|
+
"При повторном нажатии на выбранный элемент из дерева, он продолжит отображаться как активный.": "When you click on the selected item from the tree again, it will continue to be displayed as active.",
|
|
961
|
+
"Дополнительные свойства, которые передаются во view компонента": "Additional properties that are passed to the component view",
|
|
962
|
+
"Пропсы для инпута загрузки файлов": "Props for file upload input",
|
|
963
|
+
"Переопределение view React компонента для кастомизации отображения элемента инпута": "Redefining the view React component to customize the display of an input element",
|
|
964
|
+
"Кастомный placeholder для инпута": "Custom placeholder for the input",
|
|
965
|
+
"Если true, то location.pathname будет совпадать с теми путями, которые содержат слеш в конце.\nНапример, если указать путь '/catalog/', тогда совпадение будет с '/catalog/' и '/catalog/chapter', но не '/catalog'.": "If true, location.pathname will match those paths that contain a slash at the end.\nFor example, if you specify the path '/catalog/', then the match will be with '/catalog/' and '/catalog/chapter', but not '/catalog'.",
|
|
966
|
+
"Кастомная иконка, заменяющая иконку раскрытия по умолчанию": "Custom icon that replaces the default disclosure icon",
|
|
967
|
+
"Опции маски для полей": "Field mask options",
|
|
968
|
+
"Дополнительные кнопки": "Additional buttons",
|
|
969
|
+
"Свойства для Form": "Properties for the Form",
|
|
970
|
+
"Свойства для кнопки продолжить/отправить": "Properties for the continue/submit button",
|
|
971
|
+
"Свойства для кнопки возврата": "Properties for the return button",
|
|
972
|
+
"Показывать ли шаги": "Show steps",
|
|
973
|
+
"Ориентация списка шагов формы": "Orientation of the step list of the form",
|
|
974
|
+
"Коллекция полей и аттрибутов для каждого шага формы. Можно передавать как компонент, так и объект с полями.\nГлавное, чтобы внутри шага использовался один из способов.": "A collection of fields and attributes for each step of the form. You can pass both a component and an object with fields.\nThe main thing is that one of the methods should be used inside the step.",
|
|
975
|
+
"Свойства для Steps": "Properties for Steps",
|
|
976
|
+
"Формат времени": "Time format",
|
|
977
|
+
"Время": "Time",
|
|
978
|
+
"Флаг, который позволяет использовать вложенные роуты c указанием вложенного пути": "A flag that allows you to use nested routes with an indication of the nested path",
|
|
979
|
+
"Скрыть иконку c лева от элемента": "Hide the icon to the left of the element",
|
|
980
980
|
"\nКомпонент `Kanban` позволяет создать доску для управления задачами.\nКоличество столбцов задается с помощью пропа `columns`.\nЗадачи на доске можно создавать, редактировать и перемещать с визуальным отображением.\n\nДля работы этого компонента необходимо установить в проекте зависимости `react-beautiful-dnd`\nи передать в пропсы `droppableComponent`, `draggableComponent` и `dndContext`\nкомпоненты `Droppable`, `Draggable` и `DragDropContext` соответственно.\n\nДля корректной работы функционала создания задач,\nнеобходимо установить в проекте зависимости `@ckeditor/ckeditor5-react v3.0.2` и `@steroidsjs/ckeditor5 v27.0.2-rc.2`,\nзатем импортировать `CKEditor` из `@ckeditor/ckeditor5-react` и `ClassicEditor` из `@steroidsjs/ckeditor5/packages/ckeditor5-build-classic`.\nИмпортированные компоненты нужно передать в проп `createTaskEditorConfig`,\nв поле `htmlComponent` передать `CKEditor`, а в `editorConstructor` передать `ClassicEditor`.\n": "",
|
|
981
981
|
"Компонент для создания HTML-разметки, использующий WYSIWYG редактор.\n\nДля использования WYSIWYG редактора, необходимо установить в проекте зависимости `@ckeditor/ckeditor5-react` и `@steroidsjs/ckeditor5`,\nзатем импортировать `CKEditor` из `@ckeditor/ckeditor5-react` и `ClassicEditor` из `@steroidsjs/ckeditor5/packages/ckeditor5-build-classic`.\nКомпонент `CKEditor` нужно передать в проп `htmlComponent`, а конструктор `ClassicEditor` в проп `editorConstructor`.\n\nПри передаче `HtmlField` с бэкенда, необходимо переопределить `view` компонента, указав локальный.\nВ локальном компоненте добавить вместо пропсов `htmlComponent` и `editorConstructor` импорты `CKEditor` и `ClassicEditor` соотвественно.\n": "",
|
|
982
982
|
"\nКомпонент Tooltip предоставляет всплывающую подсказку для дочерних элементов.\nВнутри компонента, то есть между тегами Tooltip можно использовать только html теги, например div, span и тд\n": "",
|
|
@@ -986,6 +986,7 @@
|
|
|
986
986
|
"Логическое значение, указывающее, можно ли загрузить еще элементы для списка при скролле.": "",
|
|
987
987
|
" Ref autocomplete поиска": "",
|
|
988
988
|
"Подключение бесконечного скролла": "",
|
|
989
|
+
"Задержка в мс": "",
|
|
989
990
|
"Дополнительный свойства для view части компонента": "",
|
|
990
991
|
"Используется для управления раскрытием всех элементов в дереве": "",
|
|
991
992
|
"Идентификатор (ключ) для сохранения в LocalStorage коллекции.": "",
|
|
@@ -995,6 +996,7 @@
|
|
|
995
996
|
"Количество элементов на странице, используется для корректного отображения пагинации": "",
|
|
996
997
|
"Параметры роутинга": "",
|
|
997
998
|
"Сохранение в localStorage уровней вложенности.": "",
|
|
999
|
+
"Изначально отображать все элементы раскрытыми": "",
|
|
998
1000
|
"Дополнительные свойства для списка календарей бокового календаря": "",
|
|
999
1001
|
"Дополнительные свойства для бокового календаря": "",
|
|
1000
1002
|
"Данные для формы с текущими датами календаря": "",
|
|
@@ -1021,6 +1023,7 @@
|
|
|
1021
1023
|
"Очищать сообщение об ошибке при редактировании поля. По-умолчанию включено": "",
|
|
1022
1024
|
"Конструктор редактора 'ckeditor5-react' из библиотеки @steroidsjs/ckeditor5/packages/ckeditor5-build-classic\nПримечание: для использования встроенного отображения 'HtmlField', данный компонент должен быть передан": "",
|
|
1023
1025
|
"Компонент редактора 'ckeditor5-react' из библиотеки @ckeditor\nПримечание: для использования встроенного отображения 'HtmlField', данный компонент должен быть передан": "",
|
|
1026
|
+
"Задержка применения введённого значения": "",
|
|
1024
1027
|
"Допустимое количество символов после разделителя": "",
|
|
1025
1028
|
"Может ли число быть отрицательным": "",
|
|
1026
1029
|
"Подключить бесконечный скролл": "",
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { IInputParams } from '../ui/form/Field/fieldWrapper';
|
|
3
|
-
export
|
|
3
|
+
export interface IDebounceConfig {
|
|
4
|
+
/**
|
|
5
|
+
* Задержка в мс
|
|
6
|
+
*/
|
|
7
|
+
delayMs: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ISaveCursorPositionDebounceConfig extends Partial<IDebounceConfig> {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface ISaveCursorPositionConfig {
|
|
13
|
+
inputParams: IInputParams;
|
|
14
|
+
onChangeCallback?: (value: any) => void;
|
|
15
|
+
debounce?: ISaveCursorPositionDebounceConfig;
|
|
16
|
+
}
|
|
17
|
+
export default function useSaveCursorPosition(config: ISaveCursorPositionConfig): {
|
|
4
18
|
inputRef: React.MutableRefObject<any>;
|
|
5
|
-
onChange:
|
|
19
|
+
onChange: any;
|
|
6
20
|
};
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
@@ -8,28 +31,36 @@ exports.__esModule = true;
|
|
|
8
31
|
/* eslint-disable consistent-return */
|
|
9
32
|
/* eslint-disable no-return-assign */
|
|
10
33
|
/* eslint-disable no-unused-expressions */
|
|
11
|
-
var react_1 =
|
|
12
|
-
|
|
13
|
-
|
|
34
|
+
var react_1 = __importStar(require("react"));
|
|
35
|
+
var debounce_1 = __importDefault(require("lodash-es/debounce"));
|
|
36
|
+
var DEFAULT_DEBOUNCE_DELAY_MS = 300;
|
|
37
|
+
function useSaveCursorPosition(config) {
|
|
38
|
+
var _a;
|
|
39
|
+
var _b = react_1["default"].useState(null), cursor = _b[0], setCursor = _b[1];
|
|
14
40
|
var inputRef = react_1["default"].useRef(null);
|
|
15
41
|
react_1["default"].useEffect(function () {
|
|
16
42
|
var inputElement = inputRef.current;
|
|
17
43
|
if (inputElement) {
|
|
18
44
|
inputElement.setSelectionRange(cursor, cursor);
|
|
19
45
|
}
|
|
20
|
-
}, [cursor, inputParams.value]);
|
|
46
|
+
}, [cursor, config.inputParams.value]);
|
|
21
47
|
var onChange = react_1["default"].useCallback(function (event, value) {
|
|
22
48
|
var _a, _b, _c;
|
|
23
49
|
if (value === void 0) { value = null; }
|
|
24
|
-
if (onChangeCallback) {
|
|
25
|
-
onChangeCallback(value || ((_a = event.target) === null || _a === void 0 ? void 0 : _a.value));
|
|
50
|
+
if (config.onChangeCallback) {
|
|
51
|
+
config.onChangeCallback(value || ((_a = event.target) === null || _a === void 0 ? void 0 : _a.value));
|
|
26
52
|
}
|
|
27
53
|
setCursor((_b = event === null || event === void 0 ? void 0 : event.target) === null || _b === void 0 ? void 0 : _b.selectionStart);
|
|
28
|
-
inputParams.onChange(value || ((_c = event.target) === null || _c === void 0 ? void 0 : _c.value));
|
|
29
|
-
}, [inputParams, onChangeCallback]);
|
|
54
|
+
config.inputParams.onChange(value || ((_c = event.target) === null || _c === void 0 ? void 0 : _c.value));
|
|
55
|
+
}, [config.inputParams, config.onChangeCallback]);
|
|
56
|
+
var onChangeWithDelay = (0, react_1.useMemo)(function () {
|
|
57
|
+
var _a, _b, _c;
|
|
58
|
+
return ((_a = config.debounce) === null || _a === void 0 ? void 0 : _a.enabled)
|
|
59
|
+
&& (0, debounce_1["default"])(onChange, (_c = (_b = config.debounce) === null || _b === void 0 ? void 0 : _b.delayMs) !== null && _c !== void 0 ? _c : DEFAULT_DEBOUNCE_DELAY_MS);
|
|
60
|
+
}, [config.debounce, onChange]);
|
|
30
61
|
return {
|
|
31
62
|
inputRef: inputRef,
|
|
32
|
-
onChange: onChange
|
|
63
|
+
onChange: ((_a = config.debounce) === null || _a === void 0 ? void 0 : _a.enabled) ? onChangeWithDelay : onChange
|
|
33
64
|
};
|
|
34
65
|
}
|
|
35
66
|
exports["default"] = useSaveCursorPosition;
|
package/package.json
CHANGED
|
@@ -80,6 +80,10 @@ export interface IAccordionProps extends IUiComponent {
|
|
|
80
80
|
* Отображать ли иконку у AccordionItem
|
|
81
81
|
*/
|
|
82
82
|
showIcon?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Изначально отображать все элементы раскрытыми
|
|
85
|
+
*/
|
|
86
|
+
isInitialOpenAll?: boolean;
|
|
83
87
|
}
|
|
84
88
|
export interface IAccordionItemProps extends Omit<IAccordionProps, 'onChange'> {
|
|
85
89
|
toggleAccordion?: (number: any) => void;
|
|
@@ -90,4 +94,9 @@ export interface IAccordionItemProps extends Omit<IAccordionProps, 'onChange'> {
|
|
|
90
94
|
export type IAccordionViewProps = Pick<IAccordionProps, 'children' | 'className'>;
|
|
91
95
|
export type IAccordionItemViewProps = IAccordionItemProps & IUiComponent;
|
|
92
96
|
declare function Accordion(props: IAccordionProps): JSX.Element;
|
|
97
|
+
declare namespace Accordion {
|
|
98
|
+
var defaultProps: {
|
|
99
|
+
isInitialOpenAll: boolean;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
93
102
|
export default Accordion;
|
|
@@ -47,7 +47,9 @@ var React = __importStar(require("react"));
|
|
|
47
47
|
var react_1 = require("react");
|
|
48
48
|
var hooks_1 = require("../../../hooks");
|
|
49
49
|
function Accordion(props) {
|
|
50
|
-
var _a = React.useState(
|
|
50
|
+
var _a = React.useState(function () { return props.isInitialOpenAll
|
|
51
|
+
? React.Children.map(props.children, function (_, index) { return index; }) || []
|
|
52
|
+
: []; }), selectedAccordionItems = _a[0], setSelectedAccordionItems = _a[1];
|
|
51
53
|
React.useEffect(function () {
|
|
52
54
|
if (props.onChange) {
|
|
53
55
|
props.onChange();
|
|
@@ -85,4 +87,7 @@ function Accordion(props) {
|
|
|
85
87
|
var AccordionView = components.ui.getView(props.view || 'content.AccordionView');
|
|
86
88
|
return (React.createElement(AccordionView, __assign({}, viewProps), React.Children.map(props.children, function (child, index) { return React.cloneElement(child, __assign({ style: props.style, activeKey: props.activeKey, childIndex: index, toggleCollapse: toggleCollapse, toggleAccordion: toggleAccordion, hasOneOpenItem: props.hasOneOpenItem, isShowMore: (selectedAccordionItems || []).includes(index), icon: props.icon, showIcon: props.showIcon }, child.props)); })));
|
|
87
89
|
}
|
|
90
|
+
Accordion.defaultProps = {
|
|
91
|
+
isInitialOpenAll: false
|
|
92
|
+
};
|
|
88
93
|
exports["default"] = Accordion;
|
|
@@ -39,8 +39,9 @@ function DateField(props) {
|
|
|
39
39
|
}), onClear = _a.onClear, onClose = _a.onClose, isOpened = _a.isOpened, inputProps = _a.inputProps;
|
|
40
40
|
// Calendar props
|
|
41
41
|
var calendarProps = (0, react_1.useMemo)(function () { return (__assign({ value: props.input.value, onChange: props.input.onChange, valueFormat: props.valueFormat }, props.calendarProps)); }, [props.calendarProps, props.input.onChange, props.input.value, props.valueFormat]);
|
|
42
|
-
var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.viewProps), { calendarProps: calendarProps, onClear: onClear, onClose: onClose, isOpened: isOpened, inputProps: inputProps, size: props.size, icon: props.icon, errors: props.errors, label: props.label, disabled: props.disabled, className: props.className, showRemove: props.showRemove, style: props.style, autoPositioning: props.autoPositioning, maskInputRef: maskInputRef })); }, [
|
|
43
|
-
props.
|
|
42
|
+
var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.viewProps), { calendarProps: calendarProps, onClear: onClear, onClose: onClose, isOpened: isOpened, inputProps: inputProps, size: props.size, icon: props.icon, errors: props.errors, label: props.label, disabled: props.disabled, className: props.className, showRemove: props.showRemove, style: props.style, autoPositioning: props.autoPositioning, maskInputRef: maskInputRef, id: props.id })); }, [props.viewProps, props.size, props.icon, props.errors, props.label, props.disabled,
|
|
43
|
+
props.className, props.showRemove, props.style, props.autoPositioning, props.id,
|
|
44
|
+
calendarProps, onClear, onClose, isOpened, inputProps, maskInputRef]);
|
|
44
45
|
return components.ui.renderView(props.view || 'form.DateFieldView', viewProps);
|
|
45
46
|
}
|
|
46
47
|
DateField.defaultProps = {
|
|
@@ -107,6 +107,7 @@ export interface IDateRangeFieldViewProps extends IDateInputStateOutput, Omit<IF
|
|
|
107
107
|
* Ref для input элемента, который накладывает маску на поле to
|
|
108
108
|
*/
|
|
109
109
|
maskInputFromTo?: React.RefCallback<HTMLElement>;
|
|
110
|
+
id: string;
|
|
110
111
|
}
|
|
111
112
|
declare const _default: import("../../form/Field/fieldWrapper").FieldWrapperComponent<IDateRangeFieldProps>;
|
|
112
113
|
export default _default;
|
|
@@ -118,9 +118,10 @@ function DateRangeField(props) {
|
|
|
118
118
|
inputPropsTo: extendedInputPropsTo,
|
|
119
119
|
inputPropsFrom: extendedInputPropsFrom,
|
|
120
120
|
isOpened: focus === 'from' ? isOpenedFrom : isOpenedTo,
|
|
121
|
-
style: props.style
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
style: props.style,
|
|
122
|
+
id: props.id
|
|
123
|
+
}); }, [calendarProps, extendedInputPropsFrom, extendedInputPropsTo, focus, isOpenedFrom, isOpenedTo, onClear, onClose,
|
|
124
|
+
props.className, props.disabled, props.errorsFrom, props.errorsTo, props.icon, props.id, props.showRemove, props.size, props.style]);
|
|
124
125
|
return components.ui.renderView(props.view || 'form.DateRangeFieldView', viewProps);
|
|
125
126
|
}
|
|
126
127
|
DateRangeField.defaultProps = {
|
|
@@ -75,9 +75,10 @@ function DateTimeField(props) {
|
|
|
75
75
|
className: props.className,
|
|
76
76
|
showRemove: props.showRemove,
|
|
77
77
|
disabled: props.disabled,
|
|
78
|
-
style: props.style
|
|
78
|
+
style: props.style,
|
|
79
|
+
id: props.id
|
|
79
80
|
}); }, [calendarProps, inputProps, isOpened, maskInputRef, onClear, onClose, props.className, props.disabled, props.errors, props.icon,
|
|
80
|
-
props.placeholder, props.showRemove, props.size, props.style, timePanelViewProps]);
|
|
81
|
+
props.id, props.placeholder, props.showRemove, props.size, props.style, timePanelViewProps]);
|
|
81
82
|
return components.ui.renderView(props.view || 'form.DateTimeFieldView', viewProps);
|
|
82
83
|
}
|
|
83
84
|
DateTimeField.defaultProps = {
|
|
@@ -76,6 +76,7 @@ export interface IDateTimeRangeFieldViewProps extends IDateInputStateOutput, Omi
|
|
|
76
76
|
inputPropsTo?: any;
|
|
77
77
|
errorsFrom?: any;
|
|
78
78
|
errorsTo?: any;
|
|
79
|
+
id: string;
|
|
79
80
|
}
|
|
80
81
|
declare const _default: import("../../form/Field/fieldWrapper").FieldWrapperComponent<IDateTimeRangeFieldProps>;
|
|
81
82
|
export default _default;
|
|
@@ -156,10 +156,11 @@ function DateTimeRangeField(props) {
|
|
|
156
156
|
inputPropsFrom: extendedInputPropsFrom,
|
|
157
157
|
isOpened: focus === 'from' ? isOpenedFrom : isOpenedTo,
|
|
158
158
|
disabled: props.disabled,
|
|
159
|
-
style: props.style
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
props.
|
|
159
|
+
style: props.style,
|
|
160
|
+
id: props.id
|
|
161
|
+
}); }, [calendarProps, extendedInputPropsFrom, extendedInputPropsTo, focus, isOpenedFrom,
|
|
162
|
+
isOpenedTo, onClear, onClose, props.className, props.disabled, props.errorsFrom,
|
|
163
|
+
props.errorsTo, props.icon, props.id, props.showRemove, props.size, props.style, timePanelViewProps]);
|
|
163
164
|
return components.ui.renderView(props.view || 'form.DateTimeRangeFieldView', viewProps);
|
|
164
165
|
}
|
|
165
166
|
DateTimeRangeField.defaultProps = {
|
|
@@ -43,7 +43,9 @@ var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
|
43
43
|
var useInputTypeEmail_1 = __importDefault(require("./hooks/useInputTypeEmail"));
|
|
44
44
|
function EmailField(props) {
|
|
45
45
|
var components = (0, hooks_1.useComponents)();
|
|
46
|
-
var _a = (0, hooks_1.useSaveCursorPosition)(
|
|
46
|
+
var _a = (0, hooks_1.useSaveCursorPosition)({
|
|
47
|
+
inputParams: props.input
|
|
48
|
+
}), currentInputRef = _a.inputRef, onChange = _a.onChange;
|
|
47
49
|
var onInputChange = (0, useInputTypeEmail_1["default"])(currentInputRef, onChange, props.input.value).onInputChange;
|
|
48
50
|
var onClear = react_1["default"].useCallback(function () { return props.input.onChange(''); }, [props.input]);
|
|
49
51
|
var inputProps = react_1["default"].useMemo(function () {
|
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { InputHTMLAttributes, ReactNode } from 'react';
|
|
3
3
|
import { MaskitoOptions } from '@maskito/core';
|
|
4
4
|
import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../Field/fieldWrapper';
|
|
5
|
+
import { IDebounceConfig } from '../../../hooks/useSaveCursorPosition';
|
|
5
6
|
export declare const MASK_PRESETS: {
|
|
6
7
|
date: Required<MaskitoOptions>;
|
|
7
8
|
phone: {
|
|
@@ -87,6 +88,10 @@ export interface IInputFieldProps extends IBaseFieldProps {
|
|
|
87
88
|
* Пользовательская иконка svg или название иконки
|
|
88
89
|
*/
|
|
89
90
|
leadIcon?: React.ReactElement | string;
|
|
91
|
+
/**
|
|
92
|
+
* Задержка применения введённого значения
|
|
93
|
+
*/
|
|
94
|
+
debounce?: boolean | IDebounceConfig;
|
|
90
95
|
}
|
|
91
96
|
export interface IInputFieldViewProps extends IInputFieldProps, IFieldWrapperOutputProps {
|
|
92
97
|
inputProps: {
|
|
@@ -86,11 +86,16 @@ exports.MASK_PRESETS = {
|
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
function InputField(props) {
|
|
89
|
+
var _a;
|
|
89
90
|
var components = (0, hooks_1.useComponents)();
|
|
90
91
|
var maskedInputRef = (0, react_2.useMaskito)({
|
|
91
92
|
options: props.maskOptions
|
|
92
93
|
});
|
|
93
|
-
var
|
|
94
|
+
var _b = (0, hooks_1.useSaveCursorPosition)({
|
|
95
|
+
inputParams: props.input,
|
|
96
|
+
onChangeCallback: props.onChange,
|
|
97
|
+
debounce: __assign({ enabled: !!props.debounce }, (typeof props.debounce === 'boolean' ? { enabled: props.debounce } : ((_a = props.debounce) !== null && _a !== void 0 ? _a : {})))
|
|
98
|
+
}), inputRef = _b.inputRef, onChange = _b.onChange;
|
|
94
99
|
React.useEffect(function () {
|
|
95
100
|
if (inputRef.current) {
|
|
96
101
|
maskedInputRef(inputRef.current);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { ChangeEvent } from 'react';
|
|
2
2
|
import { IBaseFieldProps } from '../InputField/InputField';
|
|
3
3
|
import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../Field/fieldWrapper';
|
|
4
|
+
import { IDebounceConfig } from '../../../hooks/useSaveCursorPosition';
|
|
4
5
|
/**
|
|
5
6
|
* NumberField
|
|
6
7
|
*
|
|
@@ -30,6 +31,10 @@ export interface INumberFieldProps extends IFieldWrapperInputProps, IBaseFieldPr
|
|
|
30
31
|
* Может ли число быть отрицательным
|
|
31
32
|
*/
|
|
32
33
|
isCanBeNegative?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Задержка применения введённого значения
|
|
36
|
+
*/
|
|
37
|
+
debounce?: boolean | IDebounceConfig;
|
|
33
38
|
}
|
|
34
39
|
export interface INumberFieldViewProps extends INumberFieldProps, IFieldWrapperOutputProps {
|
|
35
40
|
inputProps: {
|
|
@@ -44,8 +44,13 @@ var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
|
44
44
|
var useInputTypeNumber_1 = __importDefault(require("./hooks/useInputTypeNumber"));
|
|
45
45
|
var DEFAULT_STEP = 1;
|
|
46
46
|
function NumberField(props) {
|
|
47
|
+
var _a;
|
|
47
48
|
var components = (0, hooks_1.useComponents)();
|
|
48
|
-
var
|
|
49
|
+
var _b = (0, hooks_1.useSaveCursorPosition)({
|
|
50
|
+
inputParams: props.input,
|
|
51
|
+
onChangeCallback: props.onChange,
|
|
52
|
+
debounce: __assign({ enabled: !!props.debounce }, (typeof props.debounce === 'boolean' ? { enabled: props.debounce } : ((_a = props.debounce) !== null && _a !== void 0 ? _a : {})))
|
|
53
|
+
}), currentInputRef = _b.inputRef, onChange = _b.onChange;
|
|
49
54
|
var step = react_1["default"].useMemo(function () { var _a; return (_a = props.step) !== null && _a !== void 0 ? _a : DEFAULT_STEP; }, [props.step]);
|
|
50
55
|
var onInputChange = (0, useInputTypeNumber_1["default"])(currentInputRef, {
|
|
51
56
|
max: props.max,
|
|
@@ -55,7 +55,9 @@ exports.checkPassword = checkPassword;
|
|
|
55
55
|
function PasswordField(props) {
|
|
56
56
|
var _a = (0, react_1.useState)(InputType.PASSWORD), type = _a[0], setType = _a[1];
|
|
57
57
|
var components = (0, hooks_1.useComponents)();
|
|
58
|
-
var _b = (0, hooks_1.useSaveCursorPosition)(
|
|
58
|
+
var _b = (0, hooks_1.useSaveCursorPosition)({
|
|
59
|
+
inputParams: props.input
|
|
60
|
+
}), inputRef = _b.inputRef, onChange = _b.onChange;
|
|
59
61
|
var onClear = (0, react_1.useCallback)(function () { return props.input.onChange(''); }, [props.input]);
|
|
60
62
|
var onShowButtonClick = (0, react_1.useCallback)(function () {
|
|
61
63
|
type === InputType.PASSWORD ? setType(InputType.TEXT) : setType(InputType.PASSWORD);
|
|
@@ -20,7 +20,9 @@ var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
|
20
20
|
function TextField(props) {
|
|
21
21
|
// const dispatch = useDispatch();
|
|
22
22
|
var components = (0, hooks_1.useComponents)();
|
|
23
|
-
var _a = (0, hooks_1.useSaveCursorPosition)(
|
|
23
|
+
var _a = (0, hooks_1.useSaveCursorPosition)({
|
|
24
|
+
inputParams: props.input
|
|
25
|
+
}), inputRef = _a.inputRef, onChange = _a.onChange;
|
|
24
26
|
var onKeyUp = (0, react_1.useCallback)(function (e) {
|
|
25
27
|
if (props.submitOnEnter
|
|
26
28
|
&& props.formId
|
|
@@ -33,7 +33,7 @@ function TimeField(props) {
|
|
|
33
33
|
dateInUTC: props.dateInUTC
|
|
34
34
|
}), onNow = _a.onNow, onClear = _a.onClear, onClose = _a.onClose, isOpened = _a.isOpened, inputProps = _a.inputProps;
|
|
35
35
|
var timePanelViewProps = (0, react_1.useMemo)(function () { return (__assign({ onNow: onNow, onClose: onClose, value: inputProps.value, onSelect: inputProps.onChange }, props.timePanelViewProps)); }, [inputProps.onChange, inputProps.value, onClose, onNow, props.timePanelViewProps]);
|
|
36
|
-
var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.viewProps), { onNow: onNow, onClear: onClear, onClose: onClose, isOpened: isOpened, inputProps: inputProps, timePanelViewProps: timePanelViewProps, size: props.size, icon: props.icon, errors: props.errors, noBorder: props.noBorder, disabled: props.disabled, className: props.className, style: props.style, showRemove: props.showRemove })); }, [inputProps, isOpened, onClear, onClose, onNow, props.className, props.disabled, props.errors, props.icon, props.noBorder,
|
|
36
|
+
var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.viewProps), { onNow: onNow, onClear: onClear, onClose: onClose, isOpened: isOpened, inputProps: inputProps, timePanelViewProps: timePanelViewProps, size: props.size, icon: props.icon, errors: props.errors, noBorder: props.noBorder, disabled: props.disabled, className: props.className, style: props.style, showRemove: props.showRemove, id: props.id })); }, [inputProps, isOpened, onClear, onClose, onNow, props.className, props.disabled, props.errors, props.icon, props.id, props.noBorder,
|
|
37
37
|
props.showRemove, props.size, props.style, props.viewProps, timePanelViewProps]);
|
|
38
38
|
return components.ui.renderView(props.view || 'form.TimeFieldView', viewProps);
|
|
39
39
|
}
|
|
@@ -71,9 +71,9 @@ function TimeRangeField(props) {
|
|
|
71
71
|
}), focus = _c.focus, onClose = _c.onClose, onClear = _c.onClear, extendedInputPropsFrom = _c.extendedInputPropsFrom, extendedInputPropsTo = _c.extendedInputPropsTo;
|
|
72
72
|
var timePanelFromViewProps = (0, react_1.useMemo)(function () { return (__assign({ onNow: onNowFrom, onClose: onCloseFrom, value: inputPropsFrom.value, onSelect: inputPropsFrom.onChange }, props.timePanelViewProps)); }, [inputPropsFrom.onChange, inputPropsFrom.value, onCloseFrom, onNowFrom, props.timePanelViewProps]);
|
|
73
73
|
var timePanelToViewProps = (0, react_1.useMemo)(function () { return (__assign({ onNow: onNowTo, onClose: onCloseTo, value: inputPropsTo.value, onSelect: inputPropsTo.onChange }, props.timePanelViewProps)); }, [inputPropsTo.onChange, inputPropsTo.value, onCloseTo, onNowTo, props.timePanelViewProps]);
|
|
74
|
-
var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.viewProps), { onClear: onClear, onClose: onClose, inputPropsFrom: extendedInputPropsFrom, inputPropsTo: extendedInputPropsTo, isOpened: focus === 'from' ? isOpenedFrom : isOpenedTo, style: props.style, errorsFrom: props.errorsFrom, errorsTo: props.errorsTo, errors: props.errors, timePanelFromViewProps: timePanelFromViewProps, timePanelToViewProps: timePanelToViewProps, size: props.size, icon: props.icon, disabled: props.disabled, showRemove: props.showRemove, className: props.className })); }, [extendedInputPropsFrom, extendedInputPropsTo, focus, isOpenedFrom, isOpenedTo, onClear, onClose, props.className,
|
|
75
|
-
props.disabled, props.errors, props.errorsFrom, props.errorsTo, props.icon, props.
|
|
76
|
-
props.viewProps, timePanelFromViewProps, timePanelToViewProps]);
|
|
74
|
+
var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.viewProps), { onClear: onClear, onClose: onClose, inputPropsFrom: extendedInputPropsFrom, inputPropsTo: extendedInputPropsTo, isOpened: focus === 'from' ? isOpenedFrom : isOpenedTo, style: props.style, errorsFrom: props.errorsFrom, errorsTo: props.errorsTo, errors: props.errors, timePanelFromViewProps: timePanelFromViewProps, timePanelToViewProps: timePanelToViewProps, size: props.size, icon: props.icon, disabled: props.disabled, showRemove: props.showRemove, className: props.className, id: props.id })); }, [extendedInputPropsFrom, extendedInputPropsTo, focus, isOpenedFrom, isOpenedTo, onClear, onClose, props.className,
|
|
75
|
+
props.disabled, props.errors, props.errorsFrom, props.errorsTo, props.icon, props.id, props.showRemove, props.size,
|
|
76
|
+
props.style, props.viewProps, timePanelFromViewProps, timePanelToViewProps]);
|
|
77
77
|
return components.ui.renderView(props.view || 'form.TimeRangeFieldView', viewProps);
|
|
78
78
|
}
|
|
79
79
|
TimeRangeField.defaultProps = {
|