vxe-table 3.3.14 → 3.4.0

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 (124) hide show
  1. package/helper/vetur/attributes.json +12 -200
  2. package/helper/vetur/tags.json +3 -65
  3. package/lib/button/index.min.js +1 -1
  4. package/lib/checkbox/index.min.js +1 -1
  5. package/lib/checkbox-group/index.min.js +1 -1
  6. package/lib/colgroup/index.min.js +1 -1
  7. package/lib/column/index.min.js +1 -1
  8. package/lib/edit/index.min.js +1 -1
  9. package/lib/edit/src/mixin.js +3 -3
  10. package/lib/edit/src/mixin.min.js +1 -1
  11. package/lib/export/index.js +7 -7
  12. package/lib/export/index.min.js +1 -1
  13. package/lib/export/src/mixin.js +48 -5
  14. package/lib/export/src/mixin.min.js +1 -1
  15. package/lib/filter/index.min.js +1 -1
  16. package/lib/filter/src/mixin.js +8 -2
  17. package/lib/filter/src/mixin.min.js +1 -1
  18. package/lib/footer/index.min.js +1 -1
  19. package/lib/form/index.min.js +1 -1
  20. package/lib/form/src/form.js +22 -7
  21. package/lib/form/src/form.min.js +1 -1
  22. package/lib/form/src/render.js +4 -4
  23. package/lib/form/src/render.min.js +1 -1
  24. package/lib/form/src/util.js +3 -3
  25. package/lib/form/src/util.min.js +1 -1
  26. package/lib/form-gather/index.min.js +1 -1
  27. package/lib/form-item/index.min.js +1 -1
  28. package/lib/grid/index.min.js +1 -1
  29. package/lib/grid/src/grid.js +58 -2
  30. package/lib/grid/src/grid.min.js +1 -1
  31. package/lib/header/index.min.js +1 -1
  32. package/lib/header/src/header.js +3 -2
  33. package/lib/header/src/header.min.js +1 -1
  34. package/lib/header/src/util.js +1 -1
  35. package/lib/header/src/util.min.js +1 -1
  36. package/lib/header/style/style.css +3 -10
  37. package/lib/header/style/style.min.css +1 -1
  38. package/lib/icon/index.min.js +1 -1
  39. package/lib/index.common.js +2 -2
  40. package/lib/index.common.min.js +1 -1
  41. package/lib/index.css +1 -1
  42. package/lib/index.umd.js +1945 -913
  43. package/lib/index.umd.min.js +1 -1
  44. package/lib/input/index.min.js +1 -1
  45. package/lib/input/src/input.js +1 -1
  46. package/lib/input/src/input.min.js +1 -1
  47. package/lib/keyboard/index.min.js +1 -1
  48. package/lib/keyboard/src/mixin.min.js +1 -1
  49. package/lib/list/index.min.js +1 -1
  50. package/lib/menu/index.min.js +1 -1
  51. package/lib/modal/index.js +3 -3
  52. package/lib/modal/index.min.js +1 -1
  53. package/lib/modal/src/modal.js +2 -2
  54. package/lib/modal/src/modal.min.js +1 -1
  55. package/lib/optgroup/index.min.js +1 -1
  56. package/lib/option/index.min.js +1 -1
  57. package/lib/pager/index.min.js +1 -1
  58. package/lib/pager/src/pager.js +1 -1
  59. package/lib/pulldown/index.min.js +1 -1
  60. package/lib/radio/index.min.js +1 -1
  61. package/lib/radio-button/index.min.js +1 -1
  62. package/lib/radio-group/index.min.js +1 -1
  63. package/lib/select/index.min.js +1 -1
  64. package/lib/select/src/select.js +7 -7
  65. package/lib/select/src/select.min.js +1 -1
  66. package/lib/select/src/util.js +3 -3
  67. package/lib/select/src/util.min.js +1 -1
  68. package/lib/style.css +1 -1
  69. package/lib/style.min.css +1 -1
  70. package/lib/switch/index.min.js +1 -1
  71. package/lib/table/index.min.js +1 -1
  72. package/lib/table/src/body.js +16 -11
  73. package/lib/table/src/body.min.js +1 -1
  74. package/lib/table/src/cell.js +1 -1
  75. package/lib/table/src/cell.min.js +1 -1
  76. package/lib/table/src/methods.js +310 -137
  77. package/lib/table/src/methods.min.js +1 -1
  78. package/lib/table/src/table.js +12 -2
  79. package/lib/table/src/table.min.js +1 -1
  80. package/lib/table/src/util.js +7 -7
  81. package/lib/table/src/util.min.js +1 -1
  82. package/lib/table/style/style.css +13 -10
  83. package/lib/table/style/style.min.css +1 -1
  84. package/lib/textarea/index.min.js +1 -1
  85. package/lib/toolbar/index.min.js +1 -1
  86. package/lib/tools/index.js +2 -2
  87. package/lib/tools/index.min.js +1 -1
  88. package/lib/tools/src/dom.js +2 -2
  89. package/lib/tools/src/dom.min.js +1 -1
  90. package/lib/tools/src/event.js +1 -1
  91. package/lib/tools/src/event.min.js +1 -1
  92. package/lib/tools/src/utils.js +3 -3
  93. package/lib/tools/src/utils.min.js +1 -1
  94. package/lib/tooltip/index.min.js +1 -1
  95. package/lib/v-x-e-table/index.js +5 -3
  96. package/lib/v-x-e-table/index.min.js +1 -1
  97. package/lib/v-x-e-table/src/conf.js +3 -1
  98. package/lib/v-x-e-table/src/conf.min.js +1 -1
  99. package/lib/v-x-e-table/src/renderer.js +4 -4
  100. package/lib/v-x-e-table/src/renderer.min.js +1 -1
  101. package/lib/v-x-e-table/src/store.min.js +1 -1
  102. package/lib/validator/index.min.js +1 -1
  103. package/lib/validator/src/mixin.js +9 -4
  104. package/lib/validator/src/mixin.min.js +1 -1
  105. package/package.json +5 -6
  106. package/packages/edit/src/mixin.js +2 -2
  107. package/packages/export/src/mixin.js +38 -1
  108. package/packages/filter/src/mixin.js +2 -2
  109. package/packages/form/src/form.js +10 -6
  110. package/packages/form/src/render.js +4 -4
  111. package/packages/grid/src/grid.js +48 -0
  112. package/packages/header/src/header.js +2 -2
  113. package/packages/select/src/select.js +5 -5
  114. package/packages/table/src/body.js +15 -10
  115. package/packages/table/src/methods.js +192 -66
  116. package/packages/table/src/table.js +11 -2
  117. package/packages/v-x-e-table/src/conf.js +3 -1
  118. package/packages/v-x-e-table/src/renderer.js +4 -4
  119. package/packages/validator/src/mixin.js +8 -4
  120. package/styles/button.scss +4 -4
  121. package/styles/header.scss +9 -12
  122. package/styles/modal.scss +4 -4
  123. package/styles/table.scss +13 -7
  124. package/styles/variable.scss +1 -1
@@ -31,13 +31,13 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
31
31
 
32
32
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
33
33
 
34
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
34
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
35
35
 
36
36
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
37
37
 
38
38
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
39
39
 
40
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
40
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
41
41
 
42
42
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
43
43
 
@@ -445,6 +445,15 @@ var Methods = {
445
445
  this.tableData = scrollYLoad ? fullData.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullData.slice(0);
446
446
  return this.$nextTick();
447
447
  },
448
+ updateScrollYStatus: function updateScrollYStatus(fullData) {
449
+ var treeConfig = this.treeConfig,
450
+ treeOpts = this.treeOpts,
451
+ sYOpts = this.sYOpts;
452
+ var transform = treeOpts.transform;
453
+ var scrollYLoad = (transform || !treeConfig) && !!sYOpts.enabled && sYOpts.gt > -1 && sYOpts.gt < fullData.length;
454
+ this.scrollYLoad = scrollYLoad;
455
+ return scrollYLoad;
456
+ },
448
457
 
449
458
  /**
450
459
  * 加载表格数据
@@ -455,36 +464,72 @@ var Methods = {
455
464
 
456
465
  var keepSource = this.keepSource,
457
466
  treeConfig = this.treeConfig,
467
+ treeOpts = this.treeOpts,
458
468
  editStore = this.editStore,
459
- sYOpts = this.sYOpts,
460
469
  scrollYStore = this.scrollYStore,
461
470
  scrollXStore = this.scrollXStore,
462
471
  lastScrollLeft = this.lastScrollLeft,
463
472
  lastScrollTop = this.lastScrollTop,
464
473
  oldScrollYLoad = this.scrollYLoad;
465
- var tableFullData = datas ? datas.slice(0) : [];
466
- var scrollYLoad = !treeConfig && sYOpts.enabled && sYOpts.gt > -1 && sYOpts.gt < tableFullData.length;
474
+ var treeData = [];
475
+ var fullData = datas ? datas.slice(0) : [];
476
+
477
+ if (treeConfig) {
478
+ // 树结构自动转换
479
+ if (treeOpts.transform) {
480
+ if (process.env.NODE_ENV === 'development') {
481
+ if (!treeOpts.rowtKey) {
482
+ _tools.UtilTools.error('vxe.error.reqProp', ['table.tree-config.rowtKey']);
483
+ }
484
+
485
+ if (!treeOpts.parentKey) {
486
+ _tools.UtilTools.error('vxe.error.reqProp', ['table.tree-config.parentKey']);
487
+ }
488
+
489
+ if (!treeOpts.children) {
490
+ _tools.UtilTools.error('vxe.error.reqProp', ['tree-config.children']);
491
+ }
492
+
493
+ fullData.forEach(function (row) {
494
+ if (row[treeOpts.children] && row[treeOpts.children].length) {
495
+ _tools.UtilTools.warn('vxe.error.errConflicts', ['tree-config.transform', "row.".concat(treeOpts.children)]);
496
+ }
497
+ });
498
+ }
499
+
500
+ treeData = _xeUtils.default.toArrayTree(fullData, {
501
+ key: treeOpts.rowtKey,
502
+ parentKey: treeOpts.parentKey,
503
+ children: treeOpts.children
504
+ });
505
+ fullData = treeData.slice(0);
506
+ } else {
507
+ treeData = fullData.slice(0);
508
+ }
509
+ }
510
+
467
511
  scrollYStore.startIndex = 0;
468
512
  scrollYStore.endIndex = 1;
469
513
  scrollXStore.startIndex = 0;
470
514
  scrollXStore.endIndex = 1;
471
515
  editStore.insertList = [];
472
- editStore.removeList = []; // 全量数据
516
+ editStore.removeList = [];
517
+ var sYLoad = this.updateScrollYStatus(fullData);
518
+ this.scrollYLoad = sYLoad; // 全量数据
473
519
 
474
- this.tableFullData = tableFullData; // 缓存数据
520
+ this.tableFullData = fullData;
521
+ this.treeFullData = treeData; // 缓存数据
475
522
 
476
- this.updateCache(true); // 原始数据
523
+ this.cacheRowMap(true); // 原始数据
477
524
 
478
- this.tableSynchData = datas;
525
+ this.tableSynchData = datas; // 克隆原数据,用于显示编辑状态,与编辑值做对比
479
526
 
480
527
  if (keepSource) {
481
- this.tableSourceData = _xeUtils.default.clone(tableFullData, true);
528
+ this.tableSourceData = _xeUtils.default.clone(fullData, true);
482
529
  }
483
530
 
484
- this.scrollYLoad = scrollYLoad;
485
-
486
531
  if (process.env.NODE_ENV === 'development') {
487
- if (scrollYLoad) {
532
+ if (sYLoad) {
488
533
  if (!(this.height || this.maxHeight)) {
489
534
  _tools.UtilTools.error('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
490
535
  }
@@ -515,8 +560,8 @@ var Methods = {
515
560
  }).then(function () {
516
561
  _this2.computeScrollLoad();
517
562
  }).then(function () {
518
- // 是否加载了数据
519
- if (scrollYLoad) {
563
+ // 是否启用了虚拟滚动
564
+ if (sYLoad) {
520
565
  scrollYStore.endIndex = scrollYStore.visibleSize;
521
566
  }
522
567
 
@@ -529,7 +574,7 @@ var Methods = {
529
574
  return _this2.recalculate();
530
575
  }).then(function () {
531
576
  // 是否变更虚拟滚动
532
- if (oldScrollYLoad === scrollYLoad) {
577
+ if (oldScrollYLoad === sYLoad) {
533
578
  (0, _util.restoreScrollLocation)(_this2, lastScrollLeft, lastScrollTop).then(resolve);
534
579
  } else {
535
580
  setTimeout(function () {
@@ -615,7 +660,7 @@ var Methods = {
615
660
  _xeUtils.default.clear(row, undefined);
616
661
 
617
662
  Object.assign(row, this.defineField(Object.assign({}, record)));
618
- this.updateCache(true);
663
+ this.cacheRowMap(true);
619
664
  } else {
620
665
  _xeUtils.default.destructuring(oRow, _xeUtils.default.clone(row, true));
621
666
  }
@@ -700,7 +745,7 @@ var Methods = {
700
745
  * 更新数据行的 Map
701
746
  * 牺牲数据组装的耗时,用来换取使用过程中的流畅
702
747
  */
703
- updateCache: function updateCache(source) {
748
+ cacheRowMap: function cacheRowMap(source) {
704
749
  var _this8 = this;
705
750
 
706
751
  var treeConfig = this.treeConfig,
@@ -713,7 +758,7 @@ var Methods = {
713
758
  var rowkey = getRowkey(this);
714
759
  var isLazy = treeConfig && treeOpts.lazy;
715
760
 
716
- var handleCache = function handleCache(row, index, items, path, parent) {
761
+ var handleCache = function handleCache(row, index, items, path, parent, nodes) {
717
762
  var rowid = getRowid(_this8, row);
718
763
 
719
764
  if ((0, _utils.eqEmptyValue)(rowid)) {
@@ -731,7 +776,8 @@ var Methods = {
731
776
  rowid: rowid,
732
777
  index: treeConfig && parent ? -1 : index,
733
778
  items: items,
734
- parent: parent
779
+ parent: parent,
780
+ level: nodes ? nodes.length - 1 : 0
735
781
  };
736
782
 
737
783
  if (source) {
@@ -757,19 +803,20 @@ var Methods = {
757
803
  tableFullData.forEach(handleCache);
758
804
  }
759
805
  },
760
- loadChildren: function loadChildren(row, childRecords) {
806
+ loadTreeChildren: function loadTreeChildren(row, childRecords) {
761
807
  var _this9 = this;
762
808
 
809
+ var keepSource = this.keepSource,
810
+ tableSourceData = this.tableSourceData,
811
+ treeOpts = this.treeOpts,
812
+ fullDataRowIdData = this.fullDataRowIdData,
813
+ fullDataRowMap = this.fullDataRowMap,
814
+ fullAllDataRowMap = this.fullAllDataRowMap,
815
+ fullAllDataRowIdData = this.fullAllDataRowIdData;
816
+ var children = treeOpts.children;
817
+ var rest = fullAllDataRowIdData[getRowid(this, row)];
818
+ var parentLevel = rest ? rest.level : 0;
763
819
  return this.createData(childRecords).then(function (rows) {
764
- var keepSource = _this9.keepSource,
765
- tableSourceData = _this9.tableSourceData,
766
- treeOpts = _this9.treeOpts,
767
- fullDataRowIdData = _this9.fullDataRowIdData,
768
- fullDataRowMap = _this9.fullDataRowMap,
769
- fullAllDataRowMap = _this9.fullAllDataRowMap,
770
- fullAllDataRowIdData = _this9.fullAllDataRowIdData;
771
- var children = treeOpts.children;
772
-
773
820
  if (keepSource) {
774
821
  var rowid = getRowid(_this9, row);
775
822
 
@@ -782,14 +829,15 @@ var Methods = {
782
829
  }
783
830
  }
784
831
 
785
- _xeUtils.default.eachTree(rows, function (childRow, index, items, path, parent) {
832
+ _xeUtils.default.eachTree(rows, function (childRow, index, items, path, parent, nodes) {
786
833
  var rowid = getRowid(_this9, childRow);
787
834
  var rest = {
788
835
  row: childRow,
789
836
  rowid: rowid,
790
837
  index: -1,
791
838
  items: items,
792
- parent: parent
839
+ parent: parent,
840
+ level: parentLevel + nodes.length
793
841
  };
794
842
  fullDataRowIdData[rowid] = rest;
795
843
  fullDataRowMap.set(childRow, rest);
@@ -1277,6 +1325,14 @@ var Methods = {
1277
1325
  return this.editStore.insertList.indexOf(row) > -1;
1278
1326
  },
1279
1327
 
1328
+ /**
1329
+ * 删除所有新增的临时数据
1330
+ * @returns
1331
+ */
1332
+ removeInsertRow: function removeInsertRow() {
1333
+ return this.remove(this.editStore.insertList);
1334
+ },
1335
+
1280
1336
  /**
1281
1337
  * 检查行或列数据是否发生改变
1282
1338
  * @param {Row} row 行对象
@@ -1487,6 +1543,7 @@ var Methods = {
1487
1543
  filterRender = column.filterRender;
1488
1544
  var compConf = filterRender ? _vXETable.default.renderer.get(filterRender.name) : null;
1489
1545
  var compFilterMethod = compConf && compConf.renderFilter ? compConf.filterMethod : null;
1546
+ var defaultFilterMethod = compConf ? compConf.defaultFilterMethod : null;
1490
1547
 
1491
1548
  var cellValue = _tools.UtilTools.getCellValue(row, column);
1492
1549
 
@@ -1520,6 +1577,17 @@ var Methods = {
1520
1577
  row: row,
1521
1578
  column: column
1522
1579
  });
1580
+ } else if (defaultFilterMethod) {
1581
+ return itemList.some(function (item) {
1582
+ return defaultFilterMethod({
1583
+ value: item.value,
1584
+ option: item,
1585
+ cellValue: cellValue,
1586
+ row: row,
1587
+ column: column,
1588
+ $table: _this15
1589
+ });
1590
+ });
1523
1591
  }
1524
1592
 
1525
1593
  return valueList.indexOf(_xeUtils.default.get(row, column.property)) > -1;
@@ -3180,12 +3248,12 @@ var Methods = {
3180
3248
  var column = params.column;
3181
3249
  var titleHelp = column.titleHelp;
3182
3250
 
3183
- if (titleHelp.message) {
3251
+ if (titleHelp.content || titleHelp.message) {
3184
3252
  var $refs = this.$refs,
3185
3253
  tooltipStore = this.tooltipStore;
3186
3254
  var tooltip = $refs.tooltip;
3187
3255
 
3188
- var content = _tools.UtilTools.getFuncText(titleHelp.message);
3256
+ var content = _tools.UtilTools.getFuncText(titleHelp.content || titleHelp.message);
3189
3257
 
3190
3258
  this.handleTargetEnterEvent();
3191
3259
  tooltipStore.visible = true;
@@ -4679,12 +4747,25 @@ var Methods = {
4679
4747
  * @param {Event} evnt 事件
4680
4748
  */
4681
4749
  closeFilter: function closeFilter() {
4682
- Object.assign(this.filterStore, {
4750
+ var filterStore = this.filterStore;
4751
+ var column = filterStore.column,
4752
+ visible = filterStore.visible;
4753
+ Object.assign(filterStore, {
4683
4754
  isAllSelected: false,
4684
4755
  isIndeterminate: false,
4685
4756
  options: [],
4686
4757
  visible: false
4687
4758
  });
4759
+
4760
+ if (visible) {
4761
+ this.emitEvent('filter-visible', {
4762
+ column: column,
4763
+ property: column.property,
4764
+ filterList: this.getCheckedFilters(),
4765
+ visible: false
4766
+ }, null);
4767
+ }
4768
+
4688
4769
  return this.$nextTick();
4689
4770
  },
4690
4771
 
@@ -4731,10 +4812,10 @@ var Methods = {
4731
4812
  },
4732
4813
 
4733
4814
  /**
4734
- * 重新加载展开行的内容
4815
+ * 重新懒加载展开行,并展开内容
4735
4816
  * @param {Row} row 行对象
4736
4817
  */
4737
- reloadExpandContent: function reloadExpandContent(row) {
4818
+ lazyExpandContent: function lazyExpandContent(row) {
4738
4819
  var _this36 = this;
4739
4820
 
4740
4821
  var expandOpts = this.expandOpts,
@@ -4749,6 +4830,14 @@ var Methods = {
4749
4830
 
4750
4831
  return this.$nextTick();
4751
4832
  },
4833
+ reloadExpandContent: function reloadExpandContent(row) {
4834
+ if (process.env.NODE_ENV === 'development') {
4835
+ _tools.UtilTools.warn('vxe.error.delFunc', ['reloadExpandContent', 'lazyExpandContent']);
4836
+ } // 即将废弃
4837
+
4838
+
4839
+ return this.lazyExpandContent(row);
4840
+ },
4752
4841
 
4753
4842
  /**
4754
4843
  * 展开行事件
@@ -5016,25 +5105,40 @@ var Methods = {
5016
5105
  },
5017
5106
 
5018
5107
  /**
5019
- * 重新加载树的子节点
5108
+ * 重新懒加载树节点,并展开该节点
5020
5109
  * @param {Row} row 行对象
5021
5110
  */
5022
- reloadTreeChilds: function reloadTreeChilds(row) {
5111
+ lazyTreeChildren: function lazyTreeChildren(row) {
5023
5112
  var _this40 = this;
5024
5113
 
5025
5114
  var treeOpts = this.treeOpts,
5026
5115
  treeLazyLoadeds = this.treeLazyLoadeds;
5027
- var lazy = treeOpts.lazy,
5116
+ var transform = treeOpts.transform,
5117
+ lazy = treeOpts.lazy,
5028
5118
  hasChild = treeOpts.hasChild;
5029
5119
 
5030
5120
  if (lazy && row[hasChild] && treeLazyLoadeds.indexOf(row) === -1) {
5031
5121
  this.clearTreeExpandLoaded(row).then(function () {
5032
5122
  return _this40.handleAsyncTreeExpandChilds(row);
5123
+ }).then(function () {
5124
+ if (transform) {
5125
+ return _this40.updateVirtualTreeData();
5126
+ }
5127
+ }).then(function () {
5128
+ return _this40.recalculate();
5033
5129
  });
5034
5130
  }
5035
5131
 
5036
5132
  return this.$nextTick();
5037
5133
  },
5134
+ reloadTreeChilds: function reloadTreeChilds(row) {
5135
+ if (process.env.NODE_ENV === 'development') {
5136
+ _tools.UtilTools.warn('vxe.error.delFunc', ['reloadTreeChilds', 'lazyTreeChildren']);
5137
+ } // 即将废弃
5138
+
5139
+
5140
+ return this.lazyTreeChildren(row);
5141
+ },
5038
5142
 
5039
5143
  /**
5040
5144
  * 展开树节点事件
@@ -5128,7 +5232,7 @@ var Methods = {
5128
5232
  }
5129
5233
 
5130
5234
  if (childRecords) {
5131
- _this41.loadChildren(row, childRecords).then(function (childRows) {
5235
+ _this41.loadTreeChildren(row, childRecords).then(function (childRows) {
5132
5236
  if (childRows.length && treeExpandeds.indexOf(row) === -1) {
5133
5237
  treeExpandeds.push(row);
5134
5238
  } // 如果当前节点已选中,则展开后子节点也被选中
@@ -5168,13 +5272,12 @@ var Methods = {
5168
5272
  },
5169
5273
 
5170
5274
  /**
5171
- * 设置展开树形节点,二个参数设置这一行展开与否
5172
- * 支持单行
5173
- * 支持多行
5174
- * @param {Array/Row} rows 行数据
5175
- * @param {Boolean} expanded 是否展开
5275
+ * 默认,展开与收起树节点
5276
+ * @param rows
5277
+ * @param expanded
5278
+ * @returns
5176
5279
  */
5177
- setTreeExpand: function setTreeExpand(rows, expanded) {
5280
+ handleBaseTreeExpand: function handleBaseTreeExpand(rows, expanded) {
5178
5281
  var _this42 = this;
5179
5282
 
5180
5283
  var fullAllDataRowMap = this.fullAllDataRowMap,
@@ -5192,65 +5295,125 @@ var Methods = {
5192
5295
  var result = [];
5193
5296
  var columnIndex = this.getColumnIndex(treeNodeColumn);
5194
5297
  var $columnIndex = this.getVMColumnIndex(treeNodeColumn);
5298
+ var validRows = toggleMethod ? rows.filter(function (row) {
5299
+ return toggleMethod({
5300
+ expanded: expanded,
5301
+ column: treeNodeColumn,
5302
+ columnIndex: columnIndex,
5303
+ $columnIndex: $columnIndex,
5304
+ row: row
5305
+ });
5306
+ }) : rows;
5195
5307
 
5196
- if (rows) {
5197
- if (!_xeUtils.default.isArray(rows)) {
5198
- rows = [rows];
5199
- }
5308
+ if (accordion) {
5309
+ validRows = validRows.length ? [validRows[validRows.length - 1]] : []; // 同一级只能展开一个
5200
5310
 
5201
- if (rows.length) {
5202
- var validRows = toggleMethod ? rows.filter(function (row) {
5203
- return toggleMethod({
5204
- expanded: expanded,
5205
- column: treeNodeColumn,
5206
- columnIndex: columnIndex,
5207
- $columnIndex: $columnIndex,
5208
- row: row
5209
- });
5210
- }) : rows;
5311
+ var matchObj = _xeUtils.default.findTree(tableFullData, function (item) {
5312
+ return item === validRows[0];
5313
+ }, treeOpts);
5211
5314
 
5212
- if (accordion) {
5213
- validRows = validRows.length ? [validRows[validRows.length - 1]] : []; // 同一级只能展开一个
5315
+ if (matchObj) {
5316
+ _xeUtils.default.remove(treeExpandeds, function (item) {
5317
+ return matchObj.items.indexOf(item) > -1;
5318
+ });
5319
+ }
5320
+ }
5214
5321
 
5215
- var matchObj = _xeUtils.default.findTree(tableFullData, function (item) {
5216
- return item === validRows[0];
5217
- }, treeOpts);
5322
+ if (expanded) {
5323
+ validRows.forEach(function (row) {
5324
+ if (treeExpandeds.indexOf(row) === -1) {
5325
+ var rest = fullAllDataRowMap.get(row);
5326
+ var isLoad = lazy && row[hasChild] && !rest.treeLoaded && treeLazyLoadeds.indexOf(row) === -1; // 是否使用懒加载
5218
5327
 
5219
- if (matchObj) {
5220
- _xeUtils.default.remove(treeExpandeds, function (item) {
5221
- return matchObj.items.indexOf(item) > -1;
5222
- });
5328
+ if (isLoad) {
5329
+ result.push(_this42.handleAsyncTreeExpandChilds(row));
5330
+ } else {
5331
+ if (row[children] && row[children].length) {
5332
+ treeExpandeds.push(row);
5333
+ }
5223
5334
  }
5224
5335
  }
5336
+ });
5337
+ } else {
5338
+ _xeUtils.default.remove(treeExpandeds, function (row) {
5339
+ return validRows.indexOf(row) > -1;
5340
+ });
5341
+ }
5225
5342
 
5226
- if (expanded) {
5227
- validRows.forEach(function (row) {
5228
- if (treeExpandeds.indexOf(row) === -1) {
5229
- var rest = fullAllDataRowMap.get(row);
5230
- var isLoad = lazy && row[hasChild] && !rest.treeLoaded && treeLazyLoadeds.indexOf(row) === -1; // 是否使用懒加载
5343
+ if (reserve) {
5344
+ validRows.forEach(function (row) {
5345
+ return _this42.handleTreeExpandReserve(row, expanded);
5346
+ });
5347
+ }
5231
5348
 
5232
- if (isLoad) {
5233
- result.push(_this42.handleAsyncTreeExpandChilds(row));
5234
- } else {
5235
- if (row[children] && row[children].length) {
5236
- treeExpandeds.push(row);
5237
- }
5238
- }
5239
- }
5240
- });
5241
- } else {
5242
- _xeUtils.default.remove(treeExpandeds, function (row) {
5243
- return validRows.indexOf(row) > -1;
5244
- });
5245
- }
5349
+ return Promise.all(result).then(this.recalculate);
5350
+ },
5351
+ updateVirtualTreeData: function updateVirtualTreeData() {
5352
+ var _this43 = this;
5246
5353
 
5247
- if (reserve) {
5248
- validRows.forEach(function (row) {
5249
- return _this42.handleTreeExpandReserve(row, expanded);
5250
- });
5251
- }
5354
+ var oldScrollYLoad = this.scrollYLoad,
5355
+ treeExpandeds = this.treeExpandeds,
5356
+ treeOpts = this.treeOpts,
5357
+ treeFullData = this.treeFullData;
5358
+ var fullData = [];
5359
+
5360
+ _xeUtils.default.eachTree(treeFullData, function (row, index, items, path, parent) {
5361
+ if (!parent || treeExpandeds.indexOf(parent) > -1) {
5362
+ fullData.push(row);
5363
+ }
5364
+ }, treeOpts);
5365
+
5366
+ var scrollYLoad = this.updateScrollYStatus(fullData);
5367
+ this.tableFullData = scrollYLoad ? fullData : treeFullData;
5368
+
5369
+ if (scrollYLoad || oldScrollYLoad !== scrollYLoad) {
5370
+ return this.handleTableData(true).then(function () {
5371
+ return _this43.recalculate();
5372
+ });
5373
+ }
5374
+
5375
+ return this.$nextTick();
5376
+ },
5377
+
5378
+ /**
5379
+ * 虚拟树的展开与收起
5380
+ * @param rows
5381
+ * @param expanded
5382
+ * @returns
5383
+ */
5384
+ handleVirtualTreeExpand: function handleVirtualTreeExpand(rows, expanded) {
5385
+ var _this44 = this;
5386
+
5387
+ return this.handleBaseTreeExpand(rows, expanded).then(function () {
5388
+ return _this44.updateVirtualTreeData();
5389
+ }).then(function () {
5390
+ return _this44.recalculate();
5391
+ });
5392
+ },
5393
+
5394
+ /**
5395
+ * 设置展开树形节点,二个参数设置这一行展开与否
5396
+ * 支持单行
5397
+ * 支持多行
5398
+ * @param {Array/Row} rows 行数据
5399
+ * @param {Boolean} expanded 是否展开
5400
+ */
5401
+ setTreeExpand: function setTreeExpand(rows, expanded) {
5402
+ var treeOpts = this.treeOpts;
5403
+ var transform = treeOpts.transform;
5252
5404
 
5253
- return Promise.all(result).then(this.recalculate);
5405
+ if (rows) {
5406
+ if (!_xeUtils.default.isArray(rows)) {
5407
+ rows = [rows];
5408
+ }
5409
+
5410
+ if (rows.length) {
5411
+ // 如果为虚拟树
5412
+ if (transform) {
5413
+ return this.handleVirtualTreeExpand(rows, expanded);
5414
+ } else {
5415
+ return this.handleBaseTreeExpand(rows, expanded);
5416
+ }
5254
5417
  }
5255
5418
  }
5256
5419
 
@@ -5269,7 +5432,7 @@ var Methods = {
5269
5432
  * 手动清空树形节点的展开状态,数据会恢复成未展开的状态
5270
5433
  */
5271
5434
  clearTreeExpand: function clearTreeExpand() {
5272
- var _this43 = this;
5435
+ var _this45 = this;
5273
5436
 
5274
5437
  var treeOpts = this.treeOpts,
5275
5438
  treeExpandeds = this.treeExpandeds,
@@ -5280,13 +5443,13 @@ var Methods = {
5280
5443
 
5281
5444
  if (reserve) {
5282
5445
  _xeUtils.default.eachTree(tableFullData, function (row) {
5283
- return _this43.handleTreeExpandReserve(row, false);
5446
+ return _this45.handleTreeExpandReserve(row, false);
5284
5447
  }, treeOpts);
5285
5448
  }
5286
5449
 
5287
- return this.$nextTick().then(function () {
5450
+ return this.updateVirtualTreeData().then(function () {
5288
5451
  if (isExists) {
5289
- _this43.recalculate();
5452
+ _this45.recalculate();
5290
5453
  }
5291
5454
  });
5292
5455
  },
@@ -5416,18 +5579,18 @@ var Methods = {
5416
5579
  },
5417
5580
  // 计算可视渲染相关数据
5418
5581
  computeScrollLoad: function computeScrollLoad() {
5419
- var _this44 = this;
5582
+ var _this46 = this;
5420
5583
 
5421
5584
  return this.$nextTick().then(function () {
5422
- var sYOpts = _this44.sYOpts,
5423
- sXOpts = _this44.sXOpts,
5424
- scrollXLoad = _this44.scrollXLoad,
5425
- scrollYLoad = _this44.scrollYLoad,
5426
- scrollXStore = _this44.scrollXStore,
5427
- scrollYStore = _this44.scrollYStore; // 计算 X 逻辑
5585
+ var sYOpts = _this46.sYOpts,
5586
+ sXOpts = _this46.sXOpts,
5587
+ scrollXLoad = _this46.scrollXLoad,
5588
+ scrollYLoad = _this46.scrollYLoad,
5589
+ scrollXStore = _this46.scrollXStore,
5590
+ scrollYStore = _this46.scrollYStore; // 计算 X 逻辑
5428
5591
 
5429
5592
  if (scrollXLoad) {
5430
- var _computeVirtualX3 = computeVirtualX(_this44),
5593
+ var _computeVirtualX3 = computeVirtualX(_this46),
5431
5594
  visibleXSize = _computeVirtualX3.visibleSize;
5432
5595
 
5433
5596
  var offsetXSize = sXOpts.oSize ? _xeUtils.default.toNumber(sXOpts.oSize) : _dom.browse.msie ? 10 : _dom.browse.edge ? 5 : 0;
@@ -5435,13 +5598,13 @@ var Methods = {
5435
5598
  scrollXStore.visibleSize = visibleXSize;
5436
5599
  scrollXStore.endIndex = Math.max(scrollXStore.startIndex + scrollXStore.visibleSize + offsetXSize, scrollXStore.endIndex);
5437
5600
 
5438
- _this44.updateScrollXData();
5601
+ _this46.updateScrollXData();
5439
5602
  } else {
5440
- _this44.updateScrollXSpace();
5603
+ _this46.updateScrollXSpace();
5441
5604
  } // 计算 Y 逻辑
5442
5605
 
5443
5606
 
5444
- var _computeVirtualY = computeVirtualY(_this44),
5607
+ var _computeVirtualY = computeVirtualY(_this46),
5445
5608
  rowHeight = _computeVirtualY.rowHeight,
5446
5609
  visibleYSize = _computeVirtualY.visibleSize;
5447
5610
 
@@ -5453,14 +5616,14 @@ var Methods = {
5453
5616
  scrollYStore.visibleSize = visibleYSize;
5454
5617
  scrollYStore.endIndex = Math.max(scrollYStore.startIndex + visibleYSize + offsetYSize, scrollYStore.endIndex);
5455
5618
 
5456
- _this44.updateScrollYData();
5619
+ _this46.updateScrollYData();
5457
5620
  } else {
5458
- _this44.updateScrollYSpace();
5621
+ _this46.updateScrollYSpace();
5459
5622
  }
5460
5623
 
5461
- _this44.rowHeight = rowHeight;
5624
+ _this46.rowHeight = rowHeight;
5462
5625
 
5463
- _this44.$nextTick(_this44.updateStyle);
5626
+ _this46.$nextTick(_this46.updateStyle);
5464
5627
  });
5465
5628
  },
5466
5629
  handleTableColumn: function handleTableColumn() {
@@ -5574,7 +5737,7 @@ var Methods = {
5574
5737
  * @param {Number} scrollTop 上距离
5575
5738
  */
5576
5739
  scrollTo: function scrollTo(scrollLeft, scrollTop) {
5577
- var _this45 = this;
5740
+ var _this47 = this;
5578
5741
 
5579
5742
  var $refs = this.$refs;
5580
5743
  var tableBody = $refs.tableBody,
@@ -5595,7 +5758,7 @@ var Methods = {
5595
5758
  if (this.scrollXLoad || this.scrollYLoad) {
5596
5759
  return new Promise(function (resolve) {
5597
5760
  return setTimeout(function () {
5598
- return resolve(_this45.$nextTick());
5761
+ return resolve(_this47.$nextTick());
5599
5762
  }, 50);
5600
5763
  });
5601
5764
  }
@@ -5646,7 +5809,7 @@ var Methods = {
5646
5809
  * @param {Row} row 行对象
5647
5810
  */
5648
5811
  scrollToTreeRow: function scrollToTreeRow(row) {
5649
- var _this46 = this;
5812
+ var _this48 = this;
5650
5813
 
5651
5814
  var tableFullData = this.tableFullData,
5652
5815
  treeConfig = this.treeConfig,
@@ -5661,15 +5824,15 @@ var Methods = {
5661
5824
  if (matchObj) {
5662
5825
  var nodes = matchObj.nodes;
5663
5826
  nodes.forEach(function (row, index) {
5664
- if (index < nodes.length - 1 && !_this46.isTreeExpandByRow(row)) {
5665
- rests.push(_this46.setTreeExpand(row, true));
5827
+ if (index < nodes.length - 1 && !_this48.isTreeExpandByRow(row)) {
5828
+ rests.push(_this48.setTreeExpand(row, true));
5666
5829
  }
5667
5830
  });
5668
5831
  }
5669
5832
  }
5670
5833
 
5671
5834
  return Promise.all(rests).then(function () {
5672
- return _tools.DomTools.rowToVisible(_this46, row);
5835
+ return _tools.DomTools.rowToVisible(_this48, row);
5673
5836
  });
5674
5837
  },
5675
5838
 
@@ -5733,29 +5896,29 @@ var Methods = {
5733
5896
  * 如果单元格配置了校验规则,则会进行校验
5734
5897
  */
5735
5898
  updateStatus: function updateStatus(scope, cellValue) {
5736
- var _this47 = this;
5899
+ var _this49 = this;
5737
5900
 
5738
5901
  var customVal = !_xeUtils.default.isUndefined(cellValue);
5739
5902
  return this.$nextTick().then(function () {
5740
- var $refs = _this47.$refs,
5741
- editRules = _this47.editRules,
5742
- validStore = _this47.validStore;
5903
+ var $refs = _this49.$refs,
5904
+ editRules = _this49.editRules,
5905
+ validStore = _this49.validStore;
5743
5906
 
5744
5907
  if (scope && $refs.tableBody && editRules) {
5745
5908
  var row = scope.row,
5746
5909
  column = scope.column;
5747
5910
  var type = 'change';
5748
5911
 
5749
- if (_this47.hasCellRules(type, row, column)) {
5750
- var cell = _this47.getCell(row, column);
5912
+ if (_this49.hasCellRules(type, row, column)) {
5913
+ var cell = _this49.getCell(row, column);
5751
5914
 
5752
5915
  if (cell) {
5753
- return _this47.validCellRules(type, row, column, cellValue).then(function () {
5916
+ return _this49.validCellRules(type, row, column, cellValue).then(function () {
5754
5917
  if (customVal && validStore.visible) {
5755
5918
  setCellValue(row, column, cellValue);
5756
5919
  }
5757
5920
 
5758
- _this47.clearValidate();
5921
+ _this49.clearValidate();
5759
5922
  }).catch(function (_ref7) {
5760
5923
  var rule = _ref7.rule;
5761
5924
 
@@ -5763,7 +5926,7 @@ var Methods = {
5763
5926
  setCellValue(row, column, cellValue);
5764
5927
  }
5765
5928
 
5766
- _this47.showValidTooltip({
5929
+ _this49.showValidTooltip({
5767
5930
  rule: rule,
5768
5931
  row: row,
5769
5932
  column: column,
@@ -5784,7 +5947,7 @@ var Methods = {
5784
5947
  * @param {TableMergeConfig[]} merges { row: Row|number, column: ColumnInfo|number, rowspan: number, colspan: number }
5785
5948
  */
5786
5949
  setMergeCells: function setMergeCells(merges) {
5787
- var _this48 = this;
5950
+ var _this50 = this;
5788
5951
 
5789
5952
  if (this.spanMethod) {
5790
5953
  _tools.UtilTools.error('vxe.error.errConflicts', ['merge-cells', 'span-method']);
@@ -5792,7 +5955,7 @@ var Methods = {
5792
5955
 
5793
5956
  setMerges(this, merges, this.mergeList, this.afterFullData);
5794
5957
  return this.$nextTick().then(function () {
5795
- return _this48.updateCellAreas();
5958
+ return _this50.updateCellAreas();
5796
5959
  });
5797
5960
  },
5798
5961
 
@@ -5801,7 +5964,7 @@ var Methods = {
5801
5964
  * @param {TableMergeConfig[]} merges 多个或数组 [{row:Row|number, col:ColumnInfo|number}]
5802
5965
  */
5803
5966
  removeMergeCells: function removeMergeCells(merges) {
5804
- var _this49 = this;
5967
+ var _this51 = this;
5805
5968
 
5806
5969
  if (this.spanMethod) {
5807
5970
  _tools.UtilTools.error('vxe.error.errConflicts', ['merge-cells', 'span-method']);
@@ -5809,7 +5972,7 @@ var Methods = {
5809
5972
 
5810
5973
  var rest = removeMerges(this, merges, this.mergeList, this.afterFullData);
5811
5974
  return this.$nextTick().then(function () {
5812
- _this49.updateCellAreas();
5975
+ _this51.updateCellAreas();
5813
5976
 
5814
5977
  return rest;
5815
5978
  });
@@ -5833,7 +5996,7 @@ var Methods = {
5833
5996
  this.setMergeFooterItems(this.mergeFooterItems);
5834
5997
  },
5835
5998
  setMergeFooterItems: function setMergeFooterItems(merges) {
5836
- var _this50 = this;
5999
+ var _this52 = this;
5837
6000
 
5838
6001
  if (this.footerSpanMethod) {
5839
6002
  _tools.UtilTools.error('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
@@ -5841,11 +6004,11 @@ var Methods = {
5841
6004
 
5842
6005
  setMerges(this, merges, this.mergeFooterList, null);
5843
6006
  return this.$nextTick().then(function () {
5844
- return _this50.updateCellAreas();
6007
+ return _this52.updateCellAreas();
5845
6008
  });
5846
6009
  },
5847
6010
  removeMergeFooterItems: function removeMergeFooterItems(merges) {
5848
- var _this51 = this;
6011
+ var _this53 = this;
5849
6012
 
5850
6013
  if (this.footerSpanMethod) {
5851
6014
  _tools.UtilTools.error('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
@@ -5853,7 +6016,7 @@ var Methods = {
5853
6016
 
5854
6017
  var rest = removeMerges(this, merges, this.mergeFooterList, null);
5855
6018
  return this.$nextTick().then(function () {
5856
- _this51.updateCellAreas();
6019
+ _this53.updateCellAreas();
5857
6020
 
5858
6021
  return rest;
5859
6022
  });
@@ -5996,6 +6159,16 @@ var Methods = {
5996
6159
  var funcs = 'setFilter,clearFilter,getCheckedFilters,closeMenu,setActiveCellArea,getActiveCellArea,getCellAreas,clearCellAreas,copyCellArea,cutCellArea,pasteCellArea,getCopyCellArea,clearCopyCellArea,setCellAreas,openFind,openReplace,getSelectedCell,clearSelected,insert,insertAt,remove,removeCheckboxRow,removeRadioRow,removeCurrentRow,getRecordset,getInsertRecords,getRemoveRecords,getUpdateRecords,clearActived,getActiveRecord,isActiveByRow,setActiveRow,setActiveCell,setSelectCell,clearValidate,fullValidate,validate,openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',');
5997
6160
  funcs.forEach(function (name) {
5998
6161
  Methods[name] = function () {
6162
+ if (process.env.NODE_ENV === 'development') {
6163
+ if (!this["_".concat(name)]) {
6164
+ if ('openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').includes(name)) {
6165
+ _tools.UtilTools.error('vxe.error.reqModule', ['Export']);
6166
+ } else if ('clearValidate,fullValidate,validate'.split(',').includes(name)) {
6167
+ _tools.UtilTools.error('vxe.error.reqModule', ['Validator']);
6168
+ }
6169
+ }
6170
+ }
6171
+
5999
6172
  return this["_".concat(name)] ? this["_".concat(name)].apply(this, arguments) : null;
6000
6173
  };
6001
6174
  });