Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Shadcn Editable for React and Tailwind

Allows user to edit text in-place.

Edit user

Click in the field or edit button to start editing

Vinicius Vicentini
@vinihvc

Installation

bunx --bun shadcn@latest add https://kit.dev/r/editable.json

Anatomy

Editable
├── EditableArea
├── EditableLabel
├── EditableInput
├── EditableInput
├── EditableEditTrigger
├── EditableSubmitTrigger
├── EditableCancelTrigger
└── EditableControl

Usage

import { CheckIcon, XIcon } from "lucide-react";
import { Button } from "@/components/ui/button";
import {
  Card,
  CardContent,
  CardHeader,
} from "@/components/ui/card";
import {
  Editable,
  EditableArea,
  EditableCancelTrigger,
  EditableControl,
  EditableInput,
  EditablePreview,
  EditableSubmitTrigger,
} from "@/components/ui/editable";
import {
  Field,
  FieldGroup,
  FieldLabel,
} from "@/components/ui/field";
import { Input } from "@/components/ui/input";
<Card className="w-full max-w-sm">
  <CardHeader
    description="Click in the field or edit button to start editing"
    title="Edit user"
  />
  <CardContent>
    <FieldGroup>
      <Field>
        <FieldLabel>Name</FieldLabel>
        <Editable defaultValue="Vinicius Vicentini">
          <EditableArea>
            <EditableInput asChild>
              <Input className="w-full" />
            </EditableInput>
            <EditablePreview />
          </EditableArea>
          <EditableControl>
            <EditableCancelTrigger asChild>
              <Button size="icon-md" variant="outline">
                <XIcon />
              </Button>
            </EditableCancelTrigger>
            <EditableSubmitTrigger asChild>
              <Button size="icon-md" variant="outline">
                <CheckIcon />
              </Button>
            </EditableSubmitTrigger>
          </EditableControl>
        </Editable>
      </Field>
      <Field>
        <FieldLabel>Username</FieldLabel>
        <Editable defaultValue="@vinihvc">
          <EditableArea>
            <EditableInput asChild>
              <Input />
            </EditableInput>
            <EditablePreview />
          </EditableArea>
          <EditableControl>
            <EditableCancelTrigger asChild>
              <Button size="icon-md" variant="outline">
                <XIcon />
              </Button>
            </EditableCancelTrigger>
            <EditableSubmitTrigger asChild>
              <Button size="icon-md" variant="outline">
                <CheckIcon />
              </Button>
            </EditableSubmitTrigger>
          </EditableControl>
        </Editable>
      </Field>
    </FieldGroup>
  </CardContent>
</Card>

Accessibility

KeyDescription
Escape
Cancel.
Enter
Activate the focused item.
Space
Activate the focused control.

Demos

Activation Click

Activation Focus

Activation None

Controlled

Dblclick

Orientation Horizontal

Orientation Vertical

Size Lg

Size Md

Size Sm

With Textarea

Without Controls

API Reference

Editable

div

PropType
AttributeType

EditableArea

div

PropType
AttributeType

EditableInput

input

PropType
AttributeType

EditableEditTrigger

button

PropType
AttributeType

EditableSubmitTrigger

button

PropType
AttributeType

EditableCancelTrigger

button

PropType
AttributeType

EditableControl

div

PropType
AttributeType

EditablePreview

span

PropType
AttributeType

useEditable

PropType