UNPKG

@eccenca/gui-elements

Version:

Collection of low-level GUI elements like Buttons, Icons or Alerts. Also includes core styles for those elements.

72 lines (65 loc) 2.12 kB
import React from 'react'; import classNames from 'classnames'; import Button from '../../elements/Button/Button'; const Alert = React.createClass({ displayName: 'Alert', // define property types propTypes: { children: React.PropTypes.node.isRequired, className: React.PropTypes.string, handlerDismiss: React.PropTypes.func, labelDismiss: React.PropTypes.string, iconDismiss: React.PropTypes.string, type: React.PropTypes.string, border: React.PropTypes.bool, vertSpacing: React.PropTypes.bool, }, // template rendering render() { const { className, border, handlerDismiss, labelDismiss, iconDismiss, type, vertSpacing, children, ...otherProps } = this.props; const classes = classNames( 'mdl-alert', { 'mdl-alert--info': type === 'info', 'mdl-alert--success': type === 'success', 'mdl-alert--warning': type === 'warning', 'mdl-alert--danger': type === 'error', 'mdl-alert--border': border, 'mdl-alert--spacing': vertSpacing, 'mdl-alert--dismissable': typeof handlerDismiss !== 'undefined', }, className ); // TODO: add onclick event to remove alert let dismiss = false; if (handlerDismiss) { dismiss = ( <div className="mdl-alert__dismiss"> <Button type="button" iconName={iconDismiss || 'hide'} tooltip={labelDismiss || 'Hide'} onClick={handlerDismiss} /> </div> ); } return ( <div className={classes} {...otherProps}> <div className="mdl-alert__content">{children}</div> {dismiss} </div> ); }, }); export default Alert;