@steroidsjs/core 3.0.15 → 3.0.16

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.
Files changed (36) hide show
  1. package/docs-autogen-result.json +434 -36
  2. package/en.json +6 -0
  3. package/package.json +4 -4
  4. package/ui/content/CalendarSystem/CalendarSystem.d.ts +46 -15
  5. package/ui/content/CalendarSystem/CalendarSystem.js +32 -68
  6. package/ui/content/CalendarSystem/enums/CalendarType.d.ts +1 -0
  7. package/ui/content/CalendarSystem/enums/CalendarType.js +2 -0
  8. package/ui/content/CalendarSystem/enums/DisplayDateFormatType.d.ts +6 -0
  9. package/ui/content/CalendarSystem/enums/DisplayDateFormatType.js +38 -0
  10. package/ui/content/CalendarSystem/hooks/useCalendarControls.d.ts +4 -4
  11. package/ui/content/CalendarSystem/hooks/useCalendarControls.js +125 -21
  12. package/ui/content/CalendarSystem/hooks/useCalendarSystem.d.ts +29 -0
  13. package/ui/content/CalendarSystem/hooks/useCalendarSystem.js +96 -0
  14. package/ui/content/CalendarSystem/hooks/useCalendarSystemModals.d.ts +2 -2
  15. package/ui/content/CalendarSystem/hooks/useCalendarSystemModals.js +29 -10
  16. package/ui/content/CalendarSystem/hooks/useCustomViews.d.ts +24 -0
  17. package/ui/content/CalendarSystem/hooks/useCustomViews.js +45 -0
  18. package/ui/content/CalendarSystem/hooks/useDayGrid.d.ts +5 -0
  19. package/ui/content/CalendarSystem/hooks/useDayGrid.js +9 -0
  20. package/ui/content/CalendarSystem/hooks/useDisplayDate.d.ts +4 -3
  21. package/ui/content/CalendarSystem/hooks/useDisplayDate.js +10 -14
  22. package/ui/content/CalendarSystem/hooks/useEventsFromDate.js +9 -1
  23. package/ui/content/CalendarSystem/hooks/useMonthGrid.d.ts +1 -10
  24. package/ui/content/CalendarSystem/hooks/useMonthGrid.js +28 -44
  25. package/ui/content/CalendarSystem/hooks/useWeekGrid.d.ts +3 -7
  26. package/ui/content/CalendarSystem/hooks/useWeekGrid.js +8 -65
  27. package/ui/content/CalendarSystem/utils/utils.d.ts +7 -0
  28. package/ui/content/CalendarSystem/utils/utils.js +57 -3
  29. package/ui/content/Icon/Icon.d.ts +4 -0
  30. package/ui/content/Icon/Icon.js +3 -2
  31. package/ui/form/DateField/useDateInputState.js +1 -1
  32. package/ui/form/DateTimeField/DateTimeField.js +2 -1
  33. package/ui/form/PasswordField/PasswordField.js +14 -7
  34. package/ui/form/RadioListField/RadioListField.js +1 -1
  35. package/ui/form/SliderField/SliderField.d.ts +8 -0
  36. package/ui/form/SliderField/SliderField.js +17 -7
package/en.json CHANGED
@@ -988,6 +988,12 @@
988
988
  "Количество элементов на странице, используется для корректного отображения пагинации": "",
989
989
  "Параметры роутинга": "",
990
990
  "Сохранение в localStorage уровней вложенности.": "",
991
+ "Свойства для сетки дня": "",
992
+ "Свойства для сетки месяца": "",
993
+ "Свойства для сетки недели": "",
994
+ "Конечная дата": "",
995
+ "Начальная дата": "",
996
+ "Дополнительные данные которые попадут в дата аттрибут data-icon": "",
991
997
  "Компоненты для подключения wysiwyg редактора": "",
992
998
  "Отображать чекбоксы только на узлах, не имеющих вложенных элементов": "",
993
999
  "Размер компонента и вложенных полей": "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/core",
3
- "version": "3.0.15",
3
+ "version": "3.0.16",
4
4
  "description": "",
5
5
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
6
6
  "repository": {
@@ -25,9 +25,9 @@
25
25
  "watch": "tsc -p tsconfig-debug.json"
26
26
  },
27
27
  "dependencies": {
28
- "@maskito/core": "1.7.0",
29
- "@maskito/kit": "1.7.0",
30
- "@maskito/react": "^0.12.1",
28
+ "@maskito/core": "2.3.1",
29
+ "@maskito/kit": "2.3.1",
30
+ "@maskito/react": "2.3.1",
31
31
  "@splidejs/react-splide": "^0.7.12",
32
32
  "axios": "^0.21.1",
33
33
  "connected-react-router": "^6.9.3",
@@ -1,10 +1,12 @@
1
1
  import React from 'react';
2
2
  import { IModalProps } from '../../../ui/modal/Modal/Modal';
3
3
  import CalendarEnum from './enums/CalendarType';
4
- export type CalendarSystemModalFields = 'title' | 'eventGroupId' | 'date' | 'description';
4
+ import { ICustomViews } from './hooks/useCustomViews';
5
+ export type CalendarSystemModalFields = 'title' | 'eventGroupId' | 'description' | 'startDate' | 'endDate' | 'id' | 'usersIds';
5
6
  export type CalendarSystemEventGroupModalFields = 'label' | 'color';
6
7
  export interface IEventInitialValues extends IEvent {
7
8
  eventGroupId: string;
9
+ usersIds: number[];
8
10
  }
9
11
  export interface IDay {
10
12
  dayNumber: number;
@@ -27,9 +29,13 @@ export interface IEvent {
27
29
  */
28
30
  id: number;
29
31
  /**
30
- * Дата
32
+ * Начальная дата
31
33
  */
32
- date: Date;
34
+ startDate: Date;
35
+ /**
36
+ * Конечная дата
37
+ */
38
+ endDate: Date;
33
39
  /**
34
40
  * Заголовок
35
41
  */
@@ -66,6 +72,17 @@ export interface IEventGroup {
66
72
  */
67
73
  events: Omit<IEvent, 'color'>[];
68
74
  }
75
+ export interface ICalendarUser {
76
+ id: number;
77
+ name: string;
78
+ caption: string;
79
+ eventsIds: IEvent['id'][];
80
+ }
81
+ export interface IGridViews {
82
+ eventView?: CustomView;
83
+ hourView?: CustomView;
84
+ gridView?: CustomView;
85
+ }
69
86
  /**
70
87
  * CalendarSystem
71
88
  *
@@ -103,42 +120,56 @@ export interface ICalendarSystemProps extends IUiComponent {
103
120
  eventGroups: IEventGroup[];
104
121
  };
105
122
  /**
123
+ * Свойства для сетки дня
124
+ */
125
+ dayGrid?: IGridViews;
126
+ /**
127
+ * Свойства для сетки недели
128
+ */
129
+ weekGrid?: IGridViews;
130
+ /**
131
+ * Свойства для сетки месяца
132
+ */
133
+ monthGrid?: IGridViews;
134
+ users: ICalendarUser[];
135
+ /**
106
136
  * Дополнительные свойства, которые передаются во view компонента
107
137
  */
108
138
  additionalViewProps?: Record<string, any>;
109
139
  [key: string]: any;
110
140
  }
111
- export interface ICalendarSystemViewProps extends Pick<ICalendarSystemProps, 'className' | 'style' | 'additionalViewProps'> {
112
- openCreateModal: (eventInitialDay?: IDay) => void;
113
- onInnerCalendarChangeMonth: (newDate: Date) => void;
141
+ export interface ICalendarSystemViewProps extends Pick<ICalendarSystemProps, 'className' | 'style' | 'additionalViewProps' | 'users'> {
142
+ onCalendarChangedMonth: (newDate: Date) => void;
114
143
  eventGroups: IEventGroup[];
115
144
  eventGroupsTitle: string;
116
145
  onChangeEventGroupsIds: (selectedIds: number[]) => void;
117
146
  openCreateEventGroupModal: VoidFunction;
118
147
  dateToDisplay: string;
119
148
  handleCalendarTypeChange: (newType: string) => void;
120
- handleControlClick: (event: React.MouseEvent<HTMLElement>) => void;
149
+ onClickControl: (event: React.MouseEvent<HTMLElement>) => void;
121
150
  calendarType: CalendarEnum;
151
+ getEventsFromDate: (dateFromDay: Date, currentCalendarType: CalendarEnum) => IEvent[];
152
+ openEditModal: (event: IEvent) => void;
153
+ openCreateModal: (eventInitialDay?: IDay) => void;
122
154
  monthGridProps: {
123
155
  monthGridWeekDays: string[];
124
156
  monthGridCalendarDays: IDay[];
125
- getEventsFromDate: (dateFromDay: Date, currentCalendarType: CalendarEnum) => IEvent[];
126
- openEditModal: (event: IEvent) => void;
127
- openCreateModal: (eventInitialDay?: IDay) => void;
128
- };
157
+ } & ICustomViews;
129
158
  weekGridProps: {
130
159
  weekGridTwentyFourHoursArray: string[];
131
160
  weekGridCurrentWeekDays: IDay[];
132
- getEventsFromDate: (dateFromDay: Date, currentCalendarType: CalendarEnum) => IEvent[];
133
- openEditModal: (event: IEvent) => void;
134
- openCreateModal: (eventInitialDay?: IDay) => void;
135
- };
161
+ } & ICustomViews;
162
+ dayGridProps: {
163
+ dayGridTwentyFourHoursArray: string[];
164
+ dayGridCurrentDay: IDay;
165
+ } & ICustomViews;
136
166
  }
137
167
  export interface ICalendarSystemModalViewProps extends IModalProps {
138
168
  eventGroups: IEventGroup[];
139
169
  onModalFormSubmit: (fields: Record<CalendarSystemModalFields, string>, eventInitialValues?: IEventInitialValues) => void;
140
170
  isCreate: boolean;
141
171
  eventInitialValues?: any;
172
+ users: ICalendarUser[];
142
173
  }
143
174
  export interface CalendarSystemEventGroupModalViewProps extends IModalProps {
144
175
  isCreate: boolean;
@@ -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
  };
@@ -11,82 +22,35 @@ exports.__esModule = true;
11
22
  var react_1 = __importDefault(require("react"));
12
23
  var dayjs_1 = __importDefault(require("dayjs"));
13
24
  var localeData_1 = __importDefault(require("dayjs/plugin/localeData"));
14
- var useCalendarControls_1 = __importDefault(require("./hooks/useCalendarControls"));
15
- var useDisplayDate_1 = __importDefault(require("./hooks/useDisplayDate"));
16
- var useMonthGrid_1 = __importDefault(require("./hooks/useMonthGrid"));
17
25
  var hooks_1 = require("../../../hooks");
18
- var useCalendarSystemModals_1 = __importDefault(require("./hooks/useCalendarSystemModals"));
19
- var useCalendarSystemEventGroupModals_1 = require("./hooks/useCalendarSystemEventGroupModals");
20
- var useWeekGrid_1 = __importDefault(require("./hooks/useWeekGrid"));
21
- var useCalendarType_1 = require("./hooks/useCalendarType");
22
- var useEventsFromDate_1 = require("./hooks/useEventsFromDate");
26
+ var useCalendarSystem_1 = require("./hooks/useCalendarSystem");
27
+ var useCustomViews_1 = require("./hooks/useCustomViews");
23
28
  dayjs_1["default"].extend(localeData_1["default"]);
24
29
  function CalendarSystem(props) {
25
30
  var components = (0, hooks_1.useComponents)();
26
- var _a = react_1["default"].useState(props.eventBlock.eventGroups || []), innerEventGroups = _a[0], setInnerEventGroups = _a[1];
27
- var _b = react_1["default"].useState([]), selectedEventGroupsIds = _b[0], setSelectedEventGroupsIds = _b[1];
28
- var _c = react_1["default"].useState(null), currentMonthFirstDayDate = _c[0], setCurrentMonthFirstDayDate = _c[1];
29
- var _d = (0, useDisplayDate_1["default"])(), dateToDisplay = _d.dateToDisplay, setNewDateToDisplay = _d.setNewDateToDisplay;
30
- var _e = (0, useCalendarType_1.useCalendarType)(), calendarType = _e.calendarType, handleCalendarTypeChange = _e.handleCalendarTypeChange;
31
- var _f = (0, useMonthGrid_1["default"])(currentMonthFirstDayDate, setCurrentMonthFirstDayDate), monthGridWeekDays = _f.monthGridWeekDays, monthGridCalendarDays = _f.monthGridCalendarDays;
32
- var _g = (0, useWeekGrid_1["default"])(currentMonthFirstDayDate), weekGridTwentyFourHoursArray = _g.weekGridTwentyFourHoursArray, weekGridCurrentWeekDays = _g.weekGridCurrentWeekDays, weekGridControls = _g.weekGridControls, updateWeekOnMonthChange = _g.updateWeekOnMonthChange;
33
- var handleControlClick = (0, useCalendarControls_1["default"])(calendarType, weekGridControls);
34
- var _h = (0, useCalendarSystemModals_1["default"])(props.calendarModalProps, innerEventGroups, setInnerEventGroups), openCreateModal = _h.openCreateModal, openEditModal = _h.openEditModal;
35
- var openCreateEventGroupModal = (0, useCalendarSystemEventGroupModals_1.useCalendarSystemEventGroupModals)(innerEventGroups, setInnerEventGroups, props.eventGroupModalProps).openCreateEventGroupModal;
36
- var onInnerCalendarChangeMonth = react_1["default"].useCallback(function (newDate) {
37
- setNewDateToDisplay(newDate);
38
- setCurrentMonthFirstDayDate(newDate);
39
- updateWeekOnMonthChange(newDate);
40
- }, [updateWeekOnMonthChange, setCurrentMonthFirstDayDate, setNewDateToDisplay]);
41
- var getEventsFromDate = (0, useEventsFromDate_1.useEventsFromDate)(innerEventGroups, selectedEventGroupsIds).getEventsFromDate;
31
+ var calendarSystem = (0, useCalendarSystem_1.useCalendarSystem)(props);
32
+ var _a = (0, useCustomViews_1.useCustomViews)(props), dayGridViews = _a.dayGridViews, monthGridViews = _a.monthGridViews, weekGridViews = _a.weekGridViews;
42
33
  var viewProps = react_1["default"].useMemo(function () { return ({
43
34
  className: props.className,
44
35
  style: props.style,
45
- openCreateModal: openCreateModal,
46
- onInnerCalendarChangeMonth: onInnerCalendarChangeMonth,
47
- eventGroups: innerEventGroups,
48
- eventGroupsTitle: props.eventBlock.title,
49
- onChangeEventGroupsIds: function (newSelectedEventGroupsIds) { return setSelectedEventGroupsIds(newSelectedEventGroupsIds); },
50
- openCreateEventGroupModal: openCreateEventGroupModal,
51
- dateToDisplay: dateToDisplay,
52
- handleCalendarTypeChange: handleCalendarTypeChange,
53
- handleControlClick: handleControlClick,
54
- calendarType: calendarType,
55
36
  additionalViewProps: props.additionalViewProps,
56
- monthGridProps: {
57
- monthGridWeekDays: monthGridWeekDays,
58
- monthGridCalendarDays: monthGridCalendarDays,
59
- getEventsFromDate: getEventsFromDate,
60
- openCreateModal: openCreateModal,
61
- openEditModal: openEditModal
62
- },
63
- weekGridProps: {
64
- weekGridTwentyFourHoursArray: weekGridTwentyFourHoursArray,
65
- weekGridCurrentWeekDays: weekGridCurrentWeekDays,
66
- getEventsFromDate: getEventsFromDate,
67
- openCreateModal: openCreateModal,
68
- openEditModal: openEditModal
69
- }
70
- }); }, [
71
- props.className,
72
- props.style,
73
- props.eventBlock.title,
74
- openCreateModal,
75
- onInnerCalendarChangeMonth,
76
- innerEventGroups,
77
- openCreateEventGroupModal,
78
- dateToDisplay,
79
- handleCalendarTypeChange,
80
- handleControlClick,
81
- calendarType,
82
- monthGridWeekDays,
83
- monthGridCalendarDays,
84
- getEventsFromDate,
85
- openEditModal,
86
- weekGridTwentyFourHoursArray,
87
- weekGridCurrentWeekDays,
88
- props.additionalViewProps,
89
- ]);
37
+ users: calendarSystem.users,
38
+ eventGroupsTitle: props.eventBlock.title,
39
+ dateToDisplay: calendarSystem.dateToDisplay,
40
+ eventGroups: calendarSystem.innerEventGroups,
41
+ calendarType: calendarSystem.calendarType,
42
+ openCreateModal: calendarSystem.openCreateModal,
43
+ onCalendarChangedMonth: calendarSystem.onCalendarChangedMonth,
44
+ onChangeEventGroupsIds: function (newSelectedEventGroupsIds) { return calendarSystem.setSelectedEventGroupsIds(newSelectedEventGroupsIds); },
45
+ openCreateEventGroupModal: calendarSystem.openCreateEventGroupModal,
46
+ handleCalendarTypeChange: calendarSystem.handleCalendarTypeChange,
47
+ onClickControl: calendarSystem.onClickControl,
48
+ getEventsFromDate: calendarSystem.getEventsFromDate,
49
+ openEditModal: calendarSystem.openEditModal,
50
+ monthGridProps: __assign({ monthGridWeekDays: calendarSystem.monthGridWeekDays, monthGridCalendarDays: calendarSystem.monthGridCalendarDays }, monthGridViews),
51
+ weekGridProps: __assign({ weekGridTwentyFourHoursArray: calendarSystem.weekGridTwentyFourHoursArray, weekGridCurrentWeekDays: calendarSystem.weekGridCurrentWeekDays }, weekGridViews),
52
+ dayGridProps: __assign({ dayGridTwentyFourHoursArray: calendarSystem.dayGridTwentyFourHoursArray, dayGridCurrentDay: calendarSystem.dayGridCurrentDay }, dayGridViews)
53
+ }); }, [props.className, props.style, props.additionalViewProps, props.eventBlock.title, calendarSystem, monthGridViews, weekGridViews, dayGridViews]);
90
54
  return components.ui.renderView(props.view || 'content.CalendarSystemView', viewProps);
91
55
  }
92
56
  exports["default"] = CalendarSystem;
@@ -2,5 +2,6 @@ import Enum from '../../../../base/Enum';
2
2
  export default class CalendarType extends Enum {
3
3
  static WEEK: string;
4
4
  static MONTH: string;
5
+ static DAY: string;
5
6
  static getLabels(): Record<string, string>;
6
7
  }
@@ -27,12 +27,14 @@ var CalendarType = /** @class */ (function (_super) {
27
27
  CalendarType.getLabels = function () {
28
28
  var _a;
29
29
  return _a = {},
30
+ _a[this.DAY] = __('День'),
30
31
  _a[this.WEEK] = __('Неделя'),
31
32
  _a[this.MONTH] = __('Месяц'),
32
33
  _a;
33
34
  };
34
35
  CalendarType.WEEK = 'Week';
35
36
  CalendarType.MONTH = 'Month';
37
+ CalendarType.DAY = 'Day';
36
38
  return CalendarType;
37
39
  }(Enum_1["default"]));
38
40
  exports["default"] = CalendarType;
@@ -0,0 +1,6 @@
1
+ import Enum from '../../../../base/Enum';
2
+ export default class DisplayDateFormatType extends Enum {
3
+ static DEFAULT: string;
4
+ static DAY: string;
5
+ static getLabels(): Record<string, string>;
6
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ exports.__esModule = true;
21
+ var Enum_1 = __importDefault(require("../../../../base/Enum"));
22
+ var DisplayDateFormatType = /** @class */ (function (_super) {
23
+ __extends(DisplayDateFormatType, _super);
24
+ function DisplayDateFormatType() {
25
+ return _super !== null && _super.apply(this, arguments) || this;
26
+ }
27
+ DisplayDateFormatType.getLabels = function () {
28
+ var _a;
29
+ return _a = {},
30
+ _a[this.DEFAULT] = 'MMMM YYYY',
31
+ _a[this.DAY] = 'D MMMM, dddd',
32
+ _a;
33
+ };
34
+ DisplayDateFormatType.DEFAULT = 'default';
35
+ DisplayDateFormatType.DAY = 'day';
36
+ return DisplayDateFormatType;
37
+ }(Enum_1["default"]));
38
+ exports["default"] = DisplayDateFormatType;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import CalendarEnum from '../enums/CalendarType';
3
- import DateControlEnum from '../enums/DateControlType';
4
- declare const useCalendarControls: (calendarType: CalendarEnum, weekGridControls: {
5
- [key: string]: () => void | DateControlEnum;
6
- }) => (event: React.MouseEvent<HTMLElement>) => void;
3
+ import { IDay } from '../CalendarSystem';
4
+ declare const useCalendarControls: (calendarType: CalendarEnum, generalCurrentDay: IDay, setGeneralCurrentDay: React.Dispatch<React.SetStateAction<IDay>>, isGeneralCurrentDayNeedsUpdate: React.MutableRefObject<boolean>) => {
5
+ onClickControl: (event: React.MouseEvent<HTMLElement>) => void;
6
+ };
7
7
  export default useCalendarControls;
@@ -1,44 +1,148 @@
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
  };
5
28
  exports.__esModule = true;
29
+ /* eslint-disable no-else-return */
30
+ /* eslint-disable no-useless-return */
31
+ /* eslint-disable no-console */
6
32
  /* eslint-disable default-case */
7
- var react_1 = __importDefault(require("react"));
8
- var isFunction_1 = __importDefault(require("lodash-es/isFunction"));
33
+ var react_1 = __importStar(require("react"));
9
34
  var get_1 = __importDefault(require("lodash-es/get"));
10
35
  var CalendarType_1 = __importDefault(require("../enums/CalendarType"));
11
36
  var utils_1 = require("../utils/utils");
12
- var CUSTOM_CONTROL_PATH = 'dataset.control';
13
- var useCalendarControls = function (calendarType, weekGridControls) {
14
- var extractCustomControlType = function (event) {
15
- var target = event.target;
16
- var customControlType = (0, get_1["default"])(target, CUSTOM_CONTROL_PATH);
17
- return customControlType !== null && customControlType !== void 0 ? customControlType : null;
18
- };
19
- var handleControlClick = react_1["default"].useCallback(function (event) {
20
- var customControlType = extractCustomControlType(event);
21
- var sourceCalendarControl = (0, utils_1.getSourceCalendarControl)(customControlType);
37
+ var DateControlType_1 = __importDefault(require("../enums/DateControlType"));
38
+ var DATASET_CONTROL_TYPE_PATH = 'dataset.control';
39
+ var getControlTypeFromButton = function (event) {
40
+ var clickedButton = event.target;
41
+ var controlType = (0, get_1["default"])(clickedButton, DATASET_CONTROL_TYPE_PATH);
42
+ return controlType !== null && controlType !== void 0 ? controlType : null;
43
+ };
44
+ var ONE_DAY = 1;
45
+ var ONE_WEEK = 7;
46
+ var ONE_MONTH_DIFF = 1;
47
+ var ONE_YEAR_DIFF = 1;
48
+ var useCalendarControls = function (calendarType, generalCurrentDay, setGeneralCurrentDay, isGeneralCurrentDayNeedsUpdate) {
49
+ var changeMonth = (0, react_1.useCallback)(function (isNext) {
50
+ if (isNext === void 0) { isNext = true; }
51
+ var sourceMonthControl = (0, utils_1.getSourceCalendarControl)(isNext ? DateControlType_1["default"].NEXT_ONE : DateControlType_1["default"].PREV_ONE);
52
+ sourceMonthControl.click();
53
+ }, []);
54
+ var checkIsOutAndUpdateInnerCalendar = (0, react_1.useCallback)(function (formattedDay, prevMonthNumber, prevYearNumber) {
55
+ //Если при нажатии на кнопку произошел переход на следующий или предыдущий месяц или год
56
+ var isDateOutOfMonth = formattedDay.date.getMonth() !== prevMonthNumber;
57
+ var isDateOutOfYear = formattedDay.date.getFullYear() !== prevYearNumber;
58
+ if (isDateOutOfMonth || isDateOutOfYear) {
59
+ isGeneralCurrentDayNeedsUpdate.current = false;
60
+ if ((formattedDay.date.getMonth() - prevMonthNumber === ONE_MONTH_DIFF)
61
+ || (formattedDay.date.getFullYear() - prevYearNumber === ONE_YEAR_DIFF)) {
62
+ changeMonth();
63
+ return;
64
+ }
65
+ else if ((prevMonthNumber - formattedDay.date.getMonth() === ONE_MONTH_DIFF)
66
+ || (prevYearNumber - formattedDay.date.getFullYear() === ONE_YEAR_DIFF)) {
67
+ changeMonth(false);
68
+ return;
69
+ }
70
+ }
71
+ }, [changeMonth, isGeneralCurrentDayNeedsUpdate]);
72
+ var changeDay = (0, react_1.useCallback)(function (isNext) {
73
+ if (isNext === void 0) { isNext = true; }
74
+ var prevMonthNumber = generalCurrentDay.date.getMonth();
75
+ var prevYearNumber = generalCurrentDay.date.getFullYear();
76
+ var dayTimestamp = new Date(generalCurrentDay.date)
77
+ .setDate(isNext ? generalCurrentDay.date.getDate() + ONE_DAY : generalCurrentDay.date.getDate() - ONE_DAY);
78
+ var formattedDay = (0, utils_1.getFormattedDay)(new Date(dayTimestamp));
79
+ setGeneralCurrentDay(formattedDay);
80
+ checkIsOutAndUpdateInnerCalendar(formattedDay, prevMonthNumber, prevYearNumber);
81
+ }, [checkIsOutAndUpdateInnerCalendar, generalCurrentDay.date, setGeneralCurrentDay]);
82
+ var changeWeek = (0, react_1.useCallback)(function (isNext) {
83
+ if (isNext === void 0) { isNext = true; }
84
+ var prevMonthNumber = generalCurrentDay.date.getMonth();
85
+ var prevYearNumber = generalCurrentDay.date.getFullYear();
86
+ var dayTimestamp = new Date(generalCurrentDay.date)
87
+ .setDate(isNext ? generalCurrentDay.date.getDate() + ONE_WEEK : generalCurrentDay.date.getDate() - ONE_WEEK);
88
+ var formattedDay = (0, utils_1.getFormattedDay)(new Date(dayTimestamp));
89
+ setGeneralCurrentDay(formattedDay);
90
+ checkIsOutAndUpdateInnerCalendar(formattedDay, prevMonthNumber, prevYearNumber);
91
+ }, [generalCurrentDay.date, setGeneralCurrentDay, checkIsOutAndUpdateInnerCalendar]);
92
+ var onClickControl = react_1["default"].useCallback(function (event) {
93
+ var controlType = getControlTypeFromButton(event);
94
+ var sourceCalendarControl = (0, utils_1.getSourceCalendarControl)(controlType);
22
95
  if (!sourceCalendarControl) {
23
96
  return;
24
97
  }
25
98
  switch (calendarType) {
26
99
  case CalendarType_1["default"].MONTH: {
27
100
  sourceCalendarControl.click();
28
- return;
101
+ break;
29
102
  }
30
103
  case CalendarType_1["default"].WEEK: {
31
- var controlAction = weekGridControls[customControlType];
32
- if ((0, isFunction_1["default"])(controlAction)) {
33
- controlAction();
104
+ switch (controlType) {
105
+ case DateControlType_1["default"].NEXT_DOUBLE: {
106
+ isGeneralCurrentDayNeedsUpdate.current = true;
107
+ changeMonth();
108
+ return;
109
+ }
110
+ case DateControlType_1["default"].NEXT_ONE: {
111
+ changeWeek();
112
+ return;
113
+ }
114
+ case DateControlType_1["default"].PREV_ONE: {
115
+ changeWeek(false);
116
+ return;
117
+ }
118
+ case DateControlType_1["default"].PREV_DOUBLE: {
119
+ isGeneralCurrentDayNeedsUpdate.current = true;
120
+ changeMonth(false);
121
+ }
34
122
  }
35
- else {
36
- var sourceControlType = controlAction;
37
- (0, utils_1.getSourceCalendarControl)(sourceControlType).click();
123
+ break;
124
+ }
125
+ case CalendarType_1["default"].DAY: {
126
+ switch (controlType) {
127
+ case DateControlType_1["default"].NEXT_DOUBLE: {
128
+ changeWeek();
129
+ return;
130
+ }
131
+ case DateControlType_1["default"].NEXT_ONE: {
132
+ changeDay();
133
+ return;
134
+ }
135
+ case DateControlType_1["default"].PREV_ONE: {
136
+ changeDay(false);
137
+ return;
138
+ }
139
+ case DateControlType_1["default"].PREV_DOUBLE: {
140
+ changeWeek(false);
141
+ }
38
142
  }
39
143
  }
40
144
  }
41
- }, [calendarType, weekGridControls]);
42
- return handleControlClick;
145
+ }, [calendarType, changeDay, changeMonth, changeWeek, isGeneralCurrentDayNeedsUpdate]);
146
+ return { onClickControl: onClickControl };
43
147
  };
44
148
  exports["default"] = useCalendarControls;
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { ICalendarSystemProps, ICalendarUser, IEventGroup } from '../CalendarSystem';
3
+ import CalendarEnum from '../enums/CalendarType';
4
+ export declare const useCalendarSystem: (props: ICalendarSystemProps) => {
5
+ monthGridWeekDays: any;
6
+ monthGridCalendarDays: import("../CalendarSystem").IDay[];
7
+ weekGridTwentyFourHoursArray: string[];
8
+ weekGridCurrentWeekDays: {
9
+ dayNumber: number;
10
+ date: Date;
11
+ outOfRange?: boolean;
12
+ isToday?: boolean;
13
+ formattedDisplay?: string;
14
+ }[];
15
+ dayGridTwentyFourHoursArray: string[];
16
+ dayGridCurrentDay: import("../CalendarSystem").IDay;
17
+ dateToDisplay: any;
18
+ innerEventGroups: IEventGroup[];
19
+ calendarType: CalendarEnum;
20
+ users: ICalendarUser[];
21
+ setSelectedEventGroupsIds: React.Dispatch<React.SetStateAction<number[]>>;
22
+ handleCalendarTypeChange: (newType: string) => void;
23
+ getEventsFromDate: (dateFromDay: Date, currentCalendarType: CalendarEnum) => import("../CalendarSystem").IEvent[];
24
+ onCalendarChangedMonth: (newDate: Date) => void;
25
+ openCreateEventGroupModal: () => void;
26
+ openEditModal: (event: import("../CalendarSystem").IEvent) => void;
27
+ openCreateModal: (eventInitialDay?: import("../CalendarSystem").IDay) => void;
28
+ onClickControl: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
29
+ };