A component that allows users to modify its content.
Double click to edit
Anatomy
Usage
<script> import {Editable} from 'ui-ingredients'; let value = $state('Hello world!');</script><Editable.Root> <Editable.Label>Label</Editable.Label> <Editable.Area> <Editable.Input /> <Editable.Preview /> </Editable.Area> <Editable.EditTrigger>Edit</Editable.EditTrigger> <Editable.SubmitTrigger>Save</Editable.SubmitTrigger> <Editable.CancelTrigger>Cancel</Editable.CancelTrigger></Editable.Root>
Usage with Field component
<script> import {Editable, Field} from 'ui-ingredients';</script><Field.Root> <Editable.Root> <Editable.Label>Label</Editable.Label> <Editable.Area> <Editable.Input /> <Editable.Preview /> </Editable.Area> <Editable.EditTrigger>Edit</Editable.EditTrigger> <Editable.SubmitTrigger>Save</Editable.SubmitTrigger> <Editable.CancelTrigger>Cancel</Editable.CancelTrigger> </Editable.Root> <Field.HelperText>This is a helper text</Field.HelperText> <Field.ErrorText>This is an error text</Field.ErrorText></Field.Root>
API Reference
Root
Prop
Default
Description
activationMode
"focus"
ActivationModeThe activation mode for the preview element.
- "focus" - Enter edit mode when the preview is focused
- "dblclick" - Enter edit mode when the preview is double-clicked
- "click" - Enter edit mode when the preview is clicked
autoResize
booleanWhether the editable should auto-resize to fit the content.
defaultEdit
booleanWhether the editable is in edit mode by default.
defaultValue
stringThe initial value of the editable when rendered.
Use when you don't need to control the value of the editable.
disabled
booleanWhether the editable is disabled.
edit
booleanWhether the editable is in edit mode.
finalFocusEl
() => HTMLElementThe element to receive focus when the editable is closed.
form
stringThe associate form of the underlying input.
id
stringThe unique identifier of the machine.
ids
{
root?: string;
area?: string;
label?: string;
preview?: string;
input?: string;
control?: string;
submitTrigger?: string;
cancelTrigger?: string;
editTrigger?: string;
}The ids of the elements in the editable. Useful for composition.
invalid
booleanWhether the input's value is invalid.
maxLength
numberThe maximum number of characters allowed in the editable
name
stringThe name attribute of the editable component. Used for form submission.
onEditChange
(details: EditChangeDetails) => voidFunction to call when the edit mode changes.
onFocusOutside
(event: FocusOutsideEvent) => voidFunction called when the focus is moved outside the component
onInteractOutside
(event: InteractOutsideEvent) => voidFunction called when an interaction happens outside the component
onPointerDownOutside
(event: PointerDownOutsideEvent) => voidFunction called when the pointer is pressed down outside the component
onValueChange
(details: ValueChangeDetails) => voidFunction to call when the value changes.
onValueCommit
(details: ValueChangeDetails) => voidFunction to call when the value is committed.
onValueRevert
(details: ValueChangeDetails) => voidFunction to call when the value is reverted.
placeholder
string | { edit: string; preview: string; }The placeholder text for the editable.
readOnly
booleanWhether the editable is read-only.
required
booleanWhether the editable is required.
selectOnFocus
true
booleanWhether to select the text in the input when it is focused.
submitMode
"both"
SubmitModeThe action that triggers submit in the edit mode:
- "enter" - Trigger submit when the enter key is pressed
- "blur" - Trigger submit when the editable is blurred
- "none" - No action will trigger submit. You need to use the submit button
- "both" - Pressing `Enter` and blurring the input will trigger submit
translations
IntlTranslationsThe translations for the editable.