Skip to content

Commit cc5a9d8

Browse files
fix: prevent composition events from firing on input elements in Editable component (#5965)
* fix: prevent composition events from firing on input elements in Editable component * chore: add changeset for changes
1 parent 622fb11 commit cc5a9d8

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

.changeset/thick-lizards-itch.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'slate-react': patch
3+
---
4+
5+
Ignores composition events when fired from nested input or textarea

packages/slate-react/src/components/editable.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1274,6 +1274,9 @@ export const Editable = forwardRef(
12741274
)}
12751275
onCompositionEnd={useCallback(
12761276
(event: React.CompositionEvent<HTMLDivElement>) => {
1277+
if (isDOMEventTargetInput(event)) {
1278+
return
1279+
}
12771280
if (ReactEditor.hasSelectableTarget(editor, event.target)) {
12781281
if (ReactEditor.isComposing(editor)) {
12791282
Promise.resolve().then(() => {
@@ -1331,7 +1334,8 @@ export const Editable = forwardRef(
13311334
(event: React.CompositionEvent<HTMLDivElement>) => {
13321335
if (
13331336
ReactEditor.hasSelectableTarget(editor, event.target) &&
1334-
!isEventHandled(event, attributes.onCompositionUpdate)
1337+
!isEventHandled(event, attributes.onCompositionUpdate) &&
1338+
!isDOMEventTargetInput(event)
13351339
) {
13361340
if (!ReactEditor.isComposing(editor)) {
13371341
setIsComposing(true)
@@ -1343,6 +1347,9 @@ export const Editable = forwardRef(
13431347
)}
13441348
onCompositionStart={useCallback(
13451349
(event: React.CompositionEvent<HTMLDivElement>) => {
1350+
if (isDOMEventTargetInput(event)) {
1351+
return
1352+
}
13461353
if (ReactEditor.hasSelectableTarget(editor, event.target)) {
13471354
androidInputManagerRef.current?.handleCompositionStart(
13481355
event

0 commit comments

Comments
 (0)