import { Alert as OldAlert, AlertProps, ConfigProvider } from 'antd'; import React, { useContext, useMemo } from 'react'; import './index.less'; import classNames from 'classnames'; import { Icon } from '../Icon'; interface AlertExtraProps extends AlertProps { titleAction?: React.ReactNode; descriptionAction?: React.ReactNode; } const Alert: React.FC = (props) => { // 为了与 antd 的生态保持兼容性,我们要求必须要使用 `.@{ant-prefix}` 变量来生成类名 const { getPrefixCls } = useContext(ConfigProvider.ConfigContext); const prefixCls = getPrefixCls('btri-alert'); const { type, icon, closeIcon } = props; const newIcon = useMemo(() => { if (icon) { return icon; } const icons = { info: 'AttentionRectangle', success: 'CheckOnSquare', warning: 'Caution', error: 'ErrorDiamond', }; return ; }, [type, icon]); const newCloseIcon = useMemo(() => { if (closeIcon) { return closeIcon; } return ; }, [closeIcon]); const newMsg = useMemo(() => { return ( <> {props.message}
{props.titleAction}
); }, [props.message, props.titleAction]); const newDescription = useMemo(() => { return ( props.description && ( <> {props.description} {props.descriptionAction && (
{props.descriptionAction}
)} ) ); }, [props.description, props.descriptionAction]); return ( ); }; export { Alert };