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

Introdução

A entrada slider é uma versão avançada e altamente configurável da entrada nativa HTML range. Algumas adições notáveis em comparação com a entrada range padrão são:

  • Suporte para entradas de múltiplos valores.
  • Exibir tooltips para mostrar os valores selecionados.
  • Mostrar entradas vinculadas para valores mínimos e máximos.
  • Renderizar marcas de escala para os passos de valor.
  • Adicionar marcas de escala arbitrárias.
  • Forçar a seleção para se ajustar às marcas de escala.
  • Renderizar dados de gráfico de barras vinculados aos valores de seleção.

Visão Geral do Controle Deslizante

7 mins

Exemplo básico

Carregar exemplo ao vivo

Propriedades nativas

Se você está familiarizado com o uso da entrada range HTML nativa, você verá que muitas das propriedades existentes com as quais você está familiarizado funcionam como esperado com a entrada slider.

Carregar exemplo ao vivo

Teclas modificadoras do teclado

Mesmo em sua forma mais simples, a entrada slider tem alguns truques na manga. Assim como a entrada range nativa, você pode usar as teclas de seta para ajustar o valor da entrada quando ela está focada — mas com a entrada slider, você pode segurar a tecla shift para incrementar em 10x e a tecla modificadora do seu sistema (command ou ctrl) para saltar para os valores mínimos/máximos.

Entrada de número pelo teclado

Sempre que você tiver um manipulador focado em uma entrada slider, você pode digitar um valor no seu teclado e, após uma pequena demora, seu manipulador slider será definido para o valor fornecido — ou a correspondência disponível mais próxima.

Múltiplos valores

Para renderizar dois manipuladores de valor em uma entrada slider, forneça um array como valor da entrada. Os manipuladores de controle podem ser arrastados um através do outro e o valor do array resultante sempre será retornado ordenado do menor para o maior.

Carregar exemplo ao vivo

Personalizando manipuladores

Usando os slots maxHandleInner (padrão) e minHandleInner, você pode personalizar a aparência dos seus manipuladores slider. O slot maxHandleInner é usado para entradas slider de valor único.

Carregar exemplo ao vivo

Personalizando tooltips

Visibilidade do tooltip

Por padrão, os tooltips do slider são exibidos ao passar o mouse e quando um manipulador de seleção está sendo arrastado. Você pode forçar os tooltips para um estado ligado ou desligado usando a propriedade tooltip e fornecendo um valor booleano.

Carregar exemplo ao vivo

Formatação de Tooltip

Ao fornecer uma função para a propriedade tooltip-format, você pode personalizar o valor do seu slider tooltip. Sua função tooltip-format receberá dois argumentos:

value: O valor atual que seria exibido no tooltip por padrão. handle: O manipulador atual sendo afetado pela função. Pode ser min ou max.

Carregar exemplo ao vivo

Ao usar a propriedade tooltip-format, você pode introduzir variedade nas suas entradas de slider — especialmente quando combinado com o sistema de propriedades de classe section-key do FormKit.

Carregar exemplo ao vivo

Entradas de número vinculadas

Às vezes, uma entrada de estilo de intervalo é mais útil para os usuários se eles também puderem inserir valores numéricos diretamente em campos vinculados. Você pode revelar entradas de number que estão vinculadas aos valores dos manipuladores de intervalo do slider definindo a propriedade show-input como true.

Carregar exemplo ao vivo

Atributos de entrada vinculados

As entradas de número vinculadas são entradas do FormKit. Você pode aplicar props a elas usando as props fornecidas:

  • input-attrs: vinculará o objeto fornecido por você a ambas as entradas min e max.
  • min-input-attrs: Objeto para vincular à entrada min vinculada.
  • max-input-attrs: Objeto para vincular à entrada max vinculada.
Carregar exemplo ao vivo

Marcas

Uso básico

A entrada de slider suporta a renderização de marcas na trilha da entrada. Ao definir a propriedade marks como true, as marcas serão renderizadas em cada intervalo de steps.

Carregar exemplo ao vivo

Com rótulos

Você pode habilitar rótulos para suas marcas definindo a propriedade mark-labels como true.

Carregar exemplo ao vivo

Marcas personalizadas

Ao fornecer um array de objetos para a propriedade marks em vez de um booleano, você pode colocar marcas arbitrárias na trilha do slider. Os objetos de marca devem ter as seguintes propriedades:

  • at: A posição (valor) na trilha onde a marca deve ser renderizada.
  • label: O rótulo a ser renderizado para a marca se a propriedade mark-labels estiver habilitada.
  • class: Uma string de classes para aplicar ao elemento da marca.
  • labelClasses: Uma string de classes para aplicar ao elemento do rótulo da marca.
Carregar exemplo ao vivo

Aderir às marcas

Ao fornecer marcas personalizadas, você pode querer forçar a seleção a aderir às marcas fornecidas. Isso pode ser alcançado com a propriedade snap-to-marks. Quando snap-to-marks é true, eventos de teclado irão saltar para a marca mais próxima e valores inseridos através do teclado ou entradas vinculadas irão aderir à marca disponível mais próxima.

Carregar exemplo ao vivo

Estilizando marcas

Você pode aplicar classes personalizadas às suas marcas e etiquetas de marca usando as propriedades class e labelClasses em seus objetos de marca.

Carregar exemplo ao vivo

Escalonando valores do controle deslizante

Por padrão, a entrada slider escala valores linearmente em toda a sua faixa. No entanto, você pode usar as propriedades scaling-function ou intervals para alterar esse comportamento.

Usando funções

A propriedade scaling-function aceita 3 valores:

  • A string linear — este é o comportamento padrão
  • A string log que aplicará uma função de escalonamento logarítmico ao seu slider
  • Um objeto que consiste em duas funções chamadas forward e reverse que aplicarão sua própria lógica de escalonamento.
Carregar exemplo ao vivo

Usando Intervalos

A propriedade intervals aceita um array de objetos onde cada objeto define um intervalo de alcance no slider. Cada objeto contém:

  • value: O ponto no slider onde o intervalo começa
  • step: O tamanho do passo que deve ser usado dentro do intervalo

Seu último intervalo cobrirá o alcance que se estende do seu value especificado até o valor da propriedade max no seu slider. Se o seu intervalo mais baixo não começar no valor mínimo possível do seu slider, então um intervalo cobrindo o alcance do valor min da propriedade do seu slider até o seu primeiro intervalo será criado para você. Seu valor de step será o valor da propriedade step na entrada do seu slider.

É importante notar que a representação visual dos intervalos na pista de um slider é baseada no número total de passos possíveis dentro de um dado intervalo e não no valor numérico bruto do intervalo.

Carregar exemplo ao vivo

Gráfico

Você pode renderizar um gráfico de barras acima do controle deslizante com valores arbitrários fornecendo um array para a propriedade chart. O array chart tem uma estrutura semelhante ao array marks. Cada objeto aninhado deve conter:

  • at: A posição (valor) na pista onde a barra para o gráfico deve ser renderizada.
  • value: Um valor numérico que será usado para calcular a altura relativa da barra no gráfico.

A entrada slider iterará sobre o seu array chart e determinará o maior value contido no array, e então dividirá todos os outros valores por esse maior valor para determinar as alturas relativas para renderizar as barras do gráfico.

Carregar exemplo ao vivo

Exemplo completo

Ao combinar as propriedades fornecidas para o componente slider, você pode criar uma entrada robusta para cobrir uma variedade de casos de uso. Aqui está um exemplo de um controle deslizante de faixa de preço.

Carregar exemplo ao vivo

Props & Atributos

PropTypePadrãoDescrição
chartarraynoneUm array de objetos contendo as chaves at e value. Renderiza um gráfico de barras de altura relativa acima da trilha do controle deslizante.
input-attrsobject{}Aplica atributos personalizados aos inputs FormKit aninhados vinculados para os valores mínimo e máximo.
intervalsarraynoneUm array de valores de intervalo consistindo de value e step usados para definir escalonamento diferenciado para diferentes seções da trilha do controle deslizante.
marksboolean || arrayfalseQuando true, renderiza marcas na trilha a cada valor de step. Quando um Array de objetos com as chaves at e label, renderiza uma marca na trilha no valor de at de cada objeto.
mark-labelsbooleanfalseHabilita a renderização de etiquetas abaixo das marcas na trilha
maxnumber100O valor máximo possível da faixa do controle deslizante.
max-input-attrsobject{}Aplica atributos personalizados ao input FormKit aninhado vinculado para o valor máximo.
minnumber0O valor mínimo possível da faixa do controle deslizante.
min-input-attrsobject{}Aplica atributos personalizados ao input FormKit aninhado vinculado para o valor mínimo.
prefixstringnoneCaracteres que sempre aparecerão no início do input.
scaling-functionstring || objectlinearDefine o comportamento de escalonamento para valores na trilha do controle deslizante renderizado usando uma string de valor predefinido ou um conjunto de funções personalizadas.
show-inputbooleanfalseRenderiza input(s) FormKit do type="number" que estão vinculados ao(s) valor(es) do controle deslizante
snap-to-marksbooleanfalseQuando habilitado, força a seleção do usuário a se ajustar às marcas
stepnumber1O valor mínimo pelo qual o valor do controle deslizante pode incrementar / decrementar.
suffixstringnoneCaracteres que sempre aparecerão no final do input.
tooltipbooleannoneQuando definido com um valor booleano, força a exibição do(s) tooltip(s) do manipulador do controle deslizante.
tooltip-formatfunctionnoneUma função que é fornecida o value e o handle para cada manipulador do controle deslizante que deve retornar uma string.
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.

Escolha sua faixa de preço
Selecione locais disponíveis por preço
📊
...
Você deve fornecer uma avaliação.
Section-keyDescrição
chartUm contêiner para os elementos da barra do gráfico.
chartBarUma barra individual para o elemento do gráfico.
fillO preenchimento para a faixa selecionada no controle deslizante.
handleMaxO manipulador de seleção de valor máximo. Este é o manipulador padrão para controles deslizantes de valor único.
handleMinO manipulador de seleção de valor mínimo.
handlesUm contêiner para os manipuladores de seleção da faixa
linkedValuesUm invólucro para as entradas vinculadas aos valores mínimo e máximo do controle deslizante.
markUma marca individual na faixa.
markLabelO rótulo para uma marca individual na faixa.
marksUm contêiner para todas as marcas na faixa
maxValueA entrada numérica do FormKit vinculada para o valor máximo do controle deslizante. Se o controle deslizante tiver apenas um valor, isso é renderizado como um descendente direto da seção sliderInner.
minValueA entrada numérica do FormKit vinculada para o valor mínimo do controle deslizante.
sliderInnerA div interior que contém o conteúdo do controle deslizante.
trackUm invólucro que contém toda a marcação da faixa para o controle deslizante.
trackInnerUm invólucro interior para fins de estilo que contém toda a marcação da faixa, excluindo o gráfico.
trackWrapperUm invólucro que contém toda a marcação da faixa, excluindo o gráfico.
tooltipMinA dica para o manipulador de seleção de valor mínimo
tooltipMaxA dica para o manipulador de seleção de valor máximo
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
maxValuetabindex-1Prioriza a ordem de foco do teclado definindo-a como -1 quando a entrada está desativada.
minValuetabindex-1Prioriza a ordem de foco do teclado definindo-a como -1 quando a entrada está desativada.
handleMaxtabindex-1 or 0Prioriza a ordem de foco do teclado definindo-a como -1 quando a entrada está desativada e 0 quando não está.
handleMintabindex-1 or 0Prioriza a ordem de foco do teclado definindo-a como -1 quando a entrada está desativada e 0 quando não está.
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 com o 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.