Skip to content

Commit b7f6b3f

Browse files
committed
Replace ViewTypeSwitcher menu with compact v-select
- Remove v-menu wrapper for single-click operation - Style v-select to be compact and right-aligned - Hide ViewTypeSwitcher in oblique sub-views
1 parent 6a5723b commit b7f6b3f

2 files changed

Lines changed: 50 additions & 17 deletions

File tree

src/components/SliceViewerOverlay.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,11 @@ const { metadata } = useImage(imageId);
6969
</div>
7070
</template>
7171
<template #bottom-right>
72-
<div class="annotation-cell" @click.stop>
72+
<div
73+
v-if="!viewId.includes('-coronal') && !viewId.includes('-sagittal') && !viewId.includes('-axial') && !viewId.includes('-multi-oblique')"
74+
class="annotation-cell"
75+
@click.stop
76+
>
7377
<ViewTypeSwitcher :view-id="viewId" :image-id="imageId" />
7478
</div>
7579
</template>

src/components/ViewTypeSwitcher.vue

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,49 @@ function updateView(newViewName: string) {
3131
</script>
3232

3333
<template>
34-
<v-menu location="top right" :close-on-content-click="false" offset="10">
35-
<template #activator="{ props }">
36-
<v-btn size="xs" v-bind="props" class="pointer-events-all">
37-
{{ viewName }}
38-
</v-btn>
39-
</template>
40-
<v-card min-width="150">
41-
<v-select
42-
:model-value="viewName"
43-
@update:model-value="updateView($event)"
44-
:items="availableViewNames"
45-
density="compact"
46-
hide-details
47-
></v-select>
48-
</v-card>
49-
</v-menu>
34+
<v-select
35+
:model-value="viewName"
36+
@update:model-value="updateView($event)"
37+
:items="availableViewNames"
38+
density="compact"
39+
hide-details
40+
variant="solo"
41+
class="pointer-events-all view-type-select"
42+
></v-select>
5043
</template>
44+
45+
<style scoped>
46+
.view-type-select {
47+
max-width: 90px;
48+
font-size: 0.8125rem;
49+
margin-left: auto;
50+
}
51+
52+
.view-type-select :deep(.v-field__input) {
53+
padding: 0 4px;
54+
min-height: 20px;
55+
text-align: right;
56+
font-size: 0.8125rem;
57+
}
58+
59+
.view-type-select :deep(.v-field) {
60+
min-height: 20px;
61+
}
62+
63+
.view-type-select :deep(.v-field__append-inner) {
64+
padding-top: 0;
65+
padding-right: 2px;
66+
}
67+
68+
.view-type-select :deep(.v-input__control) {
69+
min-height: 20px;
70+
}
71+
72+
.view-type-select :deep(.v-field__overlay) {
73+
background-color: transparent;
74+
}
75+
76+
.view-type-select :deep(.v-icon) {
77+
font-size: 0.875rem;
78+
}
79+
</style>

0 commit comments

Comments
 (0)