# All files / composer/components Modals.jsx

70% Statements 7/10
100% Branches 4/4
50% Functions 3/6
77.78% Lines 7/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    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

    1x

    1x

    1x
    1x

    1x

    2x

    2x

     import React from 'react';
    import EmptyTextAlert from '../components/EmptyTextAlert';
    import MediaZoomBox from '../components/MediaZoomBox';
    import Store from '../__legacy-buffer-web-shared-components__/modal/store.js';

    const getState = () => Store.getCurrentState();

    const ModalComponents = {
      EmptyTextAlert,
      MediaZoomBox,
    };

    class Modals extends React.Component {
      constructor(props) {
        super(props);
        this.state = Store.getInitialState();
      }

      componentDidMount = () => Store.addChangeListener(this.onChange);

      componentWillUnmount = () => Store.removeChangeListener(this.onChange);

      onChange = () => this.setState(getState());

      render() {
        const ModalToShow = ModalComponents[this.state.modalName] || 'span';

        return (
          <div>
            {this.state.open && <ModalToShow {...this.state.modalProps} />}
          </div>
        );
      }
    }

    export default Modals;