PWA Fundvelo der Caritas.
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

NavMenu.razor 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. @using CaritasPWA.Shared.Services;
  2. @inject AppState AppState;
  3. @inject NavigationManager NavigationManager;
  4. @inject IStringLocalizer<Resources> i18n
  5. @inject IJSRuntime jsRuntime;
  6. @inject PageHistoryManager PageHistoryManager;
  7. @implements IDisposable;
  8. @if (HandleAppBarContainer()) {
  9. <div class="sidebar">
  10. <MatAppBarContainer>
  11. <MatAppBar Fixed="true">
  12. <MatAppBarRow>
  13. <MatAppBarSection>
  14. <MatIconButton Icon="menu" OnClick="@((e) => ButtonClicked())"></MatIconButton>
  15. @if (PageHistoryManager.CanGoBack()) {
  16. <MatIconButton Icon="keyboard_backspace" OnClick="@((e) => ButtonBackClicked())" Disabled="@BackButtonDisabled()"></MatIconButton>
  17. }
  18. <MatAppBarTitle Style="padding-left:0px; font-size:90%; font-weight:500">@LocationUrl</MatAppBarTitle>
  19. </MatAppBarSection>
  20. <MatAppBarSection align="@MatAppBarSectionAlign.End" Style="max-width:min-content">
  21. <NavLink target="_blank" class="text-white small" href="https://www.caritas.ch" align="@MatAppBarSectionAlign.End" style="padding-right:1em">@i18n["Learnmore"]</NavLink>
  22. </MatAppBarSection>
  23. </MatAppBarRow>
  24. </MatAppBar>
  25. <MatAppBarContent>
  26. <MatDrawerContainer>
  27. <MatDrawer @bind-Opened="@Opened" Mode="@MatDrawerMode.Modal">
  28. <MatList>
  29. <MatListItem Class="@((Index == 1) ? "bg-primary-color text-white" : "")"
  30. Href="caritas_services"
  31. @onclick="@((e) => ButtonClicked(1))">
  32. <MatIcon Icon="@MatIconNames.Apps"></MatIcon>
  33. <MatListItemText Style="padding-left:0.5em">@i18n["CaritasServices"]</MatListItemText>
  34. </MatListItem>
  35. <MatListItem Class="@((Index == 2) ? "bg-primary-color text-white" : "")"
  36. Href="account"
  37. @onclick="@((e) => ButtonClicked(2))">
  38. <MatIcon Icon="@MatIconNames.Person_outline"></MatIcon>
  39. <MatListItemText Style="padding-left:0.5em">@i18n["account"]</MatListItemText>
  40. </MatListItem>
  41. <MatListItem Class="@((Index == 3) ? "bg-primary-color text-white" : "")"
  42. Href="info"
  43. @onclick="@((e) => ButtonClicked(3))">
  44. <MatIcon Icon="@MatIconNames.Error_outline" Style="transform: rotate(180deg)"></MatIcon>
  45. <MatListItemText Style="padding-left:0.5em">@i18n["info"]</MatListItemText>
  46. </MatListItem>
  47. <MatListItem Class="@((Index == 4) ? "bg-primary-color text-white" : "")"
  48. href=""
  49. Match="NavLinkMatch.All"
  50. @onclick="@((e) => ButtonClicked(4))">
  51. <MatIcon Icon="@MatIconNames.Exit_to_app"></MatIcon>
  52. <MatListItemText Style="padding-left:0.5em">@i18n["Logout"]</MatListItemText>
  53. </MatListItem>
  54. </MatList>
  55. </MatDrawer>
  56. </MatDrawerContainer>
  57. </MatAppBarContent>
  58. </MatAppBarContainer>
  59. </div>
  60. }
  61. @code {
  62. private bool Opened = false;
  63. private static int Index = 1;
  64. private string locUrl;
  65. private string LocationUrl {
  66. get => locUrl;
  67. set {
  68. locUrl = value;
  69. StateHasChanged();
  70. }
  71. }
  72. public void Dispose() {
  73. AppState.OnChange -= StateHasChanged;
  74. NavigationManager.LocationChanged -= LocationChanged;
  75. }
  76. protected override void OnInitialized() {
  77. AppState.OnChange += StateHasChanged;
  78. NavigationManager.LocationChanged += LocationChanged;
  79. PageHistoryManager.AddPageToHistory(NavigationManager.Uri);
  80. base.OnInitialized();
  81. }
  82. private void ButtonClicked() {
  83. Opened = !Opened;
  84. }
  85. private void ButtonClicked(int _Index) {
  86. Index = _Index;
  87. ButtonClicked();
  88. if (_Index == 4) {
  89. AppState.LoggedIn = false;
  90. }
  91. }
  92. private void ButtonBackClicked() {
  93. NavigationManager.NavigateTo(PageHistoryManager.GetPreviousPage());
  94. }
  95. private void LocationChanged(object sender, LocationChangedEventArgs e) {
  96. locUrl = i18n.GetString(e.Location.Replace(NavigationManager.BaseUri, ""));
  97. if (IsInServicesUrl(e)) {
  98. Index = 1;
  99. } else if (e.Location.Contains("account")) {
  100. Index = 2;
  101. } else if (e.Location.Contains("info")) {
  102. Index = 3;
  103. } else {
  104. Index = 4;
  105. }
  106. StateHasChanged();
  107. }
  108. private bool IsInServicesUrl(LocationChangedEventArgs e) {
  109. return (e.Location.Contains("caritas_services") || e.Location.Contains("lost_found") || e.Location.Contains("keydata")
  110. || e.Location.Contains("account/") || e.Location.Contains("conclusion_"));
  111. }
  112. private bool HandleAppBarContainer() {
  113. string uri = NavigationManager.Uri;
  114. string baseUri = NavigationManager.BaseUri;
  115. string delta = uri.Replace(baseUri, "");
  116. if (delta == null || delta.Equals("")) {
  117. Index = 4;
  118. return false;
  119. } else {
  120. if (delta.Equals("caritas_services")) {
  121. Index = 1;
  122. } else if (delta.Equals("account")) {
  123. Index = 2;
  124. } else if (delta.Equals("info")) {
  125. Index = 3;
  126. }
  127. return true;
  128. }
  129. }
  130. private bool BackButtonDisabled() {
  131. return !PageHistoryManager.CanGoBack();
  132. }
  133. }