UNPKG

carbon-components-angular

Version:
1,886 lines 84.9 kB
<!doctype html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title>carbon-components-angular documentation</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
	   <link rel="stylesheet" href="../styles/style.css">
        <link rel="stylesheet" href="../styles/dark.css">
    
	<style>
		footer.carbon {
			position: absolute;
			bottom: 0;
			width: 100%;
			z-index: 9999;
		}
		#root > div {
			/*
			 * Subtracting the height of the footer to prevent
			 * overlaying the footer ontop of content
			 */
			height: calc(100vh - 48px);
		}
	</style>
</head>
    <body>
          <script>
               // Blocking script to avoid flickering dark mode
               // Dark mode toggle button
               var useDark = window.matchMedia('(prefers-color-scheme: dark)');
               var darkModeState = useDark.matches;
               var $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
               var $darkModeToggles = document.querySelectorAll('.dark-mode-switch');
               var darkModeStateLocal = localStorage.getItem('compodoc_darkmode-state');

               function checkToggle(check) {
                    for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
                         $darkModeToggleSwitchers[i].checked = check;
                    }
               }

               function toggleDarkMode(state) {
                    if (window.localStorage) {
                         localStorage.setItem('compodoc_darkmode-state', state);
                    }

                    checkToggle(state);

                    const hasClass = document.body.classList.contains('dark');

                    if (state) {
                         for (var i = 0; i < $darkModeToggles.length; i++) {
                              $darkModeToggles[i].classList.add('dark');
                         }
                         if (!hasClass) {
                              document.body.classList.add('dark');
                         }
                    } else {
                         for (var i = 0; i < $darkModeToggles.length; i++) {
                              $darkModeToggles[i].classList.remove('dark');
                         }
                         if (hasClass) {
                              document.body.classList.remove('dark');
                         }
                    }
               }

               useDark.addEventListener('change', function (evt) {
                    toggleDarkMode(evt.matches);
               });
               if (darkModeStateLocal) {
                    darkModeState = darkModeStateLocal === 'true';
               }
               toggleDarkMode(darkModeState);
          </script>

        <div class="navbar navbar-default navbar-fixed-top d-md-none p-0">
               <div class="d-flex">
                    <a href="../" class="navbar-brand">carbon-components-angular documentation</a>
                    <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
               </div>
        </div>

        <div class="xs-menu menu" id="mobile-menu">
                <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div>            <compodoc-menu></compodoc-menu>
        </div>

        <div class="container-fluid main">
           <div class="row main">
               <div class="d-none d-md-block menu">
                   <compodoc-menu mode="normal"></compodoc-menu>
               </div>
               <!-- START CONTENT -->
               <div class="content component">
                   <div class="content-data">




<ol class="breadcrumb">
  <li class="breadcrumb-item">Components</li>
  <li class="breadcrumb-item"
  >
  TreeViewComponent</li>
</ol>

<ul class="nav nav-tabs" role="tablist">
        <li class="nav-item">
            <a href="#info" class="nav-link active"
                role="tab" id="info-tab" data-bs-toggle="tab" data-link="info">Info</a>
        </li>
        <li class="nav-item">
            <a href="#source" class="nav-link"
                role="tab" id="source-tab" data-bs-toggle="tab" data-link="source">Source</a>
        </li>
        <li class="nav-item">
            <a href="#tree" class="nav-link"
                role="tab" id="tree-tab" data-bs-toggle="tab" data-link="dom-tree">DOM Tree</a>
        </li>
</ul>

<div class="tab-content">
    <div class="tab-pane fade active in" id="info"><p class="comment">
    <h3>File</h3>
</p>
<p class="comment">
    <code>src/treeview/treeview.component.ts</code>
</p>


    <p class="comment">
        <h3>Description</h3>
    </p>
    <p class="comment">
        <p>Get started with importing the module:</p>
<b>Example :</b><div><pre class="line-numbers"><code class="language-typescript">import { TreeviewModule } from &#39;carbon-components-angular&#39;;</code></pre></div><p><a href="../../?path=/story/components-tree-view--basic">See demo</a></p>

    </p>


    <p class="comment">
        <h3>Implements</h3>
    </p>
    <p class="comment">
                <code>AfterViewInit</code>
                <code>OnInit</code>
                <code>OnDestroy</code>
    </p>


<section data-compodoc="block-metadata">
    <h3>Metadata</h3>
    <table class="table table-sm table-hover metadata">
        <tbody>










            <tr>
                <td class="col-md-3">providers</td>
                <td class="col-md-9">
                                <code><a href="../injectables/TreeViewService.html" target="_self" >TreeViewService</a></code>
                </td>
            </tr>


            <tr>
                <td class="col-md-3">selector</td>
                <td class="col-md-9"><code>cds-tree-view</code></td>
            </tr>





            <tr>
                <td class="col-md-3">template</td>
                <td class="col-md-9"><pre class="line-numbers"><code class="language-html">&lt;label
	*ngIf&#x3D;&quot;label&quot;
	[id]&#x3D;&quot;id&quot;
	class&#x3D;&quot;cds--label&quot;&gt;
	&lt;ng-container *ngIf&#x3D;&quot;!isTemplate(label)&quot;&gt;{{label}}&lt;/ng-container&gt;
	&lt;ng-template
		*ngIf&#x3D;&quot;isTemplate(label)&quot;
		[ngTemplateOutlet]&#x3D;&quot;label&quot;
		[ngTemplateOutletContext]&#x3D;&quot;{ $implicit: labelContext }&quot;&gt;
	&lt;/ng-template&gt;
&lt;/label&gt;
&lt;div
	class&#x3D;&quot;cds--tree&quot;
	[ngClass]&#x3D;&quot;{
		&#x27;cds--tree--sm&#x27;: size &#x3D;&#x3D;&#x3D; &#x27;sm&#x27;,
		&#x27;cds--tree--xs&#x27;: size &#x3D;&#x3D;&#x3D; &#x27;xs&#x27;
	}&quot;
	[attr.aria-label]&#x3D;&quot;label ? label : null&quot;
	[attr.aria-labelledby]&#x3D;&quot;!label ? id : null&quot;
	[attr.aria-multiselectable]&#x3D;&quot;isMultiSelect || null&quot;
	role&#x3D;&quot;tree&quot;
	(keydown)&#x3D;&quot;navigateTree($event)&quot;
	#treeWrapper&gt;
	&lt;ng-container *ngIf&#x3D;&quot;isProjected(); else notProjected&quot;&gt;
		&lt;ng-content&gt;&lt;/ng-content&gt;
	&lt;/ng-container&gt;
	&lt;ng-template #notProjected&gt;
		&lt;cds-tree-node
			*ngFor&#x3D;&quot;let node of tree&quot;
			[node]&#x3D;&quot;node&quot;
			(nodetoggle)&#x3D;&quot;onNodeToggle($event)&quot;&gt;
		&lt;/cds-tree-node&gt;
	&lt;/ng-template&gt;
&lt;/div&gt;
	</code></pre></td>
            </tr>









        </tbody>
    </table>
</section>

    <section data-compodoc="block-index">
    <h3 id="index">Index</h3>
    <table class="table table-sm table-bordered index-table">
        <tbody>
                <tr>
                    <td class="col-md-4">
                        <h6><b>Properties</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                    <span class="modifier">Private</span>
                                <a href="#_tree" >_tree</a>
                            </li>
                            <li>
                                    <span class="modifier"></span>
                                <a href="#root" >root</a>
                            </li>
                            <li>
                                    <span class="modifier">Private</span>
                                <a href="#subscription" >subscription</a>
                            </li>
                            <li>
                                    <span class="modifier">Static</span>
                                <a href="#treeViewCount" >treeViewCount</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#treeViewService" >treeViewService</a>
                            </li>
                            <li>
                                    <span class="modifier">Private</span>
                                <a href="#treeWalker" >treeWalker</a>
                            </li>
                        </ul>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <h6><b>Methods</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                    <span class="modifier">Private</span>
                                <a href="#copyNode" >copyNode</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#isProjected" >isProjected</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#isTemplate" >isTemplate</a>
                            </li>
                            <li>
                                <a href="#navigateTree" >navigateTree</a>
                            </li>
                            <li>
                                <a href="#ngAfterViewInit" >ngAfterViewInit</a>
                            </li>
                            <li>
                                <a href="#ngOnDestroy" >ngOnDestroy</a>
                            </li>
                            <li>
                                <a href="#ngOnInit" >ngOnInit</a>
                            </li>
                            <li>
                                <a href="#onNodeFocusChange" >onNodeFocusChange</a>
                            </li>
                            <li>
                                <a href="#onNodeToggle" >onNodeToggle</a>
                            </li>
                        </ul>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <h6><b>Inputs</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                <a href="#id" >id</a>
                            </li>
                            <li>
                                <a href="#isMultiSelect" >isMultiSelect</a>
                            </li>
                            <li>
                                <a href="#label" >label</a>
                            </li>
                            <li>
                                <a href="#labelContext" >labelContext</a>
                            </li>
                            <li>
                                <a href="#size" >size</a>
                            </li>
                            <li>
                                <a href="#tree" >tree</a>
                            </li>
                        </ul>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <h6><b>Outputs</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                <a href="#select" >select</a>
                            </li>
                            <li>
                                <a href="#toggle" >toggle</a>
                            </li>
                        </ul>
                    </td>
                </tr>



                    <tr>
                        <td class="col-md-4">
                            <h6><b>Accessors</b></h6>
                        </td>
                    </tr>
                    <tr>
                        <td class="col-md-4">
                            <ul class="index-list">
                                <li>
                                    <a href="#tree" >tree</a>
                                </li>
                                <li>
                                    <a href="#isMultiSelect" >isMultiSelect</a>
                                </li>
                            </ul>
                        </td>
                    </tr>
        </tbody>
    </table>
</section>

    <section data-compodoc="block-constructor">
    <h3 id="constructor">Constructor</h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
<code>constructor(document: Document, treeViewService: <a href="../injectables/TreeViewService.html" target="_self">TreeViewService</a>, elementRef: ElementRef)</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="110" class="link-to-prism">src/treeview/treeview.component.ts:110</a></div>
                            </td>
                        </tr>

                <tr>
                    <td class="col-md-4">
                            <div>
                                    <b>Parameters :</b>
                                    <table class="params">
                                        <thead>
                                            <tr>
                                                <td>Name</td>
                                                    <td>Type</td>
                                                <td>Optional</td>
                                            </tr>
                                        </thead>
                                        <tbody>
                                                <tr>
                                                        <td>document</td>
                                                  
                                                        <td>
                                                                    <code>Document</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>treeViewService</td>
                                                  
                                                        <td>
                                                                        <code><a href="../injectables/TreeViewService.html" target="_self" >TreeViewService</a></code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>elementRef</td>
                                                  
                                                        <td>
                                                                    <code>ElementRef</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                        </tbody>
                                    </table>
                            </div>
                    </td>
                </tr>
            </tbody>
        </table>
</section>

    <section data-compodoc="block-inputs">
    <h3 id="inputs">Inputs</h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="id"></a>
                        <b>id</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>&#x60;tree-view-${TreeViewComponent.treeViewCount++}&#x60;</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="84" class="link-to-prism">src/treeview/treeview.component.ts:84</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="isMultiSelect"></a>
                        <b>isMultiSelect</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="100" class="link-to-prism">src/treeview/treeview.component.ts:100</a></div>
                            </td>
                        </tr>
                <tr>
                    <td class="col-md-4">
                        <div class="io-description"><p><strong>Experimental</strong> - Enable to select multiple nodes</p>
</div>
                    </td>
                </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="label"></a>
                        <b>label</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>string | TemplateRef&lt;any&gt;</code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="88" class="link-to-prism">src/treeview/treeview.component.ts:88</a></div>
                            </td>
                        </tr>
                <tr>
                    <td class="col-md-4">
                        <div class="io-description"><p>Tree view label</p>
</div>
                    </td>
                </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="labelContext"></a>
                        <b>labelContext</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="92" class="link-to-prism">src/treeview/treeview.component.ts:92</a></div>
                            </td>
                        </tr>
                <tr>
                    <td class="col-md-4">
                        <div class="io-description"><p>Optional context for label if it&#39;s a template</p>
</div>
                    </td>
                </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="size"></a>
                        <b>size</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>&quot;xs&quot; | &quot;sm&quot;</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>&quot;sm&quot;</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="96" class="link-to-prism">src/treeview/treeview.component.ts:96</a></div>
                            </td>
                        </tr>
                <tr>
                    <td class="col-md-4">
                        <div class="io-description"><p>Specify the size of the list items in the tree</p>
</div>
                    </td>
                </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="tree"></a>
                        <b>tree</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="../interfaces/Node.html" target="_self" >Node[]</a></code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="73" class="link-to-prism">src/treeview/treeview.component.ts:73</a></div>
                            </td>
                        </tr>
                <tr>
                    <td class="col-md-4">
                        <div class="io-description"><p>Pass <code>Node[]</code> array to have tree view render the nodes
Passing value will disregard projected content</p>
</div>
                    </td>
                </tr>
            </tbody>
        </table>
</section>
    <section data-compodoc="block-outputs">
    <h3 id="outputs">Outputs</h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="select"></a>
                        <b>select</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>EventEmitter</code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="104" class="link-to-prism">src/treeview/treeview.component.ts:104</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="toggle"></a>
                        <b>toggle</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>EventEmitter</code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="105" class="link-to-prism">src/treeview/treeview.component.ts:105</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
</section>


    <section data-compodoc="block-methods">
    
    <h3 id="methods">
        Methods
    </h3>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="copyNode"></a>
                    <span class="name">
                            <span class="modifier">Private</span>
                        <span ><b>copyNode</b></span>
                        <a href="#copyNode"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>copyNode(node: <a href="../interfaces/Node.html" target="_self">Node</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="199"
                                    class="link-to-prism">src/treeview/treeview.component.ts:199</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>node</td>
                                            <td>
                                                            <code><a href="../interfaces/Node.html" target="_self" >Node</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="../interfaces/Node.html" target="_self" >Node</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="isProjected"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>isProjected</b></span>
                        <a href="#isProjected"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>isProjected()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="195"
                                    class="link-to-prism">src/treeview/treeview.component.ts:195</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>

                        </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="isTemplate"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>isTemplate</b></span>
                        <a href="#isTemplate"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>isTemplate(value)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="191"
                                    class="link-to-prism">src/treeview/treeview.component.ts:191</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>value</td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="navigateTree"></a>
                    <span class="name">
                        <span ><b>navigateTree</b></span>
                        <a href="#navigateTree"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>navigateTree(event: KeyboardEvent)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="156"
                                    class="link-to-prism">src/treeview/treeview.component.ts:156</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">
                        <div class="io-description"><p>Navigate tree using tree walker</p>
</div>

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Description</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>event</td>
                                            <td>
                                                        <code>KeyboardEvent</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                            <td>
                                                    <ul>
<li>KeyboardEvent</li>
</ul>

                                            </td>
                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="ngAfterViewInit"></a>
                    <span class="name">
                        <span ><b>ngAfterViewInit</b></span>
                        <a href="#ngAfterViewInit"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>ngAfterViewInit()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="138"
                                    class="link-to-prism">src/treeview/treeview.component.ts:138</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">
                        <div class="io-description"><p>Initialize tree walker to support keyboard navigation</p>
</div>

                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="ngOnDestroy"></a>
                    <span class="name">
                        <span ><b>ngOnDestroy</b></span>
                        <a href="#ngOnDestroy"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>ngOnDestroy()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="131"
                                    class="link-to-prism">src/treeview/treeview.component.ts:131</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="ngOnInit"></a>
                    <span class="name">
                        <span ><b>ngOnInit</b></span>
                        <a href="#ngOnInit"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>ngOnInit()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="121"
                                    class="link-to-prism">src/treeview/treeview.component.ts:121</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">
                        <div class="io-description"><p>Subscribe for node selection</p>
</div>

                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="onNodeFocusChange"></a>
                    <span class="name">
                        <span ><b>onNodeFocusChange</b></span>
                        <a href="#onNodeFocusChange"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>onNodeFocusChange(node: <a href="../interfaces/Node.html" target="_self">Node</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="181"
                                    class="link-to-prism">src/treeview/treeview.component.ts:181</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">
                        <div class="io-description"><p>Node focus change</p>
</div>

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Description</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>node</td>
                                            <td>
                                                            <code><a href="../interfaces/Node.html" target="_self" >Node</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                            <td>
                                                    <ul>
<li>Node</li>
</ul>

                                            </td>
                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="onNodeToggle"></a>
                    <span class="name">
                        <span ><b>onNodeToggle</b></span>
                        <a href="#onNodeToggle"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>onNodeToggle(eventOnNode: <a href="../interfaces/EventOnNode.html" target="_self">EventOnNode</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="170"
                                    class="link-to-prism">src/treeview/treeview.component.ts:170</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">
                        <div class="io-description"><p>Propagate node toggle event</p>
</div>

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Description</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>eventOnNode</td>
                                            <td>
                                                            <code><a href="../interfaces/EventOnNode.html" target="_self" >EventOnNode</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                            <td>
                                                    <ul>
<li>EventOnNode</li>
</ul>

                                            </td>
                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
</section>
    <section data-compodoc="block-properties">
    
    <h3 id="inputs">
        Properties
    </h3>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="_tree"></a>
                    <span class="name">
                            <span class="modifier">Private</span>
                        <span ><b>_tree</b></span>
                        <a href="#_tree"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="../interfaces/Node.html" target="_self" >Node[]</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>[]</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="109" class="link-to-prism">src/treeview/treeview.component.ts:109</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="root"></a>
                    <span class="name">
                            <span class="modifier"></span>
                        <span ><b>root</b></span>
                        <a href="#root"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>ElementRef</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <b>Decorators : </b>
                        <br />
                        <code>
                            @ViewChild(&#x27;treeWrapper&#x27;)<br />
                        </code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="106" class="link-to-prism">src/treeview/treeview.component.ts:106</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="subscription"></a>
                    <span class="name">
                            <span class="modifier">Private</span>
                        <span ><b>subscription</b></span>
                        <a href="#subscription"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>Subscription</code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="110" class="link-to-prism">src/treeview/treeview.component.ts:110</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="treeViewCount"></a>
                    <span class="name">
                            <span class="modifier">Static</span>
                        <span ><b>treeViewCount</b></span>
                        <a href="#treeViewCount"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>0</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="82" class="link-to-prism">src/treeview/treeview.component.ts:82</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="treeViewService"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>treeViewService</b></span>
                        <a href="#treeViewService"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="../injectables/TreeViewService.html" target="_self" >TreeViewService</a></code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="114" class="link-to-prism">src/treeview/treeview.component.ts:114</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="treeWalker"></a>
                    <span class="name">
                            <span class="modifier">Private</span>
                        <span ><b>treeWalker</b></span>
                        <a href="#treeWalker"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>TreeWalker</code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="108" class="link-to-prism">src/treeview/treeview.component.ts:108</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
</section>

    <section data-compodoc="block-accessors">
    <h3 id="accessors">
        Accessors
    </h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="tree"></a>
                        <span class="name"><b>tree</b><a href="#tree"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>get</b><code>tree()</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="78" class="link-to-prism">src/treeview/treeview.component.ts:78</a></div>
                                </td>
                            </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>set</b><code>tree(treeNodes: <a href="../interfaces/Node.html" target="_self">Node[]</a>)</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="73" class="link-to-prism">src/treeview/treeview.component.ts:73</a></div>
                                </td>
                            </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-description"><p>Pass <code>Node[]</code> array to have tree view render the nodes
Passing value will disregard projected content</p>
</div>

                                <div class="io-description">
                                        <b>Parameters :</b>
                                        <table class="params">
                                            <thead>
                                                <tr>
                                                    <td>Name</td>
                                                        <td>Type</td>
                                                    <td>Optional</td>
                                                </tr>
                                            </thead>
                                            <tbody>
                                                    <tr>
                                                            <td>treeNodes</td>
                                                    
                                                            <td>
                                                                            <code><a href="../interfaces/Node.html" target="_self" >Node[]</a></code>
                                                            </td>
                                                    
                                                        <td>
                                                                No
                                                        </td>
                                                        
                                                    </tr>
                                            </tbody>
                                        </table>
                                </div>
                                <div>
                                </div>
                                <div class="io-description">
                                    <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                                </div>
                        </td>
                    </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="isMultiSelect"></a>
                        <span class="name"><b>isMultiSelect</b><a href="#isMultiSelect"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>


                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>set</b><code>isMultiSelect(isMulti: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank">boolean</a>)</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="100" class="link-to-prism">src/treeview/treeview.component.ts:100</a></div>
                                </td>
                            </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-description"><p><strong>Experimental</strong> - Enable to select multiple nodes</p>
</div>

                                <div class="io-description">
                                        <b>Parameters :</b>
                                        <table class="params">
                                            <thead>
                                                <tr>
                                                    <td>Name</td>
                                                        <td>Type</td>
                                                    <td>Optional</td>
                                                </tr>
                                            </thead>
                                            <tbody>
                                                    <tr>
                                                            <td>isMulti</td>
                                                    
                                                            <td>
                                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
                                                            </td>
                                                    
                                                        <td>
                                                                No
                                                        </td>
                                                        
                                                    </tr>
                                            </tbody>
                                        </table>
                                </div>
                                <div>
                                </div>
                                <div class="io-description">
                                    <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                                </div>
                        </td>
                    </tr>
            </tbody>
        </table>
</section>
</div>


    <div class="tab-pane fade  tab-source-code" id="source">
        <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { DOCUMENT } from &quot;@angular/common&quot;;
import {
	Component,
	Input,
	Output,
	TemplateRef,
	EventEmitter,
	AfterViewInit,
	Inject,
	ViewChild,
	ElementRef,
	OnInit,
	OnDestroy
} from &quot;@angular/core&quot;;
import { Subscription } from &quot;rxjs&quot;;
import { EventOnNode, Node } from &quot;./tree-node.types&quot;;
import { TreeViewService } from &quot;./treeview.service&quot;;

/**
 * Get started with importing the module:
 *
 * &#x60;&#x60;&#x60;typescript
 * import { TreeviewModule } from &#x27;carbon-components-angular&#x27;;
 * &#x60;&#x60;&#x60;
 *
 * [See demo](../../?path&#x3D;/story/components-tree-view--basic)
 */
@Component({
	selector: &quot;cds-tree-view&quot;,
	template: &#x60;
		&lt;label
			*ngIf&#x3D;&quot;label&quot;
			[id]&#x3D;&quot;id&quot;
			class&#x3D;&quot;cds--label&quot;&gt;
			&lt;ng-container *ngIf&#x3D;&quot;!isTemplate(label)&quot;&gt;{{label}}&lt;/ng-container&gt;
			&lt;ng-template
				*ngIf&#x3D;&quot;isTemplate(label)&quot;
				[ngTemplateOutlet]&#x3D;&quot;label&quot;
				[ngTemplateOutletContext]&#x3D;&quot;{ $implicit: labelContext }&quot;&gt;
			&lt;/ng-template&gt;
		&lt;/label&gt;
		&lt;div
			class&#x3D;&quot;cds--tree&quot;
			[ngClass]&#x3D;&quot;{
				&#x27;cds--tree--sm&#x27;: size &#x3D;&#x3D;&#x3D; &#x27;sm&#x27;,
				&#x27;cds--tree--xs&#x27;: size &#x3D;&#x3D;&#x3D; &#x27;xs&#x27;
			}&quot;
			[attr.aria-label]&#x3D;&quot;label ? label : null&quot;
			[attr.aria-labelledby]&#x3D;&quot;!label ? id : null&quot;
			[attr.aria-multiselectable]&#x3D;&quot;isMultiSelect || null&quot;
			role&#x3D;&quot;tree&quot;
			(keydown)&#x3D;&quot;navigateTree($event)&quot;
			#treeWrapper&gt;
			&lt;ng-container *ngIf&#x3D;&quot;isProjected(); else notProjected&quot;&gt;
				&lt;ng-content&gt;&lt;/ng-content&gt;
			&lt;/ng-container&gt;
			&lt;ng-template #notProjected&gt;
				&lt;cds-tree-node
					*ngFor&#x3D;&quot;let node of tree&quot;
					[node]&#x3D;&quot;node&quot;
					(nodetoggle)&#x3D;&quot;onNodeToggle($event)&quot;&gt;
				&lt;/cds-tree-node&gt;
			&lt;/ng-template&gt;
		&lt;/div&gt;
	&#x60;,
	providers: [TreeViewService]
})
export class TreeViewComponent implements AfterViewInit, OnInit, OnDestroy {
	/**
	 * Pass &#x60;Node[]&#x60; array to have tree view render the nodes
	 * Passing value will disregard projected content
	 */
	@Input() set tree(treeNodes: Node[]) {
		this._tree &#x3D; treeNodes.map((node) &#x3D;&gt; this.copyNode(node));
		this.treeViewService.contentProjected &#x3D; false;
	}

	get tree() {
		return this._tree;
	}

	static treeViewCount &#x3D; 0;

	@Input() id &#x3D; &#x60;tree-view-${TreeViewComponent.treeViewCount++}&#x60;;
	/**
	 * Tree view label
	 */
	@Input() label: string | TemplateRef&lt;any&gt;;
	/**
	 * Optional context for label if it&#x27;s a template
	 */
	@Input() labelContext: any;
	/**
	 * Specify the size of the list items in the tree
	 */
	@Input() size: &quot;xs&quot; | &quot;sm&quot; &#x3D; &quot;sm&quot;;
	/**
	 * **Experimental** - Enable to select multiple nodes
	 */
	@Input() set isMultiSelect(isMulti: boolean) {
		this.treeViewService.isMultiSelect &#x3D; isMulti;
	}

	@Output() select &#x3D; new EventEmitter&lt;Node | Node[]&gt;();
	@Output() toggle &#x3D; new EventEmitter&lt;Node&gt;();
	@ViewChild(&quot;treeWrapper&quot;) root: ElementRef;

	private treeWalker: TreeWalker;
	private _tree: Node[] &#x3D; [];
	private subscription: Subscription;

	constructor(
		@Inject(DOCUMENT) private document: Document,
		public treeViewService: TreeViewService,
		private elementRef: ElementRef
	) {}

	/**
	 * Subscribe for node selection
	 */
	ngOnInit(): void {
		this.subscription &#x3D; this.treeViewService.selectionObservable.subscribe((nodesMap: Map&lt;string, Node&gt;) &#x3D;&gt; {
			// Get all values from the map to emit
			const nodes &#x3D; [...nodesMap.values()];

			this.select.emit(this.treeViewService.isMultiSelect ? nodes : nodes[0]);
		});
		this.subscription.add(this.treeViewService.focusNodeObservable.subscribe(node &#x3D;&gt; this.onNodeFocusChange(node)));
	}

	ngOnDestroy(): void {
		this.subscription.unsubscribe();
	}

	/**
	 * Initialize tree walker to support keyboard navigation
	 */
	ngAfterViewInit(): void {
		this.treeWalker &#x3D; this.document.createTreeWalker(this.root.nativeElement, NodeFilter.SHOW_ELEMENT, {
			acceptNode: function (node: HTMLElement) {
				if (node.classList.contains(&#x60;cds--tree-node--disabled&#x60;)) {
					return NodeFilter.FILTER_REJECT;
				}
				if (node.matches(&#x60;div.cds--tree-node&#x60;)) {
					return NodeFilter.FILTER_ACCEPT;
				}
				return NodeFilter.FILTER_SKIP;
			}
		});
	}

	/**
	 * Navigate tree using tree walker
	 * @param event - KeyboardEvent
	 */
	navigateTree(event: KeyboardEvent) {
		if (event.key &#x3D;&#x3D;&#x3D; &quot;ArrowUp&quot;) {
			(this.treeWalker.previousNode() as HTMLElement)?.focus();
		}

		if (event.key &#x3D;&#x3D;&#x3D; &quot;ArrowDown&quot;) {
			(this.treeWalker.nextNode() as HTMLElement)?.focus();
		}
	}

	/**
	 * Propagate node toggle event
	 * @param eventOnNode - EventOnNode
	 */
	onNodeToggle(eventOnNode: EventOnNode) {
		if (!eventOnNode) {
			return;
		}
		this.toggle.emit(eventOnNode.node);
	}

	/**
	 * Node focus change
	 * @param node - Node
	 */
	onNodeFocusChange(node: Node) {
		if (!node) {
			// if for some reason the focused node is not defined we fallback on the root element of the treeview
			this.treeWalker.currentNode &#x3D; this.treeWalker.root;
			return;
		}
		// Update current node based on focus change to have a better keyboard navigation experience
		this.treeWalker.currentNode &#x3D; this.elementRef.nativeElement.querySelector(&#x60;#${CSS.escape(node.id)}&#x60;);
	}

	public isTemplate(value) {
		return value instanceof TemplateRef;
	}

	public isProjected() {
		return this.treeViewService.contentProjected;
	}

	private copyNode(node: Node): Node {
		// making a recursive shallow copy to avoid performance issues when deeply cloning templateRefs if defined in the node
		const copiedNode &#x3D; Object.assign({}, node);
		if (node.children) {
			copiedNode.children &#x3D; node.children.map(child &#x3D;&gt; this.copyNode(child));
		}
		return copiedNode;
	}
}
</code></pre>
    </div>



    <div class="tab-pane fade " id="tree">
        <div id="tree-container"></div>
        <div class="tree-legend">
            <div class="title">
                <b>Legend</b>
            </div>
            <div>
                <div class="color htmlelement"></div><span>Html element</span>
            </div>
            <div>
                <div class="color component"></div><span>Component</span>
            </div>
            <div>
                <div class="color directive"></div><span>Html element with directive</span>
            </div>
        </div>
    </div>

    
</div>

<script src="../js/libs/vis.min.js"></script>
<script src="../js/libs/htmlparser.js"></script>
<script src="../js/libs/deep-iterator.js"></script>
<script>
        var COMPONENT_TEMPLATE = '<div><label	*ngIf="label"	[id]="id"	class="cds--label">	<ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container>	<ng-template		*ngIf="isTemplate(label)"		[ngTemplateOutlet]="label"		[ngTemplateOutletContext]="{ $implicit: labelContext }">	</ng-template></label><div	class="cds--tree"	[ngClass]="{		\'cds--tree--sm\': size === \'sm\',		\'cds--tree--xs\': size === \'xs\'	}"	[attr.aria-label]="label ? label : null"	[attr.aria-labelledby]="!label ? id : null"	[attr.aria-multiselectable]="isMultiSelect || null"	role="tree"	(keydown)="navigateTree($event)"	#treeWrapper>	<ng-container *ngIf="isProjected(); else notProjected">		<ng-content></ng-content>	</ng-container>	<ng-template #notProjected>		<cds-tree-node			*ngFor="let node of tree"			[node]="node"			(nodetoggle)="onNodeToggle($event)">		</cds-tree-node>	</ng-template></div>	</div>'
    var COMPONENTS = [{'name': 'Accordion', 'selector': 'cds-accordion, ibm-accordion'},{'name': 'AccordionItem', 'selector': 'cds-accordion-item, ibm-accordion-item'},{'name': 'ActionableNotification', 'selector': 'cds-actionable-notification, ibm-actionable-notification'},{'name': 'AlertModal', 'selector': 'cds-alert-modal, ibm-alert-modal'},{'name': 'BaseIconButton', 'selector': ''},{'name': 'BaseNotification', 'selector': ''},{'name': 'BaseTabHeader', 'selector': ''},{'name': 'Breadcrumb', 'selector': 'cds-breadcrumb, ibm-breadcrumb'},{'name': 'BreadcrumbItemComponent', 'selector': 'cds-breadcrumb-item, ibm-breadcrumb-item'},{'name': 'ButtonSet', 'selector': 'cds-button-set, ibm-button-set'},{'name': 'Checkbox', 'selector': 'cds-checkbox, ibm-checkbox'},{'name': 'ClickableTile', 'selector': 'cds-clickable-tile, ibm-clickable-tile'},{'name': 'CodeSnippet', 'selector': 'cds-code-snippet, ibm-code-snippet'},{'name': 'ComboBox', 'selector': 'cds-combo-box, ibm-combo-box'},{'name': 'ComboButtonComponent', 'selector': 'cds-combo-button'},{'name': 'ContainedList', 'selector': 'cds-contained-list, ibm-contained-list'},{'name': 'ContainedListItem', 'selector': 'cds-contained-list-item, ibm-contained-list-item'},{'name': 'ContentSwitcher', 'selector': 'cds-content-switcher, ibm-content-switcher'},{'name': 'ContextMenuComponent', 'selector': 'cds-menu, cds-context-menu, ibm-context-menu'},{'name': 'ContextMenuDividerComponent', 'selector': 'cds-menu-divider, cds-context-menu-divider, ibm-context-menu-divider'},{'name': 'ContextMenuGroupComponent', 'selector': 'cds-menu-group, cds-context-menu-group, ibm-context-menu-group'},{'name': 'ContextMenuItemComponent', 'selector': 'cds-menu-item, cds-context-menu-item, ibm-context-menu-item'},{'name': 'DatePicker', 'selector': 'cds-date-picker, ibm-date-picker'},{'name': 'DatePickerInput', 'selector': 'cds-date-picker-input, ibm-date-picker-input'},{'name': 'Dialog', 'selector': 'cds-dialog, ibm-dialog'},{'name': 'Documentation', 'selector': 'cds-documentation'},{'name': 'Dropdown', 'selector': 'cds-dropdown, ibm-dropdown'},{'name': 'DropdownList', 'selector': 'cds-dropdown-list, ibm-dropdown-list'},{'name': 'ExpandableTile', 'selector': 'cds-expandable-tile, ibm-expandable-tile'},{'name': 'FileComponent', 'selector': 'cds-file, ibm-file'},{'name': 'FileUploader', 'selector': 'cds-file-uploader, ibm-file-uploader'},{'name': 'Hamburger', 'selector': 'cds-hamburger, ibm-hamburger'},{'name': 'Header', 'selector': 'cds-header, ibm-header'},{'name': 'HeaderAction', 'selector': 'cds-header-action, ibm-header-action'},{'name': 'HeaderGlobal', 'selector': 'cds-header-global, ibm-header-global'},{'name': 'HeaderItem', 'selector': 'cds-header-item, ibm-header-item'},{'name': 'HeaderMenu', 'selector': 'cds-header-menu, ibm-header-menu'},{'name': 'HeaderNavigation', 'selector': 'cds-header-navigation, ibm-header-navigation'},{'name': 'IconButton', 'selector': 'cds-icon-button, ibm-icon-button'},{'name': 'InlineLoading', 'selector': 'cds-inline-loading, ibm-inline-loading'},{'name': 'Label', 'selector': 'cds-label, ibm-label'},{'name': 'ListColumn', 'selector': 'cds-list-column, ibm-list-column'},{'name': 'ListHeader', 'selector': 'cds-list-header, ibm-list-header'},{'name': 'ListRow', 'selector': 'cds-list-row, ibm-list-row'},{'name': 'Loading', 'selector': 'cds-loading, ibm-loading'},{'name': 'MenuButtonComponent', 'selector': 'cds-menu-button'},{'name': 'Modal', 'selector': 'cds-modal, ibm-modal'},{'name': 'ModalFooter', 'selector': 'cds-modal-footer, ibm-modal-footer'},{'name': 'ModalHeader', 'selector': 'cds-modal-header, ibm-modal-header'},{'name': 'Notification', 'selector': 'cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification'},{'name': 'NumberComponent', 'selector': 'cds-number, ibm-number'},{'name': 'OverflowMenu', 'selector': 'cds-overflow-menu, ibm-overflow-menu'},{'name': 'OverflowMenuCustomPane', 'selector': 'cds-overflow-custom-menu-pane, ibm-overflow-custom-menu-pane'},{'name': 'OverflowMenuOption', 'selector': 'cds-overflow-menu-option, ibm-overflow-menu-option'},{'name': 'OverflowMenuPane', 'selector': 'cds-overflow-menu-pane, ibm-overflow-menu-pane'},{'name': 'Overlay', 'selector': 'cds-overlay, ibm-overlay'},{'name': 'Pagination', 'selector': 'cds-pagination, ibm-pagination'},{'name': 'PaginationNav', 'selector': 'cds-pagination-nav, ibm-pagination-navm'},{'name': 'PaginationNavItem', 'selector': 'cds-pagination-nav-item, ibm-pagination-nav-item'},{'name': 'PaginationOverflow', 'selector': 'cds-pagination-overflow, ibm-pagination-overflow'},{'name': 'Panel', 'selector': 'cds-panel, ibm-panel'},{'name': 'PasswordInputLabelComponent', 'selector': 'cds-password-label, ibm-password-label'},{'name': 'Placeholder', 'selector': 'cds-placeholder, ibm-placeholder'},{'name': 'PopoverContent', 'selector': 'cds-popover-content, ibm-popover-content'},{'name': 'ProgressBar', 'selector': 'cds-progress-bar, ibm-progress-bar'},{'name': 'ProgressIndicator', 'selector': 'cds-progress-indicator, ibm-progress-indicator'},{'name': 'Radio', 'selector': 'cds-radio, ibm-radio'},{'name': 'RadioGroup', 'selector': 'cds-radio-group, ibm-radio-group'},{'name': 'Search', 'selector': 'cds-search, ibm-search'},{'name': 'Select', 'selector': 'cds-select, ibm-select'},{'name': 'SelectionTile', 'selector': 'cds-selection-tile, ibm-selection-tile'},{'name': 'SideNav', 'selector': 'cds-sidenav, ibm-sidenav'},{'name': 'SideNavItem', 'selector': 'cds-sidenav-item, ibm-sidenav-item'},{'name': 'SideNavMenu', 'selector': 'cds-sidenav-menu, ibm-sidenav-menu'},{'name': 'SkeletonPlaceholder', 'selector': 'cds-skeleton-placeholder, ibm-skeleton-placeholder'},{'name': 'SkeletonText', 'selector': 'cds-skeleton-text, ibm-skeleton-text'},{'name': 'Slider', 'selector': 'cds-slider, ibm-slider'},{'name': 'StructuredList', 'selector': 'cds-structured-list, ibm-structured-list'},{'name': 'SwitcherList', 'selector': 'cds-switcher-list, ibm-switcher-list'},{'name': 'SwitcherListItem', 'selector': 'cds-switcher-list-item, ibm-switcher-list-item'},{'name': 'Tab', 'selector': 'cds-tab, ibm-tab'},{'name': 'TabHeaderGroup', 'selector': 'cds-tab-header-group, ibm-tab-header-group'},{'name': 'TabHeaders', 'selector': 'cds-tab-headers, ibm-tab-headers'},{'name': 'Table', 'selector': 'cds-table, ibm-table'},{'name': 'TableBody', 'selector': '[cdsTableBody], [ibmTableBody]'},{'name': 'TableCheckbox', 'selector': '[cdsTableCheckbox], [ibmTableCheckbox]'},{'name': 'TableContainer', 'selector': 'cds-table-container, ibm-table-container'},{'name': 'TableData', 'selector': '[cdsTableData], [ibmTableData]'},{'name': 'TableExpandButton', 'selector': '[cdsTableExpandButton], [ibmTableExpandButton]'},{'name': 'TableExpandedRow', 'selector': '[cdsTableExpandedRow], [ibmTableExpandedRow]'},{'name': 'TableHead', 'selector': '[cdsTableHead], [ibmTableHead]'},{'name': 'TableHeadCell', 'selector': '[cdsTableHeadCell], [ibmTableHeadCell]'},{'name': 'TableHeadCheckbox', 'selector': '[cdsTableHeadCheckbox], [ibmTableHeadCheckbox]'},{'name': 'TableHeader', 'selector': 'cds-table-header, ibm-table-header'},{'name': 'TableHeadExpand', 'selector': '[cdsTableHeadExpand], [ibmTableHeadExpand]'},{'name': 'TableRadio', 'selector': '[cdsTableRadio], [ibmTableRadio]'},{'name': 'TableRowComponent', 'selector': '[cdsTableRow], [ibmTableRow]'},{'name': 'TableToolbar', 'selector': 'cds-table-toolbar, ibm-table-toolbar'},{'name': 'TableToolbarActions', 'selector': 'cds-table-toolbar-actions, ibm-table-toolbar-actions'},{'name': 'TableToolbarContent', 'selector': 'cds-table-toolbar-content, ibm-table-toolbar-content'},{'name': 'TableToolbarSearch', 'selector': 'cds-table-toolbar-search, ibm-table-toolbar-search'},{'name': 'Tabs', 'selector': 'cds-tabs, ibm-tabs'},{'name': 'TabSkeleton', 'selector': 'cds-tabs-skeleton, ibm-tabs-skeleton'},{'name': 'Tag', 'selector': 'cds-tag, ibm-tag'},{'name': 'TagFilter', 'selector': 'cds-tag-filter, ibm-tag-filter'},{'name': 'TagOperationalComponent', 'selector': 'cds-tag-operational, ibm-tag-operational'},{'name': 'TagSelectableComponent', 'selector': 'cds-tag-selectable, ibm-tag-selectable'},{'name': 'TextareaLabelComponent', 'selector': 'cds-textarea-label, ibm-textarea-label'},{'name': 'TextInputLabelComponent', 'selector': 'cds-text-label, ibm-text-label'},{'name': 'Tile', 'selector': 'cds-tile, ibm-tile'},{'name': 'TileGroup', 'selector': 'cds-tile-group, ibm-tile-group'},{'name': 'TimePicker', 'selector': 'cds-timepicker, ibm-timepicker'},{'name': 'TimePickerSelect', 'selector': 'cds-timepicker-select, ibm-timepicker-select'},{'name': 'Toast', 'selector': 'cds-toast, ibm-toast'},{'name': 'Toggle', 'selector': 'cds-toggle, ibm-toggle'},{'name': 'Toggletip', 'selector': 'cds-toggletip, ibm-toggletip'},{'name': 'Tooltip', 'selector': 'cds-tooltip, ibm-tooltip'},{'name': 'TooltipDefinition', 'selector': 'cds-tooltip-definition, ibm-tooltip-definition'},{'name': 'TreeNodeComponent', 'selector': 'cds-tree-node'},{'name': 'TreeViewComponent', 'selector': 'cds-tree-view'}];
    var DIRECTIVES = [{'name': 'AbstractDropdownView', 'selector': '[cdsAbstractDropdownView], [ibmAbstractDropdownView]'},{'name': 'ActionableButton', 'selector': '[cdsActionableButton], [ibmActionableButton]'},{'name': 'ActionableSubtitle', 'selector': '[cdsActionableSubtitle], [ibmActionableSubtitle]'},{'name': 'ActionableTitle', 'selector': '[cdsActionableTitle], [ibmActionableTitle]'},{'name': 'BaseModal', 'selector': '[cdsBaseModal], [ibmBaseModal]'},{'name': 'Button', 'selector': '[cdsButton], [ibmButton]'},{'name': 'ClickableTileIconDirective', 'selector': '[cdsClickableTileIcon], [ibmClickableTileIcon]'},{'name': 'ColumnDirective', 'selector': '[cdsCol], [ibmCol]'},{'name': 'ContentSwitcherOption', 'selector': '[cdsContentOption], [ibmContentOption]'},{'name': 'DialogDirective', 'selector': '[cdsDialog], [ibmDialog]'},{'name': 'ExpandableTileAboveFoldDirective', 'selector': '[cdsAboveFold], [ibmAboveFold]'},{'name': 'ExpandableTileBelowFoldDirective', 'selector': '[cdsBelowFold], [ibmBelowFold]'},{'name': 'ExpandedRowHover', 'selector': '[cdsExpandedRowHover], [ibmExpandedRowHover]'},{'name': 'GridDirective', 'selector': '[cdsGrid], [ibmGrid]'},{'name': 'IconDirective', 'selector': '[cdsIcon], [ibmIcon]'},{'name': 'LayerDirective', 'selector': '[cdsLayer], [ibmLayer]'},{'name': 'Link', 'selector': '[cdsLink], [ibmLink]'},{'name': 'LinkIconDirective', 'selector': '[ibmLinkIcon], [cdsLinkIcon]'},{'name': 'List', 'selector': '[cdsList], [ibmList]'},{'name': 'ListItemDirective', 'selector': '[cdsListItem], [ibmListItem]'},{'name': 'ModalContent', 'selector': '[cdsModalContent], [ibmModalContent]'},{'name': 'ModalContentText', 'selector': '[cdsModalContentText], [ibmModalContentText]'},{'name': 'ModalHeaderHeading', 'selector': '[cdsModalHeaderHeading], [ibmModalHeaderHeading]'},{'name': 'ModalHeaderLabel', 'selector': '[cdsModalHeaderLabel], [ibmModalHeaderLabel]'},{'name': 'NotificationSubtitle', 'selector': '[cdsNotificationSubtitle], [ibmNotificationSubtitle]'},{'name': 'NotificationTitle', 'selector': '[cdsNotificationTitle], [ibmNotificationTitle]'},{'name': 'OptGroup', 'selector': 'optgroup'},{'name': 'Option', 'selector': 'option'},{'name': 'OverflowMenuDirective', 'selector': '[cdsOverflowMenu], [ibmOverflowMenu]'},{'name': 'PasswordInput', 'selector': '[cdsPassword], [ibmPassword]'},{'name': 'PopoverContainer', 'selector': '[cdsPopover], [ibmPopover]'},{'name': 'RouterLinkExtendedDirective', 'selector': '[routerLink]'},{'name': 'RowDirective', 'selector': '[cdsRow], [ibmRow]'},{'name': 'ScrollableList', 'selector': '[cdsScrollableList], [ibmScrollableList]'},{'name': 'StackDirective', 'selector': '[cdsStack], [ibmStack]'},{'name': 'TabHeader', 'selector': '[cdsTabHeader], [ibmTabHeader]'},{'name': 'TableDirective', 'selector': '[cdsTable], [ibmTable]'},{'name': 'TableHeadCellLabel', 'selector': '[cdsTableHeadCellLabel], [ibmTableHeadCellLabel]'},{'name': 'TableHeaderDescription', 'selector': '[cdsTableHeaderDescription], [ibmTableHeaderDescription]'},{'name': 'TableHeaderTitle', 'selector': '[cdsTableHeaderTitle], [ibmTableHeaderTitle]'},{'name': 'TagIconDirective', 'selector': '[cdsTagIcon], [ibmTagIcon]'},{'name': 'TextArea', 'selector': '[cdsTextArea], [ibmTextArea]'},{'name': 'TextInput', 'selector': '[cdsText], [ibmText]'},{'name': 'ThemeDirective', 'selector': '[cdsTheme], [ibmTheme]'},{'name': 'ToastCaption', 'selector': '[cdsToastCaption], [ibmToastCaption]'},{'name': 'ToastSubtitle', 'selector': '[cdsToastSubtitle], [ibmToastSubtitle]'},{'name': 'ToastTitle', 'selector': '[cdsToastTitle], [ibmToastTitle]'},{'name': 'ToggletipAction', 'selector': '[cdsToggletipAction], [ibmToggletipAction]'},{'name': 'ToggletipButton', 'selector': '[cdsToggletipButton], [ibmToggletipButton]'},{'name': 'ToggletipContent', 'selector': '[cdsToggletipContent], [ibmToggletipContent]'},{'name': 'ToggletipLabel', 'selector': '[cdsToggletipLabel], [ibmToggletipLabel]'}];
    var ACTUAL_COMPONENT = {'name': 'TreeViewComponent'};
</script>
<script src="../js/tree.js"></script>

















                   </div><div class="search-results">
    <div class="has-results">
        <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
        <ul class="search-results-list"></ul>
    </div>
    <div class="no-results">
        <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
    </div>
</div>
</div>
               <!-- END CONTENT -->
           </div>
       </div>

          <label class="dark-mode-switch">
               <input type="checkbox">
               <span class="slider">
                    <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
                    <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
                    </svg>
               </span>
          </label>

       <script>
            var COMPODOC_CURRENT_PAGE_DEPTH = 1;
            var COMPODOC_CURRENT_PAGE_CONTEXT = 'component';
            var COMPODOC_CURRENT_PAGE_URL = 'TreeViewComponent.html';
            var MAX_SEARCH_RESULTS = 15;
       </script>

       <script>
               $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
               checkToggle(darkModeState);
               if ($darkModeToggleSwitchers.length > 0) {
                    for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
                         $darkModeToggleSwitchers[i].addEventListener('change', function (event) {
                              darkModeState = !darkModeState;
                              toggleDarkMode(darkModeState);
                         });
                    }
               }
          </script>

       <script src="../js/libs/custom-elements.min.js"></script>
       <script src="../js/libs/lit-html.js"></script>

       <script src="../js/menu-wc.js" defer></script>
       <script nomodule src="../js/menu-wc_es5.js" defer></script>

       <script src="../js/libs/bootstrap-native.js"></script>

       <script src="../js/libs/es6-shim.min.js"></script>
       <script src="../js/libs/EventDispatcher.js"></script>
       <script src="../js/libs/promise.min.js"></script>
       <script src="../js/libs/zepto.min.js"></script>

       <script src="../js/compodoc.js"></script>

       <script src="../js/tabs.js"></script>
       <script src="../js/menu.js"></script>
       <script src="../js/libs/clipboard.min.js"></script>
       <script src="../js/libs/prism.js"></script>
       <script src="../js/sourceCode.js"></script>
          <script src="../js/search/search.js"></script>
          <script src="../js/search/lunr.min.js"></script>
          <script src="../js/search/search-lunr.js"></script>
          <script src="../js/search/search_index.js"></script>
       <script src="../js/lazy-load-graphs.js"></script>


    

	<footer class="carbon">
		<dds-footer-container key="footer" disable-locale-button="true" size="micro" />
	</footer>

	<script
		key="8"
		type="module"
		src="https://1.www.s81c.com/common/carbon-for-ibm-dotcom/tag/v1/latest/footer.min.js">
	</script>

	<!-- Storybook override -->
	<script>
		document.title = "Carbon Components Angular";
	</script>

	<script
		src="//1.www.s81c.com/common/stats/ibm-common.js"
		type="text/javascript"
		async="async">
	</script>
</body>
</html>