popupPlacement | 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end' | — | Placement relative to the trigger. |
popupClassName | string | — | Custom class for the popup. |
popupStyle | CSSProperties | — | Custom popup styles. |
popupRender | (content: React.ReactNode) => React.ReactNode | — | Wrap or extend popup content; retain the supplied content to preserve interaction. |
getPopupContainer | () => Element | DocumentFragment | — | Return a popup container, including a ShadowRoot. |
options | readonly TreeSelectOption[] | Required | Required. Hierarchical options |
checkStrictly | boolean | false | Check parents and children independently |
showCheckedStrategy | 'child' | 'parent' | 'all' | 'child' | Display and output children, consolidated parents or all checked nodes |
showSearch | boolean | true | Filter nodes by typing |
onSearch | (query: string) => void | — | Search changes |
allowClear | boolean | true | Allow clearing enabled selections |
defaultExpandAll | boolean | false | Expand all initially |
treeDefaultExpandedKeys | readonly string[] | [] | Values expanded initially |
size | 'sm' | 'md' | 'lg' | 'md' | Control size |
status | 'error' | 'warning' | — | Validation status |
popupWidth | number | string | Content width | Panel width / maximum width; at least as wide as the trigger |
popupMaxWidth | number | string | 420 | Panel width / maximum width; at least as wide as the trigger |
notFoundContent | ReactNode | No options | Content when no options match |
onOpenChange | (open: boolean) => void | — | Open state changes |
loadData | ( option: TreeSelectOption, signal: AbortSignal, ) => Promise<readonly TreeSelectOption[]> | — | Load children on expansion; signal supports cancellation |
onLoadError | (error: unknown, option: TreeSelectOption) => void | — | Loading failed; expand again to retry |
virtual | boolean | false | Render visible items only |
listHeight | number | 256 | List height |
itemHeight | number | 38 | Estimated virtual row height including spacing; follows the regional height and density. Actual rows are measured. |
inputReadOnly | boolean | — | Disable typing while retaining panel selection. |
open | boolean | — | Control whether the panel is open. |
defaultOpen | boolean | — | Initial open state. |
maxTagCount | number | 'responsive' | — | Maximum visible tags; responsive collapses them to the available width. |
tagWrap | boolean | true | Allow selected tags to wrap; false keeps one line and collapses overflow. |
maxCount | number | — | Maximum selection count. |
treeExpandedKeys | readonly string[] | — | Controlled expanded nodes. |
onExpand | (keys: string[]) => void | — | Called when expanded nodes change. |
filterTreeNode | (option: TreeSelectOption, query: string) => boolean | — | Customize search matching for nodes. |
nodeRender | (option: TreeSelectOption) => ReactNode | — | Customize node content. |
cacheKey | string | number | — | Changing the data version clears lazy caches and cancels stale requests. |
multiple | false | true | boolean | false | Multiple / checkbox mode, which automatically enables multiple selection |
treeCheckable | false | boolean | true | false | Multiple / checkbox mode, which automatically enables multiple selection |
value | string | null | readonly string[] | readonly string[] | null | Controlled / initial value; use an array for multiple selection |
defaultValue | string | null | readonly string[] | readonly string[] | null | Controlled / initial value; use an array for multiple selection |
onChange | (((value: string | null) => void) | ((value: readonly string[]) => void)) | ((value: readonly string[]) => void) | — | Selection changes; clearing returns null for single mode or [] for multiple |
disabled | boolean | false | Disable interaction. |
required | boolean | false | Require a non-empty value; compound controls validate once. |
name | string | — | Field name in native FormData. |
form | string | — | ID of the associated native form. |