@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.
Files changed (37) hide show
  1. package/docs-autogen-result.json +402 -66
  2. package/en.json +17 -1
  3. package/hooks/index.d.ts +5 -1
  4. package/hooks/index.js +9 -1
  5. package/hooks/useApplication.js +4 -0
  6. package/hooks/useDataProvider.d.ts +3 -2
  7. package/package.json +1 -1
  8. package/ui/content/Calendar/Calendar.d.ts +5 -0
  9. package/ui/content/Calendar/Calendar.js +7 -2
  10. package/ui/content/CalendarSystem/CalendarSystem.d.ts +56 -0
  11. package/ui/content/CalendarSystem/CalendarSystem.js +106 -0
  12. package/ui/content/CalendarSystem/enums/CalendarType.d.ts +6 -0
  13. package/ui/content/CalendarSystem/enums/CalendarType.js +38 -0
  14. package/ui/content/CalendarSystem/enums/DateControlType.d.ts +10 -0
  15. package/ui/content/CalendarSystem/enums/DateControlType.js +42 -0
  16. package/ui/content/CalendarSystem/helpers/addEventIfMatchDate.d.ts +3 -0
  17. package/ui/content/CalendarSystem/helpers/addEventIfMatchDate.js +21 -0
  18. package/ui/content/CalendarSystem/hooks/useCalendarControls.d.ts +8 -0
  19. package/ui/content/CalendarSystem/hooks/useCalendarControls.js +47 -0
  20. package/ui/content/CalendarSystem/hooks/useDisplayDate.d.ts +6 -0
  21. package/ui/content/CalendarSystem/hooks/useDisplayDate.js +27 -0
  22. package/ui/content/CalendarSystem/hooks/useMonthCalendar.d.ts +16 -0
  23. package/ui/content/CalendarSystem/hooks/useMonthCalendar.js +87 -0
  24. package/ui/content/CalendarSystem/hooks/useWeekCalendar.d.ts +15 -0
  25. package/ui/content/CalendarSystem/hooks/useWeekCalendar.js +86 -0
  26. package/ui/content/CalendarSystem/index.d.ts +2 -0
  27. package/ui/content/CalendarSystem/index.js +7 -0
  28. package/ui/content/CalendarSystem/utils/utils.d.ts +3 -0
  29. package/ui/content/CalendarSystem/utils/utils.js +29 -0
  30. package/ui/content/Icon/Icon.d.ts +1 -1
  31. package/ui/content/index.d.ts +2 -1
  32. package/ui/content/index.js +3 -1
  33. package/ui/form/CheckboxField/CheckboxField.d.ts +4 -0
  34. package/ui/form/CheckboxListField/CheckboxListField.d.ts +11 -2
  35. package/ui/form/CheckboxListField/CheckboxListField.js +4 -1
  36. package/ui/list/TreeTable/TreeTable.d.ts +4 -0
  37. 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,2 @@
1
+ import CalendarSystem from './CalendarSystem';
2
+ export default CalendarSystem;
@@ -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,3 @@
1
+ import { IDay } from '../CalendarSystem';
2
+ export declare const getWeekDaysFromDate: (date: Date) => IDay[];
3
+ export declare const isDateIsToday: (date: Date) => boolean;
@@ -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
@@ -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
- export { Avatar, AvatarGroup, Accordion, AccordionItem, Alert, Card, DropDown, Badge, Detail, DetailItem, Icon, Menu, CopyToClipboard, Chart, Slider, };
13
+ import CalendarSystem from './CalendarSystem';
14
+ export { Avatar, AvatarGroup, Accordion, AccordionItem, Alert, Card, DropDown, Badge, Detail, DetailItem, Icon, Menu, CopyToClipboard, Chart, Slider, CalendarSystem, };
@@ -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
- }, [props.input.onChange, selectedIds]);
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 })));