import{j as S,k as o}from"./iframe-B4rglaWu.js";import{a as j,C as P,u as k,U as y}from"./Form-a1c8JcgO.js";import{D as R}from"./dropdown.esm-f2g0kIxn.js";import{F as T,E as U}from"./ErrorMessage-DFhVHOBn.js";import"./preload-helper-PPVm8Dsz.js";import"./componentbase.esm-O764U3c0.js";import"./index.esm-ykNyILbO.js";import"./iconbase.esm-CeJUwaxq.js";import"./index.esm-Bp9biEJw.js";import"./overlayservice.esm-C5VFRSbT.js";import"./tooltip.esm-C17X5ypA.js";import"./portal.esm-9O3HNf5A.js";import"./ripple.esm-Bd7Vm0vw.js";import"./index.esm-WSOT0cb2.js";const w=u=>{const e=S.c(24);let a,r,s,t,n,i,l;e[0]!==u?({className:a,id:s,label:t,required:l,error:r,name:n,...i}=u,e[0]=u,e[1]=a,e[2]=r,e[3]=s,e[4]=t,e[5]=n,e[6]=i,e[7]=l):(a=e[1],r=e[2],s=e[3],t=e[4],n=e[5],i=e[6],l=e[7]);const{control:v}=j();let d;e[8]!==r||e[9]!==s||e[10]!==t||e[11]!==i||e[12]!==l?(d=D=>{const{field:g}=D;return o.jsxs(T,{className:"w-full",children:[o.jsx(R,{id:s,placeholder:"Selecione...",...i,value:g.value,className:"w-full",invalid:!!r,onChange:F=>g.onChange(F.value),onBlur:g.onBlur,name:g.name}),o.jsxs("label",{htmlFor:s,children:[t," ",l?"*":""]})]})},e[8]=r,e[9]=s,e[10]=t,e[11]=i,e[12]=l,e[13]=d):d=e[13];let c;e[14]!==v||e[15]!==n||e[16]!==d?(c=o.jsx(P,{name:n,control:v,render:d}),e[14]=v,e[15]=n,e[16]=d,e[17]=c):c=e[17];let p;e[18]!==r?(p=o.jsx(U,{error:r}),e[18]=r,e[19]=p):p=e[19];let b;return e[20]!==a||e[21]!==c||e[22]!==p?(b=o.jsx(o.Fragment,{children:o.jsxs("div",{className:a,children:[c,p]})}),e[20]=a,e[21]=c,e[22]=p,e[23]=b):b=e[23],b};w.__docgenInfo={description:`Componente de seleção dropdown controlado por react-hook-form.

Versão controlada do UiDropdown que se integra automaticamente com o
FormProvider do react-hook-form. Utiliza o Controller e useFormContext
para gerenciar o estado do campo.
Inclui placeholder padrão "Selecione...".

@remarks
Este componente deve ser usado dentro de um FormProvider do react-hook-form.
Para uso sem formulário, utilize o componente UiDropdown.

@example
\`\`\`tsx
const opcoes = [
  { label: 'Opção 1', value: '1' },
  { label: 'Opção 2', value: '2' },
]

// Dentro de um FormProvider
<UiDropdownControlled
  id="tipo"
  name="tipo"
  label="Tipo"
  options={opcoes}
  required
  error={errors.tipo?.message}
/>
\`\`\`

@see {@link https://primereact.org/dropdown/ | PrimeReact Dropdown}
@see {@link https://react-hook-form.com/docs/usecontroller/controller | React Hook Form Controller}`,methods:[],displayName:"UiDropdownControlled",props:{id:{required:!0,tsType:{name:"string"},description:"Identificador único do campo, usado para associar o label ao input"},label:{required:!0,tsType:{name:"string"},description:"Texto do label flutuante exibido acima do campo"},name:{required:!0,tsType:{name:"string"},description:"Nome do campo no formulário, usado pelo react-hook-form para registro"},className:{required:!1,tsType:{name:"string"},description:"Classes CSS adicionais para o container do componente"},required:{required:!1,tsType:{name:"boolean"},description:"Indica se o campo é obrigatório (adiciona asterisco ao label)"},error:{required:!1,tsType:{name:"string"},description:"Mensagem de erro a ser exibida abaixo do campo"}},composes:["DropdownProps"]};const m=[{label:"São Paulo",value:"SP"},{label:"Rio de Janeiro",value:"RJ"},{label:"Minas Gerais",value:"MG"},{label:"Bahia",value:"BA"},{label:"Paraná",value:"PR"}],$={title:"Components/Form/UiDropdownControlled",component:w,parameters:{layout:"centered"},tags:["autodocs"],decorators:[u=>{const e=k({defaultValues:{estado:null}});return o.jsx(y,{methods:e,onSubmit:a=>console.log(a),children:o.jsx("div",{style:{width:"300px"},children:o.jsx(u,{})})})}],argTypes:{error:{control:"text",description:"Mensagem de erro exibida abaixo do campo"},required:{control:"boolean",description:"Indica se o campo é obrigatório"},disabled:{control:"boolean",description:"Desabilita o campo"},filter:{control:"boolean",description:"Habilita filtro de busca nas opções"},showClear:{control:"boolean",description:"Exibe botão para limpar seleção"}}},f={args:{id:"estado",name:"estado",label:"Estado",options:m}},h={args:{id:"estado-obrigatorio",name:"estado",label:"Estado",options:m,required:!0}},x={args:{id:"estado-erro",name:"estado",label:"Estado",options:m,error:"Selecione um estado",required:!0}},C={args:{id:"estado-filtro",name:"estado",label:"Estado",options:m,filter:!0,filterPlaceholder:"Buscar..."}},E={args:{id:"estado-clear",name:"estado",label:"Estado",options:m,showClear:!0}},q={args:{id:"estado-desabilitado",name:"estado",label:"Estado",options:m,disabled:!0}};f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado',
    name: 'estado',
    label: 'Estado',
    options: opcoes
  }
}`,...f.parameters?.docs?.source}}};h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado-obrigatorio',
    name: 'estado',
    label: 'Estado',
    options: opcoes,
    required: true
  }
}`,...h.parameters?.docs?.source}}};x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado-erro',
    name: 'estado',
    label: 'Estado',
    options: opcoes,
    error: 'Selecione um estado',
    required: true
  }
}`,...x.parameters?.docs?.source}}};C.parameters={...C.parameters,docs:{...C.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado-filtro',
    name: 'estado',
    label: 'Estado',
    options: opcoes,
    filter: true,
    filterPlaceholder: 'Buscar...'
  }
}`,...C.parameters?.docs?.source}}};E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado-clear',
    name: 'estado',
    label: 'Estado',
    options: opcoes,
    showClear: true
  }
}`,...E.parameters?.docs?.source}}};q.parameters={...q.parameters,docs:{...q.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado-desabilitado',
    name: 'estado',
    label: 'Estado',
    options: opcoes,
    disabled: true
  }
}`,...q.parameters?.docs?.source}}};const K=["Default","Required","WithError","WithFilter","WithClearButton","Disabled"];export{f as Default,q as Disabled,h as Required,E as WithClearButton,x as WithError,C as WithFilter,K as __namedExportsOrder,$ as default};
