aboutsummaryrefslogtreecommitdiff
path: root/src/demo/SmartList
diff options
context:
space:
mode:
Diffstat (limited to 'src/demo/SmartList')
-rw-r--r--src/demo/SmartList/SmartList.tsx43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/demo/SmartList/SmartList.tsx b/src/demo/SmartList/SmartList.tsx
new file mode 100644
index 0000000..c86c127
--- /dev/null
+++ b/src/demo/SmartList/SmartList.tsx
@@ -0,0 +1,43 @@
+import React from 'react';
+import { FixedSizeList } from 'react-window';
+import AutoSizer from 'react-virtualized-auto-sizer';
+
+
+interface RenderPropTypes {
+ index: number;
+ style: React.CSSProperties;
+}
+
+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;