1
1
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' ;
5
3
import { connect , MapStateToProps } from 'react-redux' ;
6
4
7
- import { AnnotationQuery , DataQuery , TypedVariableModel , GrafanaTheme2 } from '@grafana/data' ;
8
- import { FnGlobalState } from 'app/core/reducers/fn-slice ' ;
5
+ import { AnnotationQuery , DataQuery , GrafanaTheme2 } from '@grafana/data' ;
6
+ import { stylesFactory , Themeable2 , withTheme2 } from '@grafana/ui ' ;
9
7
10
8
import { StoreState } from '../../../../types' ;
11
9
import { getSubMenuVariables , getVariablesState } from '../../../variables/state/selectors' ;
10
+ import { VariableModel } from '../../../variables/types' ;
12
11
import { DashboardModel } from '../../state' ;
13
12
14
13
import { Annotations } from './Annotations' ;
15
14
import { DashboardLinks } from './DashboardLinks' ;
16
15
import { SubMenuItems } from './SubMenuItems' ;
17
- // import { VariableModel } from 'app/features/variables/types';
18
- import { Themeable2 , stylesFactory , withTheme2 } from '@grafana-ui' ;
19
16
import { DashboardLink } from '@grafana/schema/dist/esm/index' ;
20
17
21
18
interface OwnProps extends Themeable2 {
@@ -25,8 +22,7 @@ interface OwnProps extends Themeable2 {
25
22
}
26
23
27
24
interface ConnectedProps {
28
- variables : TypedVariableModel [ ] ;
29
- hiddenVariables : FnGlobalState [ 'hiddenVariables' ] ;
25
+ variables : VariableModel [ ] ;
30
26
}
31
27
32
28
interface DispatchProps { }
@@ -56,17 +52,16 @@ class SubMenuUnConnected extends PureComponent<Props> {
56
52
57
53
const styles = getStyles ( theme ) ;
58
54
55
+ if ( ! dashboard . isSubMenuVisible ( ) ) {
56
+ return null ;
57
+ }
58
+
59
59
const readOnlyVariables = dashboard . meta . isSnapshot ?? false ;
60
60
61
61
return (
62
- < div className = "submenu-controls" >
63
- < form aria-label = "Template variables" className = { styles } >
64
- < FilterWithIcon />
65
- < SubMenuItems
66
- variables = { variables }
67
- readOnly = { readOnlyVariables }
68
- hiddenVariables = { this . props . hiddenVariables }
69
- />
62
+ < div className = { styles . submenu } >
63
+ < form aria-label = "Template variables" className = { styles . formStyles } onSubmit = { this . disableSubmitOnEnter } >
64
+ < SubMenuItems variables = { variables } readOnly = { readOnlyVariables } />
70
65
</ form >
71
66
< Annotations
72
67
annotations = { annotations }
@@ -86,25 +81,25 @@ const mapStateToProps: MapStateToProps<ConnectedProps, OwnProps, StoreState> = (
86
81
87
82
return {
88
83
variables : getSubMenuVariables ( uid , templatingState . variables ) ,
89
- hiddenVariables : state . fnGlobalState . hiddenVariables ,
90
84
} ;
91
85
} ;
92
86
93
87
const getStyles = stylesFactory ( ( theme : GrafanaTheme2 ) => {
94
88
return {
95
- formStyles : css ( {
96
- display : 'contents' ,
97
- flexWrap : 'wrap' ,
98
- } ) ,
99
- submenu : css ( {
100
- display : 'flex' ,
101
- flexDirection : 'row' ,
102
- flexWrap : 'wrap' ,
103
- alignContent : 'flex-start' ,
104
- alignItems : 'flex-start' ,
105
- gap : `${ theme . spacing ( 1 ) } ${ theme . spacing ( 2 ) } ` ,
106
- padding : `0 0 ${ theme . spacing ( 1 ) } 0` ,
107
- } ) ,
89
+ formStyles : css `
90
+ display : flex;
91
+ flex-wrap : wrap;
92
+ display : contents;
93
+ ` ,
94
+ submenu : css `
95
+ display : flex;
96
+ flex-direction : row;
97
+ flex-wrap : wrap;
98
+ align-content : flex-start;
99
+ align-items : flex-start;
100
+ gap : ${ theme . spacing ( 1 ) } ${ theme . spacing ( 2 ) } ;
101
+ padding : 0 0 ${ theme . spacing ( 1 ) } 0 ;
102
+ ` ,
108
103
spacer : css ( {
109
104
flexGrow : 1 ,
110
105
} ) ,
@@ -114,20 +109,3 @@ const getStyles = stylesFactory((theme: GrafanaTheme2) => {
114
109
export const SubMenu = withTheme2 ( connect ( mapStateToProps ) ( SubMenuUnConnected ) ) ;
115
110
116
111
SubMenu . displayName = 'SubMenu' ;
117
-
118
- const FilterWithIcon : FC = ( ) => (
119
- < FilterWithIconStyled >
120
- < FilterListIcon sx = { { color : '#3A785E' } } />
121
- FILTERS
122
- </ FilterWithIconStyled >
123
- ) ;
124
-
125
- const FilterWithIconStyled = styled ( Box ) ( {
126
- display : 'flex' ,
127
- gap : 1 ,
128
- alignItems : 'center' ,
129
- color : '#3A785E' ,
130
- fontWeight : 600 ,
131
- lineHeight : '160%' ,
132
- fontSize : 12 ,
133
- } ) ;
0 commit comments