@kdcloudjs/table 1.0.1 → 1.0.4

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 (207) 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 +6555 -3388
  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 +3 -4
  14. package/es/table/base/empty.js +2 -2
  15. package/es/table/base/header.d.ts +6 -2
  16. package/es/table/base/header.js +41 -22
  17. package/es/table/base/helpers/SpanManager.js +1 -1
  18. package/es/table/base/helpers/TableDOMUtils.d.ts +3 -0
  19. package/es/table/base/helpers/TableDOMUtils.js +23 -5
  20. package/es/table/base/helpers/getRichVisibleRectsStream.d.ts +23 -0
  21. package/es/table/base/helpers/getRichVisibleRectsStream.js +216 -0
  22. package/es/table/base/html-table.d.ts +3 -1
  23. package/es/table/base/html-table.js +43 -26
  24. package/es/table/base/interfaces.d.ts +1 -0
  25. package/es/table/base/renderTemplates.d.ts +1 -0
  26. package/es/table/base/renderTemplates.js +344 -0
  27. package/es/table/base/styles.d.ts +24 -0
  28. package/es/table/base/styles.js +31 -9
  29. package/es/table/base/table.d.ts +12 -4
  30. package/es/table/base/table.js +183 -136
  31. package/es/table/base/utils.d.ts +6 -3
  32. package/es/table/base/utils.js +27 -6
  33. package/es/table/common-views.js +3 -3
  34. package/es/table/pipeline/features/autoFill.js +7 -1
  35. package/es/table/pipeline/features/columnDrag.js +168 -59
  36. package/es/table/pipeline/features/columnFilter.js +7 -9
  37. package/es/table/pipeline/features/columnResizeWidth.d.ts +3 -0
  38. package/es/table/pipeline/features/columnResizeWidth.js +11 -4
  39. package/es/table/pipeline/features/contextMenu.js +78 -31
  40. package/es/table/pipeline/features/filter/Filter.js +74 -37
  41. package/es/table/pipeline/features/index.d.ts +1 -0
  42. package/es/table/pipeline/features/index.js +2 -1
  43. package/es/table/pipeline/features/multiSelect.js +85 -79
  44. package/es/table/pipeline/features/rangeSelection.d.ts +10 -0
  45. package/es/table/pipeline/features/rangeSelection.js +231 -0
  46. package/es/table/pipeline/features/rowDetail.js +39 -16
  47. package/es/table/pipeline/features/rowGrouping.js +2 -1
  48. package/es/table/pipeline/features/singleSelect.js +4 -1
  49. package/es/table/pipeline/features/sort.js +2 -3
  50. package/es/table/pipeline/features/treeMode.js +4 -4
  51. package/es/table/pipeline/pipeline.d.ts +8 -0
  52. package/es/table/pipeline/pipeline.js +49 -5
  53. package/es/table/pivot/cross-table/buildCrossTable.js +1 -2
  54. package/es/table/pivot/cross-tree-table/buildCrossTreeTable.js +1 -2
  55. package/es/table/pivot/pivot-utils/builders.js +1 -2
  56. package/es/table/pivot/pivot-utils/convert-utils.js +5 -4
  57. package/es/table/transforms/autoWidth.js +1 -2
  58. package/es/table/transforms/sort.js +1 -2
  59. package/es/table/transforms/treeMode.js +1 -2
  60. package/es/table/utils/applyTransforms.js +1 -3
  61. package/es/table/utils/browserType.d.ts +6 -0
  62. package/es/table/utils/browserType.js +6 -0
  63. package/es/table/utils/buildTree.js +4 -5
  64. package/es/table/utils/collectNodes.js +1 -2
  65. package/es/table/utils/exportTableAsExcel.js +1 -2
  66. package/es/table/utils/getTreeDepth.js +1 -2
  67. package/es/table/utils/groupBy.js +1 -2
  68. package/es/table/utils/index.d.ts +1 -0
  69. package/es/table/utils/index.js +2 -1
  70. package/es/table/utils/layeredSort.js +5 -2
  71. package/es/table/utils/makeRecursiveMapper.js +4 -5
  72. package/es/table/utils/others.d.ts +1 -1
  73. package/es/table/utils/others.js +20 -14
  74. package/es/table/utils/traverseColumn.js +1 -2
  75. package/es/table/utils/tree-data-helpers/StrictTreeDataHelper.js +4 -5
  76. package/es/table/utils/tree-data-helpers/TreeDataHelper.js +4 -5
  77. package/lib/_utils/formatUtil.js +1 -1
  78. package/lib/_utils/hooks.js +2 -4
  79. package/lib/_utils/numberUtil.js +7 -9
  80. package/lib/_utils/usePopper.js +9 -1
  81. package/lib/config-provider/configProvider.js +9 -1
  82. package/lib/config-provider/index.js +5 -5
  83. package/lib/locale/index.js +14 -6
  84. package/lib/locale/locale.js +2 -4
  85. package/lib/table/base/calculations.js +4 -6
  86. package/lib/table/base/empty.js +11 -3
  87. package/lib/table/base/header.d.ts +6 -2
  88. package/lib/table/base/header.js +39 -19
  89. package/lib/table/base/helpers/SpanManager.js +1 -1
  90. package/lib/table/base/helpers/TableDOMUtils.d.ts +3 -0
  91. package/lib/table/base/helpers/TableDOMUtils.js +21 -5
  92. package/lib/table/base/helpers/getRichVisibleRectsStream.d.ts +23 -0
  93. package/lib/table/base/helpers/getRichVisibleRectsStream.js +246 -0
  94. package/lib/table/base/html-table.d.ts +3 -1
  95. package/lib/table/base/html-table.js +44 -26
  96. package/lib/table/base/index.js +4 -4
  97. package/lib/table/base/interfaces.d.ts +1 -0
  98. package/lib/table/base/renderTemplates.d.ts +1 -0
  99. package/lib/table/base/renderTemplates.js +370 -0
  100. package/lib/table/base/styles.d.ts +24 -0
  101. package/lib/table/base/styles.js +42 -13
  102. package/lib/table/base/table.d.ts +12 -4
  103. package/lib/table/base/table.js +191 -137
  104. package/lib/table/base/utils.d.ts +6 -3
  105. package/lib/table/base/utils.js +47 -10
  106. package/lib/table/common-views.js +3 -3
  107. package/lib/table/pipeline/features/autoFill.js +9 -2
  108. package/lib/table/pipeline/features/columnDrag.js +168 -59
  109. package/lib/table/pipeline/features/columnFilter.js +6 -9
  110. package/lib/table/pipeline/features/columnResizeWidth.d.ts +3 -0
  111. package/lib/table/pipeline/features/columnResizeWidth.js +21 -5
  112. package/lib/table/pipeline/features/contextMenu.js +89 -32
  113. package/lib/table/pipeline/features/filter/DefaultFilterContent.js +10 -2
  114. package/lib/table/pipeline/features/filter/Filter.js +88 -37
  115. package/lib/table/pipeline/features/filter/FilterPanel.js +10 -2
  116. package/lib/table/pipeline/features/filter/index.js +4 -4
  117. package/lib/table/pipeline/features/index.d.ts +1 -0
  118. package/lib/table/pipeline/features/index.js +37 -27
  119. package/lib/table/pipeline/features/multiSelect.js +81 -75
  120. package/lib/table/pipeline/features/rangeSelection.d.ts +10 -0
  121. package/lib/table/pipeline/features/rangeSelection.js +256 -0
  122. package/lib/table/pipeline/features/rowDetail.js +42 -16
  123. package/lib/table/pipeline/features/rowGrouping.js +3 -1
  124. package/lib/table/pipeline/features/singleSelect.js +4 -1
  125. package/lib/table/pipeline/features/sort.js +2 -4
  126. package/lib/table/pipeline/features/treeMode.js +6 -6
  127. package/lib/table/pipeline/index.js +11 -3
  128. package/lib/table/pipeline/pipeline.d.ts +8 -0
  129. package/lib/table/pipeline/pipeline.js +50 -7
  130. package/lib/table/pivot/cross-table/buildCrossTable.js +1 -3
  131. package/lib/table/pivot/cross-table/index.js +4 -4
  132. package/lib/table/pivot/cross-tree-table/buildCrossTreeTable.js +1 -3
  133. package/lib/table/pivot/pivot-utils/builders.js +2 -4
  134. package/lib/table/pivot/pivot-utils/convert-utils.js +7 -5
  135. package/lib/table/pivot/pivot-utils/index.js +4 -4
  136. package/lib/table/transforms/autoWidth.js +10 -4
  137. package/lib/table/transforms/columnResize.js +10 -2
  138. package/lib/table/transforms/index.js +32 -32
  139. package/lib/table/transforms/sort.js +10 -4
  140. package/lib/table/transforms/treeMode.js +9 -3
  141. package/lib/table/utils/applyTransforms.js +1 -5
  142. package/lib/table/utils/browserType.d.ts +6 -0
  143. package/lib/table/utils/browserType.js +13 -0
  144. package/lib/table/utils/buildTree.js +1 -3
  145. package/lib/table/utils/collectNodes.js +1 -3
  146. package/lib/table/utils/copyToClipboard.js +1 -1
  147. package/lib/table/utils/element.js +3 -3
  148. package/lib/table/utils/exportTableAsExcel.js +1 -3
  149. package/lib/table/utils/getTreeDepth.js +1 -3
  150. package/lib/table/utils/groupBy.js +1 -3
  151. package/lib/table/utils/index.d.ts +1 -0
  152. package/lib/table/utils/index.js +57 -49
  153. package/lib/table/utils/layeredSort.js +6 -2
  154. package/lib/table/utils/makeRecursiveMapper.js +1 -3
  155. package/lib/table/utils/others.d.ts +1 -1
  156. package/lib/table/utils/others.js +23 -18
  157. package/lib/table/utils/traverseColumn.js +1 -3
  158. package/lib/table/utils/tree-data-helpers/StrictTreeDataHelper.js +5 -7
  159. package/lib/table/utils/tree-data-helpers/TreeDataHelper.js +5 -7
  160. package/package.json +6 -2
  161. package/dist/kd-table.css +0 -422
  162. package/dist/kd-table.css.map +0 -1
  163. package/dist/kd-table.js +0 -38578
  164. package/dist/kd-table.js.map +0 -1
  165. package/dist/kd-table.min.css +0 -9
  166. package/dist/kd-table.min.js +0 -208
  167. package/dist/kd-table.min.js.map +0 -1
  168. package/es/table/base/helpers/__test__/visible-part.test.d.ts +0 -1
  169. package/es/table/base/helpers/__test__/visible-part.test.js +0 -28
  170. package/es/table/base/helpers/visible-part.d.ts +0 -23
  171. package/es/table/base/helpers/visible-part.js +0 -58
  172. package/es/table/pipeline/features/__test__/multiSelect.test.d.ts +0 -1
  173. package/es/table/pipeline/features/__test__/multiSelect.test.js +0 -152
  174. package/es/table/pipeline/features/__test__/rowDetail.test.d.ts +0 -1
  175. package/es/table/pipeline/features/__test__/rowDetail.test.js +0 -223
  176. package/es/table/pipeline/features/__test__/rowGrouping.test.d.ts +0 -1
  177. package/es/table/pipeline/features/__test__/rowGrouping.test.js +0 -120
  178. package/es/table/pipeline/features/__test__/singleSelect.test.d.ts +0 -1
  179. package/es/table/pipeline/features/__test__/singleSelect.test.js +0 -191
  180. package/es/table/pipeline/features/__test__/sort.test.d.ts +0 -1
  181. package/es/table/pipeline/features/__test__/sort.test.js +0 -213
  182. package/es/table/pipeline/features/__test__/tips.test.d.ts +0 -1
  183. package/es/table/pipeline/features/__test__/tips.test.js +0 -123
  184. package/es/table/pipeline/features/__test__/treeMode.test.d.ts +0 -1
  185. package/es/table/pipeline/features/__test__/treeMode.test.js +0 -202
  186. package/es/table/pipeline/features/filter/__test__/Filter.test.d.ts +0 -1
  187. package/es/table/pipeline/features/filter/__test__/Filter.test.js +0 -29
  188. package/lib/table/base/helpers/__test__/visible-part.test.d.ts +0 -1
  189. package/lib/table/base/helpers/__test__/visible-part.test.js +0 -31
  190. package/lib/table/base/helpers/visible-part.d.ts +0 -23
  191. package/lib/table/base/helpers/visible-part.js +0 -72
  192. package/lib/table/pipeline/features/__test__/multiSelect.test.d.ts +0 -1
  193. package/lib/table/pipeline/features/__test__/multiSelect.test.js +0 -163
  194. package/lib/table/pipeline/features/__test__/rowDetail.test.d.ts +0 -1
  195. package/lib/table/pipeline/features/__test__/rowDetail.test.js +0 -230
  196. package/lib/table/pipeline/features/__test__/rowGrouping.test.d.ts +0 -1
  197. package/lib/table/pipeline/features/__test__/rowGrouping.test.js +0 -129
  198. package/lib/table/pipeline/features/__test__/singleSelect.test.d.ts +0 -1
  199. package/lib/table/pipeline/features/__test__/singleSelect.test.js +0 -201
  200. package/lib/table/pipeline/features/__test__/sort.test.d.ts +0 -1
  201. package/lib/table/pipeline/features/__test__/sort.test.js +0 -218
  202. package/lib/table/pipeline/features/__test__/tips.test.d.ts +0 -1
  203. package/lib/table/pipeline/features/__test__/tips.test.js +0 -133
  204. package/lib/table/pipeline/features/__test__/treeMode.test.d.ts +0 -1
  205. package/lib/table/pipeline/features/__test__/treeMode.test.js +0 -206
  206. package/lib/table/pipeline/features/filter/__test__/Filter.test.d.ts +0 -1
  207. package/lib/table/pipeline/features/filter/__test__/Filter.test.js +0 -36
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.ContextMenuStyleWrap = exports.icons = exports.ExpansionCell = exports.InlineFlexCell = void 0;
8
+ exports.icons = exports.InlineFlexCell = exports.ExpansionCell = exports.ContextMenuStyleWrap = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
11
11
 
@@ -22,7 +22,7 @@ var _templateObject, _templateObject2, _templateObject3;
22
22
  var InlineFlexCell = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: inline-flex;\n align-items: center;\n"])));
23
23
 
24
24
  exports.InlineFlexCell = InlineFlexCell;
25
- var ExpansionCell = (0, _styledComponents.default)(InlineFlexCell)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n &.leaf {\n cursor: default;\n }\n\n .expansion-icon {\n fill: #999;\n flex: 0 0 16px;\n transition: transform 200ms;\n\n &.expanded {\n transform-origin: center center;\n transform: rotate(90deg);\n }\n }\n"])));
25
+ var ExpansionCell = (0, _styledComponents.default)(InlineFlexCell)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n &.", " {\n cursor: default;\n }\n\n .expansion-icon {\n fill: #999;\n flex: 0 0 16px;\n transition: transform 200ms;\n\n &.", " {\n transform-origin: center center;\n transform: rotate(90deg);\n }\n }\n"])), _styles.Classes.leaf, _styles.Classes.expanded);
26
26
  exports.ExpansionCell = ExpansionCell;
27
27
 
28
28
  function CaretDownIcon(props) {
@@ -85,6 +85,6 @@ var icons = {
85
85
  };
86
86
  exports.icons = icons;
87
87
 
88
- var ContextMenuStyleWrap = _styledComponents.default.div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n &.", "{\n border: 1px solid #e9ecf1;\n border-radius: 2px;\n background-color: #Fff;\n box-shadow: 0px 0px 5px 0px rgb(154 154 154 / 50%);\n cursor: default;\n font-size: 13px;\n position:absolute;\n z-index: 1050;\n width:120px;\n }\n\n .", "{\n width:100%;\n display: table;\n }\n\n .", " .", "{\n display: table-row;\n }\n\n .", " .", "{\n background-color: #f5f5f5;\n }\n\n .", " .", " .", "{\n display: table-cell;\n padding: 5px 8px;\n color: #666666;\n }\n\n"])), _styles.MenuClasses.menu, _styles.MenuClasses.menuList, _styles.MenuClasses.menuList, _styles.MenuClasses.menuOption, _styles.MenuClasses.menuList, _styles.MenuClasses.menuOptionActive, _styles.MenuClasses.menuList, _styles.MenuClasses.menuOption, _styles.MenuClasses.menuOptionText);
88
+ var ContextMenuStyleWrap = _styledComponents.default.div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n &.", "{\n border: 1px solid #e9ecf1;\n border-radius: 2px;\n background-color: #Fff;\n box-shadow: 0px 0px 5px 0px rgb(154 154 154 / 50%);\n cursor: default;\n font-size: 13px;\n position:absolute;\n z-index: 1050;\n width:120px;\n }\n\n .", "{\n width:100%;\n display: table;\n }\n\n .", " .", "{\n display: table-row;\n color: #666666;\n }\n\n .", " .", "{\n background-color: #f5f5f5;\n }\n\n .", " .", " .", "{\n display: table-cell;\n padding: 5px 8px;\n }\n .", " .", ".", "{\n opacity: .5;\n }\n\n"])), _styles.MenuClasses.menu, _styles.MenuClasses.menuList, _styles.MenuClasses.menuList, _styles.MenuClasses.menuOption, _styles.MenuClasses.menuList, _styles.MenuClasses.menuOptionActive, _styles.MenuClasses.menuList, _styles.MenuClasses.menuOption, _styles.MenuClasses.menuOptionText, _styles.MenuClasses.menuList, _styles.MenuClasses.menuOption, _styles.MenuClasses.menuOptionDisable);
89
89
 
90
90
  exports.ContextMenuStyleWrap = ContextMenuStyleWrap;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.autoFillTableWidth = exports.tableWidthKey = exports.FILL_COLUMN_CODE = void 0;
8
+ exports.tableWidthKey = exports.autoFillTableWidth = exports.FILL_COLUMN_CODE = void 0;
9
9
 
10
10
  var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
11
11
 
@@ -17,6 +17,8 @@ var _calculations = require("../../base/calculations");
17
17
 
18
18
  var _utils = require("../../utils");
19
19
 
20
+ var _styles = require("../../base/styles");
21
+
20
22
  var FILL_COLUMN_CODE = '$_fill_column_&';
21
23
  exports.FILL_COLUMN_CODE = FILL_COLUMN_CODE;
22
24
  var tableWidthKey = 'tableWidth';
@@ -42,9 +44,14 @@ var autoFillTableWidth = function autoFillTableWidth() {
42
44
  width: width,
43
45
  features: {
44
46
  resizeable: false
47
+ },
48
+ getCellProps: function getCellProps(value, record, rowIndex) {
49
+ return {
50
+ className: _styles.Classes.emptyColCell
51
+ };
45
52
  }
46
53
  };
47
- (0, _splice.default)(columns).call(columns, spliceIndex, 0, _fillColumns);
54
+ (0, _splice.default)(columns).call(columns, spliceIndex || columns.length, 0, _fillColumns);
48
55
  }
49
56
 
50
57
  pipeline.columns(columns);
@@ -7,46 +7,58 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.columnDrag = columnDrag;
9
9
 
10
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
11
+
10
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
11
13
 
12
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
13
15
 
14
- var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
16
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
15
17
 
16
18
  var _utils = require("../../utils");
17
19
 
18
20
  var _autoFill = require("./autoFill");
19
21
 
20
22
  var stateKey = 'columnDrag';
23
+ var SCROLL_SIZE = 30;
21
24
 
22
- function sortColumns(cloumns, sort) {
23
- var res = new Array(cloumns.length);
25
+ function sortColumns(columns, sort) {
26
+ var res = new Array(columns.length);
27
+ var lastColumns = (0, _toConsumableArray2.default)(columns);
24
28
 
25
- while (cloumns.length) {
26
- var cloumn = cloumns.pop();
29
+ while (columns.length) {
30
+ var cloumn = columns.pop();
27
31
  res[sort[cloumn.code]] = cloumn;
28
32
  }
29
33
 
34
+ if ((0, _filter.default)(res).call(res, Boolean).length !== lastColumns.length) {
35
+ return lastColumns;
36
+ }
37
+
30
38
  return res;
31
39
  }
32
40
 
41
+ function stopClickPropagation(e) {
42
+ e.stopPropagation();
43
+ }
44
+
33
45
  function columnDrag() {
34
46
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
35
47
  return function (pipeline) {
36
48
  var _pipeline$getStateAtK = pipeline.getStateAtKey(stateKey, {}),
37
- cloumnsSortData = _pipeline$getStateAtK.cloumnsSortData,
38
49
  cloumnsTranslateData = _pipeline$getStateAtK.cloumnsTranslateData;
39
50
 
40
51
  var columns = pipeline.getColumns();
41
-
42
- if (cloumnsSortData) {
43
- columns = sortColumns(columns, cloumnsSortData);
44
- }
52
+ var tableBody = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.tableBody; // if (cloumnsSortData) {
53
+ // columns = sortColumns(columns, cloumnsSortData)
54
+ // }
45
55
 
46
56
  pipeline.columns((0, _filter.default)(columns).call(columns, function (column) {
47
57
  return column;
48
58
  }));
49
- return pipeline.mapColumns((0, _utils.makeRecursiveMapper)(function (col) {
59
+ return pipeline.mapColumns((0, _utils.makeRecursiveMapper)(function (col, recursiveFlatMapInfo) {
60
+ var path = recursiveFlatMapInfo.path,
61
+ isLeaf = recursiveFlatMapInfo.isLeaf;
50
62
  var style = cloumnsTranslateData ? {
51
63
  transition: '.3s',
52
64
  transform: "translate3d(".concat(cloumnsTranslateData[col.code], "px, 0px, 0px)")
@@ -62,7 +74,7 @@ function columnDrag() {
62
74
  });
63
75
  },
64
76
  headerCellProps: (0, _utils.mergeCellProps)(col.headerCellProps, {
65
- onMouseDown: function onMouseDown(e) {
77
+ onMouseDown: !isLeaf || path.length > 1 ? undefined : function (e) {
66
78
  if (e.button !== 0) {
67
79
  return;
68
80
  } // const cx = e.clientX
@@ -79,46 +91,60 @@ function columnDrag() {
79
91
  var columns = pipeline.getColumns();
80
92
 
81
93
  var _pipeline$getStateAtK2 = pipeline.getStateAtKey(stateKey, {}),
82
- cloumnsSortData = _pipeline$getStateAtK2.cloumnsSortData,
83
94
  cloumnsTranslateData = _pipeline$getStateAtK2.cloumnsTranslateData;
84
95
 
85
- if (cloumnsSortData) {
86
- columns = sortColumns(columns, cloumnsSortData);
87
- } else {
88
- cloumnsSortData = {};
89
- columns.forEach(function (item, index) {
90
- cloumnsSortData[item.code] = index;
91
- });
92
- }
93
-
96
+ var cloumnsSortData = {};
97
+ columns.forEach(function (item, index) {
98
+ cloumnsSortData[item.code] = index;
99
+ });
94
100
  var currentTarget = e.currentTarget;
95
101
  var rect = e.currentTarget.parentElement.getClientRects()[0];
96
102
  var startX = rect.left;
97
103
  var moveData = [];
104
+ var allColumns = (0, _utils.collectNodes)(columns);
105
+ var tableBodyClientRect = tableBody.getBoundingClientRect();
106
+ var startScrollLeft = pipeline.ref.current.domHelper.virtual.scrollLeft;
107
+
108
+ var updateScrollPosition = function updateScrollPosition(client) {
109
+ var clientX = client.clientX;
110
+ var left = tableBodyClientRect.left,
111
+ width = tableBodyClientRect.width;
112
+
113
+ if (clientX + SCROLL_SIZE >= left + width) {
114
+ pipeline.ref.current.domHelper.virtual.scrollLeft += SCROLL_SIZE;
115
+ }
116
+
117
+ if (clientX - SCROLL_SIZE <= left) {
118
+ pipeline.ref.current.domHelper.virtual.scrollLeft -= SCROLL_SIZE;
119
+ }
120
+ };
121
+
122
+ var stopClickPropagationFlag = false;
98
123
 
99
124
  function handleMouseMove(e) {
100
- if (e.clientX - startX < 20) {
125
+ var client = {
126
+ clientX: e.clientX,
127
+ clientY: e.clientY
128
+ };
129
+ var scrollDistance = pipeline.ref.current.domHelper.virtual.scrollLeft - startScrollLeft;
130
+ var leftPosition = startX - scrollDistance; // 表头最左边起点
131
+
132
+ updateScrollPosition(client);
133
+
134
+ if (e.clientX - leftPosition < 20) {
101
135
  return;
102
136
  } else {
137
+ // 阻止列头点击事件,防止拖动后触发列头过滤事件
138
+ if (stopClickPropagationFlag === false) {
139
+ stopClickPropagationFlag = true;
140
+ currentTarget.addEventListener('click', stopClickPropagation);
141
+ }
142
+
103
143
  e.stopPropagation();
104
144
  }
105
145
 
106
146
  document.body.style.userSelect = 'none';
107
- currentTarget.style.cursor = 'move'; // 计算平移位置
108
-
109
- var replaceIndex = 0;
110
- var totalWitdth = columns[replaceIndex].width;
111
-
112
- while (totalWitdth < e.clientX - startX && replaceIndex < columns.length - 1) {
113
- replaceIndex++;
114
- totalWitdth += columns[replaceIndex].width;
115
- } // 重置位置信息
116
-
117
-
118
- cloumnsTranslateData = {};
119
- columns.forEach(function (item) {
120
- cloumnsTranslateData[item.code] = 0;
121
- }); // 循环计算每一个的位置
147
+ currentTarget.style.cursor = 'move'; // 循环计算每一个的位置
122
148
  // if (startIndex !== replaceIndex) {
123
149
  // const optionColumn = columns[startIndex]
124
150
  // const move = startIndex > replaceIndex ? 1 : -1
@@ -140,11 +166,24 @@ function columnDrag() {
140
166
  // }
141
167
  // index++
142
168
  // }
143
- // 需要取最新startIndex, 不能直接用makeRecursiveMapper提供的startIndex(因为map时还没添加选择列、充满列等后面use添加的列)
169
+ // 重置位置信息
170
+
171
+ cloumnsTranslateData = {};
172
+ allColumns.forEach(function (item) {
173
+ cloumnsTranslateData[item.code] = 0;
174
+ }); // 计算平移位置
175
+
176
+ var replaceIndex = 0;
177
+ var totalWitdth = getColumnWidth(columns[replaceIndex]);
178
+
179
+ while (totalWitdth < e.clientX - leftPosition && replaceIndex < columns.length - 1) {
180
+ replaceIndex++;
181
+ totalWitdth += getColumnWidth(columns[replaceIndex]);
182
+ } // 需要取最新startIndex, 不能直接用makeRecursiveMapper提供的startIndex(因为map时还没添加选择列、充满列等后面use添加的列)
183
+
144
184
 
145
185
  var startIndex;
146
- var leafColumns = (0, _utils.collectNodes)((0, _utils.collectNodes)(columns, 'leaf-only'));
147
- leafColumns.forEach(function (column, index) {
186
+ columns.forEach(function (column, index) {
148
187
  if (column.code === col.code) {
149
188
  startIndex = index;
150
189
  }
@@ -155,11 +194,25 @@ function columnDrag() {
155
194
  if (startIndex > replaceIndex) {
156
195
  // 左移
157
196
  while (index < startIndex) {
158
- var code = columns[index].code;
159
-
160
- if (code && code !== _autoFill.FILL_COLUMN_CODE && !columns[index].lock) {
197
+ var _columns$index = columns[index],
198
+ code = _columns$index.code,
199
+ lock = _columns$index.lock,
200
+ width = _columns$index.width,
201
+ children = _columns$index.children;
202
+
203
+ if (enableMove({
204
+ code: code,
205
+ lock: lock
206
+ })) {
161
207
  cloumnsTranslateData[code] += optionColumn.width;
162
- cloumnsTranslateData[optionColumn.code] -= columns[index].width;
208
+
209
+ if ((0, _utils.isLeafNode)(columns[index])) {
210
+ cloumnsTranslateData[optionColumn.code] -= width;
211
+ } else {
212
+ cloumnsTranslateData[optionColumn.code] -= getColumnWidth(columns[index]);
213
+ moveAllChildren(children, cloumnsTranslateData, optionColumn.width);
214
+ }
215
+
163
216
  columnMoved = true;
164
217
  }
165
218
 
@@ -168,22 +221,34 @@ function columnDrag() {
168
221
  } else if (startIndex < replaceIndex) {
169
222
  // 右移
170
223
  while (startIndex < index) {
171
- var _code = columns[index].code;
172
-
173
- if (_code && _code !== _autoFill.FILL_COLUMN_CODE && !columns[index].lock) {
224
+ var _columns$index2 = columns[index],
225
+ _code = _columns$index2.code,
226
+ _lock = _columns$index2.lock,
227
+ _width = _columns$index2.width,
228
+ _children = _columns$index2.children;
229
+
230
+ if (enableMove({
231
+ code: _code,
232
+ lock: _lock
233
+ })) {
174
234
  cloumnsTranslateData[_code] -= optionColumn.width;
175
- cloumnsTranslateData[optionColumn.code] += columns[index].width;
235
+
236
+ if ((0, _utils.isLeafNode)(columns[index])) {
237
+ cloumnsTranslateData[optionColumn.code] += _width;
238
+ } else {
239
+ cloumnsTranslateData[optionColumn.code] += getColumnWidth(columns[index]);
240
+ moveAllChildren(_children, cloumnsTranslateData, optionColumn.width, true);
241
+ }
242
+
176
243
  columnMoved = true;
177
244
  }
178
245
 
179
246
  index--;
180
247
  }
181
- } else {// 不动或者移动回原位
182
248
  }
183
249
 
184
250
  window.requestAnimationFrame(function () {
185
251
  pipeline.setStateAtKey(stateKey, {
186
- cloumnsSortData: cloumnsSortData,
187
252
  cloumnsTranslateData: cloumnsTranslateData
188
253
  });
189
254
  moveData = [startIndex, replaceIndex];
@@ -195,6 +260,11 @@ function columnDrag() {
195
260
  document.body.removeEventListener('mousemove', handleMouseMove);
196
261
  document.body.removeEventListener('mouseup', handleMouseUp);
197
262
  window.requestAnimationFrame(function () {
263
+ // 取消阻止列头点击事件
264
+ currentTarget.removeEventListener('click', stopClickPropagation);
265
+ stopClickPropagationFlag = false;
266
+ currentTarget = null;
267
+
198
268
  var _moveData = moveData,
199
269
  _moveData2 = (0, _slicedToArray2.default)(_moveData, 2),
200
270
  startIndex = _moveData2[0],
@@ -214,9 +284,14 @@ function columnDrag() {
214
284
  if (startIndex > replaceIndex) {
215
285
  // 左移
216
286
  while (index < startIndex) {
217
- var code = columns[index].code;
218
-
219
- if (code && code !== _autoFill.FILL_COLUMN_CODE && !columns[index].lock) {
287
+ var _columns$index3 = columns[index],
288
+ code = _columns$index3.code,
289
+ lock = _columns$index3.lock;
290
+
291
+ if (enableMove({
292
+ code: code,
293
+ lock: lock
294
+ })) {
220
295
  cloumnsSortData[code] += 1;
221
296
  cloumnsSortData[optionColumn.code] -= 1;
222
297
  columnMoved = true;
@@ -227,9 +302,14 @@ function columnDrag() {
227
302
  } else if (startIndex < replaceIndex) {
228
303
  // 右移
229
304
  while (index > startIndex) {
230
- var _code2 = columns[index].code;
231
-
232
- if (_code2 && _code2 !== _autoFill.FILL_COLUMN_CODE && !columns[index].lock) {
305
+ var _columns$index4 = columns[index],
306
+ _code2 = _columns$index4.code,
307
+ _lock2 = _columns$index4.lock;
308
+
309
+ if (enableMove({
310
+ code: _code2,
311
+ lock: _lock2
312
+ })) {
233
313
  cloumnsSortData[_code2] -= 1;
234
314
  cloumnsSortData[optionColumn.code] += 1;
235
315
  columnMoved = true;
@@ -253,14 +333,12 @@ function columnDrag() {
253
333
  }
254
334
 
255
335
  pipeline.setStateAtKey(stateKey, {
256
- cloumnsSortData: cloumnsSortData,
257
336
  cloumnsTranslateData: null
258
337
  });
259
338
  });
260
339
  document.body.style.userSelect = '';
261
340
  currentTarget.style.opacity = '';
262
341
  currentTarget.style.cursor = '';
263
- currentTarget = null;
264
342
  }
265
343
 
266
344
  document.body.addEventListener('mousemove', handleMouseMove);
@@ -275,4 +353,35 @@ function columnDrag() {
275
353
  });
276
354
  }));
277
355
  };
356
+ }
357
+
358
+ function enableMove(_ref2) {
359
+ var lock = _ref2.lock,
360
+ code = _ref2.code;
361
+ return code && code !== _autoFill.FILL_COLUMN_CODE && !lock;
362
+ }
363
+
364
+ function getColumnWidth(col) {
365
+ if (col.children) {
366
+ return col.children.reduce(function (acc, col) {
367
+ return acc + getColumnWidth(col);
368
+ }, 0);
369
+ }
370
+
371
+ return col.width;
372
+ }
373
+
374
+ function moveAllChildren(cols, cloumnsTranslateData, width, isMinus) {
375
+ cols.forEach(function (col) {
376
+ var _a;
377
+
378
+ var code = col.code,
379
+ children = col.children;
380
+ var movedWidth = (_a = cloumnsTranslateData[code]) !== null && _a !== void 0 ? _a : 0;
381
+ cloumnsTranslateData[code] = movedWidth + (isMinus ? -width : width);
382
+
383
+ if (!(0, _utils.isLeafNode)(col)) {
384
+ moveAllChildren(children, cloumnsTranslateData, width);
385
+ }
386
+ });
278
387
  }
@@ -27,8 +27,6 @@ var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-sta
27
27
 
28
28
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
29
29
 
30
- var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
31
-
32
30
  var _react = _interopRequireDefault(require("react"));
33
31
 
34
32
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -118,12 +116,11 @@ function filter() {
118
116
  isFilterActive: filterActive,
119
117
  className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, _styles.Classes.tableFilterTrigger, true), (0, _defineProperty2.default)(_cx, "active", filterActive), _cx)),
120
118
  stopClickEventPropagation: stopClickEventPropagation
121
- })]);
122
- result.headerCellProps = (0, _utils.mergeCellProps)(col.headerCellProps, {
123
- style: {
124
- paddingRight: '18px'
125
- }
126
- });
119
+ })]); // result.headerCellProps = mergeCellProps(col.headerCellProps, {
120
+ // style: {
121
+ // paddingRight: '18px'
122
+ // }
123
+ // })
127
124
  }
128
125
 
129
126
  if (!(0, _utils.isLeafNode)(col)) {
@@ -181,7 +178,7 @@ function filter() {
181
178
  });
182
179
  }
183
180
 
184
- return (0, _reduce.default)(dataSource).call(dataSource, function (pre, record) {
181
+ return dataSource.reduce(function (pre, record) {
185
182
  if (isMatchedFilterCondition(record)) {
186
183
  return (0, _concat.default)(pre).call(pre, [record]);
187
184
  }
@@ -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
  }
@@ -1,16 +1,18 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+
5
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
4
6
 
5
- var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard");
7
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
8
+
9
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
6
10
 
7
11
  Object.defineProperty(exports, "__esModule", {
8
12
  value: true
9
13
  });
10
14
  exports.columnResize = columnResize;
11
15
 
12
- var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
13
-
14
16
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
15
17
 
16
18
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
@@ -35,6 +37,10 @@ var _styles = require("../../base/styles");
35
37
 
36
38
  var _templateObject, _templateObject2;
37
39
 
40
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
41
+
42
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
+
38
44
  var TableHeaderCellResize = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n position: absolute;\n top: 0;\n right: -5px;\n height: 100%;\n width: 10px;\n cursor: ew-resize;\n display: flex;\n flex-direction: column;\n align-items: center;\n z-index:1;\n\n &:after {\n content: \"\";\n position: absolute;\n display: block;\n left: calc(50% - 1px);\n width: 1px;\n height: calc(100% - 14px);\n top: 7px;\n background-color: var(--border-color);\n }\n"])));
39
45
 
40
46
  var TableHeaderGroupCellResize = (0, _styledComponents.default)(TableHeaderCellResize)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n &:after {\n height: 100%;\n top: 0;\n }\n"])));
@@ -97,6 +103,10 @@ function columnResize() {
97
103
  });
98
104
  };
99
105
 
106
+ var handleDoubleClick = function handleDoubleClick(e, col) {
107
+ opts === null || opts === void 0 ? void 0 : opts.doubleClickCallback(e, col);
108
+ };
109
+
100
110
  var handleMouseDown = function handleMouseDown(e, col) {
101
111
  window.addEventListener('selectstart', disableSelect);
102
112
  var changedColumnSize = {};
@@ -113,7 +123,7 @@ function columnResize() {
113
123
 
114
124
  if ((children === null || children === void 0 ? void 0 : children.length) > 0) {
115
125
  var leafChildColumns = (0, _utils.collectNodes)(children, 'leaf-only');
116
- var childrenWidthSum = (0, _reduce.default)(leafChildColumns).call(leafChildColumns, function (sum, _ref2) {
126
+ var childrenWidthSum = leafChildColumns.reduce(function (sum, _ref2) {
117
127
  var code = _ref2.code;
118
128
  return sum + columnSize[code];
119
129
  }, 0);
@@ -174,11 +184,17 @@ function columnResize() {
174
184
  width: (_a = columnSize[code]) !== null && _a !== void 0 ? _a : width,
175
185
  title: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, prevTitle, (features === null || features === void 0 ? void 0 : features.resizeable) !== false && (isGroup ? /*#__PURE__*/_react.default.createElement(TableHeaderGroupCellResize, {
176
186
  className: _styles.Classes.tableHeaderCellResize,
187
+ onDoubleClick: function onDoubleClick(e) {
188
+ return handleDoubleClick(e, col);
189
+ },
177
190
  onMouseDown: function onMouseDown(e) {
178
191
  return handleMouseDown(e, col);
179
192
  }
180
193
  }) : /*#__PURE__*/_react.default.createElement(TableHeaderCellResize, {
181
194
  className: _styles.Classes.tableHeaderCellResize,
195
+ onDoubleClick: function onDoubleClick(e) {
196
+ return handleDoubleClick(e, col);
197
+ },
182
198
  onMouseDown: function onMouseDown(e) {
183
199
  return handleMouseDown(e, col);
184
200
  }