DiscDialog.razor 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. @inherits FnzComponentBase
  2. @implements IDisposable
  3. @code {
  4. private FeDisc currentDisc;
  5. private FnzBootstrapModal modalDisc;
  6. private bool showDetails;
  7. private bool IsShown { get; set; } = false;
  8. public void Show(FeDisc disc)
  9. {
  10. currentDisc = disc;
  11. IsShown = true;
  12. StateHasChanged();
  13. modalDisc.Show();
  14. }
  15. protected override async Task OnInitializedAsync()
  16. {
  17. await base.OnInitializedAsync();
  18. App.Instance.BottomBarHeightChanged += UpdateMarginBottom;
  19. }
  20. private void UpdateMarginBottom() => StateHasChanged();
  21. public void Dispose() => App.Instance.BottomBarHeightChanged -= UpdateMarginBottom;
  22. private string StyleString => $"margin-bottom: {App.Instance.BottomBarHeight}px";
  23. }
  24. <FnzBootstrapModal @ref="modalDisc" CssClass="modal-xl" style="@StyleString">
  25. <Title><span class="badge bg-light">@currentDisc?.Lib.Name</span> @currentDisc?.Name </Title>
  26. <Body>
  27. @if (IsShown)
  28. {
  29. <div class="container-fluid">
  30. <div class="row">
  31. <div class="col-md-4 mb-1"><img class="card-img-top" src="@currentDisc?.CoverPath" onerror="this.src='blazor-192.png'"></div>
  32. <div class="col-md-8">
  33. <ul class="nav nav-tabs justify-content-center nav-fill" id="ModalDiscTab-@ElementId" role="tablist">
  34. @foreach (var subSet in (currentDisc?.TrackSets).KeepNoEmpty().WithIndex())
  35. {
  36. <li class="nav-item" role="presentation">
  37. <button class="nav-link @(subSet.index==0?"active":"")" id="main-tab" data-bs-toggle="tab" data-bs-target="#tracks-@subSet.index-@ElementId" type="button">
  38. @subSet.item?.Name
  39. </button>
  40. </li>
  41. }
  42. @if (currentDisc?.Bks != null)
  43. {
  44. <li class="nav-item" role="presentation">
  45. <button class="nav-link" id="main-tab" data-bs-toggle="tab" data-bs-target="#tracks-BK-@ElementId" type="button">
  46. PIC
  47. </button>
  48. </li>
  49. }
  50. </ul>
  51. <div class="tab-content" id="ModalDiscTabContent-@ElementId">
  52. @foreach (var subSet in (currentDisc?.TrackSets).KeepNoEmpty().WithIndex())
  53. {
  54. <div class="tab-pane fade @(subSet.index==0?"active show":"")" id="tracks-@subSet.index-@ElementId" role="tabpanel">
  55. <DiscDialogTrackSetTable TrackSet="subSet.item" ShowDetail="showDetails"></DiscDialogTrackSetTable>
  56. </div>
  57. }
  58. @if (currentDisc?.Bks != null)
  59. {
  60. <div class="tab-pane fade p-2" id="tracks-BK-@ElementId" role="tabpanel">
  61. <DiscDialogBkSilder Bks="currentDisc.Bks"></DiscDialogBkSilder>
  62. </div>
  63. }
  64. </div>
  65. </div>
  66. </div>
  67. </div>
  68. }
  69. </Body>
  70. </FnzBootstrapModal>