aboutsummaryrefslogtreecommitdiff
path: root/src/lib/SmartList/SmartList.tsx
diff options
context:
space:
mode:
authorEug-VS <eug-vs@keemail.me>2020-02-03 16:31:48 +0300
committerEug-VS <eug-vs@keemail.me>2020-02-03 17:20:17 +0300
commit9ff003bec107a4934daf2a3cee73c40ec72e6999 (patch)
treedd5fbe9f80f6ffeca4650b72d8b2f50142d1188b /src/lib/SmartList/SmartList.tsx
parentcc6c8e9109f1807ce48b061fa497535ab9f674e8 (diff)
downloadreact-benzin-9ff003bec107a4934daf2a3cee73c40ec72e6999.tar.gz
feat: migrate SmartList to Typescript
Diffstat (limited to 'src/lib/SmartList/SmartList.tsx')
-rw-r--r--src/lib/SmartList/SmartList.tsx44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/lib/SmartList/SmartList.tsx b/src/lib/SmartList/SmartList.tsx
new file mode 100644
index 0000000..c889719
--- /dev/null
+++ b/src/lib/SmartList/SmartList.tsx
@@ -0,0 +1,44 @@
+import React from 'react';
+import { FixedSizeList } from 'react-window';
+import AutoSizer from 'react-virtualized-auto-sizer';
+
+
+interface RenderPropTypes {
+ index: number;
+ style: any;
+}
+
+interface PropTypes {
+ itemSize: number;
+ itemCount: number;
+ renderItem: React.FC<RenderPropTypes>;
+}
+
+interface Size {
+ height: number;
+ width: number;
+}
+
+
+const SmartList: React.FC<PropTypes> = ({ itemSize, itemCount, renderItem }) => {
+
+ const ResizedList: React.FC<Size> = ({ width, height}) => (
+ <FixedSizeList
+ height={height}
+ width={width}
+ itemSize={itemSize}
+ itemCount={itemCount}
+ >
+ {renderItem}
+ </FixedSizeList>
+ );
+
+ return (
+ <div style={{ flex: '1 1 auto', overflow: 'hidden' }}>
+ <AutoSizer children={ResizedList} />
+ </div>
+ );
+};
+
+
+export default SmartList;