shineout
Version:
Shein 前端组件库
71 lines (70 loc) • 2.97 kB
TypeScript
/// <reference types="react" />
import { PureComponent } from '../component';
import { SeperateTableProps, TheadProps } from './Props';
import { ScrollProps } from '../Scroll/Props';
interface SeperateTableState {
scrollTop: number;
scrollLeft: number;
offsetLeft?: number;
offsetRight?: number;
currentIndex: number;
floatFixed: boolean;
resize: boolean;
colgroup?: number[];
}
declare class SeperateTable<DataItem, Value> extends PureComponent<SeperateTableProps<DataItem, Value>, SeperateTableState> {
bindTbody: (el: HTMLDivElement) => void;
bindRealTbody: (el: HTMLTableElement) => void;
bindThead: (el: HTMLTableElement) => void;
bindHeadWrapper: (el: HTMLDivElement) => void;
bindFoot: (el: HTMLTableElement) => void;
rmOverScrollListener?: (() => void) | null;
thead: HTMLTableElement;
tbody: HTMLDivElement;
tfoot: HTMLTableElement;
realTbody: HTMLTableElement;
headWrapper: HTMLDivElement;
cachedRowHeight: number[];
lastScrollArgs: Parameters<ScrollProps['onScroll']>;
lastScrollTop: number;
ajustBottomScroll: boolean;
renderByExpand: boolean;
lastResetLeft: number;
lastResetRight: number;
lastData: SeperateTableProps<DataItem, Value>['data'];
lastColumns: SeperateTableProps<DataItem, Value>['columns'];
static defaultProps: {
rowHeight: number;
};
constructor(props: SeperateTableProps<DataItem, Value>);
componentDidMount(): void;
componentDidUpdate(prevProps: SeperateTableProps<DataItem, Value>): void;
componentWillUnmount(): void;
getIndex(scrollTop?: number): number;
getContentHeight(): number;
getContentWidth(): number;
getSumHeight(start: number, end: number): number;
getLastRowHeight(index: number): number;
setRowHeight(height: number, index: number, expand: boolean): void;
setTop(scrollHeight: number, fullHeight: number, top: number): void;
checkScrollToIndex(index: number, outerHeight: number): number;
ajustBottom(dataChange: boolean): void;
updateScrollLeft(): void;
adjustScrollLeft(): void;
resetFloatFixed(): void;
resetIndex(): number;
resetHeight(): void;
resetWidth(left?: number, right?: number): void;
bindElement(key: 'thead' | 'tbody' | 'tfoot' | 'realTbody' | 'headWrapper', el: HTMLElement): void;
scrollToTop(): void;
scrollToIndex(index: number, callback?: () => void): void;
scrollOffset(index: number, callback: () => void): void;
handleScroll(...args: Parameters<ScrollProps['onScroll']>): void;
handleSortChange(...args: Parameters<TheadProps<DataItem, Value>['onSortChange']>): void;
handleColgroup(tds: NodeListOf<HTMLTableCellElement>): void;
renderBody(floatClass: string[]): JSX.Element;
renderHeader(floatClass: string[]): JSX.Element;
renderFooter(floatClass: string[]): JSX.Element | null;
render(): (JSX.Element | null)[];
}
export default SeperateTable;