@cbinsights/fds
Version:
Form: A design system by CB Insights
82 lines (67 loc) • 4 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.Toaster = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reactDom = _interopRequireDefault(require("react-dom"));
var _reactTransitionGroup = require("react-transition-group");
var _Toast = _interopRequireDefault(require("./Toast"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
var dismissDelay = 4000;
var Toaster = function Toaster(_ref) {
var _ref$isAutoDismiss = _ref.isAutoDismiss,
isAutoDismiss = _ref$isAutoDismiss === void 0 ? true : _ref$isAutoDismiss,
_ref$isOpen = _ref.isOpen,
isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
_ref$toastInstance = _ref.toastInstance,
toastInstance = _ref$toastInstance === void 0 ? {
content: null
} : _ref$toastInstance,
id = _ref.id;
(0, _react.useEffect)(function () {
// We need to explicitly check of canDismiss is NOT true, as it has a default
// parameter of true that this component does not know about
if (isAutoDismiss && toastInstance.type !== 'progress' && toastInstance.canDismiss !== false && toastInstance.onDismiss) {
var timer = setTimeout(function () {
return toastInstance.onDismiss && toastInstance.onDismiss();
}, dismissDelay);
return function cleanup() {
clearTimeout(timer);
};
}
return undefined;
}, [id, isOpen, isAutoDismiss, toastInstance.type, toastInstance.canDismiss, toastInstance.onDismiss]);
return /*#__PURE__*/_react.default.createElement("div", {
"aria-live": "assertive"
}, /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.TransitionGroup, null, isOpen && /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.CSSTransition, {
key: id,
appear: true,
unmountOnExit: true,
timeout: 380,
classNames: "rtgSlideIn"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "toaster"
}, /*#__PURE__*/_react.default.createElement(_Toast.default, {
dismissDelay: dismissDelay,
isAutoDismiss: isAutoDismiss,
onDismiss: toastInstance.onDismiss,
content: toastInstance.content,
type: toastInstance.type,
progress: toastInstance.progress,
canDismiss: toastInstance.canDismiss,
actionLabel: toastInstance.actionLabel,
onAction: toastInstance.onAction,
dismissOnAction: toastInstance.dismissOnAction
})))));
};
exports.Toaster = Toaster;
var ToasterWrapper = function ToasterWrapper(props) {
return /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement(Toaster, props), // eslint-disable-next-line no-undef
document.body);
};
var _default = ToasterWrapper;
exports.default = _default;