All files / src/Modal Modal.js

0% Statements 0/13
0% Branches 0/6
0% Functions 0/3
0% Lines 0/12

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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55                                                                                                             
import React, { Component } from 'preact';
import PropTypes from 'prop-types';
import { StyledModal } from './styles';
import ModalPortal from './ModalPortal';
 
/**
 * Description
 *
 * @example ./../../docs/components/Modal.md
 */
class Modal extends Component {
    constructor(props) {
        super(props);
        this.state = {
            content: false,
        };
    }
 
    static propTypes = {
        /**
         * Custom styles
         */
        style: PropTypes.object,
    };
 
    static defaultProps = {};
 
    static contextTypes = {
        theme: PropTypes.object,
    };
 
    show = content => {
        this.setState({ content });
    };
 
    hide = () => {
        this.setState({ content: false });
    };
 
    render() {
        const { style = {}, className } = this.props;
        const { theme } = this.context;
 
        return this.state.content ? (
            <ModalPortal>
                <StyledModal style={style} className={className} theme={theme}>
                    {this.state.content}
                </StyledModal>
            </ModalPortal>
        ) : null;
    }
}
 
export default Modal;