@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
@@ -2,11 +2,10 @@ import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instan
2
2
  import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
3
3
  import _Symbol from "@babel/runtime-corejs3/core-js-stable/symbol";
4
4
  import _getIteratorMethod from "@babel/runtime-corejs3/core-js/get-iterator-method";
5
- import _getIterator from "@babel/runtime-corejs3/core-js/get-iterator";
6
5
  import _extends from "@babel/runtime-corejs3/helpers/extends";
7
6
  import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
8
7
 
9
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof _Symbol === "undefined" || _getIteratorMethod(o) == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = _getIterator(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
8
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
10
9
 
11
10
  function _unsupportedIterableToArray(o, minLen) { var _context; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
11
 
@@ -1,6 +1,5 @@
1
1
  import _Number$isNaN from "@babel/runtime-corejs3/core-js-stable/number/is-nan";
2
2
  import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
3
- import _reduceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/reduce";
4
3
  import _fillInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/fill";
5
4
 
6
5
  /**
@@ -131,13 +130,13 @@ export function serialization(strNumber) {
131
130
  } // 根据整数精度和小数精度获取最大值
132
131
 
133
132
  export function getMaxNumberByPrecision(integerPrecision, decimalPrecision) {
134
- var _context2, _context3, _context4, _context5;
133
+ var _context2, _context3;
135
134
 
136
- var integerString = _reduceInstanceProperty(_context2 = _fillInstanceProperty(_context3 = Array(integerPrecision)).call(_context3, '9')).call(_context2, function (res, value) {
135
+ var integerString = _fillInstanceProperty(_context2 = Array(integerPrecision)).call(_context2, '9').reduce(function (res, value) {
137
136
  return res += value;
138
137
  }, '');
139
138
 
140
- return decimalPrecision <= 0 ? Number(integerString) : Number(_reduceInstanceProperty(_context4 = _fillInstanceProperty(_context5 = Array(decimalPrecision)).call(_context5, '9')).call(_context4, function (res, value) {
139
+ return decimalPrecision <= 0 ? Number(integerString) : Number(_fillInstanceProperty(_context3 = Array(decimalPrecision)).call(_context3, '9').reduce(function (res, value) {
141
140
  return res += value;
142
141
  }, integerString + '.'));
143
142
  }
@@ -3,7 +3,7 @@ import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
3
3
  import _classCallCheck from "@babel/runtime-corejs3/helpers/classCallCheck";
4
4
  import _createClass from "@babel/runtime-corejs3/helpers/createClass";
5
5
 
6
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof _Symbol === "undefined" || _getIteratorMethod(o) == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = _getIterator(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
6
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
7
7
 
8
8
  function _unsupportedIterableToArray(o, minLen) { var _context2; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context2 = Object.prototype.toString.call(o)).call(_context2, 8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
9
9
 
@@ -14,7 +14,6 @@ import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instan
14
14
  import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
15
15
  import _Symbol from "@babel/runtime-corejs3/core-js-stable/symbol";
16
16
  import _getIteratorMethod from "@babel/runtime-corejs3/core-js/get-iterator-method";
17
- import _getIterator from "@babel/runtime-corejs3/core-js/get-iterator";
18
17
  import React from 'react';
19
18
  import zhCNData from './zh-CN';
20
19
 
@@ -1,7 +1,6 @@
1
1
  import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
2
2
  import _Symbol from "@babel/runtime-corejs3/core-js-stable/symbol";
3
3
  import _getIteratorMethod from "@babel/runtime-corejs3/core-js/get-iterator-method";
4
- import _getIterator from "@babel/runtime-corejs3/core-js/get-iterator";
5
4
  import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
6
5
  import _typeof from "@babel/runtime-corejs3/helpers/typeof";
7
6
  import _extends from "@babel/runtime-corejs3/helpers/extends";
@@ -12,7 +11,7 @@ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/insta
12
11
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
13
12
  import _Map from "@babel/runtime-corejs3/core-js-stable/map";
14
13
 
15
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof _Symbol === "undefined" || _getIteratorMethod(o) == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = _getIterator(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
14
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
16
15
 
17
16
  function _unsupportedIterableToArray(o, minLen) { var _context10; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context10 = Object.prototype.toString.call(o)).call(_context10, 8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
18
17
 
@@ -177,7 +176,7 @@ function getHorizontalRenderRange(_ref) {
177
176
  while (leftIndex + centerCount < flat.center.length) {
178
177
  var _col = flat.center[leftIndex + centerCount];
179
178
 
180
- if (_col.width + centerRenderWidth < minCenterRenderWidth) {
179
+ if (centerRenderWidth < minCenterRenderWidth) {
181
180
  centerRenderWidth += _col.width;
182
181
  centerCount += 1;
183
182
  } else {
@@ -1,5 +1,9 @@
1
1
  /// <reference types="react" />
2
2
  import { RenderInfo } from './interfaces';
3
- export default function TableHeader({ info }: {
3
+ interface TableHeaderProps {
4
4
  info: RenderInfo;
5
- }): JSX.Element;
5
+ theaderPosition?: 'left' | 'center' | 'right';
6
+ rowCount?: number;
7
+ }
8
+ export default function TableHeader({ info, theaderPosition, rowCount: _rowCount }: TableHeaderProps): JSX.Element;
9
+ export {};
@@ -1,15 +1,14 @@
1
- import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
2
- import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
3
- import _Symbol from "@babel/runtime-corejs3/core-js-stable/symbol";
4
- import _getIteratorMethod from "@babel/runtime-corejs3/core-js/get-iterator-method";
5
- import _getIterator from "@babel/runtime-corejs3/core-js/get-iterator";
6
1
  import _extends from "@babel/runtime-corejs3/helpers/extends";
7
2
  import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
8
3
  import _flatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/flat";
9
4
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
10
5
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
6
+ import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
7
+ import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
8
+ import _Symbol from "@babel/runtime-corejs3/core-js-stable/symbol";
9
+ import _getIteratorMethod from "@babel/runtime-corejs3/core-js/get-iterator-method";
11
10
 
12
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof _Symbol === "undefined" || _getIteratorMethod(o) == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = _getIterator(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
11
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
13
12
 
14
13
  function _unsupportedIterableToArray(o, minLen) { var _context6; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context6 = Object.prototype.toString.call(o)).call(_context6, 8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
14
 
@@ -226,21 +225,36 @@ function calculateHeaderRenderInfo(_ref, rowCount) {
226
225
  export default function TableHeader(_ref2) {
227
226
  var _context4, _context5;
228
227
 
229
- var info = _ref2.info;
228
+ var info = _ref2.info,
229
+ theaderPosition = _ref2.theaderPosition,
230
+ _rowCount = _ref2.rowCount;
230
231
 
231
232
  var nested = info.nested,
232
233
  flat = _flatInstanceProperty(info),
233
234
  stickyLeftMap = info.stickyLeftMap,
234
235
  stickyRightMap = info.stickyRightMap;
235
236
 
236
- var rowCount = getTreeDepth(nested.full) + 1;
237
+ var rowCount = _rowCount !== null && _rowCount !== void 0 ? _rowCount : getTreeDepth(nested.full) + 1;
237
238
  var headerRenderInfo = calculateHeaderRenderInfo(info, rowCount);
238
239
  var fullFlatCount = flat.full.length;
239
240
  var leftFlatCount = flat.left.length;
240
241
  var rightFlatCount = flat.right.length;
241
242
 
242
243
  var thead = _mapInstanceProperty(_context4 = headerRenderInfo.leveled).call(_context4, function (wrappedCols, level) {
243
- var headerCells = _mapInstanceProperty(wrappedCols).call(wrappedCols, function (wrapped, index) {
244
+ var _wrappedCols = _concatInstanceProperty(wrappedCols).call(wrappedCols); // 左中右区域渲染,分组列可能单独位于一个区域,此时其他区域也需要适配分组的高度
245
+ // rowspan 需要空白的列头去占位, 需要补充额外的空白列头
246
+
247
+
248
+ if (rowCount > 1 && ['left', 'right'].indexOf(theaderPosition) > -1) {
249
+ _wrappedCols.push({
250
+ type: 'blank',
251
+ blankSide: 'left',
252
+ width: 1,
253
+ isPlacehoder: true
254
+ });
255
+ }
256
+
257
+ var headerCells = _mapInstanceProperty(_wrappedCols).call(_wrappedCols, function (wrapped, index) {
244
258
  var _a, _b, _c;
245
259
 
246
260
  if (wrapped.type === 'normal') {
@@ -259,14 +273,15 @@ export default function TableHeader(_ref2) {
259
273
  positionStyle.right = stickyRightMap.get(colIndex);
260
274
  }
261
275
 
276
+ var justifyContent = col.align === 'right' ? 'flex-end' : col.align === 'center' ? 'center' : 'flex-start';
262
277
  var cell = /*#__PURE__*/React.createElement("th", _extends({
263
278
  key: colIndex
264
279
  }, headerCellProps, {
265
280
  className: cx(Classes.tableHeaderCell, headerCellProps.className, {
266
281
  first: colIndex === 0,
267
282
  last: colIndex + colSpan === fullFlatCount,
268
- 'lock-left': colIndex < leftFlatCount,
269
- 'lock-right': colIndex >= fullFlatCount - rightFlatCount,
283
+ 'lock-left': colIndex < leftFlatCount || theaderPosition === 'left',
284
+ 'lock-right': colIndex >= fullFlatCount - rightFlatCount || theaderPosition === 'right',
270
285
  leaf: wrapped.isLeaf
271
286
  }),
272
287
  colSpan: colSpan,
@@ -276,12 +291,20 @@ export default function TableHeader(_ref2) {
276
291
  verticalAlign: (_b = col.verticalAlign) !== null && _b !== void 0 ? _b : 'middle'
277
292
  }, headerCellProps.style), positionStyle),
278
293
  "data-code": col.code
279
- }), (_c = col.title) !== null && _c !== void 0 ? _c : col.name);
294
+ }), theaderPosition === 'center' && positionStyle.position === 'sticky' ? null : /*#__PURE__*/React.createElement("div", {
295
+ className: Classes.tableHeaderCellContent,
296
+ style: {
297
+ justifyContent: justifyContent
298
+ }
299
+ }, (_c = col.title) !== null && _c !== void 0 ? _c : col.name));
280
300
  return cell;
281
301
  } else {
282
302
  if (wrapped.width > 0) {
283
303
  return /*#__PURE__*/React.createElement("th", {
284
- key: wrapped.blankSide
304
+ key: wrapped.blankSide,
305
+ style: {
306
+ visibility: wrapped.isPlacehoder ? 'hidden' : undefined
307
+ }
285
308
  });
286
309
  } else {
287
310
  return null;
@@ -37,7 +37,7 @@ var SpanManager = /*#__PURE__*/function () {
37
37
  value: function add(rowIndex, colIndex, colSpan, rowSpan) {
38
38
  this.rects.push({
39
39
  left: colIndex,
40
- right: colIndex + colSpan,
40
+ right: colIndex + (colSpan < 1 ? 1 : colSpan),
41
41
  top: rowIndex,
42
42
  bottom: rowIndex + rowSpan
43
43
  });
@@ -8,6 +8,8 @@ export declare class TableDOMHelper {
8
8
  readonly tableFooter: HTMLDivElement;
9
9
  readonly stickyScroll: HTMLDivElement;
10
10
  readonly stickyScrollItem: HTMLDivElement;
11
+ readonly tableHeaderMain: HTMLDivElement;
12
+ readonly tableFooterMain: HTMLDivElement;
11
13
  constructor(artTableWrapper: HTMLDivElement);
12
14
  getVirtualTop(): HTMLDivElement;
13
15
  getTableRows(): NodeListOf<HTMLTableRowElement>;
@@ -15,4 +17,5 @@ export declare class TableDOMHelper {
15
17
  getLeftLockShadow(): HTMLDivElement;
16
18
  getRightLockShadow(): HTMLDivElement;
17
19
  getLoadingIndicator(): HTMLDivElement;
20
+ getRowTop(rowIndex: number): number;
18
21
  }
@@ -48,10 +48,12 @@ export var TableDOMHelper = /*#__PURE__*/function () {
48
48
  this.artTableWrapper = artTableWrapper;
49
49
  this.artTable = artTableWrapper.querySelector(".".concat(Classes.artTable));
50
50
  this.tableHeader = this.artTable.querySelector(".".concat(Classes.tableHeader));
51
+ this.tableHeaderMain = this.artTable.querySelector(".".concat(Classes.tableHeaderMain));
51
52
  this.tableBody = this.artTable.querySelector(".".concat(Classes.tableBody));
52
53
  this.virtual = this.artTable.querySelector(".".concat(Classes.virtual));
53
54
  this.tableElement = this.artTable.querySelector(".".concat(Classes.tableBody, " table"));
54
55
  this.tableFooter = this.artTable.querySelector(".".concat(Classes.tableFooter));
56
+ this.tableFooterMain = this.artTable.querySelector(".".concat(Classes.tableFooterMain));
55
57
 
56
58
  var stickyScrollSelector = _concatInstanceProperty(_context = ".".concat(Classes.artTable, " + .")).call(_context, Classes.stickyScroll);
57
59
 
@@ -73,23 +75,25 @@ export var TableDOMHelper = /*#__PURE__*/function () {
73
75
  }, {
74
76
  key: "getTableBodyHtmlTable",
75
77
  value: function getTableBodyHtmlTable() {
76
- return this.artTable.querySelector(".".concat(Classes.tableBody, " table"));
78
+ var _context2;
79
+
80
+ return this.artTable.querySelector(_concatInstanceProperty(_context2 = ".".concat(Classes.tableBody, " .")).call(_context2, Classes.virtual, " table"));
77
81
  }
78
82
  }, {
79
83
  key: "getLeftLockShadow",
80
84
  value: function getLeftLockShadow() {
81
- var _context2;
85
+ var _context3;
82
86
 
83
- var selector = _concatInstanceProperty(_context2 = ".".concat(Classes.lockShadowMask, " .")).call(_context2, Classes.leftLockShadow);
87
+ var selector = _concatInstanceProperty(_context3 = ".".concat(Classes.lockShadowMask, " .")).call(_context3, Classes.leftLockShadow);
84
88
 
85
89
  return this.artTable.querySelector(selector);
86
90
  }
87
91
  }, {
88
92
  key: "getRightLockShadow",
89
93
  value: function getRightLockShadow() {
90
- var _context3;
94
+ var _context4;
91
95
 
92
- var selector = _concatInstanceProperty(_context3 = ".".concat(Classes.lockShadowMask, " .")).call(_context3, Classes.rightLockShadow);
96
+ var selector = _concatInstanceProperty(_context4 = ".".concat(Classes.lockShadowMask, " .")).call(_context4, Classes.rightLockShadow);
93
97
 
94
98
  return this.artTable.querySelector(selector);
95
99
  }
@@ -98,6 +102,20 @@ export var TableDOMHelper = /*#__PURE__*/function () {
98
102
  value: function getLoadingIndicator() {
99
103
  return this.artTableWrapper.querySelector(".".concat(Classes.loadingIndicator));
100
104
  }
105
+ }, {
106
+ key: "getRowTop",
107
+ value: function getRowTop(rowIndex) {
108
+ var _context5, _context6;
109
+
110
+ if (rowIndex === 0) return 0;
111
+
112
+ var selector = _concatInstanceProperty(_context5 = _concatInstanceProperty(_context6 = ".".concat(Classes.tableBody, " .")).call(_context6, Classes.tableRow, "[data-rowindex=\"")).call(_context5, rowIndex, "\"]");
113
+
114
+ var row = this.artTable.querySelector(selector);
115
+ var rowOffsetTop = row && row.offsetTop || 0;
116
+ var tableOffsetTop = this.tableElement.offsetTop || 0;
117
+ return rowOffsetTop + tableOffsetTop;
118
+ }
101
119
  }]);
102
120
 
103
121
  return TableDOMHelper;
@@ -0,0 +1,23 @@
1
+ import { Observable } from 'rxjs';
2
+ export declare function getRichVisibleRectsStream(target: HTMLElement, structureMayChange$: Observable<'structure-may-change'>, virtualDebugLabel?: string): Observable<{
3
+ event: unknown;
4
+ targetRect: {
5
+ top: number;
6
+ left: number;
7
+ bottom: number;
8
+ right: number;
9
+ };
10
+ scrollParentRect: {
11
+ top: number;
12
+ left: number;
13
+ bottom: number;
14
+ right: number;
15
+ };
16
+ offsetY: number;
17
+ clipRect: {
18
+ left: number;
19
+ top: number;
20
+ right: number;
21
+ bottom: number;
22
+ };
23
+ }>;
@@ -0,0 +1,216 @@
1
+ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
2
+ import getNodeName from '@popperjs/core/lib/dom-utils/getNodeName';
3
+ import getOffsetParent from '@popperjs/core/lib/dom-utils/getOffsetParent';
4
+ import getParentNode from '@popperjs/core/lib/dom-utils/getParentNode';
5
+ import getWindow from '@popperjs/core/lib/dom-utils/getWindow';
6
+ import getWindowScroll from '@popperjs/core/lib/dom-utils/getWindowScroll';
7
+ import { isHTMLElement } from '@popperjs/core/lib/dom-utils/instanceOf';
8
+ import isScrollParent from '@popperjs/core/lib/dom-utils/isScrollParent';
9
+ import ResizeObserver from 'resize-observer-polyfill';
10
+ import { fromEvent, merge, Observable } from 'rxjs';
11
+ import * as op from 'rxjs/operators';
12
+ import { shallowEqual } from '../utils';
13
+
14
+ function isWindow(arg) {
15
+ return arg.toString() === '[object Window]';
16
+ }
17
+
18
+ function isBody(arg) {
19
+ return getNodeName(arg) === 'body';
20
+ }
21
+
22
+ function isHtml(arg) {
23
+ return getNodeName(arg) === 'html';
24
+ }
25
+
26
+ function isHtmlOrBody(arg) {
27
+ return isHtml(arg) || isBody(arg);
28
+ } // 计算从 start(子元素)到 stop(祖先元素)之间所有元素的 scrollTop 或 scrollLeft 的和
29
+ // 注意 start 和 stop 都是 INCLUSIVE 的,即两者的 scrollTop 或 scrollLeft 都会统计在内
30
+
31
+
32
+ function accumulateScrollOffset(start, stop, scrollOffsetKey) {
33
+ var result = 0;
34
+ var elem = start;
35
+
36
+ while (elem != null) {
37
+ result += elem[scrollOffsetKey];
38
+
39
+ if (elem === stop || isWindow(stop) && isHtmlOrBody(elem)) {
40
+ break;
41
+ }
42
+
43
+ elem = elem.parentElement;
44
+ }
45
+
46
+ if (isWindow(stop)) {
47
+ result += getWindowScroll(elem)[scrollOffsetKey];
48
+ }
49
+
50
+ return result;
51
+ }
52
+ /**
53
+ * 获取 target 相对于 base 的布局大小和相对位置。
54
+ * 注意该方法会考虑滚动所带来的影响
55
+ */
56
+
57
+
58
+ function getRelativeLayoutRect(base, target) {
59
+ if (isWindow(target) || isHtmlOrBody(target)) {
60
+ return {
61
+ left: 0,
62
+ right: window.innerWidth,
63
+ top: 0,
64
+ bottom: window.innerHeight
65
+ };
66
+ }
67
+
68
+ var deltaX = 0;
69
+ var deltaY = 0;
70
+ var elem = target;
71
+
72
+ while (elem != null && elem != base) {
73
+ deltaY += elem.offsetTop;
74
+ deltaX += elem.offsetLeft;
75
+ var offsetParent = getOffsetParent(elem);
76
+ deltaY -= accumulateScrollOffset(elem.parentElement, offsetParent, 'scrollTop');
77
+ deltaX -= accumulateScrollOffset(elem.parentElement, offsetParent, 'scrollLeft');
78
+
79
+ if (isWindow(offsetParent)) {
80
+ break;
81
+ }
82
+
83
+ deltaY += offsetParent.clientTop;
84
+ deltaX += offsetParent.clientLeft;
85
+ elem = offsetParent;
86
+ }
87
+
88
+ return {
89
+ top: deltaY,
90
+ bottom: deltaY + target.offsetHeight,
91
+ left: deltaX,
92
+ right: deltaX + target.offsetWidth
93
+ };
94
+ }
95
+
96
+ function findCommonOffsetAncestor(target, scrollParent) {
97
+ if (isWindow(scrollParent)) {
98
+ return scrollParent;
99
+ }
100
+
101
+ var offsetParents = listOffsetParents(target);
102
+
103
+ if (_includesInstanceProperty(offsetParents).call(offsetParents, scrollParent)) {
104
+ return scrollParent;
105
+ }
106
+
107
+ return getOffsetParent(scrollParent);
108
+ } // 列出 target 元素上层的所有 offset parents
109
+
110
+
111
+ function listOffsetParents(target) {
112
+ var result = [];
113
+ var elem = target;
114
+
115
+ while (true) {
116
+ if (isWindow(elem)) {
117
+ break;
118
+ }
119
+
120
+ elem = getOffsetParent(elem);
121
+ result.push(elem);
122
+ }
123
+
124
+ return result;
125
+ }
126
+
127
+ function fromScrollEvent(element) {
128
+ return fromEvent(element, 'scroll', {
129
+ passive: true
130
+ });
131
+ }
132
+
133
+ function fromResizeEvent(element) {
134
+ if (isWindow(element)) {
135
+ return fromEvent(element, 'resize', {
136
+ passive: true
137
+ });
138
+ }
139
+
140
+ return new Observable(function (subscriber) {
141
+ var resizeObserver = new ResizeObserver(function (entries) {
142
+ subscriber.next(entries);
143
+ });
144
+ resizeObserver.observe(element);
145
+ return function () {
146
+ resizeObserver.disconnect();
147
+ };
148
+ });
149
+ }
150
+
151
+ function getScrollParent(elem) {
152
+ var _context;
153
+
154
+ if (_includesInstanceProperty(_context = ['html', 'body', '#document']).call(_context, getNodeName(elem))) {
155
+ return getWindow(elem);
156
+ }
157
+
158
+ if (isHTMLElement(elem) && isScrollParent(elem)) {
159
+ return elem;
160
+ }
161
+
162
+ return getScrollParent(getParentNode(elem));
163
+ } // 获取 target 相对于「它的滚动父元素」的可见部分的大小与位置
164
+
165
+
166
+ export function getRichVisibleRectsStream(target, structureMayChange$, virtualDebugLabel) {
167
+ return structureMayChange$.pipe(op.startWith('init'), op.map(function () {
168
+ // target 的第一个滚动父元素,我们认为这就是虚拟滚动发生的地方
169
+ // 即虚拟滚动不考虑「更上层元素发生滚动」的情况
170
+ // 直接从父元素开始查找,防止自身设置overflow属性导致是同一个元素
171
+ var scrollParent = getScrollParent(getParentNode(target)); // target 和 scrollParent 的共同 offset 祖先,作为布局尺寸计算时的参照元素
172
+
173
+ var commonOffsetAncestor = findCommonOffsetAncestor(target, scrollParent);
174
+ return {
175
+ scrollParent: scrollParent,
176
+ commonOffsetAncestor: commonOffsetAncestor
177
+ };
178
+ }), op.distinctUntilChanged(shallowEqual), op.tap(function (structure) {
179
+ if (virtualDebugLabel) {
180
+ console.log("%c[ali-react-table STRUCTURE ".concat(virtualDebugLabel, "]"), 'color: #4f9052; font-weight: bold', '\ntarget:', target, '\nscrollParent:', structure.scrollParent, '\ncommonOffsetAncestor:', structure.commonOffsetAncestor);
181
+ }
182
+ }), op.switchMap(function (_ref) {
183
+ var scrollParent = _ref.scrollParent,
184
+ commonOffsetAncestor = _ref.commonOffsetAncestor;
185
+ var events$ = merge(fromScrollEvent(scrollParent), fromResizeEvent(scrollParent), fromResizeEvent(target));
186
+ return events$.pipe(op.map(function (event) {
187
+ return {
188
+ targetRect: getRelativeLayoutRect(commonOffsetAncestor, target),
189
+ scrollParentRect: getRelativeLayoutRect(commonOffsetAncestor, scrollParent),
190
+ event: event
191
+ };
192
+ }), op.map(function (_ref2) {
193
+ var event = _ref2.event,
194
+ scrollParentRect = _ref2.scrollParentRect,
195
+ targetRect = _ref2.targetRect;
196
+ return {
197
+ event: event,
198
+ targetRect: targetRect,
199
+ scrollParentRect: scrollParentRect,
200
+ offsetY: Math.max(0, scrollParentRect.top - targetRect.top),
201
+ // 表格的横向滚动总是发生在表格内部,所以这里不需要计算 offsetX
202
+ // offsetX: Math.max(0, scrollParentRect.left - targetRect.left),
203
+ clipRect: {
204
+ left: Math.max(targetRect.left, scrollParentRect.left),
205
+ top: Math.max(targetRect.top, scrollParentRect.top),
206
+ right: Math.min(targetRect.right, scrollParentRect.right),
207
+ bottom: Math.min(targetRect.bottom, scrollParentRect.bottom)
208
+ }
209
+ };
210
+ }));
211
+ }), op.tap(function (rects) {
212
+ if (virtualDebugLabel) {
213
+ console.log("%c[ali-react-table RECTS ".concat(virtualDebugLabel, "]"), 'color: #4f9052; font-weight: bold', '\noffsetY:', rects.offsetY, '\ntargetRect:', rects.targetRect, '\nscrollParentRect:', rects.scrollParentRect, '\nclipRect:', rects.clipRect, '\nevent:', rects.event);
214
+ }
215
+ }));
216
+ }
@@ -4,6 +4,7 @@ import { BaseTableProps } from './table';
4
4
  export interface HtmlTableProps extends Required<Pick<BaseTableProps, 'getRowProps' | 'primaryKey'>> {
5
5
  tbodyHtmlTag: 'tbody' | 'tfoot';
6
6
  data: any[];
7
+ hasScrollY?: boolean;
7
8
  horizontalRenderInfo: Pick<RenderInfo, 'flat' | 'visible' | 'horizontalRenderRange' | 'stickyLeftMap' | 'stickyRightMap'>;
8
9
  verticalRenderInfo: {
9
10
  offset: number;
@@ -11,5 +12,6 @@ export interface HtmlTableProps extends Required<Pick<BaseTableProps, 'getRowPro
11
12
  last: number;
12
13
  limit: number;
13
14
  };
15
+ tbodyPosition?: 'left' | 'center' | 'right';
14
16
  }
15
- export declare function HtmlTable({ tbodyHtmlTag, getRowProps, primaryKey, data, verticalRenderInfo: verInfo, horizontalRenderInfo: hozInfo }: HtmlTableProps): JSX.Element;
17
+ export declare function HtmlTable({ tbodyHtmlTag, getRowProps, primaryKey, hasScrollY, data, verticalRenderInfo: verInfo, horizontalRenderInfo: hozInfo, tbodyPosition }: HtmlTableProps): JSX.Element;