Docs›Componentes (Admin)›mad-textarea-field
Componentes (Admin)

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" />

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" />