MenuChevron Down
Field Champ - Docs - Artefact

Field Champ

Forms
Tier 2

Introduction

Un composant fondamental pour les champs de formulaire, la gestion des étiquettes, du texte d'assistance, des messages d'erreur et de l'état de validation. Il suit le modèle « Smart Switcher », s'hydratant automatiquement comme un îlot interactif en cas de besoin.

Utilisation

Hydratation automatique intelligente

Le composant Field détermine automatiquement s'il doit être interactif. Il devient une île si l'un des accessoires suivants est fourni : interactive, onValueChange, value, defaultValue, validator ou minLength.

Validation

Field prend en charge la validation intégrée et personnalisée.

Longueur minimale

L'utilisation de minLength affichera automatiquement un message d'erreur si l'entrée est trop courte.

<Field
  label="Username"
  minLength={5}
  placeholder="Enter at least 5 characters"
/>

Validateur personnalisé

La prop validator accepte une fonction qui renvoie true pour valide, false pour invalide (en utilisant le message d'erreur par défaut) ou une string comme message d'erreur personnalisé.

<Field
  label="Email"
  validator={(value) => {
    if (!value.includes("@")) return "Must be a valid email";
    return true;
  }}
/>

La façon la plus simple d'utiliser Field consiste à utiliser les accessoires aplatis. Il rendra automatiquement une entrée.

Choose a unique username.
import { Field } from "../components/ui";

export default function MyPage() {
  return (
    <Field
      label="Username"
      helperText="Choose a unique username."
      placeholder="Type here..."
      minLength={3}
    />
  );
}

Héritage des ensembles de champs

Un Field imbriqué dans un Fieldset hérite du groupe disabled/required état, et son état "invalide" également - mais seulement lorsque le "Champ" n'a pas validation qui lui est propre (pas de validator/minLength et pas de invalid explicite soutenir). Un accessoire explicite sur « Field » l'emporte toujours sur la valeur héritée.

<Fieldset legend="Shipping address" disabled>
  {/* inherits disabled — no need to repeat it */}
  <Field label="Street" />
</Fieldset>

Notez que le <fieldset désactivé> natif désactive également chaque formulaire descendant contrôle au niveau du navigateur quel que soit cet héritage - l'héritage La prop disabled maintient uniquement le style/ARIA du Field en synchronisation avec cela, il ne peut pas être remplacé par activé à partir d'un ensemble de champs désactivé.

Composition

Pour plus de contrôle, vous pouvez envelopper d'autres composants comme « Textarea » ou des entrées personnalisées. Le « Field » fournit un contexte à ses enfants.

import { Field, Textarea } from "../components/ui";

export default function MyPage() {
  return (
    <Field
      label="Bio"
      helperText="Tell us about yourself."
      minLength={10}
    >
      <Textarea placeholder="A short bio" />
    </Field>
  );
}

Constructeur de pages CMS

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

{
  "type": "field",
  "label": "Username",
  "helperText": "Choose a unique username.",
  "required": true
}

Propriétés

PropriétéTypeDescription
childrenanyContenu à restituer à l'intérieur du composant. Si elle est fournie, l’entrée interne n’est pas rendue.
classstringClasses CSS personnalisées.
idstringIdentifiant unique. S’il n’est pas fourni, un est généré.
labelChildL'étiquette du champ.
helperTextChildLe texte d'assistance pour le champ.
errorTextChildLe texte d'erreur pour le champ. S'il est fourni sous forme de chaîne, il sera utilisé comme message.
disabledbooleanSi le champ est désactivé.
invalidbooleanSi le champ est dans un état invalide.
requiredbooleanSi le champ est obligatoire.
readOnlybooleanIndique si le champ est en lecture seule.
valuestringLa valeur actuelle (force le mode interactif).
defaultValuestringLa valeur initiale (force le mode interactif).
onValueChange(val: string) => voidRappel déclenché lorsque la valeur change (force le mode interactif).
minLengthnumberValidation de la longueur minimale (force le mode interactif).

| validator | `(val: string) => boolean \ | chaîne` | Custom validation function (forces interactive mode). |

| interactive | boolean | Force l’hydratation comme une île. |