UNPKG

3.49 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 notifications = _ref.notifications,
40 handleDismissNotification = _ref.handleDismissNotification,
41 isOpen = _ref.isOpen,
42 updateIsOpen = _ref.updateIsOpen;
43 var currentSnackbar = notifications[0];
44
45 if (currentSnackbar) {
46 var mainAction = currentSnackbar.mainAction,
47 _currentSnackbar$dism = currentSnackbar.dismissable,
48 dismissable = _currentSnackbar$dism === void 0 ? true : _currentSnackbar$dism,
49 keepClickAway = currentSnackbar.keepClickAway,
50 muiProps = (0, _objectWithoutProperties2.default)(currentSnackbar, ["mainAction", "dismissable", "keepClickAway"]);
51 var actions = mainAction ? [// eslint-disable-next-line
52 _react.default.createElement("div", {
53 key: "main",
54 role: "button",
55 onClick: function onClick() {
56 return handleClose(updateIsOpen, keepClickAway);
57 }
58 }, mainAction)] : [];
59
60 if (dismissable) {
61 actions.push(_react.default.createElement(_IconButton.default, {
62 key: "dismiss",
63 color: "inherit",
64 onClick: function onClick() {
65 return handleClose(updateIsOpen, keepClickAway);
66 }
67 }, _react.default.createElement(_Close.default, null)));
68 }
69
70 return _react.default.createElement(_Snackbar.default, (0, _extends2.default)({
71 anchorOrigin: {
72 vertical: 'bottom',
73 horizontal: 'left'
74 },
75 open: isOpen,
76 onClose: function onClose(e, reason) {
77 return handleClose(updateIsOpen, keepClickAway, reason);
78 },
79 onExited: function onExited() {
80 return handleExited(updateIsOpen, handleDismissNotification);
81 },
82 autoHideDuration: 6000,
83 action: actions
84 }, muiProps));
85 }
86
87 return null;
88};
89
90NotificationsJSX.propTypes = {
91 notifications: _propTypes.default.arrayOf(_propTypes.default.object.isRequired).isRequired,
92 handleDismissNotification: _propTypes.default.func.isRequired,
93 currentSnackbar: _propTypes.default.object,
94 isOpen: _propTypes.default.bool.isRequired,
95 updateIsOpen: _propTypes.default.func.isRequired
96};
97var Notifications = (0, _withState.default)('isOpen', 'updateIsOpen', true)(NotificationsJSX);
98var _default = Notifications;
99exports.default = _default;
\No newline at end of file