diff --git a/src/components/shared/TreeView.vue b/src/components/shared/TreeView.vue index daae9c8c..4dd20c9d 100644 --- a/src/components/shared/TreeView.vue +++ b/src/components/shared/TreeView.vue @@ -93,22 +93,16 @@ function toggleExpand(node: Node, ancestor?: []) { emits('open', node, ancestor); } -function filterNode(text: string, node: Node, ancestor?: Node[]) { - if (!text) return; +function visibleNode(text: string, node: Node, ancestor?: Node[]): boolean { + if (!text) return true; const getTitle = (n: Node): string => n[props.keyTitle || 'title']; const getSubtitle = (n: Node): string => n[props.keySubtitle || 'subtitle']; - const recursiveFilter = (n: Node): boolean => { - if (!n.children) { - return getTitle(n).includes(text) || getSubtitle(n).includes(text); - } - return n.children.some((v) => recursiveFilter(v)); - }; return ( - ancestor?.some( + [node, ...(ancestor || [])].some( (v) => getTitle(v).includes(text) || getSubtitle(v).includes(text), - ) || recursiveFilter(node) + ) || (node.children || []).some((v) => visibleNode(text, v, [])) ); } @@ -124,7 +118,7 @@ function filterNode(text: string, node: Node, ancestor?: Node[]) {