|
@@ -4,43 +4,57 @@
|
|
|
[Parameter] public EventCallback<FeLibrary> OnValueChanged { get; set; }
|
|
|
}
|
|
|
|
|
|
-<div class="row justify-content-evenly mt-2">
|
|
|
- <div class="col d-flex flex-row align-items-center">
|
|
|
- <span>Library (@FnzDataSet.AllLibrary.Length): </span>
|
|
|
- <button class="btn btn-primary p-1" type="button" @onclick="ShowLibraryList">@($"{CurrentLibrary?.Name} ({CurrentLibrary?.Discs.Length})")</button>
|
|
|
- </div>
|
|
|
-</div>
|
|
|
-<div class="collapse mt-1" id="LibSelectorList">
|
|
|
- <div class="d-flex">
|
|
|
- <div class="">
|
|
|
- Filter:
|
|
|
- </div>
|
|
|
- <div class="col flex-fill">
|
|
|
- <InputText @ref="SearchInput" class="w-100" Value="@SearchValue" ValueExpression="@(()=>SearchValue)" @oninput="SearchChanged" @onkeydown="SearchKeydown"></InputText>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="row">
|
|
|
- <div class="col">
|
|
|
- @foreach (var lib in (ListDataSource).KeepNoEmpty())
|
|
|
- {
|
|
|
- if (lib == null)
|
|
|
- {
|
|
|
- <button class="btn btn-secondary p-1 m-1" type="button" disabled>No result</button>
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- <button class="btn btn-secondary p-1 m-1" type="button" @onclick="()=>SelectLib(lib)">@($"{lib?.Name} ({lib?.Discs.Length})")</button>
|
|
|
- }
|
|
|
- }
|
|
|
+<div class="row mt-2">
|
|
|
+ <div class="col">
|
|
|
+
|
|
|
+ <div class="row">
|
|
|
+ <div class="col collapse show" id="LibSelectorListCollapsed">
|
|
|
+ <div class="d-flex flex-row align-items-center">
|
|
|
+ <span>Library (@FnzDataSet.AllLibrary.Length): </span>
|
|
|
+ <button class="btn btn-primary p-1" type="button" @onclick="ShowLibraryList">@($"{CurrentLibrary?.Name} ({CurrentLibrary?.Discs.Length})")</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="row collapse" id="LibSelectorList">
|
|
|
+ <div class="col">
|
|
|
+ <fieldset class="border rounded-3 p-2">
|
|
|
+ <legend class="float-none w-auto px-2 d-flex flex-row align-items-center">
|
|
|
+ <span>Library (@FnzDataSet.AllLibrary.Length): </span>
|
|
|
+ <button class="btn btn-primary p-1" type="button" @onclick="HideLibraryList">@($"{CurrentLibrary?.Name} ({CurrentLibrary?.Discs.Length})")</button>
|
|
|
+ </legend>
|
|
|
+ <div class="mt-0">
|
|
|
+ <div class="d-flex">
|
|
|
+ <div class="">
|
|
|
+ Filter:
|
|
|
+ </div>
|
|
|
+ <div class="col flex-fill">
|
|
|
+ <InputText @ref="SearchInput" class="w-100" Value="@SearchValue" ValueExpression="@(()=>SearchValue)" @oninput="SearchChanged" @onkeydown="SearchKeydown"></InputText>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ @foreach (var lib in (ListDataSource).KeepNoEmpty())
|
|
|
+ {
|
|
|
+ if (lib == null)
|
|
|
+ {
|
|
|
+ <button class="btn btn-secondary p-1 m-1" type="button" disabled>No result</button>
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ <button class="btn btn-secondary p-1 m-1" type="button" @onclick="()=>SelectLib(lib)">@($"{lib?.Name} ({lib?.Discs.Length})")</button>
|
|
|
+ }
|
|
|
+ }
|
|
|
+ </fieldset>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
@code {
|
|
|
|
|
|
- private ValueTask<object> ExpandLibraryList() => js.InvokeAsync<object>("ShowLibSelectorList", true);
|
|
|
- private ValueTask<object> CollapseLibraryList() => js.InvokeAsync<object>("ShowLibSelectorList", false);
|
|
|
- private ValueTask<object> ToggleLibraryList() => js.InvokeAsync<object>("ShowLibSelectorList");
|
|
|
+ private ValueTask ExpandLibraryList() => js.InvokeVoidAsync("ShowLibSelectorList", true);
|
|
|
+ private ValueTask CollapseLibraryList() => js.InvokeVoidAsync("ShowLibSelectorList", false);
|
|
|
+ private ValueTask ToggleLibraryList() => js.InvokeVoidAsync("ShowLibSelectorList");
|
|
|
|
|
|
|
|
|
private InputText SearchInput { get; set; }
|
|
@@ -49,10 +63,15 @@
|
|
|
|
|
|
private async Task ShowLibraryList()
|
|
|
{
|
|
|
- await ToggleLibraryList();
|
|
|
+ await ExpandLibraryList();
|
|
|
await SearchInput.Element.Value.FocusAsync();
|
|
|
}
|
|
|
|
|
|
+ private async Task HideLibraryList()
|
|
|
+ {
|
|
|
+ await CollapseLibraryList();
|
|
|
+ }
|
|
|
+
|
|
|
private void SearchChanged(ChangeEventArgs e)
|
|
|
{
|
|
|
SearchValue = e.Value.ToString();
|