All files / src/Tooltip Tooltip.js

0% Statements 0/8
0% Branches 0/2
100% Functions 0/0
0% Lines 0/7

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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77                                                                                                                                                         
import React, { Component } from 'preact';
import PropTypes from 'prop-types';
import { StyledTooltip } from './styles';
 
/**
 * Description
 *
 * @example ./../../docs/components/Tooltip.md
 */
class Tooltip extends Component {
    static propTypes = {
        /**
         * Title
         */
        title: PropTypes.object.isRequired,
 
        /**
         * Position - default is `bottom`
         */
        position: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),
 
        /**
         * Animation effect - default is `fade`
         */
        effect: PropTypes.oneOf(['fade', 'expand']),
 
        /**
         * Specify fixed width
         */
        width: PropTypes.string,
 
        /**
         * Custom styles
         */
        style: PropTypes.object,
    };
 
    static defaultProps = {
        title: '',
        effect: 'fade',
        position: 'bottom',
        width: null,
    };
 
    static contextTypes = {
        theme: PropTypes.object,
    };
 
    render() {
        const {
            style = {},
            className,
            children,
            title,
            effect,
            position,
            width,
        } = this.props;
        const { theme } = this.context;
 
        return (
            <StyledTooltip
                style={style}
                className={`${effect} ${className}`}
                theme={theme}
                width={width}
                position={position}
                data-title={title}
            >
                {children}
            </StyledTooltip>
        );
    }
}
 
export default Tooltip;