tav-ui
Version:
61 lines (56 loc) • 2.29 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var antDesignVue = require('ant-design-vue');
var is = require('../../../utils/is2.js');
var useCountdown = require('../../count-down/src/useCountdown2.js');
require('../../../locales/index2.js');
var types = require('./types2.js');
var pluginVue_exportHelper = require('../../../../_virtual/plugin-vue_export-helper.js');
var transfer = require('../../../locales/transfer2.js');
const _sfc_main = vue.defineComponent({
name: "TaCountButton",
components: { Button: antDesignVue.Button },
props: types.countButtonProps,
setup(props) {
const loading = vue.ref(false);
const { currentCount, isStart, start, reset } = useCountdown.useCountdown(props.count);
const getButtonText = vue.computed(() => {
return !vue.unref(isStart) ? transfer.tavI18n("Tav.countButton.text1") : transfer.tavI18n("Tav.countButton.text2", { count: vue.unref(currentCount) });
});
vue.watchEffect(() => {
props.value === void 0 && reset();
});
async function handleStart() {
const { beforeStartFunc } = props;
if (beforeStartFunc && is.isFunction(beforeStartFunc)) {
loading.value = true;
try {
const canStart = await beforeStartFunc();
canStart && start();
} finally {
loading.value = false;
}
} else {
start();
}
}
return { handleStart, currentCount, loading, getButtonText, isStart };
}
});
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_Button = vue.resolveComponent("Button");
return vue.openBlock(), vue.createBlock(_component_Button, vue.mergeProps(_ctx.$attrs, {
disabled: _ctx.isStart,
loading: _ctx.loading,
onClick: _ctx.handleStart
}), {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(_ctx.getButtonText), 1)
]),
_: 1
}, 16, ["disabled", "loading", "onClick"]);
}
var CountButton = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["render", _sfc_render], ["__file", "/home/runner/work/tav-ui/tav-ui/packages/components/count-button/src/count-button.vue"]]);
exports["default"] = CountButton;
//# sourceMappingURL=count-button2.js.map