From 8c7f53b2ebe0990cd93879258d004ac89dc8b24c Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 31 Oct 2024 13:29:54 +0100 Subject: [PATCH] fix: improve user resource input --- .../LightweightResourcePicker.svelte | 169 ++++++++++++------ 1 file changed, 115 insertions(+), 54 deletions(-) diff --git a/frontend/src/lib/components/LightweightResourcePicker.svelte b/frontend/src/lib/components/LightweightResourcePicker.svelte index 6ab25812f1..6b3e13c916 100644 --- a/frontend/src/lib/components/LightweightResourcePicker.svelte +++ b/frontend/src/lib/components/LightweightResourcePicker.svelte @@ -7,9 +7,10 @@ import DarkModeObserver from './DarkModeObserver.svelte' import { Button, Drawer, DrawerContent } from './common' - import { Plus, Loader2 } from 'lucide-svelte' + import { Plus, Loader2, Link2Off } from 'lucide-svelte' import type { AppViewerContext } from './apps/types' import { sendUserToast } from '$lib/toast' + import path from 'path' const dispatch = createEventDispatcher() @@ -30,30 +31,36 @@ value: value ?? initialValue, label: value ?? initialValue } - : '' + : undefined let collection = [valueSelect] + let loading = true async function loadResources(resourceType: string | undefined) { - const nc = ( - await ResourceService.listResource({ - workspace: $workspaceStore!, - resourceType - }) - ).map((x) => ({ - value: x.path, - label: x.path - })) + loading = true + try { + const nc = ( + await ResourceService.listResource({ + workspace: appViewerContext?.workspace ?? $workspaceStore, + resourceType + }) + ).map((x) => ({ + value: x.path, + label: x.path + })) - // TODO check if this is needed - if (!nc.find((x) => x.value == value) && (initialValue || value)) { - nc.push({ value: value ?? initialValue!, label: value ?? initialValue! }) - } - collection = nc - - if (expressOAuthSetup && nc.length > 0) { - value = nc[0].value - valueSelect = nc[0] + // TODO check if this is needed + if (!nc.find((x) => x.value == value) && (initialValue || value)) { + nc.push({ value: value ?? initialValue!, label: value ?? initialValue! }) + } + collection = nc + console.log('collection', collection) + if (expressOAuthSetup && nc.length > 0) { + value = nc[0].value + valueSelect = nc[0] + } + } finally { + loading = false } } @@ -85,6 +92,12 @@ sendUserToast(e.detail, true) open = false }} + on:refresh={async (e) => { + await loadResources(resourceType) + value = e.detail + valueSelect = { value, label: value } + open = false + }} /> {/await} {/key} @@ -107,7 +120,8 @@ on:error={(e) => { sendUserToast(e.detail, true) }} - on:refresh={(e) => { + on:refresh={async (e) => { + await loadResources(resourceType) value = e.detail valueSelect = { value, label: value } drawer?.closeDrawer?.() @@ -127,42 +141,89 @@ {/if}
-
- { - open = true - drawer?.openDrawer?.() + portal={!disablePortal} + value={valueSelect} + on:change={(e) => { + value = e.detail.value + valueSelect = e.detail }} - startIcon={{ icon: Plus }} - iconOnly + on:clear={() => { + value = undefined + valueSelect = undefined + }} + items={collection} + class="text-clip grow min-w-0" + placeholder="{resourceType ?? 'any'} resource" + inputStyles={SELECT_INPUT_DEFAULT_STYLE.inputStyles} + containerStyles={darkMode + ? SELECT_INPUT_DEFAULT_STYLE.containerStylesDark + : SELECT_INPUT_DEFAULT_STYLE.containerStyles} /> {/if} +
+ {#if valueSelect && expressOAuthSetup} +