@@ -20,7 +20,8 @@ import PanelLayout from '../panelLayout';
20
20
21
21
import CustomOverride from './customOverride' ;
22
22
import FeatureFlagItem from './featureFlagItem' ;
23
- import { FeatureFlagsContextProvider , useFeatureFlagsContext } from './featureFlagsContext' ;
23
+ import { useFeatureFlagsContext } from './featureFlagsContext' ;
24
+ import FlagOverridesBadge from './flagOverridesBadge' ;
24
25
25
26
type Prefilter = 'all' | 'overrides' ;
26
27
@@ -30,90 +31,88 @@ export default function FeatureFlagsPanel() {
30
31
const [ isAddFlagActive , setIsAddFlagActive ] = useState ( false ) ;
31
32
32
33
return (
33
- < FeatureFlagsContextProvider >
34
- < PanelLayout
35
- title = "Feature Flags"
36
- titleRight = {
37
- < button
38
- aria-label = "Override Flag"
39
- css = { [ resetButtonCss , panelHeadingRightCss ] }
40
- title = "Override Flag"
41
- onClick = { ( ) => setIsAddFlagActive ( ! isAddFlagActive ) }
42
- >
43
- < span css = { buttonRightCss } >
44
- { isAddFlagActive ? (
45
- < IconChevron direction = "up" size = "xs" />
46
- ) : (
47
- < IconChevron direction = "down" size = "xs" />
48
- ) }
49
- Override
50
- </ span >
51
- </ button >
52
- }
34
+ < PanelLayout
35
+ title = "Feature Flags"
36
+ titleRight = {
37
+ < button
38
+ aria-label = "Override Flag"
39
+ css = { [ resetButtonCss , panelHeadingRightCss ] }
40
+ title = "Override Flag"
41
+ onClick = { ( ) => setIsAddFlagActive ( ! isAddFlagActive ) }
42
+ >
43
+ < span css = { buttonRightCss } >
44
+ { isAddFlagActive ? (
45
+ < IconChevron direction = "up" size = "xs" />
46
+ ) : (
47
+ < IconChevron direction = "down" size = "xs" />
48
+ ) }
49
+ Override
50
+ </ span >
51
+ </ button >
52
+ }
53
+ >
54
+ { isAddFlagActive && (
55
+ < div
56
+ css = { [
57
+ smallCss ,
58
+ panelSectionCss ,
59
+ panelInsetContentCss ,
60
+ css `
61
+ background : var (--surface200 );
62
+ padding : var (--space150 );
63
+ ` ,
64
+ ] }
65
+ >
66
+ < AnalyticsProvider keyVal = "custom-override" nameVal = "Custom Override" >
67
+ < CustomOverride setComponentActive = { setIsAddFlagActive } />
68
+ </ AnalyticsProvider >
69
+ </ div >
70
+ ) }
71
+ < div
72
+ css = { css `
73
+ display : grid;
74
+ grid-template-rows : auto auto 1fr auto;
75
+ flex-grow : 1 ;
76
+ ` }
53
77
>
54
- { isAddFlagActive && (
55
- < div
56
- css = { [
57
- smallCss ,
58
- panelSectionCss ,
59
- panelInsetContentCss ,
60
- css `
61
- background : var (--surface200 );
62
- padding : var (--space150 );
63
- ` ,
64
- ] }
65
- >
66
- < AnalyticsProvider keyVal = "custom-override" nameVal = "Custom Override" >
67
- < CustomOverride setComponentActive = { setIsAddFlagActive } />
68
- </ AnalyticsProvider >
69
- </ div >
70
- ) }
78
+ < IsDirtyMessage />
79
+ < div
80
+ css = { [
81
+ smallCss ,
82
+ panelSectionCssNoBorder ,
83
+ panelInsetContentCss ,
84
+ css `
85
+ display : grid;
86
+ grid-template-areas : 'search segments' ;
87
+ gap : var (--space100 );
88
+ ` ,
89
+ ] }
90
+ >
91
+ < Filters
92
+ setPrefilter = { setPrefilter }
93
+ prefilter = { prefilter }
94
+ setSearchTerm = { setSearchTerm }
95
+ />
96
+ </ div >
71
97
< div
72
98
css = { css `
73
- display : grid ;
74
- grid-template-rows : auto auto 1 fr auto ;
75
- flex-grow : 1 ;
99
+ contain : strict ;
100
+ flex-direction : column ;
101
+ align-items : stretch ;
76
102
` }
77
103
>
78
- < IsDirtyMessage />
79
- < div
80
- css = { [
81
- smallCss ,
82
- panelSectionCssNoBorder ,
83
- panelInsetContentCss ,
84
- css `
85
- display : grid;
86
- grid-template-areas : 'search segments' ;
87
- gap : var (--space100 );
88
- ` ,
89
- ] }
90
- >
91
- < Filters
92
- setPrefilter = { setPrefilter }
93
- prefilter = { prefilter }
94
- setSearchTerm = { setSearchTerm }
95
- />
96
- </ div >
97
104
< div
98
105
css = { css `
99
- contain : strict;
100
- flex-direction : column;
101
- align-items : stretch;
106
+ overflow : auto;
102
107
` }
103
108
>
104
- < div
105
- css = { css `
106
- overflow : auto;
107
- ` }
108
- >
109
- < AnalyticsProvider keyVal = "flag-table" nameVal = "Flag Table" >
110
- < FlagTable searchTerm = { searchTerm } prefilter = { prefilter } />
111
- </ AnalyticsProvider >
112
- </ div >
109
+ < AnalyticsProvider keyVal = "flag-table" nameVal = "Flag Table" >
110
+ < FlagTable searchTerm = { searchTerm } prefilter = { prefilter } />
111
+ </ AnalyticsProvider >
113
112
</ div >
114
113
</ div >
115
- </ PanelLayout >
116
- </ FeatureFlagsContextProvider >
114
+ </ div >
115
+ </ PanelLayout >
117
116
) ;
118
117
}
119
118
@@ -154,10 +153,22 @@ function Filters({
154
153
grid-area : segments;
155
154
` }
156
155
>
157
- < SegmentedControl < Prefilter > onChange = { setPrefilter } size = "xs" value = { prefilter } >
158
- < SegmentedControl . Item key = "all" > All</ SegmentedControl . Item >
159
- < SegmentedControl . Item key = "overrides" > Overrides</ SegmentedControl . Item >
160
- </ SegmentedControl >
156
+ < div
157
+ css = { css `
158
+ position : relative;
159
+ display : grid;
160
+ ` }
161
+ >
162
+ < SegmentedControl < Prefilter >
163
+ onChange = { setPrefilter }
164
+ size = "xs"
165
+ value = { prefilter }
166
+ >
167
+ < SegmentedControl . Item key = "all" > All</ SegmentedControl . Item >
168
+ < SegmentedControl . Item key = "overrides" > Overrides</ SegmentedControl . Item >
169
+ </ SegmentedControl >
170
+ < FlagOverridesBadge />
171
+ </ div >
161
172
</ div >
162
173
< Input
163
174
css = { css `
0 commit comments