@steroidsjs/core 3.0.0-beta.42 → 3.0.0-beta.43
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 +966 -995
- package/hooks/useApplication.d.ts +2 -1
- package/hooks/useApplication.js +1 -1
- package/hooks/useDataSelect.d.ts +3 -1
- package/hooks/useDataSelect.js +37 -23
- package/hooks/useFile.d.ts +28 -0
- package/hooks/useList.d.ts +6 -0
- package/package.json +2 -2
- package/ui/content/Accordion/Accordion.d.ts +11 -13
- package/ui/content/Alert/Alert.d.ts +13 -10
- package/ui/content/Avatar/Avatar.d.ts +13 -23
- package/ui/content/Badge/Badge.d.ts +14 -12
- package/ui/content/Calendar/Calendar.d.ts +1 -10
- package/ui/content/Card/Card.d.ts +31 -18
- package/ui/content/CopyToClipboard/CopyToClipboard.d.ts +19 -6
- package/ui/content/Detail/Detail.d.ts +1 -10
- package/ui/content/DropDown/DropDown.d.ts +9 -9
- package/ui/content/Icon/Icon.d.ts +4 -7
- package/ui/content/Menu/Menu.d.ts +2 -10
- package/ui/crud/Crud/Crud.d.ts +62 -0
- package/ui/form/BlankField/BlankField.d.ts +8 -1
- package/ui/form/Button/Button.d.ts +2 -16
- package/ui/form/CheckboxField/CheckboxField.d.ts +3 -12
- package/ui/form/CheckboxListField/CheckboxListField.d.ts +2 -11
- package/ui/form/DateRangeField/DateRangeField.d.ts +6 -0
- package/ui/form/DropDownField/DropDownField.d.ts +19 -16
- package/ui/form/DropDownField/DropDownField.js +26 -5
- package/ui/form/Field/fieldWrapper.d.ts +18 -4
- package/ui/form/FieldLayout/FieldLayout.d.ts +2 -11
- package/ui/form/FieldList/FieldList.d.ts +2 -20
- package/ui/form/FileField/FileField.d.ts +1 -11
- package/ui/form/Form/Form.d.ts +27 -15
- package/ui/form/HtmlField/HtmlField.d.ts +1 -10
- package/ui/form/ImageField/ImageField.d.ts +1 -10
- package/ui/form/InputField/InputField.d.ts +2 -2
- package/ui/form/NavField/NavField.d.ts +1 -1
- package/ui/form/RadioField/RadioField.d.ts +2 -11
- package/ui/form/RadioListField/RadioListField.d.ts +2 -11
- package/ui/form/RateField/RateField.d.ts +1 -10
- package/ui/form/ReCaptchaField/ReCaptchaField.d.ts +1 -6
- package/ui/form/SliderField/SliderField.d.ts +3 -12
- package/ui/form/SliderField/SliderField.js +1 -1
- package/ui/form/SwitcherField/SwitcherField.d.ts +1 -1
- package/ui/form/TimeField/TimeField.d.ts +1 -15
- package/ui/format/BooleanFormatter/BooleanFormatter.d.ts +7 -0
- package/ui/format/DateFormatter/DateFormatter.d.ts +5 -1
- package/ui/format/DateTimeFormatter/DateTimeFormatter.d.ts +5 -1
- package/ui/format/EnumFormatter/EnumFormatter.d.ts +4 -0
- package/ui/format/FileSize/FileSize.d.ts +1 -2
- package/ui/format/MoneyFormatter/MoneyFormatter.d.ts +3 -1
- package/ui/layout/Header/Header.d.ts +7 -3
- package/ui/layout/Loader/Loader.d.ts +6 -1
- package/ui/layout/Skeleton/Skeleton.d.ts +19 -0
- package/ui/list/Pagination/Pagination.d.ts +3 -0
- package/ui/list/SearchForm/SearchForm.d.ts +3 -0
- package/ui/modal/TwoFactorModal/TwoFactorModal.d.ts +7 -2
- package/ui/typography/Text/Text.d.ts +5 -8
- package/ui/typography/Title/Title.d.ts +5 -8
- package/ui/form/SliderField/demo/basic.d.ts +0 -8
- package/ui/form/SliderField/demo/basic.js +0 -37
- package/ui/form/SliderField/demo/disabled.d.ts +0 -8
- package/ui/form/SliderField/demo/disabled.js +0 -37
- package/ui/form/SliderField/demo/errors.d.ts +0 -8
- package/ui/form/SliderField/demo/errors.js +0 -37
- package/ui/form/SliderField/demo/marks.d.ts +0 -3
- package/ui/form/SliderField/demo/marks.js +0 -49
- package/ui/form/SliderField/demo/min-max.d.ts +0 -8
- package/ui/form/SliderField/demo/min-max.js +0 -37
- package/ui/form/SliderField/demo/onAfterChange.d.ts +0 -8
- package/ui/form/SliderField/demo/onAfterChange.js +0 -43
- package/ui/form/SliderField/demo/onChange.d.ts +0 -8
- package/ui/form/SliderField/demo/onChange.js +0 -43
- package/ui/form/SliderField/demo/range.d.ts +0 -8
- package/ui/form/SliderField/demo/range.js +0 -37
- package/ui/nav/Tree/demo/auto-open-levels.d.ts +0 -8
- package/ui/nav/Tree/demo/auto-open-levels.js +0 -38
- package/ui/nav/Tree/demo/basic.d.ts +0 -32
- package/ui/nav/Tree/demo/basic.js +0 -72
- package/ui/nav/Tree/demo/level.d.ts +0 -8
- package/ui/nav/Tree/demo/level.js +0 -38
- package/ui/nav/Tree/demo/routes.d.ts +0 -8
- package/ui/nav/Tree/demo/routes.js +0 -37
- package/ui/nav/Tree/demo/selected-item.d.ts +0 -8
- package/ui/nav/Tree/demo/selected-item.js +0 -38
|
@@ -5,7 +5,7 @@ import StoreComponent from '../components/StoreComponent';
|
|
|
5
5
|
import UiComponent from '../components/UiComponent';
|
|
6
6
|
import MetaComponent from '../components/MetaComponent';
|
|
7
7
|
import { IComponents } from '../providers/ComponentsProvider';
|
|
8
|
-
import { IRouteItem } from '../ui/nav/Router/Router';
|
|
8
|
+
import { IRouteItem, IRouterProps } from '../ui/nav/Router/Router';
|
|
9
9
|
import MetricsComponent from '../components/MetricsComponent';
|
|
10
10
|
import { IScreenProviderProps } from '../providers/ScreenProvider';
|
|
11
11
|
import { IFetchConfig } from '../hooks/useFetch';
|
|
@@ -28,6 +28,7 @@ export interface IApplicationHookConfig {
|
|
|
28
28
|
layoutView?: () => CustomView;
|
|
29
29
|
layoutProps?: Record<string, unknown>;
|
|
30
30
|
screen?: Omit<IScreenProviderProps, 'children'>;
|
|
31
|
+
routerProps?: IRouterProps;
|
|
31
32
|
/**
|
|
32
33
|
* These fetch configurations will be used to preload and store for no matter what route matched in case of SSR
|
|
33
34
|
*/
|
package/hooks/useApplication.js
CHANGED
|
@@ -126,7 +126,7 @@ function useApplication(config) {
|
|
|
126
126
|
var content = children;
|
|
127
127
|
// Wrap in routes
|
|
128
128
|
if (config.routes) {
|
|
129
|
-
content = (React.createElement(Router_1["default"], { routes: config.routes(), wrapperView: config.layoutView(), wrapperProps: config.layoutProps }));
|
|
129
|
+
content = (React.createElement(Router_1["default"], __assign({ routes: config.routes(), wrapperView: config.layoutView(), wrapperProps: config.layoutProps }, config.routerProps)));
|
|
130
130
|
}
|
|
131
131
|
if (config.screen) {
|
|
132
132
|
content = (React.createElement(ScreenProvider_1["default"], __assign({}, config.screen), content));
|
package/hooks/useDataSelect.d.ts
CHANGED
|
@@ -54,6 +54,8 @@ export interface IDataSelectResult {
|
|
|
54
54
|
selectedIds: PrimaryKey[];
|
|
55
55
|
setSelectedIds: (ids: PrimaryKey | PrimaryKey[], skipToggle?: boolean) => void;
|
|
56
56
|
selectedItems: IDataSelectItem[];
|
|
57
|
+
setSelectedAll: VoidFunction;
|
|
58
|
+
isSelectedAll: boolean;
|
|
57
59
|
}
|
|
58
|
-
export declare const
|
|
60
|
+
export declare const getFlattenedItems: (items: any, groupAttribute: any) => any[];
|
|
59
61
|
export default function useDataSelect(config: IDataSelectConfig): IDataSelectResult;
|
package/hooks/useDataSelect.js
CHANGED
|
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
exports.__esModule = true;
|
|
15
|
-
exports.
|
|
15
|
+
exports.getFlattenedItems = void 0;
|
|
16
16
|
var isEqual_1 = __importDefault(require("lodash-es/isEqual"));
|
|
17
17
|
var isArray_1 = __importDefault(require("lodash-es/isArray"));
|
|
18
18
|
var isNil_1 = __importDefault(require("lodash-es/isNil"));
|
|
@@ -21,11 +21,11 @@ var react_use_1 = require("react-use");
|
|
|
21
21
|
var defaultProps = {
|
|
22
22
|
primaryKey: 'id'
|
|
23
23
|
};
|
|
24
|
-
var
|
|
24
|
+
var getFlattenedItems = function (items, groupAttribute) {
|
|
25
25
|
var result = [];
|
|
26
26
|
items.forEach(function (item) {
|
|
27
27
|
if (groupAttribute && Array.isArray(item[groupAttribute])) {
|
|
28
|
-
result = result.concat((0, exports.
|
|
28
|
+
result = result.concat((0, exports.getFlattenedItems)(item[groupAttribute], groupAttribute));
|
|
29
29
|
}
|
|
30
30
|
else {
|
|
31
31
|
result.push(item);
|
|
@@ -33,7 +33,7 @@ var getLinearItems = function (items, groupAttribute) {
|
|
|
33
33
|
});
|
|
34
34
|
return result;
|
|
35
35
|
};
|
|
36
|
-
exports.
|
|
36
|
+
exports.getFlattenedItems = getFlattenedItems;
|
|
37
37
|
var isIdExists = function (id) {
|
|
38
38
|
if (typeof id === 'boolean') {
|
|
39
39
|
return true;
|
|
@@ -43,7 +43,7 @@ var isIdExists = function (id) {
|
|
|
43
43
|
function useDataSelect(config) {
|
|
44
44
|
// Get primary key
|
|
45
45
|
var primaryKey = config.primaryKey || defaultProps.primaryKey;
|
|
46
|
-
var
|
|
46
|
+
var flattenedItems = (0, react_1.useMemo)(function () { return (0, exports.getFlattenedItems)(config.items, config.groupAttribute); }, [config.groupAttribute, config.items]);
|
|
47
47
|
// Initial select
|
|
48
48
|
var initialSelectedIds = (0, react_1.useMemo)(function () {
|
|
49
49
|
var _a;
|
|
@@ -53,22 +53,23 @@ function useDataSelect(config) {
|
|
|
53
53
|
if (!(0, isNil_1["default"])(config.inputValue)) {
|
|
54
54
|
return [].concat((0, isArray_1["default"])(config.inputValue) ? config.inputValue : [config.inputValue]);
|
|
55
55
|
}
|
|
56
|
-
return config.selectFirst &&
|
|
57
|
-
? [
|
|
56
|
+
return config.selectFirst && flattenedItems.length > 0
|
|
57
|
+
? [flattenedItems[0][primaryKey]]
|
|
58
58
|
: [];
|
|
59
|
-
}, [config.selectedIds, config.inputValue, config.selectFirst,
|
|
60
|
-
var initialSelectedItems = (0, react_1.useMemo)(function () { return
|
|
59
|
+
}, [config.selectedIds, config.inputValue, config.selectFirst, flattenedItems, primaryKey]);
|
|
60
|
+
var initialSelectedItems = (0, react_1.useMemo)(function () { return flattenedItems.length > 0
|
|
61
61
|
&& initialSelectedIds.length > 0
|
|
62
62
|
? initialSelectedIds
|
|
63
|
-
.map(function (selectedId) { return
|
|
63
|
+
.map(function (selectedId) { return flattenedItems.find(function (item) { return item.id === selectedId; }); })
|
|
64
64
|
.filter(isIdExists)
|
|
65
|
-
: []; }, [initialSelectedIds,
|
|
65
|
+
: []; }, [initialSelectedIds, flattenedItems]);
|
|
66
66
|
// State
|
|
67
67
|
var _a = (0, react_1.useState)(false), isOpened = _a[0], setIsOpened = _a[1];
|
|
68
68
|
var _b = (0, react_1.useState)(false), isFocused = _b[0], setIsFocused = _b[1];
|
|
69
69
|
var _c = (0, react_1.useState)(null), hoveredId = _c[0], setHoveredId = _c[1];
|
|
70
70
|
var _d = (0, react_1.useState)(initialSelectedIds), selectedIds = _d[0], setSelectedIdsInternal = _d[1];
|
|
71
71
|
var _e = (0, react_1.useState)(initialSelectedItems), selectedItems = _e[0], setSelectedItemsInternal = _e[1];
|
|
72
|
+
var _f = (0, react_1.useState)(config.items.length === selectedIds.length), isSelectedAll = _f[0], setIsSelectedAll = _f[1];
|
|
72
73
|
// Handler for select/toggle item by id
|
|
73
74
|
var setSelectedIds = (0, react_1.useCallback)(function (ids, skipToggle) {
|
|
74
75
|
if (skipToggle === void 0) { skipToggle = false; }
|
|
@@ -76,6 +77,10 @@ function useDataSelect(config) {
|
|
|
76
77
|
if (!config.multiple && ids.length > 1) {
|
|
77
78
|
ids = [ids[0]];
|
|
78
79
|
}
|
|
80
|
+
if (selectedItems.length === ids.length) {
|
|
81
|
+
setSelectedIds([]);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
79
84
|
setSelectedIdsInternal(ids.sort());
|
|
80
85
|
}
|
|
81
86
|
else {
|
|
@@ -100,14 +105,18 @@ function useDataSelect(config) {
|
|
|
100
105
|
setIsOpened(false);
|
|
101
106
|
}
|
|
102
107
|
}
|
|
103
|
-
}, [config.multiple, selectedIds]);
|
|
108
|
+
}, [config.multiple, selectedIds, selectedItems.length]);
|
|
109
|
+
var setSelectedAll = (0, react_1.useCallback)(function () {
|
|
110
|
+
var itemsIds = flattenedItems.map(function (item) { return item.id; });
|
|
111
|
+
setSelectedIds(itemsIds);
|
|
112
|
+
}, [flattenedItems, setSelectedIds]);
|
|
104
113
|
// Update selected items on change selectedIds or items or source items
|
|
105
114
|
var prevSelectedIdsLength = (0, react_use_1.usePrevious)(selectedIds.length);
|
|
106
115
|
(0, react_use_1.useUpdateEffect)(function () {
|
|
107
116
|
var newSelectedItems = [];
|
|
108
117
|
var hasChanges = false;
|
|
109
118
|
selectedIds.forEach(function (selectedId) {
|
|
110
|
-
var finedItem =
|
|
119
|
+
var finedItem = flattenedItems.find(function (item) { return item[primaryKey] === selectedId; });
|
|
111
120
|
if (!finedItem && config.sourceItems) {
|
|
112
121
|
finedItem = config.sourceItems.find(function (item) { return item[primaryKey] === selectedId; });
|
|
113
122
|
}
|
|
@@ -123,14 +132,14 @@ function useDataSelect(config) {
|
|
|
123
132
|
if (hasChanges || prevSelectedIdsLength !== selectedIds.length) {
|
|
124
133
|
setSelectedItemsInternal(newSelectedItems);
|
|
125
134
|
}
|
|
126
|
-
}, [
|
|
135
|
+
}, [flattenedItems, config.sourceItems, primaryKey, selectedIds, selectedItems, prevSelectedIdsLength]);
|
|
127
136
|
// Select first after fetch data
|
|
128
|
-
var prevItemsLength = (0, react_use_1.usePrevious)(
|
|
137
|
+
var prevItemsLength = (0, react_use_1.usePrevious)(flattenedItems.length);
|
|
129
138
|
(0, react_use_1.useUpdateEffect)(function () {
|
|
130
|
-
if (config.selectFirst && prevItemsLength === 0 &&
|
|
131
|
-
setSelectedIdsInternal([
|
|
139
|
+
if (config.selectFirst && prevItemsLength === 0 && flattenedItems.length > 0) {
|
|
140
|
+
setSelectedIdsInternal([flattenedItems[0][primaryKey]]);
|
|
132
141
|
}
|
|
133
|
-
}, [
|
|
142
|
+
}, [flattenedItems, config.selectFirst, prevItemsLength, primaryKey]);
|
|
134
143
|
// Update selected items on change value
|
|
135
144
|
var prevConfigSelectedIds = (0, react_use_1.usePrevious)(config.selectedIds || []);
|
|
136
145
|
(0, react_use_1.useUpdateEffect)(function () {
|
|
@@ -146,6 +155,9 @@ function useDataSelect(config) {
|
|
|
146
155
|
setSelectedIdsInternal(newSelectedIds);
|
|
147
156
|
}
|
|
148
157
|
}, [config.selectedIds, prevConfigSelectedIds, selectedIds, selectedItems]);
|
|
158
|
+
(0, react_use_1.useUpdateEffect)(function () {
|
|
159
|
+
setIsSelectedAll(config.items.length === selectedIds.length);
|
|
160
|
+
}, [config.items.length, selectedIds]);
|
|
149
161
|
// Global key down handler for navigate on items
|
|
150
162
|
// Support keys:
|
|
151
163
|
// - tab
|
|
@@ -175,9 +187,9 @@ function useDataSelect(config) {
|
|
|
175
187
|
// Select first selected
|
|
176
188
|
setSelectedIds(selectedIds[0], true);
|
|
177
189
|
}
|
|
178
|
-
else if (
|
|
190
|
+
else if (flattenedItems.length > 0) {
|
|
179
191
|
// Select first result
|
|
180
|
-
setSelectedIds(
|
|
192
|
+
setSelectedIds(flattenedItems[0], true);
|
|
181
193
|
}
|
|
182
194
|
setIsOpened(false);
|
|
183
195
|
}
|
|
@@ -202,7 +214,7 @@ function useDataSelect(config) {
|
|
|
202
214
|
else {
|
|
203
215
|
// Navigate on items by keys
|
|
204
216
|
var direction = isDown ? 1 : -1;
|
|
205
|
-
var keys =
|
|
217
|
+
var keys = flattenedItems.map(function (item) { return item.id; });
|
|
206
218
|
// Get current index
|
|
207
219
|
var index = hoveredId ? keys.indexOf(hoveredId) : -1;
|
|
208
220
|
if (index === -1 && selectedIds.length === 1) {
|
|
@@ -216,7 +228,7 @@ function useDataSelect(config) {
|
|
|
216
228
|
setHoveredId(keys[newIndex]);
|
|
217
229
|
}
|
|
218
230
|
}
|
|
219
|
-
}, [isFocused, isOpened, hoveredId, selectedIds,
|
|
231
|
+
}, [isFocused, isOpened, hoveredId, selectedIds, flattenedItems, setSelectedIds]);
|
|
220
232
|
(0, react_use_1.useEvent)('keydown', onKeyDown);
|
|
221
233
|
return {
|
|
222
234
|
isOpened: isOpened,
|
|
@@ -227,7 +239,9 @@ function useDataSelect(config) {
|
|
|
227
239
|
setHoveredId: setHoveredId,
|
|
228
240
|
selectedIds: selectedIds,
|
|
229
241
|
setSelectedIds: setSelectedIds,
|
|
230
|
-
selectedItems: selectedItems
|
|
242
|
+
selectedItems: selectedItems,
|
|
243
|
+
setSelectedAll: setSelectedAll,
|
|
244
|
+
isSelectedAll: isSelectedAll
|
|
231
245
|
};
|
|
232
246
|
}
|
|
233
247
|
exports["default"] = useDataSelect;
|
package/hooks/useFile.d.ts
CHANGED
|
@@ -1,13 +1,41 @@
|
|
|
1
1
|
export interface IFileInput {
|
|
2
|
+
/**
|
|
3
|
+
* Параметры для input элемента
|
|
4
|
+
*/
|
|
2
5
|
input?: FormInputType;
|
|
6
|
+
/**
|
|
7
|
+
* Множественный выбор файлов
|
|
8
|
+
*/
|
|
3
9
|
multiple?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Позволяет указать uploader
|
|
12
|
+
*/
|
|
4
13
|
uploader?: any;
|
|
14
|
+
/**
|
|
15
|
+
* Экшен для отправки на бэкенд
|
|
16
|
+
* @example '/api/v1/user/avatar/crop'
|
|
17
|
+
*/
|
|
5
18
|
backendUrl?: any;
|
|
19
|
+
/**
|
|
20
|
+
* Список mime-типов
|
|
21
|
+
*/
|
|
6
22
|
mimeTypes?: any;
|
|
23
|
+
/**
|
|
24
|
+
* Использовать только изображения
|
|
25
|
+
*/
|
|
7
26
|
imagesOnly?: any;
|
|
8
27
|
imagesProcessor?: any;
|
|
28
|
+
/**
|
|
29
|
+
* Точные размеры изображений
|
|
30
|
+
*/
|
|
9
31
|
imagesExactSize?: any;
|
|
32
|
+
/**
|
|
33
|
+
* Начальные файлы
|
|
34
|
+
*/
|
|
10
35
|
initialFiles?: any;
|
|
36
|
+
/**
|
|
37
|
+
* Параметры для uploader
|
|
38
|
+
*/
|
|
11
39
|
uploaderConfig?: {
|
|
12
40
|
useFormData?: boolean;
|
|
13
41
|
fileFieldName?: string;
|
package/hooks/useList.d.ts
CHANGED
|
@@ -113,12 +113,18 @@ export interface IListConfig {
|
|
|
113
113
|
* @example true
|
|
114
114
|
*/
|
|
115
115
|
addressBar?: boolean | IAddressBarConfig;
|
|
116
|
+
/**
|
|
117
|
+
* Параметр для загрузки данных списка с сервера
|
|
118
|
+
*/
|
|
116
119
|
scope?: string[];
|
|
117
120
|
/**
|
|
118
121
|
* Дополнительные параметры, значения которых нужно передавать в запросе для получения данных
|
|
119
122
|
* @example {tagName: 'MarketReviews'}
|
|
120
123
|
*/
|
|
121
124
|
query?: Record<string, unknown>;
|
|
125
|
+
/**
|
|
126
|
+
* Модель
|
|
127
|
+
*/
|
|
122
128
|
model?: string;
|
|
123
129
|
/**
|
|
124
130
|
* Модель для синхронизации значений формы с адресной строкой
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steroidsjs/core",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.43",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Vladimir Kozhin <hello@kozhindev.com>",
|
|
6
6
|
"repository": {
|
|
@@ -85,8 +85,8 @@
|
|
|
85
85
|
"jest": "^26.6.3",
|
|
86
86
|
"jest-environment-jsdom-fifteen": "^1.0.2",
|
|
87
87
|
"jest-enzyme": "^7.1.2",
|
|
88
|
+
"rc-slider": "9.7.4",
|
|
88
89
|
"ts-jest": "^26.5.1",
|
|
89
|
-
"typedoc": "^0.24.7",
|
|
90
90
|
"typescript": "^4.9.5"
|
|
91
91
|
}
|
|
92
92
|
}
|
|
@@ -3,31 +3,29 @@ export interface IAccordionIcon {
|
|
|
3
3
|
open: React.ReactElement | string;
|
|
4
4
|
close: React.ReactElement | string;
|
|
5
5
|
}
|
|
6
|
-
export interface IAccordionProps {
|
|
7
|
-
view?: CustomView;
|
|
8
|
-
style?: CustomStyle;
|
|
9
|
-
children?: any;
|
|
6
|
+
export interface IAccordionProps extends IUiComponent {
|
|
10
7
|
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
* Дочерние элементы
|
|
9
|
+
*/
|
|
10
|
+
children?: React.ReactNode;
|
|
14
11
|
/**
|
|
15
|
-
*
|
|
12
|
+
* Переводит Accordion в выключенное состояние
|
|
13
|
+
* @example true
|
|
16
14
|
*/
|
|
17
15
|
disabled?: boolean;
|
|
18
16
|
/**
|
|
19
17
|
* Пользовательская иконка svg или название иконки или объект с иконками open и close
|
|
20
|
-
* @example
|
|
18
|
+
* @example 'circle'
|
|
21
19
|
*/
|
|
22
20
|
icon?: IAccordionIcon | React.ReactElement | string;
|
|
23
21
|
/**
|
|
24
22
|
* Включает режим в котором можно открыть только один AccordionItem
|
|
25
|
-
* @example
|
|
23
|
+
* @example true
|
|
26
24
|
*/
|
|
27
25
|
hasOneOpenItem?: boolean;
|
|
28
26
|
/**
|
|
29
27
|
* Название AccordionItem
|
|
30
|
-
* @example
|
|
28
|
+
* @example 'Подробнее'
|
|
31
29
|
*/
|
|
32
30
|
title?: string;
|
|
33
31
|
/**
|
|
@@ -36,7 +34,7 @@ export interface IAccordionProps {
|
|
|
36
34
|
theme?: 'light' | 'dark' | 'intermediate';
|
|
37
35
|
/**
|
|
38
36
|
* Номер активного AccordionItem, который может меняться динамический или быть статичным
|
|
39
|
-
* @example
|
|
37
|
+
* @example 1
|
|
40
38
|
*/
|
|
41
39
|
activeKey?: number;
|
|
42
40
|
/**
|
|
@@ -47,7 +45,7 @@ export interface IAccordionProps {
|
|
|
47
45
|
/**
|
|
48
46
|
* Стилизация позиционирования.
|
|
49
47
|
* При значении "top" верхняя часть шапки будет закруглена.
|
|
50
|
-
* @example
|
|
48
|
+
* @example 'top'
|
|
51
49
|
*/
|
|
52
50
|
position?: 'bottom' | 'middle' | 'top';
|
|
53
51
|
/**
|
|
@@ -1,32 +1,30 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export interface IAlertProps {
|
|
3
|
-
view?: CustomView;
|
|
4
|
-
className?: CssClassName;
|
|
2
|
+
export interface IAlertProps extends IUiComponent {
|
|
5
3
|
/**
|
|
6
4
|
* Дочерние элементы
|
|
5
|
+
* @example {<span>children</span>}
|
|
7
6
|
*/
|
|
8
7
|
children?: React.ReactNode;
|
|
9
8
|
/**
|
|
10
9
|
* Типы Оповещений
|
|
11
|
-
* @example
|
|
10
|
+
* @example 'info'
|
|
12
11
|
*/
|
|
13
|
-
type
|
|
12
|
+
type?: 'success' | 'info' | 'warning' | 'error' | 'default' | string;
|
|
14
13
|
/** Основное сообщения Оповещения
|
|
15
|
-
* @example
|
|
14
|
+
* @example 'Sending is confirmed!'
|
|
16
15
|
*/
|
|
17
16
|
message?: string;
|
|
18
17
|
/** Дополнительное содрежание сообщения.
|
|
19
|
-
* @example
|
|
18
|
+
* @example 'Please, check your email.'
|
|
20
19
|
*/
|
|
21
20
|
description?: string;
|
|
22
|
-
style?: CustomStyle;
|
|
23
21
|
/**
|
|
24
22
|
* Нужно ли отображать кнопку, чтобы закрыть Оповещение
|
|
25
23
|
*/
|
|
26
24
|
showClose?: boolean;
|
|
27
25
|
/**
|
|
28
26
|
* Нужно ли отображать иконку, соответствующую типа Оповещения
|
|
29
|
-
* @example
|
|
27
|
+
* @example true
|
|
30
28
|
*/
|
|
31
29
|
showIcon?: boolean;
|
|
32
30
|
/**
|
|
@@ -34,12 +32,17 @@ export interface IAlertProps {
|
|
|
34
32
|
* @example {() => console.log('this is callback')}
|
|
35
33
|
*/
|
|
36
34
|
onClose?: () => void;
|
|
35
|
+
/**
|
|
36
|
+
* Флаг, который включает анимацию
|
|
37
|
+
* @example true
|
|
38
|
+
*/
|
|
37
39
|
animation?: boolean;
|
|
38
40
|
/**
|
|
39
41
|
* Время анимации в миллисекундах
|
|
40
|
-
* @example
|
|
42
|
+
* @example 1000
|
|
41
43
|
*/
|
|
42
44
|
animationDuration?: number;
|
|
45
|
+
[key: string]: any;
|
|
43
46
|
}
|
|
44
47
|
export interface IAlertViewProps extends IAlertProps {
|
|
45
48
|
isExist: boolean;
|
|
@@ -1,56 +1,46 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface IAvatarProps extends IUiComponent {
|
|
2
3
|
/**
|
|
3
4
|
* Альтернативный текст для изображения
|
|
4
|
-
* @example
|
|
5
|
+
* @example 'default image'
|
|
5
6
|
*/
|
|
6
7
|
alt?: string;
|
|
7
|
-
/**
|
|
8
|
-
* Дополнительный CSS-класс
|
|
9
|
-
*/
|
|
10
|
-
className?: CssClassName;
|
|
11
8
|
/**
|
|
12
9
|
* Дочерние элементы
|
|
13
10
|
*/
|
|
14
|
-
children?:
|
|
11
|
+
children?: React.ReactNode;
|
|
15
12
|
/**
|
|
16
13
|
* Размер аватара
|
|
17
|
-
* @example
|
|
14
|
+
* @example 'md'
|
|
18
15
|
*/
|
|
19
16
|
size?: Size | number;
|
|
20
17
|
/**
|
|
21
18
|
* Форма аватара
|
|
22
|
-
* @example
|
|
19
|
+
* @example 'circle'
|
|
23
20
|
*/
|
|
24
21
|
shape?: 'circle' | 'square' | string;
|
|
25
22
|
/**
|
|
26
23
|
* Ссылка на изображение для аватара
|
|
27
|
-
* @example
|
|
24
|
+
* @example 'https://user/avatar.png'
|
|
28
25
|
*/
|
|
29
26
|
src?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Набор адаптивных изображений
|
|
29
|
+
*/
|
|
30
30
|
srcSet?: string;
|
|
31
31
|
/**
|
|
32
32
|
* Статус онлайна
|
|
33
|
-
* @example
|
|
33
|
+
* @example true
|
|
34
34
|
*/
|
|
35
35
|
status?: boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Объект CSS стилей
|
|
38
|
-
* @example {width: '30px'}
|
|
39
|
-
*/
|
|
40
|
-
style?: CustomStyle;
|
|
41
36
|
/**
|
|
42
37
|
* Заголовок аватарки
|
|
43
|
-
* @example
|
|
38
|
+
* @example 'Avatar'
|
|
44
39
|
*/
|
|
45
40
|
title?: string;
|
|
46
|
-
/**
|
|
47
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
48
|
-
* @example MyCustomView
|
|
49
|
-
*/
|
|
50
|
-
view?: CustomView;
|
|
51
41
|
/**
|
|
52
42
|
* Наличие обводки вокруг аватара
|
|
53
|
-
* @example
|
|
43
|
+
* @example true
|
|
54
44
|
*/
|
|
55
45
|
hasBorder?: boolean;
|
|
56
46
|
}
|
|
@@ -1,45 +1,47 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
export interface ICounter {
|
|
3
|
+
/**
|
|
4
|
+
* Состояние счетчика
|
|
5
|
+
* @example true
|
|
6
|
+
*/
|
|
3
7
|
isEnable: boolean;
|
|
4
|
-
content: string | number;
|
|
5
|
-
}
|
|
6
|
-
export interface IBadgeProps {
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
+
* Содержимое счетчика
|
|
10
|
+
* @example 'Counter'
|
|
9
11
|
*/
|
|
10
|
-
|
|
12
|
+
content: string | number;
|
|
13
|
+
}
|
|
14
|
+
export interface IBadgeProps extends IUiComponent {
|
|
11
15
|
/**
|
|
12
16
|
* Тип badge
|
|
17
|
+
* @example 'primary'
|
|
13
18
|
*/
|
|
14
19
|
type: ColorName;
|
|
15
20
|
/**
|
|
16
21
|
* Стиль скругления
|
|
17
22
|
*/
|
|
18
23
|
roundingStyle: 'rounder' | 'squarer';
|
|
19
|
-
/**
|
|
20
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
21
|
-
*/
|
|
22
|
-
view?: CustomView;
|
|
23
24
|
/**
|
|
24
25
|
* Нужно ли отображать кнопку, чтобы закрыть badge
|
|
25
26
|
*/
|
|
26
27
|
showClose?: boolean;
|
|
27
28
|
/**
|
|
28
29
|
* Callback функция вызываемая при нажатии на кнопку закрытия
|
|
29
|
-
* @example
|
|
30
|
+
* @example () => console.log('Hello from onClose!')
|
|
30
31
|
*/
|
|
31
32
|
onClose?: () => void;
|
|
32
33
|
/** Текст для badge
|
|
33
|
-
* @example
|
|
34
|
+
* @example 'Sending is confirmed!'
|
|
34
35
|
*/
|
|
35
36
|
message?: string;
|
|
36
37
|
/**
|
|
37
38
|
* Нужно ли отображать счетчик
|
|
39
|
+
* @example {isEnable: true, content: 'Hello from counter!'}
|
|
38
40
|
*/
|
|
39
41
|
counter: boolean | ICounter;
|
|
40
|
-
style?: CustomStyle;
|
|
41
42
|
/**
|
|
42
43
|
* Размер для badge
|
|
44
|
+
* @example 'md'
|
|
43
45
|
*/
|
|
44
46
|
size: Size;
|
|
45
47
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DayPickerProps } from 'react-day-picker';
|
|
2
|
-
export interface ICalendarProps {
|
|
2
|
+
export interface ICalendarProps extends IUiComponent {
|
|
3
3
|
/**
|
|
4
4
|
* Значение задает выбранные в календаре дату или диапазон дат.
|
|
5
5
|
* Необходимо передать валидную дату в виде строки (массива строк)
|
|
@@ -19,11 +19,6 @@ export interface ICalendarProps {
|
|
|
19
19
|
* @example {dayPickerProps: {showWeekNumbers: true}}
|
|
20
20
|
*/
|
|
21
21
|
pickerProps?: DayPickerProps | any;
|
|
22
|
-
/**
|
|
23
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
24
|
-
* @example MyCustomView
|
|
25
|
-
*/
|
|
26
|
-
view?: CustomView;
|
|
27
22
|
/**
|
|
28
23
|
* Пропсы для компонента отображения
|
|
29
24
|
*/
|
|
@@ -37,10 +32,6 @@ export interface ICalendarProps {
|
|
|
37
32
|
* @example 1
|
|
38
33
|
*/
|
|
39
34
|
numberOfMonths?: number;
|
|
40
|
-
/**
|
|
41
|
-
* Дополнительный CSS-класс
|
|
42
|
-
*/
|
|
43
|
-
className?: CssClassName;
|
|
44
35
|
}
|
|
45
36
|
export interface ICalendarViewProps extends ICalendarProps {
|
|
46
37
|
/**
|
|
@@ -3,16 +3,32 @@ import { IButtonProps } from 'src/ui/form/Button/Button';
|
|
|
3
3
|
import { ILinkProps } from 'src/ui/nav/Link/Link';
|
|
4
4
|
import { IAvatarProps } from '../Avatar/Avatar';
|
|
5
5
|
export interface ICardHeader {
|
|
6
|
+
/**
|
|
7
|
+
* Параметры для аватара
|
|
8
|
+
* @example
|
|
9
|
+
* {
|
|
10
|
+
* src: 'Kate.png',
|
|
11
|
+
* status: true,
|
|
12
|
+
* }
|
|
13
|
+
*/
|
|
6
14
|
avatar?: IAvatarProps;
|
|
15
|
+
/**
|
|
16
|
+
* Отображается ли меню
|
|
17
|
+
* @example true
|
|
18
|
+
*/
|
|
7
19
|
menu?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Текст шапки (заголовок)
|
|
22
|
+
* @example 'Steroids.js head'
|
|
23
|
+
*/
|
|
8
24
|
head?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Текст шапки (заголовок)
|
|
27
|
+
* @example 'Steroids.js subhead'
|
|
28
|
+
*/
|
|
9
29
|
subhead?: string;
|
|
10
30
|
}
|
|
11
|
-
export interface ICardProps {
|
|
12
|
-
/**
|
|
13
|
-
* Дополнительный CSS-класс
|
|
14
|
-
*/
|
|
15
|
-
className?: CssClassName;
|
|
31
|
+
export interface ICardProps extends IUiComponent {
|
|
16
32
|
/**
|
|
17
33
|
* Дочерние элементы
|
|
18
34
|
*/
|
|
@@ -24,11 +40,19 @@ export interface ICardProps {
|
|
|
24
40
|
cover?: string;
|
|
25
41
|
/**
|
|
26
42
|
* Описание карточки
|
|
27
|
-
* @example
|
|
43
|
+
* @example 'Scroll to see more...'
|
|
28
44
|
*/
|
|
29
45
|
description?: string;
|
|
30
46
|
/**
|
|
31
47
|
* Контент хедера
|
|
48
|
+
* @example
|
|
49
|
+
* avatar: {
|
|
50
|
+
* src: 'Kate.png',
|
|
51
|
+
* status: true,
|
|
52
|
+
* },
|
|
53
|
+
* head: 'Header',
|
|
54
|
+
* subhead: 'Subhead',
|
|
55
|
+
* menu: true,
|
|
32
56
|
*/
|
|
33
57
|
header?: ICardHeader;
|
|
34
58
|
/**
|
|
@@ -40,28 +64,17 @@ export interface ICardProps {
|
|
|
40
64
|
};
|
|
41
65
|
/**
|
|
42
66
|
* Коллекция ссылок
|
|
43
|
-
* @example {}
|
|
44
67
|
*/
|
|
45
68
|
links?: ILinkProps[];
|
|
46
69
|
/**
|
|
47
70
|
* Коллекция кнопок
|
|
48
71
|
*/
|
|
49
72
|
buttons?: IButtonProps[];
|
|
50
|
-
/**
|
|
51
|
-
* Объект CSS стилей
|
|
52
|
-
* @example {width: '30px'}
|
|
53
|
-
*/
|
|
54
|
-
style?: CustomStyle;
|
|
55
73
|
/**
|
|
56
74
|
* Заголовок карточки
|
|
57
|
-
* @example
|
|
75
|
+
* @example 'Main card'
|
|
58
76
|
*/
|
|
59
77
|
title?: string;
|
|
60
|
-
/**
|
|
61
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
62
|
-
* @example MyCustomView
|
|
63
|
-
*/
|
|
64
|
-
view?: CustomView;
|
|
65
78
|
}
|
|
66
79
|
export type ICardViewProps = ICardProps;
|
|
67
80
|
declare function Card(props: ICardProps): any;
|