Skip to main content
Version: Next

TreeSelect

TreeSelect is a select component that allows users to select from a tree structure.

Live Example

Loading component...

Try It

Edit the code below to experiment with the component:

Live Editor
function Demo() {
  const [value, setValue] = React.useState(undefined);
  const treeData = [
    {
      title: 'Databases',
      value: 'databases',
      children: [
        { title: 'PostgreSQL', value: 'postgres' },
        { title: 'MySQL', value: 'mysql' },
      ],
    },
    {
      title: 'Charts',
      value: 'charts',
      children: [
        { title: 'Bar Chart', value: 'bar' },
        { title: 'Line Chart', value: 'line' },
      ],
    },
  ];
  return (
    <TreeSelect
      style={{ width: 300 }}
      value={value}
      onChange={setValue}
      treeData={treeData}
      placeholder="Select an item"
      allowClear
      treeDefaultExpandAll
    />
  );
}
Result
Loading...

Multiple Selection with Checkboxes

Live Editor
function MultiSelectTree() {
  const [value, setValue] = React.useState([]);
  const treeData = [
    {
      title: 'Databases',
      value: 'databases',
      children: [
        { title: 'PostgreSQL', value: 'postgres' },
        { title: 'MySQL', value: 'mysql' },
        { title: 'SQLite', value: 'sqlite' },
      ],
    },
    {
      title: 'File Formats',
      value: 'formats',
      children: [
        { title: 'CSV', value: 'csv' },
        { title: 'Excel', value: 'excel' },
      ],
    },
  ];
  return (
    <TreeSelect
      style={{ width: 300 }}
      value={value}
      onChange={setValue}
      treeData={treeData}
      treeCheckable
      placeholder="Select data sources"
      treeDefaultExpandAll
      allowClear
    />
  );
}
Result
Loading...

With Tree Lines

Live Editor
function TreeLinesDemo() {
  const treeData = [
    {
      title: 'Dashboards',
      value: 'dashboards',
      children: [
        { title: 'Sales Dashboard', value: 'sales' },
        { title: 'Marketing Dashboard', value: 'marketing' },
      ],
    },
    {
      title: 'Charts',
      value: 'charts',
      children: [
        { title: 'Revenue Chart', value: 'revenue' },
        { title: 'User Growth', value: 'growth' },
      ],
    },
  ];
  return (
    <TreeSelect
      style={{ width: 300 }}
      treeData={treeData}
      treeLine
      treeDefaultExpandAll
      placeholder="Browse items"
    />
  );
}
Result
Loading...

Props

PropTypeDefaultDescription
allowClearbooleantrueWhether to allow clearing the selected value.
disabledbooleanfalseWhether the component is disabled.
multiplebooleanfalseWhether to allow multiple selections.
placeholderstring"Please select"Placeholder text for the input field.
showSearchbooleantrueWhether to show the search input.
sizestring"middle"Size of the component.
treeCheckablebooleanfalseWhether to show checkable tree nodes.
treeDefaultExpandAllbooleantrueWhether to expand all tree nodes by default.
treeLinebooleanfalseWhether to show tree lines.
variantstring"outlined"Variant of the component.
treeDataany[{"title":"Node1","value":"0-0","children":[{"title":"Child Node1","value":"0-0-0"},{"title":"Child Node2","value":"0-0-1"}]},{"title":"Node2","value":"0-1","children":[{"title":"Child Node3","value":"0-1-0"}]}]-

Import

import { TreeSelect } from '@superset/components';

Improve this page

This documentation is auto-generated from the component's Storybook story. Help improve it by editing the story file.