react-accessible-treeview
Version:
A react component that implements the treeview pattern as described by the WAI-ARIA Authoring Practices.
42 lines (41 loc) • 1.83 kB
TypeScript
import React from "react";
import { ITreeViewState, TreeViewAction } from "./reducer";
import { ClickActions, INode, INodeRefs, INodeRendererProps, NodeAction, NodeId } from "./types";
import { IFlatMetadata } from "./utils";
import { baseClassNames } from "./constants";
export interface INodeProps<M extends IFlatMetadata = IFlatMetadata> {
element: INode<M>;
dispatch: React.Dispatch<TreeViewAction>;
data: INode<M>[];
nodeAction: NodeAction;
selectedIds: Set<NodeId>;
tabbableId: NodeId;
isFocused: boolean;
expandedIds: Set<NodeId>;
disabledIds: Set<NodeId>;
halfSelectedIds: Set<NodeId>;
lastUserSelect: NodeId;
nodeRefs: INodeRefs;
leafRefs: INodeRefs;
baseClassNames: typeof baseClassNames;
nodeRenderer: (props: INodeRendererProps<M>) => React.ReactNode;
setsize: number;
posinset: number;
level: number;
propagateCollapse: boolean;
propagateSelect: boolean;
multiSelect: boolean;
togglableSelect: boolean;
clickAction?: ClickActions;
state: ITreeViewState;
propagateSelectUpwards: boolean;
}
export interface INodeGroupProps<M extends IFlatMetadata = IFlatMetadata> extends Omit<INodeProps<M>, "setsize" | "posinset"> {
getClasses: (className: string) => string;
/** don't send this. The NodeGroup render function, determines it for you */
setsize?: undefined;
/** don't send this. The NodeGroup render function, determines it for you */
posinset?: undefined;
}
export declare const Node: <M extends IFlatMetadata = IFlatMetadata>(props: INodeProps<M>) => JSX.Element;
export declare const NodeGroup: <M extends IFlatMetadata = IFlatMetadata>({ data, element, expandedIds, getClasses, baseClassNames, level, ...rest }: INodeGroupProps<M>) => JSX.Element;