@kdcloudjs/table 1.2.2-canary.11 → 1.2.2-canary.13
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 +568 -568
- package/README.md +111 -111
- package/dist/@kdcloudjs/table.css +1 -1
- package/dist/@kdcloudjs/table.js +3628 -3483
- package/dist/@kdcloudjs/table.js.map +1 -1
- package/dist/@kdcloudjs/table.min.css +1 -1
- package/dist/@kdcloudjs/table.min.js +11 -13
- package/dist/@kdcloudjs/table.min.js.map +1 -1
- package/dist/kd-ui-complete.less +777 -777
- package/es/_utils/formatUtil.js +5 -1
- package/es/_utils/hooks.js +3 -3
- package/es/_utils/usePopper.js +13 -13
- package/es/locale/locale.js +7 -6
- package/es/style/color/colors.less +1 -1
- package/es/style/core/index.less +1 -1
- package/es/style/core/motion/other.less +27 -27
- package/es/style/core/motion/slide.less +53 -53
- package/es/style/core/motion.less +1 -1
- package/es/style/core/reset.less +185 -185
- package/es/style/index.less +1 -1
- package/es/style/mixins/index.less +18 -18
- package/es/style/mixins/overlay.less +21 -21
- package/es/style/mixins/reset.less +12 -12
- package/es/style/themes/default.less +445 -445
- package/es/table/base/BlankComponent.d.ts +11 -0
- package/es/table/base/BlankComponent.js +61 -0
- package/es/table/base/calculations.js +3 -3
- package/es/table/base/empty.js +2 -2
- package/es/table/base/globalStyleComponent.d.ts +5 -1
- package/es/table/base/globalStyleComponent.js +11 -7
- package/es/table/base/header.js +19 -8
- package/es/table/base/helpers/FastScrollManager.d.ts +96 -0
- package/es/table/base/helpers/FastScrollManager.js +167 -0
- package/es/table/base/helpers/SpanManager.js +2 -1
- package/es/table/base/helpers/TableDOMUtils.js +6 -5
- package/es/table/base/html-table.d.ts +1 -1
- package/es/table/base/html-table.js +16 -5
- package/es/table/base/interfaces.d.ts +2 -0
- package/es/table/base/loading.js +2 -2
- package/es/table/base/renderTemplates.js +16 -16
- package/es/table/base/styles.d.ts +2 -2
- package/es/table/base/styles.js +59 -4
- package/es/table/base/table.d.ts +14 -0
- package/es/table/base/table.js +163 -98
- package/es/table/base/utils.d.ts +1 -0
- package/es/table/base/utils.js +9 -3
- package/es/table/pipeline/features/colGroupExtendable.d.ts +1 -1
- package/es/table/pipeline/features/colGroupExtendable.js +7 -3
- package/es/table/pipeline/features/columnDrag.js +21 -12
- package/es/table/pipeline/features/columnFilter.js +5 -2
- package/es/table/pipeline/features/columnResizeWidth.js +11 -4
- package/es/table/pipeline/features/contextMenu.js +15 -8
- package/es/table/pipeline/features/featureApi/RowDragApi.js +2 -1
- package/es/table/pipeline/features/filter/DefaultFilterContent.js +5 -4
- package/es/table/pipeline/features/filter/Filter.d.ts +2 -1
- package/es/table/pipeline/features/filter/Filter.js +13 -8
- package/es/table/pipeline/features/filter/FilterPanel.d.ts +3 -1
- package/es/table/pipeline/features/filter/FilterPanel.js +15 -5
- package/es/table/pipeline/features/rangeSelection.js +10 -10
- package/es/table/pipeline/features/rowDetail.js +2 -2
- package/es/table/pipeline/features/rowDrag.js +47 -19
- package/es/table/pipeline/features/rowGrouping.js +2 -2
- package/es/table/pipeline/features/sort.js +7 -6
- package/es/table/pipeline/features/tips.js +10 -6
- package/es/table/pipeline/features/treeMode.js +5 -5
- package/es/table/pipeline/features/treeSelect.js +2 -2
- package/es/table/pipeline/pipeline.js +2 -1
- package/es/table/pivot/cross-table/buildCrossTable.js +8 -6
- package/es/table/pivot/cross-table/cross-table.js +3 -1
- package/es/table/pivot/cross-table/interfaces.d.ts +1 -1
- package/es/table/pivot/cross-tree-table/buildCrossTreeTable.js +10 -8
- package/es/table/pivot/cross-tree-table/cross-tree-table.js +11 -8
- package/es/table/pivot/pivot-utils/builders.js +3 -3
- package/es/table/pivot/pivot-utils/convert-utils.js +3 -3
- package/es/table/style/index.less +1 -1
- package/es/table/transforms/autoWidth.js +3 -3
- package/es/table/transforms/columnResize.js +5 -3
- package/es/table/transforms/sort.js +8 -6
- package/es/table/transforms/tips.js +4 -4
- package/es/table/transforms/treeMode.js +8 -6
- package/es/table/utils/buildTree.js +3 -3
- package/es/table/utils/collectNodes.js +3 -3
- package/es/table/utils/element.d.ts +1 -1
- package/es/table/utils/element.js +5 -3
- package/es/table/utils/exportTableAsExcel.js +3 -3
- package/es/table/utils/getTreeDepth.js +3 -3
- package/es/table/utils/groupBy.js +3 -3
- package/es/table/utils/makeRecursiveMapper.js +3 -3
- package/es/table/utils/mergeCellProps.js +1 -0
- package/es/table/utils/others.js +3 -3
- package/es/table/utils/traverseColumn.js +3 -3
- package/es/table/utils/tree-data-helpers/StrictTreeDataHelper.js +8 -7
- package/es/table/utils/tree-data-helpers/TreeDataHelper.js +5 -4
- package/lib/_utils/arrayUtil.js +3 -2
- package/lib/_utils/formatUtil.js +5 -1
- package/lib/_utils/hooks.js +3 -3
- package/lib/_utils/index.js +3 -2
- package/lib/_utils/type.js +5 -3
- package/lib/_utils/usePopper.js +21 -18
- package/lib/config-provider/ConfigContext.js +2 -1
- package/lib/config-provider/compDefaultProps.js +2 -1
- package/lib/config-provider/configProvider.js +4 -3
- package/lib/config-provider/defaultConfig.js +2 -1
- package/lib/config-provider/index.js +2 -1
- package/lib/locale/index.js +4 -3
- package/lib/locale/locale.js +14 -10
- package/lib/locale/zh-CN.js +2 -1
- package/lib/style/color/colors.less +1 -1
- package/lib/style/components.less +1 -1
- package/lib/style/core/index.less +1 -1
- package/lib/style/core/motion/other.less +27 -27
- package/lib/style/core/motion/slide.less +53 -53
- package/lib/style/core/motion.less +1 -1
- package/lib/style/core/reset.less +185 -185
- package/lib/style/index.less +1 -1
- package/lib/style/mixins/index.less +18 -18
- package/lib/style/mixins/overlay.less +21 -21
- package/lib/style/mixins/reset.less +12 -12
- package/lib/style/themes/default.less +445 -445
- package/lib/table/base/BlankComponent.d.ts +11 -0
- package/lib/table/base/BlankComponent.js +75 -0
- package/lib/table/base/calculations.js +3 -3
- package/lib/table/base/empty.js +4 -4
- package/lib/table/base/globalStyleComponent.d.ts +5 -1
- package/lib/table/base/globalStyleComponent.js +16 -11
- package/lib/table/base/header.js +19 -8
- package/lib/table/base/helpers/FastScrollManager.d.ts +96 -0
- package/lib/table/base/helpers/FastScrollManager.js +175 -0
- package/lib/table/base/helpers/SpanManager.js +5 -3
- package/lib/table/base/helpers/TableDOMUtils.js +9 -7
- package/lib/table/base/helpers/getRichVisibleRectsStream.js +2 -2
- package/lib/table/base/html-table.d.ts +1 -1
- package/lib/table/base/html-table.js +16 -5
- package/lib/table/base/interfaces.d.ts +2 -0
- package/lib/table/base/loading.js +2 -2
- package/lib/table/base/renderTemplates.js +18 -18
- package/lib/table/base/styles.d.ts +2 -2
- package/lib/table/base/styles.js +74 -11
- package/lib/table/base/table.d.ts +14 -0
- package/lib/table/base/table.js +173 -109
- package/lib/table/base/utils.d.ts +1 -0
- package/lib/table/base/utils.js +28 -13
- package/lib/table/common-views.js +8 -4
- package/lib/table/internals.js +3 -2
- package/lib/table/pipeline/const.js +3 -2
- package/lib/table/pipeline/features/autoFill.js +6 -3
- package/lib/table/pipeline/features/colGroupExtendable.d.ts +1 -1
- package/lib/table/pipeline/features/colGroupExtendable.js +10 -5
- package/lib/table/pipeline/features/columnDrag.js +21 -12
- package/lib/table/pipeline/features/columnFilter.js +5 -2
- package/lib/table/pipeline/features/columnResizeWidth.js +19 -9
- package/lib/table/pipeline/features/contextMenu.js +16 -9
- package/lib/table/pipeline/features/featureApi/RowDragApi.js +5 -3
- package/lib/table/pipeline/features/filter/DefaultFilterContent.js +9 -7
- package/lib/table/pipeline/features/filter/Filter.d.ts +2 -1
- package/lib/table/pipeline/features/filter/Filter.js +17 -11
- package/lib/table/pipeline/features/filter/FilterPanel.d.ts +3 -1
- package/lib/table/pipeline/features/filter/FilterPanel.js +19 -8
- package/lib/table/pipeline/features/filter/util.js +3 -2
- package/lib/table/pipeline/features/footerDataSource.js +2 -1
- package/lib/table/pipeline/features/rangeSelection.js +14 -12
- package/lib/table/pipeline/features/rowDetail.js +2 -2
- package/lib/table/pipeline/features/rowDrag.js +53 -22
- package/lib/table/pipeline/features/rowGrouping.js +2 -2
- package/lib/table/pipeline/features/sort.js +7 -6
- package/lib/table/pipeline/features/tips.js +10 -6
- package/lib/table/pipeline/features/treeMode.js +9 -7
- package/lib/table/pipeline/features/treeSelect.js +2 -2
- package/lib/table/pipeline/index.js +2 -2
- package/lib/table/pipeline/pipeline.js +4 -2
- package/lib/table/pivot/cross-table/buildCrossTable.js +8 -6
- package/lib/table/pivot/cross-table/constants.js +2 -1
- package/lib/table/pivot/cross-table/cross-table.js +6 -3
- package/lib/table/pivot/cross-table/interfaces.d.ts +1 -1
- package/lib/table/pivot/cross-tree-table/buildCrossTreeTable.js +10 -8
- package/lib/table/pivot/cross-tree-table/cross-tree-table.js +13 -9
- package/lib/table/pivot/pivot-utils/builders.js +3 -3
- package/lib/table/pivot/pivot-utils/convert-utils.js +3 -3
- package/lib/table/style/index.less +1 -1
- package/lib/table/transforms/autoWidth.js +5 -5
- package/lib/table/transforms/columnResize.js +7 -5
- package/lib/table/transforms/sort.js +10 -8
- package/lib/table/transforms/tips.js +4 -4
- package/lib/table/transforms/treeMode.js +10 -8
- package/lib/table/use/useResizeObserver.js +2 -1
- package/lib/table/utils/browserType.js +4 -2
- package/lib/table/utils/buildTree.js +3 -3
- package/lib/table/utils/collectNodes.js +3 -3
- package/lib/table/utils/console.js +3 -2
- package/lib/table/utils/copyToClipboard.js +2 -1
- package/lib/table/utils/element.d.ts +1 -1
- package/lib/table/utils/element.js +5 -3
- package/lib/table/utils/exportTableAsExcel.js +3 -3
- package/lib/table/utils/getTreeDepth.js +3 -3
- package/lib/table/utils/groupBy.js +3 -3
- package/lib/table/utils/keyCode.js +2 -1
- package/lib/table/utils/makeRecursiveMapper.js +3 -3
- package/lib/table/utils/mergeCellProps.js +1 -0
- package/lib/table/utils/others.js +5 -4
- package/lib/table/utils/proto.js +2 -1
- package/lib/table/utils/selectColumn.js +4 -2
- package/lib/table/utils/traverseColumn.js +3 -3
- package/lib/table/utils/tree-data-helpers/StrictTreeDataHelper.js +11 -9
- package/lib/table/utils/tree-data-helpers/TreeDataHelper.js +8 -6
- package/package.json +218 -218
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface BlankProps {
|
|
3
|
+
height: number;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface BlankRef {
|
|
7
|
+
updateHeight: (newHeight: number) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const TopBlank: React.MemoExoticComponent<React.ForwardRefExoticComponent<BlankProps & React.RefAttributes<BlankRef>>>;
|
|
10
|
+
export declare const BottomBlank: React.MemoExoticComponent<React.ForwardRefExoticComponent<BlankProps & React.RefAttributes<BlankRef>>>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
|
4
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
|
5
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
6
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.TopBlank = exports.BottomBlank = void 0;
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
14
|
+
var _styles = require("./styles");
|
|
15
|
+
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); }
|
|
16
|
+
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; }
|
|
17
|
+
var TopBlankComponent = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
18
|
+
var initialHeight = _ref.height;
|
|
19
|
+
var _useState = (0, _react.useState)(initialHeight),
|
|
20
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
21
|
+
height = _useState2[0],
|
|
22
|
+
setHeight = _useState2[1];
|
|
23
|
+
(0, _react.useImperativeHandle)(ref, function () {
|
|
24
|
+
return {
|
|
25
|
+
updateHeight: function updateHeight(newHeight) {
|
|
26
|
+
if (height !== newHeight) {
|
|
27
|
+
setHeight(newHeight);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}, [height]);
|
|
32
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
33
|
+
style: {
|
|
34
|
+
height: height
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
TopBlankComponent.displayName = 'TopBlank';
|
|
39
|
+
var BottomBlankComponent = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, ref) {
|
|
40
|
+
var initialHeight = _ref2.height,
|
|
41
|
+
className = _ref2.className;
|
|
42
|
+
var _useState3 = (0, _react.useState)(initialHeight),
|
|
43
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
44
|
+
height = _useState4[0],
|
|
45
|
+
setHeight = _useState4[1];
|
|
46
|
+
(0, _react.useImperativeHandle)(ref, function () {
|
|
47
|
+
return {
|
|
48
|
+
updateHeight: function updateHeight(newHeight) {
|
|
49
|
+
if (height !== newHeight) {
|
|
50
|
+
setHeight(newHeight);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}, [height]);
|
|
55
|
+
if (height <= 0) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
59
|
+
key: "bottom-blank",
|
|
60
|
+
className: (0, _classnames.default)(_styles.Classes.virtualBlank, 'bottom', className),
|
|
61
|
+
style: {
|
|
62
|
+
height: height
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
BottomBlankComponent.displayName = 'BottomBlank';
|
|
67
|
+
// 使用 memo 优化,只有当 height 或 className 改变时才重新渲染
|
|
68
|
+
var TopBlank = /*#__PURE__*/(0, _react.memo)(TopBlankComponent, function (prevProps, nextProps) {
|
|
69
|
+
return prevProps.height === nextProps.height && prevProps.className === nextProps.className;
|
|
70
|
+
});
|
|
71
|
+
exports.TopBlank = TopBlank;
|
|
72
|
+
var BottomBlank = /*#__PURE__*/(0, _react.memo)(BottomBlankComponent, function (prevProps, nextProps) {
|
|
73
|
+
return prevProps.height === nextProps.height && prevProps.className === nextProps.className;
|
|
74
|
+
});
|
|
75
|
+
exports.BottomBlank = BottomBlank;
|
|
@@ -21,9 +21,9 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/ty
|
|
|
21
21
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
22
22
|
var _utils = require("../utils");
|
|
23
23
|
var _utils2 = require("./utils");
|
|
24
|
-
function _createForOfIteratorHelper(
|
|
25
|
-
function _unsupportedIterableToArray(
|
|
26
|
-
function _arrayLikeToArray(
|
|
24
|
+
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; } } }; }
|
|
25
|
+
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); }
|
|
26
|
+
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; }
|
|
27
27
|
function resolveVirtualEnabled(virtualEnum, defaultValue) {
|
|
28
28
|
if (virtualEnum == null || virtualEnum === 'auto') {
|
|
29
29
|
return defaultValue;
|
package/lib/table/base/empty.js
CHANGED
|
@@ -12,8 +12,8 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _colgroup = require("./colgroup");
|
|
14
14
|
var _styles = require("./styles");
|
|
15
|
-
function _getRequireWildcardCache(
|
|
16
|
-
function _interopRequireWildcard(
|
|
15
|
+
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); }
|
|
16
|
+
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; }
|
|
17
17
|
var DefaultEmptyContent = /*#__PURE__*/_react.default.memo(function () {
|
|
18
18
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("img", {
|
|
19
19
|
alt: "empty-image",
|
|
@@ -43,8 +43,8 @@ function EmptyHtmlTable(_ref) {
|
|
|
43
43
|
style: {
|
|
44
44
|
height: emptyCellHeight !== null && emptyCellHeight !== void 0 ? emptyCellHeight : 200
|
|
45
45
|
}
|
|
46
|
-
})))), show &&
|
|
46
|
+
})))), show && /*#__PURE__*/_react.default.createElement("div", {
|
|
47
47
|
className: _styles.Classes.emptyWrapper,
|
|
48
48
|
key: "empty"
|
|
49
|
-
}, /*#__PURE__*/_react.default.createElement(EmptyContent, null)))
|
|
49
|
+
}, /*#__PURE__*/_react.default.createElement(EmptyContent, null)));
|
|
50
50
|
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { PureComponent } from 'react';
|
|
2
|
-
|
|
2
|
+
interface GlobalStyleComponentProps {
|
|
3
|
+
direction: string;
|
|
4
|
+
}
|
|
5
|
+
export default class GlobalStyleComponent extends PureComponent<GlobalStyleComponentProps> {
|
|
3
6
|
render(): JSX.Element;
|
|
4
7
|
}
|
|
8
|
+
export {};
|
|
@@ -11,25 +11,30 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
11
11
|
exports.default = void 0;
|
|
12
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
|
|
13
13
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/inherits"));
|
|
14
15
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/possibleConstructorReturn"));
|
|
15
16
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/getPrototypeOf"));
|
|
16
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/inherits"));
|
|
17
17
|
var _react = _interopRequireWildcard(require("react"));
|
|
18
18
|
var _styles = require("./styles");
|
|
19
|
-
function _getRequireWildcardCache(
|
|
20
|
-
function _interopRequireWildcard(
|
|
21
|
-
function
|
|
22
|
-
function _isNativeReflectConstruct() {
|
|
23
|
-
var GlobalStyleComponent =
|
|
19
|
+
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); }
|
|
20
|
+
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; }
|
|
21
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
22
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
23
|
+
var GlobalStyleComponent = /*#__PURE__*/function (_PureComponent) {
|
|
24
|
+
(0, _inherits2.default)(GlobalStyleComponent, _PureComponent);
|
|
25
|
+
var _super = _createSuper(GlobalStyleComponent);
|
|
24
26
|
function GlobalStyleComponent() {
|
|
25
27
|
(0, _classCallCheck2.default)(this, GlobalStyleComponent);
|
|
26
|
-
return
|
|
28
|
+
return _super.apply(this, arguments);
|
|
27
29
|
}
|
|
28
|
-
(0,
|
|
29
|
-
return (0, _createClass2.default)(GlobalStyleComponent, [{
|
|
30
|
+
(0, _createClass2.default)(GlobalStyleComponent, [{
|
|
30
31
|
key: "render",
|
|
31
32
|
value: function render() {
|
|
32
|
-
return /*#__PURE__*/_react.default.createElement(_styles.GlobalStyle,
|
|
33
|
+
return /*#__PURE__*/_react.default.createElement(_styles.GlobalStyle, {
|
|
34
|
+
direction: this.props.direction
|
|
35
|
+
});
|
|
33
36
|
}
|
|
34
37
|
}]);
|
|
35
|
-
|
|
38
|
+
return GlobalStyleComponent;
|
|
39
|
+
}(_react.PureComponent);
|
|
40
|
+
exports.default = GlobalStyleComponent;
|
package/lib/table/base/header.js
CHANGED
|
@@ -19,9 +19,9 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
19
19
|
var _react = _interopRequireDefault(require("react"));
|
|
20
20
|
var _utils = require("../utils");
|
|
21
21
|
var _styles = require("./styles");
|
|
22
|
-
function _createForOfIteratorHelper(
|
|
23
|
-
function _unsupportedIterableToArray(
|
|
24
|
-
function _arrayLikeToArray(
|
|
22
|
+
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; } } }; }
|
|
23
|
+
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); }
|
|
24
|
+
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; }
|
|
25
25
|
function range(n) {
|
|
26
26
|
var array = [];
|
|
27
27
|
for (var i = 0; i < n; i++) {
|
|
@@ -200,13 +200,15 @@ function TableHeader(_ref2) {
|
|
|
200
200
|
var nested = info.nested,
|
|
201
201
|
flat = (0, _flat.default)(info),
|
|
202
202
|
stickyLeftMap = info.stickyLeftMap,
|
|
203
|
-
stickyRightMap = info.stickyRightMap
|
|
203
|
+
stickyRightMap = info.stickyRightMap,
|
|
204
|
+
direction = info.direction;
|
|
204
205
|
var rowCount = _rowCount !== null && _rowCount !== void 0 ? _rowCount : (0, _utils.getTreeDepth)(nested.full) + 1;
|
|
205
206
|
var headerRenderInfo = calculateHeaderRenderInfo(info, rowCount);
|
|
206
207
|
var fullFlatCount = flat.full.length;
|
|
207
208
|
var leftFlatCount = flat.left.length;
|
|
208
209
|
var rightFlatCount = flat.right.length;
|
|
209
210
|
var thead = (0, _map.default)(_context4 = headerRenderInfo.leveled).call(_context4, function (wrappedCols, level) {
|
|
211
|
+
var _cx2;
|
|
210
212
|
var _wrappedCols = (0, _concat.default)(wrappedCols).call(wrappedCols);
|
|
211
213
|
// 左中右区域渲染,分组列可能单独位于一个区域,此时其他区域也需要适配分组的高度
|
|
212
214
|
// rowspan 需要空白的列头去占位, 需要补充额外的空白列头
|
|
@@ -221,6 +223,7 @@ function TableHeader(_ref2) {
|
|
|
221
223
|
var headerCells = (0, _map.default)(_wrappedCols).call(_wrappedCols, function (wrapped, index) {
|
|
222
224
|
var _a, _b, _c;
|
|
223
225
|
if (wrapped.type === 'normal') {
|
|
226
|
+
var _cx;
|
|
224
227
|
var colIndex = wrapped.colIndex,
|
|
225
228
|
colSpan = wrapped.colSpan,
|
|
226
229
|
isLeaf = wrapped.isLeaf,
|
|
@@ -229,17 +232,25 @@ function TableHeader(_ref2) {
|
|
|
229
232
|
var positionStyle = {};
|
|
230
233
|
if (colIndex < leftFlatCount) {
|
|
231
234
|
positionStyle.position = 'sticky';
|
|
232
|
-
|
|
235
|
+
if (direction === 'rtl') {
|
|
236
|
+
positionStyle.right = stickyLeftMap.get(colIndex);
|
|
237
|
+
} else {
|
|
238
|
+
positionStyle.left = stickyLeftMap.get(colIndex);
|
|
239
|
+
}
|
|
233
240
|
} else if (colIndex >= fullFlatCount - rightFlatCount) {
|
|
234
241
|
positionStyle.position = 'sticky';
|
|
235
242
|
var stickyRightIndex = colSpan > 1 ? colIndex + colSpan - 1 : colIndex;
|
|
236
|
-
|
|
243
|
+
if (direction === 'rtl') {
|
|
244
|
+
positionStyle.left = stickyRightMap.get(stickyRightIndex) + (typeof stickyRightOffset === 'number' ? stickyRightOffset : 0);
|
|
245
|
+
} else {
|
|
246
|
+
positionStyle.right = stickyRightMap.get(stickyRightIndex) + (typeof stickyRightOffset === 'number' ? stickyRightOffset : 0);
|
|
247
|
+
}
|
|
237
248
|
}
|
|
238
249
|
var justifyContent = col.align === 'right' ? 'flex-end' : col.align === 'center' ? 'center' : 'flex-start';
|
|
239
250
|
var cell = /*#__PURE__*/_react.default.createElement("th", (0, _extends2.default)({
|
|
240
251
|
key: colIndex
|
|
241
252
|
}, headerCellProps, {
|
|
242
|
-
className: (0, _classnames.default)(_styles.Classes.tableHeaderCell, headerCellProps.className, (
|
|
253
|
+
className: (0, _classnames.default)(_styles.Classes.tableHeaderCell, headerCellProps.className, (_cx = {}, (0, _defineProperty2.default)(_cx, _styles.Classes.first, colIndex === 0), (0, _defineProperty2.default)(_cx, _styles.Classes.last, colIndex + colSpan === fullFlatCount), (0, _defineProperty2.default)(_cx, _styles.Classes.lockLeft, colIndex < leftFlatCount || theaderPosition === 'left'), (0, _defineProperty2.default)(_cx, _styles.Classes.lockRight, colIndex >= fullFlatCount - rightFlatCount || theaderPosition === 'right'), (0, _defineProperty2.default)(_cx, _styles.Classes.leaf, wrapped.isLeaf), _cx)),
|
|
243
254
|
colSpan: colSpan,
|
|
244
255
|
rowSpan: isLeaf ? rowCount - level : undefined,
|
|
245
256
|
style: (0, _extends2.default)((0, _extends2.default)({
|
|
@@ -269,7 +280,7 @@ function TableHeader(_ref2) {
|
|
|
269
280
|
});
|
|
270
281
|
return /*#__PURE__*/_react.default.createElement("tr", {
|
|
271
282
|
key: level,
|
|
272
|
-
className: (0, _classnames.default)(_styles.Classes.tableHeaderRow, (
|
|
283
|
+
className: (0, _classnames.default)(_styles.Classes.tableHeaderRow, (_cx2 = {}, (0, _defineProperty2.default)(_cx2, _styles.Classes.first, level === 0), (0, _defineProperty2.default)(_cx2, _styles.Classes.last, level === rowCount - 1), _cx2))
|
|
273
284
|
}, headerCells);
|
|
274
285
|
});
|
|
275
286
|
var colgroup = (0, _map.default)(_context5 = (0, _flat.default)(headerRenderInfo)).call(_context5, function (wrapped) {
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 快速滚动管理器
|
|
3
|
+
* 抽取 BaseTable 中的快速滚动相关逻辑
|
|
4
|
+
*/
|
|
5
|
+
export interface FastScrollConfig {
|
|
6
|
+
/** 预渲染缓冲区大小,用于快速滚动判断 */
|
|
7
|
+
overscanSize?: number;
|
|
8
|
+
/** 快速滚动速度阈值 (像素/毫秒) */
|
|
9
|
+
velocityThreshold?: number;
|
|
10
|
+
/** 快速滚动距离倍数阈值 */
|
|
11
|
+
distanceMultiplier?: number;
|
|
12
|
+
/** 快速滚动结束等待时间 (毫秒) - 高速滚动 */
|
|
13
|
+
fastScrollEndDelayHigh?: number;
|
|
14
|
+
/** 快速滚动结束等待时间 (毫秒) - 普通滚动 */
|
|
15
|
+
fastScrollEndDelayNormal?: number;
|
|
16
|
+
/** 高速滚动速度阈值 (像素/毫秒) */
|
|
17
|
+
highVelocityThreshold?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface FastScrollState {
|
|
20
|
+
lastScrollTime: number;
|
|
21
|
+
scrollVelocity: number;
|
|
22
|
+
lastOffsetY: number;
|
|
23
|
+
}
|
|
24
|
+
export interface ScrollEventData {
|
|
25
|
+
offsetY: number;
|
|
26
|
+
maxRenderHeight: number;
|
|
27
|
+
maxRenderWidth: number;
|
|
28
|
+
}
|
|
29
|
+
export interface VerticalRenderRange {
|
|
30
|
+
topIndex: number;
|
|
31
|
+
bottomIndex: number;
|
|
32
|
+
topBlank: number;
|
|
33
|
+
bottomBlank: number;
|
|
34
|
+
}
|
|
35
|
+
export interface FastScrollCallbacks {
|
|
36
|
+
onFastScrollStart: (renderData: {
|
|
37
|
+
offsetY: number;
|
|
38
|
+
maxRenderHeight: number;
|
|
39
|
+
maxRenderWidth: number;
|
|
40
|
+
verticalRenderRange: VerticalRenderRange;
|
|
41
|
+
}) => void;
|
|
42
|
+
onFastScrollEnd: (scrollData: ScrollEventData) => void;
|
|
43
|
+
getCurrentRenderRange: (offsetY: number, maxRenderHeight: number, dataLength: number) => VerticalRenderRange;
|
|
44
|
+
}
|
|
45
|
+
export declare class FastScrollManager {
|
|
46
|
+
private state;
|
|
47
|
+
private isFastScrolling;
|
|
48
|
+
private fastScrollEndTimer?;
|
|
49
|
+
private config;
|
|
50
|
+
private callbacks;
|
|
51
|
+
constructor(callbacks: FastScrollCallbacks, config?: FastScrollConfig);
|
|
52
|
+
/**
|
|
53
|
+
* 检测是否接近底部(剩余滚动距离少于两屏)
|
|
54
|
+
*/
|
|
55
|
+
private isNearBottom;
|
|
56
|
+
/**
|
|
57
|
+
* 处理滚动事件 - 检测和处理快速滚动
|
|
58
|
+
*/
|
|
59
|
+
handleScrollEvent(sizeAndOffset: ScrollEventData, currentState: {
|
|
60
|
+
offsetY: number;
|
|
61
|
+
maxRenderHeight: number;
|
|
62
|
+
maxRenderWidth: number;
|
|
63
|
+
}, dataLength: number, totalScrollHeight: number): void;
|
|
64
|
+
/**
|
|
65
|
+
* 开始快速滚动
|
|
66
|
+
*/
|
|
67
|
+
private startFastScrolling;
|
|
68
|
+
/**
|
|
69
|
+
* 重置快速滚动结束定时器
|
|
70
|
+
*/
|
|
71
|
+
private resetFastScrollEndTimer;
|
|
72
|
+
/**
|
|
73
|
+
* 结束快速滚动
|
|
74
|
+
*/
|
|
75
|
+
private endFastScrolling;
|
|
76
|
+
/**
|
|
77
|
+
* 清理资源
|
|
78
|
+
*/
|
|
79
|
+
cleanup(): void;
|
|
80
|
+
/**
|
|
81
|
+
* 获取当前是否处于快速滚动状态
|
|
82
|
+
*/
|
|
83
|
+
getIsFastScrolling(): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* 获取当前滚动速度
|
|
86
|
+
*/
|
|
87
|
+
getScrollVelocity(): number;
|
|
88
|
+
/**
|
|
89
|
+
* 清理资源
|
|
90
|
+
*/
|
|
91
|
+
destroy(): void;
|
|
92
|
+
/**
|
|
93
|
+
* 获取当前配置
|
|
94
|
+
*/
|
|
95
|
+
getConfig(): Readonly<Required<FastScrollConfig>>;
|
|
96
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.FastScrollManager = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));
|
|
11
|
+
/**
|
|
12
|
+
* 快速滚动管理器
|
|
13
|
+
* 抽取 BaseTable 中的快速滚动相关逻辑
|
|
14
|
+
*/
|
|
15
|
+
var FastScrollManager = /*#__PURE__*/function () {
|
|
16
|
+
function FastScrollManager(callbacks) {
|
|
17
|
+
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
18
|
+
(0, _classCallCheck2.default)(this, FastScrollManager);
|
|
19
|
+
// 快速滚动状态
|
|
20
|
+
this.state = {
|
|
21
|
+
lastScrollTime: 0,
|
|
22
|
+
scrollVelocity: 0,
|
|
23
|
+
lastOffsetY: 0
|
|
24
|
+
};
|
|
25
|
+
// 快速滚动标志 - 作为私有属性立即更新
|
|
26
|
+
this.isFastScrolling = false;
|
|
27
|
+
this.callbacks = callbacks;
|
|
28
|
+
// 合并默认配置
|
|
29
|
+
this.config = (0, _extends2.default)({
|
|
30
|
+
overscanSize: 100,
|
|
31
|
+
velocityThreshold: 3,
|
|
32
|
+
distanceMultiplier: 3,
|
|
33
|
+
fastScrollEndDelayHigh: 200,
|
|
34
|
+
fastScrollEndDelayNormal: 150,
|
|
35
|
+
highVelocityThreshold: 5
|
|
36
|
+
}, config);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 检测是否接近底部(剩余滚动距离少于两屏)
|
|
40
|
+
*/
|
|
41
|
+
(0, _createClass2.default)(FastScrollManager, [{
|
|
42
|
+
key: "isNearBottom",
|
|
43
|
+
value: function isNearBottom(currentScrollTop, maxRenderHeight, totalScrollHeight) {
|
|
44
|
+
var remainingScrollDistance = totalScrollHeight - currentScrollTop - maxRenderHeight;
|
|
45
|
+
return remainingScrollDistance < maxRenderHeight;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 处理滚动事件 - 检测和处理快速滚动
|
|
49
|
+
*/
|
|
50
|
+
}, {
|
|
51
|
+
key: "handleScrollEvent",
|
|
52
|
+
value: function handleScrollEvent(sizeAndOffset, currentState, dataLength, totalScrollHeight) {
|
|
53
|
+
var currentTime = performance.now();
|
|
54
|
+
var deltaY = Math.abs(sizeAndOffset.offsetY - this.state.lastOffsetY);
|
|
55
|
+
var deltaTime = currentTime - this.state.lastScrollTime;
|
|
56
|
+
// 计算滚动速度 (像素/毫秒)
|
|
57
|
+
this.state.scrollVelocity = deltaTime > 0 ? deltaY / deltaTime : 0;
|
|
58
|
+
// 检测是否接近底部
|
|
59
|
+
var isNearBottom = this.isNearBottom(sizeAndOffset.offsetY, sizeAndOffset.maxRenderHeight, totalScrollHeight);
|
|
60
|
+
// 如果正在快速滚动但接近底部,提前结束快速滚动
|
|
61
|
+
if (this.isFastScrolling && isNearBottom) {
|
|
62
|
+
this.endFastScrolling(sizeAndOffset);
|
|
63
|
+
return; // 让正常渲染逻辑接管
|
|
64
|
+
}
|
|
65
|
+
// 快速滚动判断条件:
|
|
66
|
+
// 1. 滚动距离超过阈值 && 滚动速度超过阈值
|
|
67
|
+
// 2. 当前未在快速滚动状态
|
|
68
|
+
// 3. 未接近底部边界
|
|
69
|
+
var isSignificantChange = deltaY > this.config.overscanSize * this.config.distanceMultiplier;
|
|
70
|
+
var isHighVelocity = this.state.scrollVelocity > this.config.velocityThreshold;
|
|
71
|
+
var shouldStartFastScroll = (isSignificantChange || isHighVelocity) && !this.isFastScrolling && !isNearBottom; // 接近底部时不启动快速滚动
|
|
72
|
+
if (shouldStartFastScroll) {
|
|
73
|
+
this.startFastScrolling(currentState, dataLength);
|
|
74
|
+
}
|
|
75
|
+
// 重置快速滚动结束定时器
|
|
76
|
+
if (this.isFastScrolling) {
|
|
77
|
+
this.resetFastScrollEndTimer(sizeAndOffset);
|
|
78
|
+
}
|
|
79
|
+
// 更新记录
|
|
80
|
+
this.state.lastOffsetY = sizeAndOffset.offsetY;
|
|
81
|
+
this.state.lastScrollTime = currentTime;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 开始快速滚动
|
|
85
|
+
*/
|
|
86
|
+
}, {
|
|
87
|
+
key: "startFastScrolling",
|
|
88
|
+
value: function startFastScrolling(currentState, dataLength) {
|
|
89
|
+
this.isFastScrolling = true;
|
|
90
|
+
// 获取当前渲染范围作为缓存
|
|
91
|
+
var currentVerticalRange = this.callbacks.getCurrentRenderRange(currentState.offsetY, currentState.maxRenderHeight, dataLength);
|
|
92
|
+
// 通知外部开始快速滚动
|
|
93
|
+
this.callbacks.onFastScrollStart({
|
|
94
|
+
offsetY: currentState.offsetY,
|
|
95
|
+
maxRenderHeight: currentState.maxRenderHeight,
|
|
96
|
+
maxRenderWidth: currentState.maxRenderWidth,
|
|
97
|
+
verticalRenderRange: currentVerticalRange
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 重置快速滚动结束定时器
|
|
102
|
+
*/
|
|
103
|
+
}, {
|
|
104
|
+
key: "resetFastScrollEndTimer",
|
|
105
|
+
value: function resetFastScrollEndTimer(sizeAndOffset) {
|
|
106
|
+
var _this = this;
|
|
107
|
+
if (this.fastScrollEndTimer) {
|
|
108
|
+
clearTimeout(this.fastScrollEndTimer);
|
|
109
|
+
}
|
|
110
|
+
var waitTime = this.state.scrollVelocity > this.config.highVelocityThreshold ? this.config.fastScrollEndDelayHigh : this.config.fastScrollEndDelayNormal;
|
|
111
|
+
this.fastScrollEndTimer = window.setTimeout(function () {
|
|
112
|
+
_this.endFastScrolling(sizeAndOffset);
|
|
113
|
+
}, waitTime);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 结束快速滚动
|
|
117
|
+
*/
|
|
118
|
+
}, {
|
|
119
|
+
key: "endFastScrolling",
|
|
120
|
+
value: function endFastScrolling(sizeAndOffset) {
|
|
121
|
+
this.isFastScrolling = false;
|
|
122
|
+
this.fastScrollEndTimer = undefined;
|
|
123
|
+
// 通知外部结束快速滚动
|
|
124
|
+
this.callbacks.onFastScrollEnd(sizeAndOffset);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 清理资源
|
|
128
|
+
*/
|
|
129
|
+
}, {
|
|
130
|
+
key: "cleanup",
|
|
131
|
+
value: function cleanup() {
|
|
132
|
+
if (this.fastScrollEndTimer) {
|
|
133
|
+
clearTimeout(this.fastScrollEndTimer);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* 获取当前是否处于快速滚动状态
|
|
138
|
+
*/
|
|
139
|
+
}, {
|
|
140
|
+
key: "getIsFastScrolling",
|
|
141
|
+
value: function getIsFastScrolling() {
|
|
142
|
+
return this.isFastScrolling;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 获取当前滚动速度
|
|
146
|
+
*/
|
|
147
|
+
}, {
|
|
148
|
+
key: "getScrollVelocity",
|
|
149
|
+
value: function getScrollVelocity() {
|
|
150
|
+
return this.state.scrollVelocity;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* 清理资源
|
|
154
|
+
*/
|
|
155
|
+
}, {
|
|
156
|
+
key: "destroy",
|
|
157
|
+
value: function destroy() {
|
|
158
|
+
if (this.fastScrollEndTimer) {
|
|
159
|
+
clearTimeout(this.fastScrollEndTimer);
|
|
160
|
+
this.fastScrollEndTimer = undefined;
|
|
161
|
+
}
|
|
162
|
+
this.isFastScrolling = false;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* 获取当前配置
|
|
166
|
+
*/
|
|
167
|
+
}, {
|
|
168
|
+
key: "getConfig",
|
|
169
|
+
value: function getConfig() {
|
|
170
|
+
return (0, _extends2.default)({}, this.config);
|
|
171
|
+
}
|
|
172
|
+
}]);
|
|
173
|
+
return FastScrollManager;
|
|
174
|
+
}();
|
|
175
|
+
exports.FastScrollManager = FastScrollManager;
|
|
@@ -11,12 +11,12 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpe
|
|
|
11
11
|
/** 在表格的单元格的渲染过程中,先渲染的单元格的 colSpan/rowSpan 会影响到后续单元格是否被渲染
|
|
12
12
|
* `SpanManager` 会在内部维护一份状态来记录最近渲染单元格的 colSpan/rowSpan,
|
|
13
13
|
* 方便后续的单元格快速判断 "是否需要跳过渲染" */
|
|
14
|
-
var SpanManager =
|
|
14
|
+
var SpanManager = /*#__PURE__*/function () {
|
|
15
15
|
function SpanManager() {
|
|
16
16
|
(0, _classCallCheck2.default)(this, SpanManager);
|
|
17
17
|
this.rects = [];
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
(0, _createClass2.default)(SpanManager, [{
|
|
20
20
|
key: "testSkip",
|
|
21
21
|
value: function testSkip(rowIndex, colIndex) {
|
|
22
22
|
return this.rects.some(function (_ref) {
|
|
@@ -46,4 +46,6 @@ var SpanManager = exports.default = /*#__PURE__*/function () {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
}]);
|
|
49
|
-
|
|
49
|
+
return SpanManager;
|
|
50
|
+
}();
|
|
51
|
+
exports.default = SpanManager;
|
|
@@ -48,7 +48,7 @@ var _styles = require("../styles");
|
|
|
48
48
|
// 在「可能存在嵌套表格」的情况下,我们可以采用以下的方式来避免「querySelector 不小心获取到了的嵌套表格上的元素」:
|
|
49
49
|
// artTable.querySelector('.art-lock-shadow-mask .art-left-lock-shadow')
|
|
50
50
|
// 表格 DOM 结构辅助工具
|
|
51
|
-
var TableDOMHelper =
|
|
51
|
+
var TableDOMHelper = /*#__PURE__*/function () {
|
|
52
52
|
function TableDOMHelper(artTableWrapper) {
|
|
53
53
|
var _this = this,
|
|
54
54
|
_context2,
|
|
@@ -66,17 +66,17 @@ var TableDOMHelper = exports.TableDOMHelper = /*#__PURE__*/function () {
|
|
|
66
66
|
this.getInRangeRowByCellEvent = function (e) {
|
|
67
67
|
var _context;
|
|
68
68
|
var _a;
|
|
69
|
-
var
|
|
69
|
+
var getParentNode = function getParentNode(ele, target) {
|
|
70
70
|
if (ele.parentNode.nodeName === target) {
|
|
71
71
|
return ele.parentNode;
|
|
72
72
|
}
|
|
73
|
-
return
|
|
73
|
+
return getParentNode(ele.parentNode, target);
|
|
74
74
|
};
|
|
75
75
|
e = e instanceof Array ? e[0] : e;
|
|
76
76
|
var curCell = e === null || e === void 0 ? void 0 : e.currentTarget;
|
|
77
|
-
var curRow =
|
|
77
|
+
var curRow = getParentNode(curCell, 'TR');
|
|
78
78
|
var curRowSpan = parseInt(e.currentTarget.getAttribute('rowspan')) || 1;
|
|
79
|
-
var rows = (_a =
|
|
79
|
+
var rows = (_a = getParentNode(curCell, 'TABLE')) === null || _a === void 0 ? void 0 : _a.rows;
|
|
80
80
|
return (0, _slice.default)(_context = (0, _from.default)(rows)).call(_context, curRow.rowIndex, curRow.rowIndex + curRowSpan);
|
|
81
81
|
};
|
|
82
82
|
this.artTableWrapper = artTableWrapper;
|
|
@@ -93,7 +93,7 @@ var TableDOMHelper = exports.TableDOMHelper = /*#__PURE__*/function () {
|
|
|
93
93
|
this.stickyScroll = stickyScrolls[stickyScrolls.length - 1]; // 当嵌套多层表格时,需要查找最后一个,否则会查找到父表格内嵌套的子表格的
|
|
94
94
|
this.stickyScrollItem = this.stickyScroll.querySelector(".".concat(_styles.Classes.stickyScrollItem));
|
|
95
95
|
}
|
|
96
|
-
|
|
96
|
+
(0, _createClass2.default)(TableDOMHelper, [{
|
|
97
97
|
key: "getVirtualTop",
|
|
98
98
|
value: function getVirtualTop() {
|
|
99
99
|
return this.tableBody.querySelector(".".concat(_styles.Classes.virtualBlank, ".top"));
|
|
@@ -144,4 +144,6 @@ var TableDOMHelper = exports.TableDOMHelper = /*#__PURE__*/function () {
|
|
|
144
144
|
return rowOffsetTop + tableOffsetTop;
|
|
145
145
|
}
|
|
146
146
|
}]);
|
|
147
|
-
|
|
147
|
+
return TableDOMHelper;
|
|
148
|
+
}();
|
|
149
|
+
exports.TableDOMHelper = TableDOMHelper;
|