@ant-design/react-native
Version:
基于蚂蚁金服移动设计规范的 React Native 组件库
1 lines • 7.1 kB
JavaScript
;"use client";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _typeof=require("@babel/runtime/helpers/typeof");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _useMergedState3=_interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _getLocale=require("../_util/getLocale");var _localeProvider=require("../locale-provider");var _pickerView=_interopRequireDefault(require("../picker-view/picker-view"));var _DisabledContext=_interopRequireDefault(require("../provider/DisabledContext"));var _style=require("../style");var _Popup=_interopRequireDefault(require("./Popup"));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||_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 __rest=void 0&&(void 0).__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 RMCPicker=(0,_react.forwardRef)(function(props,ref){var contextDisabled=(0,_react.useContext)(_DisabledContext.default);var onVisibleChange=props.onVisibleChange,visible=props.visible,children=props.children,okText=props.okText,dismissText=props.dismissText,okButtonProps=props.okButtonProps,dismissButtonProps=props.dismissButtonProps,onChange=props.onChange,onOk=props.onOk,onDismiss=props.onDismiss,onClose=props.onClose,title=props.title,extra=props.extra,_props$disabled=props.disabled,disabled=_props$disabled===void 0?contextDisabled:_props$disabled,format=props.format,value=props.value,columns=props.columns,handleSelect=props.handleSelect,modalType=props.modalType,restProps=__rest(props,["onVisibleChange","visible","children","okText","dismissText","okButtonProps","dismissButtonProps","onChange","onOk","onDismiss","onClose","title","extra","disabled","format","value","columns","handleSelect","modalType"]);var _useMergedState=(0,_useMergedState3.default)(false,{value:visible,onChange:function onChange(v){return onVisibleChange===null||onVisibleChange===void 0?void 0:onVisibleChange(v);}}),_useMergedState2=(0,_slicedToArray2.default)(_useMergedState,2),innerVisible=_useMergedState2[0],setInnerVisible2=_useMergedState2[1];var setInnerVisible=(0,_react.useCallback)(function(bool){!disabled&&setInnerVisible2(bool);},[disabled,setInnerVisible2]);(0,_react.useEffect)(function(){_reactNative.Keyboard.dismiss();},[innerVisible]);var actions=(0,_react.useMemo)(function(){return{toggle:function toggle(){setInnerVisible(!innerVisible);},open:function open(){setInnerVisible(true);},close:function close(){setInnerVisible(false);onClose===null||onClose===void 0?void 0:onClose();},value:value};},[innerVisible,onClose,setInnerVisible,value]);(0,_react.useImperativeHandle)(ref,function(){return actions;});var handleOk=(0,_react.useCallback)(function(){var extend=columns.map(function(column,index){var _a;return(_a=column.find(function(item){return item.value===(value===null||value===void 0?void 0:value[index]);}))!==null&&_a!==void 0?_a:column[0];});var nextValue=extend.map(function(item){return item.value;});onOk===null||onOk===void 0?void 0:onOk(nextValue,{items:extend,columns:columns});onChange===null||onChange===void 0?void 0:onChange(nextValue,{items:extend,columns:columns});actions.close();},[actions,columns,onChange,onOk,value]);var handleDismiss=(0,_react.useCallback)(function(){onDismiss===null||onDismiss===void 0?void 0:onDismiss();actions.close();},[actions,onDismiss]);var _locale=(0,_getLocale.getComponentLocale)(props,(0,_react.useContext)(_localeProvider.LocaleContext),'Picker',function(){return require('./locale/zh_CN');});var _useState=(0,_react.useState)(extra||_locale.extra),_useState2=(0,_slicedToArray2.default)(_useState,2),innerExtra=_useState2[0],setInnerExtra=_useState2[1];(0,_react.useEffect)(function(){if(!children||innerVisible){return;}if(!(value===null||value===void 0?void 0:value.length)){return setInnerExtra(extra||_locale.extra);}setInnerExtra(format===null||format===void 0?void 0:format(columns.reduce(function(cur,next,index){var labelValue=next.find(function(item){return item.value===value[index];});if(labelValue===null||labelValue===void 0?void 0:labelValue.label){cur.push(labelValue.label);}return cur;},[])));},[_locale.extra,children,columns,extra,format,innerVisible,value]);var renderChildren=function renderChildren(){if(!children){return null;}if(typeof children==='function'){return children({value:value,extra:innerExtra||extra||_locale.extra,disabled:disabled,toggle:actions.toggle});}var child=children;var newChildProps={value:value,extra:innerExtra||extra||_locale.extra,disabled:disabled};if(!disabled){newChildProps[props.triggerType]=function(e){if(child.props[props.triggerType]){child.props[props.triggerType](e);}actions.toggle();};}return _react.default.cloneElement(child,newChildProps);};var styles=(0,_style.useTheme)({styles:props.styles,themeStyles:_style2.default});return _react.default.createElement(_react.default.Fragment,null,_react.default.createElement(_Popup.default,{styles:styles,visible:innerVisible,title:title,okText:okText||_locale.okText,onOk:handleOk,dismissText:dismissText||_locale.dismissText,onDismiss:handleDismiss,onClose:actions.close,okButtonProps:okButtonProps,dismissButtonProps:dismissButtonProps,modalType:modalType},innerVisible&&_react.default.createElement(_pickerView.default,(0,_extends2.default)({},restProps,{value:value,columns:columns,handleSelect:handleSelect}))),renderChildren());});RMCPicker.displayName='Picker';RMCPicker.defaultProps={triggerType:'onPress',format:function format(labels){return labels.join(',');}};var _default=RMCPicker;exports.default=_default;