diff --git a/PlaylistShared.Pwa/Components/Global/AudioPlayer.razor b/PlaylistShared.Pwa/Components/Global/AudioPlayer.razor index 1f30198..ca27fd4 100644 --- a/PlaylistShared.Pwa/Components/Global/AudioPlayer.razor +++ b/PlaylistShared.Pwa/Components/Global/AudioPlayer.razor @@ -31,20 +31,29 @@ - - - @AudioPlayerService.CurrentTrackTitle - - @AudioPlayerService.CurrentTimeString / @AudioPlayerService.TotalTimeString - + + + + - - - + + + @AudioPlayerService.CurrentTrackTitle + + + + @AudioPlayerService.CurrentTimeString / @AudioPlayerService.TotalTimeString + + @@ -58,14 +67,13 @@ Color="Color.Default" OnClick="ToggleMute" /> - @* Попавер с минимальной шириной *@ - + diff --git a/PlaylistShared.Pwa/Components/Global/TrackProgress.razor b/PlaylistShared.Pwa/Components/Global/TrackProgress.razor index 0f0ed04..9a315e1 100644 --- a/PlaylistShared.Pwa/Components/Global/TrackProgress.razor +++ b/PlaylistShared.Pwa/Components/Global/TrackProgress.razor @@ -1,137 +1,127 @@ -
- @* Фоновая дорожка *@ +@using MudBlazor + +
+
- @* Буфер *@ -
- @* Активная шкала (заполнение) *@ -
+ @if (Buffer) + { +
+ } +
- @* Ползунок *@ - + +
+ } + +
+@code { + [Parameter] public double Value { get; set; } + [Parameter] public double BufferValue { get; set; } + [Parameter] public bool Buffer { get; set; } = true; + [Parameter] public double Min { get; set; } = 0; + [Parameter] public double Max { get; set; } = 100; + [Parameter] public double Step { get; set; } = 1; + [Parameter] public double Opacity { get; set; } = 1.0; + [Parameter] public int Height { get; set; } = 4; + [Parameter] public Color Color { get; set; } = Color.Primary; + [Parameter] public string Icon { get; set; } = ""; + [Parameter] public EventCallback ValueChanged { get; set; } + + private string ColorClass => $"track-color-{Color.ToString().ToLower()}"; + + private double CalculatePercentage(double val) => Max <= Min ? 0 : ((Math.Clamp(val, Min, Max) - Min) / (Max - Min)) * 100; + + private async Task OnInput(ChangeEventArgs e) + { + if (double.TryParse(e.Value?.ToString(), System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out var newValue)) + await ValueChanged.InvokeAsync(newValue); + } + + private async Task HandleWheel(WheelEventArgs e) + { + double range = Max - Min; + double wheelStep = range * 0.02; + var newValue = e.DeltaY < 0 ? Math.Min(Value + wheelStep, Max) : Math.Max(Value - wheelStep, Min); + await ValueChanged.InvokeAsync(newValue); + } +} + - -@code { - [Parameter] public double Value { get; set; } - [Parameter] public double BufferValue { get; set; } - [Parameter] public double Min { get; set; } = 0; - [Parameter] public double Max { get; set; } = 100; - [Parameter] public Color Color { get; set; } = Color.Primary; - [Parameter] public EventCallback ValueChanged { get; set; } - - // Генерируем CSS класс на основе перечисления Color - private string ColorClass => $"track-color-{Color.ToString().ToLower()}"; - - private async Task OnInput(ChangeEventArgs e) - { - if (double.TryParse(e.Value?.ToString(), System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out var newValue)) - { - await ValueChanged.InvokeAsync(newValue); - } - } - - private async Task HandleWheel(WheelEventArgs e) - { - double range = Max - Min; - double step = range * 0.02; - var newValue = e.DeltaY < 0 ? Math.Min(Value + step, Max) : Math.Max(Value - step, Min); - await ValueChanged.InvokeAsync(newValue); - } - - private double CalculatePercentage(double val) - { - if (Max <= Min) return 0; - return ((Math.Clamp(val, Min, Max) - Min) / (Max - Min)) * 100; - } -} \ No newline at end of file