sharyn
Version:
Combines all the other packages under one.
100 lines (82 loc) • 3.56 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _withState = _interopRequireDefault(require("recompose/withState"));
var _Snackbar = _interopRequireDefault(require("@material-ui/core/Snackbar"));
var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
var _propTypes = _interopRequireDefault(require("prop-types"));
/* eslint-disable import/no-extraneous-dependencies */
var handleClose = function handleClose(updateIsOpen, keepClickAway, reason) {
if (keepClickAway || reason !== 'clickaway') {
updateIsOpen(false);
}
};
var handleExited = function handleExited(updateIsOpen, handleDismissNotification) {
handleDismissNotification();
updateIsOpen(true);
};
var NotificationsJSX = function NotificationsJSX(_ref) {
var _ref$notifications = _ref.notifications,
notifications = _ref$notifications === void 0 ? [] : _ref$notifications,
handleDismissNotification = _ref.handleDismissNotification,
isOpen = _ref.isOpen,
updateIsOpen = _ref.updateIsOpen;
var currentSnackbar = notifications[0];
if (currentSnackbar) {
var mainAction = currentSnackbar.mainAction,
_currentSnackbar$dism = currentSnackbar.dismissable,
dismissable = _currentSnackbar$dism === void 0 ? true : _currentSnackbar$dism,
keepClickAway = currentSnackbar.keepClickAway,
muiProps = (0, _objectWithoutProperties2.default)(currentSnackbar, ["mainAction", "dismissable", "keepClickAway"]);
var actions = mainAction ? [// eslint-disable-next-line
_react.default.createElement("div", {
key: "main",
role: "button",
onClick: function onClick() {
return handleClose(updateIsOpen, keepClickAway);
}
}, mainAction)] : [];
if (dismissable) {
actions.push(_react.default.createElement(_IconButton.default, {
key: "dismiss",
color: "inherit",
onClick: function onClick() {
return handleClose(updateIsOpen, keepClickAway);
}
}, _react.default.createElement(_Close.default, null)));
}
return _react.default.createElement(_Snackbar.default, (0, _extends2.default)({
anchorOrigin: {
vertical: 'bottom',
horizontal: 'left'
},
open: isOpen,
onClose: function onClose(e, reason) {
return handleClose(updateIsOpen, keepClickAway, reason);
},
onExited: function onExited() {
return handleExited(updateIsOpen, handleDismissNotification);
},
autoHideDuration: 6000,
action: actions
}, muiProps));
}
return null;
};
NotificationsJSX.propTypes = {
notifications: _propTypes.default.arrayOf(_propTypes.default.object.isRequired),
handleDismissNotification: _propTypes.default.func.isRequired,
currentSnackbar: _propTypes.default.object,
isOpen: _propTypes.default.bool.isRequired,
updateIsOpen: _propTypes.default.func.isRequired
};
var Notifications = (0, _withState.default)('isOpen', 'updateIsOpen', true)(NotificationsJSX);
var _default = Notifications;
exports.default = _default;