vxe-pc-ui 4.6.8 → 4.6.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/alert/src/alert.js +5 -5
- package/es/anchor/src/anchor-link.js +3 -2
- package/es/anchor/src/anchor.js +3 -3
- package/es/breadcrumb/src/breadcrumb-item.js +3 -2
- package/es/button/src/button-group.js +3 -3
- package/es/button/src/button.js +7 -8
- package/es/card/src/card.js +7 -7
- package/es/carousel/src/carousel.js +3 -3
- package/es/countdown/src/countdown.js +4 -4
- package/es/form/render/index.js +2 -4
- package/es/form/src/form-group.js +5 -3
- package/es/form/src/form-item.js +6 -4
- package/es/form/src/form.js +97 -37
- package/es/form-design/src/default-setting-form.js +1 -1
- package/es/form-design/src/form-view.js +7 -9
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +4 -4
- package/es/image/src/group.js +3 -1
- package/es/image/src/image.js +3 -1
- package/es/image/src/preview.js +33 -19
- package/es/image/src/util.js +1 -0
- package/es/list-design/src/layout-preview.js +5 -7
- package/es/list-design/src/list-view.js +8 -10
- package/es/loading/src/loading.js +3 -3
- package/es/menu/src/menu.js +9 -9
- package/es/modal/src/modal.js +16 -18
- package/es/pager/src/pager.js +1 -3
- package/es/password-input/src/password-input.js +7 -7
- package/es/print/src/print.js +6 -6
- package/es/pulldown/src/pulldown.js +4 -4
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/switch/src/switch.js +4 -4
- package/es/table-select/src/table-select.js +5 -7
- package/es/tabs/src/tabs.js +11 -15
- package/es/tag/src/tag.js +3 -3
- package/es/tip/src/tip.js +5 -5
- package/es/tree/src/tree.js +245 -180
- package/es/ui/index.js +3 -7
- package/es/ui/src/log.js +1 -1
- package/es/upload/src/upload.js +31 -33
- package/lib/alert/src/alert.js +3 -3
- package/lib/alert/src/alert.min.js +1 -1
- package/lib/anchor/src/anchor-link.js +2 -1
- package/lib/anchor/src/anchor-link.min.js +1 -1
- package/lib/anchor/src/anchor.js +3 -3
- package/lib/anchor/src/anchor.min.js +1 -1
- package/lib/breadcrumb/src/breadcrumb-item.js +2 -1
- package/lib/breadcrumb/src/breadcrumb-item.min.js +1 -1
- package/lib/button/src/button-group.js +6 -6
- package/lib/button/src/button-group.min.js +1 -1
- package/lib/button/src/button.js +4 -6
- package/lib/button/src/button.min.js +1 -1
- package/lib/card/src/card.js +4 -4
- package/lib/card/src/card.min.js +1 -1
- package/lib/carousel/src/carousel.js +1 -1
- package/lib/carousel/src/carousel.min.js +1 -1
- package/lib/countdown/src/countdown.js +2 -2
- package/lib/countdown/src/countdown.min.js +1 -1
- package/lib/form/render/index.js +2 -4
- package/lib/form/render/index.min.js +1 -1
- package/lib/form/src/form-group.js +3 -1
- package/lib/form/src/form-group.min.js +1 -1
- package/lib/form/src/form-item.js +4 -2
- package/lib/form/src/form-item.min.js +1 -1
- package/lib/form/src/form.js +95 -36
- package/lib/form/src/form.min.js +1 -1
- package/lib/form-design/src/default-setting-form.js +12 -12
- package/lib/form-design/src/default-setting-form.min.js +1 -1
- package/lib/form-design/src/form-view.js +5 -7
- package/lib/form-design/src/form-view.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/icon-picker/src/icon-picker.js +2 -2
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/image/src/group.js +3 -0
- package/lib/image/src/group.min.js +1 -1
- package/lib/image/src/image.js +3 -0
- package/lib/image/src/image.min.js +1 -1
- package/lib/image/src/preview.js +20 -8
- package/lib/image/src/preview.min.js +1 -1
- package/lib/image/src/util.js +1 -0
- package/lib/image/src/util.min.js +1 -1
- package/lib/index.umd.js +549 -377
- package/lib/index.umd.min.js +1 -1
- package/lib/list-design/src/layout-preview.js +5 -7
- package/lib/list-design/src/layout-preview.min.js +1 -1
- package/lib/list-design/src/list-view.js +6 -8
- package/lib/list-design/src/list-view.min.js +1 -1
- package/lib/loading/src/loading.js +1 -1
- package/lib/loading/src/loading.min.js +1 -1
- package/lib/menu/src/menu.js +6 -6
- package/lib/menu/src/menu.min.js +1 -1
- package/lib/modal/src/modal.js +12 -14
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/pager/src/pager.js +1 -3
- package/lib/pager/src/pager.min.js +1 -1
- package/lib/password-input/src/password-input.js +4 -4
- package/lib/password-input/src/password-input.min.js +1 -1
- package/lib/print/src/print.js +4 -4
- package/lib/print/src/print.min.js +1 -1
- package/lib/pulldown/src/pulldown.js +2 -2
- package/lib/pulldown/src/pulldown.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/switch/src/switch.js +2 -2
- package/lib/switch/src/switch.min.js +1 -1
- package/lib/table-select/src/table-select.js +5 -7
- package/lib/table-select/src/table-select.min.js +1 -1
- package/lib/tabs/src/tabs.js +10 -14
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tag/src/tag.js +1 -1
- package/lib/tag/src/tag.min.js +1 -1
- package/lib/tip/src/tip.js +3 -3
- package/lib/tip/src/tip.min.js +1 -1
- package/lib/tree/src/tree.js +298 -184
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/ui/index.js +3 -7
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/upload/src/upload.js +27 -29
- package/lib/upload/src/upload.min.js +1 -1
- package/package.json +1 -1
- package/packages/alert/src/alert.ts +5 -5
- package/packages/anchor/src/anchor-link.ts +3 -2
- package/packages/anchor/src/anchor.ts +3 -3
- package/packages/breadcrumb/src/breadcrumb-item.ts +3 -2
- package/packages/button/src/button-group.ts +3 -3
- package/packages/button/src/button.ts +7 -8
- package/packages/card/src/card.ts +7 -7
- package/packages/carousel/src/carousel.ts +3 -3
- package/packages/countdown/src/countdown.ts +4 -4
- package/packages/form/render/index.ts +2 -4
- package/packages/form/src/form-group.ts +7 -3
- package/packages/form/src/form-item.ts +7 -4
- package/packages/form/src/form.ts +98 -35
- package/packages/form-design/src/default-setting-form.ts +1 -1
- package/packages/form-design/src/form-view.ts +7 -9
- package/packages/icon-picker/src/icon-picker.ts +4 -4
- package/packages/image/src/group.ts +3 -1
- package/packages/image/src/image.ts +3 -1
- package/packages/image/src/preview.ts +37 -22
- package/packages/image/src/util.ts +1 -0
- package/packages/list-design/src/layout-preview.ts +5 -7
- package/packages/list-design/src/list-view.ts +8 -10
- package/packages/loading/src/loading.ts +3 -3
- package/packages/menu/src/menu.ts +9 -9
- package/packages/modal/src/modal.ts +16 -18
- package/packages/pager/src/pager.ts +1 -3
- package/packages/password-input/src/password-input.ts +7 -7
- package/packages/print/src/print.ts +6 -6
- package/packages/pulldown/src/pulldown.ts +5 -5
- package/packages/switch/src/switch.ts +4 -4
- package/packages/table-select/src/table-select.ts +5 -7
- package/packages/tabs/src/tabs.ts +11 -15
- package/packages/tag/src/tag.ts +3 -3
- package/packages/tip/src/tip.ts +5 -5
- package/packages/tree/src/tree.ts +242 -179
- package/packages/ui/index.ts +2 -6
- package/packages/upload/src/upload.ts +31 -33
- package/types/components/button.d.ts +2 -1
- package/types/components/image-group.d.ts +3 -0
- package/types/components/image-preview.d.ts +32 -0
- package/types/components/image.d.ts +2 -0
- package/types/components/tree.d.ts +7 -5
- /package/es/icon/{iconfont.1747192660271.ttf → iconfont.1747318422186.ttf} +0 -0
- /package/es/icon/{iconfont.1747192660271.woff → iconfont.1747318422186.woff} +0 -0
- /package/es/icon/{iconfont.1747192660271.woff2 → iconfont.1747318422186.woff2} +0 -0
- /package/es/{iconfont.1747192660271.ttf → iconfont.1747318422186.ttf} +0 -0
- /package/es/{iconfont.1747192660271.woff → iconfont.1747318422186.woff} +0 -0
- /package/es/{iconfont.1747192660271.woff2 → iconfont.1747318422186.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1747192660271.ttf → iconfont.1747318422186.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1747192660271.woff → iconfont.1747318422186.woff} +0 -0
- /package/lib/icon/style/{iconfont.1747192660271.woff2 → iconfont.1747318422186.woff2} +0 -0
- /package/lib/{iconfont.1747192660271.ttf → iconfont.1747318422186.ttf} +0 -0
- /package/lib/{iconfont.1747192660271.woff → iconfont.1747318422186.woff} +0 -0
- /package/lib/{iconfont.1747192660271.woff2 → iconfont.1747318422186.woff2} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defineComponent, ref, h, reactive, PropType, computed, VNode,
|
|
2
|
-
import { createEvent, getIcon, getConfig, useSize } from '../../ui'
|
|
1
|
+
import { defineComponent, ref, h, reactive, PropType, computed, VNode, watch, onUnmounted, nextTick } from 'vue'
|
|
2
|
+
import { createEvent, getIcon, getConfig, useSize, renderEmptyElement } from '../../ui'
|
|
3
3
|
import XEUtils from 'xe-utils'
|
|
4
4
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
5
5
|
import { toCssUnit } from '../../ui/src/dom'
|
|
@@ -53,10 +53,10 @@ export default defineComponent({
|
|
|
53
53
|
type: String as PropType<VxeTreePropTypes.HasChildField>,
|
|
54
54
|
default: () => getConfig().tree.hasChildField
|
|
55
55
|
},
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
mapChildrenField: {
|
|
57
|
+
type: String as PropType<VxeTreePropTypes.MapChildrenField>,
|
|
58
|
+
default: () => getConfig().tree.mapChildrenField
|
|
59
|
+
},
|
|
60
60
|
transform: Boolean as PropType<VxeTreePropTypes.Transform>,
|
|
61
61
|
// 已废弃
|
|
62
62
|
isCurrent: Boolean as PropType<VxeTreePropTypes.IsCurrent>,
|
|
@@ -138,17 +138,19 @@ export default defineComponent({
|
|
|
138
138
|
|
|
139
139
|
const reactData = reactive<TreeReactData>({
|
|
140
140
|
currentNode: null,
|
|
141
|
-
nodeMaps: {},
|
|
142
141
|
selectRadioKey: props.checkNodeKey,
|
|
143
142
|
treeList: [],
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
selectCheckboxMaps: {},
|
|
147
|
-
indeterminateCheckboxMaps: {}
|
|
143
|
+
updateExpandedFlag: 1,
|
|
144
|
+
updateCheckboxFlag: 1
|
|
148
145
|
})
|
|
149
146
|
|
|
150
147
|
const internalData: TreeInternalData = {
|
|
151
|
-
// initialized: false
|
|
148
|
+
// initialized: false,
|
|
149
|
+
nodeMaps: {},
|
|
150
|
+
selectCheckboxMaps: {},
|
|
151
|
+
indeterminateRowMaps: {},
|
|
152
|
+
treeExpandedMaps: {},
|
|
153
|
+
treeExpandLazyLoadedMaps: {}
|
|
152
154
|
}
|
|
153
155
|
|
|
154
156
|
const refMaps: TreePrivateRef = {
|
|
@@ -176,6 +178,10 @@ export default defineComponent({
|
|
|
176
178
|
return props.childrenField || 'children'
|
|
177
179
|
})
|
|
178
180
|
|
|
181
|
+
const computeMapChildrenField = computed(() => {
|
|
182
|
+
return props.mapChildrenField || 'mapChildren'
|
|
183
|
+
})
|
|
184
|
+
|
|
179
185
|
const computeHasChildField = computed(() => {
|
|
180
186
|
return props.hasChildField || 'hasChild'
|
|
181
187
|
})
|
|
@@ -250,9 +256,10 @@ export default defineComponent({
|
|
|
250
256
|
}
|
|
251
257
|
|
|
252
258
|
const isExpandByNode = (node: any) => {
|
|
253
|
-
const {
|
|
259
|
+
const { updateExpandedFlag } = reactData
|
|
260
|
+
const { treeExpandedMaps } = internalData
|
|
254
261
|
const nodeid = getNodeId(node)
|
|
255
|
-
return !!treeExpandedMaps[nodeid]
|
|
262
|
+
return !!(updateExpandedFlag && treeExpandedMaps[nodeid])
|
|
256
263
|
}
|
|
257
264
|
|
|
258
265
|
const isCheckedByRadioNodeId = (nodeid: any) => {
|
|
@@ -265,8 +272,9 @@ export default defineComponent({
|
|
|
265
272
|
}
|
|
266
273
|
|
|
267
274
|
const isCheckedByCheckboxNodeId = (nodeid: any) => {
|
|
268
|
-
const {
|
|
269
|
-
|
|
275
|
+
const { updateCheckboxFlag } = reactData
|
|
276
|
+
const { selectCheckboxMaps } = internalData
|
|
277
|
+
return !!(updateCheckboxFlag && selectCheckboxMaps[nodeid])
|
|
270
278
|
}
|
|
271
279
|
|
|
272
280
|
const isCheckedByCheckboxNode = (node: any) => {
|
|
@@ -274,8 +282,9 @@ export default defineComponent({
|
|
|
274
282
|
}
|
|
275
283
|
|
|
276
284
|
const isIndeterminateByCheckboxNodeid = (nodeid: any) => {
|
|
277
|
-
const {
|
|
278
|
-
|
|
285
|
+
const { updateCheckboxFlag } = reactData
|
|
286
|
+
const { indeterminateRowMaps } = internalData
|
|
287
|
+
return !!(updateCheckboxFlag && indeterminateRowMaps[nodeid])
|
|
279
288
|
}
|
|
280
289
|
|
|
281
290
|
const isIndeterminateByCheckboxNode = (node: any) => {
|
|
@@ -302,41 +311,59 @@ export default defineComponent({
|
|
|
302
311
|
if (!XEUtils.isArray(nodeList)) {
|
|
303
312
|
nodeList = [nodeList]
|
|
304
313
|
}
|
|
305
|
-
handleCheckedCheckboxNode(nodeList
|
|
314
|
+
handleCheckedCheckboxNode(nodeList, checked)
|
|
306
315
|
}
|
|
307
316
|
return nextTick()
|
|
308
317
|
}
|
|
309
318
|
|
|
310
319
|
const setCheckboxByNodeId = (nodeIds: any | any[], checked: boolean) => {
|
|
320
|
+
const { nodeMaps } = internalData
|
|
311
321
|
if (nodeIds) {
|
|
312
322
|
if (!XEUtils.isArray(nodeIds)) {
|
|
313
323
|
nodeIds = [nodeIds]
|
|
314
324
|
}
|
|
315
|
-
|
|
325
|
+
const nodeList: any[] = []
|
|
326
|
+
nodeIds.forEach((nodeid: string) => {
|
|
327
|
+
const nodeItem = nodeMaps[nodeid]
|
|
328
|
+
if (nodeItem) {
|
|
329
|
+
nodeList.push(nodeItem.item)
|
|
330
|
+
}
|
|
331
|
+
})
|
|
332
|
+
handleCheckedCheckboxNode(nodeList, checked)
|
|
316
333
|
}
|
|
317
334
|
return nextTick()
|
|
318
335
|
}
|
|
319
336
|
|
|
320
|
-
const handleCheckedCheckboxNode = (
|
|
321
|
-
const
|
|
322
|
-
|
|
337
|
+
const handleCheckedCheckboxNode = (nodeList: any[], checked: boolean) => {
|
|
338
|
+
const { transform } = props
|
|
339
|
+
const { selectCheckboxMaps } = internalData
|
|
340
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
341
|
+
const childrenField = computeChildrenField.value
|
|
342
|
+
const checkboxOpts = computeCheckboxOpts.value
|
|
343
|
+
const { checkStrictly } = checkboxOpts
|
|
344
|
+
const handleSelect = (node: any) => {
|
|
345
|
+
const nodeid = getNodeId(node)
|
|
323
346
|
if (checked) {
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
347
|
+
if (!selectCheckboxMaps[nodeid]) {
|
|
348
|
+
selectCheckboxMaps[nodeid] = node
|
|
349
|
+
}
|
|
350
|
+
} else {
|
|
351
|
+
if (selectCheckboxMaps[nodeid]) {
|
|
352
|
+
delete selectCheckboxMaps[nodeid]
|
|
353
|
+
}
|
|
327
354
|
}
|
|
328
|
-
}
|
|
329
|
-
|
|
355
|
+
}
|
|
356
|
+
if (checkStrictly) {
|
|
357
|
+
nodeList.forEach(handleSelect)
|
|
358
|
+
} else {
|
|
359
|
+
XEUtils.eachTree(nodeList, handleSelect, { children: transform ? mapChildrenField : childrenField })
|
|
360
|
+
}
|
|
361
|
+
reactData.updateCheckboxFlag++
|
|
362
|
+
updateCheckboxStatus()
|
|
330
363
|
}
|
|
331
364
|
|
|
332
365
|
const updateCheckboxChecked = (nodeIds: VxeTreePropTypes.CheckNodeKeys) => {
|
|
333
|
-
|
|
334
|
-
if (nodeIds) {
|
|
335
|
-
nodeIds.forEach((key) => {
|
|
336
|
-
selectKeyMaps[key] = true
|
|
337
|
-
})
|
|
338
|
-
}
|
|
339
|
-
reactData.selectCheckboxMaps = selectKeyMaps
|
|
366
|
+
setCheckboxByNodeId(nodeIds, true)
|
|
340
367
|
}
|
|
341
368
|
|
|
342
369
|
const handleSetExpand = (nodeid: string, expanded: boolean, expandedMaps: Record<string, boolean>) => {
|
|
@@ -384,7 +411,8 @@ export default defineComponent({
|
|
|
384
411
|
return null
|
|
385
412
|
},
|
|
386
413
|
getCurrentNode () {
|
|
387
|
-
const { currentNode
|
|
414
|
+
const { currentNode } = reactData
|
|
415
|
+
const { nodeMaps } = internalData
|
|
388
416
|
if (currentNode) {
|
|
389
417
|
const nodeItem = nodeMaps[getNodeId(currentNode)]
|
|
390
418
|
if (nodeItem) {
|
|
@@ -394,7 +422,7 @@ export default defineComponent({
|
|
|
394
422
|
return null
|
|
395
423
|
},
|
|
396
424
|
setCurrentNodeId (nodeKey) {
|
|
397
|
-
const { nodeMaps } =
|
|
425
|
+
const { nodeMaps } = internalData
|
|
398
426
|
const nodeItem = nodeMaps[nodeKey]
|
|
399
427
|
reactData.currentNode = nodeItem ? nodeItem.item : null
|
|
400
428
|
return nextTick()
|
|
@@ -411,7 +439,8 @@ export default defineComponent({
|
|
|
411
439
|
return reactData.selectRadioKey || null
|
|
412
440
|
},
|
|
413
441
|
getRadioNode () {
|
|
414
|
-
const { selectRadioKey
|
|
442
|
+
const { selectRadioKey } = reactData
|
|
443
|
+
const { nodeMaps } = internalData
|
|
415
444
|
if (selectRadioKey) {
|
|
416
445
|
const nodeItem = nodeMaps[selectRadioKey]
|
|
417
446
|
if (nodeItem) {
|
|
@@ -428,11 +457,11 @@ export default defineComponent({
|
|
|
428
457
|
setCheckboxNode,
|
|
429
458
|
setCheckboxByNodeId,
|
|
430
459
|
getCheckboxNodeIds () {
|
|
431
|
-
const { selectCheckboxMaps } =
|
|
460
|
+
const { selectCheckboxMaps } = internalData
|
|
432
461
|
return Object.keys(selectCheckboxMaps)
|
|
433
462
|
},
|
|
434
463
|
getCheckboxNodes () {
|
|
435
|
-
const { nodeMaps, selectCheckboxMaps } =
|
|
464
|
+
const { nodeMaps, selectCheckboxMaps } = internalData
|
|
436
465
|
const list: any[] = []
|
|
437
466
|
XEUtils.each(selectCheckboxMaps, (item, nodeid) => {
|
|
438
467
|
const nodeItem = nodeMaps[nodeid]
|
|
@@ -443,50 +472,56 @@ export default defineComponent({
|
|
|
443
472
|
return list
|
|
444
473
|
},
|
|
445
474
|
clearCheckboxNode () {
|
|
446
|
-
|
|
475
|
+
internalData.selectCheckboxMaps = {}
|
|
476
|
+
reactData.updateCheckboxFlag++
|
|
447
477
|
return nextTick()
|
|
448
478
|
},
|
|
449
479
|
setAllCheckboxNode (checked) {
|
|
480
|
+
const { transform } = props
|
|
450
481
|
const selectMaps: Record<string, boolean> = {}
|
|
451
482
|
const childrenField = computeChildrenField.value
|
|
483
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
452
484
|
if (checked) {
|
|
453
485
|
XEUtils.eachTree(reactData.treeList, (node) => {
|
|
454
486
|
const nodeid = getNodeId(node)
|
|
455
487
|
selectMaps[nodeid] = true
|
|
456
|
-
}, { children: childrenField })
|
|
488
|
+
}, { children: transform ? mapChildrenField : childrenField })
|
|
457
489
|
}
|
|
458
|
-
|
|
490
|
+
internalData.selectCheckboxMaps = selectMaps
|
|
491
|
+
reactData.updateCheckboxFlag++
|
|
459
492
|
return nextTick()
|
|
460
493
|
},
|
|
461
494
|
clearExpandNode () {
|
|
462
495
|
return treeMethods.clearAllExpandNode()
|
|
463
496
|
},
|
|
464
497
|
clearAllExpandNode () {
|
|
465
|
-
|
|
498
|
+
const { nodeMaps } = internalData
|
|
499
|
+
XEUtils.each(nodeMaps, (nodeItem: VxeTreeDefines.NodeCacheItem) => {
|
|
466
500
|
nodeItem.treeLoaded = false
|
|
467
501
|
})
|
|
468
|
-
|
|
502
|
+
internalData.treeExpandedMaps = {}
|
|
503
|
+
reactData.updateExpandedFlag++
|
|
469
504
|
return nextTick()
|
|
470
505
|
},
|
|
471
506
|
setExpandByNodeId (nodeids, expanded) {
|
|
472
|
-
const
|
|
507
|
+
const { treeExpandedMaps } = internalData
|
|
473
508
|
if (nodeids) {
|
|
474
509
|
if (!XEUtils.isArray(nodeids)) {
|
|
475
510
|
nodeids = [nodeids]
|
|
476
511
|
}
|
|
477
512
|
nodeids.forEach((nodeid: string) => {
|
|
478
|
-
handleSetExpand(nodeid, expanded,
|
|
513
|
+
handleSetExpand(nodeid, expanded, treeExpandedMaps)
|
|
479
514
|
})
|
|
480
|
-
reactData.
|
|
515
|
+
reactData.updateExpandedFlag++
|
|
481
516
|
}
|
|
482
517
|
return nextTick()
|
|
483
518
|
},
|
|
484
519
|
getExpandNodeIds () {
|
|
485
|
-
const { treeExpandedMaps } =
|
|
486
|
-
return
|
|
520
|
+
const { treeExpandedMaps } = internalData
|
|
521
|
+
return XEUtils.keys(treeExpandedMaps)
|
|
487
522
|
},
|
|
488
523
|
getExpandNodes () {
|
|
489
|
-
const { nodeMaps, treeExpandedMaps } =
|
|
524
|
+
const { nodeMaps, treeExpandedMaps } = internalData
|
|
490
525
|
const list: any[] = []
|
|
491
526
|
XEUtils.each(treeExpandedMaps, (item, nodeid) => {
|
|
492
527
|
const nodeItem = nodeMaps[nodeid]
|
|
@@ -497,60 +532,62 @@ export default defineComponent({
|
|
|
497
532
|
return list
|
|
498
533
|
},
|
|
499
534
|
setExpandNode (nodes, expanded) {
|
|
500
|
-
const
|
|
535
|
+
const { treeExpandedMaps } = internalData
|
|
501
536
|
if (nodes) {
|
|
502
537
|
if (!XEUtils.isArray(nodes)) {
|
|
503
538
|
nodes = [nodes]
|
|
504
539
|
}
|
|
505
540
|
nodes.forEach((node: any) => {
|
|
506
541
|
const nodeid = getNodeId(node)
|
|
507
|
-
handleSetExpand(nodeid, expanded,
|
|
542
|
+
handleSetExpand(nodeid, expanded, treeExpandedMaps)
|
|
508
543
|
})
|
|
509
|
-
reactData.
|
|
544
|
+
reactData.updateExpandedFlag++
|
|
510
545
|
}
|
|
511
546
|
return nextTick()
|
|
512
547
|
},
|
|
513
548
|
toggleExpandByNodeId (nodeids) {
|
|
514
|
-
const
|
|
549
|
+
const { treeExpandedMaps } = internalData
|
|
515
550
|
if (nodeids) {
|
|
516
551
|
if (!XEUtils.isArray(nodeids)) {
|
|
517
552
|
nodeids = [nodeids]
|
|
518
553
|
}
|
|
519
554
|
nodeids.forEach((nodeid: string) => {
|
|
520
|
-
handleSetExpand(nodeid, !
|
|
555
|
+
handleSetExpand(nodeid, !treeExpandedMaps[nodeid], treeExpandedMaps)
|
|
521
556
|
})
|
|
522
|
-
reactData.
|
|
557
|
+
reactData.updateExpandedFlag++
|
|
523
558
|
}
|
|
524
559
|
return nextTick()
|
|
525
560
|
},
|
|
526
561
|
toggleExpandNode (nodes) {
|
|
527
|
-
const
|
|
562
|
+
const { treeExpandedMaps } = internalData
|
|
528
563
|
if (nodes) {
|
|
529
564
|
if (!XEUtils.isArray(nodes)) {
|
|
530
565
|
nodes = [nodes]
|
|
531
566
|
}
|
|
532
567
|
nodes.forEach((node: any) => {
|
|
533
568
|
const nodeid = getNodeId(node)
|
|
534
|
-
handleSetExpand(nodeid, !
|
|
569
|
+
handleSetExpand(nodeid, !treeExpandedMaps[nodeid], treeExpandedMaps)
|
|
535
570
|
})
|
|
536
|
-
reactData.
|
|
571
|
+
reactData.updateExpandedFlag++
|
|
537
572
|
}
|
|
538
573
|
return nextTick()
|
|
539
574
|
},
|
|
540
575
|
setAllExpandNode (expanded) {
|
|
541
|
-
const
|
|
576
|
+
const { transform } = props
|
|
577
|
+
const { treeExpandedMaps } = internalData
|
|
542
578
|
const childrenField = computeChildrenField.value
|
|
579
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
543
580
|
if (expanded) {
|
|
544
581
|
XEUtils.eachTree(reactData.treeList, (node) => {
|
|
545
582
|
const childList: any[] = XEUtils.get(node, childrenField)
|
|
546
583
|
const hasChild = childList && childList.length
|
|
547
584
|
if (hasChild) {
|
|
548
585
|
const nodeid = getNodeId(node)
|
|
549
|
-
|
|
586
|
+
treeExpandedMaps[nodeid] = true
|
|
550
587
|
}
|
|
551
|
-
}, { children: childrenField })
|
|
588
|
+
}, { children: transform ? mapChildrenField : childrenField })
|
|
552
589
|
}
|
|
553
|
-
reactData.
|
|
590
|
+
reactData.updateExpandedFlag++
|
|
554
591
|
return nextTick()
|
|
555
592
|
},
|
|
556
593
|
reloadExpandNode (node) {
|
|
@@ -563,7 +600,7 @@ export default defineComponent({
|
|
|
563
600
|
},
|
|
564
601
|
clearExpandLoaded (node) {
|
|
565
602
|
const { lazy } = props
|
|
566
|
-
const { nodeMaps } =
|
|
603
|
+
const { nodeMaps } = internalData
|
|
567
604
|
if (lazy) {
|
|
568
605
|
const nodeItem = nodeMaps[getNodeId(node)]
|
|
569
606
|
if (nodeItem) {
|
|
@@ -577,7 +614,7 @@ export default defineComponent({
|
|
|
577
614
|
*/
|
|
578
615
|
loadChildrenNode (node, childRecords) {
|
|
579
616
|
const { lazy, transform } = props
|
|
580
|
-
const { nodeMaps } =
|
|
617
|
+
const { nodeMaps } = internalData
|
|
581
618
|
if (!lazy) {
|
|
582
619
|
return Promise.resolve([])
|
|
583
620
|
}
|
|
@@ -614,21 +651,24 @@ export default defineComponent({
|
|
|
614
651
|
isIndeterminateByCheckboxNode,
|
|
615
652
|
isCheckedByCheckboxNode,
|
|
616
653
|
getCheckboxIndeterminateNodes () {
|
|
617
|
-
const {
|
|
618
|
-
const
|
|
619
|
-
XEUtils.
|
|
620
|
-
|
|
621
|
-
|
|
654
|
+
const { nodeMaps, indeterminateRowMaps } = internalData
|
|
655
|
+
const list: any[] = []
|
|
656
|
+
XEUtils.each(indeterminateRowMaps, (item, nodeid) => {
|
|
657
|
+
const nodeItem = nodeMaps[nodeid]
|
|
658
|
+
if (nodeItem) {
|
|
659
|
+
list.push(nodeItem.item)
|
|
622
660
|
}
|
|
623
661
|
})
|
|
624
|
-
return
|
|
662
|
+
return list
|
|
625
663
|
}
|
|
626
664
|
}
|
|
627
665
|
|
|
628
666
|
const cacheNodeMap = () => {
|
|
667
|
+
const { transform } = props
|
|
629
668
|
const { treeList } = reactData
|
|
630
669
|
const valueField = computeValueField.value
|
|
631
670
|
const childrenField = computeChildrenField.value
|
|
671
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
632
672
|
const keyMaps: Record<string, VxeTreeDefines.NodeCacheItem> = {}
|
|
633
673
|
XEUtils.eachTree(treeList, (item, itemIndex, items, path, parent, nodes) => {
|
|
634
674
|
let nodeid = getNodeId(item)
|
|
@@ -646,32 +686,35 @@ export default defineComponent({
|
|
|
646
686
|
lineCount: 0,
|
|
647
687
|
treeLoaded: false
|
|
648
688
|
}
|
|
649
|
-
}, { children: childrenField })
|
|
650
|
-
|
|
689
|
+
}, { children: transform ? mapChildrenField : childrenField })
|
|
690
|
+
internalData.nodeMaps = keyMaps
|
|
651
691
|
}
|
|
652
692
|
|
|
653
|
-
const
|
|
693
|
+
const loadTreeData = (list: any[]) => {
|
|
654
694
|
const { expandAll, transform } = props
|
|
655
695
|
const { initialized } = internalData
|
|
656
696
|
const keyField = computeKeyField.value
|
|
657
697
|
const parentField = computeParentField.value
|
|
658
|
-
const
|
|
698
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
659
699
|
if (transform) {
|
|
660
|
-
reactData.treeList = XEUtils.toArrayTree(list, { key: keyField, parentKey: parentField, mapChildren:
|
|
700
|
+
reactData.treeList = XEUtils.toArrayTree(list, { key: keyField, parentKey: parentField, mapChildren: mapChildrenField })
|
|
661
701
|
} else {
|
|
662
702
|
reactData.treeList = list ? list.slice(0) : []
|
|
663
703
|
}
|
|
664
704
|
cacheNodeMap()
|
|
665
|
-
if (
|
|
705
|
+
if (!initialized) {
|
|
666
706
|
if (list && list.length) {
|
|
667
707
|
internalData.initialized = true
|
|
668
|
-
|
|
708
|
+
if (expandAll) {
|
|
709
|
+
$xeTree.setAllExpandNode(true)
|
|
710
|
+
}
|
|
711
|
+
$xeTree.setCheckboxByNodeId(props.checkNodeKeys || [], true)
|
|
669
712
|
}
|
|
670
713
|
}
|
|
671
714
|
}
|
|
672
715
|
|
|
673
716
|
const handleCountLine = (item: any, isRoot: boolean, nodeItem: VxeTreeDefines.NodeCacheItem) => {
|
|
674
|
-
const { treeExpandedMaps } =
|
|
717
|
+
const { treeExpandedMaps } = internalData
|
|
675
718
|
const childrenField = computeChildrenField.value
|
|
676
719
|
const nodeid = getNodeId(item)
|
|
677
720
|
nodeItem.lineCount++
|
|
@@ -685,7 +728,7 @@ export default defineComponent({
|
|
|
685
728
|
}
|
|
686
729
|
|
|
687
730
|
const updateNodeLine = (node: any) => {
|
|
688
|
-
const { nodeMaps } =
|
|
731
|
+
const { nodeMaps } = internalData
|
|
689
732
|
if (node) {
|
|
690
733
|
const nodeid = getNodeId(node)
|
|
691
734
|
const nodeItem = nodeMaps[nodeid]
|
|
@@ -742,16 +785,14 @@ export default defineComponent({
|
|
|
742
785
|
const { checkStrictly } = checkboxOpts
|
|
743
786
|
return new Promise(resolve => {
|
|
744
787
|
if (loadMethod) {
|
|
745
|
-
const
|
|
746
|
-
const { nodeMaps } = reactData
|
|
788
|
+
const { nodeMaps } = internalData
|
|
747
789
|
const nodeid = getNodeId(node)
|
|
748
790
|
const nodeItem = nodeMaps[nodeid]
|
|
749
|
-
|
|
750
|
-
reactData.treeExpandLazyLoadedMaps = tempExpandLazyLoadedMaps
|
|
791
|
+
internalData.treeExpandLazyLoadedMaps[nodeid] = true
|
|
751
792
|
Promise.resolve(
|
|
752
793
|
loadMethod({ $tree: $xeTree, node })
|
|
753
794
|
).then((childRecords: any) => {
|
|
754
|
-
const { treeExpandLazyLoadedMaps } =
|
|
795
|
+
const { treeExpandLazyLoadedMaps } = internalData
|
|
755
796
|
nodeItem.treeLoaded = true
|
|
756
797
|
if (treeExpandLazyLoadedMaps[nodeid]) {
|
|
757
798
|
treeExpandLazyLoadedMaps[nodeid] = false
|
|
@@ -760,15 +801,15 @@ export default defineComponent({
|
|
|
760
801
|
childRecords = []
|
|
761
802
|
}
|
|
762
803
|
if (childRecords) {
|
|
763
|
-
return
|
|
764
|
-
const
|
|
765
|
-
if (childRows.length && !
|
|
766
|
-
|
|
804
|
+
return $xeTree.loadChildrenNode(node, childRecords).then(childRows => {
|
|
805
|
+
const { treeExpandedMaps } = internalData
|
|
806
|
+
if (childRows.length && !treeExpandedMaps[nodeid]) {
|
|
807
|
+
treeExpandedMaps[nodeid] = true
|
|
767
808
|
}
|
|
768
|
-
reactData.
|
|
809
|
+
reactData.updateExpandedFlag++
|
|
769
810
|
// 如果当前节点已选中,则展开后子节点也被选中
|
|
770
|
-
if (!checkStrictly &&
|
|
771
|
-
handleCheckedCheckboxNode(childRows
|
|
811
|
+
if (!checkStrictly && $xeTree.isCheckedByCheckboxNodeId(nodeid)) {
|
|
812
|
+
handleCheckedCheckboxNode(childRows, true)
|
|
772
813
|
}
|
|
773
814
|
updateNodeLine(node)
|
|
774
815
|
dispatchEvent('load-success', { node, data: childRecords }, new Event('load-success'))
|
|
@@ -779,7 +820,7 @@ export default defineComponent({
|
|
|
779
820
|
dispatchEvent('load-success', { node, data: childRecords }, new Event('load-success'))
|
|
780
821
|
}
|
|
781
822
|
}).catch((e) => {
|
|
782
|
-
const { treeExpandLazyLoadedMaps } =
|
|
823
|
+
const { treeExpandLazyLoadedMaps } = internalData
|
|
783
824
|
nodeItem.treeLoaded = false
|
|
784
825
|
if (treeExpandLazyLoadedMaps[nodeid]) {
|
|
785
826
|
treeExpandLazyLoadedMaps[nodeid] = false
|
|
@@ -803,8 +844,8 @@ export default defineComponent({
|
|
|
803
844
|
*/
|
|
804
845
|
const handleBaseTreeExpand = (nodeList: any[], expanded: boolean) => {
|
|
805
846
|
const { lazy, accordion, toggleMethod } = props
|
|
806
|
-
const {
|
|
807
|
-
const
|
|
847
|
+
const { treeExpandLazyLoadedMaps, treeExpandedMaps } = internalData
|
|
848
|
+
const { nodeMaps } = internalData
|
|
808
849
|
const childrenField = computeChildrenField.value
|
|
809
850
|
const hasChildField = computeHasChildField.value
|
|
810
851
|
const result: any[] = []
|
|
@@ -817,8 +858,8 @@ export default defineComponent({
|
|
|
817
858
|
if (nodeItem) {
|
|
818
859
|
nodeItem.items.forEach(item => {
|
|
819
860
|
const itemNodeId = getNodeId(item)
|
|
820
|
-
if (
|
|
821
|
-
delete
|
|
861
|
+
if (treeExpandedMaps[itemNodeId]) {
|
|
862
|
+
delete treeExpandedMaps[itemNodeId]
|
|
822
863
|
}
|
|
823
864
|
})
|
|
824
865
|
}
|
|
@@ -827,7 +868,7 @@ export default defineComponent({
|
|
|
827
868
|
if (expanded) {
|
|
828
869
|
validNodes.forEach((item) => {
|
|
829
870
|
const itemNodeId = getNodeId(item)
|
|
830
|
-
if (!
|
|
871
|
+
if (!treeExpandedMaps[itemNodeId]) {
|
|
831
872
|
const nodeItem = nodeMaps[itemNodeId]
|
|
832
873
|
const isLoad = lazy && item[hasChildField] && !nodeItem.treeLoaded && !treeExpandLazyLoadedMaps[itemNodeId]
|
|
833
874
|
// 是否使用懒加载
|
|
@@ -835,7 +876,7 @@ export default defineComponent({
|
|
|
835
876
|
result.push(handleAsyncTreeExpandChilds(item))
|
|
836
877
|
} else {
|
|
837
878
|
if (item[childrenField] && item[childrenField].length) {
|
|
838
|
-
|
|
879
|
+
treeExpandedMaps[itemNodeId] = true
|
|
839
880
|
expandNodes.push(item)
|
|
840
881
|
}
|
|
841
882
|
}
|
|
@@ -844,20 +885,20 @@ export default defineComponent({
|
|
|
844
885
|
} else {
|
|
845
886
|
validNodes.forEach(item => {
|
|
846
887
|
const itemNodeId = getNodeId(item)
|
|
847
|
-
if (
|
|
848
|
-
delete
|
|
888
|
+
if (treeExpandedMaps[itemNodeId]) {
|
|
889
|
+
delete treeExpandedMaps[itemNodeId]
|
|
849
890
|
expandNodes.push(item)
|
|
850
891
|
}
|
|
851
892
|
})
|
|
852
893
|
}
|
|
853
|
-
reactData.
|
|
894
|
+
reactData.updateExpandedFlag++
|
|
854
895
|
expandNodes.forEach(updateNodeLine)
|
|
855
896
|
return Promise.all(result)
|
|
856
897
|
}
|
|
857
898
|
|
|
858
899
|
const toggleExpandEvent = (evnt: MouseEvent, node: any) => {
|
|
859
900
|
const { lazy } = props
|
|
860
|
-
const { treeExpandedMaps, treeExpandLazyLoadedMaps } =
|
|
901
|
+
const { treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData
|
|
861
902
|
const nodeid = getNodeId(node)
|
|
862
903
|
const expanded = !treeExpandedMaps[nodeid]
|
|
863
904
|
evnt.stopPropagation()
|
|
@@ -866,72 +907,95 @@ export default defineComponent({
|
|
|
866
907
|
}
|
|
867
908
|
}
|
|
868
909
|
|
|
869
|
-
const handleNodeCheckboxStatus = (node: any, selectKeyMaps: Record<string, boolean>, indeterminateMaps: Record<string, boolean>) => {
|
|
870
|
-
const childrenField = computeChildrenField.value
|
|
871
|
-
const childList: any[] = XEUtils.get(node, childrenField)
|
|
872
|
-
const nodeid = getNodeId(node)
|
|
873
|
-
if (childList && childList.length) {
|
|
874
|
-
let checkSome = false
|
|
875
|
-
let checkSize = 0
|
|
876
|
-
childList.forEach(childNode => {
|
|
877
|
-
const childNodeid = getNodeId(childNode)
|
|
878
|
-
const isChecked = selectKeyMaps[childNodeid]
|
|
879
|
-
if (isChecked || indeterminateMaps[childNodeid]) {
|
|
880
|
-
if (isChecked) {
|
|
881
|
-
checkSize++
|
|
882
|
-
}
|
|
883
|
-
checkSome = true
|
|
884
|
-
}
|
|
885
|
-
})
|
|
886
|
-
const checkAll = checkSize === childList.length
|
|
887
|
-
if (checkAll) {
|
|
888
|
-
if (!selectKeyMaps[nodeid]) {
|
|
889
|
-
selectKeyMaps[nodeid] = true
|
|
890
|
-
}
|
|
891
|
-
if (indeterminateMaps[nodeid]) {
|
|
892
|
-
delete indeterminateMaps[nodeid]
|
|
893
|
-
}
|
|
894
|
-
} else {
|
|
895
|
-
if (selectKeyMaps[nodeid]) {
|
|
896
|
-
delete selectKeyMaps[nodeid]
|
|
897
|
-
}
|
|
898
|
-
indeterminateMaps[nodeid] = checkSome
|
|
899
|
-
}
|
|
900
|
-
} else {
|
|
901
|
-
if (indeterminateMaps[nodeid]) {
|
|
902
|
-
delete indeterminateMaps[nodeid]
|
|
903
|
-
}
|
|
904
|
-
}
|
|
905
|
-
}
|
|
906
|
-
|
|
907
910
|
const updateCheckboxStatus = () => {
|
|
911
|
+
const { transform } = props
|
|
908
912
|
const { treeList } = reactData
|
|
913
|
+
const { selectCheckboxMaps, indeterminateRowMaps } = internalData
|
|
909
914
|
const childrenField = computeChildrenField.value
|
|
915
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
910
916
|
const checkboxOpts = computeCheckboxOpts.value
|
|
911
|
-
const { checkStrictly } = checkboxOpts
|
|
917
|
+
const { checkStrictly, checkMethod } = checkboxOpts
|
|
912
918
|
if (!checkStrictly) {
|
|
913
|
-
const
|
|
914
|
-
const
|
|
915
|
-
XEUtils.eachTree(treeList, (node
|
|
916
|
-
const
|
|
917
|
-
|
|
918
|
-
|
|
919
|
+
const childRowMaps: Record<string, number> = {}
|
|
920
|
+
const childRowList: any[][] = []
|
|
921
|
+
XEUtils.eachTree(treeList, (node) => {
|
|
922
|
+
const nodeid = getNodeId(node)
|
|
923
|
+
const childList = node[childrenField]
|
|
924
|
+
if (childList && childList.length && !childRowMaps[nodeid]) {
|
|
925
|
+
childRowMaps[nodeid] = 1
|
|
926
|
+
childRowList.unshift([node, nodeid, childList])
|
|
919
927
|
}
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
928
|
+
}, { children: transform ? mapChildrenField : childrenField })
|
|
929
|
+
|
|
930
|
+
childRowList.forEach(vals => {
|
|
931
|
+
const node: string = vals[0]
|
|
932
|
+
const nodeid: string = vals[1]
|
|
933
|
+
const childList: any[] = vals[2]
|
|
934
|
+
let sLen = 0 // 已选
|
|
935
|
+
let hLen = 0 // 半选
|
|
936
|
+
let vLen = 0 // 有效行
|
|
937
|
+
childList.forEach(
|
|
938
|
+
checkMethod
|
|
939
|
+
? (item) => {
|
|
940
|
+
const childNodeid = getNodeId(item)
|
|
941
|
+
const isSelect = selectCheckboxMaps[childNodeid]
|
|
942
|
+
if (checkMethod({ node: item })) {
|
|
943
|
+
if (isSelect) {
|
|
944
|
+
sLen++
|
|
945
|
+
} else if (indeterminateRowMaps[childNodeid]) {
|
|
946
|
+
hLen++
|
|
947
|
+
}
|
|
948
|
+
vLen++
|
|
949
|
+
} else {
|
|
950
|
+
if (isSelect) {
|
|
951
|
+
sLen++
|
|
952
|
+
} else if (indeterminateRowMaps[childNodeid]) {
|
|
953
|
+
hLen++
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
: item => {
|
|
958
|
+
const childNodeid = getNodeId(item)
|
|
959
|
+
const isSelect = selectCheckboxMaps[childNodeid]
|
|
960
|
+
if (isSelect) {
|
|
961
|
+
sLen++
|
|
962
|
+
} else if (indeterminateRowMaps[childNodeid]) {
|
|
963
|
+
hLen++
|
|
964
|
+
}
|
|
965
|
+
vLen++
|
|
966
|
+
}
|
|
967
|
+
)
|
|
968
|
+
const isSelected = sLen >= vLen
|
|
969
|
+
const halfSelect = !isSelected && (sLen >= 1 || hLen >= 1)
|
|
970
|
+
if (isSelected) {
|
|
971
|
+
selectCheckboxMaps[nodeid] = node
|
|
972
|
+
if (indeterminateRowMaps[nodeid]) {
|
|
973
|
+
delete indeterminateRowMaps[nodeid]
|
|
974
|
+
}
|
|
975
|
+
} else {
|
|
976
|
+
if (selectCheckboxMaps[nodeid]) {
|
|
977
|
+
delete selectCheckboxMaps[nodeid]
|
|
978
|
+
}
|
|
979
|
+
if (halfSelect) {
|
|
980
|
+
indeterminateRowMaps[nodeid] = node
|
|
981
|
+
} else {
|
|
982
|
+
if (indeterminateRowMaps[nodeid]) {
|
|
983
|
+
delete indeterminateRowMaps[nodeid]
|
|
984
|
+
}
|
|
924
985
|
}
|
|
925
986
|
}
|
|
926
987
|
})
|
|
927
|
-
reactData.
|
|
928
|
-
reactData.indeterminateCheckboxMaps = indeterminateMaps
|
|
988
|
+
reactData.updateCheckboxFlag++
|
|
929
989
|
}
|
|
930
990
|
}
|
|
931
991
|
|
|
932
992
|
const changeCheckboxEvent = (evnt: MouseEvent, node: any) => {
|
|
933
993
|
evnt.preventDefault()
|
|
934
994
|
evnt.stopPropagation()
|
|
995
|
+
const { transform } = props
|
|
996
|
+
const { selectCheckboxMaps } = internalData
|
|
997
|
+
const childrenField = computeChildrenField.value
|
|
998
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
935
999
|
const checkboxOpts = computeCheckboxOpts.value
|
|
936
1000
|
const { checkStrictly, checkMethod } = checkboxOpts
|
|
937
1001
|
let isDisabled = !!checkMethod
|
|
@@ -941,33 +1005,31 @@ export default defineComponent({
|
|
|
941
1005
|
if (isDisabled) {
|
|
942
1006
|
return
|
|
943
1007
|
}
|
|
944
|
-
const selectKeyMaps = Object.assign({}, reactData.selectCheckboxMaps)
|
|
945
|
-
const childrenField = computeChildrenField.value
|
|
946
1008
|
const nodeid = getNodeId(node)
|
|
947
1009
|
let isChecked = false
|
|
948
|
-
if (
|
|
949
|
-
delete
|
|
1010
|
+
if (selectCheckboxMaps[nodeid]) {
|
|
1011
|
+
delete selectCheckboxMaps[nodeid]
|
|
950
1012
|
} else {
|
|
951
1013
|
isChecked = true
|
|
952
|
-
|
|
1014
|
+
selectCheckboxMaps[nodeid] = node
|
|
953
1015
|
}
|
|
954
1016
|
if (!checkStrictly) {
|
|
955
1017
|
XEUtils.eachTree(XEUtils.get(node, childrenField), (childNode) => {
|
|
956
1018
|
const childNodeid = getNodeId(childNode)
|
|
957
1019
|
if (isChecked) {
|
|
958
|
-
if (!
|
|
959
|
-
|
|
1020
|
+
if (!selectCheckboxMaps[childNodeid]) {
|
|
1021
|
+
selectCheckboxMaps[childNodeid] = true
|
|
960
1022
|
}
|
|
961
1023
|
} else {
|
|
962
|
-
if (
|
|
963
|
-
delete
|
|
1024
|
+
if (selectCheckboxMaps[childNodeid]) {
|
|
1025
|
+
delete selectCheckboxMaps[childNodeid]
|
|
964
1026
|
}
|
|
965
1027
|
}
|
|
966
|
-
}, { children: childrenField })
|
|
1028
|
+
}, { children: transform ? mapChildrenField : childrenField })
|
|
967
1029
|
}
|
|
968
|
-
reactData.
|
|
1030
|
+
reactData.updateCheckboxFlag++
|
|
969
1031
|
updateCheckboxStatus()
|
|
970
|
-
const value =
|
|
1032
|
+
const value = XEUtils.keys(selectCheckboxMaps)
|
|
971
1033
|
emitCheckboxMode(value)
|
|
972
1034
|
dispatchEvent('checkbox-change', { node, value, checked: isChecked }, evnt)
|
|
973
1035
|
}
|
|
@@ -1050,7 +1112,7 @@ export default defineComponent({
|
|
|
1050
1112
|
})
|
|
1051
1113
|
])
|
|
1052
1114
|
}
|
|
1053
|
-
return
|
|
1115
|
+
return renderEmptyElement($xeTree)
|
|
1054
1116
|
}
|
|
1055
1117
|
|
|
1056
1118
|
const renderCheckbox = (node: any, nodeid: string, isChecked: boolean) => {
|
|
@@ -1081,12 +1143,13 @@ export default defineComponent({
|
|
|
1081
1143
|
})
|
|
1082
1144
|
])
|
|
1083
1145
|
}
|
|
1084
|
-
return
|
|
1146
|
+
return renderEmptyElement($xeTree)
|
|
1085
1147
|
}
|
|
1086
1148
|
|
|
1087
1149
|
const renderNode = (node: any): VNode => {
|
|
1088
1150
|
const { lazy, showRadio, showCheckbox, showLine, indent, iconOpen, iconClose, iconLoaded, showIcon } = props
|
|
1089
|
-
const {
|
|
1151
|
+
const { currentNode, selectRadioKey, updateExpandedFlag } = reactData
|
|
1152
|
+
const { nodeMaps, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData
|
|
1090
1153
|
const childrenField = computeChildrenField.value
|
|
1091
1154
|
const titleField = computeTitleField.value
|
|
1092
1155
|
const hasChildField = computeHasChildField.value
|
|
@@ -1096,7 +1159,7 @@ export default defineComponent({
|
|
|
1096
1159
|
const titleSlot = slots.title
|
|
1097
1160
|
const extraSlot = slots.extra
|
|
1098
1161
|
const nodeid = getNodeId(node)
|
|
1099
|
-
const isExpand = treeExpandedMaps[nodeid]
|
|
1162
|
+
const isExpand = updateExpandedFlag && treeExpandedMaps[nodeid]
|
|
1100
1163
|
const nodeItem = nodeMaps[nodeid]
|
|
1101
1164
|
const nodeValue = XEUtils.get(node, titleField)
|
|
1102
1165
|
const childVns: VNode[] = []
|
|
@@ -1177,7 +1240,7 @@ export default defineComponent({
|
|
|
1177
1240
|
])
|
|
1178
1241
|
]
|
|
1179
1242
|
: [])
|
|
1180
|
-
:
|
|
1243
|
+
: renderEmptyElement($xeTree),
|
|
1181
1244
|
renderRadio(node, nodeid, isRadioChecked),
|
|
1182
1245
|
renderCheckbox(node, nodeid, isCheckboxChecked),
|
|
1183
1246
|
h('div', {
|
|
@@ -1190,14 +1253,14 @@ export default defineComponent({
|
|
|
1190
1253
|
? h('div', {
|
|
1191
1254
|
class: 'vxe-tree--node-item-extra'
|
|
1192
1255
|
}, getSlotVNs(extraSlot({ node, isExpand })))
|
|
1193
|
-
:
|
|
1256
|
+
: renderEmptyElement($xeTree)
|
|
1194
1257
|
])
|
|
1195
1258
|
]),
|
|
1196
1259
|
hasChild && treeExpandedMaps[nodeid]
|
|
1197
1260
|
? h('div', {
|
|
1198
1261
|
class: 'vxe-tree--node-child-wrapper'
|
|
1199
1262
|
}, childVns)
|
|
1200
|
-
:
|
|
1263
|
+
: renderEmptyElement($xeTree)
|
|
1201
1264
|
])
|
|
1202
1265
|
}
|
|
1203
1266
|
|
|
@@ -1255,7 +1318,7 @@ export default defineComponent({
|
|
|
1255
1318
|
dataFlag.value++
|
|
1256
1319
|
})
|
|
1257
1320
|
watch(dataFlag, () => {
|
|
1258
|
-
|
|
1321
|
+
loadTreeData(props.data || [])
|
|
1259
1322
|
})
|
|
1260
1323
|
|
|
1261
1324
|
watch(() => props.checkNodeKey, (val) => {
|
|
@@ -1275,12 +1338,12 @@ export default defineComponent({
|
|
|
1275
1338
|
|
|
1276
1339
|
onUnmounted(() => {
|
|
1277
1340
|
reactData.treeList = []
|
|
1278
|
-
|
|
1279
|
-
|
|
1341
|
+
internalData.treeExpandedMaps = {}
|
|
1342
|
+
internalData.indeterminateRowMaps = {}
|
|
1343
|
+
internalData.nodeMaps = {}
|
|
1280
1344
|
})
|
|
1281
1345
|
|
|
1282
|
-
|
|
1283
|
-
updateCheckboxChecked(props.checkNodeKeys || [])
|
|
1346
|
+
loadTreeData(props.data || [])
|
|
1284
1347
|
|
|
1285
1348
|
$xeTree.renderVN = renderVN
|
|
1286
1349
|
|