diff --git a/LANCommander/UI/Components/FilePicker.razor b/LANCommander/UI/Components/FilePicker.razor index dd98756c..e576ff74 100644 --- a/LANCommander/UI/Components/FilePicker.razor +++ b/LANCommander/UI/Components/FilePicker.razor @@ -5,21 +5,21 @@ - + + EntryVisible="@EntryVisible" + OnSelected="OnFileSelected" /> @@ -35,4 +35,35 @@ [Parameter] public string Root { get; set; } [Parameter] public Func EntrySelectable { get; set; } = _ => true; [Parameter] public Func EntryVisible { get; set; } = _ => true; + + string InputValue { get; set; } + + protected override async Task OnInitializedAsync() + { + InputValue = Value; + } + + async Task OnInput(ChangeEventArgs args) + { + var inputString = args?.Value.ToString(); + + Value = inputString; + + if (ValueChanged.HasDelegate) + await ValueChanged.InvokeAsync(inputString); + } + + async Task OnFileSelected(string selectedFile) + { + Value = selectedFile; + InputValue = selectedFile; + + if (ValueChanged.HasDelegate) + await ValueChanged.InvokeAsync(selectedFile); + + if (OnSelected.HasDelegate) + await OnSelected.InvokeAsync(selectedFile); + + await InvokeAsync(StateHasChanged); + } } \ No newline at end of file