@steroidsjs/core 3.0.0-beta.84 → 3.0.0-beta.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/docs-autogen-result.json +402 -66
- package/en.json +17 -1
- package/hooks/index.d.ts +5 -1
- package/hooks/index.js +9 -1
- package/hooks/useApplication.js +4 -0
- package/hooks/useDataProvider.d.ts +3 -2
- package/package.json +1 -1
- package/ui/content/Calendar/Calendar.d.ts +5 -0
- package/ui/content/Calendar/Calendar.js +7 -2
- package/ui/content/CalendarSystem/CalendarSystem.d.ts +56 -0
- package/ui/content/CalendarSystem/CalendarSystem.js +106 -0
- package/ui/content/CalendarSystem/enums/CalendarType.d.ts +6 -0
- package/ui/content/CalendarSystem/enums/CalendarType.js +38 -0
- package/ui/content/CalendarSystem/enums/DateControlType.d.ts +10 -0
- package/ui/content/CalendarSystem/enums/DateControlType.js +42 -0
- package/ui/content/CalendarSystem/helpers/addEventIfMatchDate.d.ts +3 -0
- package/ui/content/CalendarSystem/helpers/addEventIfMatchDate.js +21 -0
- package/ui/content/CalendarSystem/hooks/useCalendarControls.d.ts +8 -0
- package/ui/content/CalendarSystem/hooks/useCalendarControls.js +47 -0
- package/ui/content/CalendarSystem/hooks/useDisplayDate.d.ts +6 -0
- package/ui/content/CalendarSystem/hooks/useDisplayDate.js +27 -0
- package/ui/content/CalendarSystem/hooks/useMonthCalendar.d.ts +16 -0
- package/ui/content/CalendarSystem/hooks/useMonthCalendar.js +87 -0
- package/ui/content/CalendarSystem/hooks/useWeekCalendar.d.ts +15 -0
- package/ui/content/CalendarSystem/hooks/useWeekCalendar.js +86 -0
- package/ui/content/CalendarSystem/index.d.ts +2 -0
- package/ui/content/CalendarSystem/index.js +7 -0
- package/ui/content/CalendarSystem/utils/utils.d.ts +3 -0
- package/ui/content/CalendarSystem/utils/utils.js +29 -0
- package/ui/content/Icon/Icon.d.ts +1 -1
- package/ui/content/index.d.ts +2 -1
- package/ui/content/index.js +3 -1
- package/ui/form/CheckboxField/CheckboxField.d.ts +4 -0
- package/ui/form/CheckboxListField/CheckboxListField.d.ts +11 -2
- package/ui/form/CheckboxListField/CheckboxListField.js +4 -1
- package/ui/list/TreeTable/TreeTable.d.ts +4 -0
- package/ui/list/TreeTable/TreeTable.js +4 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import DateControlEnum from '../enums/DateControlType';
|
|
2
|
+
declare const useWeekCalendar: (currentMonthDate: Date) => {
|
|
3
|
+
currentWeek: {
|
|
4
|
+
dayNumber: number;
|
|
5
|
+
date: Date;
|
|
6
|
+
outOfRange?: boolean;
|
|
7
|
+
isToday?: boolean;
|
|
8
|
+
formattedDisplay?: string;
|
|
9
|
+
}[];
|
|
10
|
+
weekControls: {
|
|
11
|
+
[key: string]: () => void | DateControlEnum;
|
|
12
|
+
};
|
|
13
|
+
forceUpdateWeekOnMonthChange: (newMonthDate: Date) => void;
|
|
14
|
+
};
|
|
15
|
+
export default useWeekCalendar;
|
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
exports.__esModule = true;
|
|
17
|
+
var react_1 = __importDefault(require("react"));
|
|
18
|
+
var calendar_1 = require("../../../../utils/calendar");
|
|
19
|
+
var DateControlType_1 = __importDefault(require("../enums/DateControlType"));
|
|
20
|
+
var useCalendarControls_1 = require("./useCalendarControls");
|
|
21
|
+
var utils_1 = require("../utils/utils");
|
|
22
|
+
var WEEK_DAY_FORMAT = 'dd, D MMM';
|
|
23
|
+
var ONE_DAY = 1;
|
|
24
|
+
var getFormattedWeekFromDate = function (fromDate) {
|
|
25
|
+
if (fromDate === void 0) { fromDate = null; }
|
|
26
|
+
var currentWeek = (0, utils_1.getWeekDaysFromDate)(fromDate || new Date());
|
|
27
|
+
return currentWeek.map(function (dayOfWeek) {
|
|
28
|
+
var copyOfDayWeek = __assign({}, dayOfWeek);
|
|
29
|
+
copyOfDayWeek.formattedDisplay = (0, calendar_1.convertDate)(dayOfWeek.date, null, WEEK_DAY_FORMAT);
|
|
30
|
+
// eslint-disable-next-line no-unused-expressions
|
|
31
|
+
(0, utils_1.isDateIsToday)(copyOfDayWeek.date) ? copyOfDayWeek.isToday = true : copyOfDayWeek.isToday = false;
|
|
32
|
+
return copyOfDayWeek;
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
var useWeekCalendar = function (currentMonthDate) {
|
|
36
|
+
var _a;
|
|
37
|
+
var _b = react_1["default"].useState(getFormattedWeekFromDate()), currentWeek = _b[0], setCurrentWeek = _b[1];
|
|
38
|
+
var forceUpdateWeekOnMonthChange = react_1["default"].useCallback(function (newMonthDate) {
|
|
39
|
+
setCurrentWeek(getFormattedWeekFromDate(newMonthDate));
|
|
40
|
+
}, []);
|
|
41
|
+
var changeMonthAfterWeekChanged = react_1["default"].useCallback(function (formattedWeek) {
|
|
42
|
+
var firstDayOfWeek = formattedWeek[0].date;
|
|
43
|
+
var currentMonthNumber = currentMonthDate.getMonth();
|
|
44
|
+
var isWeekOutOfMonth = formattedWeek.every(function (dayOfWeek) { return dayOfWeek.date.getMonth() !== currentMonthNumber; });
|
|
45
|
+
if (!isWeekOutOfMonth) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (currentMonthNumber - firstDayOfWeek.getMonth() === 1) {
|
|
49
|
+
var lastDayOfWeekInNewMonth = formattedWeek[formattedWeek.length - 1].date;
|
|
50
|
+
var prevMonthControl = (0, useCalendarControls_1.getSourceCalendarControl)(DateControlType_1["default"].PREV_ONE);
|
|
51
|
+
prevMonthControl.click();
|
|
52
|
+
forceUpdateWeekOnMonthChange(lastDayOfWeekInNewMonth);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
var firstDayOfWeekInNewMonth = formattedWeek[0].date;
|
|
56
|
+
var nextMonthControl = (0, useCalendarControls_1.getSourceCalendarControl)(DateControlType_1["default"].NEXT_ONE);
|
|
57
|
+
nextMonthControl.click();
|
|
58
|
+
forceUpdateWeekOnMonthChange(firstDayOfWeekInNewMonth);
|
|
59
|
+
}
|
|
60
|
+
}, [currentMonthDate, forceUpdateWeekOnMonthChange]);
|
|
61
|
+
var setNextWeek = react_1["default"].useCallback(function () {
|
|
62
|
+
var lastDayOfWeek = currentWeek[currentWeek.length - 1].date;
|
|
63
|
+
lastDayOfWeek.setDate(lastDayOfWeek.getDate() + ONE_DAY);
|
|
64
|
+
var formattedNextWeek = getFormattedWeekFromDate(lastDayOfWeek);
|
|
65
|
+
setCurrentWeek(formattedNextWeek);
|
|
66
|
+
changeMonthAfterWeekChanged(formattedNextWeek);
|
|
67
|
+
}, [currentWeek, changeMonthAfterWeekChanged]);
|
|
68
|
+
var setPrevWeek = react_1["default"].useCallback(function () {
|
|
69
|
+
var firstDayOfWeek = currentWeek[0].date;
|
|
70
|
+
firstDayOfWeek.setDate(firstDayOfWeek.getDate() - ONE_DAY);
|
|
71
|
+
var formattedPrevWeek = getFormattedWeekFromDate(firstDayOfWeek);
|
|
72
|
+
setCurrentWeek(formattedPrevWeek);
|
|
73
|
+
changeMonthAfterWeekChanged(formattedPrevWeek);
|
|
74
|
+
}, [currentWeek, changeMonthAfterWeekChanged]);
|
|
75
|
+
return {
|
|
76
|
+
currentWeek: currentWeek,
|
|
77
|
+
weekControls: (_a = {},
|
|
78
|
+
_a[DateControlType_1["default"].NEXT_DOUBLE] = DateControlType_1["default"].NEXT_ONE,
|
|
79
|
+
_a[DateControlType_1["default"].NEXT_ONE] = setNextWeek,
|
|
80
|
+
_a[DateControlType_1["default"].PREV_ONE] = setPrevWeek,
|
|
81
|
+
_a[DateControlType_1["default"].PREV_DOUBLE] = DateControlType_1["default"].PREV_ONE,
|
|
82
|
+
_a),
|
|
83
|
+
forceUpdateWeekOnMonthChange: forceUpdateWeekOnMonthChange
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
exports["default"] = useWeekCalendar;
|
|
@@ -0,0 +1,7 @@
|
|
|
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
|
+
var CalendarSystem_1 = __importDefault(require("./CalendarSystem"));
|
|
7
|
+
exports["default"] = CalendarSystem_1["default"];
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.isDateIsToday = exports.getWeekDaysFromDate = void 0;
|
|
7
|
+
/* eslint-disable no-plusplus */
|
|
8
|
+
var dayjs_1 = __importDefault(require("dayjs"));
|
|
9
|
+
var SIX_DAYS_DIFF = 6;
|
|
10
|
+
var MAX_DAYS_DIFF_IN_WEEK = 7;
|
|
11
|
+
var getWeekDaysFromDate = function (date) {
|
|
12
|
+
var weekDays = [];
|
|
13
|
+
var firstDayOfWeek = new Date(date);
|
|
14
|
+
var currentDay = date.getDay();
|
|
15
|
+
var diff = currentDay === 0 ? SIX_DAYS_DIFF : currentDay - 1; // Разница между текущим днем и понедельником
|
|
16
|
+
firstDayOfWeek.setDate(firstDayOfWeek.getDate() - diff); // Устанавливаем первый день недели (понедельник)
|
|
17
|
+
for (var i = 0; i < MAX_DAYS_DIFF_IN_WEEK; i++) {
|
|
18
|
+
var currentDate = new Date(firstDayOfWeek);
|
|
19
|
+
currentDate.setDate(currentDate.getDate() + i);
|
|
20
|
+
weekDays.push({
|
|
21
|
+
dayNumber: currentDate.getDate(),
|
|
22
|
+
date: new Date(currentDate)
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return weekDays;
|
|
26
|
+
};
|
|
27
|
+
exports.getWeekDaysFromDate = getWeekDaysFromDate;
|
|
28
|
+
var isDateIsToday = function (date) { return (0, dayjs_1["default"])(date).isToday(); };
|
|
29
|
+
exports.isDateIsToday = isDateIsToday;
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*
|
|
23
23
|
* Компонент, представляющий иконку. Иконки могут быть импортированы при старте приложения.
|
|
24
24
|
*/
|
|
25
|
-
export interface IIconProps extends IUiComponent {
|
|
25
|
+
export interface IIconProps extends Omit<IUiComponent, 'className' | 'style'>, Partial<HTMLElement> {
|
|
26
26
|
/**
|
|
27
27
|
* Имя иконки (латиницей). Импорт иконок происходит на старте приложения.
|
|
28
28
|
* @example create
|
package/ui/content/index.d.ts
CHANGED
|
@@ -10,4 +10,5 @@ import Menu from './Menu';
|
|
|
10
10
|
import CopyToClipboard from './CopyToClipboard';
|
|
11
11
|
import Chart from './Chart';
|
|
12
12
|
import Slider from './Slider';
|
|
13
|
-
|
|
13
|
+
import CalendarSystem from './CalendarSystem';
|
|
14
|
+
export { Avatar, AvatarGroup, Accordion, AccordionItem, Alert, Card, DropDown, Badge, Detail, DetailItem, Icon, Menu, CopyToClipboard, Chart, Slider, CalendarSystem, };
|
package/ui/content/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.Slider = exports.Chart = exports.CopyToClipboard = exports.Menu = exports.Icon = exports.DetailItem = exports.Detail = exports.Badge = exports.DropDown = exports.Card = exports.Alert = exports.AccordionItem = exports.Accordion = exports.AvatarGroup = exports.Avatar = void 0;
|
|
6
|
+
exports.CalendarSystem = exports.Slider = exports.Chart = exports.CopyToClipboard = exports.Menu = exports.Icon = exports.DetailItem = exports.Detail = exports.Badge = exports.DropDown = exports.Card = exports.Alert = exports.AccordionItem = exports.Accordion = exports.AvatarGroup = exports.Avatar = void 0;
|
|
7
7
|
var Avatar_1 = require("./Avatar");
|
|
8
8
|
exports.Avatar = Avatar_1.Avatar;
|
|
9
9
|
exports.AvatarGroup = Avatar_1.AvatarGroup;
|
|
@@ -31,3 +31,5 @@ var Chart_1 = __importDefault(require("./Chart"));
|
|
|
31
31
|
exports.Chart = Chart_1["default"];
|
|
32
32
|
var Slider_1 = __importDefault(require("./Slider"));
|
|
33
33
|
exports.Slider = Slider_1["default"];
|
|
34
|
+
var CalendarSystem_1 = __importDefault(require("./CalendarSystem"));
|
|
35
|
+
exports.CalendarSystem = CalendarSystem_1["default"];
|
|
@@ -16,6 +16,10 @@ export interface ICheckboxFieldProps extends IFieldWrapperInputProps, IUiCompone
|
|
|
16
16
|
* @example true
|
|
17
17
|
*/
|
|
18
18
|
checked?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Пользовательский цвет для чекбокса
|
|
21
|
+
*/
|
|
22
|
+
color?: string;
|
|
19
23
|
[key: string]: any;
|
|
20
24
|
}
|
|
21
25
|
export interface ICheckboxFieldViewProps extends ICheckboxFieldProps, IFieldWrapperOutputProps {
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../../../ui/form/Field/fieldWrapper';
|
|
3
|
-
import { IDataProviderConfig } from '../../../hooks/useDataProvider';
|
|
3
|
+
import { DataProviderItem, IDataProviderConfig } from '../../../hooks/useDataProvider';
|
|
4
4
|
import { IDataSelectConfig } from '../../../hooks/useDataSelect';
|
|
5
5
|
import { ICheckboxFieldViewProps } from '../CheckboxField/CheckboxField';
|
|
6
|
+
type CheckboxFieldListItem = DataProviderItem & {
|
|
7
|
+
color?: string;
|
|
8
|
+
};
|
|
6
9
|
/**
|
|
7
10
|
* CheckboxListField
|
|
8
11
|
*
|
|
9
12
|
* Список с чекбоксами. Используется в формах для выбора нескольких значений.
|
|
10
13
|
*/
|
|
11
|
-
export interface ICheckboxListFieldProps extends IFieldWrapperInputProps, IDataProviderConfig, Omit<IDataSelectConfig, 'items'>, IUiComponent {
|
|
14
|
+
export interface ICheckboxListFieldProps extends IFieldWrapperInputProps, Omit<IDataProviderConfig, 'items'>, Omit<IDataSelectConfig, 'items'>, IUiComponent {
|
|
12
15
|
/**
|
|
13
16
|
* Свойства для элемента input
|
|
14
17
|
* @example {onKeyDown: ...}
|
|
@@ -18,6 +21,11 @@ export interface ICheckboxListFieldProps extends IFieldWrapperInputProps, IDataP
|
|
|
18
21
|
* Ориентация списка
|
|
19
22
|
*/
|
|
20
23
|
orientation?: Orientation;
|
|
24
|
+
/**
|
|
25
|
+
* Коллекция элементов
|
|
26
|
+
* @example [{id: 1, label: 'Krasnoyarsk', color: 'red'}, {id: 2, label: 'Moscow', color: 'purple'}]
|
|
27
|
+
*/
|
|
28
|
+
items: CheckboxFieldListItem[];
|
|
21
29
|
[key: string]: any;
|
|
22
30
|
}
|
|
23
31
|
export interface ICheckboxListFieldViewProps extends IFieldWrapperOutputProps {
|
|
@@ -32,6 +40,7 @@ export interface ICheckboxListFieldViewProps extends IFieldWrapperOutputProps {
|
|
|
32
40
|
label?: string;
|
|
33
41
|
isSelected: boolean;
|
|
34
42
|
isHovered: boolean;
|
|
43
|
+
color?: string;
|
|
35
44
|
}[];
|
|
36
45
|
selectedIds: (PrimaryKey | any)[];
|
|
37
46
|
onItemSelect: (id: PrimaryKey | any) => void;
|
|
@@ -64,7 +64,10 @@ function CheckboxListField(props) {
|
|
|
64
64
|
// Sync with form
|
|
65
65
|
(0, react_1.useEffect)(function () {
|
|
66
66
|
props.input.onChange.call(null, selectedIds);
|
|
67
|
-
|
|
67
|
+
if (props.onChange) {
|
|
68
|
+
props.onChange(selectedIds);
|
|
69
|
+
}
|
|
70
|
+
}, [props, props.input.onChange, selectedIds]);
|
|
68
71
|
var onReset = (0, react_1.useCallback)(function () {
|
|
69
72
|
setSelectedIds([]);
|
|
70
73
|
}, [setSelectedIds]);
|
|
@@ -32,4 +32,8 @@ export interface ITreeTableProps extends Omit<IGridProps, 'items'> {
|
|
|
32
32
|
items?: ITreeTableItem[];
|
|
33
33
|
}
|
|
34
34
|
export declare const addTreeColumnFieldsToFirstColumn: (columns: IGridColumn[]) => IGridColumn[];
|
|
35
|
+
/**
|
|
36
|
+
* TreeTable
|
|
37
|
+
* Компонент для представления данных коллекции в виде иерархической структуры.
|
|
38
|
+
*/
|
|
35
39
|
export default function TreeTable(props: ITreeTableProps): JSX.Element;
|
|
@@ -62,6 +62,10 @@ var addTreeColumnFieldsToFirstColumn = function (columns) {
|
|
|
62
62
|
return newColumns;
|
|
63
63
|
};
|
|
64
64
|
exports.addTreeColumnFieldsToFirstColumn = addTreeColumnFieldsToFirstColumn;
|
|
65
|
+
/**
|
|
66
|
+
* TreeTable
|
|
67
|
+
* Компонент для представления данных коллекции в виде иерархической структуры.
|
|
68
|
+
*/
|
|
65
69
|
function TreeTable(props) {
|
|
66
70
|
var columns = (0, react_1.useMemo)(function () { return (0, exports.addTreeColumnFieldsToFirstColumn)(props.columns); }, [props.columns]);
|
|
67
71
|
return (React.createElement(Grid_1["default"], __assign({}, props, { columns: columns, items: props.items, itemsIndexing: false, hasTreeItems: true })));
|