@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.
@@ -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<ITimeFieldProps",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/core",
3
- "version": "3.0.82",
3
+ "version": "3.0.83",
4
4
  "description": "",
5
5
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
6
6
  "repository": {
@@ -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)({ options: props.maskOptions });
31
- var _a = (0, useDateInputState_1["default"])({
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 = _a.onClear, onClose = _a.onClose, isOpened = _a.isOpened, inputProps = _a.inputProps;
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 () { 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]);
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 = __importStar(require("react"));
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)({ options: (_a = props.maskOptions) === null || _a === void 0 ? void 0 : _a.from });
53
- var maskInputToRef = (0, react_2.useMaskito)({ options: (_b = props.maskOptions) === null || _b === void 0 ? void 0 : _b.to });
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 _c = (0, useDateInputState_1["default"])({
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 = _c.isOpened, onCloseFrom = _c.onClose, inputPropsFrom = _c.inputProps, onClearFrom = _c.onClear;
63
+ }), isOpenedFrom = _j.isOpened, onCloseFrom = _j.onClose, inputPropsFrom = _j.inputProps, onClearFrom = _j.onClear;
75
64
  // Input 'to'
76
- var _d = (0, useDateInputState_1["default"])({
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 = _d.isOpened, onCloseTo = _d.onClose, inputPropsTo = _d.inputProps, onClearTo = _d.onClear;
86
- var _e = (0, useDateRange_1["default"])({
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 = _e.focus, onClose = _e.onClose, onClear = _e.onClear, extendedInputPropsFrom = _e.extendedInputPropsFrom, extendedInputPropsTo = _e.extendedInputPropsTo;
100
- react_1["default"].useEffect(function () {
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 () { return (__assign({ value: [props.inputFrom.value, props.inputTo.value], onChange: onDayClick, valueFormat: props.valueFormat, numberOfMonths: 2, showFooter: false }, props.calendarProps)); }, [onDayClick, props.calendarProps, props.inputFrom.value, props.inputTo.value, props.valueFormat]);
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'> {