@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.
- package/actions/notifications.js +7 -1
- package/actions/router.js +16 -2
- package/components/HttpComponent.d.ts +7 -7
- package/components/JwtHttpComponent.d.ts +2 -2
- package/components/LocaleComponent.d.ts +6 -6
- package/components/MetaComponent.d.ts +90 -1
- package/components/MetricsComponent.js +2 -1
- package/components/ResourceComponent.d.ts +4 -4
- package/components/UiComponent.d.ts +7 -7
- package/components/WebSocketComponent.d.ts +11 -11
- package/docs-autogen-result.json +15226 -6277
- package/en.json +151 -84
- package/hooks/index.d.ts +4 -3
- package/hooks/index.js +7 -5
- package/hooks/useAbsolutePositioning.js +0 -1
- package/hooks/useAddressBar.js +0 -1
- package/hooks/useApplication.js +8 -1
- package/hooks/useDataProvider.d.ts +17 -2
- package/hooks/useDataSelect.js +21 -4
- package/hooks/useFetch.js +6 -1
- package/hooks/useFile.d.ts +1 -0
- package/hooks/useFile.js +2 -0
- package/hooks/useList.d.ts +53 -14
- package/hooks/useList.js +31 -70
- package/hooks/useTree.d.ts +104 -0
- package/hooks/useTree.js +169 -0
- package/index.d.ts +3 -3
- package/package.json +94 -93
- package/reducers/router.d.ts +2 -1
- package/ui/content/Accordion/Accordion.d.ts +8 -5
- package/ui/content/Accordion/Accordion.js +6 -1
- package/ui/content/Accordion/AccordionItem.d.ts +2 -2
- package/ui/content/Accordion/AccordionItem.js +1 -12
- package/ui/content/Alert/Alert.d.ts +5 -2
- package/ui/content/Alert/Alert.js +13 -12
- package/ui/content/Avatar/Avatar.js +18 -12
- package/ui/content/Badge/Badge.d.ts +5 -1
- package/ui/content/Badge/Badge.js +14 -12
- package/ui/content/Calendar/Calendar.d.ts +6 -1
- package/ui/content/Calendar/Calendar.js +19 -12
- package/ui/content/CalendarSystem/CalendarSystem.d.ts +94 -17
- package/ui/content/CalendarSystem/CalendarSystem.js +66 -77
- package/ui/content/CalendarSystem/hooks/useCalendarControls.d.ts +1 -2
- package/ui/content/CalendarSystem/hooks/useCalendarControls.js +14 -17
- package/ui/content/CalendarSystem/hooks/useCalendarSystemEventGroupModals.d.ts +2 -1
- package/ui/content/CalendarSystem/hooks/useCalendarSystemEventGroupModals.js +13 -5
- package/ui/content/CalendarSystem/hooks/useCalendarSystemModals.js +2 -2
- package/ui/content/CalendarSystem/hooks/useCalendarType.d.ts +5 -0
- package/ui/content/CalendarSystem/hooks/useCalendarType.js +22 -0
- package/ui/content/CalendarSystem/hooks/useEventsFromDate.d.ts +5 -0
- package/ui/content/CalendarSystem/hooks/useEventsFromDate.js +49 -0
- package/ui/content/CalendarSystem/hooks/{useMonthCalendar.d.ts → useMonthGrid.d.ts} +4 -5
- package/ui/content/CalendarSystem/hooks/{useMonthCalendar.js → useMonthGrid.js} +24 -15
- package/ui/content/CalendarSystem/hooks/{useWeekCalendar.d.ts → useWeekGrid.d.ts} +6 -5
- package/ui/content/CalendarSystem/hooks/useWeekGrid.js +72 -0
- package/ui/content/CalendarSystem/utils/utils.d.ts +8 -0
- package/ui/content/CalendarSystem/utils/utils.js +27 -1
- package/ui/content/Card/Card.d.ts +33 -27
- package/ui/content/Card/Card.js +1 -12
- package/ui/content/Chart/Chart.d.ts +38 -8
- package/ui/content/Chart/Chart.js +16 -12
- package/ui/content/Chat/Chat.d.ts +109 -0
- package/ui/content/Chat/Chat.js +52 -0
- package/ui/content/Chat/constants/timeTemplatesAndUnits.d.ts +8 -0
- package/ui/content/Chat/constants/timeTemplatesAndUnits.js +11 -0
- package/ui/content/Chat/hooks/useChat.d.ts +12 -0
- package/ui/content/Chat/hooks/useChat.js +58 -0
- package/ui/content/Chat/index.d.ts +2 -0
- package/ui/content/Chat/index.js +7 -0
- package/ui/content/Chat/utils/addNewMessageIntoGroupedMessages.d.ts +5 -0
- package/ui/content/Chat/utils/addNewMessageIntoGroupedMessages.js +61 -0
- package/ui/content/Chat/utils/calculateMessageTimeAgo.d.ts +1 -0
- package/ui/content/Chat/utils/calculateMessageTimeAgo.js +26 -0
- package/ui/content/Chat/utils/getMessagesGroupedByDate.d.ts +4 -0
- package/ui/content/Chat/utils/getMessagesGroupedByDate.js +56 -0
- package/ui/content/Chat/utils/index.d.ts +5 -0
- package/ui/content/Chat/utils/index.js +12 -0
- package/ui/content/Chat/utils/isTodayMessage.d.ts +1 -0
- package/ui/content/Chat/utils/isTodayMessage.js +13 -0
- package/ui/content/CopyToClipboard/CopyToClipboard.d.ts +3 -3
- package/ui/content/CopyToClipboard/CopyToClipboard.js +10 -12
- package/ui/content/Dashboard/Dashboard.d.ts +5 -2
- package/ui/content/Dashboard/Dashboard.js +27 -3
- package/ui/content/Detail/Detail.d.ts +15 -2
- package/ui/content/Detail/Detail.js +12 -1
- package/ui/content/DropDown/DropDown.d.ts +1 -1
- package/ui/content/DropDown/DropDown.js +16 -4
- package/ui/content/Icon/Icon.js +13 -15
- package/ui/content/Kanban/Kanban.d.ts +15 -4
- package/ui/content/Kanban/Kanban.js +8 -12
- package/ui/content/Kanban/hooks/useKanban.d.ts +33 -26
- package/ui/content/Menu/Menu.js +10 -12
- package/ui/content/Slider/Slider.js +1 -12
- package/ui/content/index.d.ts +2 -1
- package/ui/content/index.js +3 -1
- package/ui/crud/index.d.ts +3 -0
- package/ui/form/AutoCompleteField/AutoCompleteField.js +1 -1
- package/ui/form/Button/Button.js +8 -2
- package/ui/form/CheckboxField/CheckboxField.d.ts +1 -0
- package/ui/form/CheckboxField/CheckboxField.js +2 -2
- package/ui/form/CheckboxListField/CheckboxListField.d.ts +18 -2
- package/ui/form/CheckboxListField/CheckboxListField.js +1 -1
- package/ui/form/CheckboxTreeField/CheckboxTreeField.d.ts +67 -0
- package/ui/form/CheckboxTreeField/CheckboxTreeField.js +126 -0
- package/ui/form/CheckboxTreeField/index.d.ts +2 -0
- package/ui/form/CheckboxTreeField/index.js +7 -0
- package/ui/form/DateField/DateField.js +4 -1
- package/ui/form/DateField/useDateRange.d.ts +1 -0
- package/ui/form/DateField/useDateRange.js +13 -2
- package/ui/form/DateRangeField/DateRangeField.d.ts +34 -1
- package/ui/form/DateRangeField/DateRangeField.js +59 -8
- package/ui/form/DateTimeField/DateTimeField.d.ts +10 -0
- package/ui/form/DateTimeField/DateTimeField.js +11 -3
- package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +25 -1
- package/ui/form/DateTimeRangeField/DateTimeRangeField.js +66 -13
- package/ui/form/DropDownField/DropDownField.d.ts +23 -3
- package/ui/form/DropDownField/DropDownField.js +1 -1
- package/ui/form/EmailField/EmailField.d.ts +6 -0
- package/ui/form/EmailField/EmailField.js +0 -4
- package/ui/form/Field/Field.d.ts +9 -1
- package/ui/form/Field/Field.js +1 -1
- package/ui/form/Field/fieldWrapper.d.ts +9 -1
- package/ui/form/FieldList/FieldList.d.ts +13 -7
- package/ui/form/FieldList/FieldList.js +30 -4
- package/ui/form/FileField/FileField.js +5 -0
- package/ui/form/Form/Form.d.ts +26 -3
- package/ui/form/Form/Form.js +5 -3
- package/ui/form/ImageField/ImageField.d.ts +9 -1
- package/ui/form/InputField/InputField.d.ts +5 -2
- package/ui/form/InputField/hooks/useInputFieldWarningByType.js +1 -0
- package/ui/form/NumberField/NumberField.js +34 -7
- package/ui/form/SliderField/SliderField.d.ts +10 -2
- package/ui/form/TimeRangeField/TimeRangeField.d.ts +10 -1
- package/ui/form/TimeRangeField/TimeRangeField.js +3 -1
- package/ui/form/WizardForm/WizardForm.d.ts +119 -0
- package/ui/form/WizardForm/WizardForm.js +167 -0
- package/ui/form/WizardForm/index.d.ts +2 -0
- package/ui/form/WizardForm/index.js +7 -0
- package/ui/form/WizardForm/utils.d.ts +12 -0
- package/ui/form/WizardForm/utils.js +111 -0
- package/ui/form/index.d.ts +3 -1
- package/ui/form/index.js +4 -1
- package/ui/layout/ProgressBar/ProgressBar.js +8 -2
- package/ui/layout/Skeleton/Skeleton.d.ts +3 -1
- package/ui/layout/Tooltip/Tooltip.d.ts +4 -1
- package/ui/list/ControlsColumn/ControlsColumn.d.ts +17 -3
- package/ui/list/FlexGrid/FlexGrid.d.ts +11 -1
- package/ui/list/Grid/Grid.d.ts +42 -6
- package/ui/list/Grid/Grid.js +1 -2
- package/ui/list/LayoutNames/LayoutNames.d.ts +11 -1
- package/ui/list/Steps/Steps.d.ts +19 -7
- package/ui/list/Steps/Steps.js +46 -26
- package/ui/list/TreeTable/TreeTable.d.ts +34 -33
- package/ui/list/TreeTable/TreeTable.js +19 -8
- package/ui/modal/Modal/Modal.d.ts +7 -1
- package/ui/nav/Breadcrumbs/Breadcrumbs.d.ts +11 -1
- package/ui/nav/ButtonGroup/ButtonGroup.d.ts +13 -4
- package/ui/nav/Controls/Controls.d.ts +7 -1
- package/ui/nav/Link/Link.d.ts +1 -1
- package/ui/nav/Nav/Nav.d.ts +19 -4
- package/ui/nav/Router/Router.d.ts +19 -3
- package/ui/nav/Router/Router.js +11 -6
- package/ui/nav/Router/helpers.d.ts +2 -2
- package/ui/nav/Router/helpers.js +39 -7
- package/ui/nav/Tree/Tree.d.ts +32 -62
- package/ui/nav/Tree/Tree.js +18 -165
- package/utils/calculateComponentAbsolutePosition.js +74 -24
- package/utils/calendar.d.ts +8 -0
- package/utils/calendar.js +76 -1
- package/utils/data.js +1 -0
- package/utils/form.d.ts +1 -0
- package/utils/form.js +16 -1
- package/ui/content/CalendarSystem/hooks/useWeekCalendar.js +0 -86
- package/utils/list.d.ts +0 -1
- 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
|
|
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 = (
|
|
28
|
-
var month = (
|
|
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 (
|
|
33
|
-
|
|
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({
|
|
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
|
-
}, [
|
|
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(
|
|
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
|
-
}, [
|
|
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"] =
|
|
96
|
+
exports["default"] = useMonthGrid;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import DateControlEnum from '../enums/DateControlType';
|
|
2
|
-
declare const
|
|
3
|
-
|
|
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
|
-
|
|
11
|
+
weekGridControls: {
|
|
11
12
|
[key: string]: () => void | DateControlEnum;
|
|
12
13
|
};
|
|
13
|
-
|
|
14
|
+
updateWeekOnMonthChange: (newMonthDate: Date) => void;
|
|
14
15
|
};
|
|
15
|
-
export default
|
|
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
|
-
|
|
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
|
-
*
|
|
60
|
-
*
|
|
70
|
+
* src: 'Kate.png',
|
|
71
|
+
* status: true,
|
|
61
72
|
* },
|
|
62
73
|
* head: 'Header',
|
|
63
74
|
* subhead: 'Subhead',
|
|
64
75
|
* menu: {
|
|
65
76
|
* dropDownProps: {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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):
|
|
108
|
+
declare function Card(props: ICardProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
|
|
103
109
|
export default Card;
|
package/ui/content/Card/Card.js
CHANGED
|
@@ -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',
|
|
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
|
-
* Этот компонент позволяет создавать в проекте графики разных
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
|
|
19
|
+
* @example
|
|
20
|
+
* [
|
|
21
|
+
* {id: 1, value: 15},
|
|
22
|
+
* {id: 2, value: 30}
|
|
23
|
+
* ]
|
|
17
24
|
*/
|
|
18
|
-
data
|
|
25
|
+
data?: Record<string, any>[];
|
|
19
26
|
/**
|
|
20
27
|
* Конфигурация, настройки отображения графика
|
|
21
|
-
* @example
|
|
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
|
-
|
|
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
|
-
|
|
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
|
+
};
|