Skip to content

Tree List Layout wuth Vite and TypeScript

This guide assumes you already have Node.js installed.

1. Create a new Vite project

Run:

bash
npm create vite@latest orgchart -- --template vanilla-ts

2. Open the project directory

bash
cd orgchart

3. Add OrgChart

Download OrgChart JS, extract and copy these two files in the main folder of the project

bash
orgchart.esm.js
orgchart.esm.d.ts

4. Create a container for the chart

Open index.html and replace the contents of the <body> with:

html
<body>
    <div id="tree"></div>
    <script type="module" src="/src/main.ts"></script>
</body>

5. Add the required styles

Open src/style.css and replace its contents with:

css
html,
body {
    margin: 0;
    padding: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

#tree {
    width: 100%;
    height: 100%;
}

6. Create the chart

Replace the contents of src/main.ts with:

js
import "./style.css";
import OrgChart from "../orgchart.esm.js";

let chart = new OrgChart(document.getElementById("tree"), {    
    template: 'clara',
    //mouseScroll: OrgChart.action.ctrlZoom,
    enableSearch: false,
    tags: {
        group: {
            subTreeConfig: {
                layout: OrgChart.layout.treeList,
                template: 'treeListItem'
            }
        }
    },
    nodeBinding: {
        field_0: "name",
        field_1: "title",
        img_0: "img"
    }
});

chart.load([
    { id: 1,  name: "Nicky Phillips", title: "CEO", img: "https://cdn.balkan.app/shared/anim/1.gif" },
    { id: 2, pid: 1, tags: ['group'], name: "John Dow", title: "IT Department manager", img: "https://cdn.balkan.app/shared/a/18.jpg" },
    { id: 3, pid: 1, tags: ['group'], name: "John Smith", title: "Sales department", img: "https://cdn.balkan.app/shared/a/19.jpg" },

    { id: 4, stpid: 2, name: "Cory Robbins", title: "Core Team Lead", img: "https://cdn.balkan.app/shared/a/7.jpg" },
    { id: 9, stpid: 2, name: "Lynn Fleming", title: "UI Team Lead", img: "https://cdn.balkan.app/shared/a/11.jpg" },
    { id: 100, pid: 4, name: "Billie Roach", title: "Backend Senior Developer", img: "https://cdn.balkan.app/shared/a/8.jpg"},
    { id: 101, pid: 4, name: "Maddox Hood", title: "C# Developer", img: "https://cdn.balkan.app/shared/a/9.jpg" },
    { id: 102, pid: 4, name: "Sam Tyson", title: "Backend Junior Developer", img: "https://cdn.balkan.app/shared/a/10.jpg" },
    { id: 103, pid: 9, name: "Jo Baker", title: "JS Developer", img: "https://cdn.balkan.app/shared/a/12.jpg"  },
    { id: 104, pid: 9, name: "Emerson Lewis", title: "Graphic Designer", img: "https://cdn.balkan.app/shared/a/13.jpg" },
    { id: 105, pid: 9, name: "Haiden Atkinson", title: "UX Expert", img: "https://cdn.balkan.app/shared/a/14.jpg" },

    { id: 10, stpid: 3, name: "Tyler Chavez", title: "Sales Manager", img: "https://cdn.balkan.app/shared/a/15.jpg" },
    { id: 11, pid: 10, name: "Raylee Allen", title: "Sales", img: "https://cdn.balkan.app/shared/a/16.jpg" },
    { id: 12, pid: 10, name: "Kris Horne", title: "Sales Guru", img: "https://cdn.balkan.app/shared/a/8.jpg" },
]);

7. Start the development server

Run:

bash
npm run dev

Open the URL displayed in the terminal (typically http://localhost:5173).

You should now see a simple OrgChart with three nodes.