@steroidsjs/core 3.0.15 → 3.0.17
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 +515 -37
- package/en.json +7 -0
- package/hooks/useList.d.ts +1 -0
- package/hooks/useList.js +9 -3
- package/package.json +4 -4
- package/ui/content/Calendar/Calendar.d.ts +5 -0
- package/ui/content/Calendar/Calendar.js +5 -1
- package/ui/content/CalendarSystem/CalendarSystem.d.ts +52 -16
- package/ui/content/CalendarSystem/CalendarSystem.js +33 -68
- package/ui/content/CalendarSystem/enums/CalendarType.d.ts +1 -0
- package/ui/content/CalendarSystem/enums/CalendarType.js +2 -0
- package/ui/content/CalendarSystem/enums/DisplayDateFormatType.d.ts +6 -0
- package/ui/content/CalendarSystem/enums/DisplayDateFormatType.js +38 -0
- package/ui/content/CalendarSystem/hooks/useCalendarControls.d.ts +4 -4
- package/ui/content/CalendarSystem/hooks/useCalendarControls.js +125 -21
- package/ui/content/CalendarSystem/hooks/useCalendarSystem.d.ts +29 -0
- package/ui/content/CalendarSystem/hooks/useCalendarSystem.js +96 -0
- package/ui/content/CalendarSystem/hooks/useCalendarSystemModals.d.ts +2 -2
- package/ui/content/CalendarSystem/hooks/useCalendarSystemModals.js +29 -10
- package/ui/content/CalendarSystem/hooks/useCustomViews.d.ts +24 -0
- package/ui/content/CalendarSystem/hooks/useCustomViews.js +45 -0
- package/ui/content/CalendarSystem/hooks/useDayGrid.d.ts +5 -0
- package/ui/content/CalendarSystem/hooks/useDayGrid.js +9 -0
- package/ui/content/CalendarSystem/hooks/useDisplayDate.d.ts +4 -3
- package/ui/content/CalendarSystem/hooks/useDisplayDate.js +10 -14
- package/ui/content/CalendarSystem/hooks/useEventsFromDate.js +9 -1
- package/ui/content/CalendarSystem/hooks/useMonthGrid.d.ts +1 -10
- package/ui/content/CalendarSystem/hooks/useMonthGrid.js +28 -44
- package/ui/content/CalendarSystem/hooks/useWeekGrid.d.ts +3 -7
- package/ui/content/CalendarSystem/hooks/useWeekGrid.js +8 -65
- package/ui/content/CalendarSystem/utils/utils.d.ts +7 -0
- package/ui/content/CalendarSystem/utils/utils.js +57 -3
- package/ui/content/Icon/Icon.d.ts +4 -0
- package/ui/content/Icon/Icon.js +3 -2
- package/ui/form/DateField/useDateInputState.js +1 -1
- package/ui/form/DateTimeField/DateTimeField.js +2 -1
- package/ui/form/PasswordField/PasswordField.js +14 -7
- package/ui/form/RadioListField/RadioListField.js +1 -1
- package/ui/form/SliderField/SliderField.d.ts +8 -0
- package/ui/form/SliderField/SliderField.js +17 -7
- package/ui/list/Grid/Grid.d.ts +1 -0
- package/ui/list/Grid/Grid.js +3 -2
- package/ui/list/List/List.js +3 -2
package/en.json
CHANGED
|
@@ -988,6 +988,13 @@
|
|
|
988
988
|
"Количество элементов на странице, используется для корректного отображения пагинации": "",
|
|
989
989
|
"Параметры роутинга": "",
|
|
990
990
|
"Сохранение в localStorage уровней вложенности.": "",
|
|
991
|
+
"Дополнительные свойства для бокового календаря": "",
|
|
992
|
+
"Свойства для сетки дня": "",
|
|
993
|
+
"Свойства для сетки месяца": "",
|
|
994
|
+
"Свойства для сетки недели": "",
|
|
995
|
+
"Конечная дата": "",
|
|
996
|
+
"Начальная дата": "",
|
|
997
|
+
"Дополнительные данные которые попадут в дата аттрибут data-icon": "",
|
|
991
998
|
"Компоненты для подключения wysiwyg редактора": "",
|
|
992
999
|
"Отображать чекбоксы только на узлах, не имеющих вложенных элементов": "",
|
|
993
1000
|
"Размер компонента и вложенных полей": "",
|
package/hooks/useList.d.ts
CHANGED
|
@@ -203,6 +203,7 @@ export interface IListOutput {
|
|
|
203
203
|
layoutNamesPosition: ListControlPosition;
|
|
204
204
|
renderList: (children: any) => any;
|
|
205
205
|
renderEmpty: () => any;
|
|
206
|
+
renderLoading: () => any;
|
|
206
207
|
renderPagination: () => any;
|
|
207
208
|
renderPaginationSize: () => any;
|
|
208
209
|
renderLayoutNames: () => any;
|
package/hooks/useList.js
CHANGED
|
@@ -57,6 +57,7 @@ var useInitial_1 = __importDefault(require("../hooks/useInitial"));
|
|
|
57
57
|
var Pagination_1 = require("../ui/list/Pagination/Pagination");
|
|
58
58
|
var PaginationSize_1 = require("../ui/list/PaginationSize/PaginationSize");
|
|
59
59
|
var Empty_1 = require("../ui/list/Empty/Empty");
|
|
60
|
+
var layout_1 = require("../ui/layout");
|
|
60
61
|
exports.defaultConfig = {
|
|
61
62
|
actionMethod: 'get',
|
|
62
63
|
primaryKey: 'id',
|
|
@@ -116,12 +117,16 @@ function useList(config) {
|
|
|
116
117
|
var list = (0, useSelector_1["default"])(function (state) { return (0, list_1.getList)(state, config.listId); });
|
|
117
118
|
// Normalize sort config
|
|
118
119
|
var sort = (0, exports.normalizeSortProps)(config.sort);
|
|
120
|
+
// Loading
|
|
121
|
+
var renderLoading = function () { return (list === null || list === void 0 ? void 0 : list.isLoading)
|
|
122
|
+
? react_1["default"].createElement(layout_1.Loader, null)
|
|
123
|
+
: null; };
|
|
119
124
|
// Empty
|
|
120
125
|
var Empty = require('../ui/list/Empty')["default"];
|
|
121
126
|
var emptyProps = (0, Empty_1.normalizeEmptyProps)(config.empty);
|
|
122
127
|
var renderEmpty = function () {
|
|
123
128
|
var _a;
|
|
124
|
-
if (!emptyProps.enable || (list === null || list === void 0 ? void 0 : list.
|
|
129
|
+
if (!emptyProps.enable || ((_a = list === null || list === void 0 ? void 0 : list.items) === null || _a === void 0 ? void 0 : _a.length) > 0 || !(list === null || list === void 0 ? void 0 : list.isFetched)) {
|
|
125
130
|
return null;
|
|
126
131
|
}
|
|
127
132
|
return (react_1["default"].createElement(Empty, __assign({ list: list }, emptyProps)));
|
|
@@ -129,13 +134,13 @@ function useList(config) {
|
|
|
129
134
|
// Pagination size
|
|
130
135
|
var PaginationSize = require('../ui/list/PaginationSize')["default"];
|
|
131
136
|
var paginationSizeProps = (0, PaginationSize_1.normalizePaginationSizeProps)(config.paginationSize);
|
|
132
|
-
var renderPaginationSize = function () { return paginationSizeProps.enable
|
|
137
|
+
var renderPaginationSize = function () { return paginationSizeProps.enable && (list === null || list === void 0 ? void 0 : list.isFetched)
|
|
133
138
|
? (react_1["default"].createElement(PaginationSize, __assign({ list: list }, paginationSizeProps)))
|
|
134
139
|
: null; };
|
|
135
140
|
// Pagination
|
|
136
141
|
var Pagination = require('../ui/list/Pagination')["default"];
|
|
137
142
|
var paginationProps = (0, Pagination_1.normalizePaginationProps)(config.pagination);
|
|
138
|
-
var renderPagination = function () { return paginationProps.enable
|
|
143
|
+
var renderPagination = function () { return paginationProps.enable && (list === null || list === void 0 ? void 0 : list.isFetched)
|
|
139
144
|
? (react_1["default"].createElement(Pagination, __assign({ list: list }, paginationProps, { sizeAttribute: paginationSizeProps.attribute })))
|
|
140
145
|
: null; };
|
|
141
146
|
// Layout switcher
|
|
@@ -284,6 +289,7 @@ function useList(config) {
|
|
|
284
289
|
paginationSizePosition: paginationSizeProps.position,
|
|
285
290
|
layoutNamesPosition: layoutNamesProps.position,
|
|
286
291
|
renderList: renderList,
|
|
292
|
+
renderLoading: renderLoading,
|
|
287
293
|
renderEmpty: renderEmpty,
|
|
288
294
|
renderPagination: renderPagination,
|
|
289
295
|
renderPaginationSize: renderPaginationSize,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steroidsjs/core",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.17",
|
|
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": "
|
|
29
|
-
"@maskito/kit": "
|
|
30
|
-
"@maskito/react": "
|
|
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",
|
|
@@ -45,6 +45,11 @@ export interface ICalendarProps extends IUiComponent {
|
|
|
45
45
|
* Отображать Footer для календаря (содержит todayButton)
|
|
46
46
|
*/
|
|
47
47
|
showFooter?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Callback вызываемый при нажатии на кнопку 'Сегодня'
|
|
50
|
+
* @param newDate - текущая дата
|
|
51
|
+
*/
|
|
52
|
+
onTodayButtonClick?: (newDate: Date) => void;
|
|
48
53
|
/**
|
|
49
54
|
* Количество отображаемых за раз месяцев
|
|
50
55
|
* @example 1
|
|
@@ -24,7 +24,11 @@ function Calendar(props) {
|
|
|
24
24
|
if (props.onChange) {
|
|
25
25
|
props.onChange.call(null, (0, calendar_1.convertDate)(date, null, props.valueFormat, false, true));
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
if (props.onTodayButtonClick) {
|
|
28
|
+
props.onTodayButtonClick(date);
|
|
29
|
+
setMonth(date);
|
|
30
|
+
}
|
|
31
|
+
}, [props]);
|
|
28
32
|
var toggleCaptionPanel = (0, react_1.useCallback)(function () {
|
|
29
33
|
setIsCaptionPanelVisible(!isCaptionPanelVisible);
|
|
30
34
|
}, [isCaptionPanelVisible]);
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { ICalendarProps } from '../../../ui/content/Calendar/Calendar';
|
|
2
3
|
import { IModalProps } from '../../../ui/modal/Modal/Modal';
|
|
3
4
|
import CalendarEnum from './enums/CalendarType';
|
|
4
|
-
|
|
5
|
+
import { ICustomViews } from './hooks/useCustomViews';
|
|
6
|
+
export type CalendarSystemModalFields = 'title' | 'eventGroupId' | 'description' | 'startDate' | 'endDate' | 'id' | 'usersIds';
|
|
5
7
|
export type CalendarSystemEventGroupModalFields = 'label' | 'color';
|
|
6
8
|
export interface IEventInitialValues extends IEvent {
|
|
7
9
|
eventGroupId: string;
|
|
10
|
+
usersIds: number[];
|
|
8
11
|
}
|
|
9
12
|
export interface IDay {
|
|
10
13
|
dayNumber: number;
|
|
@@ -27,9 +30,13 @@ export interface IEvent {
|
|
|
27
30
|
*/
|
|
28
31
|
id: number;
|
|
29
32
|
/**
|
|
30
|
-
*
|
|
33
|
+
* Начальная дата
|
|
31
34
|
*/
|
|
32
|
-
|
|
35
|
+
startDate: Date;
|
|
36
|
+
/**
|
|
37
|
+
* Конечная дата
|
|
38
|
+
*/
|
|
39
|
+
endDate: Date;
|
|
33
40
|
/**
|
|
34
41
|
* Заголовок
|
|
35
42
|
*/
|
|
@@ -66,6 +73,17 @@ export interface IEventGroup {
|
|
|
66
73
|
*/
|
|
67
74
|
events: Omit<IEvent, 'color'>[];
|
|
68
75
|
}
|
|
76
|
+
export interface ICalendarUser {
|
|
77
|
+
id: number;
|
|
78
|
+
name: string;
|
|
79
|
+
caption: string;
|
|
80
|
+
eventsIds: IEvent['id'][];
|
|
81
|
+
}
|
|
82
|
+
export interface IGridViews {
|
|
83
|
+
eventView?: CustomView;
|
|
84
|
+
hourView?: CustomView;
|
|
85
|
+
gridView?: CustomView;
|
|
86
|
+
}
|
|
69
87
|
/**
|
|
70
88
|
* CalendarSystem
|
|
71
89
|
*
|
|
@@ -78,7 +96,7 @@ export interface IEventGroup {
|
|
|
78
96
|
*/
|
|
79
97
|
export interface ICalendarSystemProps extends IUiComponent {
|
|
80
98
|
/**
|
|
81
|
-
* Функция, которая
|
|
99
|
+
* Функция, которая вызывется при смене типа календаря
|
|
82
100
|
*/
|
|
83
101
|
onChangeCalendarType?: (newType: string) => void;
|
|
84
102
|
/**
|
|
@@ -103,42 +121,60 @@ export interface ICalendarSystemProps extends IUiComponent {
|
|
|
103
121
|
eventGroups: IEventGroup[];
|
|
104
122
|
};
|
|
105
123
|
/**
|
|
124
|
+
* Свойства для сетки дня
|
|
125
|
+
*/
|
|
126
|
+
dayGrid?: IGridViews;
|
|
127
|
+
/**
|
|
128
|
+
* Свойства для сетки недели
|
|
129
|
+
*/
|
|
130
|
+
weekGrid?: IGridViews;
|
|
131
|
+
/**
|
|
132
|
+
* Свойства для сетки месяца
|
|
133
|
+
*/
|
|
134
|
+
monthGrid?: IGridViews;
|
|
135
|
+
users: ICalendarUser[];
|
|
136
|
+
/**
|
|
106
137
|
* Дополнительные свойства, которые передаются во view компонента
|
|
107
138
|
*/
|
|
108
139
|
additionalViewProps?: Record<string, any>;
|
|
140
|
+
/**
|
|
141
|
+
* Дополнительные свойства для бокового календаря
|
|
142
|
+
*/
|
|
143
|
+
asideCalendarProps?: ICalendarProps;
|
|
109
144
|
[key: string]: any;
|
|
110
145
|
}
|
|
111
|
-
export interface ICalendarSystemViewProps extends Pick<ICalendarSystemProps, 'className' | 'style' | 'additionalViewProps'> {
|
|
112
|
-
|
|
113
|
-
onInnerCalendarChangeMonth: (newDate: Date) => void;
|
|
146
|
+
export interface ICalendarSystemViewProps extends Pick<ICalendarSystemProps, 'className' | 'style' | 'additionalViewProps' | 'users' | 'asideCalendarProps'> {
|
|
147
|
+
onCalendarChangedMonth: (newDate: Date) => void;
|
|
114
148
|
eventGroups: IEventGroup[];
|
|
115
149
|
eventGroupsTitle: string;
|
|
116
150
|
onChangeEventGroupsIds: (selectedIds: number[]) => void;
|
|
117
151
|
openCreateEventGroupModal: VoidFunction;
|
|
118
152
|
dateToDisplay: string;
|
|
119
153
|
handleCalendarTypeChange: (newType: string) => void;
|
|
120
|
-
|
|
154
|
+
onClickControl: (event: React.MouseEvent<HTMLElement>) => void;
|
|
121
155
|
calendarType: CalendarEnum;
|
|
156
|
+
getEventsFromDate: (dateFromDay: Date, currentCalendarType: CalendarEnum) => IEvent[];
|
|
157
|
+
openEditModal: (event: IEvent) => void;
|
|
158
|
+
openCreateModal: (eventInitialDay?: IDay) => void;
|
|
122
159
|
monthGridProps: {
|
|
123
160
|
monthGridWeekDays: string[];
|
|
124
161
|
monthGridCalendarDays: IDay[];
|
|
125
|
-
|
|
126
|
-
openEditModal: (event: IEvent) => void;
|
|
127
|
-
openCreateModal: (eventInitialDay?: IDay) => void;
|
|
128
|
-
};
|
|
162
|
+
} & ICustomViews;
|
|
129
163
|
weekGridProps: {
|
|
130
164
|
weekGridTwentyFourHoursArray: string[];
|
|
131
165
|
weekGridCurrentWeekDays: IDay[];
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
166
|
+
} & ICustomViews;
|
|
167
|
+
dayGridProps: {
|
|
168
|
+
dayGridTwentyFourHoursArray: string[];
|
|
169
|
+
dayGridCurrentDay: IDay;
|
|
170
|
+
} & ICustomViews;
|
|
136
171
|
}
|
|
137
172
|
export interface ICalendarSystemModalViewProps extends IModalProps {
|
|
138
173
|
eventGroups: IEventGroup[];
|
|
139
174
|
onModalFormSubmit: (fields: Record<CalendarSystemModalFields, string>, eventInitialValues?: IEventInitialValues) => void;
|
|
140
175
|
isCreate: boolean;
|
|
141
176
|
eventInitialValues?: any;
|
|
177
|
+
users: ICalendarUser[];
|
|
142
178
|
}
|
|
143
179
|
export interface CalendarSystemEventGroupModalViewProps extends IModalProps {
|
|
144
180
|
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,36 @@ 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
|
|
19
|
-
var
|
|
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
|
|
27
|
-
var
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
+
asideCalendarProps: props.asideCalendarProps,
|
|
40
|
+
dateToDisplay: calendarSystem.dateToDisplay,
|
|
41
|
+
eventGroups: calendarSystem.innerEventGroups,
|
|
42
|
+
calendarType: calendarSystem.calendarType,
|
|
43
|
+
openCreateModal: calendarSystem.openCreateModal,
|
|
44
|
+
onCalendarChangedMonth: calendarSystem.onCalendarChangedMonth,
|
|
45
|
+
onChangeEventGroupsIds: function (newSelectedEventGroupsIds) { return calendarSystem.setSelectedEventGroupsIds(newSelectedEventGroupsIds); },
|
|
46
|
+
openCreateEventGroupModal: calendarSystem.openCreateEventGroupModal,
|
|
47
|
+
handleCalendarTypeChange: calendarSystem.handleCalendarTypeChange,
|
|
48
|
+
onClickControl: calendarSystem.onClickControl,
|
|
49
|
+
getEventsFromDate: calendarSystem.getEventsFromDate,
|
|
50
|
+
openEditModal: calendarSystem.openEditModal,
|
|
51
|
+
monthGridProps: __assign({ monthGridWeekDays: calendarSystem.monthGridWeekDays, monthGridCalendarDays: calendarSystem.monthGridCalendarDays }, monthGridViews),
|
|
52
|
+
weekGridProps: __assign({ weekGridTwentyFourHoursArray: calendarSystem.weekGridTwentyFourHoursArray, weekGridCurrentWeekDays: calendarSystem.weekGridCurrentWeekDays }, weekGridViews),
|
|
53
|
+
dayGridProps: __assign({ dayGridTwentyFourHoursArray: calendarSystem.dayGridTwentyFourHoursArray, dayGridCurrentDay: calendarSystem.dayGridCurrentDay }, dayGridViews)
|
|
54
|
+
}); }, [props.className, props.style, props.additionalViewProps, props.eventBlock.title, props.asideCalendarProps, calendarSystem, monthGridViews, weekGridViews, dayGridViews]);
|
|
90
55
|
return components.ui.renderView(props.view || 'content.CalendarSystemView', viewProps);
|
|
91
56
|
}
|
|
92
57
|
exports["default"] = CalendarSystem;
|
|
@@ -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,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
|
|
4
|
-
declare const useCalendarControls: (calendarType: CalendarEnum,
|
|
5
|
-
|
|
6
|
-
}
|
|
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 =
|
|
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
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
101
|
+
break;
|
|
29
102
|
}
|
|
30
103
|
case CalendarType_1["default"].WEEK: {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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,
|
|
42
|
-
return
|
|
145
|
+
}, [calendarType, changeDay, changeMonth, changeWeek, isGeneralCurrentDayNeedsUpdate]);
|
|
146
|
+
return { onClickControl: onClickControl };
|
|
43
147
|
};
|
|
44
148
|
exports["default"] = useCalendarControls;
|