Flutter docs
Default skin

TreeSelect

Tree selection control.

When to use

TreeSelect is similar to Select, but the values are provided in a tree like structure. Any data whose entries are defined in a hierarchical manner is fit to use this control. Examples of such case may include a corporate hierarchy, a directory structure, and so on.

Examples

Basic

The most basic usage.

Generate from tree data

The tree structure can be populated using treeData property. This is a quick and easy way to provide the tree content.

Asynchronous loading

Asynchronous loading tree node.

Placement

You can manually specify the position of the popup via placement.

Status

Add status to TreeSelect with status, which could be error or warning.

Prefix and Suffix

Custom prefix and suffixIcon.

Multiple Selection

Multiple selection usage.

Checkable

Multiple and checkable.

Show Tree Line

Use treeLine to show the line style.

Variants

Variants of TreeSelect, there are four variants: outlined filled borderless and underlined.

Max Count

You can set the maxCount prop to control the max number of items can be selected. When the limit is exceeded, the options will become disabled.

Custom semantic dom styling

You can customize the semantic dom style of TreeSelect by passing objects/functions through classNames and styles.

API

TreeSelect and TreeSelect.TreeNode are exported from @ceebee/ui/client.

Tree props

PropertyDescriptionTypeDefaultVersion
allowClearCustomize clear iconboolean | { clearIcon?: ReactNode }false5.8.0: Support object type
autoClearSearchValueIf auto clear search input value when multiple select is selected/deselectedbooleantrue—
borderedWhether has border style, please use variant insteadbooleantrue-
classNamesCustomize class for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-—
defaultOpenInitial open state of dropdownboolean-—
defaultValueTo set the initial selected treeNode(s)string | string\[]-—
disabledDisabled or notbooleanfalse—
dropdownClassNameThe className of dropdown menu, please use classNames.popup.root insteadstring--
dropdownMatchSelectWidthDetermine whether the popup menu and the select input are the same width, please use popupMatchSelectWidth insteadboolean | numbertrue-
popupClassNameThe className of dropdown menu, use classNames.popup.root insteadstring-4.23.0
popupMatchSelectWidthDetermine whether the popup menu and the select input are the same width. Default set min-width same as input. Will ignore when value less than select width. false will disable virtual scrollboolean | numbertrue5.5.0
dropdownRenderCustomize dropdown content, use popupRender instead(originNode: ReactNode, props) => ReactNode-—
popupRenderCustomize dropdown content(originNode: ReactNode, props) => ReactNode-—
dropdownStyleTo set the style of the dropdown menu, use styles.popup.root insteadCSSProperties-—
fieldNamesCustomize node label, value, children field nameobject{ label: label, value: value, children: children }4.17.0
filterTreeNodeWhether to filter treeNodes by input value. The value of treeNodeFilterProp is used for filtering by defaultboolean | function(inputValue: string, treeNode: TreeNode) (should return boolean)function—
getPopupContainerTo set the container of the dropdown menu. The default is to create a div element in body, you can reset it to the scrolling area and make a relative reposition. examplefunction(triggerNode)() => document.body—
labelInValueWhether to embed label in value, turn the format of value from string to {value: string, label: ReactNode, halfChecked: boolean (Is the option list in a semi selected state and not displayed in the values)}booleanfalse—
listHeightConfig popup heightnumber256—
loadDataLoad data asynchronously. Will not load when filtering. Check FAQ for more infofunction(node)-—
maxCountThe maximum number of items that can be selected. Only takes effect when multiple=true. If (showCheckedStrategy = 'SHOW_ALL' and treeCheckStrictly is disabled) or showCheckedStrategy = 'SHOW_PARENT' is used, maxCount will not take effect.number-5.23.0
maxTagCountMax tag count to show. responsive will cost render performancenumber | responsive-responsive: 4.10
maxTagPlaceholderPlaceholder for not showing tagsReactNode | function(omittedValues)-—
maxTagTextLengthMax tag text length to shownumber-—
multipleSupport multiple or not, will be true when enable treeCheckablebooleanfalse—
notFoundContentSpecify content to show when no result matchesReactNodeNot Found—
openControlled open state of dropdownboolean-—
placeholderPlaceholder of the select inputstring-—
placementThe position where the selection box pops upbottomLeft bottomRight topLeft topRightbottomLeft—
prefixThe custom prefixReactNode-5.22.0
searchValueWork with onSearch to make search value controlledstring-—
showArrowWhether to show the arrow icon, please use suffixIcon={null} insteadbooleantrue-
showCheckedStrategyThe way show selected item in box when treeCheckable set. **Default:** just show child nodes. **TreeSelect.SHOW_ALL:** show all checked treeNodes (include parent treeNode). **TreeSelect.SHOW_PARENT:** show checked treeNodes (just show parent treeNode)TreeSelect.SHOW_ALL | TreeSelect.SHOW_PARENT | TreeSelect.SHOW_CHILDTreeSelect.SHOW_CHILD—
showSearchSupport search or notboolean | Objectsingle: false | multiple: true—
sizeTo set the size of the select inputlarge | medium | small-—
statusSet validation status'error' | 'warning'-4.19.0
stylesCustomize inline style for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-—
suffixIconThe custom suffix iconReactNode<DownOutlined />—
switcherIconCustomize collapse/expand icon of tree nodeReactNode | ((props: AntTreeNodeProps) => ReactNode)-renderProps: 4.20.0
tagRenderCustomize tag render when multiple(props) => ReactNode-—
treeCheckableWhether to show checkbox on the treeNodesbooleanfalse—
treeCheckStrictlyWhether to check nodes precisely (in the checkable mode), means parent and child nodes are not associated, and it will make labelInValue be truebooleanfalse—
treeDataData of the treeNodes, manual construction work is no longer needed if this property has been set(ensure the Uniqueness of each value)array&lt;{ value, title, children, \[disabled, disableCheckbox, selectable, checkable] }>\[]—
treeDataSimpleModeEnable simple mode of treeData. Changes the treeData schema to: \[{id:1, pId:0, value:'1', title:"test1",...},...] where pId is parent node's id). It is possible to replace the default id and pId keys by providing object to treeDataSimpleModeboolean | object&lt;{ id: string, pId: string, rootPId: string }>false—
treeDefaultExpandAllWhether to expand all treeNodes by defaultbooleanfalse—
treeDefaultExpandedKeysDefault expanded treeNodesstring\[]-—
treeExpandActionTree title open logic when click, optional: false | click | doubleClickstring | booleanfalse4.21.0
treeExpandedKeysSet expanded keysstring\[]-—
treeIconShows the icon before a TreeNode's title. There is no default style; you must set a custom style for it if set to truebooleanfalse—
treeLineShow the line. Ref Tree - showLineboolean | objectfalse4.17.0
treeLoadedKeys(Controlled) Set loaded tree nodes, work with loadData onlystring[][]—
treeNodeFilterPropWill be used for filtering if filterTreeNode returns truestringvalue—
treeNodeLabelPropWill render as content of selectstringtitle—
treeTitleRenderCustomize tree node title render(nodeData) => ReactNode-5.12.0
valueTo set the current selected treeNode(s)string | string\[]-—
variantVariants of selectoroutlined | borderless | filled | underlinedoutlined5.13.0 | underlined: 5.24.0
virtualDisable virtual scroll when set to falsebooleantrue4.1.0
onChangeA callback function, can be executed when selected treeNodes or input value changefunction(value, label, extra)-—
onClearCalled when clear() => void--
onDropdownVisibleChangeCalled when dropdown open, use onOpenChange insteadfunction(open)-—
onOpenChangeCalled when dropdown open(open: boolean) => void-—
onPopupScrollCalled when dropdown scrolls(event: UIEvent) => void-5.17.0
onSearchA callback function, can be executed when the search input changesfunction(value: string)-—
onSelectA callback function, can be executed when you select a treeNodefunction(value, node, extra)-—
onTreeExpandA callback function, can be executed when treeNode expandedfunction(expandedKeys)-—

showSearch

PropertyDescriptionTypeDefaultVersion
autoClearSearchValueIf auto clear search input value when multiple select is selected/deselectedbooleantrue—
filterTreeNodeWhether to filter treeNodes by input value. The value of treeNodeFilterProp is used for filtering by defaultboolean | function(inputValue: string, treeNode: TreeNode) (should return boolean)function—
searchValueWork with onSearch to make search value controlledstring-—
treeNodeFilterPropWill be used for filtering if filterTreeNode returns truestringvalue—
onSearchA callback function, can be executed when the search input changesfunction(value: string)-—

TreeNode props

PropertyDescriptionTypeDefaultVersion
checkableWhen Tree is checkable, set TreeNode display Checkbox or notboolean-—
disableCheckboxDisables the checkbox of the treeNodebooleanfalse—
disabledDisabled or notbooleanfalse—
isLeafLeaf node or notbooleanfalse—
keyRequired property (unless using treeDataSimpleMode), should be unique in the treestring-—
selectableWhether can be selectedbooleantrue—
titleContent showed on the treeNodesReactNode---—
valueWill be treated as treeNodeFilterProp by default, should be unique in the treestring-—