UNPKG

uv-ui

Version:

基于vue3的移动端组件库

2 lines (1 loc) 1.42 kB
"use strict";const s=require("vue"),y=require("../../hooks/useCountDown.cjs");require("./count-down.vue_vue_type_style_index_0_lang.cjs");const H={class:"uv-count-down"},C={name:"UvCountDown"},x=Object.assign(C,{props:{autoStart:{type:Boolean,default:!0},time:{type:[Number,String],default:0},format:{type:String,default:"HH:mm:ss"},millisecond:{type:Boolean,default:!1}},emits:["change","finish"],setup(h,{expose:D,emit:d}){const t=h;function i(e,c=2){let n=e+"";for(;n.length<c;)n="0"+n;return n}function g(e,c){const{days:n}=c;let{hours:l,minutes:u,seconds:o,milliseconds:_}=c;if(e.includes("DD")?e=e.replace("DD",i(n)):l+=n*24,e.includes("HH")?e=e.replace("HH",i(l)):u+=l*60,e.includes("mm")?e=e.replace("mm",i(u)):o+=u*60,e.includes("ss")?e=e.replace("ss",i(o)):_+=o*1e3,e.includes("S")){const r=i(_,3);e.includes("SSS")?e=e.replace("SSS",r):e.includes("SS")?e=e.replace("SS",r.slice(0,2)):e=e.replace("S",r.charAt(0))}return e}const{start:a,pause:m,reset:v,current:p}=y.useCountDown({time:+t.time,millisecond:t.millisecond,onChange:e=>d("change",e),onFinish:()=>d("finish")}),w=s.computed(()=>g(t.format,p.value)),S=()=>{v(+t.time),t.autoStart&&a()};return s.watch(()=>t.time,S,{immediate:!0}),D({start:a,pause:m,reset:S}),(e,c)=>(s.openBlock(),s.createElementBlock("div",H,[s.renderSlot(e.$slots,"default",{timeData:s.unref(p)},()=>[s.createTextVNode(s.toDisplayString(s.unref(w)),1)])]))}});module.exports=x;