mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-18 05:01:17 +02:00
fix: allow copying from editable void input (#5369)
This commit is contained in:
5
.changeset/funny-students-sparkle.md
Normal file
5
.changeset/funny-students-sparkle.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
'slate-react': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Allow copying from editable void input
|
@@ -1157,7 +1157,8 @@ export const Editable = (props: EditableProps) => {
|
|||||||
(event: React.ClipboardEvent<HTMLDivElement>) => {
|
(event: React.ClipboardEvent<HTMLDivElement>) => {
|
||||||
if (
|
if (
|
||||||
ReactEditor.hasSelectableTarget(editor, event.target) &&
|
ReactEditor.hasSelectableTarget(editor, event.target) &&
|
||||||
!isEventHandled(event, attributes.onCopy)
|
!isEventHandled(event, attributes.onCopy) &&
|
||||||
|
!isDOMEventTargetInput(event)
|
||||||
) {
|
) {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
ReactEditor.setFragmentData(
|
ReactEditor.setFragmentData(
|
||||||
@@ -1174,7 +1175,8 @@ export const Editable = (props: EditableProps) => {
|
|||||||
if (
|
if (
|
||||||
!readOnly &&
|
!readOnly &&
|
||||||
ReactEditor.hasSelectableTarget(editor, event.target) &&
|
ReactEditor.hasSelectableTarget(editor, event.target) &&
|
||||||
!isEventHandled(event, attributes.onCut)
|
!isEventHandled(event, attributes.onCut) &&
|
||||||
|
!isDOMEventTargetInput(event)
|
||||||
) {
|
) {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
ReactEditor.setFragmentData(
|
ReactEditor.setFragmentData(
|
||||||
@@ -1736,6 +1738,21 @@ export const isEventHandled = <
|
|||||||
return event.isDefaultPrevented() || event.isPropagationStopped()
|
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.
|
* Check if a DOM event is overrided by a handler.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user