From 2d8c9623fa1ced4bbc2640a645eabe1f17613c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Ml=C3=A1dek?= Date: Fri, 17 Nov 2023 22:40:44 +0100 Subject: [PATCH] feat(webui): "Last searched" options in header --- webui/src/components/layout/Header.svelte | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/webui/src/components/layout/Header.svelte b/webui/src/components/layout/Header.svelte index ae4a47e..7d93978 100644 --- a/webui/src/components/layout/Header.svelte +++ b/webui/src/components/layout/Header.svelte @@ -19,15 +19,36 @@ let selector: Selector; + let lastSearched: SelectorValue[] = []; + + function addLastSearched(value: SelectorValue) { + switch (value.t) { + case "Address": + lastSearched = lastSearched.filter( + (v) => v.t !== "Address" || v.c !== value.c, + ); + break; + case "Attribute": + lastSearched = lastSearched.filter( + (v) => v.t !== "Attribute" || v.name !== value.name, + ); + break; + } + lastSearched.unshift(value); + lastSearched = lastSearched.slice(0, 10); + } + async function onInput(event: CustomEvent) { const value = event.detail; if (!value) return; switch (value.t) { case "Address": + addLastSearched(value); navigate(`/browse/${value.c}`); break; case "Attribute": + addLastSearched(value); { const attributeAddress = await api.componentsToAddress({ t: "Attribute", @@ -74,7 +95,7 @@ placeholder={$i18n.t("Search or add")} on:input={onInput} bind:this={selector} - emptyOptions={[]} + emptyOptions={lastSearched} >