diff --git a/LANCommander/Components/ArchiveBrowser.razor b/LANCommander/Components/ArchiveBrowser.razor index cc9db23..9b6dcf1 100644 --- a/LANCommander/Components/ArchiveBrowser.razor +++ b/LANCommander/Components/ArchiveBrowser.razor @@ -22,14 +22,14 @@ DataSource="CurrentPathEntries" HidePagination="true" Loading="Entries == null" - RowSelectable="@(x => x.FullName != null && !x.FullName.EndsWith('/'))" + RowSelectable="@(x => CanSelect(x))" OnRowClick="OnRowClicked" SelectedRowsChanged="SelectedFilesChanged" ScrollY="calc(100vh - 55px - 55px - 53px)"> @if (Select) { - + } @@ -60,7 +60,8 @@ @code { [Parameter] public Guid ArchiveId { get; set; } [Parameter] public bool Select { get; set; } - [Parameter] public bool Multiple { get; set; } + [Parameter] public bool Multiple { get; set; } = false; + [Parameter] public bool AllowDirectories { get; set; } = false; [Parameter] public IEnumerable SelectedFiles { get; set; } [Parameter] public EventCallback> SelectedFilesChanged { get; set; } @@ -186,6 +187,21 @@ } } + private bool CanSelect(ZipArchiveEntry entry) + { + if (entry == null || entry.FullName == null) + return false; + + var isDirectory = entry.FullName.EndsWith('/'); + + if (isDirectory && AllowDirectories) + return true; + else if (!isDirectory) + return true; + else + return false; + } + public class ArchiveDirectory { public string Name { get; set; } diff --git a/LANCommander/Components/ArchiveBrowserDialog.razor b/LANCommander/Components/ArchiveBrowserDialog.razor index 8a7c4d9..79b270b 100644 --- a/LANCommander/Components/ArchiveBrowserDialog.razor +++ b/LANCommander/Components/ArchiveBrowserDialog.razor @@ -2,7 +2,7 @@ @using System.IO.Compression; @using LANCommander.Models; - + @code { private IEnumerable SelectedFiles { get; set; } diff --git a/LANCommander/Models/ArchiveBrowserOptions.cs b/LANCommander/Models/ArchiveBrowserOptions.cs index e7ac596..980e269 100644 --- a/LANCommander/Models/ArchiveBrowserOptions.cs +++ b/LANCommander/Models/ArchiveBrowserOptions.cs @@ -4,6 +4,7 @@ { public Guid ArchiveId { get; set; } public bool Select { get; set; } - public bool Multiple { get; set; } + public bool Multiple { get; set; } = false; + public bool AllowDirectories { get; set; } = false; } }