@netang/quasar 0.1.37 → 0.1.39
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/components/tree/index.vue +39 -10
- package/package.json +1 -1
|
@@ -86,11 +86,23 @@
|
|
|
86
86
|
:ticked="item.m.indeterminate === true ? null : item.m.ticked"
|
|
87
87
|
:key="item.key"
|
|
88
88
|
:dark="isDark"
|
|
89
|
-
v-if="
|
|
89
|
+
v-if="hasSlots.defaultHeader"
|
|
90
90
|
/>
|
|
91
91
|
<!-- 否则为文字 -->
|
|
92
92
|
<span v-else>{{ item.label }}</span>
|
|
93
93
|
</div>
|
|
94
|
+
|
|
95
|
+
<!-- 节点插槽 -->
|
|
96
|
+
<slot
|
|
97
|
+
name="node"
|
|
98
|
+
:node="item.node"
|
|
99
|
+
:expanded="item.m.expanded"
|
|
100
|
+
:ticked="item.m.indeterminate === true ? null : item.m.ticked"
|
|
101
|
+
:key="item.key"
|
|
102
|
+
:dark="isDark"
|
|
103
|
+
v-if="hasSlots.node"
|
|
104
|
+
/>
|
|
105
|
+
|
|
94
106
|
</div>
|
|
95
107
|
</q-virtual-scroll>
|
|
96
108
|
</template>
|
|
@@ -183,6 +195,9 @@ export default {
|
|
|
183
195
|
|
|
184
196
|
// 【覆盖声明】-------------------------------------------------------
|
|
185
197
|
|
|
198
|
+
// 是否选择的是树节点数据(false:节点键值, true:节点数据)
|
|
199
|
+
selectedNode: Boolean,
|
|
200
|
+
|
|
186
201
|
// 是否开启拖拽
|
|
187
202
|
draggable: Boolean,
|
|
188
203
|
// 是否禁止上下推拽
|
|
@@ -303,6 +318,13 @@ export default {
|
|
|
303
318
|
*/
|
|
304
319
|
const computedControlColor = computed(() => props.controlColor || props.color)
|
|
305
320
|
|
|
321
|
+
/**
|
|
322
|
+
* 当前已选数据键值
|
|
323
|
+
*/
|
|
324
|
+
const currentSelectedKey = computed(function () {
|
|
325
|
+
return props.selectedNode ? props.selected[props.nodeKey] : props.selected
|
|
326
|
+
})
|
|
327
|
+
|
|
306
328
|
/**
|
|
307
329
|
* 文本颜色类名
|
|
308
330
|
*/
|
|
@@ -374,7 +396,7 @@ export default {
|
|
|
374
396
|
children: [],
|
|
375
397
|
matchesFilter: props.filter ? computedFilterMethod.value(node, props.filter) : true,
|
|
376
398
|
|
|
377
|
-
selected: key ===
|
|
399
|
+
selected: key === currentSelectedKey.value && selectable === true,
|
|
378
400
|
selectable,
|
|
379
401
|
expanded: isParent === true ? innerExpanded.value.includes(key) : false,
|
|
380
402
|
expandable,
|
|
@@ -879,10 +901,14 @@ export default {
|
|
|
879
901
|
if (hasSelection.value && meta.selectable) {
|
|
880
902
|
|
|
881
903
|
if (props.noSelectionUnset === false) {
|
|
882
|
-
emit('update:selected', meta.key !==
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
904
|
+
emit('update:selected', meta.key !== currentSelectedKey.value ? (
|
|
905
|
+
props.selectedNode ? node : meta.key
|
|
906
|
+
) : null)
|
|
907
|
+
|
|
908
|
+
} else if (meta.key !== currentSelectedKey.value) {
|
|
909
|
+
emit('update:selected', meta.key === void 0 ? null : (
|
|
910
|
+
props.selectedNode ? node : meta.key
|
|
911
|
+
))
|
|
886
912
|
}
|
|
887
913
|
|
|
888
914
|
} else {
|
|
@@ -1063,10 +1089,13 @@ export default {
|
|
|
1063
1089
|
// ==========【覆盖部分】=========================================================================================
|
|
1064
1090
|
|
|
1065
1091
|
/**
|
|
1066
|
-
*
|
|
1092
|
+
* 是否有默认插槽
|
|
1067
1093
|
*/
|
|
1068
|
-
const
|
|
1069
|
-
return
|
|
1094
|
+
const hasSlots = computed(function () {
|
|
1095
|
+
return {
|
|
1096
|
+
defaultHeader: $n_has(slots, 'default-header'),
|
|
1097
|
+
node: $n_has(slots, 'node'),
|
|
1098
|
+
}
|
|
1070
1099
|
})
|
|
1071
1100
|
|
|
1072
1101
|
/**
|
|
@@ -1508,7 +1537,7 @@ export default {
|
|
|
1508
1537
|
collapseAll,
|
|
1509
1538
|
stopAndPrevent,
|
|
1510
1539
|
|
|
1511
|
-
|
|
1540
|
+
hasSlots,
|
|
1512
1541
|
currentChildren,
|
|
1513
1542
|
|
|
1514
1543
|
onNode,
|