vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 4.71 kB
JavaScript
;const e=require("vue");require("../wheel/index.cjs");const V=require("@vexip-ui/config"),l=require("@vexip-ui/utils"),p=require("../wheel/wheel.vue2.cjs"),$=e.defineComponent({name:"TimeWheel",__name:"time-wheel",props:{noArrow:{type:Boolean,default:!1},hour:{type:Number,default:0,validator:r=>r>=0&&r<=23},minute:{type:Number,default:0,validator:r=>r>=0&&r<=59},second:{type:Number,default:0,validator:r=>r>=0&&r<=59},candidate:{default:2,validator:r=>[0,1,2,3].includes(r)},steps:{type:Array,default:()=>[1,1,1],validator:r=>{if(r[0]&&24%r[0]!==0)return!1;for(let d=1;d<3;++d)if(r[d]&&60%r[d]!==0)return!1;return!0}},pointer:{type:Boolean,default:l.USE_TOUCH},disabledTime:{type:Object,default:()=>({})},noTransition:{type:Boolean,default:!1}},emits:["change","toggle-col","update:hour","update:minute","update:second"],setup(r,{expose:d,emit:C}){const i=r,u=C,a=V.useNameHelper("time-picker"),s=e.ref(i.hour),f=e.ref(i.minute),c=e.ref(i.second),b=e.ref([]),w=e.ref([]),h=e.ref([]),g=e.ref(),y=e.ref(),T=e.ref();e.watch(()=>i.steps,x,{immediate:!0}),e.watch(()=>i.hour,n=>{s.value=n}),e.watch(()=>i.minute,n=>{f.value=n}),e.watch(()=>i.second,n=>{c.value=n}),e.watch(s,n=>{u("update:hour",n),u("change","hour",n)}),e.watch(f,n=>{u("update:minute",n),u("change","minute",n)}),e.watch(c,n=>{u("update:second",n),u("change","second",n)}),d({refreshWheel:D});function N(n){return typeof i.disabledTime.hour=="function"&&i.disabledTime.hour(n)}function S(n){return typeof i.disabledTime.minute=="function"&&i.disabledTime.minute(s.value,n)}function k(n){return typeof i.disabledTime.second=="function"&&i.disabledTime.second(s.value,f.value,n)}function x(){const[n=1,t=1,o=1]=i.steps;b.value=l.range(24/n,0,n),w.value=l.range(60/t,0,t),h.value=l.range(60/o,0,o)}function m(n){u("toggle-col",n)}function D(){[g.value,y.value,T.value].forEach(n=>{n==null||n.refreshScroll()})}return(n,t)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(a).be("wheel"))},[e.createVNode(e.unref(p),{ref_key:"hourWheel",ref:g,value:s.value,"onUpdate:value":t[0]||(t[0]=o=>s.value=o),inherit:"",class:e.normalizeClass(e.unref(a).be("hour-wheel")),pointer:r.pointer,arrow:!r.noArrow,candidate:r.candidate,options:b.value,tabindex:"-1","no-transition":r.noTransition,onMouseenter:t[1]||(t[1]=o=>m("hour")),onTouchstart:t[2]||(t[2]=o=>m("hour")),onKeydown:t[3]||(t[3]=e.withModifiers(()=>{},["stop"])),onItemClick:t[4]||(t[4]=o=>s.value=o)},{default:e.withCtx(({option:o,index:v})=>[e.createElementVNode("span",{class:e.normalizeClass([e.unref(a).be("option"),e.unref(a).be("hour"),N(o.value)&&e.unref(a).bem("option","disabled")])},[e.renderSlot(n.$slots,"hour",{option:o,index:v},()=>[e.createTextVNode(e.toDisplayString(e.unref(l.doubleDigits)(o.value)),1)])],2)]),_:3},8,["value","class","pointer","arrow","candidate","options","no-transition"]),e.createVNode(e.unref(p),{ref_key:"minuteWheel",ref:y,value:f.value,"onUpdate:value":t[5]||(t[5]=o=>f.value=o),inherit:"",class:e.normalizeClass(e.unref(a).be("minute-wheel")),pointer:r.pointer,arrow:!r.noArrow,candidate:r.candidate,options:w.value,tabindex:"-1","no-transition":r.noTransition,onMouseenter:t[6]||(t[6]=o=>m("minute")),onTouchstart:t[7]||(t[7]=o=>m("minute")),onKeydown:t[8]||(t[8]=e.withModifiers(()=>{},["stop"])),onItemClick:t[9]||(t[9]=o=>f.value=o)},{default:e.withCtx(({option:o,index:v})=>[e.createElementVNode("span",{class:e.normalizeClass([e.unref(a).be("option"),e.unref(a).be("minute"),S(o.value)&&e.unref(a).bem("option","disabled")])},[e.renderSlot(n.$slots,"minute",{option:o,index:v},()=>[e.createTextVNode(e.toDisplayString(e.unref(l.doubleDigits)(o.value)),1)])],2)]),_:3},8,["value","class","pointer","arrow","candidate","options","no-transition"]),e.createVNode(e.unref(p),{ref_key:"secondWheel",ref:T,value:c.value,"onUpdate:value":t[10]||(t[10]=o=>c.value=o),inherit:"",class:e.normalizeClass(e.unref(a).be("second-wheel")),pointer:r.pointer,arrow:!r.noArrow,candidate:r.candidate,options:h.value,tabindex:"-1","no-transition":r.noTransition,onMouseenter:t[11]||(t[11]=o=>m("second")),onTouchstart:t[12]||(t[12]=o=>m("second")),onKeydown:t[13]||(t[13]=e.withModifiers(()=>{},["stop"])),onItemClick:t[14]||(t[14]=o=>c.value=o)},{default:e.withCtx(({option:o,index:v})=>[e.createElementVNode("span",{class:e.normalizeClass([e.unref(a).be("option"),e.unref(a).be("second"),k(o.value)&&e.unref(a).bem("option","disabled")])},[e.renderSlot(n.$slots,"second",{option:o,index:v},()=>[e.createTextVNode(e.toDisplayString(e.unref(l.doubleDigits)(o.value)),1)])],2)]),_:3},8,["value","class","pointer","arrow","candidate","options","no-transition"])],2))}});module.exports=$;
//# sourceMappingURL=time-wheel.vue2.cjs.map