uv-ui
Version:
基于vue3的移动端组件库
2 lines (1 loc) • 2.17 kB
JavaScript
;const o=require("vue"),k=require("../picker/index.cjs"),r=require("./utils.cjs"),F={name:"UvDatetimePicker"},_=Object.assign(F,{props:{modelValue:{type:String,default:""},minDate:{type:Date,default:()=>new Date(new Date().getFullYear()-10,0,1)},maxDate:{type:Date,default:()=>new Date(new Date().getFullYear()+10,11,31)},mode:{type:String,default:"date"},formatter:{type:Function,default:(d,u)=>u},filter:{type:Function},dateConnector:{type:String,default:"-"},timeConnector:{type:String,default:":"}},emits:["update:modelValue","cancle","confim","change"],setup(d,{expose:u,emit:a}){const e=d,l=o.ref(null),y=()=>l.value.open(),D=()=>l.value.close(),x=()=>a("cancle"),C=t=>a("change",t),M=t=>{if(e.mode==="time")a("update:modelValue",t.replace(/,/g,e.timeConnector));else if(e.mode==="date"||e.mode==="year-month")a("update:modelValue",t.replace(/,/g,e.dateConnector));else if(e.mode==="datetime"){const n=t.split(","),m=n.slice(0,3).join(e.dateConnector),Y=n.slice(3).join(e.timeConnector);a("update:modelValue",`${m} ${Y}`)}else a("update:modelValue",t);a("confim",t)},s=o.ref(e.modelValue||r.getCurrentTime(e.mode)),f=o.ref(s.value.slice(0,4)),p=o.ref(s.value[1]),O=t=>{(e.mode==="date"||e.mode==="datetime")&&(t.index===0?f.value=t.value:t.index===1&&(p.value=t.value))},i=()=>{const t=e.minDate.getFullYear(),n=e.maxDate.getFullYear();return r.getOptions(t,n,"year",e.formatter,e.filter)},c=()=>r.getOptions(1,12,"month",e.formatter,e.filter),g=()=>{const n=r.getMonthEndDay(f.value,p.value);return r.getOptions(1,n,"day",e.formatter,e.filter)},v=()=>r.getOptions(0,23,"hours",e.formatter,e.filter),h=()=>r.getOptions(0,59,"minutes",e.formatter,e.filter),V=o.computed(()=>e.mode==="date"?[i(),c(),g()]:e.mode==="year-month"?[i(),c()]:e.mode==="time"?[v(),h()]:e.mode==="datetime"?[i(),c(),g(),v(),h()]:[]);return u({open:y,close:D}),(t,n)=>(o.openBlock(),o.createBlock(o.unref(k),o.mergeProps({ref_key:"uvPickerRef",ref:l,title:"\u65E5\u671F\u9009\u62E9",list:o.unref(V)},t.$attrs,{modelValue:s.value,"onUpdate:modelValue":n[0]||(n[0]=m=>s.value=m),onConfim:M,onCancle:x,onChange:C,onColumnChange:O}),null,16,["list","modelValue"]))}});module.exports=_;