Repository navigation
fix data editor in fullscreen - #10098
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
Fixes mo.ui.data_editor edit overlays being invisible/uneditable when the editor is displayed in browser fullscreen (output fullscreen + slides fullscreen) by replacing the previous global #portal approach with a per-editor portal that can live inside the active fullscreen subtree.
Changes:
- Upgrades
@glideapps/glide-data-gridto6.0.4-alpha24to useportalElementRef. - Adds a per-instance portal component (
GlideDataEditorPortal) and wires it intoGlideDataEditor. - Removes the global
#portalfromfrontend/index.htmland updates export template snapshots + adds frontend tests.
Reviewed changes
Copilot reviewed 12 out of 13 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
frontend/src/plugins/impl/data-editor/glide-portal.tsx |
Introduces the per-editor overlay portal and fullscreen handling logic. |
frontend/src/plugins/impl/data-editor/glide-data-editor.tsx |
Passes portalElementRef into Glide Data Grid and mounts the new portal component. |
frontend/src/plugins/impl/data-editor/__tests__/glide-data-editor.test.tsx |
Adds unit coverage for portal mounting and fullscreen reparenting behavior. |
frontend/package.json |
Bumps @glideapps/glide-data-grid version used by the frontend. |
pnpm-lock.yaml |
Lockfile updates for the Glide upgrade (including new peer dependency constraints). |
frontend/index.html |
Removes the old global #portal element. |
tests/_server/templates/data/index.html |
Removes the old global #portal element from server template fixtures. |
tests/_server/templates/snapshots/export1.txt |
Snapshot update to reflect template portal removal. |
tests/_server/templates/snapshots/export2.txt |
Snapshot update to reflect template portal removal. |
tests/_server/templates/snapshots/export3.txt |
Snapshot update to reflect template portal removal. |
tests/_server/templates/snapshots/export4.txt |
Snapshot update to reflect template portal removal. |
tests/_server/templates/snapshots/export5.txt |
Snapshot update to reflect template portal removal. |
tests/_server/templates/snapshots/export6.txt |
Snapshot update to reflect template portal removal. |
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
| "@emotion/cache": "^11.14.0", | ||
| "@emotion/react": "^11.14.0", | ||
| "@glideapps/glide-data-grid": "6.0.4-alpha9", | ||
| "@glideapps/glide-data-grid": "6.0.4-alpha24", |
There was a problem hiding this comment.
This doesn't break today, but we do have 3 versions of marked in this repo. Maybe worth standardizing and bumping all
There was a problem hiding this comment.
2 issues found and verified against the latest diff
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
|
🚀 Development release published. You may be able to view the changes at https://marimo.app?v=0.23.14-dev25 |
## 📝 Summary <!-- If this PR closes any issues, list them here by number (e.g., Closes marimo-team#123). Detail the specific changes made in this pull request. Explain the problem addressed and how it was resolved. If applicable, provide before and after comparisons, screenshots, or any relevant details to help reviewers understand the changes easily. --> Closes marimo-team#10079 mo.ui.data_editor cell edit overlays were invisible in browser fullscreen (output expand button and slides fullscreen). Double-clicking a cell had no effect; exiting fullscreen could leave a floating overlay artifact. Root cause: Glide Data Grid renders edit overlays into a portal element. marimo previously used a single global #portal on document.body, which sits outside the fullscreen subtree — the Fullscreen API hides everything not descended from the fullscreen element. https://github.com/user-attachments/assets/9c88cfb1-f053-4de5-98d2-4c1d8ef78453 Fix: - Upgrade @glideapps/glide-data-grid to 6.0.4-alpha24 (adds portalElementRef) - Give each data editor its own overlay portal via portalElementRef, rendered to document.body with createPortal - On fullscreenchange, reparent the portal into document.fullscreenElement so overlays stay visible; restore to document.body on exit and dismiss any open overlay - Remove the global #portal div from index.html (and export template snapshots) Portaling to document.body (rather than inside the cell output) preserves existing notebook focus behavior — overlay focus does not trigger the marimo cell selection ring. ## 📋 Pre-Review Checklist <!-- These checks need to be completed before a PR is reviewed --> - [ ] For large changes, or changes that affect the public API: this change was discussed or approved through an issue, on [Discord](https://marimo.io/discord?ref=pr), or the community [discussions](https://github.com/marimo-team/marimo/discussions) (Please provide a link if applicable). - [ ] Any AI generated code has been reviewed line-by-line by the human PR author, who stands by it. - [x] Video or media evidence is provided for any visual changes (optional). <!-- PR is more likely to be merged if evidence is provided for changes made --> ## ✅ Merge Checklist - [x] I have read the [contributor guidelines](https://github.com/marimo-team/marimo/blob/main/CONTRIBUTING.md). - [ ] Documentation has been updated where applicable, including docstrings for API changes. - [x] Tests have been added for the changes made.
📝 Summary
Closes #10079
mo.ui.data_editor cell edit overlays were invisible in browser fullscreen (output expand button and slides fullscreen). Double-clicking a cell had no effect; exiting fullscreen could leave a floating overlay artifact.
Root cause: Glide Data Grid renders edit overlays into a portal element. marimo previously used a single global #portal on document.body, which sits outside the fullscreen subtree — the Fullscreen API hides everything not descended from the fullscreen element.
Screen.Recording.2026-07-08.at.11.52.30.AM.mov
Fix:
Portaling to document.body (rather than inside the cell output) preserves existing notebook focus behavior — overlay focus does not trigger the marimo cell selection ring.
📋 Pre-Review Checklist
✅ Merge Checklist