From ca840c80f5dc0f56868787247941834ea25ac696 Mon Sep 17 00:00:00 2001 From: hectorqin Date: Fri, 2 Oct 2026 22:06:33 +0800 Subject: [PATCH] fix(media): align detail loading header --- web/src/media/screen.tsx | 2 +- web/src/media/v2.css | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/web/src/media/screen.tsx b/web/src/media/screen.tsx index 476fc05..e13c5ad 100644 --- a/web/src/media/screen.tsx +++ b/web/src/media/screen.tsx @@ -549,7 +549,7 @@ export class MediaScreen { } ;} private closeSearch(){if(this.routing?.back){this.routing.back();return;}clearSearchReturn(this.api);this.searchOpen=false;this.query='';this.offset=0;void this.run(()=>this.load());} - private draw=()=>{if(this.disposed)return;if(this.player.videoControlsHost)render(this.playbackView&&this.player.active&&this.player.isWebVideo?:null,this.player.videoControlsHost);this.updateAudioLayout();this.element.classList.toggle('media-density-comfortable',this.preferences.density==='comfortable');if(this.playbackView&&!this.player.active&&!this.routing?.navigateRoute){this.closePlayback();return;}this.element.classList.toggle('media-secondary-page',!!(this.page&&!categoryKinds[this.page]||this.personal||this.managing||this.foldersOpen||this.itemId||this.searchOpen));this.element.classList.toggle('media-manager-workspace',this.managing&&!this.settingsOpen&&!this.permissionLibrary&&!this.renaming&&!this.creatingLibrary&&!this.playbackView);this.element.classList.toggle('media-utility-workspace',!!(this.settingsOpen||this.permissionLibrary||this.renaming||this.creatingLibrary)&&!this.playbackView);this.element.classList.toggle('media-metadata-workspace',!!this.metadataView&&!this.playbackView);this.element.classList.toggle('media-chapters-page',this.chaptersOpen&&!this.playbackView);this.element.classList.toggle('media-playback-page',this.playbackView);this.element.classList.toggle('media-video-page',this.playbackView&&this.player.isWebVideo);if(this.playbackView){render(<>{this.metadataPage(true)}{this.utilityPage(true)}{this.player.isWebVideo&&
视频播放
}{this.playbackRestoring?:this.playbackRestoreError?{if(this.location)void this.showRoute(this.location);}} onBack={this.closePlayback} backLabel="返回浏览"/>:this.player.active&&this.player.isWebVideo?null:this.player.active?{if(this.routing?.navigateRoute){this.openRoute(panel==='main'?'player':`player/${panel}`,{},this.itemId);return;}this.playbackPanel=panel;this.draw();this.element.scrollTop=0;}}/>:

当前没有播放内容。

},this.element);return;}if(this.chaptersOpen&&this.detail){render(this.chaptersView(this.detail),this.element);return;}if(this.metadataView&&this.detail&&this.admin){render(<>{this.metadataPage()},this.element);return;}if(this.settingsOpen||this.permissionLibrary||this.renaming||this.creatingLibrary){render(<>{this.utilityPage()},this.element);return;}const pageLoading=this.busy&&!this.personal&&!this.managing&&(!this.librariesLoaded||!!this.itemId&&!this.detail);const fullError=!!this.error&&(this.personal?this.personalFailed:!this.managing&&(!this.librariesLoaded||!!this.itemId&&!this.detail||this.catalogFailed));const browsing=!this.itemId&&!this.settingsOpen&&!this.personal&&!this.permissionLibrary&&!this.managing&&!this.detail&&!this.creatingLibrary&&!this.foldersOpen;render(<>
{browsing&&!this.searchOpen&&}{browsing&&!this.searchOpen?:this.personal?

{this.personal==='favorites'?'我的收藏':this.personal==='history'?'播放历史':'待播队列'}

{this.personal!=='favorites'&&{labels[this.channel]}}
:this.managing?

{this.managerTab==='tasks'?'扫描与刮削':'媒体库管理'}

:this.creatingLibrary?

新建{labels[this.channel]}媒体库

:this.foldersOpen?

文件夹浏览

:this.itemId&&!this.detail&&fullError?

{this.errorCause instanceof ApiError&&this.errorCause.kind==='forbidden'?'无访问权限':'内容不可用'}

:this.detail?

{this.detail.editions.length>0&&this.detail.editions.every(e=>e.parts.length>0&&e.parts.every(p=>!p.available))?'文件暂不可用':mediaDetailLabel(this.detail.kind)}

:this.searchOpen?

搜索

:{labels[this.channel]}}
{this.error&&this.retryScreen()} backLabel={this.folderReturn()?.itemId===this.itemId?'返回文件列表':'返回'+labels[this.channel]} onBack={this.itemId&&!this.detail?()=>{if(!this.backToFolder())this.navigate(this.channel);}:undefined}/>}{pageLoading?:this.busy&&!this.catalogLoading&&!this.personalLoading&&}{this.personal?this.personalView():this.managing?this.manager():this.detail?this.detailView(this.detail):this.itemId||!this.librariesLoaded||fullError?null:<>{this.searchOpen?this.syncLocation('search',params,'',true)} api={this.api} channel={this.channel} navigate={this.navigate}/>:this.browseView()}} + private draw=()=>{if(this.disposed)return;if(this.player.videoControlsHost)render(this.playbackView&&this.player.active&&this.player.isWebVideo?:null,this.player.videoControlsHost);this.updateAudioLayout();this.element.classList.toggle('media-density-comfortable',this.preferences.density==='comfortable');if(this.playbackView&&!this.player.active&&!this.routing?.navigateRoute){this.closePlayback();return;}this.element.classList.toggle('media-secondary-page',!!(this.page&&!categoryKinds[this.page]||this.personal||this.managing||this.foldersOpen||this.itemId||this.searchOpen));this.element.classList.toggle('media-manager-workspace',this.managing&&!this.settingsOpen&&!this.permissionLibrary&&!this.renaming&&!this.creatingLibrary&&!this.playbackView);this.element.classList.toggle('media-utility-workspace',!!(this.settingsOpen||this.permissionLibrary||this.renaming||this.creatingLibrary)&&!this.playbackView);this.element.classList.toggle('media-metadata-workspace',!!this.metadataView&&!this.playbackView);this.element.classList.toggle('media-chapters-page',this.chaptersOpen&&!this.playbackView);this.element.classList.toggle('media-playback-page',this.playbackView);this.element.classList.toggle('media-video-page',this.playbackView&&this.player.isWebVideo);if(this.playbackView){render(<>{this.metadataPage(true)}{this.utilityPage(true)}{this.player.isWebVideo&&
视频播放
}{this.playbackRestoring?:this.playbackRestoreError?{if(this.location)void this.showRoute(this.location);}} onBack={this.closePlayback} backLabel="返回浏览"/>:this.player.active&&this.player.isWebVideo?null:this.player.active?{if(this.routing?.navigateRoute){this.openRoute(panel==='main'?'player':`player/${panel}`,{},this.itemId);return;}this.playbackPanel=panel;this.draw();this.element.scrollTop=0;}}/>:

当前没有播放内容。

},this.element);return;}if(this.chaptersOpen&&this.detail){render(this.chaptersView(this.detail),this.element);return;}if(this.metadataView&&this.detail&&this.admin){render(<>{this.metadataPage()},this.element);return;}if(this.settingsOpen||this.permissionLibrary||this.renaming||this.creatingLibrary){render(<>{this.utilityPage()},this.element);return;}const pageLoading=this.busy&&!this.personal&&!this.managing&&(!this.librariesLoaded||!!this.itemId&&!this.detail);const fullError=!!this.error&&(this.personal?this.personalFailed:!this.managing&&(!this.librariesLoaded||!!this.itemId&&!this.detail||this.catalogFailed));const browsing=!this.itemId&&!this.settingsOpen&&!this.personal&&!this.permissionLibrary&&!this.managing&&!this.detail&&!this.creatingLibrary&&!this.foldersOpen;render(<>
{browsing&&!this.searchOpen&&}{browsing&&!this.searchOpen?:this.personal?

{this.personal==='favorites'?'我的收藏':this.personal==='history'?'播放历史':'待播队列'}

{this.personal!=='favorites'&&{labels[this.channel]}}
:this.managing?

{this.managerTab==='tasks'?'扫描与刮削':'媒体库管理'}

:this.creatingLibrary?

新建{labels[this.channel]}媒体库

:this.foldersOpen?

文件夹浏览

:this.itemId&&!this.detail&&fullError?

{this.errorCause instanceof ApiError&&this.errorCause.kind==='forbidden'?'无访问权限':'内容不可用'}

:this.itemId&&!this.detail?

{mediaDetailLabel(this.kind)}

:this.detail?

{this.detail.editions.length>0&&this.detail.editions.every(e=>e.parts.length>0&&e.parts.every(p=>!p.available))?'文件暂不可用':mediaDetailLabel(this.detail.kind)}

:this.searchOpen?

搜索

:{labels[this.channel]}}
{this.error&&this.retryScreen()} backLabel={this.folderReturn()?.itemId===this.itemId?'返回文件列表':'返回'+labels[this.channel]} onBack={this.itemId&&!this.detail?()=>{if(!this.backToFolder())this.navigate(this.channel);}:undefined}/>}{pageLoading?:this.busy&&!this.catalogLoading&&!this.personalLoading&&}{this.personal?this.personalView():this.managing?this.manager():this.detail?this.detailView(this.detail):this.itemId||!this.librariesLoaded||fullError?null:<>{this.searchOpen?this.syncLocation('search',params,'',true)} api={this.api} channel={this.channel} navigate={this.navigate}/>:this.browseView()}} ,this.element); }; dispose(){this.disposed=true;this.playbackRestore?.abort();this.theme.dispose();cancelAnimationFrame(this.layoutFrame);this.playerSize?.disconnect();window.removeEventListener('resize',this.updateAudioLayout);document.removeEventListener('keydown',this.dismissMenus,true);document.removeEventListener('click',this.dismissMenus,true);document.removeEventListener('keydown',this.onKeyDown);this.abort.abort();if(this.poll)clearTimeout(this.poll);this.player.removeEventListener('change',this.onPlayerChanged);this.player.removeEventListener('open-controls',this.openPlayback);this.player.setControlsExpanded(false);if(this.player.videoControlsHost)render(null,this.player.videoControlsHost);render(null,this.element);} diff --git a/web/src/media/v2.css b/web/src/media/v2.css index b5b0d92..6a07dd5 100644 --- a/web/src/media/v2.css +++ b/web/src/media/v2.css @@ -562,6 +562,9 @@ body[data-media-theme] {--surface-muted:var(--media-theme-surface)} .media-screen .media-continue:hover,.media-screen .media-continue:focus-visible{border-color:var(--media-accent);box-shadow:0 3px 12px rgba(31,42,34,.08);outline:none} .media-screen .media-continue-play{display:grid!important;place-items:center;width:38px!important;min-width:38px!important;height:38px!important;min-height:38px!important;padding:0!important;border:1px solid color-mix(in srgb,var(--media-accent) 35%,var(--border))!important;border-radius:50%!important;background:transparent!important;color:var(--media-accent)!important} .media-screen .media-continue-play:hover{background:var(--media-selection)!important} +.media-screen:has(>.media-read-loading-detail)>.media-heading{height:56px;min-height:56px;align-items:center} +.media-screen:has(>.media-read-loading-detail)>.media-heading .media-page-heading{display:flex;align-items:center;gap:4px} +.media-screen:has(>.media-read-loading-detail)>.media-heading .media-page-heading h2{margin:0;font-size:16px;line-height:1.4} .media-screen .media-folders{position:relative} .media-screen .media-folders>.media-folder-actions{position:absolute;top:-52px;right:0;margin:0;z-index:4} .media-screen .media-folders>.media-folder-actions>summary{min-height:40px;padding:8px 12px}