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.
- package/es/locale/lang/en-US.js +12 -12
- package/es/style.css +1 -1
- package/es/table/module/edit/mixin.js +58 -20
- package/es/table/module/filter/mixin.js +12 -10
- package/es/table/module/keyboard/mixin.js +175 -172
- package/es/table/module/menu/mixin.js +16 -9
- package/es/table/module/validator/mixin.js +4 -2
- package/es/table/src/methods.js +344 -46
- package/es/table/src/store.js +8 -0
- package/es/table/src/table.js +35 -9
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +713 -289
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/en-US.js +12 -12
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +12 -12
- package/lib/style.css +1 -1
- package/lib/table/module/edit/mixin.js +55 -16
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/filter/mixin.js +12 -10
- package/lib/table/module/filter/mixin.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +184 -185
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/module/menu/mixin.js +20 -13
- package/lib/table/module/menu/mixin.min.js +1 -1
- package/lib/table/module/validator/mixin.js +4 -2
- package/lib/table/module/validator/mixin.min.js +1 -1
- package/lib/table/src/methods.js +388 -52
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/store.js +15 -0
- package/lib/table/src/store.min.js +1 -0
- package/lib/table/src/table.js +39 -9
- package/lib/table/src/table.min.js +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +1 -1
- package/packages/locale/lang/en-US.ts +12 -12
- package/packages/table/module/edit/mixin.ts +59 -23
- package/packages/table/module/filter/mixin.ts +17 -13
- package/packages/table/module/keyboard/mixin.ts +169 -165
- package/packages/table/module/menu/mixin.ts +16 -9
- package/packages/table/module/validator/mixin.ts +8 -4
- package/packages/table/src/methods.ts +362 -50
- package/packages/table/src/store.ts +15 -0
- package/packages/table/src/table.ts +37 -9
- /package/es/{iconfont.1755775629306.ttf → iconfont.1756272539382.ttf} +0 -0
- /package/es/{iconfont.1755775629306.woff → iconfont.1756272539382.woff} +0 -0
- /package/es/{iconfont.1755775629306.woff2 → iconfont.1756272539382.woff2} +0 -0
- /package/lib/{iconfont.1755775629306.ttf → iconfont.1756272539382.ttf} +0 -0
- /package/lib/{iconfont.1755775629306.woff → iconfont.1756272539382.woff} +0 -0
- /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
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
140
|
+
const columnNodeRest = $xeTable.getColumnNode(cell);
|
|
141
|
+
const column = columnNodeRest ? columnNodeRest.item : null;
|
|
141
142
|
let typePrefix = `${layout}-`;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
|
151
|
+
const rowNodeRest = $xeTable.getRowNode(cell.parentNode);
|
|
152
|
+
const row = rowNodeRest ? rowNodeRest.item : null;
|
|
149
153
|
typePrefix = '';
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
164
|
+
$xeTable.dispatchEvent(`${typePrefix}cell-context-menu`, params, evnt);
|
|
158
165
|
} else {
|
|
159
|
-
|
|
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
|
-
|
|
349
|
+
$xeTable.dispatchEvent('context-menu-click', params, evnt);
|
|
343
350
|
} else {
|
|
344
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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===
|
|
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()}}};
|