tdesign-react
Version:
TDesign Component for React
154 lines (153 loc) • 5.87 kB
TypeScript
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;