MenuChevron Down
Editable Modifiable - Docs - Artefact

Editable Modifiable

Forms
Tier 2

Introduction

Un champ de texte en ligne qui s'affiche sous forme de texte brut jusqu'à ce qu'il soit activé (par focus, cliquez ou double-cliquez), puis passe à une entrée modifiable avec soumettre/annuler les contrôles.

Utilisation

Artefact UI Suite
Add a description…
import { Editable } from "../components/ui";

export default function MyPage() {
  return (
    <Editable label="Project name" defaultValue="Artefact UI Suite" />
  );
}

Composition personnalisée

Passez « enfants » pour un contrôle total sur la disposition aperçu/entrée/contrôles :

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

export default function MyPage() {
  return (
    <Editable defaultValue="Untitled" activationMode="dblclick">
      <Editable.Label>Title</Editable.Label>
      <Editable.Area>
        <Editable.Preview />
        <Editable.Input />
      </Editable.Area>
      <Editable.Control>
        <Editable.EditTrigger>Edit</Editable.EditTrigger>
        <Editable.SubmitTrigger>Save</Editable.SubmitTrigger>
        <Editable.CancelTrigger>Cancel</Editable.CancelTrigger>
      </Editable.Control>
    </Editable>
  );
}

Constructeur de pages CMS

Ce composant est disponible sous forme de bloc « éditable » dans le Page Builder (content/pages/*.json) :

{
  "type": "editable",
  "label": "Project name",
  "defaultValue": "Artefact UI Suite",
  "placeholder": "Untitled",
  "size": "md",
  "activationMode": "focus",
  "submitMode": "both"
}

Il rend toujours « interactif » dans Page Builder.

Propriétés

Racine

PropriétéTypeDescription
valuestringLa valeur actuelle (contrôlée).
defaultValuestringLa valeur initiale (non contrôlée).
editbooleanSi le mode édition est actif (contrôlé).
defaultEditbooleanL'état initial du mode d'édition (non contrôlé).
activationMode"focus" | "double clic" | "click" | "none"How the preview enters edit mode. Default "focus".
submitMode"enter" | "se brouiller" | "both" | "none"Which interactions commit the value. Default "both".
selectOnFocusbooleanIndique si le texte de l'entrée est sélectionné lorsqu'il est ciblé. Par défaut « vrai ».
autoResizebooleanGardez l'aperçu visible (dimensionné en fonction du contenu) lors de la modification au lieu de le masquer.
disabledbooleanDésactive toutes les interactions.
readOnlybooleanEmpêche d'entrer en mode édition tout en permettant la mise au point.
requiredbooleanMarque l’entrée sous-jacente requise.
invalidbooleanMarque le champ comme invalide.
placeholderstring | { modifier : chaîne ; aperçu : chaîne }Placeholder text, optionally different between the input and the preview.
maxLengthnumberLongueur d'entrée maximale.
namestringNom de l’entrée sous-jacente, pour la soumission de formulaire natif.
formstringAssocie l'entrée à un <form> par identifiant.
translationsPartial<EditableTranslations>Remplacements pour les chaînes ARIA d'édition/soumission/annulation/entrée.
size"2xs" | "xs" | "sm" | "md" | "lg"Visual size. Default "md".
onValueChange(details: { value: string }) => voidAppelé lorsque la valeur d’entrée change.
onValueCommit(details: { value: string }) => voidAppelé lorsque la valeur est soumise.
onValueRevert(details: { value: string }) => voidAppelé lorsque l'édition est annulée.
onEditChange(details: { edit: boolean }) => voidAppelé lorsque le mode édition bascule.
interactivebooleanForce (ou supprime) l’hydratation comme une île.
classstringClasses CSS personnalisées pour l'élément racine.

Composition par défaut

PropriétéTypeDescription
labelJSX.Element | chaîneLabel rendered above the field.
childrenJSX.ElementContenu supplémentaire ajouté après l'aperçu/entrée/contrôles par défaut.

Sous-composants

PartieDescription
Editable.Label<label> lié à l'entrée ; cliquer dessus focalise l'aperçu.
Editable.AreaEncapsule « Aperçu » et « Input » dans le même emplacement de mise en page.
Editable.PreviewL'affichage en lecture seule affiché lorsqu'il n'y a pas d'édition ; role="button", activable au clavier par activationMode.
Editable.InputLe <input> affiché lors de l'édition ; gère Escape-to-cancel et Enter/blur-to-submit par submitMode.
Editable.ControlEncapsule les déclencheurs d'édition/soumission/annulation.
Editable.EditTriggerPasse en mode édition. Masqué lors de l'édition déjà.
Editable.SubmitTriggerValide la valeur et quitte le mode édition. Masqué pendant la non-édition.
Editable.CancelTriggerAnnule les modifications et quitte le mode édition. Masqué pendant la non-édition.
Editable.ContextAccès Render-prop au contexte modifiable : <Editable.Context>{(ctx) => ...}</Editable.Context>.

Accessibilité

  • Aperçu est utilisable au clavier (tabIndex={0}, Entrée/Espace) à chaque fois activationMode est "click" ou "dblclick" ; avec le mode "focus", il suffit de cliquer dessus pour ouvrir le mode édition.
  • EditTrigger / SubmitTrigger / CancelTrigger récupère les aria-label de traductions, et sont masquées (pas seulement visuellement, via le attribut) lorsqu’il n’est pas applicable au mode actuel.
  • Input porte aria-invalid lorsque invalid est défini et aria-label à partir de translations.input.