@kdcloudjs/table 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +34 -33
  3. package/dist/@kdcloudjs/table.css +1 -1
  4. package/dist/@kdcloudjs/table.css.map +1 -1
  5. package/dist/@kdcloudjs/table.js +6323 -3240
  6. package/dist/@kdcloudjs/table.js.map +1 -1
  7. package/dist/@kdcloudjs/table.min.css +1 -1
  8. package/dist/@kdcloudjs/table.min.js +32 -24
  9. package/dist/@kdcloudjs/table.min.js.map +1 -1
  10. package/es/_utils/hooks.js +1 -2
  11. package/es/_utils/numberUtil.js +3 -4
  12. package/es/locale/locale.js +1 -2
  13. package/es/table/base/calculations.js +2 -3
  14. package/es/table/base/header.d.ts +6 -2
  15. package/es/table/base/header.js +36 -13
  16. package/es/table/base/helpers/SpanManager.js +1 -1
  17. package/es/table/base/helpers/TableDOMUtils.d.ts +3 -0
  18. package/es/table/base/helpers/TableDOMUtils.js +23 -5
  19. package/es/table/base/helpers/getRichVisibleRectsStream.d.ts +23 -0
  20. package/es/table/base/helpers/getRichVisibleRectsStream.js +216 -0
  21. package/es/table/base/html-table.d.ts +3 -1
  22. package/es/table/base/html-table.js +34 -8
  23. package/es/table/base/interfaces.d.ts +1 -0
  24. package/es/table/base/renderTemplates.d.ts +1 -0
  25. package/es/table/base/renderTemplates.js +344 -0
  26. package/es/table/base/styles.d.ts +14 -0
  27. package/es/table/base/styles.js +20 -8
  28. package/es/table/base/table.d.ts +12 -4
  29. package/es/table/base/table.js +183 -136
  30. package/es/table/base/utils.d.ts +6 -3
  31. package/es/table/base/utils.js +27 -6
  32. package/es/table/common-views.js +1 -1
  33. package/es/table/pipeline/features/autoFill.js +7 -1
  34. package/es/table/pipeline/features/columnDrag.js +109 -41
  35. package/es/table/pipeline/features/columnFilter.js +7 -9
  36. package/es/table/pipeline/features/columnResizeWidth.d.ts +3 -0
  37. package/es/table/pipeline/features/columnResizeWidth.js +11 -4
  38. package/es/table/pipeline/features/contextMenu.js +42 -10
  39. package/es/table/pipeline/features/filter/Filter.js +74 -37
  40. package/es/table/pipeline/features/index.d.ts +1 -0
  41. package/es/table/pipeline/features/index.js +2 -1
  42. package/es/table/pipeline/features/rangeSelection.d.ts +10 -0
  43. package/es/table/pipeline/features/rangeSelection.js +231 -0
  44. package/es/table/pipeline/features/rowDetail.js +37 -15
  45. package/es/table/pipeline/features/singleSelect.js +4 -1
  46. package/es/table/pipeline/features/sort.js +2 -3
  47. package/es/table/pipeline/features/treeMode.js +1 -2
  48. package/es/table/pipeline/pipeline.d.ts +4 -0
  49. package/es/table/pipeline/pipeline.js +32 -5
  50. package/es/table/pivot/cross-table/buildCrossTable.js +1 -2
  51. package/es/table/pivot/cross-tree-table/buildCrossTreeTable.js +1 -2
  52. package/es/table/pivot/pivot-utils/builders.js +1 -2
  53. package/es/table/pivot/pivot-utils/convert-utils.js +1 -2
  54. package/es/table/transforms/autoWidth.js +1 -2
  55. package/es/table/transforms/sort.js +1 -2
  56. package/es/table/transforms/treeMode.js +1 -2
  57. package/es/table/utils/applyTransforms.js +1 -3
  58. package/es/table/utils/browserType.d.ts +6 -0
  59. package/es/table/utils/browserType.js +6 -0
  60. package/es/table/utils/buildTree.js +4 -5
  61. package/es/table/utils/collectNodes.js +1 -2
  62. package/es/table/utils/exportTableAsExcel.js +1 -2
  63. package/es/table/utils/getTreeDepth.js +1 -2
  64. package/es/table/utils/groupBy.js +1 -2
  65. package/es/table/utils/index.d.ts +1 -0
  66. package/es/table/utils/index.js +2 -1
  67. package/es/table/utils/layeredSort.js +5 -2
  68. package/es/table/utils/makeRecursiveMapper.js +4 -5
  69. package/es/table/utils/others.d.ts +1 -1
  70. package/es/table/utils/others.js +20 -14
  71. package/es/table/utils/traverseColumn.js +1 -2
  72. package/es/table/utils/tree-data-helpers/StrictTreeDataHelper.js +4 -5
  73. package/es/table/utils/tree-data-helpers/TreeDataHelper.js +4 -5
  74. package/lib/_utils/formatUtil.js +1 -1
  75. package/lib/_utils/hooks.js +2 -4
  76. package/lib/_utils/numberUtil.js +7 -9
  77. package/lib/_utils/usePopper.js +9 -1
  78. package/lib/config-provider/configProvider.js +9 -1
  79. package/lib/config-provider/index.js +5 -5
  80. package/lib/locale/index.js +14 -6
  81. package/lib/locale/locale.js +2 -4
  82. package/lib/table/base/calculations.js +3 -5
  83. package/lib/table/base/empty.js +9 -1
  84. package/lib/table/base/header.d.ts +6 -2
  85. package/lib/table/base/header.js +33 -10
  86. package/lib/table/base/helpers/SpanManager.js +1 -1
  87. package/lib/table/base/helpers/TableDOMUtils.d.ts +3 -0
  88. package/lib/table/base/helpers/TableDOMUtils.js +21 -5
  89. package/lib/table/base/helpers/getRichVisibleRectsStream.d.ts +23 -0
  90. package/lib/table/base/helpers/getRichVisibleRectsStream.js +246 -0
  91. package/lib/table/base/html-table.d.ts +3 -1
  92. package/lib/table/base/html-table.js +34 -8
  93. package/lib/table/base/index.js +4 -4
  94. package/lib/table/base/interfaces.d.ts +1 -0
  95. package/lib/table/base/renderTemplates.d.ts +1 -0
  96. package/lib/table/base/renderTemplates.js +370 -0
  97. package/lib/table/base/styles.d.ts +14 -0
  98. package/lib/table/base/styles.js +31 -12
  99. package/lib/table/base/table.d.ts +12 -4
  100. package/lib/table/base/table.js +191 -137
  101. package/lib/table/base/utils.d.ts +6 -3
  102. package/lib/table/base/utils.js +47 -10
  103. package/lib/table/common-views.js +2 -2
  104. package/lib/table/pipeline/features/__test__/sort.test.js +5 -3
  105. package/lib/table/pipeline/features/autoFill.js +9 -2
  106. package/lib/table/pipeline/features/columnDrag.js +108 -40
  107. package/lib/table/pipeline/features/columnFilter.js +6 -9
  108. package/lib/table/pipeline/features/columnResizeWidth.d.ts +3 -0
  109. package/lib/table/pipeline/features/columnResizeWidth.js +21 -5
  110. package/lib/table/pipeline/features/contextMenu.js +53 -11
  111. package/lib/table/pipeline/features/filter/DefaultFilterContent.js +10 -2
  112. package/lib/table/pipeline/features/filter/Filter.js +88 -37
  113. package/lib/table/pipeline/features/filter/FilterPanel.js +10 -2
  114. package/lib/table/pipeline/features/filter/index.js +4 -4
  115. package/lib/table/pipeline/features/index.d.ts +1 -0
  116. package/lib/table/pipeline/features/index.js +37 -27
  117. package/lib/table/pipeline/features/rangeSelection.d.ts +10 -0
  118. package/lib/table/pipeline/features/rangeSelection.js +256 -0
  119. package/lib/table/pipeline/features/rowDetail.js +39 -15
  120. package/lib/table/pipeline/features/singleSelect.js +4 -1
  121. package/lib/table/pipeline/features/sort.js +2 -4
  122. package/lib/table/pipeline/features/treeMode.js +2 -4
  123. package/lib/table/pipeline/index.js +11 -3
  124. package/lib/table/pipeline/pipeline.d.ts +4 -0
  125. package/lib/table/pipeline/pipeline.js +33 -7
  126. package/lib/table/pivot/cross-table/buildCrossTable.js +1 -3
  127. package/lib/table/pivot/cross-table/index.js +4 -4
  128. package/lib/table/pivot/cross-tree-table/buildCrossTreeTable.js +1 -3
  129. package/lib/table/pivot/pivot-utils/builders.js +2 -4
  130. package/lib/table/pivot/pivot-utils/convert-utils.js +1 -3
  131. package/lib/table/pivot/pivot-utils/index.js +4 -4
  132. package/lib/table/transforms/autoWidth.js +10 -4
  133. package/lib/table/transforms/columnResize.js +10 -2
  134. package/lib/table/transforms/index.js +32 -32
  135. package/lib/table/transforms/sort.js +10 -4
  136. package/lib/table/transforms/treeMode.js +9 -3
  137. package/lib/table/utils/applyTransforms.js +1 -5
  138. package/lib/table/utils/browserType.d.ts +6 -0
  139. package/lib/table/utils/browserType.js +13 -0
  140. package/lib/table/utils/buildTree.js +1 -3
  141. package/lib/table/utils/collectNodes.js +1 -3
  142. package/lib/table/utils/copyToClipboard.js +1 -1
  143. package/lib/table/utils/element.js +3 -3
  144. package/lib/table/utils/exportTableAsExcel.js +1 -3
  145. package/lib/table/utils/getTreeDepth.js +1 -3
  146. package/lib/table/utils/groupBy.js +1 -3
  147. package/lib/table/utils/index.d.ts +1 -0
  148. package/lib/table/utils/index.js +57 -49
  149. package/lib/table/utils/layeredSort.js +6 -2
  150. package/lib/table/utils/makeRecursiveMapper.js +1 -3
  151. package/lib/table/utils/others.d.ts +1 -1
  152. package/lib/table/utils/others.js +23 -18
  153. package/lib/table/utils/traverseColumn.js +1 -3
  154. package/lib/table/utils/tree-data-helpers/StrictTreeDataHelper.js +5 -7
  155. package/lib/table/utils/tree-data-helpers/TreeDataHelper.js +5 -7
  156. package/package.json +6 -2
  157. package/dist/kd-table.css +0 -422
  158. package/dist/kd-table.css.map +0 -1
  159. package/dist/kd-table.js +0 -38578
  160. package/dist/kd-table.js.map +0 -1
  161. package/dist/kd-table.min.css +0 -9
  162. package/dist/kd-table.min.js +0 -208
  163. package/dist/kd-table.min.js.map +0 -1
  164. package/es/table/base/helpers/__test__/visible-part.test.d.ts +0 -1
  165. package/es/table/base/helpers/__test__/visible-part.test.js +0 -28
  166. package/es/table/base/helpers/visible-part.d.ts +0 -23
  167. package/es/table/base/helpers/visible-part.js +0 -58
  168. package/lib/table/base/helpers/__test__/visible-part.test.d.ts +0 -1
  169. package/lib/table/base/helpers/__test__/visible-part.test.js +0 -31
  170. package/lib/table/base/helpers/visible-part.d.ts +0 -23
  171. package/lib/table/base/helpers/visible-part.js +0 -72
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
2
2
  import _extends from "@babel/runtime-corejs3/helpers/extends";
3
3
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
4
- import { makeRecursiveMapper, mergeCellProps, collectNodes } from '../../utils';
4
+ import { makeRecursiveMapper, mergeCellProps, collectNodes, isLeafNode } from '../../utils';
5
5
  import { FILL_COLUMN_CODE } from './autoFill';
6
6
  var stateKey = 'columnDrag';
7
7
 
@@ -23,16 +23,16 @@ export function columnDrag() {
23
23
  cloumnsSortData = _pipeline$getStateAtK.cloumnsSortData,
24
24
  cloumnsTranslateData = _pipeline$getStateAtK.cloumnsTranslateData;
25
25
 
26
- var columns = pipeline.getColumns();
27
-
28
- if (cloumnsSortData) {
29
- columns = sortColumns(columns, cloumnsSortData);
30
- }
26
+ var columns = pipeline.getColumns(); // if (cloumnsSortData) {
27
+ // columns = sortColumns(columns, cloumnsSortData)
28
+ // }
31
29
 
32
30
  pipeline.columns(_filterInstanceProperty(columns).call(columns, function (column) {
33
31
  return column;
34
32
  }));
35
- return pipeline.mapColumns(makeRecursiveMapper(function (col) {
33
+ return pipeline.mapColumns(makeRecursiveMapper(function (col, recursiveFlatMapInfo) {
34
+ var path = recursiveFlatMapInfo.path,
35
+ isLeaf = recursiveFlatMapInfo.isLeaf;
36
36
  var style = cloumnsTranslateData ? {
37
37
  transition: '.3s',
38
38
  transform: "translate3d(".concat(cloumnsTranslateData[col.code], "px, 0px, 0px)")
@@ -48,7 +48,7 @@ export function columnDrag() {
48
48
  });
49
49
  },
50
50
  headerCellProps: mergeCellProps(col.headerCellProps, {
51
- onMouseDown: function onMouseDown(e) {
51
+ onMouseDown: !isLeaf || path.length > 1 ? undefined : function (e) {
52
52
  if (e.button !== 0) {
53
53
  return;
54
54
  } // const cx = e.clientX
@@ -81,6 +81,7 @@ export function columnDrag() {
81
81
  var rect = e.currentTarget.parentElement.getClientRects()[0];
82
82
  var startX = rect.left;
83
83
  var moveData = [];
84
+ var allColumns = collectNodes(columns);
84
85
 
85
86
  function handleMouseMove(e) {
86
87
  if (e.clientX - startX < 20) {
@@ -90,21 +91,7 @@ export function columnDrag() {
90
91
  }
91
92
 
92
93
  document.body.style.userSelect = 'none';
93
- currentTarget.style.cursor = 'move'; // 计算平移位置
94
-
95
- var replaceIndex = 0;
96
- var totalWitdth = columns[replaceIndex].width;
97
-
98
- while (totalWitdth < e.clientX - startX && replaceIndex < columns.length - 1) {
99
- replaceIndex++;
100
- totalWitdth += columns[replaceIndex].width;
101
- } // 重置位置信息
102
-
103
-
104
- cloumnsTranslateData = {};
105
- columns.forEach(function (item) {
106
- cloumnsTranslateData[item.code] = 0;
107
- }); // 循环计算每一个的位置
94
+ currentTarget.style.cursor = 'move'; // 循环计算每一个的位置
108
95
  // if (startIndex !== replaceIndex) {
109
96
  // const optionColumn = columns[startIndex]
110
97
  // const move = startIndex > replaceIndex ? 1 : -1
@@ -126,11 +113,24 @@ export function columnDrag() {
126
113
  // }
127
114
  // index++
128
115
  // }
129
- // 需要取最新startIndex, 不能直接用makeRecursiveMapper提供的startIndex(因为map时还没添加选择列、充满列等后面use添加的列)
116
+ // 重置位置信息
117
+
118
+ cloumnsTranslateData = {};
119
+ allColumns.forEach(function (item) {
120
+ cloumnsTranslateData[item.code] = 0;
121
+ }); // 计算平移位置
122
+
123
+ var replaceIndex = 0;
124
+ var totalWitdth = getColumnWidth(columns[replaceIndex]);
125
+
126
+ while (totalWitdth < e.clientX - startX && replaceIndex < columns.length - 1) {
127
+ replaceIndex++;
128
+ totalWitdth += getColumnWidth(columns[replaceIndex]);
129
+ } // 需要取最新startIndex, 不能直接用makeRecursiveMapper提供的startIndex(因为map时还没添加选择列、充满列等后面use添加的列)
130
+
130
131
 
131
132
  var startIndex;
132
- var leafColumns = collectNodes(collectNodes(columns, 'leaf-only'));
133
- leafColumns.forEach(function (column, index) {
133
+ columns.forEach(function (column, index) {
134
134
  if (column.code === col.code) {
135
135
  startIndex = index;
136
136
  }
@@ -141,11 +141,25 @@ export function columnDrag() {
141
141
  if (startIndex > replaceIndex) {
142
142
  // 左移
143
143
  while (index < startIndex) {
144
- var code = columns[index].code;
145
-
146
- if (code && code !== FILL_COLUMN_CODE && !columns[index].lock) {
144
+ var _columns$index = columns[index],
145
+ code = _columns$index.code,
146
+ lock = _columns$index.lock,
147
+ width = _columns$index.width,
148
+ children = _columns$index.children;
149
+
150
+ if (enableMove({
151
+ code: code,
152
+ lock: lock
153
+ })) {
147
154
  cloumnsTranslateData[code] += optionColumn.width;
148
- cloumnsTranslateData[optionColumn.code] -= columns[index].width;
155
+
156
+ if (isLeafNode(columns[index])) {
157
+ cloumnsTranslateData[optionColumn.code] -= width;
158
+ } else {
159
+ cloumnsTranslateData[optionColumn.code] -= getColumnWidth(columns[index]);
160
+ moveAllChildren(children, cloumnsTranslateData, optionColumn.width);
161
+ }
162
+
149
163
  columnMoved = true;
150
164
  }
151
165
 
@@ -154,17 +168,30 @@ export function columnDrag() {
154
168
  } else if (startIndex < replaceIndex) {
155
169
  // 右移
156
170
  while (startIndex < index) {
157
- var _code = columns[index].code;
158
-
159
- if (_code && _code !== FILL_COLUMN_CODE && !columns[index].lock) {
171
+ var _columns$index2 = columns[index],
172
+ _code = _columns$index2.code,
173
+ _lock = _columns$index2.lock,
174
+ _width = _columns$index2.width,
175
+ _children = _columns$index2.children;
176
+
177
+ if (enableMove({
178
+ code: _code,
179
+ lock: _lock
180
+ })) {
160
181
  cloumnsTranslateData[_code] -= optionColumn.width;
161
- cloumnsTranslateData[optionColumn.code] += columns[index].width;
182
+
183
+ if (isLeafNode(columns[index])) {
184
+ cloumnsTranslateData[optionColumn.code] += _width;
185
+ } else {
186
+ cloumnsTranslateData[optionColumn.code] += getColumnWidth(columns[index]);
187
+ moveAllChildren(_children, cloumnsTranslateData, optionColumn.width, true);
188
+ }
189
+
162
190
  columnMoved = true;
163
191
  }
164
192
 
165
193
  index--;
166
194
  }
167
- } else {// 不动或者移动回原位
168
195
  }
169
196
 
170
197
  window.requestAnimationFrame(function () {
@@ -200,9 +227,14 @@ export function columnDrag() {
200
227
  if (startIndex > replaceIndex) {
201
228
  // 左移
202
229
  while (index < startIndex) {
203
- var code = columns[index].code;
204
-
205
- if (code && code !== FILL_COLUMN_CODE && !columns[index].lock) {
230
+ var _columns$index3 = columns[index],
231
+ code = _columns$index3.code,
232
+ lock = _columns$index3.lock;
233
+
234
+ if (enableMove({
235
+ code: code,
236
+ lock: lock
237
+ })) {
206
238
  cloumnsSortData[code] += 1;
207
239
  cloumnsSortData[optionColumn.code] -= 1;
208
240
  columnMoved = true;
@@ -213,9 +245,14 @@ export function columnDrag() {
213
245
  } else if (startIndex < replaceIndex) {
214
246
  // 右移
215
247
  while (index > startIndex) {
216
- var _code2 = columns[index].code;
217
-
218
- if (_code2 && _code2 !== FILL_COLUMN_CODE && !columns[index].lock) {
248
+ var _columns$index4 = columns[index],
249
+ _code2 = _columns$index4.code,
250
+ _lock2 = _columns$index4.lock;
251
+
252
+ if (enableMove({
253
+ code: _code2,
254
+ lock: _lock2
255
+ })) {
219
256
  cloumnsSortData[_code2] -= 1;
220
257
  cloumnsSortData[optionColumn.code] += 1;
221
258
  columnMoved = true;
@@ -262,4 +299,35 @@ export function columnDrag() {
262
299
  });
263
300
  }));
264
301
  };
302
+ }
303
+
304
+ function enableMove(_ref2) {
305
+ var lock = _ref2.lock,
306
+ code = _ref2.code;
307
+ return code && code !== FILL_COLUMN_CODE && !lock;
308
+ }
309
+
310
+ function getColumnWidth(col) {
311
+ if (col.children) {
312
+ return col.children.reduce(function (acc, col) {
313
+ return acc + getColumnWidth(col);
314
+ }, 0);
315
+ }
316
+
317
+ return col.width;
318
+ }
319
+
320
+ function moveAllChildren(cols, cloumnsTranslateData, width, isMinus) {
321
+ cols.forEach(function (col) {
322
+ var _a;
323
+
324
+ var code = col.code,
325
+ children = col.children;
326
+ var movedWidth = (_a = cloumnsTranslateData[code]) !== null && _a !== void 0 ? _a : 0;
327
+ cloumnsTranslateData[code] = movedWidth + (isMinus ? -width : width);
328
+
329
+ if (!isLeafNode(col)) {
330
+ moveAllChildren(children, cloumnsTranslateData, width);
331
+ }
332
+ });
265
333
  }
@@ -8,11 +8,10 @@ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/insta
8
8
  import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
9
9
  import _valuesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/values";
10
10
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
11
- import _reduceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/reduce";
12
11
  import React from 'react';
13
12
  import cx from 'classnames';
14
13
  import { internals } from '../../internals';
15
- import { isLeafNode, mergeCellProps, collectNodes } from '../../utils';
14
+ import { isLeafNode, collectNodes } from '../../utils';
16
15
  import { Filter, DEFAULT_FILTER_OPTIONS } from './filter';
17
16
  import { Classes } from '../../base/styles';
18
17
  var stateKey = 'filter';
@@ -94,12 +93,11 @@ export function filter() {
94
93
  isFilterActive: filterActive,
95
94
  className: cx((_cx = {}, _defineProperty(_cx, Classes.tableFilterTrigger, true), _defineProperty(_cx, "active", filterActive), _cx)),
96
95
  stopClickEventPropagation: stopClickEventPropagation
97
- })]);
98
- result.headerCellProps = mergeCellProps(col.headerCellProps, {
99
- style: {
100
- paddingRight: '18px'
101
- }
102
- });
96
+ })]); // result.headerCellProps = mergeCellProps(col.headerCellProps, {
97
+ // style: {
98
+ // paddingRight: '18px'
99
+ // }
100
+ // })
103
101
  }
104
102
 
105
103
  if (!isLeafNode(col)) {
@@ -157,7 +155,7 @@ export function filter() {
157
155
  });
158
156
  }
159
157
 
160
- return _reduceInstanceProperty(dataSource).call(dataSource, function (pre, record) {
158
+ return dataSource.reduce(function (pre, record) {
161
159
  if (isMatchedFilterCondition(record)) {
162
160
  return _concatInstanceProperty(pre).call(pre, [record]);
163
161
  }
@@ -1,3 +1,5 @@
1
+ import React from 'react';
2
+ import { ArtColumn } from '../../interfaces';
1
3
  import { TablePipeline } from '../pipeline';
2
4
  interface ColumnSize {
3
5
  [key: string]: number;
@@ -14,6 +16,7 @@ export interface ColumnResizeOptions {
14
16
  fallbackSize?: number;
15
17
  /** 列的最大宽度,默认为 1000 */
16
18
  maxSize?: number;
19
+ doubleClickCallback?(e: React.MouseEvent<HTMLSpanElement>, col: ArtColumn): void;
17
20
  onChangeSize?(nextSize: ColumnSize): void;
18
21
  afterChangeSize?(nextSize: ColumnSize, changedColumnSize: ChangedColumnSize[]): void;
19
22
  }
@@ -3,7 +3,6 @@ import _taggedTemplateLiteral from "@babel/runtime-corejs3/helpers/taggedTemplat
3
3
 
4
4
  var _templateObject, _templateObject2;
5
5
 
6
- import _reduceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/reduce";
7
6
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
8
7
  import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
9
8
  import React from 'react';
@@ -74,6 +73,10 @@ export function columnResize() {
74
73
  });
75
74
  };
76
75
 
76
+ var handleDoubleClick = function handleDoubleClick(e, col) {
77
+ opts === null || opts === void 0 ? void 0 : opts.doubleClickCallback(e, col);
78
+ };
79
+
77
80
  var handleMouseDown = function handleMouseDown(e, col) {
78
81
  window.addEventListener('selectstart', disableSelect);
79
82
  var changedColumnSize = {};
@@ -92,12 +95,10 @@ export function columnResize() {
92
95
 
93
96
  if ((children === null || children === void 0 ? void 0 : children.length) > 0) {
94
97
  var leafChildColumns = collectNodes(children, 'leaf-only');
95
-
96
- var childrenWidthSum = _reduceInstanceProperty(leafChildColumns).call(leafChildColumns, function (sum, _ref2) {
98
+ var childrenWidthSum = leafChildColumns.reduce(function (sum, _ref2) {
97
99
  var code = _ref2.code;
98
100
  return sum + columnSize[code];
99
101
  }, 0);
100
-
101
102
  leafChildColumns.forEach(function (_ref3, index) {
102
103
  var code = _ref3.code;
103
104
  var startSize = columnSize[code];
@@ -155,11 +156,17 @@ export function columnResize() {
155
156
  width: (_a = columnSize[code]) !== null && _a !== void 0 ? _a : width,
156
157
  title: /*#__PURE__*/React.createElement(React.Fragment, null, prevTitle, (features === null || features === void 0 ? void 0 : features.resizeable) !== false && (isGroup ? /*#__PURE__*/React.createElement(TableHeaderGroupCellResize, {
157
158
  className: Classes.tableHeaderCellResize,
159
+ onDoubleClick: function onDoubleClick(e) {
160
+ return handleDoubleClick(e, col);
161
+ },
158
162
  onMouseDown: function onMouseDown(e) {
159
163
  return handleMouseDown(e, col);
160
164
  }
161
165
  }) : /*#__PURE__*/React.createElement(TableHeaderCellResize, {
162
166
  className: Classes.tableHeaderCellResize,
167
+ onDoubleClick: function onDoubleClick(e) {
168
+ return handleDoubleClick(e, col);
169
+ },
163
170
  onMouseDown: function onMouseDown(e) {
164
171
  return handleMouseDown(e, col);
165
172
  }
@@ -1,13 +1,16 @@
1
+ import _createClass from "@babel/runtime-corejs3/helpers/createClass";
1
2
  import _classCallCheck from "@babel/runtime-corejs3/helpers/classCallCheck";
3
+ import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
2
4
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
3
5
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
4
6
  import React, { useRef, useEffect } from 'react';
5
7
  import ReactDOM from 'react-dom';
8
+ import cx from 'classnames';
6
9
  import { ContextMenuStyleWrap } from '../../common-views';
7
10
  import { copyDataToClipboard, executeOnTempElement, console, getEventPath, isElementInEventPath, getTargetEleInEventPath } from '../../utils';
8
11
  import { findByTree } from '../../utils/others';
9
12
  import { internals } from '../../internals';
10
- import { MenuClasses } from '../../base/styles';
13
+ import { Classes, MenuClasses } from '../../base/styles';
11
14
  var stateKey = 'contextMenu';
12
15
  export function contextMenu() {
13
16
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -45,6 +48,10 @@ export function contextMenu() {
45
48
  };
46
49
 
47
50
  var onContextMenu = function onContextMenu(e) {
51
+ if (suppressShowContextMenu(e)) {
52
+ return;
53
+ }
54
+
48
55
  e.preventDefault();
49
56
  showContextMenu(e);
50
57
  };
@@ -53,7 +60,7 @@ export function contextMenu() {
53
60
  onContextMenu: onContextMenu
54
61
  });
55
62
 
56
- var getContextMenuOptions = function getContextMenuOptions(record, column, value) {
63
+ var getContextMenuOptions = function getContextMenuOptions(record, column, value, event) {
57
64
  var defaultMenuOptions = [];
58
65
 
59
66
  if (column) {
@@ -64,7 +71,8 @@ export function contextMenu() {
64
71
  var params = {
65
72
  record: record,
66
73
  column: column,
67
- value: value
74
+ value: value,
75
+ event: event
68
76
  };
69
77
  return opts.getContextMenuItems(params);
70
78
  }
@@ -95,10 +103,10 @@ export function contextMenu() {
95
103
 
96
104
  var record = dataSource[rowIndex];
97
105
  var column = code !== undefined && findByTree(pipeline.getColumns(), function (item, index) {
98
- return item.code === code ? index : -1;
106
+ return item.code === code;
99
107
  });
100
108
  var value = column && record && internals.safeGetValue(column, record, rowIndex);
101
- var options = getContextMenuOptions(record, column, value);
109
+ var options = getContextMenuOptions(record, column, value, e);
102
110
 
103
111
  if (options.length === 0) {
104
112
  console.warn('context menu options is empty');
@@ -180,6 +188,7 @@ function Menu(props) {
180
188
  }),
181
189
  name: item.name,
182
190
  action: item.action,
191
+ disabled: item.disabled,
183
192
  hideContextMenu: hideContextMenu
184
193
  });
185
194
  })));
@@ -193,6 +202,10 @@ function MenuItem(props) {
193
202
  var itemRef = useRef();
194
203
 
195
204
  var handleClick = function handleClick() {
205
+ if (disabled) {
206
+ return;
207
+ }
208
+
196
209
  hideContextMenu();
197
210
  typeof action === 'function' && action();
198
211
  };
@@ -224,7 +237,7 @@ function MenuItem(props) {
224
237
  };
225
238
 
226
239
  return /*#__PURE__*/React.createElement("div", {
227
- className: MenuClasses.menuOption,
240
+ className: cx(MenuClasses.menuOption, _defineProperty({}, MenuClasses.menuOptionDisable, disabled)),
228
241
  ref: itemRef,
229
242
  onClick: handleClick,
230
243
  onMouseEnter: handleMouseEnter,
@@ -234,7 +247,7 @@ function MenuItem(props) {
234
247
  }, name));
235
248
  }
236
249
 
237
- var MenuHelper = function MenuHelper() {
250
+ var MenuHelper = /*#__PURE__*/_createClass(function MenuHelper() {
238
251
  var _this = this;
239
252
 
240
253
  _classCallCheck(this, MenuHelper);
@@ -247,7 +260,7 @@ var MenuHelper = function MenuHelper() {
247
260
  _this.hidePopup && _this.hidePopup();
248
261
  _this.hidePopup = null;
249
262
  };
250
- };
263
+ });
251
264
  /** 是否点击是外部 start */
252
265
 
253
266
 
@@ -331,13 +344,13 @@ function keepWithinBounds(popupParent, ePopup, x, y) {
331
344
  var minWidth = Math.min(ePopupRect.width, 120);
332
345
  ePopup.style.minWidth = minWidth + 'px';
333
346
  var maxX = parentWidth - minWidth;
334
- x = Math.min(Math.max(x, 0), Math.abs(maxX)); //目前位置,最大支持的位置
347
+ x = Math.min(Math.max(x, 0), Math.abs(maxX)); // 目前位置,最大支持的位置
335
348
  }
336
349
 
337
350
  if (y) {
338
351
  var minHeight = Math.min(ePopupRect.height, 180);
339
352
  var maxY = parentHeight - minHeight;
340
- y = Math.min(Math.max(y, 0), Math.abs(maxY)); //目前位置,最大支持的位置
353
+ y = Math.min(Math.max(y, 0), Math.abs(maxY)); // 目前位置,最大支持的位置
341
354
  }
342
355
 
343
356
  return {
@@ -358,6 +371,25 @@ function getRowEleForEvent(event, dataSource) {
358
371
  return getRowEleInEventPath(getEventPath(event));
359
372
  }
360
373
  /** 获得点击的元素 end */
374
+ // 禁止弹出右键菜单
375
+
376
+
377
+ function suppressShowContextMenu(e) {
378
+ var path = getEventPath(e.nativeEvent);
379
+ var pointIndex = 0;
380
+
381
+ while (pointIndex < path.length) {
382
+ var ele = path[pointIndex];
383
+
384
+ if (ele.classList.contains(Classes.tableBody) || ele.classList.contains(Classes.tableFooter)) {
385
+ return false;
386
+ }
387
+
388
+ pointIndex++;
389
+ }
390
+
391
+ return true;
392
+ } // 默认选项
361
393
 
362
394
 
363
395
  function getCopyItem(v) {
@@ -1,38 +1,86 @@
1
+ import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
1
2
  import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
2
3
  import _taggedTemplateLiteral from "@babel/runtime-corejs3/helpers/taggedTemplateLiteral";
3
4
 
4
5
  var _templateObject;
5
6
 
6
- import React from 'react';
7
+ import React, { useEffect } from 'react';
7
8
  import { createPortal } from 'react-dom';
8
9
  import styled from 'styled-components';
9
10
  import { Classes } from '../../../base/styles';
10
11
  import FilterPanel from './FilterPanel';
11
12
  import DefaultFilterContent from './DefaultFilterContent';
12
13
  import { calculatePopupRelative } from '../../../utils';
13
- var HEADER_ICON_OFFSET_Y = 6 + 1; //padding-top + border
14
+ import { addResizeObserver } from '../../../base/utils';
15
+ import cx from 'classnames';
16
+ var HEADER_ICON_OFFSET_Y = 6 + 1; // padding-top + border
14
17
 
15
- var HEADER_ICON_OFFSET_X = 16 + 1; //padding-left+ border
18
+ var HEADER_ICON_OFFSET_X = 16 + 1; // padding-left+ border
16
19
 
17
- var FilterIconSpanStyle = styled.span(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: absolute;\n right: 4px;\n cursor: pointer;\n transform: translateY(-50%);\n top: 50%;\n height: 12px; \n"])));
20
+ var FilterIconSpanStyle = styled.span(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n // position: absolute;\n // right: 4px;\n // cursor: pointer;\n // transform: translateY(-50%);\n // top: 50%;\n // height: 12px; \n"])));
18
21
 
19
- function Filter(_ref) {
20
- var _ref$size = _ref.size,
21
- size = _ref$size === void 0 ? 12 : _ref$size,
22
- style = _ref.style,
23
- className = _ref.className,
24
- FilterPanelContent = _ref.FilterPanelContent,
22
+ function Panel(_ref) {
23
+ var ele = _ref.ele,
25
24
  filterIcon = _ref.filterIcon,
26
- setFilter = _ref.setFilter,
27
- setFilterModel = _ref.setFilterModel,
28
- filterModel = _ref.filterModel,
29
- isFilterActive = _ref.isFilterActive,
30
- stopClickEventPropagation = _ref.stopClickEventPropagation;
25
+ hidePanel = _ref.hidePanel,
26
+ renderPanelContent = _ref.renderPanelContent;
27
+ var filterPanelRef = React.useRef(null);
31
28
 
32
- var _React$useState = React.useState(false),
29
+ var _React$useState = React.useState(calculatePopupRelative(ele, document.body, {
30
+ x: HEADER_ICON_OFFSET_X,
31
+ y: HEADER_ICON_OFFSET_Y
32
+ })),
33
33
  _React$useState2 = _slicedToArray(_React$useState, 2),
34
- showPanel = _React$useState2[0],
35
- setShowPanel = _React$useState2[1];
34
+ position = _React$useState2[0],
35
+ setPosition = _React$useState2[1];
36
+
37
+ var style = {
38
+ position: 'absolute',
39
+ zIndex: 1050
40
+ };
41
+
42
+ var handleFilterPanelResize = function handleFilterPanelResize(resize) {
43
+ setPosition(calculatePopupRelative(ele, document.body, {
44
+ x: HEADER_ICON_OFFSET_X,
45
+ y: HEADER_ICON_OFFSET_Y
46
+ }));
47
+ };
48
+
49
+ useEffect(function () {
50
+ var resizeObserver = addResizeObserver(filterPanelRef.current.children[0], handleFilterPanelResize);
51
+ return function () {
52
+ resizeObserver && resizeObserver.disconnect();
53
+ };
54
+ }, []);
55
+ return /*#__PURE__*/React.createElement("div", {
56
+ ref: filterPanelRef
57
+ }, /*#__PURE__*/React.createElement(FilterPanel, {
58
+ style: style,
59
+ onClose: hidePanel,
60
+ position: position,
61
+ filterIcon: filterIcon
62
+ }, renderPanelContent()));
63
+ }
64
+
65
+ function Filter(_ref2) {
66
+ var _cx;
67
+
68
+ var _ref2$size = _ref2.size,
69
+ size = _ref2$size === void 0 ? 12 : _ref2$size,
70
+ style = _ref2.style,
71
+ className = _ref2.className,
72
+ FilterPanelContent = _ref2.FilterPanelContent,
73
+ filterIcon = _ref2.filterIcon,
74
+ setFilter = _ref2.setFilter,
75
+ setFilterModel = _ref2.setFilterModel,
76
+ filterModel = _ref2.filterModel,
77
+ isFilterActive = _ref2.isFilterActive,
78
+ stopClickEventPropagation = _ref2.stopClickEventPropagation;
79
+
80
+ var _React$useState3 = React.useState(false),
81
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
82
+ showPanel = _React$useState4[0],
83
+ setShowPanel = _React$useState4[1];
36
84
 
37
85
  var iconRef = React.useRef(null);
38
86
 
@@ -62,23 +110,6 @@ function Filter(_ref) {
62
110
  }
63
111
  };
64
112
 
65
- var renderPanel = function renderPanel(ele) {
66
- var position = calculatePopupRelative(ele, document.body, {
67
- x: HEADER_ICON_OFFSET_X,
68
- y: HEADER_ICON_OFFSET_Y
69
- });
70
- var style = {
71
- position: 'absolute',
72
- zIndex: 1050
73
- };
74
- return /*#__PURE__*/React.createElement(FilterPanel, {
75
- style: style,
76
- onClose: hidePanel,
77
- position: position,
78
- filterIcon: filterIcon
79
- }, renderPanelContent());
80
- };
81
-
82
113
  var handleIconClick = function handleIconClick(e) {
83
114
  if (stopClickEventPropagation) {
84
115
  e.stopPropagation();
@@ -87,9 +118,10 @@ function Filter(_ref) {
87
118
  setShowPanel(true);
88
119
  };
89
120
 
121
+ var iconClassName = cx((_cx = {}, _defineProperty(_cx, className, true), _defineProperty(_cx, 'filter-panel-open', showPanel), _cx));
90
122
  return /*#__PURE__*/React.createElement(FilterIconSpanStyle, {
91
123
  style: style,
92
- className: className,
124
+ className: iconClassName,
93
125
  onMouseDown: handleMouseDown,
94
126
  ref: iconRef
95
127
  }, /*#__PURE__*/React.createElement("span", {
@@ -105,7 +137,12 @@ function Filter(_ref) {
105
137
  "aria-hidden": "true"
106
138
  }, /*#__PURE__*/React.createElement("path", {
107
139
  d: "M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3\n 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5\n 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z"
108
- }))), showPanel && /*#__PURE__*/createPortal(renderPanel(iconRef.current), document.body));
140
+ }))), showPanel && /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(Panel, {
141
+ ele: iconRef.current,
142
+ filterIcon: filterIcon,
143
+ hidePanel: hidePanel,
144
+ renderPanelContent: renderPanelContent
145
+ }), document.body));
109
146
  }
110
147
 
111
148
  export default Filter;
@@ -14,3 +14,4 @@ export { columnDrag, ColumnDragOptions } from './columnDrag';
14
14
  export { columnResize, ColumnResizeOptions } from './columnResizeWidth';
15
15
  export { contextMenu, ContextMenuFeatureOptions } from './contextMenu';
16
16
  export { filter, FilterFeatureOptions } from './columnFilter';
17
+ export { rangeSelection, RangeSelectionFeatureOptions } from './rangeSelection';
@@ -13,4 +13,5 @@ export { treeSelect } from './treeSelect';
13
13
  export { columnDrag } from './columnDrag';
14
14
  export { columnResize } from './columnResizeWidth';
15
15
  export { contextMenu } from './contextMenu';
16
- export { filter } from './columnFilter';
16
+ export { filter } from './columnFilter';
17
+ export { rangeSelection } from './rangeSelection';
@@ -0,0 +1,10 @@
1
+ import { TablePipeline } from '../pipeline';
2
+ export interface RangeSelectionFeatureOptions {
3
+ /** 范围选中回调函数 */
4
+ rangeSelectedChange?(params: any): void;
5
+ /** 是否阻止keydown的默认行为 */
6
+ preventkDefaultOfKeyDownEvent?: boolean;
7
+ }
8
+ export declare const rangeSelectionKey = "rangeSelection";
9
+ export declare const lastClickCell = "lastClickCell";
10
+ export declare function rangeSelection(opts: RangeSelectionFeatureOptions): (pipeline: TablePipeline) => TablePipeline;