@steroidsjs/core 3.0.0-beta.98 → 3.0.0

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 (175) hide show
  1. package/actions/notifications.js +7 -1
  2. package/actions/router.js +16 -2
  3. package/components/HttpComponent.d.ts +7 -7
  4. package/components/JwtHttpComponent.d.ts +2 -2
  5. package/components/LocaleComponent.d.ts +6 -6
  6. package/components/MetaComponent.d.ts +90 -1
  7. package/components/MetricsComponent.js +2 -1
  8. package/components/ResourceComponent.d.ts +4 -4
  9. package/components/UiComponent.d.ts +7 -7
  10. package/components/WebSocketComponent.d.ts +11 -11
  11. package/docs-autogen-result.json +15226 -6277
  12. package/en.json +151 -84
  13. package/hooks/index.d.ts +4 -3
  14. package/hooks/index.js +7 -5
  15. package/hooks/useAbsolutePositioning.js +0 -1
  16. package/hooks/useAddressBar.js +0 -1
  17. package/hooks/useApplication.js +8 -1
  18. package/hooks/useDataProvider.d.ts +17 -2
  19. package/hooks/useDataSelect.js +21 -4
  20. package/hooks/useFetch.js +6 -1
  21. package/hooks/useFile.d.ts +1 -0
  22. package/hooks/useFile.js +2 -0
  23. package/hooks/useList.d.ts +53 -14
  24. package/hooks/useList.js +31 -70
  25. package/hooks/useTree.d.ts +104 -0
  26. package/hooks/useTree.js +169 -0
  27. package/index.d.ts +3 -3
  28. package/package.json +94 -93
  29. package/reducers/router.d.ts +2 -1
  30. package/ui/content/Accordion/Accordion.d.ts +8 -5
  31. package/ui/content/Accordion/Accordion.js +6 -1
  32. package/ui/content/Accordion/AccordionItem.d.ts +2 -2
  33. package/ui/content/Accordion/AccordionItem.js +1 -12
  34. package/ui/content/Alert/Alert.d.ts +5 -2
  35. package/ui/content/Alert/Alert.js +13 -12
  36. package/ui/content/Avatar/Avatar.js +18 -12
  37. package/ui/content/Badge/Badge.d.ts +5 -1
  38. package/ui/content/Badge/Badge.js +14 -12
  39. package/ui/content/Calendar/Calendar.d.ts +6 -1
  40. package/ui/content/Calendar/Calendar.js +19 -12
  41. package/ui/content/CalendarSystem/CalendarSystem.d.ts +94 -17
  42. package/ui/content/CalendarSystem/CalendarSystem.js +66 -77
  43. package/ui/content/CalendarSystem/hooks/useCalendarControls.d.ts +1 -2
  44. package/ui/content/CalendarSystem/hooks/useCalendarControls.js +14 -17
  45. package/ui/content/CalendarSystem/hooks/useCalendarSystemEventGroupModals.d.ts +2 -1
  46. package/ui/content/CalendarSystem/hooks/useCalendarSystemEventGroupModals.js +13 -5
  47. package/ui/content/CalendarSystem/hooks/useCalendarSystemModals.js +2 -2
  48. package/ui/content/CalendarSystem/hooks/useCalendarType.d.ts +5 -0
  49. package/ui/content/CalendarSystem/hooks/useCalendarType.js +22 -0
  50. package/ui/content/CalendarSystem/hooks/useEventsFromDate.d.ts +5 -0
  51. package/ui/content/CalendarSystem/hooks/useEventsFromDate.js +49 -0
  52. package/ui/content/CalendarSystem/hooks/{useMonthCalendar.d.ts → useMonthGrid.d.ts} +4 -5
  53. package/ui/content/CalendarSystem/hooks/{useMonthCalendar.js → useMonthGrid.js} +24 -15
  54. package/ui/content/CalendarSystem/hooks/{useWeekCalendar.d.ts → useWeekGrid.d.ts} +6 -5
  55. package/ui/content/CalendarSystem/hooks/useWeekGrid.js +72 -0
  56. package/ui/content/CalendarSystem/utils/utils.d.ts +8 -0
  57. package/ui/content/CalendarSystem/utils/utils.js +27 -1
  58. package/ui/content/Card/Card.d.ts +33 -27
  59. package/ui/content/Card/Card.js +1 -12
  60. package/ui/content/Chart/Chart.d.ts +38 -8
  61. package/ui/content/Chart/Chart.js +16 -12
  62. package/ui/content/Chat/Chat.d.ts +109 -0
  63. package/ui/content/Chat/Chat.js +52 -0
  64. package/ui/content/Chat/constants/timeTemplatesAndUnits.d.ts +8 -0
  65. package/ui/content/Chat/constants/timeTemplatesAndUnits.js +11 -0
  66. package/ui/content/Chat/hooks/useChat.d.ts +12 -0
  67. package/ui/content/Chat/hooks/useChat.js +58 -0
  68. package/ui/content/Chat/index.d.ts +2 -0
  69. package/ui/content/Chat/index.js +7 -0
  70. package/ui/content/Chat/utils/addNewMessageIntoGroupedMessages.d.ts +5 -0
  71. package/ui/content/Chat/utils/addNewMessageIntoGroupedMessages.js +61 -0
  72. package/ui/content/Chat/utils/calculateMessageTimeAgo.d.ts +1 -0
  73. package/ui/content/Chat/utils/calculateMessageTimeAgo.js +26 -0
  74. package/ui/content/Chat/utils/getMessagesGroupedByDate.d.ts +4 -0
  75. package/ui/content/Chat/utils/getMessagesGroupedByDate.js +56 -0
  76. package/ui/content/Chat/utils/index.d.ts +5 -0
  77. package/ui/content/Chat/utils/index.js +12 -0
  78. package/ui/content/Chat/utils/isTodayMessage.d.ts +1 -0
  79. package/ui/content/Chat/utils/isTodayMessage.js +13 -0
  80. package/ui/content/CopyToClipboard/CopyToClipboard.d.ts +3 -3
  81. package/ui/content/CopyToClipboard/CopyToClipboard.js +10 -12
  82. package/ui/content/Dashboard/Dashboard.d.ts +5 -2
  83. package/ui/content/Dashboard/Dashboard.js +27 -3
  84. package/ui/content/Detail/Detail.d.ts +15 -2
  85. package/ui/content/Detail/Detail.js +12 -1
  86. package/ui/content/DropDown/DropDown.d.ts +1 -1
  87. package/ui/content/DropDown/DropDown.js +16 -4
  88. package/ui/content/Icon/Icon.js +13 -15
  89. package/ui/content/Kanban/Kanban.d.ts +15 -4
  90. package/ui/content/Kanban/Kanban.js +8 -12
  91. package/ui/content/Kanban/hooks/useKanban.d.ts +33 -26
  92. package/ui/content/Menu/Menu.js +10 -12
  93. package/ui/content/Slider/Slider.js +1 -12
  94. package/ui/content/index.d.ts +2 -1
  95. package/ui/content/index.js +3 -1
  96. package/ui/crud/index.d.ts +3 -0
  97. package/ui/form/AutoCompleteField/AutoCompleteField.js +1 -1
  98. package/ui/form/Button/Button.js +8 -2
  99. package/ui/form/CheckboxField/CheckboxField.d.ts +1 -0
  100. package/ui/form/CheckboxField/CheckboxField.js +2 -2
  101. package/ui/form/CheckboxListField/CheckboxListField.d.ts +18 -2
  102. package/ui/form/CheckboxListField/CheckboxListField.js +1 -1
  103. package/ui/form/CheckboxTreeField/CheckboxTreeField.d.ts +67 -0
  104. package/ui/form/CheckboxTreeField/CheckboxTreeField.js +126 -0
  105. package/ui/form/CheckboxTreeField/index.d.ts +2 -0
  106. package/ui/form/CheckboxTreeField/index.js +7 -0
  107. package/ui/form/DateField/DateField.js +4 -1
  108. package/ui/form/DateField/useDateRange.d.ts +1 -0
  109. package/ui/form/DateField/useDateRange.js +13 -2
  110. package/ui/form/DateRangeField/DateRangeField.d.ts +34 -1
  111. package/ui/form/DateRangeField/DateRangeField.js +59 -8
  112. package/ui/form/DateTimeField/DateTimeField.d.ts +10 -0
  113. package/ui/form/DateTimeField/DateTimeField.js +11 -3
  114. package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +25 -1
  115. package/ui/form/DateTimeRangeField/DateTimeRangeField.js +66 -13
  116. package/ui/form/DropDownField/DropDownField.d.ts +23 -3
  117. package/ui/form/DropDownField/DropDownField.js +1 -1
  118. package/ui/form/EmailField/EmailField.d.ts +6 -0
  119. package/ui/form/EmailField/EmailField.js +0 -4
  120. package/ui/form/Field/Field.d.ts +9 -1
  121. package/ui/form/Field/Field.js +1 -1
  122. package/ui/form/Field/fieldWrapper.d.ts +9 -1
  123. package/ui/form/FieldList/FieldList.d.ts +13 -7
  124. package/ui/form/FieldList/FieldList.js +30 -4
  125. package/ui/form/FileField/FileField.js +5 -0
  126. package/ui/form/Form/Form.d.ts +26 -3
  127. package/ui/form/Form/Form.js +5 -3
  128. package/ui/form/ImageField/ImageField.d.ts +9 -1
  129. package/ui/form/InputField/InputField.d.ts +5 -2
  130. package/ui/form/InputField/hooks/useInputFieldWarningByType.js +1 -0
  131. package/ui/form/NumberField/NumberField.js +34 -7
  132. package/ui/form/SliderField/SliderField.d.ts +10 -2
  133. package/ui/form/TimeRangeField/TimeRangeField.d.ts +10 -1
  134. package/ui/form/TimeRangeField/TimeRangeField.js +3 -1
  135. package/ui/form/WizardForm/WizardForm.d.ts +119 -0
  136. package/ui/form/WizardForm/WizardForm.js +167 -0
  137. package/ui/form/WizardForm/index.d.ts +2 -0
  138. package/ui/form/WizardForm/index.js +7 -0
  139. package/ui/form/WizardForm/utils.d.ts +12 -0
  140. package/ui/form/WizardForm/utils.js +111 -0
  141. package/ui/form/index.d.ts +3 -1
  142. package/ui/form/index.js +4 -1
  143. package/ui/layout/ProgressBar/ProgressBar.js +8 -2
  144. package/ui/layout/Skeleton/Skeleton.d.ts +3 -1
  145. package/ui/layout/Tooltip/Tooltip.d.ts +4 -1
  146. package/ui/list/ControlsColumn/ControlsColumn.d.ts +17 -3
  147. package/ui/list/FlexGrid/FlexGrid.d.ts +11 -1
  148. package/ui/list/Grid/Grid.d.ts +42 -6
  149. package/ui/list/Grid/Grid.js +1 -2
  150. package/ui/list/LayoutNames/LayoutNames.d.ts +11 -1
  151. package/ui/list/Steps/Steps.d.ts +19 -7
  152. package/ui/list/Steps/Steps.js +46 -26
  153. package/ui/list/TreeTable/TreeTable.d.ts +34 -33
  154. package/ui/list/TreeTable/TreeTable.js +19 -8
  155. package/ui/modal/Modal/Modal.d.ts +7 -1
  156. package/ui/nav/Breadcrumbs/Breadcrumbs.d.ts +11 -1
  157. package/ui/nav/ButtonGroup/ButtonGroup.d.ts +13 -4
  158. package/ui/nav/Controls/Controls.d.ts +7 -1
  159. package/ui/nav/Link/Link.d.ts +1 -1
  160. package/ui/nav/Nav/Nav.d.ts +19 -4
  161. package/ui/nav/Router/Router.d.ts +19 -3
  162. package/ui/nav/Router/Router.js +11 -6
  163. package/ui/nav/Router/helpers.d.ts +2 -2
  164. package/ui/nav/Router/helpers.js +39 -7
  165. package/ui/nav/Tree/Tree.d.ts +32 -62
  166. package/ui/nav/Tree/Tree.js +18 -165
  167. package/utils/calculateComponentAbsolutePosition.js +74 -24
  168. package/utils/calendar.d.ts +8 -0
  169. package/utils/calendar.js +76 -1
  170. package/utils/data.js +1 -0
  171. package/utils/form.d.ts +1 -0
  172. package/utils/form.js +16 -1
  173. package/ui/content/CalendarSystem/hooks/useWeekCalendar.js +0 -86
  174. package/utils/list.d.ts +0 -1
  175. package/utils/list.js +0 -5
@@ -18,57 +18,134 @@ export interface IPresentDateInfo {
18
18
  currentMonth: number;
19
19
  dateToDisplay: string;
20
20
  }
21
+ /**
22
+ * Событие
23
+ */
21
24
  export interface IEvent {
25
+ /**
26
+ * Идентификатор
27
+ */
22
28
  id: number;
29
+ /**
30
+ * Дата
31
+ */
23
32
  date: Date;
33
+ /**
34
+ * Заголовок
35
+ */
24
36
  title: string;
37
+ /**
38
+ * Цвет
39
+ */
25
40
  color?: string;
41
+ /**
42
+ * Внутреннее описания события
43
+ */
26
44
  description?: string;
27
45
  [key: string]: any;
28
46
  }
47
+ /**
48
+ * Группа событий
49
+ */
29
50
  export interface IEventGroup {
51
+ /**
52
+ * Идентификатор
53
+ */
30
54
  id: number;
55
+ /**
56
+ * Название группы
57
+ */
31
58
  label: string;
59
+ /**
60
+ * Цвет
61
+ * @example '#000000'
62
+ */
32
63
  color?: string;
64
+ /**
65
+ * События группы
66
+ */
33
67
  events: Omit<IEvent, 'color'>[];
34
68
  }
69
+ /**
70
+ * CalendarSystem
71
+ *
72
+ * Комплексный компонент календарь служит для планирования событий и их отображения в календаре.
73
+ *
74
+ * Компонент умеет отображать события с помощью недельной сетки с шагом в 1 час,
75
+ * а также переключать отображение на сетку по месяцам с шагом 1 день.
76
+ * Присутствует возможность добавлять в календарь события и создавать новые группы событий.
77
+ *
78
+ */
35
79
  export interface ICalendarSystemProps extends IUiComponent {
36
- onCreateEvent?: () => void;
80
+ /**
81
+ * Функция, которая вызовется при смене типа календаря
82
+ */
37
83
  onChangeCalendarType?: (newType: string) => void;
84
+ /**
85
+ * Свойства для модального окна
86
+ */
38
87
  calendarModalProps?: IModalProps;
88
+ /**
89
+ * Свойства для модалного окна группы событий
90
+ */
91
+ eventGroupModalProps?: IModalProps;
92
+ /**
93
+ * Параметры для групп событий
94
+ */
39
95
  eventBlock: {
96
+ /**
97
+ * Заголовок, который используется для обозначения групп событий
98
+ */
40
99
  title: string;
100
+ /**
101
+ * Группы событий
102
+ */
41
103
  eventGroups: IEventGroup[];
42
104
  };
105
+ /**
106
+ * Дополнительные свойства, которые передаются во view компонента
107
+ */
108
+ additionalViewProps?: Record<string, any>;
43
109
  [key: string]: any;
44
110
  }
45
- export interface ICalendarSystemViewProps extends Omit<ICalendarSystemProps, 'calendarGroups'> {
46
- monthCalendarDays: IDay[];
47
- currentWeekDays: IDay[];
48
- allHours: string[];
49
- calendarType: CalendarEnum;
50
- dateToDisplay: string;
111
+ export interface ICalendarSystemViewProps extends Pick<ICalendarSystemProps, 'className' | 'style' | 'additionalViewProps'> {
112
+ openCreateModal: (eventInitialDay?: IDay) => void;
113
+ onInnerCalendarChangeMonth: (newDate: Date) => void;
51
114
  eventGroups: IEventGroup[];
52
115
  eventGroupsTitle: string;
53
- selectedCalendarGroupsIds: number[];
54
- onChangeCalendarType: (newType: string) => void;
55
- onMonthChange: (newDate: Date) => void;
56
- applyControl: (event: React.MouseEvent<HTMLElement>) => void;
57
- openCreateModal: (eventInitialDay?: IDay) => void;
58
- openCreateEventGroupModal: VoidFunction;
59
- openEditModal: (event: IEvent) => void;
60
- getEventsFromDate: (dateFromDay: Date, isMonth: boolean) => IEvent[];
61
116
  onChangeEventGroupsIds: (selectedIds: number[]) => void;
62
- weekDays: string[];
117
+ openCreateEventGroupModal: VoidFunction;
118
+ dateToDisplay: string;
119
+ handleCalendarTypeChange: (newType: string) => void;
120
+ handleControlClick: (event: React.MouseEvent<HTMLElement>) => void;
121
+ calendarType: CalendarEnum;
122
+ monthGridProps: {
123
+ monthGridWeekDays: string[];
124
+ monthGridCalendarDays: IDay[];
125
+ getEventsFromDate: (dateFromDay: Date, currentCalendarType: CalendarEnum) => IEvent[];
126
+ openEditModal: (event: IEvent) => void;
127
+ openCreateModal: (eventInitialDay?: IDay) => void;
128
+ };
129
+ weekGridProps: {
130
+ weekGridTwentyFourHoursArray: string[];
131
+ weekGridCurrentWeekDays: IDay[];
132
+ getEventsFromDate: (dateFromDay: Date, currentCalendarType: CalendarEnum) => IEvent[];
133
+ openEditModal: (event: IEvent) => void;
134
+ openCreateModal: (eventInitialDay?: IDay) => void;
135
+ };
63
136
  }
64
137
  export interface ICalendarSystemModalViewProps extends IModalProps {
65
138
  eventGroups: IEventGroup[];
66
- onEventSubmit: (fields: Record<CalendarSystemModalFields, string>, eventInitialValues?: IEventInitialValues) => void;
139
+ onModalFormSubmit: (fields: Record<CalendarSystemModalFields, string>, eventInitialValues?: IEventInitialValues) => void;
67
140
  isCreate: boolean;
68
141
  eventInitialValues?: any;
69
142
  }
70
143
  export interface CalendarSystemEventGroupModalViewProps extends IModalProps {
71
144
  isCreate: boolean;
72
145
  onEventGroupSubmit: (fields: Record<CalendarSystemEventGroupModalFields, string>) => void;
146
+ eventGroupInitialValues?: {
147
+ color: string;
148
+ label: string;
149
+ };
73
150
  }
74
151
  export default function CalendarSystem(props: ICalendarSystemProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -1,103 +1,92 @@
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
- };
13
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
4
  };
16
5
  exports.__esModule = true;
6
+ /* eslint-disable max-len */
17
7
  /* eslint-disable no-return-assign */
18
8
  /* eslint-disable default-case */
19
9
  /* eslint-disable no-unused-expressions */
20
10
  /* eslint-disable no-plusplus */
21
11
  var react_1 = __importDefault(require("react"));
22
12
  var dayjs_1 = __importDefault(require("dayjs"));
23
- var concat_1 = __importDefault(require("lodash-es/concat"));
24
- var slice_1 = __importDefault(require("lodash-es/slice"));
25
13
  var localeData_1 = __importDefault(require("dayjs/plugin/localeData"));
26
- var upperFirst_1 = __importDefault(require("lodash-es/upperFirst"));
27
14
  var useCalendarControls_1 = __importDefault(require("./hooks/useCalendarControls"));
28
15
  var useDisplayDate_1 = __importDefault(require("./hooks/useDisplayDate"));
29
- var useMonthCalendar_1 = __importDefault(require("./hooks/useMonthCalendar"));
16
+ var useMonthGrid_1 = __importDefault(require("./hooks/useMonthGrid"));
30
17
  var hooks_1 = require("../../../hooks");
31
- var addEventIfMatchDate_1 = require("./helpers/addEventIfMatchDate");
32
- var CalendarType_1 = __importDefault(require("./enums/CalendarType"));
33
18
  var useCalendarSystemModals_1 = __importDefault(require("./hooks/useCalendarSystemModals"));
34
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");
35
23
  dayjs_1["default"].extend(localeData_1["default"]);
36
24
  function CalendarSystem(props) {
37
25
  var components = (0, hooks_1.useComponents)();
38
26
  var _a = react_1["default"].useState(props.eventBlock.eventGroups || []), innerEventGroups = _a[0], setInnerEventGroups = _a[1];
39
27
  var _b = react_1["default"].useState([]), selectedEventGroupsIds = _b[0], setSelectedEventGroupsIds = _b[1];
40
- var _c = (0, useDisplayDate_1["default"])(), dateToDisplay = _c.dateToDisplay, setNewDateToDisplay = _c.setNewDateToDisplay;
41
- var _d = react_1["default"].useState(CalendarType_1["default"].MONTH), calendarType = _d[0], setCalendarType = _d[1];
42
- var _e = (0, useMonthCalendar_1["default"])(), monthCalendarDays = _e.calendarArray, setCurrentMonthDate = _e.setCurrentMonthDate, currentMonthDate = _e.currentMonthDate;
43
- var _f = (0, hooks_1.useWeekCalendar)(currentMonthDate), currentWeekDays = _f.currentWeek, weekControls = _f.weekControls, forceUpdateWeekOnMonthChange = _f.forceUpdateWeekOnMonthChange;
44
- var applyControl = (0, useCalendarControls_1["default"])(calendarType, weekControls);
45
- var _g = (0, useCalendarSystemModals_1["default"])(props.calendarModalProps, innerEventGroups, setInnerEventGroups), openCreateModal = _g.openCreateModal, openEditModal = _g.openEditModal;
46
- var openCreateEventGroupModal = (0, useCalendarSystemEventGroupModals_1.useCalendarSystemEventGroupModals)(innerEventGroups, setInnerEventGroups).openCreateEventGroupModal;
47
- var onChangeCalendarType = react_1["default"].useCallback(function (newType) {
48
- setCalendarType(newType);
49
- if (props.onChangeCalendarType) {
50
- props.onChangeCalendarType(newType);
51
- }
52
- }, [props]);
53
- var onMonthChange = react_1["default"].useCallback(function (newDate) {
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) {
54
37
  setNewDateToDisplay(newDate);
55
- setCurrentMonthDate(newDate);
56
- forceUpdateWeekOnMonthChange(newDate);
57
- }, [forceUpdateWeekOnMonthChange, setCurrentMonthDate, setNewDateToDisplay]);
58
- var getEventsFromDate = function (date, currentCalendarType) {
59
- var eventsOnDate = [];
60
- var dayjsDate = (0, dayjs_1["default"])(date);
61
- var iterateEventGroups = function (callback) {
62
- innerEventGroups.forEach(function (eventGroup) {
63
- eventGroup.events.forEach(function (event) {
64
- callback(event, eventGroup);
65
- });
66
- });
67
- };
68
- switch (currentCalendarType) {
69
- case CalendarType_1["default"].MONTH: {
70
- iterateEventGroups(function (event, eventGroup) {
71
- var eventDateDayJs = (0, dayjs_1["default"])(event.date);
72
- (0, addEventIfMatchDate_1.addEventIfMatchDate)(eventDateDayJs, dayjsDate, eventGroup, event, 'day', selectedEventGroupsIds, eventsOnDate);
73
- });
74
- break;
75
- }
76
- case CalendarType_1["default"].WEEK: {
77
- iterateEventGroups(function (event, eventGroup) {
78
- var eventDate = new Date(event.date);
79
- eventDate.setHours(eventDate.getHours(), 0, 0, 0);
80
- var eventDateDayJs = (0, dayjs_1["default"])(eventDate);
81
- (0, addEventIfMatchDate_1.addEventIfMatchDate)(eventDateDayJs, dayjsDate, eventGroup, event, 'hours', selectedEventGroupsIds, eventsOnDate);
82
- });
83
- break;
84
- }
85
- }
86
- // eslint-disable-next-line consistent-return
87
- return eventsOnDate;
88
- };
89
- var weekDays = react_1["default"].useMemo(function () {
90
- var unformattedDaysOfWeek = dayjs_1["default"].weekdaysMin();
91
- return (0, concat_1["default"])((0, slice_1["default"])(unformattedDaysOfWeek, 1), unformattedDaysOfWeek[0]).map(function (weekDay) { return __("".concat((0, upperFirst_1["default"])(weekDay))); });
92
- }, []);
93
- var allHours = react_1["default"].useMemo(function () {
94
- var hoursArray = [];
95
- for (var i = 0; i < 24; i++) {
96
- var formattedHour = (0, dayjs_1["default"])().startOf('day').add(i, 'hour').format('HH:00');
97
- hoursArray.push(formattedHour);
38
+ setCurrentMonthFirstDayDate(newDate);
39
+ updateWeekOnMonthChange(newDate);
40
+ }, [updateWeekOnMonthChange, setCurrentMonthFirstDayDate, setNewDateToDisplay]);
41
+ var getEventsFromDate = (0, useEventsFromDate_1.useEventsFromDate)(innerEventGroups, selectedEventGroupsIds).getEventsFromDate;
42
+ var viewProps = react_1["default"].useMemo(function () { return ({
43
+ className: props.className,
44
+ 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
+ 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
98
69
  }
99
- return hoursArray;
100
- }, []);
101
- return components.ui.renderView(props.view || 'content.CalendarSystemView', __assign(__assign({}, props), { dateToDisplay: dateToDisplay, monthCalendarDays: monthCalendarDays, calendarType: calendarType, currentWeekDays: currentWeekDays, eventGroups: innerEventGroups, eventGroupsTitle: props.eventBlock.title, allHours: allHours, selectedEventGroupsIds: selectedEventGroupsIds, onChangeCalendarType: onChangeCalendarType, onMonthChange: onMonthChange, applyControl: applyControl, openCreateModal: openCreateModal, getEventsFromDate: getEventsFromDate, onChangeEventGroupsIds: function (newSelectedEventGroupsIds) { return setSelectedEventGroupsIds(newSelectedEventGroupsIds); }, openCreateEventGroupModal: openCreateEventGroupModal, openEditModal: openEditModal, weekDays: weekDays }));
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
+ ]);
90
+ return components.ui.renderView(props.view || 'content.CalendarSystemView', viewProps);
102
91
  }
103
92
  exports["default"] = CalendarSystem;
@@ -1,8 +1,7 @@
1
1
  import React from 'react';
2
2
  import CalendarEnum from '../enums/CalendarType';
3
3
  import DateControlEnum from '../enums/DateControlType';
4
- export declare const getSourceCalendarControl: (control: string) => HTMLElement;
5
- declare const useCalendarControls: (calendarType: CalendarEnum, weekControls: {
4
+ declare const useCalendarControls: (calendarType: CalendarEnum, weekGridControls: {
6
5
  [key: string]: () => void | DateControlEnum;
7
6
  }) => (event: React.MouseEvent<HTMLElement>) => void;
8
7
  export default useCalendarControls;
@@ -3,26 +3,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  exports.__esModule = true;
6
- exports.getSourceCalendarControl = void 0;
7
- /* eslint-disable no-unneeded-ternary */
8
6
  /* eslint-disable default-case */
9
- /* eslint-disable no-unused-expressions */
10
7
  var react_1 = __importDefault(require("react"));
11
8
  var isFunction_1 = __importDefault(require("lodash-es/isFunction"));
12
9
  var get_1 = __importDefault(require("lodash-es/get"));
13
10
  var CalendarType_1 = __importDefault(require("../enums/CalendarType"));
11
+ var utils_1 = require("../utils/utils");
14
12
  var CUSTOM_CONTROL_PATH = 'dataset.control';
15
- var getSourceCalendarControl = function (control) { return document.querySelector("[data-sourcecontrol=\"".concat(control, "\"]")); };
16
- exports.getSourceCalendarControl = getSourceCalendarControl;
17
- var useCalendarControls = function (calendarType, weekControls) {
18
- var getCustomControlType = function (event) {
13
+ var useCalendarControls = function (calendarType, weekGridControls) {
14
+ var extractCustomControlType = function (event) {
19
15
  var target = event.target;
20
16
  var customControlType = (0, get_1["default"])(target, CUSTOM_CONTROL_PATH);
21
- return customControlType ? customControlType : null;
17
+ return customControlType !== null && customControlType !== void 0 ? customControlType : null;
22
18
  };
23
- var applyControl = react_1["default"].useCallback(function (event) {
24
- var customControlType = getCustomControlType(event);
25
- var sourceCalendarControl = (0, exports.getSourceCalendarControl)(customControlType);
19
+ var handleControlClick = react_1["default"].useCallback(function (event) {
20
+ var customControlType = extractCustomControlType(event);
21
+ var sourceCalendarControl = (0, utils_1.getSourceCalendarControl)(customControlType);
26
22
  if (!sourceCalendarControl) {
27
23
  return;
28
24
  }
@@ -32,16 +28,17 @@ var useCalendarControls = function (calendarType, weekControls) {
32
28
  return;
33
29
  }
34
30
  case CalendarType_1["default"].WEEK: {
35
- if ((0, isFunction_1["default"])(weekControls[customControlType])) {
36
- weekControls[customControlType]();
31
+ var controlAction = weekGridControls[customControlType];
32
+ if ((0, isFunction_1["default"])(controlAction)) {
33
+ controlAction();
37
34
  }
38
35
  else {
39
- var sourceControlType = weekControls[customControlType];
40
- (0, exports.getSourceCalendarControl)(sourceControlType).click();
36
+ var sourceControlType = controlAction;
37
+ (0, utils_1.getSourceCalendarControl)(sourceControlType).click();
41
38
  }
42
39
  }
43
40
  }
44
- }, [calendarType, weekControls]);
45
- return applyControl;
41
+ }, [calendarType, weekGridControls]);
42
+ return handleControlClick;
46
43
  };
47
44
  exports["default"] = useCalendarControls;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { IEventGroup } from '../CalendarSystem';
3
- export declare const useCalendarSystemEventGroupModals: (innerEventGroups: IEventGroup[], setInnerEventGroups: React.Dispatch<React.SetStateAction<IEventGroup[]>>) => {
3
+ import { IModalProps } from '../../../modal/Modal/Modal';
4
+ export declare const useCalendarSystemEventGroupModals: (innerEventGroups: IEventGroup[], setInnerEventGroups: React.Dispatch<React.SetStateAction<IEventGroup[]>>, eventGroupModalProps: IModalProps) => {
4
5
  openCreateEventGroupModal: () => void;
5
6
  };
@@ -16,14 +16,19 @@ exports.useCalendarSystemEventGroupModals = void 0;
16
16
  var react_redux_1 = require("react-redux");
17
17
  var maxBy_1 = __importDefault(require("lodash-es/maxBy"));
18
18
  var react_1 = __importDefault(require("react"));
19
+ var hooks_1 = require("../../../../hooks");
19
20
  var modal_1 = require("../../../../actions/modal");
20
21
  var useComponents_1 = __importDefault(require("../../../../hooks/useComponents"));
21
22
  var DEFAULT_ID = 1;
22
- var useCalendarSystemEventGroupModals = function (innerEventGroups, setInnerEventGroups) {
23
+ var PRIMARY_LIGHT = '#651fff';
24
+ var PRIMARY_DARK = '#9362ff';
25
+ var useCalendarSystemEventGroupModals = function (innerEventGroups, setInnerEventGroups, eventGroupModalProps) {
23
26
  var dispatch = (0, react_redux_1.useDispatch)();
24
27
  var components = (0, useComponents_1["default"])();
25
- var calendarModalView = components.ui.getView('content.CalendarSystemEventGroupModalView');
26
- var onEventGroupSubmit = react_1["default"].useCallback(function (fields) {
28
+ var theme = (0, hooks_1.useTheme)().theme;
29
+ var calendarModalView = (eventGroupModalProps === null || eventGroupModalProps === void 0 ? void 0 : eventGroupModalProps.component) || components.ui.getView('content.CalendarSystemEventGroupModalView');
30
+ var defaultEventGroupColor = react_1["default"].useMemo(function () { return theme === 'light' ? PRIMARY_LIGHT : PRIMARY_DARK; }, [theme]);
31
+ var onSubmit = react_1["default"].useCallback(function (fields) {
27
32
  var _a;
28
33
  var newEventGroup = {
29
34
  id: (((_a = (0, maxBy_1["default"])(innerEventGroups, function (eventsGroup) { return eventsGroup.id; })) === null || _a === void 0 ? void 0 : _a.id) || DEFAULT_ID) + 1,
@@ -36,9 +41,12 @@ var useCalendarSystemEventGroupModals = function (innerEventGroups, setInnerEven
36
41
  var openCreateEventGroupModal = react_1["default"].useCallback(function () {
37
42
  dispatch((0, modal_1.openModal)(calendarModalView, {
38
43
  isCreate: true,
39
- onEventGroupSubmit: onEventGroupSubmit
44
+ onEventGroupSubmit: onSubmit,
45
+ eventGroupInitialValues: {
46
+ color: defaultEventGroupColor
47
+ }
40
48
  }));
41
- }, [calendarModalView, dispatch, onEventGroupSubmit]);
49
+ }, [calendarModalView, defaultEventGroupColor, dispatch, onSubmit]);
42
50
  return {
43
51
  openCreateEventGroupModal: openCreateEventGroupModal
44
52
  };
@@ -35,7 +35,7 @@ var useCalendarSystemModals = function (calendarModalProps, innerEventGroups, se
35
35
  var dispatch = (0, react_redux_1.useDispatch)();
36
36
  var components = (0, useComponents_1["default"])();
37
37
  var calendarModalView = (calendarModalProps === null || calendarModalProps === void 0 ? void 0 : calendarModalProps.component) || components.ui.getView('content.CalendarSystemModalView');
38
- var onEventSubmit = react_1["default"].useCallback(function (fields, eventInitialValues) {
38
+ var onModalFormSubmit = react_1["default"].useCallback(function (fields, eventInitialValues) {
39
39
  var _a;
40
40
  var eventGroupId = fields.eventGroupId, date = fields.date, title = fields.title, description = fields.description;
41
41
  var currentEventGroups = __spreadArray([], innerEventGroups, true);
@@ -63,7 +63,7 @@ var useCalendarSystemModals = function (calendarModalProps, innerEventGroups, se
63
63
  ], false), currentEventGroups.slice(changeableEventGroupIndex + 1), true);
64
64
  setInnerEventGroups(currentEventGroups);
65
65
  }, [innerEventGroups, setInnerEventGroups]);
66
- var getModalProps = react_1["default"].useCallback(function (isCreate, eventInitialValues) { return (__assign(__assign({}, calendarModalProps), { component: calendarModalView, eventGroups: innerEventGroups, onEventSubmit: onEventSubmit, isCreate: isCreate, eventInitialValues: eventInitialValues })); }, [calendarModalProps, calendarModalView, innerEventGroups, onEventSubmit]);
66
+ var getModalProps = react_1["default"].useCallback(function (isCreate, eventInitialValues) { return (__assign(__assign({}, calendarModalProps), { component: calendarModalView, eventGroups: innerEventGroups, onModalFormSubmit: onModalFormSubmit, isCreate: isCreate, eventInitialValues: eventInitialValues })); }, [calendarModalProps, calendarModalView, innerEventGroups, onModalFormSubmit]);
67
67
  var getEventFromGroup = react_1["default"].useCallback(function (event) { return innerEventGroups
68
68
  .find(function (group) { return group.events
69
69
  .some(function (groupEvent) { return (0, isEqual_1["default"])((0, utils_1.getOmittedEvent)(groupEvent), (0, utils_1.getOmittedEvent)(event)); }); }); }, [innerEventGroups]);
@@ -0,0 +1,5 @@
1
+ import CalendarEnum from '../enums/CalendarType';
2
+ export declare const useCalendarType: (onChangeCalendarType?: (newType: string) => void) => {
3
+ handleCalendarTypeChange: (newType: string) => void;
4
+ calendarType: CalendarEnum;
5
+ };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ exports.useCalendarType = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var CalendarType_1 = __importDefault(require("../enums/CalendarType"));
9
+ var useCalendarType = function (onChangeCalendarType) {
10
+ var _a = react_1["default"].useState(CalendarType_1["default"].MONTH), calendarType = _a[0], setCalendarType = _a[1];
11
+ var handleCalendarTypeChange = react_1["default"].useCallback(function (newType) {
12
+ setCalendarType(newType);
13
+ if (onChangeCalendarType) {
14
+ onChangeCalendarType(newType);
15
+ }
16
+ }, [onChangeCalendarType]);
17
+ return {
18
+ handleCalendarTypeChange: handleCalendarTypeChange,
19
+ calendarType: calendarType
20
+ };
21
+ };
22
+ exports.useCalendarType = useCalendarType;
@@ -0,0 +1,5 @@
1
+ import { IEvent, IEventGroup } from '../CalendarSystem';
2
+ import CalendarEnum from '../enums/CalendarType';
3
+ export declare const useEventsFromDate: (innerEventGroups: IEventGroup[], selectedEventGroupsIds: number[]) => {
4
+ getEventsFromDate: (dateFromDay: Date, currentCalendarType: CalendarEnum) => IEvent[];
5
+ };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ var _a;
6
+ exports.__esModule = true;
7
+ exports.useEventsFromDate = void 0;
8
+ /* eslint-disable default-case */
9
+ var react_1 = __importDefault(require("react"));
10
+ var dayjs_1 = __importDefault(require("dayjs"));
11
+ var CalendarType_1 = __importDefault(require("../enums/CalendarType"));
12
+ var addEventIfMatchDate_1 = require("../helpers/addEventIfMatchDate");
13
+ var CALENDAR_TYPE_GETTING_EVENTS_PROPERTIES = (_a = {},
14
+ _a[CalendarType_1["default"].MONTH] = {
15
+ getDayJsDate: function (date) { return (0, dayjs_1["default"])(date); },
16
+ unit: 'day'
17
+ },
18
+ _a[CalendarType_1["default"].WEEK] = {
19
+ getDayJsDate: function (date) {
20
+ var eventDate = new Date(date);
21
+ eventDate.setHours(eventDate.getHours(), 0, 0, 0);
22
+ return (0, dayjs_1["default"])(eventDate);
23
+ },
24
+ unit: 'hours'
25
+ },
26
+ _a);
27
+ var useEventsFromDate = function (innerEventGroups, selectedEventGroupsIds) {
28
+ var getEventsFromDate = react_1["default"].useCallback(function (dateFromDay, currentCalendarType) {
29
+ var resultEventsOnDate = [];
30
+ var dayjsDateFromDay = (0, dayjs_1["default"])(dateFromDay);
31
+ var forEachEventGroupEvent = function (callback) {
32
+ innerEventGroups.forEach(function (eventGroup) {
33
+ eventGroup.events.forEach(function (event) {
34
+ callback(event, eventGroup);
35
+ });
36
+ });
37
+ };
38
+ var calendarTypeProperties = CALENDAR_TYPE_GETTING_EVENTS_PROPERTIES[currentCalendarType];
39
+ forEachEventGroupEvent(function (event, eventGroup) {
40
+ var eventDateDayJs = calendarTypeProperties.getDayJsDate(event.date);
41
+ (0, addEventIfMatchDate_1.addEventIfMatchDate)(eventDateDayJs, dayjsDateFromDay, eventGroup, event, calendarTypeProperties.unit, selectedEventGroupsIds, resultEventsOnDate);
42
+ });
43
+ return resultEventsOnDate;
44
+ }, [innerEventGroups, selectedEventGroupsIds]);
45
+ return {
46
+ getEventsFromDate: getEventsFromDate
47
+ };
48
+ };
49
+ exports.useEventsFromDate = useEventsFromDate;
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
2
  import { IDay } from '../CalendarSystem';
3
- declare const useMonthCalendar: () => {
3
+ declare const useMonthGrid: (currentMonthFirstDayDate: Date, setCurrentMonthFirstDayDate: React.Dispatch<React.SetStateAction<Date>>) => {
4
+ monthGridWeekDays: any;
5
+ monthGridCalendarDays: IDay[];
4
6
  getCalendarArray: () => IDay[];
5
7
  getCurrentMonthDataUTC: () => {
6
8
  currentMonth: number;
@@ -9,8 +11,5 @@ declare const useMonthCalendar: () => {
9
11
  daysInCurrentMonth: any[];
10
12
  };
11
13
  getWeekFromDate: (date: Date) => IDay[];
12
- calendarArray: IDay[];
13
- setCurrentMonthDate: React.Dispatch<React.SetStateAction<Date>>;
14
- currentMonthDate: Date;
15
14
  };
16
- export default useMonthCalendar;
15
+ export default useMonthGrid;