(nodes: TreeNode[])
| 1450 | } |
| 1451 | |
| 1452 | filterTreeNodes(nodes: TreeNode[]): TreeNode[] { |
| 1453 | const search = this.searchString().trim().toLowerCase(); |
| 1454 | if (!search) { |
| 1455 | return nodes; |
| 1456 | } |
| 1457 | |
| 1458 | return nodes.reduce((acc, node) => { |
| 1459 | const children = node.children ? this.filterTreeNodes(node.children) : undefined; |
| 1460 | if (this.isMatch(node) || (children && children.length > 0)) { |
| 1461 | acc.push({ |
| 1462 | ...node, |
| 1463 | children, |
| 1464 | expanded: children && children.length > 0 ? true : node.expanded, |
| 1465 | }); |
| 1466 | } |
| 1467 | return acc; |
| 1468 | }, [] as TreeNode[]); |
| 1469 | } |
| 1470 | |
| 1471 | isMatch(node: TreeNode) { |
| 1472 | return node.name.toLowerCase().includes(this.searchString().toLowerCase()); |
no test coverage detected