Dashboards: Add restricted extension point for empty state (#111788)

* Dashboards: Add restricted extension point for empty state

* FeatureToggles: Regenerate files with new toggle

* Dashboards: Pass default empty UI as component, not children

* Dashboards: Expose hooks for empty state methods to extensions

* Dashboards: Move empty state button hooks to dedicated file

* Dashboards: Render loader while empty state plugin components loading

* Dashboards: Pass empty state default UI as method

* Dashboards: De-duplicate hook usages in empty state

* Dashboards: De-duplicate read-only repo check in empty state
This commit is contained in:
Matt Cowley
2025-10-13 09:03:13 +02:00
committed by GitHub
parent 1e5f65faf9
commit 85174e3313
12 changed files with 217 additions and 59 deletions
+10
View File
@@ -1891,6 +1891,16 @@ var (
FrontendOnly: true,
Expression: "false", // extensions will be disabled by default
},
{
Name: "enableDashboardEmptyExtensions",
Description: "Set this to true to enable all dashboard empty state extensions registered by plugins.",
Stage: FeatureStageExperimental,
Owner: grafanaDashboardsSquad,
HideFromAdminPage: true,
HideFromDocs: true,
FrontendOnly: true,
Expression: "false", // extensions will be disabled by default
},
{
Name: "foldersAppPlatformAPI",
Description: "Enables use of app platform API for folders",
+1
View File
@@ -244,6 +244,7 @@ preferLibraryPanelTitle,privatePreview,@grafana/dashboards-squad,false,false,fal
tabularNumbers,GA,@grafana/grafana-frontend-platform,false,false,false
newInfluxDSConfigPageDesign,privatePreview,@grafana/partner-datasources,false,false,false
enableAppChromeExtensions,experimental,@grafana/plugins-platform-backend,false,false,true
enableDashboardEmptyExtensions,experimental,@grafana/dashboards-squad,false,false,true
foldersAppPlatformAPI,experimental,@grafana/grafana-search-navigate-organise,false,false,true
enablePluginImporter,experimental,@grafana/plugins-platform-backend,false,false,true
otelLogsFormatting,experimental,@grafana/observability-logs,false,false,true
1 Name Stage Owner requiresDevMode RequiresRestart FrontendOnly
244 tabularNumbers GA @grafana/grafana-frontend-platform false false false
245 newInfluxDSConfigPageDesign privatePreview @grafana/partner-datasources false false false
246 enableAppChromeExtensions experimental @grafana/plugins-platform-backend false false true
247 enableDashboardEmptyExtensions experimental @grafana/dashboards-squad false false true
248 foldersAppPlatformAPI experimental @grafana/grafana-search-navigate-organise false false true
249 enablePluginImporter experimental @grafana/plugins-platform-backend false false true
250 otelLogsFormatting experimental @grafana/observability-logs false false true
+4
View File
@@ -986,6 +986,10 @@ const (
// Set this to true to enable all app chrome extensions registered by plugins.
FlagEnableAppChromeExtensions = "enableAppChromeExtensions"
// FlagEnableDashboardEmptyExtensions
// Set this to true to enable all dashboard empty state extensions registered by plugins.
FlagEnableDashboardEmptyExtensions = "enableDashboardEmptyExtensions"
// FlagFoldersAppPlatformAPI
// Enables use of app platform API for folders
FlagFoldersAppPlatformAPI = "foldersAppPlatformAPI"
+16
View File
@@ -1383,6 +1383,22 @@
"expression": "false"
}
},
{
"metadata": {
"name": "enableDashboardEmptyExtensions",
"resourceVersion": "1759194774156",
"creationTimestamp": "2025-09-30T01:12:54Z"
},
"spec": {
"description": "Set this to true to enable all dashboard empty state extensions registered by plugins.",
"stage": "experimental",
"codeowner": "@grafana/dashboards-squad",
"frontend": true,
"hideFromAdminPage": true,
"hideFromDocs": true,
"expression": "false"
}
},
{
"metadata": {
"name": "enableDatagridEditing",