From d7f4d59116a898010912545b31f29619c56384f3 Mon Sep 17 00:00:00 2001 From: ilyayudovin Date: Sat, 4 Jul 2020 22:38:51 +0300 Subject: feat: add loader --- src/components/Feed/Feed.tsx | 68 +++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 26 deletions(-) (limited to 'src/components/Feed/Feed.tsx') diff --git a/src/components/Feed/Feed.tsx b/src/components/Feed/Feed.tsx index afa914d..a56d57e 100644 --- a/src/components/Feed/Feed.tsx +++ b/src/components/Feed/Feed.tsx @@ -1,8 +1,9 @@ import React from 'react'; import { Poll } from 'which-types'; import { WindowScroller, AutoSizer, List } from 'react-virtualized'; - +import CircularProgress from '@material-ui/core/CircularProgress'; import PollCard from '../PollCard/PollCard'; +import {makeStyles} from "@material-ui/core"; interface PropTypes { polls: Poll[]; @@ -14,7 +15,18 @@ interface RenderPropTypes { style: React.CSSProperties; } +const useStyles = makeStyles(theme => ({ + loader: { + width:'100%', + textAlign:'center', + marginTop:theme.spacing(10) + } +})); + const Feed: React.FC = ({ polls }) => { + const classes = useStyles(); + + const RenderItem: React.FC = ({ index, style, key }) => { const poll = polls[index]; return ( @@ -24,37 +36,41 @@ const Feed: React.FC = ({ polls }) => { ); }; - return ( - - {({ + const loader =
+ +
+ + const list = + {({ height, isScrolling, registerChild, onChildScroll, scrollTop }) => ( - - {({ width }) => ( -
- -
- )} -
- )} -
- ); + + {({ width }) => ( +
+ +
+ )} +
+ )} +
+ + return polls.length ? list : loader; }; export default Feed; -- cgit v1.2.3