• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

IgniteUI / igniteui-angular / 26023601418

18 May 2026 08:57AM UTC coverage: 4.854% (-85.3%) from 90.174%
26023601418

Pull #17281

github

web-flow
Merge e7ce7a18e into 5a85df190
Pull Request #17281: feat: Added virtual scroll component and sample implementation

400 of 17347 branches covered (2.31%)

Branch coverage included in aggregate %.

63 of 222 new or added lines in 4 files covered. (28.38%)

27932 existing lines in 341 files now uncovered.

2022 of 32547 relevant lines covered (6.21%)

0.72 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

13.33
/projects/igniteui-angular/tree/src/tree/tree.service.ts
1
import { Injectable } from '@angular/core';
2
import { IgxTree, IgxTreeNode } from './common';
3

4
/** @hidden @internal */
5
@Injectable()
6
export class IgxTreeService {
3✔
7
    public expandedNodes: Set<IgxTreeNode<any>> = new Set<IgxTreeNode<any>>();
6✔
8
    public collapsingNodes: Set<IgxTreeNode<any>> = new Set<IgxTreeNode<any>>();
6✔
9
    private tree: IgxTree;
10

11
    /**
12
     * Adds the node to the `expandedNodes` set and fires the nodes change event
13
     *
14
     * @param node target node
15
     * @param uiTrigger is the event triggered by a ui interraction (so we know if we should animate)
16
     * @returns void
17
     */
18
    public expand(node: IgxTreeNode<any>, uiTrigger?: boolean): void {
UNCOV
19
        this.collapsingNodes.delete(node);
×
UNCOV
20
        if (!this.expandedNodes.has(node)) {
×
UNCOV
21
            node.expandedChange.emit(true);
×
22
        } else {
UNCOV
23
            return;
×
24
        }
UNCOV
25
        this.expandedNodes.add(node);
×
UNCOV
26
        if (this.tree.singleBranchExpand) {
×
UNCOV
27
            this.tree.findNodes(node, this.siblingComparer)?.forEach(e => {
×
UNCOV
28
                if (uiTrigger) {
×
UNCOV
29
                    e.collapse();
×
30
                } else {
UNCOV
31
                    e.expanded = false;
×
32
                }
33
            });
34
        }
35
    }
36

37
    /**
38
     * Adds a node to the `collapsing` collection
39
     *
40
     * @param node target node
41
     */
42
    public collapsing(node: IgxTreeNode<any>): void {
UNCOV
43
        this.collapsingNodes.add(node);
×
44
    }
45

46
    /**
47
     * Removes the node from the 'expandedNodes' set and emits the node's change event
48
     *
49
     * @param node target node
50
     * @returns void
51
     */
52
    public collapse(node: IgxTreeNode<any>): void {
UNCOV
53
        if (this.expandedNodes.has(node)) {
×
UNCOV
54
            node.expandedChange.emit(false);
×
55
        }
UNCOV
56
        this.collapsingNodes.delete(node);
×
UNCOV
57
        this.expandedNodes.delete(node);
×
58
    }
59

60
    public isExpanded(node: IgxTreeNode<any>): boolean {
UNCOV
61
        return this.expandedNodes.has(node);
×
62
    }
63

64
    public register(tree: IgxTree) {
UNCOV
65
        this.tree = tree;
×
66
    }
67

68
    private siblingComparer:
6✔
69
    (data: IgxTreeNode<any>, node: IgxTreeNode<any>) => boolean =
70
    (data: IgxTreeNode<any>, node: IgxTreeNode<any>) => node !== data && node.level === data.level;
×
71
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc