Skip to content

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

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

feat(ui): DH-19818: add nested dashboard support#1302
mofojed wants to merge 14 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.

)
```

## Nested Dashboards
Copy link
Contributor

Choose a reason for hiding this comment

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

Do nested dashboards work with ui.resolve? Can I embed a dashboard from another PQ?

If so, please update docs for ui.resolve as well showing that.

Copy link
Member Author

Choose a reason for hiding this comment

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

They should. I should also test that, because there might be an issue with that.

Copy link
Member Author

Choose a reason for hiding this comment

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

They do not work. In fact, it doesn't look like you can ui.resolve another deephaven.ui widget at all? I'll dig a bit more into "why", if it's a bigger lift/change I'll separate it into a separate PR.

Copy link
Member Author

Choose a reason for hiding this comment

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

@dsmmcken wiring that up I think should be a separate PR.
Digging into it, in UriObjectView we should be checking if we have a deephaven.ui element, and then rendering it. I think we'll need to separate WidgetHandler out to a component that takes the widget itself (since UriObjectView already loads the widget (it must to know the type), and WidgetHandler only takes a descriptor and loads the widget itself, rather than taking an already loaded widget). Or potentially register deephaven.ui plugin as a WidgetPlugin instead of a DashboardPlugin (or in addition to... problem being we still want DH.ui dashboards to open in a new dashboard tab, which you can't do with WidgetPlugins).
Kind of orthogonal work to just nesting dashboards, but that will be easier now that dashboards are nestable.

@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


### Nested dashboard component with state

Nested dashboards shine when combined with `@ui.component` to create stateful, reusable dashboard sections:
Copy link
Collaborator

Choose a reason for hiding this comment

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

This might just be a me problem but the use of "shine" here seems a bit too peppy for a docs page.
I'm guessing this was AI generated? This might be more of a docs team question, but I wonder if it's worth having some guidance with writing docs for AI if we don't have some already. We want it to sound like us and the more we bring in that is AI generated the more it's going to slowly shift if we don't keep it in line.

Copy link
Member Author

Choose a reason for hiding this comment

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

Yea, it was AI generated. I'd check with @margaretkennedy about what language is good/not good.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Is there a compelling example to illustrate deep nesting? Or just a theoretical detail?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yea, it's just a theoretical detail. I'm not sure it's even worth mentioning; every deephaven.ui component can be nested how deep you want. I'll remove it.

Copy link
Collaborator

Choose a reason for hiding this comment

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

any reason not to import the hook directly?

Copy link
Member Author

Choose a reason for hiding this comment

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

Autocompleted

@github-actions
Copy link

ui docs preview (Available for 14 days)

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.

3 participants

Comments