UNPKG

@ant-design/react-native

Version:

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

1 lines 9.9 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 _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _useMergedState5=_interopRequireDefault(require("rc-util/es/hooks/useMergedState"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _context=require("../form/context");var _icon=_interopRequireDefault(require("../icon"));var _DisabledContext=_interopRequireDefault(require("../provider/DisabledContext"));var _style=require("../style");var _view=_interopRequireDefault(require("../view"));var _style2=_interopRequireDefault(require("./style"));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 __rest=this&&this.__rest||function(s,e){var t={};for(var p in s){if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];}if(s!=null&&typeof Object.getOwnPropertySymbols==="function")for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++){if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]];}return t;};var InternalInput=function InternalInput(props,ref){var contextDisabled=_react.default.useContext(_DisabledContext.default);var allowClear=props.allowClear,_props$disabled=props.disabled,disabled=_props$disabled===void 0?contextDisabled:_props$disabled,readOnly=props.readOnly,_props$editable=props.editable,editable=_props$editable===void 0?!readOnly:_props$editable,maxLength=props.maxLength,prefix=props.prefix,showCount=props.showCount,customStatus=props.status,style=props.style,inputStyle=props.inputStyle,suffix=props.suffix,_props$themeStyles=props.themeStyles,themeStyles=_props$themeStyles===void 0?_style2.default:_props$themeStyles,type=props.type,rest=__rest(props,["allowClear","disabled","readOnly","editable","maxLength","prefix","showCount","status","style","inputStyle","suffix","themeStyles","type"]);var theme=_react.default.useContext(_style.ThemeContext);var styles=(0,_style.useTheme)({styles:props.styles,themeStyles:themeStyles});var timer=_react.default.useRef();var _React$useState=_react.default.useState(),_React$useState2=(0,_slicedToArray2.default)(_React$useState,2),focus=_React$useState2[0],setFocus=_React$useState2[1];_react.default.useEffect(function(){var keyboardHide=_reactNative.Keyboard.addListener('keyboardDidHide',function(){if(focus){_reactNative.Keyboard.dismiss();}});return function(){keyboardHide.remove();if(timer.current){clearTimeout(timer.current);}};},[focus]);var inputRef=_react.default.useRef(null);_react.default.useImperativeHandle(ref,function(){return inputRef.current;});var _useMergedState=(0,_useMergedState5.default)('',{value:props.value,defaultValue:props.defaultValue,postState:function postState(value){return props.value===undefined?value:props.value;}}),_useMergedState2=(0,_slicedToArray2.default)(_useMergedState,2),innerValue=_useMergedState2[0],setInnerValue=_useMergedState2[1];var cloneEventRef=(0,_react.useRef)();var resolveOnChange=function resolveOnChange(text,e,onChange){if(!e){return;}e.nativeEvent.text=text;e.target.value=text;onChange===null||onChange===void 0?void 0:onChange(e);};var pushInputValue=(0,_react.useCallback)(function(value){var _a;resolveOnChange(value,cloneEventRef.current,props.onChange);(_a=props.onChangeText)===null||_a===void 0?void 0:_a.call(props,value);setInnerValue(value);},[props,setInnerValue]);var maxLengthConfig=(0,_react.useMemo)(function(){if(maxLength===undefined||isNaN(+maxLength)||+maxLength<=0){return{show:false,value:0};}return{show:true,value:maxLength};},[maxLength]);var _useMergedState3=(0,_useMergedState5.default)(undefined,{value:customStatus}),_useMergedState4=(0,_slicedToArray2.default)(_useMergedState3,2),innerStatus=_useMergedState4[0],setInnerStatus=_useMergedState4[1];(0,_react.useEffect)(function(){var length=(innerValue===null||innerValue===void 0?void 0:innerValue.length)||0;if(maxLengthConfig.show&&length>maxLengthConfig.value){setInnerStatus('error');}else{setInnerStatus(undefined);}},[innerValue===null||innerValue===void 0?void 0:innerValue.length,maxLengthConfig.show,maxLengthConfig.value,setInnerStatus]);var _useContext=(0,_react.useContext)(_context.FormItemInputContext),contextStatus=_useContext.status,hasFeedback=_useContext.hasFeedback,feedbackIcon=_useContext.feedbackIcon;var statusClassName=(0,_react.useMemo)(function(){var mergedStatus=innerStatus||contextStatus;if(mergedStatus==='error'){return styles.error;}if(mergedStatus==='warning'){return styles.warning;}return undefined;},[contextStatus,innerStatus,styles.error,styles.warning]);var formatText=(0,_react.useCallback)(function(text){if(type==='number'){text=text.replace(/[^0-9.]/g,'');}return text;},[type]);var restProps=_react.default.useMemo(function(){var res=(0,_extends2.default)({},rest);if(typeof rest.onChange==='function'){res.onChange=function(e){var text=formatText(e.nativeEvent.text);cloneEventRef.current=e;resolveOnChange(text,e,rest.onChange);};}if(typeof rest.onChangeText==='function'){res.onChangeText=function(text){var _a;return(_a=rest.onChangeText)===null||_a===void 0?void 0:_a.call(rest,formatText(text));};}if(rest.value===undefined&&(allowClear||maxLengthConfig.show||showCount||type==='number')){res.value=innerValue;res.onChangeText=function(text){var _a;var value=formatText(text);(_a=rest.onChangeText)===null||_a===void 0?void 0:_a.call(rest,value);setInnerValue(value);};}if(allowClear||maxLengthConfig.show){res.onFocus=function(e){var _a;setFocus(true);(_a=props.onFocus)===null||_a===void 0?void 0:_a.call(props,e);};res.onBlur=function(e){var _a;if(maxLengthConfig.show&&maxLengthConfig.value<(innerValue===null||innerValue===void 0?void 0:innerValue.length)){pushInputValue(innerValue.slice(0,maxLengthConfig.value));}timer.current=setTimeout(function(){setFocus(false);},61);(_a=props.onBlur)===null||_a===void 0?void 0:_a.call(props,e);};}return res;},[allowClear,formatText,innerValue,maxLengthConfig.show,maxLengthConfig.value,props,pushInputValue,rest,setInnerValue,showCount,type]);var keyboardType=(0,_react.useMemo)(function(){if(type==='number'){return'numeric';}return props.keyboardType;},[props.keyboardType,type]);var prefixDom=(0,_react.useMemo)(function(){if(prefix){return _react.default.createElement(_view.default,{style:[styles.prefix,statusClassName]},prefix);}},[prefix,statusClassName,styles.prefix]);var clearIconDom=(0,_react.useMemo)(function(){if(!disabled&&editable&&allowClear&&innerValue&&focus){return _react.default.createElement(_reactNative.TouchableOpacity,{style:styles.clearIcon,onPressIn:function onPressIn(){return setFocus(true);},onPressOut:function onPressOut(){return pushInputValue('');},hitSlop:{top:5,left:5,bottom:5,right:5}},allowClear.clearIcon||_react.default.createElement(_icon.default,{name:"close",color:'white',size:13}));}},[allowClear,disabled,editable,focus,innerValue,pushInputValue,styles.clearIcon]);var showCountDom=(0,_react.useMemo)(function(){var length=(innerValue===null||innerValue===void 0?void 0:innerValue.length)||0;var node;if((0,_typeof2.default)(showCount)==='object'&&typeof showCount.formatter==='function'){node=showCount.formatter({value:innerValue,count:length,maxLength:maxLengthConfig.value});}else if(showCount){if(maxLengthConfig.show){node="".concat(length," / ").concat(maxLengthConfig.value);}else{node=length;}}if(_react.default.isValidElement(node)){return node;}if(node!==undefined){return _react.default.createElement(_reactNative.Text,{style:[styles.showCount,statusClassName]},node);}},[innerValue,maxLengthConfig.show,maxLengthConfig.value,showCount,statusClassName,styles.showCount]);var suffixDom=(0,_react.useMemo)(function(){if(hasFeedback||suffix){return _react.default.createElement(_react.default.Fragment,null,Boolean(suffix)&&_react.default.createElement(_view.default,{style:[styles.suffix,statusClassName]},suffix),hasFeedback&&feedbackIcon);}},[feedbackIcon,hasFeedback,statusClassName,styles.suffix,suffix]);return _react.default.createElement(_reactNative.View,{style:[styles.container,style]},prefixDom,_react.default.createElement(_reactNative.TextInput,(0,_extends2.default)({editable:!disabled&&editable,placeholderTextColor:theme.color_text_placeholder,underlineColorAndroid:"transparent",secureTextEntry:type==='password',onSubmitEditing:_reactNative.Keyboard.dismiss},restProps,{keyboardType:keyboardType,style:[styles.input,statusClassName,inputStyle],ref:inputRef})),clearIconDom,showCountDom,suffixDom);};var Input=_react.default.forwardRef(InternalInput);Input.displayName='Input';var _default=_react.default.memo(Input);exports.default=_default;