mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-02-24 01:02:31 +01:00
fix onPaste handler on Chrome / Safari (#3396)
* fix onDOMBeforeInput callback definition * fix onPaste on chrome / safari * improve comment * Update editable.tsx * Create real-suns-matter.md Co-authored-by: Ian Storm Taylor <ian@ianstormtaylor.com>
This commit is contained in:
parent
7fe41f1566
commit
469e6b26f5
5
.changeset/real-suns-matter.md
Normal file
5
.changeset/real-suns-matter.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
'slate-react': patch
|
||||
---
|
||||
|
||||
Fixed allowing the `onPaste` handler to be overridden in all browsers.
|
@ -1017,20 +1017,22 @@ export const Editable = (props: EditableProps) => {
|
||||
)}
|
||||
onPaste={useCallback(
|
||||
(event: React.ClipboardEvent<HTMLDivElement>) => {
|
||||
// COMPAT: Certain browsers don't support the `beforeinput` event, so we
|
||||
// fall back to React's `onPaste` here instead.
|
||||
// COMPAT: Firefox, Chrome and Safari are not emitting `beforeinput` events
|
||||
// when "paste without formatting" option is used.
|
||||
// This unfortunately needs to be handled with paste events instead.
|
||||
if (
|
||||
!readOnly &&
|
||||
hasEditableTarget(editor, event.target) &&
|
||||
!isEventHandled(event, attributes.onPaste) &&
|
||||
(!HAS_BEFORE_INPUT_SUPPORT ||
|
||||
isPlainTextOnlyPaste(event.nativeEvent)) &&
|
||||
!readOnly
|
||||
!isEventHandled(event, attributes.onPaste)
|
||||
) {
|
||||
event.preventDefault()
|
||||
ReactEditor.insertData(editor, event.clipboardData)
|
||||
// COMPAT: Certain browsers don't support the `beforeinput` event, so we
|
||||
// fall back to React's `onPaste` here instead.
|
||||
// COMPAT: Firefox, Chrome and Safari don't emit `beforeinput` events
|
||||
// when "paste without formatting" is used, so fallback. (2020/02/20)
|
||||
if (
|
||||
!HAS_BEFORE_INPUT_SUPPORT ||
|
||||
isPlainTextOnlyPaste(event.nativeEvent)
|
||||
) {
|
||||
event.preventDefault()
|
||||
ReactEditor.insertData(editor, event.clipboardData)
|
||||
}
|
||||
}
|
||||
},
|
||||
[readOnly, attributes.onPaste]
|
||||
|
Loading…
x
Reference in New Issue
Block a user