nowrapper
Version:
nowrapper
313 lines (271 loc) • 13.2 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "@babel/runtime/helpers/createClass", "@babel/runtime/helpers/possibleConstructorReturn", "@babel/runtime/helpers/getPrototypeOf", "@babel/runtime/helpers/assertThisInitialized", "@babel/runtime/helpers/inherits", "@babel/runtime/helpers/objectSpread", "@babel/runtime/helpers/objectWithoutProperties", "@babel/runtime/helpers/extends", "@babel/runtime/helpers/classCallCheck", "@babel/runtime/helpers/defineProperty", "react", "prop-types", "../locale/dialog", "noform/lib/context/dialogForm", "./DialogContent", "noform"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("@babel/runtime/helpers/createClass"), require("@babel/runtime/helpers/possibleConstructorReturn"), require("@babel/runtime/helpers/getPrototypeOf"), require("@babel/runtime/helpers/assertThisInitialized"), require("@babel/runtime/helpers/inherits"), require("@babel/runtime/helpers/objectSpread"), require("@babel/runtime/helpers/objectWithoutProperties"), require("@babel/runtime/helpers/extends"), require("@babel/runtime/helpers/classCallCheck"), require("@babel/runtime/helpers/defineProperty"), require("react"), require("prop-types"), require("../locale/dialog"), require("noform/lib/context/dialogForm"), require("./DialogContent"), require("noform"));
} else {
var mod = {
exports: {}
};
factory(mod.exports, global.createClass, global.possibleConstructorReturn, global.getPrototypeOf, global.assertThisInitialized, global.inherits, global.objectSpread, global.objectWithoutProperties, global._extends, global.classCallCheck, global.defineProperty, global.react, global.propTypes, global.dialog, global.dialogForm, global.DialogContent, global.noform);
global.unknown = mod.exports;
}
})(this, function (_exports, _createClass2, _possibleConstructorReturn2, _getPrototypeOf2, _assertThisInitialized2, _inherits2, _objectSpread2, _objectWithoutProperties2, _extends2, _classCallCheck2, _defineProperty2, _react, _propTypes, _dialog, _dialogForm, _DialogContent, _noform) {
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports["default"] = void 0;
_createClass2 = _interopRequireDefault(_createClass2);
_possibleConstructorReturn2 = _interopRequireDefault(_possibleConstructorReturn2);
_getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf2);
_assertThisInitialized2 = _interopRequireDefault(_assertThisInitialized2);
_inherits2 = _interopRequireDefault(_inherits2);
_objectSpread2 = _interopRequireDefault(_objectSpread2);
_objectWithoutProperties2 = _interopRequireDefault(_objectWithoutProperties2);
_extends2 = _interopRequireDefault(_extends2);
_classCallCheck2 = _interopRequireDefault(_classCallCheck2);
_defineProperty2 = _interopRequireDefault(_defineProperty2);
_react = _interopRequireDefault(_react);
_propTypes = _interopRequireDefault(_propTypes);
_dialog = _interopRequireDefault(_dialog);
_dialogForm = _interopRequireDefault(_dialogForm);
_DialogContent = _interopRequireDefault(_DialogContent);
var noop = function noop() {};
var isPromise = function isPromise(content) {
return Promise.resolve(content) === content;
};
var DialogForm = function DialogForm(options, getDialogInstance) {
var _this = this;
(0, _classCallCheck2["default"])(this, DialogForm);
(0, _defineProperty2["default"])(this, "hide", function () {
var dialogInstance = _this.getDialogInstance();
dialogInstance.hide();
});
(0, _defineProperty2["default"])(this, "handleCancel", function () {
var onCancel = _this.options.onCancel;
if (onCancel && typeof onCancel === 'function') {
onCancel();
}
_this.hide();
});
(0, _defineProperty2["default"])(this, "handleOk", function () {
var _this$options = _this.options,
_this$options$onOk = _this$options.onOk,
onOk = _this$options$onOk === void 0 ? _this.hide : _this$options$onOk,
enableValidate = _this$options.enableValidate;
var values = {};
if (_this.dialogCore) values = _this.dialogCore.getValues();
var params = [values, _this.hide, _this.dialogCore];
if (enableValidate && _this.dialogCore) {
return _this.dialogCore.validate(function (err) {
if (!err) return onOk.apply(void 0, params);
return null;
});
}
return onOk.apply(void 0, params);
});
(0, _defineProperty2["default"])(this, "renderFooter", function (Button, opts) {
var _ref = opts || {},
layout = _ref.layout,
_ref$loading = _ref.loading,
loading = _ref$loading === void 0 ? false : _ref$loading;
var _ref2 = layout || {},
label = _ref2.label;
var _this$options2 = _this.options,
_this$options2$locale = _this$options2.locale,
locale = _this$options2$locale === void 0 ? 'en' : _this$options2$locale,
footer = _this$options2.footer,
btnLoadingPropsName = _this$options2.btnLoadingPropsName,
footerAlign = _this$options2.footerAlign;
var textMap = _dialog["default"][locale];
var _this$options$hasCanc = _this.options.hasCancel,
hasCancel = _this$options$hasCanc === void 0 ? true : _this$options$hasCanc;
var okText = _this.options.okText || textMap.ok;
var cancelText = _this.options.cancelText || textMap.cancel;
var footerElement = null;
if (footer) {
var footerOpts = Object.assign(opts || {});
footerOpts.ok = _this.handleOk;
footerOpts.cancel = _this.handleCancel;
if (_this.dialogCore) footerOpts.ctx = _this.dialogCore;
footerElement = footer(_this.hide, footerOpts);
} else {
var styleProps = {};
var alignCls = ['left', 'center', 'right'].indexOf(footerAlign) !== -1 ? "align-".concat(footerAlign) : '';
if (footerAlign === 'label' && label) {
styleProps.style = {
marginLeft: "".concat(Number(label / 24).toFixed(2) * 100, "%"),
"float": 'none'
};
}
footerElement = _react["default"].createElement(_noform.If, {
when: function when(values, ctx) {
return ctx.globalStatus !== 'preview';
}
}, _react["default"].createElement("div", (0, _extends2["default"])({
key: "footer",
className: "noform-dialog-custom-btns ".concat(alignCls)
}, styleProps), _react["default"].createElement(ActionButton, {
disabled: loading,
key: "align-footer-ok",
btnLoadingPropsName: btnLoadingPropsName,
btnOrigin: Button,
type: "primary",
onClick: _this.handleOk
}, okText), hasCancel ? _react["default"].createElement("span", {
key: "align-footer-sep",
style: {
marginRight: '12px'
}
}) : null, hasCancel ? _react["default"].createElement(ActionButton, {
disabled: loading,
key: "align-footer-cancel",
btnLoadingPropsName: btnLoadingPropsName,
btnOrigin: Button,
onClick: _this.handleCancel
}, cancelText) : null));
}
return footerElement;
});
(0, _defineProperty2["default"])(this, "renderContent", function (Button) {
var _this$options3 = _this.options,
content = _this$options3.content,
task = _this$options3.task;
var onDialogMount = function onDialogMount(core) {
_this.dialogCore = core;
};
var footer = _this.renderFooter.bind(_this, Button);
return _react["default"].createElement(_DialogContent["default"], {
content: content,
task: task,
footer: footer,
onMount: onDialogMount
});
});
this.options = options;
this.dialogCore = null;
this.getDialogInstance = getDialogInstance;
};
var DialogFormFactory = function DialogFormFactory(_ref3) {
var _this2 = this;
var _Dialog = _ref3.Dialog,
_Button = _ref3.Button,
_compatiMap = _ref3.compatiMap;
(0, _classCallCheck2["default"])(this, DialogFormFactory);
(0, _defineProperty2["default"])(this, "show", function (options) {
var Dialog = _this2.Dialog,
Button = _this2.Button,
compatiMap = _this2.compatiMap;
if (!Dialog || !Button) {
throw Error('DialogForm initialize failed, make sure you have passed antd components');
}
var closablePolifill = options.closablePolifill,
title = options.title,
className = options.className,
width = options.width,
others = (0, _objectWithoutProperties2["default"])(options, ["closablePolifill", "title", "className", "width"]);
var dialogInstance = null; // 按钮loading属性
var btnLoadingPropsName = compatiMap.btnLoadingProps || 'loading';
var dialogForm = new DialogForm((0, _objectSpread2["default"])({}, options, {
compatiMap: compatiMap,
btnLoadingPropsName: btnLoadingPropsName
}), function () {
return dialogInstance;
});
var content = dialogForm.renderContent(Button); // 入口属性
var entryProps = compatiMap.show((0, _objectSpread2["default"])({}, options, {
title: title,
content: content
}));
if (entryProps.closablePolifill) {
entryProps.title = _react["default"].createElement("div", null, title, entryProps.closablePolifill(function () {
return dialogInstance;
}));
}
dialogInstance = Dialog.show((0, _objectSpread2["default"])({}, others, entryProps));
dialogInstance = compatiMap.dialogInstance(dialogInstance);
return dialogInstance;
});
this.Dialog = _Dialog;
this.Button = _Button;
this.compatiMap = _compatiMap;
var show = _Dialog.show,
_others = (0, _objectWithoutProperties2["default"])(_Dialog, ["show"]);
Object.keys(_others).forEach(function (key) {
_this2[key] = _others[key];
});
};
var ActionButton =
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2["default"])(ActionButton, _React$Component);
function ActionButton(props, context) {
var _this3;
(0, _classCallCheck2["default"])(this, ActionButton);
_this3 = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(ActionButton).call(this, props, context));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this3), "enableLoading", function () {
var onLoading = _this3.props.onLoading;
if (onLoading) {
onLoading();
}
_this3.setState({
isLoading: true
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this3), "disableLoading", function () {
var offLoading = _this3.props.offLoading;
if (offLoading) {
offLoading();
}
_this3.setState({
isLoading: false
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this3), "handleAction", function () {
var onClick = _this3.props.onClick;
if (typeof onClick === 'function') {
_this3.enableLoading();
var actionResult = onClick();
if (isPromise(actionResult)) {
actionResult.then(_this3.disableLoading, _this3.disableLoading)["catch"](_this3.disableLoading);
} else {
_this3.disableLoading();
}
}
});
_this3.state = {
isLoading: false
};
return _this3;
}
(0, _createClass2["default"])(ActionButton, [{
key: "render",
value: function render() {
var _this$props = this.props,
onClick = _this$props.onClick,
_this$props$btnLoadin = _this$props.btnLoadingPropsName,
btnLoadingPropsName = _this$props$btnLoadin === void 0 ? 'loading' : _this$props$btnLoadin,
btnOrigin = _this$props.btnOrigin,
others = (0, _objectWithoutProperties2["default"])(_this$props, ["onClick", "btnLoadingPropsName", "btnOrigin"]);
var Button = btnOrigin;
var isLoading = this.state.isLoading;
var btnLoadingProps = (0, _defineProperty2["default"])({}, btnLoadingPropsName, isLoading);
return _react["default"].createElement(Button, (0, _extends2["default"])({
onClick: this.handleAction
}, others, btnLoadingProps));
}
}]);
return ActionButton;
}(_react["default"].Component);
(0, _defineProperty2["default"])(ActionButton, "propTypes", {
onLoading: _propTypes["default"].func,
offLoading: _propTypes["default"].func,
onClick: _propTypes["default"].func,
btnLoadingPropsName: _propTypes["default"].string,
btnOrigin: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].func])
});
var _default = DialogFormFactory;
_exports["default"] = _default;
});