@steroidsjs/core 3.0.14 → 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.
- package/docs-autogen-result.json +464 -38
- package/en.json +7 -0
- package/hooks/useTree.d.ts +3 -2
- package/hooks/useTree.js +20 -1
- package/package.json +4 -4
- package/ui/content/CalendarSystem/CalendarSystem.d.ts +46 -15
- package/ui/content/CalendarSystem/CalendarSystem.js +32 -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/nav/Tree/Tree.d.ts +7 -0
- package/ui/nav/Tree/Tree.js +14 -10
package/en.json
CHANGED
|
@@ -979,6 +979,7 @@
|
|
|
979
979
|
"Скрыть иконку c лева от элемента": "",
|
|
980
980
|
"\nКомпонент `Kanban` позволяет создать доску для управления задачами.\nКоличество столбцов задается с помощью пропа `columns`.\nЗадачи на доске можно создавать, редактировать и перемещать с визуальным отображением.\n\nДля работы этого компонента необходимо установить в проекте зависимости `react-beautiful-dnd`\nи передать в пропсы `droppableComponent`, `draggableComponent` и `dndContext`\nкомпоненты `Droppable`, `Draggable` и `DragDropContext` соответственно.\n\nДля корректной работы функционала создания задач,\nнеобходимо установить в проекте зависимости `@ckeditor/ckeditor5-react` и `@steroidsjs/ckeditor5`,\nзатем импортировать `CKEditor` из `@ckeditor/ckeditor5-react` и `ClassicEditor` из `@steroidsjs/ckeditor5/packages/ckeditor5-build-classic`.\nИмпортированные компоненты нужно передать в проп `createTaskEditorConfig`,\nв поле `htmlComponent` передать `CKEditor`, а в `editorConstructor` передать `ClassicEditor`.\n": "",
|
|
981
981
|
"Компонент для создания HTML-разметки, использующий WYSIWYG редактор.\n\nДля использования WYSIWYG редактора, необходимо установить в проекте зависимости `@ckeditor/ckeditor5-react` и `@steroidsjs/ckeditor5`,\nзатем импортировать `CKEditor` из `@ckeditor/ckeditor5-react` и `ClassicEditor` из `@steroidsjs/ckeditor5/packages/ckeditor5-build-classic`.\nКомпонент `CKEditor` нужно передать в проп `htmlComponent`, а конструктор `ClassicEditor` в проп `editorConstructor`.\n\nПри передаче `HtmlField` с бэкенда, необходимо переопределить `view` компонента, указав локальный.\nВ локальном компоненте добавить вместо пропсов `htmlComponent` и `editorConstructor` импорты `CKEditor` и `ClassicEditor` соотвественно.\n": "",
|
|
982
|
+
"Компонент, который представляет в виде дерева список с иерархической структурой данных\n\nДополнительный функционал: в кастомном view компонента есть возможность реализовать кнопку, по клику на которую\nбудет вызываться функция props.onItemFocus. Данная функция \"находит\" текущий роут в дереве -\nраскрывает родительские уровни, делает элемент активным.\nДанная функция не включает скролл к активному компоненту внутри дерева, это также необходимо\nреализовать в кастомном view локально в проекте.\n": "",
|
|
982
983
|
"Дополнительный свойства для view части компонента": "",
|
|
983
984
|
"Используется для управления раскрытием всех элементов в дереве": "",
|
|
984
985
|
"Идентификатор (ключ) для сохранения в LocalStorage коллекции.": "",
|
|
@@ -987,6 +988,12 @@
|
|
|
987
988
|
"Количество элементов на странице, используется для корректного отображения пагинации": "",
|
|
988
989
|
"Параметры роутинга": "",
|
|
989
990
|
"Сохранение в localStorage уровней вложенности.": "",
|
|
991
|
+
"Свойства для сетки дня": "",
|
|
992
|
+
"Свойства для сетки месяца": "",
|
|
993
|
+
"Свойства для сетки недели": "",
|
|
994
|
+
"Конечная дата": "",
|
|
995
|
+
"Начальная дата": "",
|
|
996
|
+
"Дополнительные данные которые попадут в дата аттрибут data-icon": "",
|
|
990
997
|
"Компоненты для подключения wysiwyg редактора": "",
|
|
991
998
|
"Отображать чекбоксы только на узлах, не имеющих вложенных элементов": "",
|
|
992
999
|
"Размер компонента и вложенных полей": "",
|
package/hooks/useTree.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ export interface IPreparedTreeItem extends ITreeItem {
|
|
|
35
35
|
}
|
|
36
36
|
export interface ITreeOutput {
|
|
37
37
|
treeItems: IPreparedTreeItem[];
|
|
38
|
+
onItemFocus: (e: Event | React.MouseEvent | any) => void;
|
|
38
39
|
}
|
|
39
40
|
export interface ITreeConfig {
|
|
40
41
|
/**
|
|
@@ -98,7 +99,7 @@ export interface ITreeConfig {
|
|
|
98
99
|
/**
|
|
99
100
|
* При повторном нажатии на выбранный элемент из дерева, он продолжит отображаться как активный.
|
|
100
101
|
* @example true
|
|
101
|
-
|
|
102
|
+
*/
|
|
102
103
|
useSameSelectedItemId?: boolean;
|
|
103
104
|
/**
|
|
104
105
|
* Скрывать открытые вложенные узлы, если скрыли родительский узел
|
|
@@ -108,7 +109,7 @@ export interface ITreeConfig {
|
|
|
108
109
|
/**
|
|
109
110
|
* Сохранение в localStorage уровней вложенности.
|
|
110
111
|
* @example true
|
|
111
|
-
|
|
112
|
+
*/
|
|
112
113
|
saveInClientStorage?: boolean;
|
|
113
114
|
/**
|
|
114
115
|
* Идентификатор (ключ) для сохранения в LocalStorage коллекции.
|
package/hooks/useTree.js
CHANGED
|
@@ -120,6 +120,24 @@ function useTree(config) {
|
|
|
120
120
|
}
|
|
121
121
|
return [];
|
|
122
122
|
}, [config.items, config.routerParams, routes]);
|
|
123
|
+
// Выполняет поиск текущего роута в дереве: раскрывает дерево до элемента, делает элемент активным
|
|
124
|
+
var onItemFocus = (0, react_1.useCallback)(function () {
|
|
125
|
+
var currentRouteAsTreeItem = findChildById(items, selectedItemId, primaryKey);
|
|
126
|
+
var currentRouteUniqueIdParts = currentRouteAsTreeItem.uniqueId.split(DOT_SEPARATOR); // Get all parent levels of item
|
|
127
|
+
var itemsToExpand = {};
|
|
128
|
+
var itemToExpandKey;
|
|
129
|
+
currentRouteUniqueIdParts.forEach(function (item, index) {
|
|
130
|
+
if (index === 0) {
|
|
131
|
+
itemToExpandKey = item;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
itemToExpandKey = [itemToExpandKey, item].join(DOT_SEPARATOR);
|
|
135
|
+
itemsToExpand[itemToExpandKey] = true;
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
setSelectedUniqueId(currentRouteAsTreeItem ? currentRouteAsTreeItem.uniqueId : null);
|
|
139
|
+
setExpandedItems(function (prev) { return (__assign(__assign({}, prev), itemsToExpand)); });
|
|
140
|
+
}, [items, primaryKey, selectedItemId]);
|
|
123
141
|
// Initial expanded items
|
|
124
142
|
(0, react_1.useEffect)(function () {
|
|
125
143
|
setExpandedItems(getAutoExpandedItems(items, selectedItemId, primaryKey, config.autoOpenLevels));
|
|
@@ -204,7 +222,8 @@ function useTree(config) {
|
|
|
204
222
|
// eslint-disable-next-line max-len
|
|
205
223
|
}, [activeRouteIds, config.alwaysOpened, config.currentPage, config.itemsOnPage, config.level, expandedItems, items, onExpand, primaryKey, routerParams, selectedUniqueId]);
|
|
206
224
|
return {
|
|
207
|
-
treeItems: resultTreeItems
|
|
225
|
+
treeItems: resultTreeItems,
|
|
226
|
+
onItemFocus: onItemFocus
|
|
208
227
|
};
|
|
209
228
|
}
|
|
210
229
|
exports["default"] = useTree;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steroidsjs/core",
|
|
3
|
-
"version": "3.0.
|
|
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": "
|
|
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",
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
|
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
|
-
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;
|
|
@@ -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;
|
|
@@ -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
|
+
};
|