@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,25 +18,31 @@ exports.__esModule = true;
18
18
  /* eslint-disable import/order */
19
19
  var react_1 = __importDefault(require("react"));
20
20
  var utils_1 = require("../utils/utils");
21
+ var concat_1 = __importDefault(require("lodash-es/concat"));
22
+ var slice_1 = __importDefault(require("lodash-es/slice"));
23
+ var dayjs_1 = __importDefault(require("dayjs"));
24
+ var upperFirst_1 = __importDefault(require("lodash-es/upperFirst"));
21
25
  var FIRST_DAY = 1;
22
26
  var ONE_MONTH = 1;
23
27
  var TOTAL_DAYS_IN_CALENDAR = 42;
24
- var useMonthCalendar = function () {
25
- var _a = react_1["default"].useState(null), currentMonthDate = _a[0], setCurrentMonthDate = _a[1];
28
+ var useMonthGrid = function (currentMonthFirstDayDate, setCurrentMonthFirstDayDate) {
26
29
  var getCurrentMonthDataUTC = react_1["default"].useCallback(function () {
27
- var currentYear = (currentMonthDate === null || currentMonthDate === void 0 ? void 0 : currentMonthDate.getFullYear()) || new Date().getFullYear();
28
- var month = (currentMonthDate === null || currentMonthDate === void 0 ? void 0 : currentMonthDate.getMonth()) || new Date().getMonth();
30
+ var currentYear = (currentMonthFirstDayDate === null || currentMonthFirstDayDate === void 0 ? void 0 : currentMonthFirstDayDate.getFullYear()) || new Date().getFullYear();
31
+ var month = (currentMonthFirstDayDate === null || currentMonthFirstDayDate === void 0 ? void 0 : currentMonthFirstDayDate.getMonth()) || new Date().getMonth();
29
32
  var nextMonthFirstDay = new Date(currentYear, month + ONE_MONTH, FIRST_DAY);
30
33
  var lastDayOfCurrentMonth = new Date(nextMonthFirstDay.getTime() - FIRST_DAY).getDate();
31
34
  var firstDayOfCurrentMonth = new Date(Date.UTC(currentYear, month, FIRST_DAY));
32
- if (currentMonthDate === null) {
33
- setCurrentMonthDate(firstDayOfCurrentMonth);
35
+ if (currentMonthFirstDayDate === null) {
36
+ setCurrentMonthFirstDayDate(firstDayOfCurrentMonth);
34
37
  }
35
38
  var daysInCurrentMonth = [];
36
39
  // Пройдемся по всем дням месяца и добавим их в массив
37
40
  for (var dayNumber = 1; dayNumber <= lastDayOfCurrentMonth; dayNumber++) {
38
41
  var date = new Date(Date.UTC(currentYear, month, dayNumber));
39
- daysInCurrentMonth.push({ date: date, dayNumber: dayNumber });
42
+ daysInCurrentMonth.push({
43
+ date: date,
44
+ dayNumber: dayNumber
45
+ });
40
46
  }
41
47
  return {
42
48
  currentMonth: month,
@@ -44,7 +50,7 @@ var useMonthCalendar = function () {
44
50
  firstDayOfCurrentMonth: firstDayOfCurrentMonth,
45
51
  daysInCurrentMonth: daysInCurrentMonth
46
52
  };
47
- }, [currentMonthDate]);
53
+ }, [currentMonthFirstDayDate, setCurrentMonthFirstDayDate]);
48
54
  var getCalendarArray = react_1["default"].useCallback(function () {
49
55
  var calendarArray = [];
50
56
  var _a = getCurrentMonthDataUTC(), firstDayOfCurrentMonth = _a.firstDayOfCurrentMonth, month = _a.currentMonth, daysInCurrentMonth = _a.daysInCurrentMonth;
@@ -66,7 +72,7 @@ var useMonthCalendar = function () {
66
72
  });
67
73
  var daysAfterCurrentMonth = TOTAL_DAYS_IN_CALENDAR - calendarArray.length;
68
74
  for (var i = 1; i <= daysAfterCurrentMonth; i++) {
69
- var currentDate = new Date(currentMonthDate === null || currentMonthDate === void 0 ? void 0 : currentMonthDate.getFullYear(), month + 1, i);
75
+ var currentDate = new Date(currentMonthFirstDayDate === null || currentMonthFirstDayDate === void 0 ? void 0 : currentMonthFirstDayDate.getFullYear(), month + 1, i);
70
76
  calendarArray.push({
71
77
  date: currentDate,
72
78
  dayNumber: currentDate.getDate(),
@@ -74,14 +80,17 @@ var useMonthCalendar = function () {
74
80
  });
75
81
  }
76
82
  return calendarArray.map(function (day) { return (0, utils_1.isDateIsToday)(day.date) ? (__assign(__assign({}, day), { isToday: true })) : day; });
77
- }, [currentMonthDate, getCurrentMonthDataUTC]);
83
+ }, [currentMonthFirstDayDate, getCurrentMonthDataUTC]);
84
+ var weekDays = react_1["default"].useMemo(function () {
85
+ var unformattedDaysOfWeek = dayjs_1["default"].weekdaysMin();
86
+ return (0, concat_1["default"])((0, slice_1["default"])(unformattedDaysOfWeek, 1), unformattedDaysOfWeek[0]).map(function (weekDay) { return __("".concat((0, upperFirst_1["default"])(weekDay))); });
87
+ }, []);
78
88
  return {
89
+ monthGridWeekDays: weekDays,
90
+ monthGridCalendarDays: getCalendarArray(),
79
91
  getCalendarArray: getCalendarArray,
80
92
  getCurrentMonthDataUTC: getCurrentMonthDataUTC,
81
- getWeekFromDate: utils_1.getWeekDaysFromDate,
82
- calendarArray: getCalendarArray(),
83
- setCurrentMonthDate: setCurrentMonthDate,
84
- currentMonthDate: currentMonthDate
93
+ getWeekFromDate: utils_1.getWeekDaysFromDate
85
94
  };
86
95
  };
87
- exports["default"] = useMonthCalendar;
96
+ exports["default"] = useMonthGrid;
@@ -1,15 +1,16 @@
1
1
  import DateControlEnum from '../enums/DateControlType';
2
- declare const useWeekCalendar: (currentMonthDate: Date) => {
3
- currentWeek: {
2
+ declare const useWeekGrid: (currentMonthFirstDayDate: Date) => {
3
+ weekGridTwentyFourHoursArray: any[];
4
+ weekGridCurrentWeekDays: {
4
5
  dayNumber: number;
5
6
  date: Date;
6
7
  outOfRange?: boolean;
7
8
  isToday?: boolean;
8
9
  formattedDisplay?: string;
9
10
  }[];
10
- weekControls: {
11
+ weekGridControls: {
11
12
  [key: string]: () => void | DateControlEnum;
12
13
  };
13
- forceUpdateWeekOnMonthChange: (newMonthDate: Date) => void;
14
+ updateWeekOnMonthChange: (newMonthDate: Date) => void;
14
15
  };
15
- export default useWeekCalendar;
16
+ export default useWeekGrid;
@@ -0,0 +1,72 @@
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
+ /* eslint-disable no-plusplus */
7
+ var react_1 = __importDefault(require("react"));
8
+ var dayjs_1 = __importDefault(require("dayjs"));
9
+ var DateControlType_1 = __importDefault(require("../enums/DateControlType"));
10
+ var utils_1 = require("../utils/utils");
11
+ var ONE_DAY = 1;
12
+ var getTwentyFourHoursArray = function () {
13
+ var hoursArray = [];
14
+ for (var i = 0; i < 24; i++) {
15
+ var formattedHour = (0, dayjs_1["default"])().startOf('day').add(i, 'hour').format('HH:00');
16
+ hoursArray.push(formattedHour);
17
+ }
18
+ return hoursArray;
19
+ };
20
+ var useWeekGrid = function (currentMonthFirstDayDate) {
21
+ var _a;
22
+ var _b = react_1["default"].useState((0, utils_1.getFormattedWeekFromDate)()), currentWeek = _b[0], setCurrentWeek = _b[1];
23
+ var updateWeekOnMonthChange = react_1["default"].useCallback(function (newMonthDate) {
24
+ setCurrentWeek((0, utils_1.getFormattedWeekFromDate)(newMonthDate));
25
+ }, []);
26
+ var changeMonthAfterWeekChanged = react_1["default"].useCallback(function (formattedWeek) {
27
+ var firstDayOfWeek = formattedWeek[0].date;
28
+ var currentMonthNumber = currentMonthFirstDayDate.getMonth();
29
+ var isWeekOutOfMonth = formattedWeek.every(function (dayOfWeek) { return dayOfWeek.date.getMonth() !== currentMonthNumber; });
30
+ if (!isWeekOutOfMonth) {
31
+ return;
32
+ }
33
+ if (currentMonthNumber - firstDayOfWeek.getMonth() === 1) {
34
+ var lastDayOfWeekInNewMonth = formattedWeek[formattedWeek.length - 1].date;
35
+ var prevMonthControl = (0, utils_1.getSourceCalendarControl)(DateControlType_1["default"].PREV_ONE);
36
+ prevMonthControl.click();
37
+ updateWeekOnMonthChange(lastDayOfWeekInNewMonth);
38
+ }
39
+ else {
40
+ var firstDayOfWeekInNewMonth = formattedWeek[0].date;
41
+ var nextMonthControl = (0, utils_1.getSourceCalendarControl)(DateControlType_1["default"].NEXT_ONE);
42
+ nextMonthControl.click();
43
+ updateWeekOnMonthChange(firstDayOfWeekInNewMonth);
44
+ }
45
+ }, [currentMonthFirstDayDate, updateWeekOnMonthChange]);
46
+ var setNextWeek = react_1["default"].useCallback(function () {
47
+ var lastDayOfWeek = currentWeek[currentWeek.length - 1].date;
48
+ lastDayOfWeek.setDate(lastDayOfWeek.getDate() + ONE_DAY);
49
+ var formattedNextWeek = (0, utils_1.getFormattedWeekFromDate)(lastDayOfWeek);
50
+ setCurrentWeek(formattedNextWeek);
51
+ changeMonthAfterWeekChanged(formattedNextWeek);
52
+ }, [currentWeek, changeMonthAfterWeekChanged]);
53
+ var setPrevWeek = react_1["default"].useCallback(function () {
54
+ var firstDayOfWeek = currentWeek[0].date;
55
+ firstDayOfWeek.setDate(firstDayOfWeek.getDate() - ONE_DAY);
56
+ var formattedPrevWeek = (0, utils_1.getFormattedWeekFromDate)(firstDayOfWeek);
57
+ setCurrentWeek(formattedPrevWeek);
58
+ changeMonthAfterWeekChanged(formattedPrevWeek);
59
+ }, [currentWeek, changeMonthAfterWeekChanged]);
60
+ return {
61
+ weekGridTwentyFourHoursArray: getTwentyFourHoursArray(),
62
+ weekGridCurrentWeekDays: currentWeek,
63
+ weekGridControls: (_a = {},
64
+ _a[DateControlType_1["default"].NEXT_DOUBLE] = DateControlType_1["default"].NEXT_ONE,
65
+ _a[DateControlType_1["default"].NEXT_ONE] = setNextWeek,
66
+ _a[DateControlType_1["default"].PREV_ONE] = setPrevWeek,
67
+ _a[DateControlType_1["default"].PREV_DOUBLE] = DateControlType_1["default"].PREV_ONE,
68
+ _a),
69
+ updateWeekOnMonthChange: updateWeekOnMonthChange
70
+ };
71
+ };
72
+ exports["default"] = useWeekGrid;
@@ -3,3 +3,11 @@ export declare const getWeekDaysFromDate: (date: Date) => IDay[];
3
3
  export declare const isDateIsToday: (date: Date) => boolean;
4
4
  export declare const getOmittedEvent: (event: IEvent | Omit<IEvent, 'color'>) => any;
5
5
  export declare const sortEventsInGroup: (group: IEventGroup) => Omit<IEvent, "color">[];
6
+ export declare const getSourceCalendarControl: (control: string) => HTMLElement;
7
+ export declare const getFormattedWeekFromDate: (fromDate?: Date) => {
8
+ dayNumber: number;
9
+ date: Date;
10
+ outOfRange?: boolean;
11
+ isToday?: boolean;
12
+ formattedDisplay?: string;
13
+ }[];
@@ -1,14 +1,27 @@
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
  };
5
16
  exports.__esModule = true;
6
- exports.sortEventsInGroup = exports.getOmittedEvent = exports.isDateIsToday = exports.getWeekDaysFromDate = void 0;
17
+ exports.getFormattedWeekFromDate = exports.getSourceCalendarControl = exports.sortEventsInGroup = exports.getOmittedEvent = exports.isDateIsToday = exports.getWeekDaysFromDate = void 0;
7
18
  /* eslint-disable no-plusplus */
8
19
  var dayjs_1 = __importDefault(require("dayjs"));
9
20
  var omit_1 = __importDefault(require("lodash-es/omit"));
21
+ var calendar_1 = require("../../../../utils/calendar");
10
22
  var SIX_DAYS_DIFF = 6;
11
23
  var MAX_DAYS_DIFF_IN_WEEK = 7;
24
+ var WEEK_DAY_FORMAT = 'dd, D MMM';
12
25
  var getWeekDaysFromDate = function (date) {
13
26
  var weekDays = [];
14
27
  var firstDayOfWeek = new Date(date);
@@ -32,3 +45,16 @@ var getOmittedEvent = function (event) { return (0, omit_1["default"])(event, ['
32
45
  exports.getOmittedEvent = getOmittedEvent;
33
46
  var sortEventsInGroup = function (group) { return group.events.sort(function (eventA, eventB) { return eventA.date.getTime() - eventB.date.getTime(); }); };
34
47
  exports.sortEventsInGroup = sortEventsInGroup;
48
+ var getSourceCalendarControl = function (control) { return document.querySelector("[data-sourcecontrol=\"".concat(control, "\"]")); };
49
+ exports.getSourceCalendarControl = getSourceCalendarControl;
50
+ var getFormattedWeekFromDate = function (fromDate) {
51
+ if (fromDate === void 0) { fromDate = null; }
52
+ var currentWeek = (0, exports.getWeekDaysFromDate)(fromDate || new Date());
53
+ return currentWeek.map(function (dayOfWeek) {
54
+ var copyOfDayWeek = __assign({}, dayOfWeek);
55
+ copyOfDayWeek.formattedDisplay = (0, calendar_1.convertDate)(dayOfWeek.date, null, WEEK_DAY_FORMAT);
56
+ copyOfDayWeek.isToday = (0, exports.isDateIsToday)(copyOfDayWeek.date);
57
+ return copyOfDayWeek;
58
+ });
59
+ };
60
+ exports.getFormattedWeekFromDate = getFormattedWeekFromDate;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { ILinkProps } from '../../nav/Link/Link';
3
3
  import { IButtonProps } from '../../form/Button/Button';
4
4
  import { IAvatarProps } from '../Avatar/Avatar';
@@ -38,6 +38,10 @@ export interface ICardHeader {
38
38
  * футер, коллекцию ссылок и коллекцию кнопок.
39
39
  */
40
40
  export interface ICardProps extends IUiComponent {
41
+ /**
42
+ * Коллекция кнопок
43
+ */
44
+ buttons?: IButtonProps[];
41
45
  /**
42
46
  * Дочерние элементы
43
47
  */
@@ -52,46 +56,48 @@ export interface ICardProps extends IUiComponent {
52
56
  * @example 'Scroll to see more...'
53
57
  */
54
58
  description?: string;
59
+ /**
60
+ * Контент футера
61
+ */
62
+ footer?: {
63
+ head: string;
64
+ subhead: string;
65
+ };
55
66
  /**
56
67
  * Контент хедера
57
68
  * @example
58
69
  * avatar: {
59
- * src: 'Kate.png',
60
- * status: true,
70
+ * src: 'Kate.png',
71
+ * status: true,
61
72
  * },
62
73
  * head: 'Header',
63
74
  * subhead: 'Subhead',
64
75
  * menu: {
65
76
  * dropDownProps: {
66
- position: 'bottom',
67
- closeMode: 'click-any',
68
- },
69
- items: [
70
- {label: 'Вырезать', icon: 'cut', onClick: voidFunction},
71
- {label: 'Копировать', icon: 'copy', hasBorder: true, onClick: voidFunction},
72
- {label: 'Показать историю изменений', hasBorder: true, onClick: voidFunction},
73
- {label: 'Редактировать', icon: 'edit', onClick: voidFunction},
74
- {label: 'Удалить', icon: 'trash', onClick: voidFunction},
75
- ],
76
- icon: 'menu_dots',
77
+ * position: 'bottom',
78
+ * closeMode: 'click-any',
79
+ * },
80
+ * items: [
81
+ * {
82
+ * label: 'Вырезать',
83
+ * icon: 'cut',
84
+ * onClick: voidFunction
85
+ * },
86
+ * {
87
+ * label: 'Копировать',
88
+ * icon: 'copy',
89
+ * hasBorder: true
90
+ * onClick: voidFunction
91
+ * },
92
+ * ],
93
+ * icon: 'menu_dots',
77
94
  * },
78
95
  */
79
96
  header?: ICardHeader;
80
97
  /**
81
- * Контент футера
98
+ * Коллекция ссылок
82
99
  */
83
- footer?: {
84
- head: string;
85
- subhead: string;
86
- };
87
- /**
88
- * Коллекция ссылок
89
- */
90
100
  links?: ILinkProps[];
91
- /**
92
- * Коллекция кнопок
93
- */
94
- buttons?: IButtonProps[];
95
101
  /**
96
102
  * Заголовок карточки
97
103
  * @example 'Main card'
@@ -99,5 +105,5 @@ export interface ICardProps extends IUiComponent {
99
105
  title?: string;
100
106
  }
101
107
  export type ICardViewProps = ICardProps;
102
- declare function Card(props: ICardProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
108
+ declare function Card(props: ICardProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
103
109
  export default Card;
@@ -1,19 +1,8 @@
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
  exports.__esModule = true;
14
3
  var hooks_1 = require("../../../hooks");
15
4
  function Card(props) {
16
5
  var components = (0, hooks_1.useComponents)();
17
- return components.ui.renderView(props.view || 'content.CardView', __assign({}, props));
6
+ return components.ui.renderView(props.view || 'content.CardView', props);
18
7
  }
19
8
  exports["default"] = Card;
@@ -1,9 +1,12 @@
1
1
  /// <reference types="react" />
2
+ import { ICheckboxListFieldProps } from 'src/ui/form/CheckboxListField/CheckboxListField';
3
+ import { IButtonGroupProps } from 'src/ui/nav/ButtonGroup/ButtonGroup';
2
4
  /**
3
5
  * Chart
4
- * Этот компонент позволяет создавать в проекте графики разных типов. Под капотом для графиков используется библиотека nivo.
5
- * Для работы этого компонента необходимо установить в проекте зависимости @nivo/core и пакет конкретного графика nivo, например @nivo/line.
6
- * Компонент графика nivo нужно передать в пропс chartComponent
6
+ * Этот компонент позволяет создавать в проекте графики разных типов, используя библиотеки nivo, react-vis и другие.
7
+ * Под капотом для графиков могут использоваться различные библиотеки в зависимости от предпочтений и потребностей проекта.
8
+ * Для работы с nivo графиками, необходимо установить в проекте зависимости @nivo/core и соответствующий пакет графика, например @nivo/line.
9
+ * Компонент графика, независимо от выбранной библиотеки, нужно передать в пропс chartComponent.
7
10
  */
8
11
  export interface IChartProps extends IUiComponent {
9
12
  /**
@@ -13,19 +16,46 @@ export interface IChartProps extends IUiComponent {
13
16
  chartComponent: any;
14
17
  /**
15
18
  * Данные для графика
16
- * @example [{id: 1, value: 15}, {id: 2, value: 30}]
19
+ * @example
20
+ * [
21
+ * {id: 1, value: 15},
22
+ * {id: 2, value: 30}
23
+ * ]
17
24
  */
18
- data: Record<string, any>[];
25
+ data?: Record<string, any>[];
19
26
  /**
20
27
  * Конфигурация, настройки отображения графика
21
- * @example {lineWidth: 3, pointSize: 10}
28
+ * @example
29
+ * {
30
+ * lineWidth: 3,
31
+ * pointSize: 10
32
+ * }
22
33
  */
23
34
  config?: Record<string, any>;
24
35
  /**
25
- * Фиксированная высота графика в пикселях
36
+ * Фиксированная высота обертки в пикселях
26
37
  * @example 500
27
38
  */
28
- height?: number;
39
+ wrapperHeight?: number;
40
+ /**
41
+ * Фиксированная высота обертки в пикселях
42
+ * @example 500
43
+ */
44
+ chartHeight?: number;
45
+ /**
46
+ * Чекбоксы
47
+ * Могут служить в качестве настаиваемых контроллов для создания функционала
48
+ */
49
+ checkboxes?: ICheckboxListFieldProps;
50
+ /**
51
+ * Кнопки
52
+ * Могут служить в качестве настаиваемых контроллов для создания функционала
53
+ */
54
+ buttonGroup?: IButtonGroupProps;
55
+ /**
56
+ * Заголовок графика
57
+ */
58
+ title?: string;
29
59
  /**
30
60
  * Использовать ли дефолтную конфигурацию для графика типа line
31
61
  * @example ResponsiveLine
@@ -1,19 +1,23 @@
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
  exports.__esModule = true;
3
+ var react_1 = require("react");
14
4
  var hooks_1 = require("../../../hooks");
15
5
  function Chart(props) {
16
6
  var components = (0, hooks_1.useComponents)();
17
- return components.ui.renderView(props.view || 'content.ChartView', __assign({}, props));
7
+ var viewProps = (0, react_1.useMemo)(function () { return ({
8
+ chartComponent: props.chartComponent,
9
+ data: props.data,
10
+ config: props.config,
11
+ wrapperHeight: props.wrapperHeight,
12
+ chartHeight: props.chartHeight,
13
+ checkboxes: props.checkboxes,
14
+ buttonGroup: props.buttonGroup,
15
+ title: props.title,
16
+ useDefaultLineChartConfig: props.useDefaultLineChartConfig,
17
+ className: props.className,
18
+ style: props.style
19
+ }); }, [props.chartComponent, props.data, props.config, props.wrapperHeight, props.chartHeight,
20
+ props.checkboxes, props.buttonGroup, props.title, props.useDefaultLineChartConfig, props.className, props.style]);
21
+ return components.ui.renderView(props.view || 'content.ChartView', viewProps);
18
22
  }
19
23
  exports["default"] = Chart;
@@ -0,0 +1,109 @@
1
+ import React from 'react';
2
+ import { IFileFieldProps } from '../../form/FileField/FileField';
3
+ import { IAvatarProps } from '../Avatar/Avatar';
4
+ import { IGroupedMessagesByDates } from './hooks/useChat';
5
+ export interface IChatUser {
6
+ id: number;
7
+ firstName?: string;
8
+ lastName?: string;
9
+ avatar?: IAvatarProps;
10
+ }
11
+ export interface IMessageFile {
12
+ uid?: string;
13
+ title?: string;
14
+ size?: number;
15
+ url?: string;
16
+ downloadUrl?: string;
17
+ fullHeight?: number;
18
+ fullWidth?: number;
19
+ }
20
+ export interface IChatMessage {
21
+ id: number;
22
+ user: IChatUser;
23
+ text: string;
24
+ timestamp: Date | string;
25
+ files?: IMessageFile[];
26
+ }
27
+ /**
28
+ * Chat
29
+ *
30
+ * Комплексный компонент `Chat` предназначен для коммуникации пользователей с помощью текстовых сообщений.
31
+ */
32
+ export interface IChatProps extends IUiComponent {
33
+ /**
34
+ * Идентификатор чата
35
+ * @example TaskChat
36
+ */
37
+ chatId: string;
38
+ /**
39
+ * Коллекция сообщений
40
+ * @example
41
+ * [
42
+ * {
43
+ * id: 1,
44
+ * text: 'Всем привет!',
45
+ * files: [
46
+ * {
47
+ * id: 929,
48
+ * uid: 'c46f3d14-5891-4601-9e98-06f2c1e70a07',
49
+ * title: 'image.jpg',
50
+ * url: 'https://kozhin.dev/files/uploaded/c46f3d14-5891-4601-9e98-06f2c1e70a07.jpg',
51
+ * size: 47305,
52
+ * }
53
+ * ],
54
+ * user: {
55
+ * id: 1,
56
+ * firstName: 'Olga',
57
+ * lastName: 'Petrova',
58
+ * avatar: {
59
+ * src: 'images.com/image.png',
60
+ * status: true,
61
+ * },
62
+ * },
63
+ * timestamp: '2023-10-25T12:38:00',
64
+ * },
65
+ * ]
66
+ */
67
+ messages: IChatMessage[];
68
+ /**
69
+ * Данные о текущем пользователе, нужны для отправки сообщений и определения сообщений пользователя
70
+ * @example
71
+ * {
72
+ * id: 1,
73
+ * firstName: 'Olga',
74
+ * lastName: 'Petrova',
75
+ * avatar: {
76
+ * src: 'images.com/image.png',
77
+ * status: true,
78
+ * },
79
+ * }
80
+ */
81
+ currentUser: IChatUser;
82
+ /**
83
+ * Обработчик события отправки сообщения
84
+ */
85
+ onSendMessage?: (chatId: string, message: IChatMessage) => void;
86
+ /**
87
+ * Переопределение view React компонента для кастомизации отображения элемента инпута
88
+ * @example MyCustomView
89
+ */
90
+ customChatInputView?: React.ReactNode;
91
+ /**
92
+ * Кастомный placeholder для инпута
93
+ */
94
+ customInputPlaceholder?: string;
95
+ /**
96
+ * Пропсы для инпута загрузки файлов
97
+ */
98
+ fileFieldProps?: IFileFieldProps;
99
+ }
100
+ export interface IChatViewProps extends Pick<IChatProps, 'currentUser'> {
101
+ groupedMessagesByDates: IGroupedMessagesByDates;
102
+ renderChatInput: () => JSX.Element;
103
+ }
104
+ export interface IChatInputViewProps extends Pick<IChatProps, 'chatId' | 'fileFieldProps'> {
105
+ onSendMessage: (data: any) => void;
106
+ onUploadFiles: (files: any) => void;
107
+ inputPlaceholder: string;
108
+ }
109
+ export default function Chat(props: IChatProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,52 @@
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
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ exports.__esModule = true;
29
+ var react_1 = __importStar(require("react"));
30
+ var hooks_1 = require("../../../hooks");
31
+ var useChat_1 = __importDefault(require("./hooks/useChat"));
32
+ function Chat(props) {
33
+ var components = (0, hooks_1.useComponents)();
34
+ var _a = (0, useChat_1["default"])({
35
+ chatId: props.chatId,
36
+ messages: props.messages,
37
+ currentUser: props.currentUser,
38
+ onSendMessage: props.onSendMessage
39
+ }), onSendMessage = _a.onSendMessage, onUploadFiles = _a.onUploadFiles, groupedMessagesByDates = _a.groupedMessagesByDates;
40
+ var ChatInputView = props.customChatInputView || components.ui.getView('content.ChatInputView');
41
+ var renderChatInput = (0, react_1.useCallback)(function () { return (react_1["default"].createElement(ChatInputView, { chatId: props.chatId, onSendMessage: onSendMessage, onUploadFiles: onUploadFiles, fileFieldProps: props.fileFieldProps, inputPlaceholder: props.customInputPlaceholder || __('Введите сообщение') })); }, [ChatInputView, onSendMessage, onUploadFiles, props.chatId, props.customInputPlaceholder, props.fileFieldProps]);
42
+ var viewProps = (0, react_1.useMemo)(function () { return ({
43
+ currentUser: props.currentUser,
44
+ groupedMessagesByDates: groupedMessagesByDates,
45
+ onSendMessage: onSendMessage,
46
+ renderChatInput: renderChatInput,
47
+ className: props.className,
48
+ style: props.style
49
+ }); }, [groupedMessagesByDates, onSendMessage, props.className, props.currentUser, props.style, renderChatInput]);
50
+ return components.ui.renderView(props.view || 'content.ChatView', viewProps);
51
+ }
52
+ exports["default"] = Chat;
@@ -0,0 +1,8 @@
1
+ export declare const MONTH_AND_DAY_TEMPLATE = "MMMM DD";
2
+ export declare const HOURS_AND_MINUTES_TEMPLATE = "HH:mm";
3
+ export declare const MINUTE_UNIT = "minute";
4
+ export declare const ISO_TIMESTAMP_TEMPLATE = "YYYY-MM-DDTHH:mm:ss.SSS";
5
+ export declare const HOUR_UNIT = "hour";
6
+ export declare const SECONDS_IN_MINUTE_VALUE = 60000;
7
+ export declare const MINUTES_IN_HOUR_VALUE = 60;
8
+ export declare const HOURS_IN_DAY_VALUE = 24;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.HOURS_IN_DAY_VALUE = exports.MINUTES_IN_HOUR_VALUE = exports.SECONDS_IN_MINUTE_VALUE = exports.HOUR_UNIT = exports.ISO_TIMESTAMP_TEMPLATE = exports.MINUTE_UNIT = exports.HOURS_AND_MINUTES_TEMPLATE = exports.MONTH_AND_DAY_TEMPLATE = void 0;
4
+ exports.MONTH_AND_DAY_TEMPLATE = 'MMMM DD';
5
+ exports.HOURS_AND_MINUTES_TEMPLATE = 'HH:mm';
6
+ exports.MINUTE_UNIT = 'minute';
7
+ exports.ISO_TIMESTAMP_TEMPLATE = 'YYYY-MM-DDTHH:mm:ss.SSS';
8
+ exports.HOUR_UNIT = 'hour';
9
+ exports.SECONDS_IN_MINUTE_VALUE = 60000;
10
+ exports.MINUTES_IN_HOUR_VALUE = 60;
11
+ exports.HOURS_IN_DAY_VALUE = 24;
@@ -0,0 +1,12 @@
1
+ import { IChatMessage, IChatProps } from '../Chat';
2
+ export type IChatConfig = Pick<IChatProps, 'chatId' | 'messages' | 'currentUser' | 'onSendMessage'>;
3
+ export interface IGroupedMessage extends IChatMessage {
4
+ isFirstMessage?: boolean;
5
+ isLastMessage?: boolean;
6
+ }
7
+ export type IGroupedMessagesByDates = Record<string, IGroupedMessage[][]>;
8
+ export default function useChat(config: IChatConfig): {
9
+ groupedMessagesByDates: {};
10
+ onSendMessage: (rawMessage: any) => void;
11
+ onUploadFiles: (files: any) => void;
12
+ };