Skip to content

Commit 0b38b01

Browse files
authored
Show filters icon only when there are some variables to show (#116)
1 parent d9271d8 commit 0b38b01

File tree

2 files changed

+26
-28
lines changed

2 files changed

+26
-28
lines changed

public/app/features/dashboard/components/SubMenu/SubMenu.tsx

+1-21
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { css } from '@emotion/css';
2-
import FilterListIcon from '@mui/icons-material/FilterList';
3-
import { Box, styled } from '@mui/material';
4-
import React, { FC, PureComponent } from 'react';
2+
import React, { PureComponent } from 'react';
53
import { connect, MapStateToProps } from 'react-redux';
64

75
import { AnnotationQuery, DataQuery, GrafanaTheme2 } from '@grafana/data';
@@ -63,7 +61,6 @@ class SubMenuUnConnected extends PureComponent<Props> {
6361
return (
6462
<div className={styles.submenu}>
6563
<form aria-label="Template variables" className={styles.formStyles} onSubmit={this.disableSubmitOnEnter}>
66-
<FilterWithIcon />
6764
<SubMenuItems variables={variables} readOnly={readOnlyVariables} />
6865
</form>
6966
<Annotations
@@ -112,20 +109,3 @@ const getStyles = stylesFactory((theme: GrafanaTheme2) => {
112109
export const SubMenu = withTheme2(connect(mapStateToProps)(SubMenuUnConnected));
113110

114111
SubMenu.displayName = 'SubMenu';
115-
116-
const FilterWithIcon: FC = () => (
117-
<FilterWithIconStyled>
118-
<FilterListIcon sx={{ color: '#3A785E' }} />
119-
FILTERS
120-
</FilterWithIconStyled>
121-
);
122-
123-
const FilterWithIconStyled = styled(Box)({
124-
display: 'flex',
125-
gap: 1,
126-
alignItems: 'center',
127-
color: '#3A785E',
128-
fontWeight: 600,
129-
lineHeight: '160%',
130-
fontSize: 12,
131-
});

public/app/features/dashboard/components/SubMenu/SubMenuItems.tsx

+25-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
import React, { useEffect, useState } from 'react';
1+
import FilterListIcon from '@mui/icons-material/FilterList';
2+
import { Box, styled } from '@mui/material';
3+
import React, { FC, useEffect, useState } from 'react';
24

35
import { selectors } from '@grafana/e2e-selectors';
46
import { useSelector } from 'app/types';
@@ -17,20 +19,19 @@ export const SubMenuItems = ({ variables, readOnly }: Props) => {
1719
const hiddenVariables = useSelector((state) => state.fnGlobalState.hiddenVariables);
1820

1921
useEffect(() => {
20-
setVisibleVariables(variables.filter((state) => state.hide !== VariableHide.hideVariable));
21-
}, [variables]);
22+
setVisibleVariables(
23+
variables.filter((state) => state.hide !== VariableHide.hideVariable && !hiddenVariables?.includes(state.id))
24+
);
25+
}, [variables, hiddenVariables]);
2226

2327
if (visibleVariables.length === 0) {
2428
return null;
2529
}
2630

2731
return (
2832
<>
33+
<FilterWithIcon />
2934
{visibleVariables.map((variable) => {
30-
if (hiddenVariables?.includes(variable.id)) {
31-
return null;
32-
}
33-
3435
return (
3536
<div
3637
key={variable.id}
@@ -44,3 +45,20 @@ export const SubMenuItems = ({ variables, readOnly }: Props) => {
4445
</>
4546
);
4647
};
48+
49+
const FilterWithIcon: FC = () => (
50+
<FilterWithIconStyled>
51+
<FilterListIcon sx={{ color: '#3A785E' }} />
52+
FILTERS
53+
</FilterWithIconStyled>
54+
);
55+
56+
const FilterWithIconStyled = styled(Box)({
57+
display: 'flex',
58+
gap: 1,
59+
alignItems: 'center',
60+
color: '#3A785E',
61+
fontWeight: 600,
62+
lineHeight: '160%',
63+
fontSize: 12,
64+
});

0 commit comments

Comments
 (0)