@magaya/react-components
Version:
Magaya React Components Library
58 lines (57 loc) • 2.4 kB
JavaScript
;
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;