MenuChevron Down
Combobox Boîte Combinée - Docs - Artefact

Combobox Boîte Combinée

Forms
Tier 2

Introduction

Un widget qui combine une saisie de texte avec une zone de liste, permettant aux utilisateurs de filtrer et de sélectionner parmi une liste d'options.

Hydratation

Niveau 2 — détection automatique intelligente. Une « Combobox » s'affiche sous forme de HTML statique et ne fournit aucun JS client à moins qu'un signal comportemental ne soit présent. Passez interactive={true} pour forcer l'hydratation, ou interactive={false} pour forcer un rendu statique.

Il s'hydrate comme une île lorsque l'un des signaux suivants est présent (ou interactive={true} est défini) :

  • open (état ouvert contrôlé)- inputValue (valeur d'entrée contrôlée)- onToggle- onInputChange- onItemSelect (rappel de sélection d'élément — les listes déroulantes de sélection uniquement s'hydratent à ce sujet) | interactive prop | Résultat | | --- | --- | | omitted, no signal | Static — no client JS | | omitted, a signal present | Hydrates as an island | | true | Hydrates as an island | | false | Static — no client JS |

Toutes les décisions d'interactivité dans la bibliothèque sont acheminées via l'assistant partagé shouldHydrate() dans app/components/ui/island-utils.ts.

Utilisation

import { Combobox } from "../components/ui";

const items = [
  { label: "React", value: "react" },
  { label: "Solid", value: "solid" },
  { label: "Svelte", value: "svelte" },
  { label: "Vue", value: "vue" },
  { label: "Hono", value: "hono" },
];

export default function MyPage() {
  return (
    <Combobox
      interactive
      items={items}
      label="Framework"
      placeholder="Select a Framework"
      allowClear
    />
  );
}

Constructeur de pages CMS

Ce composant est disponible sous forme de bloc combobox dans Page Builder (content/pages/*.json) :

{
  "type": "combobox",
  "label": "Framework",
  "placeholder": "Select a Framework",
  "items": [
    { "label": "React", "value": "react" },
    { "label": "Hono", "value": "hono" }
  ]
}

Propriétés

PropriétéTypeDescription
itemsComboboxItem[]Un tableau d'éléments à afficher dans la liste.
labelChildL'étiquette de la liste déroulante.
placeholderstringLe texte d’espace réservé pour l’entrée.
allowClearbooleanS'il faut afficher un bouton d'effacement dans l'entrée.
interactivebooleanForce l’hydratation comme une île.
openbooleanSi la liste combobox est ouverte (contrôlée).
inputValuestringLa valeur actuelle de l'entrée (contrôlée).
onToggle() => voidRappel déclenché lorsque la liste est basculée.
onInputChange(value: string) => voidRappel déclenché lorsque la valeur d'entrée change.
onItemSelect(value: string) => voidRappel déclenché lorsqu'un élément est sélectionné.

ComboboxItem

PropriétéTypeDescription
labelstringLe texte affiché pour l'élément.
valuestringLa valeur unique de l'article.
disabledbooleanSi l'élément est désactivé.