/** * Render Node of Tree * * @author: Viktor Magarlamov * @date: 2019-06-20 */ import * as React from 'react'; import { ITreeColumn, ITreeNode } from './TreeType'; import { IStringKeyMap } from '../../index'; import { IconName } from '@unidata/icon'; export declare type ConditionFunc = (node: ITreeNode, column?: ITreeColumn) => boolean; export declare type ActionItem = { label: string; action: (node: ITreeNode) => void; icon?: IconName; resolver?: (node: ITreeNode) => boolean; }; export interface IDropConfig { parentNode?: ITreeNode; filledParent: boolean; previousNode?: ITreeNode; filledPrevious: boolean; globalDropLevel: number; configFilled: boolean; } export declare const ROW_HEIGHT = 24; interface IProps { node: ITreeNode; level: number; preventChildrenRender?: boolean; columns: Array>; readOnly?: boolean; isLastChild: boolean; selectedItems: IStringKeyMap; disabledItems: IStringKeyMap; canSelectDisabled: boolean; onNodeSelect?: (node: ITreeNode) => void; onNodeExpand?: (node: ITreeNode) => void; onNodeCollapse?: (node: ITreeNode) => void; onNodeDelete?: (node: ITreeNode) => void; onBeforeNodeSelect?: (node: ITreeNode) => boolean; isDeletable?: boolean | ConditionFunc; filter?: (node: ITreeNode) => boolean; isEditable?: boolean | ConditionFunc; onEdit?: (node: ITreeNode, newValue: string, cellId: string) => void; actions: Array>; isActionsEnabled?: (node: ITreeNode) => boolean; rightExtraItem?: (nodeData: T) => React.ReactNode; isDraggable?: boolean; canHasChildren?: boolean | ConditionFunc; onDragStart?: (event: React.DragEvent, node: ITreeNode) => void; onDragEnd?: (event: React.DragEvent) => void; onBackwardDrop?: (event: React.DragEvent, node: ITreeNode, dropConfig: IDropConfig) => void; allowDragOver?: (event: React.DragEvent, dropToNode: ITreeNode, draggedNode?: ITreeNode) => boolean; draggedNode?: ITreeNode; lastChildStreak: number; isExpanded: boolean; } interface IState { isRowHovered: boolean; isDropDownOpen: boolean; expanded: boolean; isDropAsNext?: boolean; localDropLevel: number; dragEnterCounter: number; } export declare class Node extends React.PureComponent, IState> { state: IState; hoverWhenDragTimeout: number; nodeRef: React.RefObject; componentDidUpdate(prevProps: Readonly>, prevState: Readonly, snapshot?: any): void; get selected(): boolean; get disabled(): boolean; getFirstCellPositionX(level: number): number; onExpandClick: () => void; onRowClick: (e: React.SyntheticEvent) => void; onRowDelete: (e: React.SyntheticEvent) => void; onMouseEnter: () => void; onMouseLeave: () => void; renderChildrenNodes: () => JSX.Element[] | null; handleDragStart: (event: React.DragEvent) => void; handleDragEnd: (event: React.DragEvent) => void; handleDragOver: (event: React.DragEvent) => void; handleDrop: (event: React.DragEvent) => void; handleDragEnter: () => void; handleDragLeave: () => void; onBackwardDrop: (event: React.DragEvent, node: ITreeNode, dropConfig: IDropConfig) => void; handleActionClick: (action: (node: ITreeNode) => void) => () => void; handleOpenDD: () => void; handleCloseDD: () => void; renderDropPlace: (isDropAsNext: boolean | undefined, dropLevel: number) => JSX.Element | null; getRightExtraItems: () => React.ReactNode; get actions(): ActionItem[]; dropdownMenuActions: () => JSX.Element; renderActions: () => JSX.Element | null; render(): JSX.Element | null; } export {};