@jannie-shao/components-antd4
Version:
175 lines (174 loc) • 7.4 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = void 0;
require("antd/es/modal/style");
var _modal = _interopRequireDefault(require("antd/es/modal"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
require("antd/es/button/style");
var _button = _interopRequireDefault(require("antd/es/button"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _lodash = require("lodash");
var _form = _interopRequireDefault(require("../form"));
var _utils = require("../utils");
var _config = require("../style/config");
var _excluded = ["btnText", "btnGroup", "title", "addonBefore", "model", "beforePop", "afterPopSubmit", "afterClose", "onSubmit", "className", "initialValues", "values", "children", "useChildren", "getContainer", "formProps"];
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
var prefix = _config.rootPrefix + "-pop-form";
var PopForm = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
var btnText = _ref.btnText,
btnGroup = _ref.btnGroup,
title = _ref.title,
addonBefore = _ref.addonBefore,
model = _ref.model,
beforePop = _ref.beforePop,
afterPopSubmit = _ref.afterPopSubmit,
afterClose = _ref.afterClose,
onSubmit = _ref.onSubmit,
className = _ref.className,
initialValues = _ref.initialValues,
values = _ref.values,
children = _ref.children,
useChildren = _ref.useChildren,
getContainer = _ref.getContainer,
formProps = _ref.formProps,
moreProps = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
var compForm = (0, _react.useRef)();
var _useState = (0, _react.useState)(false),
visible = _useState[0],
setVisible = _useState[1];
var _useState2 = (0, _react.useState)(false),
loading = _useState2[0],
setLoading = _useState2[1];
var _useState3 = (0, _react.useState)(values),
lastValues = _useState3[0],
setLastValues = _useState3[1];
var handleShowForm = function handleShowForm() {
return (0, _utils.callFun)(function () {
return beforePop();
}, function (res) {
setVisible(true);
if (res && compForm.current) {
compForm.current.setFieldsValue(res);
}
});
};
var handleCancel = function handleCancel() {
setVisible(false);
setLoading(false);
};
var handleAfterClose = function handleAfterClose() {
compForm.current && compForm.current.resetFields();
afterClose();
};
var handleSubmit = function handleSubmit(data) {
setLoading(true);
(0, _utils.callFun)(function () {
return onSubmit(data);
}, function () {
handleCancel();
afterPopSubmit();
}, function () {
return setLoading(false);
});
};
(0, _react.useEffect)(function () {
if (!(0, _lodash.isEqual)(values, lastValues) && compForm.current) {
compForm.current.setFieldsValue(values);
setLastValues(values);
}
}, [values]);
(0, _react.useEffect)(function () {
compForm.current && compForm.current.setFieldsValue((0, _lodash.merge)({}, initialValues, values));
}, []);
(0, _react.useImperativeHandle)(ref, function () {
return {
handleShowForm: handleShowForm
};
});
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, function () {
if (children) {
return (0, _utils.cloneElement)(children, {
onClick: handleShowForm
});
}
if (useChildren) {
return /*#__PURE__*/_react["default"].createElement(_button["default"], {
type: "primary",
onClick: handleShowForm
}, btnText);
}
return '';
}(), /*#__PURE__*/_react["default"].createElement(_modal["default"], (0, _extends2["default"])({
className: (0, _classnames["default"])(prefix, className),
getContainer: getContainer,
maskClosable: false,
title: title,
width: 690,
footer: null
}, moreProps, {
open: visible,
onCancel: handleCancel,
afterClose: handleAfterClose
}), /*#__PURE__*/_react["default"].createElement("div", {
className: prefix + "-addon-before"
}, addonBefore), /*#__PURE__*/_react["default"].createElement("div", {
className: prefix + "-content"
}, /*#__PURE__*/_react["default"].createElement(_form["default"], (0, _extends2["default"])({
ref: compForm,
layout: "horizontal",
colon: false,
model: model,
btnGroup: btnGroup
}, formProps, {
isLoading: loading,
initialValues: initialValues,
onSubmit: handleSubmit,
onCancel: handleCancel
})))));
});
PopForm.propTypes = {
btnText: _propTypes["default"].string,
btnGroup: _propTypes["default"].array,
title: _propTypes["default"].string,
addonBefore: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].node]),
model: _propTypes["default"].array,
beforePop: _propTypes["default"].func,
afterPopSubmit: _propTypes["default"].func,
afterClose: _propTypes["default"].func,
onSubmit: _propTypes["default"].func,
className: _propTypes["default"].string,
initialValues: _propTypes["default"].object,
values: _propTypes["default"].object,
useChildren: _propTypes["default"].bool,
getContainer: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].func, _propTypes["default"].node]),
formProps: _propTypes["default"].object
};
PopForm.defaultProps = {
btnText: 'Create',
btnGroup: [{
opType: 'submit',
btnText: 'Ok'
}, 'cancel'],
addonBefore: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null),
model: [],
title: 'New',
beforePop: function beforePop() {},
afterPopSubmit: function afterPopSubmit() {},
afterClose: function afterClose() {},
onSubmit: function onSubmit() {},
className: '',
initialValues: {},
values: {},
useChildren: true,
getContainer: function getContainer() {
return document.body;
},
formProps: {}
};
var _default = PopForm;
exports["default"] = _default;