chore: add an option to hide the metrics browser in a PromQueryField (#108718)

This commit is contained in:
Russ
2025-07-28 14:23:41 -08:00
committed by GitHub
parent bee169d7a6
commit 4392cea75a
2 changed files with 31 additions and 14 deletions
@@ -80,6 +80,19 @@ describe('PromQueryField', () => {
expect(bcButton).toBeDisabled();
});
it('renders no metrics chooser if hidden by props', async () => {
const props = {
...defaultProps,
hideMetricsBrowser: true,
};
const queryField = render(<PromQueryField {...props} />);
// wait for component to render
await screen.findByTestId('dummy-code-input');
expect(queryField.queryByRole('button')).not.toBeInTheDocument();
});
it('renders an initial hint if no data and initial hint provided', async () => {
const props = defaultProps;
props.datasource.lookupsDisabled = true;
@@ -25,6 +25,7 @@ import { MonacoQueryFieldWrapper } from './monaco-query-field/MonacoQueryFieldWr
interface PromQueryFieldProps extends QueryEditorProps<PrometheusDatasource, PromQuery, PromOptions> {
ExtraFieldElement?: ReactNode;
hideMetricsBrowser?: boolean;
'data-testid'?: string;
}
@@ -40,6 +41,7 @@ export const PromQueryField = (props: PromQueryFieldProps) => {
range,
onChange,
onRunQuery,
hideMetricsBrowser = false,
} = props;
const theme = useTheme2();
@@ -111,20 +113,22 @@ export const PromQueryField = (props: PromQueryFieldProps) => {
className="gf-form-inline gf-form-inline--xs-view-flex-column flex-grow-1"
data-testid={props['data-testid']}
>
<button
className="gf-form-label query-keyword pointer"
onClick={onClickChooserButton}
disabled={datasource.lookupsDisabled}
type="button"
data-testid={selectors.components.DataSource.Prometheus.queryEditor.code.metricsBrowser.openButton}
>
{datasource.lookupsDisabled ? (
<Trans i18nKey="grafana-prometheus.metrics-browser.disabled-label">(Disabled)</Trans>
) : (
<Trans i18nKey="grafana-prometheus.metrics-browser.enabled-label">Metrics browser</Trans>
)}
<Icon name={labelBrowserVisible ? 'angle-down' : 'angle-right'} />
</button>
{!hideMetricsBrowser && (
<button
className="gf-form-label query-keyword pointer"
onClick={onClickChooserButton}
disabled={datasource.lookupsDisabled}
type="button"
data-testid={selectors.components.DataSource.Prometheus.queryEditor.code.metricsBrowser.openButton}
>
{datasource.lookupsDisabled ? (
<Trans i18nKey="grafana-prometheus.metrics-browser.disabled-label">(Disabled)</Trans>
) : (
<Trans i18nKey="grafana-prometheus.metrics-browser.enabled-label">Metrics browser</Trans>
)}
<Icon name={labelBrowserVisible ? 'angle-down' : 'angle-right'} />
</button>
)}
<div className="flex-grow-1 min-width-15">
<MonacoQueryFieldWrapper