diff --git a/packages/slate-react/src/components/editable.tsx b/packages/slate-react/src/components/editable.tsx index b78a6f87c..d99a72e49 100644 --- a/packages/slate-react/src/components/editable.tsx +++ b/packages/slate-react/src/components/editable.tsx @@ -57,22 +57,27 @@ export interface RenderLeafProps { } } +/** + * `EditableProps` are passed to the `` component. + */ + +export type EditableProps = { + decorate?: (entry: NodeEntry) => Range[] + onDOMBeforeInput?: (event: Event) => void + placeholder?: string + readOnly?: boolean + role?: string + style?: React.CSSProperties + renderElement?: (props: RenderElementProps) => JSX.Element + renderLeaf?: (props: RenderLeafProps) => JSX.Element + as?: React.ElementType +} & React.TextareaHTMLAttributes + /** * Editable. */ -export const Editable = ( - props: { - decorate?: (entry: NodeEntry) => Range[] - onDOMBeforeInput?: (event: Event) => void - placeholder?: string - readOnly?: boolean - role?: string - style?: React.CSSProperties - renderElement?: (props: RenderElementProps) => JSX.Element - renderLeaf?: (props: RenderLeafProps) => JSX.Element - } & React.TextareaHTMLAttributes -) => { +export const Editable = (props: EditableProps) => { const { autoFocus, decorate = defaultDecorate, @@ -82,6 +87,7 @@ export const Editable = ( renderElement, renderLeaf, style = {}, + as: Component = 'div', ...attributes } = props const editor = useSlate() @@ -400,7 +406,7 @@ export const Editable = ( return ( -
-
+
) }