UNPKG

3.56 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.default = void 0;
9
10var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends"));
11
12var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutProperties"));
13
14var _react = _interopRequireDefault(require("react"));
15
16var _withState = _interopRequireDefault(require("recompose/withState"));
17
18var _Snackbar = _interopRequireDefault(require("@material-ui/core/Snackbar"));
19
20var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
21
22var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
23
24var _propTypes = _interopRequireDefault(require("prop-types"));
25
26/* eslint-disable import/no-extraneous-dependencies */
27var handleClose = function handleClose(updateIsOpen, keepClickAway, reason) {
28 if (keepClickAway || reason !== 'clickaway') {
29 updateIsOpen(false);
30 }
31};
32
33var handleExited = function handleExited(updateIsOpen, handleDismissNotification) {
34 handleDismissNotification();
35 updateIsOpen(true);
36};
37
38var NotificationsJSX = function NotificationsJSX(_ref) {
39 var _ref$notifications = _ref.notifications,
40 notifications = _ref$notifications === void 0 ? [] : _ref$notifications,
41 handleDismissNotification = _ref.handleDismissNotification,
42 isOpen = _ref.isOpen,
43 updateIsOpen = _ref.updateIsOpen;
44 var currentSnackbar = notifications[0];
45
46 if (currentSnackbar) {
47 var mainAction = currentSnackbar.mainAction,
48 _currentSnackbar$dism = currentSnackbar.dismissable,
49 dismissable = _currentSnackbar$dism === void 0 ? true : _currentSnackbar$dism,
50 keepClickAway = currentSnackbar.keepClickAway,
51 muiProps = (0, _objectWithoutProperties2.default)(currentSnackbar, ["mainAction", "dismissable", "keepClickAway"]);
52 var actions = mainAction ? [// eslint-disable-next-line
53 _react.default.createElement("div", {
54 key: "main",
55 role: "button",
56 onClick: function onClick() {
57 return handleClose(updateIsOpen, keepClickAway);
58 }
59 }, mainAction)] : [];
60
61 if (dismissable) {
62 actions.push(_react.default.createElement(_IconButton.default, {
63 key: "dismiss",
64 color: "inherit",
65 onClick: function onClick() {
66 return handleClose(updateIsOpen, keepClickAway);
67 }
68 }, _react.default.createElement(_Close.default, null)));
69 }
70
71 return _react.default.createElement(_Snackbar.default, (0, _extends2.default)({
72 anchorOrigin: {
73 vertical: 'bottom',
74 horizontal: 'left'
75 },
76 open: isOpen,
77 onClose: function onClose(e, reason) {
78 return handleClose(updateIsOpen, keepClickAway, reason);
79 },
80 onExited: function onExited() {
81 return handleExited(updateIsOpen, handleDismissNotification);
82 },
83 autoHideDuration: 6000,
84 action: actions
85 }, muiProps));
86 }
87
88 return null;
89};
90
91NotificationsJSX.propTypes = {
92 notifications: _propTypes.default.arrayOf(_propTypes.default.object.isRequired),
93 handleDismissNotification: _propTypes.default.func.isRequired,
94 currentSnackbar: _propTypes.default.object,
95 isOpen: _propTypes.default.bool.isRequired,
96 updateIsOpen: _propTypes.default.func.isRequired
97};
98var Notifications = (0, _withState.default)('isOpen', 'updateIsOpen', true)(NotificationsJSX);
99var _default = Notifications;
100exports.default = _default;
\No newline at end of file