diff --git a/PlaylistShared.Pwa/Components/Common/ShareButton.razor b/PlaylistShared.Pwa/Components/Common/ShareButton.razor index f6fd949..eee5d15 100644 --- a/PlaylistShared.Pwa/Components/Common/ShareButton.razor +++ b/PlaylistShared.Pwa/Components/Common/ShareButton.razor @@ -5,7 +5,6 @@ @foreach (var artist in _searchResult.Artists) { - + } @@ -61,7 +61,7 @@ @foreach (var album in _searchResult.Albums) { - + } @@ -76,7 +76,7 @@ @foreach (var playlist in _searchResult.Playlists) { - + } diff --git a/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor b/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor index d792236..873ccde 100644 --- a/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor +++ b/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor @@ -8,41 +8,53 @@ @inject ISnackbar Snackbar @inject IDialogService DialogService - + @if (!string.IsNullOrEmpty(Playlist?.CoverUrl)) { - + } - - - + + + @Playlist?.Title - - - - + + + + + @* ПК ВЕРСИЯ: Показываем все кнопки *@ + - + Color="Color.Warning" OnClick="ToggleFavorite" Disabled="_favoriteLoading" Size="Size.Medium" /> + @if (_isCreator && _isAuthenticated) { - + } - + + + @* МОБИЛЬНАЯ ВЕРСИЯ: Уводим в многоточие *@ + + + + + + + + + @if (_isCreator && _isAuthenticated) + { + + + } + + + @code { [Parameter] public SharedPlaylistDto? Playlist { get; set; } [Parameter] public EventCallback OnPermissionsChanged { get; set; } diff --git a/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor b/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor index 82a8a8d..e27f7d7 100644 --- a/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor +++ b/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor @@ -14,7 +14,7 @@ @inject AuthenticationStateProvider AuthProvider @inject IDialogService DialogService - + @if (_loading) { @@ -25,67 +25,105 @@ } else { - - - - - - - - + @* --- ВЕРСИЯ ДЛЯ ПК (сетка) --- *@ + + + + @PlaylistCardContent + - - - - - - - - - - - @if (_canRemove) - { - - - - } - - - - - - @if (_canAdd) { - - - - Добавление треков - - - - - - - + + @AddTrackCardContent + } - - + + + + @* --- ВЕРСИЯ ДЛЯ МОБИЛОК (вкладки внизу) --- *@ + + + + @* Область контента: оба компонента здесь всегда *@ + + + + @PlaylistCardContent + + + + + + @AddTrackCardContent + + + + + @* Кастомная панель навигации внизу *@ + @if (_canAdd) + { + + + + + + + } + + } - @code { [Parameter] public string Token { get; set; } + private RenderFragment PlaylistCardContent => __builder => + { + + + + + + + + + + + + + + + + + @if (_canRemove) + { + + + + } + + + + + }; + + private RenderFragment AddTrackCardContent => __builder => + { + + Добавление треков + + + + + }; + + private int _activeMobileTab = 0; + private HashSet _existingTrackIds = new(); private bool _firstLoadExistingTrackIds; private List _tracks = new(); @@ -164,6 +202,7 @@ if (response?.Success == true) { _playlist = response.Data; + _activeMobileTab = 0; await ConfigurePermissions(); }