vxe-table 3.18.0-beta.8 → 3.18.1

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 (54) hide show
  1. package/es/locale/lang/en-US.js +12 -12
  2. package/es/style.css +1 -1
  3. package/es/table/module/edit/mixin.js +58 -20
  4. package/es/table/module/filter/mixin.js +12 -10
  5. package/es/table/module/keyboard/mixin.js +175 -172
  6. package/es/table/module/menu/mixin.js +16 -9
  7. package/es/table/module/validator/mixin.js +4 -2
  8. package/es/table/src/methods.js +344 -46
  9. package/es/table/src/store.js +8 -0
  10. package/es/table/src/table.js +35 -9
  11. package/es/ui/index.js +1 -1
  12. package/es/ui/src/log.js +1 -1
  13. package/lib/index.umd.js +713 -289
  14. package/lib/index.umd.min.js +1 -1
  15. package/lib/locale/lang/en-US.js +12 -12
  16. package/lib/locale/lang/en-US.min.js +1 -1
  17. package/lib/locale/lang/en-US.umd.js +12 -12
  18. package/lib/style.css +1 -1
  19. package/lib/table/module/edit/mixin.js +55 -16
  20. package/lib/table/module/edit/mixin.min.js +1 -1
  21. package/lib/table/module/filter/mixin.js +12 -10
  22. package/lib/table/module/filter/mixin.min.js +1 -1
  23. package/lib/table/module/keyboard/mixin.js +184 -185
  24. package/lib/table/module/keyboard/mixin.min.js +1 -1
  25. package/lib/table/module/menu/mixin.js +20 -13
  26. package/lib/table/module/menu/mixin.min.js +1 -1
  27. package/lib/table/module/validator/mixin.js +4 -2
  28. package/lib/table/module/validator/mixin.min.js +1 -1
  29. package/lib/table/src/methods.js +388 -52
  30. package/lib/table/src/methods.min.js +1 -1
  31. package/lib/table/src/store.js +15 -0
  32. package/lib/table/src/store.min.js +1 -0
  33. package/lib/table/src/table.js +39 -9
  34. package/lib/table/src/table.min.js +1 -1
  35. package/lib/ui/index.js +1 -1
  36. package/lib/ui/index.min.js +1 -1
  37. package/lib/ui/src/log.js +1 -1
  38. package/lib/ui/src/log.min.js +1 -1
  39. package/package.json +1 -1
  40. package/packages/locale/lang/en-US.ts +12 -12
  41. package/packages/table/module/edit/mixin.ts +59 -23
  42. package/packages/table/module/filter/mixin.ts +17 -13
  43. package/packages/table/module/keyboard/mixin.ts +169 -165
  44. package/packages/table/module/menu/mixin.ts +16 -9
  45. package/packages/table/module/validator/mixin.ts +8 -4
  46. package/packages/table/src/methods.ts +362 -50
  47. package/packages/table/src/store.ts +15 -0
  48. package/packages/table/src/table.ts +37 -9
  49. /package/es/{iconfont.1755775629306.ttf → iconfont.1756272539382.ttf} +0 -0
  50. /package/es/{iconfont.1755775629306.woff → iconfont.1756272539382.woff} +0 -0
  51. /package/es/{iconfont.1755775629306.woff2 → iconfont.1756272539382.woff2} +0 -0
  52. /package/lib/{iconfont.1755775629306.ttf → iconfont.1756272539382.ttf} +0 -0
  53. /package/lib/{iconfont.1755775629306.woff → iconfont.1756272539382.woff} +0 -0
  54. /package/lib/{iconfont.1755775629306.woff2 → iconfont.1756272539382.woff2} +0 -0
@@ -145,6 +145,182 @@ function handleMoveSelected($xeTable, evnt, args, isLeftArrow, isUpArrow, isRigh
145
145
  });
146
146
  return params;
147
147
  }
148
+ function handleCheckboxRangeEvent($xeTable, evnt, params) {
149
+ const internalData = $xeTable;
150
+ const {
151
+ elemStore
152
+ } = internalData;
153
+ const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
154
+ const leftScrollElem = (0, _util.getRefElem)(elemStore['left-body-scroll']);
155
+ const rightScrollElem = (0, _util.getRefElem)(elemStore['right-body-scroll']);
156
+ const {
157
+ column,
158
+ cell
159
+ } = params;
160
+ if (column.type === 'checkbox') {
161
+ let bodyWrapperElem = bodyScrollElem;
162
+ if (leftScrollElem && column.fixed === 'left') {
163
+ bodyWrapperElem = leftScrollElem;
164
+ } else if (rightScrollElem && column.fixed === 'right') {
165
+ bodyWrapperElem = rightScrollElem;
166
+ }
167
+ if (!bodyWrapperElem) {
168
+ return;
169
+ }
170
+ const el = $xeTable.$refs.refElem;
171
+ const disX = evnt.clientX;
172
+ const disY = evnt.clientY;
173
+ const checkboxRangeElem = bodyWrapperElem.querySelector('.vxe-table--checkbox-range');
174
+ const trElem = cell.parentNode;
175
+ const selectRecords = $xeTable.getCheckboxRecords();
176
+ let lastRangeRows = [];
177
+ const marginSize = 1;
178
+ const offsetRest = getTargetOffset(evnt.target, bodyWrapperElem);
179
+ const startTop = offsetRest.offsetTop + evnt.offsetY;
180
+ const startLeft = offsetRest.offsetLeft + evnt.offsetX;
181
+ const startScrollTop = bodyWrapperElem.scrollTop;
182
+ const rowHeight = trElem.offsetHeight;
183
+ const trRect = trElem.getBoundingClientRect();
184
+ const offsetClientTop = disY - trRect.y;
185
+ let mouseScrollTimeout = null;
186
+ let isMouseScrollDown = false;
187
+ let mouseScrollSpaceSize = 1;
188
+ const triggerEvent = (type, evnt) => {
189
+ $xeTable.dispatchEvent(`checkbox-range-${type}`, {
190
+ records: () => $xeTable.getCheckboxRecords(),
191
+ reserves: () => $xeTable.getCheckboxReserveRecords()
192
+ }, evnt);
193
+ };
194
+ const handleChecked = evnt => {
195
+ const {
196
+ clientX,
197
+ clientY
198
+ } = evnt;
199
+ const offsetLeft = clientX - disX;
200
+ const offsetTop = clientY - disY + (bodyWrapperElem.scrollTop - startScrollTop);
201
+ let rangeHeight = Math.abs(offsetTop);
202
+ let rangeWidth = Math.abs(offsetLeft);
203
+ let rangeTop = startTop;
204
+ let rangeLeft = startLeft;
205
+ if (offsetTop < marginSize) {
206
+ // 向上
207
+ rangeTop += offsetTop;
208
+ if (rangeTop < marginSize) {
209
+ rangeTop = marginSize;
210
+ rangeHeight = startTop;
211
+ }
212
+ } else {
213
+ // 向下
214
+ rangeHeight = Math.min(rangeHeight, bodyWrapperElem.scrollHeight - startTop - marginSize);
215
+ }
216
+ if (offsetLeft < marginSize) {
217
+ // 向左
218
+ rangeLeft += offsetLeft;
219
+ if (rangeWidth > startLeft) {
220
+ rangeLeft = marginSize;
221
+ rangeWidth = startLeft;
222
+ }
223
+ } else {
224
+ // 向右
225
+ rangeWidth = Math.min(rangeWidth, bodyWrapperElem.clientWidth - startLeft - marginSize);
226
+ }
227
+ checkboxRangeElem.style.height = `${rangeHeight}px`;
228
+ checkboxRangeElem.style.width = `${rangeWidth}px`;
229
+ checkboxRangeElem.style.left = `${rangeLeft}px`;
230
+ checkboxRangeElem.style.top = `${rangeTop}px`;
231
+ checkboxRangeElem.style.display = 'block';
232
+ const rangeRows = getCheckboxRangeRows($xeTable, evnt, params, trElem, trRect, offsetClientTop, offsetTop < marginSize ? -rangeHeight : rangeHeight);
233
+ // 至少滑动 10px 才能有效匹配
234
+ if (rangeHeight > 10 && rangeRows.length !== lastRangeRows.length) {
235
+ const isControlKey = (0, _dom.hasControlKey)(evnt);
236
+ lastRangeRows = rangeRows;
237
+ if (isControlKey) {
238
+ rangeRows.forEach(row => {
239
+ $xeTable.handleBatchSelectRows([row], selectRecords.indexOf(row) === -1);
240
+ });
241
+ } else {
242
+ $xeTable.setAllCheckboxRow(false);
243
+ $xeTable.handleCheckedCheckboxRow(rangeRows, true, false);
244
+ }
245
+ triggerEvent('change', evnt);
246
+ }
247
+ };
248
+ // 停止鼠标滚动
249
+ const stopMouseScroll = () => {
250
+ clearTimeout(mouseScrollTimeout);
251
+ mouseScrollTimeout = null;
252
+ };
253
+ // 开始鼠标滚动
254
+ const startMouseScroll = evnt => {
255
+ stopMouseScroll();
256
+ mouseScrollTimeout = setTimeout(() => {
257
+ if (mouseScrollTimeout) {
258
+ const {
259
+ scrollLeft,
260
+ scrollTop,
261
+ clientHeight,
262
+ scrollHeight
263
+ } = bodyWrapperElem;
264
+ const topSize = Math.ceil(mouseScrollSpaceSize * 50 / rowHeight);
265
+ if (isMouseScrollDown) {
266
+ if (scrollTop + clientHeight < scrollHeight) {
267
+ $xeTable.scrollTo(scrollLeft, scrollTop + topSize);
268
+ startMouseScroll(evnt);
269
+ handleChecked(evnt);
270
+ } else {
271
+ stopMouseScroll();
272
+ }
273
+ } else {
274
+ if (scrollTop) {
275
+ $xeTable.scrollTo(scrollLeft, scrollTop - topSize);
276
+ startMouseScroll(evnt);
277
+ handleChecked(evnt);
278
+ } else {
279
+ stopMouseScroll();
280
+ }
281
+ }
282
+ }
283
+ }, 50);
284
+ };
285
+ (0, _dom.addClass)(el, 'drag--range');
286
+ document.onmousemove = evnt => {
287
+ evnt.preventDefault();
288
+ evnt.stopPropagation();
289
+ const {
290
+ clientY
291
+ } = evnt;
292
+ const {
293
+ boundingTop
294
+ } = (0, _dom.getAbsolutePos)(bodyWrapperElem);
295
+ // 如果超过可视区,触发滚动
296
+ if (clientY < boundingTop) {
297
+ isMouseScrollDown = false;
298
+ mouseScrollSpaceSize = boundingTop - clientY;
299
+ if (!mouseScrollTimeout) {
300
+ startMouseScroll(evnt);
301
+ }
302
+ } else if (clientY > boundingTop + bodyWrapperElem.clientHeight) {
303
+ isMouseScrollDown = true;
304
+ mouseScrollSpaceSize = clientY - boundingTop - bodyWrapperElem.clientHeight;
305
+ if (!mouseScrollTimeout) {
306
+ startMouseScroll(evnt);
307
+ }
308
+ } else if (mouseScrollTimeout) {
309
+ stopMouseScroll();
310
+ }
311
+ handleChecked(evnt);
312
+ };
313
+ document.onmouseup = evnt => {
314
+ stopMouseScroll();
315
+ (0, _dom.removeClass)(el, 'drag--range');
316
+ checkboxRangeElem.removeAttribute('style');
317
+ document.onmousemove = null;
318
+ document.onmouseup = null;
319
+ triggerEvent('end', evnt);
320
+ };
321
+ triggerEvent('start', evnt);
322
+ }
323
+ }
148
324
  var _default = exports.default = {
149
325
  methods: {
150
326
  // 处理 Tab 键移动
@@ -375,204 +551,27 @@ var _default = exports.default = {
375
551
  },
376
552
  handleCellMousedownEvent(evnt, params) {
377
553
  const $xeTable = this;
554
+ const props = $xeTable;
378
555
  const {
379
556
  editConfig,
380
- editOpts,
381
- handleSelected,
382
557
  checkboxConfig,
383
- checkboxOpts,
384
- mouseConfig,
385
- mouseOpts
386
- } = this;
558
+ mouseConfig
559
+ } = props;
560
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
561
+ const mouseOpts = $xeTable.computeMouseOpts;
562
+ const editOpts = $xeTable.computeEditOpts;
387
563
  if (mouseConfig && mouseOpts.area && $xeTable.triggerCellAreaModnEvent) {
388
564
  return $xeTable.triggerCellAreaModnEvent(evnt, params);
389
565
  } else {
390
566
  if (checkboxConfig && checkboxOpts.range) {
391
- this.handleCheckboxRangeEvent(evnt, params);
567
+ handleCheckboxRangeEvent($xeTable, evnt, params);
392
568
  }
393
569
  if (mouseConfig && mouseOpts.selected) {
394
570
  if (!editConfig || editOpts.mode === 'cell') {
395
- handleSelected(params, evnt);
571
+ $xeTable.handleSelected(params, evnt);
396
572
  }
397
573
  }
398
574
  }
399
- },
400
- handleCheckboxRangeEvent(evnt, params) {
401
- const $xeTable = this;
402
- const internalData = $xeTable;
403
- const {
404
- elemStore
405
- } = internalData;
406
- const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
407
- const leftScrollElem = (0, _util.getRefElem)(elemStore['left-body-scroll']);
408
- const rightScrollElem = (0, _util.getRefElem)(elemStore['right-body-scroll']);
409
- const {
410
- column,
411
- cell
412
- } = params;
413
- if (column.type === 'checkbox') {
414
- let bodyWrapperElem = bodyScrollElem;
415
- if (leftScrollElem && column.fixed === 'left') {
416
- bodyWrapperElem = leftScrollElem;
417
- } else if (rightScrollElem && column.fixed === 'right') {
418
- bodyWrapperElem = rightScrollElem;
419
- }
420
- if (!bodyWrapperElem) {
421
- return;
422
- }
423
- const el = $xeTable.$refs.refElem;
424
- const disX = evnt.clientX;
425
- const disY = evnt.clientY;
426
- const checkboxRangeElem = bodyWrapperElem.querySelector('.vxe-table--checkbox-range');
427
- const trElem = cell.parentNode;
428
- const selectRecords = this.getCheckboxRecords();
429
- let lastRangeRows = [];
430
- const marginSize = 1;
431
- const offsetRest = getTargetOffset(evnt.target, bodyWrapperElem);
432
- const startTop = offsetRest.offsetTop + evnt.offsetY;
433
- const startLeft = offsetRest.offsetLeft + evnt.offsetX;
434
- const startScrollTop = bodyWrapperElem.scrollTop;
435
- const rowHeight = trElem.offsetHeight;
436
- const trRect = trElem.getBoundingClientRect();
437
- const offsetClientTop = disY - trRect.y;
438
- let mouseScrollTimeout = null;
439
- let isMouseScrollDown = false;
440
- let mouseScrollSpaceSize = 1;
441
- const triggerEvent = (type, evnt) => {
442
- this.emitEvent(`checkbox-range-${type}`, {
443
- records: () => this.getCheckboxRecords(),
444
- reserves: () => this.getCheckboxReserveRecords()
445
- }, evnt);
446
- };
447
- const handleChecked = evnt => {
448
- const {
449
- clientX,
450
- clientY
451
- } = evnt;
452
- const offsetLeft = clientX - disX;
453
- const offsetTop = clientY - disY + (bodyWrapperElem.scrollTop - startScrollTop);
454
- let rangeHeight = Math.abs(offsetTop);
455
- let rangeWidth = Math.abs(offsetLeft);
456
- let rangeTop = startTop;
457
- let rangeLeft = startLeft;
458
- if (offsetTop < marginSize) {
459
- // 向上
460
- rangeTop += offsetTop;
461
- if (rangeTop < marginSize) {
462
- rangeTop = marginSize;
463
- rangeHeight = startTop;
464
- }
465
- } else {
466
- // 向下
467
- rangeHeight = Math.min(rangeHeight, bodyWrapperElem.scrollHeight - startTop - marginSize);
468
- }
469
- if (offsetLeft < marginSize) {
470
- // 向左
471
- rangeLeft += offsetLeft;
472
- if (rangeWidth > startLeft) {
473
- rangeLeft = marginSize;
474
- rangeWidth = startLeft;
475
- }
476
- } else {
477
- // 向右
478
- rangeWidth = Math.min(rangeWidth, bodyWrapperElem.clientWidth - startLeft - marginSize);
479
- }
480
- checkboxRangeElem.style.height = `${rangeHeight}px`;
481
- checkboxRangeElem.style.width = `${rangeWidth}px`;
482
- checkboxRangeElem.style.left = `${rangeLeft}px`;
483
- checkboxRangeElem.style.top = `${rangeTop}px`;
484
- checkboxRangeElem.style.display = 'block';
485
- const rangeRows = getCheckboxRangeRows(this, evnt, params, trElem, trRect, offsetClientTop, offsetTop < marginSize ? -rangeHeight : rangeHeight);
486
- // 至少滑动 10px 才能有效匹配
487
- if (rangeHeight > 10 && rangeRows.length !== lastRangeRows.length) {
488
- const isControlKey = (0, _dom.hasControlKey)(evnt);
489
- lastRangeRows = rangeRows;
490
- if (isControlKey) {
491
- rangeRows.forEach(row => {
492
- $xeTable.handleBatchSelectRows([row], selectRecords.indexOf(row) === -1);
493
- });
494
- } else {
495
- this.setAllCheckboxRow(false);
496
- this.handleCheckedCheckboxRow(rangeRows, true, false);
497
- }
498
- triggerEvent('change', evnt);
499
- }
500
- };
501
- // 停止鼠标滚动
502
- const stopMouseScroll = () => {
503
- clearTimeout(mouseScrollTimeout);
504
- mouseScrollTimeout = null;
505
- };
506
- // 开始鼠标滚动
507
- const startMouseScroll = evnt => {
508
- stopMouseScroll();
509
- mouseScrollTimeout = setTimeout(() => {
510
- if (mouseScrollTimeout) {
511
- const {
512
- scrollLeft,
513
- scrollTop,
514
- clientHeight,
515
- scrollHeight
516
- } = bodyWrapperElem;
517
- const topSize = Math.ceil(mouseScrollSpaceSize * 50 / rowHeight);
518
- if (isMouseScrollDown) {
519
- if (scrollTop + clientHeight < scrollHeight) {
520
- this.scrollTo(scrollLeft, scrollTop + topSize);
521
- startMouseScroll(evnt);
522
- handleChecked(evnt);
523
- } else {
524
- stopMouseScroll();
525
- }
526
- } else {
527
- if (scrollTop) {
528
- this.scrollTo(scrollLeft, scrollTop - topSize);
529
- startMouseScroll(evnt);
530
- handleChecked(evnt);
531
- } else {
532
- stopMouseScroll();
533
- }
534
- }
535
- }
536
- }, 50);
537
- };
538
- (0, _dom.addClass)(el, 'drag--range');
539
- document.onmousemove = evnt => {
540
- evnt.preventDefault();
541
- evnt.stopPropagation();
542
- const {
543
- clientY
544
- } = evnt;
545
- const {
546
- boundingTop
547
- } = (0, _dom.getAbsolutePos)(bodyWrapperElem);
548
- // 如果超过可视区,触发滚动
549
- if (clientY < boundingTop) {
550
- isMouseScrollDown = false;
551
- mouseScrollSpaceSize = boundingTop - clientY;
552
- if (!mouseScrollTimeout) {
553
- startMouseScroll(evnt);
554
- }
555
- } else if (clientY > boundingTop + bodyWrapperElem.clientHeight) {
556
- isMouseScrollDown = true;
557
- mouseScrollSpaceSize = clientY - boundingTop - bodyWrapperElem.clientHeight;
558
- if (!mouseScrollTimeout) {
559
- startMouseScroll(evnt);
560
- }
561
- } else if (mouseScrollTimeout) {
562
- stopMouseScroll();
563
- }
564
- handleChecked(evnt);
565
- };
566
- document.onmouseup = evnt => {
567
- stopMouseScroll();
568
- (0, _dom.removeClass)(el, 'drag--range');
569
- checkboxRangeElem.removeAttribute('style');
570
- document.onmousemove = null;
571
- document.onmouseup = null;
572
- triggerEvent('end', evnt);
573
- };
574
- triggerEvent('start', evnt);
575
- }
576
575
  }
577
576
  }
578
577
  };
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_util=require("../../src/util"),_dom=require("../../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let browseObj=_xeUtils.default.browse();function getTargetOffset(e,t){let l=0,o=0;var r,n,i=!browseObj.firefox&&(0,_dom.hasClass)(e,"vxe-checkbox--label");for(i&&(r=getComputedStyle(e),l-=_xeUtils.default.toNumber(r.paddingTop),o-=_xeUtils.default.toNumber(r.paddingLeft));e&&e!==t;)l+=e.offsetTop,o+=e.offsetLeft,e=e.offsetParent,i&&(n=getComputedStyle(e),l-=_xeUtils.default.toNumber(n.paddingTop),o-=_xeUtils.default.toNumber(n.paddingLeft));return{offsetTop:l,offsetLeft:o}}function getCheckboxRangeRows(t,e,l,o,r,n,i){var u=t.showOverflow,{fullAllDataRowIdData:s,isResizeCellHeight:c}=t,d=t.computeRowOpts,h=t.computeCellOpts,a=t.computeDefaultRowHeight,l=l.row;let g=0,m=[],f=0;var C=0<i,p=t.scrollYLoad,w=t.afterFullData;if(f=C?n+i:r.height-n+Math.abs(i),p){r=t.getVTRowIndex(l);if(!(c||h.height||d.height)&&u)m=C?w.slice(r,r+Math.ceil(f/a)):w.slice(r-Math.floor(f/a),r+1);else if(C)for(let e=r;e<w.length;e++){var v=w[e],x=s[t.getRowid(v)]||{};if(g+=x.resizeHeight||h.height||d.height||x.height||a,m.push(v),g>f)return m}else for(let e=r;0<=e;e--){var R=w[e],b=s[t.getRowid(R)]||{};if(g+=b.resizeHeight||h.height||d.height||b.height||a,m.push(R),g>f)return m}}else for(var T=C?"next":"previous";o&&g<f;){var O=t.getRowNode(o);O&&(m.push(O.item),g+=o.offsetHeight,o=o[T+"ElementSibling"])}return m}function handleMoveSelected(e,t,l,o,r,n,i){var{afterFullData:u,visibleColumn:s}=e;let c=Object.assign({},l);var l=e.getVTRowIndex(c.row),d=e.getVTColumnIndex(c.column);return t.preventDefault(),r&&0<l?(c.rowIndex=l-1,c.row=u[c.rowIndex]):i&&l<u.length-1?(c.rowIndex=l+1,c.row=u[c.rowIndex]):o&&d?(c.columnIndex=d-1,c.column=s[c.columnIndex]):n&&d<s.length-1&&(c.columnIndex=d+1,c.column=s[c.columnIndex]),e.scrollToRow(c.row,c.column).then(()=>{c.cell=e.getCellElement(c.row,c.column),e.handleSelected(c,t)}),c}var _default=exports.default={methods:{moveTabSelected(e,t,l){let o=this;var r=o.editConfig,{afterFullData:n,visibleColumn:i}=o,u=o.computeEditOpts,s=o.computeRowOpts,c=o.computeCurrentRowOpts,d=o.computeColumnOpts,h=o.computeCurrentColumnOpts;let a,g,m,f=Object.assign({},e);var e=o.getVTRowIndex(f.row),C=o.getVTColumnIndex(f.column),t=(l.preventDefault(),t?C<=0?0<e&&(g=e-1,a=n[g],m=i.length-1):m=C-1:C>=i.length-1?e<n.length-1&&(g=e+1,a=n[g],m=0):m=C+1,i[m]);t&&(a?(f.rowIndex=g,f.row=a):f.rowIndex=e,f.columnIndex=m,f.column=t,f.cell=o.getCellElement(f.row,f.column),s.isCurrent&&c.isFollowSelected&&o.triggerCurrentRowEvent(l,f),d.isCurrent&&h.isFollowSelected&&o.triggerCurrentColumnEvent(l,f),r?"click"!==u.trigger&&"dblclick"!==u.trigger||("row"===u.mode?o.handleEdit(f,l):o.scrollToRow(f.row,f.column).then(()=>{o.handleSelected(f,l)})):o.scrollToRow(f.row,f.column).then(()=>{o.handleSelected(f,l)}))},moveCurrentRow(e,t,l){let o=this;var r=o,n=o,i=o,r=r.treeConfig;let u=n.currentRow;var n=i.afterFullData,i=o.computeTreeOpts,i=i.children||i.childrenField;let s;if(u?r?({index:r,items:i}=_xeUtils.default.findTree(n,e=>e===u,{children:i}),e&&0<r?s=i[r-1]:t&&r<i.length-1&&(s=i[r+1])):(i=o.getVTRowIndex(u),e&&0<i?s=n[i-1]:t&&i<n.length-1&&(s=n[i+1])):s=n[0],s){l.preventDefault();let e={$table:o,row:s,rowIndex:o.getRowIndex(s),$rowIndex:o.getVMRowIndex(s)};o.scrollToRow(s).then(()=>o.triggerCurrentRowEvent(l,e))}},moveCurrentColumn(e,t,l){let o=this;var r=o.currentColumn,n=o.visibleColumn;let i=null;if(r?(r=o.getVTColumnIndex(r),e&&0<r?i=n[r-1]:t&&r<n.length-1&&(i=n[r+1])):i=n[0],i){l.preventDefault();let e={$table:o,column:i,columnIndex:o.getColumnIndex(i),$columnIndex:o.getVMColumnIndex(i)};o.scrollToColumn(i).then(()=>o.triggerCurrentColumnEvent(l,e))}},moveArrowSelected(e,t,l,o,r,n){var i=this,{highlightCurrentRow:u,highlightCurrentColumn:s}=i,c=i.computeRowOpts,d=i.computeCurrentRowOpts,h=i.computeColumnOpts,a=i.computeCurrentColumnOpts,e=handleMoveSelected(i,n,e,t,l,o,r);(c.isCurrent||u)&&(d.isFollowSelected?i.triggerCurrentRowEvent(n,e):(l||r)&&(c.isCurrent||u)&&i.moveCurrentRow(l,r,n)),(h.isCurrent||s)&&(a.isFollowSelected?i.triggerCurrentColumnEvent(n,e):(t||o)&&(h.isCurrent||s)&&i.moveCurrentColumn(t,o,n))},moveEnterSelected(e,t,l,o,r,n){var i=this,{highlightCurrentRow:u,highlightCurrentColumn:s}=i,c=i.computeRowOpts,d=i.computeCurrentRowOpts,h=i.computeColumnOpts,a=i.computeCurrentColumnOpts,e=handleMoveSelected(i,n,e,t,l,o,r);(c.isCurrent||u)&&d.isFollowSelected&&i.triggerCurrentRowEvent(n,e),(h.isCurrent||s)&&a.isFollowSelected&&i.triggerCurrentColumnEvent(n,e)},moveSelected(e,t,l,o,r,n){handleMoveSelected(this,n,e,t,l,o,r)},handleCellMousedownEvent(e,t){var{editConfig:l,editOpts:o,handleSelected:r,checkboxConfig:n,checkboxOpts:i,mouseConfig:u,mouseOpts:s}=this;if(u&&s.area&&this.triggerCellAreaModnEvent)return this.triggerCellAreaModnEvent(e,t);n&&i.range&&this.handleCheckboxRangeEvent(e,t),u&&s.selected&&(l&&"cell"!==o.mode||r(t,e))},handleCheckboxRangeEvent(e,S){let _=this;var t=_.elemStore,l=(0,_util.getRefElem)(t["main-body-scroll"]),o=(0,_util.getRefElem)(t["left-body-scroll"]),t=(0,_util.getRefElem)(t["right-body-scroll"]),{column:r,cell:n}=S;if("checkbox"===r.type){let E=l;if(o&&"left"===r.fixed?E=o:t&&"right"===r.fixed&&(E=t),E){let t=_.$refs.refElem,u=e.clientX,s=e.clientY,c=E.querySelector(".vxe-table--checkbox-range"),d=n.parentNode,h=this.getCheckboxRecords(),a=[],g=1;l=getTargetOffset(e.target,E);let m=l.offsetTop+e.offsetY,f=l.offsetLeft+e.offsetX,C=E.scrollTop,i=d.offsetHeight,p=d.getBoundingClientRect(),w=s-p.y,v=null,x=!1,R=1,b=(e,t)=>{this.emitEvent("checkbox-range-"+e,{records:()=>this.getCheckboxRecords(),reserves:()=>this.getCheckboxReserveRecords()},t)},T=e=>{var{clientX:t,clientY:l}=e,t=t-u,l=l-s+(E.scrollTop-C);let o=Math.abs(l),r=Math.abs(t),n=m,i=f;l<g?(n+=l)<g&&(n=g,o=m):o=Math.min(o,E.scrollHeight-m-g),t<g?(i+=t,r>f&&(i=g,r=f)):r=Math.min(r,E.clientWidth-f-g),c.style.height=o+"px",c.style.width=r+"px",c.style.left=i+"px",c.style.top=n+"px",c.style.display="block";t=getCheckboxRangeRows(this,e,S,d,p,w,l<g?-o:o);10<o&&t.length!==a.length&&(l=(0,_dom.hasControlKey)(e),a=t,l?t.forEach(e=>{_.handleBatchSelectRows([e],-1===h.indexOf(e))}):(this.setAllCheckboxRow(!1),this.handleCheckedCheckboxRow(t,!0,!1)),b("change",e))},O=()=>{clearTimeout(v),v=null},I=n=>{O(),v=setTimeout(()=>{var e,t,l,o,r;v&&({scrollLeft:e,scrollTop:t,clientHeight:l,scrollHeight:o}=E,r=Math.ceil(50*R/i),x?t+l<o?(this.scrollTo(e,t+r),I(n),T(n)):O():t?(this.scrollTo(e,t-r),I(n),T(n)):O())},50)};(0,_dom.addClass)(t,"drag--range"),document.onmousemove=e=>{e.preventDefault(),e.stopPropagation();var t=e.clientY,l=(0,_dom.getAbsolutePos)(E).boundingTop;t<l?(x=!1,R=l-t,v||I(e)):t>l+E.clientHeight?(x=!0,R=t-l-E.clientHeight,v||I(e)):v&&O(),T(e)},document.onmouseup=e=>{O(),(0,_dom.removeClass)(t,"drag--range"),c.removeAttribute("style"),document.onmousemove=null,document.onmouseup=null,b("end",e)},b("start",e)}}}}};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_util=require("../../src/util"),_dom=require("../../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let browseObj=_xeUtils.default.browse();function getTargetOffset(e,t){let l=0,o=0;var r,n,u=!browseObj.firefox&&(0,_dom.hasClass)(e,"vxe-checkbox--label");for(u&&(r=getComputedStyle(e),l-=_xeUtils.default.toNumber(r.paddingTop),o-=_xeUtils.default.toNumber(r.paddingLeft));e&&e!==t;)l+=e.offsetTop,o+=e.offsetLeft,e=e.offsetParent,u&&(n=getComputedStyle(e),l-=_xeUtils.default.toNumber(n.paddingTop),o-=_xeUtils.default.toNumber(n.paddingLeft));return{offsetTop:l,offsetLeft:o}}function getCheckboxRangeRows(t,e,l,o,r,n,u){var i=t.showOverflow,{fullAllDataRowIdData:s,isResizeCellHeight:c}=t,d=t.computeRowOpts,a=t.computeCellOpts,g=t.computeDefaultRowHeight,l=l.row;let h=0,m=[],f=0;var C=0<u,p=t.scrollYLoad,w=t.afterFullData;if(f=C?n+u:r.height-n+Math.abs(u),p){r=t.getVTRowIndex(l);if(!(c||a.height||d.height)&&i)m=C?w.slice(r,r+Math.ceil(f/g)):w.slice(r-Math.floor(f/g),r+1);else if(C)for(let e=r;e<w.length;e++){var v=w[e],x=s[t.getRowid(v)]||{};if(h+=x.resizeHeight||a.height||d.height||x.height||g,m.push(v),h>f)return m}else for(let e=r;0<=e;e--){var R=w[e],b=s[t.getRowid(R)]||{};if(h+=b.resizeHeight||a.height||d.height||b.height||g,m.push(R),h>f)return m}}else for(var T=C?"next":"previous";o&&h<f;){var O=t.getRowNode(o);O&&(m.push(O.item),h+=o.offsetHeight,o=o[T+"ElementSibling"])}return m}function handleMoveSelected(e,t,l,o,r,n,u){var{afterFullData:i,visibleColumn:s}=e;let c=Object.assign({},l);var l=e.getVTRowIndex(c.row),d=e.getVTColumnIndex(c.column);return t.preventDefault(),r&&0<l?(c.rowIndex=l-1,c.row=i[c.rowIndex]):u&&l<i.length-1?(c.rowIndex=l+1,c.row=i[c.rowIndex]):o&&d?(c.columnIndex=d-1,c.column=s[c.columnIndex]):n&&d<s.length-1&&(c.columnIndex=d+1,c.column=s[c.columnIndex]),e.scrollToRow(c.row,c.column).then(()=>{c.cell=e.getCellElement(c.row,c.column),e.handleSelected(c,t)}),c}function handleCheckboxRangeEvent(S,e,_){var t=S.elemStore,l=(0,_util.getRefElem)(t["main-body-scroll"]),o=(0,_util.getRefElem)(t["left-body-scroll"]),t=(0,_util.getRefElem)(t["right-body-scroll"]),{column:r,cell:n}=_;if("checkbox"===r.type){let E=l;if(o&&"left"===r.fixed?E=o:t&&"right"===r.fixed&&(E=t),E){let t=S.$refs.refElem,i=e.clientX,s=e.clientY,c=E.querySelector(".vxe-table--checkbox-range"),d=n.parentNode,a=S.getCheckboxRecords(),g=[],h=1;l=getTargetOffset(e.target,E);let m=l.offsetTop+e.offsetY,f=l.offsetLeft+e.offsetX,C=E.scrollTop,u=d.offsetHeight,p=d.getBoundingClientRect(),w=s-p.y,v=null,x=!1,R=1,b=(e,t)=>{S.dispatchEvent("checkbox-range-"+e,{records:()=>S.getCheckboxRecords(),reserves:()=>S.getCheckboxReserveRecords()},t)},T=e=>{var{clientX:t,clientY:l}=e,t=t-i,l=l-s+(E.scrollTop-C);let o=Math.abs(l),r=Math.abs(t),n=m,u=f;l<h?(n+=l)<h&&(n=h,o=m):o=Math.min(o,E.scrollHeight-m-h),t<h?(u+=t,r>f&&(u=h,r=f)):r=Math.min(r,E.clientWidth-f-h),c.style.height=o+"px",c.style.width=r+"px",c.style.left=u+"px",c.style.top=n+"px",c.style.display="block";t=getCheckboxRangeRows(S,e,_,d,p,w,l<h?-o:o);10<o&&t.length!==g.length&&(l=(0,_dom.hasControlKey)(e),g=t,l?t.forEach(e=>{S.handleBatchSelectRows([e],-1===a.indexOf(e))}):(S.setAllCheckboxRow(!1),S.handleCheckedCheckboxRow(t,!0,!1)),b("change",e))},O=()=>{clearTimeout(v),v=null},I=n=>{O(),v=setTimeout(()=>{var e,t,l,o,r;v&&({scrollLeft:e,scrollTop:t,clientHeight:l,scrollHeight:o}=E,r=Math.ceil(50*R/u),x?t+l<o?(S.scrollTo(e,t+r),I(n),T(n)):O():t?(S.scrollTo(e,t-r),I(n),T(n)):O())},50)};(0,_dom.addClass)(t,"drag--range"),document.onmousemove=e=>{e.preventDefault(),e.stopPropagation();var t=e.clientY,l=(0,_dom.getAbsolutePos)(E).boundingTop;t<l?(x=!1,R=l-t,v||I(e)):t>l+E.clientHeight?(x=!0,R=t-l-E.clientHeight,v||I(e)):v&&O(),T(e)},document.onmouseup=e=>{O(),(0,_dom.removeClass)(t,"drag--range"),c.removeAttribute("style"),document.onmousemove=null,document.onmouseup=null,b("end",e)},b("start",e)}}}var _default=exports.default={methods:{moveTabSelected(e,t,l){let o=this;var r=o.editConfig,{afterFullData:n,visibleColumn:u}=o,i=o.computeEditOpts,s=o.computeRowOpts,c=o.computeCurrentRowOpts,d=o.computeColumnOpts,a=o.computeCurrentColumnOpts;let g,h,m,f=Object.assign({},e);var e=o.getVTRowIndex(f.row),C=o.getVTColumnIndex(f.column),t=(l.preventDefault(),t?C<=0?0<e&&(h=e-1,g=n[h],m=u.length-1):m=C-1:C>=u.length-1?e<n.length-1&&(h=e+1,g=n[h],m=0):m=C+1,u[m]);t&&(g?(f.rowIndex=h,f.row=g):f.rowIndex=e,f.columnIndex=m,f.column=t,f.cell=o.getCellElement(f.row,f.column),s.isCurrent&&c.isFollowSelected&&o.triggerCurrentRowEvent(l,f),d.isCurrent&&a.isFollowSelected&&o.triggerCurrentColumnEvent(l,f),r?"click"!==i.trigger&&"dblclick"!==i.trigger||("row"===i.mode?o.handleEdit(f,l):o.scrollToRow(f.row,f.column).then(()=>{o.handleSelected(f,l)})):o.scrollToRow(f.row,f.column).then(()=>{o.handleSelected(f,l)}))},moveCurrentRow(e,t,l){let o=this;var r=o,n=o,u=o,r=r.treeConfig;let i=n.currentRow;var n=u.afterFullData,u=o.computeTreeOpts,u=u.children||u.childrenField;let s;if(i?r?({index:r,items:u}=_xeUtils.default.findTree(n,e=>e===i,{children:u}),e&&0<r?s=u[r-1]:t&&r<u.length-1&&(s=u[r+1])):(u=o.getVTRowIndex(i),e&&0<u?s=n[u-1]:t&&u<n.length-1&&(s=n[u+1])):s=n[0],s){l.preventDefault();let e={$table:o,row:s,rowIndex:o.getRowIndex(s),$rowIndex:o.getVMRowIndex(s)};o.scrollToRow(s).then(()=>o.triggerCurrentRowEvent(l,e))}},moveCurrentColumn(e,t,l){let o=this;var r=o.currentColumn,n=o.visibleColumn;let u=null;if(r?(r=o.getVTColumnIndex(r),e&&0<r?u=n[r-1]:t&&r<n.length-1&&(u=n[r+1])):u=n[0],u){l.preventDefault();let e={$table:o,column:u,columnIndex:o.getColumnIndex(u),$columnIndex:o.getVMColumnIndex(u)};o.scrollToColumn(u).then(()=>o.triggerCurrentColumnEvent(l,e))}},moveArrowSelected(e,t,l,o,r,n){var u=this,{highlightCurrentRow:i,highlightCurrentColumn:s}=u,c=u.computeRowOpts,d=u.computeCurrentRowOpts,a=u.computeColumnOpts,g=u.computeCurrentColumnOpts,e=handleMoveSelected(u,n,e,t,l,o,r);(c.isCurrent||i)&&(d.isFollowSelected?u.triggerCurrentRowEvent(n,e):(l||r)&&(c.isCurrent||i)&&u.moveCurrentRow(l,r,n)),(a.isCurrent||s)&&(g.isFollowSelected?u.triggerCurrentColumnEvent(n,e):(t||o)&&(a.isCurrent||s)&&u.moveCurrentColumn(t,o,n))},moveEnterSelected(e,t,l,o,r,n){var u=this,{highlightCurrentRow:i,highlightCurrentColumn:s}=u,c=u.computeRowOpts,d=u.computeCurrentRowOpts,a=u.computeColumnOpts,g=u.computeCurrentColumnOpts,e=handleMoveSelected(u,n,e,t,l,o,r);(c.isCurrent||i)&&d.isFollowSelected&&u.triggerCurrentRowEvent(n,e),(a.isCurrent||s)&&g.isFollowSelected&&u.triggerCurrentColumnEvent(n,e)},moveSelected(e,t,l,o,r,n){handleMoveSelected(this,n,e,t,l,o,r)},handleCellMousedownEvent(e,t){var l=this,{editConfig:o,checkboxConfig:r,mouseConfig:n}=l,u=l.computeCheckboxOpts,i=l.computeMouseOpts,s=l.computeEditOpts;if(n&&i.area&&l.triggerCellAreaModnEvent)return l.triggerCellAreaModnEvent(e,t);r&&u.range&&handleCheckboxRangeEvent(l,e,t),n&&i.selected&&(o&&"cell"!==s.mode||l.handleSelected(t,e))}}};
@@ -137,26 +137,33 @@ var _default = exports.default = {
137
137
  };
138
138
  if (columnTargetNode.flag) {
139
139
  const cell = columnTargetNode.targetElem;
140
- const column = this.getColumnNode(cell).item;
140
+ const columnNodeRest = $xeTable.getColumnNode(cell);
141
+ const column = columnNodeRest ? columnNodeRest.item : null;
141
142
  let typePrefix = `${layout}-`;
142
- Object.assign(params, {
143
- column,
144
- columnIndex: this.getColumnIndex(column),
145
- cell
146
- });
143
+ if (column) {
144
+ Object.assign(params, {
145
+ column,
146
+ columnIndex: $xeTable.getColumnIndex(column),
147
+ cell
148
+ });
149
+ }
147
150
  if (layout === 'body') {
148
- const row = this.getRowNode(cell.parentNode).item;
151
+ const rowNodeRest = $xeTable.getRowNode(cell.parentNode);
152
+ const row = rowNodeRest ? rowNodeRest.item : null;
149
153
  typePrefix = '';
150
- params.row = row;
151
- params.rowIndex = this.getRowIndex(row);
154
+ if (row) {
155
+ params.row = row;
156
+ params.rowIndex = $xeTable.getRowIndex(row);
157
+ }
152
158
  }
159
+ const eventType = `${typePrefix}cell-menu`;
153
160
  this.handleOpenMenuEvent(evnt, layout, params);
154
161
  // 在 v4 中废弃事件 cell-context-menu、header-cell-context-menu、footer-cell-context-menu
155
162
  if (this.$listeners[`${typePrefix}cell-context-menu`]) {
156
163
  (0, _log.warnLog)('vxe.error.delEvent', [`${typePrefix}cell-context-menu`, `${typePrefix}cell-menu`]);
157
- this.emitEvent(`${typePrefix}cell-context-menu`, params, evnt);
164
+ $xeTable.dispatchEvent(`${typePrefix}cell-context-menu`, params, evnt);
158
165
  } else {
159
- this.emitEvent(`${typePrefix}cell-menu`, params, evnt);
166
+ $xeTable.dispatchEvent(eventType, params, evnt);
160
167
  }
161
168
  return;
162
169
  } else if ((0, _dom.getEventTargetNode)(evnt, this.$el, `vxe-table--${layout}-wrapper`, target => target.getAttribute('xid') === tId).flag) {
@@ -339,9 +346,9 @@ var _default = exports.default = {
339
346
  // 在 v4 中废弃事件 context-menu-click
340
347
  if (this.$listeners['context-menu-click']) {
341
348
  (0, _log.warnLog)('vxe.error.delEvent', ['context-menu-click', 'menu-click']);
342
- this.emitEvent('context-menu-click', params, evnt);
349
+ $xeTable.dispatchEvent('context-menu-click', params, evnt);
343
350
  } else {
344
- this.emitEvent('menu-click', params, evnt);
351
+ $xeTable.dispatchEvent('menu-click', params, evnt);
345
352
  }
346
353
  this.closeMenu();
347
354
  }
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_dom=require("../../../ui/src/dom"),_utils=require("../../../ui/src/utils"),_log=require("../../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{menus,globalEvents,GLOBAL_EVENT_KEYS}=_ui.VxeUI;var _default=exports.default={methods:{_closeMenu(){return Object.assign(this.ctxMenuStore,{visible:!1,selected:null,selectChild:null,showChild:!1}),this.$nextTick()},moveCtxMenu(e,t,l,i,n,o){let s;var r=_xeUtils.default.findIndexOf(o,e=>t[l]===e);if(i)n&&(0,_utils.hasChildrenList)(t.selected)?t.showChild=!0:(t.showChild=!1,t.selectChild=null);else if(globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.ARROW_UP)){for(let e=r-1;0<=e;e--)if(!1!==o[e].visible){s=o[e];break}t[l]=s||o[o.length-1]}else if(globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.ARROW_DOWN)){for(let e=r+1;e<o.length;e++)if(!1!==o[e].visible){s=o[e];break}t[l]=s||o[0]}else t[l]&&(globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.ENTER)||globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.SPACEBAR))&&this.ctxMenuLinkEvent(e,t[l])},handleGlobalContextmenuEvent(t){var l=this,i=l.$xeGrid,n=l.$xeGantt,e=l;let{$refs:o,tId:s,editStore:r,menuConfig:u,contextMenu:d,ctxMenuStore:h,ctxMenuOpts:a,mouseConfig:c,mouseOpts:v}=this;var g=r.selected,f=l.$refs.refTableFilter,m=["header","body","footer"];if((0,_utils.isEnableConf)(u)||d){if(h.visible&&o.refTableMenu&&(0,_dom.getEventTargetNode)(t,o.refTableMenu.$el).flag)return void t.preventDefault();if(e._keyCtx){var e="body",x={type:e,$table:l,$grid:i,$gantt:n,keyboard:!0,columns:this.visibleColumn.slice(0),$event:t};if(c&&v.area){var b=this.getActiveCellArea();if(b&&b.row&&b.column)return x.row=b.row,x.column=b.column,void this.handleOpenMenuEvent(t,e,x)}else if(c&&v.selected&&g.row&&g.column)return x.row=g.row,x.column=g.column,void this.handleOpenMenuEvent(t,e,x)}for(let e=0;e<m.length;e++){var E=m[e],p=(0,_dom.getEventTargetNode)(t,this.$el,`vxe-${E}--column`,e=>e.parentNode.parentNode.parentNode.getAttribute("xid")===s),_={type:E,$table:l,$grid:i,$gantt:n,columns:this.visibleColumn.slice(0),$event:t};if(p.flag){var p=p.targetElem,M=this.getColumnNode(p).item;let e=E+"-";return Object.assign(_,{column:M,columnIndex:this.getColumnIndex(M),cell:p}),"body"===E&&(M=this.getRowNode(p.parentNode).item,e="",_.row=M,_.rowIndex=this.getRowIndex(M)),this.handleOpenMenuEvent(t,E,_),void(this.$listeners[e+"cell-context-menu"]?((0,_log.warnLog)("vxe.error.delEvent",[e+"cell-context-menu",e+"cell-menu"]),this.emitEvent(e+"cell-context-menu",_,t)):this.emitEvent(e+"cell-menu",_,t))}if((0,_dom.getEventTargetNode)(t,this.$el,`vxe-table--${E}-wrapper`,e=>e.getAttribute("xid")===s).flag)return void("cell"===a.trigger?t.preventDefault():this.handleOpenMenuEvent(t,E,_))}}f&&!(0,_dom.getEventTargetNode)(t,f.$el).flag&&this.closeFilter(),this.closeMenu()},handleOpenMenuEvent(l,i,c){let{isCtxMenu:n,ctxMenuStore:v,ctxMenuOpts:e}=this;i=e[i];let o=e.visibleMethod;if(i){let{options:t,disabled:e}=i;e?l.preventDefault():n&&t&&t.length&&(c.options=t,this.preventEvent(l,"event.showMenu",c,()=>{if(!o||o(c)){l.preventDefault(),this.updateZindex();let{scrollTop:n,scrollLeft:o,visibleHeight:s,visibleWidth:r}=(0,_dom.getDomNode)(),u=l.clientY+n,d=l.clientX+o,i=()=>{Object.assign(v,{args:c,visible:!0,list:t,selected:null,selectChild:null,showChild:!1,style:{zIndex:this.tZindex,top:u+"px",left:d+"px"}}),this.$nextTick(()=>{var e=this.$refs.refTableMenu.$el,t=e.clientHeight,l=e.clientWidth,{boundingTop:e,boundingLeft:i}=(0,_dom.getAbsolutePos)(e),e=e+t-s,i=i+l-r;-10<e&&(v.style.top=Math.max(n+2,u-t-2)+"px"),-10<i&&(v.style.left=Math.max(o+2,d-l-2)+"px")})},{keyboard:e,row:h,column:a}=c;e&&h&&a?this.scrollToRow(h,a).then(()=>{var e=this.getCellElement(h,a),{boundingTop:t,boundingLeft:l}=(0,_dom.getAbsolutePos)(e);u=t+n+Math.floor(e.offsetHeight/2),d=l+o+Math.floor(e.offsetWidth/2),i()}):i()}else this.closeMenu()}))}this.closeFilter()},ctxMenuMouseoverEvent(e,t,l){let d=e.currentTarget;var i=this.ctxMenuStore;e.preventDefault(),e.stopPropagation(),i.selected=t,(i.selectChild=l)||(i.showChild=(0,_utils.hasChildrenList)(t),i.showChild&&this.$nextTick(()=>{var n=d.nextElementSibling;if(n){var{boundingTop:o,boundingLeft:s,visibleHeight:r,visibleWidth:u}=(0,_dom.getAbsolutePos)(d),o=o+d.offsetHeight;let e="",t="",l=(s+d.offsetWidth+n.offsetWidth>u-10&&(e="auto",t=d.offsetWidth+"px"),""),i="";o+n.offsetHeight>r-10&&(l="auto",i="0"),n.style.left=e,n.style.right=t,n.style.top=l,n.style.bottom=i}}))},ctxMenuMouseoutEvent(e,t){var l=this.ctxMenuStore;t.children||(l.selected=null),l.selectChild=null},ctxMenuLinkEvent(e,t){var l,i=this.$xeGrid,n=this.$xeGantt;t.disabled||!t.code&&t.children&&t.children.length||(l=menus.get(t.code),t=Object.assign({menu:t,$table:this,$grid:i,$gantt:n,$event:e},this.ctxMenuStore.args),l&&l.menuMethod&&l.menuMethod(t,e),this.$listeners["context-menu-click"]?((0,_log.warnLog)("vxe.error.delEvent",["context-menu-click","menu-click"]),this.emitEvent("context-menu-click",t,e)):this.emitEvent("menu-click",t,e),this.closeMenu())}}};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_dom=require("../../../ui/src/dom"),_utils=require("../../../ui/src/utils"),_log=require("../../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{menus,globalEvents,GLOBAL_EVENT_KEYS}=_ui.VxeUI;var _default=exports.default={methods:{_closeMenu(){return Object.assign(this.ctxMenuStore,{visible:!1,selected:null,selectChild:null,showChild:!1}),this.$nextTick()},moveCtxMenu(e,t,l,n,i,o){let s;var r=_xeUtils.default.findIndexOf(o,e=>t[l]===e);if(n)i&&(0,_utils.hasChildrenList)(t.selected)?t.showChild=!0:(t.showChild=!1,t.selectChild=null);else if(globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.ARROW_UP)){for(let e=r-1;0<=e;e--)if(!1!==o[e].visible){s=o[e];break}t[l]=s||o[o.length-1]}else if(globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.ARROW_DOWN)){for(let e=r+1;e<o.length;e++)if(!1!==o[e].visible){s=o[e];break}t[l]=s||o[0]}else t[l]&&(globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.ENTER)||globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.SPACEBAR))&&this.ctxMenuLinkEvent(e,t[l])},handleGlobalContextmenuEvent(t){var l=this,n=l.$xeGrid,i=l.$xeGantt,e=l;let{$refs:o,tId:s,editStore:r,menuConfig:u,contextMenu:d,ctxMenuStore:a,ctxMenuOpts:h,mouseConfig:c,mouseOpts:v}=this;var g=r.selected,f=l.$refs.refTableFilter,x=["header","body","footer"];if((0,_utils.isEnableConf)(u)||d){if(a.visible&&o.refTableMenu&&(0,_dom.getEventTargetNode)(t,o.refTableMenu.$el).flag)return void t.preventDefault();if(e._keyCtx){var e="body",m={type:e,$table:l,$grid:n,$gantt:i,keyboard:!0,columns:this.visibleColumn.slice(0),$event:t};if(c&&v.area){var b=this.getActiveCellArea();if(b&&b.row&&b.column)return m.row=b.row,m.column=b.column,void this.handleOpenMenuEvent(t,e,m)}else if(c&&v.selected&&g.row&&g.column)return m.row=g.row,m.column=g.column,void this.handleOpenMenuEvent(t,e,m)}for(let e=0;e<x.length;e++){var p=x[e],E=(0,_dom.getEventTargetNode)(t,this.$el,`vxe-${p}--column`,e=>e.parentNode.parentNode.parentNode.getAttribute("xid")===s),_={type:p,$table:l,$grid:n,$gantt:i,columns:this.visibleColumn.slice(0),$event:t};if(E.flag){var E=E.targetElem,M=l.getColumnNode(E),M=M?M.item:null;let e=p+"-";M&&Object.assign(_,{column:M,columnIndex:l.getColumnIndex(M),cell:E}),"body"===p&&(E=(M=l.getRowNode(E.parentNode))?M.item:null,e="",E)&&(_.row=E,_.rowIndex=l.getRowIndex(E));M=e+"cell-menu";return this.handleOpenMenuEvent(t,p,_),void(this.$listeners[e+"cell-context-menu"]?((0,_log.warnLog)("vxe.error.delEvent",[e+"cell-context-menu",e+"cell-menu"]),l.dispatchEvent(e+"cell-context-menu",_,t)):l.dispatchEvent(M,_,t))}if((0,_dom.getEventTargetNode)(t,this.$el,`vxe-table--${p}-wrapper`,e=>e.getAttribute("xid")===s).flag)return void("cell"===h.trigger?t.preventDefault():this.handleOpenMenuEvent(t,p,_))}}f&&!(0,_dom.getEventTargetNode)(t,f.$el).flag&&this.closeFilter(),this.closeMenu()},handleOpenMenuEvent(l,n,c){let{isCtxMenu:i,ctxMenuStore:v,ctxMenuOpts:e}=this;n=e[n];let o=e.visibleMethod;if(n){let{options:t,disabled:e}=n;e?l.preventDefault():i&&t&&t.length&&(c.options=t,this.preventEvent(l,"event.showMenu",c,()=>{if(!o||o(c)){l.preventDefault(),this.updateZindex();let{scrollTop:i,scrollLeft:o,visibleHeight:s,visibleWidth:r}=(0,_dom.getDomNode)(),u=l.clientY+i,d=l.clientX+o,n=()=>{Object.assign(v,{args:c,visible:!0,list:t,selected:null,selectChild:null,showChild:!1,style:{zIndex:this.tZindex,top:u+"px",left:d+"px"}}),this.$nextTick(()=>{var e=this.$refs.refTableMenu.$el,t=e.clientHeight,l=e.clientWidth,{boundingTop:e,boundingLeft:n}=(0,_dom.getAbsolutePos)(e),e=e+t-s,n=n+l-r;-10<e&&(v.style.top=Math.max(i+2,u-t-2)+"px"),-10<n&&(v.style.left=Math.max(o+2,d-l-2)+"px")})},{keyboard:e,row:a,column:h}=c;e&&a&&h?this.scrollToRow(a,h).then(()=>{var e=this.getCellElement(a,h),{boundingTop:t,boundingLeft:l}=(0,_dom.getAbsolutePos)(e);u=t+i+Math.floor(e.offsetHeight/2),d=l+o+Math.floor(e.offsetWidth/2),n()}):n()}else this.closeMenu()}))}this.closeFilter()},ctxMenuMouseoverEvent(e,t,l){let d=e.currentTarget;var n=this.ctxMenuStore;e.preventDefault(),e.stopPropagation(),n.selected=t,(n.selectChild=l)||(n.showChild=(0,_utils.hasChildrenList)(t),n.showChild&&this.$nextTick(()=>{var i=d.nextElementSibling;if(i){var{boundingTop:o,boundingLeft:s,visibleHeight:r,visibleWidth:u}=(0,_dom.getAbsolutePos)(d),o=o+d.offsetHeight;let e="",t="",l=(s+d.offsetWidth+i.offsetWidth>u-10&&(e="auto",t=d.offsetWidth+"px"),""),n="";o+i.offsetHeight>r-10&&(l="auto",n="0"),i.style.left=e,i.style.right=t,i.style.top=l,i.style.bottom=n}}))},ctxMenuMouseoutEvent(e,t){var l=this.ctxMenuStore;t.children||(l.selected=null),l.selectChild=null},ctxMenuLinkEvent(e,t){var l,n=this,i=n.$xeGrid,o=n.$xeGantt;t.disabled||!t.code&&t.children&&t.children.length||(l=menus.get(t.code),t=Object.assign({menu:t,$table:n,$grid:i,$gantt:o,$event:e},this.ctxMenuStore.args),l&&l.menuMethod&&l.menuMethod(t,e),this.$listeners["context-menu-click"]?((0,_log.warnLog)("vxe.error.delEvent",["context-menu-click","menu-click"]),n.dispatchEvent("context-menu-click",t,e)):n.dispatchEvent("menu-click",t,e),this.closeMenu())}}};
@@ -195,12 +195,13 @@ var _default = exports.default = {
195
195
  * 聚焦到校验通过的单元格并弹出校验错误提示
196
196
  */
197
197
  handleValidError(params) {
198
+ const $xeTable = this;
198
199
  const {
199
200
  validOpts
200
201
  } = this;
201
202
  return new Promise(resolve => {
202
203
  if (validOpts.autoPos === false) {
203
- this.emitEvent('valid-error', params);
204
+ $xeTable.dispatchEvent('valid-error', params, null);
204
205
  resolve();
205
206
  } else {
206
207
  this.handleEdit(params, {
@@ -613,6 +614,7 @@ var _default = exports.default = {
613
614
  * 弹出校验错误提示
614
615
  */
615
616
  showValidTooltip(params) {
617
+ const $xeTable = this;
616
618
  const {
617
619
  $refs,
618
620
  height,
@@ -649,7 +651,7 @@ var _default = exports.default = {
649
651
  }
650
652
  });
651
653
  }
652
- this.emitEvent('valid-error', params, null);
654
+ $xeTable.dispatchEvent('valid-error', params, null);
653
655
  if (validTip) {
654
656
  if (validTip && (validOpts.message === 'tooltip' || validOpts.message === 'default' && !height && tableData.length < 2)) {
655
657
  return validTip.open(cell, content);
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_utils=require("../../../ui/src/utils"),_dom=require("../../../ui/src/dom"),_util=require("../../src/util"),_log=require("../../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getConfig,validators}=_ui.VxeUI;class Rule{constructor(e){Object.defineProperty(this,"$options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.assign(this,{$options:e,required:e.required,min:e.min,max:e.max,type:e.type,pattern:e.pattern,validator:e.validator,trigger:e.trigger,maxWidth:e.maxWidth})}get content(){return(0,_utils.getFuncText)(this.$options.content||this.$options.message)}get message(){return this.content}}function validREValue(e,t){return!(e&&!(_xeUtils.default.isRegExp(e)?e:new RegExp(e)).test(t))}function validMaxValue(e,t){return!(!_xeUtils.default.eqNull(e)&&t>_xeUtils.default.toNumber(e))}function validMinValue(e,t){return!(!_xeUtils.default.eqNull(e)&&t<_xeUtils.default.toNumber(e))}function validRuleValue(e,t,l){var{type:e,min:i,max:r,pattern:a}=e,s="array"===e,u="number"===e,e="string"===e,n=""+t;if(!validREValue(a,n))return!1;if(s){if(!_xeUtils.default.isArray(t))return!1;if(l&&!t.length)return!1;if(!validMinValue(i,t.length))return!1;if(!validMaxValue(r,t.length))return!1}else if(u){a=Number(t);if(isNaN(a))return!1;if(!validMinValue(i,a))return!1;if(!validMaxValue(r,a))return!1}else{if(e&&!_xeUtils.default.isString(t))return!1;if(l&&!n)return!1;if(!validMinValue(i,n.length))return!1;if(!validMaxValue(r,n.length))return!1}return!0}function checkRuleStatus(e,t){var l=e.required,i=_xeUtils.default.isArray(t)?!t.length:(0,_utils.eqEmptyValue)(t);if(l){if(i)return!1;if(!validRuleValue(e,t,l))return!1}else if(!i&&!validRuleValue(e,t,l))return!1;return!0}var _default=exports.default={methods:{_fullValidate(e,t){return _xeUtils.default.isFunction(t)&&(0,_log.warnLog)("vxe.error.notValidators",["fullValidate(rows, callback)","fullValidate(rows)"]),this.beginValidate(e,null,t,!0)},_validate(e,t){return _xeUtils.default.isFunction(t)&&(0,_log.warnLog)("vxe.error.notValidators",["validate(rows, callback)","validate(rows)"]),this.beginValidate(e,null,t)},_fullValidateField(e,t){t=(_xeUtils.default.isArray(t)?t:t?[t]:[]).map(e=>(0,_util.handleFieldOrColumn)(this,e));return t.length?this.beginValidate(e,t,null,!0):this.$nextTick()},_validateField(e,t){t=(_xeUtils.default.isArray(t)?t:t?[t]:[]).map(e=>(0,_util.handleFieldOrColumn)(this,e));return t.length?this.beginValidate(e,t,null):this.$nextTick()},handleValidError(t){let l=this.validOpts;return new Promise(e=>{!1===l.autoPos?(this.emitEvent("valid-error",t),e()):this.handleEdit(t,{type:"valid-error",trigger:"call"}).then(()=>{setTimeout(()=>{e(this.showValidTooltip(t))},10)})})},handleErrMsgMode(e){var t,l=this.validOpts;return"single"===l.msgMode?(l={},(t=Object.keys(e)).length&&(l[t=t[0]]=e[t]),l):e},beginValidate(e,l,s,a){let i=this;var r=i,u=i,n=i;let o={},{editRules:d,treeConfig:h}=r;r=u.isRowGroupStatus;let{afterFullData:t,pendingRowMaps:g,removeRowMaps:c}=n;u=i.computeTreeOpts,n=i.computeAggregateOpts;let f,v=(!0===e?f=t:e&&(_xeUtils.default.isFunction(e)?s=e:f=_xeUtils.default.isArray(e)?e:[e]),f=f||this.getInsertRecords().concat(this.getUpdateRecords()),[]),m=(this.lastCallTime=Date.now(),this.validRuleErr=!1,this.clearValidate(),{});if(d){let t=l&&l.length?l:this.getColumns();e=r=>{var e=(0,_util.getRowid)(i,r);if(!c[e]&&!g[e]&&!i.isAggregateRecord(r)&&(a||!this.validRuleErr)){let e=[];t.forEach(l=>{let i=_xeUtils.default.isString(l)?l:l.field;!a&&this.validRuleErr||!_xeUtils.default.has(d,i)||e.push(this.validCellRules("all",r,l).catch(({rule:e,rules:t})=>{t={rule:e,rules:t,rowIndex:this.getRowIndex(r),row:r,columnIndex:this.getColumnIndex(l),column:l,field:i,$table:this};if(o[i]||(o[i]=[]),m[(0,_util.getRowid)(this,r)+":"+l.id]={column:l,row:r,rule:e,content:e.content},o[i].push(t),!a)return this.validRuleErr=!0,Promise.reject(t)}))}),v.push(Promise.all(e))}};return r?_xeUtils.default.eachTree(f,e,{children:n.mapChildrenField}):h?(l=u.children||u.childrenField,_xeUtils.default.eachTree(f,e,{children:l})):f.forEach(e),Promise.all(v).then(()=>{let e=Object.keys(o);return this.validErrorMaps=this.handleErrMsgMode(m),this.$nextTick().then(()=>{if(e.length)return Promise.reject(o[e[0]][0]);s&&s()})}).catch(a=>new Promise((e,t)=>{let l=()=>{this.$nextTick(()=>{s?(s(o),e()):("obsolete"===getConfig().validToReject?t:e)(o)})};var i,r=()=>{a.cell=this.getCellElement(a.row,a.column),(0,_dom.scrollToView)(a.cell),this.handleValidError(a).then(l)};!1===this.validOpts.autoPos?l():(i=a.row,this.scrollToRow(i,a.column).then(r))}))}return this.validErrorMaps={},this.$nextTick().then(()=>{s&&s()})},hasCellRules(t,e,l){var i=this.editRules,l=l.property;return!(!l||!i)&&(i=_xeUtils.default.get(i,l))&&_xeUtils.default.find(i,e=>"all"===t||!e.trigger||t===e.trigger)},validCellRules(e,n,o,t){var l=this.editRules,i=o.property;let d=[],h=[];if(i&&l){let u=_xeUtils.default.get(l,i);if(u){let s=_xeUtils.default.isUndefined(t)?_xeUtils.default.get(n,i):t;u.forEach(t=>{let{trigger:l,validator:i}=t;if("all"===e||!l||e===l)if(i){var r,a={cellValue:s,rule:t,rules:u,row:n,rowIndex:this.getRowIndex(n),column:o,columnIndex:this.getColumnIndex(o),field:o.property,$table:this};let e;_xeUtils.default.isString(i)?(r=validators.get(i))&&(r=r.tableCellValidatorMethod||r.cellValidatorMethod)?e=r(a):(0,_log.errLog)("vxe.error.notValidators",[i]):e=i(a),e&&(_xeUtils.default.isError(e)?(this.validRuleErr=!0,d.push(new Rule({type:"custom",trigger:l,content:e.message,rule:new Rule(t)}))):e.catch&&h.push(e.catch(e=>{this.validRuleErr=!0,d.push(new Rule({type:"custom",trigger:l,content:e&&e.message?e.message:t.content||t.message,rule:new Rule(t)}))})))}else checkRuleStatus(t,s)||(this.validRuleErr=!0,d.push(new Rule(t)))})}}return Promise.all(h).then(()=>{var e;if(d.length)return e={rules:d,rule:d[0]},Promise.reject(e)})},_clearValidate(e,t){var{validOpts:l,validErrorMaps:i}=this,r=this.$refs.refValidTooltip,e=_xeUtils.default.isArray(e)?e:e?[e]:[];let a=(_xeUtils.default.isArray(t)?t:t?[t]:[]).map(e=>(0,_util.handleFieldOrColumn)(this,e)),s={};if(r&&r.visible&&r.close(),"single"===l.msgMode)this.validErrorMaps={};else{if(e.length&&a.length)s=Object.assign({},i),e.forEach(t=>{a.forEach(e=>{e=(0,_util.getRowid)(this,t)+":"+e.id;s[e]&&delete s[e]})});else if(e.length){let l=e.map(e=>""+(0,_util.getRowid)(this,e));_xeUtils.default.each(i,(e,t)=>{-1<l.indexOf(t.split(":")[0])&&(s[t]=e)})}else if(a.length){let l=a.map(e=>""+e.id);_xeUtils.default.each(i,(e,t)=>{-1<l.indexOf(t.split(":")[1])&&(s[t]=e)})}this.validErrorMaps=s}return this.$nextTick()},triggerValidate(r){let{editConfig:e,editStore:t,editRules:l,editOpts:a,validOpts:i}=this;var s=t.actived;if(l&&"single"===i.msgMode&&(this.validErrorMaps={}),e&&l&&s.row){let{row:t,column:l,cell:i}=s.args;if(this.hasCellRules(r,t,l))return this.validCellRules(r,t,l).then(()=>{"row"===a.mode&&this.clearValidate(t,l)}).catch(({rule:e})=>e.trigger&&r!==e.trigger?Promise.resolve():(e={rule:e,row:t,column:l,cell:i},this.showValidTooltip(e),Promise.reject(e)))}return Promise.resolve()},showValidTooltip(e){var{$refs:t,height:l,validStore:i,validErrorMaps:r,tableData:a,validOpts:s}=this,{rule:u,row:n,column:o,cell:d}=e,t=t.refValidTooltip,h=u.content;return i.visible=!0,"single"===s.msgMode?this.validErrorMaps={[(0,_util.getRowid)(this,n)+":"+o.id]:{column:o,row:n,rule:u,content:h}}:this.validErrorMaps=Object.assign({},r,{[(0,_util.getRowid)(this,n)+":"+o.id]:{column:o,row:n,rule:u,content:h}}),this.emitEvent("valid-error",e,null),t&&("tooltip"===s.message||"default"===s.message&&!l&&a.length<2)?t.open(d,h):this.$nextTick()}}};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_utils=require("../../../ui/src/utils"),_dom=require("../../../ui/src/dom"),_util=require("../../src/util"),_log=require("../../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getConfig,validators}=_ui.VxeUI;class Rule{constructor(e){Object.defineProperty(this,"$options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.assign(this,{$options:e,required:e.required,min:e.min,max:e.max,type:e.type,pattern:e.pattern,validator:e.validator,trigger:e.trigger,maxWidth:e.maxWidth})}get content(){return(0,_utils.getFuncText)(this.$options.content||this.$options.message)}get message(){return this.content}}function validREValue(e,t){return!(e&&!(_xeUtils.default.isRegExp(e)?e:new RegExp(e)).test(t))}function validMaxValue(e,t){return!(!_xeUtils.default.eqNull(e)&&t>_xeUtils.default.toNumber(e))}function validMinValue(e,t){return!(!_xeUtils.default.eqNull(e)&&t<_xeUtils.default.toNumber(e))}function validRuleValue(e,t,l){var{type:e,min:i,max:r,pattern:a}=e,s="array"===e,u="number"===e,e="string"===e,n=""+t;if(!validREValue(a,n))return!1;if(s){if(!_xeUtils.default.isArray(t))return!1;if(l&&!t.length)return!1;if(!validMinValue(i,t.length))return!1;if(!validMaxValue(r,t.length))return!1}else if(u){a=Number(t);if(isNaN(a))return!1;if(!validMinValue(i,a))return!1;if(!validMaxValue(r,a))return!1}else{if(e&&!_xeUtils.default.isString(t))return!1;if(l&&!n)return!1;if(!validMinValue(i,n.length))return!1;if(!validMaxValue(r,n.length))return!1}return!0}function checkRuleStatus(e,t){var l=e.required,i=_xeUtils.default.isArray(t)?!t.length:(0,_utils.eqEmptyValue)(t);if(l){if(i)return!1;if(!validRuleValue(e,t,l))return!1}else if(!i&&!validRuleValue(e,t,l))return!1;return!0}var _default=exports.default={methods:{_fullValidate(e,t){return _xeUtils.default.isFunction(t)&&(0,_log.warnLog)("vxe.error.notValidators",["fullValidate(rows, callback)","fullValidate(rows)"]),this.beginValidate(e,null,t,!0)},_validate(e,t){return _xeUtils.default.isFunction(t)&&(0,_log.warnLog)("vxe.error.notValidators",["validate(rows, callback)","validate(rows)"]),this.beginValidate(e,null,t)},_fullValidateField(e,t){t=(_xeUtils.default.isArray(t)?t:t?[t]:[]).map(e=>(0,_util.handleFieldOrColumn)(this,e));return t.length?this.beginValidate(e,t,null,!0):this.$nextTick()},_validateField(e,t){t=(_xeUtils.default.isArray(t)?t:t?[t]:[]).map(e=>(0,_util.handleFieldOrColumn)(this,e));return t.length?this.beginValidate(e,t,null):this.$nextTick()},handleValidError(t){let l=this,i=this.validOpts;return new Promise(e=>{!1===i.autoPos?(l.dispatchEvent("valid-error",t,null),e()):this.handleEdit(t,{type:"valid-error",trigger:"call"}).then(()=>{setTimeout(()=>{e(this.showValidTooltip(t))},10)})})},handleErrMsgMode(e){var t,l=this.validOpts;return"single"===l.msgMode?(l={},(t=Object.keys(e)).length&&(l[t=t[0]]=e[t]),l):e},beginValidate(e,l,s,a){let i=this;var r=i,u=i,n=i;let o={},{editRules:d,treeConfig:h}=r;r=u.isRowGroupStatus;let{afterFullData:t,pendingRowMaps:c,removeRowMaps:g}=n;u=i.computeTreeOpts,n=i.computeAggregateOpts;let f,v=(!0===e?f=t:e&&(_xeUtils.default.isFunction(e)?s=e:f=_xeUtils.default.isArray(e)?e:[e]),f=f||this.getInsertRecords().concat(this.getUpdateRecords()),[]),p=(this.lastCallTime=Date.now(),this.validRuleErr=!1,this.clearValidate(),{});if(d){let t=l&&l.length?l:this.getColumns();e=r=>{var e=(0,_util.getRowid)(i,r);if(!g[e]&&!c[e]&&!i.isAggregateRecord(r)&&(a||!this.validRuleErr)){let e=[];t.forEach(l=>{let i=_xeUtils.default.isString(l)?l:l.field;!a&&this.validRuleErr||!_xeUtils.default.has(d,i)||e.push(this.validCellRules("all",r,l).catch(({rule:e,rules:t})=>{t={rule:e,rules:t,rowIndex:this.getRowIndex(r),row:r,columnIndex:this.getColumnIndex(l),column:l,field:i,$table:this};if(o[i]||(o[i]=[]),p[(0,_util.getRowid)(this,r)+":"+l.id]={column:l,row:r,rule:e,content:e.content},o[i].push(t),!a)return this.validRuleErr=!0,Promise.reject(t)}))}),v.push(Promise.all(e))}};return r?_xeUtils.default.eachTree(f,e,{children:n.mapChildrenField}):h?(l=u.children||u.childrenField,_xeUtils.default.eachTree(f,e,{children:l})):f.forEach(e),Promise.all(v).then(()=>{let e=Object.keys(o);return this.validErrorMaps=this.handleErrMsgMode(p),this.$nextTick().then(()=>{if(e.length)return Promise.reject(o[e[0]][0]);s&&s()})}).catch(a=>new Promise((e,t)=>{let l=()=>{this.$nextTick(()=>{s?(s(o),e()):("obsolete"===getConfig().validToReject?t:e)(o)})};var i,r=()=>{a.cell=this.getCellElement(a.row,a.column),(0,_dom.scrollToView)(a.cell),this.handleValidError(a).then(l)};!1===this.validOpts.autoPos?l():(i=a.row,this.scrollToRow(i,a.column).then(r))}))}return this.validErrorMaps={},this.$nextTick().then(()=>{s&&s()})},hasCellRules(t,e,l){var i=this.editRules,l=l.property;return!(!l||!i)&&(i=_xeUtils.default.get(i,l))&&_xeUtils.default.find(i,e=>"all"===t||!e.trigger||t===e.trigger)},validCellRules(e,n,o,t){var l=this.editRules,i=o.property;let d=[],h=[];if(i&&l){let u=_xeUtils.default.get(l,i);if(u){let s=_xeUtils.default.isUndefined(t)?_xeUtils.default.get(n,i):t;u.forEach(t=>{let{trigger:l,validator:i}=t;if("all"===e||!l||e===l)if(i){var r,a={cellValue:s,rule:t,rules:u,row:n,rowIndex:this.getRowIndex(n),column:o,columnIndex:this.getColumnIndex(o),field:o.property,$table:this};let e;_xeUtils.default.isString(i)?(r=validators.get(i))&&(r=r.tableCellValidatorMethod||r.cellValidatorMethod)?e=r(a):(0,_log.errLog)("vxe.error.notValidators",[i]):e=i(a),e&&(_xeUtils.default.isError(e)?(this.validRuleErr=!0,d.push(new Rule({type:"custom",trigger:l,content:e.message,rule:new Rule(t)}))):e.catch&&h.push(e.catch(e=>{this.validRuleErr=!0,d.push(new Rule({type:"custom",trigger:l,content:e&&e.message?e.message:t.content||t.message,rule:new Rule(t)}))})))}else checkRuleStatus(t,s)||(this.validRuleErr=!0,d.push(new Rule(t)))})}}return Promise.all(h).then(()=>{var e;if(d.length)return e={rules:d,rule:d[0]},Promise.reject(e)})},_clearValidate(e,t){var{validOpts:l,validErrorMaps:i}=this,r=this.$refs.refValidTooltip,e=_xeUtils.default.isArray(e)?e:e?[e]:[];let a=(_xeUtils.default.isArray(t)?t:t?[t]:[]).map(e=>(0,_util.handleFieldOrColumn)(this,e)),s={};if(r&&r.visible&&r.close(),"single"===l.msgMode)this.validErrorMaps={};else{if(e.length&&a.length)s=Object.assign({},i),e.forEach(t=>{a.forEach(e=>{e=(0,_util.getRowid)(this,t)+":"+e.id;s[e]&&delete s[e]})});else if(e.length){let l=e.map(e=>""+(0,_util.getRowid)(this,e));_xeUtils.default.each(i,(e,t)=>{-1<l.indexOf(t.split(":")[0])&&(s[t]=e)})}else if(a.length){let l=a.map(e=>""+e.id);_xeUtils.default.each(i,(e,t)=>{-1<l.indexOf(t.split(":")[1])&&(s[t]=e)})}this.validErrorMaps=s}return this.$nextTick()},triggerValidate(r){let{editConfig:e,editStore:t,editRules:l,editOpts:a,validOpts:i}=this;var s=t.actived;if(l&&"single"===i.msgMode&&(this.validErrorMaps={}),e&&l&&s.row){let{row:t,column:l,cell:i}=s.args;if(this.hasCellRules(r,t,l))return this.validCellRules(r,t,l).then(()=>{"row"===a.mode&&this.clearValidate(t,l)}).catch(({rule:e})=>e.trigger&&r!==e.trigger?Promise.resolve():(e={rule:e,row:t,column:l,cell:i},this.showValidTooltip(e),Promise.reject(e)))}return Promise.resolve()},showValidTooltip(e){var{$refs:t,height:l,validStore:i,validErrorMaps:r,tableData:a,validOpts:s}=this,{rule:u,row:n,column:o,cell:d}=e,t=t.refValidTooltip,h=u.content;return i.visible=!0,"single"===s.msgMode?this.validErrorMaps={[(0,_util.getRowid)(this,n)+":"+o.id]:{column:o,row:n,rule:u,content:h}}:this.validErrorMaps=Object.assign({},r,{[(0,_util.getRowid)(this,n)+":"+o.id]:{column:o,row:n,rule:u,content:h}}),this.dispatchEvent("valid-error",e,null),t&&("tooltip"===s.message||"default"===s.message&&!l&&a.length<2)?t.open(d,h):this.$nextTick()}}};