UNPKG

3.44 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7exports.__esModule = true;
8exports["default"] = void 0;
9
10var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
12var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
14var _core = require("@emotion/core");
15
16var _toastedNotes = _interopRequireDefault(require("toasted-notes"));
17
18var _react = require("react");
19
20var _Alert = require("../Alert");
21
22var _ThemeProvider = _interopRequireWildcard(require("../ThemeProvider"));
23
24var _Box = _interopRequireDefault(require("../Box"));
25
26var _CloseButton = _interopRequireDefault(require("../CloseButton"));
27
28/** @jsx jsx */
29var Toast = function Toast(_ref) {
30 var status = _ref.status,
31 variant = _ref.variant,
32 id = _ref.id,
33 title = _ref.title,
34 isClosable = _ref.isClosable,
35 onClose = _ref.onClose,
36 description = _ref.description,
37 props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, ["status", "variant", "id", "title", "isClosable", "onClose", "description"]);
38 return (0, _core.jsx)(_Alert.Alert, (0, _extends2["default"])({
39 status: status,
40 variant: variant,
41 id: id,
42 textAlign: "left",
43 boxShadow: "lg",
44 rounded: "md",
45 alignItems: "start",
46 m: 2,
47 pr: 8
48 }, props), (0, _core.jsx)(_Alert.AlertIcon, null), (0, _core.jsx)(_Box["default"], {
49 flex: "1"
50 }, title && (0, _core.jsx)(_Alert.AlertTitle, null, title), description && (0, _core.jsx)(_Alert.AlertDescription, null, description)), isClosable && (0, _core.jsx)(_CloseButton["default"], {
51 size: "sm",
52 onClick: onClose,
53 position: "absolute",
54 right: "4px",
55 top: "4px"
56 }));
57};
58
59function useToast() {
60 var theme = (0, _ThemeProvider.useTheme)();
61 var notify = (0, _react.useCallback)(function (_ref2) {
62 var _ref2$position = _ref2.position,
63 position = _ref2$position === void 0 ? "bottom" : _ref2$position,
64 _ref2$duration = _ref2.duration,
65 duration = _ref2$duration === void 0 ? 5000 : _ref2$duration,
66 render = _ref2.render,
67 title = _ref2.title,
68 description = _ref2.description,
69 status = _ref2.status,
70 _ref2$variant = _ref2.variant,
71 variant = _ref2$variant === void 0 ? "solid" : _ref2$variant,
72 isClosable = _ref2.isClosable;
73 var options = {
74 position: position,
75 duration: duration
76 };
77
78 if (render) {
79 return _toastedNotes["default"].notify(function (_ref3) {
80 var onClose = _ref3.onClose,
81 id = _ref3.id;
82 return (0, _core.jsx)(_ThemeProvider["default"], {
83 theme: theme
84 }, render({
85 onClose: onClose,
86 id: id
87 }));
88 }, options);
89 }
90
91 _toastedNotes["default"].notify(function (_ref4) {
92 var onClose = _ref4.onClose,
93 id = _ref4.id;
94 return (0, _core.jsx)(_ThemeProvider["default"], {
95 theme: theme
96 }, (0, _core.jsx)(Toast, {
97 onClose: onClose,
98 id: id,
99 title: title,
100 description: description,
101 status: status,
102 variant: variant,
103 isClosable: isClosable
104 }));
105 }, options);
106 }, [theme]);
107 return notify;
108}
109
110var _default = useToast;
111exports["default"] = _default;
\No newline at end of file