@kdcloudjs/table 1.2.0-canary.6 → 1.2.0-canary.6-hotfix.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 (254) hide show
  1. package/LICENSE +568 -568
  2. package/README.md +111 -111
  3. package/dist/@kdcloudjs/table.css +1 -1
  4. package/dist/@kdcloudjs/table.js +1877 -3363
  5. package/dist/@kdcloudjs/table.js.map +1 -1
  6. package/dist/@kdcloudjs/table.min.css +1 -1
  7. package/dist/@kdcloudjs/table.min.js +16 -16
  8. package/dist/@kdcloudjs/table.min.js.map +1 -1
  9. package/dist/kd-ui-complete.less +777 -777
  10. package/es/_utils/arrayUtil.js +0 -3
  11. package/es/_utils/devwarning.js +0 -1
  12. package/es/_utils/formatUtil.js +35 -96
  13. package/es/_utils/hooks.js +18 -42
  14. package/es/_utils/index.js +0 -2
  15. package/es/_utils/numberUtil.js +32 -55
  16. package/es/_utils/omit.js +0 -2
  17. package/es/_utils/type.js +0 -2
  18. package/es/_utils/usePopper.js +74 -137
  19. package/es/config-provider/compDefaultProps.js +0 -1
  20. package/es/config-provider/configProvider.js +2 -7
  21. package/es/config-provider/defaultConfig.js +0 -1
  22. package/es/index.js +0 -2
  23. package/es/locale/locale.js +5 -43
  24. package/es/style/color/colors.less +1 -1
  25. package/es/style/core/index.less +1 -1
  26. package/es/style/core/motion/other.less +27 -27
  27. package/es/style/core/motion/slide.less +53 -53
  28. package/es/style/core/motion.less +1 -1
  29. package/es/style/core/reset.less +185 -185
  30. package/es/style/index.less +1 -1
  31. package/es/style/mixins/index.less +18 -18
  32. package/es/style/mixins/overlay.less +21 -21
  33. package/es/style/mixins/reset.less +12 -12
  34. package/es/style/themes/default.less +445 -445
  35. package/es/table/base/calculations.js +22 -72
  36. package/es/table/base/colgroup.js +0 -1
  37. package/es/table/base/empty.js +4 -4
  38. package/es/table/base/header.d.ts +2 -1
  39. package/es/table/base/header.js +17 -68
  40. package/es/table/base/helpers/SpanManager.js +3 -9
  41. package/es/table/base/helpers/TableDOMUtils.js +3 -26
  42. package/es/table/base/helpers/__test__/SpanManager.test.js +2 -2
  43. package/es/table/base/helpers/__test__/TableDOMUtils.test.js +0 -1
  44. package/es/table/base/helpers/getRichVisibleRectsStream.js +11 -44
  45. package/es/table/base/helpers/rowHeightManager.js +0 -28
  46. package/es/table/base/html-table.js +15 -36
  47. package/es/table/base/loading.js +6 -8
  48. package/es/table/base/renderTemplates.js +50 -54
  49. package/es/table/base/styles.js +1 -10
  50. package/es/table/base/table.js +116 -189
  51. package/es/table/base/utils.js +14 -54
  52. package/es/table/common-views.js +0 -7
  53. package/es/table/internals.js +0 -13
  54. package/es/table/pipeline/features/autoFill.js +11 -38
  55. package/es/table/pipeline/features/autoRowSpan.js +1 -14
  56. package/es/table/pipeline/features/colGroupExtendable.js +4 -19
  57. package/es/table/pipeline/features/columnDrag.js +41 -95
  58. package/es/table/pipeline/features/columnFilter.js +11 -44
  59. package/es/table/pipeline/features/columnHover.js +1 -7
  60. package/es/table/pipeline/features/columnRangeHover.js +1 -8
  61. package/es/table/pipeline/features/columnResizeWidth.js +11 -37
  62. package/es/table/pipeline/features/contextMenu.js +18 -89
  63. package/es/table/pipeline/features/filter/DefaultFilterContent.js +10 -25
  64. package/es/table/pipeline/features/filter/DefaultFilterIcon.js +1 -1
  65. package/es/table/pipeline/features/filter/Filter.js +25 -48
  66. package/es/table/pipeline/features/filter/FilterPanel.js +11 -25
  67. package/es/table/pipeline/features/filter/util.js +0 -4
  68. package/es/table/pipeline/features/footerDataSource.js +0 -3
  69. package/es/table/pipeline/features/mergeCellHover.js +0 -1
  70. package/es/table/pipeline/features/multiSelect.js +15 -57
  71. package/es/table/pipeline/features/rangeSelection.js +63 -142
  72. package/es/table/pipeline/features/rowDetail.js +2 -41
  73. package/es/table/pipeline/features/rowGrouping.js +2 -35
  74. package/es/table/pipeline/features/singleSelect.js +0 -24
  75. package/es/table/pipeline/features/sort.js +29 -79
  76. package/es/table/pipeline/features/tips.js +0 -6
  77. package/es/table/pipeline/features/treeMode.js +9 -43
  78. package/es/table/pipeline/features/treeSelect.js +0 -26
  79. package/es/table/pipeline/pipeline.js +9 -49
  80. package/es/table/pivot/cross-table/buildCrossTable.js +15 -64
  81. package/es/table/pivot/cross-table/cross-table.js +22 -28
  82. package/es/table/pivot/cross-tree-table/buildCrossTreeTable.js +14 -47
  83. package/es/table/pivot/cross-tree-table/cross-tree-table.js +28 -50
  84. package/es/table/pivot/pivot-utils/buildDrillTree.js +10 -23
  85. package/es/table/pivot/pivot-utils/builders.js +31 -71
  86. package/es/table/pivot/pivot-utils/convert-utils.js +13 -39
  87. package/es/table/pivot/pivot-utils/simpleEncode.js +0 -1
  88. package/es/table/style/index.less +1 -1
  89. package/es/table/transforms/autoRowSpan.js +1 -15
  90. package/es/table/transforms/autoWidth.js +10 -32
  91. package/es/table/transforms/buildTree.js +1 -2
  92. package/es/table/transforms/columnHover.js +9 -15
  93. package/es/table/transforms/columnRangeHover.js +12 -19
  94. package/es/table/transforms/columnResize.js +15 -37
  95. package/es/table/transforms/flatten.js +0 -3
  96. package/es/table/transforms/orderField.js +0 -3
  97. package/es/table/transforms/sort.js +36 -88
  98. package/es/table/transforms/tips.js +1 -6
  99. package/es/table/transforms/treeMode.js +30 -69
  100. package/es/table/transforms/visible.js +0 -2
  101. package/es/table/use/useResizeObserver.js +1 -4
  102. package/es/table/utils/applyTransforms.js +0 -1
  103. package/es/table/utils/buildTree.js +4 -19
  104. package/es/table/utils/collectNodes.js +1 -10
  105. package/es/table/utils/console.js +0 -14
  106. package/es/table/utils/copyToClipboard.js +0 -4
  107. package/es/table/utils/element.js +14 -41
  108. package/es/table/utils/exportTableAsExcel.js +4 -40
  109. package/es/table/utils/getTreeDepth.js +1 -9
  110. package/es/table/utils/groupBy.js +1 -10
  111. package/es/table/utils/layeredFilter.js +0 -4
  112. package/es/table/utils/layeredSort.js +0 -5
  113. package/es/table/utils/makeRecursiveMapper.js +1 -12
  114. package/es/table/utils/mergeCellProps.js +6 -13
  115. package/es/table/utils/others.js +3 -16
  116. package/es/table/utils/proto.js +2 -30
  117. package/es/table/utils/smartCompare.js +4 -12
  118. package/es/table/utils/traverseColumn.js +2 -15
  119. package/es/table/utils/tree-data-helpers/StrictTreeDataHelper.js +1 -22
  120. package/es/table/utils/tree-data-helpers/TreeDataHelper.js +15 -69
  121. package/lib/_utils/arrayUtil.js +0 -5
  122. package/lib/_utils/devwarning.js +0 -5
  123. package/lib/_utils/formatUtil.js +35 -100
  124. package/lib/_utils/hooks.js +18 -53
  125. package/lib/_utils/index.js +0 -6
  126. package/lib/_utils/numberUtil.js +32 -63
  127. package/lib/_utils/omit.js +0 -5
  128. package/lib/_utils/react-children.js +0 -5
  129. package/lib/_utils/type.js +0 -6
  130. package/lib/_utils/usePopper.js +74 -158
  131. package/lib/config-provider/ConfigContext.js +1 -4
  132. package/lib/config-provider/compDefaultProps.js +0 -1
  133. package/lib/config-provider/configProvider.js +3 -18
  134. package/lib/config-provider/defaultConfig.js +0 -5
  135. package/lib/config-provider/index.js +0 -6
  136. package/lib/index.js +2 -8
  137. package/lib/locale/index.js +0 -7
  138. package/lib/locale/locale.js +5 -57
  139. package/lib/style/color/colors.less +1 -1
  140. package/lib/style/components.less +1 -1
  141. package/lib/style/core/index.less +1 -1
  142. package/lib/style/core/motion/other.less +27 -27
  143. package/lib/style/core/motion/slide.less +53 -53
  144. package/lib/style/core/motion.less +1 -1
  145. package/lib/style/core/reset.less +185 -185
  146. package/lib/style/index.less +1 -1
  147. package/lib/style/mixins/index.less +18 -18
  148. package/lib/style/mixins/overlay.less +21 -21
  149. package/lib/style/mixins/reset.less +12 -12
  150. package/lib/style/themes/default.less +445 -445
  151. package/lib/table/base/calculations.js +22 -83
  152. package/lib/table/base/colgroup.js +0 -5
  153. package/lib/table/base/empty.js +4 -16
  154. package/lib/table/base/header.d.ts +2 -1
  155. package/lib/table/base/header.js +17 -78
  156. package/lib/table/base/helpers/SpanManager.js +3 -11
  157. package/lib/table/base/helpers/TableDOMUtils.js +1 -26
  158. package/lib/table/base/helpers/__test__/SpanManager.test.js +2 -4
  159. package/lib/table/base/helpers/__test__/TableDOMUtils.test.js +0 -5
  160. package/lib/table/base/helpers/__test__/rowHeightManager.test.js +0 -1
  161. package/lib/table/base/helpers/getRichVisibleRectsStream.js +11 -62
  162. package/lib/table/base/helpers/rowHeightManager.js +0 -33
  163. package/lib/table/base/html-table.js +15 -46
  164. package/lib/table/base/index.js +0 -2
  165. package/lib/table/base/loading.js +6 -12
  166. package/lib/table/base/renderTemplates.js +51 -68
  167. package/lib/table/base/styles.js +1 -22
  168. package/lib/table/base/table.js +116 -222
  169. package/lib/table/base/utils.js +14 -89
  170. package/lib/table/common-views.js +0 -16
  171. package/lib/table/index.js +0 -13
  172. package/lib/table/internals.js +0 -14
  173. package/lib/table/pipeline/features/autoFill.js +11 -45
  174. package/lib/table/pipeline/features/autoRowSpan.js +1 -19
  175. package/lib/table/pipeline/features/buildTree.js +0 -2
  176. package/lib/table/pipeline/features/colGroupExtendable.js +4 -32
  177. package/lib/table/pipeline/features/columnDrag.js +41 -101
  178. package/lib/table/pipeline/features/columnFilter.js +11 -58
  179. package/lib/table/pipeline/features/columnHover.js +1 -11
  180. package/lib/table/pipeline/features/columnRangeHover.js +1 -13
  181. package/lib/table/pipeline/features/columnResizeWidth.js +11 -53
  182. package/lib/table/pipeline/features/contextMenu.js +18 -113
  183. package/lib/table/pipeline/features/filter/DefaultFilterContent.js +10 -43
  184. package/lib/table/pipeline/features/filter/DefaultFilterIcon.js +1 -4
  185. package/lib/table/pipeline/features/filter/Filter.js +25 -70
  186. package/lib/table/pipeline/features/filter/FilterPanel.js +11 -40
  187. package/lib/table/pipeline/features/filter/index.js +0 -5
  188. package/lib/table/pipeline/features/filter/util.js +0 -7
  189. package/lib/table/pipeline/features/footerDataSource.js +0 -10
  190. package/lib/table/pipeline/features/index.js +0 -22
  191. package/lib/table/pipeline/features/mergeCellHover.js +0 -5
  192. package/lib/table/pipeline/features/multiSelect.js +15 -70
  193. package/lib/table/pipeline/features/rangeSelection.js +63 -159
  194. package/lib/table/pipeline/features/rowDetail.js +2 -65
  195. package/lib/table/pipeline/features/rowGrouping.js +2 -55
  196. package/lib/table/pipeline/features/singleSelect.js +0 -33
  197. package/lib/table/pipeline/features/sort.js +29 -99
  198. package/lib/table/pipeline/features/tips.js +0 -15
  199. package/lib/table/pipeline/features/treeMode.js +9 -64
  200. package/lib/table/pipeline/features/treeSelect.js +0 -34
  201. package/lib/table/pipeline/index.js +0 -8
  202. package/lib/table/pipeline/pipeline.js +9 -58
  203. package/lib/table/pivot/cross-table/buildCrossTable.js +15 -75
  204. package/lib/table/pivot/cross-table/cross-table.js +22 -36
  205. package/lib/table/pivot/cross-table/index.js +0 -4
  206. package/lib/table/pivot/cross-tree-table/buildCrossTreeTable.js +14 -60
  207. package/lib/table/pivot/cross-tree-table/cross-tree-table.js +28 -60
  208. package/lib/table/pivot/cross-tree-table/index.js +0 -3
  209. package/lib/table/pivot/pivot-utils/buildDrillTree.js +10 -29
  210. package/lib/table/pivot/pivot-utils/builders.js +31 -82
  211. package/lib/table/pivot/pivot-utils/convert-utils.js +13 -57
  212. package/lib/table/pivot/pivot-utils/index.js +0 -7
  213. package/lib/table/pivot/pivot-utils/simpleEncode.js +0 -2
  214. package/lib/table/style/css.js +0 -1
  215. package/lib/table/style/index.js +0 -1
  216. package/lib/table/style/index.less +1 -1
  217. package/lib/table/transforms/autoRowSpan.js +1 -21
  218. package/lib/table/transforms/autoWidth.js +10 -53
  219. package/lib/table/transforms/buildTree.js +1 -4
  220. package/lib/table/transforms/columnHover.js +9 -22
  221. package/lib/table/transforms/columnRangeHover.js +12 -27
  222. package/lib/table/transforms/columnResize.js +15 -56
  223. package/lib/table/transforms/flatten.js +0 -5
  224. package/lib/table/transforms/index.js +0 -12
  225. package/lib/table/transforms/orderField.js +0 -7
  226. package/lib/table/transforms/sort.js +36 -112
  227. package/lib/table/transforms/tips.js +1 -16
  228. package/lib/table/transforms/treeMode.js +30 -96
  229. package/lib/table/transforms/visible.js +0 -7
  230. package/lib/table/transforms/warnTransformsDeprecated.js +0 -4
  231. package/lib/table/use/useResizeObserver.js +1 -8
  232. package/lib/table/utils/applyTransforms.js +0 -2
  233. package/lib/table/utils/buildTree.js +4 -30
  234. package/lib/table/utils/collectNodes.js +1 -15
  235. package/lib/table/utils/console.js +0 -16
  236. package/lib/table/utils/copyToClipboard.js +0 -6
  237. package/lib/table/utils/element.js +14 -46
  238. package/lib/table/utils/exportTableAsExcel.js +4 -49
  239. package/lib/table/utils/getTreeDepth.js +1 -14
  240. package/lib/table/utils/groupBy.js +1 -14
  241. package/lib/table/utils/index.js +0 -20
  242. package/lib/table/utils/isGroupColumn.js +0 -3
  243. package/lib/table/utils/isLeafNode.js +0 -1
  244. package/lib/table/utils/layeredFilter.js +0 -10
  245. package/lib/table/utils/layeredSort.js +0 -10
  246. package/lib/table/utils/makeRecursiveMapper.js +1 -21
  247. package/lib/table/utils/mergeCellProps.js +6 -17
  248. package/lib/table/utils/others.js +3 -31
  249. package/lib/table/utils/proto.js +2 -33
  250. package/lib/table/utils/smartCompare.js +4 -13
  251. package/lib/table/utils/traverseColumn.js +2 -22
  252. package/lib/table/utils/tree-data-helpers/StrictTreeDataHelper.js +1 -30
  253. package/lib/table/utils/tree-data-helpers/TreeDataHelper.js +15 -82
  254. package/package.json +219 -218
@@ -10,35 +10,25 @@ import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instan
10
10
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
11
11
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
12
12
  import _Map from "@babel/runtime-corejs3/core-js-stable/map";
13
-
14
13
  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; } } }; }
15
-
16
14
  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); }
17
-
18
15
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
19
-
20
16
  import { collectNodes, isLeafNode, console } from '../utils';
21
17
  import { AUTO_VIRTUAL_THRESHOLD, OVERSCAN_SIZE, sum } from './utils';
22
-
23
18
  function resolveVirtualEnabled(virtualEnum, defaultValue) {
24
19
  if (virtualEnum == null || virtualEnum === 'auto') {
25
20
  return defaultValue;
26
21
  }
27
-
28
22
  return virtualEnum;
29
23
  }
30
-
31
24
  var lockColumnNeedSpecifiedWidthWarned = false;
32
-
33
25
  function warnLockColumnNeedSpecifiedWidth(column) {
34
26
  if (!lockColumnNeedSpecifiedWidthWarned) {
35
27
  lockColumnNeedSpecifiedWidthWarned = true;
36
28
  console.warn('lock=true 的列需要指定宽度', column);
37
29
  }
38
30
  }
39
-
40
31
  var columnHiddenDeprecatedWarned = false;
41
-
42
32
  function warnColumnHiddenDeprecated(column) {
43
33
  if (!columnHiddenDeprecatedWarned) {
44
34
  columnHiddenDeprecatedWarned = true;
@@ -46,24 +36,18 @@ function warnColumnHiddenDeprecated(column) {
46
36
  }
47
37
  }
48
38
  /** 检查列配置 & 设置默认宽度 & 剔除隐藏的列 */
49
-
50
-
51
39
  function processColumns(columns, defaultColumnWidth) {
52
40
  if (columns == null || !Array.isArray(columns)) {
53
41
  console.warn('<BaseTable /> props.columns 需要传入一个数组', columns);
54
42
  columns = [];
55
43
  }
56
-
57
44
  function dfs(columns) {
58
45
  var result = [];
59
-
60
46
  var _iterator = _createForOfIteratorHelper(columns),
61
- _step;
62
-
47
+ _step;
63
48
  try {
64
49
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
65
50
  var column = _step.value;
66
-
67
51
  if (column.width == null) {
68
52
  if (defaultColumnWidth != null) {
69
53
  column = _extends(_extends({}, column), {
@@ -73,7 +57,6 @@ function processColumns(columns, defaultColumnWidth) {
73
57
  warnLockColumnNeedSpecifiedWidth(column);
74
58
  }
75
59
  }
76
-
77
60
  if (isLeafNode(column)) {
78
61
  if (column.hidden) {
79
62
  // 被隐藏的列 会在这里被剔除
@@ -82,8 +65,8 @@ function processColumns(columns, defaultColumnWidth) {
82
65
  result.push(column);
83
66
  }
84
67
  } else {
85
- var nextChildren = dfs(column.children); // 如果 nextChildren 为空,说明所有的子节点均被隐藏了,在这里隐藏父节点
86
-
68
+ var nextChildren = dfs(column.children);
69
+ // 如果 nextChildren 为空,说明所有的子节点均被隐藏了,在这里隐藏父节点
87
70
  if (nextChildren.length > 0) {
88
71
  result.push(_extends(_extends({}, column), {
89
72
  children: nextChildren
@@ -96,23 +79,17 @@ function processColumns(columns, defaultColumnWidth) {
96
79
  } finally {
97
80
  _iterator.f();
98
81
  }
99
-
100
82
  return result;
101
83
  }
102
-
103
84
  return dfs(columns);
104
85
  }
105
-
106
86
  export function getLeftNestedLockCount(columns) {
107
87
  var nestedCount = 0;
108
-
109
88
  var _iterator2 = _createForOfIteratorHelper(columns),
110
- _step2;
111
-
89
+ _step2;
112
90
  try {
113
91
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
114
92
  var col = _step2.value;
115
-
116
93
  if (isLock(col)) {
117
94
  nestedCount += 1;
118
95
  } else {
@@ -124,9 +101,7 @@ export function getLeftNestedLockCount(columns) {
124
101
  } finally {
125
102
  _iterator2.f();
126
103
  }
127
-
128
104
  return nestedCount;
129
-
130
105
  function isLock(col) {
131
106
  if (isLeafNode(col)) {
132
107
  return col.lock;
@@ -135,15 +110,12 @@ export function getLeftNestedLockCount(columns) {
135
110
  }
136
111
  }
137
112
  }
138
-
139
113
  function getHorizontalRenderRange(_ref) {
140
114
  var _context, _context2;
141
-
142
115
  var offsetX = _ref.offsetX,
143
- maxRenderWidth = _ref.maxRenderWidth,
144
- flat = _flatInstanceProperty(_ref),
145
- useVirtual = _ref.useVirtual;
146
-
116
+ maxRenderWidth = _ref.maxRenderWidth,
117
+ flat = _flatInstanceProperty(_ref),
118
+ useVirtual = _ref.useVirtual;
147
119
  if (!useVirtual.horizontal) {
148
120
  return {
149
121
  leftIndex: 0,
@@ -152,30 +124,24 @@ function getHorizontalRenderRange(_ref) {
152
124
  rightBlank: 0
153
125
  };
154
126
  }
155
-
156
127
  var leftIndex = 0;
157
128
  var centerCount = 0;
158
129
  var leftBlank = 0;
159
130
  var centerRenderWidth = 0;
160
131
  var overscannedOffsetX = Math.max(0, offsetX - OVERSCAN_SIZE);
161
-
162
132
  while (leftIndex < flat.center.length) {
163
133
  var col = flat.center[leftIndex];
164
-
165
134
  if (col.width + leftBlank < overscannedOffsetX) {
166
135
  leftIndex += 1;
167
136
  leftBlank += col.width;
168
137
  } else {
169
138
  break;
170
139
  }
171
- } // 考虑 over scan 之后,中间部分的列至少需要渲染的宽度
172
-
173
-
140
+ }
141
+ // 考虑 over scan 之后,中间部分的列至少需要渲染的宽度
174
142
  var minCenterRenderWidth = maxRenderWidth + (overscannedOffsetX - leftBlank) + 2 * OVERSCAN_SIZE;
175
-
176
143
  while (leftIndex + centerCount < flat.center.length) {
177
144
  var _col = flat.center[leftIndex + centerCount];
178
-
179
145
  if (centerRenderWidth < minCenterRenderWidth) {
180
146
  centerRenderWidth += _col.width;
181
147
  centerCount += 1;
@@ -183,7 +149,6 @@ function getHorizontalRenderRange(_ref) {
183
149
  break;
184
150
  }
185
151
  }
186
-
187
152
  var rightBlankCount = flat.center.length - leftIndex - centerCount;
188
153
  var rightBlank = sum(_mapInstanceProperty(_context = _sliceInstanceProperty(_context2 = flat.center).call(_context2, flat.center.length - rightBlankCount)).call(_context, function (col) {
189
154
  return col.width;
@@ -194,28 +159,25 @@ function getHorizontalRenderRange(_ref) {
194
159
  rightIndex: leftIndex + centerCount,
195
160
  rightBlank: rightBlank
196
161
  };
197
- } // 一顿计算,将表格本次渲染所需要的数据都给算出来(代码写得有点乱,有较大优化空间)
162
+ }
163
+ // 一顿计算,将表格本次渲染所需要的数据都给算出来(代码写得有点乱,有较大优化空间)
198
164
  // todo 可以考虑下将 header 部分的计算逻辑也放到这个文件中,目前应该有一些重复的计算逻辑
199
-
200
-
201
165
  export function calculateRenderInfo(table) {
202
166
  var _context3, _context4, _context5, _context6, _context7, _context8, _context9;
203
-
204
167
  var _table$state = table.state,
205
- offsetX = _table$state.offsetX,
206
- maxRenderWidth = _table$state.maxRenderWidth;
168
+ offsetX = _table$state.offsetX,
169
+ maxRenderWidth = _table$state.maxRenderWidth;
207
170
  var _table$props = table.props,
208
- useVirtualProp = _table$props.useVirtual,
209
- columnsProp = _table$props.columns,
210
- dataSourceProp = _table$props.dataSource,
211
- defaultColumnWidth = _table$props.defaultColumnWidth;
171
+ useVirtualProp = _table$props.useVirtual,
172
+ columnsProp = _table$props.columns,
173
+ dataSourceProp = _table$props.dataSource,
174
+ defaultColumnWidth = _table$props.defaultColumnWidth;
212
175
  var columns = processColumns(columnsProp, defaultColumnWidth);
213
176
  var leftNestedLockCount = getLeftNestedLockCount(columns);
214
177
  var fullFlat = collectNodes(columns, 'leaf-only');
215
178
  var flat;
216
179
  var nested;
217
180
  var useVirtual;
218
-
219
181
  if (leftNestedLockCount === columns.length) {
220
182
  flat = {
221
183
  left: [],
@@ -236,13 +198,9 @@ export function calculateRenderInfo(table) {
236
198
  };
237
199
  } else {
238
200
  var leftNested = _sliceInstanceProperty(columns).call(columns, 0, leftNestedLockCount);
239
-
240
201
  var rightNestedLockCount = getLeftNestedLockCount(_sliceInstanceProperty(columns).call(columns).reverse());
241
-
242
202
  var centerNested = _sliceInstanceProperty(columns).call(columns, leftNestedLockCount, columns.length - rightNestedLockCount);
243
-
244
203
  var rightNested = _sliceInstanceProperty(columns).call(columns, columns.length - rightNestedLockCount);
245
-
246
204
  var shouldEnableHozVirtual = fullFlat.length >= AUTO_VIRTUAL_THRESHOLD && fullFlat.every(function (col) {
247
205
  return col.width != null;
248
206
  });
@@ -265,7 +223,6 @@ export function calculateRenderInfo(table) {
265
223
  center: centerNested
266
224
  };
267
225
  }
268
-
269
226
  var horizontalRenderRange = getHorizontalRenderRange({
270
227
  maxRenderWidth: maxRenderWidth,
271
228
  offsetX: offsetX,
@@ -274,10 +231,9 @@ export function calculateRenderInfo(table) {
274
231
  });
275
232
  var verticalRenderRange = table.getVerticalRenderRange(useVirtual);
276
233
  var leftBlank = horizontalRenderRange.leftBlank,
277
- leftIndex = horizontalRenderRange.leftIndex,
278
- rightBlank = horizontalRenderRange.rightBlank,
279
- rightIndex = horizontalRenderRange.rightIndex;
280
-
234
+ leftIndex = horizontalRenderRange.leftIndex,
235
+ rightBlank = horizontalRenderRange.rightBlank,
236
+ rightIndex = horizontalRenderRange.rightIndex;
281
237
  var unfilteredVisibleColumnDescriptors = _concatInstanceProperty(_context3 = []).call(_context3, _toConsumableArray(_mapInstanceProperty(_context4 = flat.left).call(_context4, function (col, i) {
282
238
  return {
283
239
  type: 'normal',
@@ -305,8 +261,8 @@ export function calculateRenderInfo(table) {
305
261
  colIndex: flat.full.length - flat.right.length + i
306
262
  };
307
263
  })));
308
-
309
- var visibleColumnDescriptors = _filterInstanceProperty(unfilteredVisibleColumnDescriptors).call(unfilteredVisibleColumnDescriptors, Boolean); // const totalWidth = visibleColumnDescriptors.reduce((pre, cur) => {
264
+ var visibleColumnDescriptors = _filterInstanceProperty(unfilteredVisibleColumnDescriptors).call(unfilteredVisibleColumnDescriptors, Boolean);
265
+ // const totalWidth = visibleColumnDescriptors.reduce((pre, cur) => {
310
266
  // if (cur.type === 'blank') {
311
267
  // return cur.width + pre
312
268
  // } else {
@@ -320,27 +276,21 @@ export function calculateRenderInfo(table) {
320
276
  // width: `width: calc(100% - ${totalWidth}px)`
321
277
  // } as VisibleColumnDescriptor)
322
278
  // }
323
-
324
-
325
279
  var fullFlatCount = flat.full.length;
326
280
  var leftFlatCount = flat.left.length;
327
281
  var rightFlatCount = flat.right.length;
328
282
  var stickyLeftMap = new _Map();
329
283
  var stickyLeft = 0;
330
-
331
284
  for (var i = 0; i < leftFlatCount; i++) {
332
285
  stickyLeftMap.set(i, stickyLeft);
333
286
  stickyLeft += flat.full[i].width;
334
287
  }
335
-
336
288
  var stickyRightMap = new _Map();
337
289
  var stickyRight = 0;
338
-
339
290
  for (var _i = 0; _i < rightFlatCount; _i++) {
340
291
  stickyRightMap.set(fullFlatCount - 1 - _i, stickyRight);
341
292
  stickyRight += flat.full[fullFlatCount - 1 - _i].width;
342
293
  }
343
-
344
294
  var leftLockTotalWidth = sum(_mapInstanceProperty(_context8 = flat.left).call(_context8, function (col) {
345
295
  return col.width;
346
296
  }));
@@ -11,7 +11,6 @@ export function Colgroup(_ref) {
11
11
  }
12
12
  });
13
13
  }
14
-
15
14
  return /*#__PURE__*/React.createElement("col", {
16
15
  key: descriptor.colIndex,
17
16
  style: {
@@ -13,10 +13,10 @@ var DefaultEmptyContent = /*#__PURE__*/React.memo(function () {
13
13
  });
14
14
  export function EmptyHtmlTable(_ref) {
15
15
  var descriptors = _ref.descriptors,
16
- isLoading = _ref.isLoading,
17
- emptyCellHeight = _ref.emptyCellHeight,
18
- _ref$EmptyContent = _ref.EmptyContent,
19
- EmptyContent = _ref$EmptyContent === void 0 ? DefaultEmptyContent : _ref$EmptyContent;
16
+ isLoading = _ref.isLoading,
17
+ emptyCellHeight = _ref.emptyCellHeight,
18
+ _ref$EmptyContent = _ref.EmptyContent,
19
+ EmptyContent = _ref$EmptyContent === void 0 ? DefaultEmptyContent : _ref$EmptyContent;
20
20
  var show = !isLoading;
21
21
  return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("table", {
22
22
  key: "table"
@@ -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 {};
@@ -8,48 +8,34 @@ import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instan
8
8
  import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
9
9
  import _Symbol from "@babel/runtime-corejs3/core-js-stable/symbol";
10
10
  import _getIteratorMethod from "@babel/runtime-corejs3/core-js/get-iterator-method";
11
-
12
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
-
14
12
  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
-
16
13
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
17
-
18
14
  import cx from 'classnames';
19
15
  import React from 'react';
20
16
  import { getTreeDepth, isLeafNode } from '../utils';
21
17
  import { Classes } from './styles';
22
-
23
18
  function range(n) {
24
19
  var array = [];
25
-
26
20
  for (var i = 0; i < n; i++) {
27
21
  array.push(i);
28
22
  }
29
-
30
23
  return array;
31
24
  }
32
25
  /** 根据当前横向虚拟滚动 对 nested.center 进行过滤,结果只保留当前视野内可见的那些列配置 */
33
-
34
-
35
26
  function filterNestedCenter(centerNested, hoz, leftFlatCount) {
36
27
  return dfs(centerNested, leftFlatCount).filtered;
37
-
38
28
  function dfs(cols, startColIndex) {
39
29
  var leafCount = 0;
40
30
  var filtered = [];
41
-
42
31
  var _iterator = _createForOfIteratorHelper(cols),
43
- _step;
44
-
32
+ _step;
45
33
  try {
46
34
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
47
35
  var col = _step.value;
48
36
  var colIndex = startColIndex + leafCount;
49
-
50
37
  if (isLeafNode(col)) {
51
38
  leafCount += 1;
52
-
53
39
  if (leftFlatCount + hoz.leftIndex <= colIndex && colIndex < leftFlatCount + hoz.rightIndex) {
54
40
  filtered.push({
55
41
  colIndex: colIndex,
@@ -59,7 +45,6 @@ function filterNestedCenter(centerNested, hoz, leftFlatCount) {
59
45
  } else {
60
46
  var dfsRes = dfs(col.children, colIndex);
61
47
  leafCount += dfsRes.leafCount;
62
-
63
48
  if (dfsRes.filtered.length > 0) {
64
49
  filtered.push({
65
50
  colIndex: colIndex,
@@ -74,7 +59,6 @@ function filterNestedCenter(centerNested, hoz, leftFlatCount) {
74
59
  } finally {
75
60
  _iterator.f();
76
61
  }
77
-
78
62
  return {
79
63
  filtered: filtered,
80
64
  leafCount: leafCount
@@ -82,28 +66,21 @@ function filterNestedCenter(centerNested, hoz, leftFlatCount) {
82
66
  }
83
67
  }
84
68
  /** 根据输入的 nested 列配置,算出相应的 leveled & flat 配置方便渲染 */
85
-
86
-
87
69
  function calculateLeveledAndFlat(inputNested, rowCount) {
88
70
  var leveled = [];
89
-
90
71
  for (var depth = 0; depth < rowCount; depth++) {
91
72
  leveled.push([]);
92
73
  }
93
-
94
74
  var flat = [];
95
75
  dfs(inputNested, 0);
96
76
  return {
97
77
  flat: flat,
98
78
  leveled: leveled
99
79
  };
100
-
101
80
  function dfs(input, depth) {
102
81
  var leafCount = 0;
103
-
104
82
  for (var i = 0; i < input.length; i++) {
105
83
  var indexedCol = input[i];
106
-
107
84
  if (isLeafNode(indexedCol)) {
108
85
  leafCount += 1;
109
86
  var wrapped = {
@@ -119,7 +96,6 @@ function calculateLeveledAndFlat(inputNested, rowCount) {
119
96
  } else {
120
97
  var dfsRes = dfs(indexedCol.children, depth + 1);
121
98
  leafCount += dfsRes.leafCount;
122
-
123
99
  if (dfsRes.leafCount > 0) {
124
100
  leveled[depth].push({
125
101
  type: 'normal',
@@ -132,26 +108,20 @@ function calculateLeveledAndFlat(inputNested, rowCount) {
132
108
  }
133
109
  }
134
110
  }
135
-
136
111
  return {
137
112
  leafCount: leafCount
138
113
  };
139
114
  }
140
115
  }
141
116
  /** 包装列配置,附加上 colIndex 属性 */
142
-
143
-
144
117
  function attachColIndex(inputNested, colIndexOffset) {
145
118
  return dfs(inputNested, colIndexOffset).result;
146
-
147
119
  function dfs(input, startColIndex) {
148
120
  var result = [];
149
121
  var leafCount = 0;
150
-
151
122
  for (var i = 0; i < input.length; i++) {
152
123
  var col = input[i];
153
124
  var colIndex = startColIndex + leafCount;
154
-
155
125
  if (isLeafNode(col)) {
156
126
  leafCount += 1;
157
127
  result.push({
@@ -161,7 +131,6 @@ function attachColIndex(inputNested, colIndexOffset) {
161
131
  } else {
162
132
  var sub = dfs(col.children, colIndex);
163
133
  leafCount += sub.leafCount;
164
-
165
134
  if (sub.leafCount > 0) {
166
135
  result.push({
167
136
  col: col,
@@ -171,7 +140,6 @@ function attachColIndex(inputNested, colIndexOffset) {
171
140
  }
172
141
  }
173
142
  }
174
-
175
143
  return {
176
144
  result: result,
177
145
  leafCount: leafCount
@@ -179,17 +147,13 @@ function attachColIndex(inputNested, colIndexOffset) {
179
147
  }
180
148
  }
181
149
  /** 计算用于渲染表头的数据结构 */
182
-
183
-
184
150
  function calculateHeaderRenderInfo(_ref, rowCount) {
185
151
  var flat = _flatInstanceProperty(_ref),
186
- nested = _ref.nested,
187
- hoz = _ref.horizontalRenderRange,
188
- useVirtual = _ref.useVirtual;
189
-
152
+ nested = _ref.nested,
153
+ hoz = _ref.horizontalRenderRange,
154
+ useVirtual = _ref.useVirtual;
190
155
  if (useVirtual.header) {
191
156
  var _context, _context2;
192
-
193
157
  var leftPart = calculateLeveledAndFlat(attachColIndex(nested.left, 0), rowCount);
194
158
  var filtered = filterNestedCenter(nested.center, hoz, flat.left.length);
195
159
  var centerPart = calculateLeveledAndFlat(filtered, rowCount);
@@ -206,7 +170,6 @@ function calculateHeaderRenderInfo(_ref, rowCount) {
206
170
  }], _toConsumableArray(_flatInstanceProperty(rightPart))),
207
171
  leveled: _mapInstanceProperty(_context2 = range(rowCount)).call(_context2, function (depth) {
208
172
  var _context3;
209
-
210
173
  return _concatInstanceProperty(_context3 = []).call(_context3, _toConsumableArray(leftPart.leveled[depth]), [{
211
174
  type: 'blank',
212
175
  width: hoz.leftBlank,
@@ -219,35 +182,28 @@ function calculateHeaderRenderInfo(_ref, rowCount) {
219
182
  })
220
183
  };
221
184
  }
222
-
223
185
  return calculateLeveledAndFlat(attachColIndex(nested.full, 0), rowCount);
224
186
  }
225
-
226
187
  export default function TableHeader(_ref2) {
227
188
  var _context4, _context5;
228
-
229
189
  var info = _ref2.info,
230
- theaderPosition = _ref2.theaderPosition,
231
- _rowCount = _ref2.rowCount;
232
-
190
+ theaderPosition = _ref2.theaderPosition,
191
+ _rowCount = _ref2.rowCount,
192
+ stickyRightOffset = _ref2.stickyRightOffset;
233
193
  var nested = info.nested,
234
- flat = _flatInstanceProperty(info),
235
- stickyLeftMap = info.stickyLeftMap,
236
- stickyRightMap = info.stickyRightMap;
237
-
194
+ flat = _flatInstanceProperty(info),
195
+ stickyLeftMap = info.stickyLeftMap,
196
+ stickyRightMap = info.stickyRightMap;
238
197
  var rowCount = _rowCount !== null && _rowCount !== void 0 ? _rowCount : getTreeDepth(nested.full) + 1;
239
198
  var headerRenderInfo = calculateHeaderRenderInfo(info, rowCount);
240
199
  var fullFlatCount = flat.full.length;
241
200
  var leftFlatCount = flat.left.length;
242
201
  var rightFlatCount = flat.right.length;
243
-
244
202
  var thead = _mapInstanceProperty(_context4 = headerRenderInfo.leveled).call(_context4, function (wrappedCols, level) {
245
203
  var _cx2;
246
-
247
- var _wrappedCols = _concatInstanceProperty(wrappedCols).call(wrappedCols); // 左中右区域渲染,分组列可能单独位于一个区域,此时其他区域也需要适配分组的高度
204
+ var _wrappedCols = _concatInstanceProperty(wrappedCols).call(wrappedCols);
205
+ // 左中右区域渲染,分组列可能单独位于一个区域,此时其他区域也需要适配分组的高度
248
206
  // rowspan 需要空白的列头去占位, 需要补充额外的空白列头
249
-
250
-
251
207
  if (rowCount > 1 && ['left', 'right'].indexOf(theaderPosition) > -1) {
252
208
  _wrappedCols.push({
253
209
  type: 'blank',
@@ -256,28 +212,24 @@ export default function TableHeader(_ref2) {
256
212
  isPlacehoder: true
257
213
  });
258
214
  }
259
-
260
215
  var headerCells = _mapInstanceProperty(_wrappedCols).call(_wrappedCols, function (wrapped, index) {
261
216
  var _a, _b, _c;
262
-
263
217
  if (wrapped.type === 'normal') {
264
218
  var _cx;
265
-
266
219
  var colIndex = wrapped.colIndex,
267
- colSpan = wrapped.colSpan,
268
- isLeaf = wrapped.isLeaf,
269
- col = wrapped.col;
220
+ colSpan = wrapped.colSpan,
221
+ isLeaf = wrapped.isLeaf,
222
+ col = wrapped.col;
270
223
  var headerCellProps = (_a = col.headerCellProps) !== null && _a !== void 0 ? _a : {};
271
224
  var positionStyle = {};
272
-
273
225
  if (colIndex < leftFlatCount) {
274
226
  positionStyle.position = 'sticky';
275
227
  positionStyle.left = stickyLeftMap.get(colIndex);
276
228
  } else if (colIndex >= fullFlatCount - rightFlatCount) {
277
229
  positionStyle.position = 'sticky';
278
- positionStyle.right = stickyRightMap.get(colIndex);
230
+ var stickyRightIndex = colSpan > 1 ? colIndex + colSpan - 1 : colIndex;
231
+ positionStyle.right = stickyRightMap.get(stickyRightIndex) + stickyRightOffset;
279
232
  }
280
-
281
233
  var justifyContent = col.align === 'right' ? 'flex-end' : col.align === 'center' ? 'center' : 'flex-start';
282
234
  var cell = /*#__PURE__*/React.createElement("th", _extends({
283
235
  key: colIndex
@@ -310,13 +262,11 @@ export default function TableHeader(_ref2) {
310
262
  }
311
263
  }
312
264
  });
313
-
314
265
  return /*#__PURE__*/React.createElement("tr", {
315
266
  key: level,
316
267
  className: cx(Classes.tableHeaderRow, (_cx2 = {}, _defineProperty(_cx2, Classes.first, level === 0), _defineProperty(_cx2, Classes.last, level === rowCount - 1), _cx2))
317
268
  }, headerCells);
318
269
  });
319
-
320
270
  var colgroup = _mapInstanceProperty(_context5 = _flatInstanceProperty(headerRenderInfo)).call(_context5, function (wrapped) {
321
271
  if (wrapped.type === 'blank') {
322
272
  if (wrapped.width > 0) {
@@ -338,6 +288,5 @@ export default function TableHeader(_ref2) {
338
288
  });
339
289
  }
340
290
  });
341
-
342
291
  return /*#__PURE__*/React.createElement("table", null, /*#__PURE__*/React.createElement("colgroup", null, colgroup), /*#__PURE__*/React.createElement("thead", null, thead));
343
292
  }
@@ -1,25 +1,22 @@
1
1
  import _classCallCheck from "@babel/runtime-corejs3/helpers/classCallCheck";
2
2
  import _createClass from "@babel/runtime-corejs3/helpers/createClass";
3
3
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
4
-
5
4
  /** 在表格的单元格的渲染过程中,先渲染的单元格的 colSpan/rowSpan 会影响到后续单元格是否被渲染
6
5
  * `SpanManager` 会在内部维护一份状态来记录最近渲染单元格的 colSpan/rowSpan,
7
6
  * 方便后续的单元格快速判断 "是否需要跳过渲染" */
8
7
  var SpanManager = /*#__PURE__*/function () {
9
8
  function SpanManager() {
10
9
  _classCallCheck(this, SpanManager);
11
-
12
10
  this.rects = [];
13
11
  }
14
-
15
12
  _createClass(SpanManager, [{
16
13
  key: "testSkip",
17
14
  value: function testSkip(rowIndex, colIndex) {
18
15
  return this.rects.some(function (_ref) {
19
16
  var left = _ref.left,
20
- right = _ref.right,
21
- top = _ref.top,
22
- bottom = _ref.bottom;
17
+ right = _ref.right,
18
+ top = _ref.top,
19
+ bottom = _ref.bottom;
23
20
  return left <= colIndex && colIndex < right && top <= rowIndex && rowIndex < bottom;
24
21
  });
25
22
  }
@@ -27,7 +24,6 @@ var SpanManager = /*#__PURE__*/function () {
27
24
  key: "stripUpwards",
28
25
  value: function stripUpwards(rowIndex) {
29
26
  var _context;
30
-
31
27
  this.rects = _filterInstanceProperty(_context = this.rects).call(_context, function (rect) {
32
28
  return rect.bottom > rowIndex;
33
29
  });
@@ -43,8 +39,6 @@ var SpanManager = /*#__PURE__*/function () {
43
39
  });
44
40
  }
45
41
  }]);
46
-
47
42
  return SpanManager;
48
43
  }();
49
-
50
44
  export { SpanManager as default };