(nodes: TreeNode[])
| 1499 | } |
| 1500 | |
| 1501 | filterTreeNodes(nodes: TreeNode[]): TreeNode[] { |
| 1502 | const search = this.searchString().trim().toLowerCase(); |
| 1503 | if (!search) { |
| 1504 | return nodes; |
| 1505 | } |
| 1506 | |
| 1507 | return nodes.reduce((acc, node) => { |
| 1508 | const children = node.children ? this.filterTreeNodes(node.children) : undefined; |
| 1509 | if (this.isMatch(node) || (children && children.length > 0)) { |
| 1510 | acc.push({ |
| 1511 | ...node, |
| 1512 | children, |
| 1513 | expanded: children && children.length > 0 ? true : node.expanded, |
| 1514 | }); |
| 1515 | } |
| 1516 | return acc; |
| 1517 | }, [] as TreeNode[]); |
| 1518 | } |
| 1519 | |
| 1520 | isMatch(node: TreeNode) { |
| 1521 | return node.name.toLowerCase().includes(this.searchString().toLowerCase()); |
no test coverage detected