@kdcloudjs/table 1.2.0-canary.16 → 1.2.0-canary.17

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.
@@ -94,7 +94,9 @@ export var TableDOMHelper = /*#__PURE__*/function () {
94
94
 
95
95
  var stickyScrollSelector = _concatInstanceProperty(_context2 = _concatInstanceProperty(_context3 = ".".concat(Classes.artTable, " + .")).call(_context3, Classes.horizontalStickyScrollContainer, " .")).call(_context2, Classes.stickyScroll);
96
96
 
97
- this.stickyScroll = artTableWrapper.querySelector(stickyScrollSelector);
97
+ var stickyScrolls = artTableWrapper.querySelectorAll(stickyScrollSelector);
98
+ this.stickyScroll = stickyScrolls[stickyScrolls.length - 1]; // 当嵌套多层表格时,需要查找最后一个,否则会查找到父表格内嵌套的子表格的
99
+
98
100
  this.stickyScrollItem = this.stickyScroll.querySelector(".".concat(Classes.stickyScrollItem));
99
101
  }
100
102
 
@@ -252,10 +252,10 @@ export var BaseTable = /*#__PURE__*/function (_React$Component) {
252
252
  // }
253
253
  this.hasScrollY = true;
254
254
  } else {
255
- stickyScroll.style.paddingRight = "".concat(stickyScrollHeight, "px"); // this.setState({
255
+ // stickyScroll.style.paddingRight = `${stickyScrollHeight}px`
256
+ // this.setState({
256
257
  // hasScrollY: false
257
258
  // })
258
-
259
259
  this.hasScrollY = false;
260
260
  }
261
261
 
@@ -119,15 +119,32 @@ export function rowDrag(opt) {
119
119
  var tableWidth = tableBody.clientWidth;
120
120
  var startRowRects = startRowInfo.cell.getBoundingClientRect(); // 光标位置距离初始拖拽行的偏移量
121
121
 
122
- var startOffset = mouseDownEvent.clientY - startRowRects.y;
122
+ var startOffset = mouseDownEvent.clientY - startRowRects.top;
123
123
  var dragElement = createDragElement(startRowRects, tableWidth, rowHeight); // 可拖拽的范围
124
124
 
125
125
  var dragRange = getDragRange(tableBody, {
126
126
  startOffset: startOffset,
127
- rowHeight: startRowRects.height
127
+ rowHeight: rowHeight
128
128
  });
129
+ var mousePosition = {
130
+ x: mouseDownEvent.clientX,
131
+ y: mouseDownEvent.clientY
132
+ };
129
133
  var mousemove$ = fromEvent(window, 'mousemove');
130
134
  var mouseup$ = fromEvent(window, 'mouseup');
135
+
136
+ var scrollCallback = function scrollCallback(event) {
137
+ // 在当前表格内滚动不处理
138
+ if (event.target === tableBody) return;
139
+ dragRange = getDragRange(tableBody, {
140
+ startOffset: startOffset,
141
+ rowHeight: rowHeight
142
+ });
143
+ var isOutOfRange = isOutOfDragRange(mousePosition, dragRange);
144
+ updateCurSorStyle(isOutOfRange);
145
+ };
146
+
147
+ document.addEventListener('scroll', scrollCallback, true);
131
148
  var rowDrag$ = mousemove$.pipe(map(function (mouseMoveEvent) {
132
149
  var clientX = mouseMoveEvent.clientX,
133
150
  clientY = mouseMoveEvent.clientY;
@@ -139,12 +156,16 @@ export function rowDrag(opt) {
139
156
 
140
157
  var targetRowRects = endRowInfo.cell.getBoundingClientRect(); // 判断拖拽插入的位置,拖拽框上边框位于目标行之上则向上插入,否则向下插入
141
158
 
142
- var isMoveToTop = clientY - startOffset < targetRowRects.y;
159
+ var isMoveToTop = clientY - startOffset < targetRowRects.top;
143
160
  dragPosition = isMoveToTop ? 'top' : 'bottom';
144
161
  isOutOfRange = isOutOfDragRange({
145
162
  x: clientX,
146
163
  y: clientY
147
164
  }, dragRange);
165
+ mousePosition = {
166
+ x: clientX,
167
+ y: clientY
168
+ };
148
169
  updateScrollPosition(mouseMoveEvent); // 拖拽到底时让滚动条可以滚动
149
170
 
150
171
  updateDragElementPosition(dragElement, dragRange, {
@@ -178,6 +199,7 @@ export function rowDrag(opt) {
178
199
  handleDragEnd(dragEndEvent, isOutOfRange);
179
200
  removeDragElement(dragElement);
180
201
  removeCurSorStyle();
202
+ document.removeEventListener('scroll', scrollCallback, true);
181
203
  }
182
204
  });
183
205
  };
@@ -291,13 +313,13 @@ function getDragRange(tableBody, _ref4) {
291
313
  var tableBodyClientRect = tableBody.getBoundingClientRect();
292
314
  var height = tableBodyClientRect.height,
293
315
  width = tableBodyClientRect.width,
294
- x = tableBodyClientRect.x,
295
- y = tableBodyClientRect.y;
316
+ top = tableBodyClientRect.top,
317
+ left = tableBodyClientRect.left;
296
318
  return {
297
- minX: x,
298
- maxX: x + width,
299
- minY: y - rowHeight + startOffset,
300
- maxY: y + height + startOffset
319
+ minX: left,
320
+ maxX: left + width,
321
+ minY: top - rowHeight + startOffset,
322
+ maxY: top + height + startOffset
301
323
  };
302
324
  }
303
325
 
@@ -107,7 +107,9 @@ var TableDOMHelper = /*#__PURE__*/function () {
107
107
  this.tableFooter = this.artTable.querySelector(".".concat(_styles.Classes.tableFooter));
108
108
  this.tableFooterMain = this.artTable.querySelector(".".concat(_styles.Classes.tableFooterMain));
109
109
  var stickyScrollSelector = (0, _concat.default)(_context2 = (0, _concat.default)(_context3 = ".".concat(_styles.Classes.artTable, " + .")).call(_context3, _styles.Classes.horizontalStickyScrollContainer, " .")).call(_context2, _styles.Classes.stickyScroll);
110
- this.stickyScroll = artTableWrapper.querySelector(stickyScrollSelector);
110
+ var stickyScrolls = artTableWrapper.querySelectorAll(stickyScrollSelector);
111
+ this.stickyScroll = stickyScrolls[stickyScrolls.length - 1]; // 当嵌套多层表格时,需要查找最后一个,否则会查找到父表格内嵌套的子表格的
112
+
111
113
  this.stickyScrollItem = this.stickyScroll.querySelector(".".concat(_styles.Classes.stickyScrollItem));
112
114
  }
113
115
 
@@ -303,10 +303,10 @@ var BaseTable = /*#__PURE__*/function (_React$Component) {
303
303
  // }
304
304
  this.hasScrollY = true;
305
305
  } else {
306
- stickyScroll.style.paddingRight = "".concat(stickyScrollHeight, "px"); // this.setState({
306
+ // stickyScroll.style.paddingRight = `${stickyScrollHeight}px`
307
+ // this.setState({
307
308
  // hasScrollY: false
308
309
  // })
309
-
310
310
  this.hasScrollY = false;
311
311
  }
312
312
 
@@ -143,15 +143,32 @@ function rowDrag(opt) {
143
143
  var tableWidth = tableBody.clientWidth;
144
144
  var startRowRects = startRowInfo.cell.getBoundingClientRect(); // 光标位置距离初始拖拽行的偏移量
145
145
 
146
- var startOffset = mouseDownEvent.clientY - startRowRects.y;
146
+ var startOffset = mouseDownEvent.clientY - startRowRects.top;
147
147
  var dragElement = createDragElement(startRowRects, tableWidth, rowHeight); // 可拖拽的范围
148
148
 
149
149
  var dragRange = getDragRange(tableBody, {
150
150
  startOffset: startOffset,
151
- rowHeight: startRowRects.height
151
+ rowHeight: rowHeight
152
152
  });
153
+ var mousePosition = {
154
+ x: mouseDownEvent.clientX,
155
+ y: mouseDownEvent.clientY
156
+ };
153
157
  var mousemove$ = (0, _rxjs.fromEvent)(window, 'mousemove');
154
158
  var mouseup$ = (0, _rxjs.fromEvent)(window, 'mouseup');
159
+
160
+ var scrollCallback = function scrollCallback(event) {
161
+ // 在当前表格内滚动不处理
162
+ if (event.target === tableBody) return;
163
+ dragRange = getDragRange(tableBody, {
164
+ startOffset: startOffset,
165
+ rowHeight: rowHeight
166
+ });
167
+ var isOutOfRange = isOutOfDragRange(mousePosition, dragRange);
168
+ updateCurSorStyle(isOutOfRange);
169
+ };
170
+
171
+ document.addEventListener('scroll', scrollCallback, true);
155
172
  var rowDrag$ = mousemove$.pipe((0, _mapInstanceProperty(_operators))(function (mouseMoveEvent) {
156
173
  var clientX = mouseMoveEvent.clientX,
157
174
  clientY = mouseMoveEvent.clientY;
@@ -163,12 +180,16 @@ function rowDrag(opt) {
163
180
 
164
181
  var targetRowRects = endRowInfo.cell.getBoundingClientRect(); // 判断拖拽插入的位置,拖拽框上边框位于目标行之上则向上插入,否则向下插入
165
182
 
166
- var isMoveToTop = clientY - startOffset < targetRowRects.y;
183
+ var isMoveToTop = clientY - startOffset < targetRowRects.top;
167
184
  dragPosition = isMoveToTop ? 'top' : 'bottom';
168
185
  isOutOfRange = isOutOfDragRange({
169
186
  x: clientX,
170
187
  y: clientY
171
188
  }, dragRange);
189
+ mousePosition = {
190
+ x: clientX,
191
+ y: clientY
192
+ };
172
193
  updateScrollPosition(mouseMoveEvent); // 拖拽到底时让滚动条可以滚动
173
194
 
174
195
  updateDragElementPosition(dragElement, dragRange, {
@@ -202,6 +223,7 @@ function rowDrag(opt) {
202
223
  handleDragEnd(dragEndEvent, isOutOfRange);
203
224
  removeDragElement(dragElement);
204
225
  removeCurSorStyle();
226
+ document.removeEventListener('scroll', scrollCallback, true);
205
227
  }
206
228
  });
207
229
  };
@@ -313,13 +335,13 @@ function getDragRange(tableBody, _ref4) {
313
335
  var tableBodyClientRect = tableBody.getBoundingClientRect();
314
336
  var height = tableBodyClientRect.height,
315
337
  width = tableBodyClientRect.width,
316
- x = tableBodyClientRect.x,
317
- y = tableBodyClientRect.y;
338
+ top = tableBodyClientRect.top,
339
+ left = tableBodyClientRect.left;
318
340
  return {
319
- minX: x,
320
- maxX: x + width,
321
- minY: y - rowHeight + startOffset,
322
- maxY: y + height + startOffset
341
+ minX: left,
342
+ maxX: left + width,
343
+ minY: top - rowHeight + startOffset,
344
+ maxY: top + height + startOffset
323
345
  };
324
346
  }
325
347
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kdcloudjs/table",
3
- "version": "1.2.0-canary.16",
3
+ "version": "1.2.0-canary.17",
4
4
  "description": "金蝶 react table 组件",
5
5
  "title": "table",
6
6
  "keywords": [