mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 08:13:47 +08:00

* Chore: initial commit * Tests: fixes MetricsQueryEditor.test.tsx * Tests: fixes cloudwatch/specs/datasource.test.ts * Tests: fixes stackdriver/specs/datasource.test.ts * Tests: remove refrences to CustomVariable * Refactor: moves DefaultVariableQueryEditor * Refactor: moves utils * Refactor: moves types * Refactor: removes variableSrv * Refactor: removes feature toggle newVariables * Refactor: removes valueSelectDropDown * Chore: removes GeneralTabCtrl * Chore: migrates RowOptions * Refactor: adds RowOptionsButton * Refactor: makes the interface more explicit * Refactor: small changes * Refactor: changed type as it can be any variable type * Tests: fixes broken test * Refactor: changes after PR comments * Refactor: adds loading state and call to onChange in componentDidMount
36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import React, { FunctionComponent, useEffect, useState } from 'react';
|
|
import { VariableHide, VariableModel } from '../../../variables/types';
|
|
import { selectors } from '@grafana/e2e-selectors';
|
|
import { PickerRenderer } from '../../../variables/pickers/PickerRenderer';
|
|
|
|
interface Props {
|
|
variables: VariableModel[];
|
|
}
|
|
|
|
export const SubMenuItems: FunctionComponent<Props> = ({ variables }) => {
|
|
const [visibleVariables, setVisibleVariables] = useState<VariableModel[]>([]);
|
|
useEffect(() => {
|
|
setVisibleVariables(variables.filter(state => state.hide !== VariableHide.hideVariable));
|
|
}, [variables]);
|
|
|
|
if (visibleVariables.length === 0) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<>
|
|
{visibleVariables.map(variable => {
|
|
return (
|
|
<div
|
|
key={variable.id}
|
|
className="submenu-item gf-form-inline"
|
|
aria-label={selectors.pages.Dashboard.SubMenu.submenuItem}
|
|
>
|
|
<PickerRenderer variable={variable} />
|
|
</div>
|
|
);
|
|
})}
|
|
</>
|
|
);
|
|
};
|