UNPKG

@magaya/react-components

Version:
58 lines (57 loc) 2.4 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports.useNotification = exports.NotificationProvider = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _Notification = require("../components/Notification"); var autoDismissDelay = 3000; var defaultNotification = { variant: 'success', position: 'topRight' }; var NotificationContext = /*#__PURE__*/(0, _react.createContext)({}); var NotificationProvider = function NotificationProvider(_ref) { var children = _ref.children; var _useState = (0, _react.useState)(null), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), notification = _useState2[0], setNotification = _useState2[1]; return /*#__PURE__*/_react["default"].createElement(NotificationContext.Provider, { value: { notification: notification, setNotification: setNotification } }, children, notification && /*#__PURE__*/_react["default"].createElement(_Notification.Notification, { variant: notification.variant, position: notification.position, onClose: function onClose() { return setNotification(null); } }, notification.message)); }; exports.NotificationProvider = NotificationProvider; var useNotification = function useNotification() { var _useContext = (0, _react.useContext)(NotificationContext), notification = _useContext.notification, setNotification = _useContext.setNotification; (0, _react.useEffect)(function () { var timeout = setTimeout(function () { return setNotification(null); }, autoDismissDelay); return function () { return clearTimeout(timeout); }; }, [notification, setNotification]); return { showNotification: function showNotification(newNotification) { if (notification) setNotification(null); setNotification((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, defaultNotification), newNotification)); } }; }; exports.useNotification = useNotification;