A entrada colorpicker permite uma seleção avançada de cores — incluindo suporte ao canal alfa. Ela suporta cores nos formatos Hex, HSLA e RGBA e pode ser configurada para fornecer uma lista pré-definida de cores.

Mais importante, ao contrário da entrada nativa color, o colorpicker oferece uma experiência de usuário consistente, previsível e acessível em navegadores e sistemas operacionais.

A entrada colorpicker é totalmente navegável pelo teclado e vem com marcação acessível.

Exemplo básico

Carregar exemplo ao vivo

Formatos de cor

Formatos suportados

O colorpicker suporta formatos em Hex, HSLA e RGBA. Você pode definir seu formato desejado com a propriedade format e os valores de cores do colorpicker serão retornados nesse formato. Seu formato escolhido também será a configuração padrão para os campos de entrada que aparecem no painel do colorpicker.

Carregar exemplo ao vivo

Formato do valor

Pode haver momentos em que você deseja mostrar um formato aos usuários como padrão, mas retornar um formato diferente. Você pode usar a propriedade value-format para especificar um formato de valor de retorno independente da propriedade format.

Carregar exemplo ao vivo

Amostras

As amostras são fornecidas usando a propriedade options e usam a mesma API options que as entradas select, dropdown, autocomplete e taglist do FormKit.

Amostras simples

Aqui está um conjunto simples de amostras usando a propriedade options e fornecendo-a com um array plano de valores de cores. Seus valores fornecidos podem estar em qualquer formato de cor suportado (Hex, HSLA e RGBA) e serão automaticamente convertidos para o format especificado do colorpicker, que por padrão é Hex.

Carregar exemplo ao vivo

Amostras agrupadas

O colorpicker também suporta options agrupadas. Isso permite que você crie conjuntos de amostras dentro do seletor de cores agrupadas sob um título comum.

Carregar exemplo ao vivo

Apenas amostras

Você pode criar um color-picker "apenas amostras" usando as propriedades panel-controls e panel-format e configurando-as como false.

Ao mostrar apenas amostras no modo pop-over (o padrão), adicionar a propriedade close-on-select fechará o pop-over quando uma amostra for selecionada.

Carregar exemplo ao vivo

Inserindo pelo nome do swatch

Se os swatches fornecidos através da propriedade options possuem labels, então você pode chamar node.input() com um nome de swatch e a cor associada será definida para você.

Carregar exemplo ao vivo

Conta-gotas

A entrada colorpicker suporta a API EyeDropper nativa do navegador. Se o EyeDropper for suportado em seu navegador e você não tiver desativado o EyeDropper definindo a propriedade eye-dropper como false, então você verá um botão de conta-gotas à direita dos controles deslizantes de matiz e alfa.

Carregar exemplo ao vivo

Colando valores

Por padrão, uma entrada colorpicker permitirá colar quaisquer valores de cor válidos enquanto o foco do usuário estiver em qualquer lugar da entrada. Os valores serão convertidos imediatamente para o seu format desejado.

Você pode desativar a capacidade de colar um valor definindo a propriedade allow-paste como false.

Carregar exemplo ao vivo

Props & Atributos

PropTypePadrãoDescrição
formatstringhexO formato que a entrada colorpicker deve mostrar na pré-visualização da entrada e ser a configuração padrão para a entrada do painel de seleção. Pode ser definido como hex, hsla ou rgba.
value-formatstringundefinedO formato que deve ser retornado da entrada colorpicker independentemente do formato exibido. Se não especificado, o valor da propriedade format será usado.
panel-controlsbooleantrueUsado para controlar a exibição do gradiente de Luminosidade/Saturação e dos controles deslizantes de Matiz e Alfa.
panel-formatbooleantrueUsado para controlar se a exibição dos campos de entrada de cor e botão de alternância de formato.
eye-dropperbooleantrueUsado para controlar a exibição do controle de conta-gotas. Requer um navegador que suporte a API EyeDropper. Se ativado em um navegador não suportado, o controle se comportará como se estivesse definido para false.
inlinebooleanfalseQuando definido como true, o `colorpicker` renderizará seu painel como um elemento embutido em vez de como um pop-over.
optionsArray/Object[]Um objeto de pares valor/label ou um array de strings, ou um array de objetos que devem conter uma propriedade label e value. Suporta opções agrupadas através de um array de objetos que contêm chaves group e options onde options é uma definição de options aninhada. O agrupamento é suportado apenas em um nível de profundidade.
show-valuebooleantrueUsado para controlar a exibição do valor da cor atual na pré-visualização da entrada. Usa a propriedade format para determinar qual valor exibir.
close-on-selectbooleanfalseQuando definido como true, o painel colorpicker fechará quando uma opção de swatch predefinida for escolhida.
allow-pastebooleantruePermite colar qualquer string de cor válida nos formatos Hex, HSLA, ou RGBA em um colorpicker que contém o foco do usuário. A string colada será imediatamente definida como o valor do colorpicker e convertida para o formato desejado.
popoverbooleanfalseRenderiza o painel de UI da entrada usando a API Popover do navegador.
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.

A estrutura da entrada colorpicker muda dependendo da existência da propriedade inline:

Estrutura pop-over (padrão)

Pré-visualização da Entrada

View on a larger screen to see this section diagram.

Escolha uma cor
⬛️
#000000
Escolha sua cor favorita.
A cor é obrigatória

Painel pop-over

View on a larger screen to see this section diagram.

(panelClose só é mostrado em telas pequenas sensíveis ao toque quando no modo pop-over)
🖼️
⬛️
🌈
👻
👁️
#️⃣
0️⃣
0️⃣
0️⃣
0️⃣
0️⃣
0️⃣
1️⃣
🟦
🟥
🟨

Estrutura em linha

View on a larger screen to see this section diagram.

Escolha uma cor
Escolha sua cor favorita.
🖼️
⬛️
🌈
👻
👁️
#️⃣
0️⃣
0️⃣
0️⃣
0️⃣
0️⃣
0️⃣
1️⃣
🟦
🟥
🟨
A cor é obrigatória
Section-keyDescrição
swatchPreviewUm div que envolve o elemento canvas de pré-visualização do swatch e a string de valor da cor exibida.
canvasSwatchPreviewUm elemento canvas que renderiza a seleção de cor atual.
valueStringUm elemento span que contém a string de valor de cor atual no formato definido pela propriedade format.
panelO elemento de envolvimento para todos os controles do seletor de cores
panelCloseUma seção prefixada do painel que contém um botão de fechar. Apenas exibido em dispositivos de tela sensível ao toque pequenos onde um tratamento de 'posição fixa' é aplicado.
iconCloseUm elemento para exibir um ícone dentro da seção panelClose.
controlGroupUm elemento de envolvimento para todos os elementos de controle de cor dentro do painel
previewUm elemento de envolvimento para a pré-visualização da cor atual.
canvasPreviewUm elemento canvas que renderiza a seleção de cor atual.
LSUm elemento de envolvimento para os controles de Luminosidade/Saturação
canvasLSUm elemento canvas que renderiza as cores atualmente disponíveis dado o hue atual.
controlLSUm elemento estilizado como o controle para o canvas LS.
hueUm elemento de envolvimento para os controles de matiz
canvasHueUm elemento canvas que renderiza todos os hue disponíveis com 50% de luminosidade.
controlHueUm elemento estilizado como o controle para o canvas de matiz.
alphaUm elemento de envolvimento para os controles de opacidade
canvasAlphaUm elemento canvas que renderiza a cor selecionada atual de 0% a 100% de opacidade.
controlAlphaUm elemento estilizado como o controle para o canvas de opacidade.
eyeDropperUm elemento que atua como um gatilho para habilitar a API EyeDropper do navegador. Apenas exibido em navegadores compatíveis.
iconEyeDropperUm elemento para exibir um ícone dentro da seção eyeDropper.
formatFieldUm elemento de envolvimento que contém todos os campos de entrada de formato de cor e o controle de alternância de formato. Apenas o(s) campo(s) relevante(s) ao formato de painel selecionado atualmente será exibido.
colorInputGroupUm elemento de envolvimento que envolve um ou mais campos de entrada associados a um determinado formato de cor.
hexFieldA entrada para um formato de cor hex. Suporta o formato #RRGGBBAA embora valores hex de alfa não sejam obrigatórios.
rFieldA entrada para o valor R de um formato de cor RGBA.
gFieldA entrada para o valor G de um formato de cor RGBA.
bFieldA entrada para o valor B de um formato de cor RGBA.
hFieldA entrada para o valor H de um formato de cor HSLA.
sFieldA entrada para o valor S de um formato de cor HSLA.
lFieldA entrada para o valor L de um formato de cor HSLA.
aFieldA entrada para o valor A de um formato de cor RGBA ou HSLA.
formatSwitcherUm elemento que atua como um gatilho para mudar o formato de cor atualmente exibido no painel do seletor de cores. Não tem efeito nas configurações de format e value-format da entrada.
iconSwitchUm elemento para exibir um ícone dentro da seção formatSwitcher.
swatchesUm elemento de envolvimento que contém todas as amostras disponíveis fornecidas pela propriedade options.
swatchUm elemento que lida com a renderização de cada opção (ou grupo de opções) fornecida pela propriedade options.
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 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
swatchPreviewtabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
rolebuttonIndica às tecnologias assistivas que este elemento funciona como um botão.
aria-valuetextDefine o texto legível por humanos do valor.
panelaria-roledialogQuando o layout está definido para popover, adiciona este atributo.
aria-modaltrueQuando o layout está definido para popover, adiciona este atributo.
aria-labelFornece um nome acessível.
panelClosetabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando o painel está fechado e 0 quando aberto.
aria-labelFornece um nome acessível.
controlGrouprolegroupIndica às tecnologias assistivas que este elemento funciona como um grupo.
canvasLSaria-hiddentrueFaz com que este elemento não seja exposto à API de acessibilidade.
controlLStabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
rolesliderIndica às tecnologias assistivas que este elemento funciona como um controle deslizante.
aria-valueminDefine o valor mínimo permitido.
aria-valuemaxDefine o valor máximo permitido.
aria-valuetextDefine o texto legível por humanos do valor.
canvasHuearia-hiddentrueFaz com que este elemento não seja exposto à API de acessibilidade.
controlHuetabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
rolesliderIndica às tecnologias assistivas que este elemento funciona como um controle deslizante.
aria-valueminDefine o valor mínimo permitido.
aria-valuemaxDefine o valor máximo permitido.
aria-valuenowDefine o texto legível por humanos do valor.
canvasAlphaaria-hiddentrueFaz com que este elemento não seja exposto à API de acessibilidade.
controlAlphatabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
rolesliderIndica às tecnologias assistivas que este elemento funciona como um controle deslizante.
aria-valueminDefine o valor mínimo permitido.
aria-valuemaxDefine o valor máximo permitido.
aria-valuenowDefine o texto legível por humanos do valor.
canvasPreviewaria-hiddentrueFaz com que este elemento não seja exposto à API de acessibilidade.
canvasSwatchPreviewaria-hiddentrueFaz com que este elemento não seja exposto à API de acessibilidade.
eyeDroppertabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
rolebuttonIndica às tecnologias assistivas que este elemento funciona como um botão.
colorInputGrouparia-rolegroupIndica às tecnologias assistivas que este elemento funciona como um grupo.
hexFieldtabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
forAssocia o rótulo a um elemento de entrada. Os usuários podem clicar no rótulo para focar a entrada ou alternar entre estados.
rFieldtabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
forAssocia o rótulo a um elemento de entrada. Os usuários podem clicar no rótulo para focar a entrada ou alternar entre estados.
gFieldtabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
forAssocia o rótulo a um elemento de entrada. Os usuários podem clicar no rótulo para focar a entrada ou alternar entre estados.
bFieldtabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
forAssocia o rótulo a um elemento de entrada. Os usuários podem clicar no rótulo para focar a entrada ou alternar entre estados.
aFieldtabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
forAssocia o rótulo a um elemento de entrada. Os usuários podem clicar no rótulo para focar a entrada ou alternar entre estados.
hFieldtabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
forAssocia o rótulo a um elemento de entrada. Os usuários podem clicar no rótulo para focar a entrada ou alternar entre estados.
sFieldtabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
forAssocia o rótulo a um elemento de entrada. Os usuários podem clicar no rótulo para focar a entrada ou alternar entre estados.
lFieldtabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
forAssocia o rótulo a um elemento de entrada. Os usuários podem clicar no rótulo para focar a entrada ou alternar entre estados.
formatSwitchertabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
rolebuttonIndica às tecnologias assistivas que este elemento funciona como um botão.
aria-labelFornece um nome acessível.
swatchtabindex-1 ou 0Prioriza a ordem de foco do teclado definindo-a para -1 quando desativado e 0 quando ativado.
rolebuttonIndica às tecnologias assistivas que este elemento funciona como um botão.
aria-labelFornece um nome acessível.
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.