vxe-pc-ui
Version:
A vue based PC component library
1 lines • 3.52 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_ui=require("../../ui"),_vn=require("../../ui/src/vn"),_text=_interopRequireDefault(require("../../text/src/text")),_xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeCountdown",props:{modelValue:[Number,String],format:String,prefixConfig:Object,suffixConfig:Object,size:{type:String,default:()=>(0,_ui.getConfig)().countdown.size||(0,_ui.getConfig)().size}},emits:["update:modelValue","start","end"],setup(c,e){let{slots:l,emit:n}=e;var t=_xeUtils.default.uniqueId();let f=(0,_vue.ref)(),v=(0,_ui.useSize)(c).computeSize,m=(0,_vue.reactive)({currNum:0,secondNum:0}),u={dnTimeout:void 0},o={refElem:f},_=(0,_vue.computed)(()=>{var e=m.secondNum;return 316224e5<=e?["yyyy","MM","dd","HH","mm","ss"]:26784e5<=e?["MM","dd","HH","mm","ss"]:864e5<=e?["dd","HH","mm","ss"]:36e5<=e?["HH","mm","ss"]:6e4<=e?["mm","ss"]:["ss"]}),p=(0,_vue.computed)(()=>{var e=m.currNum,e=_xeUtils.default.getDateDiff(Date.now(),Date.now()+e);return Object.assign(e,{done:!(_xeUtils.default.isBoolean(e.status)?e.status:e.done)})}),x=(0,_vue.computed)(()=>{var e=c.format,t=p.value;let u="";return e&&(u=""+e,_xeUtils.default.each(t,(e,t)=>{u=u.replace(new RegExp(t,"g"),_xeUtils.default.padStart(e,t.length,"0"))})),u}),g=(0,_vue.computed)(()=>Object.assign({},c.prefixConfig,(0,_ui.getConfig)().countdown.prefixConfig)),C=(0,_vue.computed)(()=>Object.assign({},c.suffixConfig,(0,_ui.getConfig)().countdown.suffixConfig)),r={computeSize:v},w={xID:t,props:c,context:e,reactData:m,internalData:u,getRefMaps:()=>o,getComputeMaps:()=>r},i=(e,t,u)=>{n(e,(0,_ui.createEvent)(u,{$carousel:w},t))},s=()=>{var e=_xeUtils.default.toNumber(c.modelValue||0);m.secondNum=e,m.currNum=e},a=()=>{var e=m.currNum;1e3<e?(m.currNum-=1e3,u.dnTimeout=setTimeout(()=>{a()},1e3)):(m.currNum=0,N())};t={dispatchEvent:i};let d=()=>{i("start",{},null),a()},N=()=>{var e=u.dnTimeout;e&&(clearTimeout(e),u.dnTimeout=void 0,i("end",{},null))};Object.assign(w,t,{});return(0,_vue.watch)(()=>c.modelValue,()=>{s(),N(),d()}),(0,_vue.onUnmounted)(()=>{N()}),(0,_vue.onMounted)(()=>{d()}),s(),w.renderVN=()=>{var{prefixConfig:e,suffixConfig:t}=c,u=m.currNum,n=v.value,o=p.value,r=g.value,i=C.value,s=l.prefix,a=l.suffix,d=l.default;return(0,_vue.h)("div",{ref:f,class:["vxe-countdown",o.done?"is--progress":"is-end",{["size--"+n]:n}]},[s||e?(0,_vue.h)("div",{class:"vxe-countdown--prefix"},s?(0,_vn.getSlotVNs)(s({currentValue:u,diffConf:o})):[(0,_vue.h)(_text.default,{content:r.content,icon:r.icon,status:r.status})]):(0,_ui.renderEmptyElement)(w),(0,_vue.h)("div",{class:"vxe-countdown--content"},d?(0,_vn.getSlotVNs)(d({currentValue:u,diffConf:o})):(()=>{var e=c.format,t=_.value;let u=p.value;var n=x.value;return e?[(0,_vue.h)("div",{key:"format",class:"vxe-countdown--content-format"},n)]:t.map((e,t)=>(0,_vue.h)("div",{key:t,class:"vxe-countdown--content-item"},[(0,_vue.h)("div",{class:"vxe-countdown--content-num"},""+(u[e]||0)),(0,_vue.h)("div",{class:"vxe-countdown--content-unit"},(0,_ui.getI18n)("vxe.countdown.formats."+e))]))})()),a||t?(0,_vue.h)("div",{class:"vxe-countdown--suffix"},a?(0,_vn.getSlotVNs)(a({currentValue:u,diffConf:o})):[(0,_vue.h)(_text.default,{content:i.content,icon:i.icon,status:i.status})]):(0,_ui.renderEmptyElement)(w)])},w},render(){return this.renderVN()}});