UNPKG

@rxap/tree

Version:

This package provides a tree component and data source for Angular applications. It includes features such as searching, filtering, and displaying hierarchical data. The package also offers directives for customizing the content of tree nodes.

2,062 lines 85.1 kB
<!doctype html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title>angular-tree</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">
    </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">angular-tree</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"
  >
  TreeComponent</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="#templateData" class="nav-link"
                role="tab" id="templateData-tab" data-bs-toggle="tab" data-link="template">Template</a>
        </li>
        <li class="nav-item">
            <a href="#styleData" class="nav-link"
                role="tab" id="styleData-tab" data-bs-toggle="tab" data-link="style">Styles</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/lib/tree.component.ts</code>
</p>




    <p class="comment">
        <h3>Implements</h3>
    </p>
    <p class="comment">
                <code>OnInit</code>
                <code>AfterContentInit</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">changeDetection</td>
                <td class="col-md-9"><code>ChangeDetectionStrategy.OnPush</code></td>
            </tr>











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


            <tr>
                <td class="col-md-3">imports</td>
                <td class="col-md-9">
                            <code>NgStyle</code>
                            <code>NgIf</code>
                            <code>MatProgressBarModule</code>
                            <code>MatTreeModule</code>
                            <code>MatIconModule</code>
                            <code>IconDirective</code>
                            <code>MatCheckboxModule</code>
                            <code>MatButtonModule</code>
                            <code>ContenteditableDirective</code>
                            <code>MatProgressSpinnerModule</code>
                            <code>MatDividerModule</code>
                            <code>PortalModule</code>
                            <code>AsyncPipe</code>
                            <code>NgClass</code>
                            <code>NgForOf</code>
                </td>
            </tr>

            <tr>
                <td class="col-md-3">styleUrls</td>
                <td class="col-md-9"><code>./tree.component.scss</code></td>
            </tr>



            <tr>
                <td class="col-md-3">templateUrl</td>
                <td class="col-md-9"><code>./tree.component.html</code></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"></span>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Optional</span>
                                <a href="#content" >content</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#getLevel" >getLevel</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#hasChild" >hasChild</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#isExpandable" >isExpandable</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#portal" >portal</a>
                            </li>
                            <li>
                                    <span class="modifier"></span>
                                    <span class="modifier"></span>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Readonly</span>
                                <a href="#searchForm" >searchForm</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Readonly</span>
                                <a href="#showTreeNavigation" >showTreeNavigation</a>
                            </li>
                            <li>
                                    <span class="modifier"></span>
                                    <span class="modifier">Public</span>
                                <a href="#treeContainer" >treeContainer</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#treeControl" >treeControl</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">Public</span>
                                <a href="#onContentEditableChange" >onContentEditableChange</a>
                            </li>
                            <li>
                                <a href="#onMousedown" >onMousedown</a>
                            </li>
                            <li>
                                    <span class="modifier"></span>
                                <a href="#onMousemove" >onMousemove</a>
                            </li>
                            <li>
                                    <span class="modifier"></span>
                                <a href="#onMouseup" >onMouseup</a>
                            </li>
                            <li>
                                    <span class="modifier"></span>
                                    <span class="modifier">Public</span>
                                <a href="#openDetails" >openDetails</a>
                            </li>
                            <li>
                                <a href="#toggleTreeNavigation" >toggleTreeNavigation</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="#contentEditableMethod" >contentEditableMethod</a>
                            </li>
                            <li>
                                <a href="#dataSource" >dataSource</a>
                            </li>
                            <li>
                                <a href="#dividerOffset" >dividerOffset</a>
                            </li>
                            <li>
                                <a href="#getIcon" >getIcon</a>
                            </li>
                            <li>
                                <a href="#getStyle" >getStyle</a>
                            </li>
                            <li>
                                <a href="#getType" >getType</a>
                            </li>
                            <li>
                                <a href="#hasDetails" >hasDetails</a>
                            </li>
                            <li>
                                <a href="#hideLeafIcon" >hideLeafIcon</a>
                            </li>
                            <li>
                                <a href="#id" >id</a>
                            </li>
                            <li>
                                <a href="#multiple" >multiple</a>
                            </li>
                            <li>
                                <a href="#toDisplay" >toDisplay</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="#details" >details</a>
                            </li>
                        </ul>
                    </td>
                </tr>


                <tr>
                    <td class="col-md-4">
                        <h6><b>HostListeners</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                <a href="#mousemove" >mousemove</a>
                            </li>
                            <li>
                                <a href="#mouseup" >mouseup</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="#nodeDisplayEditable" >nodeDisplayEditable</a>
                                </li>
                                <li>
                                    <a href="#cacheId" >cacheId</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(viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef, contentEditableMethod: Method<any | string | null> | null, renderer: Renderer2, elementRef: ElementRef<HTMLElement>, searchForm: <a href="../injectables/SearchForm.html" target="_self">SearchForm | null</a>)</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="136" class="link-to-prism">src/lib/tree.component.ts:136</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>viewContainerRef</td>
                                                  
                                                        <td>
                                                                    <code>ViewContainerRef</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>cdr</td>
                                                  
                                                        <td>
                                                                    <code>ChangeDetectorRef</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>contentEditableMethod</td>
                                                  
                                                        <td>
                                                                    <code>Method&lt;any | string | null&gt; | null</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>renderer</td>
                                                  
                                                        <td>
                                                                    <code>Renderer2</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>elementRef</td>
                                                  
                                                        <td>
                                                                    <code>ElementRef&lt;HTMLElement&gt;</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>searchForm</td>
                                                  
                                                        <td>
                                                                        <code><a href="../injectables/SearchForm.html" target="_self" >SearchForm | null</a></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="contentEditableMethod"></a>
                        <b>contentEditableMethod</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>Method&lt;any | string | null&gt; | null</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/lib/tree.component.ts:96</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="dataSource"></a>
                        <b>dataSource</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="../injectables/TreeDataSource.html" target="_self" >TreeDataSource&lt;Data&gt;</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Required : </i>&nbsp;<b>true</b>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="94" class="link-to-prism">src/lib/tree.component.ts:94</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="dividerOffset"></a>
                        <b>dividerOffset</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>&#x27;256px&#x27;</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="118" class="link-to-prism">src/lib/tree.component.ts:118</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="getIcon"></a>
                        <b>getIcon</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>NodeGetIconFunction&lt;any&gt;</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/lib/tree.component.ts:100</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="getStyle"></a>
                        <b>getStyle</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>NodeGetStyleFunction&lt;any&gt;</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/lib/tree.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="getType"></a>
                        <b>getType</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>NodeGetTypeFunction&lt;any&gt;</code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="102" class="link-to-prism">src/lib/tree.component.ts:102</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="hasDetails"></a>
                        <b>hasDetails</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>NodeHasDetailsFunction&lt;any&gt;</code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="108" class="link-to-prism">src/lib/tree.component.ts:108</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="hideLeafIcon"></a>
                        <b>hideLeafIcon</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-4">
                        <i>Default value : </i><code>false</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="112" class="link-to-prism">src/lib/tree.component.ts:112</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <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-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="114" class="link-to-prism">src/lib/tree.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="multiple"></a>
                        <b>multiple</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-4">
                        <i>Default value : </i><code>false</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="106" class="link-to-prism">src/lib/tree.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="toDisplay"></a>
                        <b>toDisplay</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>NodeToDisplayFunction&lt;any&gt;</code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="98" class="link-to-prism">src/lib/tree.component.ts:98</a></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="details"></a>
                        <b>details</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="116" class="link-to-prism">src/lib/tree.component.ts:116</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
</section>

    <section data-compodoc="block-methods">
    <h3>HostListeners</h3>    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="mousemove"></a>
                    <span class="name">
                        <span ><b>mousemove</b></span>
                        <a href="#mousemove"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                    <i>Arguments : </i><code>'$event' </code>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>mousemove($event: MouseEvent)</code>
                </td>
            </tr>


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


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


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="230"
                                    class="link-to-prism">src/lib/tree.component.ts:230</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="onContentEditableChange"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>onContentEditableChange</b></span>
                        <a href="#onContentEditableChange"><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>onContentEditableChange(value: string | null, node: Node<Data>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="220"
                                    class="link-to-prism">src/lib/tree.component.ts:220</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>value</td>
                                            <td>
                                                        <code>string | null</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>node</td>
                                            <td>
                                                        <code>Node&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </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" >any</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="onMousedown"></a>
                    <span class="name">
                        <span ><b>onMousedown</b></span>
                        <a href="#onMousedown"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>onMousedown()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="225"
                                    class="link-to-prism">src/lib/tree.component.ts:225</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="onMousemove"></a>
                    <span class="name">
                            <span class="modifier"></span>
                        <span ><b>onMousemove</b></span>
                        <a href="#onMousemove"><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>onMousemove($event: MouseEvent)</code>
                </td>
            </tr>

            <tr>
                <td class="col-md-4">
                    <b>Decorators : </b>
                    <br />
                    <code>@HostListener(&#x27;mousemove&#x27;, [&#x27;$event&#x27;])<br /></code>
                </td>
            </tr>

                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="235"
                                    class="link-to-prism">src/lib/tree.component.ts:235</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>$event</td>
                                            <td>
                                                        <code>MouseEvent</code>
                                            </td>

                                            <td>
                                                    No
                                            </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="onMouseup"></a>
                    <span class="name">
                            <span class="modifier"></span>
                        <span ><b>onMouseup</b></span>
                        <a href="#onMouseup"><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>onMouseup()</code>
                </td>
            </tr>

            <tr>
                <td class="col-md-4">
                    <b>Decorators : </b>
                    <br />
                    <code>@HostListener(&#x27;mouseup&#x27;)<br /></code>
                </td>
            </tr>

                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="230"
                                    class="link-to-prism">src/lib/tree.component.ts:230</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="openDetails"></a>
                    <span class="name">
                            <span class="modifier"></span>
                            <span class="modifier">Public</span>
                        <span ><b>openDetails</b></span>
                        <a href="#openDetails"><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>openDetails(node: Node<Data>)</code>
                </td>
            </tr>

            <tr>
                <td class="col-md-4">
                    <b>Decorators : </b>
                    <br />
                    <code>@DebounceCall(100)<br /></code>
                </td>
            </tr>

                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="205"
                                    class="link-to-prism">src/lib/tree.component.ts:205</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>Node&lt;Data&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </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="toggleTreeNavigation"></a>
                    <span class="name">
                        <span ><b>toggleTreeNavigation</b></span>
                        <a href="#toggleTreeNavigation"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>toggleTreeNavigation()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="249"
                                    class="link-to-prism">src/lib/tree.component.ts:249</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>
</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="content"></a>
                    <span class="name">
                            <span class="modifier"></span>
                            <span class="modifier">Public</span>
                            <span class="modifier">Optional</span>
                        <span ><b>content</b></span>
                        <a href="#content"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="../directives/TreeContentDirective.html" target="_self" >TreeContentDirective</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <b>Decorators : </b>
                        <br />
                        <code>
                            @ContentChild(TreeContentDirective, {static: true})<br />
                        </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/lib/tree.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="getLevel"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>getLevel</b></span>
                        <a href="#getLevel"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>() &#x3D;&gt; {...}</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="164" class="link-to-prism">src/lib/tree.component.ts:164</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="hasChild"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>hasChild</b></span>
                        <a href="#hasChild"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>() &#x3D;&gt; {...}</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="168" class="link-to-prism">src/lib/tree.component.ts:168</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="isExpandable"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>isExpandable</b></span>
                        <a href="#isExpandable"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>() &#x3D;&gt; {...}</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="166" class="link-to-prism">src/lib/tree.component.ts:166</a></div>
                        </td>
                    </tr>


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

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


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

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <b>Decorators : </b>
                        <br />
                        <code>
                            @Optional()<br />@Inject(RXAP_FORM_DEFINITION)<br />
                        </code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="150" class="link-to-prism">src/lib/tree.component.ts:150</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="showTreeNavigation"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Readonly</span>
                        <span ><b>showTreeNavigation</b></span>
                        <a href="#showTreeNavigation"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>signal(true)</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="123" class="link-to-prism">src/lib/tree.component.ts:123</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="treeContainer"></a>
                    <span class="name">
                            <span class="modifier"></span>
                            <span class="modifier">Public</span>
                        <span ><b>treeContainer</b></span>
                        <a href="#treeContainer"><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;treeContainer&#x27;, {static: true})<br />
                        </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/lib/tree.component.ts:121</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="treeControl"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>treeControl</b></span>
                        <a href="#treeControl"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>FlatTreeControl&lt;Node&lt;Data&gt;&gt;</code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="92" class="link-to-prism">src/lib/tree.component.ts:92</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="nodeDisplayEditable"></a>
                        <span class="name"><b>nodeDisplayEditable</b><a href="#nodeDisplayEditable"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>

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

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

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>get</b><code>cacheId()</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="160" class="link-to-prism">src/lib/tree.component.ts:160</a></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 {
  PortalModule,
  TemplatePortal,
} from &#x27;@angular/cdk/portal&#x27;;
import { FlatTreeControl } from &#x27;@angular/cdk/tree&#x27;;
import {
  AsyncPipe,
  NgClass,
  NgForOf,
  NgIf,
  NgStyle,
} from &#x27;@angular/common&#x27;;
import {
  AfterContentInit,
  ChangeDetectionStrategy,
  ChangeDetectorRef,
  Component,
  ContentChild,
  ElementRef,
  EventEmitter,
  HostListener,
  Inject,
  Input,
  isDevMode,
  OnInit,
  Optional,
  Output,
  Renderer2,
  signal,
  ViewChild,
  ViewContainerRef,
} from &#x27;@angular/core&#x27;;
import { MatButtonModule } from &#x27;@angular/material/button&#x27;;
import { MatCheckboxModule } from &#x27;@angular/material/checkbox&#x27;;
import { MatDividerModule } from &#x27;@angular/material/divider&#x27;;
import { MatIconModule } from &#x27;@angular/material/icon&#x27;;
import { MatProgressBarModule } from &#x27;@angular/material/progress-bar&#x27;;
import { MatProgressSpinnerModule } from &#x27;@angular/material/progress-spinner&#x27;;
import { MatTreeModule } from &#x27;@angular/material/tree&#x27;;
import { ContenteditableDirective } from &#x27;@rxap/contenteditable&#x27;;
import {
  Node,
  NodeGetIconFunction,
  NodeGetStyleFunction,
  NodeGetTypeFunction,
  NodeHasDetailsFunction,
  NodeToDisplayFunction,
} from &#x27;@rxap/data-structure-tree&#x27;;
import { RXAP_FORM_DEFINITION } from &#x27;@rxap/forms&#x27;;
import { IconDirective } from &#x27;@rxap/material-directives/icon&#x27;;
import { Method } from &#x27;@rxap/pattern&#x27;;
import {
  DebounceCall,
  WithChildren,
  WithIdentifier,
} from &#x27;@rxap/utilities&#x27;;
import {
  map,
  startWith,
  tap,
} from &#x27;rxjs/operators&#x27;;
import { SearchForm } from &#x27;./search.form&#x27;;
import { RXAP_TREE_CONTENT_EDITABLE_METHOD } from &#x27;./tokens&#x27;;
import { TreeContentDirective } from &#x27;./tree-content.directive&#x27;;
import { TreeDataSource } from &#x27;./tree.data-source&#x27;;

@Component({
    selector: &#x27;rxap-tree&#x27;,
    templateUrl: &#x27;./tree.component.html&#x27;,
    styleUrls: [&#x27;./tree.component.scss&#x27;],
    changeDetection: ChangeDetectionStrategy.OnPush,
    imports: [
        NgStyle,
        NgIf,
        MatProgressBarModule,
        MatTreeModule,
        MatIconModule,
        IconDirective,
        MatCheckboxModule,
        MatButtonModule,
        ContenteditableDirective,
        MatProgressSpinnerModule,
        MatDividerModule,
        PortalModule,
        AsyncPipe,
        NgClass,
        NgForOf,
    ]
})
export class TreeComponent&lt;Data extends WithIdentifier &amp; WithChildren &#x3D; any&gt;
  implements OnInit, AfterContentInit {
  public treeControl: FlatTreeControl&lt;Node&lt;Data&gt;&gt;;
  @Input({required: true})
  public dataSource!: TreeDataSource&lt;Data&gt;;
  @Input()
  public contentEditableMethod?: Method&lt;any, string | null&gt; | null;
  @Input()
  public toDisplay?: NodeToDisplayFunction&lt;any&gt;;
  @Input()
  public getIcon?: NodeGetIconFunction&lt;any&gt;;
  @Input()
  public getType?: NodeGetTypeFunction&lt;any&gt;;
  @Input()
  public getStyle?: NodeGetStyleFunction&lt;any&gt;;
  @Input()
  public multiple                      &#x3D; false;
  @Input()
  public hasDetails?: NodeHasDetailsFunction&lt;any&gt;;
  @ContentChild(TreeContentDirective, {static: true})
  public content?: TreeContentDirective;
  @Input()
  public hideLeafIcon                  &#x3D; false;
  @Input()
  public id?: string;
  @Output()
  public details                       &#x3D; new EventEmitter();
  @Input()
  public dividerOffset                 &#x3D; &#x27;256px&#x27;;
  public portal: TemplatePortal | null &#x3D; null;
  @ViewChild(&#x27;treeContainer&#x27;, {static: true})
  public treeContainer!: ElementRef;

  public readonly showTreeNavigation &#x3D; signal(true);

  /**
   * Indicates that the divider is moved with mouse down
   * @private
   */
  private _moveDivider                       &#x3D; false;
  /**
   * Holds the current tree container width.
   * If null the move divider feature was not yet used and the initial
   * container width is not calculated
   * @private
   */
  private _treeContainerWidth: number | null &#x3D; null;

  constructor(
    @Inject(ViewContainerRef)
    private readonly viewContainerRef: ViewContainerRef,
    @Inject(ChangeDetectorRef)
    private readonly cdr: ChangeDetectorRef,
    @Optional()
    @Inject(RXAP_TREE_CONTENT_EDITABLE_METHOD)
      contentEditableMethod: Method&lt;any, string | null&gt; | null,
    private readonly renderer: Renderer2,
    private readonly elementRef: ElementRef&lt;HTMLElement&gt;,
    @Optional()
    @Inject(RXAP_FORM_DEFINITION)
    public readonly searchForm: SearchForm | null,
  ) {
    this.treeControl           &#x3D; new FlatTreeControl(this.getLevel, this.isExpandable);
    this.contentEditableMethod &#x3D; contentEditableMethod;
  }

  public get nodeDisplayEditable(): boolean {
    return !!this.contentEditableMethod;
  }

  public get cacheId() {
    return [ &#x27;rxap&#x27;, &#x27;tree&#x27;, this.id ].join(&#x27;/&#x27;);
  }

  public getLevel &#x3D; (node: Node&lt;Data&gt;) &#x3D;&gt; node.depth;

  public isExpandable &#x3D; (node: Node&lt;Data&gt;) &#x3D;&gt; node.hasChildren;

  public hasChild &#x3D; (_: number, nodeData: Node&lt;Data&gt;) &#x3D;&gt; nodeData.hasChildren;

  public ngOnInit() {
    this.dataSource.searchForm &#x3D; this.searchForm;
    this.dataSource.setTreeControl(this.treeControl);
    this.dataSource.setToDisplay(this.toDisplay);
    this.dataSource.setGetIcon(this.getIcon);
    this.dataSource.setHasDetails(this.hasDetails);
    this.dataSource.setGetStyle(this.getStyle);
    this.dataSource.setGetType(this.getType);
    this.multiple &#x3D; this.dataSource.metadata.selectMultiple ?? this.multiple;

    if (this.dataSource.selected.hasValue()) {
      this.dataSource.selected.selected.forEach((node) &#x3D;&gt;
        this.openDetails(node),
      );
    }

    const cachedOffset &#x3D; localStorage.getItem(this.cacheId);
    if (cachedOffset &amp;&amp; cachedOffset.match(/^(\d+\.)?\d+px$/)) {
      this.setDividerOffset(cachedOffset);
    } else if (isDevMode()) {
      console.log(&#x27;Divider offset cache is not available or invalid: &#x27; + cachedOffset);
    }
  }

  public ngAfterContentInit(): void {
    this.dataSource.selected.changed
    .pipe(
      map(($event) &#x3D;&gt; $event.source.selected),
      startWith(this.dataSource.selected.selected),
      tap((selected) &#x3D;&gt; selected.forEach((node) &#x3D;&gt; this.openDetails(node))),
    )
    .subscribe();
  }

  @DebounceCall(100)
  public openDetails(node: Node&lt;Data&gt;): void {
    if (this.content) {
      this.portal &#x3D; new TemplatePortal&lt;any&gt;(
        this.content.template,
        this.viewContainerRef,
        {
          $implicit: node.item,
          node,
        },
      );
      this.cdr.markForCheck();
    }
    this.details.emit(node.item);
  }

  public onContentEditableChange(value: string | null, node: Node&lt;Data&gt;) {
    return this.contentEditableMethod?.call(value, node.item, node);
  }


  onMousedown() {
    this._moveDivider &#x3D; true;
  }

  @HostListener(&#x27;mouseup&#x27;)
  onMouseup() {
    this._moveDivider &#x3D; false;
  }

  @HostListener(&#x27;mousemove&#x27;, [ &#x27;$event&#x27; ])
  onMousemove($event: MouseEvent) {
    if (this._moveDivider) {
      if (!this._treeContainerWidth) {
        this._treeContainerWidth &#x3D; this.treeContainer.nativeElement.clientWidth as number;
      }
      const rect               &#x3D; this.elementRef.nativeElement.getBoundingClientRect();
      this._treeContainerWidth &#x3D; Math.min(Math.max($event.clientX - (
        rect.left + 12
      ), 128), rect.right - rect.left - 128);
      const offset             &#x3D; this._treeContainerWidth + &#x27;px&#x27;;
      this.setDividerOffset(offset);
    }
  }

  toggleTreeNavigation() {
    this.showTreeNavigation.update((value) &#x3D;&gt; !value);
  }

  private setDividerOffset(offset: string) {
    this.dividerOffset &#x3D; offset;
    this.renderer.setStyle(this.treeContainer.nativeElement, &#x27;max-width&#x27;, offset);
    this.renderer.setStyle(this.treeContainer.nativeElement, &#x27;min-width&#x27;, offset);
    this.renderer.setStyle(this.treeContainer.nativeElement, &#x27;flex-basis&#x27;, offset);
    localStorage.setItem(this.cacheId, offset);
  }
}
</code></pre>
    </div>

    <div class="tab-pane fade " id="templateData">
        <pre class="line-numbers"><code class="language-html">&lt;div class&#x3D;&quot;grow flex flex-col gap-2 justify-start items-start&quot;&gt;
  &lt;button (click)&#x3D;&quot;toggleTreeNavigation()&quot; class&#x3D;&quot;!justify-start&quot; mat-button type&#x3D;&quot;button&quot;&gt;
    &lt;span class&#x3D;&quot;flex flex-row justify-start items-center gap-6&quot;&gt;
      &lt;ng-template [ngIf]&#x3D;&quot;showTreeNavigation()&quot;&gt;
        &lt;mat-icon&gt;arrow_back&lt;/mat-icon&gt;
        &lt;span i18n&gt;Hide tree navigation&lt;/span&gt;
      &lt;/ng-template&gt;
      &lt;ng-template [ngIf]&#x3D;&quot;!showTreeNavigation()&quot;&gt;
        &lt;mat-icon&gt;arrow_forward&lt;/mat-icon&gt;
        &lt;span i18n&gt;Show tree navigation&lt;/span&gt;
      &lt;/ng-template&gt;
    &lt;/span&gt;
  &lt;/button&gt;
  &lt;div class&#x3D;&quot;flex flex-row grow w-full&quot;&gt;
    &lt;div #treeContainer [ngClass]&#x3D;&quot;{ &#x27;hidden&#x27;: !showTreeNavigation() }&quot;
         [ngStyle]&#x3D;&quot;{ maxWidth: dividerOffset, minWidth: dividerOffset, flexBasis: dividerOffset }&quot;
         class&#x3D;&quot;w-fit grow-0 overflow-y-auto&quot;&gt;
      &lt;mat-progress-bar *ngIf&#x3D;&quot;!dataSource || (dataSource.loading$ | async)&quot; mode&#x3D;&quot;indeterminate&quot;&gt;&lt;/mat-progress-bar&gt;
      &lt;ng-content select&#x3D;&quot;[searchHeader]&quot;&gt;&lt;/ng-content&gt;
      &lt;mat-tree *ngIf&#x3D;&quot;dataSource; else loading&quot; [dataSource]&#x3D;&quot;dataSource&quot; [treeControl]&#x3D;&quot;treeControl&quot;&gt;

        &lt;!-- Node without children --&gt;
        &lt;mat-tree-node *matTreeNodeDef&#x3D;&quot;let node&quot; matTreeNodePadding&gt;
          &lt;div class&#x3D;&quot;flex flex-row justify-start items-center gap-2&quot;&gt;
            &lt;mat-icon [ngClass]&#x3D;&quot;{ &#x27;hidden&#x27;: hideLeafIcon }&quot;&gt;subdirectory_arrow_right&lt;/mat-icon&gt;
            &lt;ng-container *ngIf&#x3D;&quot;node.icon?.length&quot;&gt;
              &lt;mat-icon *ngFor&#x3D;&quot;let icon of node.icon&quot; [rxapIcon]&#x3D;&quot;$any(icon)&quot;&gt;&lt;/mat-icon&gt;
            &lt;/ng-container&gt;
            &lt;ng-template [ngIf]&#x3D;&quot;multiple&quot;&gt;
              &lt;mat-checkbox
                (change)&#x3D;&quot;node.toggleSelect()&quot;
                [checked]&#x3D;&quot;node.selected&quot;
                [disabled]&#x3D;&quot;!node.hasDetails&quot;
                [ngStyle]&#x3D;&quot;node.style&quot;
                class&#x3D;&quot;grow-0 truncate&quot;&gt;
                {{ node.display }}
              &lt;/mat-checkbox&gt;
            &lt;/ng-template&gt;
            &lt;ng-template [ngIf]&#x3D;&quot;!multiple&quot;&gt;
              &lt;button
                (click)&#x3D;&quot;node.select()&quot;
                [color]&#x3D;&quot;node.selected ? &#x27;primary&#x27; : undefined&quot;
                [disabled]&#x3D;&quot;!node.hasDetails&quot;
                [ngStyle]&#x3D;&quot;node.style&quot;
                class&#x3D;&quot;grow-0 truncate&quot;
                mat-button
                type&#x3D;&quot;button&quot;
              &gt;
                {{ node.display }}
              &lt;/button&gt;
            &lt;/ng-template&gt;
          &lt;/div&gt;
        &lt;/mat-tree-node&gt;

        &lt;!-- Node with children --&gt;
        &lt;mat-tree-node *matTreeNodeDef&#x3D;&quot;let node; when: hasChild&quot; matTreeNodePadding&gt;
          &lt;button [attr.aria-label]&#x3D;&quot;&#x27;toggle &#x27; + node.filename&quot; mat-icon-button matTreeNodeToggle type&#x3D;&quot;button&quot;&gt;
            &lt;mat-icon class&#x3D;&quot;mat-icon-rtl-mirror&quot;&gt;
              {{ treeControl.isExpanded(node) ? &#x27;expand_more&#x27; : &#x27;chevron_right&#x27; }}
            &lt;/mat-icon&gt;
          &lt;/button&gt;
          &lt;div class&#x3D;&quot;flex flex-row justify-start items-center gap-2&quot;&gt;
            &lt;ng-container *ngIf&#x3D;&quot;node.icon?.length else withoutIcon&quot;&gt;
              &lt;mat-icon *ngFor&#x3D;&quot;let icon of node.icon&quot; [rxapIcon]&#x3D;&quot;$any(icon)&quot;&gt;&lt;/mat-icon&gt;
            &lt;/ng-container&gt;
            &lt;ng-template #withoutIcon&gt;
              &lt;div&gt;&lt;/div&gt;
            &lt;/ng-template&gt;
            &lt;ng-template [ngIfElse]&#x3D;&quot;withoutDetails&quot; [ngIf]&#x3D;&quot;node.hasDetails&quot;&gt;
              &lt;button
                (click)&#x3D;&quot;node.select()&quot;
                [color]&#x3D;&quot;node.selected ? &#x27;primary&#x27; : undefined&quot;
                [ngStyle]&#x3D;&quot;node.style&quot;
                class&#x3D;&quot;grow-0 truncate&quot;
                mat-button
                type&#x3D;&quot;button&quot;
              &gt;
                {{ node.display }}
              &lt;/button&gt;
            &lt;/ng-template&gt;
            &lt;ng-template #withoutDetails&gt;
              &lt;span
                (change)&#x3D;&quot;onContentEditableChange($event, node)&quot;
                [disabled]&#x3D;&quot;!nodeDisplayEditable&quot;
                [ngStyle]&#x3D;&quot;node.style&quot;
                class&#x3D;&quot;grow-0 truncate&quot;
                rxapContenteditable&gt;
                {{ node.display }}
              &lt;/span&gt;
            &lt;/ng-template&gt;
            &lt;mat-progress-spinner
              *ngIf&#x3D;&quot;node.isLoading$ | async&quot;
              [diameter]&#x3D;&quot;16&quot;
              class&#x3D;&quot;grow-0 pl-4&quot;
              mode&#x3D;&quot;indeterminate&quot;
            &gt;&lt;/mat-progress-spinner&gt;
          &lt;/div&gt;
        &lt;/mat-tree-node&gt;

      &lt;/mat-tree&gt;
    &lt;/div&gt;

    &lt;div (mousedown)&#x3D;&quot;onMousedown()&quot; *ngIf&#x3D;&quot;showTreeNavigation()&quot;
         class&#x3D;&quot;divider cursor-ew-resize px-3 grow-0&quot;&gt;
      &lt;mat-divider [vertical]&#x3D;&quot;true&quot; class&#x3D;&quot;h-full&quot;&gt;&lt;/mat-divider&gt;
    &lt;/div&gt;

    &lt;div class&#x3D;&quot;grow&quot;&gt;
      &lt;ng-container *ngIf&#x3D;&quot;portal&quot;&gt;
        &lt;ng-template [cdkPortalOutlet]&#x3D;&quot;portal&quot;&gt;&lt;/ng-template&gt;
      &lt;/ng-container&gt;
      &lt;ng-content&gt;&lt;/ng-content&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;ng-template #loading&gt;Load data source&lt;/ng-template&gt;
</code></pre>
    </div>

    <div class="tab-pane fade " id="styleData">
                <p class="comment">
                    <code>./tree.component.scss</code>
                </p>
                <pre class="line-numbers"><code class="language-scss"></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><div class="grow flex flex-col gap-2 justify-start items-start">  <button (click)="toggleTreeNavigation()" class="!justify-start" mat-button type="button">    <span class="flex flex-row justify-start items-center gap-6">      <ng-template [ngIf]="showTreeNavigation()">        <mat-icon>arrow_back</mat-icon>        <span i18n>Hide tree navigation</span>      </ng-template>      <ng-template [ngIf]="!showTreeNavigation()">        <mat-icon>arrow_forward</mat-icon>        <span i18n>Show tree navigation</span>      </ng-template>    </span>  </button>  <div class="flex flex-row grow w-full">    <div #treeContainer [ngClass]="{ \'hidden\': !showTreeNavigation() }"         [ngStyle]="{ maxWidth: dividerOffset, minWidth: dividerOffset, flexBasis: dividerOffset }"         class="w-fit grow-0 overflow-y-auto">      <mat-progress-bar *ngIf="!dataSource || (dataSource.loading$ | async)" mode="indeterminate"></mat-progress-bar>      <ng-content select="[searchHeader]"></ng-content>      <mat-tree *ngIf="dataSource; else loading" [dataSource]="dataSource" [treeControl]="treeControl">        <!-- Node without children -->        <mat-tree-node *matTreeNodeDef="let node" matTreeNodePadding>          <div class="flex flex-row justify-start items-center gap-2">            <mat-icon [ngClass]="{ \'hidden\': hideLeafIcon }">subdirectory_arrow_right</mat-icon>            <ng-container *ngIf="node.icon?.length">              <mat-icon *ngFor="let icon of node.icon" [rxapIcon]="$any(icon)"></mat-icon>            </ng-container>            <ng-template [ngIf]="multiple">              <mat-checkbox                (change)="node.toggleSelect()"                [checked]="node.selected"                [disabled]="!node.hasDetails"                [ngStyle]="node.style"                class="grow-0 truncate">                {{ node.display }}              </mat-checkbox>            </ng-template>            <ng-template [ngIf]="!multiple">              <button                (click)="node.select()"                [color]="node.selected ? \'primary\' : undefined"                [disabled]="!node.hasDetails"                [ngStyle]="node.style"                class="grow-0 truncate"                mat-button                type="button"              >                {{ node.display }}              </button>            </ng-template>          </div>        </mat-tree-node>        <!-- Node with children -->        <mat-tree-node *matTreeNodeDef="let node; when: hasChild" matTreeNodePadding>          <button [attr.aria-label]="\'toggle \' + node.filename" mat-icon-button matTreeNodeToggle type="button">            <mat-icon class="mat-icon-rtl-mirror">              {{ treeControl.isExpanded(node) ? \'expand_more\' : \'chevron_right\' }}            </mat-icon>          </button>          <div class="flex flex-row justify-start items-center gap-2">            <ng-container *ngIf="node.icon?.length else withoutIcon">              <mat-icon *ngFor="let icon of node.icon" [rxapIcon]="$any(icon)"></mat-icon>            </ng-container>            <ng-template #withoutIcon>              <div></div>            </ng-template>            <ng-template [ngIfElse]="withoutDetails" [ngIf]="node.hasDetails">              <button                (click)="node.select()"                [color]="node.selected ? \'primary\' : undefined"                [ngStyle]="node.style"                class="grow-0 truncate"                mat-button                type="button"              >                {{ node.display }}              </button>            </ng-template>            <ng-template #withoutDetails>              <span                (change)="onContentEditableChange($event, node)"                [disabled]="!nodeDisplayEditable"                [ngStyle]="node.style"                class="grow-0 truncate"                rxapContenteditable>                {{ node.display }}              </span>            </ng-template>            <mat-progress-spinner              *ngIf="node.isLoading$ | async"              [diameter]="16"              class="grow-0 pl-4"              mode="indeterminate"            ></mat-progress-spinner>          </div>        </mat-tree-node>      </mat-tree>    </div>    <div (mousedown)="onMousedown()" *ngIf="showTreeNavigation()"         class="divider cursor-ew-resize px-3 grow-0">      <mat-divider [vertical]="true" class="h-full"></mat-divider>    </div>    <div class="grow">      <ng-container *ngIf="portal">        <ng-template [cdkPortalOutlet]="portal"></ng-template>      </ng-container>      <ng-content></ng-content>    </div>  </div></div><ng-template #loading>Load data source</ng-template></div>'
    var COMPONENTS = [{'name': 'TreeComponent', 'selector': 'rxap-tree'}];
    var DIRECTIVES = [{'name': 'TreeContentDirective', 'selector': 'ng-template[rxapTreeContent]'}];
    var ACTUAL_COMPONENT = {'name': 'TreeComponent'};
</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 = 'TreeComponent.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>


    </body>
</html>