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;
}
}