@steroidsjs/core 3.0.72 → 3.0.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs-autogen-result.json +34 -0
- package/en.json +3 -0
- package/package.json +1 -1
- package/ui/content/Calendar/Calendar.d.ts +11 -0
- package/ui/content/Calendar/Calendar.js +19 -1
- package/ui/content/CalendarSystem/CalendarSystem.d.ts +5 -0
- package/ui/content/CalendarSystem/hooks/useCalendarSystem.d.ts +10 -4
- package/ui/content/CalendarSystem/hooks/useCalendarSystem.js +5 -5
- package/ui/content/CalendarSystem/hooks/useMonthGrid.d.ts +8 -2
- package/ui/content/CalendarSystem/hooks/useMonthGrid.js +7 -3
- package/ui/content/CalendarSystem/hooks/useWeekGrid.d.ts +4 -4
- package/ui/content/CalendarSystem/hooks/useWeekGrid.js +3 -3
- package/ui/content/CalendarSystem/utils/utils.d.ts +12 -6
- package/ui/content/CalendarSystem/utils/utils.js +47 -24
- package/ui/form/AutoCompleteField/AutoCompleteField.js +4 -2
package/docs-autogen-result.json
CHANGED
|
@@ -6957,6 +6957,15 @@
|
|
|
6957
6957
|
"example": "{width: '45%'}",
|
|
6958
6958
|
"defaultValue": null
|
|
6959
6959
|
},
|
|
6960
|
+
{
|
|
6961
|
+
"name": "timeZone",
|
|
6962
|
+
"decorators": [],
|
|
6963
|
+
"description": "Часовой пояс в формате IANA, для выделения текущего дня, если дата изменена в CalendarSystem.\nНе влияет на изменение даты в Calendar.",
|
|
6964
|
+
"required": false,
|
|
6965
|
+
"type": "string",
|
|
6966
|
+
"example": "'Europe/Moscow'",
|
|
6967
|
+
"defaultValue": null
|
|
6968
|
+
},
|
|
6960
6969
|
{
|
|
6961
6970
|
"name": "value",
|
|
6962
6971
|
"decorators": [],
|
|
@@ -7142,6 +7151,14 @@
|
|
|
7142
7151
|
"type": "CSSProperties",
|
|
7143
7152
|
"example": "{width: '45%'}"
|
|
7144
7153
|
},
|
|
7154
|
+
{
|
|
7155
|
+
"name": "timeZone",
|
|
7156
|
+
"decorators": [],
|
|
7157
|
+
"description": "Часовой пояс в формате IANA, для выделения текущего дня, если дата изменена в CalendarSystem.\nНе влияет на изменение даты в Calendar.",
|
|
7158
|
+
"required": false,
|
|
7159
|
+
"type": "string",
|
|
7160
|
+
"example": "'Europe/Moscow'"
|
|
7161
|
+
},
|
|
7145
7162
|
{
|
|
7146
7163
|
"name": "toYear",
|
|
7147
7164
|
"decorators": [],
|
|
@@ -7150,6 +7167,14 @@
|
|
|
7150
7167
|
"type": "Date",
|
|
7151
7168
|
"example": null
|
|
7152
7169
|
},
|
|
7170
|
+
{
|
|
7171
|
+
"name": "todayDate",
|
|
7172
|
+
"decorators": [],
|
|
7173
|
+
"description": "Текущая дата в формате Date, используется для выделения текущего дня в календаре.\nНе влияет на изменение даты в Calendar.",
|
|
7174
|
+
"required": true,
|
|
7175
|
+
"type": "Date",
|
|
7176
|
+
"example": null
|
|
7177
|
+
},
|
|
7153
7178
|
{
|
|
7154
7179
|
"name": "value",
|
|
7155
7180
|
"decorators": [],
|
|
@@ -7822,6 +7847,15 @@
|
|
|
7822
7847
|
"example": "{width: '45%'}",
|
|
7823
7848
|
"defaultValue": null
|
|
7824
7849
|
},
|
|
7850
|
+
{
|
|
7851
|
+
"name": "timeZone",
|
|
7852
|
+
"decorators": [],
|
|
7853
|
+
"description": "Часовой пояс в формате IANA",
|
|
7854
|
+
"required": false,
|
|
7855
|
+
"type": "string",
|
|
7856
|
+
"example": "'Europe/Moscow'",
|
|
7857
|
+
"defaultValue": null
|
|
7858
|
+
},
|
|
7825
7859
|
{
|
|
7826
7860
|
"name": "users",
|
|
7827
7861
|
"decorators": [],
|
package/en.json
CHANGED
|
@@ -1000,11 +1000,14 @@
|
|
|
1000
1000
|
"Сохранение в localStorage уровней вложенности.": "",
|
|
1001
1001
|
"Изначально отображать все элементы раскрытыми": "",
|
|
1002
1002
|
"Нужно ли отображать кнопку \"сегодня\" под календарем.": "",
|
|
1003
|
+
"Часовой пояс в формате IANA, для выделения текущего дня, если дата изменена в CalendarSystem.\nНе влияет на изменение даты в Calendar.": "",
|
|
1004
|
+
"Текущая дата в формате Date, используется для выделения текущего дня в календаре.\nНе влияет на изменение даты в Calendar.": "",
|
|
1003
1005
|
"Дополнительные свойства для списка календарей бокового календаря": "",
|
|
1004
1006
|
"Дополнительные свойства для бокового календаря": "",
|
|
1005
1007
|
"Данные для формы с текущими датами календаря": "",
|
|
1006
1008
|
"Свойства для сетки дня": "",
|
|
1007
1009
|
"Свойства для сетки месяца": "",
|
|
1010
|
+
"Часовой пояс в формате IANA": "",
|
|
1008
1011
|
"Свойства для сетки недели": "",
|
|
1009
1012
|
"Конечная дата": "",
|
|
1010
1013
|
"Начальная дата": "",
|
package/package.json
CHANGED
|
@@ -63,6 +63,12 @@ export interface ICalendarProps extends IUiComponent {
|
|
|
63
63
|
* @default true
|
|
64
64
|
*/
|
|
65
65
|
showTodayButton?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Часовой пояс в формате IANA, для выделения текущего дня, если дата изменена в CalendarSystem.
|
|
68
|
+
* Не влияет на изменение даты в Calendar.
|
|
69
|
+
* @example 'Europe/Moscow'
|
|
70
|
+
*/
|
|
71
|
+
timeZone?: string;
|
|
66
72
|
}
|
|
67
73
|
export interface ICalendarViewProps extends ICalendarProps {
|
|
68
74
|
/**
|
|
@@ -97,6 +103,11 @@ export interface ICalendarViewProps extends ICalendarProps {
|
|
|
97
103
|
* Функция изменения состояние отображения панели для выбора месяца/года
|
|
98
104
|
*/
|
|
99
105
|
toggleCaptionPanel: () => void;
|
|
106
|
+
/**
|
|
107
|
+
* Текущая дата в формате Date, используется для выделения текущего дня в календаре.
|
|
108
|
+
* Не влияет на изменение даты в Calendar.
|
|
109
|
+
*/
|
|
110
|
+
todayDate: Date;
|
|
100
111
|
}
|
|
101
112
|
declare function Calendar(props: ICalendarProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
102
113
|
declare namespace Calendar {
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
exports.__esModule = true;
|
|
3
6
|
var react_1 = require("react");
|
|
7
|
+
var dayjs_1 = __importDefault(require("dayjs"));
|
|
8
|
+
var utc_1 = __importDefault(require("dayjs/plugin/utc"));
|
|
9
|
+
var timezone_1 = __importDefault(require("dayjs/plugin/timezone"));
|
|
4
10
|
var hooks_1 = require("../../../hooks");
|
|
5
11
|
var calendar_1 = require("../../../utils/calendar");
|
|
12
|
+
dayjs_1["default"].extend(utc_1["default"]);
|
|
13
|
+
dayjs_1["default"].extend(timezone_1["default"]);
|
|
6
14
|
function Calendar(props) {
|
|
7
15
|
var components = (0, hooks_1.useComponents)();
|
|
8
16
|
var currentYear = new Date().getFullYear();
|
|
@@ -38,6 +46,15 @@ function Calendar(props) {
|
|
|
38
46
|
props.onMonthChange(newMonth);
|
|
39
47
|
}
|
|
40
48
|
}, [props]);
|
|
49
|
+
var getTodayByTimezone = (0, react_1.useCallback)(function (timeZone) {
|
|
50
|
+
var now = (0, dayjs_1["default"])();
|
|
51
|
+
var zoned = timeZone ? now.tz(timeZone) : now;
|
|
52
|
+
var y = zoned.year();
|
|
53
|
+
var m = zoned.month();
|
|
54
|
+
var d = zoned.date();
|
|
55
|
+
return new Date(y, m, d, 12, 0, 0, 0);
|
|
56
|
+
}, []);
|
|
57
|
+
var todayDate = (0, react_1.useMemo)(function () { return getTodayByTimezone(props.timeZone); }, [props.timeZone, getTodayByTimezone]);
|
|
41
58
|
var viewProps = (0, react_1.useMemo)(function () { return ({
|
|
42
59
|
month: month,
|
|
43
60
|
toYear: toYear,
|
|
@@ -47,6 +64,7 @@ function Calendar(props) {
|
|
|
47
64
|
selectedDates: selectedDates,
|
|
48
65
|
toggleCaptionPanel: toggleCaptionPanel,
|
|
49
66
|
isCaptionPanelVisible: isCaptionPanelVisible,
|
|
67
|
+
todayDate: todayDate,
|
|
50
68
|
showTodayButton: props.showTodayButton,
|
|
51
69
|
style: props.style,
|
|
52
70
|
className: props.className,
|
|
@@ -56,7 +74,7 @@ function Calendar(props) {
|
|
|
56
74
|
numberOfMonths: props.numberOfMonths
|
|
57
75
|
}); }, [fromYear, isCaptionPanelVisible, month, onDaySelect, onMonthSelect, props.className,
|
|
58
76
|
props.numberOfMonths, props.pickerProps, props.showFooter, props.showTodayButton, props.style,
|
|
59
|
-
props.viewProps, selectedDates, toYear, toggleCaptionPanel]);
|
|
77
|
+
props.viewProps, selectedDates, toYear, toggleCaptionPanel, todayDate]);
|
|
60
78
|
return components.ui.renderView(props.view || 'content.CalendarView', viewProps);
|
|
61
79
|
}
|
|
62
80
|
Calendar.defaultProps = {
|
|
@@ -165,6 +165,11 @@ export interface ICalendarSystemProps extends IUiComponent {
|
|
|
165
165
|
dateFromAttribute?: string;
|
|
166
166
|
dateToAttribute?: string;
|
|
167
167
|
};
|
|
168
|
+
/**
|
|
169
|
+
* Часовой пояс в формате IANA
|
|
170
|
+
* @example 'Europe/Moscow'
|
|
171
|
+
*/
|
|
172
|
+
timeZone?: string;
|
|
168
173
|
[key: string]: any;
|
|
169
174
|
}
|
|
170
175
|
export interface ICalendarSystemViewProps extends Pick<ICalendarSystemProps, 'className' | 'style' | 'additionalViewProps' | 'users' | 'asideCalendarProps' | 'asideCalendarCheckboxListProps'> {
|
|
@@ -2,15 +2,21 @@ import React from 'react';
|
|
|
2
2
|
import { ICalendarSystemProps, ICalendarUser, IEventGroup } from '../CalendarSystem';
|
|
3
3
|
export declare const useCalendarSystem: (props: ICalendarSystemProps) => {
|
|
4
4
|
monthGridWeekDays: any;
|
|
5
|
-
monthGridCalendarDays:
|
|
6
|
-
weekGridTwentyFourHoursArray: string[];
|
|
7
|
-
weekGridCurrentWeekDays: {
|
|
8
|
-
dayNumber: number;
|
|
5
|
+
monthGridCalendarDays: {
|
|
9
6
|
date: Date;
|
|
7
|
+
dayNumber: number;
|
|
10
8
|
outOfRange?: boolean;
|
|
11
9
|
isToday?: boolean;
|
|
12
10
|
formattedDisplay?: string;
|
|
13
11
|
}[];
|
|
12
|
+
weekGridTwentyFourHoursArray: string[];
|
|
13
|
+
weekGridCurrentWeekDays: {
|
|
14
|
+
date: Date;
|
|
15
|
+
formattedDisplay: any;
|
|
16
|
+
isToday: boolean;
|
|
17
|
+
dayNumber: number;
|
|
18
|
+
outOfRange?: boolean;
|
|
19
|
+
}[];
|
|
14
20
|
dayGridTwentyFourHoursArray: string[];
|
|
15
21
|
dayGridCurrentDay: import("../CalendarSystem").IDay;
|
|
16
22
|
dateToDisplay: any;
|
|
@@ -61,21 +61,21 @@ var useCalendarSystem = function (props) {
|
|
|
61
61
|
setUsers(props.users);
|
|
62
62
|
}, [props.users]);
|
|
63
63
|
//Главная дата, от которой происходят все вычисления
|
|
64
|
-
var _f = react_1["default"].useState((0, utils_1.getFormattedDay)()), generalCurrentDay = _f[0], setGeneralCurrentDay = _f[1];
|
|
64
|
+
var _f = react_1["default"].useState((0, utils_1.getFormattedDay)(null, props.timeZone)), generalCurrentDay = _f[0], setGeneralCurrentDay = _f[1];
|
|
65
65
|
var isGeneralCurrentDayNeedsUpdate = (0, react_1.useRef)(true);
|
|
66
66
|
var updateGeneralCurrentDay = (0, react_1.useCallback)(function (newDate) {
|
|
67
67
|
if (!isGeneralCurrentDayNeedsUpdate.current) {
|
|
68
68
|
isGeneralCurrentDayNeedsUpdate.current = true;
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
|
-
setGeneralCurrentDay((0, utils_1.getFormattedDay)(newDate));
|
|
72
|
-
}, [isGeneralCurrentDayNeedsUpdate]);
|
|
71
|
+
setGeneralCurrentDay((0, utils_1.getFormattedDay)(newDate, props.timeZone));
|
|
72
|
+
}, [isGeneralCurrentDayNeedsUpdate, props.timeZone]);
|
|
73
73
|
var onCalendarChangedMonth = react_1["default"].useCallback(function (newDate) {
|
|
74
74
|
updateGeneralCurrentDay(newDate);
|
|
75
75
|
}, [updateGeneralCurrentDay]);
|
|
76
76
|
var _g = (0, useDisplayDate_1["default"])(generalCurrentDay), dateToDisplay = _g.dateToDisplay, changeDisplayFormat = _g.changeDisplayFormat;
|
|
77
|
-
var _h = (0, useMonthGrid_1["default"])(generalCurrentDay), monthGridWeekDays = _h.monthGridWeekDays, monthGridCalendarDays = _h.monthGridCalendarDays;
|
|
78
|
-
var _j = (0, useWeekGrid_1["default"])(generalCurrentDay), weekGridTwentyFourHoursArray = _j.weekGridTwentyFourHoursArray, weekGridCurrentWeekDays = _j.weekGridCurrentWeekDays;
|
|
77
|
+
var _h = (0, useMonthGrid_1["default"])(generalCurrentDay, props.timeZone), monthGridWeekDays = _h.monthGridWeekDays, monthGridCalendarDays = _h.monthGridCalendarDays;
|
|
78
|
+
var _j = (0, useWeekGrid_1["default"])(generalCurrentDay, props.timeZone), weekGridTwentyFourHoursArray = _j.weekGridTwentyFourHoursArray, weekGridCurrentWeekDays = _j.weekGridCurrentWeekDays;
|
|
79
79
|
var _k = (0, useDayGrid_1.useDayGrid)(generalCurrentDay), dayGridTwentyFourHoursArray = _k.dayGridTwentyFourHoursArray, dayGridCurrentDay = _k.dayGridCurrentDay;
|
|
80
80
|
var _l = (0, useCalendarType_1.useCalendarType)(function (newType) {
|
|
81
81
|
if (newType === CalendarType_1["default"].DAY) {
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { IDay } from '../CalendarSystem';
|
|
2
|
-
declare const useMonthGrid: (generalCurrentDay: IDay) => {
|
|
2
|
+
declare const useMonthGrid: (generalCurrentDay: IDay, timeZone?: string) => {
|
|
3
3
|
monthGridWeekDays: any;
|
|
4
|
-
monthGridCalendarDays:
|
|
4
|
+
monthGridCalendarDays: {
|
|
5
|
+
date: Date;
|
|
6
|
+
dayNumber: number;
|
|
7
|
+
outOfRange?: boolean;
|
|
8
|
+
isToday?: boolean;
|
|
9
|
+
formattedDisplay?: string;
|
|
10
|
+
}[];
|
|
5
11
|
};
|
|
6
12
|
export default useMonthGrid;
|
|
@@ -18,7 +18,7 @@ var utils_1 = require("../utils/utils");
|
|
|
18
18
|
var FIRST_DAY = 1;
|
|
19
19
|
var ONE_MONTH = 1;
|
|
20
20
|
var TOTAL_DAYS_IN_CALENDAR = 42;
|
|
21
|
-
var useMonthGrid = function (generalCurrentDay) {
|
|
21
|
+
var useMonthGrid = function (generalCurrentDay, timeZone) {
|
|
22
22
|
var currentMonthData = (0, react_1.useMemo)(function () {
|
|
23
23
|
var _a, _b;
|
|
24
24
|
var currentYear = (_a = generalCurrentDay.date) === null || _a === void 0 ? void 0 : _a.getFullYear();
|
|
@@ -70,8 +70,12 @@ var useMonthGrid = function (generalCurrentDay) {
|
|
|
70
70
|
outOfRange: currentDate.getMonth() > currentMonth
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
|
-
return innerCalendarArray.map(function (day) {
|
|
74
|
-
|
|
73
|
+
return innerCalendarArray.map(function (day) {
|
|
74
|
+
var zoned = (0, utils_1.getDateInTimeZone)(day.date, timeZone);
|
|
75
|
+
return (0, utils_1.isTodayInTimeZone)(zoned, timeZone)
|
|
76
|
+
? __assign(__assign({}, day), { date: zoned, isToday: true }) : __assign(__assign({}, day), { date: zoned });
|
|
77
|
+
});
|
|
78
|
+
}, [generalCurrentDay.date, currentMonthData, timeZone]);
|
|
75
79
|
return {
|
|
76
80
|
monthGridWeekDays: (0, utils_1.getWeekDays)(),
|
|
77
81
|
monthGridCalendarDays: calendarArray
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { IDay } from '../CalendarSystem';
|
|
2
|
-
declare const useWeekGrid: (generalCurrentDay: IDay) => {
|
|
2
|
+
declare const useWeekGrid: (generalCurrentDay: IDay, timeZone?: string) => {
|
|
3
3
|
weekGridTwentyFourHoursArray: string[];
|
|
4
4
|
weekGridCurrentWeekDays: {
|
|
5
|
-
dayNumber: number;
|
|
6
5
|
date: Date;
|
|
6
|
+
formattedDisplay: any;
|
|
7
|
+
isToday: boolean;
|
|
8
|
+
dayNumber: number;
|
|
7
9
|
outOfRange?: boolean;
|
|
8
|
-
isToday?: boolean;
|
|
9
|
-
formattedDisplay?: string;
|
|
10
10
|
}[];
|
|
11
11
|
};
|
|
12
12
|
export default useWeekGrid;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
exports.__esModule = true;
|
|
3
3
|
var react_1 = require("react");
|
|
4
4
|
var utils_1 = require("../utils/utils");
|
|
5
|
-
var useWeekGrid = function (generalCurrentDay) {
|
|
5
|
+
var useWeekGrid = function (generalCurrentDay, timeZone) {
|
|
6
6
|
var currentWeek = (0, react_1.useMemo)(function () {
|
|
7
|
-
var formattedWeek = (0, utils_1.getFormattedWeekFromDate)(generalCurrentDay.date);
|
|
7
|
+
var formattedWeek = (0, utils_1.getFormattedWeekFromDate)(generalCurrentDay.date, timeZone);
|
|
8
8
|
return formattedWeek;
|
|
9
|
-
}, [generalCurrentDay.date]);
|
|
9
|
+
}, [generalCurrentDay.date, timeZone]);
|
|
10
10
|
return {
|
|
11
11
|
weekGridTwentyFourHoursArray: (0, utils_1.getTwentyFourHoursArray)(),
|
|
12
12
|
weekGridCurrentWeekDays: currentWeek
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import { CSSProperties } from 'react';
|
|
2
2
|
import { IDay, IEvent, IEventGroup } from '../CalendarSystem';
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
3
|
+
export declare const getDateInTimeZone: (date: Date, timeZone?: string) => Date;
|
|
4
|
+
export declare const isTodayInTimeZone: (date: Date, timeZone?: string) => boolean;
|
|
5
|
+
export declare const getWeekDaysFromDate: (date: Date, timeZone?: string) => IDay[];
|
|
5
6
|
export declare const getOmittedEvent: (event: IEvent | Omit<IEvent, 'color'>) => any;
|
|
6
7
|
export declare const sortEventsInGroup: (group: IEventGroup) => Omit<IEvent, "color">[];
|
|
7
8
|
export declare const getSourceCalendarControl: (control: string) => HTMLElement;
|
|
8
|
-
export declare const getFormattedDay: (date?: Date) =>
|
|
9
|
-
export declare const getFormattedWeekFromDate: (fromDate?: Date) => {
|
|
9
|
+
export declare const getFormattedDay: (date?: Date, timeZone?: string) => {
|
|
10
10
|
dayNumber: number;
|
|
11
11
|
date: Date;
|
|
12
|
+
formattedDisplay: any;
|
|
13
|
+
isToday: boolean;
|
|
14
|
+
};
|
|
15
|
+
export declare const getFormattedWeekFromDate: (fromDate?: Date, timeZone?: string) => {
|
|
16
|
+
date: Date;
|
|
17
|
+
formattedDisplay: any;
|
|
18
|
+
isToday: boolean;
|
|
19
|
+
dayNumber: number;
|
|
12
20
|
outOfRange?: boolean;
|
|
13
|
-
isToday?: boolean;
|
|
14
|
-
formattedDisplay?: string;
|
|
15
21
|
}[];
|
|
16
22
|
export declare const getTwentyFourHoursArray: () => string[];
|
|
17
23
|
export declare const getWeekDays: () => any;
|
|
@@ -14,37 +14,57 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
15
|
};
|
|
16
16
|
exports.__esModule = true;
|
|
17
|
-
exports.formatEventTime = exports.getTopMarginFromEvent = exports.getProportionFromEvent = exports.getWeekDays = exports.getTwentyFourHoursArray = exports.getFormattedWeekFromDate = exports.getFormattedDay = exports.getSourceCalendarControl = exports.sortEventsInGroup = exports.getOmittedEvent = exports.
|
|
17
|
+
exports.formatEventTime = exports.getTopMarginFromEvent = exports.getProportionFromEvent = exports.getWeekDays = exports.getTwentyFourHoursArray = exports.getFormattedWeekFromDate = exports.getFormattedDay = exports.getSourceCalendarControl = exports.sortEventsInGroup = exports.getOmittedEvent = exports.getWeekDaysFromDate = exports.isTodayInTimeZone = exports.getDateInTimeZone = void 0;
|
|
18
18
|
/* eslint-disable no-plusplus */
|
|
19
19
|
var dayjs_1 = __importDefault(require("dayjs"));
|
|
20
|
+
var utc_1 = __importDefault(require("dayjs/plugin/utc"));
|
|
21
|
+
var timezone_1 = __importDefault(require("dayjs/plugin/timezone"));
|
|
20
22
|
var omit_1 = __importDefault(require("lodash-es/omit"));
|
|
21
23
|
var concat_1 = __importDefault(require("lodash-es/concat"));
|
|
22
24
|
var slice_1 = __importDefault(require("lodash-es/slice"));
|
|
23
25
|
var upperFirst_1 = __importDefault(require("lodash-es/upperFirst"));
|
|
24
26
|
var ceil_1 = __importDefault(require("lodash-es/ceil"));
|
|
25
27
|
var calendar_1 = require("../../../../utils/calendar");
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
dayjs_1["default"].extend(utc_1["default"]);
|
|
29
|
+
dayjs_1["default"].extend(timezone_1["default"]);
|
|
28
30
|
var WEEK_DAY_FORMAT = 'dd, D MMM';
|
|
29
|
-
|
|
31
|
+
// Возвращает дату, смещённую относительно указанного часового пояса.
|
|
32
|
+
var getDateInTimeZone = function (date, timeZone) {
|
|
33
|
+
if (!timeZone) {
|
|
34
|
+
return date;
|
|
35
|
+
}
|
|
36
|
+
var zoned = dayjs_1["default"].utc(date).tz(timeZone, true); // true => сохраняет локальное время
|
|
37
|
+
return zoned.toDate();
|
|
38
|
+
};
|
|
39
|
+
exports.getDateInTimeZone = getDateInTimeZone;
|
|
40
|
+
// Проверяет, является ли данная дата сегодняшним днём в указанном часовом поясе.
|
|
41
|
+
var isTodayInTimeZone = function (date, timeZone) {
|
|
42
|
+
if (!timeZone) {
|
|
43
|
+
return (0, dayjs_1["default"])(date).isToday();
|
|
44
|
+
}
|
|
45
|
+
var now = (0, dayjs_1["default"])().tz(timeZone);
|
|
46
|
+
var target = dayjs_1["default"].utc(date).tz(timeZone);
|
|
47
|
+
return now.isSame(target, 'day');
|
|
48
|
+
};
|
|
49
|
+
exports.isTodayInTimeZone = isTodayInTimeZone;
|
|
50
|
+
var getWeekDaysFromDate = function (date, timeZone) {
|
|
30
51
|
var weekDays = [];
|
|
31
52
|
var firstDayOfWeek = new Date(date);
|
|
32
53
|
var currentDay = date.getDay();
|
|
33
|
-
var diff = currentDay === 0 ?
|
|
34
|
-
firstDayOfWeek.setDate(firstDayOfWeek.getDate() - diff);
|
|
35
|
-
for (var i = 0; i <
|
|
54
|
+
var diff = currentDay === 0 ? 6 : currentDay - 1;
|
|
55
|
+
firstDayOfWeek.setDate(firstDayOfWeek.getDate() - diff);
|
|
56
|
+
for (var i = 0; i < 7; i++) {
|
|
36
57
|
var currentDate = new Date(firstDayOfWeek);
|
|
37
|
-
currentDate.setDate(
|
|
58
|
+
currentDate.setDate(firstDayOfWeek.getDate() + i);
|
|
59
|
+
var zonedDate = (0, exports.getDateInTimeZone)(currentDate, timeZone);
|
|
38
60
|
weekDays.push({
|
|
39
|
-
dayNumber:
|
|
40
|
-
date:
|
|
61
|
+
dayNumber: zonedDate.getDate(),
|
|
62
|
+
date: zonedDate
|
|
41
63
|
});
|
|
42
64
|
}
|
|
43
65
|
return weekDays;
|
|
44
66
|
};
|
|
45
67
|
exports.getWeekDaysFromDate = getWeekDaysFromDate;
|
|
46
|
-
var isDateIsToday = function (date) { return (0, dayjs_1["default"])(date).isToday(); };
|
|
47
|
-
exports.isDateIsToday = isDateIsToday;
|
|
48
68
|
var getOmittedEvent = function (event) { return (0, omit_1["default"])(event, ['color', 'eventGroupId']); };
|
|
49
69
|
exports.getOmittedEvent = getOmittedEvent;
|
|
50
70
|
var sortEventsInGroup = function (group) { return group.events
|
|
@@ -56,26 +76,29 @@ var sortEventsInGroup = function (group) { return group.events
|
|
|
56
76
|
exports.sortEventsInGroup = sortEventsInGroup;
|
|
57
77
|
var getSourceCalendarControl = function (control) { return document.querySelector("[data-icon=\"control-".concat(control, "\"]")); };
|
|
58
78
|
exports.getSourceCalendarControl = getSourceCalendarControl;
|
|
59
|
-
var getFormattedDay = function (date) {
|
|
79
|
+
var getFormattedDay = function (date, timeZone) {
|
|
60
80
|
if (date === void 0) { date = null; }
|
|
61
|
-
var
|
|
81
|
+
var base = date ? (0, dayjs_1["default"])(date) : (0, dayjs_1["default"])();
|
|
82
|
+
// Сбрасываем время до начала дня в часовом поясе
|
|
83
|
+
var zoned = timeZone
|
|
84
|
+
? base.tz(timeZone).startOf('day')
|
|
85
|
+
: base.startOf('day');
|
|
86
|
+
var dayNumber = zoned.date();
|
|
87
|
+
var formattedDisplay = (0, calendar_1.convertDate)(zoned.toDate(), null, WEEK_DAY_FORMAT);
|
|
62
88
|
return {
|
|
63
|
-
dayNumber:
|
|
64
|
-
date:
|
|
65
|
-
formattedDisplay:
|
|
66
|
-
isToday:
|
|
89
|
+
dayNumber: dayNumber,
|
|
90
|
+
date: zoned.toDate(),
|
|
91
|
+
formattedDisplay: formattedDisplay,
|
|
92
|
+
isToday: true
|
|
67
93
|
};
|
|
68
94
|
};
|
|
69
95
|
exports.getFormattedDay = getFormattedDay;
|
|
70
|
-
|
|
71
|
-
var getFormattedWeekFromDate = function (fromDate) {
|
|
96
|
+
var getFormattedWeekFromDate = function (fromDate, timeZone) {
|
|
72
97
|
if (fromDate === void 0) { fromDate = null; }
|
|
73
98
|
var currentWeek = (0, exports.getWeekDaysFromDate)(fromDate || new Date());
|
|
74
99
|
return currentWeek.map(function (dayOfWeek) {
|
|
75
|
-
var
|
|
76
|
-
|
|
77
|
-
copyOfDayWeek.isToday = (0, exports.isDateIsToday)(copyOfDayWeek.date);
|
|
78
|
-
return copyOfDayWeek;
|
|
100
|
+
var zonedDate = dayOfWeek.date;
|
|
101
|
+
return __assign(__assign({}, dayOfWeek), { date: zonedDate, formattedDisplay: (0, calendar_1.convertDate)(zonedDate, null, WEEK_DAY_FORMAT), isToday: (0, exports.isTodayInTimeZone)(zonedDate, timeZone) });
|
|
79
102
|
});
|
|
80
103
|
};
|
|
81
104
|
exports.getFormattedWeekFromDate = getFormattedWeekFromDate;
|
|
@@ -50,7 +50,8 @@ function AutoCompleteField(props) {
|
|
|
50
50
|
primaryKey: props.primaryKey,
|
|
51
51
|
items: items,
|
|
52
52
|
inputValue: props.input.value,
|
|
53
|
-
sourceItems: sourceItems
|
|
53
|
+
sourceItems: sourceItems,
|
|
54
|
+
hasCloseOnSelect: props.hasCloseOnSelect
|
|
54
55
|
}), isOpened = _c.isOpened, setIsOpened = _c.setIsOpened, setIsFocused = _c.setIsFocused, hoveredId = _c.hoveredId, setHoveredId = _c.setHoveredId, selectedIds = _c.selectedIds, setSelectedIds = _c.setSelectedIds;
|
|
55
56
|
var onOpen = (0, react_1.useCallback)(function () {
|
|
56
57
|
setQuery('');
|
|
@@ -130,6 +131,7 @@ AutoCompleteField.defaultProps = {
|
|
|
130
131
|
multiple: false,
|
|
131
132
|
disabled: false,
|
|
132
133
|
required: false,
|
|
133
|
-
showClear: false
|
|
134
|
+
showClear: false,
|
|
135
|
+
hasCloseOnSelect: true
|
|
134
136
|
};
|
|
135
137
|
exports["default"] = (0, fieldWrapper_1["default"])(enums_1.FieldEnum.AUTO_COMPLETE_FIELD, AutoCompleteField);
|