@arim-aisdc/public-components 2.3.5 → 2.3.6
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/dist/components/BaseInfo/BaseInfo.d.ts +1 -1
- package/dist/components/TableMax/TableMax.js +8 -7
- package/dist/components/TableMax/components/ColumnSort/customSortFns.d.ts +8 -8
- package/dist/components/TableMax/hooks/useColumnWidth.d.ts +2 -2
- package/dist/components/TableMax/hooks/useColumnWidth.js +18 -13
- package/dist/components/TableMax/tableMax.less +2 -2
- package/package.json +1 -1
|
@@ -17,7 +17,7 @@ export declare const foramtBaseInfoField: (data: any, dataField: BaseInfoFieldTy
|
|
|
17
17
|
value: any;
|
|
18
18
|
field: string;
|
|
19
19
|
label?: string;
|
|
20
|
-
text: string |
|
|
20
|
+
text: string | Element | JSX.Element;
|
|
21
21
|
units?: string;
|
|
22
22
|
width?: string;
|
|
23
23
|
labelWidth?: string;
|
|
@@ -54,7 +54,7 @@ var getCurrentRouterName = function getCurrentRouterName() {
|
|
|
54
54
|
return window.location.pathname.slice(1);
|
|
55
55
|
};
|
|
56
56
|
var TableMax = function TableMax(_ref) {
|
|
57
|
-
var _JSON$parse, _tableContentRef$curr;
|
|
57
|
+
var _JSON$parse, _tableContentRef$curr, _tableContentRef$curr2;
|
|
58
58
|
var tableId = _ref.tableId,
|
|
59
59
|
originColumns = _ref.columns,
|
|
60
60
|
_ref$datas = _ref.datas,
|
|
@@ -187,6 +187,10 @@ var TableMax = function TableMax(_ref) {
|
|
|
187
187
|
request = _ref.request,
|
|
188
188
|
onEditValueChange = _ref.onEditValueChange;
|
|
189
189
|
var tableMaxRef = useRef(null);
|
|
190
|
+
// 表格元素
|
|
191
|
+
var tableContentRef = useRef(null);
|
|
192
|
+
var tableHeaderRef = useRef(null);
|
|
193
|
+
var tableBodyRef = useRef(null);
|
|
190
194
|
var _useTranslation = useTranslation(),
|
|
191
195
|
_useTranslation2 = _slicedToArray(_useTranslation, 1),
|
|
192
196
|
t = _useTranslation2[0];
|
|
@@ -283,7 +287,7 @@ var TableMax = function TableMax(_ref) {
|
|
|
283
287
|
columnPinning = _useState20[0],
|
|
284
288
|
setColumnPinning = _useState20[1];
|
|
285
289
|
var _useColumnWidth = useColumnWidth({
|
|
286
|
-
|
|
290
|
+
tableContentRef: tableContentRef,
|
|
287
291
|
tableId: tableId,
|
|
288
292
|
tableKeyPrefixCls: tableKeyPrefixCls,
|
|
289
293
|
columnVisibleConfig: columnVisibleConfig,
|
|
@@ -294,6 +298,7 @@ var TableMax = function TableMax(_ref) {
|
|
|
294
298
|
onColumnSizingChange = _useColumnWidth.onColumnSizingChange,
|
|
295
299
|
tableContainerWidth = _useColumnWidth.tableContainerWidth,
|
|
296
300
|
handleVisibleConfigChange = _useColumnWidth.handleVisibleConfigChange;
|
|
301
|
+
console.log('columnSizing', columnSizing, tableContentRef === null || tableContentRef === void 0 || (_tableContentRef$curr = tableContentRef.current) === null || _tableContentRef$curr === void 0 ? void 0 : _tableContentRef$curr.getBoundingClientRect().width, tableContainerWidth);
|
|
297
302
|
|
|
298
303
|
/**列筛选 */
|
|
299
304
|
var _useState21 = useState(defaultColumnFilters),
|
|
@@ -426,10 +431,6 @@ var TableMax = function TableMax(_ref) {
|
|
|
426
431
|
onExpandedChange: setExpanded,
|
|
427
432
|
sortDescFirst: true // 首次排序为递减排序,不加这个属性的话,有些列的排序会有问题
|
|
428
433
|
});
|
|
429
|
-
// 表格元素
|
|
430
|
-
var tableContentRef = useRef(null);
|
|
431
|
-
var tableHeaderRef = useRef(null);
|
|
432
|
-
var tableBodyRef = useRef(null);
|
|
433
434
|
|
|
434
435
|
// 暴露给外部的api
|
|
435
436
|
useImperativeHandle(refInstance, function () {
|
|
@@ -952,7 +953,7 @@ var TableMax = function TableMax(_ref) {
|
|
|
952
953
|
useEffect(function () {
|
|
953
954
|
// 表格宽度变化时(比如调整页面宽度大小),重新计算是否展示阴影
|
|
954
955
|
getPinShadowInfo();
|
|
955
|
-
}, [tableContentRef === null || tableContentRef === void 0 || (_tableContentRef$
|
|
956
|
+
}, [tableContentRef === null || tableContentRef === void 0 || (_tableContentRef$curr2 = tableContentRef.current) === null || _tableContentRef$curr2 === void 0 ? void 0 : _tableContentRef$curr2.clientWidth, table.getState().columnSizing]);
|
|
956
957
|
var scrollHandler = useCallback(function (event) {
|
|
957
958
|
if (!event.currentTarget) return;
|
|
958
959
|
tableHeaderRef.current.scrollLeft = event.currentTarget.scrollLeft / event.currentTarget.scrollWidth * (tableHeaderRef === null || tableHeaderRef === void 0 ? void 0 : tableHeaderRef.current.scrollWidth);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { TableMaxColumnType } from "../../type";
|
|
2
|
-
export declare const numberSortFn: (rowA: any, rowB: any, columnId: string) =>
|
|
3
|
-
export declare const stringSortFn: (rowA: any, rowB: any, columnId: string) =>
|
|
4
|
-
export declare const numberOrStringSortFn: (rowA: any, rowB: any, columnId: string) =>
|
|
5
|
-
export declare const timeSortFn: (rowA: any, rowB: any, columnId: string) =>
|
|
2
|
+
export declare const numberSortFn: (rowA: any, rowB: any, columnId: string) => 1 | 0 | -1;
|
|
3
|
+
export declare const stringSortFn: (rowA: any, rowB: any, columnId: string) => 1 | 0 | -1;
|
|
4
|
+
export declare const numberOrStringSortFn: (rowA: any, rowB: any, columnId: string) => 1 | 0 | -1;
|
|
5
|
+
export declare const timeSortFn: (rowA: any, rowB: any, columnId: string) => 1 | 0 | -1;
|
|
6
6
|
declare const customSortFns: {
|
|
7
|
-
numberSortFn: (rowA: any, rowB: any, columnId: string) =>
|
|
8
|
-
stringSortFn: (rowA: any, rowB: any, columnId: string) =>
|
|
9
|
-
timeSortFn: (rowA: any, rowB: any, columnId: string) =>
|
|
10
|
-
numberOrStringSortFn: (rowA: any, rowB: any, columnId: string) =>
|
|
7
|
+
numberSortFn: (rowA: any, rowB: any, columnId: string) => 1 | 0 | -1;
|
|
8
|
+
stringSortFn: (rowA: any, rowB: any, columnId: string) => 1 | 0 | -1;
|
|
9
|
+
timeSortFn: (rowA: any, rowB: any, columnId: string) => 1 | 0 | -1;
|
|
10
|
+
numberOrStringSortFn: (rowA: any, rowB: any, columnId: string) => 1 | 0 | -1;
|
|
11
11
|
};
|
|
12
12
|
export default customSortFns;
|
|
13
13
|
export type SortFnType = keyof typeof customSortFns | undefined;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ColumnSizing } from '../TableMax';
|
|
3
3
|
interface UseColumnWidthProps {
|
|
4
|
-
|
|
4
|
+
tableContentRef: React.RefObject<HTMLDivElement>;
|
|
5
5
|
tableId: string;
|
|
6
6
|
tableKeyPrefixCls: string;
|
|
7
7
|
columnVisibleConfig?: Record<string, boolean>;
|
|
8
8
|
tableKey: string;
|
|
9
9
|
}
|
|
10
|
-
export declare const useColumnWidth: ({
|
|
10
|
+
export declare const useColumnWidth: ({ tableContentRef, tableId, tableKeyPrefixCls, columnVisibleConfig, tableKey, }: UseColumnWidthProps) => {
|
|
11
11
|
columnSizing: ColumnSizing;
|
|
12
12
|
allColumnCount: number;
|
|
13
13
|
onColumnSizingChange: (data: any) => void;
|
|
@@ -16,7 +16,7 @@ import { debounce } from 'lodash';
|
|
|
16
16
|
var CACHE_MAX_AGE = 1 * 60 * 60 * 1000; // 1小时
|
|
17
17
|
|
|
18
18
|
export var useColumnWidth = function useColumnWidth(_ref) {
|
|
19
|
-
var
|
|
19
|
+
var tableContentRef = _ref.tableContentRef,
|
|
20
20
|
tableId = _ref.tableId,
|
|
21
21
|
tableKeyPrefixCls = _ref.tableKeyPrefixCls,
|
|
22
22
|
_ref$columnVisibleCon = _ref.columnVisibleConfig,
|
|
@@ -33,6 +33,13 @@ export var useColumnWidth = function useColumnWidth(_ref) {
|
|
|
33
33
|
_useState2 = _slicedToArray(_useState, 2),
|
|
34
34
|
state = _useState2[0],
|
|
35
35
|
setState = _useState2[1];
|
|
36
|
+
var getTableWidth = useCallback(function () {
|
|
37
|
+
var _tableContentRef$curr;
|
|
38
|
+
var width = (_tableContentRef$curr = tableContentRef.current) === null || _tableContentRef$curr === void 0 ? void 0 : _tableContentRef$curr.getBoundingClientRect().width;
|
|
39
|
+
var style = window.getComputedStyle(tableContentRef.current);
|
|
40
|
+
var horizontalBorderWidth = parseFloat(style.getPropertyValue('border-left-width')) + parseFloat(style.getPropertyValue('border-right-width'));
|
|
41
|
+
return Math.floor(width - horizontalBorderWidth);
|
|
42
|
+
}, [tableContentRef]);
|
|
36
43
|
|
|
37
44
|
/**
|
|
38
45
|
* 处理容器宽度变化的逻辑
|
|
@@ -42,8 +49,8 @@ export var useColumnWidth = function useColumnWidth(_ref) {
|
|
|
42
49
|
* 列宽之和小于容器宽度,除选择列和展开列外,其他列平分 列宽之和与容器宽度的差值
|
|
43
50
|
*/
|
|
44
51
|
var handleResize = useCallback(function () {
|
|
45
|
-
if (!
|
|
46
|
-
var newWidth =
|
|
52
|
+
if (!tableContentRef.current) return;
|
|
53
|
+
var newWidth = getTableWidth();
|
|
47
54
|
setState(function (prevState) {
|
|
48
55
|
// 计算可见列,排除特定列
|
|
49
56
|
var visibleColumns = Object.keys(prevState.columnSizing).filter(function (key) {
|
|
@@ -83,21 +90,21 @@ export var useColumnWidth = function useColumnWidth(_ref) {
|
|
|
83
90
|
tableContainerWidth: newWidth
|
|
84
91
|
});
|
|
85
92
|
});
|
|
86
|
-
}, [
|
|
93
|
+
}, [tableContentRef.current]);
|
|
87
94
|
|
|
88
95
|
// 使用防抖处理容器宽度变化
|
|
89
96
|
var debouncedHandleResize = useMemo(function () {
|
|
90
97
|
return debounce(handleResize, 200);
|
|
91
98
|
}, [handleResize]);
|
|
92
99
|
useEffect(function () {
|
|
93
|
-
if (!
|
|
100
|
+
if (!tableContentRef.current) return;
|
|
94
101
|
var resizeObserver = new ResizeObserver(debouncedHandleResize);
|
|
95
|
-
resizeObserver.observe(
|
|
102
|
+
resizeObserver.observe(tableContentRef.current);
|
|
96
103
|
return function () {
|
|
97
104
|
resizeObserver.disconnect();
|
|
98
105
|
debouncedHandleResize.cancel(); // 清理防抖
|
|
99
106
|
};
|
|
100
|
-
}, [
|
|
107
|
+
}, [tableContentRef.current, debouncedHandleResize]);
|
|
101
108
|
|
|
102
109
|
/**
|
|
103
110
|
* 列显示隐藏后调整列宽
|
|
@@ -122,11 +129,10 @@ export var useColumnWidth = function useColumnWidth(_ref) {
|
|
|
122
129
|
})
|
|
123
130
|
});
|
|
124
131
|
} else {
|
|
125
|
-
var _tableMaxRef$current;
|
|
126
132
|
//列宽减少
|
|
127
133
|
var newVisibleColumnsSizing = prevState.columnSizing;
|
|
128
134
|
delete newVisibleColumnsSizing[key];
|
|
129
|
-
var containerWidth = (
|
|
135
|
+
var containerWidth = getTableWidth() - 10 || 0;
|
|
130
136
|
// 计算当前总宽度
|
|
131
137
|
var totalWidth = Object.values(newVisibleColumnsSizing).reduce(function (sum, width) {
|
|
132
138
|
return Number(sum || 0) + Number(width || 0);
|
|
@@ -164,8 +170,8 @@ export var useColumnWidth = function useColumnWidth(_ref) {
|
|
|
164
170
|
* */
|
|
165
171
|
var calculateColumnSizing = useCallback(function (columnsSizeMap, allColumnCount, containerWidth) {
|
|
166
172
|
var _Object$keys$filter;
|
|
167
|
-
if (!
|
|
168
|
-
var currentWidth = containerWidth || state.tableContainerWidth ||
|
|
173
|
+
if (!tableContentRef.current || !columnsSizeMap) return {};
|
|
174
|
+
var currentWidth = containerWidth || state.tableContainerWidth || getTableWidth();
|
|
169
175
|
var hasColumnCount = ((_Object$keys$filter = Object.keys(columnsSizeMap).filter(function (item) {
|
|
170
176
|
return !!columnsSizeMap[item];
|
|
171
177
|
})) === null || _Object$keys$filter === void 0 ? void 0 : _Object$keys$filter.length) || 0;
|
|
@@ -280,7 +286,6 @@ export var useColumnWidth = function useColumnWidth(_ref) {
|
|
|
280
286
|
var changedColumn = data();
|
|
281
287
|
if (!changedColumn) return;
|
|
282
288
|
setState(function (prevState) {
|
|
283
|
-
var _tableMaxRef$current2;
|
|
284
289
|
var changedColumnKey = Object.keys(changedColumn)[0];
|
|
285
290
|
if (!changedColumnKey) return prevState;
|
|
286
291
|
var oldWidth = prevState.columnSizing[changedColumnKey] || 0;
|
|
@@ -295,7 +300,7 @@ export var useColumnWidth = function useColumnWidth(_ref) {
|
|
|
295
300
|
var totalWidth = Object.values(newVisibleColumnsSizing).reduce(function (sum, width) {
|
|
296
301
|
return Number(sum || 0) + Number(width || 0);
|
|
297
302
|
}, 0);
|
|
298
|
-
var containerWidth = (
|
|
303
|
+
var containerWidth = getTableWidth() - 10 || 0;
|
|
299
304
|
console.log(widthDiff, newWidth, oldWidth, changedColumnKey, prevState, 3344);
|
|
300
305
|
|
|
301
306
|
// 处理列宽变大
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
width: 100%;
|
|
6
6
|
display: flex;
|
|
7
7
|
flex-direction: column;
|
|
8
|
+
box-sizing: border-box;
|
|
8
9
|
// justify-content: center;
|
|
9
10
|
// align-items: center;
|
|
10
11
|
|
|
@@ -119,7 +120,6 @@
|
|
|
119
120
|
overflow-y: hidden !important;
|
|
120
121
|
display: flex;
|
|
121
122
|
flex-direction: column;
|
|
122
|
-
|
|
123
123
|
border: @global-table-max-border;
|
|
124
124
|
border-bottom: @global-table-max-center-border-bottom;
|
|
125
125
|
border-radius: @global-table-max-center-border-radius;
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
|
|
147
147
|
.table-body {
|
|
148
148
|
flex: 1;
|
|
149
|
-
overflow:
|
|
149
|
+
overflow: scroll scroll;
|
|
150
150
|
font-weight: @global-table-max-body-font-weight;
|
|
151
151
|
// background: @tableColor2;
|
|
152
152
|
.tbody-tr-td {
|