@aloudata/aloudata-design 1.9.17 → 1.10.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/dist/Checkbox/style/index.less +35 -9
- package/dist/ConfigProvider/getUserList.d.ts +13 -1
- package/dist/ConfigProvider/getUserList.js +5 -0
- package/dist/Icon/components/DragLine.d.ts +11 -0
- package/dist/Icon/components/DragLine.js +35 -0
- package/dist/Icon/index.d.ts +1 -0
- package/dist/Icon/index.js +1 -0
- package/dist/Icon/svg/drag-line.svg +5 -0
- package/dist/MemberPicker/components/MemberSelection.d.ts +1 -1
- package/dist/MemberPicker/components/MemberSelection.js +8 -3
- package/dist/MemberPicker/components/MultipleOption.d.ts +5 -2
- package/dist/MemberPicker/components/MultipleOption.js +20 -5
- package/dist/MemberPicker/components/NickLabel.d.ts +3 -3
- package/dist/MemberPicker/components/NickLabel.js +6 -6
- package/dist/MemberPicker/components/Panel.d.ts +7 -4
- package/dist/MemberPicker/components/Panel.js +70 -20
- package/dist/MemberPicker/components/PanelWrapper.d.ts +14 -0
- package/dist/MemberPicker/components/PanelWrapper.js +126 -0
- package/dist/MemberPicker/components/SelectedMemberTags.d.ts +3 -2
- package/dist/MemberPicker/components/SelectedMemberTags.js +8 -5
- package/dist/MemberPicker/components/SelectorFooter.js +1 -1
- package/dist/MemberPicker/components/SingleOption.d.ts +3 -2
- package/dist/MemberPicker/components/SingleOption.js +7 -4
- package/dist/MemberPicker/components/UserGroupSelection.d.ts +14 -0
- package/dist/MemberPicker/components/UserGroupSelection.js +130 -0
- package/dist/MemberPicker/index.d.ts +2 -0
- package/dist/MemberPicker/index.js +28 -17
- package/dist/MemberPicker/interface.d.ts +11 -5
- package/dist/MemberPicker/interface.js +6 -1
- package/dist/MemberPicker/style/index.less +18 -3
- package/dist/MemberPicker/utils/getUsersWithUserId.d.ts +4 -0
- package/dist/MemberPicker/utils/getUsersWithUserId.js +23 -2
- package/dist/MemberPicker/utils/index.d.ts +6 -0
- package/dist/MemberPicker/utils/index.js +16 -0
- package/dist/Radio/style/index.less +1 -1
- package/dist/ScrollArea/index.d.ts +1 -0
- package/dist/ScrollArea/index.js +6 -3
- package/dist/Table/components/Cell.d.ts +7 -0
- package/dist/Table/components/Cell.js +20 -0
- package/dist/Table/components/Header.d.ts +6 -0
- package/dist/Table/components/Header.js +19 -0
- package/dist/{AldTable → Table}/helper.d.ts +9 -2
- package/dist/Table/helper.js +121 -0
- package/dist/Table/hooks/useScroll.d.ts +26 -0
- package/dist/Table/hooks/useScroll.js +57 -0
- package/dist/Table/index.d.ts +3 -1
- package/dist/Table/index.js +176 -1
- package/dist/Table/style/index.less +106 -203
- package/dist/{AldTable → Table}/types.d.ts +5 -4
- package/dist/Tree/DirectoryTree.d.ts +20 -0
- package/dist/Tree/DirectoryTree.js +175 -0
- package/dist/Tree/Tree.d.ts +136 -0
- package/dist/Tree/Tree.js +131 -0
- package/dist/Tree/demo/basic/index.js +3 -2
- package/dist/Tree/demo/drag/index.d.ts +3 -0
- package/dist/Tree/demo/drag/index.js +124 -0
- package/dist/Tree/index.d.ts +19 -13
- package/dist/Tree/index.js +7 -17
- package/dist/Tree/style/checkbox.less +226 -0
- package/dist/Tree/style/directory.less +68 -0
- package/dist/Tree/style/index.less +74 -29
- package/dist/Tree/style/mixin.less +333 -0
- package/dist/Tree/style/reset.less +11 -0
- package/dist/Tree/style/rtl.less +68 -0
- package/dist/Tree/style/var.less +42 -0
- package/dist/Tree/utils/dictUtil.d.ts +9 -0
- package/dist/Tree/utils/dictUtil.js +74 -0
- package/dist/Tree/utils/dropIndicator.d.ts +9 -0
- package/dist/Tree/utils/dropIndicator.js +35 -0
- package/dist/Tree/utils/iconUtil.d.ts +5 -0
- package/dist/Tree/utils/iconUtil.js +63 -0
- package/dist/_utils/motion.d.ts +8 -0
- package/dist/_utils/motion.js +52 -0
- package/dist/_utils/reactNode.d.ts +8 -0
- package/dist/_utils/reactNode.js +15 -0
- package/dist/_utils/type.d.ts +9 -0
- package/dist/_utils/type.js +20 -0
- package/dist/index.d.ts +11 -13
- package/dist/index.js +6 -7
- package/dist/style/color/bezierEasing.less +110 -0
- package/dist/style/color/colorPalette.less +84 -0
- package/dist/style/color/colors.less +162 -0
- package/dist/style/color/tinyColor.less +1184 -0
- package/dist/style/core/index.less +2 -0
- package/dist/style/core/motion/fade.less +34 -0
- package/dist/style/core/motion/move.less +129 -0
- package/dist/style/core/motion/other.less +48 -0
- package/dist/style/core/motion/slide.less +131 -0
- package/dist/style/core/motion/zoom.less +179 -0
- package/dist/style/core/motion.less +22 -0
- package/dist/style/index.less +2 -0
- package/dist/style/mixins/index.less +1 -0
- package/dist/style/mixins/motion.less +33 -0
- package/dist/style/themes/default/default.less +24 -0
- package/dist/style/themes/default/index.less +1 -0
- package/package.json +2 -3
- package/dist/AldTable/helper.js +0 -109
- package/dist/AldTable/index.d.ts +0 -4
- package/dist/AldTable/index.js +0 -151
- package/dist/AldTable/style/index.d.ts +0 -2
- package/dist/AldTable/style/index.js +0 -2
- package/dist/AldTable/style/index.less +0 -136
- package/dist/Table/Table.d.ts +0 -6
- package/dist/Table/Table.js +0 -360
- package/dist/Table/components/Empty/index.d.ts +0 -3
- package/dist/Table/components/Empty/index.js +0 -14
- package/dist/Table/components/Loading/index.d.ts +0 -3
- package/dist/Table/components/Loading/index.js +0 -12
- package/dist/Table/components/TableBodyRowList/index.d.ts +0 -13
- package/dist/Table/components/TableBodyRowList/index.js +0 -75
- package/dist/Table/components/TableHead/index.d.ts +0 -23
- package/dist/Table/components/TableHead/index.js +0 -229
- package/dist/Table/constant.d.ts +0 -0
- package/dist/Table/constant.js +0 -0
- package/dist/Table/hooks/useFrame.d.ts +0 -7
- package/dist/Table/hooks/useFrame.js +0 -75
- package/dist/Table/interface.d.ts +0 -42
- package/dist/Table/interface.js +0 -1
- package/dist/Table/react-table-config.d.ts +0 -122
- package/dist/Table/style/variable.less +0 -4
- package/dist/Table/utils.d.ts +0 -15
- package/dist/Table/utils.js +0 -122
- /package/dist/{AldTable → Table}/types.js +0 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import Cell from "./components/Cell";
|
|
3
|
+
import Header from "./components/Header";
|
|
4
|
+
export function getTableColumns(_ref) {
|
|
5
|
+
var columns = _ref.columns,
|
|
6
|
+
columnSizing = _ref.columnSizing,
|
|
7
|
+
totalWidth = _ref.totalWidth;
|
|
8
|
+
var columnWidths = getColumnWidths(columns, columnSizing, totalWidth);
|
|
9
|
+
return _.map(columns, function (col, index) {
|
|
10
|
+
return {
|
|
11
|
+
// 这里还需要排除掉空字符串的情况,id 不能为 ''
|
|
12
|
+
accessorKey: col.dataIndex || "column-".concat(index),
|
|
13
|
+
header: Header,
|
|
14
|
+
cell: Cell,
|
|
15
|
+
size: columnWidths[index],
|
|
16
|
+
meta: col
|
|
17
|
+
};
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* 计算
|
|
23
|
+
* @param columns
|
|
24
|
+
* @param columnSizing
|
|
25
|
+
* @param totalWidth
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
export function getColumnWidths(columns, columnSizing, totalWidth) {
|
|
29
|
+
// 可改变列宽情况,react-table 可拖动列宽要求列宽值必须是数字,因为将百分比列宽转换为数字
|
|
30
|
+
var DEFAULT_WIDTH = 150;
|
|
31
|
+
// 计算出每个列的具体宽度值
|
|
32
|
+
var columnWidthInfos = _.map(columns, function (col) {
|
|
33
|
+
var width = col.width;
|
|
34
|
+
if (typeof width === 'number') {
|
|
35
|
+
return {
|
|
36
|
+
width: width,
|
|
37
|
+
isSpecific: true
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (typeof width === 'string' && isPercentage(width)) {
|
|
41
|
+
var widthNum = getNumberFromPercentageStr(width);
|
|
42
|
+
return {
|
|
43
|
+
width: widthNum * totalWidth / 100,
|
|
44
|
+
isSpecific: false
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
width: DEFAULT_WIDTH,
|
|
49
|
+
isSpecific: false,
|
|
50
|
+
radio: 0
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
var totalColumnWidth = _.sum(columnWidthInfos.map(function (col) {
|
|
54
|
+
return col.width;
|
|
55
|
+
}));
|
|
56
|
+
if (totalWidth !== totalColumnWidth) {
|
|
57
|
+
// 如果实际宽度不等于列总宽度之和,则将差额的宽度按列宽的比例分配给各个没有设置具体宽度值的列
|
|
58
|
+
|
|
59
|
+
// 指定了具体值的列的总宽度
|
|
60
|
+
var specificWidth = _.sum(_.filter(columnWidthInfos, function (col) {
|
|
61
|
+
return col.isSpecific;
|
|
62
|
+
}).map(function (col) {
|
|
63
|
+
return col.width;
|
|
64
|
+
}));
|
|
65
|
+
var offset = totalWidth - totalColumnWidth;
|
|
66
|
+
|
|
67
|
+
// 计算每个没有设置具体宽度值的列应该分到的差值的占比
|
|
68
|
+
var totalOffsetWidth = totalColumnWidth - specificWidth;
|
|
69
|
+
var newColumnWidths = columnWidthInfos.map(function (colWidthInfo) {
|
|
70
|
+
if (colWidthInfo.isSpecific) {
|
|
71
|
+
return colWidthInfo.width;
|
|
72
|
+
}
|
|
73
|
+
// 未指定具体宽度值的列,分配差值
|
|
74
|
+
if (totalOffsetWidth !== 0) {
|
|
75
|
+
var radio = colWidthInfo.width / totalOffsetWidth;
|
|
76
|
+
return colWidthInfo.width + offset * radio;
|
|
77
|
+
}
|
|
78
|
+
return 0;
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// 计算新的列宽度总和
|
|
82
|
+
var newTotalColumnWidth = _.sum(newColumnWidths);
|
|
83
|
+
|
|
84
|
+
// 计算并处理可能存在的误差
|
|
85
|
+
var errorWidth = totalWidth - newTotalColumnWidth;
|
|
86
|
+
|
|
87
|
+
// 将误差加到最后一个没有指定具体值的列上
|
|
88
|
+
var colIndex = _.findLastIndex(columnWidthInfos, function (columnWidthInfo) {
|
|
89
|
+
return !columnWidthInfo.isSpecific;
|
|
90
|
+
});
|
|
91
|
+
if (colIndex !== -1) {
|
|
92
|
+
var newWidth = newColumnWidths[colIndex] + errorWidth;
|
|
93
|
+
if (newWidth >= 0) {
|
|
94
|
+
newColumnWidths[colIndex] += errorWidth;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return newColumnWidths;
|
|
98
|
+
} else {
|
|
99
|
+
return _.map(columnWidthInfos, function (columnWidthInfo) {
|
|
100
|
+
return columnWidthInfo.width;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export function getNumberFromPercentageStr(str) {
|
|
105
|
+
var numberStr = str.replace('%', '');
|
|
106
|
+
return parseFloat(numberStr);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* 判断是否百分比字符串
|
|
111
|
+
* @param str
|
|
112
|
+
* @returns
|
|
113
|
+
*/
|
|
114
|
+
export function isPercentage(str) {
|
|
115
|
+
var regex = /^100(\.\d+)?%?$|^\d{1,2}(\.\d+)?%$/;
|
|
116
|
+
return regex.test(str);
|
|
117
|
+
}
|
|
118
|
+
var ALD_PREFIX = 'ald-table';
|
|
119
|
+
export function prefixCls(className) {
|
|
120
|
+
return "".concat(ALD_PREFIX, "-").concat(className);
|
|
121
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IScroll } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* 横向滚动条相关逻辑
|
|
5
|
+
* @param props
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export default function useScrollX(props: IProps): {
|
|
9
|
+
realWidth: number | undefined;
|
|
10
|
+
headerRef: import("react").RefObject<HTMLDivElement>;
|
|
11
|
+
onBodyScroll: (e: React.UIEvent<HTMLDivElement>) => void;
|
|
12
|
+
};
|
|
13
|
+
interface IProps {
|
|
14
|
+
scroll: IScroll;
|
|
15
|
+
totalSize: {
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
} | null;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 获取可用实际宽度
|
|
22
|
+
* @param scrollX 横向宽度值
|
|
23
|
+
* @param width 容器的宽度
|
|
24
|
+
*/
|
|
25
|
+
export declare function getRealWidth(scrollX: IScroll['x'], width: number): number;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { useCallback, useMemo, useRef } from 'react';
|
|
2
|
+
import { getNumberFromPercentageStr } from "../helper";
|
|
3
|
+
/**
|
|
4
|
+
* 横向滚动条相关逻辑
|
|
5
|
+
* @param props
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export default function useScrollX(props) {
|
|
9
|
+
var scroll = props.scroll,
|
|
10
|
+
totalSize = props.totalSize;
|
|
11
|
+
var headerRef = useRef(null);
|
|
12
|
+
var animationFrameId = useRef(null);
|
|
13
|
+
var x = scroll.x;
|
|
14
|
+
var realWidth = useMemo(function () {
|
|
15
|
+
if (!totalSize) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
return getRealWidth(x, totalSize.width);
|
|
19
|
+
}, [x, totalSize]);
|
|
20
|
+
var onBodyScroll = useCallback(function (e) {
|
|
21
|
+
// animationFrame 可以保证横向滚动时,header 和 body 不会出现不同步的情况
|
|
22
|
+
if (animationFrameId.current !== null) {
|
|
23
|
+
window.cancelAnimationFrame(animationFrameId.current);
|
|
24
|
+
}
|
|
25
|
+
var scrollLeft = e.target.scrollLeft;
|
|
26
|
+
animationFrameId.current = window.requestAnimationFrame(function () {
|
|
27
|
+
var _headerRef$current;
|
|
28
|
+
(_headerRef$current = headerRef.current) === null || _headerRef$current === void 0 ? void 0 : _headerRef$current.scrollTo({
|
|
29
|
+
left: scrollLeft
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}, []);
|
|
33
|
+
return {
|
|
34
|
+
realWidth: realWidth,
|
|
35
|
+
headerRef: headerRef,
|
|
36
|
+
onBodyScroll: onBodyScroll
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 获取可用实际宽度
|
|
41
|
+
* @param scrollX 横向宽度值
|
|
42
|
+
* @param width 容器的宽度
|
|
43
|
+
*/
|
|
44
|
+
export function getRealWidth(scrollX, width) {
|
|
45
|
+
if (typeof scrollX === 'string') {
|
|
46
|
+
var percent = getNumberFromPercentageStr(scrollX);
|
|
47
|
+
if (isNaN(percent)) {
|
|
48
|
+
console.error('scroll.x is not percentage string');
|
|
49
|
+
return width;
|
|
50
|
+
}
|
|
51
|
+
return percent * width / 100;
|
|
52
|
+
}
|
|
53
|
+
if (typeof scrollX === 'number') {
|
|
54
|
+
return scrollX;
|
|
55
|
+
}
|
|
56
|
+
return width;
|
|
57
|
+
}
|
package/dist/Table/index.d.ts
CHANGED
package/dist/Table/index.js
CHANGED
|
@@ -1,2 +1,177 @@
|
|
|
1
|
-
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
3
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
4
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
5
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
6
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
7
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
8
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
9
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
10
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
11
|
+
import { flexRender, getCoreRowModel, useReactTable } from '@tanstack/react-table';
|
|
12
|
+
import classnames from 'classnames';
|
|
13
|
+
import _ from 'lodash';
|
|
14
|
+
import ResizeObserver from 'rc-resize-observer';
|
|
15
|
+
import React, { useMemo, useState } from 'react';
|
|
16
|
+
import { Empty, Pagination, ScrollArea, Spin } from '..';
|
|
17
|
+
import { getTableColumns, prefixCls } from "./helper";
|
|
18
|
+
import useScrollX from "./hooks/useScroll";
|
|
19
|
+
// 32 行高 + 1 底线高度
|
|
20
|
+
var HEADER_HEIGHT = 33;
|
|
21
|
+
function Table(props) {
|
|
22
|
+
var _classnames;
|
|
23
|
+
var columns = props.columns,
|
|
24
|
+
data = props.data,
|
|
25
|
+
rowKey = props.rowKey,
|
|
26
|
+
columnSizing = props.columnSizing,
|
|
27
|
+
sticky = props.sticky,
|
|
28
|
+
loading = props.loading,
|
|
29
|
+
pagination = props.pagination,
|
|
30
|
+
_props$scroll = props.scroll,
|
|
31
|
+
scroll = _props$scroll === void 0 ? {} : _props$scroll,
|
|
32
|
+
emptyComponent = props.empty,
|
|
33
|
+
_props$rowClassName = props.rowClassName,
|
|
34
|
+
rowClassName = _props$rowClassName === void 0 ? function () {
|
|
35
|
+
return '';
|
|
36
|
+
} : _props$rowClassName;
|
|
37
|
+
var _useState = useState(null),
|
|
38
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
39
|
+
totalSize = _useState2[0],
|
|
40
|
+
setTotalSize = _useState2[1];
|
|
41
|
+
var y = scroll.y;
|
|
42
|
+
var _useScrollX = useScrollX({
|
|
43
|
+
totalSize: totalSize,
|
|
44
|
+
scroll: scroll
|
|
45
|
+
}),
|
|
46
|
+
realWidth = _useScrollX.realWidth,
|
|
47
|
+
onBodyScroll = _useScrollX.onBodyScroll,
|
|
48
|
+
headerRef = _useScrollX.headerRef;
|
|
49
|
+
var tableColumns = useMemo(function () {
|
|
50
|
+
if (!totalSize || !realWidth) {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
return getTableColumns({
|
|
54
|
+
columns: columns,
|
|
55
|
+
columnSizing: !!columnSizing,
|
|
56
|
+
totalWidth: realWidth
|
|
57
|
+
});
|
|
58
|
+
}, [columns, totalSize, columnSizing, realWidth]);
|
|
59
|
+
var tableInstance = useReactTable({
|
|
60
|
+
columns: tableColumns,
|
|
61
|
+
data: data,
|
|
62
|
+
getCoreRowModel: getCoreRowModel(),
|
|
63
|
+
getRowId: function getRowId(row, index) {
|
|
64
|
+
var rowKeyStr = index;
|
|
65
|
+
if (typeof rowKey === 'function') {
|
|
66
|
+
rowKeyStr = rowKey(row);
|
|
67
|
+
} else if (rowKey !== undefined) {
|
|
68
|
+
rowKeyStr = _.get(row, rowKey, index);
|
|
69
|
+
}
|
|
70
|
+
return _.toString(rowKeyStr);
|
|
71
|
+
},
|
|
72
|
+
columnResizeMode: 'onChange'
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// 渲染 header
|
|
76
|
+
var headerGroups = tableInstance.getHeaderGroups();
|
|
77
|
+
var _tableInstance$getRow = tableInstance.getRowModel(),
|
|
78
|
+
rows = _tableInstance$getRow.rows;
|
|
79
|
+
var isStickyWork = !!sticky && y === undefined;
|
|
80
|
+
var headerStyle = {};
|
|
81
|
+
if (isStickyWork && _.get(sticky, 'offsetHeader')) {
|
|
82
|
+
headerStyle.top = _.get(sticky, 'offsetHeader', 0);
|
|
83
|
+
}
|
|
84
|
+
var headerContent = /*#__PURE__*/React.createElement("div", {
|
|
85
|
+
className: classnames(prefixCls('header'), (_classnames = {}, _defineProperty(_classnames, prefixCls('sticky'), isStickyWork), _defineProperty(_classnames, prefixCls('overflow-x'), true), _classnames)),
|
|
86
|
+
ref: headerRef,
|
|
87
|
+
style: headerStyle
|
|
88
|
+
}, _.map(headerGroups, function (headerGroup) {
|
|
89
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
90
|
+
className: prefixCls('tr'),
|
|
91
|
+
key: headerGroup.id
|
|
92
|
+
}, _.map(headerGroup.headers, function (header) {
|
|
93
|
+
var _classnames2;
|
|
94
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
95
|
+
className: prefixCls('th'),
|
|
96
|
+
style: {
|
|
97
|
+
width: header.getSize()
|
|
98
|
+
},
|
|
99
|
+
key: header.id
|
|
100
|
+
}, flexRender(header.column.columnDef.header, header.getContext()), columnSizing && /*#__PURE__*/React.createElement("div", {
|
|
101
|
+
onMouseDown: header.getResizeHandler(),
|
|
102
|
+
onTouchStart: header.getResizeHandler(),
|
|
103
|
+
className: classnames(prefixCls('resizer'), (_classnames2 = {}, _defineProperty(_classnames2, prefixCls('self-resizing'), header.column.getIsResizing()), _defineProperty(_classnames2, prefixCls('resizing'), tableInstance.getState().columnSizingInfo.isResizingColumn), _classnames2))
|
|
104
|
+
}));
|
|
105
|
+
}));
|
|
106
|
+
}));
|
|
107
|
+
|
|
108
|
+
// 渲染 body
|
|
109
|
+
var bodyContent = /*#__PURE__*/React.createElement(Spin, {
|
|
110
|
+
spinning: !!loading,
|
|
111
|
+
tip: "Loading..."
|
|
112
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
113
|
+
className: prefixCls('body'),
|
|
114
|
+
style: {
|
|
115
|
+
width: tableInstance.getTotalSize()
|
|
116
|
+
}
|
|
117
|
+
}, rows.length === 0 && !loading ? emptyComponent || /*#__PURE__*/React.createElement("div", {
|
|
118
|
+
className: prefixCls('empty')
|
|
119
|
+
}, /*#__PURE__*/React.createElement(Empty, {
|
|
120
|
+
title: "No Data",
|
|
121
|
+
image: Empty.PRESENTED_IMAGE_SEARCH
|
|
122
|
+
})) : _.map(rows, function (row, rowIndex) {
|
|
123
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
124
|
+
key: row.id,
|
|
125
|
+
className: classnames(prefixCls('tr'), rowClassName(row.original, rowIndex))
|
|
126
|
+
}, _.map(row.getVisibleCells(), function (cell) {
|
|
127
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
128
|
+
className: prefixCls('td'),
|
|
129
|
+
key: cell.id,
|
|
130
|
+
style: {
|
|
131
|
+
width: cell.column.getSize()
|
|
132
|
+
}
|
|
133
|
+
}, flexRender(cell.column.columnDef.cell, cell.getContext()));
|
|
134
|
+
}));
|
|
135
|
+
})));
|
|
136
|
+
var tableContent = y && totalSize ? /*#__PURE__*/React.createElement("div", {
|
|
137
|
+
className: prefixCls('content')
|
|
138
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
139
|
+
className: prefixCls('header'),
|
|
140
|
+
style: {
|
|
141
|
+
height: HEADER_HEIGHT
|
|
142
|
+
}
|
|
143
|
+
}, headerContent), /*#__PURE__*/React.createElement("div", {
|
|
144
|
+
style: {
|
|
145
|
+
height: totalSize.height - HEADER_HEIGHT
|
|
146
|
+
},
|
|
147
|
+
className: prefixCls('body-scroll')
|
|
148
|
+
}, /*#__PURE__*/React.createElement(ScrollArea, {
|
|
149
|
+
onViewportScroll: onBodyScroll
|
|
150
|
+
}, bodyContent))) : /*#__PURE__*/React.createElement("div", {
|
|
151
|
+
className: prefixCls('content')
|
|
152
|
+
}, headerContent, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ScrollArea, {
|
|
153
|
+
onViewportScroll: onBodyScroll
|
|
154
|
+
}, bodyContent)));
|
|
155
|
+
var tableStyle = {};
|
|
156
|
+
if (y) {
|
|
157
|
+
tableStyle.height = y;
|
|
158
|
+
}
|
|
159
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
160
|
+
className: prefixCls('container'),
|
|
161
|
+
style: tableStyle
|
|
162
|
+
}, /*#__PURE__*/React.createElement(ResizeObserver, {
|
|
163
|
+
onResize: function onResize(size) {
|
|
164
|
+
// 在 Modal 中使用表格组件,偶现 width 和 offsetWidth 不一致的情况,导致表格宽度不正确,具体原因未找到
|
|
165
|
+
// 实践发现 offsetWidth 一直是正确的宽度
|
|
166
|
+
setTotalSize({
|
|
167
|
+
width: size.offsetWidth,
|
|
168
|
+
height: size.offsetHeight
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
172
|
+
className: classnames(prefixCls('main'), _defineProperty({}, prefixCls('overflow-hidden'), !!y))
|
|
173
|
+
}, tableContent)), pagination && /*#__PURE__*/React.createElement("div", {
|
|
174
|
+
className: prefixCls('pagination')
|
|
175
|
+
}, /*#__PURE__*/React.createElement(Pagination, pagination)));
|
|
176
|
+
}
|
|
2
177
|
export default Table;
|