aboutsummaryrefslogtreecommitdiff
path: root/src
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
parentcc6c8e9109f1807ce48b061fa497535ab9f674e8 (diff)
downloadreact-benzin-9ff003bec107a4934daf2a3cee73c40ec72e6999.tar.gz
feat: migrate SmartList to Typescript
Diffstat (limited to 'src')
-rw-r--r--src/index.tsx (renamed from src/index.js)20
-rw-r--r--src/lib/SmartList/SmartList.js28
-rw-r--r--src/lib/SmartList/SmartList.tsx44
-rw-r--r--src/lib/index.ts (renamed from src/lib/index.js)0
4 files changed, 61 insertions, 31 deletions
diff --git a/src/index.js b/src/index.tsx
index d0a96a1..19c118e 100644
--- a/src/index.js
+++ b/src/index.tsx
@@ -1,13 +1,14 @@
import React, { useState } from 'react';
import ReactDOM from 'react-dom';
-import { makeStyles, Button } from '@material-ui/core';
+import { makeStyles, Button, Typography } from '@material-ui/core';
import {
BenzinThemeProvider,
Header,
Window,
ContentSection,
+ SmartList,
} from './lib';
import icon from './assets/icon.png';
@@ -29,7 +30,13 @@ const headerContents = {
'getting started': <PlayCircleFilledWhiteIcon />,
explore: <ExploreIcon />,
contribute: <GitHubIcon />,
-}
+};
+
+const renderItem = ({ index, style }: any) => {
+ return (
+ <Typography variant="h3" style={style} component="div"> {index} </Typography>
+ );
+};
const Icon1 = <img src={icon} width="32px" height="37px" alt="logo"/>
const Icon2 = <img src={icon2} height="32px" alt="logo"/>
@@ -49,7 +56,7 @@ const App = () => {
page={page}
setPage={setPage}
/>
- <Window type="mono">
+ <Window type="primary">
<div className={classes.window}>
<ContentSection sectionName="Out of fuel? You've came to the right place!">
<p> Here is some text about BENZIN library. </p>
@@ -62,6 +69,13 @@ const App = () => {
</ContentSection>
</div>
</Window>
+ <Window type="secondary" name="SmartList test window">
+ <SmartList
+ itemSize={270}
+ itemCount={100}
+ renderItem={renderItem}
+ />
+ </Window>
</BenzinThemeProvider>
);
};
diff --git a/src/lib/SmartList/SmartList.js b/src/lib/SmartList/SmartList.js
deleted file mode 100644
index b462c47..0000000
--- a/src/lib/SmartList/SmartList.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import React from 'react';
-
-import { FixedSizeList } from 'react-window';
-import AutoSizer from 'react-virtualized-auto-sizer';
-
-
-const SmartList = ({ itemSize, itemCount, renderItem }) => {
-
- return (
- <div style={{ flex: '1 1 auto', overflow: 'hidden' }}>
- <AutoSizer>
- {({ width, height }) => (
- <FixedSizeList
- height={height}
- width={width}
- itemSize={itemSize}
- itemCount={itemCount}
- >
- {renderItem}
- </FixedSizeList>
- )}
- </AutoSizer>
- </div>
- );
-};
-
-
-export default SmartList;
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;
diff --git a/src/lib/index.js b/src/lib/index.ts
index 67f9bb4..67f9bb4 100644
--- a/src/lib/index.js
+++ b/src/lib/index.ts