@fesjs/fes-design
Version:
fes-design for PC
35 lines (34 loc) • 1.17 kB
TypeScript
import { type Ref } from 'vue';
import type { TableProps } from './table';
import type { ColumnInst } from './column';
export interface WidthItem {
id: number;
width?: number;
minWidth?: number;
maxWidth?: number;
origin?: {
width?: number;
minWidth?: number;
maxWidth?: number;
};
}
/**
* 更新列的宽度
* 列最小宽度为80,如果设定了width则使用设定的width作为宽度,没有设定宽度的列平分剩余的宽度(容器的宽度减去已使用的宽度)
*/
export default function useTableLayout({ props, wrapperRef, headerWrapperRef, bodyWrapperRef, bodyTableRef, columns, showData, }: {
showData: Ref<object[]>;
props: TableProps;
wrapperRef: Ref<HTMLElement>;
headerWrapperRef: Ref<HTMLElement>;
bodyWrapperRef: Ref<HTMLElement>;
bodyTableRef: Ref<HTMLElement>;
columns: Ref<ColumnInst[]>;
}): {
widthMap: Ref<Record<string, WidthItem>, Record<string, WidthItem>>;
bodyWidth: Ref<number, number>;
bodyHeight: Ref<number, number>;
isScrollX: Ref<boolean, boolean>;
isScrollY: Ref<boolean, boolean>;
isWatchX: Ref<boolean, boolean>;
};