From aba9c85e9965179cdeb7d46acc72b272b12c34c0 Mon Sep 17 00:00:00 2001 From: Christian Beutel <> Date: Thu, 14 Mar 2024 17:02:58 +0100 Subject: [PATCH] adds icon picker --- web/src/lib/components/base/combobox.svelte | 93 ++ web/src/lib/components/base/search.svelte | 6 +- .../components/waypoint/waypoint_modal.svelte | 19 +- web/src/lib/util/icon_util.ts | 1391 +++++++++++++++++ 4 files changed, 1501 insertions(+), 8 deletions(-) create mode 100644 web/src/lib/components/base/combobox.svelte create mode 100644 web/src/lib/util/icon_util.ts diff --git a/web/src/lib/components/base/combobox.svelte b/web/src/lib/components/base/combobox.svelte new file mode 100644 index 00000000..7ed43152 --- /dev/null +++ b/web/src/lib/components/base/combobox.svelte @@ -0,0 +1,93 @@ + + + + +
+ (searching = true)} + on:focusout={() => (searching = false)} + > + + {#if dropDownOpen} + + {/if} +
diff --git a/web/src/lib/components/base/search.svelte b/web/src/lib/components/base/search.svelte index 69830f8a..9e1e2706 100644 --- a/web/src/lib/components/base/search.svelte +++ b/web/src/lib/components/base/search.svelte @@ -72,9 +72,9 @@ type="search" name="q" autocomplete="off" - extraClasses="{large - ? 'px-12 py-4 text-xl min-w-80 w-[33vw] max-w-[532px] rounded-xl' - : 'px-10'}" + extraClasses={large + ? "px-12 py-4 text-xl min-w-80 w-[33vw] max-w-[532px] rounded-xl" + : "px-10"} {placeholder} bind:value on:input={onSearchType} diff --git a/web/src/lib/components/waypoint/waypoint_modal.svelte b/web/src/lib/components/waypoint/waypoint_modal.svelte index 7a03d87b..7474e0fa 100644 --- a/web/src/lib/components/waypoint/waypoint_modal.svelte +++ b/web/src/lib/components/waypoint/waypoint_modal.svelte @@ -3,9 +3,11 @@ import { createEventDispatcher } from "svelte"; import { waypoint } from "$lib/stores/waypoint_store"; + import { icons } from "$lib/util/icon_util"; import { createForm } from "$lib/vendor/svelte-form-lib/index"; import { util } from "$lib/vendor/svelte-form-lib/util"; import { _ } from "svelte-i18n"; + import Combobox from "../base/combobox.svelte"; import Modal from "../base/modal.svelte"; import TextField from "../base/text_field.svelte"; import Textarea from "../base/textarea.svelte"; @@ -23,6 +25,13 @@ }, }); $: form.set(util.cloneDeep($waypoint)); + + $: filteredIcons = + ($form.icon?.length ?? 0) > 2 + ? icons + .filter((i) => i.includes($form.icon ?? "")) + .map((i) => ({ text: i, value: i, icon: i })) + : [];
-
+
- + >