@td-design/react-native-picker
Version:
基于 @td-design/react-native 的 picker 组件
88 lines • 2.77 kB
JavaScript
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 { StyleSheet } from 'react-native';
import { Box, Pressable, SvgIcon, Text, useTheme } from '@td-design/react-native';
import CascaderPicker from '../cascade-picker';
import NormalPicker from '../normal-picker';
import usePicker from '../usePicker';
function PickerItem(_ref) {
let {
placeholder = '请选择',
disabled = false,
cascade,
value,
data,
onChange,
style,
allowClear = true,
hyphen = ',',
activeOpacity = 0.6,
inForm,
...restProps
} = _ref;
const theme = useTheme();
const {
state,
currentText,
handlePress,
handleChange,
handleInputClear,
pickerRef
} = usePicker({
data,
cascade,
value,
onChange,
placeholder,
hyphen
});
const styles = StyleSheet.create({
content: {
flexGrow: 1,
justifyContent: 'flex-end',
alignItems: 'center',
flexDirection: 'row',
paddingHorizontal: theme.spacing[inForm ? 'x0' : 'x1']
},
icon: {
alignItems: 'flex-end'
}
});
const Content = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text, {
variant: "p1",
color: disabled ? 'disabled' : currentText === placeholder ? 'gray300' : 'text',
numberOfLines: 1,
textAlign: 'right',
style: {
flex: 1
}
}, currentText), !disabled && allowClear && !!currentText && currentText !== placeholder && /*#__PURE__*/React.createElement(Pressable, {
activeOpacity: 1,
onPress: handleInputClear,
hitOffset: 10,
style: styles.icon
}, /*#__PURE__*/React.createElement(SvgIcon, {
name: "closecircleo",
color: theme.colors.icon
})));
if (!disabled) return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pressable, {
onPress: handlePress,
activeOpacity: activeOpacity,
style: [styles.content, style]
}, Content), cascade ? /*#__PURE__*/React.createElement(CascaderPicker, _extends({
data: data,
onChange: handleChange,
value: state,
ref: pickerRef
}, restProps)) : /*#__PURE__*/React.createElement(NormalPicker, _extends({
data: data,
onChange: handleChange,
value: state,
ref: pickerRef
}, restProps)));
return /*#__PURE__*/React.createElement(Box, {
style: [styles.content, style]
}, Content);
}
export default PickerItem;
//# sourceMappingURL=index.js.map