UNPKG

@darksnow-ui/node-tree-react

Version:
94 lines (87 loc) 3.6 kB
import * as react_jsx_runtime from 'react/jsx-runtime'; import { Node, NodeRow } from '@darksnow-ui/node-tree-headless'; import { MenuItemConfig } from '@darksnow-ui/menus'; export { MenuItemConfig } from '@darksnow-ui/menus'; import * as React$1 from 'react'; import React__default from 'react'; interface NodeTreeProps { className?: string; style?: React.CSSProperties; renderNode?: (props: { row: any; }) => React.ReactNode; renderEmptyState?: () => React.ReactNode; onContextMenuAction?: (action: string, nodeId: string) => void; indentSize?: number; showContextMenu?: boolean; contextMenuClassName?: string; contextMenuItems?: MenuItemConfig[] | ((nodeId: string) => MenuItemConfig[]); emptyStateClassName?: string; showRootDropArea?: boolean; rootDropAreaClassName?: string; renderRootDropArea?: (isDragOver: boolean) => React.ReactNode; resolveIcon?: (node: Node, isExpanded: boolean) => string; } declare function NodeTree({ className, style, renderNode, renderEmptyState, onContextMenuAction, indentSize, showContextMenu, contextMenuClassName, contextMenuItems, emptyStateClassName, showRootDropArea, rootDropAreaClassName, renderRootDropArea, resolveIcon, }: NodeTreeProps): react_jsx_runtime.JSX.Element; interface EnhancedNodeRow extends NodeRow { node: Node; selected: boolean; expanded: boolean; visible: boolean; isCursor?: boolean; isFocus?: boolean; } interface TreeNodeProps { row: EnhancedNodeRow; renderLabel?: (node: Node) => React.ReactNode; renderIcon?: (node: Node, isExpanded: boolean) => React.ReactNode; indentSize?: number; } interface TreeNodeProps { row: EnhancedNodeRow; renderLabel?: (node: Node) => React.ReactNode; resolveIcon?: (node: Node, isExpanded: boolean) => string; indentSize?: number; } declare function TreeNode({ row, renderLabel, resolveIcon, indentSize, }: TreeNodeProps): react_jsx_runtime.JSX.Element; interface NodeMenuContext { nodeId: string; node: Node | null; isRoot: boolean; isExpanded: boolean; controller: any; services: any; } interface UseNodeTreeMenuItemsOptions { onAction?: (action: string, nodeId: string) => void; customItems?: MenuItemConfig<NodeMenuContext>[] | ((context: NodeMenuContext) => MenuItemConfig<NodeMenuContext>[]); } /** * Hook para converter os items do menu do node-tree para o formato do @darksnow-ui/menus */ declare function useNodeTreeMenuItems(nodeId: string, options?: UseNodeTreeMenuItemsOptions): { items: MenuItemConfig<NodeMenuContext>[]; context: NodeMenuContext; }; interface ContextMenuProps { x: number; y: number; nodeId: string; containerElementRef?: React__default.RefObject<HTMLDivElement>; onClose: () => void; className?: string; onAction?: (action: string, nodeId: string) => void; items?: MenuItemConfig<NodeMenuContext>[]; useDefaultItems?: boolean; } /** * Wrapper para o ContextMenu que integra com o node-tree */ declare function ContextMenu({ x, y, nodeId, containerElementRef, onClose, className, onAction, items, useDefaultItems, }: ContextMenuProps): react_jsx_runtime.JSX.Element | null; interface NodeWrapperProps { id: string; children: React.ReactNode; className?: string; } declare const NodeWrapper: React$1.MemoExoticComponent<({ id, children, className }: NodeWrapperProps) => react_jsx_runtime.JSX.Element>; export { ContextMenu, type ContextMenuProps, type NodeMenuContext, NodeTree, type NodeTreeProps, NodeWrapper, TreeNode, useNodeTreeMenuItems };