@kdcloudjs/table 1.0.1 → 1.0.2
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/LICENSE +1 -1
- package/README.md +34 -33
- package/dist/@kdcloudjs/table.css +1 -1
- package/dist/@kdcloudjs/table.css.map +1 -1
- package/dist/@kdcloudjs/table.js +6323 -3240
- package/dist/@kdcloudjs/table.js.map +1 -1
- package/dist/@kdcloudjs/table.min.css +1 -1
- package/dist/@kdcloudjs/table.min.js +32 -24
- package/dist/@kdcloudjs/table.min.js.map +1 -1
- package/es/_utils/hooks.js +1 -2
- package/es/_utils/numberUtil.js +3 -4
- package/es/locale/locale.js +1 -2
- package/es/table/base/calculations.js +2 -3
- package/es/table/base/header.d.ts +6 -2
- package/es/table/base/header.js +36 -13
- package/es/table/base/helpers/SpanManager.js +1 -1
- package/es/table/base/helpers/TableDOMUtils.d.ts +3 -0
- package/es/table/base/helpers/TableDOMUtils.js +23 -5
- package/es/table/base/helpers/getRichVisibleRectsStream.d.ts +23 -0
- package/es/table/base/helpers/getRichVisibleRectsStream.js +216 -0
- package/es/table/base/html-table.d.ts +3 -1
- package/es/table/base/html-table.js +34 -8
- package/es/table/base/interfaces.d.ts +1 -0
- package/es/table/base/renderTemplates.d.ts +1 -0
- package/es/table/base/renderTemplates.js +344 -0
- package/es/table/base/styles.d.ts +14 -0
- package/es/table/base/styles.js +20 -8
- package/es/table/base/table.d.ts +12 -4
- package/es/table/base/table.js +183 -136
- package/es/table/base/utils.d.ts +6 -3
- package/es/table/base/utils.js +27 -6
- package/es/table/common-views.js +1 -1
- package/es/table/pipeline/features/autoFill.js +7 -1
- package/es/table/pipeline/features/columnDrag.js +109 -41
- package/es/table/pipeline/features/columnFilter.js +7 -9
- package/es/table/pipeline/features/columnResizeWidth.d.ts +3 -0
- package/es/table/pipeline/features/columnResizeWidth.js +11 -4
- package/es/table/pipeline/features/contextMenu.js +42 -10
- package/es/table/pipeline/features/filter/Filter.js +74 -37
- package/es/table/pipeline/features/index.d.ts +1 -0
- package/es/table/pipeline/features/index.js +2 -1
- package/es/table/pipeline/features/rangeSelection.d.ts +10 -0
- package/es/table/pipeline/features/rangeSelection.js +231 -0
- package/es/table/pipeline/features/rowDetail.js +37 -15
- package/es/table/pipeline/features/singleSelect.js +4 -1
- package/es/table/pipeline/features/sort.js +2 -3
- package/es/table/pipeline/features/treeMode.js +1 -2
- package/es/table/pipeline/pipeline.d.ts +4 -0
- package/es/table/pipeline/pipeline.js +32 -5
- package/es/table/pivot/cross-table/buildCrossTable.js +1 -2
- package/es/table/pivot/cross-tree-table/buildCrossTreeTable.js +1 -2
- package/es/table/pivot/pivot-utils/builders.js +1 -2
- package/es/table/pivot/pivot-utils/convert-utils.js +1 -2
- package/es/table/transforms/autoWidth.js +1 -2
- package/es/table/transforms/sort.js +1 -2
- package/es/table/transforms/treeMode.js +1 -2
- package/es/table/utils/applyTransforms.js +1 -3
- package/es/table/utils/browserType.d.ts +6 -0
- package/es/table/utils/browserType.js +6 -0
- package/es/table/utils/buildTree.js +4 -5
- package/es/table/utils/collectNodes.js +1 -2
- package/es/table/utils/exportTableAsExcel.js +1 -2
- package/es/table/utils/getTreeDepth.js +1 -2
- package/es/table/utils/groupBy.js +1 -2
- package/es/table/utils/index.d.ts +1 -0
- package/es/table/utils/index.js +2 -1
- package/es/table/utils/layeredSort.js +5 -2
- package/es/table/utils/makeRecursiveMapper.js +4 -5
- package/es/table/utils/others.d.ts +1 -1
- package/es/table/utils/others.js +20 -14
- package/es/table/utils/traverseColumn.js +1 -2
- package/es/table/utils/tree-data-helpers/StrictTreeDataHelper.js +4 -5
- package/es/table/utils/tree-data-helpers/TreeDataHelper.js +4 -5
- package/lib/_utils/formatUtil.js +1 -1
- package/lib/_utils/hooks.js +2 -4
- package/lib/_utils/numberUtil.js +7 -9
- package/lib/_utils/usePopper.js +9 -1
- package/lib/config-provider/configProvider.js +9 -1
- package/lib/config-provider/index.js +5 -5
- package/lib/locale/index.js +14 -6
- package/lib/locale/locale.js +2 -4
- package/lib/table/base/calculations.js +3 -5
- package/lib/table/base/empty.js +9 -1
- package/lib/table/base/header.d.ts +6 -2
- package/lib/table/base/header.js +33 -10
- package/lib/table/base/helpers/SpanManager.js +1 -1
- package/lib/table/base/helpers/TableDOMUtils.d.ts +3 -0
- package/lib/table/base/helpers/TableDOMUtils.js +21 -5
- package/lib/table/base/helpers/getRichVisibleRectsStream.d.ts +23 -0
- package/lib/table/base/helpers/getRichVisibleRectsStream.js +246 -0
- package/lib/table/base/html-table.d.ts +3 -1
- package/lib/table/base/html-table.js +34 -8
- package/lib/table/base/index.js +4 -4
- package/lib/table/base/interfaces.d.ts +1 -0
- package/lib/table/base/renderTemplates.d.ts +1 -0
- package/lib/table/base/renderTemplates.js +370 -0
- package/lib/table/base/styles.d.ts +14 -0
- package/lib/table/base/styles.js +31 -12
- package/lib/table/base/table.d.ts +12 -4
- package/lib/table/base/table.js +191 -137
- package/lib/table/base/utils.d.ts +6 -3
- package/lib/table/base/utils.js +47 -10
- package/lib/table/common-views.js +2 -2
- package/lib/table/pipeline/features/__test__/sort.test.js +5 -3
- package/lib/table/pipeline/features/autoFill.js +9 -2
- package/lib/table/pipeline/features/columnDrag.js +108 -40
- package/lib/table/pipeline/features/columnFilter.js +6 -9
- package/lib/table/pipeline/features/columnResizeWidth.d.ts +3 -0
- package/lib/table/pipeline/features/columnResizeWidth.js +21 -5
- package/lib/table/pipeline/features/contextMenu.js +53 -11
- package/lib/table/pipeline/features/filter/DefaultFilterContent.js +10 -2
- package/lib/table/pipeline/features/filter/Filter.js +88 -37
- package/lib/table/pipeline/features/filter/FilterPanel.js +10 -2
- package/lib/table/pipeline/features/filter/index.js +4 -4
- package/lib/table/pipeline/features/index.d.ts +1 -0
- package/lib/table/pipeline/features/index.js +37 -27
- package/lib/table/pipeline/features/rangeSelection.d.ts +10 -0
- package/lib/table/pipeline/features/rangeSelection.js +256 -0
- package/lib/table/pipeline/features/rowDetail.js +39 -15
- package/lib/table/pipeline/features/singleSelect.js +4 -1
- package/lib/table/pipeline/features/sort.js +2 -4
- package/lib/table/pipeline/features/treeMode.js +2 -4
- package/lib/table/pipeline/index.js +11 -3
- package/lib/table/pipeline/pipeline.d.ts +4 -0
- package/lib/table/pipeline/pipeline.js +33 -7
- package/lib/table/pivot/cross-table/buildCrossTable.js +1 -3
- package/lib/table/pivot/cross-table/index.js +4 -4
- package/lib/table/pivot/cross-tree-table/buildCrossTreeTable.js +1 -3
- package/lib/table/pivot/pivot-utils/builders.js +2 -4
- package/lib/table/pivot/pivot-utils/convert-utils.js +1 -3
- package/lib/table/pivot/pivot-utils/index.js +4 -4
- package/lib/table/transforms/autoWidth.js +10 -4
- package/lib/table/transforms/columnResize.js +10 -2
- package/lib/table/transforms/index.js +32 -32
- package/lib/table/transforms/sort.js +10 -4
- package/lib/table/transforms/treeMode.js +9 -3
- package/lib/table/utils/applyTransforms.js +1 -5
- package/lib/table/utils/browserType.d.ts +6 -0
- package/lib/table/utils/browserType.js +13 -0
- package/lib/table/utils/buildTree.js +1 -3
- package/lib/table/utils/collectNodes.js +1 -3
- package/lib/table/utils/copyToClipboard.js +1 -1
- package/lib/table/utils/element.js +3 -3
- package/lib/table/utils/exportTableAsExcel.js +1 -3
- package/lib/table/utils/getTreeDepth.js +1 -3
- package/lib/table/utils/groupBy.js +1 -3
- package/lib/table/utils/index.d.ts +1 -0
- package/lib/table/utils/index.js +57 -49
- package/lib/table/utils/layeredSort.js +6 -2
- package/lib/table/utils/makeRecursiveMapper.js +1 -3
- package/lib/table/utils/others.d.ts +1 -1
- package/lib/table/utils/others.js +23 -18
- package/lib/table/utils/traverseColumn.js +1 -3
- package/lib/table/utils/tree-data-helpers/StrictTreeDataHelper.js +5 -7
- package/lib/table/utils/tree-data-helpers/TreeDataHelper.js +5 -7
- package/package.json +6 -2
- package/dist/kd-table.css +0 -422
- package/dist/kd-table.css.map +0 -1
- package/dist/kd-table.js +0 -38578
- package/dist/kd-table.js.map +0 -1
- package/dist/kd-table.min.css +0 -9
- package/dist/kd-table.min.js +0 -208
- package/dist/kd-table.min.js.map +0 -1
- package/es/table/base/helpers/__test__/visible-part.test.d.ts +0 -1
- package/es/table/base/helpers/__test__/visible-part.test.js +0 -28
- package/es/table/base/helpers/visible-part.d.ts +0 -23
- package/es/table/base/helpers/visible-part.js +0 -58
- package/lib/table/base/helpers/__test__/visible-part.test.d.ts +0 -1
- package/lib/table/base/helpers/__test__/visible-part.test.js +0 -31
- package/lib/table/base/helpers/visible-part.d.ts +0 -23
- package/lib/table/base/helpers/visible-part.js +0 -72
|
@@ -8,15 +8,13 @@ var _Symbol = require("@babel/runtime-corejs3/core-js-stable/symbol");
|
|
|
8
8
|
|
|
9
9
|
var _getIteratorMethod = require("@babel/runtime-corejs3/core-js/get-iterator-method");
|
|
10
10
|
|
|
11
|
-
var _getIterator = require("@babel/runtime-corejs3/core-js/get-iterator");
|
|
12
|
-
|
|
13
11
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
14
12
|
|
|
15
13
|
Object.defineProperty(exports, "__esModule", {
|
|
16
14
|
value: true
|
|
17
15
|
});
|
|
18
|
-
exports.getLeftNestedLockCount = getLeftNestedLockCount;
|
|
19
16
|
exports.calculateRenderInfo = calculateRenderInfo;
|
|
17
|
+
exports.getLeftNestedLockCount = getLeftNestedLockCount;
|
|
20
18
|
|
|
21
19
|
var _flat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/flat"));
|
|
22
20
|
|
|
@@ -40,7 +38,7 @@ var _utils = require("../utils");
|
|
|
40
38
|
|
|
41
39
|
var _utils2 = require("./utils");
|
|
42
40
|
|
|
43
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it
|
|
41
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
44
42
|
|
|
45
43
|
function _unsupportedIterableToArray(o, minLen) { var _context10; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty2(_context10 = Object.prototype.toString.call(o)).call(_context10, 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); }
|
|
46
44
|
|
|
@@ -205,7 +203,7 @@ function getHorizontalRenderRange(_ref) {
|
|
|
205
203
|
while (leftIndex + centerCount < flat.center.length) {
|
|
206
204
|
var _col = flat.center[leftIndex + centerCount];
|
|
207
205
|
|
|
208
|
-
if (
|
|
206
|
+
if (centerRenderWidth < minCenterRenderWidth) {
|
|
209
207
|
centerRenderWidth += _col.width;
|
|
210
208
|
centerCount += 1;
|
|
211
209
|
} else {
|
package/lib/table/base/empty.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
|
4
|
+
|
|
5
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
|
6
|
+
|
|
7
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
4
8
|
|
|
5
9
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
6
10
|
|
|
@@ -17,6 +21,10 @@ var _colgroup = require("./colgroup");
|
|
|
17
21
|
|
|
18
22
|
var _styles = require("./styles");
|
|
19
23
|
|
|
24
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
|
+
|
|
26
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
|
+
|
|
20
28
|
var DefaultEmptyContent = /*#__PURE__*/_react.default.memo(function () {
|
|
21
29
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("img", {
|
|
22
30
|
alt: "empty-image",
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { RenderInfo } from './interfaces';
|
|
3
|
-
|
|
3
|
+
interface TableHeaderProps {
|
|
4
4
|
info: RenderInfo;
|
|
5
|
-
|
|
5
|
+
theaderPosition?: 'left' | 'center' | 'right';
|
|
6
|
+
rowCount?: number;
|
|
7
|
+
}
|
|
8
|
+
export default function TableHeader({ info, theaderPosition, rowCount: _rowCount }: TableHeaderProps): JSX.Element;
|
|
9
|
+
export {};
|
package/lib/table/base/header.js
CHANGED
|
@@ -8,8 +8,6 @@ var _Symbol = require("@babel/runtime-corejs3/core-js-stable/symbol");
|
|
|
8
8
|
|
|
9
9
|
var _getIteratorMethod = require("@babel/runtime-corejs3/core-js/get-iterator-method");
|
|
10
10
|
|
|
11
|
-
var _getIterator = require("@babel/runtime-corejs3/core-js/get-iterator");
|
|
12
|
-
|
|
13
11
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
14
12
|
|
|
15
13
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -35,7 +33,7 @@ var _utils = require("../utils");
|
|
|
35
33
|
|
|
36
34
|
var _styles = require("./styles");
|
|
37
35
|
|
|
38
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it
|
|
36
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
39
37
|
|
|
40
38
|
function _unsupportedIterableToArray(o, minLen) { var _context6; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context6 = Object.prototype.toString.call(o)).call(_context6, 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); }
|
|
41
39
|
|
|
@@ -247,18 +245,33 @@ function calculateHeaderRenderInfo(_ref, rowCount) {
|
|
|
247
245
|
function TableHeader(_ref2) {
|
|
248
246
|
var _context4, _context5;
|
|
249
247
|
|
|
250
|
-
var info = _ref2.info
|
|
248
|
+
var info = _ref2.info,
|
|
249
|
+
theaderPosition = _ref2.theaderPosition,
|
|
250
|
+
_rowCount = _ref2.rowCount;
|
|
251
251
|
var nested = info.nested,
|
|
252
252
|
flat = (0, _flat.default)(info),
|
|
253
253
|
stickyLeftMap = info.stickyLeftMap,
|
|
254
254
|
stickyRightMap = info.stickyRightMap;
|
|
255
|
-
var rowCount = (0, _utils.getTreeDepth)(nested.full) + 1;
|
|
255
|
+
var rowCount = _rowCount !== null && _rowCount !== void 0 ? _rowCount : (0, _utils.getTreeDepth)(nested.full) + 1;
|
|
256
256
|
var headerRenderInfo = calculateHeaderRenderInfo(info, rowCount);
|
|
257
257
|
var fullFlatCount = flat.full.length;
|
|
258
258
|
var leftFlatCount = flat.left.length;
|
|
259
259
|
var rightFlatCount = flat.right.length;
|
|
260
260
|
var thead = (0, _map.default)(_context4 = headerRenderInfo.leveled).call(_context4, function (wrappedCols, level) {
|
|
261
|
-
var
|
|
261
|
+
var _wrappedCols = (0, _concat.default)(wrappedCols).call(wrappedCols); // 左中右区域渲染,分组列可能单独位于一个区域,此时其他区域也需要适配分组的高度
|
|
262
|
+
// rowspan 需要空白的列头去占位, 需要补充额外的空白列头
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
if (rowCount > 1 && ['left', 'right'].indexOf(theaderPosition) > -1) {
|
|
266
|
+
_wrappedCols.push({
|
|
267
|
+
type: 'blank',
|
|
268
|
+
blankSide: 'left',
|
|
269
|
+
width: 1,
|
|
270
|
+
isPlacehoder: true
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
var headerCells = (0, _map.default)(_wrappedCols).call(_wrappedCols, function (wrapped, index) {
|
|
262
275
|
var _a, _b, _c;
|
|
263
276
|
|
|
264
277
|
if (wrapped.type === 'normal') {
|
|
@@ -277,14 +290,16 @@ function TableHeader(_ref2) {
|
|
|
277
290
|
positionStyle.right = stickyRightMap.get(colIndex);
|
|
278
291
|
}
|
|
279
292
|
|
|
293
|
+
var justifyContent = col.align === 'right' ? 'flex-end' : col.align === 'center' ? 'center' : 'flex-start';
|
|
294
|
+
|
|
280
295
|
var cell = /*#__PURE__*/_react.default.createElement("th", (0, _extends2.default)({
|
|
281
296
|
key: colIndex
|
|
282
297
|
}, headerCellProps, {
|
|
283
298
|
className: (0, _classnames.default)(_styles.Classes.tableHeaderCell, headerCellProps.className, {
|
|
284
299
|
first: colIndex === 0,
|
|
285
300
|
last: colIndex + colSpan === fullFlatCount,
|
|
286
|
-
'lock-left': colIndex < leftFlatCount,
|
|
287
|
-
'lock-right': colIndex >= fullFlatCount - rightFlatCount,
|
|
301
|
+
'lock-left': colIndex < leftFlatCount || theaderPosition === 'left',
|
|
302
|
+
'lock-right': colIndex >= fullFlatCount - rightFlatCount || theaderPosition === 'right',
|
|
288
303
|
leaf: wrapped.isLeaf
|
|
289
304
|
}),
|
|
290
305
|
colSpan: colSpan,
|
|
@@ -294,13 +309,21 @@ function TableHeader(_ref2) {
|
|
|
294
309
|
verticalAlign: (_b = col.verticalAlign) !== null && _b !== void 0 ? _b : 'middle'
|
|
295
310
|
}, headerCellProps.style), positionStyle),
|
|
296
311
|
"data-code": col.code
|
|
297
|
-
}),
|
|
312
|
+
}), theaderPosition === 'center' && positionStyle.position === 'sticky' ? null : /*#__PURE__*/_react.default.createElement("div", {
|
|
313
|
+
className: _styles.Classes.tableHeaderCellContent,
|
|
314
|
+
style: {
|
|
315
|
+
justifyContent: justifyContent
|
|
316
|
+
}
|
|
317
|
+
}, (_c = col.title) !== null && _c !== void 0 ? _c : col.name));
|
|
298
318
|
|
|
299
319
|
return cell;
|
|
300
320
|
} else {
|
|
301
321
|
if (wrapped.width > 0) {
|
|
302
322
|
return /*#__PURE__*/_react.default.createElement("th", {
|
|
303
|
-
key: wrapped.blankSide
|
|
323
|
+
key: wrapped.blankSide,
|
|
324
|
+
style: {
|
|
325
|
+
visibility: wrapped.isPlacehoder ? 'hidden' : undefined
|
|
326
|
+
}
|
|
304
327
|
});
|
|
305
328
|
} else {
|
|
306
329
|
return null;
|
|
@@ -47,7 +47,7 @@ var SpanManager = /*#__PURE__*/function () {
|
|
|
47
47
|
value: function add(rowIndex, colIndex, colSpan, rowSpan) {
|
|
48
48
|
this.rects.push({
|
|
49
49
|
left: colIndex,
|
|
50
|
-
right: colIndex + colSpan,
|
|
50
|
+
right: colIndex + (colSpan < 1 ? 1 : colSpan),
|
|
51
51
|
top: rowIndex,
|
|
52
52
|
bottom: rowIndex + rowSpan
|
|
53
53
|
});
|
|
@@ -8,6 +8,8 @@ export declare class TableDOMHelper {
|
|
|
8
8
|
readonly tableFooter: HTMLDivElement;
|
|
9
9
|
readonly stickyScroll: HTMLDivElement;
|
|
10
10
|
readonly stickyScrollItem: HTMLDivElement;
|
|
11
|
+
readonly tableHeaderMain: HTMLDivElement;
|
|
12
|
+
readonly tableFooterMain: HTMLDivElement;
|
|
11
13
|
constructor(artTableWrapper: HTMLDivElement);
|
|
12
14
|
getVirtualTop(): HTMLDivElement;
|
|
13
15
|
getTableRows(): NodeListOf<HTMLTableRowElement>;
|
|
@@ -15,4 +17,5 @@ export declare class TableDOMHelper {
|
|
|
15
17
|
getLeftLockShadow(): HTMLDivElement;
|
|
16
18
|
getRightLockShadow(): HTMLDivElement;
|
|
17
19
|
getLoadingIndicator(): HTMLDivElement;
|
|
20
|
+
getRowTop(rowIndex: number): number;
|
|
18
21
|
}
|
|
@@ -60,10 +60,12 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
60
60
|
this.artTableWrapper = artTableWrapper;
|
|
61
61
|
this.artTable = artTableWrapper.querySelector(".".concat(_styles.Classes.artTable));
|
|
62
62
|
this.tableHeader = this.artTable.querySelector(".".concat(_styles.Classes.tableHeader));
|
|
63
|
+
this.tableHeaderMain = this.artTable.querySelector(".".concat(_styles.Classes.tableHeaderMain));
|
|
63
64
|
this.tableBody = this.artTable.querySelector(".".concat(_styles.Classes.tableBody));
|
|
64
65
|
this.virtual = this.artTable.querySelector(".".concat(_styles.Classes.virtual));
|
|
65
66
|
this.tableElement = this.artTable.querySelector(".".concat(_styles.Classes.tableBody, " table"));
|
|
66
67
|
this.tableFooter = this.artTable.querySelector(".".concat(_styles.Classes.tableFooter));
|
|
68
|
+
this.tableFooterMain = this.artTable.querySelector(".".concat(_styles.Classes.tableFooterMain));
|
|
67
69
|
var stickyScrollSelector = (0, _concat.default)(_context = ".".concat(_styles.Classes.artTable, " + .")).call(_context, _styles.Classes.stickyScroll);
|
|
68
70
|
this.stickyScroll = artTableWrapper.querySelector(stickyScrollSelector);
|
|
69
71
|
this.stickyScrollItem = this.stickyScroll.querySelector(".".concat(_styles.Classes.stickyScrollItem));
|
|
@@ -83,22 +85,24 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
83
85
|
}, {
|
|
84
86
|
key: "getTableBodyHtmlTable",
|
|
85
87
|
value: function getTableBodyHtmlTable() {
|
|
86
|
-
|
|
88
|
+
var _context2;
|
|
89
|
+
|
|
90
|
+
return this.artTable.querySelector((0, _concat.default)(_context2 = ".".concat(_styles.Classes.tableBody, " .")).call(_context2, _styles.Classes.virtual, " table"));
|
|
87
91
|
}
|
|
88
92
|
}, {
|
|
89
93
|
key: "getLeftLockShadow",
|
|
90
94
|
value: function getLeftLockShadow() {
|
|
91
|
-
var
|
|
95
|
+
var _context3;
|
|
92
96
|
|
|
93
|
-
var selector = (0, _concat.default)(
|
|
97
|
+
var selector = (0, _concat.default)(_context3 = ".".concat(_styles.Classes.lockShadowMask, " .")).call(_context3, _styles.Classes.leftLockShadow);
|
|
94
98
|
return this.artTable.querySelector(selector);
|
|
95
99
|
}
|
|
96
100
|
}, {
|
|
97
101
|
key: "getRightLockShadow",
|
|
98
102
|
value: function getRightLockShadow() {
|
|
99
|
-
var
|
|
103
|
+
var _context4;
|
|
100
104
|
|
|
101
|
-
var selector = (0, _concat.default)(
|
|
105
|
+
var selector = (0, _concat.default)(_context4 = ".".concat(_styles.Classes.lockShadowMask, " .")).call(_context4, _styles.Classes.rightLockShadow);
|
|
102
106
|
return this.artTable.querySelector(selector);
|
|
103
107
|
}
|
|
104
108
|
}, {
|
|
@@ -106,6 +110,18 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
106
110
|
value: function getLoadingIndicator() {
|
|
107
111
|
return this.artTableWrapper.querySelector(".".concat(_styles.Classes.loadingIndicator));
|
|
108
112
|
}
|
|
113
|
+
}, {
|
|
114
|
+
key: "getRowTop",
|
|
115
|
+
value: function getRowTop(rowIndex) {
|
|
116
|
+
var _context5, _context6;
|
|
117
|
+
|
|
118
|
+
if (rowIndex === 0) return 0;
|
|
119
|
+
var selector = (0, _concat.default)(_context5 = (0, _concat.default)(_context6 = ".".concat(_styles.Classes.tableBody, " .")).call(_context6, _styles.Classes.tableRow, "[data-rowindex=\"")).call(_context5, rowIndex, "\"]");
|
|
120
|
+
var row = this.artTable.querySelector(selector);
|
|
121
|
+
var rowOffsetTop = row && row.offsetTop || 0;
|
|
122
|
+
var tableOffsetTop = this.tableElement.offsetTop || 0;
|
|
123
|
+
return rowOffsetTop + tableOffsetTop;
|
|
124
|
+
}
|
|
109
125
|
}]);
|
|
110
126
|
return TableDOMHelper;
|
|
111
127
|
}();
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
export declare function getRichVisibleRectsStream(target: HTMLElement, structureMayChange$: Observable<'structure-may-change'>, virtualDebugLabel?: string): Observable<{
|
|
3
|
+
event: unknown;
|
|
4
|
+
targetRect: {
|
|
5
|
+
top: number;
|
|
6
|
+
left: number;
|
|
7
|
+
bottom: number;
|
|
8
|
+
right: number;
|
|
9
|
+
};
|
|
10
|
+
scrollParentRect: {
|
|
11
|
+
top: number;
|
|
12
|
+
left: number;
|
|
13
|
+
bottom: number;
|
|
14
|
+
right: number;
|
|
15
|
+
};
|
|
16
|
+
offsetY: number;
|
|
17
|
+
clipRect: {
|
|
18
|
+
left: number;
|
|
19
|
+
top: number;
|
|
20
|
+
right: number;
|
|
21
|
+
bottom: number;
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
|
4
|
+
|
|
5
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
|
6
|
+
|
|
7
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
8
|
+
|
|
9
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
10
|
+
|
|
11
|
+
Object.defineProperty(exports, "__esModule", {
|
|
12
|
+
value: true
|
|
13
|
+
});
|
|
14
|
+
exports.getRichVisibleRectsStream = getRichVisibleRectsStream;
|
|
15
|
+
|
|
16
|
+
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
17
|
+
|
|
18
|
+
var _getNodeName = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/getNodeName"));
|
|
19
|
+
|
|
20
|
+
var _getOffsetParent = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/getOffsetParent"));
|
|
21
|
+
|
|
22
|
+
var _getParentNode = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/getParentNode"));
|
|
23
|
+
|
|
24
|
+
var _getWindow = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/getWindow"));
|
|
25
|
+
|
|
26
|
+
var _getWindowScroll = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/getWindowScroll"));
|
|
27
|
+
|
|
28
|
+
var _instanceOf = require("@popperjs/core/lib/dom-utils/instanceOf");
|
|
29
|
+
|
|
30
|
+
var _isScrollParent = _interopRequireDefault(require("@popperjs/core/lib/dom-utils/isScrollParent"));
|
|
31
|
+
|
|
32
|
+
var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill"));
|
|
33
|
+
|
|
34
|
+
var _rxjs = require("rxjs");
|
|
35
|
+
|
|
36
|
+
var op = _interopRequireWildcard(require("rxjs/operators"));
|
|
37
|
+
|
|
38
|
+
var _utils = require("../utils");
|
|
39
|
+
|
|
40
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
|
+
|
|
42
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
|
+
|
|
44
|
+
function isWindow(arg) {
|
|
45
|
+
return arg.toString() === '[object Window]';
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function isBody(arg) {
|
|
49
|
+
return (0, _getNodeName.default)(arg) === 'body';
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function isHtml(arg) {
|
|
53
|
+
return (0, _getNodeName.default)(arg) === 'html';
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function isHtmlOrBody(arg) {
|
|
57
|
+
return isHtml(arg) || isBody(arg);
|
|
58
|
+
} // 计算从 start(子元素)到 stop(祖先元素)之间所有元素的 scrollTop 或 scrollLeft 的和
|
|
59
|
+
// 注意 start 和 stop 都是 INCLUSIVE 的,即两者的 scrollTop 或 scrollLeft 都会统计在内
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
function accumulateScrollOffset(start, stop, scrollOffsetKey) {
|
|
63
|
+
var result = 0;
|
|
64
|
+
var elem = start;
|
|
65
|
+
|
|
66
|
+
while (elem != null) {
|
|
67
|
+
result += elem[scrollOffsetKey];
|
|
68
|
+
|
|
69
|
+
if (elem === stop || isWindow(stop) && isHtmlOrBody(elem)) {
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
elem = elem.parentElement;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (isWindow(stop)) {
|
|
77
|
+
result += (0, _getWindowScroll.default)(elem)[scrollOffsetKey];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 获取 target 相对于 base 的布局大小和相对位置。
|
|
84
|
+
* 注意该方法会考虑滚动所带来的影响
|
|
85
|
+
*/
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
function getRelativeLayoutRect(base, target) {
|
|
89
|
+
if (isWindow(target) || isHtmlOrBody(target)) {
|
|
90
|
+
return {
|
|
91
|
+
left: 0,
|
|
92
|
+
right: window.innerWidth,
|
|
93
|
+
top: 0,
|
|
94
|
+
bottom: window.innerHeight
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
var deltaX = 0;
|
|
99
|
+
var deltaY = 0;
|
|
100
|
+
var elem = target;
|
|
101
|
+
|
|
102
|
+
while (elem != null && elem != base) {
|
|
103
|
+
deltaY += elem.offsetTop;
|
|
104
|
+
deltaX += elem.offsetLeft;
|
|
105
|
+
var offsetParent = (0, _getOffsetParent.default)(elem);
|
|
106
|
+
deltaY -= accumulateScrollOffset(elem.parentElement, offsetParent, 'scrollTop');
|
|
107
|
+
deltaX -= accumulateScrollOffset(elem.parentElement, offsetParent, 'scrollLeft');
|
|
108
|
+
|
|
109
|
+
if (isWindow(offsetParent)) {
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
deltaY += offsetParent.clientTop;
|
|
114
|
+
deltaX += offsetParent.clientLeft;
|
|
115
|
+
elem = offsetParent;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return {
|
|
119
|
+
top: deltaY,
|
|
120
|
+
bottom: deltaY + target.offsetHeight,
|
|
121
|
+
left: deltaX,
|
|
122
|
+
right: deltaX + target.offsetWidth
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function findCommonOffsetAncestor(target, scrollParent) {
|
|
127
|
+
if (isWindow(scrollParent)) {
|
|
128
|
+
return scrollParent;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
var offsetParents = listOffsetParents(target);
|
|
132
|
+
|
|
133
|
+
if ((0, _includes.default)(offsetParents).call(offsetParents, scrollParent)) {
|
|
134
|
+
return scrollParent;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return (0, _getOffsetParent.default)(scrollParent);
|
|
138
|
+
} // 列出 target 元素上层的所有 offset parents
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
function listOffsetParents(target) {
|
|
142
|
+
var result = [];
|
|
143
|
+
var elem = target;
|
|
144
|
+
|
|
145
|
+
while (true) {
|
|
146
|
+
if (isWindow(elem)) {
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
elem = (0, _getOffsetParent.default)(elem);
|
|
151
|
+
result.push(elem);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function fromScrollEvent(element) {
|
|
158
|
+
return (0, _rxjs.fromEvent)(element, 'scroll', {
|
|
159
|
+
passive: true
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function fromResizeEvent(element) {
|
|
164
|
+
if (isWindow(element)) {
|
|
165
|
+
return (0, _rxjs.fromEvent)(element, 'resize', {
|
|
166
|
+
passive: true
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return new _rxjs.Observable(function (subscriber) {
|
|
171
|
+
var resizeObserver = new _resizeObserverPolyfill.default(function (entries) {
|
|
172
|
+
subscriber.next(entries);
|
|
173
|
+
});
|
|
174
|
+
resizeObserver.observe(element);
|
|
175
|
+
return function () {
|
|
176
|
+
resizeObserver.disconnect();
|
|
177
|
+
};
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function getScrollParent(elem) {
|
|
182
|
+
var _context;
|
|
183
|
+
|
|
184
|
+
if ((0, _includes.default)(_context = ['html', 'body', '#document']).call(_context, (0, _getNodeName.default)(elem))) {
|
|
185
|
+
return (0, _getWindow.default)(elem);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if ((0, _instanceOf.isHTMLElement)(elem) && (0, _isScrollParent.default)(elem)) {
|
|
189
|
+
return elem;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
return getScrollParent((0, _getParentNode.default)(elem));
|
|
193
|
+
} // 获取 target 相对于「它的滚动父元素」的可见部分的大小与位置
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
function getRichVisibleRectsStream(target, structureMayChange$, virtualDebugLabel) {
|
|
197
|
+
return structureMayChange$.pipe(op.startWith('init'), op.map(function () {
|
|
198
|
+
// target 的第一个滚动父元素,我们认为这就是虚拟滚动发生的地方
|
|
199
|
+
// 即虚拟滚动不考虑「更上层元素发生滚动」的情况
|
|
200
|
+
// 直接从父元素开始查找,防止自身设置overflow属性导致是同一个元素
|
|
201
|
+
var scrollParent = getScrollParent((0, _getParentNode.default)(target)); // target 和 scrollParent 的共同 offset 祖先,作为布局尺寸计算时的参照元素
|
|
202
|
+
|
|
203
|
+
var commonOffsetAncestor = findCommonOffsetAncestor(target, scrollParent);
|
|
204
|
+
return {
|
|
205
|
+
scrollParent: scrollParent,
|
|
206
|
+
commonOffsetAncestor: commonOffsetAncestor
|
|
207
|
+
};
|
|
208
|
+
}), op.distinctUntilChanged(_utils.shallowEqual), op.tap(function (structure) {
|
|
209
|
+
if (virtualDebugLabel) {
|
|
210
|
+
console.log("%c[ali-react-table STRUCTURE ".concat(virtualDebugLabel, "]"), 'color: #4f9052; font-weight: bold', '\ntarget:', target, '\nscrollParent:', structure.scrollParent, '\ncommonOffsetAncestor:', structure.commonOffsetAncestor);
|
|
211
|
+
}
|
|
212
|
+
}), op.switchMap(function (_ref) {
|
|
213
|
+
var scrollParent = _ref.scrollParent,
|
|
214
|
+
commonOffsetAncestor = _ref.commonOffsetAncestor;
|
|
215
|
+
var events$ = (0, _rxjs.merge)(fromScrollEvent(scrollParent), fromResizeEvent(scrollParent), fromResizeEvent(target));
|
|
216
|
+
return events$.pipe(op.map(function (event) {
|
|
217
|
+
return {
|
|
218
|
+
targetRect: getRelativeLayoutRect(commonOffsetAncestor, target),
|
|
219
|
+
scrollParentRect: getRelativeLayoutRect(commonOffsetAncestor, scrollParent),
|
|
220
|
+
event: event
|
|
221
|
+
};
|
|
222
|
+
}), op.map(function (_ref2) {
|
|
223
|
+
var event = _ref2.event,
|
|
224
|
+
scrollParentRect = _ref2.scrollParentRect,
|
|
225
|
+
targetRect = _ref2.targetRect;
|
|
226
|
+
return {
|
|
227
|
+
event: event,
|
|
228
|
+
targetRect: targetRect,
|
|
229
|
+
scrollParentRect: scrollParentRect,
|
|
230
|
+
offsetY: Math.max(0, scrollParentRect.top - targetRect.top),
|
|
231
|
+
// 表格的横向滚动总是发生在表格内部,所以这里不需要计算 offsetX
|
|
232
|
+
// offsetX: Math.max(0, scrollParentRect.left - targetRect.left),
|
|
233
|
+
clipRect: {
|
|
234
|
+
left: Math.max(targetRect.left, scrollParentRect.left),
|
|
235
|
+
top: Math.max(targetRect.top, scrollParentRect.top),
|
|
236
|
+
right: Math.min(targetRect.right, scrollParentRect.right),
|
|
237
|
+
bottom: Math.min(targetRect.bottom, scrollParentRect.bottom)
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
}));
|
|
241
|
+
}), op.tap(function (rects) {
|
|
242
|
+
if (virtualDebugLabel) {
|
|
243
|
+
console.log("%c[ali-react-table RECTS ".concat(virtualDebugLabel, "]"), 'color: #4f9052; font-weight: bold', '\noffsetY:', rects.offsetY, '\ntargetRect:', rects.targetRect, '\nscrollParentRect:', rects.scrollParentRect, '\nclipRect:', rects.clipRect, '\nevent:', rects.event);
|
|
244
|
+
}
|
|
245
|
+
}));
|
|
246
|
+
}
|
|
@@ -4,6 +4,7 @@ import { BaseTableProps } from './table';
|
|
|
4
4
|
export interface HtmlTableProps extends Required<Pick<BaseTableProps, 'getRowProps' | 'primaryKey'>> {
|
|
5
5
|
tbodyHtmlTag: 'tbody' | 'tfoot';
|
|
6
6
|
data: any[];
|
|
7
|
+
hasScrollY?: boolean;
|
|
7
8
|
horizontalRenderInfo: Pick<RenderInfo, 'flat' | 'visible' | 'horizontalRenderRange' | 'stickyLeftMap' | 'stickyRightMap'>;
|
|
8
9
|
verticalRenderInfo: {
|
|
9
10
|
offset: number;
|
|
@@ -11,5 +12,6 @@ export interface HtmlTableProps extends Required<Pick<BaseTableProps, 'getRowPro
|
|
|
11
12
|
last: number;
|
|
12
13
|
limit: number;
|
|
13
14
|
};
|
|
15
|
+
tbodyPosition?: 'left' | 'center' | 'right';
|
|
14
16
|
}
|
|
15
|
-
export declare function HtmlTable({ tbodyHtmlTag, getRowProps, primaryKey, data, verticalRenderInfo: verInfo, horizontalRenderInfo: hozInfo }: HtmlTableProps): JSX.Element;
|
|
17
|
+
export declare function HtmlTable({ tbodyHtmlTag, getRowProps, primaryKey, hasScrollY, data, verticalRenderInfo: verInfo, horizontalRenderInfo: hozInfo, tbodyPosition }: HtmlTableProps): JSX.Element;
|
|
@@ -13,6 +13,8 @@ var _flat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stabl
|
|
|
13
13
|
|
|
14
14
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
15
15
|
|
|
16
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
17
|
+
|
|
16
18
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
17
19
|
|
|
18
20
|
var _react = _interopRequireDefault(require("react"));
|
|
@@ -25,13 +27,17 @@ var _SpanManager = _interopRequireDefault(require("./helpers/SpanManager"));
|
|
|
25
27
|
|
|
26
28
|
var _styles = require("./styles");
|
|
27
29
|
|
|
30
|
+
var _utils = require("./utils");
|
|
31
|
+
|
|
28
32
|
function HtmlTable(_ref) {
|
|
29
33
|
var tbodyHtmlTag = _ref.tbodyHtmlTag,
|
|
30
34
|
getRowProps = _ref.getRowProps,
|
|
31
35
|
primaryKey = _ref.primaryKey,
|
|
36
|
+
hasScrollY = _ref.hasScrollY,
|
|
32
37
|
data = _ref.data,
|
|
33
38
|
verInfo = _ref.verticalRenderInfo,
|
|
34
|
-
hozInfo = _ref.horizontalRenderInfo
|
|
39
|
+
hozInfo = _ref.horizontalRenderInfo,
|
|
40
|
+
tbodyPosition = _ref.tbodyPosition;
|
|
35
41
|
var flat = (0, _flat.default)(hozInfo),
|
|
36
42
|
hoz = hozInfo.horizontalRenderRange;
|
|
37
43
|
var spanManager = new _SpanManager.default();
|
|
@@ -54,15 +60,31 @@ function HtmlTable(_ref) {
|
|
|
54
60
|
even: rowIndex % 2 === 0,
|
|
55
61
|
odd: rowIndex % 2 === 1
|
|
56
62
|
}, rowProps === null || rowProps === void 0 ? void 0 : rowProps.className);
|
|
63
|
+
var visibleColumnDescriptor = (0, _concat.default)(_context = hozInfo.visible).call(_context); // 左中右区域渲染,存在融合单元格时需要适配rowspan属性
|
|
64
|
+
// 如果固定的列均存在融合单元格,需空白一列做占位,否则融合的单元格不会渲染,导致显示异常
|
|
65
|
+
// 这里无法区分是否存在融合列,默认左右固定区域均添加占位空白列
|
|
66
|
+
|
|
67
|
+
if (['left', 'right'].indexOf(tbodyPosition) > -1) {
|
|
68
|
+
visibleColumnDescriptor.push({
|
|
69
|
+
type: 'blank',
|
|
70
|
+
blankSide: 'left',
|
|
71
|
+
width: 0,
|
|
72
|
+
isPlacehoder: true
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
57
76
|
return /*#__PURE__*/_react.default.createElement("tr", (0, _extends2.default)({}, rowProps, {
|
|
58
77
|
className: rowClass,
|
|
59
|
-
key: _internals.internals.safeGetRowKey(primaryKey, record, rowIndex),
|
|
78
|
+
key: (rowProps === null || rowProps === void 0 ? void 0 : rowProps['data-row-detail-key']) ? rowProps['data-row-detail-key'] : _internals.internals.safeGetRowKey(primaryKey, record, rowIndex),
|
|
60
79
|
"data-rowindex": rowIndex,
|
|
61
80
|
"data-role": 'table-row'
|
|
62
|
-
}), (0, _map.default)(
|
|
81
|
+
}), (0, _map.default)(visibleColumnDescriptor).call(visibleColumnDescriptor, function (descriptor) {
|
|
63
82
|
if (descriptor.type === 'blank') {
|
|
64
83
|
return /*#__PURE__*/_react.default.createElement("td", {
|
|
65
|
-
key: descriptor.blankSide
|
|
84
|
+
key: descriptor.blankSide,
|
|
85
|
+
style: {
|
|
86
|
+
visibility: descriptor.isPlacehoder ? 'hidden' : undefined
|
|
87
|
+
}
|
|
66
88
|
});
|
|
67
89
|
}
|
|
68
90
|
|
|
@@ -105,7 +127,10 @@ function HtmlTable(_ref) {
|
|
|
105
127
|
|
|
106
128
|
|
|
107
129
|
rowSpan = Math.min(rowSpan, verInfo.limit - rowIndex);
|
|
108
|
-
colSpan = Math.min(colSpan, leftFlatCount + hoz.rightIndex - colIndex);
|
|
130
|
+
colSpan = Math.min(colSpan, leftFlatCount + hoz.rightIndex + rightFlatCount - colIndex); // todo: 右侧有列固定的情况下colSpan计算不对,这里先限制一下
|
|
131
|
+
|
|
132
|
+
rowSpan = Math.max(rowSpan, 1);
|
|
133
|
+
colSpan = Math.max(colSpan, 1);
|
|
109
134
|
var hasSpan = colSpan > 1 || rowSpan > 1;
|
|
110
135
|
|
|
111
136
|
if (hasSpan) {
|
|
@@ -113,13 +138,14 @@ function HtmlTable(_ref) {
|
|
|
113
138
|
}
|
|
114
139
|
|
|
115
140
|
var positionStyle = {};
|
|
141
|
+
var scrollbarWidth = hasScrollY ? (0, _utils.getScrollbarSize)().width : 0;
|
|
116
142
|
|
|
117
143
|
if (colIndex < leftFlatCount) {
|
|
118
144
|
positionStyle.position = 'sticky';
|
|
119
145
|
positionStyle.left = hozInfo.stickyLeftMap.get(colIndex);
|
|
120
146
|
} else if (colIndex >= fullFlatCount - rightFlatCount) {
|
|
121
147
|
positionStyle.position = 'sticky';
|
|
122
|
-
positionStyle.right = hozInfo.stickyRightMap.get(colIndex);
|
|
148
|
+
positionStyle.right = hozInfo.stickyRightMap.get(colIndex) - scrollbarWidth;
|
|
123
149
|
}
|
|
124
150
|
|
|
125
151
|
return /*#__PURE__*/_react.default.createElement('td', (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({
|
|
@@ -129,7 +155,7 @@ function HtmlTable(_ref) {
|
|
|
129
155
|
// class
|
|
130
156
|
first: colIndex === 0,
|
|
131
157
|
last: colIndex + colSpan === fullFlatCount,
|
|
132
|
-
'lock-left': colIndex < leftFlatCount,
|
|
158
|
+
'lock-left': colIndex < leftFlatCount || tbodyPosition === 'left',
|
|
133
159
|
'lock-right': colIndex >= fullFlatCount - rightFlatCount,
|
|
134
160
|
'row-span': rowSpan > 1
|
|
135
161
|
})
|
|
@@ -144,6 +170,6 @@ function HtmlTable(_ref) {
|
|
|
144
170
|
'data-role': 'table-cell',
|
|
145
171
|
'data-rowindex': rowIndex,
|
|
146
172
|
'data-code': column.code
|
|
147
|
-
}), cellContent);
|
|
173
|
+
}), tbodyPosition === 'center' && positionStyle.position === 'sticky' ? null : cellContent);
|
|
148
174
|
}
|
|
149
175
|
}
|