Forráskód Böngészése

fix: 节点选中时过滤父节点禁用状态

zouawen 9 hónapja
szülő
commit
a4b8f8f795
1 módosított fájl, 9 hozzáadás és 7 törlés
  1. 9 7
      packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue

+ 9 - 7
packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue

@@ -200,11 +200,12 @@ function onSelect(item: FlattenedItem<Recordable<any>>, isSelected: boolean) {
           get(i.value, props.valueField) === get(item.value, props.valueField)
         );
       })
-      ?.parents?.forEach((p) => {
-      if (Array.isArray(modelValue.value) && !modelValue.value.includes(p)) {
-        modelValue.value.push(p);
-      }
-    });
+      ?.parents?.filter((item) => !get(item, props.disabledField))
+      ?.forEach((p) => {
+        if (Array.isArray(modelValue.value) && !modelValue.value.includes(p)) {
+          modelValue.value.push(p);
+        }
+      });
   }
   if (
     !props.checkStrictly &&
@@ -218,7 +219,8 @@ function onSelect(item: FlattenedItem<Recordable<any>>, isSelected: boolean) {
           get(i.value, props.valueField) === get(item.value, props.valueField)
         );
       })
-      ?.parents?.reverse()
+      ?.parents?.filter((item) => !get(item, props.disabledField))
+      ?.reverse()
       .forEach((p) => {
         const children = flattenData.value.filter((i) => {
           return (
@@ -324,7 +326,7 @@ defineExpose({
         :class="
           cn('cursor-pointer', getNodeClass?.(item), {
             'data-[selected]:bg-accent': !multiple,
-            'cursor-not-allowed': isNodeDisabled(item),
+            'text-foreground/50 cursor-not-allowed': isNodeDisabled(item),
           })
         "
         v-bind="