소스 검색

fix: 全选时过滤disabled的节点

zouawen 9 달 전
부모
커밋
dfa2ac3435
2개의 변경된 파일12개의 추가작업 그리고 11개의 파일을 삭제
  1. 12 10
      packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue
  2. 0 1
      packages/@core/ui-kit/shadcn-ui/src/ui/tree/types.ts

+ 12 - 10
packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue

@@ -159,19 +159,21 @@ function collapseAll() {
 }
 
 function checkAll() {
-  if (props.multiple) {
-    modelValue.value = flattenData.value.map((item) =>
-      get(item.value, props.valueField),
-    );
-    updateTreeValue();
-  }
+  if (!props.multiple) return;
+  modelValue.value = [
+    ...new Set(
+      flattenData.value
+        .filter((item) => !get(item.value, props.disabledField))
+        .map((item) => get(item.value, props.valueField)),
+    ),
+  ];
+  updateTreeValue();
 }
 
 function unCheckAll() {
-  if (props.multiple) {
-    modelValue.value = [];
-    updateTreeValue();
-  }
+  if (!props.multiple) return;
+  modelValue.value = [];
+  updateTreeValue();
 }
 
 function isNodeDisabled(item: FlattenedItem<Recordable<any>>) {

+ 0 - 1
packages/@core/ui-kit/shadcn-ui/src/ui/tree/types.ts

@@ -51,7 +51,6 @@ export function treePropsDefaults() {
     defaultExpandedLevel: 0,
     disabled: false,
     disabledField: 'disabled',
-    expanded: () => [],
     iconField: 'icon',
     labelField: 'label',
     multiple: false,