@@ -84,7 +84,7 @@ const logColorMap: Record<string, string> = {
8484const isDarkTheme = computed (() => theme .global .current .value .dark )
8585const isTransparentTheme = computed (() => theme .name .value === ' transparent' )
8686const normalizedSearchQuery = computed (() => (searchQuery .value ?? ' ' ).trim ().toLowerCase ())
87- const { availableHeight } = useAvailableHeight (136 , 320 )
87+ const { availableHeight } = useAvailableHeight (96 , 320 )
8888
8989const loggingViewStyle = computed (() => ({
9090 blockSize: display .mdAndUp .value ? ` ${availableHeight .value }px ` : ' 100%' ,
@@ -535,6 +535,37 @@ onUnmounted(() => {
535535 :style =" loggingViewStyle"
536536 >
537537 <div class =" logging-toolbar px-3" >
538+ <VSelect
539+ v-model =" selectedLevel"
540+ :items =" levelOptions"
541+ density =" compact"
542+ variant =" plain"
543+ hide-details
544+ class =" logging-level-select"
545+ :menu-props =" { width: 'auto' }"
546+ >
547+ <template #selection =" { item } " >
548+ <span
549+ :class =" item.value === 'ALL' ? 'text-primary' : `text-${logColorMap[item.value] || 'secondary'}`"
550+ class =" font-weight-medium"
551+ >
552+ {{ item.value === 'ALL' ? t('logging.allLevels') : item.value }}
553+ </span >
554+ </template >
555+ <template #item =" { props , item } " >
556+ <VListItem v-bind =" props" density =" compact" >
557+ <template #title >
558+ <span
559+ :class =" item.value === 'ALL' ? 'text-primary' : `text-${logColorMap[item.value] || 'secondary'}`"
560+ class =" font-weight-medium"
561+ >
562+ {{ item.value === 'ALL' ? t('logging.allLevels') : item.value }}
563+ </span >
564+ </template >
565+ </VListItem >
566+ </template >
567+ </VSelect >
568+
538569 <VTextField
539570 v-model =" searchQuery"
540571 class =" logging-search"
@@ -559,20 +590,6 @@ onUnmounted(() => {
559590 </VBtn >
560591 </div >
561592
562- <div class =" logging-levels px-3" >
563- <VChip
564- v-for =" level in levelOptions"
565- :key =" level"
566- size =" small"
567- variant =" tonal"
568- :color =" selectedLevel === level ? (level === 'ALL' ? 'primary' : logColorMap[level] || 'secondary') : undefined"
569- :class =" { 'logging-level-chip--active': selectedLevel === level }"
570- @click =" selectedLevel = level"
571- >
572- {{ level === 'ALL' ? t('logging.allLevels') : level }}
573- </VChip >
574- </div >
575-
576593 <div ref =" logViewportRef" class =" logging-shell is-wrap" @scroll.passive =" handleScroll" >
577594 <div v-if =" !isMounted" class =" logging-loading-overlay" >
578595 <LoadingBanner :text =" t('logging.initializing') + ' ...'" />
@@ -642,7 +659,6 @@ onUnmounted(() => {
642659 display : flex ;
643660 flex-direction : column ;
644661 block-size : 100% ;
645- gap : 0.75rem ;
646662 min-block-size : 20rem ;
647663}
648664
@@ -666,12 +682,12 @@ onUnmounted(() => {
666682 display : flex ;
667683 flex-wrap : wrap ;
668684 align-items : center ;
669- gap : 0.75 rem ;
685+ gap : 0.5 rem ;
670686}
671687
672688.logging-search {
673- flex : 1 1 18 rem ;
674- min-inline-size : 14 rem ;
689+ flex : 1 1 9 rem ;
690+ min-inline-size : 5 rem ;
675691}
676692
677693.logging-stream-action {
@@ -697,14 +713,24 @@ onUnmounted(() => {
697713 padding-inline-start : 0 ;
698714}
699715
700- .logging-levels {
701- display : flex ;
702- flex-wrap : wrap ;
703- gap : 0.5rem ;
716+ .logging-level-select {
717+ flex : 0 0 7rem ;
718+ min-inline-size : 7rem ;
719+ }
720+
721+ .logging-level-select :deep(.v-field ) {
722+ border-radius : 0 ;
723+ background : transparent !important ;
724+ box-shadow : none !important ;
725+ }
726+
727+ .logging-level-select :deep(.v-field__outline ),
728+ .logging-level-select :deep(.v-field__overlay ) {
729+ display : none ;
704730}
705731
706- .logging-level-chip--active {
707- box-shadow : inset 0 0 0 1 px rgba ( var ( --v-theme-on-surface ), 0.08 ) ;
732+ .logging-level-select :deep( .v-field__input ) {
733+ padding-inline : 0 ;
708734}
709735
710736.logging-shell {
0 commit comments