vxe-pc-ui 3.15.25 → 3.15.26

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 (49) hide show
  1. package/es/icon/style.css +1 -1
  2. package/es/list/src/list.js +560 -13
  3. package/es/list/src/util.js +8 -0
  4. package/es/list/style.css +10 -4
  5. package/es/list/style.min.css +1 -1
  6. package/es/style.css +1 -1
  7. package/es/style.min.css +1 -1
  8. package/es/ui/index.js +4 -1
  9. package/es/ui/src/log.js +1 -1
  10. package/es/vxe-list/style.css +10 -4
  11. package/es/vxe-list/style.min.css +1 -1
  12. package/lib/icon/style/style.css +1 -1
  13. package/lib/icon/style/style.min.css +1 -1
  14. package/lib/index.umd.js +652 -16
  15. package/lib/index.umd.min.js +1 -1
  16. package/lib/list/src/list.js +605 -11
  17. package/lib/list/src/list.min.js +1 -1
  18. package/lib/list/src/util.js +14 -0
  19. package/lib/list/src/util.min.js +1 -0
  20. package/lib/list/style/style.css +10 -4
  21. package/lib/list/style/style.min.css +1 -1
  22. package/lib/style.css +1 -1
  23. package/lib/style.min.css +1 -1
  24. package/lib/ui/index.js +4 -1
  25. package/lib/ui/index.min.js +1 -1
  26. package/lib/ui/src/log.js +1 -1
  27. package/lib/ui/src/log.min.js +1 -1
  28. package/lib/vxe-list/style/style.css +10 -4
  29. package/lib/vxe-list/style/style.min.css +1 -1
  30. package/package.json +1 -1
  31. package/packages/list/src/list.ts +588 -13
  32. package/packages/list/src/util.ts +11 -0
  33. package/packages/ui/index.ts +3 -0
  34. package/styles/components/list.scss +8 -4
  35. package/types/components/list.d.ts +120 -4
  36. package/types/components/tree.d.ts +3 -7
  37. package/types/ui/menus.d.ts +13 -1
  38. /package/es/icon/{iconfont.1783247770465.ttf → iconfont.1783301643461.ttf} +0 -0
  39. /package/es/icon/{iconfont.1783247770465.woff → iconfont.1783301643461.woff} +0 -0
  40. /package/es/icon/{iconfont.1783247770465.woff2 → iconfont.1783301643461.woff2} +0 -0
  41. /package/es/{iconfont.1783247770465.ttf → iconfont.1783301643461.ttf} +0 -0
  42. /package/es/{iconfont.1783247770465.woff → iconfont.1783301643461.woff} +0 -0
  43. /package/es/{iconfont.1783247770465.woff2 → iconfont.1783301643461.woff2} +0 -0
  44. /package/lib/icon/style/{iconfont.1783247770465.ttf → iconfont.1783301643461.ttf} +0 -0
  45. /package/lib/icon/style/{iconfont.1783247770465.woff → iconfont.1783301643461.woff} +0 -0
  46. /package/lib/icon/style/{iconfont.1783247770465.woff2 → iconfont.1783301643461.woff2} +0 -0
  47. /package/lib/{iconfont.1783247770465.ttf → iconfont.1783301643461.ttf} +0 -0
  48. /package/lib/{iconfont.1783247770465.woff → iconfont.1783301643461.woff} +0 -0
  49. /package/lib/{iconfont.1783247770465.woff2 → iconfont.1783301643461.woff2} +0 -0
@@ -14,16 +14,23 @@ var _utils = require("../../ui/src/utils");
14
14
  var _vn = require("../../ui/src/vn");
15
15
  var _log = require("../../ui/src/log");
16
16
  var _anime = require("../../ui/src/anime");
17
+ var _util = require("./util");
17
18
  var _loading = _interopRequireDefault(require("../../loading/src/loading"));
18
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
20
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
20
21
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
21
22
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
23
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
24
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
25
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
26
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
22
27
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
23
28
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
24
29
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25
30
  var _createComponentLog = (0, _log.createComponentLog)('tree'),
31
+ warnLog = _createComponentLog.warnLog,
26
32
  errLog = _createComponentLog.errLog;
33
+ var crossListDragRowObj = null;
27
34
  function eqRowKey(rowKey1, rowKey2) {
28
35
  return '' + rowKey1 === '' + rowKey2;
29
36
  }
@@ -53,15 +60,20 @@ function createReactData() {
53
60
  updateCheckboxFlag: 1,
54
61
  isAllChecked: false,
55
62
  isAllIndeterminate: false,
63
+ insertRowFlag: 1,
64
+ removeRowFlag: 1,
56
65
  dragRow: null,
57
- dragTipText: ''
66
+ dragTipText: '',
67
+ isCrossDragRow: false
58
68
  };
59
69
  }
60
70
  function createInternalData() {
61
71
  return {
62
72
  resizeObserver: undefined,
63
73
  fullData: [],
74
+ afterList: [],
64
75
  fullKeyMaps: {},
76
+ rowMaps: {},
65
77
  lastScrollLeft: 0,
66
78
  lastScrollTop: 0,
67
79
  scrollYStore: {
@@ -72,7 +84,9 @@ function createInternalData() {
72
84
  rowHeight: 0
73
85
  },
74
86
  currentRow: null,
75
- selectCheckboxMaps: {}
87
+ selectCheckboxMaps: {},
88
+ insertRowMaps: {},
89
+ removeRowMaps: {}
76
90
  // prevDragRow: null,
77
91
  // prevDragPos: ''
78
92
  };
@@ -99,6 +113,12 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
99
113
  }
100
114
  },
101
115
  syncResize: [Boolean, String, Number],
116
+ showSeq: {
117
+ type: Boolean,
118
+ default: function _default() {
119
+ return (0, _ui.getConfig)().list.showSeq;
120
+ }
121
+ },
102
122
  showRadio: {
103
123
  type: Boolean,
104
124
  default: function _default() {
@@ -117,6 +137,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
117
137
  checkboxConfig: Object,
118
138
  rowConfig: Object,
119
139
  dragConfig: Object,
140
+ menuConfig: Object,
120
141
  virtualYConfig: Object,
121
142
  scrollY: Object
122
143
  },
@@ -179,6 +200,11 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
179
200
  showIcon: true
180
201
  }, (0, _ui.getConfig)().list.checkboxConfig, props.checkboxConfig);
181
202
  },
203
+ computeMenuOpts: function computeMenuOpts() {
204
+ var $xeList = this;
205
+ var props = $xeList;
206
+ return Object.assign({}, (0, _ui.getConfig)().list.menuConfig, props.menuConfig);
207
+ },
182
208
  computeWrapperStyles: function computeWrapperStyles() {
183
209
  var $xeList = this;
184
210
  var rowHeight = $xeList.computeRowHeight;
@@ -287,6 +313,30 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
287
313
  internalData.selectCheckboxMaps = selectMaps;
288
314
  $xeList.updateCheckboxStatus();
289
315
  },
316
+ updateAfterDataIndex: function updateAfterDataIndex() {
317
+ var $xeList = this;
318
+ var internalData = $xeList.internalData;
319
+ var afterList = internalData.afterList,
320
+ rowMaps = internalData.rowMaps;
321
+ var keyField = $xeList.computeKeyField;
322
+ var vtIndex = 0;
323
+ afterList.forEach(function (item, index) {
324
+ var roweid = getRowIdByField(item, keyField);
325
+ var rowRest = rowMaps[roweid];
326
+ if (rowRest) {
327
+ rowRest._index = vtIndex;
328
+ } else {
329
+ var rest = {
330
+ item: item,
331
+ index: index,
332
+ $index: -1,
333
+ _index: vtIndex
334
+ };
335
+ rowMaps[roweid] = rest;
336
+ }
337
+ vtIndex++;
338
+ });
339
+ },
290
340
  cacheRowMap: function cacheRowMap() {
291
341
  var $xeList = this;
292
342
  var internalData = $xeList.internalData;
@@ -309,17 +359,21 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
309
359
  var internalData = $xeList.internalData;
310
360
  var scrollYStore = internalData.scrollYStore;
311
361
  var sYOpts = $xeList.computeSYOpts;
312
- var fullData = datas || [];
362
+ var fullData = datas ? datas.slice(0) : [];
313
363
  Object.assign(scrollYStore, {
314
364
  startIndex: 0,
315
365
  endIndex: 1,
316
366
  visibleSize: 0
317
367
  });
318
368
  internalData.fullData = fullData;
369
+ internalData.insertRowMaps = {};
370
+ reactData.insertRowFlag++;
371
+ internalData.removeRowMaps = {};
372
+ reactData.removeRowFlag++;
319
373
  // 如果gt为0,则总是启用
320
374
  reactData.scrollYLoad = !!sYOpts.enabled && sYOpts.gt > -1 && (sYOpts.gt === 0 || sYOpts.gt <= fullData.length);
321
375
  $xeList.cacheRowMap();
322
- $xeList.handleData();
376
+ $xeList.handleData(true);
323
377
  $xeList.updateRadioModeValue();
324
378
  $xeList.updateCheckboxModeValue();
325
379
  return $xeList.computeScrollLoad().then(function () {
@@ -382,14 +436,37 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
382
436
  reactData.bodyHeight = scrollYLoad ? fullData.length * scrollYStore.rowHeight : 0;
383
437
  reactData.topSpaceHeight = scrollYLoad ? Math.max(scrollYStore.startIndex * scrollYStore.rowHeight, 0) : 0;
384
438
  },
385
- handleData: function handleData() {
439
+ updateAfterFullData: function updateAfterFullData() {
440
+ var $xeList = this;
441
+ var internalData = $xeList.internalData;
442
+ var fullData = internalData.fullData;
443
+ internalData.afterList = fullData.slice(0);
444
+ $xeList.updateAfterDataIndex();
445
+ },
446
+ handleData: function handleData(force) {
386
447
  var $xeList = this;
387
448
  var reactData = $xeList.reactData;
388
449
  var internalData = $xeList.internalData;
389
450
  var scrollYLoad = reactData.scrollYLoad;
390
451
  var fullData = internalData.fullData,
391
- scrollYStore = internalData.scrollYStore;
392
- reactData.rowList = scrollYLoad ? fullData.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullData.slice(0);
452
+ scrollYStore = internalData.scrollYStore,
453
+ rowMaps = internalData.rowMaps;
454
+ var keyField = $xeList.computeKeyField;
455
+ if (force) {
456
+ // 更新数据,处理筛选和排序
457
+ $xeList.updateAfterFullData();
458
+ }
459
+ var rowList = scrollYLoad ? fullData.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullData.slice(0);
460
+ if (keyField) {
461
+ rowList.forEach(function (item, $index) {
462
+ var rowid = getRowIdByField(item, keyField);
463
+ var rowRest = rowMaps[rowid];
464
+ if (rowRest) {
465
+ rowRest.$index = $index;
466
+ }
467
+ });
468
+ }
469
+ reactData.rowList = rowList;
393
470
  return $xeList.$nextTick();
394
471
  },
395
472
  updateYData: function updateYData() {
@@ -992,6 +1069,12 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
992
1069
  checked: isChecked
993
1070
  }, evnt);
994
1071
  },
1072
+ handleRowDragEndClearStatus: function handleRowDragEndClearStatus() {
1073
+ var $xeList = this;
1074
+ $xeList.clearRowDragData();
1075
+ $xeList.clearCrossListDragStatus();
1076
+ $xeList.recalculate();
1077
+ },
995
1078
  clearRowDropOrigin: function clearRowDropOrigin() {
996
1079
  var $xeList = this;
997
1080
  var el = $xeList.$refs.refElem;
@@ -1049,7 +1132,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1049
1132
  clearCrossListDragStatus: function clearCrossListDragStatus() {
1050
1133
  var $xeList = this;
1051
1134
  var crossListDragRowInfo = (0, _store.getCrossListDragRowInfo)($xeList);
1052
- // crossListDragRowObj = null
1135
+ crossListDragRowObj = null;
1053
1136
  crossListDragRowInfo.row = null;
1054
1137
  },
1055
1138
  clearDragStatus: function clearDragStatus() {
@@ -1066,10 +1149,12 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1066
1149
  handleRowDragMousedownEvent: function handleRowDragMousedownEvent(evnt, params) {
1067
1150
  var $xeList = this;
1068
1151
  var reactData = $xeList.reactData;
1152
+ var crossListDragRowInfo = (0, _store.getCrossListDragRowInfo)($xeList);
1069
1153
  evnt.stopPropagation();
1070
1154
  var row = params.row;
1071
1155
  var dragConfig = $xeList.computeDragOpts;
1072
- var trigger = dragConfig.trigger,
1156
+ var isCrossListDrag = dragConfig.isCrossListDrag,
1157
+ trigger = dragConfig.trigger,
1073
1158
  dragStartMethod = dragConfig.dragStartMethod;
1074
1159
  var dragEl = evnt.currentTarget;
1075
1160
  var rowEl = trigger === 'row' ? dragEl : dragEl.parentElement.parentElement;
@@ -1080,6 +1165,13 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1080
1165
  $xeList.hideDropTip();
1081
1166
  return;
1082
1167
  }
1168
+ if (isCrossListDrag) {
1169
+ crossListDragRowInfo.row = row;
1170
+ crossListDragRowObj = {
1171
+ $oldList: $xeList,
1172
+ $newList: null
1173
+ };
1174
+ }
1083
1175
  var dragstartEventParams = {
1084
1176
  row: row
1085
1177
  };
@@ -1294,6 +1386,17 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1294
1386
  var dragRow = reactData.dragRow;
1295
1387
  var prevDragRow = internalData.prevDragRow,
1296
1388
  prevDragPos = internalData.prevDragPos;
1389
+ var dragConfig = $xeList.computeDragOpts;
1390
+ var isCrossListDrag = dragConfig.isCrossListDrag;
1391
+ // 跨列表拖拽
1392
+ if (isCrossListDrag && crossListDragRowObj) {
1393
+ var _crossListDragRowObj = crossListDragRowObj,
1394
+ $newList = _crossListDragRowObj.$newList;
1395
+ if ($newList && $newList.xID !== $xeList.xID) {
1396
+ $newList.handleCrossListRowDragInsertEvent(evnt);
1397
+ return;
1398
+ }
1399
+ }
1297
1400
  $xeList.handleRowDragSwapEvent(evnt, dragRow, prevDragRow, prevDragPos);
1298
1401
  },
1299
1402
  handleRowDragDragoverEvent: function handleRowDragDragoverEvent(evnt) {
@@ -1392,6 +1495,477 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1392
1495
  row: row
1393
1496
  }, evnt);
1394
1497
  },
1498
+ insertListRow: function insertListRow(newRecords, isAppend) {
1499
+ var $xeList = this;
1500
+ var internalData = $xeList.internalData;
1501
+ var fullData = internalData.fullData,
1502
+ rowMaps = internalData.rowMaps;
1503
+ var keyField = $xeList.computeKeyField;
1504
+ var funcName = isAppend ? 'push' : 'unshift';
1505
+ newRecords.forEach(function (item) {
1506
+ var rowid = getRowIdByField(item, keyField);
1507
+ var rowRest = (0, _util.getItemCacheObj)(item);
1508
+ fullData[funcName](item);
1509
+ rowMaps[rowid] = rowRest;
1510
+ });
1511
+ },
1512
+ handleInsertRowAt: function handleInsertRowAt(records, targetRowOrRowKey, isInsertNextRow) {
1513
+ var $xeList = this;
1514
+ var reactData = $xeList.reactData;
1515
+ var internalData = $xeList.internalData;
1516
+ var fullData = internalData.fullData,
1517
+ rowMaps = internalData.rowMaps,
1518
+ removeRowMaps = internalData.removeRowMaps,
1519
+ insertRowMaps = internalData.insertRowMaps;
1520
+ var keyField = $xeList.computeKeyField;
1521
+ if (!keyField) {
1522
+ errLog('vxe.error.reqSupportProp', ['insert() | insertAt() | insertNextAt()', 'row-config.keyField']);
1523
+ return Promise.resolve({
1524
+ row: null,
1525
+ rows: []
1526
+ });
1527
+ }
1528
+ if (!_xeUtils.default.isArray(records)) {
1529
+ records = [records];
1530
+ }
1531
+ var targetRow = targetRowOrRowKey;
1532
+ if (_xeUtils.default.isString(targetRowOrRowKey) || _xeUtils.default.isNumber(targetRowOrRowKey)) {
1533
+ var rowRest = rowMaps[targetRowOrRowKey];
1534
+ if (rowRest) {
1535
+ targetRow = rowRest.item;
1536
+ }
1537
+ }
1538
+ if (!records.length) {
1539
+ return Promise.resolve({
1540
+ row: null,
1541
+ rows: []
1542
+ });
1543
+ }
1544
+ var newRecords = records.map(function (record) {
1545
+ return _xeUtils.default.assign({}, record);
1546
+ });
1547
+ if (_xeUtils.default.eqNull(targetRow)) {
1548
+ $xeList.insertListRow(newRecords, false);
1549
+ } else {
1550
+ if (targetRow === -1) {
1551
+ $xeList.insertListRow(newRecords, true);
1552
+ } else {
1553
+ var rowIndex = fullData.findIndex(function (item) {
1554
+ return targetRow[keyField] === item[keyField];
1555
+ });
1556
+ if (rowIndex > -1) {
1557
+ newRecords.forEach(function (item) {
1558
+ var rowid = getRowIdByField(item, keyField);
1559
+ var rowRest = (0, _util.getItemCacheObj)(item);
1560
+ rowMaps[rowid] = rowRest;
1561
+ });
1562
+ var targetIndex = rowIndex;
1563
+ if (isInsertNextRow) {
1564
+ targetIndex = targetIndex + 1;
1565
+ }
1566
+ fullData.splice.apply(fullData, [targetIndex, 0].concat(_toConsumableArray(newRecords)));
1567
+ } else {
1568
+ warnLog('vxe.error.unableInsert');
1569
+ $xeList.insertListRow(newRecords, true);
1570
+ }
1571
+ }
1572
+ }
1573
+ newRecords.forEach(function (newItem) {
1574
+ var rowid = getRowIdByField(newItem, keyField);
1575
+ // 如果是被删除的数据,则还原状态
1576
+ if (removeRowMaps[rowid]) {
1577
+ delete removeRowMaps[rowid];
1578
+ if (insertRowMaps[rowid]) {
1579
+ delete insertRowMaps[rowid];
1580
+ }
1581
+ } else {
1582
+ insertRowMaps[rowid] = newItem;
1583
+ }
1584
+ });
1585
+ reactData.removeRowFlag++;
1586
+ reactData.insertRowFlag++;
1587
+ $xeList.cacheRowMap();
1588
+ $xeList.handleData(true);
1589
+ $xeList.updateAfterDataIndex();
1590
+ $xeList.updateCheckboxStatus();
1591
+ if (reactData.scrollYLoad) {
1592
+ $xeList.updateYSpace();
1593
+ }
1594
+ return $xeList.$nextTick().then(function () {
1595
+ return {
1596
+ row: newRecords.length ? newRecords[newRecords.length - 1] : null,
1597
+ rows: newRecords
1598
+ };
1599
+ });
1600
+ },
1601
+ insert: function insert(records) {
1602
+ var $xeList = this;
1603
+ return $xeList.handleInsertRowAt(records, null);
1604
+ },
1605
+ insertAt: function insertAt(records, targetRowOrRowKey) {
1606
+ var $xeList = this;
1607
+ return $xeList.handleInsertRowAt(records, targetRowOrRowKey);
1608
+ },
1609
+ insertNextAt: function insertNextAt(records, targetRowOrRowKey) {
1610
+ var $xeList = this;
1611
+ return $xeList.handleInsertRowAt(records, targetRowOrRowKey, true);
1612
+ },
1613
+ getInsertRecords: function getInsertRecords() {
1614
+ var $xeList = this;
1615
+ var internalData = $xeList.internalData;
1616
+ var insertRowMaps = internalData.insertRowMaps;
1617
+ var insertRecords = [];
1618
+ _xeUtils.default.each(insertRowMaps, function (item) {
1619
+ insertRecords.push(item);
1620
+ });
1621
+ return insertRecords;
1622
+ },
1623
+ isInsertByRow: function isInsertByRow(row) {
1624
+ var $xeList = this;
1625
+ var reactData = $xeList.reactData;
1626
+ var internalData = $xeList.internalData;
1627
+ var rowid = $xeList.getRowId(row);
1628
+ return !!reactData.insertRowFlag && !!internalData.insertRowMaps[rowid];
1629
+ },
1630
+ remove: function remove(rows) {
1631
+ var $xeList = this;
1632
+ var reactData = $xeList.reactData;
1633
+ var internalData = $xeList.internalData;
1634
+ var fullData = internalData.fullData,
1635
+ insertRowMaps = internalData.insertRowMaps,
1636
+ removeRowMaps = internalData.removeRowMaps;
1637
+ var keyField = $xeList.computeKeyField;
1638
+ if (!keyField) {
1639
+ errLog('vxe.error.reqSupportProp', ['insert() | insertAt() | insertNextAt()', 'row-config.keyField']);
1640
+ return Promise.resolve({
1641
+ row: null,
1642
+ rows: []
1643
+ });
1644
+ }
1645
+ var delList = [];
1646
+ if (!rows) {
1647
+ rows = fullData;
1648
+ } else if (!_xeUtils.default.isArray(rows)) {
1649
+ rows = [rows];
1650
+ }
1651
+ if (!rows.length) {
1652
+ return Promise.resolve({
1653
+ row: null,
1654
+ rows: []
1655
+ });
1656
+ }
1657
+ // 如果是新增,则保存记录
1658
+ rows.forEach(function (item) {
1659
+ if (!$xeList.isInsertByRow(item)) {
1660
+ var rowid = $xeList.getRowId(item);
1661
+ removeRowMaps[rowid] = item;
1662
+ }
1663
+ });
1664
+ // 从数据源中移除
1665
+ if (fullData === rows) {
1666
+ rows = delList = fullData.slice(0);
1667
+ internalData.fullData = [];
1668
+ } else {
1669
+ rows.forEach(function (item) {
1670
+ var rowid = $xeList.getRowId(item);
1671
+ var rowIndex = _xeUtils.default.findIndexOf(fullData, function (item) {
1672
+ return rowid === $xeList.getRowId(item);
1673
+ });
1674
+ if (rowIndex > -1) {
1675
+ var rItems = fullData.splice(rowIndex, 1);
1676
+ delList.push(rItems[0]);
1677
+ }
1678
+ });
1679
+ }
1680
+ // 从新增中移除已删除的数据
1681
+ rows.forEach(function (item) {
1682
+ var rowid = $xeList.getRowId(item);
1683
+ if (insertRowMaps[rowid]) {
1684
+ delete insertRowMaps[rowid];
1685
+ }
1686
+ });
1687
+ reactData.removeRowFlag++;
1688
+ reactData.insertRowFlag++;
1689
+ $xeList.cacheRowMap();
1690
+ $xeList.handleData(true);
1691
+ $xeList.updateAfterDataIndex();
1692
+ $xeList.updateCheckboxStatus();
1693
+ if (reactData.scrollYLoad) {
1694
+ $xeList.updateYSpace();
1695
+ }
1696
+ return $xeList.$nextTick().then(function () {
1697
+ return $xeList.recalculate();
1698
+ }).then(function () {
1699
+ return {
1700
+ row: delList.length ? delList[delList.length - 1] : null,
1701
+ rows: delList
1702
+ };
1703
+ });
1704
+ },
1705
+ getRemoveRecords: function getRemoveRecords() {
1706
+ var $xeList = this;
1707
+ var internalData = $xeList.internalData;
1708
+ var removeRowMaps = internalData.removeRowMaps;
1709
+ var removeRecords = [];
1710
+ _xeUtils.default.each(removeRowMaps, function (item) {
1711
+ removeRecords.push(item);
1712
+ });
1713
+ return removeRecords;
1714
+ },
1715
+ isRemoveByRow: function isRemoveByRow(row) {
1716
+ var $xeList = this;
1717
+ var reactData = $xeList.reactData;
1718
+ var internalData = $xeList.internalData;
1719
+ var rowid = $xeList.getRowId(row);
1720
+ return !!reactData.removeRowFlag && !!internalData.removeRowMaps[rowid];
1721
+ },
1722
+ handleCrossListRowDragCancelEvent: function handleCrossListRowDragCancelEvent() {
1723
+ var $xeList = this;
1724
+ $xeList.clearRowDragData();
1725
+ $xeList.clearCrossListDragStatus();
1726
+ },
1727
+ /**
1728
+ * 处理跨树拖拽完成
1729
+ */
1730
+ handleCrossListRowDragFinishEvent: function handleCrossListRowDragFinishEvent(evnt) {
1731
+ var $xeList = this;
1732
+ var reactData = $xeList.reactData;
1733
+ var internalData = $xeList.internalData;
1734
+ var crossListDragRowInfo = (0, _store.getCrossListDragRowInfo)($xeList);
1735
+ var rowList = reactData.rowList;
1736
+ var rowMaps = internalData.rowMaps;
1737
+ var dragOpts = $xeList.computeDragOpts;
1738
+ var animation = dragOpts.animation,
1739
+ isCrossListDrag = dragOpts.isCrossListDrag;
1740
+ var el = $xeList.$refs.refElem;
1741
+ if (!el) {
1742
+ return;
1743
+ }
1744
+ if (isCrossListDrag && crossListDragRowObj && crossListDragRowInfo) {
1745
+ var dragRow = crossListDragRowInfo.row;
1746
+ if (dragRow) {
1747
+ var dragRowid = $xeList.getRowId(dragRow);
1748
+ var dragRowRest = rowMaps[dragRowid];
1749
+ var dragRowHeight = 0;
1750
+ var rsIndex = -1;
1751
+ if (dragRowRest) {
1752
+ if (animation) {
1753
+ var oldItemEl = el.querySelector(".vxe-list--row[rowid=\"".concat(dragRowid, "\"]"));
1754
+ var targetItemEl = oldItemEl;
1755
+ if (targetItemEl) {
1756
+ dragRowHeight = targetItemEl.offsetHeight;
1757
+ }
1758
+ }
1759
+ rsIndex = dragRowRest.$index;
1760
+ }
1761
+ var dragRangeList = rsIndex > -1 && rsIndex < rowList.length - 1 ? rowList.slice(rsIndex + 1) : [];
1762
+ var dragList = [dragRow];
1763
+ $xeList.remove(dragList).then(function () {
1764
+ if (animation && dragRowHeight && dragRangeList.length) {
1765
+ var wrapperEl = el;
1766
+ var dtClss = [];
1767
+ dragRangeList.forEach(function (item) {
1768
+ var rowid = $xeList.getRowId(item);
1769
+ dtClss.push(".vxe-list--row[rowid=\"".concat(rowid, "\"]"));
1770
+ });
1771
+ var dtTrList = wrapperEl.querySelectorAll(dtClss.join(','));
1772
+ (0, _anime.moveRowAnimateToTb)(dtTrList, dragRowHeight);
1773
+ }
1774
+ });
1775
+ $xeList.dispatchEvent('row-remove-dragend', {
1776
+ row: dragRow
1777
+ }, evnt);
1778
+ $xeList.handleRowDragEndClearStatus();
1779
+ }
1780
+ }
1781
+ },
1782
+ /**
1783
+ * 处理跨树拖至新的空树
1784
+ */
1785
+ handleCrossListRowDragoverEmptyEvent: function handleCrossListRowDragoverEmptyEvent(evnt) {
1786
+ var $xeList = this;
1787
+ var reactData = $xeList.reactData;
1788
+ var internalData = $xeList.internalData;
1789
+ var rowList = reactData.rowList;
1790
+ var dragOpts = $xeList.computeDragOpts;
1791
+ var isCrossListDrag = dragOpts.isCrossListDrag;
1792
+ if (isCrossListDrag && crossListDragRowObj && !rowList.length) {
1793
+ var _crossListDragRowObj2 = crossListDragRowObj,
1794
+ $oldList = _crossListDragRowObj2.$oldList,
1795
+ $newList = _crossListDragRowObj2.$newList;
1796
+ if ($oldList) {
1797
+ var oldListReactData = $oldList;
1798
+ if ($oldList.xID !== $xeList.xID) {
1799
+ if ($newList && $newList.xID !== $xeList.xID) {
1800
+ $newList.hideCrossListRowDropClearStatus();
1801
+ }
1802
+ evnt.preventDefault();
1803
+ $oldList.hideCrossListRowDropClearStatus();
1804
+ crossListDragRowObj.$newList = $xeList;
1805
+ internalData.prevDragRow = null;
1806
+ reactData.dragTipText = oldListReactData.dragTipText;
1807
+ $xeList.showDropTip(evnt, evnt.currentTarget, true, '');
1808
+ }
1809
+ }
1810
+ }
1811
+ },
1812
+ /**
1813
+ * 处理跨树拖插入
1814
+ */
1815
+ handleCrossListRowDragInsertEvent: function handleCrossListRowDragInsertEvent(evnt) {
1816
+ var $xeList = this;
1817
+ var reactData = $xeList.reactData;
1818
+ var internalData = $xeList.internalData;
1819
+ var crossListDragRowInfo = (0, _store.getCrossListDragRowInfo)($xeList);
1820
+ var prevDragRow = internalData.prevDragRow,
1821
+ prevDragPos = internalData.prevDragPos;
1822
+ var dragOpts = $xeList.computeDragOpts;
1823
+ var animation = dragOpts.animation,
1824
+ isCrossListDrag = dragOpts.isCrossListDrag,
1825
+ dragEndMethod = dragOpts.dragEndMethod;
1826
+ // 跨表拖拽
1827
+ if (isCrossListDrag && crossListDragRowObj && crossListDragRowInfo) {
1828
+ var oldRow = crossListDragRowInfo.row;
1829
+ var _crossListDragRowObj3 = crossListDragRowObj,
1830
+ $oldList = _crossListDragRowObj3.$oldList;
1831
+ var el = $xeList.$refs.refElem;
1832
+ if (!el) {
1833
+ return;
1834
+ }
1835
+ if ($oldList && oldRow) {
1836
+ var dragRow = oldRow;
1837
+ var dragOffsetIndex = -1;
1838
+ if (prevDragRow) {
1839
+ dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
1840
+ }
1841
+ var dragParams = {
1842
+ oldRow: dragRow,
1843
+ newRow: prevDragRow,
1844
+ dragRow: dragRow,
1845
+ dragPos: prevDragPos,
1846
+ offsetIndex: dragOffsetIndex
1847
+ };
1848
+ var errRest = {
1849
+ status: false
1850
+ };
1851
+ Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then(function (status) {
1852
+ if (!status) {
1853
+ if ($oldList) {
1854
+ if ($oldList.xID !== $xeList.xID) {
1855
+ $oldList.handleCrossListRowDragCancelEvent(evnt);
1856
+ }
1857
+ }
1858
+ $xeList.handleRowDragEndClearStatus();
1859
+ return errRest;
1860
+ }
1861
+ var insertRest = Promise.resolve();
1862
+ var dragList = [dragRow];
1863
+ $oldList.handleCrossListRowDragFinishEvent(evnt);
1864
+ if (prevDragRow) {
1865
+ if (prevDragPos === 'bottom') {
1866
+ insertRest = $xeList.insertNextAt(dragList, prevDragRow);
1867
+ } else {
1868
+ insertRest = $xeList.insertAt(dragList, prevDragRow);
1869
+ }
1870
+ } else {
1871
+ insertRest = $xeList.insert(dragList);
1872
+ }
1873
+ $xeList.dispatchEvent('row-insert-dragend', {
1874
+ oldRow: oldRow,
1875
+ newRow: prevDragRow,
1876
+ dragRow: dragRow,
1877
+ dragPos: prevDragPos,
1878
+ offsetIndex: dragOffsetIndex
1879
+ }, evnt);
1880
+ $xeList.clearRowDragData();
1881
+ insertRest.then(function () {
1882
+ var rowList = reactData.rowList;
1883
+ var rowMaps = internalData.rowMaps;
1884
+ var oldRowid = $xeList.getRowId(dragRow);
1885
+ var oldRowRest = rowMaps[oldRowid];
1886
+ var dragRowHeight = 0;
1887
+ var rsIndex = -1;
1888
+ if (oldRowRest) {
1889
+ if (animation) {
1890
+ var oldItemEl = el.querySelector(".vxe-list--row[rowid=\"".concat(oldRowid, "\"]"));
1891
+ var targetItemEl = oldItemEl;
1892
+ if (targetItemEl) {
1893
+ dragRowHeight = targetItemEl.offsetHeight;
1894
+ }
1895
+ }
1896
+ rsIndex = oldRowRest.$index;
1897
+ }
1898
+ var dragRangeList = rsIndex > -1 ? rowList.slice(rsIndex) : [];
1899
+ if (animation && dragRowHeight && dragRangeList.length) {
1900
+ var wrapperEl = el;
1901
+ var dtClss = [];
1902
+ dragRangeList.forEach(function (item) {
1903
+ var rowid = $xeList.getRowId(item);
1904
+ dtClss.push(".vxe-list--row[rowid=\"".concat(rowid, "\"]"));
1905
+ });
1906
+ var dtTrList = wrapperEl.querySelectorAll(dtClss.join(','));
1907
+ (0, _anime.moveRowAnimateToTb)(dtTrList, -dragRowHeight);
1908
+ }
1909
+ });
1910
+ });
1911
+ }
1912
+ }
1913
+ },
1914
+ hideCrossListRowDropClearStatus: function hideCrossListRowDropClearStatus() {
1915
+ var $xeList = this;
1916
+ $xeList.hideDropTip();
1917
+ },
1918
+ handleContextmenuEvent: function handleContextmenuEvent(evnt, row) {
1919
+ var $xeList = this;
1920
+ var props = $xeList;
1921
+ var reactData = $xeList.reactData;
1922
+ var internalData = $xeList.internalData;
1923
+ var menuConfig = props.menuConfig;
1924
+ var menuOpts = $xeList.computeMenuOpts;
1925
+ var rowOpts = $xeList.computeRowOpts;
1926
+ var isCurrent = rowOpts.isCurrent;
1927
+ if (menuConfig ? (0, _utils.isEnableConf)(menuOpts) : menuOpts.enabled) {
1928
+ var options = menuOpts.options,
1929
+ visibleMethod = menuOpts.visibleMethod;
1930
+ if (!visibleMethod || visibleMethod({
1931
+ $list: $xeList,
1932
+ options: options,
1933
+ row: row
1934
+ })) {
1935
+ if (isCurrent) {
1936
+ $xeList.changeCurrentEvent(evnt, row);
1937
+ } else if (internalData.currentRow) {
1938
+ internalData.currentRow = null;
1939
+ reactData.currRowFlag++;
1940
+ }
1941
+ if (_ui.VxeUI.contextMenu) {
1942
+ _ui.VxeUI.contextMenu.openByEvent(evnt, {
1943
+ options: options,
1944
+ events: {
1945
+ optionClick: function optionClick(eventParams) {
1946
+ var option = eventParams.option;
1947
+ var gMenuOpts = _ui.menus.get(option.code);
1948
+ var tmMethod = gMenuOpts ? gMenuOpts.listMenuMethod : null;
1949
+ var params = {
1950
+ menu: option,
1951
+ row: row,
1952
+ $event: evnt,
1953
+ $list: $xeList
1954
+ };
1955
+ if (tmMethod) {
1956
+ tmMethod(params, evnt);
1957
+ }
1958
+ $xeList.dispatchEvent('menu-click', params, eventParams.$event);
1959
+ }
1960
+ }
1961
+ });
1962
+ }
1963
+ }
1964
+ }
1965
+ $xeList.dispatchEvent('row-menu', {
1966
+ row: row
1967
+ }, evnt);
1968
+ },
1395
1969
  //
1396
1970
  // Render
1397
1971
  //
@@ -1514,6 +2088,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1514
2088
  var selectCheckboxMaps = internalData.selectCheckboxMaps,
1515
2089
  currentRow = internalData.currentRow;
1516
2090
  var contentSlot = slots.content;
2091
+ var extraSlot = slots.extra;
1517
2092
  var dragOpts = $xeList.computeDragOpts;
1518
2093
  var trigger = dragOpts.trigger,
1519
2094
  icon = dragOpts.icon,
@@ -1575,6 +2150,12 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1575
2150
  key: 'ct5',
1576
2151
  class: 'vxe-list--row-content'
1577
2152
  }, contentSlot ? contentSlot(rowParams) : contentField ? (0, _utils.getText)(row[contentField]) : ''));
2153
+ if (extraSlot) {
2154
+ ctVNs.push(h('div', {
2155
+ key: 'ct7',
2156
+ class: 'vxe-list--row-extra'
2157
+ }, extraSlot(rowParams)));
2158
+ }
1578
2159
  var rowOns = {
1579
2160
  mousedown: function mousedown(evnt) {
1580
2161
  $xeList.handleRowMousedownEvent(evnt, row);
@@ -1585,6 +2166,9 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1585
2166
  },
1586
2167
  dblclick: function dblclick(evnt) {
1587
2168
  $xeList.handleRowDblclickEvent(evnt, row);
2169
+ },
2170
+ contextmenu: function contextmenu(evnt) {
2171
+ $xeList.handleContextmenuEvent(evnt, row);
1588
2172
  }
1589
2173
  };
1590
2174
  // 拖拽行事件
@@ -1629,16 +2213,22 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1629
2213
  var radioOpts = $xeList.computeRadioOpts;
1630
2214
  var checkboxOpts = $xeList.computeCheckboxOpts;
1631
2215
  var dragOpts = $xeList.computeDragOpts;
1632
- var trigger = dragOpts.trigger;
2216
+ var trigger = dragOpts.trigger,
2217
+ isCrossListDrag = dragOpts.isCrossListDrag;
1633
2218
  var rowOpts = $xeList.computeRowOpts;
1634
2219
  var isHover = rowOpts.isHover,
1635
2220
  padding = rowOpts.padding;
1636
2221
  var showDefChekboxHead = showCheckbox && checkboxOpts.showHeader !== false;
2222
+ var leOns = {};
2223
+ if (isCrossListDrag && !rowList.length) {
2224
+ leOns.dragover = $xeList.handleCrossListRowDragoverEmptyEvent;
2225
+ }
1637
2226
  return h('div', {
1638
2227
  ref: 'refElem',
1639
2228
  class: ['vxe-list', className ? _xeUtils.default.isFunction(className) ? className({
1640
2229
  $list: $xeList
1641
2230
  }) : className : '', _defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'is--loading', loading)],
2231
+ on: leOns,
1642
2232
  style: wrapperStyles
1643
2233
  }, [headerSlot || showDefChekboxHead ? h('div', {
1644
2234
  ref: 'refHeaderElem',
@@ -1759,13 +2349,17 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
1759
2349
  var $xeList = this;
1760
2350
  var props = $xeList;
1761
2351
  var internalData = $xeList.internalData;
1762
- var showRadio = props.showRadio,
2352
+ var showSeq = props.showSeq,
2353
+ showRadio = props.showRadio,
1763
2354
  showCheckbox = props.showCheckbox;
1764
2355
  var rowOpts = $xeList.computeRowOpts;
1765
2356
  var useKey = rowOpts.useKey,
1766
2357
  keyField = rowOpts.keyField;
1767
2358
  var isDrag = $xeList.computeIsDrag;
1768
2359
  if (!keyField) {
2360
+ if (showSeq) {
2361
+ errLog('vxe.error.reqSupportProp', ['show-seq', 'row-config.keyField']);
2362
+ }
1769
2363
  if (showRadio) {
1770
2364
  errLog('vxe.error.reqSupportProp', ['show-radio', 'row-config.keyField']);
1771
2365
  }