@flatbiz/antd
Version:
100 lines (95 loc) • 3.05 kB
JavaScript
/*! @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