diff --git a/webui/src/api/search.ts b/webui/src/api/search.ts index 1405b30b..53baf80e 100644 --- a/webui/src/api/search.ts +++ b/webui/src/api/search.ts @@ -62,11 +62,11 @@ export const apiSearch = { es.close(); return; } - console.error('EventSource error:', err); // onerror also fires when the server closes the stream after a // successful search — only count it as a failure when the connection // never opened (auth/server/network problem). if (status.value === 'CONNECTING') { + console.error('EventSource error:', err); error.value = true; } close(); diff --git a/webui/src/components/ab-container.vue b/webui/src/components/ab-container.vue index 03db031d..27b171ce 100644 --- a/webui/src/components/ab-container.vue +++ b/webui/src/components/ab-container.vue @@ -37,7 +37,7 @@ const { title = 'title', flush = false } = defineProps<{ align-items: center; justify-content: space-between; padding: 0 14px; - height: 34px; + min-height: 34px; background: transparent; color: var(--color-text-secondary); border-bottom: 1px solid var(--color-border); diff --git a/webui/src/components/ab-edit-rule.vue b/webui/src/components/ab-edit-rule.vue index 9b28f52e..cf9daa3b 100644 --- a/webui/src/components/ab-edit-rule.vue +++ b/webui/src/components/ab-edit-rule.vue @@ -456,6 +456,7 @@ function emitUnarchive() { // Review warning banner .review-warning { display: flex; + flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; @@ -470,7 +471,7 @@ function emitUnarchive() { display: flex; align-items: center; gap: 10px; - flex: 1; + flex: 1 1 200px; min-width: 0; } @@ -502,6 +503,7 @@ function emitUnarchive() { align-items: center; gap: 8px; flex-shrink: 0; + margin-left: auto; } .review-warning-actions .detect-btn, diff --git a/webui/src/components/ab-torrent-list-page.vue b/webui/src/components/ab-torrent-list-page.vue index 40044a0a..9c4b782f 100644 --- a/webui/src/components/ab-torrent-list-page.vue +++ b/webui/src/components/ab-torrent-list-page.vue @@ -257,10 +257,11 @@ onActivated(load); } .torrent-name { - display: block; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + overflow-wrap: anywhere; font-size: 13px; color: var(--color-text); } diff --git a/webui/src/components/bangumi-filter-field.vue b/webui/src/components/bangumi-filter-field.vue index 787b699b..9206afb9 100644 --- a/webui/src/components/bangumi-filter-field.vue +++ b/webui/src/components/bangumi-filter-field.vue @@ -47,16 +47,24 @@ const emit = defineEmits<{ .advanced-control { display: flex; justify-content: flex-end; + min-width: 0; :deep(.n-dynamic-tags) { justify-content: flex-end; min-height: 32px; + min-width: 0; .n-tag { height: 28px; + max-width: calc(100% - 6px); margin: 2px 0 2px 6px !important; } + .n-tag__content { + overflow: hidden; + text-overflow: ellipsis; + } + .n-button { height: 28px; } diff --git a/webui/src/components/calendar/calendar-mobile-list.vue b/webui/src/components/calendar/calendar-mobile-list.vue index 2daa36b3..a899716f 100644 --- a/webui/src/components/calendar/calendar-mobile-list.vue +++ b/webui/src/components/calendar/calendar-mobile-list.vue @@ -75,7 +75,7 @@ function posterSrc(link: string | null | undefined): string {
- {{ group.primary.official_title }} + {{ group.primary.official_title }} {{ group.rules.length }} @@ -216,11 +216,17 @@ function posterSrc(link: string | null | undefined): string { font-size: 14px; font-weight: 500; color: var(--color-text); + display: flex; + align-items: center; + margin-bottom: 4px; + transition: color var(--transition-normal); +} + +.calendar-row-title-text { + min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; - margin-bottom: 4px; - transition: color var(--transition-normal); } .calendar-row-meta { @@ -230,6 +236,7 @@ function posterSrc(link: string | null | undefined): string { } .calendar-row-badge { + flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; diff --git a/webui/src/components/layout/ab-mobile-nav.vue b/webui/src/components/layout/ab-mobile-nav.vue index 8952c473..33a9f758 100644 --- a/webui/src/components/layout/ab-mobile-nav.vue +++ b/webui/src/components/layout/ab-mobile-nav.vue @@ -119,7 +119,7 @@ const visibleItems = computed(() => { &__item { // 不收缩:项多时导航栏横向滚动,保持 44px 以上的触控区域 flex: 1 0 auto; - min-width: 56px; + min-width: var(--touch-target); display: flex; flex-direction: column; align-items: center; diff --git a/webui/src/components/layout/ab-notification-center.vue b/webui/src/components/layout/ab-notification-center.vue index c5b89db7..1c069b8d 100644 --- a/webui/src/components/layout/ab-notification-center.vue +++ b/webui/src/components/layout/ab-notification-center.vue @@ -1,5 +1,6 @@