All files / src/Card CardImage.js

0% Statements 0/12
0% Branches 0/8
100% Functions 0/0
0% Lines 0/11

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 56                                                                                                               
import React, { Component } from 'preact';
import PropTypes from 'prop-types';
import Image from './../Image';
import { StyledImageWrapper, StyledTitle, StyledSubTitle } from './styles';
 
/**
 * Cards header displays title information
 */
class CardImage extends Component {
    static propTypes = {
        /**
         * Custom styles
         */
        style: PropTypes.object,
    };
 
    static contextTypes = {
        theme: PropTypes.object,
    };
 
    renderOverlay = overlay => {
        if (Object.keys(overlay).length === 0) {
            return '';
        }
        return (
            <div className="image-overlay">
                <StyledTitle light>{overlay.title || ''}</StyledTitle>
                <StyledSubTitle light>{overlay.subtitle || ''}</StyledSubTitle>
            </div>
        );
    };
 
    render() {
        const {
            style,
            src,
            responsive,
            placeholder,
            overlay = {},
        } = this.props;
        const { theme } = this.context;
        return (
            <StyledImageWrapper style={style} theme={theme}>
                <Image
                    responsive={responsive}
                    placeholder={placeholder}
                    src={src}
                />
                {this.renderOverlay(overlay)}
            </StyledImageWrapper>
        );
    }
}
 
export default CardImage;