UNPKG

drip-table

Version:

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

75 lines (74 loc) 3.1 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 { SetStateAction } from "./utils/hooks"; import type { DripTableExtraOptions, DripTableProps, DripTableRecordTypeBase, DripTableRecordTypeWithSubtable, DripTableTableInformation, ExtractDripTableExtraOption } from "./types"; import { FinalizeString } from './components/cell-components/utils'; import type { SandboxCreateEvaluator, SandboxEvaluate, SandboxSafeEvaluate } from './utils/sandbox'; export interface IDripTableContext<RecordType extends DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, ExtractDripTableExtraOption<ExtraOptions, 'SubtableDataSourceKey'>> = DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, never>, ExtraOptions extends Partial<DripTableExtraOptions> = never> { /** * 表格属性 */ props: DripTableProps<RecordType, ExtraOptions>; /** * 表格基本信息 */ info: DripTableTableInformation<RecordType, ExtraOptions>; /** * 表格状态 */ state: { loading: boolean; api: CallableFunction | CallableFunction[] | null; tab: number; extraData: null; pendingChanging: boolean; pagination: { current: number; total: number; pageSize: number; }; paginationChanged: boolean; sorter: { key: string | null; direction: 'ascend' | 'descend' | null; comparer: ((a: RecordType, b: RecordType) => number) | null; }; sorterChanged: boolean; filters: Record<string, (boolean | React.Key)[] | null>; filtersChanged: boolean; tableSize: 'default'; layout: 'table' | 'card' | 'calendar'; checkPassed: boolean; selectedRowKeys: React.Key[]; displayColumnKeys: React.Key[]; }; /** * 设置表格状态 */ setState: (state: SetStateAction<IDripTableContext['state']>) => void; /** * 创建沙箱函数 */ createEvaluator: SandboxCreateEvaluator; /** * 沙箱函数执行器 */ evaluate: SandboxEvaluate; /** * 安全的沙箱函数执行器 */ safeEvaluate: SandboxSafeEvaluate; /** * 格式化模板字符串 */ finalizeString: FinalizeString; } export declare const createTableState: () => IDripTableContext['state']; export declare const DripTableContext: React.Context<IDripTableContext<DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, never>, never>>; export declare const useTableContext: <RecordType extends DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, ExtractDripTableExtraOption<ExtraOptions, "SubtableDataSourceKey">> = DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, never>, ExtraOptions extends Partial<DripTableExtraOptions> = never>() => IDripTableContext<RecordType, ExtraOptions>;