@steroidsjs/core 3.0.82 → 3.0.83
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/docs-autogen-result.json +170 -3
- package/en.json +4 -0
- package/package.json +1 -1
- package/ui/form/DateField/DateField.d.ts +7 -0
- package/ui/form/DateField/DateField.js +16 -9
- package/ui/form/DateField/useDateInputState.js +3 -0
- package/ui/form/DateRangeField/DateRangeField.d.ts +7 -0
- package/ui/form/DateRangeField/DateRangeField.js +28 -45
- package/ui/form/DateTimeField/DateTimeField.d.ts +19 -0
- package/ui/form/DateTimeField/DateTimeField.js +27 -21
- package/ui/form/DateTimeField/utils.d.ts +8 -0
- package/ui/form/DateTimeField/utils.js +81 -0
- package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +23 -0
- package/ui/form/DateTimeRangeField/DateTimeRangeField.js +40 -63
- package/ui/form/TimeField/TimeField.d.ts +19 -2
- package/ui/form/TimeField/TimeField.js +16 -6
- package/ui/form/TimeField/utils.d.ts +9 -0
- package/ui/form/TimeField/utils.js +100 -0
- package/ui/form/TimeRangeField/TimeRangeField.d.ts +26 -0
- package/ui/form/TimeRangeField/TimeRangeField.js +28 -12
package/docs-autogen-result.json
CHANGED
|
@@ -16784,6 +16784,15 @@
|
|
|
16784
16784
|
"example": "true",
|
|
16785
16785
|
"defaultValue": null
|
|
16786
16786
|
},
|
|
16787
|
+
{
|
|
16788
|
+
"name": "disabledDays",
|
|
16789
|
+
"decorators": [],
|
|
16790
|
+
"description": " Ограничение доступных дат.",
|
|
16791
|
+
"required": false,
|
|
16792
|
+
"type": "{after: Date, before: Date}",
|
|
16793
|
+
"example": null,
|
|
16794
|
+
"defaultValue": null
|
|
16795
|
+
},
|
|
16787
16796
|
{
|
|
16788
16797
|
"name": "displayFormat",
|
|
16789
16798
|
"decorators": [],
|
|
@@ -17551,6 +17560,15 @@
|
|
|
17551
17560
|
"example": "true",
|
|
17552
17561
|
"defaultValue": null
|
|
17553
17562
|
},
|
|
17563
|
+
{
|
|
17564
|
+
"name": "disabledDays",
|
|
17565
|
+
"decorators": [],
|
|
17566
|
+
"description": " Ограничение доступных дат.",
|
|
17567
|
+
"required": false,
|
|
17568
|
+
"type": "{after: Date, before: Date}",
|
|
17569
|
+
"example": null,
|
|
17570
|
+
"defaultValue": null
|
|
17571
|
+
},
|
|
17554
17572
|
{
|
|
17555
17573
|
"name": "displayFormat",
|
|
17556
17574
|
"decorators": [],
|
|
@@ -18086,6 +18104,15 @@
|
|
|
18086
18104
|
"example": "'isVisible'",
|
|
18087
18105
|
"defaultValue": null
|
|
18088
18106
|
},
|
|
18107
|
+
{
|
|
18108
|
+
"name": "availableTime",
|
|
18109
|
+
"decorators": [],
|
|
18110
|
+
"description": "Ограничение доступного времени.",
|
|
18111
|
+
"required": false,
|
|
18112
|
+
"type": "{from: string, to: string}",
|
|
18113
|
+
"example": null,
|
|
18114
|
+
"defaultValue": null
|
|
18115
|
+
},
|
|
18089
18116
|
{
|
|
18090
18117
|
"name": "calendarProps",
|
|
18091
18118
|
"decorators": [],
|
|
@@ -18140,6 +18167,15 @@
|
|
|
18140
18167
|
"example": "true",
|
|
18141
18168
|
"defaultValue": null
|
|
18142
18169
|
},
|
|
18170
|
+
{
|
|
18171
|
+
"name": "disabledDays",
|
|
18172
|
+
"decorators": [],
|
|
18173
|
+
"description": " Ограничение доступных дат.",
|
|
18174
|
+
"required": false,
|
|
18175
|
+
"type": "{after: Date, before: Date}",
|
|
18176
|
+
"example": null,
|
|
18177
|
+
"defaultValue": null
|
|
18178
|
+
},
|
|
18143
18179
|
{
|
|
18144
18180
|
"name": "displayFormat",
|
|
18145
18181
|
"decorators": [],
|
|
@@ -18239,6 +18275,15 @@
|
|
|
18239
18275
|
"example": null,
|
|
18240
18276
|
"defaultValue": null
|
|
18241
18277
|
},
|
|
18278
|
+
{
|
|
18279
|
+
"name": "minuteStep",
|
|
18280
|
+
"decorators": [],
|
|
18281
|
+
"description": "Шаг минут",
|
|
18282
|
+
"required": false,
|
|
18283
|
+
"type": "number",
|
|
18284
|
+
"example": "15",
|
|
18285
|
+
"defaultValue": null
|
|
18286
|
+
},
|
|
18242
18287
|
{
|
|
18243
18288
|
"name": "model",
|
|
18244
18289
|
"decorators": [],
|
|
@@ -18518,6 +18563,15 @@
|
|
|
18518
18563
|
"example": "'toTime'",
|
|
18519
18564
|
"defaultValue": null
|
|
18520
18565
|
},
|
|
18566
|
+
{
|
|
18567
|
+
"name": "availableTime",
|
|
18568
|
+
"decorators": [],
|
|
18569
|
+
"description": "Ограничение доступного времени.",
|
|
18570
|
+
"required": false,
|
|
18571
|
+
"type": "{from: string, to: string}",
|
|
18572
|
+
"example": null,
|
|
18573
|
+
"defaultValue": null
|
|
18574
|
+
},
|
|
18521
18575
|
{
|
|
18522
18576
|
"name": "calendarProps",
|
|
18523
18577
|
"decorators": [],
|
|
@@ -18536,6 +18590,24 @@
|
|
|
18536
18590
|
"example": null,
|
|
18537
18591
|
"defaultValue": null
|
|
18538
18592
|
},
|
|
18593
|
+
{
|
|
18594
|
+
"name": "dateTimeSeparator",
|
|
18595
|
+
"decorators": [],
|
|
18596
|
+
"description": "Разделитель для даты и времени, не влияет на отображение",
|
|
18597
|
+
"required": false,
|
|
18598
|
+
"type": "string",
|
|
18599
|
+
"example": null,
|
|
18600
|
+
"defaultValue": null
|
|
18601
|
+
},
|
|
18602
|
+
{
|
|
18603
|
+
"name": "disabledDays",
|
|
18604
|
+
"decorators": [],
|
|
18605
|
+
"description": " Ограничение доступных дат.",
|
|
18606
|
+
"required": false,
|
|
18607
|
+
"type": "{after: Date, before: Date}",
|
|
18608
|
+
"example": null,
|
|
18609
|
+
"defaultValue": null
|
|
18610
|
+
},
|
|
18539
18611
|
{
|
|
18540
18612
|
"name": "hasInitialFocus",
|
|
18541
18613
|
"decorators": [],
|
|
@@ -18572,6 +18644,15 @@
|
|
|
18572
18644
|
"example": null,
|
|
18573
18645
|
"defaultValue": null
|
|
18574
18646
|
},
|
|
18647
|
+
{
|
|
18648
|
+
"name": "minuteStep",
|
|
18649
|
+
"decorators": [],
|
|
18650
|
+
"description": "Шаг минут",
|
|
18651
|
+
"required": false,
|
|
18652
|
+
"type": "number",
|
|
18653
|
+
"example": "15",
|
|
18654
|
+
"defaultValue": null
|
|
18655
|
+
},
|
|
18575
18656
|
{
|
|
18576
18657
|
"name": "rangeButtonsPosition",
|
|
18577
18658
|
"decorators": [],
|
|
@@ -29901,6 +29982,15 @@
|
|
|
29901
29982
|
"example": "'isVisible'",
|
|
29902
29983
|
"defaultValue": null
|
|
29903
29984
|
},
|
|
29985
|
+
{
|
|
29986
|
+
"name": "availableTime",
|
|
29987
|
+
"decorators": [],
|
|
29988
|
+
"description": " Ограничение доступного времени.",
|
|
29989
|
+
"required": false,
|
|
29990
|
+
"type": "{from: string, to: string}",
|
|
29991
|
+
"example": null,
|
|
29992
|
+
"defaultValue": null
|
|
29993
|
+
},
|
|
29904
29994
|
{
|
|
29905
29995
|
"name": "className",
|
|
29906
29996
|
"decorators": [],
|
|
@@ -30027,6 +30117,24 @@
|
|
|
30027
30117
|
"example": "'Visible'",
|
|
30028
30118
|
"defaultValue": null
|
|
30029
30119
|
},
|
|
30120
|
+
{
|
|
30121
|
+
"name": "maskOptions",
|
|
30122
|
+
"decorators": [],
|
|
30123
|
+
"description": "Опции маски для поля ввода",
|
|
30124
|
+
"required": false,
|
|
30125
|
+
"type": "MaskitoOptions",
|
|
30126
|
+
"example": null,
|
|
30127
|
+
"defaultValue": null
|
|
30128
|
+
},
|
|
30129
|
+
{
|
|
30130
|
+
"name": "minuteStep",
|
|
30131
|
+
"decorators": [],
|
|
30132
|
+
"description": "Шаг минут",
|
|
30133
|
+
"required": false,
|
|
30134
|
+
"type": "number",
|
|
30135
|
+
"example": "15",
|
|
30136
|
+
"defaultValue": null
|
|
30137
|
+
},
|
|
30030
30138
|
{
|
|
30031
30139
|
"name": "model",
|
|
30032
30140
|
"decorators": [],
|
|
@@ -30184,10 +30292,18 @@
|
|
|
30184
30292
|
"defaultProps": null,
|
|
30185
30293
|
"extends": [
|
|
30186
30294
|
"IDateInputStateOutput",
|
|
30187
|
-
"Pick
|
|
30188
|
-
"'size' | 'errors' | 'showRemove' | 'noBorder' | 'className' | 'timePanelViewProps' | 'style'>"
|
|
30295
|
+
"Pick<\n ITimeFieldProps",
|
|
30296
|
+
"'size' | 'errors' | 'showRemove' | 'noBorder' | 'className' | 'timePanelViewProps' | 'style' | 'availableTime' | 'minuteStep'\n >"
|
|
30189
30297
|
],
|
|
30190
30298
|
"properties": [
|
|
30299
|
+
{
|
|
30300
|
+
"name": "availableTime",
|
|
30301
|
+
"decorators": [],
|
|
30302
|
+
"description": " Ограничение доступного времени.",
|
|
30303
|
+
"required": false,
|
|
30304
|
+
"type": "{from: string, to: string}",
|
|
30305
|
+
"example": null
|
|
30306
|
+
},
|
|
30191
30307
|
{
|
|
30192
30308
|
"name": "className",
|
|
30193
30309
|
"decorators": [],
|
|
@@ -30220,6 +30336,14 @@
|
|
|
30220
30336
|
"type": "boolean",
|
|
30221
30337
|
"example": null
|
|
30222
30338
|
},
|
|
30339
|
+
{
|
|
30340
|
+
"name": "minuteStep",
|
|
30341
|
+
"decorators": [],
|
|
30342
|
+
"description": "Шаг минут",
|
|
30343
|
+
"required": false,
|
|
30344
|
+
"type": "number",
|
|
30345
|
+
"example": "15"
|
|
30346
|
+
},
|
|
30223
30347
|
{
|
|
30224
30348
|
"name": "noBorder",
|
|
30225
30349
|
"decorators": [],
|
|
@@ -30300,9 +30424,17 @@
|
|
|
30300
30424
|
"defaultProps": null,
|
|
30301
30425
|
"extends": [
|
|
30302
30426
|
"Pick<ITimeFieldViewProps",
|
|
30303
|
-
"'value' | 'onClose' | 'onNow' | 'onSelect' | 'className'>"
|
|
30427
|
+
"'value' | 'onClose' | 'onNow' | 'onSelect' | 'className' | 'availableTime' | 'minuteStep'>"
|
|
30304
30428
|
],
|
|
30305
30429
|
"properties": [
|
|
30430
|
+
{
|
|
30431
|
+
"name": "availableTime",
|
|
30432
|
+
"decorators": [],
|
|
30433
|
+
"description": " Ограничение доступного времени.",
|
|
30434
|
+
"required": false,
|
|
30435
|
+
"type": "{from: string, to: string}",
|
|
30436
|
+
"example": null
|
|
30437
|
+
},
|
|
30306
30438
|
{
|
|
30307
30439
|
"name": "className",
|
|
30308
30440
|
"decorators": [],
|
|
@@ -30311,6 +30443,14 @@
|
|
|
30311
30443
|
"type": "string",
|
|
30312
30444
|
"example": null
|
|
30313
30445
|
},
|
|
30446
|
+
{
|
|
30447
|
+
"name": "minuteStep",
|
|
30448
|
+
"decorators": [],
|
|
30449
|
+
"description": "Шаг минут",
|
|
30450
|
+
"required": false,
|
|
30451
|
+
"type": "number",
|
|
30452
|
+
"example": "15"
|
|
30453
|
+
},
|
|
30314
30454
|
{
|
|
30315
30455
|
"name": "showHeader",
|
|
30316
30456
|
"decorators": [],
|
|
@@ -30390,6 +30530,15 @@
|
|
|
30390
30530
|
"example": "'toTime'",
|
|
30391
30531
|
"defaultValue": null
|
|
30392
30532
|
},
|
|
30533
|
+
{
|
|
30534
|
+
"name": "availableTime",
|
|
30535
|
+
"decorators": [],
|
|
30536
|
+
"description": " Ограничение доступного времени.",
|
|
30537
|
+
"required": false,
|
|
30538
|
+
"type": "{from: string, to: string}",
|
|
30539
|
+
"example": null,
|
|
30540
|
+
"defaultValue": null
|
|
30541
|
+
},
|
|
30393
30542
|
{
|
|
30394
30543
|
"name": "className",
|
|
30395
30544
|
"decorators": [],
|
|
@@ -30543,6 +30692,24 @@
|
|
|
30543
30692
|
"example": "'Visible'",
|
|
30544
30693
|
"defaultValue": null
|
|
30545
30694
|
},
|
|
30695
|
+
{
|
|
30696
|
+
"name": "maskOptions",
|
|
30697
|
+
"decorators": [],
|
|
30698
|
+
"description": "Опции маски для полей",
|
|
30699
|
+
"required": false,
|
|
30700
|
+
"type": "{from: MaskitoOptions, to: MaskitoOptions}",
|
|
30701
|
+
"example": null,
|
|
30702
|
+
"defaultValue": null
|
|
30703
|
+
},
|
|
30704
|
+
{
|
|
30705
|
+
"name": "minuteStep",
|
|
30706
|
+
"decorators": [],
|
|
30707
|
+
"description": "Шаг минут",
|
|
30708
|
+
"required": false,
|
|
30709
|
+
"type": "number",
|
|
30710
|
+
"example": "15",
|
|
30711
|
+
"defaultValue": null
|
|
30712
|
+
},
|
|
30546
30713
|
{
|
|
30547
30714
|
"name": "model",
|
|
30548
30715
|
"decorators": [],
|
package/en.json
CHANGED
|
@@ -1020,11 +1020,14 @@
|
|
|
1020
1020
|
"Пропсы для отображения элемента": "",
|
|
1021
1021
|
"Отображать чекбоксы только на узлах, не имеющих вложенных элементов": "",
|
|
1022
1022
|
"View компонент для элемента дерева": "",
|
|
1023
|
+
" Ограничение доступных дат.": "",
|
|
1023
1024
|
"Положение дополнительных кнопок (сегодня, вчера и прочие)\nЕсли указано в формате 'position1-position2', то 'position1' будет на устройствах > $tablet-width, а 'position2' на остальных.": "",
|
|
1024
1025
|
"Перемещать ли фокус на пустое после заполнения": "",
|
|
1025
1026
|
"Активирует логику:\n- Если кликнули по дате начала или конца диапазона, то позволяем её изменить следующим кликом\n- Если клик не на дату конца или начала диапазона, а диапазон есть, то сбрасываем его\n- Если клик не на дату конца или начала диапазона, а диапазона нет, то устанавливаем кликнутую дату в поле from": "",
|
|
1026
1027
|
"Добавляет дополнительные кнопки к календарю\ntrue - будут отображены кнопки по-умолчанию\nсписок:\n string - одна из кнопок по-умолчанию\n object - кастомная кнопка": "",
|
|
1028
|
+
"Ограничение доступного времени.": "",
|
|
1027
1029
|
"Разделитель для даты и времени, не влияет на отображение": "",
|
|
1030
|
+
"Шаг минут": "",
|
|
1028
1031
|
"Свойства, которые напрямую передаются в DropDown компонент": "",
|
|
1029
1032
|
"Нужно ли подгружать данные после закрытия DropDown": "",
|
|
1030
1033
|
"Число в пикселях, больше которого не может быть выпадающее меню": "",
|
|
@@ -1039,6 +1042,7 @@
|
|
|
1039
1042
|
"Компонент редактора 'ckeditor5-react' из библиотеки @ckeditor\nПримечание: для использования встроенного отображения 'HtmlField', данный компонент должен быть передан": "",
|
|
1040
1043
|
"Допустимое количество символов после разделителя": "",
|
|
1041
1044
|
"Может ли число быть отрицательным": "",
|
|
1045
|
+
" Ограничение доступного времени.": "",
|
|
1042
1046
|
"Подключить бесконечный скролл": "",
|
|
1043
1047
|
"Аттрибут (название) в форме для поля с флагом, определяющим есть ли следующая страница": "",
|
|
1044
1048
|
"Аттрибут (название) в форме для поля с номером текущей страницы": "",
|
package/package.json
CHANGED
|
@@ -25,6 +25,13 @@ export interface IDateFieldProps extends IDateInputStateInput, IUiComponent, Pic
|
|
|
25
25
|
* Опции маски для поля ввода
|
|
26
26
|
*/
|
|
27
27
|
maskOptions?: MaskitoOptions;
|
|
28
|
+
/**
|
|
29
|
+
* Ограничение доступных дат.
|
|
30
|
+
*/
|
|
31
|
+
disabledDays?: {
|
|
32
|
+
after?: Date;
|
|
33
|
+
before?: Date;
|
|
34
|
+
};
|
|
28
35
|
[key: string]: any;
|
|
29
36
|
}
|
|
30
37
|
export interface IDateFieldViewProps extends IDateInputStateOutput, Pick<IDateFieldProps, 'size' | 'icon' | 'errors' | 'showRemove' | 'className' | 'calendarProps' | 'autoPositioning'> {
|
|
@@ -26,9 +26,16 @@ var enums_1 = require("../../../enums");
|
|
|
26
26
|
* Поле ввода с выпадающим календарём для выбора даты
|
|
27
27
|
*/
|
|
28
28
|
function DateField(props) {
|
|
29
|
+
var _a, _b, _c;
|
|
29
30
|
var components = (0, hooks_1.useComponents)();
|
|
30
|
-
var maskInputRef = (0, react_2.useMaskito)({
|
|
31
|
-
|
|
31
|
+
var maskInputRef = (0, react_2.useMaskito)({
|
|
32
|
+
options: (_a = props.maskOptions) !== null && _a !== void 0 ? _a : (0, kit_1.maskitoDateOptionsGenerator)({
|
|
33
|
+
mode: 'dd/mm/yyyy',
|
|
34
|
+
separator: '.',
|
|
35
|
+
min: (_c = (_b = props.disabledDays) === null || _b === void 0 ? void 0 : _b.before) !== null && _c !== void 0 ? _c : null
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
var _d = (0, useDateInputState_1["default"])({
|
|
32
39
|
input: props.input,
|
|
33
40
|
disabled: props.disabled,
|
|
34
41
|
onChange: props.onChange,
|
|
@@ -37,9 +44,13 @@ function DateField(props) {
|
|
|
37
44
|
placeholder: props.placeholder,
|
|
38
45
|
valueFormat: props.valueFormat,
|
|
39
46
|
displayFormat: props.displayFormat
|
|
40
|
-
}), onClear =
|
|
47
|
+
}), onClear = _d.onClear, onClose = _d.onClose, isOpened = _d.isOpened, inputProps = _d.inputProps;
|
|
41
48
|
// Calendar props
|
|
42
|
-
var calendarProps = (0, react_1.useMemo)(function () {
|
|
49
|
+
var calendarProps = (0, react_1.useMemo)(function () {
|
|
50
|
+
var _a;
|
|
51
|
+
return (__assign({ value: props.input.value, onChange: props.input.onChange, valueFormat: props.valueFormat }, ((props === null || props === void 0 ? void 0 : props.disabledDays)
|
|
52
|
+
? __assign(__assign({}, props.calendarProps), { pickerProps: __assign(__assign({}, (_a = props.calendarProps) === null || _a === void 0 ? void 0 : _a.pickerProps), { disabledDays: props.disabledDays }) }) : props.calendarProps)));
|
|
53
|
+
}, [props.calendarProps, props.disabledDays, props.input.onChange, props.input.value, props.valueFormat]);
|
|
43
54
|
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 })); }, [
|
|
44
55
|
props.viewProps, props.size, props.icon, props.errors, props.label, props.disabled,
|
|
45
56
|
props.className, props.showRemove, props.style, props.autoPositioning, props.id, calendarProps,
|
|
@@ -54,10 +65,6 @@ DateField.defaultProps = {
|
|
|
54
65
|
required: false,
|
|
55
66
|
showRemove: true,
|
|
56
67
|
autoPositioning: true,
|
|
57
|
-
valueFormat: 'YYYY-MM-DD'
|
|
58
|
-
maskOptions: (0, kit_1.maskitoDateOptionsGenerator)({
|
|
59
|
-
mode: 'dd/mm/yyyy',
|
|
60
|
-
separator: '.'
|
|
61
|
-
})
|
|
68
|
+
valueFormat: 'YYYY-MM-DD'
|
|
62
69
|
};
|
|
63
70
|
exports["default"] = (0, fieldWrapper_1["default"])(enums_1.FieldEnum.DATE_FIELD, DateField);
|
|
@@ -42,6 +42,9 @@ function useDateInputState(props) {
|
|
|
42
42
|
}, [propsDisplayValue]);
|
|
43
43
|
// Display input change handler
|
|
44
44
|
var onDisplayValueChange = (0, react_1.useCallback)(function (value) {
|
|
45
|
+
if (typeof value !== 'string') {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
45
48
|
value = value.replace(/[^0-9:., ]/g, '');
|
|
46
49
|
setDisplayValue(value);
|
|
47
50
|
var newValue = value;
|
|
@@ -91,6 +91,13 @@ export interface IDateRangeFieldProps extends IDateInputStateInput, Omit<IFieldW
|
|
|
91
91
|
*/
|
|
92
92
|
to: MaskitoOptions;
|
|
93
93
|
};
|
|
94
|
+
/**
|
|
95
|
+
* Ограничение доступных дат.
|
|
96
|
+
*/
|
|
97
|
+
disabledDays?: {
|
|
98
|
+
after?: Date;
|
|
99
|
+
before?: Date;
|
|
100
|
+
};
|
|
94
101
|
/**
|
|
95
102
|
* Активирует логику:
|
|
96
103
|
* - Если кликнули по дате начала или конца диапазона, то позволяем её изменить следующим кликом
|
|
@@ -10,34 +10,11 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(o, k2, desc);
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
15
|
};
|
|
39
16
|
exports.__esModule = true;
|
|
40
|
-
var react_1 =
|
|
17
|
+
var react_1 = require("react");
|
|
41
18
|
var kit_1 = require("@maskito/kit");
|
|
42
19
|
var react_2 = require("@maskito/react");
|
|
43
20
|
var useDateRange_1 = __importDefault(require("../../form/DateField/useDateRange"));
|
|
@@ -47,10 +24,22 @@ var fieldWrapper_1 = __importDefault(require("../../form/Field/fieldWrapper"));
|
|
|
47
24
|
var enums_1 = require("../../../enums");
|
|
48
25
|
var useOnDayClick_1 = __importDefault(require("./useOnDayClick"));
|
|
49
26
|
function DateRangeField(props) {
|
|
50
|
-
var _a, _b;
|
|
27
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
51
28
|
var components = (0, hooks_1.useComponents)();
|
|
52
|
-
var maskInputFromRef = (0, react_2.useMaskito)({
|
|
53
|
-
|
|
29
|
+
var maskInputFromRef = (0, react_2.useMaskito)({
|
|
30
|
+
options: (_b = (_a = props.maskOptions) === null || _a === void 0 ? void 0 : _a.from) !== null && _b !== void 0 ? _b : (0, kit_1.maskitoDateOptionsGenerator)({
|
|
31
|
+
mode: 'dd/mm/yyyy',
|
|
32
|
+
separator: '.',
|
|
33
|
+
min: (_d = (_c = props.disabledDays) === null || _c === void 0 ? void 0 : _c.before) !== null && _d !== void 0 ? _d : null
|
|
34
|
+
})
|
|
35
|
+
});
|
|
36
|
+
var maskInputToRef = (0, react_2.useMaskito)({
|
|
37
|
+
options: (_f = (_e = props.maskOptions) === null || _e === void 0 ? void 0 : _e.to) !== null && _f !== void 0 ? _f : (0, kit_1.maskitoDateOptionsGenerator)({
|
|
38
|
+
mode: 'dd/mm/yyyy',
|
|
39
|
+
separator: '.',
|
|
40
|
+
min: (_h = (_g = props.disabledDays) === null || _g === void 0 ? void 0 : _g.before) !== null && _h !== void 0 ? _h : null
|
|
41
|
+
})
|
|
42
|
+
});
|
|
54
43
|
// Global onChange (from props)
|
|
55
44
|
var onChange = (0, react_1.useCallback)(function () {
|
|
56
45
|
var _a;
|
|
@@ -62,7 +51,7 @@ function DateRangeField(props) {
|
|
|
62
51
|
}
|
|
63
52
|
}, [props.attributeFrom, props.attributeTo, props.inputFrom.value, props.inputTo.value, props.onChange]);
|
|
64
53
|
// Input 'from'
|
|
65
|
-
var
|
|
54
|
+
var _j = (0, useDateInputState_1["default"])({
|
|
66
55
|
displayFormat: props.displayFormat,
|
|
67
56
|
valueFormat: props.valueFormat,
|
|
68
57
|
input: props.inputFrom,
|
|
@@ -71,9 +60,9 @@ function DateRangeField(props) {
|
|
|
71
60
|
required: props.required,
|
|
72
61
|
inputProps: props.inputPropsFrom,
|
|
73
62
|
onChange: onChange
|
|
74
|
-
}), isOpenedFrom =
|
|
63
|
+
}), isOpenedFrom = _j.isOpened, onCloseFrom = _j.onClose, inputPropsFrom = _j.inputProps, onClearFrom = _j.onClear;
|
|
75
64
|
// Input 'to'
|
|
76
|
-
var
|
|
65
|
+
var _k = (0, useDateInputState_1["default"])({
|
|
77
66
|
displayFormat: props.displayFormat,
|
|
78
67
|
valueFormat: props.valueFormat,
|
|
79
68
|
input: props.inputTo,
|
|
@@ -82,8 +71,8 @@ function DateRangeField(props) {
|
|
|
82
71
|
required: props.required,
|
|
83
72
|
inputProps: props.inputPropsTo,
|
|
84
73
|
onChange: onChange
|
|
85
|
-
}), isOpenedTo =
|
|
86
|
-
var
|
|
74
|
+
}), isOpenedTo = _k.isOpened, onCloseTo = _k.onClose, inputPropsTo = _k.inputProps, onClearTo = _k.onClear;
|
|
75
|
+
var _l = (0, useDateRange_1["default"])({
|
|
87
76
|
onClearFrom: onClearFrom,
|
|
88
77
|
onCloseTo: onCloseTo,
|
|
89
78
|
onCloseFrom: onCloseFrom,
|
|
@@ -96,8 +85,8 @@ function DateRangeField(props) {
|
|
|
96
85
|
hasInitialFocus: props.hasInitialFocus,
|
|
97
86
|
displayFormat: props.displayFormat,
|
|
98
87
|
valueFormat: props.valueFormat
|
|
99
|
-
}), focus =
|
|
100
|
-
react_1
|
|
88
|
+
}), focus = _l.focus, onClose = _l.onClose, onClear = _l.onClear, extendedInputPropsFrom = _l.extendedInputPropsFrom, extendedInputPropsTo = _l.extendedInputPropsTo;
|
|
89
|
+
(0, react_1.useEffect)(function () {
|
|
101
90
|
if (extendedInputPropsFrom.ref && extendedInputPropsTo.ref) {
|
|
102
91
|
maskInputFromRef(extendedInputPropsFrom.ref.current);
|
|
103
92
|
maskInputToRef(extendedInputPropsTo.ref.current);
|
|
@@ -117,7 +106,11 @@ function DateRangeField(props) {
|
|
|
117
106
|
onToChange: props.inputTo.onChange
|
|
118
107
|
});
|
|
119
108
|
// Calendar props
|
|
120
|
-
var calendarProps = (0, react_1.useMemo)(function () {
|
|
109
|
+
var calendarProps = (0, react_1.useMemo)(function () {
|
|
110
|
+
var _a;
|
|
111
|
+
return (__assign({ value: [props.inputFrom.value, props.inputTo.value], onChange: onDayClick, valueFormat: props.valueFormat, numberOfMonths: 2, showFooter: false }, ((props === null || props === void 0 ? void 0 : props.disabledDays)
|
|
112
|
+
? __assign(__assign({}, props.calendarProps), { pickerProps: __assign(__assign({}, (_a = props.calendarProps) === null || _a === void 0 ? void 0 : _a.pickerProps), { disabledDays: props.disabledDays }) }) : props.calendarProps)));
|
|
113
|
+
}, [onDayClick, props.calendarProps, props.disabledDays, props.inputFrom.value, props.inputTo.value, props.valueFormat]);
|
|
121
114
|
var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.viewProps), { onClear: onClear, onClose: onClose, calendarProps: calendarProps, icon: props.icon, size: props.size, disabled: props.disabled, className: props.className, showRemove: props.showRemove, errorsFrom: props.errorsFrom, errorsTo: props.errorsTo, errors: props.errors, inputPropsTo: extendedInputPropsTo, inputPropsFrom: extendedInputPropsFrom, isOpened: focus === 'from' ? isOpenedFrom : isOpenedTo, style: props.style, id: props.id, withRangeButtons: props.withRangeButtons, rangeButtonsPosition: props.rangeButtonsPosition, displayFormat: props.displayFormat })); }, [props.viewProps, props.icon, props.size, props.disabled, props.className, props.showRemove, props.errorsFrom,
|
|
122
115
|
props.errorsTo, props.errors, props.style, props.id, props.withRangeButtons, props.rangeButtonsPosition,
|
|
123
116
|
props.displayFormat, onClear, onClose, calendarProps, extendedInputPropsTo, extendedInputPropsFrom, focus, isOpenedFrom, isOpenedTo]);
|
|
@@ -134,16 +127,6 @@ DateRangeField.defaultProps = {
|
|
|
134
127
|
hasInitialFocus: false,
|
|
135
128
|
icon: true,
|
|
136
129
|
useSmartRangeReset: true,
|
|
137
|
-
maskOptions: {
|
|
138
|
-
from: (0, kit_1.maskitoDateOptionsGenerator)({
|
|
139
|
-
mode: 'dd/mm/yyyy',
|
|
140
|
-
separator: '.'
|
|
141
|
-
}),
|
|
142
|
-
to: (0, kit_1.maskitoDateOptionsGenerator)({
|
|
143
|
-
mode: 'dd/mm/yyyy',
|
|
144
|
-
separator: '.'
|
|
145
|
-
})
|
|
146
|
-
},
|
|
147
130
|
rangeButtonsPosition: 'left-bottom'
|
|
148
131
|
};
|
|
149
132
|
exports["default"] = (0, fieldWrapper_1["default"])(enums_1.FieldEnum.DATE_RANGE_FIELD, DateRangeField, { attributeSuffixes: ['from', 'to'] });
|
|
@@ -27,6 +27,25 @@ export interface IDateTimeFieldProps extends IDateInputStateInput, IUiComponent
|
|
|
27
27
|
* Разделитель для даты и времени, не влияет на отображение
|
|
28
28
|
*/
|
|
29
29
|
dateTimeSeparator?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Ограничение доступных дат.
|
|
32
|
+
*/
|
|
33
|
+
disabledDays?: {
|
|
34
|
+
after?: Date;
|
|
35
|
+
before?: Date;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Ограничение доступного времени.
|
|
39
|
+
*/
|
|
40
|
+
availableTime?: {
|
|
41
|
+
from: string;
|
|
42
|
+
to: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Шаг минут
|
|
46
|
+
* @example 15
|
|
47
|
+
*/
|
|
48
|
+
minuteStep?: number;
|
|
30
49
|
[key: string]: any;
|
|
31
50
|
}
|
|
32
51
|
export interface IDateTimeFieldViewProps extends IDateInputStateOutput, Pick<IDateTimeFieldProps, 'size' | 'errors' | 'showRemove' | 'calendarProps' | 'className' | 'timePanelViewProps'> {
|