@kdcloudjs/table 1.2.0-canary.15 → 1.2.0-canary.16-hotfix

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 (233) hide show
  1. package/dist/@kdcloudjs/table.css +1 -1
  2. package/dist/@kdcloudjs/table.js +2051 -3489
  3. package/dist/@kdcloudjs/table.js.map +1 -1
  4. package/dist/@kdcloudjs/table.min.css +1 -1
  5. package/dist/@kdcloudjs/table.min.js +16 -16
  6. package/dist/@kdcloudjs/table.min.js.map +1 -1
  7. package/es/_utils/arrayUtil.js +0 -3
  8. package/es/_utils/devwarning.js +0 -1
  9. package/es/_utils/formatUtil.js +35 -96
  10. package/es/_utils/hooks.js +18 -42
  11. package/es/_utils/index.js +0 -2
  12. package/es/_utils/numberUtil.js +32 -55
  13. package/es/_utils/omit.js +0 -2
  14. package/es/_utils/type.js +0 -2
  15. package/es/_utils/usePopper.js +74 -137
  16. package/es/config-provider/compDefaultProps.js +0 -1
  17. package/es/config-provider/configProvider.js +2 -7
  18. package/es/config-provider/defaultConfig.js +0 -1
  19. package/es/index.js +0 -2
  20. package/es/locale/locale.js +5 -43
  21. package/es/table/base/calculations.js +22 -72
  22. package/es/table/base/colgroup.js +0 -1
  23. package/es/table/base/empty.js +4 -4
  24. package/es/table/base/header.js +14 -67
  25. package/es/table/base/helpers/SpanManager.js +3 -9
  26. package/es/table/base/helpers/TableDOMUtils.js +4 -27
  27. package/es/table/base/helpers/__test__/SpanManager.test.js +2 -2
  28. package/es/table/base/helpers/__test__/TableDOMUtils.test.js +0 -1
  29. package/es/table/base/helpers/getRichVisibleRectsStream.js +11 -44
  30. package/es/table/base/helpers/rowHeightManager.js +0 -28
  31. package/es/table/base/html-table.js +14 -35
  32. package/es/table/base/loading.js +6 -8
  33. package/es/table/base/renderTemplates.js +26 -44
  34. package/es/table/base/styles.js +1 -10
  35. package/es/table/base/table.js +96 -179
  36. package/es/table/base/utils.js +14 -54
  37. package/es/table/common-views.js +0 -7
  38. package/es/table/internals.js +0 -13
  39. package/es/table/pipeline/features/autoFill.js +11 -40
  40. package/es/table/pipeline/features/autoRowSpan.js +1 -14
  41. package/es/table/pipeline/features/colGroupExtendable.js +4 -19
  42. package/es/table/pipeline/features/columnDrag.d.ts +1 -0
  43. package/es/table/pipeline/features/columnDrag.js +236 -303
  44. package/es/table/pipeline/features/columnFilter.js +11 -48
  45. package/es/table/pipeline/features/columnHover.js +1 -7
  46. package/es/table/pipeline/features/columnRangeHover.js +1 -8
  47. package/es/table/pipeline/features/columnResizeWidth.js +51 -42
  48. package/es/table/pipeline/features/contextMenu.js +18 -89
  49. package/es/table/pipeline/features/filter/DefaultFilterContent.js +10 -25
  50. package/es/table/pipeline/features/filter/DefaultFilterIcon.js +1 -1
  51. package/es/table/pipeline/features/filter/Filter.js +25 -48
  52. package/es/table/pipeline/features/filter/FilterPanel.js +11 -25
  53. package/es/table/pipeline/features/filter/util.js +0 -4
  54. package/es/table/pipeline/features/footerDataSource.js +0 -3
  55. package/es/table/pipeline/features/mergeCellHover.js +0 -1
  56. package/es/table/pipeline/features/multiSelect.js +15 -57
  57. package/es/table/pipeline/features/rangeSelection.js +65 -143
  58. package/es/table/pipeline/features/rowDetail.js +2 -41
  59. package/es/table/pipeline/features/rowDrag.js +36 -71
  60. package/es/table/pipeline/features/rowGrouping.js +2 -35
  61. package/es/table/pipeline/features/singleSelect.js +0 -24
  62. package/es/table/pipeline/features/sort.js +31 -83
  63. package/es/table/pipeline/features/tips.js +0 -6
  64. package/es/table/pipeline/features/treeMode.js +9 -44
  65. package/es/table/pipeline/features/treeSelect.js +0 -26
  66. package/es/table/pipeline/features/utils/touchEventUtils.d.ts +15 -0
  67. package/es/table/pipeline/features/utils/touchEventUtils.js +65 -0
  68. package/es/table/pipeline/pipeline.js +11 -51
  69. package/es/table/pivot/cross-table/buildCrossTable.js +15 -64
  70. package/es/table/pivot/cross-table/cross-table.js +22 -28
  71. package/es/table/pivot/cross-tree-table/buildCrossTreeTable.js +14 -47
  72. package/es/table/pivot/cross-tree-table/cross-tree-table.js +28 -50
  73. package/es/table/pivot/pivot-utils/buildDrillTree.js +10 -23
  74. package/es/table/pivot/pivot-utils/builders.js +31 -71
  75. package/es/table/pivot/pivot-utils/convert-utils.js +13 -39
  76. package/es/table/pivot/pivot-utils/simpleEncode.js +0 -1
  77. package/es/table/transforms/autoRowSpan.js +1 -15
  78. package/es/table/transforms/autoWidth.js +10 -32
  79. package/es/table/transforms/buildTree.js +1 -2
  80. package/es/table/transforms/columnHover.js +9 -15
  81. package/es/table/transforms/columnRangeHover.js +12 -19
  82. package/es/table/transforms/columnResize.js +15 -37
  83. package/es/table/transforms/flatten.js +0 -3
  84. package/es/table/transforms/orderField.js +0 -3
  85. package/es/table/transforms/sort.js +36 -88
  86. package/es/table/transforms/tips.js +1 -6
  87. package/es/table/transforms/treeMode.js +30 -69
  88. package/es/table/transforms/visible.js +0 -2
  89. package/es/table/use/useResizeObserver.js +1 -4
  90. package/es/table/utils/applyTransforms.js +0 -1
  91. package/es/table/utils/buildTree.js +4 -19
  92. package/es/table/utils/collectNodes.js +1 -10
  93. package/es/table/utils/console.js +0 -14
  94. package/es/table/utils/copyToClipboard.js +0 -4
  95. package/es/table/utils/element.js +14 -41
  96. package/es/table/utils/exportTableAsExcel.js +4 -40
  97. package/es/table/utils/getTreeDepth.js +1 -9
  98. package/es/table/utils/groupBy.js +1 -10
  99. package/es/table/utils/layeredFilter.js +0 -4
  100. package/es/table/utils/layeredSort.js +0 -5
  101. package/es/table/utils/makeRecursiveMapper.js +1 -12
  102. package/es/table/utils/mergeCellProps.js +6 -13
  103. package/es/table/utils/others.js +3 -16
  104. package/es/table/utils/proto.js +2 -30
  105. package/es/table/utils/smartCompare.js +4 -12
  106. package/es/table/utils/traverseColumn.js +2 -15
  107. package/es/table/utils/tree-data-helpers/StrictTreeDataHelper.js +1 -22
  108. package/es/table/utils/tree-data-helpers/TreeDataHelper.js +15 -69
  109. package/lib/_utils/arrayUtil.js +0 -5
  110. package/lib/_utils/devwarning.js +0 -5
  111. package/lib/_utils/formatUtil.js +35 -100
  112. package/lib/_utils/hooks.js +18 -53
  113. package/lib/_utils/index.js +0 -6
  114. package/lib/_utils/numberUtil.js +32 -63
  115. package/lib/_utils/omit.js +0 -5
  116. package/lib/_utils/react-children.js +0 -5
  117. package/lib/_utils/type.js +0 -6
  118. package/lib/_utils/usePopper.js +74 -158
  119. package/lib/config-provider/ConfigContext.js +1 -4
  120. package/lib/config-provider/compDefaultProps.js +0 -1
  121. package/lib/config-provider/configProvider.js +3 -18
  122. package/lib/config-provider/defaultConfig.js +0 -5
  123. package/lib/config-provider/index.js +0 -6
  124. package/lib/index.js +2 -8
  125. package/lib/locale/index.js +0 -7
  126. package/lib/locale/locale.js +5 -57
  127. package/lib/table/base/calculations.js +22 -83
  128. package/lib/table/base/colgroup.js +0 -5
  129. package/lib/table/base/empty.js +4 -16
  130. package/lib/table/base/header.js +14 -77
  131. package/lib/table/base/helpers/SpanManager.js +3 -11
  132. package/lib/table/base/helpers/TableDOMUtils.js +2 -27
  133. package/lib/table/base/helpers/__test__/SpanManager.test.js +2 -4
  134. package/lib/table/base/helpers/__test__/TableDOMUtils.test.js +0 -5
  135. package/lib/table/base/helpers/__test__/rowHeightManager.test.js +0 -1
  136. package/lib/table/base/helpers/getRichVisibleRectsStream.js +11 -62
  137. package/lib/table/base/helpers/rowHeightManager.js +0 -33
  138. package/lib/table/base/html-table.js +14 -45
  139. package/lib/table/base/index.js +0 -2
  140. package/lib/table/base/loading.js +6 -12
  141. package/lib/table/base/renderTemplates.js +27 -58
  142. package/lib/table/base/styles.js +1 -22
  143. package/lib/table/base/table.js +96 -212
  144. package/lib/table/base/utils.js +14 -89
  145. package/lib/table/common-views.js +0 -16
  146. package/lib/table/index.js +0 -13
  147. package/lib/table/internals.js +0 -14
  148. package/lib/table/pipeline/features/autoFill.js +11 -47
  149. package/lib/table/pipeline/features/autoRowSpan.js +1 -19
  150. package/lib/table/pipeline/features/buildTree.js +0 -2
  151. package/lib/table/pipeline/features/colGroupExtendable.js +4 -32
  152. package/lib/table/pipeline/features/columnDrag.d.ts +1 -0
  153. package/lib/table/pipeline/features/columnDrag.js +236 -309
  154. package/lib/table/pipeline/features/columnFilter.js +11 -62
  155. package/lib/table/pipeline/features/columnHover.js +1 -11
  156. package/lib/table/pipeline/features/columnRangeHover.js +1 -13
  157. package/lib/table/pipeline/features/columnResizeWidth.js +51 -58
  158. package/lib/table/pipeline/features/contextMenu.js +18 -113
  159. package/lib/table/pipeline/features/filter/DefaultFilterContent.js +10 -43
  160. package/lib/table/pipeline/features/filter/DefaultFilterIcon.js +1 -4
  161. package/lib/table/pipeline/features/filter/Filter.js +25 -70
  162. package/lib/table/pipeline/features/filter/FilterPanel.js +11 -40
  163. package/lib/table/pipeline/features/filter/index.js +0 -5
  164. package/lib/table/pipeline/features/filter/util.js +0 -7
  165. package/lib/table/pipeline/features/footerDataSource.js +0 -10
  166. package/lib/table/pipeline/features/index.js +0 -23
  167. package/lib/table/pipeline/features/mergeCellHover.js +0 -5
  168. package/lib/table/pipeline/features/multiSelect.js +15 -71
  169. package/lib/table/pipeline/features/rangeSelection.js +65 -160
  170. package/lib/table/pipeline/features/rowDetail.js +2 -65
  171. package/lib/table/pipeline/features/rowDrag.js +36 -81
  172. package/lib/table/pipeline/features/rowGrouping.js +2 -55
  173. package/lib/table/pipeline/features/singleSelect.js +0 -34
  174. package/lib/table/pipeline/features/sort.js +31 -103
  175. package/lib/table/pipeline/features/tips.js +0 -15
  176. package/lib/table/pipeline/features/treeMode.js +9 -65
  177. package/lib/table/pipeline/features/treeSelect.js +0 -34
  178. package/lib/table/pipeline/features/utils/touchEventUtils.d.ts +15 -0
  179. package/lib/table/pipeline/features/utils/touchEventUtils.js +76 -0
  180. package/lib/table/pipeline/index.js +0 -8
  181. package/lib/table/pipeline/pipeline.js +11 -60
  182. package/lib/table/pivot/cross-table/buildCrossTable.js +15 -75
  183. package/lib/table/pivot/cross-table/cross-table.js +22 -36
  184. package/lib/table/pivot/cross-table/index.js +0 -4
  185. package/lib/table/pivot/cross-tree-table/buildCrossTreeTable.js +14 -60
  186. package/lib/table/pivot/cross-tree-table/cross-tree-table.js +28 -60
  187. package/lib/table/pivot/cross-tree-table/index.js +0 -3
  188. package/lib/table/pivot/pivot-utils/buildDrillTree.js +10 -29
  189. package/lib/table/pivot/pivot-utils/builders.js +31 -82
  190. package/lib/table/pivot/pivot-utils/convert-utils.js +13 -57
  191. package/lib/table/pivot/pivot-utils/index.js +0 -7
  192. package/lib/table/pivot/pivot-utils/simpleEncode.js +0 -2
  193. package/lib/table/style/css.js +0 -1
  194. package/lib/table/style/index.js +0 -1
  195. package/lib/table/transforms/autoRowSpan.js +1 -21
  196. package/lib/table/transforms/autoWidth.js +10 -53
  197. package/lib/table/transforms/buildTree.js +1 -4
  198. package/lib/table/transforms/columnHover.js +9 -22
  199. package/lib/table/transforms/columnRangeHover.js +12 -27
  200. package/lib/table/transforms/columnResize.js +15 -56
  201. package/lib/table/transforms/flatten.js +0 -5
  202. package/lib/table/transforms/index.js +0 -12
  203. package/lib/table/transforms/orderField.js +0 -7
  204. package/lib/table/transforms/sort.js +36 -112
  205. package/lib/table/transforms/tips.js +1 -16
  206. package/lib/table/transforms/treeMode.js +30 -96
  207. package/lib/table/transforms/visible.js +0 -7
  208. package/lib/table/transforms/warnTransformsDeprecated.js +0 -4
  209. package/lib/table/use/useResizeObserver.js +1 -8
  210. package/lib/table/utils/applyTransforms.js +0 -2
  211. package/lib/table/utils/buildTree.js +4 -30
  212. package/lib/table/utils/collectNodes.js +1 -15
  213. package/lib/table/utils/console.js +0 -16
  214. package/lib/table/utils/copyToClipboard.js +0 -6
  215. package/lib/table/utils/element.js +14 -46
  216. package/lib/table/utils/exportTableAsExcel.js +4 -49
  217. package/lib/table/utils/getTreeDepth.js +1 -14
  218. package/lib/table/utils/groupBy.js +1 -14
  219. package/lib/table/utils/index.js +0 -21
  220. package/lib/table/utils/isGroupColumn.js +0 -3
  221. package/lib/table/utils/isLeafNode.js +0 -1
  222. package/lib/table/utils/layeredFilter.js +0 -10
  223. package/lib/table/utils/layeredSort.js +0 -10
  224. package/lib/table/utils/makeRecursiveMapper.js +1 -21
  225. package/lib/table/utils/mergeCellProps.js +6 -17
  226. package/lib/table/utils/others.js +3 -31
  227. package/lib/table/utils/proto.js +2 -33
  228. package/lib/table/utils/selectColumn.js +0 -1
  229. package/lib/table/utils/smartCompare.js +4 -13
  230. package/lib/table/utils/traverseColumn.js +2 -22
  231. package/lib/table/utils/tree-data-helpers/StrictTreeDataHelper.js +1 -30
  232. package/lib/table/utils/tree-data-helpers/TreeDataHelper.js +15 -82
  233. package/package.json +2 -1
@@ -1,74 +1,66 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.columnDrag = columnDrag;
9
-
10
8
  var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
11
-
12
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
13
-
14
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
15
-
16
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
17
-
18
12
  var _utils = require("../../utils");
19
-
20
13
  var _autoFill = require("./autoFill");
21
-
14
+ var _touchEventUtils = require("./utils/touchEventUtils");
22
15
  var stateKey = 'columnDrag';
23
16
  var SCROLL_SIZE = 30;
24
-
25
17
  function disableSelect(event) {
26
18
  event.preventDefault();
27
19
  }
28
-
29
20
  function sortColumns(columns, sort) {
30
21
  var res = new Array(columns.length);
31
22
  var lastColumns = (0, _toConsumableArray2.default)(columns);
32
-
33
23
  while (columns.length) {
34
24
  var cloumn = columns.pop();
35
25
  res[sort[cloumn.code]] = cloumn;
36
26
  }
37
-
38
27
  if ((0, _filter.default)(res).call(res, Boolean).length !== lastColumns.length) {
39
28
  return lastColumns;
40
29
  }
41
-
42
30
  return res;
43
31
  }
44
-
45
32
  function stopClickPropagation(e) {
46
33
  e.stopPropagation();
47
34
  }
48
-
35
+ function adjustTranslation(isRTL) {
36
+ return function (value) {
37
+ return isRTL ? -value : value;
38
+ };
39
+ }
49
40
  function columnDrag() {
50
41
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
51
42
  return function (pipeline) {
43
+ var direction = pipeline.ctx.direction;
44
+ var _adjustTranslation = adjustTranslation(direction === 'rtl');
52
45
  var _pipeline$getStateAtK = pipeline.getStateAtKey(stateKey, {}),
53
- cloumnsTranslateData = _pipeline$getStateAtK.cloumnsTranslateData;
54
-
46
+ cloumnsTranslateData = _pipeline$getStateAtK.cloumnsTranslateData;
55
47
  var columns = pipeline.getColumns();
56
- var tableBody = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.tableBody; // if (cloumnsSortData) {
48
+ var tableBody = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.tableBody;
49
+ // if (cloumnsSortData) {
57
50
  // columns = sortColumns(columns, cloumnsSortData)
58
51
  // }
59
-
60
52
  pipeline.columns((0, _filter.default)(columns).call(columns, function (column) {
61
53
  return column;
62
54
  }));
63
55
  return pipeline.mapColumns((0, _utils.makeRecursiveMapper)(function (col, recursiveFlatMapInfo) {
64
56
  var path = recursiveFlatMapInfo.path,
65
- isLeaf = recursiveFlatMapInfo.isLeaf;
57
+ isLeaf = recursiveFlatMapInfo.isLeaf;
66
58
  var style = cloumnsTranslateData ? {
67
59
  transition: '.3s',
68
60
  transform: "translate3d(".concat(cloumnsTranslateData[col.code], "px, 0px, 0px)")
69
61
  } : {};
70
- var prevGetCellProps = col.getCellProps; // !col.code: 选择列 col.lock: 固定列 不允许拖拽
71
-
62
+ var prevGetCellProps = col.getCellProps;
63
+ // !col.code: 选择列 col.lock: 固定列 不允许拖拽
72
64
  if (col.lock || !col.code) return col;
73
65
  return (0, _extends2.default)((0, _extends2.default)({}, col), {
74
66
  getCellProps: function getCellProps(value, record, rowIndex) {
@@ -77,327 +69,262 @@ function columnDrag() {
77
69
  style: style
78
70
  });
79
71
  },
80
- headerCellProps: (0, _utils.mergeCellProps)(col.headerCellProps, {
81
- onMouseDown: !isLeaf || path.length > 1 ? undefined : function (e) {
72
+ headerCellProps: (0, _utils.mergeCellProps)(col.headerCellProps, (0, _extends2.default)((0, _extends2.default)({}, isLeaf && path.length === 1 ? {
73
+ onMouseDown: function onMouseDown(e) {
82
74
  if (e.button !== 0 || !e.currentTarget.contains(e.target)) {
83
75
  return;
84
76
  }
85
-
86
- window.addEventListener('selectstart', disableSelect); // const cx = e.clientX
87
- // const width = col.width
88
- // const a = startIndex
89
- // const b = endIndex
90
- // const newColumnDragData = [...columnDragData]
91
- // let newColumn = [...columns]
92
- // let newStartIndex = startIndex
93
- // let endIdx = endIndex
94
-
95
- var columnMoved = false;
96
- var columns = pipeline.getColumns();
97
-
98
- var _pipeline$getStateAtK2 = pipeline.getStateAtKey(stateKey, {}),
99
- cloumnsTranslateData = _pipeline$getStateAtK2.cloumnsTranslateData;
100
-
101
- var cloumnsSortData = {};
102
- columns.forEach(function (item, index) {
103
- cloumnsSortData[item.code] = index;
104
- });
105
- var currentTarget = e.currentTarget;
106
- var rect = e.currentTarget.parentElement.getClientRects()[0];
107
- var startX = rect.left;
108
- var mouseDownClientX = e.clientX;
109
- var mouseDownClientY = e.clientY;
110
- var moveData = [];
111
- var allColumns = (0, _utils.collectNodes)(columns);
112
- var tableBodyClientRect = tableBody.getBoundingClientRect();
113
- var startScrollLeft = pipeline.ref.current.domHelper.virtual.scrollLeft;
114
-
115
- var updateScrollPosition = function updateScrollPosition(client) {
116
- var clientX = client.clientX;
117
- var left = tableBodyClientRect.left,
118
- width = tableBodyClientRect.width;
119
-
120
- if (clientX + SCROLL_SIZE >= left + width) {
121
- pipeline.ref.current.domHelper.virtual.scrollLeft += SCROLL_SIZE;
122
- }
123
-
124
- if (clientX - SCROLL_SIZE <= left) {
125
- pipeline.ref.current.domHelper.virtual.scrollLeft -= SCROLL_SIZE;
126
- }
127
- };
128
-
129
- function handleMouseMove(e) {
130
- var client = {
131
- clientX: e.clientX,
132
- clientY: e.clientY
133
- };
134
- var scrollDistance = pipeline.ref.current.domHelper.virtual.scrollLeft - startScrollLeft;
135
- var leftPosition = startX - scrollDistance; // 表头最左边起点
136
-
137
- updateScrollPosition(client);
138
-
139
- if (e.clientX - leftPosition < 20) {
140
- return;
141
- } else {
142
- e.stopPropagation();
143
- }
144
-
145
- document.body.style.userSelect = 'none';
146
- currentTarget.style.cursor = 'move'; // 循环计算每一个的位置
147
- // if (startIndex !== replaceIndex) {
148
- // const optionColumn = columns[startIndex]
149
- // const move = startIndex > replaceIndex ? 1 : -1
150
- // let index = Math.min(startIndex, replaceIndex)
151
- // while (index < Math.max(startIndex, replaceIndex)) {
152
- // const code = columns[index].code
153
- // cloumnsTranslateData[code] += move * optionColumn.width
154
- // cloumnsTranslateData[optionColumn.code] -= move * optionColumn.width
155
- // index += move
156
- // }
157
- // }
158
- // const opColumn = columns[startIndex]
159
- // let index = Math.min(startIndex, replaceIndex)
160
- // while (index <= Math.max(startIndex, replaceIndex)) {
161
- // const code = columns[index].code
162
- // if (index !== startIndex && index !== replaceIndex) {
163
- // cloumnsTranslateData[code] += opColumn.width * (index > startIndex ? -1 : 1)
164
- // cloumnsTranslateData[opColumn.code] += columns[index].width * (index < startIndex ? -1 : 1)
165
- // }
166
- // index++
167
- // }
168
- // 重置位置信息
169
-
170
- cloumnsTranslateData = {};
171
- allColumns.forEach(function (item) {
172
- cloumnsTranslateData[item.code] = 0;
173
- }); // 计算平移位置
174
-
175
- var replaceIndex = 0;
176
- var totalWitdth = getColumnWidth(columns[replaceIndex]);
177
-
178
- while (totalWitdth < e.clientX - leftPosition && replaceIndex < columns.length - 1) {
179
- replaceIndex++;
180
- totalWitdth += getColumnWidth(columns[replaceIndex]);
181
- } // 需要取最新startIndex, 不能直接用makeRecursiveMapper提供的startIndex(因为map时还没添加选择列、充满列等后面use添加的列)
182
-
183
-
184
- var startIndex;
185
- columns.forEach(function (column, index) {
186
- if (column.code === col.code) {
187
- startIndex = index;
188
- }
189
- });
190
- var optionColumn = columns[startIndex];
191
- var index = replaceIndex;
192
-
193
- if (startIndex > replaceIndex) {
194
- // 左移
195
- while (index < startIndex) {
196
- var _columns$index = columns[index],
197
- code = _columns$index.code,
198
- lock = _columns$index.lock,
199
- width = _columns$index.width,
200
- children = _columns$index.children;
201
-
202
- if (enableMove({
203
- code: code,
204
- lock: lock
205
- })) {
206
- cloumnsTranslateData[code] += optionColumn.width;
207
-
208
- if ((0, _utils.isLeafNode)(columns[index])) {
209
- cloumnsTranslateData[optionColumn.code] -= width;
210
- } else {
211
- cloumnsTranslateData[optionColumn.code] -= getColumnWidth(columns[index]);
212
- moveAllChildren(children, cloumnsTranslateData, optionColumn.width);
213
- }
214
-
215
- columnMoved = true;
216
- }
217
-
218
- index++;
219
- }
220
- } else if (startIndex < replaceIndex) {
221
- // 右移
222
- while (startIndex < index) {
223
- var _columns$index2 = columns[index],
224
- _code = _columns$index2.code,
225
- _lock = _columns$index2.lock,
226
- _width = _columns$index2.width,
227
- _children = _columns$index2.children;
228
-
229
- if (enableMove({
230
- code: _code,
231
- lock: _lock
232
- })) {
233
- cloumnsTranslateData[_code] -= optionColumn.width;
234
-
235
- if ((0, _utils.isLeafNode)(columns[index])) {
236
- cloumnsTranslateData[optionColumn.code] += _width;
237
- } else {
238
- cloumnsTranslateData[optionColumn.code] += getColumnWidth(columns[index]);
239
- moveAllChildren(_children, cloumnsTranslateData, optionColumn.width, true);
240
- }
241
-
242
- columnMoved = true;
243
- }
244
-
245
- index--;
77
+ handlePointerDown(e.nativeEvent, false, e.currentTarget);
78
+ },
79
+ onTouchStart: function onTouchStart(e) {
80
+ // 阻止触摸事件的默认行为
81
+ if (e.cancelable) {
82
+ e.preventDefault();
83
+ }
84
+ handlePointerDown(e.nativeEvent, true, e.currentTarget);
85
+ }
86
+ } : {}), {
87
+ style: style
88
+ }))
89
+ });
90
+ // 统一的拖拽处理函数
91
+ function handlePointerDown(startEvent, isTouch, currentTarget) {
92
+ var _a;
93
+ window.addEventListener('selectstart', disableSelect);
94
+ var columnMoved = false;
95
+ var columns = pipeline.getColumns();
96
+ var _pipeline$getStateAtK2 = pipeline.getStateAtKey(stateKey, {}),
97
+ cloumnsTranslateData = _pipeline$getStateAtK2.cloumnsTranslateData;
98
+ var cloumnsSortData = {};
99
+ columns.forEach(function (item, index) {
100
+ cloumnsSortData[item.code] = index;
101
+ });
102
+ var rect = (_a = currentTarget.parentElement) === null || _a === void 0 ? void 0 : _a.getClientRects()[0];
103
+ if (!rect) return;
104
+ var startX = direction === 'rtl' ? rect.right : rect.left;
105
+ var startCoordinates = (0, _touchEventUtils.getEventCoordinates)(startEvent);
106
+ var mouseDownClientX = startCoordinates.clientX;
107
+ var mouseDownClientY = startCoordinates.clientY;
108
+ var moveData = [];
109
+ var allColumns = (0, _utils.collectNodes)(columns);
110
+ var tableBodyClientRect = tableBody.getBoundingClientRect();
111
+ var startScrollLeft = pipeline.ref.current.domHelper.virtual.scrollLeft;
112
+ var updateScrollPosition = function updateScrollPosition(client) {
113
+ var clientX = client.clientX;
114
+ var left = tableBodyClientRect.left,
115
+ width = tableBodyClientRect.width;
116
+ if (clientX + SCROLL_SIZE >= left + width) {
117
+ pipeline.ref.current.domHelper.virtual.scrollLeft += SCROLL_SIZE;
118
+ }
119
+ if (clientX - SCROLL_SIZE <= left) {
120
+ pipeline.ref.current.domHelper.virtual.scrollLeft -= SCROLL_SIZE;
121
+ }
122
+ };
123
+ function handlePointerMove(e) {
124
+ // 触摸事件需要阻止默认行为,防止页面滚动
125
+ if (isTouch && e.cancelable) {
126
+ e.preventDefault();
127
+ }
128
+ var coordinates = (0, _touchEventUtils.getEventCoordinates)(e);
129
+ var client = {
130
+ clientX: coordinates.clientX,
131
+ clientY: coordinates.clientY
132
+ };
133
+ var scrollDistance = pipeline.ref.current.domHelper.virtual.scrollLeft - startScrollLeft;
134
+ var startPosition = startX - scrollDistance; // 表头最左边起点
135
+ var offsetDistance = direction === 'rtl' ? startPosition - coordinates.clientX : coordinates.clientX - startPosition;
136
+ updateScrollPosition(client);
137
+ if (offsetDistance < 20) {
138
+ return;
139
+ } else {
140
+ e.stopPropagation();
141
+ }
142
+ document.body.style.userSelect = 'none';
143
+ currentTarget.style.cursor = 'move';
144
+ // 重置位置信息
145
+ cloumnsTranslateData = {};
146
+ allColumns.forEach(function (item) {
147
+ cloumnsTranslateData[item.code] = 0;
148
+ });
149
+ // 计算平移位置
150
+ var replaceIndex = 0;
151
+ var totalWitdth = getColumnWidth(columns[replaceIndex]);
152
+ while (totalWitdth < offsetDistance && replaceIndex < columns.length - 1) {
153
+ replaceIndex++;
154
+ totalWitdth += getColumnWidth(columns[replaceIndex]);
155
+ }
156
+ // 需要取最新startIndex, 不能直接用makeRecursiveMapper提供的startIndex(因为map时还没添加选择列、充满列等后面use添加的列)
157
+ var startIndex;
158
+ columns.forEach(function (column, index) {
159
+ if (column.code === col.code) {
160
+ startIndex = index;
161
+ }
162
+ });
163
+ var optionColumn = columns[startIndex];
164
+ var index = replaceIndex;
165
+ if (startIndex > replaceIndex) {
166
+ // 左移
167
+ while (index < startIndex) {
168
+ var _columns$index = columns[index],
169
+ code = _columns$index.code,
170
+ lock = _columns$index.lock,
171
+ width = _columns$index.width,
172
+ children = _columns$index.children;
173
+ if (enableMove({
174
+ code: code,
175
+ lock: lock
176
+ })) {
177
+ cloumnsTranslateData[code] += _adjustTranslation(optionColumn.width);
178
+ if ((0, _utils.isLeafNode)(columns[index])) {
179
+ cloumnsTranslateData[optionColumn.code] -= _adjustTranslation(width);
180
+ } else {
181
+ cloumnsTranslateData[optionColumn.code] -= _adjustTranslation(getColumnWidth(columns[index]));
182
+ moveAllChildren(children, cloumnsTranslateData, _adjustTranslation(optionColumn.width));
246
183
  }
184
+ columnMoved = true;
247
185
  }
248
-
249
- window.requestAnimationFrame(function () {
250
- pipeline.setStateAtKey(stateKey, {
251
- cloumnsTranslateData: cloumnsTranslateData
252
- });
253
- moveData = [startIndex, replaceIndex];
254
- });
186
+ index++;
255
187
  }
256
-
257
- function handleMouseUp(e) {
258
- document.body.removeEventListener('mousemove', handleMouseMove);
259
- document.body.removeEventListener('mouseup', handleMouseUp);
260
- window.removeEventListener('selectstart', disableSelect);
261
-
262
- if (_isMoveWhenClicking(mouseDownClientX, mouseDownClientY, e.clientX, e.clientY)) {
263
- e.stopPropagation(); // 存在移动就阻止冒泡
264
-
265
- currentTarget.addEventListener('click', stopClickPropagation); // 阻止列头点击事件,防止拖动后触发列头过滤事件
188
+ } else if (startIndex < replaceIndex) {
189
+ // 右移
190
+ while (startIndex < index) {
191
+ var _columns$index2 = columns[index],
192
+ _code = _columns$index2.code,
193
+ _lock = _columns$index2.lock,
194
+ _width = _columns$index2.width,
195
+ _children = _columns$index2.children;
196
+ if (enableMove({
197
+ code: _code,
198
+ lock: _lock
199
+ })) {
200
+ cloumnsTranslateData[_code] -= _adjustTranslation(optionColumn.width);
201
+ if ((0, _utils.isLeafNode)(columns[index])) {
202
+ cloumnsTranslateData[optionColumn.code] += _adjustTranslation(_width);
203
+ } else {
204
+ cloumnsTranslateData[optionColumn.code] += _adjustTranslation(getColumnWidth(columns[index]));
205
+ moveAllChildren(_children, cloumnsTranslateData, _adjustTranslation(optionColumn.width), true);
206
+ }
207
+ columnMoved = true;
266
208
  }
267
-
268
- window.requestAnimationFrame(function () {
269
- // 取消阻止列头点击事件
270
- currentTarget.removeEventListener('click', stopClickPropagation);
271
- currentTarget = null;
272
-
273
- var _moveData = moveData,
274
- _moveData2 = (0, _slicedToArray2.default)(_moveData, 2),
275
- startIndex = _moveData2[0],
276
- replaceIndex = _moveData2[1];
277
-
278
- var optionColumn = columns[startIndex]; // const move = startIndex > replaceIndex ? 1 : -1
279
- // let index = Math.min(startIndex, replaceIndex)
280
- // while (index < Math.max(startIndex, replaceIndex) && index > 0) {
281
- // const code = columns[index].code
282
- // cloumnsSortData[optionColumn.code] -= move
283
- // cloumnsSortData[code] += move
284
- // index += move
285
- // }
286
-
287
- var index = replaceIndex;
288
-
289
- if (startIndex > replaceIndex) {
290
- // 左移
291
- while (index < startIndex) {
292
- var _columns$index3 = columns[index],
293
- code = _columns$index3.code,
294
- lock = _columns$index3.lock;
295
-
296
- if (enableMove({
297
- code: code,
298
- lock: lock
299
- })) {
300
- cloumnsSortData[code] += 1;
301
- cloumnsSortData[optionColumn.code] -= 1;
302
- columnMoved = true;
303
- }
304
-
305
- index++;
306
- }
307
- } else if (startIndex < replaceIndex) {
308
- // 右移
309
- while (index > startIndex) {
310
- var _columns$index4 = columns[index],
311
- _code2 = _columns$index4.code,
312
- _lock2 = _columns$index4.lock;
313
-
314
- if (enableMove({
315
- code: _code2,
316
- lock: _lock2
317
- })) {
318
- cloumnsSortData[_code2] -= 1;
319
- cloumnsSortData[optionColumn.code] += 1;
320
- columnMoved = true;
321
- }
322
-
323
- index--;
324
- }
209
+ index--;
210
+ }
211
+ }
212
+ window.requestAnimationFrame(function () {
213
+ pipeline.setStateAtKey(stateKey, {
214
+ cloumnsTranslateData: cloumnsTranslateData
215
+ });
216
+ moveData = [startIndex, replaceIndex];
217
+ });
218
+ }
219
+ function handlePointerUp(e) {
220
+ (0, _touchEventUtils.removePointerEventListeners)(document.body, {
221
+ onPointerMove: handlePointerMove,
222
+ onPointerUp: handlePointerUp
223
+ }, isTouch);
224
+ window.removeEventListener('selectstart', disableSelect);
225
+ var endCoordinates = (0, _touchEventUtils.getEventCoordinates)(e);
226
+ if ((0, _touchEventUtils.hasMovedEnough)(mouseDownClientX, mouseDownClientY, endCoordinates.clientX, endCoordinates.clientY)) {
227
+ e.stopPropagation(); // 存在移动就阻止冒泡
228
+ currentTarget.addEventListener('click', stopClickPropagation); // 阻止列头点击事件,防止拖动后触发列头过滤事件
229
+ }
230
+
231
+ window.requestAnimationFrame(function () {
232
+ // 取消阻止列头点击事件
233
+ currentTarget.removeEventListener('click', stopClickPropagation);
234
+ currentTarget = null;
235
+ var _moveData = moveData,
236
+ _moveData2 = (0, _slicedToArray2.default)(_moveData, 2),
237
+ startIndex = _moveData2[0],
238
+ replaceIndex = _moveData2[1];
239
+ var optionColumn = columns[startIndex];
240
+ var index = replaceIndex;
241
+ if (startIndex > replaceIndex) {
242
+ // 左移
243
+ while (index < startIndex) {
244
+ var _columns$index3 = columns[index],
245
+ code = _columns$index3.code,
246
+ lock = _columns$index3.lock;
247
+ if (enableMove({
248
+ code: code,
249
+ lock: lock
250
+ })) {
251
+ cloumnsSortData[code] += 1;
252
+ cloumnsSortData[optionColumn.code] -= 1;
253
+ columnMoved = true;
325
254
  }
326
-
327
- var onColumnDragStopped = opts.onColumnDragStopped; // 拖拽结束返回列顺序
328
-
329
- if (onColumnDragStopped) {
330
- var _context;
331
-
332
- var isRowDragColumn = function isRowDragColumn(code) {
333
- var rowDragColumnKey = pipeline.getFeatureOptions('rowDragColumnKey');
334
- return code === rowDragColumnKey;
335
- };
336
-
337
- var newColumns = (0, _filter.default)(_context = sortColumns(columns, cloumnsSortData)).call(_context, function (column) {
338
- return column.code !== _autoFill.FILL_COLUMN_CODE && !isRowDragColumn(column.code) && !(0, _utils.isSelectColumn)(column);
339
- }); // TODO drag需要在resize之后use,否则这里返回的列对应的宽度不是拖拽后的
340
-
341
- onColumnDragStopped(columnMoved, newColumns);
255
+ index++;
256
+ }
257
+ } else if (startIndex < replaceIndex) {
258
+ // 右移
259
+ while (index > startIndex) {
260
+ var _columns$index4 = columns[index],
261
+ _code2 = _columns$index4.code,
262
+ _lock2 = _columns$index4.lock;
263
+ if (enableMove({
264
+ code: _code2,
265
+ lock: _lock2
266
+ })) {
267
+ cloumnsSortData[_code2] -= 1;
268
+ cloumnsSortData[optionColumn.code] += 1;
269
+ columnMoved = true;
342
270
  }
343
-
344
- pipeline.setStateAtKey(stateKey, {
345
- cloumnsTranslateData: null
346
- });
271
+ index--;
272
+ }
273
+ }
274
+ var onColumnDragStopped = opts.onColumnDragStopped;
275
+ // 拖拽结束返回列顺序
276
+ if (onColumnDragStopped) {
277
+ var _context;
278
+ var isRowDragColumn = function isRowDragColumn(code) {
279
+ var rowDragColumnKey = pipeline.getFeatureOptions('rowDragColumnKey');
280
+ return code === rowDragColumnKey;
281
+ };
282
+ var newColumns = (0, _filter.default)(_context = sortColumns(columns, cloumnsSortData)).call(_context, function (column) {
283
+ return column.code !== _autoFill.FILL_COLUMN_CODE && !isRowDragColumn(column.code) && !(0, _utils.isSelectColumn)(column);
347
284
  });
348
- document.body.style.userSelect = '';
349
- currentTarget.style.opacity = '';
350
- currentTarget.style.cursor = '';
285
+ // TODO drag需要在resize之后use,否则这里返回的列对应的宽度不是拖拽后的
286
+ onColumnDragStopped(columnMoved, newColumns);
351
287
  }
352
-
353
- document.body.addEventListener('mousemove', handleMouseMove);
354
- document.body.addEventListener('mouseup', handleMouseUp);
355
- },
356
- style: style
357
- })
358
- });
288
+ pipeline.setStateAtKey(stateKey, {
289
+ cloumnsTranslateData: null
290
+ });
291
+ });
292
+ document.body.style.userSelect = '';
293
+ currentTarget.style.opacity = '';
294
+ currentTarget.style.cursor = '';
295
+ }
296
+ var onColumnDragStart = opts.onColumnDragStart;
297
+ onColumnDragStart && onColumnDragStart(col);
298
+ (0, _touchEventUtils.addPointerEventListeners)(document.body, {
299
+ onPointerMove: handlePointerMove,
300
+ onPointerUp: handlePointerUp
301
+ }, isTouch);
302
+ }
359
303
  }));
360
304
  };
361
305
  }
362
-
363
306
  function enableMove(_ref) {
364
307
  var lock = _ref.lock,
365
- code = _ref.code;
308
+ code = _ref.code;
366
309
  return code && code !== _autoFill.FILL_COLUMN_CODE && !lock;
367
310
  }
368
-
369
311
  function getColumnWidth(col) {
370
312
  if (col.children) {
371
313
  return col.children.reduce(function (acc, col) {
372
314
  return acc + getColumnWidth(col);
373
315
  }, 0);
374
316
  }
375
-
376
317
  return col.width;
377
318
  }
378
-
379
319
  function moveAllChildren(cols, cloumnsTranslateData, width, isMinus) {
380
320
  cols.forEach(function (col) {
381
321
  var _a;
382
-
383
322
  var code = col.code,
384
- children = col.children;
323
+ children = col.children;
385
324
  var movedWidth = (_a = cloumnsTranslateData[code]) !== null && _a !== void 0 ? _a : 0;
386
325
  cloumnsTranslateData[code] = movedWidth + (isMinus ? -width : width);
387
-
388
326
  if (!(0, _utils.isLeafNode)(col)) {
389
327
  moveAllChildren(children, cloumnsTranslateData, width);
390
328
  }
391
329
  });
392
- }
393
-
394
- function _isMoveWhenClicking(mouseDownClientX, mouseDownClientY, mouseUpClientX, mouseUpClientY) {
395
- var xDiff = mouseUpClientX - mouseDownClientX;
396
- var yDiff = mouseUpClientY - mouseDownClientY; // 鼠标点按和松开的偏移量大于5px,认为存在移动
397
-
398
- if (Math.sqrt(xDiff * xDiff + yDiff * yDiff) > 5) {
399
- return true;
400
- }
401
-
402
- return false;
403
330
  }