diff --git a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md index dd91faaf0cf..471c03c9ac2 100644 --- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md +++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @@ -38,6 +38,7 @@ Some stable features are enabled by default. You can disable a stable feature by | `lokiMetricDataplane` | Changes metric responses from Loki to be compliant with the dataplane specification. | Yes | | `dataplaneFrontendFallback` | Support dataplane contract field name change for transformations and field name matchers where the name is different | Yes | | `useCachingService` | When turned on, the new query and resource caching implementation using a wire service inject will be used in place of the previous middleware implementation | | +| `advancedDataSourcePicker` | Enable a new data source picker with contextual information, recently used order and advanced mode | Yes | ## Beta feature toggles @@ -68,50 +69,49 @@ Some stable features are enabled by default. You can disable a stable feature by These features are early in their development lifecycle and so are not yet supported in Grafana Cloud. Alpha features might be changed or removed without prior notice. -| Feature toggle name | Description | -| ---------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `live-service-web-worker` | This will use a webworker thread to processes events rather than the main thread | -| `queryOverLive` | Use Grafana Live WebSocket to execute backend queries | -| `lokiLive` | Support WebSocket streaming for loki (early prototype) | -| `storage` | Configurable storage for dashboards, datasources, and resources | -| `newTraceViewHeader` | Shows the new trace view header | -| `datasourceQueryMultiStatus` | Introduce HTTP 207 Multi Status for api/ds/query | -| `traceToMetrics` | Enable trace to metrics links | -| `prometheusWideSeries` | Enable wide series responses in the Prometheus datasource | -| `canvasPanelNesting` | Allow elements nesting | -| `scenes` | Experimental framework to build interactive dashboards | -| `disableSecretsCompatibility` | Disable duplicated secret storage in legacy tables | -| `logRequestsInstrumentedAsUnknown` | Logs the path for requests that are instrumented as unknown | -| `redshiftAsyncQueryDataSupport` | Enable async query data support for Redshift | -| `athenaAsyncQueryDataSupport` | Enable async query data support for Athena | -| `showDashboardValidationWarnings` | Show warnings when dashboards do not validate against the schema | -| `mysqlAnsiQuotes` | Use double quotes to escape keyword in a MySQL query | -| `showTraceId` | Show trace ids for requests | -| `datasourceOnboarding` | Enable data source onboarding page | -| `authnService` | Use new auth service to perform authentication | -| `alertingBacktesting` | Rule backtesting API for alerting | -| `editPanelCSVDragAndDrop` | Enables drag and drop for CSV and Excel files | -| `lokiQuerySplitting` | Split large interval queries into subqueries with smaller time intervals | -| `lokiQuerySplittingConfig` | Give users the option to configure split durations for Loki queries | -| `individualCookiePreferences` | Support overriding cookie preferences per user | -| `onlyExternalOrgRoleSync` | Prohibits a user from changing organization roles synced with external auth providers | -| `traceqlSearch` | Enables the 'TraceQL Search' tab for the Tempo datasource which provides a UI to generate TraceQL queries | -| `prometheusMetricEncyclopedia` | Replaces the Prometheus query builder metric select option with a paginated and filterable component | -| `timeSeriesTable` | Enable time series table transformer & sparkline cell type | -| `prometheusResourceBrowserCache` | Displays browser caching options in Prometheus data source configuration | -| `influxdbBackendMigration` | Query InfluxDB InfluxQL without the proxy | -| `clientTokenRotation` | Replaces the current in-request token rotation so that the client initiates the rotation | -| `disableSSEDataplane` | Disables dataplane specific processing in server side expressions. | -| `alertStateHistoryLokiSecondary` | Enable Grafana to write alert state history to an external Loki instance in addition to Grafana annotations. | -| `alertStateHistoryLokiPrimary` | Enable a remote Loki instance as the primary source for state history reads. | -| `alertStateHistoryLokiOnly` | Disable Grafana alerts from emitting annotations when a remote Loki instance is available. | -| `unifiedRequestLog` | Writes error logs to the request logger | -| `pyroscopeFlameGraph` | Changes flame graph to pyroscope one | -| `authenticationConfigUI` | Enables authentication configuration UI | -| `pluginsAPIManifestKey` | Use grafana.com API to retrieve the public manifest key | -| `advancedDataSourcePicker` | Enable a new data source picker with contextual information, recently used order, CSV upload and advanced mode | -| `opensearchDetectVersion` | Enable version detection in OpenSearch | -| `extraThemes` | Enables extra themes | +| Feature toggle name | Description | +| ---------------------------------- | ------------------------------------------------------------------------------------------------------------ | +| `live-service-web-worker` | This will use a webworker thread to processes events rather than the main thread | +| `queryOverLive` | Use Grafana Live WebSocket to execute backend queries | +| `lokiLive` | Support WebSocket streaming for loki (early prototype) | +| `storage` | Configurable storage for dashboards, datasources, and resources | +| `newTraceViewHeader` | Shows the new trace view header | +| `datasourceQueryMultiStatus` | Introduce HTTP 207 Multi Status for api/ds/query | +| `traceToMetrics` | Enable trace to metrics links | +| `prometheusWideSeries` | Enable wide series responses in the Prometheus datasource | +| `canvasPanelNesting` | Allow elements nesting | +| `scenes` | Experimental framework to build interactive dashboards | +| `disableSecretsCompatibility` | Disable duplicated secret storage in legacy tables | +| `logRequestsInstrumentedAsUnknown` | Logs the path for requests that are instrumented as unknown | +| `redshiftAsyncQueryDataSupport` | Enable async query data support for Redshift | +| `athenaAsyncQueryDataSupport` | Enable async query data support for Athena | +| `showDashboardValidationWarnings` | Show warnings when dashboards do not validate against the schema | +| `mysqlAnsiQuotes` | Use double quotes to escape keyword in a MySQL query | +| `showTraceId` | Show trace ids for requests | +| `datasourceOnboarding` | Enable data source onboarding page | +| `authnService` | Use new auth service to perform authentication | +| `alertingBacktesting` | Rule backtesting API for alerting | +| `editPanelCSVDragAndDrop` | Enables drag and drop for CSV and Excel files | +| `lokiQuerySplitting` | Split large interval queries into subqueries with smaller time intervals | +| `lokiQuerySplittingConfig` | Give users the option to configure split durations for Loki queries | +| `individualCookiePreferences` | Support overriding cookie preferences per user | +| `onlyExternalOrgRoleSync` | Prohibits a user from changing organization roles synced with external auth providers | +| `traceqlSearch` | Enables the 'TraceQL Search' tab for the Tempo datasource which provides a UI to generate TraceQL queries | +| `prometheusMetricEncyclopedia` | Replaces the Prometheus query builder metric select option with a paginated and filterable component | +| `timeSeriesTable` | Enable time series table transformer & sparkline cell type | +| `prometheusResourceBrowserCache` | Displays browser caching options in Prometheus data source configuration | +| `influxdbBackendMigration` | Query InfluxDB InfluxQL without the proxy | +| `clientTokenRotation` | Replaces the current in-request token rotation so that the client initiates the rotation | +| `disableSSEDataplane` | Disables dataplane specific processing in server side expressions. | +| `alertStateHistoryLokiSecondary` | Enable Grafana to write alert state history to an external Loki instance in addition to Grafana annotations. | +| `alertStateHistoryLokiPrimary` | Enable a remote Loki instance as the primary source for state history reads. | +| `alertStateHistoryLokiOnly` | Disable Grafana alerts from emitting annotations when a remote Loki instance is available. | +| `unifiedRequestLog` | Writes error logs to the request logger | +| `pyroscopeFlameGraph` | Changes flame graph to pyroscope one | +| `authenticationConfigUI` | Enables authentication configuration UI | +| `pluginsAPIManifestKey` | Use grafana.com API to retrieve the public manifest key | +| `opensearchDetectVersion` | Enable version detection in OpenSearch | +| `extraThemes` | Enables extra themes | ## Development feature toggles diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index f4e4ca1f066..c733163986e 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -505,9 +505,10 @@ var ( }, { Name: "advancedDataSourcePicker", - Description: "Enable a new data source picker with contextual information, recently used order, CSV upload and advanced mode", - State: FeatureStateAlpha, + Description: "Enable a new data source picker with contextual information, recently used order and advanced mode", + State: FeatureStateStable, FrontendOnly: true, + Expression: "true", // enabled by default Owner: grafanaDashboardsSquad, }, { diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index e65a685d974..62398c50c03 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -74,7 +74,7 @@ useCachingService,stable,@grafana/grafana-operator-experience-squad,false,false, enableElasticsearchBackendQuerying,beta,@grafana/observability-logs,false,false,false,false authenticationConfigUI,alpha,@grafana/grafana-authnz-team,false,false,false,false pluginsAPIManifestKey,alpha,@grafana/plugins-platform-backend,false,false,false,false -advancedDataSourcePicker,alpha,@grafana/dashboards-squad,false,false,false,true +advancedDataSourcePicker,stable,@grafana/dashboards-squad,false,false,false,true opensearchDetectVersion,alpha,@grafana/aws-plugins,false,false,false,true faroDatasourceSelector,beta,@grafana/app-o11y,false,false,false,true enableDatagridEditing,beta,@grafana/grafana-bi-squad,false,false,false,true diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index 4a06797b78c..4240a8a8c7b 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -308,7 +308,7 @@ const ( FlagPluginsAPIManifestKey = "pluginsAPIManifestKey" // FlagAdvancedDataSourcePicker - // Enable a new data source picker with contextual information, recently used order, CSV upload and advanced mode + // Enable a new data source picker with contextual information, recently used order and advanced mode FlagAdvancedDataSourcePicker = "advancedDataSourcePicker" // FlagOpensearchDetectVersion diff --git a/public/app/features/datasources/components/picker/DataSourceDropdown.tsx b/public/app/features/datasources/components/picker/DataSourceDropdown.tsx index 21166c00d55..3f7a5487936 100644 --- a/public/app/features/datasources/components/picker/DataSourceDropdown.tsx +++ b/public/app/features/datasources/components/picker/DataSourceDropdown.tsx @@ -5,6 +5,7 @@ import React, { useCallback, useEffect, useRef, useState } from 'react'; import { usePopper } from 'react-popper'; import { DataSourceInstanceSettings, GrafanaTheme2 } from '@grafana/data'; +import { selectors } from '@grafana/e2e-selectors'; import { reportInteraction } from '@grafana/runtime'; import { DataSourceJsonData } from '@grafana/schema'; import { Button, Icon, Input, ModalsController, Portal, useStyles2 } from '@grafana/ui'; @@ -103,12 +104,13 @@ export function DataSourceDropdown(props: DataSourceDropdownProps) { const styles = useStyles2(getStylesDropdown); return ( -
+
{/* This clickable div is just extending the clickable area on the input element to include the prefix and suffix. */} {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}