UNPKG

@td-design/react-native

Version:

react-native UI组件库

76 lines 2.35 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 } from 'react'; import { Keyboard, StyleSheet } from 'react-native'; import { useTheme } from '@shopify/restyle'; import { useMemoizedFn, useSms } from '@td-design/rn-hooks'; import helpers from '../helpers'; import Input from '../input'; import Pressable from '../pressable'; import Text from '../text'; const { ONE_PIXEL } = helpers; const CountDown = /*#__PURE__*/forwardRef((_ref, ref) => { let { sendText = '发送验证码', resendText = '重新发送', placeholder = '请输入验证码', count = 60, codeType = 'normal', onBefore, onSend, onEnd, activeOpacity = 0.6, ...restProps } = _ref; const theme = useTheme(); const { sendSms, text, disabled } = useSms({ defaultLabel: sendText, resendLabel: resendText, count, onBefore, onSend, onAfter: onEnd, ref }); const handlePress = useMemoizedFn(() => { Keyboard.dismiss(); sendSms(); }); const styles = StyleSheet.create({ input: { justifyContent: 'center', alignItems: 'center', borderColor: disabled ? theme.colors.disabled : theme.colors.border }, border: { borderWidth: ONE_PIXEL, paddingHorizontal: theme.spacing.x1, paddingVertical: theme.spacing.x1, borderRadius: theme.borderRadii.x1 } }); return /*#__PURE__*/React.createElement(Input, _extends({ ref: ref, placeholder: placeholder }, restProps, { keyboardType: "number-pad", right: /*#__PURE__*/React.createElement(Pressable, { style: [styles.input, codeType === 'border' && styles.border], disabled: disabled, activeOpacity: activeOpacity, onPress: handlePress }, /*#__PURE__*/React.createElement(Text, { variant: 'p2', color: disabled ? 'disabled' : 'primary200' }, text)) })); }); CountDown.displayName = 'CountDown'; export { CountDown }; export { default as CountDownItem } from './CountDownItem'; //# sourceMappingURL=index.js.map