Skip to content

data_editor not editable in full screen mode #10079

Closed

Description

@NukeMike

Describe the bug

When a mo.ui.data_editor is opened in full screen mode double clicking the cells does not allow the editing.
This behaviour occurs both when full screen is reached:

  • clicking fullscreen button in code cell output in edit mode
  • clicking fullscreen button in App view when presented as Slide

this behaviour occurs both in local environment and molab

Will you submit a PR?

  • Yes

Environment

Details
{
  "marimo": "0.23.9",
  "editable": false,
  "location": "/usr/local/lib/python3.13/site-packages/marimo",
  "OS": "Linux",
  "OS Version": "6.8.12-680-6063-coreweave-amd64-f81899c8",
  "Processor": "",
  "Python Version": "3.13.11",
  "Locale": "en_US",
  "Binaries": {
    "Browser": "--",
    "Node": "v22.22.3",
    "uv": "0.11.19 (x86_64-unknown-linux-gnu)"
  },
  "Dependencies": {
    "click": "8.4.1",
    "docutils": "0.23",
    "itsdangerous": "2.2.0",
    "jedi": "0.19.2",
    "markdown": "3.10.2",
    "narwhals": "2.22.0",
    "packaging": "26.2",
    "psutil": "7.2.2",
    "pygments": "2.20.0",
    "pymdown-extensions": "10.21.3",
    "pyyaml": "6.0.3",
    "starlette": "1.2.1",
    "tomlkit": "0.15.0",
    "typing-extensions": "4.15.0",
    "uvicorn": "0.49.0",
    "websockets": "16.0"
  },
  "Optional Dependencies": {
    "altair": "6.1.0",
    "anywidget": "0.11.0",
    "duckdb": "1.5.3",
    "loro": "1.10.3",
    "nbformat": "5.10.4",
    "openai": "2.41.0",
    "pandas": "3.0.3",
    "polars": "1.41.2",
    "pyarrow": "24.0.0",
    "pytest": "9.0.3",
    "python-lsp-ruff": "2.3.1",
    "python-lsp-server": "1.14.0",
    "ruff": "0.15.16",
    "sqlglot": "30.9.0",
    "ty": "0.0.44"
  },
  "Experimental Flags": {}
}

Code to reproduce

Open in molab

# /// script
# [tool.marimo.runtime]
# auto_instantiate = false
# ///

<img width="1920" height="1032" alt="Image" src="https://github.com/user-attachments/assets/52644e3f-f683-4fd0-b47c-8c03e335c5d5" />
<img width="1920" height="1032" alt="Image" src="https://github.com/user-attachments/assets/c188f3e4-cf3f-4257-a7a6-349da90fe42e" />

import marimo

__generated_with = "0.23.9"
app = marimo.App(
    width="medium",
    auto_download=["html"],
)


@app.cell
def _():
    import marimo as mo
    import pandas as pd
    import numpy as np
    import altair as alt

    # Utility to make a small, varied dataframe
    rng = np.random.default_rng(42)
    sample_size = 10
    sample_df = pd.DataFrame({
        "id": np.arange(1, sample_size+1),
        "bool": np.bool(rng.integers(0,1,size=sample_size)),
        "category": pd.Categorical(rng.choice(["A", "B", "C"], size=sample_size)),
        "value_int": rng.integers(0, 100, size=sample_size),
        "value_float": np.round(rng.normal(50, 15, size=sample_size), 2),
        "text": [f"row_{i}" for i in range(sample_size)],
        "date": pd.date_range("2024-01-01", periods=sample_size, freq="D")
    })

    mo.md("""
    # Repro: mo.ui.data_editor cannot edit in fullscreen

    Use this notebook to reproduce the issue where entering fullscreen on the data editor prevents editing cells.

    Instructions:
    1. Use the editor below and verify you can edit cells normally (e.g., change 'text' or numbers).
    2. Click the fullscreen button on the top-right of the editor element.
    3. Try to click into a cell and edit it while in fullscreen.
    4. Observe whether focus is placed and whether keystrokes update the cell.
    5. Exit fullscreen and compare behavior.

    Below we provide two editors:
    - A small dataframe with varied dtypes (int, float, categorical, text, date)
    - A larger dataframe to test virtualization/scrolling in fullscreen
    """)
    return alt, mo, np, pd, rng, sample_df


@app.cell
def _(mo, sample_df):
    # Small editor with varied dtypes
    small_editor = mo.ui.data_editor(sample_df.copy())

    # Display with some surrounding UI to ensure focus handling is realistic
    mo.vstack([
        mo.md("## Small editor (mixed dtypes)"),
        small_editor,
        mo.md("Selected summary (reactive): The table above is fully editable when not fullscreen. Enter fullscreen and try editing cells.")
    ])
    return (small_editor,)


@app.cell
def _(mo, np, pd, rng):
    # Larger editor to test scrolling/virtualization interactions in fullscreen
    rows = 500
    large_df = pd.DataFrame({
        "row": np.arange(rows),
        "group": rng.choice(list("ABCDE"), size=rows),
        "x": np.round(rng.uniform(0, 1, size=rows), 3),
        "y": np.round(rng.normal(0, 1, size=rows), 3),
        "label": [f"item_{i}" for i in range(rows)]
    })

    large_editor = mo.ui.data_editor(large_df.copy())

    mo.vstack([
        mo.md("## Large editor (500 rows)"),
        large_editor,
        mo.md("Try entering fullscreen and editing multiple cells while scrolling.")
    ])
    return (large_editor,)


@app.cell
def _(large_editor, mo, small_editor):
    # Echo back current values to confirm edits propagate reactively when not in fullscreen
    # Note: Access editor values from a separate cell
    small_value = small_editor.value
    large_value = large_editor.value

    mo.tabs({
        "Small head": mo.ui.data_editor(small_value.head(10)),
        "Small describe": mo.ui.data_editor(small_value.describe(include="all").fillna("")),
        "Large head": mo.ui.data_editor(large_value.head(10))
    })
    return (small_value,)


@app.cell
def _(alt, mo, np, pd, small_value):
    # Minimal visual check: build a chart from the edited data to ensure reactive pipeline still works
    chart_data = small_value.copy()

    # Coerce types safely for plotting
    if "value_float" in chart_data.columns:
        chart_data["value_float_num"] = pd.to_numeric(chart_data["value_float"], errors="coerce")
    else:
        chart_data["value_float_num"] = np.nan

    if "category" in chart_data.columns:
        chart_data["category_str"] = chart_data["category"].astype(str)
    else:
        chart_data["category_str"] = "unknown"

    chart = alt.Chart(chart_data).mark_bar().encode(
        x=alt.X("category_str:N", title="Category"),
        y=alt.Y("mean(value_float_num):Q", title="Mean value_float"),
        tooltip=["category_str", alt.Tooltip("mean(value_float_num):Q", title="Mean value_float")]
    ).properties(title="Reactive check: mean(value_float) by category (updates when edits apply)")

    mo.ui.altair_chart(chart)
    return


@app.cell
def _(mo):
    # Environment info to include in the issue
    import sys
    import platform

    info = {
        "python_version": sys.version.split(" ")[0],
        "platform": platform.platform(),
        "marimo_version": mo.__version__,
    }

    mo.md("""
    ### Environment
    Below is useful environment information to paste into the issue along with reproduction steps.
    """)

    info
    return


if __name__ == "__main__":
    app.run()

Activity

  1. added theissue type on Jul 5, 2026
  2. NukeMike commented on Jul 5, 2026

    @NukeMike
    Author

    Could be related to #4642

  3. NukeMike commented on Jul 5, 2026

    @NukeMike
    Author

    Example recording of cell output full screen in edito mode.
    Notice that when closing the full screen view, the double clicked cell seems to be floating around, maybe it is stuck behind the fullscreen view.

    Image
  4. NukeMike commented on Jul 5, 2026

    @NukeMike
    Author

    Example recording in app view - present as slide

    data_editor_issue in Slide mode
  5. added a commit that references this issue on Jul 8, 2026
    ddd52fd
  6. added a commit that references this issue on Sep 6, 2026
    aa21e4f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions