@td-design/react-native
Version:
react-native UI组件库
76 lines • 2.35 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 { 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