diff --git a/react-infinite/react-infinite-tests.tsx b/react-infinite/react-infinite-tests.tsx new file mode 100644 index 0000000000..91a86abce2 --- /dev/null +++ b/react-infinite/react-infinite-tests.tsx @@ -0,0 +1,113 @@ +/// +/// + +import * as React from 'react'; +import Infinite = require('react-infinite'); + +class Test1 extends React.Component<{}, {}> { + render() { + return ( + +
+
+
+ + ); + } +} + +class Test2 extends React.Component<{}, {}> { + render() { + return ( + +
+
+
+ + ); + } +} + +class Test3 extends React.Component<{}, {}> { + render() { + return ( + +
+
+
+ + ); + } +} + +class Test4 extends React.Component<{}, {}> { + render() { + return ( + +
+
+
+ + ); + } +} + +var ListItem = React.createClass<{key: number; num: number;}, {}>({ + render: function() { + return
+ List Item {this.props.num} +
; + } +}); + +var InfiniteList = React.createClass({ + getInitialState: function() { + return { + elements: this.buildElements(0, 20), + isInfiniteLoading: false + } + }, + + buildElements: function(start: number, end: number) { + var elements = [] as React.ReactElement[]; + for (var i = start; i < end; i++) { + elements.push() + } + return elements; + }, + + handleInfiniteLoad: function() { + var that = this; + this.setState({ + isInfiniteLoading: true + }); + setTimeout(function() { + var elemLength = that.state.elements.length, + newElements = that.buildElements(elemLength, elemLength + 1000); + that.setState({ + isInfiniteLoading: false, + elements: that.state.elements.concat(newElements) + }); + }, 2500); + }, + + elementInfiniteLoad: function() { + return
+ Loading... +
; + }, + + render: function() { + return + {this.state.elements} + ; + } +}); diff --git a/react-infinite/react-infinite.d.ts b/react-infinite/react-infinite.d.ts new file mode 100644 index 0000000000..123883a0e0 --- /dev/null +++ b/react-infinite/react-infinite.d.ts @@ -0,0 +1,36 @@ +// Type definitions for react-infinite +// Project: https://github.com/seatgeek/react-infinite +// Definitions by: rhysd +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +declare module "react-infinite" { + import Infinite = ReactInfinite.Infinite; + export = Infinite; +} + +declare namespace ReactInfinite { + import React = __React; + + interface InfiniteProps extends React.Props { + elementHeight: number | number[]; + containerHeight?: number; + preloadBatchSize?: number | Object; + preloadAdditionalHeight?: number | Object; + handleScroll?: (node: React.ReactElement) => void; + infiniteLoadBeginBottomOffset?: number; + infiniteLoadBeginEdgeOffset?: number; + onInfiniteLoad?: () => void; + loadingSpinnerDelegate?: React.ReactElement; + isInfiniteLoading?: boolean; + timeScrollStateLastsForAfterUserScrolls?: number; + className?: string; + useWindowAsScrollContainer?: boolean; + displayBottomUpwards?: boolean; + } + + export class Infinite extends React.Component { + static containerHeightScaleFactor(n: number): any; + } +}