@hi-ui/table 4.9.2 → 4.10.0-alpha.0
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/lib/cjs/use-table.js +12 -15
- package/lib/cjs/utils/index.js +65 -0
- package/lib/esm/use-table.js +13 -16
- package/lib/esm/utils/index.js +64 -1
- package/lib/types/types.d.ts +9 -0
- package/lib/types/utils/index.d.ts +8 -0
- package/package.json +1 -1
package/lib/cjs/use-table.js
CHANGED
|
@@ -45,6 +45,7 @@ var DEFAULT_HIGHLIGHTED_COL_KEYS = [];
|
|
|
45
45
|
var DEFAULT_EXPAND_ROW_KEYS = [];
|
|
46
46
|
var DEFAULT_FIXED_TO_COLUMN = {};
|
|
47
47
|
var useTable = function useTable(_a) {
|
|
48
|
+
var _b, _c, _d;
|
|
48
49
|
var _a$data = _a.data,
|
|
49
50
|
data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
|
|
50
51
|
_a$columns = _a.columns,
|
|
@@ -494,29 +495,25 @@ var useTable = function useTable(_a) {
|
|
|
494
495
|
return row.children && row.children.length || onLoadChildren && !row.isLeaf;
|
|
495
496
|
}) : false;
|
|
496
497
|
}, [data, onLoadChildren]);
|
|
497
|
-
var
|
|
498
|
+
var sortOrderColumn = React.useMemo(function () {
|
|
499
|
+
return index.getColumnByDefaultSortOrder(columns);
|
|
500
|
+
}, [columns]);
|
|
501
|
+
var _useState3 = React.useState((_b = sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.dataKey) !== null && _b !== void 0 ? _b : null),
|
|
498
502
|
activeSorterColumn = _useState3[0],
|
|
499
503
|
setActiveSorterColumn = _useState3[1];
|
|
500
|
-
var _useState4 = React.useState(null),
|
|
504
|
+
var _useState4 = React.useState((_d = (_c = sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.defaultSortOrder) !== null && _c !== void 0 ? _c : sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.sortOrder) !== null && _d !== void 0 ? _d : null),
|
|
501
505
|
activeSorterType = _useState4[0],
|
|
502
506
|
setActiveSorterType = _useState4[1];
|
|
507
|
+
React.useEffect(function () {
|
|
508
|
+
var _a, _b, _c;
|
|
509
|
+
setActiveSorterColumn((_a = sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.dataKey) !== null && _a !== void 0 ? _a : null);
|
|
510
|
+
setActiveSorterType((_c = (_b = sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.defaultSortOrder) !== null && _b !== void 0 ? _b : sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.sortOrder) !== null && _c !== void 0 ? _c : null);
|
|
511
|
+
}, [sortOrderColumn]);
|
|
503
512
|
//* *************** 根据排序列处理数据 ************** *//
|
|
504
513
|
var showData = React.useMemo(function () {
|
|
505
514
|
var _data = [].concat(transitionData);
|
|
506
515
|
if (activeSorterColumn) {
|
|
507
|
-
var sortedColumn =
|
|
508
|
-
var findColumn = function findColumn(columns) {
|
|
509
|
-
columns.forEach(function (item) {
|
|
510
|
-
if (item.dataKey === activeSorterColumn) {
|
|
511
|
-
sortedColumn = item;
|
|
512
|
-
return;
|
|
513
|
-
}
|
|
514
|
-
if (item.children) {
|
|
515
|
-
findColumn(item.children);
|
|
516
|
-
}
|
|
517
|
-
});
|
|
518
|
-
};
|
|
519
|
-
findColumn(columns);
|
|
516
|
+
var sortedColumn = index.getColumnByDataKey(columns, activeSorterColumn);
|
|
520
517
|
var sorter = sortedColumn === null || sortedColumn === void 0 ? void 0 : sortedColumn.sorter;
|
|
521
518
|
if (sorter) {
|
|
522
519
|
activeSorterType === 'ascend' ? _data.sort(sorter) : _data.sort(sorter).reverse();
|
package/lib/cjs/utils/index.js
CHANGED
|
@@ -13,6 +13,39 @@ Object.defineProperty(exports, '__esModule', {
|
|
|
13
13
|
value: true
|
|
14
14
|
});
|
|
15
15
|
var typeAssertion = require('@hi-ui/type-assertion');
|
|
16
|
+
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
|
17
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
18
|
+
if (it) return (it = it.call(o)).next.bind(it);
|
|
19
|
+
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
20
|
+
if (it) o = it;
|
|
21
|
+
var i = 0;
|
|
22
|
+
return function () {
|
|
23
|
+
if (i >= o.length) return {
|
|
24
|
+
done: true
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
done: false,
|
|
28
|
+
value: o[i++]
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
33
|
+
}
|
|
34
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
35
|
+
if (!o) return;
|
|
36
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
37
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
38
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
39
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
40
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
41
|
+
}
|
|
42
|
+
function _arrayLikeToArray(arr, len) {
|
|
43
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
44
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) {
|
|
45
|
+
arr2[i] = arr[i];
|
|
46
|
+
}
|
|
47
|
+
return arr2;
|
|
48
|
+
}
|
|
16
49
|
var setColumnsDefaultWidth = function setColumnsDefaultWidth(columns, defaultWidth) {
|
|
17
50
|
var _columns = columns.concat();
|
|
18
51
|
var setWidth = function setWidth(_columns) {
|
|
@@ -153,7 +186,39 @@ var getTotalOrEvgRowData = function getTotalOrEvgRowData(_data, c, isAvg) {
|
|
|
153
186
|
}
|
|
154
187
|
return maxPointCount > 0 ? columnSumData.toFixed(maxPointCount) : columnSumData;
|
|
155
188
|
};
|
|
189
|
+
/**
|
|
190
|
+
* 获取指定列
|
|
191
|
+
*/
|
|
192
|
+
var getColumnByDataKey = function getColumnByDataKey(columns, dataKey) {
|
|
193
|
+
for (var _iterator = _createForOfIteratorHelperLoose(columns), _step; !(_step = _iterator()).done;) {
|
|
194
|
+
var column = _step.value;
|
|
195
|
+
if (column.dataKey === dataKey) {
|
|
196
|
+
return column;
|
|
197
|
+
}
|
|
198
|
+
if (column.children) {
|
|
199
|
+
return getColumnByDataKey(column.children, dataKey);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return {};
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* 获取默认排序的列
|
|
206
|
+
*/
|
|
207
|
+
var getColumnByDefaultSortOrder = function getColumnByDefaultSortOrder(columns) {
|
|
208
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(columns), _step2; !(_step2 = _iterator2()).done;) {
|
|
209
|
+
var column = _step2.value;
|
|
210
|
+
if (column.defaultSortOrder || column.sortOrder) {
|
|
211
|
+
return column;
|
|
212
|
+
}
|
|
213
|
+
if (column.children) {
|
|
214
|
+
return getColumnByDefaultSortOrder(column.children);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return {};
|
|
218
|
+
};
|
|
156
219
|
exports.checkNeedTotalOrEvg = checkNeedTotalOrEvg;
|
|
220
|
+
exports.getColumnByDataKey = getColumnByDataKey;
|
|
221
|
+
exports.getColumnByDefaultSortOrder = getColumnByDefaultSortOrder;
|
|
157
222
|
exports.getGroupItemWidth = getGroupItemWidth;
|
|
158
223
|
exports.getTotalOrEvgRowData = getTotalOrEvgRowData;
|
|
159
224
|
exports.parseFixedColumns = parseFixedColumns;
|
package/lib/esm/use-table.js
CHANGED
|
@@ -17,7 +17,7 @@ import { invariant } from '@hi-ui/env';
|
|
|
17
17
|
import { setAttrStatus } from '@hi-ui/dom-utils';
|
|
18
18
|
import { useCache } from '@hi-ui/use-cache';
|
|
19
19
|
import { useLatestCallback } from '@hi-ui/use-latest';
|
|
20
|
-
import { setColumnsDefaultWidth, parseFixedColumns } from './utils/index.js';
|
|
20
|
+
import { setColumnsDefaultWidth, parseFixedColumns, getColumnByDefaultSortOrder, getColumnByDataKey } from './utils/index.js';
|
|
21
21
|
import { useAsyncSwitch } from './hooks/use-async-switch.js';
|
|
22
22
|
import { useExpand } from './hooks/use-expand.js';
|
|
23
23
|
import { useChange } from './hooks/use-change.js';
|
|
@@ -33,6 +33,7 @@ var DEFAULT_HIGHLIGHTED_COL_KEYS = [];
|
|
|
33
33
|
var DEFAULT_EXPAND_ROW_KEYS = [];
|
|
34
34
|
var DEFAULT_FIXED_TO_COLUMN = {};
|
|
35
35
|
var useTable = function useTable(_a) {
|
|
36
|
+
var _b, _c, _d;
|
|
36
37
|
var _a$data = _a.data,
|
|
37
38
|
data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
|
|
38
39
|
_a$columns = _a.columns,
|
|
@@ -482,29 +483,25 @@ var useTable = function useTable(_a) {
|
|
|
482
483
|
return row.children && row.children.length || onLoadChildren && !row.isLeaf;
|
|
483
484
|
}) : false;
|
|
484
485
|
}, [data, onLoadChildren]);
|
|
485
|
-
var
|
|
486
|
+
var sortOrderColumn = useMemo(function () {
|
|
487
|
+
return getColumnByDefaultSortOrder(columns);
|
|
488
|
+
}, [columns]);
|
|
489
|
+
var _useState3 = useState((_b = sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.dataKey) !== null && _b !== void 0 ? _b : null),
|
|
486
490
|
activeSorterColumn = _useState3[0],
|
|
487
491
|
setActiveSorterColumn = _useState3[1];
|
|
488
|
-
var _useState4 = useState(null),
|
|
492
|
+
var _useState4 = useState((_d = (_c = sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.defaultSortOrder) !== null && _c !== void 0 ? _c : sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.sortOrder) !== null && _d !== void 0 ? _d : null),
|
|
489
493
|
activeSorterType = _useState4[0],
|
|
490
494
|
setActiveSorterType = _useState4[1];
|
|
495
|
+
useEffect(function () {
|
|
496
|
+
var _a, _b, _c;
|
|
497
|
+
setActiveSorterColumn((_a = sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.dataKey) !== null && _a !== void 0 ? _a : null);
|
|
498
|
+
setActiveSorterType((_c = (_b = sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.defaultSortOrder) !== null && _b !== void 0 ? _b : sortOrderColumn === null || sortOrderColumn === void 0 ? void 0 : sortOrderColumn.sortOrder) !== null && _c !== void 0 ? _c : null);
|
|
499
|
+
}, [sortOrderColumn]);
|
|
491
500
|
//* *************** 根据排序列处理数据 ************** *//
|
|
492
501
|
var showData = useMemo(function () {
|
|
493
502
|
var _data = [].concat(transitionData);
|
|
494
503
|
if (activeSorterColumn) {
|
|
495
|
-
var sortedColumn =
|
|
496
|
-
var findColumn = function findColumn(columns) {
|
|
497
|
-
columns.forEach(function (item) {
|
|
498
|
-
if (item.dataKey === activeSorterColumn) {
|
|
499
|
-
sortedColumn = item;
|
|
500
|
-
return;
|
|
501
|
-
}
|
|
502
|
-
if (item.children) {
|
|
503
|
-
findColumn(item.children);
|
|
504
|
-
}
|
|
505
|
-
});
|
|
506
|
-
};
|
|
507
|
-
findColumn(columns);
|
|
504
|
+
var sortedColumn = getColumnByDataKey(columns, activeSorterColumn);
|
|
508
505
|
var sorter = sortedColumn === null || sortedColumn === void 0 ? void 0 : sortedColumn.sorter;
|
|
509
506
|
if (sorter) {
|
|
510
507
|
activeSorterType === 'ascend' ? _data.sort(sorter) : _data.sort(sorter).reverse();
|
package/lib/esm/utils/index.js
CHANGED
|
@@ -8,6 +8,39 @@
|
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
9
|
*/
|
|
10
10
|
import { isNumeric } from '@hi-ui/type-assertion';
|
|
11
|
+
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
|
12
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
13
|
+
if (it) return (it = it.call(o)).next.bind(it);
|
|
14
|
+
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
15
|
+
if (it) o = it;
|
|
16
|
+
var i = 0;
|
|
17
|
+
return function () {
|
|
18
|
+
if (i >= o.length) return {
|
|
19
|
+
done: true
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
done: false,
|
|
23
|
+
value: o[i++]
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
28
|
+
}
|
|
29
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
30
|
+
if (!o) return;
|
|
31
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
32
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
33
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
34
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
35
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
36
|
+
}
|
|
37
|
+
function _arrayLikeToArray(arr, len) {
|
|
38
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
39
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) {
|
|
40
|
+
arr2[i] = arr[i];
|
|
41
|
+
}
|
|
42
|
+
return arr2;
|
|
43
|
+
}
|
|
11
44
|
var setColumnsDefaultWidth = function setColumnsDefaultWidth(columns, defaultWidth) {
|
|
12
45
|
var _columns = columns.concat();
|
|
13
46
|
var setWidth = function setWidth(_columns) {
|
|
@@ -148,4 +181,34 @@ var getTotalOrEvgRowData = function getTotalOrEvgRowData(_data, c, isAvg) {
|
|
|
148
181
|
}
|
|
149
182
|
return maxPointCount > 0 ? columnSumData.toFixed(maxPointCount) : columnSumData;
|
|
150
183
|
};
|
|
151
|
-
|
|
184
|
+
/**
|
|
185
|
+
* 获取指定列
|
|
186
|
+
*/
|
|
187
|
+
var getColumnByDataKey = function getColumnByDataKey(columns, dataKey) {
|
|
188
|
+
for (var _iterator = _createForOfIteratorHelperLoose(columns), _step; !(_step = _iterator()).done;) {
|
|
189
|
+
var column = _step.value;
|
|
190
|
+
if (column.dataKey === dataKey) {
|
|
191
|
+
return column;
|
|
192
|
+
}
|
|
193
|
+
if (column.children) {
|
|
194
|
+
return getColumnByDataKey(column.children, dataKey);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return {};
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* 获取默认排序的列
|
|
201
|
+
*/
|
|
202
|
+
var getColumnByDefaultSortOrder = function getColumnByDefaultSortOrder(columns) {
|
|
203
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(columns), _step2; !(_step2 = _iterator2()).done;) {
|
|
204
|
+
var column = _step2.value;
|
|
205
|
+
if (column.defaultSortOrder || column.sortOrder) {
|
|
206
|
+
return column;
|
|
207
|
+
}
|
|
208
|
+
if (column.children) {
|
|
209
|
+
return getColumnByDefaultSortOrder(column.children);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return {};
|
|
213
|
+
};
|
|
214
|
+
export { checkNeedTotalOrEvg, getColumnByDataKey, getColumnByDefaultSortOrder, getGroupItemWidth, getTotalOrEvgRowData, parseFixedColumns, parseLocalArray, setColumnsDefaultWidth, uuid };
|
package/lib/types/types.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ export interface TableColumnItemRenderReturn {
|
|
|
80
80
|
rowSpan?: number;
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
|
+
export declare type TableColumnSortOrder = 'ascend' | 'descend' | null;
|
|
83
84
|
export declare type TableColumnItem = {
|
|
84
85
|
/**
|
|
85
86
|
* 列标题
|
|
@@ -101,6 +102,14 @@ export declare type TableColumnItem = {
|
|
|
101
102
|
* 列对齐方式
|
|
102
103
|
*/
|
|
103
104
|
align?: TableColumnItemAlignEnum;
|
|
105
|
+
/**
|
|
106
|
+
* 排序顺序
|
|
107
|
+
*/
|
|
108
|
+
sortOrder?: TableColumnSortOrder;
|
|
109
|
+
/**
|
|
110
|
+
* 默认排序顺序
|
|
111
|
+
*/
|
|
112
|
+
defaultSortOrder?: TableColumnSortOrder;
|
|
104
113
|
/**
|
|
105
114
|
* 列排序函数
|
|
106
115
|
*/
|
|
@@ -16,3 +16,11 @@ export declare const uuid: () => string;
|
|
|
16
16
|
export declare const parseLocalArray: ({ key, defaultValue }: any) => any;
|
|
17
17
|
export declare const checkNeedTotalOrEvg: (_data: any[], item: any, calcKey: string) => boolean;
|
|
18
18
|
export declare const getTotalOrEvgRowData: (_data: any[], c: any, isAvg: boolean) => any;
|
|
19
|
+
/**
|
|
20
|
+
* 获取指定列
|
|
21
|
+
*/
|
|
22
|
+
export declare const getColumnByDataKey: (columns: TableColumnItem[], dataKey: string) => TableColumnItem;
|
|
23
|
+
/**
|
|
24
|
+
* 获取默认排序的列
|
|
25
|
+
*/
|
|
26
|
+
export declare const getColumnByDefaultSortOrder: (columns: TableColumnItem[]) => TableColumnItem;
|