fe3819f378
Add a Queue toggle to the docked player bar opening a centered editable queue overlay. New additive QueueService.ClearUpcoming keeps the playing track while dropping the rest. Current track is non-removable.
79 lines
3.3 KiB
Plaintext
79 lines
3.3 KiB
Plaintext
@if (_isMinimized)
|
|
{
|
|
<div class="minimized-dock" @ref="_miniDock">
|
|
<LevelMeterFab OnClick="@ToggleMinimized" />
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="@PlayerModeClass d-flex flex-column" @ref="_playerRoot">
|
|
<MudContainer MaxWidth="MaxWidth.Large" Class="player-inner-container">
|
|
<MudPaper Elevation="8" Class="player-surface pa-3">
|
|
|
|
<div class="player-layout">
|
|
<PlayerTransportZone IsLoaded="IsLoaded"
|
|
CanPlay="CanPlay"
|
|
IsLoading="IsLoading"
|
|
IsStreaming="IsStreaming"
|
|
LoadProgress="LoadProgress"
|
|
DisplayTime="DisplayTime"
|
|
Duration="Duration"
|
|
Fixed="Fixed"
|
|
TogglePlayPause="@TogglePlayPause"
|
|
Stop="@Stop"
|
|
HasNext="HasNext"
|
|
HasPrevious="HasPrevious"
|
|
SkipNext="@SkipNext"
|
|
SkipPrevious="@SkipPrevious"
|
|
ShowQueueButton="ShowQueueButton"
|
|
QueueOpen="_queueOpen"
|
|
QueueToggle="@ToggleQueue"
|
|
Class="transport-zone"/>
|
|
|
|
<VolumeZone Volume="@Volume" VolumeChanged="@OnVolumeChange"/>
|
|
|
|
<div class="meta-zone">
|
|
<TrackMetaLabel Track="CurrentTrack" Fixed="Fixed"/>
|
|
</div>
|
|
|
|
<PlayerSeekZone OnSeekStart="@OnSeekStart"
|
|
OnSeekEnd="@OnSeekEnd"
|
|
OnSeekChange="@OnSeekChange"
|
|
Class="seek-zone"/>
|
|
</div>
|
|
|
|
@* Minimize / close — positioned absolutely top-right *@
|
|
@if (!Fixed)
|
|
{
|
|
<PlayerWindowControls OnMinimize="@ToggleMinimized" OnClose="@Close"/>
|
|
}
|
|
</MudPaper>
|
|
</MudContainer>
|
|
|
|
@if (!string.IsNullOrEmpty(ErrorMessage))
|
|
{
|
|
<MudAlert Severity="Severity.Error"
|
|
ShowCloseIcon="true"
|
|
CloseIconClicked="ClearError"
|
|
Class="ma-2">
|
|
@ErrorMessage
|
|
</MudAlert>
|
|
}
|
|
|
|
@* Docked queue overlay (Phase 17 §3.2). MudOverlay portals to the body, so its position here in
|
|
the dock subtree does not affect its screen-centered rendering. Only mounted in docked mode —
|
|
the Fixed embed gets its own inline panel in a later wave. *@
|
|
@if (ShowQueueButton)
|
|
{
|
|
<QueueOverlay Visible="_queueOpen"
|
|
Items="QueueItems"
|
|
CurrentIndex="QueueCurrentIndex"
|
|
OnClose="@CloseQueue"
|
|
OnClear="@ClearUpcoming"
|
|
OnReorder="@OnQueueReorder"
|
|
OnRemove="@OnQueueRemove"
|
|
OnJump="@OnQueueJump"/>
|
|
}
|
|
</div>
|
|
}
|