@kdcloudjs/table 1.2.2-canary.3 → 1.2.2-canary.5

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.
@@ -62,12 +62,13 @@ function rowDrag(opt) {
62
62
  if (!tableBody) return pipeline;
63
63
  var dataSource = pipeline.getDataSource();
64
64
  var getRowDragEvent = function getRowDragEvent(dropTargetEvent, isFinished) {
65
- var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'targetTable';
66
65
  var dragItem = dropTargetEvent.dragItem,
67
66
  x = dropTargetEvent.x,
68
67
  y = dropTargetEvent.y,
69
68
  dropZoneTarget = dropTargetEvent.dropZoneTarget,
70
69
  startDropZoneTagret = dropTargetEvent.startDropZoneTagret,
70
+ commonParams = dropTargetEvent.commonParams,
71
+ startCommonParams = dropTargetEvent.startCommonParams,
71
72
  event = dropTargetEvent.event,
72
73
  dropZoneTableParams = dropTargetEvent.dropZoneTableParams;
73
74
  var getDataSource = dropZoneTableParams.getDataSource,
@@ -80,7 +81,7 @@ function rowDrag(opt) {
80
81
  var isLeave = !isMouseOnDropTarget(event, dropZoneTarget);
81
82
  var overIndex = -1;
82
83
  var direction = 'bottom';
83
- if (!isLeave) {
84
+ if (!isLeave && dataSource.length > 0) {
84
85
  var overDragItem = getDragRowItem(event.target, dropZoneTarget, dataSource);
85
86
  if (overDragItem) {
86
87
  var rowIndex = overDragItem.rowIndex,
@@ -89,6 +90,10 @@ function rowDrag(opt) {
89
90
  direction = getDirection(cell, event.clientY, allowDragIntoRow);
90
91
  }
91
92
  }
93
+ if (overIndex === -1 && dataSource.length > 0 && event.target === dropZoneTarget) {
94
+ overIndex = dataSource.length - 1;
95
+ direction = 'bottom';
96
+ }
92
97
  var overRow = overIndex >= 0 ? dataSource[overIndex] : null;
93
98
  return {
94
99
  startRowIndex: dragItem.rowIndex,
@@ -96,24 +101,25 @@ function rowDrag(opt) {
96
101
  endRowIndex: overIndex,
97
102
  endRow: overRow,
98
103
  startDropZoneTagret: startDropZoneTagret,
104
+ startCommonParams: startCommonParams,
105
+ commonParams: commonParams,
99
106
  dropZoneTarget: dropZoneTarget,
100
107
  event: event,
101
108
  dragPosition: direction,
102
109
  isFinished: isFinished,
103
- source: source,
104
110
  x: x,
105
111
  y: y
106
112
  };
107
113
  };
108
114
  var onDragging = function onDragging(event) {
109
115
  var _a;
110
- var rowDragEvent = getRowDragEvent(event, false, 'targetTable');
116
+ var rowDragEvent = getRowDragEvent(event, false);
111
117
  (_a = opt === null || opt === void 0 ? void 0 : opt.onDragMove) === null || _a === void 0 ? void 0 : _a.call(opt, rowDragEvent);
112
118
  pipeline.setStateAtKey(rowDragKey, rowDragEvent);
113
119
  };
114
- var onDragStop = function onDragStop(event, source) {
120
+ var onDragStop = function onDragStop(event) {
115
121
  var _a;
116
- var rowDragEvent = getRowDragEvent(event, true, source);
122
+ var rowDragEvent = getRowDragEvent(event, true);
117
123
  pipeline.setStateAtKey(rowDragKey, rowDragEvent);
118
124
  (_a = opt === null || opt === void 0 ? void 0 : opt.onDragEnd) === null || _a === void 0 ? void 0 : _a.call(opt, rowDragEvent);
119
125
  };
@@ -172,6 +178,8 @@ function rowDrag(opt) {
172
178
  var lastDropTarget = null;
173
179
  var timeoutId = null;
174
180
  var intervalId = null;
181
+ var expandRowTimeoutId = null;
182
+ var expandRowCallBackList = [];
175
183
  var updateScrollPosition = function updateScrollPosition(tableBody, mouseMoveEvent) {
176
184
  if (opt === null || opt === void 0 ? void 0 : opt.suppressScrollMove) return;
177
185
  if (timeoutId) {
@@ -180,6 +188,7 @@ function rowDrag(opt) {
180
188
  if (intervalId) {
181
189
  clearInterval(intervalId);
182
190
  }
191
+ if (!tableBody) return;
183
192
  var moveOffset = getScrollMoveOffset(tableBody, mouseMoveEvent);
184
193
  if (moveOffset === 0) {
185
194
  return;
@@ -199,10 +208,11 @@ function rowDrag(opt) {
199
208
  setDragText(dragElement, dragText); // 设置悬浮框显示文本
200
209
  artTable.classList.add((0, _classnames.default)(_styles.Classes.rowDragging));
201
210
  rowDragApi.setDragStatus('start');
202
- var dragEvent = createDropTargetEvent(currentDropZone, mouseDownEvent, startDataItem, tableBody);
211
+ var dragEvent = createDropTargetEvent(currentDropZone, mouseDownEvent, startDataItem, currentDropZone);
203
212
  onDragStart(dragEvent);
204
213
  };
205
214
  var handleDragMove = function handleDragMove(mouseMoveEvent) {
215
+ var _a;
206
216
  positionDragElemment(dragElement, mouseMoveEvent); // 更新拖拽悬浮框位置
207
217
  rowDragApi.setDragStatus('dragging');
208
218
  setDragElementIcon(dragElement, 'move');
@@ -211,13 +221,15 @@ function rowDrag(opt) {
211
221
  var dropTarget = (0, _find.default)(validDropZones).call(validDropZones, function (zone) {
212
222
  return isMouseOnDropTarget(mouseMoveEvent, zone.getContainer());
213
223
  }) || null;
224
+ updateScrollPosition(dropTarget === null || dropTarget === void 0 ? void 0 : dropTarget.getContainer(), mouseMoveEvent); // 拖拽到底时让滚动条可以滚动
214
225
  if (dropTarget !== lastDropTarget) {
215
226
  // 拖拽离开表格
216
227
  if (lastDropTarget !== null && dropTarget === null) {
217
228
  if (lastDropTarget.onDragLeave) {
218
229
  setDragElementIcon(dragElement, 'notAllowed');
219
230
  hiddenDragLine(dragLine);
220
- var dragEvent = createDropTargetEvent(lastDropTarget, mouseMoveEvent, startDataItem, tableBody);
231
+ lastDropTarget.getContainer().classList.remove(_styles.Classes.rowDragNoData);
232
+ var dragEvent = createDropTargetEvent(lastDropTarget, mouseMoveEvent, startDataItem, currentDropZone);
221
233
  lastDropTarget.onDragLeave(dragEvent);
222
234
  }
223
235
  }
@@ -228,7 +240,7 @@ function rowDrag(opt) {
228
240
  if (dropTarget.isTable) {
229
241
  showDragLine(dragLine);
230
242
  }
231
- var _dragEvent = createDropTargetEvent(dropTarget, mouseMoveEvent, startDataItem, tableBody);
243
+ var _dragEvent = createDropTargetEvent(dropTarget, mouseMoveEvent, startDataItem, currentDropZone);
232
244
  dropTarget.onDragEnter(_dragEvent);
233
245
  }
234
246
  }
@@ -242,10 +254,34 @@ function rowDrag(opt) {
242
254
  dragZone: dropTarget,
243
255
  event: mouseMoveEvent
244
256
  });
245
- updateScrollPosition(dropTarget.getContainer(), mouseMoveEvent); // 拖拽到底时让滚动条可以滚动
257
+ }
258
+ // 树形表格悬停1s展开对应行节点
259
+ if ((_a = dropTarget === null || dropTarget === void 0 ? void 0 : dropTarget.tableParams) === null || _a === void 0 ? void 0 : _a.getTreeModeOptions()) {
260
+ if (expandRowTimeoutId) {
261
+ clearTimeout(expandRowTimeoutId);
262
+ }
263
+ expandRowTimeoutId = setTimeout(function () {
264
+ var treeModeOptions = dropTarget.tableParams.getTreeModeOptions();
265
+ var treeMetaKey = treeModeOptions.treeMetaKey,
266
+ onExpand = treeModeOptions.onExpand,
267
+ isExpanded = treeModeOptions.isExpanded,
268
+ onCollapse = treeModeOptions.onCollapse;
269
+ // 鼠标悬停所在的拖拽行信息
270
+ var dataSource = dropTarget.tableParams.getDataSource();
271
+ var dragItem = getDragRowItem(mouseMoveEvent.target, dropTarget.getContainer(), dataSource);
272
+ if (!dragItem) return;
273
+ var row = dragItem.row;
274
+ var rowKey = row[treeMetaKey].rowKey;
275
+ if (!isExpanded(rowKey)) {
276
+ onExpand(rowKey);
277
+ expandRowCallBackList.push(function () {
278
+ return onCollapse(rowKey);
279
+ });
280
+ }
281
+ }, 1000);
246
282
  }
247
283
  if (dropTarget.onDragging) {
248
- var _dragEvent2 = createDropTargetEvent(dropTarget, mouseMoveEvent, startDataItem, tableBody);
284
+ var _dragEvent2 = createDropTargetEvent(dropTarget, mouseMoveEvent, startDataItem, currentDropZone);
249
285
  dropTarget.onDragging(_dragEvent2);
250
286
  }
251
287
  }
@@ -257,18 +293,23 @@ function rowDrag(opt) {
257
293
  rowDragApi.setDragStatus('finished');
258
294
  clearTimeout(timeoutId);
259
295
  clearInterval(intervalId);
296
+ clearTimeout(expandRowTimeoutId);
297
+ while (expandRowCallBackList.length > 0) {
298
+ var callback = expandRowCallBackList.pop();
299
+ callback();
300
+ }
260
301
  var rowDropZones = rowDragApi.getRowDropZone();
302
+ rowDropZones.forEach(function (dropzone) {
303
+ var container = dropzone.getContainer();
304
+ container && container.classList.remove(_styles.Classes.rowDragNoData);
305
+ });
261
306
  var validDropZones = (0, _concat.default)(rowDropZones).call(rowDropZones, currentDropZone);
262
307
  var dropTarget = (0, _find.default)(validDropZones).call(validDropZones, function (zone) {
263
308
  return isMouseOnDropTarget(mouseUpEvent, zone.getContainer());
264
309
  });
265
310
  if (dropTarget && dropTarget.onDragStop) {
266
- var dragEvent = createDropTargetEvent(dropTarget, mouseUpEvent, startDataItem, tableBody);
311
+ var dragEvent = createDropTargetEvent(dropTarget, mouseUpEvent, startDataItem, currentDropZone);
267
312
  dropTarget.onDragStop(dragEvent);
268
- // 原表也触发onDragStop, 方便上层调用
269
- if (dropTarget !== currentDropZone) {
270
- currentDropZone.onDragStop(dragEvent, 'startTable');
271
- }
272
313
  }
273
314
  };
274
315
  var mousemove$ = (0, _rxjs.fromEvent)(window, 'mousemove');
@@ -329,7 +370,7 @@ function rowDrag(opt) {
329
370
  return _internals.internals.safeGetRowKey(primaryKey, row, -1) === parentRowKey;
330
371
  });
331
372
  }
332
- var className = (0, _classnames.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _styles.Classes.rowDragStart, rowIndex === startRowIndex && dragStatus !== 'finished'), _styles.Classes.rowDragEnd, rowIndex === endRowIndex), _styles.Classes.rowDragEndParent, isTreeTable && rowIndex === parentRowKeyIndex), _styles.Classes.rowDragEndInto, rowIndex === endRowIndex && dragPosition === 'into'), _styles.Classes.rowDragEndToTop, rowIndex === endRowIndex && dragPosition === 'top'), _styles.Classes.rowDragEndToBottom, rowIndex === endRowIndex && dragPosition === 'bottom'));
373
+ var className = (0, _classnames.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _styles.Classes.rowDragStart, rowIndex === startRowIndex && dragStatus !== 'finished'), _styles.Classes.rowDragEnd, rowIndex === endRowIndex), _styles.Classes.rowDragEndParent, isTreeTable && rowIndex === parentRowKeyIndex && dragPosition !== 'into'), _styles.Classes.rowDragEndInto, rowIndex === endRowIndex && dragPosition === 'into'), _styles.Classes.rowDragEndToTop, rowIndex === endRowIndex && dragPosition === 'top'), _styles.Classes.rowDragEndToBottom, rowIndex === endRowIndex && dragPosition === 'bottom'));
333
374
  return {
334
375
  className: className
335
376
  };
@@ -412,6 +453,13 @@ function positionDragLine(_ref) {
412
453
  var treeModeOptions = getTreeModeOptions();
413
454
  var rowDragOptions = getRowDragOptions() || {};
414
455
  var allowDragIntoRow = rowDragOptions.allowDragIntoRow;
456
+ if (dataSource.length === 0) {
457
+ tableContainer.classList.add(_styles.Classes.rowDragNoData);
458
+ lineElement.style.display = 'none';
459
+ } else {
460
+ tableContainer.classList.remove(_styles.Classes.rowDragNoData);
461
+ lineElement.style.display = 'block';
462
+ }
415
463
  // 鼠标悬停所在的拖拽行信息
416
464
  var dragItem = getDragRowItem(event.target, tableContainer, dataSource);
417
465
  if (!dragItem) return;
@@ -589,21 +637,28 @@ function setDragText(element, dragText) {
589
637
  function isMouseOnDropTarget(mouseEvent, target) {
590
638
  return target.contains(mouseEvent.target);
591
639
  }
592
- function createDropTargetEvent(dropTarget, event, dragItem, startDropZoneTagret) {
593
- var dropZoneTarget = dropTarget.getContainer();
640
+ function createDropTargetEvent(dropZone, event, dragItem, startDropZone) {
641
+ var dropZoneTarget = dropZone.getContainer();
642
+ var startDropZoneTagret = startDropZone.getContainer();
594
643
  var rect = dropZoneTarget.getBoundingClientRect();
595
644
  var x = event.clientX - rect.left;
596
645
  var y = event.clientY - rect.top;
646
+ var startDropZoneOptions = startDropZone.tableParams.getRowDragOptions();
647
+ var startCommonParams = startDropZoneOptions === null || startDropZoneOptions === void 0 ? void 0 : startDropZoneOptions.commonParams;
597
648
  var targetEvent = {
598
649
  dragItem: dragItem,
599
650
  startDropZoneTagret: startDropZoneTagret,
651
+ startCommonParams: startCommonParams,
600
652
  dropZoneTarget: dropZoneTarget,
601
653
  event: event,
602
654
  x: x,
603
655
  y: y
604
656
  };
605
- if (dropTarget.isTable) {
606
- targetEvent.dropZoneTableParams = dropTarget.tableParams;
657
+ if (dropZone.isTable) {
658
+ var dropZoneOptions = dropZone.tableParams.getRowDragOptions();
659
+ var commonParams = dropZoneOptions === null || dropZoneOptions === void 0 ? void 0 : dropZoneOptions.commonParams;
660
+ targetEvent.dropZoneTableParams = dropZone.tableParams;
661
+ targetEvent.commonParams = commonParams;
607
662
  }
608
663
  return targetEvent;
609
664
  }
@@ -26,7 +26,7 @@ var _internals = require("../../internals");
26
26
  var _utils = require("../../utils");
27
27
  var _styles = require("../../base/styles");
28
28
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof _Symbol2 && _getIteratorMethod(r) || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
29
- function _unsupportedIterableToArray(r, a) { if (r) { var _context2; if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = _sliceInstanceProperty(_context2 = {}.toString.call(r)).call(_context2, 8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
29
+ function _unsupportedIterableToArray(r, a) { if (r) { var _context3; if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = _sliceInstanceProperty(_context3 = {}.toString.call(r)).call(_context3, 8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
30
30
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
31
31
  var treeMetaSymbol = exports.treeMetaSymbol = (0, _symbol.default)('treeMetaSymbol');
32
32
  var treeModeOptionsKey = exports.treeModeOptionsKey = 'treeModeOptions';
@@ -72,7 +72,19 @@ function treeMode() {
72
72
  iconIndent: iconIndent,
73
73
  iconGap: iconGap,
74
74
  indentSize: indentSize,
75
- treeMetaKey: treeMetaKey
75
+ treeMetaKey: treeMetaKey,
76
+ isExpanded: function isExpanded(rowKey) {
77
+ return openKeySet.has(rowKey);
78
+ },
79
+ onExpand: function onExpand(rowKey) {
80
+ var _context2;
81
+ onChangeOpenKeys((0, _concat.default)(_context2 = []).call(_context2, (0, _toConsumableArray2.default)(openKeys), [rowKey]), rowKey, 'expand');
82
+ },
83
+ onCollapse: function onCollapse(rowKey) {
84
+ onChangeOpenKeys((0, _filter.default)(openKeys).call(openKeys, function (key) {
85
+ return key !== rowKey;
86
+ }), rowKey, 'collapse');
87
+ }
76
88
  });
77
89
  var Icon = opts.icon;
78
90
  return pipeline.mapDataSource(processDataSource).mapColumns(processColumns);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kdcloudjs/table",
3
- "version": "1.2.2-canary.3",
3
+ "version": "1.2.2-canary.5",
4
4
  "description": "金蝶 react table 组件",
5
5
  "title": "table",
6
6
  "keywords": [