UNPKG

linkmore-design

Version:

🌈 πŸš€lmη»„δ»ΆεΊ“γ€‚πŸš€

146 lines (145 loc) β€’ 4.78 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "List", { enumerable: true, get: function () { return _rcFieldForm.List; } }); exports.default = void 0; Object.defineProperty(exports, "useForm", { enumerable: true, get: function () { return _useForm.default; } }); Object.defineProperty(exports, "useWatch", { enumerable: true, get: function () { return _rcFieldForm.useWatch; } }); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classnames = _interopRequireDefault(require("classnames")); var _rcFieldForm = _interopRequireWildcard(require("rc-field-form")); var React = _interopRequireWildcard(require("react")); var _configProvider = require("../config-provider"); var _DisabledContext = _interopRequireWildcard(require("../config-provider/DisabledContext")); var _SizeContext = _interopRequireWildcard(require("../config-provider/SizeContext")); var _context = require("./context"); var _useForm = _interopRequireDefault(require("./hooks/useForm")); var _WrapperItem = _interopRequireDefault(require("./WrapperItem")); const InternalForm = (props, ref) => { const contextSize = React.useContext(_SizeContext.default); const contextDisabled = React.useContext(_DisabledContext.default); const { getPrefixCls, direction, form: contextForm } = React.useContext(_configProvider.ConfigContext); const { prefixCls: customizePrefixCls, className = '', size = contextSize, disabled = contextDisabled, form, colon, labelAlign, labelWrap, labelCol, wrapperCol, hideRequiredMark, layout = 'horizontal', scrollToFirstError, requiredMark, onFinishFailed, name, responsive, children: customizeChildren, ...restFormProps } = props; let children = customizeChildren; const mergedRequiredMark = (0, React.useMemo)(() => { if (requiredMark !== undefined) { return requiredMark; } if (contextForm && contextForm.requiredMark !== undefined) { return contextForm.requiredMark; } if (hideRequiredMark) { return false; } return true; }, [hideRequiredMark, requiredMark, contextForm]); const mergedColon = colon ?? contextForm?.colon; const prefixCls = getPrefixCls('form', customizePrefixCls); const formClassName = (0, _classnames.default)('lm_form', prefixCls, { [`${prefixCls}-${layout}`]: true, [`${prefixCls}-hide-required-mark`]: mergedRequiredMark === false, [`${prefixCls}-rtl`]: direction === 'rtl', [`${prefixCls}-${size}`]: size }, className); const [wrapForm] = (0, _useForm.default)(form); const { __INTERNAL__ } = wrapForm; __INTERNAL__.name = name; const formContextValue = (0, React.useMemo)(() => ({ name, labelAlign, labelCol, labelWrap, wrapperCol, vertical: layout === 'vertical', colon: mergedColon, requiredMark: mergedRequiredMark, itemRef: __INTERNAL__.itemRef, form: wrapForm }), [name, labelAlign, labelCol, wrapperCol, layout, mergedColon, mergedRequiredMark, wrapForm]); React.useImperativeHandle(ref, () => wrapForm); const onInternalFinishFailed = errorInfo => { onFinishFailed?.(errorInfo); let defaultScrollToFirstError = { block: 'nearest' }; if (scrollToFirstError && errorInfo.errorFields.length) { if (typeof scrollToFirstError === 'object') { defaultScrollToFirstError = scrollToFirstError; } wrapForm.scrollToField(errorInfo.errorFields[0].name, defaultScrollToFirstError); } }; if (responsive) { children = /*#__PURE__*/React.createElement(_WrapperItem.default, { children: children }); } const formNode = /*#__PURE__*/React.createElement(_DisabledContext.DisabledContextProvider, { disabled: disabled }, /*#__PURE__*/React.createElement(_SizeContext.SizeContextProvider, { size: size }, /*#__PURE__*/React.createElement(_context.FormContext.Provider, { value: formContextValue }, /*#__PURE__*/React.createElement(_rcFieldForm.default, (0, _extends2.default)({ id: name }, restFormProps, { children: children, name: name, onFinishFailed: onInternalFinishFailed, form: wrapForm, className: formClassName }))))); if (responsive) { return /*#__PURE__*/React.createElement("div", { className: "lm_form_responsive_box" }, formNode); } return formNode; }; const Form = /*#__PURE__*/React.forwardRef(InternalForm); var _default = Form; exports.default = _default;