2026-10-29 15:26:08 +03:30
|
|
|
import{At as e,D as t,E as n,F as r,M as i,Nt as ee,Pt as a,U as o,_ as s,c,d as l,f as u,i as d,k as te,l as f,nt as p,o as m,t as h,u as g,ut as _,v}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{l as y}from"./BasicIcon-DPmc0iaK.js";import{d as b}from"./format-C72AoJ2H.js";import{t as ne}from"./IconProgressClock-C5Z0LodX.js";var re={key:0,class:`form-label`},ie=[`disabled`,`aria-expanded`],x={class:`time-input__icon`,"aria-hidden":`true`},S={class:`time-input__picker`,dir:`ltr`},ae={class:`time-input__column`},oe=[`data-hour`,`aria-selected`,`onClick`],C={class:`time-input__column`},w=[`data-minute`,`aria-selected`,`onClick`],T={class:`time-input__preview`,dir:`ltr`},E={class:`time-input__picker`,dir:`ltr`},se={class:`time-input__column`},ce={class:`time-input__scroll`,role:`listbox`,"aria-label":`ساعت`},le=[`aria-selected`,`onClick`],ue={class:`time-input__column`},de={class:`time-input__scroll`,role:`listbox`,"aria-label":`دقیقه`},fe=[`aria-selected`,`onClick`],pe={class:`time-input__preview`,dir:`ltr`},me={key:2,class:`input-error-text`},he={key:3,class:`form-hint`},D=h(v({__name:`TimeInput`,props:{modelValue:{},label:{},placeholder:{},hint:{},error:{},disabled:{type:Boolean},teleport:{type:Boolean,default:!0}},emits:[`update:modelValue`],setup(h,{emit:v}){let D=h,O=v,k=p(null),A=p(null),j=p(null),M=p(null),N=p(null),P=p(!1),F=p(10),I=p(0),L=p({}),R=Array.from({length:24},(e,t)=>t),z=[0,5,10,15,20,25,30,35,40,45,50,55],B=c(()=>U(D.modelValue??``)),V=c(()=>B.value?W(B.value.hour,B.value.minute):``);o(()=>D.modelValue,e=>{let t=U(e??``);t&&(F.value=t.hour,I.value=H(t.minute))},{immediate:!0}),o(P,async e=>{e&&(await n(),Z(),ve())});function H(e){let t=Math.round(e/5)*5;return t===60?55:t}function U(e){let t=/^(\d{1,2}):(\d{2})$/.exec(e.trim());if(!t)return null;let n=Number(t[1]),r=Number(t[2]);return n<0||n>23||r<0||r>59?null:{hour:n,minute:r}}function W(e,t){return b(`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`)}function G(e,t){return`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`}function ge(){if(B.value){F.value=B.value.hour,I.value=H(B.value.minute);return}let e=new Date;F.value=e.getHours(),I.value=H(e.getMinutes())}function _e(){D.disabled||(P.value||ge(),P.value=!P.value)}function K(){P.value=!1}function q(e){F.value=e}function J(e){I.value=e}function Y(){O(`update:modelValue`,G(F.value,I.value)),K()}function X(){let e=new Date,t=e.getHours(),n=H(e.getMinutes());F.value=t,I.value=n,O(`update:modelValue`,G(t,n)),K()}function ve(){let e=M.value?.querySelector(`[data-hour="${F.value}"]`),t=N.value?.querySelector(`[data-minute="${I.value}"]`);e?.scrollIntoView({block:`center`}),t?.scrollIntoView({block:`center`})}function Z(){let e=A.value;if(!e||!D.teleport)return;let t=e.getBoundingClientRect(),n=Math.min(Math.max(t.width,280),window.innerWidth-16),r=window.innerHeight-t.bottom<276&&t.top>276?t.top-268-8:t.bottom+8;r=Math.max(8,Math.min(r,window.innerHeight-268-8));let i=t.right-n;i=Math.max(8,Math.min(i,window.innerWidth-n-8)),L.value={position:`fixed`,top:`${r}px`,left:`${i}px`,width:`${n}px`,zIndex:`1300`}}function Q(e){let t=e.target;k.value?.contains(t)||j.value?.contains(t)||K()}function $(){P.value&&Z()}return te(()=>{document.addEventListener(`click`,Q),window.addEventListener(`resize`,$),window.addEventListener(`scroll`,$,!0)}),t(()=>{document.removeEventListener(`click`,Q),window.removeEventListener(`resize`,$),window.removeEventListener(`scroll`,$,!0)}),(t,n)=>(i(),u(`div`,{ref_key:`rootRef`,ref:k,class:`form-group time-input`},[h.label?(i(),u(`label`,re,a(h.label),1)):l(``,!0),f(`button`,{ref_key:`triggerRef`,ref:A,type:`button`,class:e([`input time-input__trigger`,{"input-error":h.error,"is-open":P.value}]),disabled:h.disabled,"aria-expanded":P.value,"aria-haspopup":`dialog`,onClick:y(_e,[`stop`])},[f(`span`,{class:e({"time-input__placeholder":!V.value})},a(V.value||h.placeholder||`انتخاب ساعت`),3),f(`span`,x,[s(ne,{size:18})])],10,ie),(i(),g(m,{to:`body`,disabled:!h.teleport||!P.value},[P.value&&h.teleport?(i(),u(`div`,{key:0,ref_key:`panelRef`,r
|