UNPKG

@td-design/react-native

Version:

react-native UI组件库

120 lines 3.63 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, { forwardRef, useImperativeHandle } from 'react'; import { Keyboard } from 'react-native'; import { useTheme } from '@shopify/restyle'; import Box from '../box'; import Brief from '../brief'; import Flex from '../flex'; import helpers from '../helpers'; import Label from '../label'; import Modal from '../modal'; import Pressable from '../pressable'; import SvgIcon from '../svg-icon'; import Text from '../text'; import useVehicleKeyboard from './useVehicleKeyboard'; import VehicleKeyboardModal from './VehicleKeyboardModal'; const { ONE_PIXEL } = helpers; const VehicleKeyboardInput = /*#__PURE__*/forwardRef((_ref, ref) => { let { label, labelPosition = 'left', colon = false, required = false, value, onChange, onCheck, placeholder = '请输入', disabled = false, type, extra, style, inputStyle, allowClear = true, brief, itemHeight, activeOpacity = 0.6, ...restProps } = _ref; const theme = useTheme(); const { currentText, handleSubmit, handleInputClear } = useVehicleKeyboard({ value, onCheck, onChange, placeholder }); const show = () => { Keyboard.dismiss(); Modal.show( /*#__PURE__*/React.createElement(VehicleKeyboardModal, _extends({}, restProps, { type, value: currentText === placeholder ? '' : currentText, onSubmit: handleSubmit, activeOpacity })), { position: 'bottom' }); }; useImperativeHandle(ref, () => { return { focus: show }; }); const InputContent = /*#__PURE__*/React.createElement(Flex, { paddingHorizontal: "x1", borderWidth: ONE_PIXEL, borderColor: "border", borderRadius: "x1", flex: 1 }, /*#__PURE__*/React.createElement(Pressable, { activeOpacity: activeOpacity, onPress: show, style: [itemHeight ? { height: itemHeight, justifyContent: 'center' } : {}, { flex: 1, paddingVertical: theme.spacing.x2 }, style] }, /*#__PURE__*/React.createElement(Text, { variant: "p1", color: currentText === placeholder ? 'gray300' : 'text', style: inputStyle, selectable: true }, currentText)), allowClear && !disabled && !!currentText && currentText !== placeholder && /*#__PURE__*/React.createElement(Pressable, { activeOpacity: 1, onPress: handleInputClear, hitOffset: 10, style: { alignItems: 'center' } }, /*#__PURE__*/React.createElement(SvgIcon, { name: "closecircleo", color: theme.colors.icon })), /*#__PURE__*/React.createElement(Brief, { brief: extra })); if (labelPosition === 'top') return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Label, { label, colon, required }), InputContent, /*#__PURE__*/React.createElement(Brief, { brief: brief })); return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Flex, { alignItems: "center" }, /*#__PURE__*/React.createElement(Label, { colon, label, required }), InputContent), /*#__PURE__*/React.createElement(Brief, { brief: brief })); }); VehicleKeyboardInput.displayName = 'VehicleKeyboardInput'; export default VehicleKeyboardInput; //# sourceMappingURL=VehicleKeyboardInput.js.map