mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
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:
@@ -61,4 +61,5 @@ export {
|
||||
isPluginExtensionCommand,
|
||||
assertPluginExtensionCommand,
|
||||
PluginExtensionTypes,
|
||||
PluginExtensionPlacements,
|
||||
} from './pluginExtensions';
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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),
|
||||
});
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
export enum GrafanaExtensions {
|
||||
DashboardPanelMenu = 'grafana/dashboard/panel/menu',
|
||||
}
|
||||
Reference in New Issue
Block a user