UNPKG

2.57 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3import _objectSpread from "@babel/runtime/helpers/esm/objectSpread";
4import React from 'react';
5import PropTypes from 'prop-types';
6import classNames from 'classnames';
7import { mapToCssModules, tagPropType } from './utils';
8import Fade from './Fade';
9var propTypes = {
10 children: PropTypes.node,
11 className: PropTypes.string,
12 closeClassName: PropTypes.string,
13 closeAriaLabel: PropTypes.string,
14 cssModule: PropTypes.object,
15 color: PropTypes.string,
16 fade: PropTypes.bool,
17 isOpen: PropTypes.bool,
18 toggle: PropTypes.func,
19 tag: tagPropType,
20 transition: PropTypes.shape(Fade.propTypes),
21 innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])
22};
23var defaultProps = {
24 color: 'success',
25 isOpen: true,
26 tag: 'div',
27 closeAriaLabel: 'Close',
28 fade: true,
29 transition: _objectSpread({}, Fade.defaultProps, {
30 unmountOnExit: true
31 })
32};
33
34function Alert(props) {
35 var className = props.className,
36 closeClassName = props.closeClassName,
37 closeAriaLabel = props.closeAriaLabel,
38 cssModule = props.cssModule,
39 Tag = props.tag,
40 color = props.color,
41 isOpen = props.isOpen,
42 toggle = props.toggle,
43 children = props.children,
44 transition = props.transition,
45 fade = props.fade,
46 innerRef = props.innerRef,
47 attributes = _objectWithoutPropertiesLoose(props, ["className", "closeClassName", "closeAriaLabel", "cssModule", "tag", "color", "isOpen", "toggle", "children", "transition", "fade", "innerRef"]);
48
49 var classes = mapToCssModules(classNames(className, 'alert', "alert-" + color, {
50 'alert-dismissible': toggle
51 }), cssModule);
52 var closeClasses = mapToCssModules(classNames('close', closeClassName), cssModule);
53
54 var alertTransition = _objectSpread({}, Fade.defaultProps, transition, {
55 baseClass: fade ? transition.baseClass : '',
56 timeout: fade ? transition.timeout : 0
57 });
58
59 return React.createElement(Fade, _extends({}, attributes, alertTransition, {
60 tag: Tag,
61 className: classes,
62 in: isOpen,
63 role: "alert",
64 innerRef: innerRef
65 }), toggle ? React.createElement("button", {
66 type: "button",
67 className: closeClasses,
68 "aria-label": closeAriaLabel,
69 onClick: toggle
70 }, React.createElement("span", {
71 "aria-hidden": "true"
72 }, "\xD7")) : null, children);
73}
74
75Alert.propTypes = propTypes;
76Alert.defaultProps = defaultProps;
77export default Alert;
\No newline at end of file