Field Campo de Formulário
Introdução
Um controle de entrada fundamental projetado para gerenciar formulários de forma limpa e acessível. Ele agrega rótulos de entrada, textos de ajuda contextuais, estados de validação de erro dinâmicos e verificação de regras baseadas em JS personalizadas em uma interface coesa e amigável para desenvolvedores.
O componente Field está totalmente integrado como um bloco interativo field no Page Builder. Isso permite que criadores de conteúdo e designers redigem campos, coloquem entradas de formulário HTML personalizadas e forneçam lógica de validação instantânea do lado do cliente diretamente do Sveltia CMS sem escrever código de layout repetitivo.
Uso
Estes exemplos ilustram como os editores de conteúdo vinculam e configuram estruturas de campos de formulário.
1. Campo de Entrada Padrão
Um campo de texto padrão com um rótulo companheiro, um espaço reservado e um texto de ajuda descritivo localizado diretamente abaixo do elemento de entrada.
{
"type": "field",
"label": "Username",
"placeholder": "e.g. jules_architect",
"helperText": "Choose a unique public username.",
"name": "username",
"interactive": true
}
2. Entrada Dinâmica com Validação do Lado do Cliente
Utiliza lógica de validação personalizada. Quando o usuário insere menos de 5 caracteres ou pula o símbolo @, uma mensagem de erro é exibida e anunciada automaticamente de forma dinâmica.
{
"type": "field",
"label": "Email Address",
"placeholder": "architect@domain.com",
"defaultValue": "invalid-email",
"validator": "(value) => value.includes('@') || 'Must be a valid email containing \'@\''",
"name": "email",
"interactive": true
}
3. Campos de Opção Obrigatórios e Desabilitados
Demonstra estilos de campos de formulário sob estados de bloco HTML padrão. Isso ajuda os redatores de conteúdo a visualizar a aparência dos campos quando são obrigatórios (indicador de asterisco) ou bloqueados devido a permissões.
{
"type": "field",
"label": "Secret Key",
"defaultValue": "SUPER_SECURE_TOKEN",
"readOnly": true,
"required": true,
"interactive": true
}
Props
| Propriedade | Tipo de Campo CMS | Padrão | Descrição / Opções Suportadas |
|---|---|---|---|
Texto do Rótulo (label) | string | - | O título visual ou descrição posicionado diretamente acima do elemento de entrada. |
Nome (name) | string | - | Atributo name HTML padrão enviado com envios de formulário. |
Espaço Reservado (placeholder) | string | - | Texto de espaço reservado claro mostrado dentro da entrada quando está completamente vazio. |
Texto de Ajuda (helperText) | string | - | Texto de dica ou instrução contextual impresso abaixo do campo de entrada. |
Texto de Erro (errorText) | string | - | Substituição manual da mensagem de erro. Aciona estilo inválido e anúncios do leitor de tela. |
Valor Padrão (defaultValue) | string | - | Pré-preenche a entrada ao carregar a página. Força o modo de ilha interativa do lado do cliente. |
Obrigatório (required) | boolean | false | Renderiza um indicador de asterisco vermelho sinalizando que esta entrada não deve ser deixada vazia. |
Desabilitado (disabled) | boolean | false | Impede qualquer digitação ou interação do cursor e escurece todo o campo. |
Somente Leitura (readOnly) | boolean | false | Mantém o valor selecionável e focável por tab, mas impede a edição do texto. |
Estado Inválido (invalid) | boolean | false | Força explicitamente o campo a um estado de erro, destacando as bordas em vermelho. |
Expressão do Validador (validator) | string | - | Expressão de função JavaScript avançada que avalia a entrada de string. Reconstruída no lado do cliente via new Function().Exemplo: `(value) => value.includes('@') |
Forçar Interativo (interactive) | boolean | true | Garante a hidratação do lado do cliente como uma ilha interativa para suportar validação de usuário em tempo real. |
Notas do Desenvolvedor e Acessibilidade
- Hidratação de Comutador Inteligente: Por padrão, se o campo for uma apresentação estática padrão sem gatilhos de validação personalizados ou vinculações dinâmicas, ele permanece como marcação SSR estática leve. Fornecer qualquer um de
validator,defaultValueou"interactive": truepromove automaticamente o elemento a uma ilha de cliente totalmente hidratada. - Conexões Descritivas WAI-ARIA: O elemento wrapper gerencia dinamicamente as conexões aria. O elemento de entrada registra automaticamente
aria-describedbyapontando para os IDs exatos gerados tanto do slot de texto de ajuda quanto do slot de texto de erro. - Prevenção de Vazamento de Atributos: A primitiva
FieldRootinclui filtros integrados para evitar que propriedades de entrada padrão (comoplaceholder,autocompleteouname) vazem para a<div>wrapper externa, garantindo uma saída HTML completamente válida e limpa. - Contexto Composicional: O componente Field suporta uma arquitetura composicional. Ao aninhar subelementos (como elementos
Textareapersonalizados ou elementos select personalizados) como filhos no Page Builder, eles consomem automaticamente o contexto compartilhado do Field externo para resolver atributos de validação apropriados.