@steroidsjs/core 2.1.0-beta.7 → 2.1.0-beta.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/actions/list.d.ts +1 -0
- package/actions/list.js +1 -0
- package/components/ClientStorageComponent.d.ts +3 -3
- package/components/ClientStorageComponent.js +28 -22
- package/components/HttpComponent.js +32 -15
- package/components/LocaleComponent.js +9 -9
- package/components/MetricsComponent.js +3 -1
- package/components/StoreComponent.d.ts +6 -0
- package/components/StoreComponent.js +5 -6
- package/components/UiComponent.d.ts +1 -1
- package/components/WebSocketComponent.d.ts +1 -1
- package/hoc/components.d.ts +1 -1
- package/hoc/components.js +1 -1
- package/hooks/index.d.ts +2 -1
- package/hooks/index.js +3 -1
- package/hooks/useApplication.d.ts +29 -26
- package/hooks/useApplication.js +17 -82
- package/hooks/useComponents.d.ts +1 -14
- package/hooks/useComponents.js +5 -5
- package/hooks/useDataProvider.js +4 -2
- package/hooks/useDataSelect.d.ts +12 -6
- package/hooks/useDataSelect.js +2 -2
- package/hooks/useFetch.d.ts +11 -3
- package/hooks/useFetch.js +35 -31
- package/hooks/useLayout.d.ts +9 -0
- package/hooks/useLayout.js +64 -44
- package/hooks/useList.d.ts +45 -0
- package/hooks/useList.js +83 -53
- package/hooks/useModel.js +1 -1
- package/hooks/useScreen.d.ts +1 -1
- package/hooks/useScreen.js +2 -2
- package/hooks/useSsr.d.ts +2 -0
- package/hooks/useSsr.js +8 -0
- package/package.json +5 -3
- package/providers/ComponentsProvider.d.ts +26 -0
- package/providers/ComponentsProvider.js +28 -0
- package/providers/ScreenProvider.d.ts +20 -0
- package/providers/ScreenProvider.js +87 -0
- package/providers/SsrProvider.d.ts +17 -0
- package/providers/SsrProvider.js +32 -0
- package/providers/index.d.ts +4 -0
- package/providers/index.js +12 -0
- package/reducers/form.d.ts +1 -1
- package/reducers/form.js +1 -1
- package/reducers/list.js +1 -3
- package/reducers/router.js +1 -1
- package/ui/crud/Crud/Crud.d.ts +1 -1
- package/ui/crud/index.d.ts +1 -0
- package/ui/form/DropDownField/DropDownField.js +2 -1
- package/ui/form/TextField/TextField.d.ts +2 -1
- package/ui/form/TextField/TextField.js +1 -1
- package/ui/icon/Icon/Icon.js +3 -0
- package/ui/layout/Meta/Meta.d.ts +56 -0
- package/ui/layout/Meta/Meta.js +36 -0
- package/ui/layout/Meta/index.d.ts +2 -0
- package/ui/layout/Meta/index.js +7 -0
- package/ui/layout/Notifications/Notifications.js +1 -1
- package/ui/layout/Portal.js +3 -0
- package/ui/nav/Router/Router.d.ts +13 -0
- package/ui/nav/Router/Router.js +1 -1
- package/ui/nav/Router/SsrProvider.d.ts +0 -15
- package/ui/nav/Router/SsrProvider.js +0 -55
package/hooks/useComponents.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
//import {useContext} from 'react';
|
|
3
2
|
exports.__esModule = true;
|
|
3
|
+
var react_1 = require("react");
|
|
4
|
+
var ComponentsProvider_1 = require("../providers/ComponentsProvider");
|
|
4
5
|
function useComponents() {
|
|
5
|
-
|
|
6
|
+
var components = react_1.useContext(ComponentsProvider_1.ComponentsContext);
|
|
7
|
+
if (!process.env.IS_SSR) {
|
|
6
8
|
return window.SteroidsComponents;
|
|
7
9
|
}
|
|
8
|
-
|
|
9
|
-
//return useContext(ComponentsContext);
|
|
10
|
-
return null;
|
|
10
|
+
return components;
|
|
11
11
|
}
|
|
12
12
|
exports["default"] = useComponents;
|
package/hooks/useDataProvider.js
CHANGED
|
@@ -58,6 +58,7 @@ var data_1 = require("../utils/data");
|
|
|
58
58
|
var index_1 = require("./index");
|
|
59
59
|
var fields_1 = require("../reducers/fields");
|
|
60
60
|
var text_1 = require("../utils/text");
|
|
61
|
+
var react_use_1 = require("react-use");
|
|
61
62
|
var defaultProps = {
|
|
62
63
|
autoComplete: {
|
|
63
64
|
enable: false,
|
|
@@ -88,6 +89,7 @@ function useDataProvider(config) {
|
|
|
88
89
|
// Fetch data
|
|
89
90
|
var delayTimerRef = react_1.useRef(null);
|
|
90
91
|
var isAutoFetchedRef = react_1.useRef(false);
|
|
92
|
+
var prevQuery = react_use_1.usePrevious(config.query);
|
|
91
93
|
react_1.useEffect(function () {
|
|
92
94
|
var fetchRemote = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
93
95
|
var searchHandler, result, newItems;
|
|
@@ -129,8 +131,8 @@ function useDataProvider(config) {
|
|
|
129
131
|
if (delayTimerRef.current) {
|
|
130
132
|
clearTimeout(delayTimerRef.current);
|
|
131
133
|
}
|
|
132
|
-
//
|
|
133
|
-
if (
|
|
134
|
+
// Changed query logic
|
|
135
|
+
if (prevQuery !== config.query) {
|
|
134
136
|
// Search with delay
|
|
135
137
|
delayTimerRef.current = setTimeout(fetchRemote, autoComplete.delay);
|
|
136
138
|
}
|
package/hooks/useDataSelect.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
interface IDataSelectItem {
|
|
2
|
+
id: number | string | boolean;
|
|
3
|
+
label?: string;
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
}
|
|
1
6
|
export interface IDataSelectConfig {
|
|
2
7
|
/**
|
|
3
8
|
* Возможность множественного выбора
|
|
@@ -5,14 +10,10 @@ export interface IDataSelectConfig {
|
|
|
5
10
|
*/
|
|
6
11
|
multiple?: boolean;
|
|
7
12
|
/**
|
|
8
|
-
* Список с элементами
|
|
13
|
+
* Список с видимыми элементами
|
|
9
14
|
* @example [{id: 1, label: 'Krasnoyarsk'}, {id: 2, label: 'Moscow'}]
|
|
10
15
|
*/
|
|
11
|
-
items:
|
|
12
|
-
id: number | string | boolean;
|
|
13
|
-
label?: string;
|
|
14
|
-
[key: string]: unknown;
|
|
15
|
-
}[];
|
|
16
|
+
items: IDataSelectItem[];
|
|
16
17
|
/**
|
|
17
18
|
* Сделать активным первый элемент в списке
|
|
18
19
|
* @example true
|
|
@@ -32,6 +33,10 @@ export interface IDataSelectConfig {
|
|
|
32
33
|
* Значение поля в форме
|
|
33
34
|
*/
|
|
34
35
|
inputValue: any;
|
|
36
|
+
/**
|
|
37
|
+
* Список со всеми элементами
|
|
38
|
+
*/
|
|
39
|
+
sourceItems?: IDataSelectItem[];
|
|
35
40
|
}
|
|
36
41
|
export interface IDataSelectResult {
|
|
37
42
|
isOpened: boolean;
|
|
@@ -44,3 +49,4 @@ export interface IDataSelectResult {
|
|
|
44
49
|
setSelectedIds: (ids: PrimaryKey | PrimaryKey[], skipToggle?: boolean) => void;
|
|
45
50
|
}
|
|
46
51
|
export default function useDataSelect(config: IDataSelectConfig): IDataSelectResult;
|
|
52
|
+
export {};
|
package/hooks/useDataSelect.js
CHANGED
|
@@ -80,9 +80,9 @@ function useDataSelect(config) {
|
|
|
80
80
|
// Update selected items on change value
|
|
81
81
|
var prevConfigSelectedIds = react_use_1.usePrevious(config.selectedIds || []);
|
|
82
82
|
react_use_1.useUpdateEffect(function () {
|
|
83
|
-
|
|
83
|
+
var itemsForSelect = config.sourceItems || config.items;
|
|
84
84
|
var newSelectedIds = config.selectedIds && config.selectedIds.length > 0
|
|
85
|
-
?
|
|
85
|
+
? itemsForSelect.map(function (item) { return item[primaryKey]; }).filter(function (id) { return config.selectedIds.includes(id); })
|
|
86
86
|
: [];
|
|
87
87
|
if (!isEqual_1["default"](prevConfigSelectedIds, newSelectedIds) && newSelectedIds.length !== 0) {
|
|
88
88
|
setSelectedIdsInternal(newSelectedIds);
|
package/hooks/useFetch.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import { IComponents } from '
|
|
1
|
+
import { IComponents } from '../providers/ComponentsProvider';
|
|
2
2
|
import { IApiMethod } from '../components/ApiComponent';
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
APP_PRELOADED_DATA: any;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
3
8
|
export interface IFetchConfig {
|
|
4
9
|
id?: string | number;
|
|
5
10
|
url?: string | IApiMethod;
|
|
@@ -18,6 +23,10 @@ export interface IFetchResult {
|
|
|
18
23
|
isLoading: boolean;
|
|
19
24
|
fetch?: (newParams?: Record<string, unknown>) => void;
|
|
20
25
|
}
|
|
26
|
+
export declare const normalizeConfig: (config: any) => any;
|
|
27
|
+
export declare const getConfigId: (config: any) => any;
|
|
28
|
+
export declare const defaultFetchHandler: (config: any, components: any, addCancelToken: any) => any;
|
|
29
|
+
export declare const fetchData: (config: any, components: any, addCancelToken: any) => any;
|
|
21
30
|
/**
|
|
22
31
|
* Fetch
|
|
23
32
|
* Используется для подгрузки данных с бекенда перед рендером компонента, на котором он применяется.
|
|
@@ -25,7 +34,6 @@ export interface IFetchResult {
|
|
|
25
34
|
* которые описывают откуда нужно подтянуть данные.
|
|
26
35
|
*
|
|
27
36
|
* В процесс загрузки HOC будет отображать "Загрузка...", а после уже отрендерит компонент, передав данные в указанный
|
|
28
|
-
* ключ `key`.
|
|
29
|
-
* SSR.
|
|
37
|
+
* ключ `key`.
|
|
30
38
|
*/
|
|
31
39
|
export default function useFetch(rawConfig?: IFetchConfig): IFetchResult;
|
package/hooks/useFetch.js
CHANGED
|
@@ -50,12 +50,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
50
50
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
51
|
};
|
|
52
52
|
exports.__esModule = true;
|
|
53
|
+
exports.fetchData = exports.defaultFetchHandler = exports.getConfigId = exports.normalizeConfig = void 0;
|
|
53
54
|
var react_1 = require("react");
|
|
54
55
|
var react_use_1 = require("react-use");
|
|
56
|
+
var trim_1 = __importDefault(require("lodash-es/trim"));
|
|
55
57
|
var axios_1 = __importDefault(require("axios"));
|
|
58
|
+
var hooks_1 = require("@steroidsjs/core/hooks");
|
|
56
59
|
var index_1 = require("./index");
|
|
57
60
|
var normalizeConfig = function (config) { return (config
|
|
58
61
|
? __assign({ id: null, url: '', method: 'get', params: {}, options: null, onFetch: null }, config) : null); };
|
|
62
|
+
exports.normalizeConfig = normalizeConfig;
|
|
63
|
+
var getConfigId = function (config) {
|
|
64
|
+
var result = trim_1["default"](config.id || config.url, '/');
|
|
65
|
+
if (!result) {
|
|
66
|
+
// eslint-disable-next-line no-console
|
|
67
|
+
console.warn('Please set id for fetch config, it`s necessary for SSR to work properly');
|
|
68
|
+
}
|
|
69
|
+
return result;
|
|
70
|
+
};
|
|
71
|
+
exports.getConfigId = getConfigId;
|
|
59
72
|
var defaultFetchHandler = function (config, components, addCancelToken) {
|
|
60
73
|
var cancelToken = new axios_1["default"].CancelToken(function (cancel) {
|
|
61
74
|
addCancelToken(cancel);
|
|
@@ -67,6 +80,9 @@ var defaultFetchHandler = function (config, components, addCancelToken) {
|
|
|
67
80
|
.send(config.method, config.url, config.params, __assign(__assign({}, config.options), { cancelToken: cancelToken }))
|
|
68
81
|
.then(function (result) { return result.data; });
|
|
69
82
|
};
|
|
83
|
+
exports.defaultFetchHandler = defaultFetchHandler;
|
|
84
|
+
var fetchData = function (config, components, addCancelToken) { return ((config.onFetch || exports.defaultFetchHandler).call(null, config, components, addCancelToken)); };
|
|
85
|
+
exports.fetchData = fetchData;
|
|
70
86
|
/**
|
|
71
87
|
* Fetch
|
|
72
88
|
* Используется для подгрузки данных с бекенда перед рендером компонента, на котором он применяется.
|
|
@@ -74,26 +90,26 @@ var defaultFetchHandler = function (config, components, addCancelToken) {
|
|
|
74
90
|
* которые описывают откуда нужно подтянуть данные.
|
|
75
91
|
*
|
|
76
92
|
* В процесс загрузки HOC будет отображать "Загрузка...", а после уже отрендерит компонент, передав данные в указанный
|
|
77
|
-
* ключ `key`.
|
|
78
|
-
* SSR.
|
|
93
|
+
* ключ `key`.
|
|
79
94
|
*/
|
|
80
95
|
function useFetch(rawConfig) {
|
|
81
96
|
var _this = this;
|
|
82
97
|
if (rawConfig === void 0) { rawConfig = null; }
|
|
83
98
|
var components = index_1.useComponents();
|
|
84
99
|
// Store config in state
|
|
85
|
-
var _a = react_1.useState(normalizeConfig(rawConfig)), config = _a[0], setConfig = _a[1];
|
|
100
|
+
var _a = react_1.useState(exports.normalizeConfig(rawConfig)), config = _a[0], setConfig = _a[1];
|
|
86
101
|
// Update config in state on raw config updated
|
|
87
102
|
react_use_1.useUpdateEffect(function () {
|
|
88
103
|
setConfig(rawConfig);
|
|
89
104
|
}, [rawConfig]);
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
105
|
+
// Get preloaded data
|
|
106
|
+
var configId = exports.getConfigId(config);
|
|
107
|
+
var ssrValueContext = hooks_1.useSsr();
|
|
108
|
+
var preloadedData = process.env.IS_SSR ? ssrValueContext.preloadedData : window.APP_PRELOADED_DATA;
|
|
109
|
+
var preloadedDataByConfigId = (preloadedData && configId) ? preloadedData[configId] : null;
|
|
94
110
|
// State for data and loading flag
|
|
95
|
-
var _b = react_1.useState(null), data = _b[0], setData = _b[1];
|
|
96
|
-
var _c = react_1.useState(!!config), isLoading = _c[0], setIsLoading = _c[1];
|
|
111
|
+
var _b = react_1.useState(preloadedDataByConfigId || null), data = _b[0], setData = _b[1];
|
|
112
|
+
var _c = react_1.useState(!!config && !data), isLoading = _c[0], setIsLoading = _c[1];
|
|
97
113
|
// Cancel tokens
|
|
98
114
|
var cancelTokens = react_1.useRef([]);
|
|
99
115
|
var addCancelToken = function (token) { return cancelTokens.current.push(token); };
|
|
@@ -109,10 +125,11 @@ function useFetch(rawConfig) {
|
|
|
109
125
|
if (newConfig) {
|
|
110
126
|
setConfig(__assign(__assign(__assign({}, config), newConfig), { params: __assign(__assign({}, config === null || config === void 0 ? void 0 : config.params), newConfig === null || newConfig === void 0 ? void 0 : newConfig.params) }));
|
|
111
127
|
}
|
|
128
|
+
setData(null);
|
|
112
129
|
if (!config) return [3 /*break*/, 2];
|
|
113
130
|
setIsLoading(true);
|
|
114
131
|
_a = setData;
|
|
115
|
-
return [4 /*yield*/,
|
|
132
|
+
return [4 /*yield*/, exports.fetchData(config, components, addCancelToken)];
|
|
116
133
|
case 1:
|
|
117
134
|
_a.apply(void 0, [_b.sent()]);
|
|
118
135
|
setIsLoading(false);
|
|
@@ -122,28 +139,15 @@ function useFetch(rawConfig) {
|
|
|
122
139
|
});
|
|
123
140
|
});
|
|
124
141
|
}, [components, config]);
|
|
142
|
+
react_use_1.useEffectOnce(function () {
|
|
143
|
+
if (!data) {
|
|
144
|
+
fetch();
|
|
145
|
+
}
|
|
146
|
+
});
|
|
125
147
|
// Fetch data on config update
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
return __generator(this, function (_b) {
|
|
130
|
-
switch (_b.label) {
|
|
131
|
-
case 0:
|
|
132
|
-
setData(null);
|
|
133
|
-
if (!config) return [3 /*break*/, 2];
|
|
134
|
-
setIsLoading(true);
|
|
135
|
-
_a = setData;
|
|
136
|
-
return [4 /*yield*/, (config.onFetch || defaultFetchHandler).call(null, config, components, addCancelToken)];
|
|
137
|
-
case 1:
|
|
138
|
-
_a.apply(void 0, [_b.sent()]);
|
|
139
|
-
setIsLoading(false);
|
|
140
|
-
_b.label = 2;
|
|
141
|
-
case 2: return [2 /*return*/];
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
}); };
|
|
145
|
-
fetchData();
|
|
146
|
-
}, [components, config]);
|
|
148
|
+
react_use_1.useUpdateEffect(function () {
|
|
149
|
+
fetch();
|
|
150
|
+
}, [fetch]);
|
|
147
151
|
return { data: data, isLoading: isLoading, fetch: fetch };
|
|
148
152
|
}
|
|
149
153
|
exports["default"] = useFetch;
|
package/hooks/useLayout.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { IComponents } from '@steroidsjs/core/providers/ComponentsProvider';
|
|
2
|
+
import { Dispatch } from 'redux';
|
|
1
3
|
export interface ILayout {
|
|
2
4
|
status?: string;
|
|
3
5
|
error?: any;
|
|
@@ -9,4 +11,11 @@ export declare const STATUS_RENDER_ERROR = "render_error";
|
|
|
9
11
|
export declare const STATUS_HTTP_ERROR = "render_error";
|
|
10
12
|
export declare const STATUS_ACCESS_DENIED = "access_denied";
|
|
11
13
|
export declare const STATUS_OK = "ok";
|
|
14
|
+
export declare const HTTP_STATUS_CODES: {
|
|
15
|
+
not_found: number;
|
|
16
|
+
access_denied: number;
|
|
17
|
+
ok: number;
|
|
18
|
+
render_error: number;
|
|
19
|
+
};
|
|
20
|
+
export declare const runInitAction: (initAction: (...args: any[]) => Promise<any>, components: IComponents, dispatch: Dispatch<any>) => Promise<void>;
|
|
12
21
|
export default function useLayout(initAction?: any): ILayout;
|
package/hooks/useLayout.js
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
|
+
var _a;
|
|
5
6
|
exports.__esModule = true;
|
|
6
|
-
exports.STATUS_OK = exports.STATUS_ACCESS_DENIED = exports.STATUS_HTTP_ERROR = exports.STATUS_RENDER_ERROR = exports.STATUS_NOT_FOUND = exports.STATUS_LOADING = void 0;
|
|
7
|
+
exports.runInitAction = exports.HTTP_STATUS_CODES = exports.STATUS_OK = exports.STATUS_ACCESS_DENIED = exports.STATUS_HTTP_ERROR = exports.STATUS_RENDER_ERROR = exports.STATUS_NOT_FOUND = exports.STATUS_LOADING = void 0;
|
|
7
8
|
var react_1 = require("react");
|
|
8
9
|
var isFunction_1 = __importDefault(require("lodash-es/isFunction"));
|
|
9
10
|
var isObject_1 = __importDefault(require("lodash-es/isObject"));
|
|
@@ -11,6 +12,7 @@ var upperFirst_1 = __importDefault(require("lodash-es/upperFirst"));
|
|
|
11
12
|
var merge_1 = __importDefault(require("lodash-es/merge"));
|
|
12
13
|
var intersection_1 = __importDefault(require("lodash-es/intersection"));
|
|
13
14
|
var react_use_1 = require("react-use");
|
|
15
|
+
var useSsr_1 = __importDefault(require("@steroidsjs/core/hooks/useSsr"));
|
|
14
16
|
var useComponents_1 = __importDefault(require("./useComponents"));
|
|
15
17
|
var router_1 = require("../reducers/router");
|
|
16
18
|
var auth_1 = require("../reducers/auth");
|
|
@@ -25,6 +27,58 @@ exports.STATUS_RENDER_ERROR = 'render_error';
|
|
|
25
27
|
exports.STATUS_HTTP_ERROR = 'render_error';
|
|
26
28
|
exports.STATUS_ACCESS_DENIED = 'access_denied';
|
|
27
29
|
exports.STATUS_OK = 'ok';
|
|
30
|
+
exports.HTTP_STATUS_CODES = (_a = {},
|
|
31
|
+
_a[exports.STATUS_NOT_FOUND] = 404,
|
|
32
|
+
_a[exports.STATUS_ACCESS_DENIED] = 403,
|
|
33
|
+
_a[exports.STATUS_OK] = 200,
|
|
34
|
+
_a[exports.STATUS_RENDER_ERROR] = 500,
|
|
35
|
+
_a[exports.STATUS_HTTP_ERROR] = 500,
|
|
36
|
+
_a);
|
|
37
|
+
var runInitAction = function (initAction, components, dispatch) { return (initAction(null, dispatch, components)
|
|
38
|
+
.then(function (result) {
|
|
39
|
+
// Configure components
|
|
40
|
+
if (isObject_1["default"](result.config)) {
|
|
41
|
+
Object.keys(result.config).forEach(function (name) {
|
|
42
|
+
if (!components[name]) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
Object.keys(result.config[name]).forEach(function (key) {
|
|
46
|
+
var value = result.config[name][key];
|
|
47
|
+
var setter = 'set' + upperFirst_1["default"](key);
|
|
48
|
+
if (isFunction_1["default"](components[name][setter])) {
|
|
49
|
+
components[name][setter](value);
|
|
50
|
+
}
|
|
51
|
+
else if (isObject_1["default"](components[name][key])
|
|
52
|
+
&& isObject_1["default"](value)) {
|
|
53
|
+
merge_1["default"](components[name][key], value);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
components[name][key] = value;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
var resultMeta = result.meta;
|
|
62
|
+
var resultUser = result.user;
|
|
63
|
+
delete result.user;
|
|
64
|
+
delete result.meta;
|
|
65
|
+
if (resultMeta) {
|
|
66
|
+
Object.keys(resultMeta).forEach(function (modelName) {
|
|
67
|
+
if (resultMeta[modelName].attributes) {
|
|
68
|
+
components.meta.setModel(modelName, resultMeta[modelName]);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
dispatch([
|
|
73
|
+
// Meta models & enums
|
|
74
|
+
Boolean(resultMeta) && fields_1.setMeta(resultMeta),
|
|
75
|
+
// User auth
|
|
76
|
+
auth_2.setData(result),
|
|
77
|
+
// User auth
|
|
78
|
+
auth_2.setUser(resultUser),
|
|
79
|
+
].filter(Boolean));
|
|
80
|
+
})); };
|
|
81
|
+
exports.runInitAction = runInitAction;
|
|
28
82
|
function useLayout(initAction) {
|
|
29
83
|
if (initAction === void 0) { initAction = null; }
|
|
30
84
|
var _a = useSelector_1["default"](function (state) { return ({
|
|
@@ -52,50 +106,11 @@ function useLayout(initAction) {
|
|
|
52
106
|
if (!isFunction_1["default"](initAction) || initializeCounter <= initializeCounterPrev) {
|
|
53
107
|
return;
|
|
54
108
|
}
|
|
55
|
-
initAction
|
|
56
|
-
.then(function (
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
Object.keys(result.config).forEach(function (name) {
|
|
60
|
-
if (!components[name]) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
Object.keys(result.config[name]).forEach(function (key) {
|
|
64
|
-
var value = result.config[name][key];
|
|
65
|
-
var setter = 'set' + upperFirst_1["default"](key);
|
|
66
|
-
if (isFunction_1["default"](components[name][setter])) {
|
|
67
|
-
components[name][setter](value);
|
|
68
|
-
}
|
|
69
|
-
else if (isObject_1["default"](components[name][key])
|
|
70
|
-
&& isObject_1["default"](value)) {
|
|
71
|
-
merge_1["default"](components[name][key], value);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
components[name][key] = value;
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
});
|
|
109
|
+
exports.runInitAction(initAction, components, dispatch)
|
|
110
|
+
.then(function () {
|
|
111
|
+
if (redirectPageId) {
|
|
112
|
+
dispatch(router_2.goToRoute(redirectPageId));
|
|
78
113
|
}
|
|
79
|
-
var resultMeta = result.meta;
|
|
80
|
-
var resultUser = result.user;
|
|
81
|
-
delete result.user;
|
|
82
|
-
delete result.meta;
|
|
83
|
-
if (resultMeta) {
|
|
84
|
-
Object.keys(resultMeta).forEach(function (modelName) {
|
|
85
|
-
if (resultMeta[modelName].attributes) {
|
|
86
|
-
components.meta.setModel(modelName, resultMeta[modelName]);
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
dispatch([
|
|
91
|
-
// Meta models & enums
|
|
92
|
-
Boolean(resultMeta) && fields_1.setMeta(resultMeta),
|
|
93
|
-
// User auth
|
|
94
|
-
auth_2.setData(result),
|
|
95
|
-
// User auth
|
|
96
|
-
auth_2.setUser(resultUser),
|
|
97
|
-
redirectPageId && router_2.goToRoute(redirectPageId),
|
|
98
|
-
].filter(Boolean));
|
|
99
114
|
})["catch"](function (e) {
|
|
100
115
|
setError(e);
|
|
101
116
|
throw e;
|
|
@@ -125,6 +140,11 @@ function useLayout(initAction) {
|
|
|
125
140
|
}
|
|
126
141
|
}
|
|
127
142
|
}
|
|
143
|
+
//save status code for ssr
|
|
144
|
+
var ssrContextValue = useSsr_1["default"]();
|
|
145
|
+
if (process.env.IS_SSR) {
|
|
146
|
+
ssrContextValue.staticContext.statusCode = exports.HTTP_STATUS_CODES[status];
|
|
147
|
+
}
|
|
128
148
|
return {
|
|
129
149
|
status: status,
|
|
130
150
|
error: error,
|
package/hooks/useList.d.ts
CHANGED
|
@@ -145,6 +145,51 @@ export interface IListOutput {
|
|
|
145
145
|
onFetch: (params?: Record<string, unknown>) => void;
|
|
146
146
|
onSort: (value: any) => void;
|
|
147
147
|
}
|
|
148
|
+
export declare const defaultConfig: {
|
|
149
|
+
actionMethod: string;
|
|
150
|
+
primaryKey: string;
|
|
151
|
+
autoDestroy: boolean;
|
|
152
|
+
sort: {
|
|
153
|
+
enable: boolean;
|
|
154
|
+
attribute: string;
|
|
155
|
+
defaultValue: any;
|
|
156
|
+
};
|
|
157
|
+
addressBar: {
|
|
158
|
+
enable: boolean;
|
|
159
|
+
useHash: boolean;
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
export declare const normalizeSortProps: (props: IListConfig['sort']) => {
|
|
163
|
+
enable: boolean;
|
|
164
|
+
attribute: string;
|
|
165
|
+
defaultValue: any;
|
|
166
|
+
};
|
|
167
|
+
export declare const getDefaultSearchModel: ({ paginationProps, paginationSizeProps, sort, layoutNamesProps, }: {
|
|
168
|
+
paginationProps: any;
|
|
169
|
+
paginationSizeProps: any;
|
|
170
|
+
sort: any;
|
|
171
|
+
layoutNamesProps: any;
|
|
172
|
+
}) => {
|
|
173
|
+
attributes: ({
|
|
174
|
+
type: string;
|
|
175
|
+
attribute: any;
|
|
176
|
+
defaultValue: any;
|
|
177
|
+
jsType?: undefined;
|
|
178
|
+
} | {
|
|
179
|
+
type: string;
|
|
180
|
+
jsType: string;
|
|
181
|
+
attribute: any;
|
|
182
|
+
defaultValue: any;
|
|
183
|
+
})[];
|
|
184
|
+
};
|
|
185
|
+
export declare const createInitialValues: ({ paginationProps, paginationSizeProps, sort, layoutNamesProps, initialQuery, configQuery, }: {
|
|
186
|
+
paginationProps: any;
|
|
187
|
+
paginationSizeProps: any;
|
|
188
|
+
sort: any;
|
|
189
|
+
layoutNamesProps: any;
|
|
190
|
+
initialQuery: any;
|
|
191
|
+
configQuery: any;
|
|
192
|
+
}) => any;
|
|
148
193
|
/**
|
|
149
194
|
* useList
|
|
150
195
|
* Добавляет массу возможностей для взаимодействия с коллекциями. Коллекции можно получать как с бекенда,
|