MenuChevron Down
Editable Texto Editável - Docs - Artefact

Editable Texto Editável

Forms
Detecção automática inteligente

Introdução

Um campo de texto em linha que é exibido como texto simples até ser ativado (por foco, clique ou clique duplo), e então muda para um input editável com controles de enviar/cancelar.

Uso

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

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

Composição personalizada

Passe children para ter controle total sobre o layout de preview/input/controles:

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>
  );
}

Construtor de páginas CMS

Este componente está disponível como um bloco editable no Construtor de páginas (content/pages/*.json):

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

Ele sempre renderiza interactive no Construtor de páginas.

Propriedades

Root

PropTipoDescrição
valuestringO valor atual (controlado).
defaultValuestringO valor inicial (não controlado).
editbooleanSe o modo de edição está ativo (controlado).
defaultEditbooleanO estado inicial do modo de edição (não controlado).
activationMode"focus" | "dblclick" | "click" | "none"Como o preview entra em modo de edição. Padrão "focus".
submitMode"enter" | "blur" | "both" | "none"Quais interações confirmam o valor. Padrão "both".
selectOnFocusbooleanSe o texto do input é selecionado quando ele é focado. Padrão true.
autoResizebooleanMantém o preview visível (dimensionado ao conteúdo) durante a edição, em vez de ocultá-lo.
disabledbooleanDesabilita toda a interação.
readOnlybooleanImpede entrar em modo de edição enquanto ainda permite o foco.
requiredbooleanMarca o input subjacente como obrigatório.
invalidbooleanMarca o campo como inválido.
placeholderstring | { edit: string; preview: string }Texto de espaço reservado, opcionalmente diferente entre o input e o preview.
maxLengthnumberComprimento máximo do input.
namestringNome do input subjacente, para envio nativo de formulário.
formstringAssocia o input a um <form> pelo id.
translationsPartial<EditableTranslations>Sobrescritas para as strings ARIA de editar/enviar/cancelar/input.
size"2xs" | "xs" | "sm" | "md" | "lg"Tamanho visual. Padrão "md".
onValueChange(details: { value: string }) => voidChamado conforme o valor do input muda.
onValueCommit(details: { value: string }) => voidChamado quando o valor é enviado.
onValueRevert(details: { value: string }) => voidChamado quando a edição é cancelada.
onEditChange(details: { edit: boolean }) => voidChamado quando o modo de edição é alternado.
interactivebooleanForça (ou suprime) a hidratação como ilha.
classstringClasses CSS personalizadas para o elemento raiz.

Composição padrão

PropTipoDescrição
labelJSX.Element | stringRótulo renderizado acima do campo.
childrenJSX.ElementConteúdo extra anexado após o preview/input/controles padrão.

Subcomponentes

ParteDescrição
Editable.Label<label> vinculado ao input; clicar nele foca o preview.
Editable.AreaEnvolve Preview e Input no mesmo slot de layout.
Editable.PreviewA exibição somente leitura mostrada quando não se está editando; role="button", ativável por teclado conforme activationMode.
Editable.InputO <input> mostrado durante a edição; trata Escape para cancelar e Enter/perda de foco para enviar conforme submitMode.
Editable.ControlEnvolve os disparadores de editar/enviar/cancelar.
Editable.EditTriggerEntra em modo de edição. Oculto enquanto já se está editando.
Editable.SubmitTriggerConfirma o valor e sai do modo de edição. Oculto enquanto não se está editando.
Editable.CancelTriggerDescarta as alterações e sai do modo de edição. Oculto enquanto não se está editando.
Editable.ContextAcesso via render-prop ao contexto editável: <Editable.Context>{(ctx) => ...}</Editable.Context>.

Acessibilidade

  • Preview é operável por teclado (tabIndex={0}, Enter/Space) sempre que activationMode for "click" ou "dblclick"; com o modo "focus", simplesmente tabular até ele abre o modo de edição.
  • EditTrigger / SubmitTrigger / CancelTrigger obtêm seus aria-label de translations, e são ocultados (não apenas visualmente, por meio do atributo hidden) quando não são aplicáveis ao modo atual.
  • Input carrega aria-invalid quando invalid é definido, e aria-label a partir de translations.input.