UNPKG

@jannie-shao/components-antd4

Version:
175 lines (174 loc) 7.4 kB
"use strict"; 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;