Skip to content

Commit

Permalink
fix(tree): fix checkAll effects disabled node
Browse files Browse the repository at this point in the history
  • Loading branch information
mynetfan committed Jul 30, 2021
1 parent e8eefd1 commit ddd1893
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.zh_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
- **ImgRotateDragVerify** 修复组件`resume`方法无法调用的问题
- **TableAction** 修复 stopButtonPropagation 属性某些情况下不起作用的问题
- **PageWrapper** 修复`class`属性无效的问题
- **BasicTree** 修复`checkAll`方法会影响到`disabled`状态节点的问题
- **BasicTable**
- 修复可编辑单元格不支持`ellipsis`配置的问题
- 修复全屏模式下看不到子组件弹出层(popconfirm 以及 select、treeSelect 等编辑组件)的问题
Expand Down
3 changes: 2 additions & 1 deletion src/components/Tree/src/Tree.vue
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@
updateNodeByKey,
getAllKeys,
getChildrenKeys,
getEnabledKeys,
} = useTree(treeDataRef, getReplaceFields);
function getIcon(params: Recordable, icon?: string) {
Expand Down Expand Up @@ -180,7 +181,7 @@
}
function checkAll(checkAll: boolean) {
state.checkedKeys = checkAll ? getAllKeys() : ([] as Keys);
state.checkedKeys = checkAll ? getEnabledKeys() : ([] as Keys);
}
function expandAll(expandAll: boolean) {
Expand Down
18 changes: 18 additions & 0 deletions src/components/Tree/src/useTree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,23 @@ export function useTree(
}
return keys as Keys;
}
// get keys that can be checked and selected
function getEnabledKeys(list?: TreeDataItem[]) {
const keys: string[] = [];
const treeData = list || unref(treeDataRef);
const { key: keyField, children: childrenField } = unref(getReplaceFields);
if (!childrenField || !keyField) return keys;

for (let index = 0; index < treeData.length; index++) {
const node = treeData[index];
node.disabled !== true && node.selectable !== false && keys.push(node[keyField]!);
const children = node[childrenField];
if (children && children.length) {
keys.push(...(getEnabledKeys(children) as string[]));
}
}
return keys as Keys;
}

function getChildrenKeys(nodeKey: string | number, list?: TreeDataItem[]): Keys {
const keys: Keys = [];
Expand Down Expand Up @@ -169,5 +186,6 @@ export function useTree(
updateNodeByKey,
getAllKeys,
getChildrenKeys,
getEnabledKeys,
};
}

0 comments on commit ddd1893

Please sign in to comment.