UNPKG

choerodon-ui

Version:

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

210 lines (165 loc) 6.29 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 _noop = _interopRequireDefault(require("lodash/noop")); var _isString = _interopRequireDefault(require("lodash/isString")); var _shared = require("choerodon-ui/shared"); var _icon = _interopRequireDefault(require("../icon")); var _progress = _interopRequireDefault(require("../progress")); var _enum = require("../progress/enum"); var _enum2 = require("../_util/enum"); var _Notification = require("../notification/Notification"); var _util = require("./util"); var _utils = require("../configure/utils"); var _config = _shared.MessageManager.config; function getCustomizePrefixCls() { return (0, _utils.getPrefixCls)('message', _config.prefixCls); } function getMessageInstance(placement, callback, contentClassName) { var instance = _shared.MessageManager.instance; if (instance) { if ((0, _isPromise["default"])(instance)) { instance.then(callback); return instance; } callback(instance); return Promise.resolve(instance); } var promise = new Promise(function (resolve) { (0, _Notification.newNotificationInstance)({ prefixCls: getCustomizePrefixCls(), style: (0, _util.getPlacementStyle)(placement, _config.top, _config.bottom), transitionName: (0, _util.getPlacementTransitionName)(placement, _config.transitionName), getContainer: _config.getContainer, contentClassName: contentClassName, maxCount: _config.maxCount }, function (instance) { resolve(instance); _shared.MessageManager.instance = instance; callback(instance); }); }); _shared.MessageManager.instance = promise; return promise; } function notice(content) { var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _config.duration; var type = arguments.length > 2 ? arguments[2] : undefined; var _onClose = arguments.length > 3 ? arguments[3] : undefined; var placement = arguments.length > 4 ? arguments[4] : undefined; var iconType = _config.icons[type]; if ((0, _isString["default"])(_onClose)) { placement = _onClose; _onClose = _noop["default"]; } if (typeof duration === 'function') { _onClose = duration; duration = _config.duration; } else if ((0, _isString["default"])(duration)) { placement = duration; } var target = _shared.MessageManager.getUuid(); var prefixCls = getCustomizePrefixCls(); var icon = iconType === 'loading' ? /*#__PURE__*/_react["default"].createElement(_progress["default"], { type: _enum.ProgressType.loading, size: _enum2.Size.small }) : /*#__PURE__*/_react["default"].createElement(_icon["default"], { type: iconType }); var promise; var closePromise = new Promise(function (resolve) { promise = getMessageInstance(placement || _config.placement, function (instance) { instance.notice({ key: target, duration: duration, style: {}, contentClassName: "".concat(prefixCls, "-content-").concat(type), children: /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-custom-content ").concat(prefixCls, "-").concat(type) }, icon, /*#__PURE__*/_react["default"].createElement("span", null, content)), onClose: function onClose() { if (typeof _onClose === 'function') { _onClose(); } resolve(); } }); }, "".concat(prefixCls, "-content-").concat(type)); }); var result = function result() { if (promise) { promise.then(function (ins) { return ins.removeNotice(target); }); } }; result.then = function (filled, rejected) { return closePromise.then(filled, rejected); }; result.promise = closePromise; return result; } var _default = { info: function info(content, duration, onClose, placement) { return notice(content, duration, 'info', onClose, placement); }, success: function success(content, duration, onClose, placement) { return notice(content, duration, 'success', onClose, placement); }, error: function error(content, duration, onClose, placement) { return notice(content, duration, 'error', onClose, placement); }, // Departed usage, please use warning() warn: function warn(content, duration, onClose, placement) { return notice(content, duration, 'warning', onClose, placement); }, warning: function warning(content, duration, onClose, placement) { return notice(content, duration, 'warning', onClose, placement); }, loading: function loading(content, duration, onClose, placement) { return notice(content, duration, 'loading', onClose, placement); }, config: function config(options) { if (options.top !== undefined) { _config.top = options.top; _shared.MessageManager.clear(); } if (options.bottom !== undefined) { _config.bottom = options.bottom; _shared.MessageManager.clear(); } if (options.duration !== undefined) { _config.duration = options.duration; } if (options.prefixCls !== undefined) { _config.prefixCls = options.prefixCls; } if (options.getContainer !== undefined) { _config.getContainer = options.getContainer; } if (options.transitionName !== undefined) { _config.transitionName = options.transitionName; _shared.MessageManager.clear(); } if (options.placement !== undefined) { _config.placement = options.placement; } if (options.maxCount !== undefined) { _config.maxCount = options.maxCount; } if (options.icons !== undefined) { _config.icons = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _config.icons), options.icons); } }, destroy: function destroy() { _shared.MessageManager.clear(); } }; exports["default"] = _default; //# sourceMappingURL=index.js.map