react-bootstrap
Version:
Bootstrap 3 components build with React
82 lines (62 loc) • 2.15 kB
JavaScript
;
var _extends = require('babel-runtime/helpers/extends')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
exports.__esModule = true;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _BootstrapMixin = require('./BootstrapMixin');
var _BootstrapMixin2 = _interopRequireDefault(_BootstrapMixin);
var Alert = _react2['default'].createClass({
displayName: 'Alert',
mixins: [_BootstrapMixin2['default']],
propTypes: {
onDismiss: _react2['default'].PropTypes.func,
dismissAfter: _react2['default'].PropTypes.number,
closeLabel: _react2['default'].PropTypes.string
},
getDefaultProps: function getDefaultProps() {
return {
bsClass: 'alert',
bsStyle: 'info',
closeLabel: 'Close Alert'
};
},
renderDismissButton: function renderDismissButton() {
return _react2['default'].createElement(
'button',
{
type: "button",
className: "close",
'aria-label': this.props.closeLabel,
onClick: this.props.onDismiss },
_react2['default'].createElement(
'span',
{ 'aria-hidden': "true" },
'×'
)
);
},
render: function render() {
var classes = this.getBsClassSet();
var isDismissable = !!this.props.onDismiss;
classes['alert-dismissable'] = isDismissable;
return _react2['default'].createElement(
'div',
_extends({}, this.props, { role: 'alert', className: _classnames2['default'](this.props.className, classes) }),
isDismissable ? this.renderDismissButton() : null,
this.props.children
);
},
componentDidMount: function componentDidMount() {
if (this.props.dismissAfter && this.props.onDismiss) {
this.dismissTimer = setTimeout(this.props.onDismiss, this.props.dismissAfter);
}
},
componentWillUnmount: function componentWillUnmount() {
clearTimeout(this.dismissTimer);
}
});
exports['default'] = Alert;
module.exports = exports['default'];