File

O input file utiliza o input de arquivo nativo do HTML. Ele permite que os usuários selecionem arquivos de seu dispositivo para upload. Além das funcionalidades nativas do input, ele adiciona suporte para:

  • Arrastar e soltar
  • Limpar o input
  • Repopular a partir de um array

Exemplo básico

Carregar exemplo ao vivo

Valor do array

O valor do tipo file deve ser sempre um array de objetos onde cada objeto contém um name (string) e uma propriedade file (File) opcional. Ao selecionar novos arquivos do dispositivo do usuário, o FormKit converterá a FileList nativa para a estrutura baseada em array automaticamente.

Esta estrutura pode ser usada para pré-popular um input de arquivo com valores de arquivos previamente carregados:

Carregar exemplo ao vivo
Apenas exibição

Pré-popular um input com nomes de arquivos é apenas para fins de exibição. É um recurso opcional que fornece uma interface consistente para transmitir que um arquivo foi previamente carregado — no entanto — uma FileList não está anexada à tag <input> real para upload.

Fazendo upload de arquivos

O processo de upload de arquivos é deixado para o manipulador de envio do seu formulário. Ao enviar o formulário via solicitação de página completa nenhum processamento adicional é necessário, no entanto, ao enviar via solicitação XHR/Fetch você precisará criar uma instância de FormData com os arquivos anexados. Aqui está um exemplo funcional:

Carregar exemplo ao vivo

Props & Atributos

O input file possui algumas props únicas. Há também vários atributos HTML nativos comumente usados que ajudam a controlar os uploads de arquivos.

PropTypePadrãoDescrição
Commonly used native attributes
accept----Ver no MDN
capture----Ver no MDN
multiple----Ver no MDN
webkitdirectory----Ver no MDN
Props
file-item-iconString’’Especifica um ícone para colocar na seção fileItemIcon. Apenas exibido quando há um arquivo selecionado. O padrão é o ícone fileDoc.
file-remove-iconString’’Especifica um ícone para colocar na seção fileRemoveIcon. Apenas exibido quando um arquivo está selecionado. O padrão é o ícone close.
no-files-iconString’’Especifica um ícone para colocar na seção noFilesIcon. Apenas exibido quando nenhum arquivo está selecionado. O padrão é o ícone fileDoc.
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.

Diagrama de arquivo único

View on a larger screen to see this section diagram.

Seu currículo
🗄
📁
meu-curriculo.pdf
X
Envie seu currículo.
Suporta apenas extensões .pdf e .docx.

Diagrama de múltiplos arquivos

View on a larger screen to see this section diagram.

Seu currículo
🗄
📁
meu-curriculo.pdf
Remover todos
Envie seu currículo.
Suporta apenas extensões .pdf e .docx.
Section-keyDescrição
fileListUm invólucro para a lista inteira de arquivos.
fileItemIconUm elemento contendo um ícone opcional de item de arquivo.
fileItemUm elemento contendo o nome do arquivo e a ação de remoção para cada arquivo.
fileNameO elemento contendo o nome de um arquivo.
fileRemoveO elemento que remove um arquivo da lista.
fileRemoveIconUm elemento contendo o ícone de remoção de arquivo.
noFilesO elemento exibido quando não há arquivos selecionados.
noFilesIconUm elemento contendo um ícone dentro da seção noFiles.
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 inputs do FormKit são projetados levando em consideração as seguintes considerações de acessibilidade. 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
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.