import React, { ReactNode, CSSProperties } from 'react'; import { BasicDataNode } from 'rc-tree'; import { Key, NodeData, NodeEvent } from './TreeNode'; export interface Props { /** * 根结点( 组) */ children?: ReactNode; /** * 自动生成 TreeNodes,设置 treeData 后 children 会被忽略 */ treeData?: T[]; /** * 是否展示 TreeNode 图标(只是给图标留个空位,没有默认图标) * @default false */ showIcon?: boolean; /** * 自定义 TreeNode 图标,showIcon 需要设置为 true */ icon?: ReactNode | ((e: NodeEvent) => ReactNode); /** * 自定义展开/折叠图标 */ switcherIcon?: ReactNode | ((e: NodeEvent) => ReactNode); /** * 可展开/收起父节点的 action * @default false */ expandAction?: false | 'click' | 'doubleClick'; /** * 是否默认展开所有父节点 * @default false */ defaultExpandAll?: boolean; /** * 默认展开的 TreeNodeKeys, 当 defaultExpandAll = true 时会被忽略 */ defaultExpandedKeys?: Key[]; /** * (受控)展开的 TreeNodeKeys */ expandedKeys?: Key[]; /** * 展开/收起 TreeNode 时触发 */ onExpandedKeysChange?: (expandedKeys: Key[]) => void; /** * 是否可选中高亮某个 TreeNode * @default false */ selectable?: boolean; /** * 默认选中高亮的 TreeNodeKey */ defaultSelectedKey?: Key; /** * (受控)选中高亮的 TreeNodeKey */ selectedKey?: Key; /** * 点击 TreeNode 触发 */ onSelect?: (selectedKey?: Key) => void; /** * 是否在 TreeNode 前添加 Checkbox 复选框 * @default false */ checkable?: boolean; /** * 默认选中复选框的 TreeNodeKeys */ defaultCheckedKeys?: Key[]; /** * (受控)选中复选框的 TreeNodeKeys */ checkedKeys?: Key[]; /** * 点击复选框触发 */ onCheckedKeysChange?: (checkedKeys: Key[]) => void; /** * 自定义样式名 */ className?: string; /** * 自定义样式 */ style?: CSSProperties; } export interface RcNodeData extends BasicDataNode { key: Key; nodeKey: Key; title?: ReactNode | ((data: RcNodeData) => ReactNode); children?: RcNodeData[]; } export default function Tree({ children, treeData, showIcon, switcherIcon, expandAction, onExpandedKeysChange, selectable, defaultSelectedKey, selectedKey, onSelect, checkable, onCheckedKeysChange, className, ...restProps }: Props): React.JSX.Element;