baseui
Version:
A React Component library implementing the Base design language
68 lines (67 loc) • 2.12 kB
TypeScript
import type * as React from 'react';
import type { Override } from '../helpers/overrides';
export type TreeLabelOverrides = {
TreeItemContent?: Override;
IconContainer?: Override;
ExpandIcon?: Override;
CollapseIcon?: Override;
LeafIconContainer?: Override;
LeafIcon?: Override;
};
export type TreeViewOverrides = {
Root?: Override;
TreeItemList?: Override;
TreeItem?: Override;
TreeLabel?: Override;
} & TreeLabelOverrides;
export type TreeNodeId = number | string;
export type TreeNodeData<T = any> = {
id?: TreeNodeId;
children?: TreeNodeData[];
isExpanded?: boolean;
label: ((node: TreeNodeData) => React.ReactNode) | string;
info?: T;
[key: string]: any;
};
export type TreeLabelProps = {
hasChildren: boolean;
isExpanded?: boolean;
isSelected?: boolean;
isFocusVisible?: boolean;
label: ((node: TreeNodeData) => React.ReactNode) | string;
overrides?: TreeLabelOverrides;
node: TreeNodeData;
};
export type SharedStyleProps = {
$hasChildren: boolean;
$isExpanded: boolean;
$isSelected: boolean;
$isFocusVisible: boolean;
};
export type TreeNodeProps = {
node: TreeNodeData;
getId: (node: TreeNodeData) => TreeNodeId;
onToggle?: (node: TreeNodeData) => void;
overrides?: TreeViewOverrides;
renderAll?: boolean;
onKeyDown?: (e: KeyboardEvent, node: TreeNodeData) => unknown;
onFocus?: (event: React.SyntheticEvent) => unknown;
onBlur?: (event: React.SyntheticEvent) => unknown;
selectedNodeId?: TreeNodeId;
addRef: (id: TreeNodeId, ref: React.Ref<HTMLLIElement>) => unknown;
removeRef: (id: TreeNodeId) => unknown;
isFocusVisible?: boolean;
indentGuides?: boolean;
};
export type StatefulContainerProps = {
children: (props: TreeViewProps) => React.ReactNode;
} & TreeViewProps;
export type TreeViewProps = {
data: TreeNodeData[];
indentGuides?: boolean;
onToggle?: (node: TreeNodeData) => void;
overrides?: TreeViewOverrides;
renderAll?: boolean;
getId?: (node: TreeNodeData) => TreeNodeId;
singleExpanded?: boolean;
};