Back to Superset

Tree

docs/developer_docs/components/ui/tree.mdx

2021.41.06.6 KB
Original Source
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

import { StoryWithControls } from '../../../src/components/StorybookWrapper';

Tree

The Tree component is used to display hierarchical data in a tree structure. It allows for features such as selection, expansion, and drag-and-drop functionality.

Live Example

<StoryWithControls component="Tree" props={{ checkable: false, defaultExpandAll: false, disabled: false, draggable: false, multiple: false, selectable: true, showIcon: false, showLine: false, treeData: [ { title: "parent 1", key: "0-0", children: [ { title: "parent 1-0", key: "0-0-0", children: [ { title: "leaf", key: "0-0-0-0" }, { title: "leaf", key: "0-0-0-1" }, { title: "leaf", key: "0-0-0-2" } ] }, { title: "parent 1-1", key: "0-0-1", children: [ { title: "leaf", key: "0-0-1-0" } ] }, { title: "parent 1-2", key: "0-0-2", children: [ { title: "leaf", key: "0-0-2-0" }, { title: "leaf", key: "0-0-2-1" } ] } ] } ], defaultExpandedKeys: [ "0-0", "0-0-0" ] }} controls={[ { name: "checkable", label: "Checkable", type: "boolean", description: "Add a Checkbox before the treeNodes" }, { name: "defaultExpandAll", label: "Default Expand All", type: "boolean", description: "Whether to expand all treeNodes by default" }, { name: "disabled", label: "Disabled", type: "boolean", description: "Whether disabled the tree" }, { name: "draggable", label: "Draggable", type: "boolean", description: "Specifies whether this Tree or the node is draggable" }, { name: "multiple", label: "Multiple", type: "boolean", description: "Allows selecting multiple treeNodes" }, { name: "selectable", label: "Selectable", type: "boolean", description: "Whether can be selected" }, { name: "showIcon", label: "Show Icon", type: "boolean", description: "Controls whether to display the icon node" }, { name: "showLine", label: "Show Line", type: "boolean", description: "Shows a connecting line" } ]} />

Try It

Edit the code below to experiment with the component:

tsx
function Demo() {
  const treeData = [
    {
      title: 'Databases',
      key: 'databases',
      children: [
        { title: 'PostgreSQL', key: 'postgres' },
        { title: 'MySQL', key: 'mysql' },
        { title: 'SQLite', key: 'sqlite' },
      ],
    },
    {
      title: 'Charts',
      key: 'charts',
      children: [
        { title: 'Bar Chart', key: 'bar' },
        { title: 'Line Chart', key: 'line' },
        { title: 'Pie Chart', key: 'pie' },
      ],
    },
  ];
  return <Tree treeData={treeData} defaultExpandAll />;
}

Checkable Tree

tsx
function CheckableTree() {
  const [checkedKeys, setCheckedKeys] = React.useState(['postgres']);
  const treeData = [
    {
      title: 'Databases',
      key: 'databases',
      children: [
        { title: 'PostgreSQL', key: 'postgres' },
        { title: 'MySQL', key: 'mysql' },
      ],
    },
    {
      title: 'Charts',
      key: 'charts',
      children: [
        { title: 'Bar Chart', key: 'bar' },
        { title: 'Line Chart', key: 'line' },
      ],
    },
  ];
  return (
    <Tree
      treeData={treeData}
      checkable
      defaultExpandAll
      checkedKeys={checkedKeys}
      onCheck={setCheckedKeys}
    />
  );
}

With Lines and Icons

tsx
function LinesAndIcons() {
  const treeData = [
    {
      title: 'Dashboards',
      key: 'dashboards',
      children: [
        { title: 'Sales Dashboard', key: 'sales' },
        { title: 'Marketing Dashboard', key: 'marketing' },
      ],
    },
    {
      title: 'Reports',
      key: 'reports',
      children: [
        { title: 'Weekly Report', key: 'weekly' },
        { title: 'Monthly Report', key: 'monthly' },
      ],
    },
  ];
  return <Tree treeData={treeData} showLine showIcon defaultExpandAll />;
}

Props

PropTypeDefaultDescription
checkablebooleanfalseAdd a Checkbox before the treeNodes
defaultExpandAllbooleanfalseWhether to expand all treeNodes by default
disabledbooleanfalseWhether disabled the tree
draggablebooleanfalseSpecifies whether this Tree or the node is draggable
multiplebooleanfalseAllows selecting multiple treeNodes
selectablebooleantrueWhether can be selected
showIconbooleanfalseControls whether to display the icon node
showLinebooleanfalseShows a connecting line
treeDataany[{"title":"parent 1","key":"0-0","children":[{"title":"parent 1-0","key":"0-0-0","children":[{"title":"leaf","key":"0-0-0-0"},{"title":"leaf","key":"0-0-0-1"},{"title":"leaf","key":"0-0-0-2"}]},{"title":"parent 1-1","key":"0-0-1","children":[{"title":"leaf","key":"0-0-1-0"}]},{"title":"parent 1-2","key":"0-0-2","children":[{"title":"leaf","key":"0-0-2-0"},{"title":"leaf","key":"0-0-2-1"}]}]}]-
defaultExpandedKeysany["0-0","0-0-0"]-

Import

tsx
import { Tree } from '@superset/components';

:::tip[Improve this page] This documentation is auto-generated from the component's Storybook story. Help improve it by editing the story file. :::