ivt
Version:
Ivt Components Library
32 lines (29 loc) • 1.49 kB
TypeScript
import * as react_jsx_runtime from 'react/jsx-runtime';
import React__default from 'react';
declare const styleInput = "border-input file:text-foreground placeholder:text-muted-foreground focus-visible:ring-ring flex h-10 w-full rounded-md border bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-1 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm";
interface EditableOption {
value: string | number | boolean;
label: string;
}
interface EditableColumn<T> {
key: keyof T;
label: string;
type?: "text" | "number" | "select" | "boolean";
required?: boolean;
options?: EditableOption[];
render?: (value: any, row: T, rowIndex: number) => React__default.ReactNode;
editable?: boolean;
}
interface EditableTableProps<T> {
data: T[];
columns: EditableColumn<T>[];
rowKey: keyof T;
isIntegrationTable?: boolean;
onSave: (field: keyof T, value: any, row: T) => Promise<void> | void;
onChange?: (rowId: number, field: keyof T, value: any) => void;
onCancel?: (rowId: number, field: keyof T) => void;
className?: string;
}
declare function EditableTable<T extends Record<string, any>>({ data, columns, rowKey, onSave, onChange, onCancel, className, isIntegrationTable, }: EditableTableProps<T>): react_jsx_runtime.JSX.Element;
export { EditableTable, styleInput };
export type { EditableColumn };