UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

207 lines (169 loc) 5.53 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _react = _interopRequireDefault(require("react")); var _isPromise = _interopRequireDefault(require("is-promise")); var _shared = require("choerodon-ui/shared"); var _icon = _interopRequireDefault(require("../icon")); var _Notification = require("./Notification"); var _utils = require("../configure/utils"); var config = _shared.NotificationManager.config; function setNotificationConfig(options) { var duration = options.duration, placement = options.placement, bottom = options.bottom, top = options.top, getContainer = options.getContainer, maxCount = options.maxCount, foldCount = options.foldCount, icons = options.icons; if (duration !== undefined) { config.duration = duration; } if (placement !== undefined) { config.placement = placement; } if (bottom !== undefined) { config.bottom = bottom; } if (top !== undefined) { config.top = top; } if (getContainer !== undefined) { config.getContainer = getContainer; } if (maxCount !== undefined) { config.maxCount = maxCount; } if (foldCount !== undefined) { config.foldCount = foldCount; } if (icons !== undefined) { config.icons = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, config.icons), icons); } } function getPlacementStyle(placement) { var style; switch (placement) { case 'topLeft': style = { left: 0, top: config.top, bottom: 'auto' }; break; case 'topRight': style = { right: 0, top: config.top, bottom: 'auto' }; break; case 'bottomLeft': style = { left: 0, top: 'auto', bottom: config.bottom }; break; default: style = { right: 0, top: 'auto', bottom: config.bottom }; break; } return style; } function getNotificationInstance(prefixCls, placement, callback) { var cacheKey = "".concat(prefixCls, "-").concat(placement); var instance = _shared.NotificationManager.instances.get(cacheKey); if (instance) { if ((0, _isPromise["default"])(instance)) { instance.then(callback); } else { callback(instance); } return; } var config = _shared.NotificationManager.config; _shared.NotificationManager.instances.set(cacheKey, new Promise(function (resolve) { (0, _Notification.newNotificationInstance)({ prefixCls: prefixCls, className: cacheKey, style: getPlacementStyle(placement), getContainer: config.getContainer, maxCount: config.maxCount, foldCount: config.foldCount }, function (notification) { resolve(notification); _shared.NotificationManager.instances.set(cacheKey, notification); callback(notification); }); })); } function notice(args) { var outerPrefixCls = (0, _utils.getPrefixCls)('notification', args.prefixCls); var prefixCls = "".concat(outerPrefixCls, "-notice"); var duration = args.duration === undefined ? config.duration : args.duration; var iconNode = null; if (args.icon) { iconNode = /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-icon") }, args.icon); } else if (args.type) { var iconType = config.icons[args.type]; iconNode = /*#__PURE__*/_react["default"].createElement(_icon["default"], { className: "".concat(prefixCls, "-icon ").concat(prefixCls, "-icon-").concat(args.type), type: iconType }); } var autoMarginTag = !args.description && iconNode ? /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-message-single-line-auto-margin") }) : null; getNotificationInstance(outerPrefixCls, args.placement || config.placement, function (notification) { notification.notice({ children: /*#__PURE__*/_react["default"].createElement("div", { className: iconNode ? "".concat(prefixCls, "-with-icon") : '' }, iconNode, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-message") }, autoMarginTag, args.message), args.description ? /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-description") }, args.description) : null, args.btn ? /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-btn") }, args.btn) : null), duration: duration, closable: true, onClose: args.onClose, key: args.key, style: args.style || {}, className: args.className }); }); } var api = { open: notice, close: function close(key) { _shared.NotificationManager.remove(key); }, config: setNotificationConfig, destroy: function destroy() { _shared.NotificationManager.clear(); } }; ['success', 'info', 'warning', 'error'].forEach(function (type) { api[type] = function (args) { return api.open((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, args), {}, { type: type })); }; }); api.warn = api.warning; var _default = api; exports["default"] = _default; //# sourceMappingURL=index.js.map