Skip to content

feat(ui): DH-19818: add nested dashboard support#1302

Open
mofojed wants to merge 18 commits intodeephaven:mainfrom
mofojed:DH-19818-nested-dashboards
Open

feat(ui): DH-19818: add nested dashboard support#1302
mofojed wants to merge 18 commits intodeephaven:mainfrom
mofojed:DH-19818-nested-dashboards

Conversation

@mofojed
Copy link
Member

@mofojed mofojed commented Feb 11, 2026

  • Dashboard component now detects when inside a panel and delegates to NestedDashboard
  • NestedDashboard uses Dashboard from @deephaven/dashboard to create isolated layout
  • NestedDashboardContent provides context providers for nested panels
  • DashboardContent extracted for top-level dashboard rendering
  • Add E2E tests and Python test fixtures for nested dashboards
  • Add unit tests for Dashboard and NestedDashboard components
  • Updated documentation with some examples for nested dashboards, removed restrictions about nesting dashboards in panels

@mofojed mofojed self-assigned this Feb 11, 2026
- Dashboard component now detects when inside a panel and delegates to NestedDashboard
- NestedDashboard uses DHCDashboard from @deephaven/dashboard to create isolated GoldenLayout
- NestedDashboardContent provides context providers for nested panels
- DashboardContent extracted for top-level dashboard rendering
- Add E2E tests and Python test fixtures for nested dashboards
- Add unit tests for Dashboard and NestedDashboard components

DH-19818
- Just using usePersistentState and it seems to work
- Sometimes the nested dashboards don't load correctly, seems to be an intermittent issue/some sort of race condition. Will debug later, after writing docs
- Update rules to clarify root-level vs nested dashboard restrictions
- Update bottom-level section to reference nested dashboards
- Add Nested Dashboards section with examples to dashboard.md
- Add Nested Dashboards section to creating-dashboards.md guide
- Add example for sharing state between nested dashboards
@mofojed mofojed force-pushed the DH-19818-nested-dashboards branch from 1be29b1 to 6b71ddb Compare February 12, 2026 16:00
@mofojed mofojed requested review from a team, dsmmcken, jnumainville and vbabich and removed request for a team February 12, 2026 16:21
@github-actions
Copy link

ui docs preview (Available for 14 days)

- Separated into its own PR: deephaven#1303
@github-actions
Copy link

ui docs preview (Available for 14 days)


## Nested Dashboards

Dashboards can be nested inside panels to create complex layouts with isolated drag-and-drop regions. Each nested dashboard creates its own independent layout that users can rearrange without affecting the parent dashboard.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need an enterprise only note that dashboards not defined at root won't appear in the shared dashboards list?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm well the dashboard doesn't have a name... but yea I'll make that clear. In DHC it won't appear in your panels list either.

@github-actions
Copy link

ui docs preview (Available for 14 days)

@mofojed mofojed requested a review from dsmmcken February 18, 2026 15:29
Copy link
Collaborator

@jnumainville jnumainville left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not much python to review here (which is a good thing) so took a quick look at JS and docs too

@github-actions
Copy link

ui docs preview (Available for 14 days)

@mofojed mofojed requested a review from jnumainville February 20, 2026 01:46
jnumainville
jnumainville previously approved these changes Feb 20, 2026
Co-authored-by: margaretkennedy <82049573+margaretkennedy@users.noreply.github.com>
@github-actions
Copy link

ui docs preview (Available for 14 days)

@mofojed mofojed requested a review from jnumainville February 23, 2026 20:59
jnumainville
jnumainville previously approved these changes Feb 23, 2026
@vbabich
Copy link
Collaborator

vbabich commented Feb 24, 2026

Found these issues while testing:

  • Opening a nested dashboard via the New Tab screen opens the dashboard with empty content
  • Copying a nested dashboard via the tab context menu -> Make a Copy creates a copy with empty content

@mofojed
Copy link
Member Author

mofojed commented Feb 25, 2026

Found these issues while testing:

  • Opening a nested dashboard via the New Tab screen opens the dashboard with empty content
  • Copying a nested dashboard via the tab context menu -> Make a Copy creates a copy with empty content

Both of those empty content issues are reproducible in Core by just deselecting "Close Panels on Disconnect", creating a simple nested dashboard and opening, and then refreshing:

from deephaven import ui

d = ui.panel(
    ui.dashboard(
        ui.row(
            ui.panel(ui.text("Content A"), title="Panel A"),
            ui.panel(ui.text("Content B"), title="Panel B")
        )
    )
)
image

- Was trying to re-open the layout after it was already set in the layout config
  - Just don't set the layout config, that's how we handle other deephaven.ui dashboards
  - The widget state is still preserved, so input/filters set within nested dashboards still is preserved
- There still seems to be an intermittent issue where sometimes when opening a nested dashboard, it displays incorrectly (just an empty black square)
@mofojed mofojed dismissed stale reviews from jnumainville and margaretkennedy via e3d3023 February 25, 2026 17:13
@github-actions
Copy link

ui docs preview (Available for 14 days)

@github-actions
Copy link

ui docs preview (Available for 14 days)

- Pass down the __dhId correctly to the NestedDashboardContent
  - That's what's calling the usePersistentState, so that's what needs the dhId set
- Don't register event listeners from nested DashboardPlugin
  - Just need to register the PortalPanel stuff
@github-actions
Copy link

ui docs preview (Available for 14 days)

@mofojed
Copy link
Member Author

mofojed commented Feb 26, 2026

@vbabich those issues observed should now be fixed. bender-dh-19818 is up to date.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants