Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VizPanelMenu: Add support for component panel menu items #946

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docusaurus/docs/visualizations.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ in a typical dashboard panel when you view the **JSON** tab in the panel inspect

## Menu

The menu property of type VizPanelMenu is optionl, when set it defines a menu in the top right of the panel. The menu object is only activated when the dropdown menu itself is rendered. So the best way to add dynamic menu actions and links is by adding them in a [behavior](./advanced-behaviors.md) attached to the menu.
The menu property of type VizPanelMenu is optional, when set it defines a menu in the top right of the panel. The menu object is only activated when the dropdown menu itself is rendered. So the best way to add dynamic menu actions and links is by adding them in a [behavior](./advanced-behaviors.md) attached to the menu.

```ts
new VizPanel({
Expand Down
7 changes: 7 additions & 0 deletions packages/scenes/src/components/VizPanel/VizPanelMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@ function VizPanelMenuRenderer({ model }: SceneComponentProps<VizPanelMenu>) {

const renderItems = (items: PanelMenuItem[]) => {
return items.map((item) => {
// @ts-ignore
const Component: () => React.ReactElement | null = item.component;

if (Component) {
return <Component key={item.text} />;
}

switch (item.type) {
case 'divider':
return <Menu.Divider key={item.text} />;
Expand Down
Loading