mad-textarea-field
Textarea multilinha integrado ao MadForm.
Campo de texto multilinha. Integra com MadForm via mad:model e registra-se no MadFormRegistry como tipo textarea.
Props
| Prop | Tipo | Default | Descricao |
|---|---|---|---|
| name | string | '' | Nome do campo (obrigatorio) |
| label | string | '' | Label do campo |
| value | string | '' | Valor inicial (sobrescrito pelo MadRenderContext se houver) |
| placeholder | string | '' | Placeholder |
| rows | int | 3 | Numero de linhas visiveis |
| hint | string | '' | Texto de ajuda |
| error | string | '' | Mensagem de erro |
| required | bool | false | Campo obrigatorio |
| disabled | bool | false | Campo desabilitado |
| readonly | bool | false | Somente leitura (postado no submit) |
| style | string | '' | Estilo inline aplicado no <textarea> |
| attrs | string | '' | Atributos HTML extras |
| width | string | '' | Largura do .mad-field (numero puro = px) |
| max-width | string | '' | Largura maxima do .mad-field |
| height | string | '' | Altura do <textarea> (nao do wrapper) — numero puro = px |
O id nao e prop: e gerado automaticamente como mad_{name}_{aleatorio} e
usado no for do label. O mad:model tambem entra sozinho (a menos que voce ja
passe mad:model/data-mad-model em attrs).
readonly tambem pode vir do servidor: MadRenderContext::isReadonly($name)
liga o readonly sem a prop, e isHidden($name) adiciona mad-hidden no field.
Altura (height)
height vai no <textarea>, nao no .mad-field — o wrapper carrega label e
hint, entao altura nele espremeria a caixa em vez de cresce-la. Valor e
normalizado por CssUnits (numero puro vira px).
<mad-textarea-field name="obs" label="Observacoes" height="220" />
<mad-textarea-field name="obs" label="Observacoes" height="30vh" />
Uso basico
<mad-textarea-field name="obs" label="Observacoes" />
Com rows e placeholder
<mad-textarea-field name="descricao" label="Descricao"
:rows="5" placeholder="Descreva aqui..." />
Required + hint
<mad-textarea-field name="motivo" label="Motivo" required
hint="Explique brevemente o motivo da solicitacao" />
Disabled (so leitura)
<mad-textarea-field name="dados_csv" label="Dados do CSV" disabled :rows="8" />
Dentro de form com i18n
<mad-form submit="onSave">
<mad-form-grid :cols="1">
<mad-textarea-field name="resumo" :label="__('doc.news_summary')" />
<mad-textarea-field name="conteudo" :label="__('doc.news_content')" :rows="8" />
</mad-form-grid>
<mad-form-actions>
<mad-btn type="submit" variant="primary" icon="save">Salvar</mad-btn>
</mad-form-actions>
</mad-form>
Dentro de field-list / detail-form
<mad-detail-form name="itens" model="PedidoItem" foreign-key="pedido_id">
<mad-input-field name="produto" label="Produto" />
<mad-textarea-field name="obs" label="Observacoes" :rows="2" />
</mad-detail-form>
NUNCA fazer
{{-- ERRADO: textarea nativo perde mad:model e MadForm nao captura --}}
<textarea name="obs" rows="3"></textarea>
{{-- CERTO --}}
<mad-textarea-field name="obs" label="Observacoes" />
{{-- ERRADO: input-field com type="textarea" — nao existe --}}
<mad-input-field name="obs" label="Obs" type="textarea" />
{{-- CERTO --}}
<mad-textarea-field name="obs" label="Obs" />
{{-- ERRADO: {{ __() }} em atributo de componente — escapa aspas --}}
<mad-textarea-field name="obs" label="{{ __('mad.notes') }}" />
{{-- CERTO: bind PHP --}}
<mad-textarea-field name="obs" :label="__('mad.notes')" />
{{-- ERRADO: rows como string sem :prop — vira "3" mas perde semantica --}}
<mad-textarea-field name="obs" label="Obs" rows="3" />
{{-- CERTO: usar :rows quando passar int --}}
<mad-textarea-field name="obs" label="Obs" :rows="3" />
Para HTML rico (negrito, listas, links)
Use <mad-html-editor-field> em vez de textarea quando precisar de formatacao.
{{-- ERRADO: textarea para conteudo formatado --}}
<mad-textarea-field name="conteudo_html" label="Conteudo" :rows="20" />
{{-- CERTO --}}
<mad-html-editor-field name="conteudo_html" label="Conteudo" />