63 lines
No EOL
2 KiB
Text
63 lines
No EOL
2 KiB
Text
@using LANCommander.Models;
|
|
@using System.IO.Compression;
|
|
@inject ModalService ModalService
|
|
@inject ArchiveService ArchiveService
|
|
|
|
<Space Style="display: flex">
|
|
<SpaceItem Style="flex-grow: 1">
|
|
<Input Type="text" @bind-Value="Value" OnChange="ValueChanged" />
|
|
</SpaceItem>
|
|
@if (ArchiveId != Guid.Empty) {
|
|
<SpaceItem>
|
|
<Button OnClick="() => BrowseForFile()" Type="@ButtonType.Primary" Icon="@IconType.Outline.FolderOpen" Disabled="!ArchiveExists" />
|
|
</SpaceItem>
|
|
}
|
|
</Space>
|
|
|
|
@code {
|
|
[Parameter] public string Value { get; set; }
|
|
[Parameter] public EventCallback<string> ValueChanged { get; set; }
|
|
[Parameter] public Guid ArchiveId { get; set; }
|
|
[Parameter] public string ArchiveBrowserTitle { get; set; } = "Choose File";
|
|
[Parameter] public bool AllowDirectories { get; set; } = false;
|
|
|
|
bool ArchiveExists { get; set; } = false;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
if (ArchiveId != Guid.Empty)
|
|
ArchiveExists = await ArchiveService.Exists(ArchiveId);
|
|
}
|
|
|
|
private async void BrowseForFile()
|
|
{
|
|
var modalOptions = new ModalOptions()
|
|
{
|
|
Title = ArchiveBrowserTitle,
|
|
Maximizable = false,
|
|
DefaultMaximized = true,
|
|
Closable = true,
|
|
OkText = "Select File"
|
|
};
|
|
|
|
var browserOptions = new ArchiveBrowserOptions()
|
|
{
|
|
ArchiveId = ArchiveId,
|
|
Select = true,
|
|
Multiple = false,
|
|
AllowDirectories = AllowDirectories
|
|
};
|
|
|
|
var modalRef = await ModalService.CreateModalAsync<ArchiveBrowserDialog, ArchiveBrowserOptions, IEnumerable<ZipArchiveEntry>>(modalOptions, browserOptions);
|
|
|
|
modalRef.OnOk = async (results) =>
|
|
{
|
|
Value = "{InstallDir}/" + results.FirstOrDefault().FullName;
|
|
|
|
if (ValueChanged.HasDelegate)
|
|
await ValueChanged.InvokeAsync(Value);
|
|
|
|
StateHasChanged();
|
|
};
|
|
}
|
|
} |