JSPM

  • Created
  • Published
  • Downloads 226
  • Score
    100M100P100Q80119F
  • License MIT

Provide flat, virtual snapshot of a tree

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (xtal-tree) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    Published on webcomponents.org

    Actions Status

    <xtal-tree>

    Demo

    Often we want to take advantage of a nice flat list generator component, like dom-repeat, or iron-list, but we want to use it to display and manipulate hierarchical tree data.

    This scenario seems to come up so frequently with various components, that this component strives to genericize that requirement.

    NB I This component takes a JS / JSON - centric approach. An alternative way of generating an expandable tree is to use server side HTML rendering or static site generation, tapping into the power of the details / summary element. Some experiments with this approach have been done here, where similar support for expand all / search / sort is supported. In fact, the search capability is better with this approach. This will tend to have smaller first paint / time to interactive times, if the tree starts out in collapsed mode. However,as the amount of data increases, if you want to support expand all and global search capabilities, it may be better to use a virtual list combined with this JS-based component.

    For simplicity and better performance, xtal-tree does make some assumptions about the structure of the data. It assumes each node has the following fields (some of which are optional):

    export interface ITreeNode{
        children?: ITreeNode[];
        name: string;
        path: string;
        value: any;
        asString?: string;
        type: string;
        parent?: ITreeNode;
        open?: boolean;
    }

    Some of the properties are computed dynamically by the component. This can result in adding unexpected properties to a user-defined data structure. To avoid this, set property "clone" to true.

    Think of xtal-tree as a reusable "View Model" component.

    xtal-tree also provides an option to turn any object graph JSON structure, and turn it into a regular tree structure that can be rendered quickly using a virtual list.

    Viewing This Element Locally

    $ npm install
    $ npm run serve