diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/index.tsx (renamed from src/index.js) | 20 | ||||
| -rw-r--r-- | src/lib/SmartList/SmartList.js | 28 | ||||
| -rw-r--r-- | src/lib/SmartList/SmartList.tsx | 44 | ||||
| -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  |