tdesign-react
Version:
TDesign Component for React
34 lines (33 loc) • 1.85 kB
TypeScript
/**
* important info: only resize happened, th width calculating allowed
* 验证场景:多级表头调整叶子结点列宽、吸顶表头调整列宽、列数量发生变化、表格未超出、表格已超出
* - 固定列,调整列宽,需要更新固定位置;右侧固定列,调整列宽,需特殊处理
* - 当表格内容没有超出时,即没有出现横向滚动条时,此时认为表格有足够的列宽呈现内容,修改宽度为相邻宽度调整
* - 当表格内容超出,出现横向滚动条时,会自动调整当前列宽和表格总列宽,不影响相邻列宽
*/
import React, { MutableRefObject } from 'react';
import { BaseTableCol, TableRowData, TdBaseTableProps } from '../type';
export default function useColumnResize(params: {
isWidthOverflow: boolean;
tableContentRef: MutableRefObject<HTMLDivElement>;
showColumnShadow: {
left: boolean;
right: boolean;
};
getThWidthList: (type?: 'default' | 'calculate') => {
[colKeys: string]: number;
};
updateThWidthList: (data: {
[colKeys: string]: number;
}) => void;
setTableElmWidth: (width: number) => void;
updateTableAfterColumnResize: () => void;
onColumnResizeChange: TdBaseTableProps['onColumnResizeChange'];
}): {
resizeLineRef: React.MutableRefObject<HTMLDivElement>;
resizeLineStyle: React.CSSProperties;
onColumnMouseover: (e: React.MouseEvent<HTMLTableHeaderCellElement, MouseEvent>, col: BaseTableCol<TableRowData>) => void;
onColumnMousedown: (e: React.MouseEvent<HTMLTableHeaderCellElement, MouseEvent>, col: BaseTableCol<TableRowData>, index: number) => void;
setEffectColMap: (nodes: BaseTableCol<TableRowData>[], parent: BaseTableCol<TableRowData> | null) => void;
updateTableWidthOnColumnChange: (colKeys: string[]) => void;
};