UNPKG

dk-plus

Version:
2 lines (1 loc) 6.55 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("vue"),te=require("./index3.js"),ne=require("./index4.js"),P=require("../../dkdatepicker/src/index5.js"),re=require("./index5.js"),ae=u.defineComponent({name:"DkTimePicker",props:te.dkTimePickerProps,emits:ne.timePickerEmits,components:{DkTimePickerPanel:re.default},setup(t,{emit:o,expose:z}){const A=u.ref(),V=u.ref(),L=u.ref(),C=u.ref({}),a=u.reactive({open:!1,active:"single",text:"",startText:"",endText:""}),g=u.ref(null),x=u.ref([null,null]),v=u.ref(null),f=u.ref([null,null]);let w=!1;const F=u.computed(()=>{const e=String(t.format||""),n=String(t.valueFormat||"");return n==="timestamp"?e.includes("ss"):e.includes("ss")||n.includes("ss")}),I=e=>{if(e===""||e===null||e===void 0)return!0;const n=t.emptyValues;return n?Array.isArray(n)&&n.some(r=>Object.is(r,e)):!1},D=e=>{if(I(e))return null;const n=P.coerceToDate(e);if(n)return n;if(typeof e=="string"){const r=e.trim();if(!r)return null;if(t.valueFormat==="timestamp"){const s=Number(r);return Number.isFinite(s)?new Date(s):null}const l=t.valueFormat?P.parseByPattern(r,t.valueFormat):null;if(l)return l;const i=t.format?P.parseByPattern(r,t.format):null;if(i)return i}return null},y=e=>e?P.formatByPattern(e,t.format||"HH:mm:ss"):"",S=e=>e?t.valueFormat?t.valueFormat==="timestamp"?e.getTime():t.valueFormat?P.formatByPattern(e,t.valueFormat):e:e:t.valueFormat?"":null,U=()=>{const e=t.valueOnClear;if(typeof e=="function")try{return e()}catch{return t.isRange?[]:t.valueFormat?"":null}return e!==void 0?e:t.isRange?[]:t.valueFormat?"":null},b=e=>{if(!e)return!1;const n=e.getHours(),r=e.getMinutes(),l=e.getSeconds(),i=typeof t.disabledHours=="function"?t.disabledHours():[],s=typeof t.disabledMinutes=="function"?t.disabledMinutes(n):[],d=typeof t.disabledSeconds=="function"?t.disabledSeconds(n,r):[],k=F.value?Array.isArray(d)&&d.includes(l):!1;return Array.isArray(i)&&i.includes(n)||Array.isArray(s)&&s.includes(r)||k},q=()=>{if(t.isRange){a.startText=y(x.value[0]),a.endText=y(x.value[1]);return}a.text=y(g.value)},_=()=>{if(w=!0,t.isRange){const e=Array.isArray(t.modelValue)?t.modelValue:[],n=D(e[0]),r=D(e[1]);x.value=[n,r]}else{const e=Array.isArray(t.modelValue)?t.modelValue[0]:t.modelValue;g.value=D(e)}q(),w=!1};u.watch(()=>t.modelValue,_,{immediate:!0});const R=()=>{if(!t.teleported||!V.value)return;const e=V.value.getBoundingClientRect(),n=t.isRange?F.value?560:420:F.value?280:210,r=t.isRange?352:332,l=4,i=[t.placement,...t.fallbackPlacements||[]].filter(Boolean),s=(T,c)=>T>=0&&c>=0&&T+r<=window.innerHeight&&c+n<=window.innerWidth;let d=e.bottom+l,k=e.left;for(const T of i){if(T==="top"){const c=e.top-l-r,m=e.left;if(s(c,m)){d=c,k=m;break}}if(T==="bottom"){const c=e.bottom+l,m=e.left;if(s(c,m)){d=c,k=m;break}}if(T==="right"){const c=e.top,m=e.right+l;if(s(c,m)){d=c,k=m;break}}if(T==="left"){const c=e.top,m=e.left-l-n;if(s(c,m)){d=c,k=m;break}}}const ee=Math.max(12,Math.min(n-12,e.left+e.width/2-k));C.value={position:"fixed",top:`${Math.max(0,d)}px`,left:`${Math.max(0,k)}px`,zIndex:2023,"--dk-time-picker-arrow-left":`${ee}px`}},E=e=>{const n=e.target,r=A.value,l=L.value;r&&r.contains(n)||l&&l.contains(n)||h(!1)},N=()=>{if(t.isRange){const[r,l]=x.value,i=t.defaultValue,s=Array.isArray(i)?i[0]:i,d=Array.isArray(i)?i[1]:i;f.value=[r||(s instanceof Date?s:null),l||(d instanceof Date?d:null)],a.startText=y(f.value[0]),a.endText=y(f.value[1]);return}const e=t.defaultValue,n=g.value||(e instanceof Date?e:null);v.value=n,a.text=y(n)},B=()=>{t.disabled||t.readonly||a.open||(a.open=!0,N(),o("visible-change",!0),u.nextTick(()=>{R()}),document.addEventListener("click",E))},h=e=>{!a.open||(a.open=!1,o("visible-change",!1),document.removeEventListener("click",E),e||(q(),v.value=g.value,f.value=[x.value[0],x.value[1]]))},$=e=>{if(e.key==="Escape"){j();return}if(e.key==="Enter"){if(t.disabled||t.readonly)return;if(a.open){O();return}if(!t.editable||t.isRange)return;const n=String(a.text||"").trim();if(!n)return;const r=P.parseByPattern(n,t.format||"HH:mm:ss");if(!r||b(r))return;v.value=r,g.value=r;const l=S(r);o("update:modelValue",l),o("change",l)}},H=e=>{B(),o("focus",e)},W=e=>{o("blur",e)},K=e=>{if(!w&&(a.text=String(e!=null?e:""),!(!t.editable||t.disabled||t.readonly)&&!a.open)){const n=a.text.trim();if(!n)return;const r=P.parseByPattern(n,t.format||"HH:mm:ss");r&&!b(r)&&(g.value=r)}},G=e=>{w||(a.startText=String(e!=null?e:""))},J=e=>{w||(a.endText=String(e!=null?e:""))},Q=e=>{a.active="start",H(e)},X=e=>{a.active="end",H(e)},Y=e=>{t.disabled||t.readonly||b(e)||(v.value=e,a.text=y(e))},Z=e=>{t.disabled||t.readonly||b(e)||(f.value=[e,f.value[1]],a.startText=y(e),a.active="end")},p=e=>{t.disabled||t.readonly||b(e)||(f.value=[f.value[0],e],a.endText=y(e))},O=()=>{if(t.disabled||t.readonly)return;if(t.isRange){const[n,r]=f.value;if(b(n)||b(r))return;x.value=[n,r];const l=[S(n),S(r)];o("update:modelValue",l),o("change",l),h(!0);return}if(b(v.value))return;g.value=v.value;const e=S(v.value);o("update:modelValue",e),o("change",e),h(!0)},j=()=>{h(!1)},M=()=>{if(t.disabled||t.readonly)return;const e=U();t.isRange?(x.value=[null,null],f.value=[null,null],a.startText="",a.endText="",o("update:modelValue",Array.isArray(e)?e:[]),o("change",Array.isArray(e)?e:[])):(g.value=null,v.value=null,a.text="",o("update:modelValue",e),o("change",e)),o("clear"),h(!0)};return u.watch(()=>a.text,(e,n)=>{w||!t.editable||t.readonly||t.isRange||n&&!e&&M()}),u.watch(()=>[a.startText,a.endText],(e,n)=>{if(w||!t.editable||t.readonly||!t.isRange)return;const[r,l]=e,[i,s]=n;(i||s)&&!r&&!l&&M()}),u.watch(()=>t.disabled,e=>{e&&h(!1)}),u.onMounted(()=>{window.addEventListener("resize",R),window.addEventListener("scroll",R,!0)}),u.onBeforeUnmount(()=>{document.removeEventListener("click",E),window.removeEventListener("resize",R),window.removeEventListener("scroll",R,!0)}),z({focus:()=>{var n,r;const e=(n=A.value)==null?void 0:n.querySelector("input");(r=e==null?void 0:e.focus)==null||r.call(e)},blur:()=>{var n,r;const e=(n=A.value)==null?void 0:n.querySelector("input");(r=e==null?void 0:e.blur)==null||r.call(e)},handleOpen:()=>B(),handleClose:()=>h(!1)}),{rootRef:A,triggerRef:V,dropdownRef:L,dropdownStyle:C,showSeconds:F,...u.toRefs(a),draft:v,draftRange:f,openDropdown:B,closeDropdown:h,onKeydown:$,onPickSingleDraft:Y,onPickRangeDraftStart:Z,onPickRangeDraftEnd:p,commit:O,cancel:j,onClear:M,onFocus:H,onBlur:W,onInputUpdate:K,onStartInputUpdate:G,onEndInputUpdate:J,onStartFocus:Q,onEndFocus:X}}});exports.default=ae;