All files / app/ui/alert Alert.tsx

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 6465x 65x   65x                 65x 65x 65x 65x 65x       48x     36x     2x       10x       65x 51x 51x 51x 51x 51x 51x                                           65x  
import classNames from 'classnames';
import React, { FunctionComponent, ReactNode } from 'react';
 
import { IconError, IconInfo, IconSuccess } from '../icon';
 
export interface AlertProps {
    additionalClassName?: string;
    icon?: ReactNode;
    testId?: string;
    type?: AlertType;
}
 
export enum AlertType {
    Error = 'error',
    Info = 'info',
    Success = 'success',
    Warning = 'warning',
}
 
function renderDefaultIcon(type?: AlertType): ReactNode {
    switch (type) {
    case AlertType.Error:
    case AlertType.Warning:
        return <IconError />;
 
    case AlertType.Success:
        return <IconSuccess />;
 
    case AlertType.Info:
    default:
        return <IconInfo />;
    }
}
 
const Alert: FunctionComponent<AlertProps> = ({
    additionalClassName,
    children,
    icon,
    testId,
    type,
}) => (
    <div
        className={ classNames(
            'alertBox',
            additionalClassName,
            { 'alertBox--info': type === AlertType.Info || !type },
            { 'alertBox--error': type === AlertType.Error },
            { 'alertBox--success': type === AlertType.Success },
            { 'alertBox--warning': type === AlertType.Warning }
        ) }
        data-test={ testId }
    >
        <div className="alertBox-column alertBox-icon">
            { icon ? icon : renderDefaultIcon(type) }
        </div>
 
        <div className="alertBox-column alertBox-message">
            { children }
        </div>
    </div>
);
 
export default Alert;