Forms

ColorPicker

Selettore colore nativo con formato hex, visualizzazione del valore, label, stati di errore e loading.

Import

import { ColorPicker } from '@pzeta/vue-components'

Esempio Base

Props

PropTipoDefaultDescrizione
modelValuestring'#2563eb'Valore del colore in formato hex (v-model).
format'hex' | 'rgb' | 'hsl''hex'Formato del colore. Attualmente supportato solo hex con input nativo.
labelstringundefinedEtichetta del color picker.
showValuebooleanfalseMostra il valore hex come testo accanto al picker.
helperTextstring | nullnullTesto di aiuto visualizzato sotto il componente.
errorstring | nullnullMessaggio di errore visualizzato sotto il componente.
disabledbooleanfalseDisabilita il componente.
invalidbooleanfalseMarca il picker come non valido (stile di errore visivo sull'input).
requiredbooleanfalseMarca il campo come obbligatorio.
loadingbooleanfalseMostra il loading spinner e blocca l'interazione.
loadingIconstringDa configIcona personalizzata per il loading.
namestringundefinedAttributo name del campo (per form HTML).
inputIdstringundefinedID dell'input color (per associazione a label).
classstring''Classe CSS aggiuntiva sul wrapper del componente.

Emits

EventoPayloadDescrizione
update:modelValuestringEmesso al cambio colore (per v-model). Valore in formato hex.
change{ originalEvent: Event; value: string }Emesso al cambio con l'evento originale e il nuovo valore hex.

Slot

Il componente ColorPicker non espone slot personalizzabili.

Esempi

Con Valore Visibile

Con Helper Text

Stato Disabilitato

Stato Loading

Stato di Errore

Picker Multipli con Palette Preset

<template>
  <div class="space-y-4">
    <ColorPicker v-model="primary" label="Colore Primario" show-value />
    <ColorPicker v-model="danger"  label="Colore Pericolo"  show-value />
    <ColorPicker v-model="success" label="Colore Successo"  show-value />
  </div>
  <div class="flex gap-2 mt-4">
    <div v-for="preset in presets" :key="preset" class="flex gap-1">
      <button
        class="w-8 h-8 rounded border"
        :style="{ backgroundColor: preset }"
        @click="primary = preset"
      />
    </div>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const primary = ref('#2563eb')
const danger  = ref('#ef4444')
const success = ref('#10b981')

const presets = ['#2563eb', '#7c3aed', '#db2777', '#dc2626', '#ea580c', '#16a34a']
</script>

Accessibilità

  • Il <input type="color"> nativo è accessibile agli screen reader con il prop label come title.
  • inputId associa l'input a un elemento <label> esterno.
  • Quando loading è true, aria-busy="true" è impostato sull'input.
  • In stato disabled o loading l'input è inattivo (disabled).
  • Il prop required attiva la marcatura visiva obbligatoria tramite FormLabel.

TypeScript

import type { ColorPickerProps, ColorPickerEmits, ColorFormat } from '@pzeta/vue-components'