aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/components/app/modal/modal.component.js
blob: 49e131b3cbea88097af15abaeec6d5c625c525b0 (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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import React, { PureComponent } from 'react'
import PropTypes from 'prop-types'
import Button from '../../ui/button'

export default class Modal extends PureComponent {
  static propTypes = {
    children: PropTypes.node,
    // Header text
    headerText: PropTypes.string,
    onClose: PropTypes.func,
    // Submit button (right button)
    onSubmit: PropTypes.func,
    submitType: PropTypes.string,
    submitText: PropTypes.string,
    submitDisabled: PropTypes.bool,
    // Cancel button (left button)
    onCancel: PropTypes.func,
    cancelType: PropTypes.string,
    cancelText: PropTypes.string,
  }

  static defaultProps = {
    submitType: 'primary',
    cancelType: 'default',
  }

  render () {
    const {
      children,
      headerText,
      onClose,
      onSubmit,
      submitType,
      submitText,
      submitDisabled,
      onCancel,
      cancelType,
      cancelText,
    } = this.props

    return (
      <div className="modal-container">
        {
          headerText && (
            <div className="modal-container__header">
              <div className="modal-container__header-text">
                { headerText }
              </div>
              <div
                className="modal-container__header-close"
                onClick={onClose}
              />
            </div>
          )
        }
        <div className="modal-container__content">
          { children }
        </div>
        <div className="modal-container__footer">
          {
            onCancel && (
              <Button
                type={cancelType}
                onClick={onCancel}
                className="modal-container__footer-button"
              >
                { cancelText }
              </Button>
            )
          }
          <Button
            type={submitType}
            onClick={onSubmit}
            disabled={submitDisabled}
            className="modal-container__footer-button"
          >
            { submitText }
          </Button>
        </div>
      </div>
    )
  }
}