@jiaozhiye/qm-design-vue
Version:
A Component Library for Vue3.0
55 lines (54 loc) • 2.33 kB
TypeScript
import { Ref, ComputedRef, CSSProperties } from 'vue';
import { getRowKeyType } from '../table/types';
import type { IColumn, IMergeCellItem, IRecord, IRowKey, ITableProps } from '../table/types';
import type { ITableState } from './useTableRef';
import type { ITableRef } from './useTableVar';
import type { ComponentSize } from '../../../_utils/types';
type IExtra = {
getRowKey: getRowKeyType;
tableVar: ITableRef;
topElementRef: Ref<HTMLDivElement | undefined>;
tableElementRef: Ref<HTMLDivElement | undefined>;
$size: ComputedRef<ComponentSize>;
tableColumns: ComputedRef<IColumn[]>;
flattenColumns: ComputedRef<IColumn[]>;
leftFixedColumns: ComputedRef<IColumn[]>;
derivedMergeCells: ComputedRef<IMergeCellItem[]>;
layout: Ref<ITableState['layout']>;
scrollX: Ref<boolean>;
scrollY: Ref<boolean>;
showFooter: ComputedRef<boolean>;
showPagination: ComputedRef<boolean>;
isFullScreen: Ref<boolean>;
setLayout: (layout: ITableState['layout']) => void;
setScrollX: (scrollX: boolean) => void;
setScrollY: (scrollY: boolean) => void;
setElementStore: (key: string, value: HTMLElement) => void;
setScrollXStore: (option: ITableRef['scrollXStore']) => void;
setScrollYStore: (option: ITableRef['scrollYStore']) => void;
setShouldToTop: (value: boolean) => void;
};
declare const useTableLayout: <T extends ITableProps>(props: T, extra: IExtra) => {
createElementStore: () => void;
tableStyles: ComputedRef<CSSProperties>;
getSpan: (row: IRecord, column: IColumn, rowIndex: number, columnIndex: number, tableData: IRecord[]) => {
rowSpan: number;
colSpan: number;
};
getStickyLeft: (dataIndex: string) => number;
getStickyRight: (dataIndex: string, part?: string) => number;
scrollXToColumn: (dataIndex: string, index?: number) => void;
scrollYToRecord: (rowKey: IRowKey, index?: number) => void;
rowInViewport: (index: number) => boolean;
calcTableHeight: () => void;
resetTableScroll: () => void;
computeVirtualX: (sl: number, tableWidth: number) => {
toVisibleIndex: number;
visibleSize: number;
};
computeVirtualY: (st: number, rowHeight: number) => {
toVisibleIndex: number;
};
doLayout: () => void;
};
export default useTableLayout;