@inject ArchiveService ArchiveService
@inject ModalService ModalService
@if (ArchiveId != Guid.Empty)
{
}
else if (!String.IsNullOrWhiteSpace(Root))
{
}
@code {
[Parameter] public string Value { get; set; }
[Parameter] public EventCallback ValueChanged { get; set; }
[Parameter] public EventCallback OnSelected { get; set; }
[Parameter] public Guid ArchiveId { get; set; }
[Parameter] public string Title { get; set; } = "Choose File";
[Parameter] public string OkText { get; set; } = "Select File";
[Parameter] public bool AllowDirectories { get; set; } = false;
[Parameter] public string Prefix { get; set; }
[Parameter] public string Root { get; set; }
[Parameter] public Func EntrySelectable { get; set; } = _ => true;
[Parameter] public Func EntryVisible { get; set; } = _ => true;
[Parameter] public RenderFragment ChildContent { get; set; }
[Parameter] public string Icon { get; set; }
[Parameter] public ButtonType Type { get; set; }
[Parameter] public bool Disabled { get; set; }
bool ArchiveExists { get; set; } = false;
protected override async Task OnInitializedAsync()
{
if (ArchiveId != Guid.Empty)
ArchiveExists = await ArchiveService.FileExistsAsync(ArchiveId);
}
private async void BrowseForFile()
{
var modalOptions = new ModalOptions()
{
Title = Title,
Maximizable = false,
DefaultMaximized = true,
Closable = true,
OkText = OkText,
WrapClassName = "file-picker-dialog"
};
var browserOptions = new FilePickerOptions()
{
ArchiveId = ArchiveId,
Root = Root,
Select = true,
Multiple = false,
EntrySelectable = EntrySelectable,
EntryVisible = EntryVisible
};
var modalRef = await ModalService.CreateModalAsync>(modalOptions, browserOptions);
modalRef.OnOk = async (results) =>
{
if (!String.IsNullOrWhiteSpace(Prefix))
Value = Prefix + results?.FirstOrDefault()?.Path;
else
Value = results?.FirstOrDefault()?.Path;
if (ValueChanged.HasDelegate)
await ValueChanged.InvokeAsync(Value);
if (OnSelected.HasDelegate)
await OnSelected.InvokeAsync(Value);
StateHasChanged();
};
}
}