|
@@ -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 = [];
|
|
@@ -169,5 +186,6 @@ export function useTree(
|
|
|
updateNodeByKey,
|
|
|
getAllKeys,
|
|
|
getChildrenKeys,
|
|
|
+ getEnabledKeys,
|
|
|
};
|
|
|
}
|