NavMenu.razor 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <div class="top-row ps-3 navbar navbar-dark">
  2. <div class="container-fluid">
  3. <a class="navbar-brand" href="">BlazorWeb1</a>
  4. </div>
  5. </div>
  6. <input type="checkbox" title="Navigation menu" class="navbar-toggler" />
  7. @inject IconService iconService
  8. <div style="width: 200px;">
  9. <Button Type="ButtonType.Primary" OnClick="ToggleCollapsed" Style="margin-bottom: 16px">
  10. @if (collapsed)
  11. {
  12. <Icon Type="@IconType.Outline.MenuUnfold" />
  13. }
  14. else
  15. {
  16. <Icon Type="@IconType.Outline.MenuFold" />
  17. }
  18. </Button>
  19. <Menu DefaultSelectedKeys=@(new[] { "1" })
  20. DefaultOpenKeys=@(new[] { "sub1" })
  21. Mode=MenuMode.Inline
  22. Theme=MenuTheme.Dark
  23. InlineCollapsed=collapsed>
  24. <MenuItem Key="1" RouterLink="/" Icon="@IconType.Outline.PieChart">
  25. <IconTemplate>
  26. <IconFont Type="icon-c-sharp-l" />
  27. </IconTemplate>
  28. <ChildContent>
  29. Option 1
  30. </ChildContent>
  31. </MenuItem>
  32. <MenuItem Key="2" Icon="@IconType.Outline.Desktop">
  33. Option 2
  34. </MenuItem>
  35. <MenuItem Key="3" Icon="@IconType.Outline.Container">
  36. Option 3
  37. </MenuItem>
  38. <SubMenu Key="sub1" TitleTemplate="@sub1Title">
  39. <MenuItem Key="5" RouterLink="/Counter">Option 5</MenuItem>
  40. <MenuItem Key="6">Option 6</MenuItem>
  41. <MenuItem Key="7">Option 7</MenuItem>
  42. <MenuItem Key="8">Option 8</MenuItem>
  43. </SubMenu>
  44. <SubMenu Key="sub2" TitleTemplate="@sub2Title">
  45. <MenuItem Key="9">Option 9</MenuItem>
  46. <MenuItem Key="10">Option 10</MenuItem>
  47. <SubMenu Key="sub3" Title="Submenu">
  48. <MenuItem Key="11">Option 11</MenuItem>
  49. <MenuItem Key="12">Option 12</MenuItem>
  50. </SubMenu>
  51. </SubMenu>
  52. </Menu>
  53. </div>
  54. @code {
  55. bool collapsed = false;
  56. RenderFragment sub1Title =
  57. @<span>
  58. <Icon Type="@IconType.Outline.Mail" />
  59. <span>Navigation One</span>
  60. </span>;
  61. RenderFragment sub2Title =
  62. @<span>
  63. <Icon Type="@IconType.Outline.Appstore" />
  64. <span>Navigation Two</span>
  65. </span>;
  66. void ToggleCollapsed()
  67. {
  68. collapsed = !collapsed;
  69. }
  70. protected override async Task OnAfterRenderAsync(bool firstRender)
  71. {
  72. if (firstRender)
  73. {
  74. await iconService.CreateFromIconfontCN("//at.alicdn.com/t/font_2735473_hi62ezq5579.js");
  75. }
  76. }
  77. }
  78. @* <Menu Mode="MenuMode.Inline"
  79. OpenKeys=this.openKeys
  80. OnOpenChange=this.onOpenChange
  81. Style="width:256px ;">
  82. <SubMenu Key="sub1" TitleTemplate=@sub1Title>
  83. <MenuItem Key="1" RouterLink="/">Option 1</MenuItem>
  84. </SubMenu>
  85. <SubMenu Key="sub2" TitleTemplate=@sub2Title>
  86. <MenuItem Key="5" RouterLink="/counter">Option 5</MenuItem>
  87. <MenuItem Key="6">Option 6</MenuItem>
  88. <SubMenu Key="sub3" Title="Submenu">
  89. <MenuItem Key="7">Option 7</MenuItem>
  90. <MenuItem Key="8">Option 8</MenuItem>
  91. </SubMenu>
  92. </SubMenu>
  93. <SubMenu Key="sub4" TitleTemplate=@sub4Title>
  94. <MenuItem Key="9">Option 9</MenuItem>
  95. <MenuItem Key="10">Option 10</MenuItem>
  96. <MenuItem Key="11">Option 11</MenuItem>
  97. <MenuItem Key="12">Option 12</MenuItem>
  98. </SubMenu>
  99. </Menu>
  100. @code {
  101. RenderFragment sub1Title =
  102. @<span>
  103. <Icon Type="@IconType.Outline.Mail" />
  104. <span>首页</span>
  105. </span>;
  106. RenderFragment sub2Title =
  107. @<span>
  108. <Icon Type="@IconType.Outline.Appstore" />
  109. <span>Navigation Two</span>
  110. </span>;
  111. RenderFragment sub4Title =
  112. @<span>
  113. <Icon Type="@IconType.Outline.Setting" />
  114. <span>Navigation Three</span>
  115. </span>;
  116. // submenu keys of first level
  117. string[] rootSubmenuKeys = {"sub1", "sub2", "sub4"};
  118. string[] openKeys = {"sub1"};
  119. void onOpenChange(string[] openKeys)
  120. {
  121. var latestOpenKey = openKeys.FirstOrDefault(key => !this.openKeys.Contains(key));
  122. if (!rootSubmenuKeys.Contains(latestOpenKey))
  123. {
  124. this.openKeys = openKeys;
  125. }
  126. else
  127. {
  128. this.openKeys = !string.IsNullOrEmpty(latestOpenKey) ? new[] {latestOpenKey} : Array.Empty<string>();
  129. }
  130. }
  131. }
  132. *@
  133. @* <div class="nav-scrollable" onclick="document.querySelector('.navbar-toggler').click()">
  134. <nav class="flex-column">
  135. <div class="nav-item px-3">
  136. <NavLink class="nav-link" href="" Match="NavLinkMatch.All">
  137. <span class="bi bi-house-door-fill-nav-menu" aria-hidden="true"></span> Home
  138. </NavLink>
  139. <nav>
  140. <div class="nav-item px-3">
  141. <NavLink class="nav-link" href="counter">
  142. <span class="bi bi-plus-square-fill-nav-menu" aria-hidden="true"></span> Counter
  143. </NavLink>
  144. </div>
  145. </nav>
  146. </div>
  147. <div class="nav-item px-3">
  148. <NavLink class="nav-link" href="counter">
  149. <span class="bi bi-plus-square-fill-nav-menu" aria-hidden="true"></span> Counter
  150. </NavLink>
  151. </div>
  152. <div class="nav-item px-3">
  153. <NavLink class="nav-link" href="weather">
  154. <span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Weather
  155. </NavLink>
  156. </div>
  157. </nav>
  158. </div> *@