1import{r as F,j as e,cB as V,X as ee,cE as se,at as ae}from"./index-DdokvTmJ.js";import{r as a,_ as re,T as te}from"./lucide-icons-DcjOfOJe.js";import{paraIsoNaive as ie}from"./SduiAgendamentoDisponibilidade-BVMszQOd.js";const oe="/agendamentos/horarios-disponiveis",ne=400,le=60,O=t=>typeof t=="string"?t:"",ce={com_horarios:"tem horários nesta data",sem_grade:"sem grade cadastrada",nao_atende_no_dia:"não atende neste dia da semana",dia_bloqueado:"dia bloqueado",lotado:"sem horário livre nesta data"};function de(t){const o=t.diagnostico==="dia_bloqueado"&&t.motivo_bloqueio?`dia bloqueado: ${t.motivo_bloqueio}`:ce[t.diagnostico];return`${t.profissional_nome} â ${o}`}function X(t){const o=t.slice(0,10),m=t.slice(11,16);if(o.length!==10)return t;const[r,h,v]=o.split("-");return m?`${v}/${h}/${r} à s ${m}`:`${v}/${h}/${r}`}const fe=({value:t,onChange:o,setField:m,formValues:r,disabled:h=!1,label:v="Data e horário",required:E=!1})=>{var L,B,G;const i=ie(t),d=O(r==null?void 0:r.item_id),u=O(r==null?void 0:r.profissional_id),b=O(r==null?void 0:r.id),g=Number(r==null?void 0:r.duracao_min)>0?Number(r==null?void 0:r.duracao_min):le,[l,y]=a.useState(i.slice(0,10)),[n,D]=a.useState(null),[j,S]=a.useState(!1),[q,$]=a.useState(null),[z,N]=a.useState(!1),I=a.useRef(null),A=a.useRef(!1),M=a.useRef(null);a.useEffect(()=>{const s=i.slice(0,10);s&&s!==l&&y(s)},[i]);const f=!h&&!!l&&(!!d||!!u),R=d&&u&&M.current===u?"":u,J=a.useMemo(()=>[l,d,R,g,b].join("|"),[l,d,R,g,b]);a.useEffect(()=>{if(!f){D(null),$(null),S(!1);return}D(null),$(null),S(!0);const s=setTimeout(()=>{var Q;(Q=I.current)==null||Q.abort();const c=new AbortController;I.current=c;const{client:k,url:Z}=F(oe),w={data:l,duracao_min:g};d&&(w.item_id=d),R&&(w.profissional_id=R),b&&(w.ignorar_id=b),k.get(Z,{params:w,signal:c.signal}).then(_=>{var U;c.signal.aborted||(D((U=_.data)!=null?U:null),S(!1))}).catch(_=>{c.signal.aborted||(_==null?void 0:_.code)!=="ERR_CANCELED"&&($("Não foi possÃvel carregar os horários disponÃveis agora."),S(!1))})},ne);return()=>{var c;clearTimeout(s),(c=I.current)==null||c.abort()}},[J,f]);const x=(L=n==null?void 0:n.slots)!=null?L:[],p=(n==null?void 0:n.permite_hora_livre)===!0,T=a.useMemo(()=>[d,u,g].join("|"),[d,u,g]),C=a.useRef(null),H=a.useRef(!1);a.useEffect(()=>{if(C.current===null){(i||d||u)&&(C.current=T);return}C.current!==T&&(H.current=!0)},[T,i,d,u]),a.useEffect(()=>{if(!(!n||!i||p)&&i.slice(0,10)===n.data){if(x.some(s=>s.inicio===i)){N(!1);return}!H.current&&!A.current||(N(!0),o(""))}},[n,i,p]);const K=a.useCallback(s=>{const c=x.find(k=>k.inicio===s);if(!c){o("");return}N(!1),A.current=!0,M.current=c.profissional_id,m==null||m("profissional_id",c.profissional_id),o(c.inicio)},[x,o,m]),W=a.useCallback(s=>{y(s!=null?s:""),N(!1),i&&o("")},[i,o]),Y=a.useCallback(s=>{!l||!s||(N(!1),A.current=!0,o(`${l}T${s}:00`))},[l,o]);return h?e.jsxs("div",{className:"flex w-full flex-col gap-1.5",children:[e.jsx(P,{label:v,required:E}),e.jsx("p",{className:"text-sm text-[var(--text-1)]",children:i?X(i):"Sem data e horário"})]}):e.jsxs("div",{className:"flex w-full flex-col gap-3",role:"group","aria-label":v,children:[e.jsxs("div",{className:"grid w-full grid-cols-1 gap-3 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex min-w-0 flex-col gap-1.5",children:[e.jsx(P,{label:"Data",required:E}),e.jsx(V,{value:l,onChange:W,placeholder:"Selecione a data"})]}),e.jsxs("div",{className:"flex min-w-0 flex-col gap-1.5",children:[e.jsx(P,{label:"Horário",required:E}),!l&&e.jsx("p",{className:"text-sm text-[var(--text-3)]",children:"Selecione a data para ver os horários."}),!!l&&!d&&!u&&e.jsx("p",{className:"text-sm text-[var(--text-3)]",children:"Escolha o serviço ou o profissional para ver os horários livres."}),f&&j&&e.jsxs("div",{"aria-live":"polite","aria-busy":"true",children:[e.jsx("span",{className:"sr-only",children:"Carregando os horários disponÃveisâ¦"}),e.jsx(ee,{className:"h-10 w-full rounded-[var(--radius-md)]"})]}),f&&!j&&p&&!u&&e.jsx("p",{className:"text-sm text-[var(--text-3)]",children:'Sem grade cadastrada: escolha o profissional em "Quem e o quê" para definir o horário.'}),f&&!j&&p&&!!u&&e.jsxs(e.Fragment,{children:[e.jsx(se,{value:i?i.slice(11,16):"",onCh
1ange:Y,placeholder:"Digite o horário",minuteStep:5}),e.jsx("span",{className:"text-xs text-[var(--text-3)]",children:"Sem grade cadastrada para este atendimento â o horário é livre e o servidor ainda recusa sobreposição."})]}),f&&!j&&!p&&x.length>0&&e.jsxs(e.Fragment,{children:[e.jsx(ae,{items:x,value:i,onChange:s=>K(s||""),getItemId:s=>s.inicio,getItemLabel:s=>`${s.profissional_nome} · ${s.hora}`,getItemDescription:s=>s.grade_do_servico?"Horário exclusivo deste serviço":void 0,isMultiple:!1,entityName:"horário",placeholder:"Selecione um horário livre"}),e.jsxs("span",{className:"text-xs text-[var(--text-3)]",children:[x.length===1?"1 horário livre":`${x.length} horários livres`," em"," ",X(l),"."]})]}),f&&!j&&!p&&x.length===0&&n&&e.jsxs("div",{className:"flex w-full items-start gap-2 rounded-[var(--radius-md)] border border-[var(--warning)] bg-[var(--warning-bg)] px-3 py-2.5",children:[e.jsx(re,{className:"mt-0.5 h-4 w-4 shrink-0 text-[var(--warning)]","aria-hidden":"true"}),e.jsxs("div",{className:"flex min-w-0 flex-col gap-1",children:[e.jsx("p",{className:"text-sm font-medium text-[var(--warning)]",children:n.mensagem||"Sem horário livre nesta data."}),((B=n.profissionais)!=null?B:[]).length>0&&e.jsx("ul",{className:"flex flex-col gap-0.5 text-xs text-[var(--text-2)]",children:((G=n.profissionais)!=null?G:[]).map(s=>e.jsx("li",{children:de(s)},s.profissional_id))})]})]}),q&&e.jsx("p",{className:"text-xs text-[var(--danger)]",children:q})]})]}),z&&e.jsxs("div",{className:"flex w-full items-start gap-2 rounded-[var(--radius-md)] border border-[var(--danger)] bg-[var(--danger-bg)] px-3 py-2.5",role:"alert",children:[e.jsx(te,{className:"mt-0.5 h-4 w-4 shrink-0 text-[var(--danger)]","aria-hidden":"true"}),e.jsx("p",{className:"text-sm text-[var(--danger)]",children:"O horário escolhido não está mais disponÃvel."})]})]})},P=({label:t,required:o})=>e.jsxs("div",{className:"inline-flex items-center gap-1",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--text-1)]",children:t}),o&&e.jsx("span",{className:"text-sm font-medium text-[var(--brand)]",children:"*"})]});export{fe as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.