UNPKG

@td-design/react-native-picker

Version:

基于 @td-design/react-native 的 picker 组件

104 lines 3.12 kB
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); } import React from 'react'; import { Modal, StyleSheet } from 'react-native'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { Box, Flex, helpers, Pressable, Text } from '@td-design/react-native'; import WheelPicker from '../components/WheelPicker'; import useNormalPicker from './useNormalPicker'; const { ONE_PIXEL, px } = helpers; function NormalPicker(props, ref) { const { title, data, value, onChange, cancelText = '取消', okText = '确定', activeOpacity = 0.6, ...restProps } = props; const { bottom } = useSafeAreaInsets(); const initialValue = data.length > 0 ? data[0].value : undefined; const { selectedValue, handleOk, handleChange, handleClose, visible } = useNormalPicker({ value, initialValue, onChange, ref }); if (data.length === 0) return null; return /*#__PURE__*/React.createElement(Modal, { visible: visible, statusBarTranslucent: true, animationType: "none", transparent: true }, /*#__PURE__*/React.createElement(GestureHandlerRootView, { style: { flex: 1 } }, /*#__PURE__*/React.createElement(Box, { flex: 1, justifyContent: 'flex-end', style: { backgroundColor: 'rgba(0, 0, 0, 0.5)' } }, /*#__PURE__*/React.createElement(Flex, { height: px(50), borderBottomWidth: ONE_PIXEL, borderBottomColor: "border", backgroundColor: "white", paddingHorizontal: "x3" }, /*#__PURE__*/React.createElement(Pressable, { activeOpacity: activeOpacity, onPress: handleClose, style: styles.cancel }, /*#__PURE__*/React.createElement(Text, { variant: "p0", color: "primary200" }, cancelText)), /*#__PURE__*/React.createElement(Flex.Item, { alignItems: "center" }, /*#__PURE__*/React.createElement(Text, { variant: "p0", color: "text" }, title)), /*#__PURE__*/React.createElement(Pressable, { activeOpacity: activeOpacity, onPress: handleOk, style: styles.submit }, /*#__PURE__*/React.createElement(Text, { variant: "p0", color: "primary200" }, okText))), /*#__PURE__*/React.createElement(Box, { height: px(200), backgroundColor: "white", style: { paddingBottom: bottom } }, /*#__PURE__*/React.createElement(WheelPicker, _extends({}, restProps, { data: data, value: selectedValue, onChange: handleChange })))))); } export default /*#__PURE__*/React.forwardRef(NormalPicker); const styles = StyleSheet.create({ cancel: { justifyContent: 'center', alignItems: 'flex-start' }, submit: { justifyContent: 'center', alignItems: 'flex-end' } }); //# sourceMappingURL=index.js.map