vxe-table 3.10.14 → 3.10.15

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.
package/lib/ui/src/log.js CHANGED
@@ -8,6 +8,6 @@ var _core = require("@vxe-ui/core");
8
8
  const {
9
9
  log
10
10
  } = _core.VxeUI;
11
- const version = `table v${"3.10.14"}`;
11
+ const version = `table v${"3.10.15"}`;
12
12
  const warnLog = exports.warnLog = log.create('warn', version);
13
13
  const errLog = exports.errLog = log.create('error', version);
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let log=_core.VxeUI.log,version="table v3.10.14",warnLog=exports.warnLog=log.create("warn",version),errLog=exports.errLog=log.create("error",version);
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let log=_core.VxeUI.log,version="table v3.10.15",warnLog=exports.warnLog=log.create("warn",version),errLog=exports.errLog=log.create("error",version);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "3.10.14",
3
+ "version": "3.10.15",
4
4
  "description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -23,25 +23,42 @@ function getTargetOffset (target: any, container: any) {
23
23
  return { offsetTop, offsetLeft }
24
24
  }
25
25
 
26
- function getCheckboxRangeRows (_vm: any, params: any, targetTrElem: any, moveRange: any) {
26
+ function getCheckboxRangeRows ($xeTable: any, evnt: MouseEvent, params: any, targetTrElem: HTMLElement, trRect: DOMRect, offsetClientTop: number, moveRange: number) {
27
+ const reactData = $xeTable
28
+ const internalData = $xeTable
29
+
27
30
  let countHeight = 0
28
- let rangeRows = []
31
+ let rangeRows: any[] = []
32
+ let moveSize = 0
29
33
  const isDown = moveRange > 0
30
- const moveSize = moveRange > 0 ? moveRange : (Math.abs(moveRange) + targetTrElem.offsetHeight)
31
- const { afterFullData, scrollYStore, scrollYLoad } = _vm
34
+ const { scrollYLoad } = reactData
35
+ const { afterFullData, scrollYStore } = internalData
32
36
  if (scrollYLoad) {
33
- const _rowIndex = _vm.getVTRowIndex(params.row)
37
+ if (isDown) {
38
+ moveSize = offsetClientTop + moveRange
39
+ } else {
40
+ moveSize = (trRect.height - offsetClientTop) + Math.abs(moveRange)
41
+ }
42
+ const _rowIndex = $xeTable.getVTRowIndex(params.row)
34
43
  if (isDown) {
35
44
  rangeRows = afterFullData.slice(_rowIndex, _rowIndex + Math.ceil(moveSize / scrollYStore.rowHeight))
36
45
  } else {
37
- rangeRows = afterFullData.slice(_rowIndex - Math.floor(moveSize / scrollYStore.rowHeight) + 1, _rowIndex + 1)
46
+ rangeRows = afterFullData.slice(_rowIndex - Math.floor(moveSize / scrollYStore.rowHeight), _rowIndex + 1)
38
47
  }
39
48
  } else {
49
+ if (isDown) {
50
+ moveSize = evnt.clientY - trRect.y
51
+ } else {
52
+ moveSize = trRect.y - evnt.clientY + trRect.height
53
+ }
40
54
  const siblingProp = isDown ? 'next' : 'previous'
41
55
  while (targetTrElem && countHeight < moveSize) {
42
- rangeRows.push(_vm.getRowNode(targetTrElem).item)
43
- countHeight += targetTrElem.offsetHeight
44
- targetTrElem = targetTrElem[`${siblingProp}ElementSibling`]
56
+ const rowNodeRest = $xeTable.getRowNode(targetTrElem)
57
+ if (rowNodeRest) {
58
+ rangeRows.push(rowNodeRest.item)
59
+ countHeight += targetTrElem.offsetHeight
60
+ targetTrElem = targetTrElem[`${siblingProp}ElementSibling`] as HTMLElement
61
+ }
45
62
  }
46
63
  }
47
64
  return rangeRows
@@ -228,6 +245,8 @@ export default {
228
245
  const startLeft = offsetRest.offsetLeft + evnt.offsetX
229
246
  const startScrollTop = bodyWrapperElem.scrollTop
230
247
  const rowHeight = trElem.offsetHeight
248
+ const trRect = trElem.getBoundingClientRect()
249
+ const offsetClientTop = disY - trRect.y
231
250
  let mouseScrollTimeout: any = null
232
251
  let isMouseScrollDown: any = false
233
252
  let mouseScrollSpaceSize = 1
@@ -269,7 +288,7 @@ export default {
269
288
  checkboxRangeElem.style.left = `${rangeLeft}px`
270
289
  checkboxRangeElem.style.top = `${rangeTop}px`
271
290
  checkboxRangeElem.style.display = 'block'
272
- const rangeRows = getCheckboxRangeRows(this, params, trElem, offsetTop < marginSize ? -rangeHeight : rangeHeight)
291
+ const rangeRows = getCheckboxRangeRows(this, evnt, params, trElem, trRect, offsetClientTop, offsetTop < marginSize ? -rangeHeight : rangeHeight)
273
292
  // 至少滑动 10px 才能有效匹配
274
293
  if (rangeHeight > 10 && rangeRows.length !== lastRangeRows.length) {
275
294
  lastRangeRows = rangeRows