mirror of
https://github.com/grafana/grafana.git
synced 2025-02-10 23:55:47 -06:00
Plugin Extensions: Move PanelMenu links into extensions submenu (#64599)
* feat(pluginextensions): move panel menu links into an extensions submenu * refactor(pluginextensions): move extensions submenu above more... submenu * test(panelmenu): fix failing tests after moving extensions out of more * fix: fix rebase issues --------- Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
This commit is contained in:
parent
15804234d6
commit
595518ec12
@ -126,7 +126,7 @@ describe('getPanelMenu()', () => {
|
||||
const panel = new PanelModel({});
|
||||
const dashboard = createDashboardModelFixture({});
|
||||
const menuItems = getPanelMenu(dashboard, panel);
|
||||
const moreSubMenu = menuItems.find((i) => i.text === 'More...')?.subMenu;
|
||||
const moreSubMenu = menuItems.find((i) => i.text === 'Extensions')?.subMenu;
|
||||
|
||||
expect(moreSubMenu).toEqual(
|
||||
expect.arrayContaining([
|
||||
@ -154,7 +154,7 @@ describe('getPanelMenu()', () => {
|
||||
const panel = new PanelModel({});
|
||||
const dashboard = createDashboardModelFixture({});
|
||||
const menuItems = getPanelMenu(dashboard, panel);
|
||||
const moreSubMenu = menuItems.find((i) => i.text === 'More...')?.subMenu;
|
||||
const moreSubMenu = menuItems.find((i) => i.text === 'Extensions')?.subMenu;
|
||||
|
||||
expect(moreSubMenu).toEqual(
|
||||
expect.arrayContaining([
|
||||
@ -193,7 +193,7 @@ describe('getPanelMenu()', () => {
|
||||
const panel = new PanelModel({});
|
||||
const dashboard = createDashboardModelFixture({});
|
||||
const menuItems = getPanelMenu(dashboard, panel);
|
||||
const moreSubMenu = menuItems.find((i) => i.text === 'More...')?.subMenu;
|
||||
const moreSubMenu = menuItems.find((i) => i.text === 'Extensions')?.subMenu;
|
||||
|
||||
expect(moreSubMenu).toEqual(
|
||||
expect.arrayContaining([
|
||||
@ -224,7 +224,7 @@ describe('getPanelMenu()', () => {
|
||||
const panel = new PanelModel({});
|
||||
const dashboard = createDashboardModelFixture({});
|
||||
const menuItems = getPanelMenu(dashboard, panel);
|
||||
const moreSubMenu = menuItems.find((i) => i.text === 'More...')?.subMenu;
|
||||
const moreSubMenu = menuItems.find((i) => i.text === 'Extensions')?.subMenu;
|
||||
|
||||
expect(moreSubMenu).toEqual(
|
||||
expect.not.arrayContaining([
|
||||
|
@ -268,6 +268,40 @@ export function getPanelMenu(
|
||||
});
|
||||
}
|
||||
|
||||
const { extensions } = getPluginExtensions({
|
||||
placement: PluginExtensionPlacements.DashboardPanelMenu,
|
||||
context: createExtensionContext(panel, dashboard),
|
||||
});
|
||||
|
||||
if (extensions.length > 0) {
|
||||
const extensionsMenu: PanelMenuItem[] = [];
|
||||
|
||||
for (const extension of extensions) {
|
||||
if (isPluginExtensionLink(extension)) {
|
||||
extensionsMenu.push({
|
||||
text: truncateTitle(extension.title, 25),
|
||||
href: extension.path,
|
||||
});
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isPluginExtensionCommand(extension)) {
|
||||
extensionsMenu.push({
|
||||
text: truncateTitle(extension.title, 25),
|
||||
onClick: extension.callHandlerWithContext,
|
||||
});
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
menu.push({
|
||||
text: 'Extensions',
|
||||
iconClassName: 'plug',
|
||||
type: 'submenu',
|
||||
subMenu: extensionsMenu,
|
||||
});
|
||||
}
|
||||
|
||||
if (dashboard.canEditPanel(panel) && !panel.isEditing && !panel.isViewing) {
|
||||
menu.push({ type: 'divider', text: '' });
|
||||
|
||||
@ -279,29 +313,6 @@ export function getPanelMenu(
|
||||
});
|
||||
}
|
||||
|
||||
const { extensions } = getPluginExtensions({
|
||||
placement: PluginExtensionPlacements.DashboardPanelMenu,
|
||||
context: createExtensionContext(panel, dashboard),
|
||||
});
|
||||
|
||||
for (const extension of extensions) {
|
||||
if (isPluginExtensionLink(extension)) {
|
||||
subMenu.push({
|
||||
text: truncateTitle(extension.title, 25),
|
||||
href: extension.path,
|
||||
});
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isPluginExtensionCommand(extension)) {
|
||||
subMenu.push({
|
||||
text: truncateTitle(extension.title, 25),
|
||||
onClick: extension.callHandlerWithContext,
|
||||
});
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user