@steroidsjs/core 3.0.84 → 3.0.86
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/list.js +60 -62
- package/docs-autogen-result.json +24 -15
- package/en.json +5 -3
- package/package.json +1 -1
- package/ui/content/Calendar/Calendar.d.ts +1 -3
- package/ui/content/CalendarSystem/CalendarSystem.d.ts +0 -5
- package/ui/content/CalendarSystem/hooks/useCalendarSystem.d.ts +4 -10
- package/ui/content/CalendarSystem/hooks/useCalendarSystem.js +5 -5
- package/ui/content/CalendarSystem/hooks/useMonthGrid.d.ts +2 -8
- package/ui/content/CalendarSystem/hooks/useMonthGrid.js +3 -7
- 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 +6 -12
- package/ui/content/CalendarSystem/utils/utils.js +24 -47
- package/ui/form/EmailField/EmailField.js +1 -1
- package/ui/form/EmailField/hooks/useInputTypeEmail.d.ts +1 -1
- package/ui/form/EmailField/hooks/useInputTypeEmail.js +2 -3
- package/ui/form/Form/Form.d.ts +4 -0
- package/ui/form/Form/Form.js +3 -3
- package/ui/format/EnumFormatter/EnumFormatter.d.ts +10 -3
- package/ui/format/MoneyFormatter/MoneyFormatter.d.ts +3 -3
package/actions/list.js
CHANGED
|
@@ -200,69 +200,67 @@ var listFetch = function (listId, query) {
|
|
|
200
200
|
type: exports.LIST_BEFORE_FETCH
|
|
201
201
|
});
|
|
202
202
|
}
|
|
203
|
-
toDispatch.push(
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
if (!data) {
|
|
209
|
-
return [];
|
|
210
|
-
}
|
|
211
|
-
// Check list is not destroy
|
|
212
|
-
if (!getState().list.lists[listId]) {
|
|
213
|
-
return [];
|
|
214
|
-
}
|
|
215
|
-
if ((0, isArray_1["default"])(data)) {
|
|
216
|
-
data = {
|
|
217
|
-
items: data,
|
|
218
|
-
total: data.length,
|
|
219
|
-
meta: null
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
|
-
var items = data.items || [];
|
|
223
|
-
var total = data.total || items.length || null;
|
|
224
|
-
var page = formValues[list.pageAttribute];
|
|
225
|
-
var pageSize = formValues[list.pageSizeAttribute];
|
|
226
|
-
var totalPages = Math.ceil(((list === null || list === void 0 ? void 0 : list.total) || 0) / (pageSize || 1));
|
|
227
|
-
var hasNextPage = (_a = data === null || data === void 0 ? void 0 : data.hasNextPage) !== null && _a !== void 0 ? _a : (page !== totalPages || null);
|
|
228
|
-
return [
|
|
229
|
-
(0, form_2.formSetErrors)(list.formId, data.errors || null),
|
|
230
|
-
{
|
|
231
|
-
items: items,
|
|
232
|
-
total: total,
|
|
233
|
-
hasNextPage: hasNextPage,
|
|
234
|
-
meta: data.meta || null,
|
|
235
|
-
page: page,
|
|
236
|
-
pageSize: pageSize,
|
|
237
|
-
listId: listId,
|
|
238
|
-
defaultPageValue: list.defaultPageValue,
|
|
239
|
-
type: exports.LIST_AFTER_FETCH
|
|
240
|
-
},
|
|
241
|
-
];
|
|
242
|
-
})["catch"](function (error) {
|
|
243
|
-
// Если это отмена — просто игнорируем ошибку
|
|
244
|
-
if (axios_1["default"].isCancel && axios_1["default"].isCancel(error)) {
|
|
245
|
-
return [];
|
|
246
|
-
}
|
|
247
|
-
// Handle cancellation quietly
|
|
248
|
-
// axios v0.x: axios.isCancel(error)
|
|
249
|
-
var isAxiosCancel = typeof axios_1["default"].isCancel === 'function' && axios_1["default"].isCancel(error);
|
|
250
|
-
if (isAxiosCancel) {
|
|
251
|
-
// игнорируем, это отмена запроса
|
|
252
|
-
return [];
|
|
253
|
-
}
|
|
254
|
-
// прочие ошибки — можно пробросить или обработать
|
|
255
|
-
if (typeof list.onError === 'function') {
|
|
256
|
-
list.onError(error);
|
|
257
|
-
}
|
|
203
|
+
toDispatch.push(Promise.resolve(onFetch(list, formValues, components, options))
|
|
204
|
+
.then(function (data) {
|
|
205
|
+
var _a;
|
|
206
|
+
// Skip on empty
|
|
207
|
+
if (!data) {
|
|
258
208
|
return [];
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
209
|
+
}
|
|
210
|
+
// Check list is not destroy
|
|
211
|
+
if (!getState().list.lists[listId]) {
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
if ((0, isArray_1["default"])(data)) {
|
|
215
|
+
data = {
|
|
216
|
+
items: data,
|
|
217
|
+
total: data.length,
|
|
218
|
+
meta: null
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
var items = data.items || [];
|
|
222
|
+
var total = data.total || items.length || null;
|
|
223
|
+
var page = formValues[list.pageAttribute];
|
|
224
|
+
var pageSize = formValues[list.pageSizeAttribute];
|
|
225
|
+
var totalPages = Math.ceil(((list === null || list === void 0 ? void 0 : list.total) || 0) / (pageSize || 1));
|
|
226
|
+
var hasNextPage = (_a = data === null || data === void 0 ? void 0 : data.hasNextPage) !== null && _a !== void 0 ? _a : (page !== totalPages || null);
|
|
227
|
+
return [
|
|
228
|
+
(0, form_2.formSetErrors)(list.formId, data.errors || null),
|
|
229
|
+
{
|
|
230
|
+
items: items,
|
|
231
|
+
total: total,
|
|
232
|
+
hasNextPage: hasNextPage,
|
|
233
|
+
meta: data.meta || null,
|
|
234
|
+
page: page,
|
|
235
|
+
pageSize: pageSize,
|
|
236
|
+
listId: listId,
|
|
237
|
+
defaultPageValue: list.defaultPageValue,
|
|
238
|
+
type: exports.LIST_AFTER_FETCH
|
|
239
|
+
},
|
|
240
|
+
];
|
|
241
|
+
})["catch"](function (error) {
|
|
242
|
+
// Если это отмена — просто игнорируем ошибку
|
|
243
|
+
if (axios_1["default"].isCancel && axios_1["default"].isCancel(error)) {
|
|
244
|
+
return [];
|
|
245
|
+
}
|
|
246
|
+
// Handle cancellation quietly
|
|
247
|
+
// axios v0.x: axios.isCancel(error)
|
|
248
|
+
var isAxiosCancel = typeof axios_1["default"].isCancel === 'function' && axios_1["default"].isCancel(error);
|
|
249
|
+
if (isAxiosCancel) {
|
|
250
|
+
// игнорируем, это отмена запроса
|
|
251
|
+
return [];
|
|
252
|
+
}
|
|
253
|
+
// прочие ошибки — можно пробросить или обработать
|
|
254
|
+
if (typeof list.onError === 'function') {
|
|
255
|
+
list.onError(error);
|
|
256
|
+
}
|
|
257
|
+
return [];
|
|
258
|
+
})["finally"](function () {
|
|
259
|
+
// убрать сохранённый источник если он тот же
|
|
260
|
+
if (components.http._promises[listId] === source) {
|
|
261
|
+
delete components.http._promises[listId];
|
|
262
|
+
}
|
|
263
|
+
}));
|
|
266
264
|
return dispatch(toDispatch);
|
|
267
265
|
};
|
|
268
266
|
};
|
package/docs-autogen-result.json
CHANGED
|
@@ -6984,7 +6984,7 @@
|
|
|
6984
6984
|
{
|
|
6985
6985
|
"name": "timeZone",
|
|
6986
6986
|
"decorators": [],
|
|
6987
|
-
"description": "Часовой пояс в формате IANA
|
|
6987
|
+
"description": "Часовой пояс в формате IANA",
|
|
6988
6988
|
"required": false,
|
|
6989
6989
|
"type": "string",
|
|
6990
6990
|
"example": "'Europe/Moscow'",
|
|
@@ -7178,7 +7178,7 @@
|
|
|
7178
7178
|
{
|
|
7179
7179
|
"name": "timeZone",
|
|
7180
7180
|
"decorators": [],
|
|
7181
|
-
"description": "Часовой пояс в формате IANA
|
|
7181
|
+
"description": "Часовой пояс в формате IANA",
|
|
7182
7182
|
"required": false,
|
|
7183
7183
|
"type": "string",
|
|
7184
7184
|
"example": "'Europe/Moscow'"
|
|
@@ -7194,7 +7194,7 @@
|
|
|
7194
7194
|
{
|
|
7195
7195
|
"name": "todayDate",
|
|
7196
7196
|
"decorators": [],
|
|
7197
|
-
"description": "Текущая дата в формате Date, используется для выделения текущего дня в
|
|
7197
|
+
"description": "Текущая дата в формате Date, используется для выделения текущего дня в календаре.",
|
|
7198
7198
|
"required": true,
|
|
7199
7199
|
"type": "Date",
|
|
7200
7200
|
"example": null
|
|
@@ -7871,15 +7871,6 @@
|
|
|
7871
7871
|
"example": "{width: '45%'}",
|
|
7872
7872
|
"defaultValue": null
|
|
7873
7873
|
},
|
|
7874
|
-
{
|
|
7875
|
-
"name": "timeZone",
|
|
7876
|
-
"decorators": [],
|
|
7877
|
-
"description": "Часовой пояс в формате IANA",
|
|
7878
|
-
"required": false,
|
|
7879
|
-
"type": "string",
|
|
7880
|
-
"example": "'Europe/Moscow'",
|
|
7881
|
-
"defaultValue": null
|
|
7882
|
-
},
|
|
7883
7874
|
{
|
|
7884
7875
|
"name": "users",
|
|
7885
7876
|
"decorators": [],
|
|
@@ -23379,6 +23370,15 @@
|
|
|
23379
23370
|
"example": "true",
|
|
23380
23371
|
"defaultValue": null
|
|
23381
23372
|
},
|
|
23373
|
+
{
|
|
23374
|
+
"name": "validator",
|
|
23375
|
+
"decorators": [],
|
|
23376
|
+
"description": "Колбэк для использования сторонних валидаторов, например yup",
|
|
23377
|
+
"required": false,
|
|
23378
|
+
"type": "any",
|
|
23379
|
+
"example": null,
|
|
23380
|
+
"defaultValue": null
|
|
23381
|
+
},
|
|
23382
23382
|
{
|
|
23383
23383
|
"name": "validators",
|
|
23384
23384
|
"decorators": [],
|
|
@@ -31675,10 +31675,10 @@
|
|
|
31675
31675
|
{
|
|
31676
31676
|
"name": "items",
|
|
31677
31677
|
"decorators": [],
|
|
31678
|
-
"description": "Перечисление
|
|
31678
|
+
"description": "Перечисление элементов",
|
|
31679
31679
|
"required": false,
|
|
31680
31680
|
"type": "string | {} | string | number | {id: string | number | boolean, label: string | Record | number}[]",
|
|
31681
|
-
"example":
|
|
31681
|
+
"example": "// Строковый путь к перечислению\nconst enumPath = 'app.geo.enums.Cities';\n\n// Массив объектов\nconst items = [\n { id: 1, label: 'London' },\n { id: 2, label: 'Paris' }\n];",
|
|
31682
31682
|
"defaultValue": null
|
|
31683
31683
|
},
|
|
31684
31684
|
{
|
|
@@ -31851,7 +31851,7 @@
|
|
|
31851
31851
|
{
|
|
31852
31852
|
"name": "currency",
|
|
31853
31853
|
"decorators": [],
|
|
31854
|
-
"description": "Валюта @enum
|
|
31854
|
+
"description": "Валюта @enum {eur, rub, usd}",
|
|
31855
31855
|
"required": false,
|
|
31856
31856
|
"type": "string",
|
|
31857
31857
|
"example": "rub",
|
|
@@ -36991,6 +36991,15 @@
|
|
|
36991
36991
|
"example": "true",
|
|
36992
36992
|
"defaultValue": null
|
|
36993
36993
|
},
|
|
36994
|
+
{
|
|
36995
|
+
"name": "validator",
|
|
36996
|
+
"decorators": [],
|
|
36997
|
+
"description": "Колбэк для использования сторонних валидаторов, например yup",
|
|
36998
|
+
"required": false,
|
|
36999
|
+
"type": "any",
|
|
37000
|
+
"example": null,
|
|
37001
|
+
"defaultValue": null
|
|
37002
|
+
},
|
|
36994
37003
|
{
|
|
36995
37004
|
"name": "validators",
|
|
36996
37005
|
"decorators": [],
|
package/en.json
CHANGED
|
@@ -1003,14 +1003,13 @@
|
|
|
1003
1003
|
"Сохранение в localStorage уровней вложенности.": "",
|
|
1004
1004
|
"Изначально отображать все элементы раскрытыми": "",
|
|
1005
1005
|
"Нужно ли отображать кнопку \"сегодня\" под календарем.": "",
|
|
1006
|
-
"Часовой пояс в формате IANA
|
|
1007
|
-
"Текущая дата в формате Date, используется для выделения текущего дня в
|
|
1006
|
+
"Часовой пояс в формате IANA": "",
|
|
1007
|
+
"Текущая дата в формате Date, используется для выделения текущего дня в календаре.": "",
|
|
1008
1008
|
"Дополнительные свойства для списка календарей бокового календаря": "",
|
|
1009
1009
|
"Дополнительные свойства для бокового календаря": "",
|
|
1010
1010
|
"Данные для формы с текущими датами календаря": "",
|
|
1011
1011
|
"Свойства для сетки дня": "",
|
|
1012
1012
|
"Свойства для сетки месяца": "",
|
|
1013
|
-
"Часовой пояс в формате IANA": "",
|
|
1014
1013
|
"Свойства для сетки недели": "",
|
|
1015
1014
|
"Конечная дата": "",
|
|
1016
1015
|
"Начальная дата": "",
|
|
@@ -1039,11 +1038,14 @@
|
|
|
1039
1038
|
"Текст, который отобразится при загрузке файла": "",
|
|
1040
1039
|
"Параметры для кнопки отправки формы": "",
|
|
1041
1040
|
"Очищать сообщение об ошибке при редактировании поля. По-умолчанию включено": "",
|
|
1041
|
+
"Колбэк для использования сторонних валидаторов, например yup": "",
|
|
1042
1042
|
"Конструктор редактора 'ckeditor5-react' из библиотеки @steroidsjs/ckeditor5/packages/ckeditor5-build-classic\nПримечание: для использования встроенного отображения 'HtmlField', данный компонент должен быть передан": "",
|
|
1043
1043
|
"Компонент редактора 'ckeditor5-react' из библиотеки @ckeditor\nПримечание: для использования встроенного отображения 'HtmlField', данный компонент должен быть передан": "",
|
|
1044
1044
|
"Допустимое количество символов после разделителя": "",
|
|
1045
1045
|
"Может ли число быть отрицательным": "",
|
|
1046
1046
|
" Ограничение доступного времени.": "",
|
|
1047
|
+
"Перечисление элементов": "",
|
|
1048
|
+
"Валюта @enum {eur, rub, usd}": "",
|
|
1047
1049
|
"Подключить бесконечный скролл": "",
|
|
1048
1050
|
"Аттрибут (название) в форме для поля с флагом, определяющим есть ли следующая страница": "",
|
|
1049
1051
|
"Аттрибут (название) в форме для поля с номером текущей страницы": "",
|
package/package.json
CHANGED
|
@@ -64,8 +64,7 @@ export interface ICalendarProps extends IUiComponent {
|
|
|
64
64
|
*/
|
|
65
65
|
showTodayButton?: boolean;
|
|
66
66
|
/**
|
|
67
|
-
* Часовой пояс в формате IANA
|
|
68
|
-
* Не влияет на изменение даты в Calendar.
|
|
67
|
+
* Часовой пояс в формате IANA
|
|
69
68
|
* @example 'Europe/Moscow'
|
|
70
69
|
*/
|
|
71
70
|
timeZone?: string;
|
|
@@ -105,7 +104,6 @@ export interface ICalendarViewProps extends ICalendarProps {
|
|
|
105
104
|
toggleCaptionPanel: () => void;
|
|
106
105
|
/**
|
|
107
106
|
* Текущая дата в формате Date, используется для выделения текущего дня в календаре.
|
|
108
|
-
* Не влияет на изменение даты в Calendar.
|
|
109
107
|
*/
|
|
110
108
|
todayDate: Date;
|
|
111
109
|
}
|
|
@@ -165,11 +165,6 @@ 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;
|
|
173
168
|
[key: string]: any;
|
|
174
169
|
}
|
|
175
170
|
export interface ICalendarSystemViewProps extends Pick<ICalendarSystemProps, 'className' | 'style' | 'additionalViewProps' | 'users' | 'asideCalendarProps' | 'asideCalendarCheckboxListProps'> {
|
|
@@ -2,20 +2,14 @@ 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
|
-
date: Date;
|
|
7
|
-
dayNumber: number;
|
|
8
|
-
outOfRange?: boolean;
|
|
9
|
-
isToday?: boolean;
|
|
10
|
-
formattedDisplay?: string;
|
|
11
|
-
}[];
|
|
5
|
+
monthGridCalendarDays: import("../CalendarSystem").IDay[];
|
|
12
6
|
weekGridTwentyFourHoursArray: string[];
|
|
13
7
|
weekGridCurrentWeekDays: {
|
|
14
|
-
date: Date;
|
|
15
|
-
formattedDisplay: any;
|
|
16
|
-
isToday: boolean;
|
|
17
8
|
dayNumber: number;
|
|
9
|
+
date: Date;
|
|
18
10
|
outOfRange?: boolean;
|
|
11
|
+
isToday?: boolean;
|
|
12
|
+
formattedDisplay?: string;
|
|
19
13
|
}[];
|
|
20
14
|
dayGridTwentyFourHoursArray: string[];
|
|
21
15
|
dayGridCurrentDay: import("../CalendarSystem").IDay;
|
|
@@ -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)(
|
|
64
|
+
var _f = react_1["default"].useState((0, utils_1.getFormattedDay)()), 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));
|
|
72
|
+
}, [isGeneralCurrentDayNeedsUpdate]);
|
|
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
|
|
78
|
-
var _j = (0, useWeekGrid_1["default"])(generalCurrentDay
|
|
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;
|
|
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,12 +1,6 @@
|
|
|
1
1
|
import { IDay } from '../CalendarSystem';
|
|
2
|
-
declare const useMonthGrid: (generalCurrentDay: IDay
|
|
2
|
+
declare const useMonthGrid: (generalCurrentDay: IDay) => {
|
|
3
3
|
monthGridWeekDays: any;
|
|
4
|
-
monthGridCalendarDays:
|
|
5
|
-
date: Date;
|
|
6
|
-
dayNumber: number;
|
|
7
|
-
outOfRange?: boolean;
|
|
8
|
-
isToday?: boolean;
|
|
9
|
-
formattedDisplay?: string;
|
|
10
|
-
}[];
|
|
4
|
+
monthGridCalendarDays: IDay[];
|
|
11
5
|
};
|
|
12
6
|
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) {
|
|
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,12 +70,8 @@ var useMonthGrid = function (generalCurrentDay, timeZone) {
|
|
|
70
70
|
outOfRange: currentDate.getMonth() > currentMonth
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
|
-
return innerCalendarArray.map(function (day) {
|
|
74
|
-
|
|
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]);
|
|
73
|
+
return innerCalendarArray.map(function (day) { return (0, utils_1.isDateIsToday)(day.date) ? (__assign(__assign({}, day), { isToday: true })) : day; });
|
|
74
|
+
}, [generalCurrentDay.date, currentMonthData]);
|
|
79
75
|
return {
|
|
80
76
|
monthGridWeekDays: (0, utils_1.getWeekDays)(),
|
|
81
77
|
monthGridCalendarDays: calendarArray
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { IDay } from '../CalendarSystem';
|
|
2
|
-
declare const useWeekGrid: (generalCurrentDay: IDay
|
|
2
|
+
declare const useWeekGrid: (generalCurrentDay: IDay) => {
|
|
3
3
|
weekGridTwentyFourHoursArray: string[];
|
|
4
4
|
weekGridCurrentWeekDays: {
|
|
5
|
-
date: Date;
|
|
6
|
-
formattedDisplay: any;
|
|
7
|
-
isToday: boolean;
|
|
8
5
|
dayNumber: number;
|
|
6
|
+
date: Date;
|
|
9
7
|
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) {
|
|
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);
|
|
8
8
|
return formattedWeek;
|
|
9
|
-
}, [generalCurrentDay.date
|
|
9
|
+
}, [generalCurrentDay.date]);
|
|
10
10
|
return {
|
|
11
11
|
weekGridTwentyFourHoursArray: (0, utils_1.getTwentyFourHoursArray)(),
|
|
12
12
|
weekGridCurrentWeekDays: currentWeek
|
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
import { CSSProperties } from 'react';
|
|
2
2
|
import { IDay, IEvent, IEventGroup } from '../CalendarSystem';
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const getWeekDaysFromDate: (date: Date, timeZone?: string) => IDay[];
|
|
3
|
+
export declare const getWeekDaysFromDate: (date: Date) => IDay[];
|
|
4
|
+
export declare const isDateIsToday: (date: Date) => boolean;
|
|
6
5
|
export declare const getOmittedEvent: (event: IEvent | Omit<IEvent, 'color'>) => any;
|
|
7
6
|
export declare const sortEventsInGroup: (group: IEventGroup) => Omit<IEvent, "color">[];
|
|
8
7
|
export declare const getSourceCalendarControl: (control: string) => HTMLElement;
|
|
9
|
-
export declare const getFormattedDay: (date?: Date
|
|
8
|
+
export declare const getFormattedDay: (date?: Date) => IDay;
|
|
9
|
+
export declare const getFormattedWeekFromDate: (fromDate?: Date) => {
|
|
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;
|
|
20
12
|
outOfRange?: boolean;
|
|
13
|
+
isToday?: boolean;
|
|
14
|
+
formattedDisplay?: string;
|
|
21
15
|
}[];
|
|
22
16
|
export declare const getTwentyFourHoursArray: () => string[];
|
|
23
17
|
export declare const getWeekDays: () => any;
|
|
@@ -14,57 +14,37 @@ 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.isDateIsToday = exports.getWeekDaysFromDate = 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"));
|
|
22
20
|
var omit_1 = __importDefault(require("lodash-es/omit"));
|
|
23
21
|
var concat_1 = __importDefault(require("lodash-es/concat"));
|
|
24
22
|
var slice_1 = __importDefault(require("lodash-es/slice"));
|
|
25
23
|
var upperFirst_1 = __importDefault(require("lodash-es/upperFirst"));
|
|
26
24
|
var ceil_1 = __importDefault(require("lodash-es/ceil"));
|
|
27
25
|
var calendar_1 = require("../../../../utils/calendar");
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
var SIX_DAYS_DIFF = 6;
|
|
27
|
+
var MAX_DAYS_DIFF_IN_WEEK = 7;
|
|
30
28
|
var WEEK_DAY_FORMAT = 'dd, D MMM';
|
|
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) {
|
|
29
|
+
var getWeekDaysFromDate = function (date) {
|
|
51
30
|
var weekDays = [];
|
|
52
31
|
var firstDayOfWeek = new Date(date);
|
|
53
32
|
var currentDay = date.getDay();
|
|
54
|
-
var diff = currentDay === 0 ?
|
|
55
|
-
firstDayOfWeek.setDate(firstDayOfWeek.getDate() - diff);
|
|
56
|
-
for (var i = 0; i <
|
|
33
|
+
var diff = currentDay === 0 ? SIX_DAYS_DIFF : currentDay - 1; // Разница между текущим днем и понедельником
|
|
34
|
+
firstDayOfWeek.setDate(firstDayOfWeek.getDate() - diff); // Устанавливаем первый день недели (понедельник)
|
|
35
|
+
for (var i = 0; i < MAX_DAYS_DIFF_IN_WEEK; i++) {
|
|
57
36
|
var currentDate = new Date(firstDayOfWeek);
|
|
58
|
-
currentDate.setDate(
|
|
59
|
-
var zonedDate = (0, exports.getDateInTimeZone)(currentDate, timeZone);
|
|
37
|
+
currentDate.setDate(currentDate.getDate() + i);
|
|
60
38
|
weekDays.push({
|
|
61
|
-
dayNumber:
|
|
62
|
-
date:
|
|
39
|
+
dayNumber: currentDate.getDate(),
|
|
40
|
+
date: new Date(currentDate)
|
|
63
41
|
});
|
|
64
42
|
}
|
|
65
43
|
return weekDays;
|
|
66
44
|
};
|
|
67
45
|
exports.getWeekDaysFromDate = getWeekDaysFromDate;
|
|
46
|
+
var isDateIsToday = function (date) { return (0, dayjs_1["default"])(date).isToday(); };
|
|
47
|
+
exports.isDateIsToday = isDateIsToday;
|
|
68
48
|
var getOmittedEvent = function (event) { return (0, omit_1["default"])(event, ['color', 'eventGroupId']); };
|
|
69
49
|
exports.getOmittedEvent = getOmittedEvent;
|
|
70
50
|
var sortEventsInGroup = function (group) { return group.events
|
|
@@ -76,29 +56,26 @@ var sortEventsInGroup = function (group) { return group.events
|
|
|
76
56
|
exports.sortEventsInGroup = sortEventsInGroup;
|
|
77
57
|
var getSourceCalendarControl = function (control) { return document.querySelector("[data-icon=\"control-".concat(control, "\"]")); };
|
|
78
58
|
exports.getSourceCalendarControl = getSourceCalendarControl;
|
|
79
|
-
var getFormattedDay = function (date
|
|
59
|
+
var getFormattedDay = function (date) {
|
|
80
60
|
if (date === void 0) { date = null; }
|
|
81
|
-
var
|
|
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);
|
|
61
|
+
var dateToFormat = date || new Date();
|
|
88
62
|
return {
|
|
89
|
-
dayNumber:
|
|
90
|
-
date:
|
|
91
|
-
formattedDisplay:
|
|
92
|
-
isToday:
|
|
63
|
+
dayNumber: dateToFormat.getDate(),
|
|
64
|
+
date: new Date(dateToFormat),
|
|
65
|
+
formattedDisplay: (0, calendar_1.convertDate)(dateToFormat, null, WEEK_DAY_FORMAT),
|
|
66
|
+
isToday: (0, exports.isDateIsToday)(dateToFormat)
|
|
93
67
|
};
|
|
94
68
|
};
|
|
95
69
|
exports.getFormattedDay = getFormattedDay;
|
|
96
|
-
|
|
70
|
+
//TODO использовать существующие функции а не дублировать функционал
|
|
71
|
+
var getFormattedWeekFromDate = function (fromDate) {
|
|
97
72
|
if (fromDate === void 0) { fromDate = null; }
|
|
98
73
|
var currentWeek = (0, exports.getWeekDaysFromDate)(fromDate || new Date());
|
|
99
74
|
return currentWeek.map(function (dayOfWeek) {
|
|
100
|
-
var
|
|
101
|
-
|
|
75
|
+
var copyOfDayWeek = __assign({}, dayOfWeek);
|
|
76
|
+
copyOfDayWeek.formattedDisplay = (0, calendar_1.convertDate)(dayOfWeek.date, null, WEEK_DAY_FORMAT);
|
|
77
|
+
copyOfDayWeek.isToday = (0, exports.isDateIsToday)(copyOfDayWeek.date);
|
|
78
|
+
return copyOfDayWeek;
|
|
102
79
|
});
|
|
103
80
|
};
|
|
104
81
|
exports.getFormattedWeekFromDate = getFormattedWeekFromDate;
|
|
@@ -45,7 +45,7 @@ var enums_1 = require("../../../enums");
|
|
|
45
45
|
function EmailField(props) {
|
|
46
46
|
var components = (0, hooks_1.useComponents)();
|
|
47
47
|
var _a = (0, hooks_1.useSaveCursorPosition)(props.input), currentInputRef = _a.inputRef, onChange = _a.onChange;
|
|
48
|
-
var onInputChange = (0, useInputTypeEmail_1["default"])(currentInputRef, onChange, props.input.value).onInputChange;
|
|
48
|
+
var onInputChange = (0, useInputTypeEmail_1["default"])(currentInputRef, onChange, props.input.value, props.required).onInputChange;
|
|
49
49
|
var onClear = react_1["default"].useCallback(function () { return props.input.onChange(''); }, [props.input]);
|
|
50
50
|
var inputProps = react_1["default"].useMemo(function () {
|
|
51
51
|
var _a;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
declare const useInputTypeEmail: (currentInputRef: React.MutableRefObject<HTMLInputElement>, onChange: (event: React.ChangeEvent<HTMLInputElement>, value?: any) => void, currentValue: string | null | undefined) => {
|
|
2
|
+
declare const useInputTypeEmail: (currentInputRef: React.MutableRefObject<HTMLInputElement>, onChange: (event: React.ChangeEvent<HTMLInputElement>, value?: any) => void, currentValue: string | null | undefined, required: boolean) => {
|
|
3
3
|
onInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
4
4
|
};
|
|
5
5
|
export default useInputTypeEmail;
|
|
@@ -7,11 +7,10 @@ exports.__esModule = true;
|
|
|
7
7
|
/* eslint-disable no-unused-expressions */
|
|
8
8
|
var react_1 = __importDefault(require("react"));
|
|
9
9
|
var DEFAULT_VALIDITY = __('Неправильный формат адреса электронной почты.');
|
|
10
|
-
var useInputTypeEmail = function (currentInputRef, onChange, currentValue) {
|
|
10
|
+
var useInputTypeEmail = function (currentInputRef, onChange, currentValue, required) {
|
|
11
11
|
var isValueEmail = function (value) {
|
|
12
|
-
//In that case it's testing if value is empty string or not defined
|
|
13
12
|
if (!value) {
|
|
14
|
-
return
|
|
13
|
+
return !required;
|
|
15
14
|
}
|
|
16
15
|
var emailRegexp = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|.(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
17
16
|
return emailRegexp.test(value.toLowerCase());
|
package/ui/form/Form/Form.d.ts
CHANGED
|
@@ -62,6 +62,10 @@ export interface IFormProps extends IUiComponent {
|
|
|
62
62
|
* ]
|
|
63
63
|
*/
|
|
64
64
|
validators?: string[] | Array<string[]> | Array<Record<string, any>>;
|
|
65
|
+
/**
|
|
66
|
+
* Колбэк для использования сторонних валидаторов, например yup
|
|
67
|
+
*/
|
|
68
|
+
validator?: any;
|
|
65
69
|
/**
|
|
66
70
|
* Обработчик события перед отправкой формы
|
|
67
71
|
* @param args
|
package/ui/form/Form/Form.js
CHANGED
|
@@ -89,7 +89,6 @@ var useAddressBar_1 = __importDefault(require("../../../hooks/useAddressBar"));
|
|
|
89
89
|
var AutoSaveHelper_1 = __importDefault(require("./AutoSaveHelper"));
|
|
90
90
|
var hooks_1 = require("../../../hooks");
|
|
91
91
|
var form_1 = require("../../../utils/form");
|
|
92
|
-
var validate_1 = __importDefault(require("../validate"));
|
|
93
92
|
var form_2 = require("../../../actions/form");
|
|
94
93
|
var enums_1 = require("../../../enums");
|
|
95
94
|
var _isEmptyString = function (value) { return (0, isString_1["default"])(value) && (0, isEmpty_1["default"])(value); };
|
|
@@ -224,8 +223,9 @@ function Form(props) {
|
|
|
224
223
|
dispatch((0, form_2.formSetSubmitting)(props.formId, false));
|
|
225
224
|
return [2 /*return*/, null];
|
|
226
225
|
}
|
|
227
|
-
if (props.
|
|
228
|
-
(0,
|
|
226
|
+
if (props.validator && props.validator.call(null, cleanedValues) === false) {
|
|
227
|
+
dispatch((0, form_2.formSetSubmitting)(props.formId, false));
|
|
228
|
+
return [2 /*return*/, null];
|
|
229
229
|
}
|
|
230
230
|
if (!props.onSubmit) return [3 /*break*/, 2];
|
|
231
231
|
return [4 /*yield*/, props.onSubmit.call(null, cleanedValues)];
|
|
@@ -8,9 +8,16 @@ import { DataProviderItems } from '../../../hooks/useDataProvider';
|
|
|
8
8
|
**/
|
|
9
9
|
export interface IEnumFormatterProps {
|
|
10
10
|
/**
|
|
11
|
-
* Перечисление
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Перечисление элементов
|
|
12
|
+
* @example
|
|
13
|
+
* // Строковый путь к перечислению
|
|
14
|
+
* const enumPath = 'app.geo.enums.Cities';
|
|
15
|
+
*
|
|
16
|
+
* // Массив объектов
|
|
17
|
+
* const items = [
|
|
18
|
+
* { id: 1, label: 'London' },
|
|
19
|
+
* { id: 2, label: 'Paris' }
|
|
20
|
+
* ];
|
|
14
21
|
*/
|
|
15
22
|
items?: DataProviderItems;
|
|
16
23
|
/**
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
**/
|
|
8
8
|
export interface IMoneyFormatterProps {
|
|
9
9
|
/**
|
|
10
|
-
* Валюта @enum
|
|
10
|
+
* Валюта @enum {eur, rub, usd}
|
|
11
11
|
* @example rub
|
|
12
12
|
*/
|
|
13
13
|
currency?: string;
|
|
@@ -22,8 +22,8 @@ export interface IMoneyFormatterProps {
|
|
|
22
22
|
*/
|
|
23
23
|
precision?: number;
|
|
24
24
|
/**
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
* Значение для MoneyFormatter
|
|
26
|
+
*/
|
|
27
27
|
value?: any;
|
|
28
28
|
[key: string]: any;
|
|
29
29
|
}
|