UNPKG

@sgnl-pro/react-tree

Version:

A tree view component for React

59 lines (58 loc) 3.32 kB
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>;