Chore: Fix two minor bugs related to favorite datasources (#113444)

This commit is contained in:
Andres Martinez Gotor
2025-11-06 09:18:11 +01:00
committed by GitHub
parent 2411e78cd1
commit 35ac04bad3
4 changed files with 10 additions and 5 deletions
@@ -41,6 +41,7 @@ export function DataSourceCard({
<small className={styles.type}>{description || ds.meta.name}</small>
{onToggleFavorite && !ds.meta.builtIn && (
<Icon
key={(isFavorite ? 'favorite' : 'star') + '-' + ds.uid}
name={isFavorite ? 'favorite' : 'star'}
onClick={(e) => {
e.stopPropagation();
@@ -6,7 +6,7 @@ import { Observable } from 'rxjs';
import { DataSourceInstanceSettings, DataSourceJsonData, DataSourceRef, GrafanaTheme2 } from '@grafana/data';
import { selectors } from '@grafana/e2e-selectors';
import { Trans } from '@grafana/i18n';
import { getTemplateSrv, reportInteraction, useFavoriteDatasources } from '@grafana/runtime';
import { FavoriteDatasources, getTemplateSrv, reportInteraction } from '@grafana/runtime';
import { useStyles2, useTheme2 } from '@grafana/ui';
import { useDatasources, useKeyboardNavigatableList, useRecentlyUsedDataSources } from '../../hooks';
@@ -45,6 +45,7 @@ export interface DataSourceListProps {
onClickEmptyStateCTA?: () => void;
enableKeyboardNavigation?: boolean;
dataSources?: Array<DataSourceInstanceSettings<DataSourceJsonData>>;
favoriteDataSources: FavoriteDatasources;
}
export function DataSourceList(props: DataSourceListProps) {
@@ -58,7 +59,7 @@ export function DataSourceList(props: DataSourceListProps) {
const theme = useTheme2();
const styles = getStyles(theme, selectedItemCssSelector);
const { className, current, onChange, enableKeyboardNavigation, onClickEmptyStateCTA } = props;
const { className, current, onChange, enableKeyboardNavigation, onClickEmptyStateCTA, favoriteDataSources } = props;
const dataSources = useDatasources(
{
alerting: props.alerting,
@@ -76,7 +77,6 @@ export function DataSourceList(props: DataSourceListProps) {
);
const [recentlyUsedDataSources, pushRecentlyUsedDataSource] = useRecentlyUsedDataSources();
const favoriteDataSources = useFavoriteDatasources();
const filteredDataSources = props.filter ? dataSources.filter(props.filter) : dataSources;
@@ -219,6 +219,7 @@ export function DataSourceModal({
dashboard={dashboard}
mixed={mixed}
dataSources={dataSources}
favoriteDataSources={favoriteDataSources}
/>
<BuiltInList className={styles.appendBuiltInDataSourcesList} />
</ScrollContainer>
@@ -11,7 +11,7 @@ import { Observable } from 'rxjs';
import { DataSourceInstanceSettings, GrafanaTheme2 } from '@grafana/data';
import { selectors } from '@grafana/e2e-selectors';
import { Trans, t } from '@grafana/i18n';
import { reportInteraction, useFavoriteDatasources } from '@grafana/runtime';
import { FavoriteDatasources, reportInteraction, useFavoriteDatasources } from '@grafana/runtime';
import { DataQuery, DataSourceJsonData, DataSourceRef } from '@grafana/schema';
import { Button, floatingUtils, Icon, Input, ModalsController, Portal, ScrollContainer, useStyles2 } from '@grafana/ui';
import config from 'app/core/config';
@@ -306,6 +306,7 @@ export function DataSourcePicker(props: DataSourcePickerProps) {
onDismiss={onClose}
onNavigateOutsiteFooter={onNavigateOutsiteFooter}
dataSources={dataSources}
favoriteDataSources={favoriteDataSources}
/>
</div>
</Portal>
@@ -343,10 +344,11 @@ export interface PickerContentProps extends DataSourcePickerProps {
footerRef: (element: HTMLElement | null) => void;
onNavigateOutsiteFooter: (e: React.KeyboardEvent<HTMLButtonElement>) => void;
dataSources: Array<DataSourceInstanceSettings<DataSourceJsonData>>;
favoriteDataSources: FavoriteDatasources;
}
const PickerContent = React.forwardRef<HTMLDivElement, PickerContentProps>((props, ref) => {
const { filterTerm, onChange, onClose, onClickAddCSV, current, filter, dataSources } = props;
const { filterTerm, onChange, onClose, onClickAddCSV, current, filter, dataSources, favoriteDataSources } = props;
const changeCallback = useCallback(
(ds: DataSourceInstanceSettings) => {
@@ -368,6 +370,7 @@ const PickerContent = React.forwardRef<HTMLDivElement, PickerContentProps>((prop
<ScrollContainer showScrollIndicators>
<DataSourceList
{...props}
favoriteDataSources={favoriteDataSources}
enableKeyboardNavigation
className={styles.dataSourceList}
current={current}