UNPKG

tdesign-react

Version:
154 lines (153 loc) 5.87 kB
import { PrimaryTableCol, TableRowState, TableRowValue, TableRowData } from '../type'; export type TableTreeDataMap = Map<string | number, TableRowState>; export interface TableRowModel<T> extends TableRowState<T> { setData?: (key: string | number, data: T) => void; } export interface KeysType { rowKey: string; childrenKey: string; } export interface SwapParams<T> { current: T; target: T; currentIndex: number; targetIndex: number; } export declare const TABLE_TREE_ERROR_CODE_NOT_SAME_LEVEL: { code: number; reason: string; }; /** * 表格树形结构处理器 * Vue 和 React 可以通用 * 关键函数有以下几个 * @toggleExpandData 处理树形结构展开收起 * @setData 更新当行数据 * @getData 获取单行数据 * @remove 移除行数据,及其子节点 * @appendTo 追加子节点到末尾 */ declare class TableTreeStore<T extends TableRowData = TableRowData> { /** 树形结构 Map 存储 */ treeDataMap: TableTreeDataMap; expandAllRowIndex: 0; constructor(); /** * 初始化 treeDataMap,不会改变 dataSource * @param dataSource 树形数据源 * @param columns 列配置 * @param keys 字段别名 */ initialTreeStore(dataSource: T[], columns: PrimaryTableCol[], keys: KeysType): void; /** * 获取所有节点的唯一标识 */ getAllUniqueKeys(data: T[], keys: KeysType, arr?: T[]): T[]; toggleExpandData(p: { rowIndex: number; row: T; }, dataSource: T[], keys: KeysType): T[]; updateExpandRow(changeRow: TableRowState, dataSource: T[], keys: KeysType): T[]; /** * 获取当前行全部数据 * @param key 行唯一标识 * @returns {TableRowState} 当前行数据 */ getData(key: TableRowValue): TableRowState; /** * 更新当前行数据,并返回当前行下标 * @param rowValue 当前行唯一标识值 * @param newRowData 新行数据 * @returns {number} rowIndex 设置的行下标 */ updateData(rowValue: TableRowValue, newRowData: T, dataSource: T[], keys: KeysType): number; /** * 移除指定节点 * @param key 行唯一标识 */ remove(key: TableRowValue, dataSource: T[], keys: KeysType): T[]; /** * 为当前节点添加子节点,默认添加到最后一个节点。允许添加单个或多个 * @param rowValue 当前节点唯一标识 * @param newData 待添加的新节点 */ appendTo(rowValue: string | number, newData: T | T[], dataSource: T[], keys: KeysType): T[]; appendToRoot(newData: T | T[], dataSource: T[], keys: KeysType): T[]; /** * 在当前节点后,插入一个兄弟节点 * @param rowValue 当前节点唯一标识 * @param newData 待添加的新节点 */ insertAfter(rowValue: string | number, newData: T, dataSource: T[], keys: KeysType): T[]; /** * 在当前节点前,插入一个兄弟节点 * @param rowValue 当前节点唯一标识 * @param newData 待添加的新节点 */ insertBefore(rowValue: string | number, newData: T, dataSource: T[], keys: KeysType): T[]; insert(rowValue: string | number, newData: T, dataSource: T[], keys: KeysType, type: 'before' | 'after'): T[]; /** * 交换数据行 * @returns 交换失败返回 false */ swapData(dataSource: T[], params: SwapParams<T>, keys: KeysType): { dataSource: T[]; result: boolean; code?: number; reason?: string; }; /** * 展开所有节点 */ expandAll(dataSource: T[], keys: KeysType): T[]; /** * 收起所有节点 */ foldAll(dataSource: T[], keys: KeysType): T[]; /** 获取整个树形结构 */ getTreeNode(dataSource: T[], keys: KeysType): T[]; /** * 初始化树形结构 Map * @param treeDataMap 树形结构 Map * @param dataSource 数据源 * @param column 树形结构列 * @param keys 字段映射关系 * @param level 层级 * @param parent 父元素 * @returns void */ initialTreeDataMap(treeDataMap: TableTreeDataMap, dataSource: T[], column: PrimaryTableCol, keys: KeysType, level?: number, parent?: TableRowState): void; updateDisabledState(dataSource: T[], column: PrimaryTableCol, keys: KeysType): void; /** * 校验数据合法性 */ validateDataExist(state: TableRowState, rowValue: string | number): boolean; /** * 校验数据是否已存在 */ validateDataDoubleExist(state: TableRowState, rowValue: string | number): boolean; } export default TableTreeStore; /** * 更新展开的子节点数量 * @param rowSate 行数据和状态 * @param distance 需要调整的展开子节点长度数量,展开时增加,收起时减少。值为负数,表示减 * @param expanded 展开/收起 */ export declare function updateRowExpandLength(treeDataMap: TableTreeDataMap, row: TableRowData, distance: number, type: 'expand' | 'fold' | 'delete' | 'insert', keys: KeysType): void; export declare function clearRowExpandLength<T>(treeDataMap: TableTreeDataMap, row: T, keys: KeysType): void; /** * 更新子节点行状态,行数据、父节点、层级、路径等数据 * @param rowState 行状态数据 * @param expanded 展开或收起 * @param keys */ export declare function updateChildrenRowState<T>(treeDataMap: TableTreeDataMap, rowState: TableRowState, expanded: boolean, keys: KeysType): void; export declare function updateRowData<T extends TableRowData = TableRowData>(data: T[], key: string | number, newData: T, keys: KeysType): void; export declare function updateRowIndex<T>(treeDataMap: TableTreeDataMap, dataSource: T[], extra: { rowKey: string; minRowIndex?: number; maxRowIndex?: number; type?: 'add' | 'remove'; count?: number; }): void;