mirror of
https://github.com/explosion/spaCy.git
synced 2025-02-13 10:00:34 +03:00
36 lines
1.0 KiB
JavaScript
36 lines
1.0 KiB
JavaScript
|
import React, { useState } from 'react'
|
||
|
import PropTypes from 'prop-types'
|
||
|
import classNames from 'classnames'
|
||
|
|
||
|
import Icon from './icon'
|
||
|
import classes from '../styles/alert.module.sass'
|
||
|
|
||
|
const Alert = ({ title, icon, variant, closeOnClick, children }) => {
|
||
|
const [visible, setVisible] = useState(true)
|
||
|
const alertClassNames = classNames(classes.root, {
|
||
|
[classes.warning]: variant === 'warning',
|
||
|
[classes.clickable]: !!closeOnClick,
|
||
|
})
|
||
|
const handleClick = () => !!closeOnClick && setVisible(false)
|
||
|
return !visible ? null : (
|
||
|
<aside className={alertClassNames} role="alert" onClick={handleClick}>
|
||
|
{icon && <Icon name={icon} width={18} inline />}
|
||
|
{title && <strong>{title}</strong>} {children}
|
||
|
</aside>
|
||
|
)
|
||
|
}
|
||
|
|
||
|
Alert.defaultProps = {
|
||
|
closeOnClick: true,
|
||
|
}
|
||
|
|
||
|
Alert.propTypes = {
|
||
|
title: PropTypes.string,
|
||
|
icon: PropTypes.string,
|
||
|
variant: PropTypes.oneOf(['warning']),
|
||
|
closeOnClick: PropTypes.bool,
|
||
|
children: PropTypes.node,
|
||
|
}
|
||
|
|
||
|
export default Alert
|