UNPKG

@flatbiz/antd

Version:
100 lines (95 loc) 3.05 kB
/*! @flatjs/forge MIT @flatbiz/antd */ import { classNames } from '@dimjs/utils/class-names/class-names'; import { hooks } from '@wove/react/hooks'; import { a as _slicedToArray } from './_rollupPluginBabelHelpers-BYm17lo8.js'; import { useState, useMemo, useEffect } from 'react'; import { jsx } from 'react/jsx-runtime'; var SmsCountDown = function SmsCountDown(props) { var _useState = useState(), _useState2 = _slicedToArray(_useState, 2), showMessage = _useState2[0], setShowMessage = _useState2[1]; var _useState3 = useState(false), _useState4 = _slicedToArray(_useState3, 2), running = _useState4[0], setRunning = _useState4[1]; var _useState5 = useState(false), _useState6 = _slicedToArray(_useState5, 2), starting = _useState6[0], setStarting = _useState6[1]; // 初始化设置有效 var initConfig = useMemo(function () { return { sendTxt: props.sendTxt, sentTxt: props.sentTxt, processingTxt: props.processingTxt, format: props.format, autoStart: props.autoStart, totalTicks: props.totalTicks, duration: props.duration }; }, []); var format = initConfig.format; var totalTicks = initConfig.totalTicks; var duration = initConfig.duration; var countdownFnc = hooks.useCountdownCallback(function (num) { var second = num / 1000; if (num > 0) { var _props$onTick; if (!running) { setRunning(true); } setShowMessage(format.replace('{t}', String(second))); (_props$onTick = props.onTick) === null || _props$onTick === void 0 || _props$onTick.call(props, second); } else if (num === 0) { var _props$onTick2; setRunning(false); setStarting(false); (_props$onTick2 = props.onTick) === null || _props$onTick2 === void 0 || _props$onTick2.call(props, second); setShowMessage(initConfig.sentTxt); } }, totalTicks * 1000, { intervalTime: duration }); useEffect(function () { if (!initConfig.autoStart) { setShowMessage(initConfig.sendTxt); } else { countdownFnc(); setStarting(true); setRunning(true); } }, [countdownFnc, initConfig]); var onStart = hooks.useCallbackRef(function () { if (running || starting) return; setStarting(true); setShowMessage(initConfig.processingTxt); void props.onSendRequest().then(function () { setRunning(true); countdownFnc(); }).catch(function () { setShowMessage(initConfig.sendTxt); setStarting(false); }); }); var className = classNames('v-count-down', props.className, { running: running, starting: starting }); return /*#__PURE__*/jsx("div", { className: className, onClick: onStart, children: showMessage }); }; SmsCountDown.defaultProps = { totalTicks: 60, duration: 1000, autoStart: false, format: '{t}s', sendTxt: '获取验证码', sentTxt: '重新获取', processingTxt: '发送中...' }; export { SmsCountDown as S }; //# sourceMappingURL=sms-count-down-DI31OzNh.js.map