mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-08-11 12:30:18 +00:00
Add type definitions for redux-infinite-scroll (#16921)
* Adding typescript definitions for redux-infinite-scroll * Add new line characters. * Add tsconfig.json * Remove package.json to satisfy first time requirements. * Add typescript version requirement. * - InfiniteScoller now properly inherits div properties. - Add test file. - Add tslint file. - Remove readme as per first time requirements. - Remove experimentalDecorators config setting as it is not needed. - Fix parsing issue with typescript version in index.d.ts. * Fix errors reported by linter.
This commit is contained in:
committed by
Mohamed Hegazy
parent
f391463294
commit
e9fb99fe04
+25
@@ -0,0 +1,25 @@
|
||||
// Type definitions for redux-infinite-scroll 1.0
|
||||
// Project: https://github.com/RealScout/redux-infinite-scroll
|
||||
// Definitions by: Tony Nikolov <https://github.com/silkyfray/>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// TypeScript Version: 2.3
|
||||
|
||||
import { Component, HTMLProps } from "react";
|
||||
|
||||
interface InfiniteScrollerProps {
|
||||
elementIsScrollable?: boolean;
|
||||
containerHeight?: number | string;
|
||||
threshold?: number;
|
||||
hasMore?: boolean;
|
||||
loadingMore?: boolean;
|
||||
loader?: any;
|
||||
showLoader?: boolean;
|
||||
loadMore(): void;
|
||||
items?: JSX.Element[];
|
||||
children?: JSX.Element[];
|
||||
holderType?: string;
|
||||
}
|
||||
|
||||
declare class InfiniteScoller extends Component<InfiniteScrollerProps & HTMLProps<HTMLDivElement>, {}> {}
|
||||
|
||||
export default InfiniteScoller;
|
||||
@@ -0,0 +1,49 @@
|
||||
import * as React from 'react';
|
||||
import * as ReactDOM from 'react-dom';
|
||||
import InfiniteScoller from "redux-infinite-scroll";
|
||||
|
||||
class App extends React.Component<any, any> {
|
||||
state = {
|
||||
numOfItems: 40,
|
||||
loadingMore: false
|
||||
};
|
||||
|
||||
_createData(numOfItems = this.state.numOfItems) {
|
||||
const data: JSX.Element[] = [];
|
||||
for (let i = 0; i < numOfItems; i++) {
|
||||
data.push(
|
||||
<div key={i} className="test-item">Item #{i}</div>
|
||||
);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
_loadMore() {
|
||||
console.log('loading More');
|
||||
this.setState({ loadingMore: true }, () => {
|
||||
// CB emulates an ajax request
|
||||
this.setState({
|
||||
numOfItems: this.state.numOfItems + 40,
|
||||
loadingMore: false
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<InfiniteScoller className="test"
|
||||
elementIsScrollable={true}
|
||||
loadMore={this._loadMore.bind(this)}
|
||||
hasMore={true}
|
||||
loadingMore={this.state.loadingMore}
|
||||
showLoader={true}
|
||||
threshold={50}
|
||||
containerHeight={400}
|
||||
items={this._createData()}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
ReactDOM.render(<App />, document.getElementById('app'));
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [ "es6", "dom" ],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitReturns": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": true,
|
||||
"baseUrl": "../",
|
||||
"jsx": "react",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"redux-infinite-scroll-tests.tsx"
|
||||
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{ "extends": "dtslint/dt.json" }
|
||||
Reference in New Issue
Block a user