You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
7.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import "antd/es/form/style";
import _Form from "antd/es/form";
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import React, { useRef } from 'react';
import { ConfigProviderWarp } from '@ant-design/pro-provider';
import { LabelIconTip, pickProProps, conversionSubmitValue } from '@ant-design/pro-utils';
import FieldContext from '../FieldContext';
import Submitter from '../components/Submitter';
export function createField(Field) {
var FieldWithContext = function FieldWithContext(props) {
var label = props.label,
tip = props.tip,
placeholder = props.placeholder,
rest = _objectWithoutProperties(props, ["label", "tip", "placeholder"]);
/**
* 从 context 中拿到的值
*/
var _React$useContext = React.useContext(FieldContext),
fieldProps = _React$useContext.fieldProps,
formItemProps = _React$useContext.formItemProps; // @ts-ignore
var restProps = Field.type === 'ProField' ? rest : pickProProps(rest);
return /*#__PURE__*/React.createElement(Field, _extends({
fieldProps: pickProProps(_objectSpread(_objectSpread({
placeholder: placeholder
}, fieldProps || {}), rest.fieldProps || {}))
}, formItemProps, restProps, {
// title 是用于提升读屏的能力的,没有参与逻辑
title: label // 全局的提供一个 tip 功能,可以减少代码量
,
label: label && /*#__PURE__*/React.createElement(LabelIconTip, {
label: label,
tip: tip
})
}));
};
return FieldWithContext;
}
var BaseForm = function BaseForm(props) {
var children = props.children,
contentRender = props.contentRender,
submitter = props.submitter,
fieldProps = props.fieldProps,
formItemProps = props.formItemProps,
groupProps = props.groupProps,
_props$dateFormatter = props.dateFormatter,
dateFormatter = _props$dateFormatter === void 0 ? 'string' : _props$dateFormatter,
userForm = props.form,
rest = _objectWithoutProperties(props, ["children", "contentRender", "submitter", "fieldProps", "formItemProps", "groupProps", "dateFormatter", "form"]);
var _Form$useForm = _Form.useForm(),
_Form$useForm2 = _slicedToArray(_Form$useForm, 1),
form = _Form$useForm2[0];
var formRef = useRef(userForm || form);
var items = React.Children.toArray(children);
var submitterProps = typeof submitter === 'boolean' || !submitter ? {} : submitter;
var submitterNode = submitter === false ? undefined : /*#__PURE__*/React.createElement(Submitter, _extends({}, submitterProps, {
form: userForm || form
}));
var content = contentRender ? contentRender(items, submitterNode) : items;
return (
/*#__PURE__*/
// 增加国际化的能力,与 table 组件可以统一
React.createElement(ConfigProviderWarp, null, /*#__PURE__*/React.createElement(FieldContext.Provider, {
value: {
fieldProps: fieldProps,
formItemProps: formItemProps,
groupProps: groupProps
}
}, /*#__PURE__*/React.createElement(_Form, _extends({
form: userForm || form
}, rest, {
onFinish: function onFinish(values) {
if (rest.onFinish) {
rest.onFinish(conversionSubmitValue(values, dateFormatter, {}));
}
}
}), /*#__PURE__*/React.createElement(_Form.Item, {
noStyle: true,
shouldUpdate: true
}, function (formInstance) {
// 不 setTimeout 一下拿到的是比较旧的
setTimeout(function () {
// 支持 fromRef这里 ref 里面可以随时拿到最新的值
if (rest.formRef) {
rest.formRef.current = formInstance;
}
formRef.current = formInstance;
}, 0);
}), content)))
);
};
export default BaseForm;