Merge pull request #12749 from Strate/react_virtualized_window_scroller_types

react-virtualized: improve types of WindowScroller
This commit is contained in:
Nathan Shively-Sanders
2016-11-23 11:50:23 -08:00
committed by GitHub
2 changed files with 28 additions and 4 deletions
+19 -2
View File
@@ -118,6 +118,23 @@ declare module "react-virtualized" {
type ScrollSyncProps = any;
export class ScrollSync extends React.Component<ScrollSyncProps, {}> { }
type WindowScrollerProps = any;
export class WindowScroller extends React.Component<WindowScrollerProps, {}> { }
export module WindowScroller {
export type OnResizeArg = {
height: number;
}
export type OnScrollArg = {
scrollTop: number;
}
export type RenderCallbackArg = {
height: number;
scrollTop: number;
isScrolling: boolean;
}
export type Props = {
onScroll?: (arg: OnScrollArg) => void;
onResize?: (arg: OnResizeArg) => void;
// TODO `children` should be typed here
};
}
export class WindowScroller extends React.Component<WindowScroller.Props, {}> { }
}
@@ -291,9 +291,11 @@ function ScrollSyncTest() {
}
function WindowScrollerTest() {
const onScroll = function({scrollTop}: WindowScroller.OnScrollArg) {};
const onResize = function({height}: WindowScroller.OnResizeArg) {};
ReactDOM.render(
<WindowScroller>
{({ height, isScrolling, scrollTop }) => (
<WindowScroller onScroll={onScroll} onResize={onResize}>
{({ height, isScrolling, scrollTop }: WindowScroller.RenderCallbackArg) => (
<VirtualScroll
autoHeight
height={height}
@@ -306,4 +308,9 @@ function WindowScrollerTest() {
</WindowScroller>,
document.getElementById('example')
);
// test that onScroll & onResize are optional
ReactDOM.render(
<WindowScroller />,
document.getElementById('example')
);
}