lucid-ui
Version:
A UI component library from AppNexus.
78 lines (77 loc) • 2.64 kB
TypeScript
import React from 'react';
import { StandardProps } from '../../util/component-types';
export interface ISlidePanelSlideProps extends StandardProps {
description?: string;
}
declare class SlidePanelSlide extends React.Component<ISlidePanelSlideProps, {}, {}> {
static displayName: string;
static propName: string;
render(): null;
}
export interface ISlidePanelProps extends StandardProps, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> {
/** Max number of viewable slides to show simultaneously. */
slidesToShow: number;
/** The offset of the left-most rendered slide. */
offset: number;
/** Animate slides transitions from changes in `offset`. */
isAnimated: boolean;
/** Slides are rendered in a continuous loop, where the first slide repeats
* after the last slide and vice-versa. DOM elements are re-ordered and
* re-used. */
isLooped: boolean;
/** Called when a user's swipe would change the offset. Callback passes
* number of slides by the user (positive for forward swipes, negative for
* backwards swipes). */
onSwipe: (slidesSwiped: number, { event, props }: {
event: React.TouchEvent;
props: ISlidePanelProps;
}) => void;
}
interface ISlidePanelState {
translateXPixel: number;
startX: number;
isDragging: boolean;
isAnimated: boolean;
}
declare class SlidePanel extends React.Component<ISlidePanelProps, ISlidePanelState, {}> {
static _isPrivate: boolean;
static displayName: string;
static peek: {
description: string;
categories: string[];
};
static propTypes: {
className: any;
children: any;
Slide: any;
slidesToShow: any;
offset: any;
isAnimated: any;
isLooped: any;
onSwipe: any;
};
private rootHTMLDivElement;
private slideStrip;
static Slide: typeof SlidePanelSlide;
offsetTranslate: number;
state: {
translateXPixel: number;
startX: number;
isAnimated: boolean;
isDragging: boolean;
};
static defaultProps: {
slidesToShow: number;
offset: number;
isAnimated: boolean;
onSwipe: (...args: any[]) => void;
isLooped: boolean;
};
handleTouchStart: (event: React.TouchEvent) => void;
handleTouchMove: (event: React.TouchEvent) => void;
handleTouchEnd: (event: React.TouchEvent) => void;
componentDidMount(): void;
componentDidUpdate(prevProps: ISlidePanelProps, prevState: ISlidePanelState): void;
render(): React.ReactNode;
}
export default SlidePanel;