Skip to content

Commit 2eba7f2

Browse files
committed
size header list according to contents and eliminate size jump on hover
1 parent e58bcad commit 2eba7f2

File tree

1 file changed

+35
-18
lines changed

1 file changed

+35
-18
lines changed

src/Frontend/src/components/messages2/HeadersView.vue

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,31 +35,22 @@ const filteredHeaders = computed(() => {
3535
</div>
3636
</div>
3737
</div>
38-
<table class="table" v-if="filteredHeaders.length > 0 && !headers.not_found">
39-
<tbody>
40-
<tr class="interactiveList" v-for="(header, index) in filteredHeaders" :key="index">
41-
<td nowrap="nowrap">{{ header.key }}</td>
42-
<td>
43-
<div class="headercopy" @mouseover="toggleHover(index, true)" @mouseleave="toggleHover(index, false)">
44-
<pre>{{ header.value }}</pre>
45-
<CopyToClipboard v-if="hoverStates[index] && header.value" :value="header.value" :isIconOnly="true" />
46-
</div>
47-
</td>
48-
</tr>
49-
</tbody>
50-
</table>
38+
<div class="header-list" v-if="filteredHeaders.length > 0 && !headers.not_found">
39+
<template v-for="(header, index) in filteredHeaders" :key="index">
40+
<div class="header-key">{{ header.key }}</div>
41+
<div class="header-value" @mouseover="toggleHover(index, true)" @mouseleave="toggleHover(index, false)">
42+
<pre>{{ header.value }}</pre>
43+
<div class="header-value-copy"><CopyToClipboard v-if="hoverStates[index] && header.value" :value="header.value" :isIconOnly="true" /></div>
44+
</div>
45+
</template>
46+
</div>
5147

5248
<!-- Message if filtered list is empty -->
5349
<div v-if="filteredHeaders.length <= 0 && !headers.not_found" class="alert alert-warning">No headers found matching the search term.</div>
5450
<div v-if="headers.not_found" class="alert alert-info">Could not find message headers. This could be because the message URL is invalid or the corresponding message was processed and is no longer tracked by ServiceControl.</div>
5551
</template>
5652

5753
<style scoped>
58-
.headercopy {
59-
display: flex;
60-
gap: 0.4rem;
61-
}
62-
6354
/* empty filtered list message */
6455
.alert-warning {
6556
margin-top: 10px;
@@ -90,4 +81,30 @@ const filteredHeaders = computed(() => {
9081
border-radius: 3px;
9182
padding: 5px;
9283
}
84+
85+
.header-list {
86+
margin-top: 0.5rem;
87+
display: grid;
88+
grid-template-columns: fit-content(30%) [key] fit-content(70%) [value];
89+
align-items: center;
90+
column-gap: 0.5rem;
91+
}
92+
93+
.header-key {
94+
grid-column: key;
95+
display: contents;
96+
}
97+
98+
.header-value {
99+
grid-column: value;
100+
position: relative;
101+
}
102+
103+
.header-value-copy {
104+
position: absolute;
105+
right: 0.5rem;
106+
right: 0.5rem;
107+
top: 0.2rem;
108+
z-index: 1;
109+
}
93110
</style>

0 commit comments

Comments
 (0)