Skip to content

Commit 0c4a9ea

Browse files
improving side bar #24
1 parent e68ebae commit 0c4a9ea

File tree

4 files changed

+86
-40
lines changed

4 files changed

+86
-40
lines changed

src/Blazor.AdminLte.Site.Shared/MainLayout.razor

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,23 +72,23 @@
7272
</NavBar>
7373
<SideBarContainer>
7474
<BrandLogo Link="https://adminlte.io/" Logo="_content/Blazor.AdminLte.Site.Shared/dist/img/AdminLTELogo.png">AdminLTE 3</BrandLogo>
75-
<SideBar IsFixed="true">
75+
<SideBar>
7676
<!-- Sidebar user panel (optional) -->
7777
<SideBarUserPanel ImageEffect="ImageEffect.Circle" Link="starter-pages/user-page" Elevation="Elevation.Three" UserImage="_content/Blazor.AdminLte.Site.Shared/dist/img/user2-160x160.jpg">Alexander Pierce</SideBarUserPanel>
7878
@*<SideBarSearch></SideBarSearch>*@
7979
<SideBarMenu>
8080
<SideBarMenuItem Link="widgets" Icon="fas fa-th">
8181
Widgets
8282
</SideBarMenuItem>
83-
<SideBarTreeView MenuState="MenuState.Closed" Icon="fas fa-copy">
83+
<SideBarTreeView Icon="fas fa-copy">
8484
<Title>Layout Options</Title>
8585
<Items>
8686
<SideBarMenuItem Icon="far fa-circle" Link="layout/grid-system">
8787
Grid System
8888
</SideBarMenuItem>
8989
</Items>
9090
</SideBarTreeView>
91-
<SideBarTreeView MenuState="MenuState.Open" Icon="fas fa-tachometer-alt">
91+
<SideBarTreeView Icon="fas fa-tachometer-alt">
9292
<Title>Starter Pages</Title>
9393
<Items>
9494
<SideBarMenuItem Icon="far fa-circle" Link="starter-pages/active-page">
@@ -99,7 +99,7 @@
9999
</SideBarMenuItem>
100100
</Items>
101101
</SideBarTreeView>
102-
<SideBarTreeView MenuState="MenuState.Open" Icon="fas fa-tachometer-alt">
102+
<SideBarTreeView Icon="fas fa-tachometer-alt">
103103
<Title>Content Injections</Title>
104104
<Items>
105105
<SideBarMenuItem Icon="far fa-circle" Link="injections/navbar-left">
@@ -110,7 +110,7 @@
110110
</SideBarMenuItem>
111111
</Items>
112112
</SideBarTreeView>
113-
<SideBarTreeView MenuState="MenuState.Closed" Icon="fas fa-tree">
113+
<SideBarTreeView Icon="fas fa-tree">
114114
<Title>UI Elements</Title>
115115
<Items>
116116
<SideBarMenuItem Icon="far fa-circle" Link="ui/general">
@@ -124,7 +124,7 @@
124124
</SideBarMenuItem>
125125
</Items>
126126
</SideBarTreeView>
127-
<SideBarTreeView MenuState="MenuState.Closed" Icon="fas fa-edit">
127+
<SideBarTreeView Icon="fas fa-edit">
128128
<Title>Forms</Title>
129129
<Items>
130130
<SideBarMenuItem Icon="far fa-circle" Link="forms/general">
@@ -135,15 +135,15 @@
135135
</SideBarMenuItem>
136136
</Items>
137137
</SideBarTreeView>
138-
<SideBarTreeView MenuState="MenuState.Closed" Icon="fas fa-table">
138+
<SideBarTreeView Icon="fas fa-table">
139139
<Title>Tables</Title>
140140
<Items>
141141
<SideBarMenuItem Icon="far fa-circle" Link="simple-tables">
142142
Simple Tables
143143
</SideBarMenuItem>
144144
</Items>
145145
</SideBarTreeView>
146-
<SideBarTreeView MenuState="MenuState.Closed" Icon="far fa-plus-square">
146+
<SideBarTreeView Icon="far fa-plus-square">
147147
<Title>Extras</Title>
148148
<Items>
149149
<SideBarMenuItem Icon="far fa-circle" Link="lockscreen">
@@ -183,8 +183,7 @@
183183
// no override; reset default to show parent menu content items.
184184
navBarLeftInjectableMenu.SetContent(null, false);
185185
}
186-
}
187-
@code {
186+
188187
private DateTime dt = DateTime.Now;
189188

190189
private void SeeAllMessages(Tuple<IDropdownFooter, MouseEventArgs> args)
@@ -197,4 +196,11 @@
197196
NavigationManager.NavigateTo("messages/see-all-notifications");
198197
}
199198

199+
protected override void OnAfterRender(bool isFirstRender)
200+
{
201+
JS.InvokeVoidAsync("sideBarFixed", true);
202+
JS.InvokeVoidAsync("navBarFixed", true);
203+
JS.InvokeVoidAsync("footerFixed", true);
204+
base.OnAfterRender(isFirstRender);
205+
}
200206
}

src/Blazor.AdminLte/SideBar/SideBar.razor

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,8 @@
77
[Parameter]
88
public RenderFragment ChildContent { get; set; }
99

10-
private bool _isFixed;
11-
12-
[Parameter]
13-
public bool IsFixed
14-
{
15-
get
16-
{
17-
return _isFixed;
18-
}
19-
set
20-
{
21-
_isFixed = value;
22-
JS.InvokeVoidAsync("sideBarFixed", _isFixed);
23-
}
24-
}
25-
2610
protected override void OnAfterRender(bool firstRender)
2711
{
28-
if (firstRender)
29-
{
30-
JS.InvokeVoidAsync("sideBarFixed", _isFixed);
31-
}
3212
base.OnAfterRender(firstRender);
3313
}
3414
}
Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,56 @@
11
@namespace Blazor.AdminLte
22
@inject IJSRuntime JS
33
<li class="nav-item has-treeview menu-@(menuState)">
4-
<a href="@Link" class="nav-link active" @onclick="OnClick">
4+
<a @ref="menu" href="javascript:void(0);" class='nav-link' @onclick="OnClick" >
55
<i class="nav-icon @Icon"></i>
66
<p>
77
@Title
88
<i class="right fas @chevron"></i>
99
</p>
1010
</a>
11-
<ul @ref="ul" class="nav nav-treeview">
11+
<ul @ref="ul" class="nav nav-treeview" @onclick="SetActive">
1212
@Items
1313
</ul>
1414
</li>
1515
@code {
16-
[Parameter]
17-
public string Link { get; set; } = "javascript:void(0)";
1816
[Parameter]
1917
public string Icon { get; set; }
2018
[Parameter]
2119
public RenderFragment Title { get; set; }
2220
[Parameter]
2321
public RenderFragment Items { get; set; }
2422

25-
[Parameter]
26-
public MenuState MenuState { get; set; }
23+
private MenuState _menuState { get; set; }
24+
25+
private MenuState MenuState {
26+
get {
27+
return _menuState;
28+
} set {
29+
if (_menuState == value)
30+
return;
31+
JS.InvokeVoidAsync("toggleSideMenu", ul);
32+
_menuState = value;
33+
}
34+
}
35+
36+
public void SetActive()
37+
{
38+
JS.InvokeVoidAsync("activateSideMenu", menu);
39+
}
2740

2841
private string menuState => MenuState.GetDescription<StyleAttribute>();
2942
private string chevron { get; set; } = "fa-angle-left";
3043

3144
private ElementReference ul { get; set; }
32-
private bool Visible { get; set; }
45+
private ElementReference menu { get; set; }
3346

3447
private void OnClick()
3548
{
3649
MenuState = MenuState == MenuState.Open ? MenuState.Closed : MenuState.Open;
37-
JS.InvokeVoidAsync("toggleSideMenu", ul);
50+
}
51+
52+
protected override void OnAfterRender(bool firstRender)
53+
{
54+
base.OnAfterRender(firstRender);
3855
}
3956
}

src/Blazor.AdminLte/wwwroot/js/interop.js

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
function toggleMenu(el) {
1+

2+
3+
var prevMenu = null;
4+
5+
function toggleMenu(el) {
26
$(el).next().slideToggle('fast');
37
}
48

@@ -7,10 +11,31 @@ function hideMenu(el) {
711
}
812

913
function toggleSideMenu(el) {
14+
if (el != prevMenu) {
15+
$(prevMenu).slideToggle('fast');
16+
prevMenu = el;
17+
}
1018
$(el).slideToggle('fast');
11-
19+
20+
}
21+
22+
var prevActiveMenu = null;
23+
24+
function activateSideMenu(el) {
25+
if (el == prevActiveMenu)
26+
return;
27+
$(prevActiveMenu).removeClass("active");
28+
$(el).addClass("active");
29+
prevActiveMenu = el;
1230
}
1331

32+
33+
function deactivateSideMenu() {
34+
$('aside').find("li").each(function () { $(this).find("a").removeClass("active") });
35+
}
36+
37+
38+
1439
function addClass(el, _class) {
1540
$(el).addClass(_class);
1641
// $(el).collapse();
@@ -74,3 +99,21 @@ function sideBarFixed(isFixed)
7499
else
75100
$("body").removeClass("layout-fixed");
76101
}
102+
103+
function navBarFixed(isFixed) {
104+
if (isFixed) {
105+
$("body").addClass("layout-navbar-fixed");
106+
$("body").trigger("resize");
107+
}
108+
else
109+
$("body").removeClass("layout-navbar-fixed");
110+
}
111+
112+
function footerFixed(isFixed) {
113+
if (isFixed) {
114+
$("body").addClass("layout-footer-fixed");
115+
$("body").trigger("resize");
116+
}
117+
else
118+
$("body").removeClass("layout-footer-fixed");
119+
}

0 commit comments

Comments
 (0)