import React, { useState } from 'react'; import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons'; import { BaseComponentProps } from '..'; import './AlertBlock.scss'; interface IProps extends BaseComponentProps { title?: string; alertType?: 'info' | 'success' | 'critical' | 'warning' | 'toast'; collapsible?: boolean; autoCollapse?: boolean; indentation?: number; children?: any; className?: string; } export default function AlertBlock(props: IProps) { const isCollapsible = props.collapsible === false ? false : props.collapsible || props.autoCollapse || false; const [isCollapsed, setIsCollapsed] = useState(isCollapsible ? props.autoCollapse || false : false); let title; if (props.title) { title = (
setIsCollapsed(!isCollapsed) : undefined} > {props.title}
); } let icon; switch (props.alertType) { case 'info': { icon = ; break; } case 'success': { icon = ; break; } case 'critical': { icon = ; break; } case 'warning': { icon = ; break; } } if (icon && isCollapsible) { icon = ( setIsCollapsed(!isCollapsed)}> {icon} ); } //TODO: remove the card fence classes and build a proper collapser return (
0 ? ` indent-${props.indentation}` : ''} ${ props.className || '' }`} >
{icon}
{title} {isCollapsed ? undefined :
{props.children}
}
{isCollapsible ? ( setIsCollapsed(!isCollapsed)}> ) : undefined}
); }