aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/components/loading.js
blob: 88dc535df3df2e7f0e397020aadd9458caa18b5d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
const inherits = require('util').inherits
const Component = require('react').Component
const h = require('react-hyperscript')
const ReactCSSTransitionGroup = require('react-addons-css-transition-group')


inherits(LoadingIndicator, Component)
module.exports = LoadingIndicator

function LoadingIndicator () {
  Component.call(this)
}

LoadingIndicator.prototype.render = function () {
  const { isLoading, loadingMessage } = this.props

  return (
    h(ReactCSSTransitionGroup, {
      className: 'css-transition-group',
      transitionName: 'loader',
      transitionEnterTimeout: 150,
      transitionLeaveTimeout: 150,
    }, [

      isLoading ? h('div', {
        style: {
          zIndex: 10,
          position: 'absolute',
          display: 'flex',
          justifyContent: 'center',
          alignItems: 'center',
          height: '100%',
          width: '100%',
          background: 'rgba(255, 255, 255, 0.5)',
        },
      }, [
        h('img', {
          src: 'images/loading.svg',
        }),

        showMessageIfAny(loadingMessage),
      ]) : null,
    ])
  )
}

function showMessageIfAny (loadingMessage) {
  if (!loadingMessage) return null
  return h('span', loadingMessage)
}