Extensions: Expose an enum for available placements (#64586)

* feat: expose an enum type for extension placements

* fix: export the enum properly
This commit is contained in:
Levente Balogh
2023-03-10 13:55:38 +01:00
committed by GitHub
parent 548a5054ad
commit 79152969f3
5 changed files with 25 additions and 14 deletions

View File

@@ -61,4 +61,5 @@ export {
isPluginExtensionCommand,
assertPluginExtensionCommand,
PluginExtensionTypes,
PluginExtensionPlacements,
} from './pluginExtensions';

View File

@@ -2,6 +2,10 @@
* These types are exposed when rendering extension points
*/
export enum PluginExtensionPlacements {
DashboardPanelMenu = 'grafana/dashboard/panel/menu',
}
export enum PluginExtensionTypes {
link = 'link',
command = 'command',

View File

@@ -1,4 +1,10 @@
import { PanelMenuItem, PluginExtension, PluginExtensionLink, PluginExtensionTypes } from '@grafana/data';
import {
PanelMenuItem,
PluginExtension,
PluginExtensionLink,
PluginExtensionTypes,
PluginExtensionPlacements,
} from '@grafana/data';
import {
PluginExtensionPanelContext,
PluginExtensionRegistryItem,
@@ -7,7 +13,6 @@ import {
import { LoadingState } from '@grafana/schema';
import config from 'app/core/config';
import * as actions from 'app/features/explore/state/main';
import { GrafanaExtensions } from 'app/features/plugins/extensions/placements';
import { setStore } from 'app/store/store';
import { PanelModel } from '../state';
@@ -138,7 +143,7 @@ describe('getPanelMenu()', () => {
describe('when extending panel menu from plugins', () => {
it('should contain menu item from link extension', () => {
setPluginsExtensionRegistry({
[GrafanaExtensions.DashboardPanelMenu]: [
[PluginExtensionPlacements.DashboardPanelMenu]: [
createRegistryItem<PluginExtensionLink>({
type: PluginExtensionTypes.link,
title: 'Declare incident',
@@ -166,7 +171,7 @@ describe('getPanelMenu()', () => {
it('should truncate menu item title to 25 chars', () => {
setPluginsExtensionRegistry({
[GrafanaExtensions.DashboardPanelMenu]: [
[PluginExtensionPlacements.DashboardPanelMenu]: [
createRegistryItem<PluginExtensionLink>({
type: PluginExtensionTypes.link,
title: 'Declare incident when pressing this amazing menu item',
@@ -202,7 +207,7 @@ describe('getPanelMenu()', () => {
});
setPluginsExtensionRegistry({
[GrafanaExtensions.DashboardPanelMenu]: [
[PluginExtensionPlacements.DashboardPanelMenu]: [
createRegistryItem<PluginExtensionLink>(
{
type: PluginExtensionTypes.link,
@@ -233,7 +238,7 @@ describe('getPanelMenu()', () => {
it('should hide menu item if configure function returns undefined', () => {
setPluginsExtensionRegistry({
[GrafanaExtensions.DashboardPanelMenu]: [
[PluginExtensionPlacements.DashboardPanelMenu]: [
createRegistryItem<PluginExtensionLink>(
{
type: PluginExtensionTypes.link,
@@ -266,7 +271,7 @@ describe('getPanelMenu()', () => {
const configure = jest.fn();
setPluginsExtensionRegistry({
[GrafanaExtensions.DashboardPanelMenu]: [
[PluginExtensionPlacements.DashboardPanelMenu]: [
createRegistryItem<PluginExtensionLink>(
{
type: PluginExtensionTypes.link,
@@ -348,7 +353,7 @@ describe('getPanelMenu()', () => {
};
setPluginsExtensionRegistry({
[GrafanaExtensions.DashboardPanelMenu]: [
[PluginExtensionPlacements.DashboardPanelMenu]: [
createRegistryItem<PluginExtensionLink>(
{
type: PluginExtensionTypes.link,

View File

@@ -1,4 +1,9 @@
import { isPluginExtensionCommand, isPluginExtensionLink, PanelMenuItem } from '@grafana/data';
import {
isPluginExtensionCommand,
isPluginExtensionLink,
PanelMenuItem,
PluginExtensionPlacements,
} from '@grafana/data';
import {
AngularComponent,
getDataSourceSrv,
@@ -26,7 +31,6 @@ import {
} from 'app/features/dashboard/utils/panel';
import { InspectTab } from 'app/features/inspector/types';
import { isPanelModelLibraryPanel } from 'app/features/library-panels/guard';
import { GrafanaExtensions } from 'app/features/plugins/extensions/placements';
import { store } from 'app/store/store';
import { navigateToExplore } from '../../explore/state/main';
@@ -295,7 +299,7 @@ export function getPanelMenu(
}
const { extensions } = getPluginExtensions({
placement: GrafanaExtensions.DashboardPanelMenu,
placement: PluginExtensionPlacements.DashboardPanelMenu,
context: createExtensionContext(panel, dashboard),
});

View File

@@ -1,3 +0,0 @@
export enum GrafanaExtensions {
DashboardPanelMenu = 'grafana/dashboard/panel/menu',
}