@kdcloudjs/table 1.1.2 → 1.1.3-canary.10
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/@kdcloudjs/table.css +1 -1
- package/dist/@kdcloudjs/table.js +611 -207
- package/dist/@kdcloudjs/table.js.map +1 -1
- package/dist/@kdcloudjs/table.min.css +1 -1
- package/dist/@kdcloudjs/table.min.js +6 -6
- package/dist/@kdcloudjs/table.min.js.map +1 -1
- package/es/table/base/helpers/TableDOMUtils.d.ts +2 -0
- package/es/table/base/helpers/TableDOMUtils.js +48 -12
- package/es/table/base/helpers/getRichVisibleRectsStream.js +1 -1
- package/es/table/base/html-table.js +1 -1
- package/es/table/base/styles.d.ts +2 -0
- package/es/table/base/styles.js +4 -2
- package/es/table/base/table.d.ts +0 -1
- package/es/table/base/table.js +22 -29
- package/es/table/pipeline/features/columnDrag.js +27 -16
- package/es/table/pipeline/features/columnFilter.d.ts +2 -2
- package/es/table/pipeline/features/columnFilter.js +33 -12
- package/es/table/pipeline/features/contextMenu.js +1 -0
- package/es/table/pipeline/features/filter/DefaultFilterIcon.d.ts +5 -0
- package/es/table/pipeline/features/filter/DefaultFilterIcon.js +20 -0
- package/es/table/pipeline/features/filter/Filter.d.ts +1 -1
- package/es/table/pipeline/features/filter/Filter.js +16 -20
- package/es/table/pipeline/features/filter/FilterPanel.js +25 -16
- package/es/table/pipeline/features/filter/util.js +4 -4
- package/es/table/pipeline/features/footerDataSource.d.ts +9 -0
- package/es/table/pipeline/features/footerDataSource.js +25 -0
- package/es/table/pipeline/features/index.d.ts +2 -0
- package/es/table/pipeline/features/index.js +3 -1
- package/es/table/pipeline/features/mergeCellHover.d.ts +2 -0
- package/es/table/pipeline/features/mergeCellHover.js +32 -0
- package/es/table/pipeline/features/multiSelect.js +7 -2
- package/es/table/pipeline/features/rangeSelection.d.ts +1 -1
- package/es/table/pipeline/features/rangeSelection.js +156 -28
- package/es/table/pipeline/features/singleSelect.js +4 -0
- package/es/table/pipeline/features/treeMode.d.ts +2 -0
- package/es/table/pipeline/features/treeMode.js +18 -20
- package/es/table/pipeline/pipeline.d.ts +5 -1
- package/es/table/pipeline/pipeline.js +11 -10
- package/lib/table/base/helpers/TableDOMUtils.d.ts +2 -0
- package/lib/table/base/helpers/TableDOMUtils.js +51 -12
- package/lib/table/base/helpers/getRichVisibleRectsStream.js +1 -1
- package/lib/table/base/html-table.js +1 -1
- package/lib/table/base/styles.d.ts +2 -0
- package/lib/table/base/styles.js +4 -2
- package/lib/table/base/table.d.ts +0 -1
- package/lib/table/base/table.js +22 -29
- package/lib/table/pipeline/features/columnDrag.js +27 -16
- package/lib/table/pipeline/features/columnFilter.d.ts +2 -2
- package/lib/table/pipeline/features/columnFilter.js +31 -12
- package/lib/table/pipeline/features/contextMenu.js +1 -0
- package/lib/table/pipeline/features/filter/DefaultFilterIcon.d.ts +5 -0
- package/lib/table/pipeline/features/filter/DefaultFilterIcon.js +30 -0
- package/lib/table/pipeline/features/filter/Filter.d.ts +1 -1
- package/lib/table/pipeline/features/filter/Filter.js +17 -20
- package/lib/table/pipeline/features/filter/FilterPanel.js +25 -15
- package/lib/table/pipeline/features/filter/util.js +4 -4
- package/lib/table/pipeline/features/footerDataSource.d.ts +9 -0
- package/lib/table/pipeline/features/footerDataSource.js +41 -0
- package/lib/table/pipeline/features/index.d.ts +2 -0
- package/lib/table/pipeline/features/index.js +23 -1
- package/lib/table/pipeline/features/mergeCellHover.d.ts +2 -0
- package/lib/table/pipeline/features/mergeCellHover.js +43 -0
- package/lib/table/pipeline/features/multiSelect.js +6 -1
- package/lib/table/pipeline/features/rangeSelection.d.ts +1 -1
- package/lib/table/pipeline/features/rangeSelection.js +158 -30
- package/lib/table/pipeline/features/singleSelect.js +4 -0
- package/lib/table/pipeline/features/treeMode.d.ts +2 -0
- package/lib/table/pipeline/features/treeMode.js +19 -22
- package/lib/table/pipeline/pipeline.d.ts +5 -1
- package/lib/table/pipeline/pipeline.js +12 -10
- package/package.json +2 -2
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
|
|
1
2
|
import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
|
|
2
3
|
import _getIteratorMethod from "@babel/runtime-corejs3/core-js/get-iterator-method";
|
|
3
|
-
import _toArray from "@babel/runtime-corejs3/helpers/toArray";
|
|
4
4
|
import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
|
|
5
5
|
import _extends from "@babel/runtime-corejs3/helpers/extends";
|
|
6
6
|
import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
|
|
7
7
|
|
|
8
8
|
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(_e2) { throw _e2; }, 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(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
9
9
|
|
|
10
|
-
function _unsupportedIterableToArray(o, minLen) { var
|
|
10
|
+
function _unsupportedIterableToArray(o, minLen) { var _context2; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context2 = Object.prototype.toString.call(o)).call(_context2, 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); }
|
|
11
11
|
|
|
12
12
|
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; }
|
|
13
13
|
|
|
@@ -15,7 +15,7 @@ import _Symbol from "@babel/runtime-corejs3/core-js-stable/symbol";
|
|
|
15
15
|
import _Set from "@babel/runtime-corejs3/core-js-stable/set";
|
|
16
16
|
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
|
17
17
|
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
|
18
|
-
import
|
|
18
|
+
import _findIndexInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find-index";
|
|
19
19
|
import cx from 'classnames';
|
|
20
20
|
import React from 'react';
|
|
21
21
|
import { ExpansionCell, icons, InlineFlexCell } from '../../common-views';
|
|
@@ -31,11 +31,6 @@ export function treeMode() {
|
|
|
31
31
|
var stateKey = 'treeMode';
|
|
32
32
|
var ctx = pipeline.ctx;
|
|
33
33
|
var primaryKey = pipeline.ensurePrimaryKey('treeMode');
|
|
34
|
-
|
|
35
|
-
if (typeof primaryKey !== 'string') {
|
|
36
|
-
throw new Error('treeMode 仅支持字符串作为 primaryKey');
|
|
37
|
-
}
|
|
38
|
-
|
|
39
34
|
var openKeys = (_c = (_b = (_a = opts.openKeys) !== null && _a !== void 0 ? _a : pipeline.getStateAtKey(stateKey)) !== null && _b !== void 0 ? _b : opts.defaultOpenKeys) !== null && _c !== void 0 ? _c : [];
|
|
40
35
|
var openKeySet = new _Set(openKeys);
|
|
41
36
|
|
|
@@ -90,7 +85,7 @@ export function treeMode() {
|
|
|
90
85
|
try {
|
|
91
86
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
92
87
|
var node = _step.value;
|
|
93
|
-
var rowKey = node
|
|
88
|
+
var rowKey = internals.safeGetRowKey(primaryKey, node, -1);
|
|
94
89
|
var expanded = openKeySet.has(rowKey);
|
|
95
90
|
var isLeaf = isLeafNode(node, {
|
|
96
91
|
depth: depth,
|
|
@@ -120,18 +115,20 @@ export function treeMode() {
|
|
|
120
115
|
}
|
|
121
116
|
|
|
122
117
|
function processColumns(columns) {
|
|
123
|
-
var _context2;
|
|
124
|
-
|
|
125
118
|
if (columns.length === 0) {
|
|
126
119
|
return columns;
|
|
127
120
|
}
|
|
128
121
|
|
|
129
|
-
var
|
|
130
|
-
|
|
131
|
-
|
|
122
|
+
var expandColIndex = _findIndexInstanceProperty(columns).call(columns, function (_ref) {
|
|
123
|
+
var code = _ref.code;
|
|
124
|
+
return code && opts.expandColCode === code;
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
expandColIndex = expandColIndex === -1 ? 0 : expandColIndex;
|
|
128
|
+
var expandCol = columns[expandColIndex];
|
|
132
129
|
|
|
133
130
|
var render = function render(value, record, recordIndex) {
|
|
134
|
-
var content = internals.safeRender(
|
|
131
|
+
var content = internals.safeRender(expandCol, record, recordIndex);
|
|
135
132
|
|
|
136
133
|
if (record[treeMetaKey] == null) {
|
|
137
134
|
// 没有 treeMeta 信息的话,就返回原先的渲染结果
|
|
@@ -191,7 +188,7 @@ export function treeMode() {
|
|
|
191
188
|
};
|
|
192
189
|
|
|
193
190
|
var getCellProps = function getCellProps(value, record, rowIndex) {
|
|
194
|
-
var prevProps = internals.safeGetCellProps(
|
|
191
|
+
var prevProps = internals.safeGetCellProps(expandCol, record, rowIndex);
|
|
195
192
|
|
|
196
193
|
if (record[treeMetaKey] == null) {
|
|
197
194
|
// 没有 treeMeta 信息的话,就返回原先的 cellProps
|
|
@@ -220,15 +217,16 @@ export function treeMode() {
|
|
|
220
217
|
});
|
|
221
218
|
};
|
|
222
219
|
|
|
223
|
-
|
|
220
|
+
columns[expandColIndex] = _extends(_extends({}, expandCol), {
|
|
224
221
|
title: /*#__PURE__*/React.createElement("span", {
|
|
225
222
|
style: {
|
|
226
223
|
marginLeft: iconIndent + iconWidth + iconGap
|
|
227
224
|
}
|
|
228
|
-
}, internals.safeRenderHeader(
|
|
225
|
+
}, internals.safeRenderHeader(expandCol)),
|
|
229
226
|
render: render,
|
|
230
|
-
getCellProps: clickArea === 'cell' ? getCellProps :
|
|
231
|
-
})
|
|
227
|
+
getCellProps: clickArea === 'cell' ? getCellProps : expandCol.getCellProps
|
|
228
|
+
});
|
|
229
|
+
return _toConsumableArray(columns);
|
|
232
230
|
}
|
|
233
231
|
};
|
|
234
232
|
}
|
|
@@ -36,7 +36,7 @@ export declare class TablePipeline {
|
|
|
36
36
|
private _tableProps;
|
|
37
37
|
private _dataSource;
|
|
38
38
|
private _columns;
|
|
39
|
-
private _footerDataSource
|
|
39
|
+
private _footerDataSource?;
|
|
40
40
|
static defaultIndents: TablePipelineIndentsConfig;
|
|
41
41
|
readonly ctx: TablePipelineCtx;
|
|
42
42
|
private readonly state;
|
|
@@ -88,6 +88,10 @@ export declare class TablePipeline {
|
|
|
88
88
|
setFeatureOptions(optionKey: string, value: any): void;
|
|
89
89
|
/** 获取 BaseTable 的 props,结果中包含 dataSource/columns/primaryKey/getRowProps 四个字段 */
|
|
90
90
|
getProps(this: TablePipeline): TableProps;
|
|
91
|
+
/**
|
|
92
|
+
* 清除范围选中内容
|
|
93
|
+
*/
|
|
94
|
+
clearRangeSelection(): void;
|
|
91
95
|
}
|
|
92
96
|
export declare function useTablePipeline(ctx?: Partial<TablePipelineCtx>): TablePipeline;
|
|
93
97
|
export {};
|
|
@@ -8,6 +8,7 @@ import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instan
|
|
|
8
8
|
import { useState, useRef } from 'react';
|
|
9
9
|
import { mergeCellProps } from '../utils';
|
|
10
10
|
import { autoFillTableWidth, tableWidthKey } from './features/autoFill';
|
|
11
|
+
import { rangeSelectionKey } from './features/rangeSelection';
|
|
11
12
|
/**
|
|
12
13
|
* 表格数据处理流水线。TablePipeline 提供了表格数据处理过程中的一些上下方与工具方法,包括……
|
|
13
14
|
*
|
|
@@ -276,19 +277,19 @@ export var TablePipeline = /*#__PURE__*/function () {
|
|
|
276
277
|
|
|
277
278
|
result.setTableDomHelper = function (domHelper) {
|
|
278
279
|
_this2.ref.current.domHelper = domHelper;
|
|
279
|
-
};
|
|
280
|
-
// result.clearRangeSelectionStatus = () => {
|
|
281
|
-
// const { rangeSelectedChange } = this.getFeatureOptions(rangeSelectionKey)
|
|
282
|
-
// const rangeSelection = this.getStateAtKey(rangeSelectionKey)
|
|
283
|
-
// if (rangeSelection) {
|
|
284
|
-
// rangeSelectedChange?.(null)
|
|
285
|
-
// }
|
|
286
|
-
// }
|
|
287
|
-
// }
|
|
288
|
-
|
|
280
|
+
};
|
|
289
281
|
|
|
290
282
|
return result;
|
|
291
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* 清除范围选中内容
|
|
286
|
+
*/
|
|
287
|
+
|
|
288
|
+
}, {
|
|
289
|
+
key: "clearRangeSelection",
|
|
290
|
+
value: function clearRangeSelection() {
|
|
291
|
+
this.setStateAtKey(rangeSelectionKey, null);
|
|
292
|
+
}
|
|
292
293
|
}]);
|
|
293
294
|
|
|
294
295
|
return TablePipeline;
|
|
@@ -18,4 +18,6 @@ export declare class TableDOMHelper {
|
|
|
18
18
|
getRightLockShadow(): HTMLDivElement;
|
|
19
19
|
getLoadingIndicator(): HTMLDivElement;
|
|
20
20
|
getRowTop(rowIndex: number): number;
|
|
21
|
+
getRowNodeListByEvent: (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>) => HTMLElement[];
|
|
22
|
+
getInRangeRowByCellEvent: (e: React.MouseEvent<HTMLTableCellElement, MouseEvent>) => unknown[];
|
|
21
23
|
}
|
|
@@ -7,6 +7,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.TableDOMHelper = void 0;
|
|
9
9
|
|
|
10
|
+
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
11
|
+
|
|
12
|
+
var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
|
|
13
|
+
|
|
10
14
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
11
15
|
|
|
12
16
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
|
|
@@ -54,9 +58,44 @@ var _styles = require("../styles");
|
|
|
54
58
|
// 表格 DOM 结构辅助工具
|
|
55
59
|
var TableDOMHelper = /*#__PURE__*/function () {
|
|
56
60
|
function TableDOMHelper(artTableWrapper) {
|
|
57
|
-
var
|
|
61
|
+
var _this = this,
|
|
62
|
+
_context2;
|
|
58
63
|
|
|
59
64
|
(0, _classCallCheck2.default)(this, TableDOMHelper);
|
|
65
|
+
|
|
66
|
+
this.getRowNodeListByEvent = function (e) {
|
|
67
|
+
var nodeList = null;
|
|
68
|
+
var rowIndex = e.currentTarget.dataset.rowindex;
|
|
69
|
+
|
|
70
|
+
if (rowIndex !== undefined) {
|
|
71
|
+
var targetParent = _this.tableBody.contains(e.currentTarget) ? _this.tableBody : _this.tableFooter;
|
|
72
|
+
nodeList = targetParent.querySelectorAll("tr[data-rowindex=\"".concat(rowIndex, "\"]"));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return nodeList;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
this.getInRangeRowByCellEvent = function (e) {
|
|
79
|
+
var _context;
|
|
80
|
+
|
|
81
|
+
var _a;
|
|
82
|
+
|
|
83
|
+
var getParentNode = function getParentNode(ele, target) {
|
|
84
|
+
if (ele.parentNode.nodeName === target) {
|
|
85
|
+
return ele.parentNode;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return getParentNode(ele.parentNode, target);
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
e = e instanceof Array ? e[0] : e;
|
|
92
|
+
var curCell = e === null || e === void 0 ? void 0 : e.currentTarget;
|
|
93
|
+
var curRow = getParentNode(curCell, 'TR');
|
|
94
|
+
var curRowSpan = parseInt(e.currentTarget.getAttribute('rowspan')) || 1;
|
|
95
|
+
var rows = (_a = getParentNode(curCell, 'TABLE')) === null || _a === void 0 ? void 0 : _a.rows;
|
|
96
|
+
return (0, _slice.default)(_context = (0, _from.default)(rows)).call(_context, curRow.rowIndex, curRow.rowIndex + curRowSpan);
|
|
97
|
+
};
|
|
98
|
+
|
|
60
99
|
this.artTableWrapper = artTableWrapper;
|
|
61
100
|
this.artTable = artTableWrapper.querySelector(".".concat(_styles.Classes.artTable));
|
|
62
101
|
this.tableHeader = this.artTable.querySelector(".".concat(_styles.Classes.tableHeader));
|
|
@@ -66,7 +105,7 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
66
105
|
this.tableElement = this.artTable.querySelector(".".concat(_styles.Classes.tableBody, " table"));
|
|
67
106
|
this.tableFooter = this.artTable.querySelector(".".concat(_styles.Classes.tableFooter));
|
|
68
107
|
this.tableFooterMain = this.artTable.querySelector(".".concat(_styles.Classes.tableFooterMain));
|
|
69
|
-
var stickyScrollSelector = (0, _concat.default)(
|
|
108
|
+
var stickyScrollSelector = (0, _concat.default)(_context2 = ".".concat(_styles.Classes.artTable, " + .")).call(_context2, _styles.Classes.stickyScroll);
|
|
70
109
|
this.stickyScroll = artTableWrapper.querySelector(stickyScrollSelector);
|
|
71
110
|
this.stickyScrollItem = this.stickyScroll.querySelector(".".concat(_styles.Classes.stickyScrollItem));
|
|
72
111
|
}
|
|
@@ -79,32 +118,32 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
79
118
|
}, {
|
|
80
119
|
key: "getTableRows",
|
|
81
120
|
value: function getTableRows() {
|
|
82
|
-
var
|
|
121
|
+
var _context3;
|
|
83
122
|
|
|
84
|
-
var tbody = this.artTable.querySelector((0, _concat.default)(
|
|
123
|
+
var tbody = this.artTable.querySelector((0, _concat.default)(_context3 = ".".concat(_styles.Classes.tableBody, " .")).call(_context3, _styles.Classes.virtual, " table tbody"));
|
|
85
124
|
return tbody.childNodes;
|
|
86
125
|
}
|
|
87
126
|
}, {
|
|
88
127
|
key: "getTableBodyHtmlTable",
|
|
89
128
|
value: function getTableBodyHtmlTable() {
|
|
90
|
-
var
|
|
129
|
+
var _context4;
|
|
91
130
|
|
|
92
|
-
return this.artTable.querySelector((0, _concat.default)(
|
|
131
|
+
return this.artTable.querySelector((0, _concat.default)(_context4 = ".".concat(_styles.Classes.tableBody, " .")).call(_context4, _styles.Classes.virtual, " table"));
|
|
93
132
|
}
|
|
94
133
|
}, {
|
|
95
134
|
key: "getLeftLockShadow",
|
|
96
135
|
value: function getLeftLockShadow() {
|
|
97
|
-
var
|
|
136
|
+
var _context5;
|
|
98
137
|
|
|
99
|
-
var selector = (0, _concat.default)(
|
|
138
|
+
var selector = (0, _concat.default)(_context5 = ".".concat(_styles.Classes.lockShadowMask, " .")).call(_context5, _styles.Classes.leftLockShadow);
|
|
100
139
|
return this.artTable.querySelector(selector);
|
|
101
140
|
}
|
|
102
141
|
}, {
|
|
103
142
|
key: "getRightLockShadow",
|
|
104
143
|
value: function getRightLockShadow() {
|
|
105
|
-
var
|
|
144
|
+
var _context6;
|
|
106
145
|
|
|
107
|
-
var selector = (0, _concat.default)(
|
|
146
|
+
var selector = (0, _concat.default)(_context6 = ".".concat(_styles.Classes.lockShadowMask, " .")).call(_context6, _styles.Classes.rightLockShadow);
|
|
108
147
|
return this.artTable.querySelector(selector);
|
|
109
148
|
}
|
|
110
149
|
}, {
|
|
@@ -115,10 +154,10 @@ var TableDOMHelper = /*#__PURE__*/function () {
|
|
|
115
154
|
}, {
|
|
116
155
|
key: "getRowTop",
|
|
117
156
|
value: function getRowTop(rowIndex) {
|
|
118
|
-
var
|
|
157
|
+
var _context7, _context8;
|
|
119
158
|
|
|
120
159
|
if (rowIndex === 0) return 0;
|
|
121
|
-
var selector = (0, _concat.default)(
|
|
160
|
+
var selector = (0, _concat.default)(_context7 = (0, _concat.default)(_context8 = ".".concat(_styles.Classes.tableBody, " .")).call(_context8, _styles.Classes.tableRow, "[data-rowindex=\"")).call(_context7, rowIndex, "\"]");
|
|
122
161
|
var row = this.artTable.querySelector(selector);
|
|
123
162
|
var rowOffsetTop = row && row.offsetTop || 0;
|
|
124
163
|
var tableOffsetTop = this.tableElement.offsetTop || 0;
|
|
@@ -42,7 +42,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
|
|
|
42
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
43
|
|
|
44
44
|
function isWindow(arg) {
|
|
45
|
-
return arg.toString() === '[object Window]';
|
|
45
|
+
return arg.toString() === '[object Window]' || arg.toString() === '[object global]';
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
function isBody(arg) {
|
|
@@ -141,7 +141,7 @@ function HtmlTable(_ref) {
|
|
|
141
141
|
positionStyle.left = hozInfo.stickyLeftMap.get(colIndex);
|
|
142
142
|
} else if (colIndex >= fullFlatCount - rightFlatCount) {
|
|
143
143
|
positionStyle.position = 'sticky';
|
|
144
|
-
positionStyle.right = hozInfo.stickyRightMap.get(colIndex) - stickyRightOffset;
|
|
144
|
+
positionStyle.right = hozInfo.stickyRightMap.get(colIndex) - (typeof stickyRightOffset === 'number' ? stickyRightOffset : 0);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
return /*#__PURE__*/_react.default.createElement('td', (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({
|
|
@@ -40,6 +40,8 @@ export declare const Classes: {
|
|
|
40
40
|
readonly button: string;
|
|
41
41
|
readonly buttonPrimary: string;
|
|
42
42
|
readonly filterIcon: string;
|
|
43
|
+
readonly rangeSelection: string;
|
|
44
|
+
readonly tableCellRangeSingleCell: string;
|
|
43
45
|
readonly tableCellRangeSelected: string;
|
|
44
46
|
readonly tableCellRangeTop: string;
|
|
45
47
|
readonly tableCellRangeLeft: string;
|
package/lib/table/base/styles.js
CHANGED
|
@@ -76,6 +76,8 @@ var Classes = {
|
|
|
76
76
|
button: "".concat(prefix, "btn"),
|
|
77
77
|
buttonPrimary: "".concat(prefix, "btn-primary"),
|
|
78
78
|
filterIcon: "".concat(prefix, "filter-icon"),
|
|
79
|
+
rangeSelection: "".concat(prefix, "range-selection"),
|
|
80
|
+
tableCellRangeSingleCell: "".concat(prefix, "table-cell-range-single-cell"),
|
|
79
81
|
tableCellRangeSelected: "".concat(prefix, "table-cell-range-selected"),
|
|
80
82
|
tableCellRangeTop: "".concat(prefix, "table-cell-range-top"),
|
|
81
83
|
tableCellRangeLeft: "".concat(prefix, "table-cell-range-left"),
|
|
@@ -126,7 +128,7 @@ var defaultCSSVariables = {
|
|
|
126
128
|
'--primary-color': '#5582F3',
|
|
127
129
|
'--primary-color-level1': 'rgb(242, 248, 255)',
|
|
128
130
|
'--primary-color-level2': 'rgb(135, 173, 255)',
|
|
129
|
-
'--icon-color': '#
|
|
131
|
+
'--icon-color': '#666666',
|
|
130
132
|
'--strong-border-color': '#d9d9d9',
|
|
131
133
|
'--header-row-height': '32px',
|
|
132
134
|
'--header-color': '#333',
|
|
@@ -148,7 +150,7 @@ exports.defaultCSSVariables = defaultCSSVariables;
|
|
|
148
150
|
var variableConst = getCssVariableText(defaultCSSVariables);
|
|
149
151
|
exports.variableConst = variableConst;
|
|
150
152
|
|
|
151
|
-
var StyledArtTableWrapper = _styledComponents.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n :root {\n ", "\n }\n ", "\n\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n cursor: default;\n color: var(--color);\n font-size: var(--font-size);\n line-height: var(--line-height);\n position: relative;\n\n // \u8868\u683C\u5916\u8FB9\u6846\u7531 art-table-wrapper \u63D0\u4F9B\uFF0C\u800C\u4E0D\u662F\u7531\u5355\u5143\u683C\u63D0\u4F9B\n &.use-outer-border {\n ", ";\n }\n\n .no-scrollbar {\n ::-webkit-scrollbar {\n display: none;\n }\n }\n\n .", " {\n overflow: auto;\n flex-shrink: 1;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n
|
|
153
|
+
var StyledArtTableWrapper = _styledComponents.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n :root {\n ", "\n }\n ", "\n\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n cursor: default;\n color: var(--color);\n font-size: var(--font-size);\n line-height: var(--line-height);\n position: relative;\n\n // \u8868\u683C\u5916\u8FB9\u6846\u7531 art-table-wrapper \u63D0\u4F9B\uFF0C\u800C\u4E0D\u662F\u7531\u5355\u5143\u683C\u63D0\u4F9B\n &.use-outer-border {\n ", ";\n }\n\n .no-scrollbar {\n ::-webkit-scrollbar {\n display: none;\n }\n }\n\n .", " {\n overflow: auto;\n flex-shrink: 1;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n }\n\n .", " {\n overflow: hidden;\n background: var(--header-bgcolor);\n display: flex;\n flex-shrink: 0;\n border-bottom: var(--header-cell-border-horizontal);\n }\n\n .", " {\n display: flex;\n // justify-content: flex-start;\n align-items: center;\n height: inherit;\n }\n\n .", " {\n overflow-x:auto;\n flex-shrink: 0;\n flex-grow: 0;\n scrollbar-width: none; // \u517C\u5BB9\u706B\u72D0\n & {\n ::-webkit-scrollbar {\n display:none;\n }\n }\n }\n\n .", " {\n display: flex;\n flex: none;\n }\n .", ", .", " {\n background: var(--bgcolor);\n overflow: auto;\n overflow-x: hidden;\n overflow-anchor: none;\n position:relative;\n &.empty {\n position: relative;\n }\n }\n\n .", " {\n position: relative;\n }\n .", ", .", " {\n .", "{\n background-color: #e6effb !important;\n }\n .", "{\n border-top: 1px solid #0E5FD8 !important;\n }\n .", "{\n border-left: 1px solid #0E5FD8 !important;\n }\n .", "{\n border-bottom: 1px solid #0E5FD8 !important;\n }\n .", "{\n border-right: 1px solid #0E5FD8 !important;\n }\n }\n \n .", " {\n user-select:none;\n }\n\n\n &.sticky-header .", " {\n position: sticky;\n top: 0;\n z-index: ", ";\n }\n\n &.sticky-footer .", " {\n position: sticky;\n bottom: 0;\n z-index: ", ";\n }\n\n table {\n width: 0;\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0;\n display: table;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n flex-grow: 0;\n position:relative;\n }\n\n // \u5728 tr \u4E0A\u8BBE\u7F6E .no-hover \u53EF\u4EE5\u7981\u7528\u9F20\u6807\u60AC\u505C\u6548\u679C\n tr:not(.no-hover):hover > td {\n background: var(--hover-bgcolor);\n }\n // \u4F7F\u7528 js \u6DFB\u52A0\u60AC\u6D6E\u6548\u679C\n tr:not(.no-hover).row-hover > td {\n background: var(--hover-bgcolor);\n }\n // \u5728 tr \u8BBE\u7F6E highlight \u53EF\u4EE5\u4E3A\u5E95\u4E0B\u7684 td \u8BBE\u7F6E\u4E3A\u9AD8\u4EAE\u8272\n // \u800C\u8BBE\u7F6E .no-highlight \u7684\u8BDD\u5219\u53EF\u4EE5\u7981\u7528\u9AD8\u4EAE\u6548\u679C\uFF1B\n tr:not(.no-highlight).highlight > td {\n background: var(--highlight-bgcolor);\n }\n\n th {\n font-weight: normal;\n text-align: left;\n padding: var(--cell-padding);\n height: var(--header-row-height);\n color: var(--header-color);\n background: var(--header-bgcolor);\n border:1px solid transparent;\n border-right: var(--header-cell-border-vertical);\n border-bottom: var(--header-cell-border-horizontal);\n position: relative;\n }\n\n th.resizeable{\n border-right:none\n }\n\n th.", " {\n border-right: none;\n border-bottom: none;\n }\n\n tr.", " th {\n border-top: var(--header-cell-border-horizontal);\n }\n th.", " {\n border-left: var(--header-cell-border-vertical);\n }\n\n td {\n padding: var(--cell-padding);\n background: var(--bgcolor);\n height: var(--row-height);\n border:1px solid transparent;\n border-right: var(--cell-border-vertical);\n border-bottom: var(--cell-border-horizontal);\n word-break: break-all;\n }\n td.", " {\n border-left: var(--cell-border-vertical);\n }\n tr.", " td {\n border-top: var(--cell-border-horizontal);\n }\n &.has-header tbody tr.", " td {\n border-top: none;\n }\n &.has-footer tbody tr.", " td {\n border-bottom: none;\n }\n\n .", ",\n .", " {\n z-index: ", ";\n }\n\n //#region \u9501\u5217\u9634\u5F71\n .", " {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: ", ";\n pointer-events: none;\n overflow: hidden;\n\n .", " {\n height: 100%;\n }\n\n .", " {\n margin-right: ", "px;\n box-shadow: none;\n\n &.show-shadow {\n box-shadow: var(--lock-shadow);\n border-right: var(--cell-border-vertical);\n }\n }\n\n .", " {\n margin-left: ", "px;\n box-shadow: none;\n\n &.show-shadow {\n box-shadow: var(--lock-shadow);\n border-left: var(--cell-border-vertical);\n }\n }\n }\n //#endregion\n\n //#region \u7A7A\u8868\u683C\u5C55\u73B0\n .", " {\n pointer-events: none;\n color: #99a3b3;\n font-size: 12px;\n text-align: center;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n\n .empty-image {\n width: 50px;\n height: 50px;\n }\n\n .empty-tips {\n margin-top: 16px;\n line-height: 1.5;\n }\n }\n //#endregion\n\n //#region IE\u517C\u5BB9\n &.ie-polyfill-wrapper {\n //\u9501\u5B9A\u5217\u517C\u5BB9 \u4EC5\u5728\u9501\u5B9A\u5217\u7684\u60C5\u51B5\u4E0B\u751F\u6548\n .", " {\n overflow-x: hidden;\n }\n .", ", .", " {\n position:relative;\n }\n .", " {\n overflow: hidden;\n }\n .", " {\n position: relative;\n }\n\n .", " {\n overflow: auto;\n overflow-x: hidden;\n overflow-anchor: none;\n }\n\n .", ", .", "{\n position: absolute;\n z-index: ", ";\n top: 0;\n }\n .", "{\n left:0;\n }\n .", "{\n right:0;\n }\n\n .", "{\n .", "{\n position: absolute;\n top: 0;\n width: 100%;\n z-index: ", ";\n }\n }\n\n tr:not(.no-hover).row-hover > td {\n background: var(--hover-bgcolor);\n }\n }\n //#endregion\n\n //#region \u7C98\u6027\u6EDA\u52A8\u6761\n .", " {\n overflow-y: hidden;\n overflow-x: auto;\n z-index: ", ";\n flex-shrink: 0;\n flex-grow: 0;\n border-top: 1px solid var(--border-color);\n background: var(--bgcolor);\n }\n\n .", " {\n // \u5FC5\u987B\u6709\u9AD8\u5EA6\u624D\u80FD\u51FA\u73B0\u6EDA\u52A8\u6761\n height: 1px;\n visibility: hidden;\n }\n //#endregion\n\n //#region \u52A0\u8F7D\u6837\u5F0F\n .", " {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: auto;\n\n .", " {\n filter: none;\n width: 100%;\n height: 100%;\n overflow: hidden;//\u5217\u5168\u90E8\u56FA\u5B9A\u65F6\uFF0C\u5B58\u5728\u53CC\u6A2A\u5411\u6EDA\u52A8\u6761\n display: flex;\n position: relative;\n flex-direction: column;\n }\n\n .", " {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n pointer-events: none;\n }\n\n .", " {\n position: sticky;\n z-index: ", ";\n transform: translateY(-50%);\n }\n }\n //#endregion\n\n //#region \u8868\u683C\u8FC7\u6EE4\n .", " {\n color:var(--icon-color);\n &.active{\n color:var(--primary-color);\n }\n padding: 6px 4px;\n &:hover{\n background-color: #e5e5e5;\n }\n }\n .", " {\n display: flex\n }\n //#endregion\n\n //#region \u8868\u683C\u6392\u5E8F\n .", " {\n color:var(--icon-color);\n &.active{\n color:var(--primary-color);\n }\n }\n //#endregion\n\n //#region \u6EDA\u52A8\u6761\u5360\u4F4D\n .", " {\n visibility: hidden;\n flex-shrink: 0;\n }\n .", " .", " {\n border-top: var(--cell-border-horizontal);\n }\n //#endregion\n "])), variableConst, variableConst, outerBorderStyleMixin, Classes.artTable, Classes.tableHeader, Classes.tableHeaderCellContent, Classes.virtual, Classes.tableFooter, Classes.tableBody, Classes.tableFooter, Classes.tableRow, Classes.tableBody, Classes.tableFooter, Classes.tableCellRangeSelected, Classes.tableCellRangeTop, Classes.tableCellRangeLeft, Classes.tableCellRangeBottom, Classes.tableCellRangeRight, Classes.rangeSelection, Classes.tableHeader, Z.header, Classes.tableFooter, Z.footer, Classes.leaf, Classes.first, Classes.first, Classes.first, Classes.first, Classes.first, Classes.last, Classes.lockLeft, Classes.lockRight, Z.lock, Classes.lockShadowMask, Z.lockShadow, Classes.lockShadow, Classes.leftLockShadow, LOCK_SHADOW_PADDING, Classes.rightLockShadow, LOCK_SHADOW_PADDING, Classes.emptyWrapper, Classes.virtual, Classes.tableBody, Classes.tableFooter, Classes.tableHeaderMain, Classes.tableHeader, Classes.tableFooterMain, Classes.fixedLeft, Classes.fixedRight, Z.lock, Classes.fixedLeft, Classes.fixedRight, Classes.rowDetailContainer, Classes.rowDetailItem, Z.rowDetail, Classes.stickyScroll, Z.scrollItem, Classes.stickyScrollItem, Classes.loadingWrapper, Classes.loadingContentWrapper, Classes.loadingIndicatorWrapper, Classes.loadingIndicator, Z.loadingIndicator, Classes.tableFilterTrigger, Classes.filterIcon, Classes.tableSortIcon, Classes.verticalScrollPlaceholder, Classes.tableFooter, Classes.verticalScrollPlaceholder);
|
|
152
154
|
|
|
153
155
|
exports.StyledArtTableWrapper = StyledArtTableWrapper;
|
|
154
156
|
var ButtonCSS = (0, _styledComponents.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n ", "\n //#region \u6309\u94AE\n .", "{\n color: var(--color);\n background:#ffffff;\n border:1px solid var(--strong-border-color);\n border-radius: 2px;\n cursor: pointer;\n &:hover{\n color: var(--primary-color);\n border:1px solid var(--primary-color);\n }\n }\n .", " {\n color:#ffffff;\n background-color: var(--primary-color);\n border:none;\n &:hover{\n color:#ffffff;\n background-color: var(--primary-color-level2);\n border:none;\n }\n }\n//#endregion\n"])), variableConst, Classes.button, Classes.buttonPrimary);
|
|
@@ -145,7 +145,6 @@ export declare class BaseTable extends React.Component<BaseTableProps, BaseTable
|
|
|
145
145
|
/** 同步横向滚动偏移量 */
|
|
146
146
|
private syncHorizontalScroll;
|
|
147
147
|
getVerticalRenderRange(useVirtual: ResolvedUseVirtual): VerticalRenderRange;
|
|
148
|
-
private getRowNodeListByEvent;
|
|
149
148
|
private handleRowMouseEnter;
|
|
150
149
|
private handleRowMouseLeave;
|
|
151
150
|
private renderTableBody;
|
package/lib/table/base/table.js
CHANGED
|
@@ -145,23 +145,8 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
145
145
|
_this.resizeSubject = new _rxjs.Subject();
|
|
146
146
|
_this.offsetY = 0;
|
|
147
147
|
|
|
148
|
-
_this.getRowNodeListByEvent = function (e) {
|
|
149
|
-
var nodeList = null;
|
|
150
|
-
var rowIndex = e.currentTarget.dataset.rowindex;
|
|
151
|
-
|
|
152
|
-
if (rowIndex !== undefined) {
|
|
153
|
-
var _this$domHelper = _this.domHelper,
|
|
154
|
-
tableBody = _this$domHelper.tableBody,
|
|
155
|
-
tableFooter = _this$domHelper.tableFooter;
|
|
156
|
-
var targetParent = tableBody.contains(e.currentTarget) ? tableBody : tableFooter;
|
|
157
|
-
nodeList = targetParent.querySelectorAll("tr[data-rowindex=\"".concat(rowIndex, "\"]"));
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return nodeList;
|
|
161
|
-
};
|
|
162
|
-
|
|
163
148
|
_this.handleRowMouseEnter = function (e) {
|
|
164
|
-
var nodeList = _this.getRowNodeListByEvent(e);
|
|
149
|
+
var nodeList = _this.domHelper.getRowNodeListByEvent(e);
|
|
165
150
|
|
|
166
151
|
nodeList && nodeList.forEach(function (node) {
|
|
167
152
|
node.classList.add('row-hover');
|
|
@@ -169,7 +154,7 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
169
154
|
};
|
|
170
155
|
|
|
171
156
|
_this.handleRowMouseLeave = function (e) {
|
|
172
|
-
var nodeList = _this.getRowNodeListByEvent(e);
|
|
157
|
+
var nodeList = _this.domHelper.getRowNodeListByEvent(e);
|
|
173
158
|
|
|
174
159
|
nodeList && nodeList.forEach(function (node) {
|
|
175
160
|
node.classList.remove('row-hover');
|
|
@@ -302,10 +287,10 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
302
287
|
value: function updateStickyScroll() {
|
|
303
288
|
var _a, _b;
|
|
304
289
|
|
|
305
|
-
var _this$
|
|
306
|
-
stickyScroll = _this$
|
|
307
|
-
artTable = _this$
|
|
308
|
-
stickyScrollItem = _this$
|
|
290
|
+
var _this$domHelper = this.domHelper,
|
|
291
|
+
stickyScroll = _this$domHelper.stickyScroll,
|
|
292
|
+
artTable = _this$domHelper.artTable,
|
|
293
|
+
stickyScrollItem = _this$domHelper.stickyScrollItem;
|
|
309
294
|
var _lastHasScrollY = this.hasScrollY;
|
|
310
295
|
|
|
311
296
|
if (!artTable) {
|
|
@@ -571,13 +556,14 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
571
556
|
className: artTableWrapperClassName,
|
|
572
557
|
style: style
|
|
573
558
|
}, _utils.STYLED_REF_PROP, this.artTableWrapperRef);
|
|
559
|
+
var tableProps = getTableProps() || {};
|
|
574
560
|
return /*#__PURE__*/_react.default.createElement(_styles.StyledArtTableWrapper, (0, _extends2.default)({}, artTableWrapperProps), /*#__PURE__*/_react.default.createElement(_loading.default, {
|
|
575
561
|
visible: isLoading,
|
|
576
562
|
LoadingIcon: components.LoadingIcon,
|
|
577
563
|
LoadingContentWrapper: components.LoadingContentWrapper
|
|
578
|
-
}, /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
|
|
579
|
-
className: _styles.Classes.artTable
|
|
580
|
-
}
|
|
564
|
+
}, /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, tableProps, {
|
|
565
|
+
className: (0, _classnames.default)(_styles.Classes.artTable, tableProps.className)
|
|
566
|
+
}), this.renderTableHeader(info), this.renderTableBody(info), this.renderTableFooter(info), this.renderLockShadows(info)), this.renderStickyScroll(info)));
|
|
581
567
|
}
|
|
582
568
|
}, {
|
|
583
569
|
key: "componentDidMount",
|
|
@@ -642,9 +628,9 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
642
628
|
value: function initSubscriptions() {
|
|
643
629
|
var _this2 = this;
|
|
644
630
|
|
|
645
|
-
var _this$
|
|
646
|
-
virtual = _this$
|
|
647
|
-
stickyScroll = _this$
|
|
631
|
+
var _this$domHelper2 = this.domHelper,
|
|
632
|
+
virtual = _this$domHelper2.virtual,
|
|
633
|
+
stickyScroll = _this$domHelper2.stickyScroll;
|
|
648
634
|
this.rootSubscription.add(_utils.throttledWindowResize$.subscribe(function () {
|
|
649
635
|
_this2.updateStickyScroll();
|
|
650
636
|
|
|
@@ -705,7 +691,12 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
705
691
|
offsetY: offsetY
|
|
706
692
|
};
|
|
707
693
|
}), op.distinctUntilChanged(function (x, y) {
|
|
708
|
-
//
|
|
694
|
+
// 如果表格区域被隐藏, 不需要触发组件重渲染
|
|
695
|
+
if (y.maxRenderHeight === 0 && y.maxRenderWidth === 0) {
|
|
696
|
+
return true;
|
|
697
|
+
} // 因为 overscan 的存在,滚动较小的距离时不需要触发组件重渲染
|
|
698
|
+
|
|
699
|
+
|
|
709
700
|
return Math.abs(x.maxRenderWidth - y.maxRenderWidth) < _utils.OVERSCAN_SIZE / 2 && Math.abs(x.maxRenderHeight - y.maxRenderHeight) < _utils.OVERSCAN_SIZE / 2 && Math.abs(x.offsetY - y.offsetY) < _utils.OVERSCAN_SIZE / 2;
|
|
710
701
|
})).subscribe(function (sizeAndOffset) {
|
|
711
702
|
_this2.setState(sizeAndOffset);
|
|
@@ -797,10 +788,12 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
|
|
|
797
788
|
|
|
798
789
|
if (size === 0) {
|
|
799
790
|
zeroHeightRowCount += 1;
|
|
791
|
+
} else {
|
|
792
|
+
// 渲染出来的行高度为0,说明是display=none情况,行高不存在该种异常情况,不保存当前的高度
|
|
793
|
+
this.rowHeightManager.updateRow(rowIndex, offset, size);
|
|
800
794
|
}
|
|
801
795
|
|
|
802
796
|
maxTrBottom = Math.max(maxTrBottom, offset + size);
|
|
803
|
-
this.rowHeightManager.updateRow(rowIndex, offset, size);
|
|
804
797
|
} // 当 estimatedRowHeight 过大时,可能出现「渲染行数过少,无法覆盖可视范围」的情况
|
|
805
798
|
// 出现这种情况时,我们判断「下一次渲染能够渲染更多行」是否满足,满足的话就直接调用 forceUpdate
|
|
806
799
|
// zeroHeightRowCount === 0 用于确保当前没有 display=none 的情况
|
|
@@ -22,6 +22,10 @@ var _autoFill = require("./autoFill");
|
|
|
22
22
|
var stateKey = 'columnDrag';
|
|
23
23
|
var SCROLL_SIZE = 30;
|
|
24
24
|
|
|
25
|
+
function disableSelect(event) {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
}
|
|
28
|
+
|
|
25
29
|
function sortColumns(columns, sort) {
|
|
26
30
|
var res = new Array(columns.length);
|
|
27
31
|
var lastColumns = (0, _toConsumableArray2.default)(columns);
|
|
@@ -75,9 +79,11 @@ function columnDrag() {
|
|
|
75
79
|
},
|
|
76
80
|
headerCellProps: (0, _utils.mergeCellProps)(col.headerCellProps, {
|
|
77
81
|
onMouseDown: !isLeaf || path.length > 1 ? undefined : function (e) {
|
|
78
|
-
if (e.button !== 0) {
|
|
82
|
+
if (e.button !== 0 || !e.currentTarget.contains(e.target)) {
|
|
79
83
|
return;
|
|
80
|
-
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
window.addEventListener('selectstart', disableSelect); // const cx = e.clientX
|
|
81
87
|
// const width = col.width
|
|
82
88
|
// const a = startIndex
|
|
83
89
|
// const b = endIndex
|
|
@@ -86,7 +92,6 @@ function columnDrag() {
|
|
|
86
92
|
// let newStartIndex = startIndex
|
|
87
93
|
// let endIdx = endIndex
|
|
88
94
|
|
|
89
|
-
|
|
90
95
|
var columnMoved = false;
|
|
91
96
|
var columns = pipeline.getColumns();
|
|
92
97
|
|
|
@@ -100,6 +105,8 @@ function columnDrag() {
|
|
|
100
105
|
var currentTarget = e.currentTarget;
|
|
101
106
|
var rect = e.currentTarget.parentElement.getClientRects()[0];
|
|
102
107
|
var startX = rect.left;
|
|
108
|
+
var mouseDownClientX = e.clientX;
|
|
109
|
+
var mouseDownClientY = e.clientY;
|
|
103
110
|
var moveData = [];
|
|
104
111
|
var allColumns = (0, _utils.collectNodes)(columns);
|
|
105
112
|
var tableBodyClientRect = tableBody.getBoundingClientRect();
|
|
@@ -119,8 +126,6 @@ function columnDrag() {
|
|
|
119
126
|
}
|
|
120
127
|
};
|
|
121
128
|
|
|
122
|
-
var stopClickPropagationFlag = false;
|
|
123
|
-
|
|
124
129
|
function handleMouseMove(e) {
|
|
125
130
|
var client = {
|
|
126
131
|
clientX: e.clientX,
|
|
@@ -134,12 +139,6 @@ function columnDrag() {
|
|
|
134
139
|
if (e.clientX - leftPosition < 20) {
|
|
135
140
|
return;
|
|
136
141
|
} else {
|
|
137
|
-
// 阻止列头点击事件,防止拖动后触发列头过滤事件
|
|
138
|
-
if (stopClickPropagationFlag === false) {
|
|
139
|
-
stopClickPropagationFlag = true;
|
|
140
|
-
currentTarget.addEventListener('click', stopClickPropagation);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
142
|
e.stopPropagation();
|
|
144
143
|
}
|
|
145
144
|
|
|
@@ -259,10 +258,15 @@ function columnDrag() {
|
|
|
259
258
|
e.stopPropagation();
|
|
260
259
|
document.body.removeEventListener('mousemove', handleMouseMove);
|
|
261
260
|
document.body.removeEventListener('mouseup', handleMouseUp);
|
|
261
|
+
window.removeEventListener('selectstart', disableSelect); // 阻止列头点击事件,防止拖动后触发列头过滤事件
|
|
262
|
+
|
|
263
|
+
if (_isMoveWhenClicking(mouseDownClientX, mouseDownClientY, e.clientX, e.clientY)) {
|
|
264
|
+
currentTarget.addEventListener('click', stopClickPropagation);
|
|
265
|
+
}
|
|
266
|
+
|
|
262
267
|
window.requestAnimationFrame(function () {
|
|
263
268
|
// 取消阻止列头点击事件
|
|
264
269
|
currentTarget.removeEventListener('click', stopClickPropagation);
|
|
265
|
-
stopClickPropagationFlag = false;
|
|
266
270
|
currentTarget = null;
|
|
267
271
|
|
|
268
272
|
var _moveData = moveData,
|
|
@@ -343,10 +347,6 @@ function columnDrag() {
|
|
|
343
347
|
|
|
344
348
|
document.body.addEventListener('mousemove', handleMouseMove);
|
|
345
349
|
document.body.addEventListener('mouseup', handleMouseUp);
|
|
346
|
-
|
|
347
|
-
document.body.onselectstart = function () {
|
|
348
|
-
return false;
|
|
349
|
-
};
|
|
350
350
|
},
|
|
351
351
|
style: style
|
|
352
352
|
})
|
|
@@ -384,4 +384,15 @@ function moveAllChildren(cols, cloumnsTranslateData, width, isMinus) {
|
|
|
384
384
|
moveAllChildren(children, cloumnsTranslateData, width);
|
|
385
385
|
}
|
|
386
386
|
});
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
function _isMoveWhenClicking(mouseDownClientX, mouseDownClientY, mouseUpClientX, mouseUpClientY) {
|
|
390
|
+
var xDiff = mouseUpClientX - mouseDownClientX;
|
|
391
|
+
var yDiff = mouseUpClientY - mouseDownClientY; // 鼠标点按和松开的偏移量大于5px,认为存在移动
|
|
392
|
+
|
|
393
|
+
if (Math.sqrt(xDiff * xDiff + yDiff * yDiff) > 5) {
|
|
394
|
+
return true;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
return false;
|
|
387
398
|
}
|
|
@@ -12,8 +12,8 @@ export interface FilterFeatureOptions {
|
|
|
12
12
|
keepDataSource?: boolean;
|
|
13
13
|
/** 过滤模式。单列过滤 single,多列过滤 multiple,默认为多选 */
|
|
14
14
|
mode?: 'single' | 'multiple';
|
|
15
|
-
|
|
16
|
-
filterIcon?: ReactNode;
|
|
15
|
+
/** 过滤图标 */
|
|
16
|
+
filterIcon?: ReactNode | ((filtered: boolean) => ReactNode);
|
|
17
17
|
/** 是否对触发弹出过滤面板 的 click 事件调用 event.stopPropagation() */
|
|
18
18
|
stopClickEventPropagation?: boolean;
|
|
19
19
|
}
|