UNPKG

drip-table

Version:

A tiny and powerful enterprise-class solution for building tables.

98 lines (97 loc) 3.28 kB
/** * 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; }