import React, { Component, type JSX } from 'react'; import type { Connection } from '../Connection'; import type { IobTheme } from '../types'; interface Column { cellStyle?: Record; editComponent?: React.FC<{ value: any; rowData: Record; onChange: (newValue: any) => void; }>; field: string; headerStyle?: Record; hidden?: boolean; lookup?: Record; editable?: boolean | 'never'; title?: string; type?: 'string' | 'boolean' | 'numeric' | 'icon' | 'oid' | 'color'; subField?: string; subLookup?: Record; subStyle?: Record; } interface TreeTableProps { data: Record[]; className?: string; /** name of table to save settings in localStorage */ name?: string; columns: Column[]; noSort?: boolean; onUpdate?: ((newData: Record, oldData: Record) => void) | ((addNew: true) => void); onDelete?: (oldData: Record) => void; /** hide add button */ noAdd?: boolean; themeType?: string; glowOnChange?: boolean; /** only if an oid type is used */ socket?: Connection; /** Shift in pixels for every level */ levelShift?: number; adapterName: string; theme: IobTheme; } interface TreeTableState { opened: string[]; editMode: number | false; deleteMode: number | false; editData: Record | null; order: 'desc' | 'asc'; update: string[] | null; orderBy: string; showSelectColor: boolean; selectIdValue?: string | null; showSelectId?: boolean; data?: Record[]; } export declare class TreeTable extends Component { private selectCallback; private updateTimeout; constructor(props: TreeTableProps); componentWillUnmount(): void; static getDerivedStateFromProps(props: TreeTableProps, state: TreeTableState): Partial; renderCellEdit(item: Record, col: Column): JSX.Element | null; onChange(col: Column, oldValue: string | number | boolean, newValue: string | number | boolean): void; renderCellEditSelect(col: Column, val: string | number): JSX.Element; renderCellEditString(col: Column, val: string): JSX.Element; renderCellEditNumber(col: Column, val: number): JSX.Element; renderCellEditCustom(col: Column, val: any, item: Record): JSX.Element | null; renderCellEditBoolean(col: Column, val: boolean): JSX.Element; renderSelectColorDialog(): JSX.Element; renderCellEditColor(col: Column, val: string): JSX.Element; renderSelectIdDialog(): JSX.Element | null; renderCellEditObjectID(col: Column, val: string): JSX.Element; static renderCellNonEdit(item: Record, col: Column): JSX.Element | string | number | null; renderCell(item: Record, col: Column, level: number, i: number): JSX.Element; static renderCellWithSubField(item: Record, col: Column): JSX.Element; renderLine(item: Record, level?: number): JSX.Element | JSX.Element[] | null; handleRequestSort(property: string): void; renderHead(): JSX.Element; render(): JSX.Element | null; } export {};