Início rápido da instalação Pro 🚀

Exemplo básico

A entrada repeater é para repetir grupos de entradas. Você pode usar qualquer número de entradas FormKit dentro de um repeater, e os repeaters podem ser infinitamente aninhados.

Por padrão, a entrada repeater tem a capacidade de deslocar, adicionar e remover itens:

Carregar exemplo ao vivo

Diferentemente da maioria dos outros tipos de entrada FormKit, a entrada repeater é do tipo list. Você pode ver acima que a propriedade users (o valor do nosso repeater) é um array.

Exemplo de esquema

Como todas as outras entradas FormKit, o Repeater pode ser usado em um formulário escrito no esquema schema do FormKit.

Carregar exemplo ao vivo

Atributos do botão de adicionar

No exemplo anterior, o botão 'Adicionar Usuários' é fornecido por padrão, e o rótulo do botão é derivado do label do repeater. Podemos personalizar o rótulo usando a propriedade add-button e definindo-a como uma string, ou removê-la completamente definindo-a como false. Alternativamente, semelhante à propriedade submit-attrs nos formulários FormKit, podemos fornecer um objeto de atributos a serem aplicados ao botão com add-attrs. Neste exemplo, mudamos o rótulo do repeater de Add Users para Meu rótulo personalizado usando a propriedade add-label:

Carregar exemplo ao vivo

Mínimo/máximo

Como muitas outras entradas FormKit, o repeater vem com as propriedades min e max. Você pode usar essas propriedades para limitar o número de itens a serem adicionados ou removidos.

Carregar exemplo ao vivo

Estado vazio

Quando um repeater é permitido estar vazio, tendo sua propriedade min definida como 0 e não tendo valores, você pode controlar o conteúdo renderizado no estado vazio usando o slot empty.

Carregar exemplo ao vivo

Controles

A entrada repeater por padrão vem com um conjunto de controles que permitem deslocar, adicionar e remover itens. Você pode controlar a visibilidade desses controles definindo as propriedades upControl, downControl, insertControl e removeControl como true ou false.

Carregar exemplo ao vivo

Controles personalizados

Com o repetidor do FormKit, você não está restrito aos nossos controles padrão. Você pode manipular o repetidor da maneira que quiser:

Carregar exemplo ao vivo

Definindo erros

Você pode definir erros em um repetidor ou em qualquer item repetível usando notação por ponto. Aqui estamos usando o setErrors auxiliar, mas existem outros métodos também:

// o 2º argumento de setErrors são erros no nível do input
formNode.setErrors( null, // sem erros no formulário,
  {
    // erro no campo repetidor:
    'teamMembers': ['Houve um problema com 1 dos seus membros da equipe.']

    // erro em um item específico do repetidor:
    'teamMembers.1.email': ['emily@formkit.com já está em uma equipe.'],
  }
)

Lembre-se, seu manipulador de envio recebe o node central do formulário e pode ser usado para definir erros convenientemente em profundidade. Leia mais sobre o tratamento de erros aqui. Aqui está um exemplo de um backend fictício retornando erros tanto para o repetidor quanto para um filho:

Carregar exemplo ao vivo

Props & Atributos

PropTypePadrãoDescrição
add-labelstringnullUsado para alterar o rótulo do botão de adicionar.
add-attrsobject[object Object]Usado para aplicar atributos ao elemento do botão de adicionar.
add-buttonbooleantrueCondicional para mostrar ou não o botão de adicionar.
up-controlbooleantrueCondicional para mostrar ou não o controle de subir.
down-controlbooleantrueCondicional para mostrar ou não o controle de descer.
insert-controlbooleanfalseCondicional para mostrar ou não o controle de inserir.
remove-controlbooleantrueCondicional para mostrar ou não o controle de remover.
minNumber1O número mínimo de filhos.
maxNumbernullO número máximo de filhos.
Mostrar Universal props
configObject{}Opções de configuração a serem fornecidas para o nó do input e qualquer nó descendente deste input.
delayNumber20Número de milissegundos para debounce do valor do input antes de despachar o commit hook.
dirtyBehaviorstringtouchedDetermina como o indicador "dirty" deste input é definido. Pode ser configurado como touched ou compare - touched (o padrão) é mais performático, mas não detectará quando o formulário corresponder novamente ao seu estado inicial.
errorsArray[]Array de strings para exibir como mensagens de erro neste campo.
helpString''Texto para o texto de ajuda associado ao input.
idStringinput_{n}O ID único do input. Fornecer um ID também permite acesso global ao nó do input.
ignoreBooleanfalseImpede que um input seja incluído em qualquer pai (grupo, lista, formulário etc). Útil ao usar inputs para a interface do usuário em vez de valores reais.
indexNumberundefinedPermite que um input seja inserido no índice fornecido, se o pai for uma lista. Se o valor do input for indefinido, ele herda o valor dessa posição de índice. Se ele tiver um valor, ele o insere nos valores da lista no índice fornecido.
labelString''Texto para o elemento label associado ao input.
nameStringinput_{n}O nome do input como identificado no objeto de dados. Isso deve ser único dentro de um grupo de campos.
parentFormKitNodecontextualPor padrão, o pai é um grupo, lista ou formulário de envolvimento, mas essa prop permite a atribuição explícita do nó pai.
prefix-iconString''Especifica um ícone para colocar na seção prefixIcon.
preservebooleanfalsePreserva o valor do input em um grupo pai, lista ou formulário quando o input é desmontado.
preserve-errorsbooleanfalsePor padrão, os erros definidos em inputs usando setErrors são automaticamente limpos no input. Definir essa prop como true mantém o erro até que ele seja explicitamente limpo.
sections-schemaObject{}Um objeto de chaves de seção e valores parciais de esquema, em que cada esquema parcial é aplicado à seção respectiva.
suffix-iconString''Especifica um ícone para colocar na seção suffixIcon.
typeStringtextO tipo de input a ser renderizado pela biblioteca.
validationString, Array[]As regras de validação a serem aplicadas ao input.
validation-visibilityStringblurDetermina quando mostrar as regras de validação com falha de um input. Os valores válidos são blur, dirty e live.
validation-labelString{label prop}Determina qual rótulo usar nas mensagens de erro de validação, por padrão, usa a propriedade label, se disponível, caso contrário, usa a propriedade name.
validation-rulesObject{}Regras de validação personalizadas adicionais para disponibilizar na propriedade de validação.
valueAnyundefinedInicializa o valor do input e/ou de seus filhos. Não é reativo. Pode inicializar grupos inteiros (formulários) e listas..

Seções

Você pode direcionar uma seção específica de uma entrada usando a "key" dessa seção, permitindo que você modifique as classes, HTML (por meio de :sections-schema ou o conteúdo (por meio de slots) dessa seção). Saiba mais sobre as seções aqui.

View on a larger screen to see this section diagram.

Convidados
Anote os convidados que você levará para o autódromo.
Campos repetidos aqui.
🗑
Adicionar convidado
Desculpe, você não pode adicionar mais de 3 convidados.
Section-keyDescrição
fieldsetUm elemento fieldset que atua como o invólucro do repetidor.
legendUm elemento legend que renderiza o rótulo.
itemsUm elemento ul que envolve os itens do repetidor.
itemUm elemento li que é renderizado para cada item do repetidor.
contentUm contêiner para a seção do grupo.
groupNão renderiza um elemento. Estrutura o slot padrão em uma estrutura de dados de objeto.
controlsUm elemento ul que envolve os controles do repetidor.
controlLabelUm elemento span que renderiza o rótulo do controle dado.
upUm elemento li que renderiza o controle de subir.
upControlUm elemento button que renderiza o controle de subir.
moveUpIconUm elemento span que renderiza o ícone do upControl.
downUm elemento li que renderiza o controle de descer.
downControlUm elemento button que renderiza o controle de descer.
moveDownIconUm elemento span que renderiza o ícone do downControl.
insertUm elemento li que renderiza o controle de inserir.
insertControlUm elemento button que renderiza o controle de inserir.
insertIconUm elemento span que renderiza o ícone do insertControl.
removeUm elemento li que renderiza o controle de remover.
removeControlUm elemento button que renderiza o controle de remover.
removeIconUm elemento span que renderiza o ícone do removeControl.
Mostrar Universal section keys
outerO elemento de envolvimento mais externo.
wrapperUm invólucro ao redor do rótulo e do input.
labelO rótulo do input.
prefixPor padrão, não gera saída, mas permite conteúdo diretamente antes de um elemento input.
prefixIconUm elemento para gerar um ícone antes da seção de prefixo.
innerUm invólucro ao redor do próprio elemento input.
suffixPor padrão, não gera saída, mas permite conteúdo diretamente após um elemento input.
suffixIconUm elemento para gerar um ícone após a seção de sufixo.
inputO próprio elemento input.
helpO elemento que contém o texto de ajuda.
messagesUm invólucro ao redor de todas as mensagens.
messageO elemento (ou muitos elementos) que contém uma mensagem - na maioria das vezes mensagens de validação e erros.

Acessibilidade

Todos os campos de entrada do FormKit são projetados com as seguintes considerações de acessibilidade em mente. Ajude-nos a melhorar continuamente a acessibilidade para todos, relatando problemas de acessibilidade aqui:

Marcação semânticaAtributos AriaAcessível por tecladoIndicadores de focoContraste de cores com o tema fornecidoEtiquetas acessíveis, texto de ajuda e erros
Chave de SeçãoAtributoPadrãoDescrição
itemsrolelistIndica para as tecnologias assistivas que este elemento funciona como uma lista.
itemrolelistitemIndica para as tecnologias assistivas que este elemento funciona como um item de lista.
Mostrar Universal chave de seção
labellabelforAssocia isso a um elemento de entrada, aprimorando acessibilidade e experiência do usuário
inputinputdisabledDesabilita um elemento HTML, impedindo a interação do usuário e sinalizando um estado não interativo
aria-describedbyAprimora a acessibilidade associando um elemento a uma descrição, auxiliando leitores de tela
aria-requiredAdiciona o estado necessário quando a validação é exigida.
iconiconforSempre que um ícone é definido como rótulo, ele o vincula a um elemento de entrada, aprimorando acessibilidade e experiência do usuário

Interações por Teclado

Evento de TecladoDescrição
TabMove o foco para a próxima entrada focalizável na página.
Shift + TabMove o foco para a entrada focalizável anterior na página.