File tree Expand file tree Collapse file tree 2 files changed +39
-11
lines changed Expand file tree Collapse file tree 2 files changed +39
-11
lines changed Original file line number Diff line number Diff line change 32
32
{
33
33
// Subscribe to the event
34
34
nav .LocationChanged += LocationChanged ;
35
+
36
+ // Manually invoke location change to set state when user access URL directly
37
+ // and to preserve highlight state when use refresh the page
38
+ LocationChanged (this , null );
39
+
35
40
base .OnInitialized ();
36
41
}
37
42
38
43
void LocationChanged (object sender , LocationChangedEventArgs e )
39
44
{
40
45
if (new Uri (nav .Uri ).PathAndQuery .Trim ('/' ) != Link .Trim ('/' ))
41
46
return ;
42
- Mediator .Send (new SideBarState .SelectMenuItemAction () { Id = Id }); ;
47
+
48
+ Mediator .Send (new SideBarState .SelectMenuItemAction { Id = Id }); ;
43
49
}
44
50
45
51
void IDisposable .Dispose ()
Original file line number Diff line number Diff line change 11
11
}
12
12
</p >
13
13
</a >
14
- <ul @ref =" ul" class =" nav nav-treeview" @onclick = " SetActive " >
14
+ <ul @ref =" ul" class =" nav nav-treeview" >
15
15
@Items
16
16
</ul >
17
17
</li >
25
25
[Parameter ]
26
26
public RenderFragment Items { get ; set ; }
27
27
28
+ [Parameter ]
29
+ public bool IsActive
30
+ {
31
+ get => _isActive ;
32
+ set
33
+ {
34
+ if (value )
35
+ SetActive ();
36
+ else
37
+ SetInactive ();
38
+ }
39
+ }
40
+
41
+ private bool _isActive ;
28
42
private MenuState _menuState { get ; set ; }
29
43
30
44
private MenuState MenuState {
31
- get {
32
- return _menuState ;
33
- } set {
45
+ get => _menuState ;
46
+ set {
34
47
if (_menuState == value )
35
48
return ;
49
+
36
50
JS .InvokeVoidAsync (" toggleSideMenu" , ul );
37
51
_menuState = value ;
38
52
}
39
53
}
40
54
41
55
public void SetActive ()
42
56
{
43
- // JS.InvokeVoidAsync("activateSideMenu", menu);
57
+ if (_isActive )
58
+ return ;
59
+
60
+ _isActive = true ;
61
+ MenuState = MenuState .Open ;
44
62
}
45
63
64
+ public void SetInactive ()
65
+ {
66
+ if (! _isActive )
67
+ return ;
68
+
69
+ _isActive = false ;
70
+ MenuState = MenuState .Closed ;
71
+ }
72
+
46
73
private string menuState => MenuState .GetDescription <StyleAttribute >();
47
74
48
75
private ElementReference ul { get ; set ; }
52
79
{
53
80
MenuState = MenuState == MenuState .Open ? MenuState .Closed : MenuState .Open ;
54
81
}
55
-
56
- protected override void OnAfterRender (bool firstRender )
57
- {
58
- base .OnAfterRender (firstRender );
59
- }
60
82
}
You can’t perform that action at this time.
0 commit comments