vxe-table 4.0.30 → 4.1.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/README.md +1 -0
- package/README.zh-TW.md +1 -0
- package/es/button/style.css +2 -2
- package/es/checkbox/style.css +1 -1
- package/es/edit/src/hook.js +2 -2
- package/es/export/src/hook.js +24 -0
- package/es/export/src/util.js +20 -8
- package/es/export/style.css +1 -1
- package/es/filter/src/hook.js +2 -2
- package/es/filter/style.css +2 -2
- package/es/footer/src/footer.js +4 -4
- package/es/form/src/form.js +13 -6
- package/es/form/src/render.js +4 -4
- package/es/grid/src/grid.js +48 -1
- package/es/header/src/header.js +7 -5
- package/es/header/style.css +3 -10
- package/es/input/style.css +4 -4
- package/es/menu/style.css +1 -1
- package/es/modal/style.css +1 -1
- package/es/pager/style.css +2 -2
- package/es/radio/style.css +1 -1
- package/es/select/src/select.js +5 -5
- package/es/select/style.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/src/body.js +18 -14
- package/es/table/src/emits.js +1 -0
- package/es/table/src/props.js +4 -1
- package/es/table/src/table.js +219 -89
- package/es/table/style.css +15 -12
- package/es/toolbar/style.css +1 -1
- package/es/v-x-e-table/src/conf.js +2 -1
- package/es/v-x-e-table/src/renderer.js +4 -4
- package/es/validator/src/hook.js +12 -5
- package/helper/vetur/attributes.json +16 -204
- package/helper/vetur/tags.json +3 -65
- package/lib/button/style/style.css +2 -2
- package/lib/button/style/style.min.css +1 -1
- package/lib/checkbox/style/style.css +1 -1
- package/lib/checkbox/style/style.min.css +1 -1
- package/lib/edit/src/hook.js +2 -2
- package/lib/edit/src/hook.min.js +1 -1
- package/lib/export/src/hook.js +28 -0
- package/lib/export/src/hook.min.js +1 -1
- package/lib/export/src/util.js +21 -7
- package/lib/export/src/util.min.js +1 -1
- package/lib/export/style/style.css +1 -1
- package/lib/export/style/style.min.css +1 -1
- package/lib/filter/src/hook.js +8 -2
- package/lib/filter/src/hook.min.js +1 -1
- package/lib/filter/style/style.css +2 -2
- package/lib/filter/style/style.min.css +1 -1
- package/lib/footer/src/footer.js +4 -4
- package/lib/footer/src/footer.min.js +1 -1
- package/lib/form/src/form.js +23 -6
- package/lib/form/src/form.min.js +1 -1
- package/lib/form/src/render.js +4 -4
- package/lib/form/src/render.min.js +1 -1
- package/lib/grid/src/grid.js +56 -1
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/header/src/header.js +7 -5
- package/lib/header/src/header.min.js +1 -1
- package/lib/header/style/style.css +3 -10
- package/lib/header/style/style.min.css +1 -1
- package/lib/index.umd.js +561 -186
- package/lib/index.umd.min.js +1 -1
- package/lib/input/style/style.css +4 -4
- package/lib/input/style/style.min.css +1 -1
- package/lib/menu/style/style.css +1 -1
- package/lib/menu/style/style.min.css +1 -1
- package/lib/modal/style/style.css +1 -1
- package/lib/modal/style/style.min.css +1 -1
- package/lib/pager/style/style.css +2 -2
- package/lib/pager/style/style.min.css +1 -1
- package/lib/radio/style/style.css +1 -1
- package/lib/radio/style/style.min.css +1 -1
- package/lib/select/src/select.js +5 -5
- package/lib/select/style/style.css +1 -1
- package/lib/select/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/src/body.js +18 -14
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/emits.js +1 -1
- package/lib/table/src/emits.min.js +1 -1
- package/lib/table/src/props.js +4 -1
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +288 -120
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +15 -12
- package/lib/table/style/style.min.css +1 -1
- package/lib/toolbar/style/style.css +1 -1
- package/lib/toolbar/style/style.min.css +1 -1
- package/lib/v-x-e-table/src/conf.js +2 -1
- package/lib/v-x-e-table/src/conf.min.js +1 -1
- package/lib/v-x-e-table/src/renderer.js +4 -4
- package/lib/v-x-e-table/src/renderer.min.js +1 -1
- package/lib/validator/src/hook.js +12 -5
- package/lib/validator/src/hook.min.js +1 -1
- package/package.json +4 -4
- package/packages/edit/src/hook.ts +2 -2
- package/packages/export/src/hook.ts +24 -0
- package/packages/export/src/util.ts +17 -5
- package/packages/filter/src/hook.ts +2 -2
- package/packages/footer/src/footer.ts +4 -4
- package/packages/form/src/form.ts +10 -6
- package/packages/form/src/render.ts +4 -4
- package/packages/grid/src/grid.ts +48 -1
- package/packages/header/src/header.ts +7 -5
- package/packages/select/src/select.ts +5 -5
- package/packages/table/src/body.ts +18 -14
- package/packages/table/src/emits.ts +1 -0
- package/packages/table/src/props.ts +4 -1
- package/packages/table/src/table.ts +222 -88
- package/packages/v-x-e-table/src/conf.ts +2 -1
- package/packages/v-x-e-table/src/renderer.ts +4 -4
- package/packages/validator/src/hook.ts +9 -5
- package/styles/header.scss +9 -12
- package/styles/table.scss +9 -3
- package/styles/variable.scss +2 -2
- package/types/column.d.ts +5 -1
- package/types/form-item.d.ts +5 -1
- package/types/form.d.ts +5 -1
- package/types/grid.d.ts +4 -0
- package/types/modal.d.ts +4 -5
- package/types/table.d.ts +53 -11
- package/types/validator.d.ts +5 -1
package/lib/table/src/table.js
CHANGED
|
@@ -301,6 +301,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
301
301
|
treeExpandedReserveRowMap: {},
|
|
302
302
|
// 完整数据、条件处理后
|
|
303
303
|
tableFullData: [],
|
|
304
|
+
treeFullData: [],
|
|
304
305
|
afterFullData: [],
|
|
305
306
|
tableSynchData: [],
|
|
306
307
|
tableSourceData: [],
|
|
@@ -362,7 +363,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
362
363
|
};
|
|
363
364
|
});
|
|
364
365
|
var computeColumnOpts = (0, _vue.computed)(function () {
|
|
365
|
-
return Object.assign({}, props.columnConfig);
|
|
366
|
+
return Object.assign({}, _conf.default.table.columnConfig, props.columnConfig);
|
|
367
|
+
});
|
|
368
|
+
var computeRowOpts = (0, _vue.computed)(function () {
|
|
369
|
+
return Object.assign({}, _conf.default.table.rowConfig, props.rowConfig);
|
|
366
370
|
});
|
|
367
371
|
var computeResizableOpts = (0, _vue.computed)(function () {
|
|
368
372
|
return Object.assign({}, _conf.default.table.resizableConfig, props.resizableConfig);
|
|
@@ -559,6 +563,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
559
563
|
computeValidOpts: computeValidOpts,
|
|
560
564
|
computeSXOpts: computeSXOpts,
|
|
561
565
|
computeSYOpts: computeSYOpts,
|
|
566
|
+
computeColumnOpts: computeColumnOpts,
|
|
567
|
+
computeRowOpts: computeRowOpts,
|
|
562
568
|
computeResizableOpts: computeResizableOpts,
|
|
563
569
|
computeSeqOpts: computeSeqOpts,
|
|
564
570
|
computeRadioOpts: computeRadioOpts,
|
|
@@ -1312,7 +1318,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
1312
1318
|
$index: -1,
|
|
1313
1319
|
_index: _index,
|
|
1314
1320
|
items: [],
|
|
1315
|
-
parent: null
|
|
1321
|
+
parent: null,
|
|
1322
|
+
level: 0
|
|
1316
1323
|
};
|
|
1317
1324
|
}
|
|
1318
1325
|
});
|
|
@@ -1624,7 +1631,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
1624
1631
|
var tWidth = tableWidth; // 如果是使用优化模式
|
|
1625
1632
|
|
|
1626
1633
|
if (fixedType) {
|
|
1627
|
-
if (
|
|
1634
|
+
if (scrollYLoad || (allColumnOverflow ? isAllOverflow : allColumnOverflow)) {
|
|
1628
1635
|
if (!mergeList.length && !spanMethod && !(keyboardConfig && keyboardOpts.isMerge)) {
|
|
1629
1636
|
tableColumn = fixedColumn;
|
|
1630
1637
|
} else {
|
|
@@ -1725,16 +1732,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
1725
1732
|
var showTitle = cellOverflow === 'title';
|
|
1726
1733
|
var showTooltip = cellOverflow === true || cellOverflow === 'tooltip';
|
|
1727
1734
|
var hasEllipsis_1 = showTitle || showTooltip || showEllipsis;
|
|
1728
|
-
var listElem = elemStore[name + "-" + layout + "-list"]; //
|
|
1735
|
+
var listElem = elemStore[name + "-" + layout + "-list"]; // 纵向虚拟滚动不支持动态行高
|
|
1729
1736
|
|
|
1730
|
-
if (
|
|
1731
|
-
|
|
1732
|
-
hasEllipsis_1 = true;
|
|
1733
|
-
}
|
|
1734
|
-
} else {
|
|
1735
|
-
if ((scrollXLoad || scrollYLoad) && !hasEllipsis_1) {
|
|
1736
|
-
hasEllipsis_1 = true;
|
|
1737
|
-
}
|
|
1737
|
+
if (scrollYLoad && !hasEllipsis_1) {
|
|
1738
|
+
hasEllipsis_1 = true;
|
|
1738
1739
|
}
|
|
1739
1740
|
|
|
1740
1741
|
if (listElem) {
|
|
@@ -2060,7 +2061,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2060
2061
|
}
|
|
2061
2062
|
|
|
2062
2063
|
if (childRecords) {
|
|
2063
|
-
tableMethods.
|
|
2064
|
+
tableMethods.loadTreeChildren(row, childRecords).then(function (childRows) {
|
|
2064
2065
|
if (childRows.length && $xetable.findRowIndexOf(treeExpandeds, row) === -1) {
|
|
2065
2066
|
treeExpandeds.push(row);
|
|
2066
2067
|
} // 如果当前节点已选中,则展开后子节点也被选中
|
|
@@ -2221,30 +2222,67 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2221
2222
|
scrollXStore = internalData.scrollXStore,
|
|
2222
2223
|
lastScrollLeft = internalData.lastScrollLeft,
|
|
2223
2224
|
lastScrollTop = internalData.lastScrollTop;
|
|
2224
|
-
var
|
|
2225
|
-
var
|
|
2226
|
-
var
|
|
2225
|
+
var treeOpts = computeTreeOpts.value;
|
|
2226
|
+
var transform = treeOpts.transform;
|
|
2227
|
+
var treeData = [];
|
|
2228
|
+
var fullData = datas ? datas.slice(0) : [];
|
|
2229
|
+
|
|
2230
|
+
if (treeConfig) {
|
|
2231
|
+
if (transform) {
|
|
2232
|
+
// 树结构自动转换
|
|
2233
|
+
if (process.env.NODE_ENV === 'development') {
|
|
2234
|
+
if (!treeOpts.rowtKey) {
|
|
2235
|
+
(0, _utils.errLog)('vxe.error.reqProp', ['tree-config.rowtKey']);
|
|
2236
|
+
}
|
|
2237
|
+
|
|
2238
|
+
if (!treeOpts.parentKey) {
|
|
2239
|
+
(0, _utils.errLog)('vxe.error.reqProp', ['tree-config.parentKey']);
|
|
2240
|
+
}
|
|
2241
|
+
|
|
2242
|
+
if (!treeOpts.children) {
|
|
2243
|
+
(0, _utils.errLog)('vxe.error.reqProp', ['tree-config.children']);
|
|
2244
|
+
}
|
|
2245
|
+
|
|
2246
|
+
fullData.forEach(function (row) {
|
|
2247
|
+
if (row[treeOpts.children] && row[treeOpts.children].length) {
|
|
2248
|
+
(0, _utils.warnLog)('vxe.error.errConflicts', ['tree-config.transform', "row." + treeOpts.children]);
|
|
2249
|
+
}
|
|
2250
|
+
});
|
|
2251
|
+
}
|
|
2252
|
+
|
|
2253
|
+
treeData = _xeUtils.default.toArrayTree(fullData, {
|
|
2254
|
+
key: treeOpts.rowtKey,
|
|
2255
|
+
parentKey: treeOpts.parentKey,
|
|
2256
|
+
children: treeOpts.children
|
|
2257
|
+
});
|
|
2258
|
+
fullData = treeData.slice(0);
|
|
2259
|
+
} else {
|
|
2260
|
+
treeData = fullData.slice(0);
|
|
2261
|
+
}
|
|
2262
|
+
}
|
|
2263
|
+
|
|
2227
2264
|
scrollYStore.startIndex = 0;
|
|
2228
2265
|
scrollYStore.endIndex = 1;
|
|
2229
2266
|
scrollXStore.startIndex = 0;
|
|
2230
2267
|
scrollXStore.endIndex = 1;
|
|
2231
2268
|
editStore.insertList = [];
|
|
2232
|
-
editStore.removeList = [];
|
|
2269
|
+
editStore.removeList = [];
|
|
2270
|
+
var sYLoad = updateScrollYStatus(fullData);
|
|
2271
|
+
reactData.scrollYLoad = sYLoad; // 全量数据
|
|
2233
2272
|
|
|
2234
|
-
internalData.tableFullData =
|
|
2273
|
+
internalData.tableFullData = fullData;
|
|
2274
|
+
internalData.treeFullData = treeData; // 缓存数据
|
|
2235
2275
|
|
|
2236
|
-
tablePrivateMethods.
|
|
2276
|
+
tablePrivateMethods.cacheRowMap(true); // 原始数据
|
|
2237
2277
|
|
|
2238
|
-
internalData.tableSynchData = datas;
|
|
2278
|
+
internalData.tableSynchData = datas; // 克隆原数据,用于显示编辑状态,与编辑值做对比
|
|
2239
2279
|
|
|
2240
2280
|
if (keepSource) {
|
|
2241
|
-
internalData.tableSourceData = _xeUtils.default.clone(
|
|
2281
|
+
internalData.tableSourceData = _xeUtils.default.clone(fullData, true);
|
|
2242
2282
|
}
|
|
2243
2283
|
|
|
2244
|
-
reactData.scrollYLoad = scrollYLoad;
|
|
2245
|
-
|
|
2246
2284
|
if (process.env.NODE_ENV === 'development') {
|
|
2247
|
-
if (
|
|
2285
|
+
if (sYLoad) {
|
|
2248
2286
|
if (!(props.height || props.maxHeight)) {
|
|
2249
2287
|
(0, _utils.errLog)('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
|
|
2250
2288
|
}
|
|
@@ -2274,8 +2312,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2274
2312
|
}).then(function () {
|
|
2275
2313
|
computeScrollLoad();
|
|
2276
2314
|
}).then(function () {
|
|
2277
|
-
//
|
|
2278
|
-
if (
|
|
2315
|
+
// 是否启用了虚拟滚动
|
|
2316
|
+
if (sYLoad) {
|
|
2279
2317
|
scrollYStore.endIndex = scrollYStore.visibleSize;
|
|
2280
2318
|
}
|
|
2281
2319
|
|
|
@@ -2286,7 +2324,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2286
2324
|
return tableMethods.recalculate();
|
|
2287
2325
|
}).then(function () {
|
|
2288
2326
|
// 是否变更虚拟滚动
|
|
2289
|
-
if (oldScrollYLoad ===
|
|
2327
|
+
if (oldScrollYLoad === sYLoad) {
|
|
2290
2328
|
(0, _util.restoreScrollLocation)($xetable, lastScrollLeft, lastScrollTop).then(resolve);
|
|
2291
2329
|
} else {
|
|
2292
2330
|
setTimeout(function () {
|
|
@@ -2555,6 +2593,136 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2555
2593
|
return tableMethods.recalculate();
|
|
2556
2594
|
});
|
|
2557
2595
|
};
|
|
2596
|
+
|
|
2597
|
+
var updateScrollYStatus = function updateScrollYStatus(fullData) {
|
|
2598
|
+
var treeConfig = props.treeConfig;
|
|
2599
|
+
var sYOpts = computeSYOpts.value;
|
|
2600
|
+
var treeOpts = computeTreeOpts.value;
|
|
2601
|
+
var transform = treeOpts.transform;
|
|
2602
|
+
var scrollYLoad = (transform || !treeConfig) && !!sYOpts.enabled && sYOpts.gt > -1 && sYOpts.gt < fullData.length;
|
|
2603
|
+
reactData.scrollYLoad = scrollYLoad;
|
|
2604
|
+
return scrollYLoad;
|
|
2605
|
+
};
|
|
2606
|
+
|
|
2607
|
+
var updateVirtualTreeData = function updateVirtualTreeData() {
|
|
2608
|
+
var oldScrollYLoad = reactData.scrollYLoad,
|
|
2609
|
+
treeExpandeds = reactData.treeExpandeds;
|
|
2610
|
+
var treeFullData = internalData.treeFullData;
|
|
2611
|
+
var treeOpts = computeTreeOpts.value;
|
|
2612
|
+
var fullData = [];
|
|
2613
|
+
|
|
2614
|
+
_xeUtils.default.eachTree(treeFullData, function (row, index, items, path, parent) {
|
|
2615
|
+
if (!parent || $xetable.findRowIndexOf(treeExpandeds, parent) > -1) {
|
|
2616
|
+
fullData.push(row);
|
|
2617
|
+
}
|
|
2618
|
+
}, treeOpts);
|
|
2619
|
+
|
|
2620
|
+
var scrollYLoad = updateScrollYStatus(fullData);
|
|
2621
|
+
internalData.tableFullData = scrollYLoad ? fullData : treeFullData;
|
|
2622
|
+
|
|
2623
|
+
if (scrollYLoad || oldScrollYLoad !== scrollYLoad) {
|
|
2624
|
+
return tablePrivateMethods.handleTableData(true).then(function () {
|
|
2625
|
+
return tableMethods.recalculate();
|
|
2626
|
+
});
|
|
2627
|
+
}
|
|
2628
|
+
|
|
2629
|
+
return (0, _vue.nextTick)();
|
|
2630
|
+
};
|
|
2631
|
+
/**
|
|
2632
|
+
* 展开与收起树节点
|
|
2633
|
+
* @param rows
|
|
2634
|
+
* @param expanded
|
|
2635
|
+
* @returns
|
|
2636
|
+
*/
|
|
2637
|
+
|
|
2638
|
+
|
|
2639
|
+
var handleBaseTreeExpand = function handleBaseTreeExpand(rows, expanded) {
|
|
2640
|
+
var treeExpandeds = reactData.treeExpandeds,
|
|
2641
|
+
treeLazyLoadeds = reactData.treeLazyLoadeds,
|
|
2642
|
+
treeNodeColumn = reactData.treeNodeColumn;
|
|
2643
|
+
var fullAllDataRowIdData = internalData.fullAllDataRowIdData,
|
|
2644
|
+
tableFullData = internalData.tableFullData;
|
|
2645
|
+
var treeOpts = computeTreeOpts.value;
|
|
2646
|
+
var reserve = treeOpts.reserve,
|
|
2647
|
+
lazy = treeOpts.lazy,
|
|
2648
|
+
hasChild = treeOpts.hasChild,
|
|
2649
|
+
children = treeOpts.children,
|
|
2650
|
+
accordion = treeOpts.accordion,
|
|
2651
|
+
toggleMethod = treeOpts.toggleMethod;
|
|
2652
|
+
var result = [];
|
|
2653
|
+
var columnIndex = tableMethods.getColumnIndex(treeNodeColumn);
|
|
2654
|
+
var $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn);
|
|
2655
|
+
var validRows = toggleMethod ? rows.filter(function (row) {
|
|
2656
|
+
return toggleMethod({
|
|
2657
|
+
$table: $xetable,
|
|
2658
|
+
expanded: expanded,
|
|
2659
|
+
column: treeNodeColumn,
|
|
2660
|
+
columnIndex: columnIndex,
|
|
2661
|
+
$columnIndex: $columnIndex,
|
|
2662
|
+
row: row
|
|
2663
|
+
});
|
|
2664
|
+
}) : rows;
|
|
2665
|
+
|
|
2666
|
+
if (accordion) {
|
|
2667
|
+
validRows = validRows.length ? [validRows[validRows.length - 1]] : []; // 同一级只能展开一个
|
|
2668
|
+
|
|
2669
|
+
var matchObj_1 = _xeUtils.default.findTree(tableFullData, function (item) {
|
|
2670
|
+
return item === validRows[0];
|
|
2671
|
+
}, treeOpts);
|
|
2672
|
+
|
|
2673
|
+
if (matchObj_1) {
|
|
2674
|
+
_xeUtils.default.remove(treeExpandeds, function (item) {
|
|
2675
|
+
return matchObj_1.items.indexOf(item) > -1;
|
|
2676
|
+
});
|
|
2677
|
+
}
|
|
2678
|
+
}
|
|
2679
|
+
|
|
2680
|
+
if (expanded) {
|
|
2681
|
+
validRows.forEach(function (row) {
|
|
2682
|
+
if ($xetable.findRowIndexOf(treeExpandeds, row) === -1) {
|
|
2683
|
+
var rest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, row)];
|
|
2684
|
+
var isLoad = lazy && row[hasChild] && !rest.treeLoaded && $xetable.findRowIndexOf(treeLazyLoadeds, row) === -1; // 是否使用懒加载
|
|
2685
|
+
|
|
2686
|
+
if (isLoad) {
|
|
2687
|
+
result.push(handleAsyncTreeExpandChilds(row));
|
|
2688
|
+
} else {
|
|
2689
|
+
if (row[children] && row[children].length) {
|
|
2690
|
+
treeExpandeds.push(row);
|
|
2691
|
+
}
|
|
2692
|
+
}
|
|
2693
|
+
}
|
|
2694
|
+
});
|
|
2695
|
+
} else {
|
|
2696
|
+
_xeUtils.default.remove(treeExpandeds, function (row) {
|
|
2697
|
+
return $xetable.findRowIndexOf(validRows, row) > -1;
|
|
2698
|
+
});
|
|
2699
|
+
}
|
|
2700
|
+
|
|
2701
|
+
if (reserve) {
|
|
2702
|
+
validRows.forEach(function (row) {
|
|
2703
|
+
return handleTreeExpandReserve(row, expanded);
|
|
2704
|
+
});
|
|
2705
|
+
}
|
|
2706
|
+
|
|
2707
|
+
return Promise.all(result).then(function () {
|
|
2708
|
+
return tableMethods.recalculate();
|
|
2709
|
+
});
|
|
2710
|
+
};
|
|
2711
|
+
/**
|
|
2712
|
+
* 虚拟树的展开与收起
|
|
2713
|
+
* @param rows
|
|
2714
|
+
* @param expanded
|
|
2715
|
+
* @returns
|
|
2716
|
+
*/
|
|
2717
|
+
|
|
2718
|
+
|
|
2719
|
+
var handleVirtualTreeExpand = function handleVirtualTreeExpand(rows, expanded) {
|
|
2720
|
+
return handleBaseTreeExpand(rows, expanded).then(function () {
|
|
2721
|
+
return updateVirtualTreeData();
|
|
2722
|
+
}).then(function () {
|
|
2723
|
+
return tableMethods.recalculate();
|
|
2724
|
+
});
|
|
2725
|
+
};
|
|
2558
2726
|
/**
|
|
2559
2727
|
* 纵向 Y 可视渲染处理
|
|
2560
2728
|
*/
|
|
@@ -2704,7 +2872,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2704
2872
|
_xeUtils.default.clear(row, undefined);
|
|
2705
2873
|
|
|
2706
2874
|
Object.assign(row, tablePrivateMethods.defineField(Object.assign({}, record)));
|
|
2707
|
-
tablePrivateMethods.
|
|
2875
|
+
tablePrivateMethods.cacheRowMap(true);
|
|
2708
2876
|
} else {
|
|
2709
2877
|
_xeUtils.default.destructuring(oRow, _xeUtils.default.clone(row, true));
|
|
2710
2878
|
}
|
|
@@ -2724,15 +2892,16 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2724
2892
|
/**
|
|
2725
2893
|
* 用于树结构,给行数据加载子节点
|
|
2726
2894
|
*/
|
|
2727
|
-
|
|
2895
|
+
loadTreeChildren: function loadTreeChildren(row, childRecords) {
|
|
2896
|
+
var keepSource = props.keepSource;
|
|
2897
|
+
var tableSourceData = internalData.tableSourceData,
|
|
2898
|
+
fullDataRowIdData = internalData.fullDataRowIdData,
|
|
2899
|
+
fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
2900
|
+
var treeOpts = computeTreeOpts.value;
|
|
2901
|
+
var children = treeOpts.children;
|
|
2902
|
+
var rest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, row)];
|
|
2903
|
+
var parentLevel = rest ? rest.level : 0;
|
|
2728
2904
|
return tableMethods.createData(childRecords).then(function (rows) {
|
|
2729
|
-
var keepSource = props.keepSource;
|
|
2730
|
-
var fullDataRowIdData = internalData.fullDataRowIdData,
|
|
2731
|
-
fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
2732
|
-
var tableSourceData = internalData.tableSourceData;
|
|
2733
|
-
var treeOpts = computeTreeOpts.value;
|
|
2734
|
-
var children = treeOpts.children;
|
|
2735
|
-
|
|
2736
2905
|
if (keepSource) {
|
|
2737
2906
|
var rowid_1 = (0, _util.getRowid)($xetable, row);
|
|
2738
2907
|
|
|
@@ -2745,7 +2914,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2745
2914
|
}
|
|
2746
2915
|
}
|
|
2747
2916
|
|
|
2748
|
-
_xeUtils.default.eachTree(rows, function (childRow, index, items, path, parent) {
|
|
2917
|
+
_xeUtils.default.eachTree(rows, function (childRow, index, items, path, parent, nodes) {
|
|
2749
2918
|
var rowid = (0, _util.getRowid)($xetable, childRow);
|
|
2750
2919
|
var rest = {
|
|
2751
2920
|
row: childRow,
|
|
@@ -2754,7 +2923,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
2754
2923
|
_index: -1,
|
|
2755
2924
|
$index: -1,
|
|
2756
2925
|
items: items,
|
|
2757
|
-
parent: parent
|
|
2926
|
+
parent: parent,
|
|
2927
|
+
level: parentLevel + nodes.length
|
|
2758
2928
|
};
|
|
2759
2929
|
fullDataRowIdData[rowid] = rest;
|
|
2760
2930
|
fullAllDataRowIdData[rowid] = rest;
|
|
@@ -4035,12 +4205,24 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4035
4205
|
*/
|
|
4036
4206
|
closeFilter: function closeFilter() {
|
|
4037
4207
|
var filterStore = reactData.filterStore;
|
|
4208
|
+
var column = filterStore.column,
|
|
4209
|
+
visible = filterStore.visible;
|
|
4038
4210
|
Object.assign(filterStore, {
|
|
4039
4211
|
isAllSelected: false,
|
|
4040
4212
|
isIndeterminate: false,
|
|
4041
4213
|
options: [],
|
|
4042
4214
|
visible: false
|
|
4043
4215
|
});
|
|
4216
|
+
|
|
4217
|
+
if (visible) {
|
|
4218
|
+
$xetable.dispatchEvent('filter-visible', {
|
|
4219
|
+
column: column,
|
|
4220
|
+
property: column.property,
|
|
4221
|
+
filterList: $xetable.getCheckedFilters(),
|
|
4222
|
+
visible: false
|
|
4223
|
+
}, null);
|
|
4224
|
+
}
|
|
4225
|
+
|
|
4044
4226
|
return (0, _vue.nextTick)();
|
|
4045
4227
|
},
|
|
4046
4228
|
|
|
@@ -4088,10 +4270,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4088
4270
|
},
|
|
4089
4271
|
|
|
4090
4272
|
/**
|
|
4091
|
-
*
|
|
4273
|
+
* 重新懒加载展开行,并展开内容
|
|
4092
4274
|
* @param {Row} row 行对象
|
|
4093
4275
|
*/
|
|
4094
|
-
|
|
4276
|
+
lazyExpandContent: function lazyExpandContent(row) {
|
|
4095
4277
|
var expandLazyLoadeds = reactData.expandLazyLoadeds;
|
|
4096
4278
|
var expandOpts = computeExpandOpts.value;
|
|
4097
4279
|
var lazy = expandOpts.lazy;
|
|
@@ -4105,6 +4287,18 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4105
4287
|
return (0, _vue.nextTick)();
|
|
4106
4288
|
},
|
|
4107
4289
|
|
|
4290
|
+
/**
|
|
4291
|
+
* @deprecated 已废弃,请使用 lazyExpandContent
|
|
4292
|
+
*/
|
|
4293
|
+
reloadExpandContent: function reloadExpandContent(row) {
|
|
4294
|
+
if (process.env.NODE_ENV === 'development') {
|
|
4295
|
+
(0, _utils.warnLog)('vxe.error.delFunc', ['reloadExpandContent', 'lazyExpandContent']);
|
|
4296
|
+
} // 即将废弃
|
|
4297
|
+
|
|
4298
|
+
|
|
4299
|
+
return tableMethods.lazyExpandContent(row);
|
|
4300
|
+
},
|
|
4301
|
+
|
|
4108
4302
|
/**
|
|
4109
4303
|
* 切换展开行
|
|
4110
4304
|
*/
|
|
@@ -4269,23 +4463,38 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4269
4463
|
},
|
|
4270
4464
|
|
|
4271
4465
|
/**
|
|
4272
|
-
*
|
|
4466
|
+
* 重新懒加载树节点,并展开该节点
|
|
4273
4467
|
* @param {Row} row 行对象
|
|
4274
4468
|
*/
|
|
4275
|
-
|
|
4469
|
+
lazyTreeChildren: function lazyTreeChildren(row) {
|
|
4276
4470
|
var treeLazyLoadeds = reactData.treeLazyLoadeds;
|
|
4277
4471
|
var treeOpts = computeTreeOpts.value;
|
|
4278
|
-
var
|
|
4472
|
+
var transform = treeOpts.transform,
|
|
4473
|
+
lazy = treeOpts.lazy,
|
|
4279
4474
|
hasChild = treeOpts.hasChild;
|
|
4280
4475
|
|
|
4281
4476
|
if (lazy && row[hasChild] && $xetable.findRowIndexOf(treeLazyLoadeds, row) === -1) {
|
|
4282
4477
|
tableMethods.clearTreeExpandLoaded(row).then(function () {
|
|
4283
4478
|
return handleAsyncTreeExpandChilds(row);
|
|
4479
|
+
}).then(function () {
|
|
4480
|
+
if (transform) {
|
|
4481
|
+
return updateVirtualTreeData();
|
|
4482
|
+
}
|
|
4483
|
+
}).then(function () {
|
|
4484
|
+
return tableMethods.recalculate();
|
|
4284
4485
|
});
|
|
4285
4486
|
}
|
|
4286
4487
|
|
|
4287
4488
|
return (0, _vue.nextTick)();
|
|
4288
4489
|
},
|
|
4490
|
+
reloadTreeChilds: function reloadTreeChilds(row) {
|
|
4491
|
+
if (process.env.NODE_ENV === 'development') {
|
|
4492
|
+
(0, _utils.warnLog)('vxe.error.delFunc', ['reloadTreeChilds', 'lazyTreeChildren']);
|
|
4493
|
+
} // 即将废弃
|
|
4494
|
+
|
|
4495
|
+
|
|
4496
|
+
return tableMethods.lazyTreeChildren(row);
|
|
4497
|
+
},
|
|
4289
4498
|
|
|
4290
4499
|
/**
|
|
4291
4500
|
* 切换/展开树节点
|
|
@@ -4324,21 +4533,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4324
4533
|
* @param {Boolean} expanded 是否展开
|
|
4325
4534
|
*/
|
|
4326
4535
|
setTreeExpand: function setTreeExpand(rows, expanded) {
|
|
4327
|
-
var treeExpandeds = reactData.treeExpandeds,
|
|
4328
|
-
treeLazyLoadeds = reactData.treeLazyLoadeds,
|
|
4329
|
-
treeNodeColumn = reactData.treeNodeColumn;
|
|
4330
|
-
var fullAllDataRowIdData = internalData.fullAllDataRowIdData,
|
|
4331
|
-
tableFullData = internalData.tableFullData;
|
|
4332
4536
|
var treeOpts = computeTreeOpts.value;
|
|
4333
|
-
var
|
|
4334
|
-
lazy = treeOpts.lazy,
|
|
4335
|
-
hasChild = treeOpts.hasChild,
|
|
4336
|
-
children = treeOpts.children,
|
|
4337
|
-
accordion = treeOpts.accordion,
|
|
4338
|
-
toggleMethod = treeOpts.toggleMethod;
|
|
4339
|
-
var result = [];
|
|
4340
|
-
var columnIndex = tableMethods.getColumnIndex(treeNodeColumn);
|
|
4341
|
-
var $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn);
|
|
4537
|
+
var transform = treeOpts.transform;
|
|
4342
4538
|
|
|
4343
4539
|
if (rows) {
|
|
4344
4540
|
if (!_xeUtils.default.isArray(rows)) {
|
|
@@ -4346,61 +4542,12 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4346
4542
|
}
|
|
4347
4543
|
|
|
4348
4544
|
if (rows.length) {
|
|
4349
|
-
|
|
4350
|
-
|
|
4351
|
-
|
|
4352
|
-
expanded: expanded,
|
|
4353
|
-
column: treeNodeColumn,
|
|
4354
|
-
columnIndex: columnIndex,
|
|
4355
|
-
$columnIndex: $columnIndex,
|
|
4356
|
-
row: row
|
|
4357
|
-
});
|
|
4358
|
-
}) : rows;
|
|
4359
|
-
|
|
4360
|
-
if (accordion) {
|
|
4361
|
-
validRows_2 = validRows_2.length ? [validRows_2[validRows_2.length - 1]] : []; // 同一级只能展开一个
|
|
4362
|
-
|
|
4363
|
-
var matchObj_1 = _xeUtils.default.findTree(tableFullData, function (item) {
|
|
4364
|
-
return item === validRows_2[0];
|
|
4365
|
-
}, treeOpts);
|
|
4366
|
-
|
|
4367
|
-
if (matchObj_1) {
|
|
4368
|
-
_xeUtils.default.remove(treeExpandeds, function (item) {
|
|
4369
|
-
return matchObj_1.items.indexOf(item) > -1;
|
|
4370
|
-
});
|
|
4371
|
-
}
|
|
4372
|
-
}
|
|
4373
|
-
|
|
4374
|
-
if (expanded) {
|
|
4375
|
-
validRows_2.forEach(function (row) {
|
|
4376
|
-
if ($xetable.findRowIndexOf(treeExpandeds, row) === -1) {
|
|
4377
|
-
var rest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, row)];
|
|
4378
|
-
var isLoad = lazy && row[hasChild] && !rest.treeLoaded && $xetable.findRowIndexOf(treeLazyLoadeds, row) === -1; // 是否使用懒加载
|
|
4379
|
-
|
|
4380
|
-
if (isLoad) {
|
|
4381
|
-
result.push(handleAsyncTreeExpandChilds(row));
|
|
4382
|
-
} else {
|
|
4383
|
-
if (row[children] && row[children].length) {
|
|
4384
|
-
treeExpandeds.push(row);
|
|
4385
|
-
}
|
|
4386
|
-
}
|
|
4387
|
-
}
|
|
4388
|
-
});
|
|
4545
|
+
// 如果为虚拟树
|
|
4546
|
+
if (transform) {
|
|
4547
|
+
return handleVirtualTreeExpand(rows, expanded);
|
|
4389
4548
|
} else {
|
|
4390
|
-
|
|
4391
|
-
return $xetable.findRowIndexOf(validRows_2, row) > -1;
|
|
4392
|
-
});
|
|
4393
|
-
}
|
|
4394
|
-
|
|
4395
|
-
if (reserve) {
|
|
4396
|
-
validRows_2.forEach(function (row) {
|
|
4397
|
-
return handleTreeExpandReserve(row, expanded);
|
|
4398
|
-
});
|
|
4549
|
+
return handleBaseTreeExpand(rows, expanded);
|
|
4399
4550
|
}
|
|
4400
|
-
|
|
4401
|
-
return Promise.all(result).then(function () {
|
|
4402
|
-
return tableMethods.recalculate();
|
|
4403
|
-
});
|
|
4404
4551
|
}
|
|
4405
4552
|
}
|
|
4406
4553
|
|
|
@@ -4421,19 +4568,19 @@ var _default = (0, _vue.defineComponent)({
|
|
|
4421
4568
|
*/
|
|
4422
4569
|
clearTreeExpand: function clearTreeExpand() {
|
|
4423
4570
|
var treeExpandeds = reactData.treeExpandeds;
|
|
4424
|
-
var
|
|
4571
|
+
var treeFullData = internalData.treeFullData;
|
|
4425
4572
|
var treeOpts = computeTreeOpts.value;
|
|
4426
4573
|
var reserve = treeOpts.reserve;
|
|
4427
4574
|
var isExists = treeExpandeds.length;
|
|
4428
4575
|
reactData.treeExpandeds = [];
|
|
4429
4576
|
|
|
4430
4577
|
if (reserve) {
|
|
4431
|
-
_xeUtils.default.eachTree(
|
|
4578
|
+
_xeUtils.default.eachTree(treeFullData, function (row) {
|
|
4432
4579
|
return handleTreeExpandReserve(row, false);
|
|
4433
4580
|
}, treeOpts);
|
|
4434
4581
|
}
|
|
4435
4582
|
|
|
4436
|
-
return (
|
|
4583
|
+
return updateVirtualTreeData().then(function () {
|
|
4437
4584
|
if (isExists) {
|
|
4438
4585
|
tableMethods.recalculate();
|
|
4439
4586
|
}
|
|
@@ -5420,16 +5567,17 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5420
5567
|
* 更新数据行的 Map
|
|
5421
5568
|
* 牺牲数据组装的耗时,用来换取使用过程中的流畅
|
|
5422
5569
|
*/
|
|
5423
|
-
|
|
5570
|
+
cacheRowMap: function cacheRowMap(isSource) {
|
|
5424
5571
|
var treeConfig = props.treeConfig;
|
|
5425
5572
|
var treeOpts = computeTreeOpts.value;
|
|
5426
5573
|
var fullDataRowIdData = internalData.fullDataRowIdData,
|
|
5427
5574
|
fullAllDataRowIdData = internalData.fullAllDataRowIdData,
|
|
5428
|
-
tableFullData = internalData.tableFullData
|
|
5575
|
+
tableFullData = internalData.tableFullData,
|
|
5576
|
+
treeFullData = internalData.treeFullData;
|
|
5429
5577
|
var rowkey = (0, _util.getRowkey)($xetable);
|
|
5430
5578
|
var isLazy = treeConfig && treeOpts.lazy;
|
|
5431
5579
|
|
|
5432
|
-
var handleCache = function handleCache(row, index, items, path, parent) {
|
|
5580
|
+
var handleCache = function handleCache(row, index, items, path, parent, nodes) {
|
|
5433
5581
|
var rowid = (0, _util.getRowid)($xetable, row);
|
|
5434
5582
|
|
|
5435
5583
|
if ((0, _utils.eqEmptyValue)(rowid)) {
|
|
@@ -5449,7 +5597,8 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5449
5597
|
_index: -1,
|
|
5450
5598
|
$index: -1,
|
|
5451
5599
|
items: items,
|
|
5452
|
-
parent: parent
|
|
5600
|
+
parent: parent,
|
|
5601
|
+
level: nodes ? nodes.length - 1 : 0
|
|
5453
5602
|
};
|
|
5454
5603
|
|
|
5455
5604
|
if (isSource) {
|
|
@@ -5466,7 +5615,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5466
5615
|
fullAllDataRowIdData = internalData.fullAllDataRowIdData = {};
|
|
5467
5616
|
|
|
5468
5617
|
if (treeConfig) {
|
|
5469
|
-
_xeUtils.default.eachTree(
|
|
5618
|
+
_xeUtils.default.eachTree(treeFullData, handleCache, treeOpts);
|
|
5470
5619
|
} else {
|
|
5471
5620
|
tableFullData.forEach(handleCache);
|
|
5472
5621
|
}
|
|
@@ -5868,10 +6017,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
5868
6017
|
var column = params.column;
|
|
5869
6018
|
var titleHelp = column.titleHelp;
|
|
5870
6019
|
|
|
5871
|
-
if (titleHelp.message) {
|
|
6020
|
+
if (titleHelp.content || titleHelp.message) {
|
|
5872
6021
|
var tooltipStore = internalData.tooltipStore;
|
|
5873
6022
|
var $tooltip = refTooltip.value;
|
|
5874
|
-
var content = (0, _utils.getFuncText)(titleHelp.message);
|
|
6023
|
+
var content = (0, _utils.getFuncText)(titleHelp.content || titleHelp.message);
|
|
5875
6024
|
handleTargetEnterEvent();
|
|
5876
6025
|
tooltipStore.visible = true;
|
|
5877
6026
|
|
|
@@ -6616,6 +6765,20 @@ var _default = (0, _vue.defineComponent)({
|
|
|
6616
6765
|
return false;
|
|
6617
6766
|
}
|
|
6618
6767
|
};
|
|
6768
|
+
|
|
6769
|
+
if (process.env.NODE_ENV === 'development') {
|
|
6770
|
+
'openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').forEach(function (name) {
|
|
6771
|
+
$xetable[name] = function () {
|
|
6772
|
+
(0, _utils.errLog)('vxe.error.reqModule', ['Export']);
|
|
6773
|
+
};
|
|
6774
|
+
});
|
|
6775
|
+
'clearValidate,fullValidate,validate'.split(',').forEach(function (name) {
|
|
6776
|
+
$xetable[name] = function () {
|
|
6777
|
+
(0, _utils.errLog)('vxe.error.reqModule', ['Validator']);
|
|
6778
|
+
};
|
|
6779
|
+
});
|
|
6780
|
+
}
|
|
6781
|
+
|
|
6619
6782
|
Object.assign($xetable, tableMethods, tablePrivateMethods);
|
|
6620
6783
|
/**
|
|
6621
6784
|
* 渲染浮固定列
|
|
@@ -6879,6 +7042,7 @@ var _default = (0, _vue.defineComponent)({
|
|
|
6879
7042
|
if (process.env.NODE_ENV === 'development') {
|
|
6880
7043
|
var customOpts = computeCustomOpts.value;
|
|
6881
7044
|
var mouseOpts = computeMouseOpts.value;
|
|
7045
|
+
var rowOpts = computeRowOpts.value;
|
|
6882
7046
|
|
|
6883
7047
|
if (!props.id && props.customConfig && (customOpts.storage === true || customOpts.storage && customOpts.storage.resizable || customOpts.storage && customOpts.storage.visible)) {
|
|
6884
7048
|
(0, _utils.errLog)('vxe.error.reqProp', ['id']);
|
|
@@ -6888,6 +7052,10 @@ var _default = (0, _vue.defineComponent)({
|
|
|
6888
7052
|
(0, _utils.errLog)('vxe.error.noTree', ['checkbox-config.range']);
|
|
6889
7053
|
}
|
|
6890
7054
|
|
|
7055
|
+
if (rowOpts.height && !props.showOverflow) {
|
|
7056
|
+
(0, _utils.warnLog)('vxe.error.notProp', ['table.show-overflow']);
|
|
7057
|
+
}
|
|
7058
|
+
|
|
6891
7059
|
if (!$xetable.handleUpdateCellAreas) {
|
|
6892
7060
|
if (props.clipConfig) {
|
|
6893
7061
|
(0, _utils.warnLog)('vxe.error.notProp', ['clip-config']);
|