diff --git a/WebSharpRSS/Models/CategoryTreeItem.cs b/WebSharpRSS/Models/CategoryGuideItem.cs similarity index 60% rename from WebSharpRSS/Models/CategoryTreeItem.cs rename to WebSharpRSS/Models/CategoryGuideItem.cs index 8a92080..a812feb 100644 --- a/WebSharpRSS/Models/CategoryTreeItem.cs +++ b/WebSharpRSS/Models/CategoryGuideItem.cs @@ -3,11 +3,20 @@ using CodeHollow.FeedReader; namespace WebSharpRSS.Models { - public class CategoryTreeItem + public class CategoryGuideItem { public string CategoryTitle { get; set; } public string CategoryIcon { get; set; } + private string _hexColor; + + public string CategoryHexColor + { + get => _hexColor; + set => _hexColor = value.Insert(7, "80"); + } + public bool IsExpanded { get; set; } + public bool IsSelected { get; set; } public HashSet Feeds { get; set; } = new HashSet() { FeedReader.ReadAsync("http://fedoramagazine.org/feed/").Result }; } } \ No newline at end of file diff --git a/WebSharpRSS/Shared/CategoryGuide.razor b/WebSharpRSS/Shared/CategoryGuide.razor new file mode 100644 index 0000000..58d4339 --- /dev/null +++ b/WebSharpRSS/Shared/CategoryGuide.razor @@ -0,0 +1,102 @@ +@using WebSharpRSS.Models +@using CodeHollow.FeedReader + + +
+ @HeaderText + @foreach (CategoryGuideItem catItem in Categories) + { +
+
+ @*@catItem.CategoryTitle*@ +
+ +
+
+ @catItem.CategoryTitle +
+
+ @* Feeds *@ + @if (catItem.IsExpanded && catItem.Feeds != null) + { + foreach (Feed feed in catItem.Feeds) + { +
+ @* Items *@ +
+ @* Image *@ + @feed.Title +
+
+ } + } +
+ } +
+ +@code { + [Parameter] + public string HeaderText { get; set; } + [Parameter] + public HashSet Categories { get; set; } = new HashSet(); + [Parameter] + public Action HandleCat { get; set; } + + CategoryGuideItem? _selectedCategory; + + void CatItemClicked(CategoryGuideItem categoryItem) + { + categoryItem.IsExpanded = !categoryItem.IsExpanded; + + if (_selectedCategory != categoryItem) + { + if (_selectedCategory != null) + _selectedCategory.IsSelected = false; + _selectedCategory = categoryItem; + _selectedCategory.IsSelected = true; + } + //TODO: Handle click! + HandleCat(categoryItem); + } + + void FeedItemClicked(Feed feed) + { + + } + +} \ No newline at end of file diff --git a/WebSharpRSS/Shared/SideGuide.razor b/WebSharpRSS/Shared/SideGuide.razor index 1d5660d..7ee59c5 100644 --- a/WebSharpRSS/Shared/SideGuide.razor +++ b/WebSharpRSS/Shared/SideGuide.razor @@ -2,16 +2,24 @@ @using MudBlazor.Utilities @using CodeHollow.FeedReader @using Serilog - + Home - + + @* Categories - @foreach (CategoryTreeItem cat in Categories) + @foreach (CategoryGuideItem cat in Categories) { /* Category item*/ @@ -30,29 +38,34 @@ } - + *@ @code { - public HashSet Categories = new HashSet(); + public HashSet Categories = new HashSet(); protected override void OnInitialized() { Log.Verbose("Setting up test data"); - Categories.Add(new CategoryTreeItem() { CategoryTitle = "Social", CategoryIcon = Icons.Material.Filled.People }); - Categories.Add(new CategoryTreeItem() { CategoryTitle = "Blogs", CategoryIcon = Icons.Material.Filled.RssFeed }); - Categories.Add(new CategoryTreeItem() { CategoryTitle = "Tech", CategoryIcon = Icons.Material.Filled.Computer }); - Categories.Add(new CategoryTreeItem() { CategoryTitle = "News", CategoryIcon = Icons.Material.Filled.Newspaper }); + Categories.Add(new CategoryGuideItem() { CategoryTitle = "Social", CategoryIcon = Icons.Material.Filled.People }); + Categories.Add(new CategoryGuideItem() { CategoryTitle = "Blogs", CategoryIcon = Icons.Material.Filled.RssFeed, CategoryHexColor = Colors.Green.Accent1 }); + Categories.Add(new CategoryGuideItem() { CategoryTitle = "Tech", CategoryIcon = Icons.Material.Filled.Computer, CategoryHexColor = Colors.Brown.Lighten1 }); + Categories.Add(new CategoryGuideItem() { CategoryTitle = "News", CategoryIcon = Icons.Material.Filled.Newspaper, CategoryHexColor = Colors.Red.Accent1 }); } private void Callback(MudListItem obj) { switch (obj.Value) { - case CategoryTreeItem catTreeItem: + case CategoryGuideItem catTreeItem: break; case Feed feed: break; } } + private void HandleCat(CategoryGuideItem obj) + { + //throw new NotImplementedException(); + } + } \ No newline at end of file diff --git a/WebSharpRSS/wwwroot/css/site.css b/WebSharpRSS/wwwroot/css/site.css index 08e7f0b..e6df148 100644 --- a/WebSharpRSS/wwwroot/css/site.css +++ b/WebSharpRSS/wwwroot/css/site.css @@ -1,3 +1,4 @@ +/* Blazor */ #blazor-error-ui { background: lightyellow; bottom: 0;