@steroidsjs/core 3.0.91 → 3.0.92
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.js +0 -20
- package/actions/notifications.d.ts +4 -1
- package/components/ClientStorageComponent.d.ts +1 -7
- package/components/ClientStorageComponent.js +14 -12
- package/docs-autogen-result.json +35 -31
- package/en.json +2 -2
- package/hooks/useList.js +1 -1
- package/package.json +1 -1
- package/ui/content/Alert/Alert.d.ts +1 -1
- package/ui/layout/Notifications/Notifications.d.ts +4 -0
- package/ui/list/TreeTable/TreeTable.d.ts +9 -1
- package/ui/list/TreeTable/TreeTable.js +93 -11
package/actions/list.js
CHANGED
|
@@ -42,26 +42,6 @@ exports.LIST_CHANGE_ACTION = '@list/change_action';
|
|
|
42
42
|
exports.LIST_SELECT_ITEM = '@list/select_item';
|
|
43
43
|
//const STORAGE_LAYOUT_KEY_PREFIX = 'listLayout_';
|
|
44
44
|
var lazyTimers = {};
|
|
45
|
-
var createList = function (listId, props) { return ({
|
|
46
|
-
action: props.action || props.action === '' ? props.action : null,
|
|
47
|
-
actionMethod: props.actionMethod || 'get',
|
|
48
|
-
onFetch: props.onFetch,
|
|
49
|
-
onError: props.onError,
|
|
50
|
-
condition: props.condition,
|
|
51
|
-
scope: props.scope,
|
|
52
|
-
total: props.total || null,
|
|
53
|
-
items: null,
|
|
54
|
-
sourceItems: props.items || null,
|
|
55
|
-
isRemote: !props.items,
|
|
56
|
-
loadMore: props._pagination.loadMore,
|
|
57
|
-
primaryKey: props.primaryKey,
|
|
58
|
-
listId: listId,
|
|
59
|
-
formId: (0, get_1["default"])(props, 'searchForm.formId') || listId,
|
|
60
|
-
pageAttribute: (0, get_1["default"])(props, '_pagination.attribute') || null,
|
|
61
|
-
pageSizeAttribute: (0, get_1["default"])(props, '_paginationSize.attribute') || null,
|
|
62
|
-
sortAttribute: (0, get_1["default"])(props, '_sort.attribute') || null,
|
|
63
|
-
layoutAttribute: (0, get_1["default"])(props, '_layout.attribute') || null
|
|
64
|
-
}); };
|
|
65
45
|
var httpFetchHandler = function (list, query, _a, options) {
|
|
66
46
|
var http = _a.http;
|
|
67
47
|
if (options === void 0) { options = {}; }
|
|
@@ -9,5 +9,8 @@ export declare const closeNotification: (id?: string | null) => {
|
|
|
9
9
|
type: string;
|
|
10
10
|
id: string;
|
|
11
11
|
};
|
|
12
|
-
export declare const showNotification: (message: string
|
|
12
|
+
export declare const showNotification: (message: string | {
|
|
13
|
+
message: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
}, level?: ColorName, params?: IShowNotificationParameters) => (dispatch: any) => void;
|
|
13
16
|
export declare const setFlashes: (flashes: any) => ((dispatch: any) => void)[][];
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
export interface IClientStorageComponentConfig {
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*/
|
|
5
|
-
domain?: string;
|
|
6
|
-
/**
|
|
7
|
-
* Автоматически устанавливает куку для всех поддоменов текущего домена,
|
|
8
|
-
* но только если параметр domain не указан явно
|
|
3
|
+
* Позволяет использовать cookie на всех поддоменах (по умолчанию, false)
|
|
9
4
|
*/
|
|
10
5
|
shareBetweenSubdomains?: boolean;
|
|
11
6
|
/**
|
|
@@ -49,7 +44,6 @@ export default class ClientStorageComponent implements IClientStorageComponent {
|
|
|
49
44
|
STORAGE_SESSION: any;
|
|
50
45
|
localStorageAvailable: boolean;
|
|
51
46
|
sessionStorageAvailable: boolean;
|
|
52
|
-
domain?: string;
|
|
53
47
|
shareBetweenSubdomains?: boolean;
|
|
54
48
|
private _ssrCookie;
|
|
55
49
|
constructor(components: any, config: any);
|
|
@@ -62,7 +62,6 @@ var ClientStorageComponent = /** @class */ (function () {
|
|
|
62
62
|
this.sessionStorageAvailable = false;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
this.domain = (config === null || config === void 0 ? void 0 : config.domain) || null;
|
|
66
65
|
this.shareBetweenSubdomains = (_a = config === null || config === void 0 ? void 0 : config.shareBetweenSubdomains) !== null && _a !== void 0 ? _a : false;
|
|
67
66
|
this._ssrCookie = config === null || config === void 0 ? void 0 : config.ssrCookie;
|
|
68
67
|
}
|
|
@@ -88,10 +87,13 @@ var ClientStorageComponent = /** @class */ (function () {
|
|
|
88
87
|
window.sessionStorage.setItem(name, value);
|
|
89
88
|
}
|
|
90
89
|
else {
|
|
90
|
+
var domain = this._getDomain();
|
|
91
91
|
var options = {
|
|
92
|
-
expires: expires
|
|
93
|
-
domain: this._getDomain()
|
|
92
|
+
expires: expires
|
|
94
93
|
};
|
|
94
|
+
if (domain) {
|
|
95
|
+
options.domain = domain;
|
|
96
|
+
}
|
|
95
97
|
if (expires && process.env.IS_SSR) {
|
|
96
98
|
options.expires = (0, dayjs_1["default"])().add(options.expires, 'days').utc().toDate();
|
|
97
99
|
}
|
|
@@ -108,27 +110,27 @@ var ClientStorageComponent = /** @class */ (function () {
|
|
|
108
110
|
window.sessionStorage.removeItem(name);
|
|
109
111
|
}
|
|
110
112
|
else {
|
|
111
|
-
var
|
|
112
|
-
|
|
113
|
-
|
|
113
|
+
var domain = this._getDomain();
|
|
114
|
+
var options = {};
|
|
115
|
+
if (domain) {
|
|
116
|
+
options.domain = domain;
|
|
117
|
+
}
|
|
114
118
|
process.env.IS_SSR ? this._ssrCookie.remove(name, options) : cookie.remove(name, options);
|
|
115
119
|
}
|
|
116
120
|
};
|
|
117
121
|
ClientStorageComponent.prototype._getDomain = function () {
|
|
118
|
-
if (this.domain) {
|
|
119
|
-
return this.domain;
|
|
120
|
-
}
|
|
121
|
-
var host = typeof window !== 'undefined' ? window.location.hostname : '';
|
|
122
122
|
if (this.shareBetweenSubdomains) {
|
|
123
|
+
var host = typeof window !== 'undefined' ? window.location.hostname : '';
|
|
123
124
|
var isIp = /^\d{1,3}(\.\d{1,3}){3}$/.test(host);
|
|
124
|
-
|
|
125
|
+
var isLocalhost = host === 'localhost';
|
|
126
|
+
if (!isIp && !isLocalhost) {
|
|
125
127
|
return host
|
|
126
128
|
.split('.')
|
|
127
129
|
.slice(-2)
|
|
128
130
|
.join('.');
|
|
129
131
|
}
|
|
130
132
|
}
|
|
131
|
-
return
|
|
133
|
+
return null;
|
|
132
134
|
};
|
|
133
135
|
return ClientStorageComponent;
|
|
134
136
|
}());
|
package/docs-autogen-result.json
CHANGED
|
@@ -298,18 +298,10 @@
|
|
|
298
298
|
"IClientStorageComponentConfig"
|
|
299
299
|
],
|
|
300
300
|
"properties": [
|
|
301
|
-
{
|
|
302
|
-
"name": "domain",
|
|
303
|
-
"decorators": [],
|
|
304
|
-
"description": "Кастомный домен для куки",
|
|
305
|
-
"required": false,
|
|
306
|
-
"type": "string",
|
|
307
|
-
"example": null
|
|
308
|
-
},
|
|
309
301
|
{
|
|
310
302
|
"name": "shareBetweenSubdomains",
|
|
311
303
|
"decorators": [],
|
|
312
|
-
"description": "
|
|
304
|
+
"description": "Позволяет использовать cookie на всех поддоменах (по умолчанию, false)",
|
|
313
305
|
"required": false,
|
|
314
306
|
"type": "boolean",
|
|
315
307
|
"example": null
|
|
@@ -429,18 +421,10 @@
|
|
|
429
421
|
"defaultProps": null,
|
|
430
422
|
"extends": [],
|
|
431
423
|
"properties": [
|
|
432
|
-
{
|
|
433
|
-
"name": "domain",
|
|
434
|
-
"decorators": [],
|
|
435
|
-
"description": "Кастомный домен для куки",
|
|
436
|
-
"required": false,
|
|
437
|
-
"type": "string",
|
|
438
|
-
"example": null
|
|
439
|
-
},
|
|
440
424
|
{
|
|
441
425
|
"name": "shareBetweenSubdomains",
|
|
442
426
|
"decorators": [],
|
|
443
|
-
"description": "
|
|
427
|
+
"description": "Позволяет использовать cookie на всех поддоменах (по умолчанию, false)",
|
|
444
428
|
"required": false,
|
|
445
429
|
"type": "boolean",
|
|
446
430
|
"example": null
|
|
@@ -6241,7 +6225,7 @@
|
|
|
6241
6225
|
{
|
|
6242
6226
|
"name": "description",
|
|
6243
6227
|
"decorators": [],
|
|
6244
|
-
"description": "Дополнительное
|
|
6228
|
+
"description": "Дополнительное содержание сообщения.",
|
|
6245
6229
|
"required": false,
|
|
6246
6230
|
"type": "string",
|
|
6247
6231
|
"example": "'Please, check your email.'",
|
|
@@ -6360,7 +6344,7 @@
|
|
|
6360
6344
|
{
|
|
6361
6345
|
"name": "description",
|
|
6362
6346
|
"decorators": [],
|
|
6363
|
-
"description": "Дополнительное
|
|
6347
|
+
"description": "Дополнительное содержание сообщения.",
|
|
6364
6348
|
"required": false,
|
|
6365
6349
|
"type": "string",
|
|
6366
6350
|
"example": "'Please, check your email.'"
|
|
@@ -32382,6 +32366,14 @@
|
|
|
32382
32366
|
"INotificationItem"
|
|
32383
32367
|
],
|
|
32384
32368
|
"properties": [
|
|
32369
|
+
{
|
|
32370
|
+
"name": "description",
|
|
32371
|
+
"decorators": [],
|
|
32372
|
+
"description": "Дополнительное содержание сообщения.",
|
|
32373
|
+
"required": false,
|
|
32374
|
+
"type": "string",
|
|
32375
|
+
"example": "'Успешно сохранено'"
|
|
32376
|
+
},
|
|
32385
32377
|
{
|
|
32386
32378
|
"name": "id",
|
|
32387
32379
|
"decorators": [],
|
|
@@ -37935,12 +37927,14 @@
|
|
|
37935
37927
|
"defaultProps": {
|
|
37936
37928
|
"alwaysOpened": "false",
|
|
37937
37929
|
"collapseChildItems": "false",
|
|
37930
|
+
"hasAlternatingColors": "false",
|
|
37938
37931
|
"levelPadding": "32",
|
|
37939
|
-
"saveInClientStorage": "false"
|
|
37932
|
+
"saveInClientStorage": "false",
|
|
37933
|
+
"size": "'md'"
|
|
37940
37934
|
},
|
|
37941
37935
|
"extends": [
|
|
37942
37936
|
"Omit<IGridProps",
|
|
37943
|
-
"'items'>",
|
|
37937
|
+
"'items' | 'itemsIndexing'>",
|
|
37944
37938
|
"Pick<ITreeProps",
|
|
37945
37939
|
"'alwaysOpened' | 'levelPadding' | 'customIcon' | 'saveInClientStorage' | 'collapseChildItems'>"
|
|
37946
37940
|
],
|
|
@@ -37990,6 +37984,24 @@
|
|
|
37990
37984
|
"example": "[\n {\n id: 1,\n name: 'Jane'\n },\n {\n id: 2,\n name: 'John',\n items: [...]\n }\n]",
|
|
37991
37985
|
"defaultValue": null
|
|
37992
37986
|
},
|
|
37987
|
+
{
|
|
37988
|
+
"name": "itemsIndexing",
|
|
37989
|
+
"decorators": [],
|
|
37990
|
+
"description": "",
|
|
37991
|
+
"required": false,
|
|
37992
|
+
"type": "never",
|
|
37993
|
+
"example": null,
|
|
37994
|
+
"defaultValue": null
|
|
37995
|
+
},
|
|
37996
|
+
{
|
|
37997
|
+
"name": "itemsKey",
|
|
37998
|
+
"decorators": [],
|
|
37999
|
+
"description": "Ключ для доступа к вложенным элементам узла",
|
|
38000
|
+
"required": false,
|
|
38001
|
+
"type": "string",
|
|
38002
|
+
"example": "'items'",
|
|
38003
|
+
"defaultValue": null
|
|
38004
|
+
},
|
|
37993
38005
|
{
|
|
37994
38006
|
"name": "levelPadding",
|
|
37995
38007
|
"decorators": [],
|
|
@@ -41382,18 +41394,10 @@
|
|
|
41382
41394
|
"description": "Слой хранения данных в браузере (cookie, local/session storage) или ReactNative",
|
|
41383
41395
|
"tags": {},
|
|
41384
41396
|
"properties": [
|
|
41385
|
-
{
|
|
41386
|
-
"name": "domain",
|
|
41387
|
-
"decorators": [],
|
|
41388
|
-
"description": "Кастомный домен для куки",
|
|
41389
|
-
"required": false,
|
|
41390
|
-
"type": "string",
|
|
41391
|
-
"example": null
|
|
41392
|
-
},
|
|
41393
41397
|
{
|
|
41394
41398
|
"name": "shareBetweenSubdomains",
|
|
41395
41399
|
"decorators": [],
|
|
41396
|
-
"description": "
|
|
41400
|
+
"description": "Позволяет использовать cookie на всех поддоменах (по умолчанию, false)",
|
|
41397
41401
|
"required": false,
|
|
41398
41402
|
"type": "boolean",
|
|
41399
41403
|
"example": null
|
package/en.json
CHANGED
|
@@ -1045,9 +1045,9 @@
|
|
|
1045
1045
|
"\nКомпонент поля ввода текста с маской.\n": "A text input field component with a mask.",
|
|
1046
1046
|
"\nКомпонент Tooltip предоставляет всплывающую подсказку для дочерних элементов.\nВнутри компонента, то есть между тегами Tooltip можно использовать только html теги, например div, span и тд\n": "The Tooltip component provides a popup hint for child elements.\nInside the component, that is, between the Tooltip tags, you can only use HTML tags, e.g., div, span, etc.",
|
|
1047
1047
|
"Логическое значение, указывающее, есть ли еще элементы в списке с бесконечным скроллом": "",
|
|
1048
|
-
"
|
|
1049
|
-
" Автоматически устанавливает куку для всех поддоменов текущего домена,\n но только если параметр domain не указан явно": "",
|
|
1048
|
+
"Позволяет использовать cookie на всех поддоменах (по умолчанию, false)": "",
|
|
1050
1049
|
"Задержка в мс": "",
|
|
1050
|
+
"Дополнительное содержание сообщения.": "",
|
|
1051
1051
|
"Задержка применения введённого значения": "",
|
|
1052
1052
|
"Флаг, который указывает, что высота поля должна быть равна высоте контента": ""
|
|
1053
1053
|
}
|
package/hooks/useList.js
CHANGED
|
@@ -280,7 +280,7 @@ function useList(config) {
|
|
|
280
280
|
dispatch([
|
|
281
281
|
(0, list_2.listSetItems)(config.listId, config.items),
|
|
282
282
|
]);
|
|
283
|
-
}, [dispatch, config.items, config.listId]);
|
|
283
|
+
}, [dispatch, config.items, config.listId, list === null || list === void 0 ? void 0 : list.isFetched]);
|
|
284
284
|
// Check change action
|
|
285
285
|
var prevAction = (0, react_use_1.usePrevious)(config.action);
|
|
286
286
|
(0, react_use_1.useUpdateEffect)(function () {
|
package/package.json
CHANGED
|
@@ -30,7 +30,7 @@ export interface IAlertProps extends IUiComponent {
|
|
|
30
30
|
* @example 'Sending is confirmed!'
|
|
31
31
|
*/
|
|
32
32
|
message?: string;
|
|
33
|
-
/** Дополнительное
|
|
33
|
+
/** Дополнительное содержание сообщения.
|
|
34
34
|
* @example 'Please, check your email.'
|
|
35
35
|
*/
|
|
36
36
|
description?: string;
|
|
@@ -10,7 +10,7 @@ export interface ITreeColumnViewProps extends IColumnViewProps, Pick<ITreeTableP
|
|
|
10
10
|
*
|
|
11
11
|
* Компонент для представления данных коллекции в виде иерархической структуры.
|
|
12
12
|
*/
|
|
13
|
-
export interface ITreeTableProps extends Omit<IGridProps, 'items'>, Pick<ITreeProps, 'alwaysOpened' | 'levelPadding' | 'customIcon' | 'saveInClientStorage' | 'collapseChildItems'> {
|
|
13
|
+
export interface ITreeTableProps extends Omit<IGridProps, 'items' | 'itemsIndexing'>, Pick<ITreeProps, 'alwaysOpened' | 'levelPadding' | 'customIcon' | 'saveInClientStorage' | 'collapseChildItems'> {
|
|
14
14
|
/**
|
|
15
15
|
* Элементы коллекции
|
|
16
16
|
* @example
|
|
@@ -37,6 +37,12 @@ export interface ITreeTableProps extends Omit<IGridProps, 'items'>, Pick<ITreePr
|
|
|
37
37
|
* @example 'arrow'
|
|
38
38
|
*/
|
|
39
39
|
customIcon?: string | React.ReactElement;
|
|
40
|
+
/**
|
|
41
|
+
* Ключ для доступа к вложенным элементам узла
|
|
42
|
+
* @example 'items'
|
|
43
|
+
*/
|
|
44
|
+
itemsKey?: string;
|
|
45
|
+
itemsIndexing?: never;
|
|
40
46
|
}
|
|
41
47
|
export declare const addTreeColumnFieldsToFirstColumn: (columns: IGridColumn[], levelPadding: string | number, customIcon?: string | React.ReactElement) => IGridColumn[];
|
|
42
48
|
declare function TreeTable(props: ITreeTableProps): JSX.Element;
|
|
@@ -46,6 +52,8 @@ declare namespace TreeTable {
|
|
|
46
52
|
alwaysOpened: boolean;
|
|
47
53
|
saveInClientStorage: boolean;
|
|
48
54
|
collapseChildItems: boolean;
|
|
55
|
+
size: string;
|
|
56
|
+
hasAlternatingColors: boolean;
|
|
49
57
|
};
|
|
50
58
|
}
|
|
51
59
|
export default TreeTable;
|
|
@@ -50,10 +50,13 @@ exports.addTreeColumnFieldsToFirstColumn = void 0;
|
|
|
50
50
|
var React = __importStar(require("react"));
|
|
51
51
|
var react_1 = require("react");
|
|
52
52
|
var merge_1 = __importDefault(require("lodash-es/merge"));
|
|
53
|
-
var
|
|
53
|
+
var Format_1 = __importDefault(require("@steroidsjs/core/ui/format/Format"));
|
|
54
|
+
var ControlsColumn_1 = __importDefault(require("@steroidsjs/core/ui/list/ControlsColumn"));
|
|
55
|
+
var upperFirst_1 = __importDefault(require("lodash-es/upperFirst"));
|
|
56
|
+
var isString_1 = __importDefault(require("lodash-es/isString"));
|
|
57
|
+
var hooks_1 = require("@steroidsjs/core/hooks");
|
|
54
58
|
var useTree_1 = __importDefault(require("../../../hooks/useTree"));
|
|
55
|
-
var
|
|
56
|
-
var useSelector_1 = __importDefault(require("../../../hooks/useSelector"));
|
|
59
|
+
var useList_1 = __importDefault(require("../../../hooks/useList"));
|
|
57
60
|
var TREE_COLUMN_VIEW_FIELDS = {
|
|
58
61
|
valueView: 'TreeColumnView',
|
|
59
62
|
headerClassName: 'TreeColumnHeader'
|
|
@@ -66,25 +69,104 @@ var addTreeColumnFieldsToFirstColumn = function (columns, levelPadding, customIc
|
|
|
66
69
|
};
|
|
67
70
|
exports.addTreeColumnFieldsToFirstColumn = addTreeColumnFieldsToFirstColumn;
|
|
68
71
|
function TreeTable(props) {
|
|
69
|
-
var
|
|
70
|
-
var
|
|
71
|
-
var
|
|
72
|
+
var components = (0, hooks_1.useComponents)();
|
|
73
|
+
var mergedColumns = (0, react_1.useMemo)(function () { return (0, exports.addTreeColumnFieldsToFirstColumn)(props.columns, props.levelPadding, props.customIcon); }, [props.columns, props.customIcon, props.levelPadding]);
|
|
74
|
+
var _a = (0, useList_1["default"])({
|
|
75
|
+
listId: props.listId,
|
|
76
|
+
primaryKey: props.primaryKey,
|
|
77
|
+
action: props.action,
|
|
78
|
+
actionMethod: props.actionMethod,
|
|
79
|
+
pagination: props.pagination,
|
|
80
|
+
paginationSize: props.paginationSize,
|
|
81
|
+
infiniteScroll: props.infiniteScroll,
|
|
82
|
+
sort: props.sort,
|
|
83
|
+
layout: props.layout,
|
|
84
|
+
empty: props.empty,
|
|
85
|
+
searchForm: props.searchForm,
|
|
86
|
+
autoDestroy: props.autoDestroy,
|
|
87
|
+
onFetch: props.onFetch,
|
|
88
|
+
condition: props.condition,
|
|
89
|
+
addressBar: props.addressBar,
|
|
90
|
+
scope: props.scope,
|
|
91
|
+
query: props.query,
|
|
92
|
+
model: props.model,
|
|
93
|
+
searchModel: props.searchModel,
|
|
72
94
|
items: props.items,
|
|
95
|
+
initialItems: props.initialItems,
|
|
96
|
+
initialTotal: props.initialTotal,
|
|
97
|
+
autoFetchOnFormChanges: props.autoFetchOnFormChanges
|
|
98
|
+
}), list = _a.list, model = _a.model, searchModel = _a.searchModel, paginationPosition = _a.paginationPosition, paginationSizePosition = _a.paginationSizePosition, layoutNamesPosition = _a.layoutNamesPosition, renderList = _a.renderList, renderLoading = _a.renderLoading, renderEmpty = _a.renderEmpty, renderPagination = _a.renderPagination, renderPaginationSize = _a.renderPaginationSize, renderLayoutNames = _a.renderLayoutNames, renderSearchForm = _a.renderSearchForm, renderInfiniteScroll = _a.renderInfiniteScroll, onFetch = _a.onFetch, onSort = _a.onSort, sort = _a.sort;
|
|
99
|
+
var items = (0, react_1.useMemo)(function () { return (list === null || list === void 0 ? void 0 : list.items) || []; }, [list === null || list === void 0 ? void 0 : list.items]);
|
|
100
|
+
var treeItems = (0, useTree_1["default"])({
|
|
101
|
+
items: items,
|
|
73
102
|
autoOpenLevels: 0,
|
|
74
103
|
alwaysOpened: props.alwaysOpened,
|
|
75
|
-
currentPage: list === null || list === void 0 ? void 0 : list.page,
|
|
76
|
-
itemsOnPage: list === null || list === void 0 ? void 0 : list.pageSize,
|
|
77
104
|
collapseChildItems: props.collapseChildItems,
|
|
78
105
|
saveInClientStorage: props.saveInClientStorage,
|
|
79
106
|
clientStorageId: props.listId,
|
|
80
|
-
isSinglePageItems: props.isSinglePageItems
|
|
107
|
+
isSinglePageItems: props.isSinglePageItems,
|
|
108
|
+
itemsKey: props.itemsKey
|
|
81
109
|
}).treeItems;
|
|
82
|
-
|
|
110
|
+
var renderLabel = (0, react_1.useCallback)(function (column) {
|
|
111
|
+
if (column.headerView) {
|
|
112
|
+
var HeaderView = column.headerView;
|
|
113
|
+
return (React.createElement(HeaderView, __assign({}, column, column.headerProps, { listId: props.listId })));
|
|
114
|
+
}
|
|
115
|
+
if (column.label || column.label === '') {
|
|
116
|
+
return column.label;
|
|
117
|
+
}
|
|
118
|
+
var attributeMeta = []
|
|
119
|
+
.concat((model === null || model === void 0 ? void 0 : model.attributes) || [])
|
|
120
|
+
.concat((searchModel === null || searchModel === void 0 ? void 0 : searchModel.attributes) || [])
|
|
121
|
+
.find(function (item) { return column.attribute && item.attribute === column.attribute; });
|
|
122
|
+
return attributeMeta ? attributeMeta.label : (0, upperFirst_1["default"])(column.attribute);
|
|
123
|
+
}, [model, props.listId, searchModel]);
|
|
124
|
+
var renderValue = (0, react_1.useCallback)(function (item, column) {
|
|
125
|
+
// Custom component
|
|
126
|
+
if (column.valueView) {
|
|
127
|
+
var isValueViewString = typeof column.valueView === 'string';
|
|
128
|
+
var ValueView = isValueViewString ? components.ui.getView("list.".concat(column.valueView)) : column.valueView;
|
|
129
|
+
var viewProps_1 = __assign(__assign(__assign({}, column), column.valueProps), { listId: props.listId, primaryKey: props.primaryKey, item: item, size: props.size });
|
|
130
|
+
if (isValueViewString) {
|
|
131
|
+
return components.ui.renderView(ValueView, viewProps_1);
|
|
132
|
+
}
|
|
133
|
+
return (React.createElement(ValueView, __assign({}, viewProps_1)));
|
|
134
|
+
}
|
|
135
|
+
return (React.createElement(Format_1["default"], __assign({ item: item, model: props.model }, column, (column.formatter || {}))));
|
|
136
|
+
}, [props.listId, props.model, props.primaryKey]);
|
|
137
|
+
// Columns
|
|
138
|
+
var columns = (0, react_1.useMemo)(function () { return []
|
|
139
|
+
.concat({
|
|
140
|
+
label: __('№'),
|
|
141
|
+
valueView: function (_a) {
|
|
142
|
+
var item = _a.item;
|
|
143
|
+
return item.index + 1;
|
|
144
|
+
},
|
|
145
|
+
visible: false
|
|
146
|
+
})
|
|
147
|
+
.concat(mergedColumns)
|
|
148
|
+
.concat({
|
|
149
|
+
valueView: ControlsColumn_1["default"],
|
|
150
|
+
valueProps: {
|
|
151
|
+
controls: props.controls
|
|
152
|
+
},
|
|
153
|
+
visible: !!props.controls
|
|
154
|
+
})
|
|
155
|
+
.map(function (column) { return ((0, isString_1["default"])(column) ? { attribute: column } : column); })
|
|
156
|
+
.filter(function (column) { return column.visible !== false; })
|
|
157
|
+
.map(function (column) { return (__assign(__assign({}, column), { label: renderLabel(column) })); }); }, [mergedColumns, props.controls, renderLabel]);
|
|
158
|
+
var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.viewProps), { list: list, paginationPosition: paginationPosition, paginationSizePosition: paginationSizePosition, layoutNamesPosition: layoutNamesPosition, renderList: renderList, renderLoading: renderLoading, renderEmpty: renderEmpty, renderPagination: renderPagination, renderPaginationSize: renderPaginationSize, renderLayoutNames: renderLayoutNames, renderSearchForm: renderSearchForm, renderInfiniteScroll: renderInfiniteScroll, renderValue: renderValue, columns: columns, onFetch: onFetch, onSort: onSort, sort: sort, items: treeItems, searchForm: props.searchForm, listId: props.listId, isLoading: props.isLoading, size: props.size, hasAlternatingColors: props.hasAlternatingColors, className: props.className, primaryKey: props.primaryKey })); }, [treeItems, list, paginationPosition, paginationSizePosition, layoutNamesPosition, renderList, renderLoading, renderEmpty,
|
|
159
|
+
renderPagination, renderPaginationSize, renderLayoutNames, renderSearchForm, renderInfiniteScroll, renderValue,
|
|
160
|
+
columns, onFetch, onSort, sort, props.searchForm, props.listId, props.isLoading, props.size, props.hasAlternatingColors,
|
|
161
|
+
props.className, props.primaryKey, props.viewProps]);
|
|
162
|
+
return components.ui.renderView(props.view || 'list.GridView', viewProps);
|
|
83
163
|
}
|
|
84
164
|
exports["default"] = TreeTable;
|
|
85
165
|
TreeTable.defaultProps = {
|
|
86
166
|
levelPadding: 32,
|
|
87
167
|
alwaysOpened: false,
|
|
88
168
|
saveInClientStorage: false,
|
|
89
|
-
collapseChildItems: false
|
|
169
|
+
collapseChildItems: false,
|
|
170
|
+
size: 'md',
|
|
171
|
+
hasAlternatingColors: false
|
|
90
172
|
};
|