choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
170 lines (144 loc) • 5.11 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _noop = _interopRequireDefault(require("lodash/noop"));
var _isString = _interopRequireDefault(require("lodash/isString"));
var _icon = _interopRequireDefault(require("../icon"));
var _notification = _interopRequireDefault(require("../rc-components/notification"));
var _util = require("./util");
var _configure = require("../configure");
var defaultDuration = 3;
var defaultTop = 24;
var defaultBottom = 24;
var messageInstance;
var key = 1;
var customizePrefixCls;
var transitionName = 'move-up';
var defaultPlacement = 'leftBottom';
var getContainer;
function getCustomizePrefixCls() {
return (0, _configure.getPrefixCls)('message', customizePrefixCls);
}
function getMessageInstance(placement, callback, contentClassName) {
if (messageInstance) {
callback(messageInstance);
return;
}
_notification["default"].newInstance({
prefixCls: getCustomizePrefixCls(),
style: (0, _util.getPlacementStyle)(placement, defaultTop, defaultBottom),
transitionName: (0, _util.getPlacementTransitionName)(placement, transitionName),
getContainer: getContainer,
contentClassName: contentClassName
}, function (instance) {
if (messageInstance) {
callback(messageInstance);
return;
}
messageInstance = instance;
callback(instance);
});
}
function notice(content) {
var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultDuration;
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 = {
info: 'info',
success: 'check_circle',
error: 'error',
warning: 'warning',
loading: 'loading'
}[type];
if ((0, _isString["default"])(onClose)) {
placement = onClose;
onClose = _noop["default"];
}
if (typeof duration === 'function') {
onClose = duration;
duration = defaultDuration;
} else if ((0, _isString["default"])(duration)) {
placement = duration;
}
var target = key++;
var prefixCls = getCustomizePrefixCls();
getMessageInstance(placement || defaultPlacement, function (instance) {
instance.notice({
key: target,
duration: duration,
style: {},
contentClassName: "".concat(prefixCls, "-content-").concat(type),
content: _react["default"].createElement("div", {
className: "".concat(prefixCls, "-custom-content ").concat(prefixCls, "-").concat(type)
}, _react["default"].createElement(_icon["default"], {
type: iconType
}), _react["default"].createElement("span", null, content)),
onClose: onClose
});
}, "".concat(prefixCls, "-content-").concat(type));
return function () {
if (messageInstance) {
messageInstance.removeNotice(target);
}
};
}
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) {
defaultTop = options.top;
messageInstance = null; // delete messageInstance for new defaultTop
}
if (options.bottom !== undefined) {
defaultBottom = options.bottom;
messageInstance = null; // delete messageInstance for new defaultBottom
}
if (options.duration !== undefined) {
defaultDuration = options.duration;
}
if (options.prefixCls !== undefined) {
customizePrefixCls = options.prefixCls;
}
if (options.getContainer !== undefined) {
getContainer = options.getContainer;
}
if (options.transitionName !== undefined) {
transitionName = options.transitionName;
messageInstance = null; // delete messageInstance for new transitionName
}
if (options.placement !== undefined) {
defaultPlacement = options.placement;
}
},
destroy: function destroy() {
if (messageInstance) {
messageInstance.destroy();
messageInstance = null;
}
}
};
exports["default"] = _default;
//# sourceMappingURL=index.js.map