diff options
| -rw-r--r-- | Pages/Component/Dropdown.razor | 4 | ||||
| -rw-r--r-- | Pages/Component/Dropdown.razor.css | 24 | ||||
| -rw-r--r-- | Pages/Gallery.razor | 16 |
3 files changed, 42 insertions, 2 deletions
diff --git a/Pages/Component/Dropdown.razor b/Pages/Component/Dropdown.razor new file mode 100644 index 0000000..1679e2e --- /dev/null +++ b/Pages/Component/Dropdown.razor @@ -0,0 +1,4 @@ +<div class="outer"> + <div class="outer-label">Select an item</div> + <div class="outer-arrow">▼</div> +</div> diff --git a/Pages/Component/Dropdown.razor.css b/Pages/Component/Dropdown.razor.css new file mode 100644 index 0000000..fe68151 --- /dev/null +++ b/Pages/Component/Dropdown.razor.css @@ -0,0 +1,24 @@ +div.outer { + align-items: center; + background: #333; + border-radius: 5px; + color: #fff; + display: flex; + flex-direction: row; + user-select: none; + vertical-align: middle; + width: fit-content; +} + +div.outer:hover { + background: #444; +} + +div.outer-label { + margin-right: auto; + padding: 5px 5px 5px 10px; +} + +div.outer-arrow { + padding: 5px 10px 5px 5px; +} diff --git a/Pages/Gallery.razor b/Pages/Gallery.razor index 1464c13..3ddca5d 100644 --- a/Pages/Gallery.razor +++ b/Pages/Gallery.razor @@ -21,6 +21,12 @@ </div> } else { <div style="padding:var(--size-default-gap);"> + <select @onchange=@((e) => SortOrderChanged(e.Value))> + <option value=@(HyperBooru.SortOrder.ObjectId)>Internal ID</option> + <option value=@(HyperBooru.SortOrder.LastWriteTime)>Modification Time</option> + <option value=@(HyperBooru.SortOrder.Random)>Random</option> + </select> + <hr/> @foreach(var media in displayMedia) { // Precalculate thumbnail size to help the browser // lay out the images during initial page load @@ -109,7 +115,7 @@ tagId: (Guid) TagId!, key: key, count: PageSize, - sortOrder: sortOrder ?? default)); + sortOrder: sortOrder ?? default)); } else if(Query is not null && TagId is null) { displayMedia!.AddRange(feedService.LoadChunk( selectIngest: Ingest, @@ -117,7 +123,7 @@ query: string.IsNullOrWhiteSpace(Query) ? null : Query, key: key, count: PageSize, - sortOrder: sortOrder ?? default)); + sortOrder: sortOrder ?? default)); } else { displayMedia!.AddRange(feedService.LoadChunk( selectIngest: Ingest, @@ -136,6 +142,12 @@ }); } + private async void SortOrderChanged(SortOrder sortOrder) { + await InvokeAsync(() => { + LoadMedia(true); + }); + } + public void Dispose() => userService.UserSessionState.OnStateChange -= ShowNsfwChanged; } |
