@td-design/react-native
Version:
react-native UI组件库
72 lines • 2.28 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, { forwardRef } from 'react';
import { Platform } from 'react-native';
import Flex from '../flex';
import PasscodeItem from './PasscodeItem';
import usePasscode from './usePasscode';
const Passcode = /*#__PURE__*/forwardRef((_ref, ref) => {
let {
style,
keyboardType = 'phone-pad',
focusStyle,
value,
onChange,
inputContainerStyle,
inputStyle,
count = 6,
autoFocus = true,
autoCapitalize = 'none',
clearTextOnFocus = false,
placeholder = '',
secureTextEntry = false,
selectTextOnFocus = true,
onFinish,
...restProps
} = _ref;
const {
otpCode,
inputs,
handleKeyPress,
handleChangeText
} = usePasscode({
onChange,
value,
count,
ref,
onFinish
});
return /*#__PURE__*/React.createElement(Flex, {
justifyContent: 'space-between',
style: style
}, Array(count).fill('').map((_, index) => {
const inputValue = otpCode[`${index}`];
if (!inputs.current[index]) {
inputs.current[index] = /*#__PURE__*/React.createRef();
}
return /*#__PURE__*/React.createElement(PasscodeItem, _extends({
key: index,
accessible: true,
autoCapitalize: autoCapitalize,
autoFocus: index === 0 && autoFocus,
clearTextOnFocus: clearTextOnFocus,
focusStyle: focusStyle,
handleKeyPress: handleKeyPress(index),
handleChangeText: handleChangeText(index),
inputContainerStyle: inputContainerStyle,
inputStyle: inputStyle,
inputValue: inputValue,
keyboardType: keyboardType,
maxLength: Platform.select({
android: 1,
ios: index === 0 ? count : 1
}),
placeholder: placeholder,
ref: inputs.current[index],
secureTextEntry: secureTextEntry,
selectTextOnFocus: selectTextOnFocus
}, restProps));
}));
});
Passcode.displayName = 'Passcode';
export default Passcode;
//# sourceMappingURL=index.js.map