[Beta]: After a callout emoji is picked with no caret in the editor, typing goes to the start of the first heading
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 74/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- react, typescript
- Área
- frontend
Línea de trabajo
Read apps/www/src/registry/components/editor/callout.tsx and apps/www/src/registry/components/editor/emoji-picker.tsx, focusing on the icon selection and onFinalFocus paths described in the issue. Reproduce the steps on the Beta callout docs page and check for nearby focus tests. Done means picking an emoji without first placing a caret does not send subsequent typing into the first heading.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Testing lane
- Repository:
udecode/plate - Branch:
next - Release channel: Beta
- Exact commit/package version:
NOT_ENOUGH_INFO
Summary
On https://beta.platejs.org/docs/callout, picking a new icon for a callout before clicking in the text moves focus into the editor, with the caret at the start of the first heading, Callouts. The next keys go there, so typing xy makes it xyCallouts. On https://platejs.org/docs/callout, focus stays on the icon button after the pick, and typing changes nothing.
Reproduction
Repro 1: pick an icon, then type, Chromium
An agent ran this on the live Beta in headless Chromium 149 (Playwright) on 2026-10-24 and recorded it.
- Open https://beta.platejs.org/docs/callout. Do not click the text.
- Click the 💡 icon of the first callout. The emoji picker opens with focus in its
Search emojifield. - Pick 😁.
- Type
x, theny.
Results:
- Step 3: the icon becomes 😁, and focus moves to the editor.
- Step 4: the first heading reads
xyCallouts.
The same steps on platejs.org in Chromium 149: after the pick, focus is on the icon button, and the heading does not change.
Repro 2: Android Chrome
An agent ran this on a real Android 16 phone in Chrome 156 with the QQ input method on 2026-10-22, for Sin's assigned pages. With no caret placed first, picking a callout emoji and then typing put the text at the start of the first heading. With the caret placed in the callout first, the text stayed in the callout. On platejs.org the keyboard closed after the pick.
Expected
After an icon pick, the keys typed next do not change the heading. Focus either returns to the icon button, as on platejs.org, or to the caret the reader had before.
Actual
Focus moves to the start of the document, and the next keys edit the first heading.
Environment
- Exact
nextcommit/Beta package version:NOT_ENOUGH_INFO. The page does not show its build. - Repro 1: Chromium 149.0.7827.55 (Playwright, headless) on macOS, 2026-10-24.
- Repro 2: Chrome 156 on Android 16, 2026-10-22.
- Not tried in Safari or Firefox.
Caveat
From a reading of the code on next a32ed63c78:
- The callout's
onEmojiSelectsets the icon witheditor.update.nodes.set({ icon }, { at: props.element })(apps/www/src/registry/components/editor/callout.tsx:35-38). - When the picker closes after a pick, its
onFinalFocusprevents the default focus return and callseditor.api.dom.focus()(apps/www/src/registry/components/editor/emoji-picker.tsx:108-112). The component's comment at:72says "After a pick, focus returns to the editor." - With no earlier selection in the editor, that focus puts the caret at the start of the document, the first heading.
- Not tried as a code change.
Evidence
- Repro 1: the agent's recording, 0:21, real time, with the step panel on the right. The dark box at the bottom left is drawn by the test script. It shows the focused element, the first heading and the first callout's icon, and turns red when the heading no longer starts with
Callouts. The pick is at 0:05, and typing starts at 0:08.
Repro 1 — Chromium 149, /docs/callout
https://github.com/user-attachments/assets/4f3713b5-8fae-438d-97aa-54b18a0b7237
Related
- #5301: in the Excalidraw docs demo, a canvas undo also sends the next keys to the start of the first heading.
- #5290: in the inlines example, mouse input misses the button text and the next edit lands at the previous caret position.
- Lenguaje dominante
- TypeScript
- Estrellas
- 16.6k
- Forks
- 993
- Merge medio
- 20 h 2 min
- PR fusionados (30 d)
- 62
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de udecode/plate
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
[Beta]: After Enter saves an edited link URL, the link toolbar stays hidden while the caret is in the linkPosiblemente ocupada @zbeyens la tomó hace 4 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
udecode/plate#5314 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
[Beta]: The docs Demo example page starts with an empty editorPosiblemente ocupada @natamox la tomó hace 4 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
udecode/plate#5308 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de udecode/plate
Issues similares
-
BeOS .json missingAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
mihaip/infinite-mac#475 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
marmelab/atomic-crm#401 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
enhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Deltares/webgl-streamline-visualizer#83 ·
Los mantenedores suelen responder en 1 día
-
ubicloud: usage is an awk syntax error on macOS, which also disables the vCPU quota preflightAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día