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:
Tony Nikolov
2017-06-02 17:01:51 -07:00
committed by Mohamed Hegazy
parent f391463294
commit e9fb99fe04
4 changed files with 98 additions and 0 deletions
+25
View File
@@ -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'));
+23
View File
@@ -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"
]
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }