UNPKG

3.44 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.default = void 0;
7
8var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
12var _react = _interopRequireDefault(require("react"));
13
14var _propTypes = _interopRequireDefault(require("prop-types"));
15
16var _classnames = _interopRequireDefault(require("classnames"));
17
18var _utils = require("./utils");
19
20var propTypes = {
21 tag: _utils.tagPropType,
22 icon: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node]),
23 wrapTag: _utils.tagPropType,
24 toggle: _propTypes.default.func,
25 className: _propTypes.default.string,
26 cssModule: _propTypes.default.object,
27 children: _propTypes.default.node,
28 closeAriaLabel: _propTypes.default.string,
29 charCode: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
30 close: _propTypes.default.object
31};
32var defaultProps = {
33 tag: 'strong',
34 wrapTag: 'div',
35 tagClassName: 'mr-auto',
36 closeAriaLabel: 'Close',
37 charCode: 215
38};
39
40var ToastHeader = function ToastHeader(props) {
41 var closeButton;
42 var icon;
43 var className = props.className,
44 cssModule = props.cssModule,
45 children = props.children,
46 toggle = props.toggle,
47 Tag = props.tag,
48 WrapTag = props.wrapTag,
49 closeAriaLabel = props.closeAriaLabel,
50 charCode = props.charCode,
51 close = props.close,
52 tagClassName = props.tagClassName,
53 iconProp = props.icon,
54 attributes = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "cssModule", "children", "toggle", "tag", "wrapTag", "closeAriaLabel", "charCode", "close", "tagClassName", "icon"]);
55 var classes = (0, _utils.mapToCssModules)((0, _classnames.default)(className, 'toast-header'), cssModule);
56
57 if (!close && toggle) {
58 var closeIcon = typeof charCode === 'number' ? String.fromCharCode(charCode) : charCode;
59 closeButton = /*#__PURE__*/_react.default.createElement("button", {
60 type: "button",
61 onClick: toggle,
62 className: (0, _utils.mapToCssModules)('close', cssModule),
63 "aria-label": closeAriaLabel
64 }, /*#__PURE__*/_react.default.createElement("span", {
65 "aria-hidden": "true"
66 }, closeIcon));
67 }
68
69 if (typeof iconProp === "string") {
70 icon = /*#__PURE__*/_react.default.createElement("svg", {
71 className: (0, _utils.mapToCssModules)("rounded text-" + iconProp),
72 width: "20",
73 height: "20",
74 xmlns: "http://www.w3.org/2000/svg",
75 preserveAspectRatio: "xMidYMid slice",
76 focusable: "false",
77 role: "img"
78 }, /*#__PURE__*/_react.default.createElement("rect", {
79 fill: "currentColor",
80 width: "100%",
81 height: "100%"
82 }));
83 } else if (iconProp) {
84 icon = iconProp;
85 }
86
87 return /*#__PURE__*/_react.default.createElement(WrapTag, (0, _extends2.default)({}, attributes, {
88 className: classes
89 }), icon, /*#__PURE__*/_react.default.createElement(Tag, {
90 className: (0, _utils.mapToCssModules)((0, _classnames.default)(tagClassName, {
91 "ml-2": icon != null
92 }), cssModule)
93 }, children), close || closeButton);
94};
95
96ToastHeader.propTypes = propTypes;
97ToastHeader.defaultProps = defaultProps;
98var _default = ToastHeader;
99exports.default = _default;
\No newline at end of file