choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
210 lines (165 loc) • 6.29 kB
JavaScript
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
;