@iobroker/adapter-react-v5
Version:
React components to develop ioBroker interfaces with react.
80 lines (79 loc) • 3.27 kB
TypeScript
import React, { Component, type JSX } from 'react';
import type { Connection } from '../Connection';
import type { IobTheme } from '../types';
interface Column {
cellStyle?: Record<string, any>;
editComponent?: React.FC<{
value: any;
rowData: Record<string, any>;
onChange: (newValue: any) => void;
}>;
field: string;
headerStyle?: Record<string, any>;
hidden?: boolean;
lookup?: Record<string, string>;
editable?: boolean | 'never';
title?: string;
type?: 'string' | 'boolean' | 'numeric' | 'icon' | 'oid' | 'color';
subField?: string;
subLookup?: Record<string, string>;
subStyle?: Record<string, any>;
}
interface TreeTableProps {
data: Record<string, any>[];
className?: string;
/** name of table to save settings in localStorage */
name?: string;
columns: Column[];
noSort?: boolean;
onUpdate?: ((newData: Record<string, any>, oldData: Record<string, any>) => void) | ((addNew: true) => void);
onDelete?: (oldData: Record<string, any>) => 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<string, any> | null;
order: 'desc' | 'asc';
update: string[] | null;
orderBy: string;
showSelectColor: boolean;
selectIdValue?: string | null;
showSelectId?: boolean;
data?: Record<string, any>[];
}
export declare class TreeTable extends Component<TreeTableProps, TreeTableState> {
private selectCallback;
private updateTimeout;
constructor(props: TreeTableProps);
static getDerivedStateFromProps(props: TreeTableProps, state: TreeTableState): Partial<TreeTableState>;
renderCellEdit(item: Record<string, any>, 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<string, any>): 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<string, any>, col: Column): JSX.Element | string | number | null;
renderCell(item: Record<string, any>, col: Column, level: number, i: number): JSX.Element;
static renderCellWithSubField(item: Record<string, any>, col: Column): JSX.Element;
renderLine(item: Record<string, any>, level?: number): JSX.Element | JSX.Element[] | null;
handleRequestSort(property: string): void;
renderHead(): JSX.Element;
render(): JSX.Element | null;
}
export {};