@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.
Files changed (71) hide show
  1. package/dist/@kdcloudjs/table.css +1 -1
  2. package/dist/@kdcloudjs/table.js +611 -207
  3. package/dist/@kdcloudjs/table.js.map +1 -1
  4. package/dist/@kdcloudjs/table.min.css +1 -1
  5. package/dist/@kdcloudjs/table.min.js +6 -6
  6. package/dist/@kdcloudjs/table.min.js.map +1 -1
  7. package/es/table/base/helpers/TableDOMUtils.d.ts +2 -0
  8. package/es/table/base/helpers/TableDOMUtils.js +48 -12
  9. package/es/table/base/helpers/getRichVisibleRectsStream.js +1 -1
  10. package/es/table/base/html-table.js +1 -1
  11. package/es/table/base/styles.d.ts +2 -0
  12. package/es/table/base/styles.js +4 -2
  13. package/es/table/base/table.d.ts +0 -1
  14. package/es/table/base/table.js +22 -29
  15. package/es/table/pipeline/features/columnDrag.js +27 -16
  16. package/es/table/pipeline/features/columnFilter.d.ts +2 -2
  17. package/es/table/pipeline/features/columnFilter.js +33 -12
  18. package/es/table/pipeline/features/contextMenu.js +1 -0
  19. package/es/table/pipeline/features/filter/DefaultFilterIcon.d.ts +5 -0
  20. package/es/table/pipeline/features/filter/DefaultFilterIcon.js +20 -0
  21. package/es/table/pipeline/features/filter/Filter.d.ts +1 -1
  22. package/es/table/pipeline/features/filter/Filter.js +16 -20
  23. package/es/table/pipeline/features/filter/FilterPanel.js +25 -16
  24. package/es/table/pipeline/features/filter/util.js +4 -4
  25. package/es/table/pipeline/features/footerDataSource.d.ts +9 -0
  26. package/es/table/pipeline/features/footerDataSource.js +25 -0
  27. package/es/table/pipeline/features/index.d.ts +2 -0
  28. package/es/table/pipeline/features/index.js +3 -1
  29. package/es/table/pipeline/features/mergeCellHover.d.ts +2 -0
  30. package/es/table/pipeline/features/mergeCellHover.js +32 -0
  31. package/es/table/pipeline/features/multiSelect.js +7 -2
  32. package/es/table/pipeline/features/rangeSelection.d.ts +1 -1
  33. package/es/table/pipeline/features/rangeSelection.js +156 -28
  34. package/es/table/pipeline/features/singleSelect.js +4 -0
  35. package/es/table/pipeline/features/treeMode.d.ts +2 -0
  36. package/es/table/pipeline/features/treeMode.js +18 -20
  37. package/es/table/pipeline/pipeline.d.ts +5 -1
  38. package/es/table/pipeline/pipeline.js +11 -10
  39. package/lib/table/base/helpers/TableDOMUtils.d.ts +2 -0
  40. package/lib/table/base/helpers/TableDOMUtils.js +51 -12
  41. package/lib/table/base/helpers/getRichVisibleRectsStream.js +1 -1
  42. package/lib/table/base/html-table.js +1 -1
  43. package/lib/table/base/styles.d.ts +2 -0
  44. package/lib/table/base/styles.js +4 -2
  45. package/lib/table/base/table.d.ts +0 -1
  46. package/lib/table/base/table.js +22 -29
  47. package/lib/table/pipeline/features/columnDrag.js +27 -16
  48. package/lib/table/pipeline/features/columnFilter.d.ts +2 -2
  49. package/lib/table/pipeline/features/columnFilter.js +31 -12
  50. package/lib/table/pipeline/features/contextMenu.js +1 -0
  51. package/lib/table/pipeline/features/filter/DefaultFilterIcon.d.ts +5 -0
  52. package/lib/table/pipeline/features/filter/DefaultFilterIcon.js +30 -0
  53. package/lib/table/pipeline/features/filter/Filter.d.ts +1 -1
  54. package/lib/table/pipeline/features/filter/Filter.js +17 -20
  55. package/lib/table/pipeline/features/filter/FilterPanel.js +25 -15
  56. package/lib/table/pipeline/features/filter/util.js +4 -4
  57. package/lib/table/pipeline/features/footerDataSource.d.ts +9 -0
  58. package/lib/table/pipeline/features/footerDataSource.js +41 -0
  59. package/lib/table/pipeline/features/index.d.ts +2 -0
  60. package/lib/table/pipeline/features/index.js +23 -1
  61. package/lib/table/pipeline/features/mergeCellHover.d.ts +2 -0
  62. package/lib/table/pipeline/features/mergeCellHover.js +43 -0
  63. package/lib/table/pipeline/features/multiSelect.js +6 -1
  64. package/lib/table/pipeline/features/rangeSelection.d.ts +1 -1
  65. package/lib/table/pipeline/features/rangeSelection.js +158 -30
  66. package/lib/table/pipeline/features/singleSelect.js +4 -0
  67. package/lib/table/pipeline/features/treeMode.d.ts +2 -0
  68. package/lib/table/pipeline/features/treeMode.js +19 -22
  69. package/lib/table/pipeline/pipeline.d.ts +5 -1
  70. package/lib/table/pipeline/pipeline.js +12 -10
  71. 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 _context3; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context3 = Object.prototype.toString.call(o)).call(_context3, 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); }
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 _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
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[primaryKey];
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 _columns = _toArray(columns),
130
- firstCol = _columns[0],
131
- others = _sliceInstanceProperty(_columns).call(_columns, 1);
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(firstCol, record, recordIndex);
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(firstCol, record, rowIndex);
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
- return _concatInstanceProperty(_context2 = [_extends(_extends({}, firstCol), {
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(firstCol)),
225
+ }, internals.safeRenderHeader(expandCol)),
229
226
  render: render,
230
- getCellProps: clickArea === 'cell' ? getCellProps : firstCol.getCellProps
231
- })]).call(_context2, _toConsumableArray(others));
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
- }; // if (this.getFeatureOptions(rangeSelectionKey)) {
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 _context;
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)(_context = ".".concat(_styles.Classes.artTable, " + .")).call(_context, _styles.Classes.stickyScroll);
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 _context2;
121
+ var _context3;
83
122
 
84
- var tbody = this.artTable.querySelector((0, _concat.default)(_context2 = ".".concat(_styles.Classes.tableBody, " .")).call(_context2, _styles.Classes.virtual, " table tbody"));
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 _context3;
129
+ var _context4;
91
130
 
92
- return this.artTable.querySelector((0, _concat.default)(_context3 = ".".concat(_styles.Classes.tableBody, " .")).call(_context3, _styles.Classes.virtual, " table"));
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 _context4;
136
+ var _context5;
98
137
 
99
- var selector = (0, _concat.default)(_context4 = ".".concat(_styles.Classes.lockShadowMask, " .")).call(_context4, _styles.Classes.leftLockShadow);
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 _context5;
144
+ var _context6;
106
145
 
107
- var selector = (0, _concat.default)(_context5 = ".".concat(_styles.Classes.lockShadowMask, " .")).call(_context5, _styles.Classes.rightLockShadow);
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 _context6, _context7;
157
+ var _context7, _context8;
119
158
 
120
159
  if (rowIndex === 0) return 0;
121
- var selector = (0, _concat.default)(_context6 = (0, _concat.default)(_context7 = ".".concat(_styles.Classes.tableBody, " .")).call(_context7, _styles.Classes.tableRow, "[data-rowindex=\"")).call(_context6, rowIndex, "\"]");
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;
@@ -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': '#bfbfbf',
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 user-select:none;\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 &.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 // \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: auto;\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 }\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.tableCellRangeSelected, Classes.tableCellRangeTop, Classes.tableCellRangeLeft, Classes.tableCellRangeBottom, Classes.tableCellRangeRight, 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.tableSortIcon, Classes.verticalScrollPlaceholder, Classes.tableFooter, Classes.verticalScrollPlaceholder);
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;
@@ -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$domHelper2 = this.domHelper,
306
- stickyScroll = _this$domHelper2.stickyScroll,
307
- artTable = _this$domHelper2.artTable,
308
- stickyScrollItem = _this$domHelper2.stickyScrollItem;
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
- }, getTableProps()), this.renderTableHeader(info), this.renderTableBody(info), this.renderTableFooter(info), this.renderLockShadows(info)), this.renderStickyScroll(info)));
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$domHelper3 = this.domHelper,
646
- virtual = _this$domHelper3.virtual,
647
- stickyScroll = _this$domHelper3.stickyScroll;
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
- // 因为 overscan 的存在,滚动较小的距离时不需要触发组件重渲染
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
- } // const cx = e.clientX
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
  }