@kdcloudjs/table 1.2.0-canary.9 → 1.2.1-canary.1

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 (61) hide show
  1. package/dist/@kdcloudjs/table.css +1 -1
  2. package/dist/@kdcloudjs/table.js +589 -89
  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 +9 -9
  6. package/dist/@kdcloudjs/table.min.js.map +1 -1
  7. package/es/table/base/header.d.ts +2 -1
  8. package/es/table/base/header.js +4 -2
  9. package/es/table/base/helpers/TableDOMUtils.js +3 -1
  10. package/es/table/base/helpers/getRichVisibleRectsStream.js +2 -1
  11. package/es/table/base/html-table.js +1 -1
  12. package/es/table/base/renderTemplates.js +24 -10
  13. package/es/table/base/styles.d.ts +7 -0
  14. package/es/table/base/styles.js +9 -2
  15. package/es/table/base/table.d.ts +2 -1
  16. package/es/table/base/table.js +73 -46
  17. package/es/table/pipeline/features/autoFill.js +3 -1
  18. package/es/table/pipeline/features/columnDrag.js +11 -7
  19. package/es/table/pipeline/features/columnFilter.js +1 -1
  20. package/es/table/pipeline/features/index.d.ts +1 -0
  21. package/es/table/pipeline/features/index.js +2 -1
  22. package/es/table/pipeline/features/multiSelect.js +6 -4
  23. package/es/table/pipeline/features/rangeSelection.js +3 -2
  24. package/es/table/pipeline/features/rowDrag.d.ts +30 -0
  25. package/es/table/pipeline/features/rowDrag.js +349 -0
  26. package/es/table/pipeline/features/singleSelect.js +6 -4
  27. package/es/table/pipeline/features/treeMode.js +6 -0
  28. package/es/table/pipeline/pipeline.d.ts +2 -0
  29. package/es/table/pipeline/pipeline.js +9 -1
  30. package/es/table/utils/index.d.ts +1 -0
  31. package/es/table/utils/index.js +2 -1
  32. package/es/table/utils/selectColumn.d.ts +4 -0
  33. package/es/table/utils/selectColumn.js +6 -0
  34. package/lib/table/base/header.d.ts +2 -1
  35. package/lib/table/base/header.js +4 -2
  36. package/lib/table/base/helpers/TableDOMUtils.js +3 -1
  37. package/lib/table/base/helpers/getRichVisibleRectsStream.js +2 -1
  38. package/lib/table/base/html-table.js +1 -1
  39. package/lib/table/base/renderTemplates.js +24 -10
  40. package/lib/table/base/styles.d.ts +7 -0
  41. package/lib/table/base/styles.js +9 -2
  42. package/lib/table/base/table.d.ts +2 -1
  43. package/lib/table/base/table.js +73 -46
  44. package/lib/table/pipeline/features/autoFill.js +3 -1
  45. package/lib/table/pipeline/features/columnDrag.js +10 -6
  46. package/lib/table/pipeline/features/columnFilter.js +1 -1
  47. package/lib/table/pipeline/features/index.d.ts +1 -0
  48. package/lib/table/pipeline/features/index.js +9 -1
  49. package/lib/table/pipeline/features/multiSelect.js +8 -5
  50. package/lib/table/pipeline/features/rangeSelection.js +3 -2
  51. package/lib/table/pipeline/features/rowDrag.d.ts +30 -0
  52. package/lib/table/pipeline/features/rowDrag.js +371 -0
  53. package/lib/table/pipeline/features/singleSelect.js +8 -5
  54. package/lib/table/pipeline/features/treeMode.js +6 -0
  55. package/lib/table/pipeline/pipeline.d.ts +2 -0
  56. package/lib/table/pipeline/pipeline.js +9 -1
  57. package/lib/table/utils/index.d.ts +1 -0
  58. package/lib/table/utils/index.js +21 -1
  59. package/lib/table/utils/selectColumn.d.ts +4 -0
  60. package/lib/table/utils/selectColumn.js +16 -0
  61. package/package.json +1 -1
@@ -4,6 +4,7 @@ interface TableHeaderProps {
4
4
  info: RenderInfo;
5
5
  theaderPosition?: 'left' | 'center' | 'right';
6
6
  rowCount?: number;
7
+ stickyRightOffset?: number;
7
8
  }
8
- export default function TableHeader({ info, theaderPosition, rowCount: _rowCount }: TableHeaderProps): JSX.Element;
9
+ export default function TableHeader({ info, theaderPosition, rowCount: _rowCount, stickyRightOffset }: TableHeaderProps): JSX.Element;
9
10
  export {};
@@ -228,7 +228,8 @@ export default function TableHeader(_ref2) {
228
228
 
229
229
  var info = _ref2.info,
230
230
  theaderPosition = _ref2.theaderPosition,
231
- _rowCount = _ref2.rowCount;
231
+ _rowCount = _ref2.rowCount,
232
+ stickyRightOffset = _ref2.stickyRightOffset;
232
233
 
233
234
  var nested = info.nested,
234
235
  flat = _flatInstanceProperty(info),
@@ -275,7 +276,8 @@ export default function TableHeader(_ref2) {
275
276
  positionStyle.left = stickyLeftMap.get(colIndex);
276
277
  } else if (colIndex >= fullFlatCount - rightFlatCount) {
277
278
  positionStyle.position = 'sticky';
278
- positionStyle.right = stickyRightMap.get(colIndex);
279
+ var stickyRightIndex = colSpan > 1 ? colIndex + colSpan - 1 : colIndex;
280
+ positionStyle.right = stickyRightMap.get(stickyRightIndex) + stickyRightOffset;
279
281
  }
280
282
 
281
283
  var justifyContent = col.align === 'right' ? 'flex-end' : col.align === 'center' ? 'center' : 'flex-start';
@@ -94,7 +94,9 @@ export var TableDOMHelper = /*#__PURE__*/function () {
94
94
 
95
95
  var stickyScrollSelector = _concatInstanceProperty(_context2 = _concatInstanceProperty(_context3 = ".".concat(Classes.artTable, " + .")).call(_context3, Classes.horizontalStickyScrollContainer, " .")).call(_context2, Classes.stickyScroll);
96
96
 
97
- this.stickyScroll = artTableWrapper.querySelector(stickyScrollSelector);
97
+ var stickyScrolls = artTableWrapper.querySelectorAll(stickyScrollSelector);
98
+ this.stickyScroll = stickyScrolls[stickyScrolls.length - 1]; // 当嵌套多层表格时,需要查找最后一个,否则会查找到父表格内嵌套的子表格的
99
+
98
100
  this.stickyScrollItem = this.stickyScroll.querySelector(".".concat(Classes.stickyScrollItem));
99
101
  }
100
102
 
@@ -164,7 +164,8 @@ function getScrollParent(elem) {
164
164
 
165
165
 
166
166
  export function getRichVisibleRectsStream(target, structureMayChange$, virtualDebugLabel) {
167
- return structureMayChange$.pipe(op.startWith('init'), op.map(function () {
167
+ return structureMayChange$.pipe(op.mapTo(target), op.distinctUntilChanged(shallowEqual), // 当target没有发生变化时,无需重新查找
168
+ op.startWith('init'), op.map(function () {
168
169
  // target 的第一个滚动父元素,我们认为这就是虚拟滚动发生的地方
169
170
  // 即虚拟滚动不考虑「更上层元素发生滚动」的情况
170
171
  // 直接从父元素开始查找,防止自身设置overflow属性导致是同一个元素
@@ -124,7 +124,7 @@ export function HtmlTable(_ref) {
124
124
  positionStyle.left = hozInfo.stickyLeftMap.get(colIndex);
125
125
  } else if (colIndex >= fullFlatCount - rightFlatCount) {
126
126
  positionStyle.position = 'sticky';
127
- positionStyle.right = hozInfo.stickyRightMap.get(colIndex) - (typeof stickyRightOffset === 'number' ? stickyRightOffset : 0);
127
+ positionStyle.right = hozInfo.stickyRightMap.get(colIndex) + (typeof stickyRightOffset === 'number' ? stickyRightOffset : 0);
128
128
  }
129
129
 
130
130
  return /*#__PURE__*/React.createElement('td', _extends(_extends(_extends(_extends({
@@ -19,7 +19,7 @@ import { getTreeDepth, browserType } from '../utils';
19
19
  import TableHeader from './header';
20
20
  var TEMPLATES = new _Map();
21
21
 
22
- function renderTableHeaderInIE(info, props) {
22
+ function renderTableHeaderInIE(info, props, extra) {
23
23
  var stickyTop = props.stickyTop,
24
24
  hasHeader = props.hasHeader;
25
25
 
@@ -34,6 +34,9 @@ function renderTableHeaderInIE(info, props) {
34
34
  rightNested = nested.right,
35
35
  full = nested.full;
36
36
  var rowCount = getTreeDepth(full) + 1;
37
+ var fixedRightTableStyle = {
38
+ right: (extra === null || extra === void 0 ? void 0 : extra.stickyRightOffset) || 0
39
+ };
37
40
  return /*#__PURE__*/React.createElement("div", {
38
41
  className: cx(Classes.tableHeader)
39
42
  }, /*#__PURE__*/React.createElement("div", {
@@ -45,6 +48,11 @@ function renderTableHeaderInIE(info, props) {
45
48
  }, /*#__PURE__*/React.createElement(TableHeader, {
46
49
  info: info,
47
50
  theaderPosition: hasLockColumn ? 'center' : undefined
51
+ }), /*#__PURE__*/React.createElement("div", {
52
+ className: Classes.verticalScrollPlaceholder,
53
+ style: typeof (extra === null || extra === void 0 ? void 0 : extra.stickyRightOffset) === 'number' ? {
54
+ width: extra === null || extra === void 0 ? void 0 : extra.stickyRightOffset
55
+ } : undefined
48
56
  })), left.length > 0 ? /*#__PURE__*/React.createElement("div", {
49
57
  className: Classes.fixedLeft
50
58
  }, /*#__PURE__*/React.createElement(TableHeader, {
@@ -72,7 +80,8 @@ function renderTableHeaderInIE(info, props) {
72
80
  theaderPosition: "left",
73
81
  rowCount: rowCount
74
82
  })) : null, right.length > 0 ? /*#__PURE__*/React.createElement("div", {
75
- className: Classes.fixedRight
83
+ className: Classes.fixedRight,
84
+ style: fixedRightTableStyle
76
85
  }, /*#__PURE__*/React.createElement(TableHeader, {
77
86
  info: _extends(_extends({}, info), {
78
87
  flat: {
@@ -127,9 +136,6 @@ function renderTableBodyInIE(info, props, extra) {
127
136
  primaryKey: primaryKey,
128
137
  data: _sliceInstanceProperty(dataSource).call(dataSource, topIndex, bottomIndex)
129
138
  };
130
- var fixedRightTableStyle = {
131
- right: -extra.stickyRightOffset
132
- };
133
139
  return /*#__PURE__*/React.createElement("div", {
134
140
  className: cx(Classes.tableBody, Classes.horizontalScrollContainer)
135
141
  }, /*#__PURE__*/React.createElement("div", {
@@ -182,8 +188,7 @@ function renderTableBodyInIE(info, props, extra) {
182
188
  height: bottomBlank
183
189
  }
184
190
  })) : null, right.length > 0 ? /*#__PURE__*/React.createElement("div", {
185
- className: Classes.fixedRight,
186
- style: fixedRightTableStyle
191
+ className: Classes.fixedRight
187
192
  }, topBlank > 0 && /*#__PURE__*/React.createElement("div", {
188
193
  key: "top-blank",
189
194
  className: cx(Classes.virtualBlank, 'top'),
@@ -194,7 +199,6 @@ function renderTableBodyInIE(info, props, extra) {
194
199
  tbodyHtmlTag: "tbody"
195
200
  }, commonProps, {
196
201
  tbodyPosition: "right",
197
- stickyRightOffset: extra.stickyRightOffset,
198
202
  horizontalRenderInfo: _extends(_extends({}, info), {
199
203
  flat: {
200
204
  center: right,
@@ -243,6 +247,9 @@ function renderTableFooterInIE(info, props, extra) {
243
247
  primaryKey: primaryKey,
244
248
  verticalRenderInfo: verticalRenderInfo
245
249
  };
250
+ var fixedRightTableStyle = {
251
+ right: (extra === null || extra === void 0 ? void 0 : extra.stickyRightOffset) || 0
252
+ };
246
253
  return /*#__PURE__*/React.createElement("div", {
247
254
  className: cx(Classes.tableFooter),
248
255
  style: {
@@ -255,7 +262,13 @@ function renderTableFooterInIE(info, props, extra) {
255
262
  }, commonProps, {
256
263
  tbodyPosition: hasLockColumn ? 'center' : undefined,
257
264
  horizontalRenderInfo: info
258
- }))), left.length > 0 ? /*#__PURE__*/React.createElement("div", {
265
+ })), footerDataSource.length > 0 ? /*#__PURE__*/React.createElement("div", {
266
+ className: Classes.verticalScrollPlaceholder,
267
+ style: typeof (extra === null || extra === void 0 ? void 0 : extra.stickyRightOffset) === 'number' ? {
268
+ width: extra === null || extra === void 0 ? void 0 : extra.stickyRightOffset,
269
+ visibility: 'initial'
270
+ } : undefined
271
+ }) : null), left.length > 0 ? /*#__PURE__*/React.createElement("div", {
259
272
  className: Classes.fixedLeft
260
273
  }, /*#__PURE__*/React.createElement(HtmlTable, _extends({
261
274
  tbodyHtmlTag: "tfoot"
@@ -271,7 +284,8 @@ function renderTableFooterInIE(info, props, extra) {
271
284
  visible: _sliceInstanceProperty(visible).call(visible, 0, left.length)
272
285
  })
273
286
  }))) : null, right.length > 0 ? /*#__PURE__*/React.createElement("div", {
274
- className: Classes.fixedRight
287
+ className: Classes.fixedRight,
288
+ style: fixedRightTableStyle
275
289
  }, /*#__PURE__*/React.createElement(HtmlTable, _extends({
276
290
  tbodyHtmlTag: "tfoot"
277
291
  }, commonProps, {
@@ -70,6 +70,13 @@ export declare const Classes: {
70
70
  readonly popup: string;
71
71
  readonly popupHeader: string;
72
72
  readonly popupBody: string;
73
+ readonly rowDragging: string;
74
+ readonly rowDragStart: string;
75
+ readonly rowDragEnd: string;
76
+ readonly rowDragEndToTop: string;
77
+ readonly rowDragEndToBottom: string;
78
+ readonly rowDragElement: string;
79
+ readonly rowDragCell: string;
73
80
  };
74
81
  export declare const MenuClasses: {
75
82
  menu: string;
@@ -82,7 +82,14 @@ export var Classes = {
82
82
  collapsed: "".concat(prefix, "collapsed"),
83
83
  popup: "".concat(prefix, "popup"),
84
84
  popupHeader: "".concat(prefix, "popup-header"),
85
- popupBody: "".concat(prefix, "popup-body")
85
+ popupBody: "".concat(prefix, "popup-body"),
86
+ rowDragging: "".concat(prefix, "row-dragging"),
87
+ rowDragStart: "".concat(prefix, "row-drag-start"),
88
+ rowDragEnd: "".concat(prefix, "row-drag-end"),
89
+ rowDragEndToTop: "".concat(prefix, "row-drag-end-to-top"),
90
+ rowDragEndToBottom: "".concat(prefix, "row-drag-end-to-bottom"),
91
+ rowDragElement: "".concat(prefix, "row-drag-element"),
92
+ rowDragCell: "".concat(prefix, "row-drag-cell")
86
93
  };
87
94
  export var MenuClasses = {
88
95
  menu: "".concat(prefix, "table-menu"),
@@ -134,7 +141,7 @@ export var defaultCSSVariables = {
134
141
  export var variableConst = getCssVariableText(defaultCSSVariables);
135
142
  var notBorderedStyleMixin = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n --cell-border-vertical: none;\n --header-cell-border-vertical: none;\n"])));
136
143
  var borderedStyleMixin = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n //th\u9690\u85CF\u5217\u5BBD\u62D6\u62FD\u7684\u80CC\u666F\u8272\uFF0C\u4F7F\u7528th\u7684\u53F3\u8FB9\u6846\u4EE3\u66FF\n .", "::after{\n background-color: inherit;\n }\n"])), Classes.tableHeaderCellResize);
137
- export var StyledArtTableWrapper = styled.div(_templateObject4 || (_templateObject4 = _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 // \u8868\u683C\u4E0D\u542F\u7528\u8FB9\u6846\u7EBF\uFF0C\u9690\u85CFth\u3001td\u7684\u5355\u5143\u683C\u5DE6\u53F3\u8FB9\u6846\u7EBF\n &:not(.", ") {\n ", "\n }\n &.", "{\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: var(--header-cell-border-vertical)\n }\n\n th.", " {\n border-right: var(--header-cell-border-vertical);\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 display:flex;\n background: var(--bgcolor);\n }\n .", "{\n height: 1px;\n flex-shrink: 0;\n border-top: 1px solid var(--border-color);\n }\n\n .", "{\n height: 1px;\n flex-shrink: 0;\n border-top: 1px solid var(--border-color);\n }\n .", " {\n overflow-y: hidden;\n overflow-x: auto;\n z-index: ", ";\n flex-shrink: 1;\n flex-grow: 0;\n border-top: 1px solid var(--border-color);\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 &:focus {\n outline: none\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 .", " {\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\n //#region \u62D6\u62FD\u5217\u5BBD\u5927\u5C0F\n .", "::after{\n background-color: var(--border-color);\n }\n //\u89E3\u51B3\u90E8\u5206\u6D4F\u89C8\u5668(chrome109)\u6700\u540E\u4E00\u4E2A\u5355\u5143\u683C\u7684\u5217\u5BBD\u62D6\u62FD\u533A\u57DF\u7EDD\u5BF9\u5B9A\u4F4D\u8D85\u51FA\u8868\u683C\uFF0C\u5BFC\u81F4\u8868\u683C\u7AD6\u5206\u5272\u7EBF\u65E0\u6CD5\u5BF9\u9F50\n .", " th.", " .", "{\n right: 0;\n width: 5px;\n &::after{\n left: 4px;\n }\n }\n //#endregion\n\n "])), variableConst, variableConst, outerBorderStyleMixin, Classes.artTableBordered, notBorderedStyleMixin, Classes.artTableBordered, borderedStyleMixin, 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.horizontalStickyScrollContainer, Classes.horizontalScrollLeftSpacer, Classes.horizontalScrollRightSpacer, Classes.stickyScroll, Z.scrollItem, Classes.stickyScrollItem, Classes.loadingWrapper, Classes.loadingContentWrapper, Classes.loadingIndicatorWrapper, Classes.loadingIndicator, Z.loadingIndicator, Classes.tableFilterTrigger, Classes.tableSortIcon, Classes.tableExtendIcon, Classes.verticalScrollPlaceholder, Classes.tableFooter, Classes.verticalScrollPlaceholder, Classes.tableHeaderCellResize, Classes.tableHeaderRow, Classes.last, Classes.tableHeaderCellResize);
144
+ export var StyledArtTableWrapper = styled.div(_templateObject4 || (_templateObject4 = _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 // \u8868\u683C\u4E0D\u542F\u7528\u8FB9\u6846\u7EBF\uFF0C\u9690\u85CFth\u3001td\u7684\u5355\u5143\u683C\u5DE6\u53F3\u8FB9\u6846\u7EBF\n &:not(.", ") {\n ", "\n }\n &.", "{\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 user-select:none;\n .", " .", " >td{\n cursor:move;\n }\n\n .", " .", " >td{\n cursor:no-drop;\n }\n \n }\n\n .", "{\n opacity: 0.5;\n }\n\n\n .", " td{\n border-top: 1px solid var(--primary-color) !important;\n }\n\n .", " td{\n border-bottom: 1px solid var(--primary-color) !important;\n \n }\n\n .", " {\n cursor:pointer;\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: var(--header-cell-border-vertical)\n }\n\n th.", " {\n border-right: var(--header-cell-border-vertical);\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 display: flex;\n }\n .", " {\n position: relative;\n }\n\n .", " {\n display: flex;\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 display:flex;\n background: var(--bgcolor);\n }\n .", "{\n height: 1px;\n flex-shrink: 0;\n border-top: 1px solid var(--border-color);\n }\n\n .", "{\n height: 1px;\n flex-shrink: 0;\n border-top: 1px solid var(--border-color);\n }\n .", " {\n overflow-y: hidden;\n overflow-x: auto;\n z-index: ", ";\n flex-shrink: 1;\n flex-grow: 0;\n border-top: 1px solid var(--border-color);\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 &:focus {\n outline: none\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 .", " {\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\n //#region \u62D6\u62FD\u5217\u5BBD\u5927\u5C0F\n .", "::after{\n background-color: var(--border-color);\n }\n //\u89E3\u51B3\u90E8\u5206\u6D4F\u89C8\u5668(chrome109)\u6700\u540E\u4E00\u4E2A\u5355\u5143\u683C\u7684\u5217\u5BBD\u62D6\u62FD\u533A\u57DF\u7EDD\u5BF9\u5B9A\u4F4D\u8D85\u51FA\u8868\u683C\uFF0C\u5BFC\u81F4\u8868\u683C\u7AD6\u5206\u5272\u7EBF\u65E0\u6CD5\u5BF9\u9F50\n .", " th.", " .", "{\n right: 0;\n width: 5px;\n &::after{\n left: 4px;\n }\n }\n //#endregion\n\n "])), variableConst, variableConst, outerBorderStyleMixin, Classes.artTableBordered, notBorderedStyleMixin, Classes.artTableBordered, borderedStyleMixin, 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.rowDragging, Classes.tableBody, Classes.tableRow, Classes.tableFooter, Classes.tableRow, Classes.rowDragStart, Classes.rowDragEndToTop, Classes.rowDragEndToBottom, Classes.rowDragCell, 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.horizontalStickyScrollContainer, Classes.horizontalScrollLeftSpacer, Classes.horizontalScrollRightSpacer, Classes.stickyScroll, Z.scrollItem, Classes.stickyScrollItem, Classes.loadingWrapper, Classes.loadingContentWrapper, Classes.loadingIndicatorWrapper, Classes.loadingIndicator, Z.loadingIndicator, Classes.tableFilterTrigger, Classes.tableSortIcon, Classes.tableExtendIcon, Classes.verticalScrollPlaceholder, Classes.tableFooter, Classes.verticalScrollPlaceholder, Classes.tableHeaderCellResize, Classes.tableHeaderRow, Classes.last, Classes.tableHeaderCellResize);
138
145
  export var ButtonCSS = css(_templateObject5 || (_templateObject5 = _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);
139
146
 
140
147
  function getCssVariableText(obj) {
@@ -130,11 +130,11 @@ export declare class BaseTable extends React.Component<BaseTableProps, BaseTable
130
130
  private artTableWrapperRef;
131
131
  private domHelper;
132
132
  private rootSubscription;
133
+ private resizeSubject;
133
134
  private lastInfo;
134
135
  private props$;
135
136
  private hasScrollY;
136
137
  private resizeObserver?;
137
- private resizeSubject;
138
138
  private offsetY;
139
139
  /** @deprecated BaseTable.getDoms() 已经过时,请勿调用 */
140
140
  getDoms(): TableDOMHelper;
@@ -154,6 +154,7 @@ export declare class BaseTable extends React.Component<BaseTableProps, BaseTable
154
154
  private renderLockShadows;
155
155
  private renderStickyScroll;
156
156
  private getScrollBarWidth;
157
+ private getStickyScrollContainerStyle;
157
158
  render(): JSX.Element;
158
159
  componentDidMount(): void;
159
160
  componentDidUpdate(prevProps: Readonly<BaseTableProps>, prevState: Readonly<BaseTableState>): void;
@@ -63,9 +63,7 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
63
63
  _this = _super.call(this, props);
64
64
  _this.rowHeightManager = makeRowHeightManager(_this.props.dataSource.length, _this.props.estimatedRowHeight);
65
65
  _this.artTableWrapperRef = /*#__PURE__*/React.createRef();
66
- _this.rootSubscription = new Subscription();
67
66
  _this.hasScrollY = false;
68
- _this.resizeSubject = new Subject();
69
67
  _this.offsetY = 0;
70
68
 
71
69
  _this.handleRowMouseEnter = function (e) {
@@ -132,7 +130,6 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
132
130
  bottomBlank = _info$verticalRenderR.bottomBlank,
133
131
  topBlank = _info$verticalRenderR.topBlank,
134
132
  bottomIndex = _info$verticalRenderR.bottomIndex;
135
- var stickyRightOffset = _this.hasScrollY ? _this.getScrollBarWidth() : 0;
136
133
  var renderBody = getTableRenderTemplate('body');
137
134
 
138
135
  if (typeof renderBody === 'function') {
@@ -140,8 +137,7 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
140
137
  rowProps: {
141
138
  onMouseEnter: _this.handleRowMouseEnter,
142
139
  onMouseLeave: _this.handleRowMouseLeave
143
- },
144
- stickyRightOffset: stickyRightOffset
140
+ }
145
141
  });
146
142
  }
147
143
 
@@ -162,7 +158,6 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
162
158
  getRowProps: getRowProps,
163
159
  primaryKey: primaryKey,
164
160
  data: _sliceInstanceProperty(dataSource).call(dataSource, topIndex, bottomIndex),
165
- stickyRightOffset: stickyRightOffset,
166
161
  horizontalRenderInfo: info,
167
162
  verticalRenderInfo: {
168
163
  first: 0,
@@ -222,6 +217,9 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
222
217
  var tableBodyHtmlTable = this.domHelper.getTableBodyHtmlTable();
223
218
  var innerTableWidth = tableBodyHtmlTable.offsetWidth;
224
219
  var artTableWidth = artTable.offsetWidth;
220
+ var artTableHeight = artTable.offsetHeight; // 表格隐藏后,不需要对表格的滚动条做额外的逻辑处理
221
+
222
+ if (artTableWidth === 0 && artTableHeight === 0) return;
225
223
  var stickyScrollHeightProp = this.props.stickyScrollHeight;
226
224
  var stickyScrollHeight = stickyScrollHeightProp === 'auto' ? this.getScrollBarWidth() : stickyScrollHeightProp; // stickyScroll.style.marginTop = `-${stickyScrollHeight + 1}px`
227
225
  // 设置滚动条高度
@@ -251,10 +249,10 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
251
249
  // }
252
250
  this.hasScrollY = true;
253
251
  } else {
254
- stickyScroll.style.paddingRight = "".concat(stickyScrollHeight, "px"); // this.setState({
252
+ // stickyScroll.style.paddingRight = `${stickyScrollHeight}px`
253
+ // this.setState({
255
254
  // hasScrollY: false
256
255
  // })
257
-
258
256
  this.hasScrollY = false;
259
257
  }
260
258
 
@@ -265,9 +263,10 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
265
263
  var _this$lastInfo = this.lastInfo,
266
264
  leftLockTotalWidth = _this$lastInfo.leftLockTotalWidth,
267
265
  rightLockTotalWidth = _this$lastInfo.rightLockTotalWidth;
268
- var lockTotalWidth = leftLockTotalWidth + rightLockTotalWidth; // 设置子节点宽度
266
+ var lockTotalWidth = leftLockTotalWidth + rightLockTotalWidth;
267
+ var stickyRightOffset = this.hasScrollY ? this.getScrollBarWidth() : 0; // 设置子节点宽度
269
268
 
270
- stickyScrollItem.style.width = "".concat(innerTableWidth - lockTotalWidth, "px");
269
+ stickyScrollItem.style.width = "".concat(innerTableWidth - lockTotalWidth + stickyRightOffset, "px");
271
270
  }
272
271
  }, {
273
272
  key: "renderTableHeader",
@@ -276,9 +275,12 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
276
275
  stickyTop = _this$props3.stickyTop,
277
276
  hasHeader = _this$props3.hasHeader;
278
277
  var renderHeader = getTableRenderTemplate('header');
278
+ var stickyRightOffset = this.hasScrollY ? this.getScrollBarWidth() : 0;
279
279
 
280
280
  if (typeof renderHeader === 'function') {
281
- return renderHeader(info, this.props);
281
+ return renderHeader(info, this.props, {
282
+ stickyRightOffset: stickyRightOffset
283
+ });
282
284
  }
283
285
 
284
286
  return /*#__PURE__*/React.createElement("div", {
@@ -288,7 +290,8 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
288
290
  display: hasHeader ? undefined : 'none'
289
291
  }
290
292
  }, /*#__PURE__*/React.createElement(TableHeader, {
291
- info: info
293
+ info: info,
294
+ stickyRightOffset: stickyRightOffset
292
295
  }), /*#__PURE__*/React.createElement("div", {
293
296
  className: Classes.verticalScrollPlaceholder,
294
297
  style: this.hasScrollY ? {
@@ -370,6 +373,7 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
370
373
  getRowProps = _this$props4.getRowProps,
371
374
  primaryKey = _this$props4.primaryKey,
372
375
  stickyBottom = _this$props4.stickyBottom;
376
+ var stickyRightOffset = this.hasScrollY ? this.getScrollBarWidth() : 0;
373
377
  var renderFooter = getTableRenderTemplate('footer');
374
378
 
375
379
  if (typeof renderFooter === 'function') {
@@ -377,7 +381,8 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
377
381
  rowProps: {
378
382
  onMouseEnter: this.handleRowMouseEnter,
379
383
  onMouseLeave: this.handleRowMouseLeave
380
- }
384
+ },
385
+ stickyRightOffset: stickyRightOffset
381
386
  });
382
387
  }
383
388
 
@@ -391,6 +396,7 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
391
396
  data: footerDataSource,
392
397
  horizontalRenderInfo: info,
393
398
  getRowProps: getRowProps,
399
+ stickyRightOffset: stickyRightOffset,
394
400
  primaryKey: primaryKey,
395
401
  verticalRenderInfo: {
396
402
  offset: 0,
@@ -409,7 +415,8 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
409
415
  }, {
410
416
  key: "renderLockShadows",
411
417
  value: function renderLockShadows(info) {
412
- // console.log('render LockShadows')
418
+ var stickyRightOffset = this.hasScrollY ? this.getScrollBarWidth() : 0; // console.log('render LockShadows')
419
+
413
420
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
414
421
  className: Classes.lockShadowMask,
415
422
  style: {
@@ -422,7 +429,7 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
422
429
  className: Classes.lockShadowMask,
423
430
  style: {
424
431
  right: 0,
425
- width: info.rightLockTotalWidth + LOCK_SHADOW_PADDING
432
+ width: info.rightLockTotalWidth + LOCK_SHADOW_PADDING + stickyRightOffset
426
433
  }
427
434
  }, /*#__PURE__*/React.createElement("div", {
428
435
  className: cx(Classes.lockShadow, Classes.rightLockShadow)
@@ -436,17 +443,21 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
436
443
  hasStickyScroll = _this$props5.hasStickyScroll,
437
444
  stickyBottom = _this$props5.stickyBottom;
438
445
  var hasScroll = this.state.hasScroll;
446
+ var isScroll = hasStickyScroll && hasScroll;
447
+ var stickyScrollContainerStyle = this.getStickyScrollContainerStyle();
439
448
  return /*#__PURE__*/React.createElement("div", {
440
- className: cx(Classes.horizontalScrollContainer, Classes.horizontalStickyScrollContainer)
449
+ className: cx(Classes.horizontalScrollContainer, Classes.horizontalStickyScrollContainer),
450
+ style: stickyScrollContainerStyle
441
451
  }, /*#__PURE__*/React.createElement("div", {
442
452
  className: cx(Classes.horizontalScrollLeftSpacer),
443
453
  style: {
444
- width: info.leftLockTotalWidth
454
+ width: info.leftLockTotalWidth,
455
+ display: isScroll ? 'block' : 'none'
445
456
  }
446
457
  }), /*#__PURE__*/React.createElement("div", {
447
458
  className: cx(Classes.stickyScroll),
448
459
  style: {
449
- display: hasStickyScroll && hasScroll ? 'block' : 'none',
460
+ display: isScroll ? 'block' : 'none',
450
461
  bottom: stickyBottom
451
462
  }
452
463
  }, /*#__PURE__*/React.createElement("div", {
@@ -454,7 +465,8 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
454
465
  })), /*#__PURE__*/React.createElement("div", {
455
466
  className: cx(Classes.horizontalScrollRightSpacer),
456
467
  style: {
457
- width: info.rightLockTotalWidth
468
+ width: info.rightLockTotalWidth,
469
+ display: isScroll ? 'block' : 'none'
458
470
  }
459
471
  }));
460
472
  }
@@ -463,6 +475,22 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
463
475
  value: function getScrollBarWidth() {
464
476
  return this.props.scrollbarWidth || getScrollbarSize().width;
465
477
  }
478
+ }, {
479
+ key: "getStickyScrollContainerStyle",
480
+ value: function getStickyScrollContainerStyle() {
481
+ var _this$props6 = this.props,
482
+ hasStickyScroll = _this$props6.hasStickyScroll,
483
+ stickyScrollHeight = _this$props6.stickyScrollHeight;
484
+ var hasScroll = this.state.hasScroll;
485
+ var isScroll = hasStickyScroll && hasScroll;
486
+ var height = stickyScrollHeight === 'auto' ? this.getScrollBarWidth() : stickyScrollHeight;
487
+ var stickyHeight = isScroll ? height : 0;
488
+ return {
489
+ height: stickyHeight,
490
+ maxHeight: stickyHeight,
491
+ minHeight: stickyHeight
492
+ };
493
+ }
466
494
  }, {
467
495
  key: "render",
468
496
  value: function render() {
@@ -471,20 +499,20 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
471
499
  // console.log('render table')
472
500
  var info = calculateRenderInfo(this);
473
501
  this.lastInfo = info;
474
- var _this$props6 = this.props,
475
- dataSource = _this$props6.dataSource,
476
- className = _this$props6.className,
477
- style = _this$props6.style,
478
- hasHeader = _this$props6.hasHeader,
479
- useOuterBorder = _this$props6.useOuterBorder,
480
- isStickyHead = _this$props6.isStickyHead,
481
- isStickyHeader = _this$props6.isStickyHeader,
482
- isStickyFooter = _this$props6.isStickyFooter,
483
- isLoading = _this$props6.isLoading,
484
- getTableProps = _this$props6.getTableProps,
485
- footerDataSource = _this$props6.footerDataSource,
486
- components = _this$props6.components,
487
- bordered = _this$props6.bordered;
502
+ var _this$props7 = this.props,
503
+ dataSource = _this$props7.dataSource,
504
+ className = _this$props7.className,
505
+ style = _this$props7.style,
506
+ hasHeader = _this$props7.hasHeader,
507
+ useOuterBorder = _this$props7.useOuterBorder,
508
+ isStickyHead = _this$props7.isStickyHead,
509
+ isStickyHeader = _this$props7.isStickyHeader,
510
+ isStickyFooter = _this$props7.isStickyFooter,
511
+ isLoading = _this$props7.isLoading,
512
+ getTableProps = _this$props7.getTableProps,
513
+ footerDataSource = _this$props7.footerDataSource,
514
+ components = _this$props7.components,
515
+ bordered = _this$props7.bordered;
488
516
  var artTableWrapperClassName = cx(Classes.artTableWrapper, (_cx = {
489
517
  'use-outer-border': useOuterBorder,
490
518
  empty: dataSource.length === 0,
@@ -512,20 +540,19 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
512
540
  }, {
513
541
  key: "componentDidMount",
514
542
  value: function componentDidMount() {
515
- var _a, _b, _c, _d, _e, _f; // console.log('did mount start')
516
- // console.log('update dom helper start')
517
-
518
-
519
- this.updateDOMHelper(); // console.log('update dom helper end')
543
+ var _a, _b, _c, _d, _e, _f;
520
544
 
545
+ this.rootSubscription = new Subscription();
546
+ this.resizeSubject = new Subject();
547
+ this.updateDOMHelper();
521
548
  this.props$ = new BehaviorSubject(this.props);
522
549
  this.initSubscriptions();
523
550
  this.didMountOrUpdate(); // console.log('did mount end')
524
551
 
525
- var _this$props7 = this.props,
526
- cssVariables = _this$props7.cssVariables,
527
- enableCSSVariables = _this$props7.enableCSSVariables,
528
- bordered = _this$props7.bordered;
552
+ var _this$props8 = this.props,
553
+ cssVariables = _this$props8.cssVariables,
554
+ enableCSSVariables = _this$props8.enableCSSVariables,
555
+ bordered = _this$props8.bordered;
529
556
  cssPolifill({
530
557
  variables: cssVariables || {},
531
558
  enableCSSVariables: enableCSSVariables,
@@ -541,10 +568,10 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
541
568
  var _a; // console.log('did update start')
542
569
 
543
570
 
544
- var _this$props8 = this.props,
545
- cssVariables = _this$props8.cssVariables,
546
- enableCSSVariables = _this$props8.enableCSSVariables,
547
- bordered = _this$props8.bordered;
571
+ var _this$props9 = this.props,
572
+ cssVariables = _this$props9.cssVariables,
573
+ enableCSSVariables = _this$props9.enableCSSVariables,
574
+ bordered = _this$props9.bordered;
548
575
 
549
576
  if (!shallowEqual(prevProps === null || prevProps === void 0 ? void 0 : prevProps.cssVariables, (_a = this.props) === null || _a === void 0 ? void 0 : _a.cssVariables)) {
550
577
  cssPolifill({
@@ -133,7 +133,9 @@ function getColumnWidthSum(pipeline) {
133
133
  }
134
134
 
135
135
  function getTableRemainingWidth(pipeline) {
136
- var tableWidth = pipeline.getStateAtKey(tableWidthKey);
136
+ var _a, _b;
137
+
138
+ var tableWidth = ((_b = (_a = pipeline.ref.current.domHelper) === null || _a === void 0 ? void 0 : _a.tableBody) === null || _b === void 0 ? void 0 : _b.clientWidth) || pipeline.getStateAtKey(tableWidthKey);
137
139
  if (!tableWidth) return;
138
140
  var remainingWidth = Math.floor(tableWidth - getColumnWidthSum(pipeline));
139
141
  return remainingWidth > 0 ? remainingWidth : 0;
@@ -2,7 +2,7 @@ import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
2
2
  import _extends from "@babel/runtime-corejs3/helpers/extends";
3
3
  import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
4
4
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
5
- import { makeRecursiveMapper, mergeCellProps, collectNodes, isLeafNode } from '../../utils';
5
+ import { makeRecursiveMapper, mergeCellProps, collectNodes, isLeafNode, isSelectColumn } from '../../utils';
6
6
  import { FILL_COLUMN_CODE } from './autoFill';
7
7
  var stateKey = 'columnDrag';
8
8
  var SCROLL_SIZE = 30;
@@ -315,9 +315,13 @@ export function columnDrag() {
315
315
  if (onColumnDragStopped) {
316
316
  var _context;
317
317
 
318
- var newColumns = _filterInstanceProperty(_context = sortColumns(columns, cloumnsSortData)).call(_context, function (_ref) {
319
- var code = _ref.code;
320
- return code !== FILL_COLUMN_CODE;
318
+ var isRowDragColumn = function isRowDragColumn(code) {
319
+ var rowDragColumnKey = pipeline.getFeatureOptions('rowDragColumnKey');
320
+ return code === rowDragColumnKey;
321
+ };
322
+
323
+ var newColumns = _filterInstanceProperty(_context = sortColumns(columns, cloumnsSortData)).call(_context, function (column) {
324
+ return column.code !== FILL_COLUMN_CODE && !isRowDragColumn(column.code) && !isSelectColumn(column);
321
325
  }); // TODO drag需要在resize之后use,否则这里返回的列对应的宽度不是拖拽后的
322
326
 
323
327
 
@@ -343,9 +347,9 @@ export function columnDrag() {
343
347
  };
344
348
  }
345
349
 
346
- function enableMove(_ref2) {
347
- var lock = _ref2.lock,
348
- code = _ref2.code;
350
+ function enableMove(_ref) {
351
+ var lock = _ref.lock,
352
+ code = _ref.code;
349
353
  return code && code !== FILL_COLUMN_CODE && !lock;
350
354
  }
351
355
 
@@ -88,7 +88,7 @@ export function filter() {
88
88
  var colFilterIcon = (_f = (_e = col.features) === null || _e === void 0 ? void 0 : _e.filterIcon) !== null && _f !== void 0 ? _f : filterIcon;
89
89
 
90
90
  var _Filter = /*#__PURE__*/React.createElement(Filter, {
91
- key: "filter",
91
+ key: "".concat(col.code, "_filter"),
92
92
  FilterPanelContent: filterPanel,
93
93
  filterIcon: colFilterIcon,
94
94
  filterModel: inputFiltersMap.get(col.code),
@@ -18,3 +18,4 @@ export { rangeSelection, RangeSelectionFeatureOptions } from './rangeSelection';
18
18
  export { mergeCellHover } from './mergeCellHover';
19
19
  export { footerDataSource, FooterDataSourceFeatureOptions, footerRowMetaSymbol } from './footerDataSource';
20
20
  export { colGroupExtendable, colGroupExtendOption } from './colGroupExtendable';
21
+ export { rowDrag, RowDragFeatureOptions } from './rowDrag';
@@ -17,4 +17,5 @@ export { filter } from './columnFilter';
17
17
  export { rangeSelection } from './rangeSelection';
18
18
  export { mergeCellHover } from './mergeCellHover';
19
19
  export { footerDataSource, footerRowMetaSymbol } from './footerDataSource';
20
- export { colGroupExtendable } from './colGroupExtendable';
20
+ export { colGroupExtendable } from './colGroupExtendable';
21
+ export { rowDrag } from './rowDrag';