node.next()
, node.previous()
, e node.goTo()
para entradas multi-step
através do plugin MultiStep. Isso permite um controle externo mais fácil da navegação de entrada multi-step
. #685node.restoreCache()
para o plugin localStorage para permitir a restauração de valores de formulário para o cache em caso de falha no envio. #727multi-step
. #720blur
poderia causar erros no console na mudança de rota. #735beforeStepChange
agora funciona com chamadas de função async
. #743file
não permitiriam o reenvio do mesmo arquivo após chamar reset
. #762fk-
.text
reutilizassem o primeiro esquema(#719)FormKitValidationMessage
para ajudar a digitar funções de mensagem de validação (#695)key
, control
, debounce
, beforeSave
, e beforeLoad
.group
. ex (form
, group
, multi-step
, etc).value
de um slot não fosse atualizada em alguns casos de borda (#717).dynamic
de lista permite que você crie seus próprios repetidores facilmente.require_one
(obrigado @devoidofgenius), contains_alpha
, contains_alphanumeric
, contains_alpha_space
, contains_symbol
, contains_uppercase
, contains_lowercase
, contains_numeric
, symbol
, uppercase
, e lowercase
(obrigado @riderx).textarea
com altura redimensionável dinamicamente.commitRaw
que dispara mesmo se não houver alteração no valor da entrada.FormKitSchema
agora pode usar um único nó raiz (em vez de um fragmento)v-show
agora funcionam e adicionar uma key
a entradas dinâmicas geralmente não é mais necessário (#528).node.reset()
se tornam o novo valor padrão para a entrada (#621).zh-TW
)lv
)tet
)node.extend()
.@input
e removeu o debounce agora desnecessário no evento de mudança.@formkit/observer
agora observará as mudanças em node._value
em instâncias onde você deseja operar no valor de entrada não debounced.range
em @formkit/icons
foi atualizado para mostrar apenas uma alça de controle, pois as entradas de range HTML não suportam múltiplos valores. O antigo ícone de multi-alça foi reaproveitado para a nova entrada slider
do FormKit Pro.repeater
aninhadas não hidratassem corretamente (#458).repeater
aninhadas lançassem um erro ao serem removidas (#457).@blur
em uma entrada personalizada (#413).v-model
disparar eventos de entrada apenas em cada outra entrada (#463)node.walk()
terminar prematuramente ao usar stopOnFalse
.Beta 16 é a primeira versão do FormKit que não tem um identificador de pré-lançamento. Beta 16 e todas as versões beta restantes serão lançadas sob a versão semântica 0.x.x
. O primeiro lançamento estável será 1.0.0
e está previsto para o final deste ano. Esta mudança na versão deve ajudar na resolução de dependências do gerenciador de pacotes à medida que completamos nossos ciclos de lançamento beta.
overlay
.dirty-behavior
que permite aos usuários optar por um comportamento compare
que compara o valor atual da entrada com o valor original da entrada. Se a entrada for alterada de volta ao seu estado original, a flag context.state.dirty
voltará a ser falsa.options
(usada em select, radio, checkboxes e alguns inputs pro) agora pode diferenciar entre valores null
e undefined
.@formkit/nuxt
e o realce de sintaxe.dirty
de um input não relacionado fosse incorretamente definido como true
quando um objeto (como um grupo) era atualizado (#520).submitted
como os filhos do formulário em uma submissão de formulário malsucedida (#503).Este lançamento adiciona novos plugins de primeira parte ao pacote @formkit/addons
, envia correções de bugs e atualizações de estilo para usuários de CSS e Tailwind CSS.
@formkit/addons
. Vem com estilo CSS standalone que você pode importar e que funciona bem com nosso tema genesis
. Confira a documentação completa aqui.text
(text
, email
, url
, etc) e textarea
com o novo plugin de rótulos flutuantes em @formkit/addons
. Confira a documentação completa aqui.Next
e Previous
ao objeto de localização da UI para uso em plugins e inputs personalizados.@formkit/themes
.:focus-visible
aos botões para mostrar o estado de foco ao usar a navegação por teclado.loading
ausentes para botões submit
no tema Genesis do Tailwind CSS.Este lançamento aborda alguns problemas para usuários do Tailwind que foram introduzidos no beta.13
.
@formkit/themes/tailwindcss
para incluir apenas uma exportação default
do plugin FormKitVariants
.@formkit/themes/dist/tailwindcss/genesis
.!
para $remove:
para não entrar em conflito com o operador !
integrado do Tailwind que adiciona !important
a uma regra de estilo.<FormKitMessages>
que permite a realocação das mensagens de validação e erro de um formulário e a capacidade de entradas group
e list
exibirem suas próprias mensagens de erro e validação.!
para remover seletivamente uma classe existente sem precisar usar a sintaxe de objeto de formulário longo. ex outer-class="my-class !formkit-outer"
adiciona my-class
e remove a classe padrão formkit-outer
.checkbox
e radio
agora têm um atributo data-checked
em torno de seu respectivo wrapper, facilitando a adição de estilos personalizados para estados verificados vs não verificados.en
, pt
, zh
).empty-message
permite que a mensagem seja renderizada na listbox quando nenhuma opção é passada (dropdown
, autocomplete
e taglist
). #502dropdown
, autocomplete
, taglist
). #350max
para taglist
e autocomplete
com entradas multiple
. #501closeOnSelect
manterá a listbox
expandida à medida que as seleções são feitas (autocomplete
múltiplo e taglist
).forceExpanded
força a listbox
a permanecer aberta para fins de desenvolvimento (dropdown
, autocomplete
e taglist
).disabled
.date_after
mostrava uma mensagem de validação incorreta por causa dos fusos horários. #488v-model
agora podem ser inicializados como undefined
. #235validation-rules
inline recursassem inesperadamente. #514sections-schema
. #541disabled
precisasse de null
em vez de false
para renderizar o atributo data-disabled
no wrapper externo. #511v-if
no bloco <template v-slot>
). #489sections-schema
.taglist
onde opções duplicadas eram carregadas da API. #497taglist
renderizava props duplicadas quando a prop multiple
estava definida como false
. #494options
de autocomplete
estavam duplicando quando usadas rapidamente, repetidamente ou com conteúdo colado. #431autocomplete
e taglist
não podia ser removido quando o valor fornecido era um objeto literal. #505listbox
ainda estava visível quando nenhuma option
era passada. #504formkit.config.js
.npx formkit create-app
para inicializar facilmente novos projetos FormKit.length
em todos os idiomas.stopIfFalse
na função walkTree
.null
não tinha um bom valor #415.count:blocking
não estava sendo emitido corretamente em Repeaters.[Object object]
ser exibido após a referência existir #368.3.0.0-rc.8
e 3.0.0-rc.9
#371 e #383.@formkit/themes/tailwindcss
com TypeScript #376.family
opcional, que adiciona um atributo data-family
e define o valor em node.props.family
. Isso é útil para aplicar plugins e estilos a "famílias" inteiras de entradas, como a família de entradas de texto, que se aplicaria a text
, email
, password
, number
, etc.forceTypeProp
opcional que garante que o node.props.type
seja inicializado como um valor dado, mesmo que a entrada seja registrada sob um nome diferente. Por exemplo, myModifiedCheckbox
ainda poderia ter node.props.type
reportando "checkbox".data-multiple
a checkboxes e rádios quando eles têm várias opções.@submit-invalid
a entradas type="form"
. O evento é acionado quando um usuário tenta enviar um formulário, mas ele tem entradas inválidas.getValidationMessages
a @formkit/validation
que extrai um Map de nós e suas mensagens de validação.decorator-icon
a checkboxes e rádios, facilitando o uso de SVGs personalizados em seus checkboxes e rádios.context.state.dirty
dos inputs se tornassem verdadeiros quando um formulário v-modelado era editado (#311).node.reset()
é chamado (#319).removeFiles
do input de arquivo foi renomeada para fileRemove
.fileRemove
(anteriormente removeFiles
) costumava renderizar uma tag <a>
, isso foi alterado para um button
.@formkit/inputs
foram substituídos por "seções". Isso deve afetar apenas os usuários que estavam criando seus próprios inputs a partir de composables pré-existentes.@formkit/cli
. Altere os inputs existentes adicionando, removendo, atualizando ou reordenando seções - ou adicione suas próprias variações de input exportadas e alteradas à sua biblioteca de inputs.meta
à especificação de esquema (#248).theme
em defaultConfig()
submit
e setErrors
.key
não funcionar ao usar o atalho $formkit
no esquema (#232).@blur
(#239).for
em navegadores Safari antigos (#299).input-errors
agora irá resetar quaisquer erros que tenha definido anteriormente quando for definida como um objeto vazio {}
(#277).alpha
e alpha_spaces
(#281).tailwindcss
, unocss
e windicss
agora devem ser importados de seu próprio subcaminho do pacote @formkit/themes
. Por exemplo:import formKitTailwindPlugin from '@formkit/themes/tailwindcss'
windicss
, tailwindcss
e unocss
.update:model-value
agora só será emitido ao usar a diretiva v-model
.input
agora é amortecido para reduzir a quantidade de ruído emitido. Você pode usar o novo input-raw
para ouvir cada evento de input.setErrors
agora são automaticamente limpos no input por padrão. Para reverter para o comportamento anterior, defina preserveErrors: true
em seu objeto de configuração global.@formkit/tailwindcss
agora está obsoleto — tanto o plugin formKitTailwind
quanto a função generateClasses
foram movidos para o pacote @formkit/themes
.checkbox
, radio
e select
(inputs que usam :options
) agora podem usar qualquer tipo de dado como seu valor, como números, objetos ou até mesmo null
(#85).node.clearErrors
e clearErrors
para auxiliar na limpeza de erros de backend de um input ou formulário.node.setErrors()
no input do usuário. Você pode substituir este comportamento padrão (para manter o erro no input) com preserve-errors="true"
.node.addProps
para adicionar novas props em plugins personalizados.message
para modificar mensagens à medida que estão sendo definidas.reset
— emitido após um formulário ser resetado.index
que permite que os inputs sejam injetados em um determinado índice em um tipo list
pai.input
do componente <FormKit>
agora é amortecido, o que significa que emite muito menos ruído.import { features } from '@formkit/inputs'
.input-raw
ao componente <FormKit>
que é emitido para cada evento de input único em um input, lista, grupo ou formulário (muito ruidoso).input
, input-raw
, submit
e submit-raw
.dom-input-event
que tem o objeto Event
HTML nativo como payload.@formkit/themes
agora inclui exportações nomeadas para funções de plugin para Tailwind CSS (formKitTailwind
), Windi CSS (formKitWindi
) e Uno CSS (formKitUno
). Ao adicionar o plugin correto ao arquivo de configuração do seu framework CSS, você terá acesso a uma variedade de variantes formkit como formkit-invalid:
e formkit-disabled:
.@formkit/themes
agora inclui a função auxiliar generateClasses
que permite que você forneça facilmente diferentes listas de classes para ${sectionKey}
s com base no tipo de input.v-model
para estruturas profundamente aninhadas como formulários com listas e grupos.null
gerassem erros (#151)validation-visibility
não mudasse quando atualizado reativamente (#159)preserve
bloqueasse algumas submissões de formulário (#145)@formkit/tailwind
(#143)on-value
não tivessem seu valor inicial definido ao usar a prop :value
.multiple="false"
explícito e um placeholder (#148).classes
não reagisse à reatividade do Vue ao usar refs aninhados (#155).disabled
no formulário sem especificar disabled="true"
(#215)alpha_spaces
(#83)node.input()
(#139)@submit
(#130)data-loading
foi movido do botão de envio de um formulário
para a tag <form>
em si.@formkit/tailwindcss
para criar facilmente temas Tailwind para seus formulários FormKit. Confira o guia Criar um tema Tailwind CSS para mais detalhes.reset
. Isso pode ser feito em qualquer input, grupo, formulário, ou lista e irá restaurar o valor de volta ao seu estado inicial. Também reseta o objeto context.state
(como blurred
e dirty
).aria-describedby
e aria-live
a todos os tipos de input fornecidos. aria-describedby
agora direciona para o texto de ajuda, mensagens de validação, e mensagens de erro (rotulagem fornecida por tags <label>
que usam o atributo for
).undefined
aos seus filhos. Em outras palavras, se um formulário é v-modelado e seu valor é definido como um objeto vazio {}
, ele irá limpar todo o formulário.context.state.settled
que sinaliza quando o ciclo de debounce interno do input terminou e um valor terminou de ser comprometido com o formulário.data-submitted
aos inputs que foram enviados.fileName
(obrigado @santi).parent
que aceita um nó central para casos de uso avançados onde os inputs são desacoplados de seu formulário ou estrutura de dados é desejada.input-class
) dentro dos esquemas não respeitassem adequadamente o comando $reset
porque era tratado como uma variável (#61).file-list-class
ou file-item-class
(#120).import '@formkit/themes/genesis
.node.submit()
(incluindo qualquer nó filho do formulário).this.$formkit.submit('form-id')
(para api de composição é submitForm('form-id')
).setErrors
DX:
node.setErrors(nodeErrors, childErrors)
.setErrors
agora suporta string pura node.setErrors('My error')
<FormKit>
agora está disponível via ref de template.data-invalid
à seção outer
quando uma entrada tem mensagens de validação falhando que estão atualmente sendo exibidas (exemplo no playground).data-errors
à seção outer
quando a entrada tem erros explicitamente colocados (via prop ou setErrors
).data-complete
à seção outer
quando uma entrada (exemplo no playground):
context.state
:
state.rules
- verdadeiro quando a entrada tem regras de validação.state.errors
- verdadeiro quando a entrada tem erros explícitos colocados nela.state.complete
- mesma lógica que data-complete
.state.validationVisible
- verdadeiro quando a condição validation-visibility
é atendida (está mostrando erros de validação, se houver).node.setErrors
.context.state
com novas propriedades e melhores descrições.file
acionassem eventos onChange
personalizados (#90).id
no DOM.:value
nos formulários fosse alterada na entrada (#72).prop:{propName}
emitidos por props padrão e props de entrada personalizadas definidas (#73)beta.3
seria um lançamento tão bom que decidimos pular e ir direto para beta.4
👀! Brincadeira. Tivemos problemas com o npm e tivemos que aumentar 🤦.@formkit/nuxt
é um módulo Nuxt 3 completo que torna o uso do FormKit com Nuxt 3 o mais simples possível!defaultConfig
agora inclui um novo pacote @formkit/dev
que decodifica os códigos de erro do FormKit em mensagens úteis do console (nenhuma ação necessária) (#56).preserve
agora se aplica a todos os descendentes (#53).@formkit/i18n
(#54).@formkit
!options
que é armazenada em uma variável externa (#55)placeholder
em entradas de seleção fosse removido se algo causasse a re-renderização da entrada (#52).submit-behavior
para optar por não usar os novos formulários automaticamente desabilitados.bindings
no pacote @formkit/vue
.button
e submit
são automaticamente ignorados.messages
para o defaultConfig
para permitir substituições parciais para locais. Isso permite substituições de mensagens seletivas para locais já registrados (#42).$: undefined
produziria o valor undefined
em vez da string "indefinido").options
não hidratassem corretamente quando repopuladas a partir de um group
, list
, ou form
(#45).options
não exibissem corretamente quando faltava a propriedade label (#41).validation-behavior
no componente <FormKit>
para validation-visibility
.schema
no componente <FormKit>
para sections-schema
.file
nativo com suporte para alguns recursos adicionais:
createInput
para facilitar a escrita de entradas personalizadas.incomplete-message
permite personalização inline (ou desativação) da mensagem exibida por um formulário quando ele tenta enviar e todas as suas entradas não são válidas.defaultConfig
para aceitar entradas personalizadas.props
e attrs
com __raw__
para passar o valor bruto em vez de seu resultado analisado (#36).plugin.library
— o mecanismo que os plugins usam para definir novos tipos de entrada..vue
, .js
, formkit.config.js
e tailwind.config.js
.@submit
e @submit-raw
.length
e between
para sempre colocar o número menor primeiro (#35).:options
não aceitava valores numéricos.v-if
), agora remove seu valor dos dados do formulário e desregistra seu nó central.preserve
permite que as entradas não removam seus dados de grupos, listas e formulários quando são removidos.placeholder
não fosse renderizado quando a prop veio depois da prop options
.input-errors
ou os métodos $formkit.setErrors()
. Leia mais sobre isso na documentação do formulário.$formkit.setLocale()
muda reativamente o idioma de todas as mensagens exibidas.rootConfig
que é usado para armazenar a configuração base global e os valores das propriedades (refatoração significativa do sistema de configuração).FormKitObservedNode
.child
emitido quando um pai tem um filho adicionado a ele.length
agora pode receber argumentos max/min em qualquer ordem length:15,5
ou length:5,15
avaliam o mesmo.getNode
para acessar diretamente um nó FormKit usando a API de composição.@formkit/theme
.list
às vezes lançassem uma exceção ao exibir erros de validação.node.input()
de acionar a reatividade no Vue.$formkit
para usar entradas FormKit em um esquema (Issue #15).disabled
em formulários, listas e entradas de grupo que desativa automaticamente todas as entradas filhas (Issue #16).submitAttrs
em formulários permite que você passe atributos para o botão de envio do formulário.ignore
que impede que os dados de uma entrada sejam usados em um formulário.children
de um componente FormKit. (Issue #21).rootClasses
retornar incorretamente undefined
(Issue #17).submit_x
(Issue #22).$cmp
falhassem ao remontar se o objeto raiz do esquema fosse redefinido, causando uma reanálise completa (Issue #14).