UNPKG

@chakra-ui/core

Version:

Responsive and accessible React UI components built with React and Emotion

111 lines (94 loc) 3.44 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _core = require("@emotion/core"); var _toastedNotes = _interopRequireDefault(require("toasted-notes")); var _react = require("react"); var _Alert = require("../Alert"); var _ThemeProvider = _interopRequireWildcard(require("../ThemeProvider")); var _Box = _interopRequireDefault(require("../Box")); var _CloseButton = _interopRequireDefault(require("../CloseButton")); /** @jsx jsx */ var Toast = function Toast(_ref) { var status = _ref.status, variant = _ref.variant, id = _ref.id, title = _ref.title, isClosable = _ref.isClosable, onClose = _ref.onClose, description = _ref.description, props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, ["status", "variant", "id", "title", "isClosable", "onClose", "description"]); return (0, _core.jsx)(_Alert.Alert, (0, _extends2["default"])({ status: status, variant: variant, id: id, textAlign: "left", boxShadow: "lg", rounded: "md", alignItems: "start", m: 2, pr: 8 }, props), (0, _core.jsx)(_Alert.AlertIcon, null), (0, _core.jsx)(_Box["default"], { flex: "1" }, title && (0, _core.jsx)(_Alert.AlertTitle, null, title), description && (0, _core.jsx)(_Alert.AlertDescription, null, description)), isClosable && (0, _core.jsx)(_CloseButton["default"], { size: "sm", onClick: onClose, position: "absolute", right: "4px", top: "4px" })); }; function useToast() { var theme = (0, _ThemeProvider.useTheme)(); var notify = (0, _react.useCallback)(function (_ref2) { var _ref2$position = _ref2.position, position = _ref2$position === void 0 ? "bottom" : _ref2$position, _ref2$duration = _ref2.duration, duration = _ref2$duration === void 0 ? 5000 : _ref2$duration, render = _ref2.render, title = _ref2.title, description = _ref2.description, status = _ref2.status, _ref2$variant = _ref2.variant, variant = _ref2$variant === void 0 ? "solid" : _ref2$variant, isClosable = _ref2.isClosable; var options = { position: position, duration: duration }; if (render) { return _toastedNotes["default"].notify(function (_ref3) { var onClose = _ref3.onClose, id = _ref3.id; return (0, _core.jsx)(_ThemeProvider["default"], { theme: theme }, render({ onClose: onClose, id: id })); }, options); } _toastedNotes["default"].notify(function (_ref4) { var onClose = _ref4.onClose, id = _ref4.id; return (0, _core.jsx)(_ThemeProvider["default"], { theme: theme }, (0, _core.jsx)(Toast, { onClose: onClose, id: id, title: title, description: description, status: status, variant: variant, isClosable: isClosable })); }, options); }, [theme]); return notify; } var _default = useToast; exports["default"] = _default;