@sgnl-pro/react-tree
Version:
A tree view component for React
59 lines (58 loc) • 3.32 kB
TypeScript
import { FC, ReactNode } from 'react';
import { ITreeItem, SelectAction, SelectionType } from './types';
import { TreeEventEmitter } from './TreeEventEmitter';
import './main.sass';
export interface ITreeProps {
nodes: ITreeItem[];
/**
* Тип элементов, доступных для выбора:
* дочерние ('child'), родительские ('parent'), все ('all').
* Для отключения возможности выбора используется свойство 'none' (установлено по-умолчанию).
*/
selectionType?: SelectionType;
/** Разрешен ли выбор нескольких элементов. */
multipleSelection?: boolean;
/**
* Какое событие будет вызывать выбор элемента:
* click - клик по тексту (клик по иконке будет вызывать раскрытие элемента);
* check - изменение состояния чекбокса (клик по элементу будет вызывать его раскрытие).
*/
selectAction?: SelectAction;
/**
* Отключить выбор для заданных элементов.
*/
disabledIds?: ITreeItem['id'][];
/** Класс контейнера дерева. */
containerClassName?: string;
/** Класс узла дерева. */
nodeClassName?: string;
/** Класс выбранного узла дерева. */
nodeActiveClassName?: string;
nodeContentClassName?: string;
/** Класс контейнера иконки. */
nodeIconBoxClassName?: string;
/** Класс иконки. */
nodeIconClassName?: string;
/** Класс текста узла дерева. */
nodeLabelClassName?: string;
/** Функция, которая будет вызвана при открытии элемента. */
onNodeExpand?: (node: ITreeItem) => void;
/**
* Функция, которая будет вызвана при выборе очередного элемента.
* selectedNodes: массив выбранных в текущий момент элементов.
*/
onSelect?: (selectedNodes: ITreeItem[]) => void;
/** Функция для отрисовки элемента для выбора элементов. */
renderCustomCheckbox?: (checked: boolean, onChange: () => void) => ReactNode;
/** Функция для отрисовки дополнительных элементов внутри узла. */
renderNodeData?: (node: ITreeItem, selected: boolean) => ReactNode;
/** Функция для отрисовки иконки узла. */
renderNodeIcon?: (expanded: boolean, selected: boolean, isParentEl: boolean, node: ITreeItem) => ReactNode;
/** Элемент для отображения загрузки. */
loader?: ReactNode;
/** Элемент для отображения отсутствия данных. */
noData?: ReactNode;
/** Класс для генерирования событий в дереве. */
eventEmitter?: TreeEventEmitter;
}
export declare const Tree: FC<ITreeProps>;