vxe-pc-ui 4.15.3 → 4.15.4
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/dist/all.esm.js +105 -59
- package/es/cascader/src/cascader.js +72 -30
- package/es/tree-select/src/tree-select.js +14 -18
- package/es/ui/index.js +4 -1
- package/es/ui/src/log.js +10 -6
- package/lib/cascader/src/cascader.js +80 -33
- package/lib/cascader/src/cascader.min.js +1 -1
- package/lib/index.umd.js +102 -46
- package/lib/index.umd.min.js +1 -1
- package/lib/tree-select/src/tree-select.js +7 -7
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/ui/index.js +4 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +11 -5
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +1 -1
- package/packages/cascader/src/cascader.ts +71 -31
- package/packages/tree-select/src/tree-select.ts +14 -18
- package/packages/ui/index.ts +3 -0
- package/packages/ui/src/log.ts +11 -6
- package/types/components/cascader.d.ts +4 -0
- /package/es/icon/{iconfont.1781852740683.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/es/icon/{iconfont.1781852740683.woff → iconfont.1781876596706.woff} +0 -0
- /package/es/icon/{iconfont.1781852740683.woff2 → iconfont.1781876596706.woff2} +0 -0
- /package/es/{iconfont.1781852740683.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/es/{iconfont.1781852740683.woff → iconfont.1781876596706.woff} +0 -0
- /package/es/{iconfont.1781852740683.woff2 → iconfont.1781876596706.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1781852740683.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1781852740683.woff → iconfont.1781876596706.woff} +0 -0
- /package/lib/icon/style/{iconfont.1781852740683.woff2 → iconfont.1781876596706.woff2} +0 -0
- /package/lib/{iconfont.1781852740683.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/lib/{iconfont.1781852740683.woff → iconfont.1781876596706.woff} +0 -0
- /package/lib/{iconfont.1781852740683.woff2 → iconfont.1781876596706.woff2} +0 -0
package/dist/all.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as core from '@vxe-ui/core';
|
|
2
|
-
import { VxeUI,
|
|
2
|
+
import { VxeUI, setConfig as setConfig$1, setIcon, getConfig as getConfig$3, createEvent, getIcon as getIcon$2, renderEmptyElement, useSize, usePermission, permission, globalEvents, renderer, getI18n as getI18n$2, globalResize, GLOBAL_EVENT_KEYS, getSlotVNs as getSlotVNs$1, commands, formats, getComponent, validators } from '@vxe-ui/core';
|
|
3
3
|
export * from '@vxe-ui/core';
|
|
4
4
|
import { defineComponent, reactive, h, createCommentVNode, createApp, ref, inject, computed, watch, onMounted, onUnmounted, provide, nextTick, onBeforeUnmount, resolveComponent, Teleport, onActivated, onDeactivated, TransitionGroup } from 'vue';
|
|
5
5
|
import XEUtils from 'xe-utils';
|
|
@@ -80,17 +80,21 @@ function checkDynamic() {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
const
|
|
83
|
+
const { log } = VxeUI;
|
|
84
|
+
const uiVersion = `ui v${"4.15.4"}`;
|
|
84
85
|
function createComponentLog(name) {
|
|
86
|
+
const tableVersion = VxeUI.tableVersion ? `table v${VxeUI.tableVersion}` : '';
|
|
87
|
+
const ganttVersion = VxeUI.ganttVersion ? `gantt v${VxeUI.ganttVersion}` : '';
|
|
88
|
+
const designVersion = VxeUI.designVersion ? `design v${VxeUI.designVersion}` : '';
|
|
85
89
|
return {
|
|
86
|
-
warnLog: log.create('warn',
|
|
87
|
-
errLog: log.create('error',
|
|
90
|
+
warnLog: log.create('warn', uiVersion + tableVersion + ganttVersion + designVersion + '] [' + name),
|
|
91
|
+
errLog: log.create('error', uiVersion + tableVersion + ganttVersion + designVersion + '] [' + name)
|
|
88
92
|
};
|
|
89
93
|
}
|
|
90
|
-
const warnLog$b = log.create('warn',
|
|
91
|
-
log.create('error',
|
|
94
|
+
const warnLog$b = log.create('warn', uiVersion);
|
|
95
|
+
log.create('error', uiVersion);
|
|
92
96
|
|
|
93
|
-
const version = "4.15.
|
|
97
|
+
const version = "4.15.4";
|
|
94
98
|
VxeUI.uiVersion = version;
|
|
95
99
|
VxeUI.dynamicApp = dynamicApp;
|
|
96
100
|
function config(options) {
|
|
@@ -153,6 +157,9 @@ setConfig$1({
|
|
|
153
157
|
showFullLabel: true,
|
|
154
158
|
treeConfig: {
|
|
155
159
|
showIcon: true
|
|
160
|
+
},
|
|
161
|
+
filterConfig: {
|
|
162
|
+
autoExpandMode: 'first'
|
|
156
163
|
}
|
|
157
164
|
},
|
|
158
165
|
checkbox: {},
|
|
@@ -3793,7 +3800,7 @@ dynamicApp.use(VxeButton);
|
|
|
3793
3800
|
VxeUI.component(VxeButtonComponent);
|
|
3794
3801
|
const Button = VxeButton;
|
|
3795
3802
|
|
|
3796
|
-
const { errLog: errLog$
|
|
3803
|
+
const { errLog: errLog$g } = createComponentLog('backtop');
|
|
3797
3804
|
function createInternalData$e() {
|
|
3798
3805
|
return {
|
|
3799
3806
|
targetEl: null
|
|
@@ -3971,13 +3978,13 @@ var VxeBacktopComponent = defineVxeComponent({
|
|
|
3971
3978
|
const { target } = props;
|
|
3972
3979
|
if (!target) {
|
|
3973
3980
|
removeScrollEvent();
|
|
3974
|
-
errLog$
|
|
3981
|
+
errLog$g('vxe.error.reqProp', ['target']);
|
|
3975
3982
|
return;
|
|
3976
3983
|
}
|
|
3977
3984
|
if (XEUtils.isString(target)) {
|
|
3978
3985
|
const tEl = document.querySelector(target);
|
|
3979
3986
|
if (!tEl) {
|
|
3980
|
-
errLog$
|
|
3987
|
+
errLog$g('vxe.error.errProp', [`target=${target}`, 'body']);
|
|
3981
3988
|
}
|
|
3982
3989
|
const { targetEl } = internalData;
|
|
3983
3990
|
if (targetEl !== tEl) {
|
|
@@ -4662,7 +4669,7 @@ function isAllSameChar(str, char) {
|
|
|
4662
4669
|
return true;
|
|
4663
4670
|
}
|
|
4664
4671
|
|
|
4665
|
-
const { errLog: errLog$
|
|
4672
|
+
const { errLog: errLog$f } = createComponentLog('calendar');
|
|
4666
4673
|
const { menus: menus$2, getConfig: getConfig$2, getI18n: getI18n$1 } = VxeUI;
|
|
4667
4674
|
var VxeCalendarComponent = defineVxeComponent({
|
|
4668
4675
|
name: 'VxeCalendar',
|
|
@@ -5930,7 +5937,7 @@ var VxeCalendarComponent = defineVxeComponent({
|
|
|
5930
5937
|
const { menuConfig } = props;
|
|
5931
5938
|
const VxeUIContextMenu = VxeUI.getComponent('VxeContextMenu');
|
|
5932
5939
|
if (menuConfig && !VxeUIContextMenu) {
|
|
5933
|
-
errLog$
|
|
5940
|
+
errLog$f('vxe.error.reqComp', ['vxe-context-menu']);
|
|
5934
5941
|
}
|
|
5935
5942
|
dateOpenPanel();
|
|
5936
5943
|
});
|
|
@@ -9807,7 +9814,6 @@ var VxeInputComponent = defineVxeComponent({
|
|
|
9807
9814
|
}
|
|
9808
9815
|
});
|
|
9809
9816
|
|
|
9810
|
-
const { errLog: errLog$f } = createComponentLog('cascader');
|
|
9811
9817
|
/**
|
|
9812
9818
|
* 生成节点的唯一主键
|
|
9813
9819
|
*/
|
|
@@ -10378,7 +10384,6 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
10378
10384
|
return internalData.afterVisibleList;
|
|
10379
10385
|
};
|
|
10380
10386
|
const handleData = (force) => {
|
|
10381
|
-
const { nodeMaps } = internalData;
|
|
10382
10387
|
let fullList = internalData.afterVisibleList;
|
|
10383
10388
|
if (force) {
|
|
10384
10389
|
// 更新数据,处理筛选和排序
|
|
@@ -10387,16 +10392,56 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
10387
10392
|
fullList = handleTreeToList();
|
|
10388
10393
|
}
|
|
10389
10394
|
const treeList = fullList.slice(0);
|
|
10390
|
-
treeList.forEach((item, $index) => {
|
|
10391
|
-
const nodeid = getNodeId(item);
|
|
10392
|
-
const itemRest = nodeMaps[nodeid];
|
|
10393
|
-
if (itemRest) {
|
|
10394
|
-
itemRest.$index = $index;
|
|
10395
|
-
}
|
|
10396
|
-
});
|
|
10397
10395
|
reactData.treeList = treeList;
|
|
10398
10396
|
};
|
|
10399
|
-
|
|
10397
|
+
/**
|
|
10398
|
+
* 获取第一个拥有子节点的节点
|
|
10399
|
+
*/
|
|
10400
|
+
function handleHasChildNodeIds(treeList, type) {
|
|
10401
|
+
const childrenField = computeChildrenField.value;
|
|
10402
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
10403
|
+
const treeOpts = computeTreeOpts.value;
|
|
10404
|
+
const { transform } = treeOpts;
|
|
10405
|
+
const childField = transform ? mapChildrenField : childrenField;
|
|
10406
|
+
const nodeIds = [];
|
|
10407
|
+
let currList = treeList;
|
|
10408
|
+
while (currList.length) {
|
|
10409
|
+
let targetNode = null;
|
|
10410
|
+
for (const item of currList) {
|
|
10411
|
+
const kids = item[childField];
|
|
10412
|
+
if (XEUtils.isArray(kids) && kids.length > 0) {
|
|
10413
|
+
targetNode = item;
|
|
10414
|
+
break;
|
|
10415
|
+
}
|
|
10416
|
+
}
|
|
10417
|
+
if (targetNode) {
|
|
10418
|
+
nodeIds.push(getNodeId(targetNode));
|
|
10419
|
+
currList = targetNode[childField];
|
|
10420
|
+
}
|
|
10421
|
+
else {
|
|
10422
|
+
const endNode = XEUtils[type](currList);
|
|
10423
|
+
nodeIds.push(getNodeId(endNode));
|
|
10424
|
+
break;
|
|
10425
|
+
}
|
|
10426
|
+
}
|
|
10427
|
+
return nodeIds;
|
|
10428
|
+
}
|
|
10429
|
+
const triggerSearchEvent = XEUtils.debounce(() => {
|
|
10430
|
+
handleData(true);
|
|
10431
|
+
updateModelChecked();
|
|
10432
|
+
const filterOpts = computeFilterOpts.value;
|
|
10433
|
+
const { autoExpandMode } = filterOpts;
|
|
10434
|
+
const { afterTreeList } = internalData;
|
|
10435
|
+
// 默认展开第
|
|
10436
|
+
if (autoExpandMode === 'first' || autoExpandMode === 'last') {
|
|
10437
|
+
const stItems = handleHasChildNodeIds(afterTreeList, autoExpandMode);
|
|
10438
|
+
reactData.currentItems = stItems;
|
|
10439
|
+
}
|
|
10440
|
+
else {
|
|
10441
|
+
handleCurrentItems();
|
|
10442
|
+
}
|
|
10443
|
+
updateCurrentChunk();
|
|
10444
|
+
}, 350, { trailing: true });
|
|
10400
10445
|
const loadData = (list) => {
|
|
10401
10446
|
const treeOpts = computeTreeOpts.value;
|
|
10402
10447
|
const keyField = computeKeyField.value;
|
|
@@ -10423,17 +10468,20 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
10423
10468
|
};
|
|
10424
10469
|
const updateCurrentChunk = () => {
|
|
10425
10470
|
const { currentItems } = reactData;
|
|
10426
|
-
const {
|
|
10471
|
+
const { afterTreeList } = internalData;
|
|
10427
10472
|
const childrenField = computeChildrenField.value;
|
|
10428
|
-
const
|
|
10473
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
10474
|
+
const treeOpts = computeTreeOpts.value;
|
|
10475
|
+
const { transform } = treeOpts;
|
|
10476
|
+
const currentCunkList = [afterTreeList];
|
|
10429
10477
|
if (currentItems.length) {
|
|
10430
10478
|
let chunkIndex = 0;
|
|
10431
10479
|
let stNodeid = currentItems[chunkIndex];
|
|
10432
|
-
let optList =
|
|
10480
|
+
let optList = afterTreeList;
|
|
10433
10481
|
while (stNodeid && optList && optList.length) {
|
|
10434
10482
|
stNodeid = currentItems[chunkIndex++];
|
|
10435
10483
|
const currOption = optList.find(item => stNodeid === getNodeId(item));
|
|
10436
|
-
optList = currOption ? currOption[childrenField] : [];
|
|
10484
|
+
optList = currOption ? currOption[transform ? mapChildrenField : childrenField] : [];
|
|
10437
10485
|
if (!optList || !optList.length) {
|
|
10438
10486
|
break;
|
|
10439
10487
|
}
|
|
@@ -10443,7 +10491,7 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
10443
10491
|
reactData.currentCunkList = currentCunkList;
|
|
10444
10492
|
};
|
|
10445
10493
|
const handleCurrentItems = () => {
|
|
10446
|
-
const {
|
|
10494
|
+
const { afterTreeList } = internalData;
|
|
10447
10495
|
const selectVals = computeSelectVals.value;
|
|
10448
10496
|
const childrenField = computeChildrenField.value;
|
|
10449
10497
|
const mapChildrenField = computeMapChildrenField.value;
|
|
@@ -10453,7 +10501,7 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
10453
10501
|
const expandedMaps = {};
|
|
10454
10502
|
if (selectVals.length) {
|
|
10455
10503
|
const lastVal = enNodeValue$1(XEUtils.last(selectVals));
|
|
10456
|
-
const stRest = XEUtils.findTree(
|
|
10504
|
+
const stRest = XEUtils.findTree(afterTreeList, (item) => lastVal === getNodeId(item), { children: transform ? mapChildrenField : childrenField });
|
|
10457
10505
|
if (stRest) {
|
|
10458
10506
|
const { nodes } = stRest;
|
|
10459
10507
|
nodes.forEach(item => {
|
|
@@ -10559,10 +10607,11 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
10559
10607
|
return { checkNodeKeys: checkKeys, checkNodes };
|
|
10560
10608
|
});
|
|
10561
10609
|
};
|
|
10562
|
-
const
|
|
10610
|
+
const clearSelectedNode = () => {
|
|
10563
10611
|
internalData.indeterminateRowMaps = {};
|
|
10564
10612
|
internalData.selectCheckboxMaps = {};
|
|
10565
10613
|
reactData.updateCheckboxFlag++;
|
|
10614
|
+
reactData.selectRadioKey = null;
|
|
10566
10615
|
updateCheckboxStatus();
|
|
10567
10616
|
return nextTick().then(() => {
|
|
10568
10617
|
return { checkNodeKeys: [], checkNodes: [] };
|
|
@@ -10604,7 +10653,7 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
10604
10653
|
const { $event } = params;
|
|
10605
10654
|
const { multiple, checkedClosable } = props;
|
|
10606
10655
|
const value = multiple ? [] : null;
|
|
10607
|
-
|
|
10656
|
+
clearSelectedNode().then(() => {
|
|
10608
10657
|
if (checkedClosable) {
|
|
10609
10658
|
hideOptionPanel($event);
|
|
10610
10659
|
}
|
|
@@ -10686,9 +10735,12 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
10686
10735
|
const { nodeMaps } = internalData;
|
|
10687
10736
|
const radioOpts = computeRadioOpts.value;
|
|
10688
10737
|
const childrenField = computeChildrenField.value;
|
|
10738
|
+
const treeOpts = computeTreeOpts.value;
|
|
10739
|
+
const { transform } = treeOpts;
|
|
10740
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
10689
10741
|
const { checkMode, checkMethod } = radioOpts;
|
|
10690
10742
|
const nodeid = getNodeId(node);
|
|
10691
|
-
const childList = node[childrenField];
|
|
10743
|
+
const childList = node[transform ? mapChildrenField : childrenField];
|
|
10692
10744
|
const isExistChild = childList && childList.length > 0;
|
|
10693
10745
|
const nodeItem = nodeMaps[nodeid] || {};
|
|
10694
10746
|
const nLevel = nodeItem.level;
|
|
@@ -10837,7 +10889,7 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
10837
10889
|
const childRowList = [];
|
|
10838
10890
|
XEUtils.eachTree(afterTreeList, (node) => {
|
|
10839
10891
|
const nodeid = getNodeId(node);
|
|
10840
|
-
const childList = node[childrenField];
|
|
10892
|
+
const childList = node[transform ? mapChildrenField : childrenField];
|
|
10841
10893
|
if (childList && childList.length && !childRowMaps[nodeid]) {
|
|
10842
10894
|
childRowMaps[nodeid] = 1;
|
|
10843
10895
|
childRowList.unshift([node, nodeid, childList]);
|
|
@@ -10941,7 +10993,7 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
10941
10993
|
const treeOpts = computeTreeOpts.value;
|
|
10942
10994
|
const { transform } = treeOpts;
|
|
10943
10995
|
const nodeid = getNodeId(node);
|
|
10944
|
-
const childList = node[childrenField];
|
|
10996
|
+
const childList = node[transform ? mapChildrenField : childrenField];
|
|
10945
10997
|
const isExistChild = childList && childList.length > 0;
|
|
10946
10998
|
const nodeItem = nodeMaps[nodeid] || {};
|
|
10947
10999
|
const nLevel = nodeItem.level;
|
|
@@ -11187,11 +11239,12 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
11187
11239
|
const { currentNode, selectRadioKey, updateCheckboxFlag, updateExpandedFlag } = reactData;
|
|
11188
11240
|
const { nodeMaps, selectCheckboxMaps, indeterminateRowMaps, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData;
|
|
11189
11241
|
const treeOpts = computeTreeOpts.value;
|
|
11190
|
-
const { lazy, iconLoaded, iconOpen, iconClose } = treeOpts;
|
|
11242
|
+
const { lazy, transform, iconLoaded, iconOpen, iconClose } = treeOpts;
|
|
11191
11243
|
const childrenField = computeChildrenField.value;
|
|
11244
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
11192
11245
|
const labelField = computeLabelField.value;
|
|
11193
11246
|
const hasChildField = computeHasChildField.value;
|
|
11194
|
-
const childList = node[childrenField];
|
|
11247
|
+
const childList = node[transform ? mapChildrenField : childrenField];
|
|
11195
11248
|
const isExistChild = childList && childList.length > 0;
|
|
11196
11249
|
const iconSlot = slots.icon;
|
|
11197
11250
|
const titleSlot = slots.title;
|
|
@@ -11373,7 +11426,7 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
11373
11426
|
h('div', {
|
|
11374
11427
|
class: 'vxe-tree-select--header-button'
|
|
11375
11428
|
}, [
|
|
11376
|
-
showCheckedButton && showClearButton
|
|
11429
|
+
(showCheckedButton && multiple) || showClearButton
|
|
11377
11430
|
? h('div', {
|
|
11378
11431
|
class: 'vxe-tree-select--selected-btns'
|
|
11379
11432
|
}, [
|
|
@@ -11424,7 +11477,7 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
11424
11477
|
})
|
|
11425
11478
|
])
|
|
11426
11479
|
]),
|
|
11427
|
-
footerSlot || showTotalButton ||
|
|
11480
|
+
footerSlot || showTotalButton || showCloseButton
|
|
11428
11481
|
? h('div', {
|
|
11429
11482
|
class: 'vxe-cascader--panel-footer'
|
|
11430
11483
|
}, footerSlot
|
|
@@ -11438,7 +11491,7 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
11438
11491
|
class: 'vxe-cascader--total-btns'
|
|
11439
11492
|
}, getI18n$2('vxe.treeSelect.total', [selectVals.length]))
|
|
11440
11493
|
: renderEmptyElement($xeCascader),
|
|
11441
|
-
showCloseButton
|
|
11494
|
+
showCloseButton
|
|
11442
11495
|
? h('div', {
|
|
11443
11496
|
class: 'vxe-cascader--oper-btns'
|
|
11444
11497
|
}, [
|
|
@@ -11480,9 +11533,6 @@ var VxeCascaderComponent = defineVxeComponent({
|
|
|
11480
11533
|
});
|
|
11481
11534
|
loadData(props.options || []);
|
|
11482
11535
|
onMounted(() => {
|
|
11483
|
-
if (props.filterable) {
|
|
11484
|
-
errLog$f('vxe.error.notProp', ['filterable']);
|
|
11485
|
-
}
|
|
11486
11536
|
globalEvents.on($xeCascader, 'mousewheel', handleGlobalMousewheelEvent);
|
|
11487
11537
|
globalEvents.on($xeCascader, 'mousedown', handleGlobalMousedownEvent);
|
|
11488
11538
|
globalEvents.on($xeCascader, 'blur', handleGlobalBlurEvent);
|
|
@@ -41291,7 +41341,7 @@ var VxeTreeSelectComponent = defineVxeComponent({
|
|
|
41291
41341
|
h('div', {
|
|
41292
41342
|
class: 'vxe-tree-select--header-button'
|
|
41293
41343
|
}, [
|
|
41294
|
-
showCheckedButton && showClearButton
|
|
41344
|
+
(showCheckedButton && multiple) || showClearButton
|
|
41295
41345
|
? h('div', {
|
|
41296
41346
|
class: 'vxe-tree-select--selected-btns'
|
|
41297
41347
|
}, [
|
|
@@ -41311,24 +41361,20 @@ var VxeTreeSelectComponent = defineVxeComponent({
|
|
|
41311
41361
|
: renderEmptyElement($xeTreeSelect)
|
|
41312
41362
|
])
|
|
41313
41363
|
: renderEmptyElement($xeTreeSelect),
|
|
41314
|
-
showExpandButton
|
|
41364
|
+
showExpandButton
|
|
41315
41365
|
? h('div', {
|
|
41316
41366
|
class: 'vxe-tree-select--expand-btns'
|
|
41317
41367
|
}, [
|
|
41318
|
-
|
|
41319
|
-
|
|
41320
|
-
|
|
41321
|
-
|
|
41322
|
-
|
|
41323
|
-
|
|
41324
|
-
:
|
|
41325
|
-
|
|
41326
|
-
|
|
41327
|
-
|
|
41328
|
-
mode: 'text',
|
|
41329
|
-
onClick: clearExpandPanelEvent
|
|
41330
|
-
})
|
|
41331
|
-
: renderEmptyElement($xeTreeSelect)
|
|
41368
|
+
h(VxeButton, {
|
|
41369
|
+
content: getI18n$2('vxe.treeSelect.allExpand'),
|
|
41370
|
+
mode: 'text',
|
|
41371
|
+
onClick: allExpandPanelEvent
|
|
41372
|
+
}),
|
|
41373
|
+
h(VxeButton, {
|
|
41374
|
+
content: getI18n$2('vxe.treeSelect.clearExpand'),
|
|
41375
|
+
mode: 'text',
|
|
41376
|
+
onClick: clearExpandPanelEvent
|
|
41377
|
+
})
|
|
41332
41378
|
])
|
|
41333
41379
|
: renderEmptyElement($xeTreeSelect)
|
|
41334
41380
|
])
|
|
@@ -41391,7 +41437,7 @@ var VxeTreeSelectComponent = defineVxeComponent({
|
|
|
41391
41437
|
}, treeScopedSlots)
|
|
41392
41438
|
])
|
|
41393
41439
|
]),
|
|
41394
|
-
footerSlot || showTotalButton ||
|
|
41440
|
+
footerSlot || showTotalButton || showCloseButton
|
|
41395
41441
|
? h('div', {
|
|
41396
41442
|
class: 'vxe-tree-select--panel-footer'
|
|
41397
41443
|
}, footerSlot
|
|
@@ -41405,7 +41451,7 @@ var VxeTreeSelectComponent = defineVxeComponent({
|
|
|
41405
41451
|
class: 'vxe-tree-select--total-btns'
|
|
41406
41452
|
}, getI18n$2('vxe.treeSelect.total', [selectVals.length]))
|
|
41407
41453
|
: renderEmptyElement($xeTreeSelect),
|
|
41408
|
-
showCloseButton
|
|
41454
|
+
showCloseButton
|
|
41409
41455
|
? h('div', {
|
|
41410
41456
|
class: 'vxe-tree-select--oper-btns'
|
|
41411
41457
|
}, [
|
|
@@ -4,12 +4,10 @@ import { getConfig, getI18n, getIcon, globalEvents, createEvent, useSize, render
|
|
|
4
4
|
import { getEventTargetNode, updatePanelPlacement, toCssUnit } from '../../ui/src/dom';
|
|
5
5
|
import { getLastZIndex, nextZIndex } from '../../ui/src/utils';
|
|
6
6
|
import { enNodeValue, deNodeValue } from './util';
|
|
7
|
-
import { createComponentLog } from '../../ui/src/log';
|
|
8
7
|
import XEUtils from 'xe-utils';
|
|
9
8
|
import VxeListComponent from '../../list/src/list';
|
|
10
9
|
import VxeInputComponent from '../../input/src/input';
|
|
11
10
|
import VxeButtonComponent from '../../button/src/button';
|
|
12
|
-
const { errLog } = createComponentLog('cascader');
|
|
13
11
|
/**
|
|
14
12
|
* 生成节点的唯一主键
|
|
15
13
|
*/
|
|
@@ -585,7 +583,6 @@ export default defineVxeComponent({
|
|
|
585
583
|
return internalData.afterVisibleList;
|
|
586
584
|
};
|
|
587
585
|
const handleData = (force) => {
|
|
588
|
-
const { nodeMaps } = internalData;
|
|
589
586
|
let fullList = internalData.afterVisibleList;
|
|
590
587
|
if (force) {
|
|
591
588
|
// 更新数据,处理筛选和排序
|
|
@@ -594,16 +591,56 @@ export default defineVxeComponent({
|
|
|
594
591
|
fullList = handleTreeToList();
|
|
595
592
|
}
|
|
596
593
|
const treeList = fullList.slice(0);
|
|
597
|
-
treeList.forEach((item, $index) => {
|
|
598
|
-
const nodeid = getNodeId(item);
|
|
599
|
-
const itemRest = nodeMaps[nodeid];
|
|
600
|
-
if (itemRest) {
|
|
601
|
-
itemRest.$index = $index;
|
|
602
|
-
}
|
|
603
|
-
});
|
|
604
594
|
reactData.treeList = treeList;
|
|
605
595
|
};
|
|
606
|
-
|
|
596
|
+
/**
|
|
597
|
+
* 获取第一个拥有子节点的节点
|
|
598
|
+
*/
|
|
599
|
+
function handleHasChildNodeIds(treeList, type) {
|
|
600
|
+
const childrenField = computeChildrenField.value;
|
|
601
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
602
|
+
const treeOpts = computeTreeOpts.value;
|
|
603
|
+
const { transform } = treeOpts;
|
|
604
|
+
const childField = transform ? mapChildrenField : childrenField;
|
|
605
|
+
const nodeIds = [];
|
|
606
|
+
let currList = treeList;
|
|
607
|
+
while (currList.length) {
|
|
608
|
+
let targetNode = null;
|
|
609
|
+
for (const item of currList) {
|
|
610
|
+
const kids = item[childField];
|
|
611
|
+
if (XEUtils.isArray(kids) && kids.length > 0) {
|
|
612
|
+
targetNode = item;
|
|
613
|
+
break;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
if (targetNode) {
|
|
617
|
+
nodeIds.push(getNodeId(targetNode));
|
|
618
|
+
currList = targetNode[childField];
|
|
619
|
+
}
|
|
620
|
+
else {
|
|
621
|
+
const endNode = XEUtils[type](currList);
|
|
622
|
+
nodeIds.push(getNodeId(endNode));
|
|
623
|
+
break;
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
return nodeIds;
|
|
627
|
+
}
|
|
628
|
+
const triggerSearchEvent = XEUtils.debounce(() => {
|
|
629
|
+
handleData(true);
|
|
630
|
+
updateModelChecked();
|
|
631
|
+
const filterOpts = computeFilterOpts.value;
|
|
632
|
+
const { autoExpandMode } = filterOpts;
|
|
633
|
+
const { afterTreeList } = internalData;
|
|
634
|
+
// 默认展开第
|
|
635
|
+
if (autoExpandMode === 'first' || autoExpandMode === 'last') {
|
|
636
|
+
const stItems = handleHasChildNodeIds(afterTreeList, autoExpandMode);
|
|
637
|
+
reactData.currentItems = stItems;
|
|
638
|
+
}
|
|
639
|
+
else {
|
|
640
|
+
handleCurrentItems();
|
|
641
|
+
}
|
|
642
|
+
updateCurrentChunk();
|
|
643
|
+
}, 350, { trailing: true });
|
|
607
644
|
const loadData = (list) => {
|
|
608
645
|
const treeOpts = computeTreeOpts.value;
|
|
609
646
|
const keyField = computeKeyField.value;
|
|
@@ -630,17 +667,20 @@ export default defineVxeComponent({
|
|
|
630
667
|
};
|
|
631
668
|
const updateCurrentChunk = () => {
|
|
632
669
|
const { currentItems } = reactData;
|
|
633
|
-
const {
|
|
670
|
+
const { afterTreeList } = internalData;
|
|
634
671
|
const childrenField = computeChildrenField.value;
|
|
635
|
-
const
|
|
672
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
673
|
+
const treeOpts = computeTreeOpts.value;
|
|
674
|
+
const { transform } = treeOpts;
|
|
675
|
+
const currentCunkList = [afterTreeList];
|
|
636
676
|
if (currentItems.length) {
|
|
637
677
|
let chunkIndex = 0;
|
|
638
678
|
let stNodeid = currentItems[chunkIndex];
|
|
639
|
-
let optList =
|
|
679
|
+
let optList = afterTreeList;
|
|
640
680
|
while (stNodeid && optList && optList.length) {
|
|
641
681
|
stNodeid = currentItems[chunkIndex++];
|
|
642
682
|
const currOption = optList.find(item => stNodeid === getNodeId(item));
|
|
643
|
-
optList = currOption ? currOption[childrenField] : [];
|
|
683
|
+
optList = currOption ? currOption[transform ? mapChildrenField : childrenField] : [];
|
|
644
684
|
if (!optList || !optList.length) {
|
|
645
685
|
break;
|
|
646
686
|
}
|
|
@@ -650,7 +690,7 @@ export default defineVxeComponent({
|
|
|
650
690
|
reactData.currentCunkList = currentCunkList;
|
|
651
691
|
};
|
|
652
692
|
const handleCurrentItems = () => {
|
|
653
|
-
const {
|
|
693
|
+
const { afterTreeList } = internalData;
|
|
654
694
|
const selectVals = computeSelectVals.value;
|
|
655
695
|
const childrenField = computeChildrenField.value;
|
|
656
696
|
const mapChildrenField = computeMapChildrenField.value;
|
|
@@ -660,7 +700,7 @@ export default defineVxeComponent({
|
|
|
660
700
|
const expandedMaps = {};
|
|
661
701
|
if (selectVals.length) {
|
|
662
702
|
const lastVal = enNodeValue(XEUtils.last(selectVals));
|
|
663
|
-
const stRest = XEUtils.findTree(
|
|
703
|
+
const stRest = XEUtils.findTree(afterTreeList, (item) => lastVal === getNodeId(item), { children: transform ? mapChildrenField : childrenField });
|
|
664
704
|
if (stRest) {
|
|
665
705
|
const { nodes } = stRest;
|
|
666
706
|
nodes.forEach(item => {
|
|
@@ -766,10 +806,11 @@ export default defineVxeComponent({
|
|
|
766
806
|
return { checkNodeKeys: checkKeys, checkNodes };
|
|
767
807
|
});
|
|
768
808
|
};
|
|
769
|
-
const
|
|
809
|
+
const clearSelectedNode = () => {
|
|
770
810
|
internalData.indeterminateRowMaps = {};
|
|
771
811
|
internalData.selectCheckboxMaps = {};
|
|
772
812
|
reactData.updateCheckboxFlag++;
|
|
813
|
+
reactData.selectRadioKey = null;
|
|
773
814
|
updateCheckboxStatus();
|
|
774
815
|
return nextTick().then(() => {
|
|
775
816
|
return { checkNodeKeys: [], checkNodes: [] };
|
|
@@ -811,7 +852,7 @@ export default defineVxeComponent({
|
|
|
811
852
|
const { $event } = params;
|
|
812
853
|
const { multiple, checkedClosable } = props;
|
|
813
854
|
const value = multiple ? [] : null;
|
|
814
|
-
|
|
855
|
+
clearSelectedNode().then(() => {
|
|
815
856
|
if (checkedClosable) {
|
|
816
857
|
hideOptionPanel($event);
|
|
817
858
|
}
|
|
@@ -893,9 +934,12 @@ export default defineVxeComponent({
|
|
|
893
934
|
const { nodeMaps } = internalData;
|
|
894
935
|
const radioOpts = computeRadioOpts.value;
|
|
895
936
|
const childrenField = computeChildrenField.value;
|
|
937
|
+
const treeOpts = computeTreeOpts.value;
|
|
938
|
+
const { transform } = treeOpts;
|
|
939
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
896
940
|
const { checkMode, checkMethod } = radioOpts;
|
|
897
941
|
const nodeid = getNodeId(node);
|
|
898
|
-
const childList = node[childrenField];
|
|
942
|
+
const childList = node[transform ? mapChildrenField : childrenField];
|
|
899
943
|
const isExistChild = childList && childList.length > 0;
|
|
900
944
|
const nodeItem = nodeMaps[nodeid] || {};
|
|
901
945
|
const nLevel = nodeItem.level;
|
|
@@ -1055,7 +1099,7 @@ export default defineVxeComponent({
|
|
|
1055
1099
|
const childRowList = [];
|
|
1056
1100
|
XEUtils.eachTree(afterTreeList, (node) => {
|
|
1057
1101
|
const nodeid = getNodeId(node);
|
|
1058
|
-
const childList = node[childrenField];
|
|
1102
|
+
const childList = node[transform ? mapChildrenField : childrenField];
|
|
1059
1103
|
if (childList && childList.length && !childRowMaps[nodeid]) {
|
|
1060
1104
|
childRowMaps[nodeid] = 1;
|
|
1061
1105
|
childRowList.unshift([node, nodeid, childList]);
|
|
@@ -1159,7 +1203,7 @@ export default defineVxeComponent({
|
|
|
1159
1203
|
const treeOpts = computeTreeOpts.value;
|
|
1160
1204
|
const { transform } = treeOpts;
|
|
1161
1205
|
const nodeid = getNodeId(node);
|
|
1162
|
-
const childList = node[childrenField];
|
|
1206
|
+
const childList = node[transform ? mapChildrenField : childrenField];
|
|
1163
1207
|
const isExistChild = childList && childList.length > 0;
|
|
1164
1208
|
const nodeItem = nodeMaps[nodeid] || {};
|
|
1165
1209
|
const nLevel = nodeItem.level;
|
|
@@ -1405,11 +1449,12 @@ export default defineVxeComponent({
|
|
|
1405
1449
|
const { currentNode, selectRadioKey, updateCheckboxFlag, updateExpandedFlag } = reactData;
|
|
1406
1450
|
const { nodeMaps, selectCheckboxMaps, indeterminateRowMaps, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData;
|
|
1407
1451
|
const treeOpts = computeTreeOpts.value;
|
|
1408
|
-
const { lazy, iconLoaded, iconOpen, iconClose } = treeOpts;
|
|
1452
|
+
const { lazy, transform, iconLoaded, iconOpen, iconClose } = treeOpts;
|
|
1409
1453
|
const childrenField = computeChildrenField.value;
|
|
1454
|
+
const mapChildrenField = computeMapChildrenField.value;
|
|
1410
1455
|
const labelField = computeLabelField.value;
|
|
1411
1456
|
const hasChildField = computeHasChildField.value;
|
|
1412
|
-
const childList = node[childrenField];
|
|
1457
|
+
const childList = node[transform ? mapChildrenField : childrenField];
|
|
1413
1458
|
const isExistChild = childList && childList.length > 0;
|
|
1414
1459
|
const iconSlot = slots.icon;
|
|
1415
1460
|
const titleSlot = slots.title;
|
|
@@ -1591,7 +1636,7 @@ export default defineVxeComponent({
|
|
|
1591
1636
|
h('div', {
|
|
1592
1637
|
class: 'vxe-tree-select--header-button'
|
|
1593
1638
|
}, [
|
|
1594
|
-
showCheckedButton && showClearButton
|
|
1639
|
+
(showCheckedButton && multiple) || showClearButton
|
|
1595
1640
|
? h('div', {
|
|
1596
1641
|
class: 'vxe-tree-select--selected-btns'
|
|
1597
1642
|
}, [
|
|
@@ -1642,7 +1687,7 @@ export default defineVxeComponent({
|
|
|
1642
1687
|
})
|
|
1643
1688
|
])
|
|
1644
1689
|
]),
|
|
1645
|
-
footerSlot || showTotalButton ||
|
|
1690
|
+
footerSlot || showTotalButton || showCloseButton
|
|
1646
1691
|
? h('div', {
|
|
1647
1692
|
class: 'vxe-cascader--panel-footer'
|
|
1648
1693
|
}, footerSlot
|
|
@@ -1656,7 +1701,7 @@ export default defineVxeComponent({
|
|
|
1656
1701
|
class: 'vxe-cascader--total-btns'
|
|
1657
1702
|
}, getI18n('vxe.treeSelect.total', [selectVals.length]))
|
|
1658
1703
|
: renderEmptyElement($xeCascader),
|
|
1659
|
-
showCloseButton
|
|
1704
|
+
showCloseButton
|
|
1660
1705
|
? h('div', {
|
|
1661
1706
|
class: 'vxe-cascader--oper-btns'
|
|
1662
1707
|
}, [
|
|
@@ -1698,9 +1743,6 @@ export default defineVxeComponent({
|
|
|
1698
1743
|
});
|
|
1699
1744
|
loadData(props.options || []);
|
|
1700
1745
|
onMounted(() => {
|
|
1701
|
-
if (props.filterable) {
|
|
1702
|
-
errLog('vxe.error.notProp', ['filterable']);
|
|
1703
|
-
}
|
|
1704
1746
|
globalEvents.on($xeCascader, 'mousewheel', handleGlobalMousewheelEvent);
|
|
1705
1747
|
globalEvents.on($xeCascader, 'mousedown', handleGlobalMousedownEvent);
|
|
1706
1748
|
globalEvents.on($xeCascader, 'blur', handleGlobalBlurEvent);
|