@formkit/inputs

Introdução

O plugin oficial FormKit Inputs. Este pacote contém o código fonte para todos os tipos de entrada HTML nativos. Leia a documentação de inputs para instruções de uso.

Auxiliares

$attrs()

Aplica atributos a uma determinada seção de esquema aplicando uma função de ordem superior que mescla um determinado conjunto de atributos no nó.

Assinatura

$attrs(attrs: FormKitSchemaAttributes | (() => FormKitSchemaAttributes), section: FormKitSchemaExtendableSection): FormKitSchemaExtendableSection;

Parâmetros

Retorna

FormKitSchemaExtendableSection

$extend()

Estende um nó de esquema com um determinado conjunto de extensões.

Assinatura

$extend(section: FormKitSchemaExtendableSection, extendWith: Partial<FormKitSchemaNode>): FormKitSchemaExtendableSection;

Parâmetros

  • section — Uma seção para aplicar uma extensão.
  • extendWith — Um trecho de esquema parcial para aplicar à seção.

Retorna

FormKitSchemaExtendableSection

$for()

Aplica uma condição a uma determinada seção de esquema.

Assinatura

$for(varName: string, inName: string, section: FormKitSchemaExtendableSection): (extensions: Record<string, Partial<FormKitSchemaNode>>) => FormKitSchemaNode;

Parâmetros

  • varName — O nome da variável que contém a instância atual.
  • inName — A variável que estamos iterando.
  • section — Uma seção para repetir.

Retorna

FormKitSchemaExtendableSection

$if()

Aplica uma condição a uma determinada seção de esquema.

Assinatura

$if(condition: string, then: FormKitSchemaExtendableSection, otherwise?: FormKitSchemaExtendableSection): FormKitSchemaExtendableSection;

Parâmetros

  • condition — Uma condição de esquema para aplicar a uma seção.
  • then — A seção que se aplica se a condição for verdadeira.
  • otherwise opcional — (else) A seção que se aplica se a condição for falsa.

Retorna

FormKitSchemaExtendableSection

$root()

Cria uma seção de esquema raiz.

Assinatura

$root(section: FormKitSchemaExtendableSection): FormKitExtendableSchemaRoot;

Parâmetros

  • section — Uma seção para transformar em raiz.

Retorna

FormKitSchemaExtendableSection

Recursos

checkboxes()

Um recurso que adiciona suporte à seleção de caixas de seleção.

Assinatura

checkboxes(node: FormKitNode): void;

Parâmetros

defaultIcon()

Adiciona definição de props de ícone.

Assinatura

defaultIcon(sectionKey: string, defaultIcon: string): (node: FormKitNode) => void;

Parâmetros

  • sectionKey — o local onde o ícone deve ser carregado.
  • defaultIcon — o ícone que deve ser carregado se uma correspondência for encontrada no CSS do usuário.

Retorna

Um FormKitPlugin.

files()

Um recurso para adicionar suporte ao manuseio de arquivos em uma entrada.

Assinatura

files(node: FormKitNode): void;

Parâmetros

initialValue()

Um recurso que garante que a entrada tenha uma prop initialValue.

Assinatura

initialValue(node: FormKitNode): void;

Parâmetros

localize()

Cria um novo recurso que gera uma mensagem de localização do tipo ui para uso em um determinado componente.

Assinatura

localize(key: string, value?: string): (node: FormKitNode) => void;

Parâmetros

  • key — A chave da mensagem.
  • value * opcional * — O valor da mensagem.

Retorna

Um FormKitPlugin.

normalizeBoxes()

Um recurso que normaliza os tipos de caixas (caixas de seleção, rádios).

Assinatura

normalizeBoxes(node: FormKitNode): FormKitMiddleware<{
    prop: string | symbol;
    value: any;
}>;

Parâmetros

Retorna

Um FormKitMiddleware.

options()

Um recurso que converte a prop de opções em valores utilizáveis, para ser usado por um recurso ou um plugin.

Assinatura

options(node: FormKitNode): void;

Parâmetros

radios()

Um recurso para verificar se o valor sendo verificado é o valor atual.

Assinatura

radios(node: FormKitNode): void;

Parâmetros

Funções

casts()

Um recurso que permite a conversão para números.

Assinatura

casts(node: FormKitNode): void;

Parâmetros

createLibraryPlugin()

Cria um plugin baseado em uma lista de FormKitLibrary.

Assinatura

createLibraryPlugin(...libraries: FormKitLibrary[]): FormKitPlugin;

Parâmetros

Retorna

FormKitPlugin

createSection()

Cria uma nova seção reutilizável.

Assinatura

createSection(section: string, el: string | null | (() => FormKitSchemaNode), fragment: true): FormKitSection<FormKitExtendableSchemaRoot>;
createSection(section: string, el: string | null | (() => FormKitSchemaNode)): FormKitSection<FormKitSchemaExtendableSection>;
createSection(section: string, el: string | (() => FormKitSchemaNode), fragment: false): FormKitSection<FormKitSchemaExtendableSection>;

Parâmetros

  • section — Uma única seção de esquema
  • el — O elemento ou uma função que retorna um nó de esquema.
  • fragment

Retorna

Retorna um FormKitExtendableSchemaRoot ou um FormKitSchemaExtendableSection.

disables()

Um recurso que permite desativar os filhos deste nó.

Assinatura

disables(node: FormKitNode): void;

Parâmetros

eachSection()

Executa um callback em cada seção de um esquema. Se stopOnCallbackReturn for verdadeiro e o callback retornar um valor, o loop irá parar e retornar esse valor.

Assinatura

eachSection<T>(schema: FormKitSchemaDefinition, callback: (section: FormKitSchemaComponent | FormKitSchemaDOMNode, schemaParent: FormKitSchemaNode[], schema: FormKitSchemaCondition) => T, stopOnCallbackReturn?: boolean, schemaParent?: FormKitSchemaNode[]): T | void;

Parâmetros

  • schema — Um array FormKitSchemaNode.
  • callback — Um callback para executar em cada seção.
  • stopOnCallbackReturn * opcional * — Se verdadeiro, o loop irá parar se o callback retornar um valor.
  • schemaParent * opcional * — O pai do nó de esquema atual.

Retorna

extendSchema()

Estende um único nó de esquema com uma extensão. A extensão pode ser qualquer nó parcial, incluindo strings.

Assinatura

extendSchema(schema: FormKitSchemaNode, extension?: Partial<FormKitSchemaNode>): FormKitSchemaNode;

Parâmetros

  • schema — O nó de esquema base.
  • extension * opcional * — Os valores para estender no nó de esquema base.

Retorna

FormKitSchemaNode

findSection()

Encontra uma seção por nome em um esquema.

Assinatura

findSection(schema: FormKitSchemaDefinition, target: string): [false, false] | [FormKitSchemaNode[] | false, FormKitSchemaCondition];

Parâmetros

Retorna

uma tupla do esquema e da seção ou uma tupla de false e false se não for encontrada.

form()

Um recurso para adicionar um manipulador de envio e seção de ações.

Assinatura

form(node: FormKitNode): void;

Parâmetros

ignore()

Um recurso que aplica ignore="true" por padrão.

Assinatura

ignore(node: FormKitNode): void;

Parâmetros

isGroupOption()

Um auxiliar para determinar se uma opção é um grupo ou uma opção.

Assinatura

isGroupOption(option: FormKitOptionsItem | FormKitOptionsGroupItem | FormKitOptionsGroupItemProp): option is FormKitOptionsGroupItem;

Parâmetros

  • option — Uma opção

isSchemaObject()

Guarda de tipo para objetos de esquema.

Assinatura

isSchemaObject(schema: Partial<FormKitSchemaNode>): schema is FormKitSchemaDOMNode | FormKitSchemaComponent | FormKitSchemaFormKit;

Parâmetros

  • schema — retorna true se o nó for um nó de esquema, mas não uma string ou condicional.

Retorna

boolean

isSlotCondition()

Verifica se o nó de esquema atual é uma condição de slot.

Assinatura

isSlotCondition(node: FormKitSchemaNode): node is {
    if: string;
    then: string;
    else: FormKitSchemaNode | FormKitSchemaNode[];
};

Parâmetros

Retorna

boolean

Exemplos

{
 if: '$slot.name',
 then: '$slot.name',
 else: []
} // este nó de esquema retornaria verdadeiro.

normalizeOptions()

Uma função para normalizar um array de objetos, array de strings, ou objeto de chaves-valores para usar um array de objetos com propriedades de valor e rótulo.

Assinatura

normalizeOptions<T extends FormKitOptionsPropWithGroups>(options: T): T extends FormKitOptionsProp ? FormKitOptionsList : FormKitOptionsListWithGroups;

Parâmetros

Retorna

Uma lista de FormKitOptionsList.

renamesRadios()

Renomeia automaticamente quaisquer entradas de rádio.

Assinatura

renamesRadios(node: FormKitNode): void;

Parâmetros

  • node — Um nó formkit.

Retorna

select()

Converte a propriedade de opções em valores utilizáveis.

Assinatura

select(node: FormKitNode): void;

Parâmetros

  • node — Um nó formkit.

useSchema()

Cria um esquema de entrada com todo o esquema base envolvente.

Assinatura

useSchema(inputSection: FormKitSection): FormKitSchemaExtendableSection;

Parâmetros

  • inputSection — Conteúdo para armazenar na localização da chave da seção de entrada.

Retorna

FormKitExtendableSchemaRoot

TypeScript

FormKitBaseEvents

Eventos de entrada gerais disponíveis para todas as entradas FormKit.

interface FormKitBaseEvents<Props extends FormKitInputs<Props>> {
    (event:'input', value: PropType<Props, 'value'>, node: FormKitNode): any;
    (event:'inputRaw', value: PropType<Props, 'value'>, node: FormKitNode): any;
    (event:'input-raw', value: PropType<Props, 'value'>, node: FormKitNode): any;
    (event:'update: modelValue', value: PropType<Props, 'value'>): any;
    (event:'update: model-value', value: PropType<Props, 'value'>): any;
    (event:'node', node: FormKitNode): any;
}

FormKitBaseProps

Propriedades base que devem ser aplicadas a todos os inputs do FormKit. Estas não são propriedades de tempo de execução reais e são retiradas do objeto context.attrs. Muitas destas são apenas atributos html que são passados para o elemento de input.

interface FormKitBaseProps {
    accept: string;
    action: string;
    actions:'true' | 'false' | boolean;
    dirtyBehavior:'touched' | 'compare';
    disabled:'true' | 'false' | boolean;
    enctype: string;
    help: string;
    ignore:'true' | 'false' | boolean;
    label: string;
    max: string | number;
    method: string;
    min: string | number;
    multiple:'true' | 'false' | boolean;
    placeholder: string;
    preserve:'true' | 'false' | boolean;
    preserveErrors:'true' | 'false' | boolean;
    step: string | number;
}

FormKitBaseSlots

Quase todos os inputs no FormKit têm um conjunto "base" de slots. Este é o "sanduíche" em torno do próprio input, como os wrappers, texto de ajuda, mensagens de erro, etc. Vários outros slots de input estendem esta interface base.

interface FormKitBaseSlots<Props extends FormKitInputs<Props>> {
    help: FormKitSlotData<Props>;
    inner: FormKitSlotData<Props>;
    input: FormKitSlotData<Props>;
    label: FormKitSlotData<Props>;
    message: FormKitSlotData<Props, {
        message: FormKitMessage;
    }>;
    messages: FormKitSlotData<Props>;
    outer: FormKitSlotData<Props>;
    prefix: FormKitSlotData<Props>;
    prefixIcon: FormKitSlotData<Props>;
    suffix: FormKitSlotData<Props>;
    suffixIcon: FormKitSlotData<Props>;
    wrapper: FormKitSlotData<Props>;
}

FormKitBoxSlots

Os slots disponíveis para os inputs de rádio e checkbox quando as opções são fornecidas.

interface FormKitBoxSlots<Props extends FormKitInputs<Props>> {
    box: FormKitSlotData<Props, OptionSlotData<Props>>;
    decorator: FormKitSlotData<Props, OptionSlotData<Props>>;
    decoratorIcon: FormKitSlotData<Props, OptionSlotData<Props>>;
    fieldset: FormKitSlotData<Props>;
    help: FormKitSlotData<Props>;
    icon: FormKitSlotData<Props, OptionSlotData<Props>>;
    inner: FormKitSlotData<Props, OptionSlotData<Props>>;
    input: FormKitSlotData<Props, OptionSlotData<Props>>;
    label: FormKitSlotData<Props, OptionSlotData<Props>>;
    legend: FormKitSlotData<Props>;
    message: FormKitSlotData<Props, {
        message: FormKitMessage;
    }>;
    messages: FormKitSlotData<Props>;
    option: FormKitSlotData<Props, OptionSlotData<Props>>;
    optionHelp: FormKitSlotData<Props, OptionSlotData<Props>>;
    options: FormKitSlotData<Props>;
    prefix: FormKitSlotData<Props, OptionSlotData<Props>>;
    suffix: FormKitSlotData<Props, OptionSlotData<Props>>;
    wrapper: FormKitSlotData<Props, OptionSlotData<Props>>;
}

FormKitConditionalProps

Estas são props que são usadas como condicionais em uma ou mais entradas, e como tal, precisam ser definidas em todos os tipos de entrada. Todas devem ser definidas explicitamente como "undefined" aqui, e então definidas como seu tipo específico na interface FormKitInputProps apenas nas entradas que as utilizam.

interface FormKitConditionalProps {
    number: undefined;
    offValue: undefined;
    onValue: undefined;
    options: undefined;
}

FormKitEventsAsProps

Em um mundo perfeito, essa interface não seria necessária. No entanto, o Vue espera que as interfaces sejam definidas como sobrecargas de método. Infelizmente, como nossa interface de eventos usa genéricos, UnionToIntersection não pode ser usado, o que significa que perdemos dados de evento se armazenarmos os eventos como uma interface padrão com chaves de propriedade. A única maneira que encontramos para fazer com que o Volar (a partir de junho de 2023) reconheça corretamente todos os eventos definidos é usar a abordagem de sobrecarga de método "padrão" (veja FormKitBaseEvents).

(Basicamente, não podemos usar os eventos nesta interface para produzir automaticamente o FormKitBaseEvents sem que o Volar perca dados do evento)

Isso significa que não temos como obter os nomes dos eventos da interface, então não podemos usá-los corretamente em nossas props. Isso importa para coisas como suporte TSX, onde os nomes dos eventos precisam estar disponíveis como props onEventName.

Esta interface é usada para preencher manualmente essa lacuna no sistema de tipos. Esses tipos devem corresponder 1-1 com os eventos definidos em FormKitBaseEvents, bem como FormKitInputEvents.

interface FormKitEventsAsProps {
    'onUpdate: modelValue': (value: unknown, node: FormKitNode) => any;
    onInput: (value: unknown, node: FormKitNode) => any;
    onInputRaw: (value: unknown, node: FormKitNode) => any;
    onNode: (node: FormKitNode) => any;
}

FormKitFile

Um único objeto de arquivo na "FileList" sintética do FormKit.

interface FormKitFile {
    file?: File;
    name: string;
}

FormKitFileSlots

Os slots disponíveis para a entrada de arquivo, estes estendem os slots base.

interface FormKitFileSlots<Props extends FormKitInputs<Props>> extends FormKitBaseSlots<Props> {
    fileItem: FormKitSlotData<Props>;
    fileItemIcon: FormKitSlotData<Props, {
        file: FormKitFile;
    }>;
    fileList: FormKitSlotData<Props>;
    fileName: FormKitSlotData<Props, {
        file: FormKitFile;
    }>;
    fileRemove: FormKitSlotData<Props, {
        file: FormKitFile;
    }>;
    fileRemoveIcon: FormKitSlotData<Props, {
        file: FormKitFile;
    }>;
    noFiles: FormKitSlotData<Props>;
}

FormKitInputEvents

Eventos únicos emitidos por cada entrada do FormKit. A estrutura desta interface é:

interface FormKitInputEvents<Props extends Inputs> {
  typeString: { customEvent: (value: PropType<Props, 'value'>) => any } // <-- Todos os eventos únicos
}

Todas as entradas também herdarão todos os eventos de FormKitBaseInputEvents.

interface FormKitInputEvents<Props extends FormKitInputs<Props>> {
    form:{
        (event:'submit-raw', e: Event, node: FormKitNode): any;
        (event:'submit-invalid', node: FormKitNode): any;
        (event:'submit', data: any, node: FormKitNode): any;
    };
}

FormKitInputEventsAsProps

Veja o comentário no tomo sobre por que esse tipo é necessário.

interface FormKitInputEventsAsProps<Props extends FormKitInputs<Props>> {
    form:{
        onSubmitRaw: (e: Event, node: FormKitNode) => any;
        onSubmitInvalid: (node: FormKitNode) => any;
        onSubmit: (data: any, node: FormKitNode) => any;
    };
}

FormKitInputProps

Esta é a interface base para fornecer definições de propriedades para o componente FormKit. É usada para definir as propriedades que estão disponíveis para cada componente na biblioteca FormKit usando um tipo de união discriminada. A estrutura desta interface é:

interface FormKitInputProps {
 typeString: { type: 'string'; value?: string } // <-- Todas as propriedades únicas
}

Todas as entradas também herdarão todas as propriedades de FormKitBaseInputProps.

Nota: É importante que todas as entradas forneçam um tipo e uma propriedade de valor.

interface FormKitInputProps<Props extends FormKitInputs<Props>> {
    _:{
        type?: Props['type']extendskeyofFormKitInputProps<Props>?never: Props['type'];
        value?: string;
    };
    button:{
        type:'button';
        value?: undefined;
    };
    checkbox:{
        type:'checkbox';
        options?: FormKitOptionsProp;
        onValue?: any;
        offValue?: any;
        value?: Props['options']extendsRecord<inferT, string>?T[]: Props['options']extendsFormKitOptionsItem[]?Array<Props['options'][number]['value']>: Props['options']extendsArray<inferT>?T[]: (Props['onValue']extendsAllReals?Props['onValue']: true) | (Props['offValue']extendsAllReals?Props['offValue']: false);
    };
    color:{
        type:'color';
        value?: string;
    };
    date:{
        type:'date';
        value?: string;
    };
    datetimeLocal:{
        type:'datetimeLocal';
        value?: string;
    };
    email:{
        type:'email';
        value?: string;
    };
    file:{
        type:'file';
        value?: FormKitFile[];
    };
    form:{
        type:'form';
        value?: FormKitGroupValue;
        actions?: boolean | string;
        submitAttrs?: Record<string, any>;
        submitBehavior?:'disabled' | 'live';
        incompleteMessage?: false | string;
    };
    group:{
        type:'group';
        value?: FormKitGroupValue;
    };
    hidden:{
        type:'hidden';
        value?: Props['number']extendsAllReals?number: string;
        number?:'integer' | 'float' | 'true' | true;
    };
    list:{
        type:'list';
        value?: unknown[];
        dynamic?: boolean | 'true' | 'false';
        sync?: boolean | 'true' | 'false';
    };
    meta:{
        type:'meta';
        value?: any;
    };
    month:{
        type:'month';
        value?: string;
    };
    number:{
        type:'number';
        value?: Props['number']extendsAllReals?number: string;
        number?:'integer' | 'float' | 'true' | true;
    };
    password:{
        type:'password';
        value?: string;
    };
    radio:{
        type:'radio';
        options: FormKitOptionsProp;
        value?: FormKitOptionsValue<Props['options']>;
    };
    range:{
        type:'range';
        value?: Props['number']extendsAllReals?number: string;
        number?:'integer' | 'float' | 'true' | true;
    };
    search:{
        type:'search';
        value?: Props['number']extendsAllReals?number | string: string;
        number?:'integer' | 'float' | 'true' | true;
    };
    select:{
        type:'select';
        options?: FormKitOptionsPropWithGroups;
        value?: FormKitOptionsValue<Props['options']>;
    };
    submit:{
        type:'submit';
        value?: string;
    };
    tel:{
        type:'tel';
        value?: Props['number']extendsAllReals?number | string: string;
        number?:'integer' | 'float' | 'true' | true;
    };
    text:{
        type:'text';
        value?: Props['number']extendsAllReals?number | string: string;
        number?:'integer' | 'float' | 'true' | true;
    };
    textarea:{
        type:'textarea';
        value?: string;
    };
    time:{
        type:'time';
        value?: string;
    };
    url:{
        type:'url';
        value?: string;
    };
    week:{
        type:'week';
        value?: string;
    };
}

FormKitInputSlots

Slots fornecidos por cada entrada FormKit. A estrutura desta interface é:

interface FormKitInputSlots<Props extends Inputs> {
  typeString: { default: (value: PropType<Props, 'value'>) => any } // <-- Todos os slots únicos
}

Não há herança automática de slots - cada slot deve ser explicitamente definido para cada entrada.

interface FormKitInputSlots<Props extends FormKitInputs<Props>> {
    'datetime-local': FormKitTextSlots<Props>;
    button: FormKitButtonSlots<Props>;
    checkbox: Props['options']extendsAllReals?FormKitBoxSlots<Props>: FormKitBaseSlots<Props>;
    color: FormKitTextSlots<Props>;
    date: FormKitTextSlots<Props>;
    email: FormKitTextSlots<Props>;
    file: FormKitFileSlots<Props>;
    form:{
        form: FormKitSlotData<Props>;
        default: FormKitSlotData<Props>;
        message: FormKitSlotData<Props, {
        message: FormKitMessage;
    }>;
        messages: FormKitSlotData<Props>;
        actions: FormKitSlotData<Props>;
        submit: FormKitSlotData<Props>;
    };
    group:{
        default: FormKitSlotData<Props>;
    };
    hidden:{
        input: FormKitSlotData<Props>;
    };
    list:{
        default: FormKitSlotData<Props>;
    };
    meta:{
        wrapper: FormKitSlotData<Props>;
    };
    month: FormKitTextSlots<Props>;
    number: FormKitTextSlots<Props>;
    password: FormKitTextSlots<Props>;
    radio: Props['options']extendsAllReals?FormKitBoxSlots<Props>: FormKitBaseSlots<Props>;
    range: FormKitTextSlots<Props>;
    search: FormKitTextSlots<Props>;
    select: FormKitSelectSlots<Props>;
    submit: FormKitButtonSlots<Props>;
    tel: FormKitTextSlots<Props>;
    text: FormKitTextSlots<Props>;
    textarea: FormKitTextSlots<Props>;
    time: FormKitTextSlots<Props>;
    url: FormKitTextSlots<Props>;
    week: FormKitTextSlots<Props>;
}

FormKitOptionsGroupItem

Grupos de opções devem sempre ser formatados como um array de objetos com grupo e opções aninhadas

interface FormKitOptionsGroupItem {
    attrs?: Record<string, any>;
    group: string;
    options: FormKitOptionsList;
}

FormKitOptionsGroupItemProp

Grupos de opções devem sempre ser formatados como um array de objetos com grupo e opções aninhadas

interface FormKitOptionsGroupItemProp {
    attrs?: Record<string, any>;
    group: string;
    options: FormKitOptionsProp;
}

FormKitOptionsItem

As opções devem sempre ser formatadas como um array de objetos com propriedades de rótulo e valor.

interface FormKitOptionsItem<V = unknown> {
    __original?: any;
    [index: string]: any;
    attrs?:{
        disabled?: boolean;
    }&Record<string, any>;
    label: string;
    value: V;
}

FormKitOptionsPropExtensions

Permite que extensões de propriedades sejam definidas usando uma interface cujas chaves são ignoradas, mas os valores são aplicados a um tipo de união. Isso permite que qualquer código de terceiros estenda a propriedade de opções usando a ampliação do módulo para adicionar novos valores ao tipo de união.

interface FormKitOptionsPropExtensions {
    arrayOfNumbers: number[];
    arrayOfStrings: string[];
    optionsList: FormKitOptionsList;
    valueLabelPojo: Record<string | number, string>;
}

FormKitRuntimeProps

Tipagens para todas as propriedades de tempo de execução integradas.

Aviso: No momento da escrita, estas são apenas específicas para os requisitos de propriedade de tempo de execução do Vue e não devem ser usadas como qualquer tipo de API externa, pois estão sujeitas a alterações.

interface FormKitRuntimeProps<Props extends FormKitInputs<Props>> {
    classes: Record<string, string | Record<string, boolean> | FormKitClasses>;
    config: Record<string, any>;
    delay: number;
    errors: string[];
    id: string;
    index: number;
    inputErrors: Record<string, string[]>;
    modelValue: PropType<Props, 'value'>;
    name: string;
    parent: FormKitNode;
    plugins: FormKitPlugin[];
    sectionsSchema: Record<string, Partial<FormKitSchemaNode> | FormKitSchemaCondition>;
    sync: boolean | undefined;
    type: string | FormKitTypeDefinition;
    validation: string | Array<[rule: string, ...args: any]>;
    validationLabel: string | ((node: FormKitNode) => string);
    validationMessages: Record<string, string | ((ctx:{
        node: FormKitNode;
        name: string;
        args: any[];
    }) => string)>;
    validationRules: Record<string, (node: FormKitNode) => boolean | Promise<boolean>>;
}

FormKitSchemaExtendableSection

Uma função que é chamada com um argumento de extensões e retorna um nó de esquema válido.

interface FormKitSchemaExtendableSection {
    _s?: string;
    (extensions: Record<string, Partial<FormKitSchemaNode>>): FormKitSchemaNode;
}

FormKitSection

Uma função que, quando chamada, retorna uma função que por sua vez pode ser chamada com um parâmetro de extensão.

interface FormKitSection<T = FormKitSchemaExtendableSection> {
    (...children: Array<FormKitSchemaExtendableSection | string | FormKitSchemaCondition>): T;
}

FormKitSelectSlots

Os slots disponíveis para a entrada de seleção, estes estendem os slots base.

interface FormKitSelectSlots<Props extends FormKitInputs<Props>> extends FormKitBaseSlots<Props> {
    default: FormKitSlotData<Props>;
    option: FormKitSlotData<Props, OptionSlotData<Props>>;
    selectIcon: FormKitSlotData<Props>;
}

FormKitSlotData

A forma do objeto de contexto que é passado para cada slot.

interface FormKitSlotData<Props extends FormKitInputs<Props>, E extends Record<string, any> = {}> {
    (context: FormKitFrameworkContext<PropType<Props, 'value'>>&E): any;
}

FormKitTextSlots

Os slots disponíveis para a entrada de texto FormKitText, estes estendem os slots base.

interface FormKitTextSlots<Props extends FormKitInputs<Props>> extends FormKitBaseSlots<Props> {
}

OptionSlotData

Os dados disponíveis para slots que têm uma opção no escopo.

interface OptionSlotData<Props extends FormKitInputs<Props>> {
    option: FormKitOptionsItem<PropType<Props, 'value'>>;
}

AllReals

Uma tentativa de capturar todos os valores não indefinidos. Isso é usado para definir várias condicionais onde indefinido não é um tipo concreto, mas todos os outros valores precisam seguir um ramo lógico.

export type AllReals = number | string | boolean | CallableFunction | Array<any> | null | Record<any, any>;

FormKitButtonSlots

Os slots disponíveis para a entrada de botão, estes estendem os slots base.

export type FormKitButtonSlots<Props extends FormKitInputs<Props>> = Omit<FormKitBaseSlots<Props>, 'inner'> & {
    default: FormKitSlotData<Props>;
};

FormKitEvents

Todos os eventos FormKit devem ser incluídos para um determinado conjunto de props.

export type FormKitEvents<Props extends FormKitInputs<Props>> = MergedEvents<Props>;

FormKitFileValue

Uma "FileList" sintética baseada em array.

export type FormKitFileValue = FormKitFile[];

FormKitInputs

Todas as entradas FormKit devem ser incluídas para este tipo.

export type FormKitInputs<Props extends FormKitInputs<Props>> = MergedProps<Props>[keyof MergedProps<Props>];

FormKitInputSchema

Ou um nó de esquema, ou uma função que retorna um nó de esquema.

export type FormKitInputSchema = ((children?: FormKitSchemaDefinition) => FormKitSchemaNode) | FormKitSchemaNode;

FormKitOptionsList

Um array de itens de opção.

export type FormKitOptionsList = FormKitOptionsItem[];

FormKitOptionsListWithGroups

Um array de itens de opção com um grupo.

export type FormKitOptionsListWithGroups = Array<FormKitOptionsItem | FormKitOptionsGroupItem>;

FormKitOptionsListWithGroupsProp

Um array de itens de opção com suporte a grupo — onde a opção dos grupos pode ser qualquer tipo válido de FormKitOptionsProp.

export type FormKitOptionsListWithGroupsProp = Array<FormKitOptionsItem | FormKitOptionsGroupItemProp>;

FormKitOptionsProp

Os tipos de opções que podem ser passados para a propriedade de opções.

export type FormKitOptionsProp = FormKitOptionsPropExtensions[keyof FormKitOptionsPropExtensions];

FormKitOptionsPropWithGroups

Os tipos de opções que podem ser passados para a propriedade de opções.

export type FormKitOptionsPropWithGroups = FormKitOptionsProp | FormKitOptionsListWithGroupsProp;

FormKitOptionsValue

A forma correta de dados a serem passados para a propriedade de opções.

export type FormKitOptionsValue<Options> = Options extends FormKitOptionsProp ? Options extends Record<infer T, string> ? T : Options extends FormKitOptionsItem[] ? Options[number]['value'] : Options extends Array<infer T> ? T : unknown : unknown;

InputType

Seleciona o "tipo" das props se existir, caso contrário, o padrão é "texto".

export type InputType<Props extends FormKitInputs<Props>> = Props['type'] extends string ? Props['type'] : 'text';

MergedEvents

Mescla todos os eventos em um único tipo. Isso é então usado como a estrutura para

export type MergedEvents<Props extends FormKitInputs<Props>> = InputType<Props> extends keyof FormKitInputEvents<Props> ? FormKitBaseEvents<Props> & FormKitInputEvents<Props>[InputType<Props>] : FormKitBaseEvents<Props>;

MergedProps

Uma fusão de props de entrada, props base e props condicionais. Isso é então usado como a estrutura para o tipo FormKitInputs.

export type MergedProps<Props extends FormKitInputs<Props>> = {
    [K in keyof FormKitInputProps<Props>]: Omit<Partial<FormKitBaseProps>, keyof FormKitInputProps<Props>[K]> & Omit<Partial<FormKitRuntimeProps<Props>>, keyof FormKitInputProps<Props>[K]> & Omit<Partial<FormKitConditionalProps>, keyof FormKitInputProps<Props>[K]> & Partial<K extends keyof FormKitInputEventsAsProps<Props> ? Omit<FormKitEventsAsProps, keyof FormKitInputEventsAsProps<Props>[K]> & FormKitInputEventsAsProps<Props>[K] : FormKitEventsAsProps> & FormKitInputProps<Props>[K];
};

PropType

Extrai o tipo de uma propriedade fornecida.

export type PropType<Props extends FormKitInputs<Props>, T extends keyof FormKitInputs<Props>> = Extract<FormKitInputs<Props>, {
    type: Props['type'] extends string ? Props['type'] : 'text';
}>[T];