Skip to main content

Customization

Styling#

There is a possibility to make changes in the look and feel of a tree.

Related sample: Tree. Custom Styles

For this you need to take the following steps:

  • add a new CSS class(es) with desired settings in the <style> section of your HTML page or in your file with styles (don't forget to include your file on the page in this case):
<style>    .my_first_class {        /*some styles*/    }        .my_second-class {        /*some styles*/    }</style>
  • specify the name of the created CSS class (or names of classes separated by spaces) as the value of the css property in the Tree configuration:
var tree = new dhx.Tree("tree_container", {     css:"my_first_class my_second_class"});

For example:

<style>    .custom-class {        padding: 20px;        border: 1px solid green;    }    .custom-class .dhx_tree-list-item__text {        color: #0ab169;    }    .custom-class .dhx_tree-folder .dhx_tree-list-item__text {        color: #0288d1;    }</style>
var tree = new dhx.Tree("tree_container", {    css: "custom-class"});

Changing icons#

Related sample: Tree. Custom Icons

You can change the default icons used for tree items. dhtmlxTree uses the icons of the DHTMLX library by default. However, you can use any other icon font pack, if necessary. For this, you need to include the desired icon font on a page and apply icons to necessary items.

For example, you can use the Font Awesome icon pack by including link to its CDN after the source files of dhtmlxTree as follows:

<script type="text/javascript" src="../../codebase/tree.js"></script><link rel="stylesheet" href="../../codebase/tree.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"   integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU"    crossOrigin="anonymous">

Then you can use the name of the icon as the value of the icon property in the object with the configuration of an item. To use a new icon for a tree item, use the tree.data.update() method. Pass as parameters the id of an item and its config object:

tree.data.update("history", {    icon:{        file:"fa fa-[iconname]",        openFolder:"fa fa-[iconname]",        folder:"fa fa-[iconname]"    }});
note

You can use the Material Design icon pack by including link to its CDN in the same way.

Adding template to items#

It is possible to customize Tree items via the template property. The template option is a function that takes two parameters:

  • item - object, an object of a Tree item
  • isFolder - boolean, defines whether an item is a folder

and returns either a string or null.

Tip. The callback function together with the isFolder parameter allows you to specify a template for child items only.

Example

const tree = new dhx.Tree("tree", {    template: ({ value }, isFolder) => {        const template = `            <div className="dhx_tree_template">                <span className="dhx_tree_template__value">${value}</span>                <div className="dhx_tree_template__rows">                    <button className="dhx_tree_template__button remove">                        <i className="far fa-trash-alt dhx_tree_template__icon dhx_tree_template__icon--danger"></i>                    </button>                </div>            </div>        `        return isFolder ? null : template;    }});

Event handlers for the template#

You can assign event handlers to HTML elements of a custom template via using the eventHandlers configuration property of Tree, for instance:

Example

const tree = new dhx.Tree("tree", {    template: ({ value }, isFolder) => {        const template = `            <div className="dhx_tree_template">                <span className="dhx_tree_template__value">${value}</span>                <div className="dhx_tree_template__rows">                    <button className="dhx_tree_template__button remove">                        <i className="far fa-trash-alt dhx_tree_template__icon dhx_tree_template__icon--danger"></i>                    </button>                </div>            </div>        `        return isFolder ? null : template;    },    eventHandlers: {        onclick: {            remove: (event, { id }) => {                id && tree.data.remove(id);            }        }    }});

The eventHandlers object includes a set of key:value pairs, where:

  • key - the name of the event. Note, that at the beginning of the event name the 'on' prefix is used (onclick, onmouseover).
  • value - an object that contains a key:value pair, where key is the css class name that the handler will be applied to and value is a function that takes two parameters:
    • event - an event object
    • item - an object of a Tree item

Related sample: Tree. Handling Events In Template