1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-08-17 12:41:44 +02:00

fix: allow copying from editable void input (#5369)

This commit is contained in:
alex-vladut
2023-03-17 17:30:13 +02:00
committed by GitHub
parent a9c0e37472
commit 556a4565d2
2 changed files with 24 additions and 2 deletions

View File

@@ -0,0 +1,5 @@
---
'slate-react': patch
---
Allow copying from editable void input

View File

@@ -1157,7 +1157,8 @@ export const Editable = (props: EditableProps) => {
(event: React.ClipboardEvent<HTMLDivElement>) => {
if (
ReactEditor.hasSelectableTarget(editor, event.target) &&
!isEventHandled(event, attributes.onCopy)
!isEventHandled(event, attributes.onCopy) &&
!isDOMEventTargetInput(event)
) {
event.preventDefault()
ReactEditor.setFragmentData(
@@ -1174,7 +1175,8 @@ export const Editable = (props: EditableProps) => {
if (
!readOnly &&
ReactEditor.hasSelectableTarget(editor, event.target) &&
!isEventHandled(event, attributes.onCut)
!isEventHandled(event, attributes.onCut) &&
!isDOMEventTargetInput(event)
) {
event.preventDefault()
ReactEditor.setFragmentData(
@@ -1736,6 +1738,21 @@ export const isEventHandled = <
return event.isDefaultPrevented() || event.isPropagationStopped()
}
/**
* Check if the event's target is an input element
*/
export const isDOMEventTargetInput = <
EventType extends React.SyntheticEvent<unknown, unknown>
>(
event: EventType
) => {
return (
isDOMNode(event.target) &&
(event.target instanceof HTMLInputElement ||
event.target instanceof HTMLTextAreaElement)
)
}
/**
* Check if a DOM event is overrided by a handler.
*/