# Editable URL: https://ark-ui.com/docs/components/editable Source: https://raw.githubusercontent.com/chakra-ui/ark/refs/heads/main/website/src/content/pages/components/editable.mdx A component that allows users to edit text in place. --- ## Anatomy To set up the editable correctly, you'll need to understand its anatomy and how we name its parts. > Each part includes a `data-part` attribute to help identify them in the DOM. ## Examples Learn how to use the `Editable` component in your project. Let's take a look at the most basic example: **Example: basic** #### React ```tsx import { Editable } from '@ark-ui/react/editable' export const Basic = () => ( Label ) ``` #### Solid ```tsx import { Editable } from '@ark-ui/solid/editable' export const Basic = () => ( Label ) ``` #### Vue ```vue ``` #### Svelte ```svelte Label ``` ### Custom controls In some cases, you might need to use custom controls to toggle the edit and read mode. We use the render prop pattern to provide access to the internal state of the component. **Example: custom-controls** #### React ```tsx import { Editable } from '@ark-ui/react/editable' export const CustomControls = () => ( Label {(editable) => ( {editable.editing ? ( <> Save Cancel ) : ( Edit )} )} ) ``` #### Solid ```tsx import { Editable } from '@ark-ui/solid/editable' import { Show } from 'solid-js' export const CustomControls = () => ( Label {(editable) => ( Edit}> Save Canvel )} ) ``` #### Vue ```vue ``` #### Svelte ```svelte Label {#snippet render(editable)} {#if editable().editing} Save Cancel {:else} Edit {/if} {/snippet} ``` ### Field The `Field` component helps manage form-related state and accessibility attributes of an editable. It includes handling ARIA labels, helper text, and error text to ensure proper accessibility. **Example: with-field** #### React ```tsx import { Editable } from '@ark-ui/react/editable' import { Field } from '@ark-ui/react/field' export const WithField = (props: Field.RootProps) => ( Label Additional Info Error Info ) ``` #### Solid ```tsx import { Editable } from '@ark-ui/solid/editable' import { Field } from '@ark-ui/solid/field' export const WithField = (props: Field.RootProps) => ( Label Additional Info Error Info ) ``` #### Vue ```vue ``` #### Svelte ```svelte Label Additional Info Error Info ``` ### Root Provider Use the `useEditable` hook to create the editable store and pass it to the `Editable.RootProvider` component. This allows you to have maximum control over the editable programmatically. **Example: root-provider** #### React ```tsx import { Editable, useEditable } from '@ark-ui/react/editable' export const RootProvider = () => { const editable = useEditable({ placeholder: 'Placeholder' }) return ( <> Label ) } ``` #### Solid ```tsx import { Editable, useEditable } from '@ark-ui/solid/editable' export const RootProvider = () => { const editable = useEditable({ placeholder: 'Placeholder' }) return ( <> Label ) } ``` #### Vue ```vue ``` #### Svelte ```svelte Label ``` > If you're using the `Editable.RootProvider` component, you don't need to use the `Editable.Root` component. ## Guides ### Auto-resizing To auto-grow the editable as the content changes, set the `autoResize` prop to `true`. ```tsx {/*...*/} ``` ### Max Length Use the `maxLength` prop to set a maximum number of characters that can be entered into the editable. ```tsx {/*...*/} ``` ### Double click activation The editable supports two modes of activating the "edit" state: - when the preview part is focused (with pointer or keyboard). - when the preview part is double-clicked. To change the mode to double-click, pass the prop `activationMode="dblclick"`. ```tsx {/*...*/} ``` ## API Reference ### Props **Component API Reference** #### React **Root Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `activationMode` | `ActivationMode` | No | The 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 - "none" - Edit can be triggered programmatically only | | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `autoResize` | `boolean` | No | Whether the editable should auto-resize to fit the content. | | `defaultEdit` | `boolean` | No | Whether the editable is in edit mode by default. | | `defaultValue` | `string` | No | The initial value of the editable when rendered. Use when you don't need to control the value of the editable. | | `disabled` | `boolean` | No | Whether the editable is disabled. | | `edit` | `boolean` | No | Whether the editable is in edit mode. | | `finalFocusEl` | `() => HTMLElement | null` | No | The element to receive focus when the editable is closed. | | `form` | `string` | No | The associate form of the underlying input. | | `id` | `string` | No | The unique identifier of the machine. | | `ids` | `Partial<{ root: string area: string label: string preview: string input: string control: string submitTrigger: string cancelTrigger: string editTrigger: string }>` | No | The ids of the elements in the editable. Useful for composition. | | `invalid` | `boolean` | No | Whether the input's value is invalid. | | `maxLength` | `number` | No | The maximum number of characters allowed in the editable | | `name` | `string` | No | The name attribute of the editable component. Used for form submission. | | `onEditChange` | `(details: EditChangeDetails) => void` | No | Function to call when the edit mode changes. | | `onFocusOutside` | `(event: FocusOutsideEvent) => void` | No | Function called when the focus is moved outside the component | | `onInteractOutside` | `(event: InteractOutsideEvent) => void` | No | Function called when an interaction happens outside the component | | `onPointerDownOutside` | `(event: PointerDownOutsideEvent) => void` | No | Function called when the pointer is pressed down outside the component | | `onValueChange` | `(details: ValueChangeDetails) => void` | No | Function to call when the value changes. | | `onValueCommit` | `(details: ValueChangeDetails) => void` | No | Function to call when the value is committed. | | `onValueRevert` | `(details: ValueChangeDetails) => void` | No | Function to call when the value is reverted. | | `placeholder` | `string | { edit: string; preview: string }` | No | The placeholder text for the editable. | | `readOnly` | `boolean` | No | Whether the editable is read-only. | | `required` | `boolean` | No | Whether the editable is required. | | `selectOnFocus` | `boolean` | No | Whether to select the text in the input when it is focused. | | `submitMode` | `SubmitMode` | No | The 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` | `IntlTranslations` | No | The translations for the editable. | | `value` | `string` | No | The controlled value of the editable. | **Area Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Area Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | area | | `[data-focus]` | Present when focused | | `[data-disabled]` | Present when disabled | | `[data-placeholder-shown]` | Present when placeholder is shown | **CancelTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Control Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **EditTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Input Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Input Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | input | | `[data-disabled]` | Present when disabled | | `[data-readonly]` | Present when read-only | | `[data-invalid]` | Present when invalid | | `[data-autoresize]` | | **Label Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Label Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | label | | `[data-focus]` | Present when focused | | `[data-invalid]` | Present when invalid | **Preview Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Preview Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | preview | | `[data-placeholder-shown]` | Present when placeholder is shown | | `[data-readonly]` | Present when read-only | | `[data-disabled]` | Present when disabled | | `[data-invalid]` | Present when invalid | | `[data-autoresize]` | | **RootProvider Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `value` | `UseEditableReturn` | Yes | | | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **SubmitTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | #### Solid **Root Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `activationMode` | `ActivationMode` | No | The 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 - "none" - Edit can be triggered programmatically only | | `asChild` | `(props: ParentProps<'div'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `autoResize` | `boolean` | No | Whether the editable should auto-resize to fit the content. | | `defaultEdit` | `boolean` | No | Whether the editable is in edit mode by default. | | `defaultValue` | `string` | No | The initial value of the editable when rendered. Use when you don't need to control the value of the editable. | | `disabled` | `boolean` | No | Whether the editable is disabled. | | `edit` | `boolean` | No | Whether the editable is in edit mode. | | `finalFocusEl` | `() => HTMLElement | null` | No | The element to receive focus when the editable is closed. | | `form` | `string` | No | The associate form of the underlying input. | | `ids` | `Partial<{ root: string area: string label: string preview: string input: string control: string submitTrigger: string cancelTrigger: string editTrigger: string }>` | No | The ids of the elements in the editable. Useful for composition. | | `invalid` | `boolean` | No | Whether the input's value is invalid. | | `maxLength` | `number` | No | The maximum number of characters allowed in the editable | | `name` | `string` | No | The name attribute of the editable component. Used for form submission. | | `onEditChange` | `(details: EditChangeDetails) => void` | No | Function to call when the edit mode changes. | | `onFocusOutside` | `(event: FocusOutsideEvent) => void` | No | Function called when the focus is moved outside the component | | `onInteractOutside` | `(event: InteractOutsideEvent) => void` | No | Function called when an interaction happens outside the component | | `onPointerDownOutside` | `(event: PointerDownOutsideEvent) => void` | No | Function called when the pointer is pressed down outside the component | | `onValueChange` | `(details: ValueChangeDetails) => void` | No | Function to call when the value changes. | | `onValueCommit` | `(details: ValueChangeDetails) => void` | No | Function to call when the value is committed. | | `onValueRevert` | `(details: ValueChangeDetails) => void` | No | Function to call when the value is reverted. | | `placeholder` | `string | { edit: string; preview: string }` | No | The placeholder text for the editable. | | `readOnly` | `boolean` | No | Whether the editable is read-only. | | `required` | `boolean` | No | Whether the editable is required. | | `selectOnFocus` | `boolean` | No | Whether to select the text in the input when it is focused. | | `submitMode` | `SubmitMode` | No | The 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` | `IntlTranslations` | No | The translations for the editable. | | `value` | `string` | No | The controlled value of the editable. | **Area Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'div'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Area Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | area | | `[data-focus]` | Present when focused | | `[data-disabled]` | Present when disabled | | `[data-placeholder-shown]` | Present when placeholder is shown | **CancelTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'button'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Control Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'div'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **EditTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'button'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Input Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'input'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Input Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | input | | `[data-disabled]` | Present when disabled | | `[data-readonly]` | Present when read-only | | `[data-invalid]` | Present when invalid | | `[data-autoresize]` | | **Label Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'label'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Label Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | label | | `[data-focus]` | Present when focused | | `[data-invalid]` | Present when invalid | **Preview Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'span'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Preview Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | preview | | `[data-placeholder-shown]` | Present when placeholder is shown | | `[data-readonly]` | Present when read-only | | `[data-disabled]` | Present when disabled | | `[data-invalid]` | Present when invalid | | `[data-autoresize]` | | **RootProvider Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `value` | `UseEditableReturn` | Yes | | | `asChild` | `(props: ParentProps<'div'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **SubmitTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'button'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | #### Vue **Root Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `activationMode` | `ActivationMode` | No | The 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 | | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `autoResize` | `boolean` | No | Whether the editable should auto-resize to fit the content. | | `defaultEdit` | `boolean` | No | Whether the editable is in edit mode by default. | | `defaultValue` | `string` | No | The initial value of the editable when rendered. Use when you don't need to control the value of the editable. | | `disabled` | `boolean` | No | Whether the editable is disabled. | | `edit` | `boolean` | No | Whether the editable is in edit mode. | | `finalFocusEl` | `() => HTMLElement | null` | No | The element to receive focus when the editable is closed. | | `form` | `string` | No | The associate form of the underlying input. | | `id` | `string` | No | The unique identifier of the machine. | | `ids` | `Partial<{ root: string area: string label: string preview: string input: string control: string submitTrigger: string cancelTrigger: string editTrigger: string }>` | No | The ids of the elements in the editable. Useful for composition. | | `invalid` | `boolean` | No | Whether the input's value is invalid. | | `maxLength` | `number` | No | The maximum number of characters allowed in the editable | | `modelValue` | `string` | No | The v-model value of the editable | | `name` | `string` | No | The name attribute of the editable component. Used for form submission. | | `placeholder` | `string | { edit: string; preview: string }` | No | The placeholder text for the editable. | | `readOnly` | `boolean` | No | Whether the editable is read-only. | | `required` | `boolean` | No | Whether the editable is required. | | `selectOnFocus` | `boolean` | No | Whether to select the text in the input when it is focused. | | `submitMode` | `SubmitMode` | No | The 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` | `IntlTranslations` | No | The translations for the editable. | **Area Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Area Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | area | | `[data-focus]` | Present when focused | | `[data-disabled]` | Present when disabled | | `[data-placeholder-shown]` | Present when placeholder is shown | **CancelTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Control Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **EditTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Input Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Input Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | input | | `[data-disabled]` | Present when disabled | | `[data-readonly]` | Present when read-only | | `[data-invalid]` | Present when invalid | | `[data-autoresize]` | | **Label Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Label Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | label | | `[data-focus]` | Present when focused | | `[data-invalid]` | Present when invalid | **Preview Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Preview Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | preview | | `[data-placeholder-shown]` | Present when placeholder is shown | | `[data-readonly]` | Present when read-only | | `[data-disabled]` | Present when disabled | | `[data-invalid]` | Present when invalid | | `[data-autoresize]` | | **RootProvider Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `value` | `EditableApi` | Yes | | | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **SubmitTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | #### Svelte **Root Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `activationMode` | `ActivationMode` | No | The 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 - "none" - Edit can be triggered programmatically only | | `autoResize` | `boolean` | No | Whether the editable should auto-resize to fit the content. | | `defaultEdit` | `boolean` | No | Whether the editable is in edit mode by default. | | `defaultValue` | `string` | No | The initial value of the editable when rendered. Use when you don't need to control the value of the editable. | | `disabled` | `boolean` | No | Whether the editable is disabled. | | `edit` | `boolean` | No | Whether the editable is in edit mode. | | `finalFocusEl` | `() => HTMLElement | null` | No | The element to receive focus when the editable is closed. | | `form` | `string` | No | The associate form of the underlying input. | | `id` | `string` | No | The unique identifier of the machine. | | `ids` | `Partial<{ root: string area: string label: string preview: string input: string control: string submitTrigger: string cancelTrigger: string editTrigger: string }>` | No | The ids of the elements in the editable. Useful for composition. | | `invalid` | `boolean` | No | Whether the input's value is invalid. | | `maxLength` | `number` | No | The maximum number of characters allowed in the editable | | `name` | `string` | No | The name attribute of the editable component. Used for form submission. | | `onEditChange` | `(details: EditChangeDetails) => void` | No | Function to call when the edit mode changes. | | `onFocusOutside` | `(event: FocusOutsideEvent) => void` | No | Function called when the focus is moved outside the component | | `onInteractOutside` | `(event: InteractOutsideEvent) => void` | No | Function called when an interaction happens outside the component | | `onPointerDownOutside` | `(event: PointerDownOutsideEvent) => void` | No | Function called when the pointer is pressed down outside the component | | `onValueChange` | `(details: ValueChangeDetails) => void` | No | Function to call when the value changes. | | `onValueCommit` | `(details: ValueChangeDetails) => void` | No | Function to call when the value is committed. | | `onValueRevert` | `(details: ValueChangeDetails) => void` | No | Function to call when the value is reverted. | | `placeholder` | `string | { edit: string; preview: string }` | No | The placeholder text for the editable. | | `readOnly` | `boolean` | No | Whether the editable is read-only. | | `ref` | `Element` | No | | | `required` | `boolean` | No | Whether the editable is required. | | `selectOnFocus` | `boolean` | No | Whether to select the text in the input when it is focused. | | `submitMode` | `SubmitMode` | No | The 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` | `IntlTranslations` | No | The translations for the editable. | | `value` | `string` | No | The controlled value of the editable. | **Area Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'div'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **Area Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | area | | `[data-focus]` | Present when focused | | `[data-disabled]` | Present when disabled | | `[data-placeholder-shown]` | Present when placeholder is shown | **CancelTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'button'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **Context Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `render` | `Snippet<[UseEditableContext]>` | Yes | | **Control Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'div'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **EditTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'button'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **Input Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'input'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **Input Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | input | | `[data-disabled]` | Present when disabled | | `[data-readonly]` | Present when read-only | | `[data-invalid]` | Present when invalid | | `[data-autoresize]` | | **Label Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'label'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **Label Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | label | | `[data-focus]` | Present when focused | | `[data-invalid]` | Present when invalid | **Preview Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'span'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **Preview Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | editable | | `[data-part]` | preview | | `[data-placeholder-shown]` | Present when placeholder is shown | | `[data-readonly]` | Present when read-only | | `[data-disabled]` | Present when disabled | | `[data-invalid]` | Present when invalid | | `[data-autoresize]` | | **RootProvider Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `value` | `UseEditableReturn` | Yes | | | `asChild` | `Snippet<[PropsFn<'div'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **SubmitTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'button'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | ### Context These are the properties available when using `Editable.Context`, `useEditableContext` hook or `useEditable` hook. **API:** | Property | Type | Description | |----------|------|-------------| | `editing` | `boolean` | Whether the editable is in edit mode | | `empty` | `boolean` | Whether the editable value is empty | | `value` | `string` | The current value of the editable | | `valueText` | `string` | The current value of the editable, or the placeholder if the value is empty | | `setValue` | `(value: string) => void` | Function to set the value of the editable | | `clearValue` | `VoidFunction` | Function to clear the value of the editable | | `edit` | `VoidFunction` | Function to enter edit mode | | `cancel` | `VoidFunction` | Function to exit edit mode, and discard any changes | | `submit` | `VoidFunction` | Function to exit edit mode, and submit any changes | ## Accessibility ### Keyboard Support