@selfcommunity/react-ui
Version:
React UI Components to integrate a Community created with SelfCommunity Platform.
68 lines (67 loc) • 2.21 kB
TypeScript
import { Component, ReactNode, CSSProperties } from 'react';
type Fn = () => any;
export interface InfiniteScrollProps {
next?: Fn;
hasMoreNext?: boolean;
previous?: Fn;
hasMorePrevious?: boolean;
children: ReactNode;
loaderNext?: ReactNode;
loaderPrevious?: ReactNode;
inverse?: boolean;
scrollThreshold?: number | string;
endMessage?: ReactNode;
header?: ReactNode;
footer?: ReactNode;
style?: CSSProperties;
height?: number | string;
scrollableTarget?: ReactNode;
hasChildren?: boolean;
pullDownToRefresh?: boolean;
pullDownToRefreshContent?: ReactNode;
releaseToRefreshContent?: ReactNode;
pullDownToRefreshThreshold?: number;
refreshFunction?: Fn;
onScroll?: (e: MouseEvent) => any;
dataLength: number;
initialScrollY?: number;
className?: string;
}
interface State {
showLoaderNext: boolean;
showLoaderPrevious: boolean;
pullToRefreshThresholdBreached: boolean;
prevDataLength: number | undefined;
}
declare class InfiniteScroll extends Component<InfiniteScrollProps, State> {
constructor(props: InfiniteScrollProps);
private throttledOnScrollListener;
private _scrollableNode;
private el;
private _infScroll;
private lastScrollTop;
private actionTriggered;
private _pullDown;
private startY;
private currentY;
private dragging;
private maxPullDownDistance;
componentDidMount(): void;
componentWillUnmount(): void;
componentDidUpdate(prevProps: InfiniteScrollProps): void;
static getDerivedStateFromProps(nextProps: InfiniteScrollProps, prevState: State): {
prevDataLength: number;
showLoaderNext: boolean;
showLoaderPrevious: boolean;
pullToRefreshThresholdBreached: boolean;
};
getScrollableTarget: () => HTMLElement;
onStart: EventListener;
onMove: EventListener;
onEnd: EventListener;
isElementAtTop(target: HTMLElement, scrollThreshold?: string | number): boolean;
isElementAtBottom(target: HTMLElement, scrollThreshold?: string | number): boolean;
onScrollListener: (event: MouseEvent) => void;
render(): JSX.Element;
}
export default InfiniteScroll;