shineout
Version:
Shein 前端组件库
47 lines (46 loc) • 1.48 kB
TypeScript
/** ------ context ------ */
import { CSSProperties, ReactNode } from 'react';
export interface ScrollContextProviderValue {
element?: HTMLElement;
left?: number;
top?: number;
}
export declare type ScrollFixedType = 'x' | 'y' | 'both';
export declare type GetScrollContextConsumerValue<U> = Omit<U, 'scrollElement' | 'scrollLeft' | 'scrollTop'>;
/** ------ scroll ------ */
export interface ScrollProps {
left: number;
top: number;
scrollHeight?: number;
scrollWidth?: number;
scrollX: boolean;
scrollY: boolean;
onScroll: (x: number, y: number, maxX: number, inner: HTMLElement, rectWidth: number, rectHeight: number, pixelX?: number, pixelY?: number, drag?: boolean) => void;
stable?: boolean;
footer?: ReactNode;
innerScrollAttr?: string[];
className?: string;
style?: CSSProperties;
children?: ReactNode;
}
/** ------ bar ------ */
export interface BarProps {
className?: string;
direction?: 'x' | 'y';
forceHeight?: number;
length: number;
barLength: number;
offset: number;
onScroll: (offset: number) => void;
scrollLength: number;
}
/** ------ fixedLength ------ */
export interface FixedLengthProps extends Omit<BarProps, 'barLength'> {
}
/** ------ index ------ */
export interface ScrollIndexProps extends Omit<ScrollProps, 'left' | 'top' | 'scrollX' | 'scrollY'> {
scrollLeft?: number;
scrollTop?: number;
scroll?: ScrollFixedType;
children?: ReactNode;
}