diff --git a/frontend/components/Layout/Layout.js b/frontend/components/Layout/Layout.js
index 6185aeda..b04a9546 100644
--- a/frontend/components/Layout/Layout.js
+++ b/frontend/components/Layout/Layout.js
@@ -10,7 +10,7 @@ import { Flex } from 'reflexbox';
import { textColor } from 'styles/constants.scss';
import DropdownMenu, { MenuItem } from 'components/DropdownMenu';
-import LoadingIndicator from 'components/LoadingIndicator';
+import { LoadingIndicatorBar } from 'components/LoadingIndicator';
import SidebarCollection from './components/SidebarCollection';
import SidebarCollectionList from './components/SidebarCollectionList';
@@ -72,7 +72,7 @@ type Props = {
]}
/>
- {this.props.ui.progressBarVisible && }
+ {this.props.ui.progressBarVisible && }
{this.props.notifications}
diff --git a/frontend/components/LoadingIndicator/LoadingIndicator.js b/frontend/components/LoadingIndicator/LoadingIndicator.js
index a82a85ab..309e6dfb 100644
--- a/frontend/components/LoadingIndicator/LoadingIndicator.js
+++ b/frontend/components/LoadingIndicator/LoadingIndicator.js
@@ -1,14 +1,15 @@
// @flow
import React from 'react';
+import { inject, observer } from 'mobx-react';
-import styles from './LoadingIndicator.scss';
+@observer class LoadingIndicator extends React.Component {
+ componentDidMount() {
+ this.props.ui.enableProgressBar();
+ }
-const LoadingIndicator = () => {
- return (
-
- );
-};
+ componentWillUnmount() {
+ this.props.ui.disableProgressBar();
+ }
+}
-export default LoadingIndicator;
+export default inject('ui')(LoadingIndicator);
diff --git a/frontend/components/LoadingIndicator/LoadingIndicator.scss b/frontend/components/LoadingIndicator/LoadingIndicator.scss
deleted file mode 100644
index f7af32dc..00000000
--- a/frontend/components/LoadingIndicator/LoadingIndicator.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-.loader {
- width: 100%;
- height: 2px;
- background-color: #03A9F4;
-}
-
-.loading {
- position: fixed;
- top: 0;
- z-index: 9999;
-
- background-color: #03A9F4;
- width: 100%;
- animation: loading 4s ease-in-out infinite;
-}
-
-@keyframes loading {
- from {margin-left: -100%; z-index:100;}
- to {margin-left: 100%; }
-}
diff --git a/frontend/components/LoadingIndicator/LoadingIndicatorBar.js b/frontend/components/LoadingIndicator/LoadingIndicatorBar.js
new file mode 100644
index 00000000..fb8743bf
--- /dev/null
+++ b/frontend/components/LoadingIndicator/LoadingIndicatorBar.js
@@ -0,0 +1,34 @@
+// @flow
+import React from 'react';
+import styled, { keyframes } from 'styled-components';
+
+const LoadingIndicatorBar = () => {
+ return (
+
+
+
+ );
+};
+
+const loadingFrame = keyframes`
+ from {margin-left: -100%; z-index:100;}
+ to {margin-left: 100%; }
+`;
+
+const Container = styled.div`
+ position: fixed;
+ top: 0;
+ z-index: 9999;
+
+ background-color: #03A9F4;
+ width: 100%;
+ animation: ${loadingFrame} 4s ease-in-out infinite;
+`;
+
+const Loader = styled.div`
+ width: 100%;
+ height: 2px;
+ background-color: #03A9F4;
+`;
+
+export default LoadingIndicatorBar;
diff --git a/frontend/components/LoadingIndicator/index.js b/frontend/components/LoadingIndicator/index.js
index df904e0a..fe3e594b 100644
--- a/frontend/components/LoadingIndicator/index.js
+++ b/frontend/components/LoadingIndicator/index.js
@@ -1,3 +1,5 @@
// @flow
import LoadingIndicator from './LoadingIndicator';
+import LoadingIndicatorBar from './LoadingIndicatorBar';
export default LoadingIndicator;
+export { LoadingIndicatorBar };
diff --git a/frontend/scenes/Document/Document.js b/frontend/scenes/Document/Document.js
index 8a700fb4..220e24e7 100644
--- a/frontend/scenes/Document/Document.js
+++ b/frontend/scenes/Document/Document.js
@@ -11,6 +11,7 @@ import DocumentsStore from 'stores/DocumentsStore';
import Menu from './components/Menu';
import Editor from 'components/Editor';
import { HeaderAction, SaveAction } from 'components/Layout';
+import LoadingIndicator from 'components/LoadingIndicator';
import PublishingInfo from 'components/PublishingInfo';
import DocumentViews from 'components/DocumentViews';
import PreviewLoading from 'components/PreviewLoading';
@@ -34,6 +35,10 @@ type Props = {
@observer class Document extends Component {
props: Props;
+ state = {
+ loading: false,
+ };
+
componentDidMount() {
this.loadDocument(this.props);
}
@@ -90,11 +95,11 @@ type Props = {
};
onImageUploadStart() {
- this.props.ui.enableProgressBar();
+ this.setState({ loading: true });
}
onImageUploadStop() {
- this.props.ui.disableProgressBar();
+ this.setState({ loading: false });
}
onChange = text => {
@@ -115,6 +120,7 @@ type Props = {
return (
{titleText && }
+ {this.state.loading && }
{isFetching &&
diff --git a/frontend/stores/UiStore.js b/frontend/stores/UiStore.js
index fed5c13c..6345af8b 100644
--- a/frontend/stores/UiStore.js
+++ b/frontend/stores/UiStore.js
@@ -5,7 +5,7 @@ import Collection from 'models/Collection';
class UiStore {
@observable activeDocument: ?Document;
- @observable progressBarVisible: boolean = true;
+ @observable progressBarVisible: boolean = false;
@observable editMode: boolean = false;
/* Computed */