Skip to content

Commit f95e68b

Browse files
authored
fix(issues): Clean up tags drawer header (#117777)
goal was to fix some style issues in the tag drawer in dark mode. Swapped alernating backgrounds for hover state. Also moves the tags and feature flag drawer controls into the drawer header so the body doesn't get that weird extra padding at the top. before <img width="1248" height="924" alt="image" src="https://github.com/user-attachments/assets/2caf174b-af32-4c71-9eb5-d742135fa288" /> after (yes is hovered) <img width="1244" height="892" alt="image" src="https://github.com/user-attachments/assets/52c03784-3261-4dcf-b623-5e894a119923" />
1 parent afe69fe commit f95e68b

6 files changed

Lines changed: 78 additions & 137 deletions

File tree

static/app/components/events/eventDrawer.tsx

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ import {useHasPageFrameFeature} from 'sentry/views/navigation/useHasPageFrameFea
1616

1717
export const Header = styled('h3')`
1818
display: block;
19+
min-width: 0;
20+
width: 100%;
21+
white-space: nowrap;
22+
overflow: hidden;
23+
text-overflow: ellipsis;
1924
font-size: ${p => p.theme.font.size.xl};
2025
font-weight: ${p => p.theme.font.weight.sans.medium};
2126
margin: 0;
@@ -103,22 +108,6 @@ export const EventNavigator = styled('div')`
103108
);
104109
`;
105110

106-
export const EventStickyControls = styled('div')`
107-
display: flex;
108-
justify-content: space-between;
109-
gap: ${p => p.theme.space.md};
110-
position: sticky;
111-
top: -${p => p.theme.space.xl};
112-
margin-block: -${p => p.theme.space.xl};
113-
padding-block: ${p => p.theme.space.xl};
114-
background: ${p => p.theme.tokens.background.primary};
115-
z-index: 1; /* Just below EventNavigator */
116-
117-
/* Make this full-width inside DrawerBody */
118-
margin-inline: -24px;
119-
padding-inline: 24px;
120-
`;
121-
122111
export const EventDrawerBody = styled(DrawerBody)`
123112
overflow: auto;
124113
overscroll-behavior: contain;

static/app/views/issueDetails/groupDistributions/flagsDistributionDrawer.tsx

Lines changed: 33 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,16 @@ import {AnalyticsArea} from 'sentry/components/analyticsArea';
66
import {
77
EventDrawerBody,
88
EventNavigator,
9-
EventStickyControls,
9+
Header,
1010
} from 'sentry/components/events/eventDrawer';
1111
import {FeatureFlagSort} from 'sentry/components/events/featureFlags/featureFlagSort';
1212
import {OrderBy} from 'sentry/components/events/featureFlags/utils';
13-
import {t} from 'sentry/locale';
13+
import {t, tct} from 'sentry/locale';
1414
import type {Group} from 'sentry/types/group';
1515
import type {Organization} from 'sentry/types/organization';
1616
import {trackAnalytics} from 'sentry/utils/analytics';
1717
import {useParams} from 'sentry/utils/useParams';
1818
import {GroupDistributionsSearchInput} from 'sentry/views/issueDetails/groupDistributions/groupDistributionsSearchInput';
19-
import {HeaderTitle} from 'sentry/views/issueDetails/groupDistributions/headerTitle';
2019
import {TagFlagPicker} from 'sentry/views/issueDetails/groupDistributions/tagFlagPicker';
2120
import {DrawerTab} from 'sentry/views/issueDetails/groupDistributions/types';
2221
import {FlagDetailsDrawerContent} from 'sentry/views/issueDetails/groupFeatureFlags/details/flagDetailsDrawerContent';
@@ -50,45 +49,41 @@ export function FlagsDistributionDrawer({group, organization, setTab}: Props) {
5049
return (
5150
<Fragment>
5251
<EventNavigator>
53-
<HeaderTitle
54-
tagKey={tagKey}
55-
tab={DrawerTab.FEATURE_FLAGS}
56-
includeFeatureFlagsTab
57-
/>
58-
</EventNavigator>
59-
<EventDrawerBody>
52+
<Header>
53+
{tagKey
54+
? tct('Feature Flag Details - [tagKey]', {tagKey})
55+
: t('Tags & Feature Flags')}
56+
</Header>
6057
{tagKey ? null : (
61-
<EventStickyControls>
58+
<Grid flow="column" align="center" gap="md" marginLeft="auto">
6259
<TagFlagPicker setTab={setTab} tab={DrawerTab.FEATURE_FLAGS} />
60+
<GroupDistributionsSearchInput
61+
includeFeatureFlagsTab
62+
search={search}
63+
onChange={value => {
64+
setSearch(value);
65+
trackAnalytics('tags.drawer.action', {
66+
control: 'search',
67+
organization,
68+
});
69+
}}
70+
/>
6371

64-
<Grid flow="column" align="center" gap="md">
65-
<GroupDistributionsSearchInput
66-
includeFeatureFlagsTab
67-
search={search}
68-
onChange={value => {
69-
setSearch(value);
70-
trackAnalytics('tags.drawer.action', {
71-
control: 'search',
72-
organization,
73-
});
74-
}}
75-
/>
76-
77-
<FeatureFlagSort
78-
orderBy={orderBy}
79-
setOrderBy={value => {
80-
setOrderBy(value);
81-
trackAnalytics('flags.sort_flags', {
82-
organization,
83-
sortMethod: value as string,
84-
});
85-
}}
86-
orderByOptions={orderByOptions}
87-
/>
88-
</Grid>
89-
</EventStickyControls>
72+
<FeatureFlagSort
73+
orderBy={orderBy}
74+
setOrderBy={value => {
75+
setOrderBy(value);
76+
trackAnalytics('flags.sort_flags', {
77+
organization,
78+
sortMethod: value as string,
79+
});
80+
}}
81+
orderByOptions={orderByOptions}
82+
/>
83+
</Grid>
9084
)}
91-
85+
</EventNavigator>
86+
<EventDrawerBody>
9287
{tagKey ? (
9388
<AnalyticsArea name="feature_flag_details">
9489
<FlagDetailsDrawerContent group={group} />

static/app/views/issueDetails/groupDistributions/headerTitle.tsx

Lines changed: 0 additions & 39 deletions
This file was deleted.

static/app/views/issueDetails/groupDistributions/tagsDistributionDrawer.tsx

Lines changed: 31 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ import {Tooltip} from '@sentry/scraps/tooltip';
77
import {
88
EventDrawerBody,
99
EventNavigator,
10-
EventStickyControls,
10+
Header,
1111
} from 'sentry/components/events/eventDrawer';
1212
import {IconSort} from 'sentry/icons';
13+
import {t, tct} from 'sentry/locale';
1314
import type {Group} from 'sentry/types/group';
1415
import type {Organization} from 'sentry/types/organization';
1516
import type {Project} from 'sentry/types/project';
1617
import {trackAnalytics} from 'sentry/utils/analytics';
1718
import {useParams} from 'sentry/utils/useParams';
1819
import {GroupDistributionsSearchInput} from 'sentry/views/issueDetails/groupDistributions/groupDistributionsSearchInput';
19-
import {HeaderTitle} from 'sentry/views/issueDetails/groupDistributions/headerTitle';
2020
import {TagExportDropdown} from 'sentry/views/issueDetails/groupDistributions/tagExportDropdown';
2121
import {TagFlagPicker} from 'sentry/views/issueDetails/groupDistributions/tagFlagPicker';
2222
import {DrawerTab} from 'sentry/views/issueDetails/groupDistributions/types';
@@ -47,11 +47,13 @@ export function TagsDistributionDrawer({
4747
return (
4848
<Fragment>
4949
<EventNavigator>
50-
<HeaderTitle
51-
tagKey={tagKey}
52-
tab={DrawerTab.TAGS}
53-
includeFeatureFlagsTab={includeFeatureFlagsTab}
54-
/>
50+
<Header>
51+
{tagKey
52+
? tct('Tag Details - [tagKey]', {tagKey})
53+
: includeFeatureFlagsTab
54+
? t('Tags & Feature Flags')
55+
: t('All Tags')}
56+
</Header>
5557

5658
{tagKey ? (
5759
<TagExportDropdown
@@ -60,40 +62,31 @@ export function TagsDistributionDrawer({
6062
group={group}
6163
tagKey={tagKey}
6264
/>
63-
) : null}
64-
</EventNavigator>
65-
<EventDrawerBody>
66-
{tagKey ? null : (
67-
<EventStickyControls>
65+
) : (
66+
<Grid flow="column" align="center" gap="md" marginLeft="auto">
6867
{includeFeatureFlagsTab ? (
6968
<TagFlagPicker setTab={setTab} tab={DrawerTab.TAGS} />
70-
) : (
71-
<div />
72-
)}
73-
74-
<Grid flow="column" align="center" gap="md">
75-
<GroupDistributionsSearchInput
76-
includeFeatureFlagsTab={includeFeatureFlagsTab}
77-
search={search}
78-
onChange={value => {
79-
setSearch(value);
80-
trackAnalytics('tags.drawer.action', {
81-
control: 'search',
82-
organization,
83-
});
84-
}}
85-
/>
86-
{includeFeatureFlagsTab ? (
87-
<Fragment>
88-
<Tooltip title="Highlighted tags are shown first">
89-
<Button aria-label="" disabled size="xs" icon={<IconSort />} />
90-
</Tooltip>
91-
</Fragment>
92-
) : null}
93-
</Grid>
94-
</EventStickyControls>
69+
) : null}
70+
<GroupDistributionsSearchInput
71+
includeFeatureFlagsTab={includeFeatureFlagsTab}
72+
search={search}
73+
onChange={value => {
74+
setSearch(value);
75+
trackAnalytics('tags.drawer.action', {
76+
control: 'search',
77+
organization,
78+
});
79+
}}
80+
/>
81+
{includeFeatureFlagsTab ? (
82+
<Tooltip title="Highlighted tags are shown first">
83+
<Button aria-label="" disabled size="xs" icon={<IconSort />} />
84+
</Tooltip>
85+
) : null}
86+
</Grid>
9587
)}
96-
88+
</EventNavigator>
89+
<EventDrawerBody>
9790
{tagKey ? (
9891
<TagDetailsDrawerContent group={group} />
9992
) : (

static/app/views/issueDetails/groupTags/tagDetailsDrawerContent.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,10 +395,10 @@ const Header = styled(Body)`
395395

396396
const Row = styled(Body)`
397397
&:nth-child(even) {
398-
background: ${p => p.theme.tokens.background.secondary};
398+
background: ${p => p.theme.tokens.background.tertiary};
399399
}
400400
align-items: center;
401-
border-radius: 4px;
401+
border-radius: ${p => p.theme.radius.md};
402402
padding: ${p => p.theme.space['2xs']} ${p => p.theme.space.md};
403403
404404
.invisible {

static/app/views/issueDetails/groupTags/tagDistribution.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,17 +147,20 @@ const TagValueContent = styled('div')`
147147
grid-template-columns: 4fr auto ${progressBarWidth};
148148
color: ${p => p.theme.tokens.content.secondary};
149149
grid-column-gap: ${p => p.theme.space.md};
150-
151-
& > :nth-child(2n) {
152-
background-color: ${p => p.theme.tokens.background.secondary};
153-
}
154150
`;
155151

156152
const TagValueRow = styled('div')`
157153
display: grid;
158154
grid-column: 1 / -1;
159155
grid-template-columns: subgrid;
160156
align-items: center;
157+
padding: 0 ${p => p.theme.space.sm};
158+
margin: 0 -${p => p.theme.space.sm};
159+
border-radius: ${p => p.theme.radius.md};
160+
161+
&:hover {
162+
background-color: ${p => p.theme.tokens.background.tertiary};
163+
}
161164
`;
162165

163166
const TagValue = styled('div')`

0 commit comments

Comments
 (0)