UNPKG

@ant-design/react-native

Version:

基于蚂蚁金服移动设计规范的 React Native 组件库

1 lines 10.5 kB
"use client";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _typeof3=require("@babel/runtime/helpers/typeof");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _typeof2=_interopRequireDefault(require("@babel/runtime/helpers/typeof"));var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _rcFieldForm=require("rc-field-form");var _useState3=_interopRequireDefault(require("rc-util/es/hooks/useState"));var _ref2=require("rc-util/es/ref");var React=_interopRequireWildcard(require("react"));var _devWarning=_interopRequireDefault(require("../../_util/devWarning"));var _reactNode=require("../../_util/reactNode");var _context=require("../context");var _useChildren=_interopRequireDefault(require("../hooks/useChildren"));var _useFormItemStatus=_interopRequireDefault(require("../hooks/useFormItemStatus"));var _useFrameState3=_interopRequireDefault(require("../hooks/useFrameState"));var _useItemRef=_interopRequireDefault(require("../hooks/useItemRef"));var _util=require("../util");var _ItemHolder=_interopRequireDefault(require("./ItemHolder"));var _StatusProvider=_interopRequireDefault(require("./StatusProvider"));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||_typeof3(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 NAME_SPLIT='__SPLIT__';var ValidateStatuses=['success','warning','error','validating',''];function isSimilarControl(a,b){var keysA=Object.keys(a);var keysB=Object.keys(b);return keysA.length===keysB.length&&keysA.every(function(key){var propValueA=a[key];var propValueB=b[key];return propValueA===propValueB||typeof propValueA==='function'||typeof propValueB==='function';});}var MemoInput=React.memo(function(_ref){var children=_ref.children;return children;},function(prev,next){return isSimilarControl(prev.control,next.control)&&prev.update===next.update;});function genEmptyMeta(){return{errors:[],warnings:[],touched:false,validating:false,name:[],validated:false};}function InternalFormItem(props){var name=props.name,noStyle=props.noStyle,dependencies=props.dependencies,shouldUpdate=props.shouldUpdate,rules=props.rules,children=props.children,required=props.required,label=props.label,messageVariables=props.messageVariables,_props$trigger=props.trigger,trigger=_props$trigger===void 0?'onChange':_props$trigger,validateTrigger=props.validateTrigger,hidden=props.hidden,help=props.help;var _React$useContext=React.useContext(_context.FormContext),formName=_React$useContext.name;var mergedChildren=(0,_useChildren.default)(children);var isRenderProps=typeof mergedChildren==='function';var notifyParentMetaChange=React.useContext(_context.NoStyleItemContext);var _React$useContext2=React.useContext(_rcFieldForm.FieldContext),contextValidateTrigger=_React$useContext2.validateTrigger;var mergedValidateTrigger=validateTrigger!==undefined?validateTrigger:contextValidateTrigger;var hasName=!(name===undefined||name===null);(0,_devWarning.default)(name!==null,'Form.Item','`null` is passed as `name` property');var listContext=React.useContext(_rcFieldForm.ListContext);var fieldKeyPathRef=React.useRef();var _useFrameState=(0,_useFrameState3.default)({}),_useFrameState2=(0,_slicedToArray2.default)(_useFrameState,2),subFieldErrors=_useFrameState2[0],setSubFieldErrors=_useFrameState2[1];var _useState=(0,_useState3.default)(function(){return genEmptyMeta();}),_useState2=(0,_slicedToArray2.default)(_useState,2),meta=_useState2[0],setMeta=_useState2[1];var onMetaChange=function onMetaChange(nextMeta){var keyInfo=listContext===null||listContext===void 0?void 0:listContext.getKey(nextMeta.name);setMeta(nextMeta.destroy?genEmptyMeta():nextMeta,true);if(noStyle&&help!==false&&notifyParentMetaChange){var namePath=nextMeta.name;if(!nextMeta.destroy){if(keyInfo!==undefined){var _keyInfo=(0,_slicedToArray2.default)(keyInfo,2),fieldKey=_keyInfo[0],restPath=_keyInfo[1];namePath=[fieldKey].concat((0,_toConsumableArray2.default)(restPath));fieldKeyPathRef.current=namePath;}}else{namePath=fieldKeyPathRef.current||namePath;}notifyParentMetaChange(nextMeta,namePath);}};var onSubItemMetaChange=function onSubItemMetaChange(subMeta,uniqueKeys){setSubFieldErrors(function(prevSubFieldErrors){var clone=(0,_extends2.default)({},prevSubFieldErrors);var mergedNamePath=[].concat((0,_toConsumableArray2.default)(subMeta.name.slice(0,-1)),(0,_toConsumableArray2.default)(uniqueKeys));var mergedNameKey=mergedNamePath.join(NAME_SPLIT);if(subMeta.destroy){delete clone[mergedNameKey];}else{clone[mergedNameKey]=subMeta;}return clone;});};var _React$useMemo=React.useMemo(function(){var errorList=(0,_toConsumableArray2.default)(meta.errors);var warningList=(0,_toConsumableArray2.default)(meta.warnings);Object.values(subFieldErrors).forEach(function(subFieldError){errorList.push.apply(errorList,(0,_toConsumableArray2.default)(subFieldError.errors||[]));warningList.push.apply(warningList,(0,_toConsumableArray2.default)(subFieldError.warnings||[]));});return[errorList,warningList];},[subFieldErrors,meta.errors,meta.warnings]),_React$useMemo2=(0,_slicedToArray2.default)(_React$useMemo,2),mergedErrors=_React$useMemo2[0],mergedWarnings=_React$useMemo2[1];var getItemRef=(0,_useItemRef.default)();function renderLayout(baseChildren,fieldId,isRequired){if(noStyle&&!hidden){return React.createElement(_StatusProvider.default,{hasFeedback:props.hasFeedback,validateStatus:props.validateStatus,meta:meta,errors:mergedErrors,warnings:mergedWarnings,noStyle:true},baseChildren);}return React.createElement(_ItemHolder.default,(0,_extends2.default)({key:"row"},props,{fieldId:fieldId,isRequired:isRequired,errors:mergedErrors,warnings:mergedWarnings,meta:meta,onSubItemMetaChange:onSubItemMetaChange}),baseChildren);}if(!hasName&&!isRenderProps&&!dependencies){return renderLayout(mergedChildren);}var variables={};if(typeof label==='string'){variables.label=label;}else if(name){variables.label=String(name);}if(messageVariables){variables=(0,_extends2.default)((0,_extends2.default)({},variables),messageVariables);}return React.createElement(_rcFieldForm.Field,(0,_extends2.default)({},props,{messageVariables:variables,trigger:trigger,validateTrigger:mergedValidateTrigger,onMetaChange:onMetaChange}),function(control,renderMeta,context){var mergedName=(0,_util.toArray)(name).length&&renderMeta?renderMeta.name:[];var fieldId=(0,_util.getFieldId)(mergedName,formName);var isRequired=required!==undefined?required:!!(rules&&rules.some(function(rule){if(rule&&(0,_typeof2.default)(rule)==='object'&&rule.required&&!rule.warningOnly){return true;}if(typeof rule==='function'){var ruleEntity=rule(context);return ruleEntity&&ruleEntity.required&&!ruleEntity.warningOnly;}return false;}));var mergedControl=(0,_extends2.default)({},control);var childNode=null;(0,_devWarning.default)(!(shouldUpdate&&dependencies),'Form.Item',"`shouldUpdate` and `dependencies` shouldn't be used together. See https://u.ant.design/form-deps.");if(Array.isArray(mergedChildren)&&hasName){(0,_devWarning.default)(false,'Form.Item','A `Form.Item` with a `name` prop must have a single child element. For information on how to render more complex form items, see https://u.ant.design/complex-form-item.');childNode=mergedChildren;}else if(isRenderProps&&(!(shouldUpdate||dependencies)||hasName)){(0,_devWarning.default)(!!(shouldUpdate||dependencies),'Form.Item','A `Form.Item` with a render function must have either `shouldUpdate` or `dependencies`.');(0,_devWarning.default)(!hasName,'Form.Item','A `Form.Item` with a render function cannot be a field, and thus cannot have a `name` prop.');}else if(dependencies&&!isRenderProps&&!hasName){(0,_devWarning.default)(false,'Form.Item','Must set `name` or use a render function when `dependencies` is set.');}else if(React.isValidElement(mergedChildren)){(0,_devWarning.default)(mergedChildren.props.defaultValue===undefined,'Form.Item','`defaultValue` will not work on controlled Field. You should use `initialValues` of Form instead.');var childProps=(0,_extends2.default)((0,_extends2.default)({},mergedChildren.props),mergedControl);if((0,_ref2.supportRef)(mergedChildren)){childProps.ref=getItemRef(mergedName,mergedChildren);}var triggers=new Set([].concat((0,_toConsumableArray2.default)((0,_util.toArray)(trigger)),(0,_toConsumableArray2.default)((0,_util.toArray)(mergedValidateTrigger))));triggers.forEach(function(eventName){childProps[eventName]=function(){var _a2,_c2;var _a,_b,_c;for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}(_a=mergedControl[eventName])===null||_a===void 0?void 0:(_a2=_a).call.apply(_a2,[mergedControl].concat(args));(_c=(_b=mergedChildren.props)[eventName])===null||_c===void 0?void 0:(_c2=_c).call.apply(_c2,[_b].concat(args));};});childNode=React.createElement(MemoInput,{control:mergedControl,update:mergedChildren},(0,_reactNode.cloneElement)(mergedChildren,childProps));}else if(isRenderProps&&(shouldUpdate||dependencies)&&!hasName){childNode=mergedChildren(context);}else{(0,_devWarning.default)(!mergedName.length||!!noStyle,'Form.Item','`name` is only used for validate React element. If you are using Form.Item as layout display, please remove `name` instead.');childNode=mergedChildren;}return renderLayout(childNode,fieldId,isRequired);});}var FormItem=InternalFormItem;FormItem.useStatus=_useFormItemStatus.default;var _default=FormItem;exports.default=_default;