@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.
Files changed (62) hide show
  1. package/actions/list.d.ts +1 -0
  2. package/actions/list.js +1 -0
  3. package/components/ClientStorageComponent.d.ts +3 -3
  4. package/components/ClientStorageComponent.js +28 -22
  5. package/components/HttpComponent.js +32 -15
  6. package/components/LocaleComponent.js +9 -9
  7. package/components/MetricsComponent.js +3 -1
  8. package/components/StoreComponent.d.ts +6 -0
  9. package/components/StoreComponent.js +5 -6
  10. package/components/UiComponent.d.ts +1 -1
  11. package/components/WebSocketComponent.d.ts +1 -1
  12. package/hoc/components.d.ts +1 -1
  13. package/hoc/components.js +1 -1
  14. package/hooks/index.d.ts +2 -1
  15. package/hooks/index.js +3 -1
  16. package/hooks/useApplication.d.ts +29 -26
  17. package/hooks/useApplication.js +17 -82
  18. package/hooks/useComponents.d.ts +1 -14
  19. package/hooks/useComponents.js +5 -5
  20. package/hooks/useDataProvider.js +4 -2
  21. package/hooks/useDataSelect.d.ts +12 -6
  22. package/hooks/useDataSelect.js +2 -2
  23. package/hooks/useFetch.d.ts +11 -3
  24. package/hooks/useFetch.js +35 -31
  25. package/hooks/useLayout.d.ts +9 -0
  26. package/hooks/useLayout.js +64 -44
  27. package/hooks/useList.d.ts +45 -0
  28. package/hooks/useList.js +83 -53
  29. package/hooks/useModel.js +1 -1
  30. package/hooks/useScreen.d.ts +1 -1
  31. package/hooks/useScreen.js +2 -2
  32. package/hooks/useSsr.d.ts +2 -0
  33. package/hooks/useSsr.js +8 -0
  34. package/package.json +5 -3
  35. package/providers/ComponentsProvider.d.ts +26 -0
  36. package/providers/ComponentsProvider.js +28 -0
  37. package/providers/ScreenProvider.d.ts +20 -0
  38. package/providers/ScreenProvider.js +87 -0
  39. package/providers/SsrProvider.d.ts +17 -0
  40. package/providers/SsrProvider.js +32 -0
  41. package/providers/index.d.ts +4 -0
  42. package/providers/index.js +12 -0
  43. package/reducers/form.d.ts +1 -1
  44. package/reducers/form.js +1 -1
  45. package/reducers/list.js +1 -3
  46. package/reducers/router.js +1 -1
  47. package/ui/crud/Crud/Crud.d.ts +1 -1
  48. package/ui/crud/index.d.ts +1 -0
  49. package/ui/form/DropDownField/DropDownField.js +2 -1
  50. package/ui/form/TextField/TextField.d.ts +2 -1
  51. package/ui/form/TextField/TextField.js +1 -1
  52. package/ui/icon/Icon/Icon.js +3 -0
  53. package/ui/layout/Meta/Meta.d.ts +56 -0
  54. package/ui/layout/Meta/Meta.js +36 -0
  55. package/ui/layout/Meta/index.d.ts +2 -0
  56. package/ui/layout/Meta/index.js +7 -0
  57. package/ui/layout/Notifications/Notifications.js +1 -1
  58. package/ui/layout/Portal.js +3 -0
  59. package/ui/nav/Router/Router.d.ts +13 -0
  60. package/ui/nav/Router/Router.js +1 -1
  61. package/ui/nav/Router/SsrProvider.d.ts +0 -15
  62. package/ui/nav/Router/SsrProvider.js +0 -55
@@ -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
- if (typeof window !== 'undefined' && window.SteroidsComponents) {
6
+ var components = react_1.useContext(ComponentsProvider_1.ComponentsContext);
7
+ if (!process.env.IS_SSR) {
6
8
  return window.SteroidsComponents;
7
9
  }
8
- // TODO Get components from context
9
- //return useContext(ComponentsContext);
10
- return null;
10
+ return components;
11
11
  }
12
12
  exports["default"] = useComponents;
@@ -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
- // Min length query logic
133
- if (config.query && config.query.length >= autoComplete.minLength) {
134
+ // Changed query logic
135
+ if (prevQuery !== config.query) {
134
136
  // Search with delay
135
137
  delayTimerRef.current = setTimeout(fetchRemote, autoComplete.delay);
136
138
  }
@@ -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 {};
@@ -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
- // console.log(config.selectedIds, prevConfigSelectedIds);
83
+ var itemsForSelect = config.sourceItems || config.items;
84
84
  var newSelectedIds = config.selectedIds && config.selectedIds.length > 0
85
- ? config.items.map(function (item) { return item[primaryKey]; }).filter(function (id) { return config.selectedIds.includes(id); })
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);
@@ -1,5 +1,10 @@
1
- import { IComponents } from './useComponents';
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`. Все данные сохраняются в Redux Store, что позволяет избежать дополнительных запросов при использовании
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`. Все данные сохраняются в Redux Store, что позволяет избежать дополнительных запросов при использовании
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
- // Resolve config id
91
- // TODO Get initial state from HttpComponent (for SSR) by configId
92
- //const idRef = useRef(_uniqueId('fetch'));
93
- //const configId = config ? _trim(config.id || config.url || idRef.current, '/') : null;
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*/, (config.onFetch || defaultFetchHandler).call(null, config, components, addCancelToken)];
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
- react_1.useLayoutEffect(function () {
127
- var fetchData = function () { return __awaiter(_this, void 0, void 0, function () {
128
- var _a;
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;
@@ -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;
@@ -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(null, dispatch)
56
- .then(function (result) {
57
- // Configure components
58
- if (isObject_1["default"](result.config)) {
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,
@@ -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
  * Добавляет массу возможностей для взаимодействия с коллекциями. Коллекции можно получать как с бекенда,