List

A entrada list permite estruturar dados de entradas filhas como um array. A lista em si não gera nenhuma marcação (por padrão) e pode ser usada em conjunto com qualquer outro tipo de entrada - incluindo grupos e listas aninhadas.

O valor de uma entrada de lista é um array onde cada item é o valor da entrada naquele índice. As sub-entradas não precisam ser do mesmo tipo. Além de estruturar dados, as listas podem determinar o estado de validação, fornecer valores iniciais e fornecer plugins e configuração para todos os seus filhos.

Exemplo básico

Carregar exemplo ao vivo
Performance

O útil v-model do Vue é totalmente suportado no FormKit com fluxo de dados bidirecional, mesmo em listas e grupos. No entanto, se o seu formulário precisa de uma performance extremamente alta, considere usar o nó central para ler/escrever em vez do v-model.

Tipos de lista

Existem 2 tipos de listas:

  • Listas estáticas (padrão) têm filhos pré-determinados. Elas não devem ser usadas para iterar sobre valores ou adicionar/remover itens.
  • Listas dinâmicas permitem a iteração sobre o valor da lista para criar seus filhos. Elas são úteis para criar listas de comprimento dinâmico, como repetidores.

Listas estáticas

As listas estáticas são o tipo mais simples de lista para criar. Envolva quaisquer entradas em um <FormKit type="list"> e essas entradas serão automaticamente definidas como valores de seu array. Os filhos imediatos das listas não têm um nome (mesmo que especificado), em vez disso, eles são sempre identificados por seu índice. Em uma lista estática, este índice é estável e é baseado na ordem das entradas.

Carregar exemplo ao vivo
Iterando sobre os valores da lista

As listas estáticas não devem ser usadas para iterar sobre seu próprio valor. Embora seja seguro iterar sobre outros dados arbitrários, iterar sobre o valor da lista em si causará renderização recursiva e loops infinitos. Em vez disso, use uma lista dinâmica.

Listas dinâmicas

As listas dinâmicas permitem que você itere sobre os valores da lista para criar e hidratar as entradas dentro da lista. As listas dinâmicas são úteis para criar estruturas de array dinâmicas, como repetidores.

Você pode alterar a estrutura da sua lista dinâmica adicionando e removendo itens do array de valor. O FormKit atualizará automaticamente a estrutura do formulário subjacente para corresponder ao novo valor.

Para que as listas dinâmicas mantenham seus dados sincronizados, você deve usar items do slot padrão para criar seu v-for e também deve passar o index do v-for como a prop index para cada item da lista.

Repetidor FormKit Pro

Para usar um repetidor pré-construído, confira a entrada de repetidor gratuita do FormKit Pro.

Exemplo de lista dinâmica

Carregar exemplo ao vivo

Lista dinâmica com um grupo aninhado

Carregar exemplo ao vivo

Lista dinâmica usando v-model

Carregar exemplo ao vivo

Lista dinâmica em esquema

Carregar exemplo ao vivo

Validade dos filhos

As listas (e grupos) estão sempre cientes do estado de validação de seus filhos (incluindo filhos aninhados). Você pode acessar esses dados no objeto context do input (context.state.valid).

Carregar exemplo ao vivo

Mostrando mensagens de erro e validação

Embora uma lista possa ter regras de validação e erros de input, ela não inclui nenhuma funcionalidade para mostrar mensagens de validação e erros por padrão. A lista não envia nenhum HTML. Se você quiser exibir esses erros - você pode adicionar o <FormKitMessages /> como um filho da lista.

Configuração

Mais documentação sobre o componente FormKitMessages pode ser encontrada na página de documentação do formulário.

Props & Atributos

PropTypePadrãoDescrição
disabledBooleanfalseDesativa todos os inputs na lista.
dynamicBooleanfalseHabilita o modo dinâmico para a lista e fornece items no slot padrão criando um iterador (v-for).
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

Section-keyDescrição
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.