@kdcloudjs/table 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +34 -33
  3. package/dist/@kdcloudjs/table.css +1 -1
  4. package/dist/@kdcloudjs/table.css.map +1 -1
  5. package/dist/@kdcloudjs/table.js +6323 -3240
  6. package/dist/@kdcloudjs/table.js.map +1 -1
  7. package/dist/@kdcloudjs/table.min.css +1 -1
  8. package/dist/@kdcloudjs/table.min.js +32 -24
  9. package/dist/@kdcloudjs/table.min.js.map +1 -1
  10. package/es/_utils/hooks.js +1 -2
  11. package/es/_utils/numberUtil.js +3 -4
  12. package/es/locale/locale.js +1 -2
  13. package/es/table/base/calculations.js +2 -3
  14. package/es/table/base/header.d.ts +6 -2
  15. package/es/table/base/header.js +36 -13
  16. package/es/table/base/helpers/SpanManager.js +1 -1
  17. package/es/table/base/helpers/TableDOMUtils.d.ts +3 -0
  18. package/es/table/base/helpers/TableDOMUtils.js +23 -5
  19. package/es/table/base/helpers/getRichVisibleRectsStream.d.ts +23 -0
  20. package/es/table/base/helpers/getRichVisibleRectsStream.js +216 -0
  21. package/es/table/base/html-table.d.ts +3 -1
  22. package/es/table/base/html-table.js +34 -8
  23. package/es/table/base/interfaces.d.ts +1 -0
  24. package/es/table/base/renderTemplates.d.ts +1 -0
  25. package/es/table/base/renderTemplates.js +344 -0
  26. package/es/table/base/styles.d.ts +14 -0
  27. package/es/table/base/styles.js +20 -8
  28. package/es/table/base/table.d.ts +12 -4
  29. package/es/table/base/table.js +183 -136
  30. package/es/table/base/utils.d.ts +6 -3
  31. package/es/table/base/utils.js +27 -6
  32. package/es/table/common-views.js +1 -1
  33. package/es/table/pipeline/features/autoFill.js +7 -1
  34. package/es/table/pipeline/features/columnDrag.js +109 -41
  35. package/es/table/pipeline/features/columnFilter.js +7 -9
  36. package/es/table/pipeline/features/columnResizeWidth.d.ts +3 -0
  37. package/es/table/pipeline/features/columnResizeWidth.js +11 -4
  38. package/es/table/pipeline/features/contextMenu.js +42 -10
  39. package/es/table/pipeline/features/filter/Filter.js +74 -37
  40. package/es/table/pipeline/features/index.d.ts +1 -0
  41. package/es/table/pipeline/features/index.js +2 -1
  42. package/es/table/pipeline/features/rangeSelection.d.ts +10 -0
  43. package/es/table/pipeline/features/rangeSelection.js +231 -0
  44. package/es/table/pipeline/features/rowDetail.js +37 -15
  45. package/es/table/pipeline/features/singleSelect.js +4 -1
  46. package/es/table/pipeline/features/sort.js +2 -3
  47. package/es/table/pipeline/features/treeMode.js +1 -2
  48. package/es/table/pipeline/pipeline.d.ts +4 -0
  49. package/es/table/pipeline/pipeline.js +32 -5
  50. package/es/table/pivot/cross-table/buildCrossTable.js +1 -2
  51. package/es/table/pivot/cross-tree-table/buildCrossTreeTable.js +1 -2
  52. package/es/table/pivot/pivot-utils/builders.js +1 -2
  53. package/es/table/pivot/pivot-utils/convert-utils.js +1 -2
  54. package/es/table/transforms/autoWidth.js +1 -2
  55. package/es/table/transforms/sort.js +1 -2
  56. package/es/table/transforms/treeMode.js +1 -2
  57. package/es/table/utils/applyTransforms.js +1 -3
  58. package/es/table/utils/browserType.d.ts +6 -0
  59. package/es/table/utils/browserType.js +6 -0
  60. package/es/table/utils/buildTree.js +4 -5
  61. package/es/table/utils/collectNodes.js +1 -2
  62. package/es/table/utils/exportTableAsExcel.js +1 -2
  63. package/es/table/utils/getTreeDepth.js +1 -2
  64. package/es/table/utils/groupBy.js +1 -2
  65. package/es/table/utils/index.d.ts +1 -0
  66. package/es/table/utils/index.js +2 -1
  67. package/es/table/utils/layeredSort.js +5 -2
  68. package/es/table/utils/makeRecursiveMapper.js +4 -5
  69. package/es/table/utils/others.d.ts +1 -1
  70. package/es/table/utils/others.js +20 -14
  71. package/es/table/utils/traverseColumn.js +1 -2
  72. package/es/table/utils/tree-data-helpers/StrictTreeDataHelper.js +4 -5
  73. package/es/table/utils/tree-data-helpers/TreeDataHelper.js +4 -5
  74. package/lib/_utils/formatUtil.js +1 -1
  75. package/lib/_utils/hooks.js +2 -4
  76. package/lib/_utils/numberUtil.js +7 -9
  77. package/lib/_utils/usePopper.js +9 -1
  78. package/lib/config-provider/configProvider.js +9 -1
  79. package/lib/config-provider/index.js +5 -5
  80. package/lib/locale/index.js +14 -6
  81. package/lib/locale/locale.js +2 -4
  82. package/lib/table/base/calculations.js +3 -5
  83. package/lib/table/base/empty.js +9 -1
  84. package/lib/table/base/header.d.ts +6 -2
  85. package/lib/table/base/header.js +33 -10
  86. package/lib/table/base/helpers/SpanManager.js +1 -1
  87. package/lib/table/base/helpers/TableDOMUtils.d.ts +3 -0
  88. package/lib/table/base/helpers/TableDOMUtils.js +21 -5
  89. package/lib/table/base/helpers/getRichVisibleRectsStream.d.ts +23 -0
  90. package/lib/table/base/helpers/getRichVisibleRectsStream.js +246 -0
  91. package/lib/table/base/html-table.d.ts +3 -1
  92. package/lib/table/base/html-table.js +34 -8
  93. package/lib/table/base/index.js +4 -4
  94. package/lib/table/base/interfaces.d.ts +1 -0
  95. package/lib/table/base/renderTemplates.d.ts +1 -0
  96. package/lib/table/base/renderTemplates.js +370 -0
  97. package/lib/table/base/styles.d.ts +14 -0
  98. package/lib/table/base/styles.js +31 -12
  99. package/lib/table/base/table.d.ts +12 -4
  100. package/lib/table/base/table.js +191 -137
  101. package/lib/table/base/utils.d.ts +6 -3
  102. package/lib/table/base/utils.js +47 -10
  103. package/lib/table/common-views.js +2 -2
  104. package/lib/table/pipeline/features/__test__/sort.test.js +5 -3
  105. package/lib/table/pipeline/features/autoFill.js +9 -2
  106. package/lib/table/pipeline/features/columnDrag.js +108 -40
  107. package/lib/table/pipeline/features/columnFilter.js +6 -9
  108. package/lib/table/pipeline/features/columnResizeWidth.d.ts +3 -0
  109. package/lib/table/pipeline/features/columnResizeWidth.js +21 -5
  110. package/lib/table/pipeline/features/contextMenu.js +53 -11
  111. package/lib/table/pipeline/features/filter/DefaultFilterContent.js +10 -2
  112. package/lib/table/pipeline/features/filter/Filter.js +88 -37
  113. package/lib/table/pipeline/features/filter/FilterPanel.js +10 -2
  114. package/lib/table/pipeline/features/filter/index.js +4 -4
  115. package/lib/table/pipeline/features/index.d.ts +1 -0
  116. package/lib/table/pipeline/features/index.js +37 -27
  117. package/lib/table/pipeline/features/rangeSelection.d.ts +10 -0
  118. package/lib/table/pipeline/features/rangeSelection.js +256 -0
  119. package/lib/table/pipeline/features/rowDetail.js +39 -15
  120. package/lib/table/pipeline/features/singleSelect.js +4 -1
  121. package/lib/table/pipeline/features/sort.js +2 -4
  122. package/lib/table/pipeline/features/treeMode.js +2 -4
  123. package/lib/table/pipeline/index.js +11 -3
  124. package/lib/table/pipeline/pipeline.d.ts +4 -0
  125. package/lib/table/pipeline/pipeline.js +33 -7
  126. package/lib/table/pivot/cross-table/buildCrossTable.js +1 -3
  127. package/lib/table/pivot/cross-table/index.js +4 -4
  128. package/lib/table/pivot/cross-tree-table/buildCrossTreeTable.js +1 -3
  129. package/lib/table/pivot/pivot-utils/builders.js +2 -4
  130. package/lib/table/pivot/pivot-utils/convert-utils.js +1 -3
  131. package/lib/table/pivot/pivot-utils/index.js +4 -4
  132. package/lib/table/transforms/autoWidth.js +10 -4
  133. package/lib/table/transforms/columnResize.js +10 -2
  134. package/lib/table/transforms/index.js +32 -32
  135. package/lib/table/transforms/sort.js +10 -4
  136. package/lib/table/transforms/treeMode.js +9 -3
  137. package/lib/table/utils/applyTransforms.js +1 -5
  138. package/lib/table/utils/browserType.d.ts +6 -0
  139. package/lib/table/utils/browserType.js +13 -0
  140. package/lib/table/utils/buildTree.js +1 -3
  141. package/lib/table/utils/collectNodes.js +1 -3
  142. package/lib/table/utils/copyToClipboard.js +1 -1
  143. package/lib/table/utils/element.js +3 -3
  144. package/lib/table/utils/exportTableAsExcel.js +1 -3
  145. package/lib/table/utils/getTreeDepth.js +1 -3
  146. package/lib/table/utils/groupBy.js +1 -3
  147. package/lib/table/utils/index.d.ts +1 -0
  148. package/lib/table/utils/index.js +57 -49
  149. package/lib/table/utils/layeredSort.js +6 -2
  150. package/lib/table/utils/makeRecursiveMapper.js +1 -3
  151. package/lib/table/utils/others.d.ts +1 -1
  152. package/lib/table/utils/others.js +23 -18
  153. package/lib/table/utils/traverseColumn.js +1 -3
  154. package/lib/table/utils/tree-data-helpers/StrictTreeDataHelper.js +5 -7
  155. package/lib/table/utils/tree-data-helpers/TreeDataHelper.js +5 -7
  156. package/package.json +6 -2
  157. package/dist/kd-table.css +0 -422
  158. package/dist/kd-table.css.map +0 -1
  159. package/dist/kd-table.js +0 -38578
  160. package/dist/kd-table.js.map +0 -1
  161. package/dist/kd-table.min.css +0 -9
  162. package/dist/kd-table.min.js +0 -208
  163. package/dist/kd-table.min.js.map +0 -1
  164. package/es/table/base/helpers/__test__/visible-part.test.d.ts +0 -1
  165. package/es/table/base/helpers/__test__/visible-part.test.js +0 -28
  166. package/es/table/base/helpers/visible-part.d.ts +0 -23
  167. package/es/table/base/helpers/visible-part.js +0 -58
  168. package/lib/table/base/helpers/__test__/visible-part.test.d.ts +0 -1
  169. package/lib/table/base/helpers/__test__/visible-part.test.js +0 -31
  170. package/lib/table/base/helpers/visible-part.d.ts +0 -23
  171. package/lib/table/base/helpers/visible-part.js +0 -72
@@ -1,19 +1,23 @@
1
1
  import _extends from "@babel/runtime-corejs3/helpers/extends";
2
2
  import _flatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/flat";
3
3
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
4
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
4
5
  import cx from 'classnames';
5
6
  import React from 'react';
6
7
  import { internals } from '../internals';
7
8
  import { Colgroup } from './colgroup';
8
9
  import SpanManager from './helpers/SpanManager';
9
10
  import { Classes } from './styles';
11
+ import { getScrollbarSize } from './utils';
10
12
  export function HtmlTable(_ref) {
11
13
  var tbodyHtmlTag = _ref.tbodyHtmlTag,
12
14
  getRowProps = _ref.getRowProps,
13
15
  primaryKey = _ref.primaryKey,
16
+ hasScrollY = _ref.hasScrollY,
14
17
  data = _ref.data,
15
18
  verInfo = _ref.verticalRenderInfo,
16
- hozInfo = _ref.horizontalRenderInfo;
19
+ hozInfo = _ref.horizontalRenderInfo,
20
+ tbodyPosition = _ref.tbodyPosition;
17
21
 
18
22
  var flat = _flatInstanceProperty(hozInfo),
19
23
  hoz = hozInfo.horizontalRenderRange;
@@ -38,15 +42,33 @@ export function HtmlTable(_ref) {
38
42
  even: rowIndex % 2 === 0,
39
43
  odd: rowIndex % 2 === 1
40
44
  }, rowProps === null || rowProps === void 0 ? void 0 : rowProps.className);
45
+
46
+ var visibleColumnDescriptor = _concatInstanceProperty(_context = hozInfo.visible).call(_context); // 左中右区域渲染,存在融合单元格时需要适配rowspan属性
47
+ // 如果固定的列均存在融合单元格,需空白一列做占位,否则融合的单元格不会渲染,导致显示异常
48
+ // 这里无法区分是否存在融合列,默认左右固定区域均添加占位空白列
49
+
50
+
51
+ if (['left', 'right'].indexOf(tbodyPosition) > -1) {
52
+ visibleColumnDescriptor.push({
53
+ type: 'blank',
54
+ blankSide: 'left',
55
+ width: 0,
56
+ isPlacehoder: true
57
+ });
58
+ }
59
+
41
60
  return /*#__PURE__*/React.createElement("tr", _extends({}, rowProps, {
42
61
  className: rowClass,
43
- key: internals.safeGetRowKey(primaryKey, record, rowIndex),
62
+ key: (rowProps === null || rowProps === void 0 ? void 0 : rowProps['data-row-detail-key']) ? rowProps['data-row-detail-key'] : internals.safeGetRowKey(primaryKey, record, rowIndex),
44
63
  "data-rowindex": rowIndex,
45
64
  "data-role": 'table-row'
46
- }), _mapInstanceProperty(_context = hozInfo.visible).call(_context, function (descriptor) {
65
+ }), _mapInstanceProperty(visibleColumnDescriptor).call(visibleColumnDescriptor, function (descriptor) {
47
66
  if (descriptor.type === 'blank') {
48
67
  return /*#__PURE__*/React.createElement("td", {
49
- key: descriptor.blankSide
68
+ key: descriptor.blankSide,
69
+ style: {
70
+ visibility: descriptor.isPlacehoder ? 'hidden' : undefined
71
+ }
50
72
  });
51
73
  }
52
74
 
@@ -88,7 +110,10 @@ export function HtmlTable(_ref) {
88
110
 
89
111
 
90
112
  rowSpan = Math.min(rowSpan, verInfo.limit - rowIndex);
91
- colSpan = Math.min(colSpan, leftFlatCount + hoz.rightIndex - colIndex);
113
+ colSpan = Math.min(colSpan, leftFlatCount + hoz.rightIndex + rightFlatCount - colIndex); // todo: 右侧有列固定的情况下colSpan计算不对,这里先限制一下
114
+
115
+ rowSpan = Math.max(rowSpan, 1);
116
+ colSpan = Math.max(colSpan, 1);
92
117
  var hasSpan = colSpan > 1 || rowSpan > 1;
93
118
 
94
119
  if (hasSpan) {
@@ -96,13 +121,14 @@ export function HtmlTable(_ref) {
96
121
  }
97
122
 
98
123
  var positionStyle = {};
124
+ var scrollbarWidth = hasScrollY ? getScrollbarSize().width : 0;
99
125
 
100
126
  if (colIndex < leftFlatCount) {
101
127
  positionStyle.position = 'sticky';
102
128
  positionStyle.left = hozInfo.stickyLeftMap.get(colIndex);
103
129
  } else if (colIndex >= fullFlatCount - rightFlatCount) {
104
130
  positionStyle.position = 'sticky';
105
- positionStyle.right = hozInfo.stickyRightMap.get(colIndex);
131
+ positionStyle.right = hozInfo.stickyRightMap.get(colIndex) - scrollbarWidth;
106
132
  }
107
133
 
108
134
  return /*#__PURE__*/React.createElement('td', _extends(_extends(_extends(_extends({
@@ -112,7 +138,7 @@ export function HtmlTable(_ref) {
112
138
  // class
113
139
  first: colIndex === 0,
114
140
  last: colIndex + colSpan === fullFlatCount,
115
- 'lock-left': colIndex < leftFlatCount,
141
+ 'lock-left': colIndex < leftFlatCount || tbodyPosition === 'left',
116
142
  'lock-right': colIndex >= fullFlatCount - rightFlatCount,
117
143
  'row-span': rowSpan > 1
118
144
  })
@@ -127,6 +153,6 @@ export function HtmlTable(_ref) {
127
153
  'data-role': 'table-cell',
128
154
  'data-rowindex': rowIndex,
129
155
  'data-code': column.code
130
- }), cellContent);
156
+ }), tbodyPosition === 'center' && positionStyle.position === 'sticky' ? null : cellContent);
131
157
  }
132
158
  }
@@ -16,6 +16,7 @@ export declare type VisibleColumnDescriptor = {
16
16
  type: 'blank';
17
17
  blankSide: 'left' | 'right';
18
18
  width: number;
19
+ isPlacehoder?: boolean;
19
20
  } | {
20
21
  type: 'normal';
21
22
  colIndex: number;
@@ -0,0 +1 @@
1
+ export default function getTableHeaderRenderTemplate(type: string): any;
@@ -0,0 +1,344 @@
1
+ import _extends from "@babel/runtime-corejs3/helpers/extends";
2
+ import _Map from "@babel/runtime-corejs3/core-js-stable/map";
3
+ import _flatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/flat";
4
+ import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
5
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
6
+
7
+ /*
8
+ * @Author: wqhui
9
+ * @Date: 2022-03-14 11:21:12
10
+ * @Description: 不同情况的渲染模板,比如IE下的
11
+ */
12
+ import React, { useEffect, useRef } from 'react';
13
+ import ReactDom from 'react-dom';
14
+ import cx from 'classnames';
15
+ import { HtmlTable } from './html-table';
16
+ import { Classes } from './styles';
17
+ import { composeRowPropsGetter, getScrollbarSize } from './utils';
18
+ import { getTreeDepth, browserType } from '../utils';
19
+ import TableHeader from './header';
20
+ var TEMPLATES = new _Map();
21
+
22
+ function renderTableHeaderInIE(info, props) {
23
+ var stickyTop = props.stickyTop,
24
+ hasHeader = props.hasHeader;
25
+
26
+ var flat = _flatInstanceProperty(info),
27
+ nested = info.nested,
28
+ visible = info.visible,
29
+ hasLockColumn = info.hasLockColumn;
30
+
31
+ var left = flat.left,
32
+ right = flat.right;
33
+ var leftNested = nested.left,
34
+ rightNested = nested.right,
35
+ full = nested.full;
36
+ var rowCount = getTreeDepth(full) + 1;
37
+ return /*#__PURE__*/React.createElement("div", {
38
+ className: cx(Classes.tableHeader)
39
+ }, /*#__PURE__*/React.createElement("div", {
40
+ className: cx(Classes.tableHeaderMain, 'no-scrollbar'),
41
+ style: {
42
+ top: stickyTop === 0 ? undefined : stickyTop,
43
+ display: hasHeader ? undefined : 'none'
44
+ }
45
+ }, /*#__PURE__*/React.createElement(TableHeader, {
46
+ info: info,
47
+ theaderPosition: hasLockColumn ? 'center' : undefined
48
+ })), left.length > 0 ? /*#__PURE__*/React.createElement("div", {
49
+ className: Classes.fixedLeft
50
+ }, /*#__PURE__*/React.createElement(TableHeader, {
51
+ info: _extends(_extends({}, info), {
52
+ flat: {
53
+ center: left,
54
+ full: left,
55
+ left: [],
56
+ right: []
57
+ },
58
+ nested: {
59
+ center: leftNested,
60
+ full: leftNested,
61
+ left: [],
62
+ right: []
63
+ },
64
+ visible: _sliceInstanceProperty(visible).call(visible, 0, left.length),
65
+ horizontalRenderRange: {
66
+ leftIndex: 0,
67
+ leftBlank: 0,
68
+ rightIndex: left.length,
69
+ rightBlank: 0
70
+ }
71
+ }),
72
+ theaderPosition: "left",
73
+ rowCount: rowCount
74
+ })) : null, right.length > 0 ? /*#__PURE__*/React.createElement("div", {
75
+ className: Classes.fixedRight
76
+ }, /*#__PURE__*/React.createElement(TableHeader, {
77
+ info: _extends(_extends({}, info), {
78
+ flat: {
79
+ center: right,
80
+ full: right,
81
+ left: [],
82
+ right: []
83
+ },
84
+ nested: {
85
+ center: rightNested,
86
+ full: rightNested,
87
+ left: [],
88
+ right: []
89
+ },
90
+ visible: _sliceInstanceProperty(visible).call(visible, visible.length - right.length),
91
+ horizontalRenderRange: {
92
+ leftIndex: 0,
93
+ leftBlank: 0,
94
+ rightIndex: right.length,
95
+ rightBlank: 0
96
+ }
97
+ }),
98
+ theaderPosition: 'right',
99
+ rowCount: rowCount
100
+ })) : null);
101
+ }
102
+
103
+ function renderTableBodyInIE(info, props, extra) {
104
+ var dataSource = props.dataSource,
105
+ getRowProps = props.getRowProps,
106
+ primaryKey = props.primaryKey;
107
+ var _info$verticalRenderR = info.verticalRenderRange,
108
+ topIndex = _info$verticalRenderR.topIndex,
109
+ bottomBlank = _info$verticalRenderR.bottomBlank,
110
+ topBlank = _info$verticalRenderR.topBlank,
111
+ bottomIndex = _info$verticalRenderR.bottomIndex;
112
+
113
+ var flat = _flatInstanceProperty(info),
114
+ visible = info.visible,
115
+ hasLockColumn = info.hasLockColumn;
116
+
117
+ var left = flat.left,
118
+ right = flat.right;
119
+ var verticalRenderInfo = {
120
+ first: 0,
121
+ offset: topIndex,
122
+ limit: bottomIndex,
123
+ last: dataSource.length - 1
124
+ };
125
+ var commonProps = {
126
+ getRowProps: composeRowPropsGetter(getRowProps, extra.rowProps),
127
+ primaryKey: primaryKey,
128
+ data: _sliceInstanceProperty(dataSource).call(dataSource, topIndex, bottomIndex)
129
+ };
130
+ var scrollbarWidth = extra.hasScrollY ? getScrollbarSize().width : 0;
131
+ var fixedRightTableStyle = {
132
+ right: -scrollbarWidth
133
+ };
134
+ return /*#__PURE__*/React.createElement("div", {
135
+ className: cx(Classes.tableBody, Classes.horizontalScrollContainer)
136
+ }, /*#__PURE__*/React.createElement("div", {
137
+ className: Classes.virtual
138
+ }, topBlank > 0 && /*#__PURE__*/React.createElement("div", {
139
+ key: "top-blank",
140
+ className: cx(Classes.virtualBlank, 'top'),
141
+ style: {
142
+ height: topBlank
143
+ }
144
+ }), /*#__PURE__*/React.createElement(HtmlTable, _extends({
145
+ tbodyHtmlTag: "tbody"
146
+ }, commonProps, {
147
+ tbodyPosition: hasLockColumn ? 'center' : undefined,
148
+ horizontalRenderInfo: info,
149
+ verticalRenderInfo: verticalRenderInfo
150
+ })), bottomBlank > 0 && /*#__PURE__*/React.createElement("div", {
151
+ key: "bottom-blank",
152
+ className: cx(Classes.virtualBlank, 'bottom'),
153
+ style: {
154
+ height: bottomBlank
155
+ }
156
+ })), left.length > 0 ? /*#__PURE__*/React.createElement("div", {
157
+ className: Classes.fixedLeft
158
+ }, topBlank > 0 && /*#__PURE__*/React.createElement("div", {
159
+ key: "top-blank",
160
+ className: cx(Classes.virtualBlank, 'top'),
161
+ style: {
162
+ height: topBlank
163
+ }
164
+ }), /*#__PURE__*/React.createElement(HtmlTable, _extends({
165
+ tbodyHtmlTag: "tbody"
166
+ }, commonProps, {
167
+ tbodyPosition: "left",
168
+ horizontalRenderInfo: _extends(_extends({}, info), {
169
+ flat: {
170
+ center: left,
171
+ full: left,
172
+ left: [],
173
+ right: []
174
+ },
175
+ visible: _sliceInstanceProperty(visible).call(visible, 0, left.length)
176
+ }),
177
+ verticalRenderInfo: verticalRenderInfo
178
+ })), bottomBlank > 0 && /*#__PURE__*/React.createElement("div", {
179
+ key: "bottom-blank",
180
+ className: cx(Classes.virtualBlank, 'bottom'),
181
+ style: {
182
+ height: bottomBlank
183
+ }
184
+ })) : null, right.length > 0 ? /*#__PURE__*/React.createElement("div", {
185
+ className: Classes.fixedRight,
186
+ style: fixedRightTableStyle
187
+ }, topBlank > 0 && /*#__PURE__*/React.createElement("div", {
188
+ key: "top-blank",
189
+ className: cx(Classes.virtualBlank, 'top'),
190
+ style: {
191
+ height: topBlank
192
+ }
193
+ }), /*#__PURE__*/React.createElement(HtmlTable, _extends({
194
+ tbodyHtmlTag: "tbody"
195
+ }, commonProps, {
196
+ tbodyPosition: "right",
197
+ hasScrollY: extra.hasScrollY,
198
+ horizontalRenderInfo: _extends(_extends({}, info), {
199
+ flat: {
200
+ center: right,
201
+ full: right,
202
+ left: [],
203
+ right: []
204
+ },
205
+ visible: _sliceInstanceProperty(visible).call(visible, visible.length - right.length)
206
+ }),
207
+ verticalRenderInfo: verticalRenderInfo
208
+ })), bottomBlank > 0 && /*#__PURE__*/React.createElement("div", {
209
+ key: "bottom-blank",
210
+ className: cx(Classes.virtualBlank, 'bottom'),
211
+ style: {
212
+ height: bottomBlank
213
+ }
214
+ })) : null, /*#__PURE__*/React.createElement("div", {
215
+ className: Classes.rowDetailContainer
216
+ }));
217
+ }
218
+
219
+ function renderTableFooterInIE(info, props, extra) {
220
+ var _props$footerDataSour = props.footerDataSource,
221
+ footerDataSource = _props$footerDataSour === void 0 ? [] : _props$footerDataSour,
222
+ getRowProps = props.getRowProps,
223
+ primaryKey = props.primaryKey,
224
+ stickyBottom = props.stickyBottom;
225
+
226
+ var _getRowProps = composeRowPropsGetter(getRowProps, extra.rowProps);
227
+
228
+ var flat = _flatInstanceProperty(info),
229
+ visible = info.visible,
230
+ hasLockColumn = info.hasLockColumn;
231
+
232
+ var left = flat.left,
233
+ right = flat.right;
234
+ var verticalRenderInfo = {
235
+ offset: 0,
236
+ first: 0,
237
+ last: footerDataSource.length - 1,
238
+ limit: Infinity
239
+ };
240
+ var commonProps = {
241
+ data: footerDataSource,
242
+ getRowProps: _getRowProps,
243
+ primaryKey: primaryKey,
244
+ verticalRenderInfo: verticalRenderInfo
245
+ };
246
+ return /*#__PURE__*/React.createElement("div", {
247
+ className: cx(Classes.tableFooter),
248
+ style: {
249
+ bottom: stickyBottom === 0 ? undefined : stickyBottom
250
+ }
251
+ }, /*#__PURE__*/React.createElement("div", {
252
+ className: cx(Classes.tableFooterMain, Classes.horizontalScrollContainer)
253
+ }, /*#__PURE__*/React.createElement(HtmlTable, _extends({
254
+ tbodyHtmlTag: "tfoot"
255
+ }, commonProps, {
256
+ tbodyPosition: hasLockColumn ? 'center' : undefined,
257
+ horizontalRenderInfo: info
258
+ }))), left.length > 0 ? /*#__PURE__*/React.createElement("div", {
259
+ className: Classes.fixedLeft
260
+ }, /*#__PURE__*/React.createElement(HtmlTable, _extends({
261
+ tbodyHtmlTag: "tfoot"
262
+ }, commonProps, {
263
+ tbodyPosition: "left",
264
+ horizontalRenderInfo: _extends(_extends({}, info), {
265
+ flat: {
266
+ center: left,
267
+ full: left,
268
+ left: [],
269
+ right: []
270
+ },
271
+ visible: _sliceInstanceProperty(visible).call(visible, 0, left.length)
272
+ })
273
+ }))) : null, right.length > 0 ? /*#__PURE__*/React.createElement("div", {
274
+ className: Classes.fixedRight
275
+ }, /*#__PURE__*/React.createElement(HtmlTable, _extends({
276
+ tbodyHtmlTag: "tfoot"
277
+ }, commonProps, {
278
+ tbodyPosition: "right",
279
+ horizontalRenderInfo: _extends(_extends({}, info), {
280
+ flat: {
281
+ center: right,
282
+ full: right,
283
+ left: [],
284
+ right: []
285
+ },
286
+ visible: _sliceInstanceProperty(visible).call(visible, visible.length - right.length)
287
+ })
288
+ }))) : null);
289
+ }
290
+
291
+ function renderRowDetailInIE(params) {
292
+ var domHelper = params.domHelper;
293
+ if (!domHelper) return;
294
+ var artTable = domHelper.artTable;
295
+ var rowDetailContainer = artTable && artTable.querySelector(".".concat(Classes.rowDetailContainer));
296
+ return /*#__PURE__*/ReactDom.createPortal( /*#__PURE__*/React.createElement(RowDetail, _extends({}, params)), rowDetailContainer);
297
+ }
298
+
299
+ function RowDetail(props) {
300
+ var detailRef = useRef(null);
301
+ var row = props.row,
302
+ rowIndex = props.rowIndex,
303
+ domHelper = props.domHelper,
304
+ renderDetail = props.renderDetail;
305
+ var artTable = domHelper.artTable;
306
+ useEffect(function () {
307
+ var selector = function selector(position) {
308
+ var _context, _context2;
309
+
310
+ return _concatInstanceProperty(_context = _concatInstanceProperty(_context2 = ".".concat(position, " .")).call(_context2, Classes.tableRow, "[data-rowindex=\"")).call(_context, rowIndex, "\"]");
311
+ };
312
+
313
+ var itemRect = detailRef.current && detailRef.current.getBoundingClientRect();
314
+ var targetRow = artTable.querySelector(selector(Classes.tableBody));
315
+ var targetRowLeft = artTable.querySelector(selector(Classes.fixedLeft));
316
+ var targetRowRight = artTable.querySelector(selector(Classes.fixedRight));
317
+
318
+ if (itemRect.height) {
319
+ targetRow && (targetRow.style.height = itemRect.height + 'px');
320
+ targetRowLeft && (targetRowLeft.style.height = itemRect.height + 'px');
321
+ targetRowRight && (targetRowRight.style.height = itemRect.height + 'px');
322
+ }
323
+ }, []);
324
+ useEffect(function () {
325
+ // 这时候行才渲染完,只能在这里设置偏移量
326
+ var offsetTop = domHelper.getRowTop(rowIndex) || 0;
327
+ detailRef.current.style.transform = "translateY(".concat(offsetTop + 'px', ")");
328
+ });
329
+ return /*#__PURE__*/React.createElement("div", {
330
+ ref: detailRef,
331
+ className: Classes.rowDetailItem
332
+ }, renderDetail(row, rowIndex));
333
+ }
334
+
335
+ if (browserType.isIE) {
336
+ TEMPLATES.set('header', renderTableHeaderInIE);
337
+ TEMPLATES.set('body', renderTableBodyInIE);
338
+ TEMPLATES.set('footer', renderTableFooterInIE);
339
+ TEMPLATES.set('rowDetail', renderRowDetailInIE);
340
+ }
341
+
342
+ export default function getTableHeaderRenderTemplate(type) {
343
+ return TEMPLATES.get(type);
344
+ }
@@ -3,10 +3,12 @@ export declare const Classes: {
3
3
  /** BaseTable 表格组件的外层包裹 div */
4
4
  readonly artTableWrapper: string;
5
5
  readonly artTable: string;
6
+ readonly tableHeaderMain: string;
6
7
  readonly tableHeader: string;
7
8
  readonly tableBody: string;
8
9
  readonly virtual: string;
9
10
  readonly tableFooter: string;
11
+ readonly tableFooterMain: string;
10
12
  /** 表格行 */
11
13
  readonly tableRow: string;
12
14
  /** 表头行 */
@@ -21,6 +23,7 @@ export declare const Classes: {
21
23
  readonly stickyScroll: string;
22
24
  readonly stickyScrollItem: string;
23
25
  readonly horizontalScrollContainer: string;
26
+ readonly verticalScrollPlaceholder: string;
24
27
  readonly lockShadowMask: string;
25
28
  readonly lockShadow: string;
26
29
  readonly leftLockShadow: string;
@@ -37,12 +40,23 @@ export declare const Classes: {
37
40
  readonly button: string;
38
41
  readonly buttonPrimary: string;
39
42
  readonly filterIcon: string;
43
+ readonly tableCellRangeSelected: string;
44
+ readonly tableCellRangeTop: string;
45
+ readonly tableCellRangeLeft: string;
46
+ readonly tableCellRangeBottom: string;
47
+ readonly tableCellRangeRight: string;
48
+ readonly fixedLeft: string;
49
+ readonly fixedRight: string;
50
+ readonly rowDetailContainer: string;
51
+ readonly rowDetailItem: string;
52
+ readonly emptyColCell: string;
40
53
  };
41
54
  export declare const MenuClasses: {
42
55
  menu: string;
43
56
  menuList: string;
44
57
  menuOption: string;
45
58
  menuOptionActive: string;
59
+ menuOptionDisable: string;
46
60
  menuOptionText: string;
47
61
  };
48
62
  export declare type BaseTableCSSVariables = Partial<{
@@ -2,7 +2,6 @@ import _taggedTemplateLiteral from "@babel/runtime-corejs3/helpers/taggedTemplat
2
2
 
3
3
  var _templateObject, _templateObject2, _templateObject3;
4
4
 
5
- import _reduceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/reduce";
6
5
  import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
7
6
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
8
7
  import styled, { css } from 'styled-components';
@@ -12,10 +11,12 @@ export var Classes = {
12
11
  /** BaseTable 表格组件的外层包裹 div */
13
12
  artTableWrapper: "".concat(prefix, "table-wrapper"),
14
13
  artTable: "".concat(prefix, "table"),
14
+ tableHeaderMain: "".concat(prefix, "table-header-main"),
15
15
  tableHeader: "".concat(prefix, "table-header"),
16
16
  tableBody: "".concat(prefix, "table-body"),
17
17
  virtual: "".concat(prefix, "virtual"),
18
18
  tableFooter: "".concat(prefix, "table-footer"),
19
+ tableFooterMain: "".concat(prefix, "table-footer-main"),
19
20
 
20
21
  /** 表格行 */
21
22
  tableRow: "".concat(prefix, "table-row"),
@@ -34,6 +35,7 @@ export var Classes = {
34
35
  stickyScroll: "".concat(prefix, "sticky-scroll"),
35
36
  stickyScrollItem: "".concat(prefix, "sticky-scroll-item"),
36
37
  horizontalScrollContainer: "".concat(prefix, "horizontal-scroll-container"),
38
+ verticalScrollPlaceholder: "".concat(prefix, "vertical-scroll-placeholder"),
37
39
  lockShadowMask: "".concat(prefix, "lock-shadow-mask"),
38
40
  lockShadow: "".concat(prefix, "lock-shadow"),
39
41
  leftLockShadow: "".concat(prefix, "left-lock-shadow"),
@@ -50,13 +52,24 @@ export var Classes = {
50
52
  tableSortIcon: "".concat(prefix, "sort-icon"),
51
53
  button: "".concat(prefix, "btn"),
52
54
  buttonPrimary: "".concat(prefix, "btn-primary"),
53
- filterIcon: "".concat(prefix, "filter-icon")
55
+ filterIcon: "".concat(prefix, "filter-icon"),
56
+ tableCellRangeSelected: "".concat(prefix, "table-cell-range-selected"),
57
+ tableCellRangeTop: "".concat(prefix, "table-cell-range-top"),
58
+ tableCellRangeLeft: "".concat(prefix, "table-cell-range-left"),
59
+ tableCellRangeBottom: "".concat(prefix, "table-cell-range-bottom"),
60
+ tableCellRangeRight: "".concat(prefix, "table-cell-range-right"),
61
+ fixedLeft: "".concat(prefix, "fixed-left"),
62
+ fixedRight: "".concat(prefix, "fixed-right"),
63
+ rowDetailContainer: "".concat(prefix, "row-detail-container"),
64
+ rowDetailItem: "".concat(prefix, "row-detail-item"),
65
+ emptyColCell: "".concat(prefix, "empty-col-cell")
54
66
  };
55
67
  export var MenuClasses = {
56
68
  menu: "".concat(prefix, "table-menu"),
57
69
  menuList: "".concat(prefix, "table-menu-list"),
58
70
  menuOption: "".concat(prefix, "table-menu-option"),
59
71
  menuOptionActive: "".concat(prefix, "table-menu-option-active"),
72
+ menuOptionDisable: "".concat(prefix, "table-menu-option-disable"),
60
73
  menuOptionText: "".concat(prefix, "table-menu-option-text")
61
74
  };
62
75
  var Z = {
@@ -64,6 +77,7 @@ var Z = {
64
77
  header: 15,
65
78
  footer: 10,
66
79
  lockShadow: 20,
80
+ rowDetail: 25,
67
81
  scrollItem: 30,
68
82
  loadingIndicator: 40
69
83
  };
@@ -97,16 +111,14 @@ export var defaultCSSVariables = {
97
111
  '--header-cell-border-vertical': '1px solid #dfe3e8'
98
112
  };
99
113
  export var variableConst = getCssVariableText(defaultCSSVariables);
100
- export var StyledArtTableWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\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: center;\n align-items: center;\n height: inherit;\n }\n\n .", " {\n overflow: hidden;\n flex-shrink: 0;\n flex-grow: 0;\n }\n\n .", " {\n flex: none;\n }\n .", ", .", " {\n background: var(--bgcolor);\n overflow: auto;\n overflow-x: hidden;\n overflow-anchor: none;\n &.empty {\n position: relative;\n }\n }\n\n .", " {\n position: relative;\n transform: translate(0px);\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 }\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: none;\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.leaf {\n border-right: none;\n border-bottom: none;\n }\n\n tr.first th {\n border-top: var(--header-cell-border-horizontal);\n }\n th.first {\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: none;\n border-right: var(--cell-border-vertical);\n border-bottom: var(--cell-border-horizontal);\n word-break: break-all;\n }\n td.first {\n border-left: var(--cell-border-vertical);\n }\n tr.first td {\n border-top: var(--cell-border-horizontal);\n }\n &.has-header tbody tr.first td {\n border-top: none;\n }\n &.has-footer tbody tr.last td {\n border-bottom: none;\n }\n\n .lock-left,\n .lock-right {\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 \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 }\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 "])), variableConst, variableConst, outerBorderStyleMixin, Classes.artTable, Classes.tableHeader, Classes.tableHeaderCellContent, Classes.virtual, Classes.tableFooter, Classes.tableBody, Classes.tableFooter, Classes.tableRow, Classes.tableHeader, Z.header, Classes.tableFooter, Z.footer, Z.lock, Classes.lockShadowMask, Z.lockShadow, Classes.lockShadow, Classes.leftLockShadow, LOCK_SHADOW_PADDING, Classes.rightLockShadow, LOCK_SHADOW_PADDING, Classes.emptyWrapper, Classes.stickyScroll, Z.scrollItem, Classes.stickyScrollItem, Classes.loadingWrapper, Classes.loadingContentWrapper, Classes.loadingIndicatorWrapper, Classes.loadingIndicator, Z.loadingIndicator, Classes.tableFilterTrigger, Classes.tableSortIcon);
114
+ export var StyledArtTableWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\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.leaf {\n border-right: none;\n border-bottom: none;\n }\n\n tr.first th {\n border-top: var(--header-cell-border-horizontal);\n }\n th.first {\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.first {\n border-left: var(--cell-border-vertical);\n }\n tr.first td {\n border-top: var(--cell-border-horizontal);\n }\n &.has-header tbody tr.first td {\n border-top: none;\n }\n &.has-footer tbody tr.last td {\n border-bottom: none;\n }\n\n .lock-left,\n .lock-right {\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, 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);
101
115
  export var ButtonCSS = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\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);
102
116
 
103
117
  function getCssVariableText(obj) {
104
- var _context;
118
+ return _Object$keys(obj).reduce(function (acc, key) {
119
+ var _context;
105
120
 
106
- return _reduceInstanceProperty(_context = _Object$keys(obj)).call(_context, function (acc, key) {
107
- var _context2;
108
-
109
- acc += _concatInstanceProperty(_context2 = "".concat(key, ":")).call(_context2, obj[key], ";");
121
+ acc += _concatInstanceProperty(_context = "".concat(key, ":")).call(_context, obj[key], ";");
110
122
  return acc;
111
123
  }, '');
112
124
  }
@@ -62,12 +62,18 @@ export interface BaseTableProps {
62
62
  };
63
63
  /** 列的默认宽度 */
64
64
  defaultColumnWidth?: number;
65
- /** 表格所处于的块格式化上下文(BFC)
66
- * https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Block_formatting_context */
67
- flowRoot?: 'auto' | 'self' | (() => HTMLElement | typeof window) | HTMLElement | typeof window;
65
+ /**
66
+ * @deprecated
67
+ * flowRoot 在表格 v2.4 后不再需要提供,请移除该属性
68
+ * */
69
+ flowRoot?: never;
70
+ /** 虚拟滚动调试标签,用于表格内部调试使用 */
71
+ virtualDebugLabel?: string;
68
72
  getRowProps?(record: any, rowIndex: number): React.HTMLAttributes<HTMLTableRowElement>;
69
73
  getTableProps?(): React.HTMLAttributes<HTMLTableElement>;
70
74
  setTableWidth?(tableWidth: number): void;
75
+ setTableDomHelper?(domHelper: TableDOMHelper): void;
76
+ clearRangeSelectionStatus?(): void;
71
77
  cssVariables?: {
72
78
  [key: string]: any;
73
79
  };
@@ -107,7 +113,6 @@ export declare class BaseTable extends React.Component<BaseTableProps, BaseTable
107
113
  components: {};
108
114
  getTableProps: typeof noop;
109
115
  getRowProps: typeof noop;
110
- flowRoot: string;
111
116
  dataSource: any[];
112
117
  useOuterBorder: boolean;
113
118
  };
@@ -131,6 +136,9 @@ export declare class BaseTable extends React.Component<BaseTableProps, BaseTable
131
136
  /** 同步横向滚动偏移量 */
132
137
  private syncHorizontalScroll;
133
138
  getVerticalRenderRange(useVirtual: ResolvedUseVirtual): VerticalRenderRange;
139
+ private getRowNodeListByEvent;
140
+ private handleRowMouseEnter;
141
+ private handleRowMouseLeave;
134
142
  private renderTableBody;
135
143
  private renderTableFooter;
136
144
  private renderLockShadows;