UNPKG

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
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;