drip-table
Version:
A tiny and powerful enterprise-class solution for building tables.
98 lines (97 loc) • 3.28 kB
TypeScript
/**
* This file is part of the drip-table project.
* @link : https://drip-table.jd.com/
* @author : Emil Zhai (root@derzh.com)
* @modifier : Emil Zhai (root@derzh.com)
* @copyright: Copyright (c) 2021 JD Network Technology Co., Ltd.
*/
import React from 'react';
import type { SandboxCreateEvaluator, SandboxEvaluate, SandboxSafeEvaluate } from "../../utils/sandbox";
import type { DripTableColumnSchema, DripTableExtraOptions, DripTableProps, DripTableRecordTypeBase, DripTableRecordTypeWithSubtable, EventLike } from "../../types";
import type { DripTableBuiltInComponentEvent } from '.';
import type { FinalizeString } from './utils';
export interface DripTableComponentProps<RecordType extends DripTableRecordTypeBase, ColumnSchema extends DripTableColumnSchema, ComponentEvent extends EventLike = never, ComponentExtraData = unknown> {
/**
* 当前渲染列参数
*/
schema: ColumnSchema;
/**
* 当前渲染行数据结构(`list[i]`)
*/
record: RecordType;
/**
* 当前渲染行数据下标(`i of list[i]`)
*/
recordIndex: number;
/**
* 已弃用,请使用 `record` 字段
* @deprecated
*/
data: RecordType;
/**
* 当前渲染单元格数据(`record[schema.dataIndex]`)
*/
value: unknown;
/**
* 获取该行其他渲染单元格数据(`record[dataIndex]`)
*/
indexValue: (dataIndex: ColumnSchema['dataIndex'], defaultValue?: unknown) => unknown;
/**
* 手动渲染组件 Schema
*/
renderSchema: (schema: DripTableColumnSchema, record: RecordType, recordIndex: number) => React.ReactNode;
/**
* 沙箱生成器
*/
createEvaluator: SandboxCreateEvaluator;
/**
* 沙箱执行器
*/
evaluate: SandboxEvaluate;
/**
* 安全沙箱执行器
*/
safeEvaluate: SandboxSafeEvaluate;
/**
* 格式化模板字符串
*/
finalizeString: FinalizeString;
/**
* 是否处于禁用状态
*/
disable?: boolean;
/**
* 是否可通过点击进入编辑模式
*/
editable?: boolean;
/**
* 单元格数据改变事件(例如编辑模式)
*/
onChange?: (value: unknown) => void;
/**
* 最外层额外透传的数据
*/
ext?: ComponentExtraData;
/**
* 透传 DripTable 属性里的 components 字段 (用于提供给组合组件渲染使用)
*/
components?: DripTableProps<DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, NonNullable<React.Key>>, DripTableExtraOptions>['components'];
/**
* 透传 DripTable 属性里的 icons 字段 (用于提供给组合组件渲染使用)
*/
icons?: DripTableProps<DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, NonNullable<React.Key>>, DripTableExtraOptions>['icons'];
/**
* 是否处于预览模式(不响应事件)
*/
preview?: boolean | {
/**
* 自定义列渲染函数
*/
columnRenderer?: (columnSchema: ColumnSchema, columnElement: JSX.Element) => JSX.Element;
};
onClick?: (name: string) => void;
/**
* 自定义事件触发器
*/
fireEvent: (event: ComponentEvent | DripTableBuiltInComponentEvent) => void;
}