using Microsoft.AspNetCore.Components; using Seenginx.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Seenginx.Components { public partial class FilesWithEditor : ComponentBase where CFile : ConfigFile { [Parameter] public List Files { get; set; } = new List(); [Parameter] public List Filters { get; set; } = new List(); [Parameter] public List FilteredOutFiles { get; set; } = new List(); [Parameter] public EventCallback ApplyFilter { get; set; } [Parameter] public RenderFragment Editor { get; set; } [Parameter] public RenderFragment CreateDialog { get; set; } [Parameter] public RenderFragment UpdateDialog { get; set; } [Parameter] public RenderFragment DeleteDialog { get; set; } protected bool IsAnyFileSelected => SelectedFile != default; private CFile SelectedFile { get; set; } protected string SearchInput { get; set; } protected async Task OnDeselectClick() { SelectedFile = null; //Clean on the right } protected async Task OnFilterClick(EventArgs e, string filter) { await ApplyFilter.InvokeAsync(filter); for (int index = 0; index < Files.Count; index++) if (FilteredOutFiles.Contains(index)) Files[index].Hide(); else Files[index].Unhide(); } protected async Task OnSearchChanged() { if (string.IsNullOrEmpty(SearchInput)) Files.ForEach(f => f.Hide()); else Files.ForEach(f => { if (f.Name.ToLower().Contains(SearchInput.ToLower())) f.Unhide(); else f.Hide(); }); } protected async Task OnFileClick(CFile file) { SelectedFile = file; } protected async Task OnCreateFile() { } protected async Task OnUpdateDialog(CFile file) { } protected async Task OnDeleteDialog(CFile file) { } } }