Skip to content

Commit a3b85f5

Browse files
author
Jovert Lota Palonpon
committed
Added determinent loading animation when navigating
1 parent c95bd96 commit a3b85f5

File tree

3 files changed

+68
-0
lines changed

3 files changed

+68
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import React, { Component } from 'react';
2+
import PropTypes from 'prop-types';
3+
4+
import { LinearProgress, withStyles } from '@material-ui/core';
5+
6+
class LinearDeterminate extends Component {
7+
state = {
8+
completed: 0,
9+
};
10+
11+
componentDidMount() {
12+
this.timer = setInterval(this.progress, 500);
13+
}
14+
15+
componentWillUnmount() {
16+
clearInterval(this.timer);
17+
}
18+
19+
progress = () => {
20+
const { completed } = this.state;
21+
22+
if (completed === 100) {
23+
this.setState({ completed: 0 });
24+
25+
return;
26+
}
27+
28+
const diff = Math.random() * 10;
29+
30+
this.setState({ completed: Math.min(completed + diff, 100) });
31+
};
32+
33+
render() {
34+
const { classes } = this.props;
35+
const { completed } = this.state;
36+
37+
return (
38+
<div className={classes.root}>
39+
<LinearProgress
40+
variant="determinate"
41+
value={completed}
42+
{...this.props}
43+
/>
44+
</div>
45+
);
46+
}
47+
}
48+
49+
LinearDeterminate.propTypes = {
50+
classes: PropTypes.object.isRequired,
51+
};
52+
53+
const styles = {
54+
root: {
55+
flexGrow: 1,
56+
},
57+
};
58+
59+
export default withStyles(styles)(LinearDeterminate);

resources/js/ui/Loaders/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default as LinearDeterminate } from './LinearDeterminate';

resources/js/views/__backoffice/layouts/Master.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
} from '@material-ui/core';
1212

1313
import { Snackbar, Modal } from '../../../ui';
14+
import { LinearDeterminate } from '../../../ui/Loaders';
1415
import { Header, Sidebar } from '../partials';
1516

1617
class Master extends Component {
@@ -60,6 +61,7 @@ class Master extends Component {
6061
message,
6162
alert,
6263
} = this.props;
64+
const { navigating } = pageProps;
6365

6466
const { mobileOpen } = this.state;
6567

@@ -78,6 +80,8 @@ class Master extends Component {
7880

7981
return (
8082
<>
83+
{navigating && <LinearDeterminate className={classes.loader} />}
84+
8185
<div className={classes.root}>
8286
<CssBaseline />
8387

@@ -163,6 +167,10 @@ Master.propTypes = {
163167
const drawerWidth = 256;
164168

165169
const styles = theme => ({
170+
loader: {
171+
zIndex: 9999,
172+
},
173+
166174
root: {
167175
display: 'flex',
168176
position: 'relative',

0 commit comments

Comments
 (0)