@steroidsjs/core 3.0.1 → 3.0.3

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 (85) hide show
  1. package/docs-autogen-result.json +97 -10
  2. package/en.json +6 -0
  3. package/hooks/useApplication.d.ts +1 -1
  4. package/package.json +1 -1
  5. package/ui/content/DropDown/DropDown.js +1 -3
  6. package/ui/content/Kanban/Kanban.d.ts +7 -1
  7. package/ui/content/Kanban/Kanban.js +2 -1
  8. package/ui/content/Kanban/hooks/useKanban.d.ts +6 -0
  9. package/ui/content/Kanban/hooks/useKanban.js +2 -1
  10. package/ui/content/Slider/Slider.d.ts +2 -1
  11. package/ui/content/Slider/Slider.js +19 -3
  12. package/ui/form/AutoCompleteField/AutoCompleteField.d.ts +1 -2
  13. package/ui/form/AutoCompleteField/AutoCompleteField.js +24 -11
  14. package/ui/form/Button/Button.d.ts +1 -1
  15. package/ui/form/Button/Button.js +29 -5
  16. package/ui/form/CheckboxField/CheckboxField.d.ts +1 -1
  17. package/ui/form/CheckboxField/CheckboxField.js +13 -4
  18. package/ui/form/CheckboxListField/CheckboxListField.d.ts +2 -1
  19. package/ui/form/CheckboxListField/CheckboxListField.js +13 -4
  20. package/ui/form/CheckboxTreeField/CheckboxTreeField.d.ts +1 -1
  21. package/ui/form/CheckboxTreeField/CheckboxTreeField.js +9 -1
  22. package/ui/form/DateField/DateField.js +3 -1
  23. package/ui/form/DateRangeField/DateRangeField.js +18 -13
  24. package/ui/form/DateTimeField/DateTimeField.d.ts +1 -1
  25. package/ui/form/DateTimeField/DateTimeField.js +19 -1
  26. package/ui/form/DateTimeRangeField/DateTimeRangeField.js +20 -1
  27. package/ui/form/DropDownField/DropDownField.js +34 -2
  28. package/ui/form/EmailField/EmailField.js +53 -3
  29. package/ui/form/Field/Field.js +3 -3
  30. package/ui/form/FieldLayout/FieldLayout.js +12 -12
  31. package/ui/form/FieldList/FieldList.d.ts +1 -1
  32. package/ui/form/FieldList/FieldList.js +7 -6
  33. package/ui/form/FieldSet/FieldSet.js +6 -1
  34. package/ui/form/FileField/FileField.js +13 -3
  35. package/ui/form/Form/Form.d.ts +1 -1
  36. package/ui/form/Form/Form.js +12 -14
  37. package/ui/form/HtmlField/HtmlField.d.ts +20 -1
  38. package/ui/form/HtmlField/HtmlField.js +11 -12
  39. package/ui/form/ImageField/ImageField.js +12 -8
  40. package/ui/form/InputField/InputField.js +24 -3
  41. package/ui/form/MaskField/MaskField.js +1 -13
  42. package/ui/form/NavField/NavField.js +12 -2
  43. package/ui/form/NumberField/NumberField.js +16 -3
  44. package/ui/form/PasswordField/PasswordField.js +15 -2
  45. package/ui/form/RadioField/RadioField.d.ts +1 -1
  46. package/ui/form/RadioField/RadioField.js +15 -4
  47. package/ui/form/RadioListField/RadioListField.d.ts +2 -1
  48. package/ui/form/RadioListField/RadioListField.js +14 -4
  49. package/ui/form/RateField/RateField.js +11 -1
  50. package/ui/form/ReCaptchaField/ReCaptchaField.js +6 -12
  51. package/ui/form/SliderField/SliderField.d.ts +1 -1
  52. package/ui/form/SliderField/SliderField.js +5 -3
  53. package/ui/form/SwitcherField/SwitcherField.d.ts +1 -1
  54. package/ui/form/SwitcherField/SwitcherField.js +14 -4
  55. package/ui/form/TextField/TextField.js +2 -1
  56. package/ui/form/TimeField/TimeField.js +3 -1
  57. package/ui/form/TimeRangeField/TimeRangeField.js +4 -1
  58. package/ui/layout/Notifications/Notifications.d.ts +1 -1
  59. package/ui/layout/Notifications/Notifications.js +7 -3
  60. package/ui/layout/ProgressBar/ProgressBar.d.ts +1 -1
  61. package/ui/layout/ProgressBar/ProgressBar.js +22 -26
  62. package/ui/layout/Sidebar/Sidebar.js +16 -12
  63. package/ui/list/ControlsColumn/ControlsColumn.js +7 -1
  64. package/ui/list/Grid/Grid.d.ts +1 -1
  65. package/ui/list/Grid/Grid.js +33 -8
  66. package/ui/list/LayoutNames/LayoutNames.d.ts +1 -1
  67. package/ui/list/LayoutNames/LayoutNames.js +2 -3
  68. package/ui/list/List/List.js +19 -4
  69. package/ui/list/Pagination/Pagination.d.ts +1 -1
  70. package/ui/list/Pagination/Pagination.js +22 -6
  71. package/ui/list/PaginationSize/PaginationSize.d.ts +1 -1
  72. package/ui/list/PaginationSize/PaginationSize.js +10 -4
  73. package/ui/modal/Modal/Modal.d.ts +2 -2
  74. package/ui/modal/Modal/Modal.js +16 -3
  75. package/ui/modal/ModalPortal/ModalPortal.js +2 -3
  76. package/ui/nav/Breadcrumbs/Breadcrumbs.js +10 -12
  77. package/ui/nav/ButtonGroup/ButtonGroup.js +19 -38
  78. package/ui/nav/Controls/Controls.js +6 -1
  79. package/ui/nav/Nav/Nav.d.ts +9 -1
  80. package/ui/nav/Nav/Nav.js +16 -7
  81. package/ui/nav/Router/Router.d.ts +2 -2
  82. package/ui/nav/Router/Router.js +17 -16
  83. package/ui/nav/Router/helpers.d.ts +1 -1
  84. package/ui/nav/Router/helpers.js +19 -16
  85. package/ui/nav/Tree/Tree.js +10 -12
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { ILinkProps } from '../../nav/Link/Link';
3
3
  import { IListConfig, ListControlPosition } from '../../../hooks/useList';
4
4
  import { IControlItem } from '../../nav/Controls/Controls';
@@ -37,10 +37,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
38
  };
39
39
  exports.__esModule = true;
40
- var React = __importStar(require("react"));
40
+ var react_1 = __importStar(require("react"));
41
41
  var upperFirst_1 = __importDefault(require("lodash-es/upperFirst"));
42
42
  var isString_1 = __importDefault(require("lodash-es/isString"));
43
- var react_1 = require("react");
44
43
  var hooks_1 = require("../../../hooks");
45
44
  var useList_1 = __importDefault(require("../../../hooks/useList"));
46
45
  var ControlsColumn_1 = __importDefault(require("../ControlsColumn"));
@@ -74,7 +73,7 @@ function Grid(props) {
74
73
  var renderLabel = (0, react_1.useCallback)(function (column) {
75
74
  if (column.headerView) {
76
75
  var HeaderView = column.headerView;
77
- return (React.createElement(HeaderView, __assign({}, column, column.headerProps, { listId: props.listId })));
76
+ return (react_1["default"].createElement(HeaderView, __assign({}, column, column.headerProps, { listId: props.listId })));
78
77
  }
79
78
  if (column.label || column.label === '') {
80
79
  return column.label;
@@ -90,13 +89,13 @@ function Grid(props) {
90
89
  if (column.valueView) {
91
90
  var isValueViewString = typeof column.valueView === 'string';
92
91
  var ValueView = isValueViewString ? components.ui.getView("list.".concat(column.valueView)) : column.valueView;
93
- var viewProps = __assign(__assign(__assign({}, column), column.valueProps), { listId: props.listId, primaryKey: props.primaryKey, item: item, size: props.size });
92
+ var viewProps_1 = __assign(__assign(__assign({}, column), column.valueProps), { listId: props.listId, primaryKey: props.primaryKey, item: item, size: props.size });
94
93
  if (isValueViewString) {
95
- return components.ui.renderView(ValueView, viewProps);
94
+ return components.ui.renderView(ValueView, viewProps_1);
96
95
  }
97
- return (React.createElement(ValueView, __assign({}, viewProps)));
96
+ return (react_1["default"].createElement(ValueView, __assign({}, viewProps_1)));
98
97
  }
99
- return (React.createElement(Format_1["default"], __assign({ item: item, model: props.model }, column, (column.formatter || {}))));
98
+ return (react_1["default"].createElement(Format_1["default"], __assign({ item: item, model: props.model }, column, (column.formatter || {}))));
100
99
  }, [props.listId, props.model, props.primaryKey]);
101
100
  // Columns
102
101
  var columns = (0, react_1.useMemo)(function () { return []
@@ -119,7 +118,33 @@ function Grid(props) {
119
118
  .map(function (column) { return ((0, isString_1["default"])(column) ? { attribute: column } : column); })
120
119
  .filter(function (column) { return column.visible !== false; })
121
120
  .map(function (column) { return (__assign(__assign({}, column), { label: renderLabel(column) })); }); }, [props.columns, props.controls, props.itemsIndexing, renderLabel]);
122
- return components.ui.renderView(props.view || 'list.GridView', __assign(__assign({}, props), { list: list, paginationPosition: paginationPosition, paginationSizePosition: paginationSizePosition, layoutNamesPosition: layoutNamesPosition, renderList: renderList, renderEmpty: renderEmpty, renderPagination: renderPagination, renderPaginationSize: renderPaginationSize, renderLayoutNames: renderLayoutNames, renderSearchForm: renderSearchForm, renderValue: renderValue, columns: columns, onFetch: onFetch, onSort: onSort, items: (list === null || list === void 0 ? void 0 : list.items) || [] }));
121
+ var viewProps = (0, react_1.useMemo)(function () { return ({
122
+ list: list,
123
+ paginationPosition: paginationPosition,
124
+ paginationSizePosition: paginationSizePosition,
125
+ layoutNamesPosition: layoutNamesPosition,
126
+ renderList: renderList,
127
+ renderEmpty: renderEmpty,
128
+ renderPagination: renderPagination,
129
+ renderPaginationSize: renderPaginationSize,
130
+ renderLayoutNames: renderLayoutNames,
131
+ renderSearchForm: renderSearchForm,
132
+ renderValue: renderValue,
133
+ columns: columns,
134
+ onFetch: onFetch,
135
+ onSort: onSort,
136
+ items: (list === null || list === void 0 ? void 0 : list.items) || [],
137
+ searchForm: props.searchForm,
138
+ listId: props.listId,
139
+ isLoading: props.isLoading,
140
+ size: props.size,
141
+ hasAlternatingColors: props.hasAlternatingColors,
142
+ className: props.className,
143
+ primaryKey: props.primaryKey
144
+ }); }, [columns, layoutNamesPosition, list, onFetch, onSort, paginationPosition, paginationSizePosition, props.className,
145
+ props.hasAlternatingColors, props.isLoading, props.listId, props.primaryKey, props.searchForm, props.size, renderEmpty,
146
+ renderLayoutNames, renderList, renderPagination, renderPaginationSize, renderSearchForm, renderValue]);
147
+ return components.ui.renderView(props.view || 'list.GridView', viewProps);
123
148
  }
124
149
  exports["default"] = Grid;
125
150
  Grid.defaultProps = {
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { INavItem } from '../../nav/Nav/Nav';
3
3
  import { ListControlPosition } from '../../../hooks/useList';
4
4
  import { IList } from '../../../actions/list';
@@ -38,9 +38,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  };
39
39
  exports.__esModule = true;
40
40
  exports.normalizeLayoutNamesProps = void 0;
41
- var React = __importStar(require("react"));
41
+ var react_1 = __importStar(require("react"));
42
42
  var get_1 = __importDefault(require("lodash-es/get"));
43
- var react_1 = require("react");
44
43
  var hooks_1 = require("../../../hooks");
45
44
  var list_1 = require("../../../actions/list");
46
45
  var useDispatch_1 = __importDefault(require("../../../hooks/useDispatch"));
@@ -70,4 +69,4 @@ LayoutNames.defaultProps = {
70
69
  };
71
70
  var normalizeLayoutNamesProps = function (props) { return (__assign(__assign(__assign({}, LayoutNames.defaultProps), { enable: !!props, defaultValue: (0, get_1["default"])(props, 'items.0.id') || LayoutNames.defaultProps.defaultValue }), (typeof props === 'boolean' ? { enable: props } : props))); };
72
71
  exports.normalizeLayoutNamesProps = normalizeLayoutNamesProps;
73
- exports["default"] = React.memo(LayoutNames);
72
+ exports["default"] = react_1["default"].memo(LayoutNames);
@@ -38,6 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  };
39
39
  exports.__esModule = true;
40
40
  var React = __importStar(require("react"));
41
+ var react_1 = require("react");
41
42
  var hooks_1 = require("../../../hooks");
42
43
  var useList_1 = __importDefault(require("../../../hooks/useList"));
43
44
  function List(props) {
@@ -69,9 +70,23 @@ function List(props) {
69
70
  }), list = _a.list, paginationPosition = _a.paginationPosition, paginationSizePosition = _a.paginationSizePosition, layoutNamesPosition = _a.layoutNamesPosition, renderList = _a.renderList, renderEmpty = _a.renderEmpty, renderPagination = _a.renderPagination, renderPaginationSize = _a.renderPaginationSize, renderLayoutNames = _a.renderLayoutNames, renderSearchForm = _a.renderSearchForm;
70
71
  var ItemView = props.itemView || components.ui.getView('list.ListItemView');
71
72
  var content = ((list === null || list === void 0 ? void 0 : list.items) || []).map(function (item, index) { return (React.createElement(ItemView, __assign({}, props.itemProps, { key: item[props.primaryKey] || index, primaryKey: props.primaryKey, item: item, index: index, layoutSelected: list.layoutName }))); });
72
- return components.ui.renderView(props.view || 'list.ListView', __assign(__assign({}, props), { list: list, paginationPosition: paginationPosition, paginationSizePosition: paginationSizePosition, layoutNamesPosition: layoutNamesPosition, renderList: renderList, renderEmpty: renderEmpty, renderPagination: renderPagination, renderPaginationSize: renderPaginationSize, renderLayoutNames: renderLayoutNames, renderSearchForm: renderSearchForm,
73
- //onFetch,
74
- //onSort,
75
- content: content }));
73
+ var viewProps = (0, react_1.useMemo)(function () { return ({
74
+ list: list,
75
+ paginationPosition: paginationPosition,
76
+ paginationSizePosition: paginationSizePosition,
77
+ layoutNamesPosition: layoutNamesPosition,
78
+ renderList: renderList,
79
+ renderEmpty: renderEmpty,
80
+ renderPagination: renderPagination,
81
+ renderPaginationSize: renderPaginationSize,
82
+ renderLayoutNames: renderLayoutNames,
83
+ renderSearchForm: renderSearchForm,
84
+ content: content,
85
+ isLoading: props.isLoading,
86
+ className: props.className,
87
+ contentClassName: props.contentClassName
88
+ }); }, [content, layoutNamesPosition, list, paginationPosition, paginationSizePosition, props.className, props.contentClassName,
89
+ props.isLoading, renderEmpty, renderLayoutNames, renderList, renderPagination, renderPaginationSize, renderSearchForm]);
90
+ return components.ui.renderView(props.view || 'list.ListView', viewProps);
76
91
  }
77
92
  exports["default"] = List;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { IButtonProps } from '../../form/Button/Button';
3
3
  /**
4
4
  * Pagination
@@ -39,8 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  exports.__esModule = true;
40
40
  exports.normalizePaginationProps = exports.generatePages = void 0;
41
41
  var get_1 = __importDefault(require("lodash-es/get"));
42
- var react_1 = require("react");
43
- var React = __importStar(require("react"));
42
+ var react_1 = __importStar(require("react"));
44
43
  var hooks_1 = require("../../../hooks");
45
44
  var useForm_1 = __importDefault(require("../../../hooks/useForm"));
46
45
  var form_1 = require("../../../actions/form");
@@ -79,8 +78,8 @@ function Pagination(props) {
79
78
  });
80
79
  }) || initialValues, page = _e.page, pageSize = _e.pageSize;
81
80
  var totalPages = Math.ceil((((_c = props.list) === null || _c === void 0 ? void 0 : _c.total) || 0) / (pageSize || 1));
82
- var isFirstPage = React.useMemo(function () { return page === FIRST_PAGE; }, [page]);
83
- var isLastPage = React.useMemo(function () { return page === totalPages; }, [page, totalPages]);
81
+ var isFirstPage = react_1["default"].useMemo(function () { return page === FIRST_PAGE; }, [page]);
82
+ var isLastPage = react_1["default"].useMemo(function () { return page === totalPages; }, [page, totalPages]);
84
83
  var pages = (0, react_1.useMemo)(function () { return (0, exports.generatePages)(page, totalPages, props.aroundCount)
85
84
  .map(function (pageItem, index, pagesArray) {
86
85
  // Номер страницы для '...' кнопки (выбирает страницу между двумя соседними пронумерованными)
@@ -111,6 +110,23 @@ function Pagination(props) {
111
110
  var onSelectFirst = (0, react_1.useCallback)(function () {
112
111
  onSelect(FIRST_PAGE);
113
112
  }, [onSelect]);
113
+ var viewProps = (0, react_1.useMemo)(function () { return ({
114
+ totalPages: totalPages,
115
+ pages: pages,
116
+ onSelect: onSelect,
117
+ onSelectNext: onSelectNext,
118
+ onSelectPrev: onSelectPrev,
119
+ onSelectLast: onSelectLast,
120
+ onSelectFirst: onSelectFirst,
121
+ isFirstPage: isFirstPage,
122
+ isLastPage: isLastPage,
123
+ size: props.size,
124
+ className: props.className,
125
+ showEdgeSteps: props.showEdgeSteps,
126
+ showSteps: props.showSteps,
127
+ buttonProps: props.buttonProps
128
+ }); }, [isFirstPage, isLastPage, onSelect, onSelectFirst, onSelectLast, onSelectNext, onSelectPrev, pages, props.buttonProps,
129
+ props.className, props.showEdgeSteps, props.showSteps, props.size, totalPages]);
114
130
  if (!props.list || !page || !pageSize || props.list.total <= pageSize) {
115
131
  return null;
116
132
  }
@@ -119,7 +135,7 @@ function Pagination(props) {
119
135
  return null;
120
136
  }
121
137
  var defaultView = (props.loadMore ? 'list.PaginationMoreView' : 'list.PaginationButtonView');
122
- return components.ui.renderView(props.view || defaultView, __assign(__assign({}, props), { totalPages: totalPages, pages: pages, onSelect: onSelect, onSelectNext: onSelectNext, onSelectPrev: onSelectPrev, onSelectLast: onSelectLast, onSelectFirst: onSelectFirst, isFirstPage: isFirstPage, isLastPage: isLastPage }));
138
+ return components.ui.renderView(props.view || defaultView, viewProps);
123
139
  }
124
140
  Pagination.defaultProps = {
125
141
  enable: true,
@@ -133,4 +149,4 @@ Pagination.defaultProps = {
133
149
  };
134
150
  var normalizePaginationProps = function (props) { return (__assign(__assign({}, Pagination.defaultProps), (typeof props === 'boolean' ? { enable: props } : props))); };
135
151
  exports.normalizePaginationProps = normalizePaginationProps;
136
- exports["default"] = React.memo(Pagination);
152
+ exports["default"] = react_1["default"].memo(Pagination);
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { IButtonProps } from '../../form/Button/Button';
3
3
  import { ListControlPosition } from '../../../hooks/useList';
4
4
  /**
@@ -38,9 +38,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  };
39
39
  exports.__esModule = true;
40
40
  exports.normalizePaginationSizeProps = void 0;
41
- var react_1 = require("react");
41
+ var react_1 = __importStar(require("react"));
42
42
  var get_1 = __importDefault(require("lodash-es/get"));
43
- var React = __importStar(require("react"));
44
43
  var hooks_1 = require("../../../hooks");
45
44
  var useForm_1 = __importDefault(require("../../../hooks/useForm"));
46
45
  var form_1 = require("../../../actions/form");
@@ -60,10 +59,17 @@ function PaginationSize(props) {
60
59
  props.onChange.call(null, newPage);
61
60
  }
62
61
  }, [formDispatch, formId, props.attribute, props.onChange]);
62
+ var viewProps = (0, react_1.useMemo)(function () { return ({
63
+ items: items,
64
+ onSelect: onSelect,
65
+ className: props.className,
66
+ defaultValue: props.defaultValue,
67
+ buttonProps: props.buttonProps
68
+ }); }, [items, onSelect, props.buttonProps, props.className, props.defaultValue]);
63
69
  if (!((_b = (_a = props.list) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.length)) {
64
70
  return null;
65
71
  }
66
- return components.ui.renderView(props.view || 'list.PaginationSizeView', __assign(__assign({}, props), { items: items, onSelect: onSelect }));
72
+ return components.ui.renderView(props.view || 'list.PaginationSizeView', viewProps);
67
73
  }
68
74
  PaginationSize.defaultProps = {
69
75
  enable: false,
@@ -77,4 +83,4 @@ PaginationSize.defaultProps = {
77
83
  };
78
84
  var normalizePaginationSizeProps = function (props) { return (__assign(__assign(__assign({}, PaginationSize.defaultProps), { enable: !!props, defaultValue: (0, get_1["default"])(props, 'sizes.0') || PaginationSize.defaultProps.defaultValue }), (typeof props === 'boolean' ? { enable: props } : props))); };
79
85
  exports.normalizePaginationSizeProps = normalizePaginationSizeProps;
80
- exports["default"] = React.memo(PaginationSize);
86
+ exports["default"] = react_1["default"].memo(PaginationSize);
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { ComponentProps } from 'react';
2
2
  import { IButtonProps } from '../../form/Button/Button';
3
3
  /**
4
4
  * Modal
@@ -14,7 +14,7 @@ export interface IModalProps {
14
14
  * Компонент, который отрендерится внутри Modal
15
15
  * @example () => <InnerModalComponent />
16
16
  */
17
- component?: (props: React.ComponentProps<any>) => JSX.Element;
17
+ component?: (props: ComponentProps<any>) => JSX.Element;
18
18
  /**
19
19
  * Свойства для внутреннего компонента
20
20
  */
@@ -34,19 +34,32 @@ var __importStar = (this && this.__importStar) || function (mod) {
34
34
  return result;
35
35
  };
36
36
  exports.__esModule = true;
37
- var React = __importStar(require("react"));
37
+ var react_1 = __importStar(require("react"));
38
38
  var hooks_1 = require("../../../hooks");
39
39
  function Modal(props) {
40
40
  var components = (0, hooks_1.useComponents)();
41
41
  var ModalView = props.view || components.ui.getView('modal.ModalView');
42
42
  var ContentComponent = props.component;
43
- React.useEffect(function () {
43
+ (0, react_1.useEffect)(function () {
44
44
  if (props.closeAfterMs) {
45
45
  setTimeout(function () { return props.onClose(); }, props.closeAfterMs);
46
46
  }
47
47
  // eslint-disable-next-line react-hooks/exhaustive-deps
48
48
  }, []);
49
- return (React.createElement(ModalView, __assign({}, props), (ContentComponent && (React.createElement(ContentComponent, __assign({}, props, props.componentProps)))) || (props.children)));
49
+ var viewProps = (0, react_1.useMemo)(function () { return ({
50
+ size: props.size,
51
+ className: props.className,
52
+ closeTimeoutMs: props.closeTimeoutMs,
53
+ isClosing: props.isClosing,
54
+ onClose: props.onClose,
55
+ shouldCloseOnEsc: props.shouldCloseOnEsc,
56
+ shouldCloseOnOverlayClick: props.shouldCloseOnOverlayClick,
57
+ title: props.title,
58
+ children: props.children,
59
+ buttons: props.buttons
60
+ }); }, [props.buttons, props.children, props.className, props.closeTimeoutMs, props.isClosing, props.onClose, props.shouldCloseOnEsc,
61
+ props.shouldCloseOnOverlayClick, props.size, props.title]);
62
+ return (react_1["default"].createElement(ModalView, __assign({}, viewProps), (ContentComponent && (react_1["default"].createElement(ContentComponent, __assign({}, props, props.componentProps)))) || (props.children)));
50
63
  }
51
64
  Modal.defaultProps = {
52
65
  size: 'md',
@@ -37,9 +37,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
38
  };
39
39
  exports.__esModule = true;
40
- var React = __importStar(require("react"));
40
+ var react_1 = __importStar(require("react"));
41
41
  var orderBy_1 = __importDefault(require("lodash-es/orderBy"));
42
- var react_1 = require("react");
43
42
  var hooks_1 = require("../../../hooks");
44
43
  var useDispatch_1 = __importDefault(require("../../../hooks/useDispatch"));
45
44
  var modal_1 = require("../../../actions/modal");
@@ -68,7 +67,7 @@ function ModalPortal(props) {
68
67
  return (0, orderBy_1["default"])(opened, 'id').map(function (item, index) {
69
68
  var ModalComponent = item.modal;
70
69
  var modalProps = __assign(__assign({}, item.props), { index: index, group: group, isClosing: item.isClosing, onClose: function () { return onClose(item); }, closeTimeoutMs: item.props.closeTimeoutMs || props.animationDelayMc });
71
- return (React.createElement(ModalComponent, __assign({ key: item.id }, modalProps)));
70
+ return (react_1["default"].createElement(ModalComponent, __assign({ key: item.id }, modalProps)));
72
71
  });
73
72
  }
74
73
  ModalPortal.defaultProps = {
@@ -1,16 +1,6 @@
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
  var router_1 = require("../../../reducers/router");
16
6
  function Breadcrumbs(props) {
@@ -18,6 +8,14 @@ function Breadcrumbs(props) {
18
8
  var routeItems = (0, hooks_1.useSelector)(function (state) { return (0, router_1.getRouteBreadcrumbs)(state, props.pageId); });
19
9
  var routeParams = (0, hooks_1.useSelector)(function (state) { return (0, router_1.getRouteParams)(state); });
20
10
  var items = props.items || routeItems;
21
- return components.ui.renderView(props.view || 'nav.BreadcrumbsView', __assign(__assign({}, props), { items: items, routeParams: routeParams }));
11
+ var viewProps = (0, react_1.useMemo)(function () { return ({
12
+ items: items,
13
+ routeParams: routeParams,
14
+ customIcon: props.customIcon,
15
+ showIcon: props.showIcon,
16
+ className: props.className,
17
+ pageTitle: props.pageTitle
18
+ }); }, [items, props.className, props.customIcon, props.pageTitle, props.showIcon, routeParams]);
19
+ return components.ui.renderView(props.view || 'nav.BreadcrumbsView', viewProps);
22
20
  }
23
21
  exports["default"] = Breadcrumbs;
@@ -1,59 +1,40 @@
1
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
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
4
  };
28
5
  exports.__esModule = true;
29
- var react_1 = __importStar(require("react"));
6
+ var react_1 = require("react");
30
7
  var hooks_1 = require("../../../hooks");
31
8
  var useDataProvider_1 = __importDefault(require("../../../hooks/useDataProvider"));
32
9
  var DEFAULT_BUTTON_GROUP_SIZE = 'md';
33
10
  function ButtonGroup(props) {
34
- var _a, _b;
11
+ var _a;
35
12
  var components = (0, hooks_1.useComponents)();
36
13
  var items = (0, useDataProvider_1["default"])({
37
14
  items: props.items
38
15
  }).items;
39
- var _c = (0, react_1.useState)(props.activeButton || props.defaultActiveButton || ((_a = items[0]) === null || _a === void 0 ? void 0 : _a.id)), activeButton = _c[0], setActiveButton = _c[1];
40
- react_1["default"].useEffect(function () {
16
+ var _b = (0, react_1.useState)(props.activeButton || props.defaultActiveButton || ((_a = items[0]) === null || _a === void 0 ? void 0 : _a.id)), activeButton = _b[0], setActiveButton = _b[1];
17
+ (0, react_1.useEffect)(function () {
41
18
  if (props.activeButton) {
42
19
  setActiveButton(props.activeButton);
43
20
  }
44
21
  }, [props.activeButton]);
45
- var onClick = function (buttonId) {
22
+ var onClick = (0, react_1.useCallback)(function (buttonId) {
46
23
  setActiveButton(buttonId);
47
24
  props.onClick(buttonId);
48
- };
49
- return components.ui.renderView(props.view || 'nav.ButtonGroupView', {
50
- className: props.className,
51
- style: props.style,
52
- buttonProps: props.buttonProps,
53
- size: ((_b = props.buttonProps) === null || _b === void 0 ? void 0 : _b.size) || DEFAULT_BUTTON_GROUP_SIZE,
54
- activeButton: activeButton,
55
- items: items,
56
- onClick: onClick
57
- });
25
+ }, [props]);
26
+ var viewProps = (0, react_1.useMemo)(function () {
27
+ var _a;
28
+ return ({
29
+ className: props.className,
30
+ style: props.style,
31
+ buttonProps: props.buttonProps,
32
+ size: ((_a = props.buttonProps) === null || _a === void 0 ? void 0 : _a.size) || DEFAULT_BUTTON_GROUP_SIZE,
33
+ activeButton: activeButton,
34
+ items: items,
35
+ onClick: onClick
36
+ });
37
+ }, [activeButton, items, onClick, props.buttonProps, props.className, props.style]);
38
+ return components.ui.renderView(props.view || 'nav.ButtonGroupView', viewProps);
58
39
  }
59
40
  exports["default"] = ButtonGroup;
@@ -51,6 +51,11 @@ function Controls(props) {
51
51
  };
52
52
  var components = (0, hooks_1.useComponents)();
53
53
  var items = (0, react_1.useMemo)(function () { return props.items.map(function (item) { return (__assign(__assign({}, defaultItems[item.id]), item)); }); }, [defaultItems, props.items]);
54
- return components.ui.renderView(props.view || 'nav.ControlsView', __assign(__assign({}, props), { items: items }));
54
+ var viewProps = (0, react_1.useMemo)(function () { return ({
55
+ items: items,
56
+ className: props.className,
57
+ navProps: props.navProps
58
+ }); }, [items, props.className, props.navProps]);
59
+ return components.ui.renderView(props.view || 'nav.ControlsView', viewProps);
55
60
  }
56
61
  exports["default"] = Controls;
@@ -108,6 +108,15 @@ export interface INavProps {
108
108
  * Размер
109
109
  */
110
110
  size?: Size;
111
+ /**
112
+ * CSS-класс для элемента навигации.
113
+ */
114
+ navClassName?: CssClassName;
115
+ /**
116
+ * Переводит кнопку в состояние "не активна"
117
+ * @example true
118
+ */
119
+ disabled?: boolean;
111
120
  [key: string]: any;
112
121
  }
113
122
  export interface INavViewProps extends INavProps {
@@ -116,7 +125,6 @@ export interface INavViewProps extends INavProps {
116
125
  isActive: boolean;
117
126
  isActiveNested: boolean;
118
127
  })[];
119
- navClassName?: CssClassName;
120
128
  }
121
129
  declare function Nav(props: INavProps): JSX.Element;
122
130
  declare namespace Nav {
package/ui/nav/Nav/Nav.js CHANGED
@@ -37,12 +37,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
38
  };
39
39
  exports.__esModule = true;
40
- var React = __importStar(require("react"));
40
+ var react_1 = __importStar(require("react"));
41
41
  var get_1 = __importDefault(require("lodash-es/get"));
42
42
  var has_1 = __importDefault(require("lodash-es/has"));
43
43
  var isFunction_1 = __importDefault(require("lodash-es/isFunction"));
44
44
  var isObject_1 = __importDefault(require("lodash-es/isObject"));
45
- var react_1 = require("react");
46
45
  var isEmpty_1 = __importDefault(require("lodash-es/isEmpty"));
47
46
  var hooks_1 = require("../../../hooks");
48
47
  var router_1 = require("../../../reducers/router");
@@ -67,7 +66,7 @@ function Nav(props) {
67
66
  setActiveTab(props.activeTab);
68
67
  }
69
68
  }, [props.activeTab]);
70
- var renderContent = function () {
69
+ var renderContent = (0, react_1.useCallback)(function () {
71
70
  var items = Array.isArray(props.items) ? props.items : [];
72
71
  var activeItem = items.find(function (item, index) { return activeTab === ((0, has_1["default"])(item, 'id') ? item.id : index); });
73
72
  if (!activeItem || !activeItem.content) {
@@ -75,10 +74,10 @@ function Nav(props) {
75
74
  }
76
75
  if ((0, isFunction_1["default"])(activeItem.content) || (0, isObject_1["default"])(activeItem.content)) {
77
76
  var ContentComponent = activeItem.content;
78
- return (React.createElement(ContentComponent, __assign({}, activeItem, activeItem.contentProps)));
77
+ return (react_1["default"].createElement(ContentComponent, __assign({}, activeItem, activeItem.contentProps)));
79
78
  }
80
79
  return activeItem.content;
81
- };
80
+ }, [activeTab, props.items]);
82
81
  var onClick = (0, react_1.useCallback)(function (item, index) {
83
82
  var newActiveTab = (0, has_1["default"])(item, 'id') ? item.id : index;
84
83
  setActiveTab(newActiveTab);
@@ -86,7 +85,7 @@ function Nav(props) {
86
85
  props.onChange.call(null, newActiveTab);
87
86
  }
88
87
  }, [props.onChange]);
89
- var formatItems = React.useCallback(function (items) {
88
+ var formatItems = (0, react_1.useCallback)(function (items) {
90
89
  if (items === void 0) { items = props.items; }
91
90
  if (Array.isArray(items)) {
92
91
  return items.map(function (item, index) {
@@ -111,7 +110,17 @@ function Nav(props) {
111
110
  .filter(function (item) { return item.visible !== false; });
112
111
  }, [activeRouteIds, activeTab, props.items, routerParams, routes]);
113
112
  var items = (0, react_1.useMemo)(function () { return formatItems(); }, [formatItems]);
114
- return components.ui.renderView(props.view || defaultViewMap[props.layout], __assign(__assign({}, props), { items: items, onClick: onClick, disabled: props.disabled, children: renderContent() }));
113
+ var viewProps = (0, react_1.useMemo)(function () { return ({
114
+ items: items,
115
+ onClick: onClick,
116
+ disabled: props.disabled,
117
+ size: props.size,
118
+ icon: props.icon,
119
+ className: props.className,
120
+ navClassName: props.navClassName,
121
+ children: renderContent()
122
+ }); }, [items, onClick, props.className, props.disabled, props.icon, props.navClassName, props.size, renderContent]);
123
+ return components.ui.renderView(props.view || defaultViewMap[props.layout], viewProps);
115
124
  }
116
125
  Nav.defaultProps = {
117
126
  layout: 'button',
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { IFetchConfig } from '../../../hooks/useFetch';
3
3
  import { IListProps } from '../../list/List/List';
4
4
  export declare const ROUTER_ROLE_LOGIN = "login";
@@ -128,7 +128,7 @@ export interface IRouterProps {
128
128
  * Дерево роутов
129
129
  * @example {id: 'root', path: '/', component: IndexPage, items: [...]}
130
130
  */
131
- routes: IRouteItem[] | {
131
+ routes: IRouteItem[] | IRouteItem | {
132
132
  [key: string]: IRouteItem;
133
133
  };
134
134
  /**