diff --git a/frontend/src/lib/components/ContentSearchInner.svelte b/frontend/src/lib/components/ContentSearchInner.svelte
index dafddbb8a8..1677f70cfe 100644
--- a/frontend/src/lib/components/ContentSearchInner.svelte
+++ b/frontend/src/lib/components/ContentSearchInner.svelte
@@ -1,16 +1,25 @@
+
+
1000000
+
function parseJson() {
try {
if (code == '') {
diff --git a/frontend/src/lib/components/search/GlobalSearchModal.svelte b/frontend/src/lib/components/search/GlobalSearchModal.svelte
index 5e0f154669..7d278470a6 100644
--- a/frontend/src/lib/components/search/GlobalSearchModal.svelte
+++ b/frontend/src/lib/components/search/GlobalSearchModal.svelte
@@ -77,7 +77,7 @@
},
{
search_id: 'switchto:log-search',
- label: 'Search windmill logs',
+ label: 'Search Windmill logs',
action: () => switchMode('logs'),
shortcutKey: LOGS_PREFIX,
icon: Search
@@ -332,6 +332,7 @@
onDestroy(() => {
window.removeEventListener('keydown', handleKeydown)
})
+
$: searchTerm, handleSearch()
function placeholderFromPrefix(text: string): string {
@@ -436,87 +437,101 @@
await handleSearch()
}
- async function openModal() {
- open = !open
+ async function focusTextInput() {
await tick()
+
+ textInput?.focus()
+ textInput?.select()
+
if (open) {
if (combinedItems == undefined) {
combinedItems = await fetchCombinedItems()
handleSearch()
}
selectedItem = selectItem(0)
- textInput.focus()
- textInput.select()
}
}
+
+ async function openModal() {
+ open = !open
+ focusTextInput()
+ }
+ let height: number | undefined = undefined
{#if open}
{
open = false
}}
>
-
-
-
-
-
-
-
+
+
+
+
+
-
- {#if tab === 'default' || tab === 'switch-mode'}
- {#each (itemMap[tab] ?? []).filter((e) => defaultMenuItems.includes(e)) as el}
- (selectedItem = el)}
- id={el?.search_id}
- hovered={el?.search_id === selectedItem?.search_id}
- label={el?.label}
- icon={el?.icon}
- shortcutKey={el?.shortcutKey}
- />
- {/each}
+
+
+ {#if tab === 'default' || tab === 'switch-mode'}
+ {@const items = (itemMap[tab] ?? []).filter((e) => defaultMenuItems.includes(e))}
+ {#if items.length > 0}
+
+ {#each items as el}
+ (selectedItem = el)}
+ id={el?.search_id}
+ hovered={el?.search_id === selectedItem?.search_id}
+ label={el?.label}
+ icon={el?.icon}
+ shortcutKey={el?.shortcutKey}
+ />
+ {/each}
+
{/if}
- {#if tab === 'default'}
+ {/if}
+
+ {#if tab === 'default'}
+
{#if (itemMap[tab] ?? []).filter((e) => (combinedItems ?? []).includes(e)).length > 0}
-
Flows/Scripts/Apps
+
+ Flows/Scripts/Apps
+
+ {#each (itemMap[tab] ?? []).filter((e) => (combinedItems ?? []).includes(e)) as el}
+
gotoWindmillItemPage(el)}
+ on:hover={() => (selectedItem = el)}
+ id={el?.search_id}
+ hovered={el?.path === selectedItem?.path}
+ label={(el.summary ? `${el.summary} - ` : '') +
+ el.path +
+ (el.starred ? ' ★' : '')}
+ icon={iconForWindmillItem(el.type)}
+ />
+ {/each}
{/if}
- {#each (itemMap[tab] ?? []).filter((e) => (combinedItems ?? []).includes(e)) as el}
- gotoWindmillItemPage(el)}
- on:hover={() => (selectedItem = el)}
- id={el?.search_id}
- hovered={el?.path === selectedItem?.path}
- label={(el.summary ? `${el.summary} - ` : '') +
- el.path +
- (el.starred ? ' ★' : '')}
- icon={iconForWindmillItem(el.type)}
- />
- {/each}
+
{#if (itemMap[tab] ?? []).length === 0}
{/if}
- {:else if tab === 'content'}
-
- {:else if tab === 'logs'}
-
-
- Full text search on windmill's service logs is coming soon
-
-
- {:else if tab === 'runs'}
-
- {#if loadingCompletedRuns}
-
+ {:else if tab === 'content'}
+
+ {:else if tab === 'logs'}
+
+
+ Full text search on windmill's service logs is coming soon
+
+
+ {:else if tab === 'runs'}
+
+ {#if loadingCompletedRuns}
+
+
+
- {:else if itemMap['runs'] && itemMap['runs'].length > 0}
-
+ {#if selectedItem === undefined}
+ select a result to preview
{:else}
-
-
-
No runs found
-
There were no completed runs that match your query
-
Note that new runs might take a while to become searchable (by default
- ~5min)
- {#if !$enterpriseLicense}
-
-
-
- Full-text search on jobs is only available on EE.
-
- {/if}
-
+
+
{/if}
-
- {/if}
-
+ {:else}
+
+
+
No runs found
+
There were no completed runs that match your query
+
Note that new runs might take a while to become searchable (by default ~5min)
+ {#if !$enterpriseLicense}
+
+
+
+ Full-text search on jobs is only available on EE.
+
+ {/if}
+
+
+ {/if}
+
+ {/if}
diff --git a/frontend/src/lib/components/search/QuickMenuItem.svelte b/frontend/src/lib/components/search/QuickMenuItem.svelte
index a7df0564a0..c7f7d942cb 100644
--- a/frontend/src/lib/components/search/QuickMenuItem.svelte
+++ b/frontend/src/lib/components/search/QuickMenuItem.svelte
@@ -8,6 +8,7 @@
export let label: string = ''
export let icon: any = undefined
export let shortcutKey: string | undefined = undefined
+ export let containerClass: string | undefined = undefined
const dispatch = createEventDispatcher()
@@ -43,19 +44,26 @@
}
+
+
dispatch('hover')}
- class={`rounded-md w-full ${hovered ? 'bg-surface-hover' : ''}`}
+ class={twMerge(
+ `rounded-md w-full transition-all cursor-pointer hover:bg-surface-hover ${
+ hovered ? 'bg-surface-hover' : ''
+ }`,
+ containerClass
+ )}
>
{#if $$slots.itemReplacement}
{:else}
-
+
{#if icon}
-
+
{:else if shortcutKey != undefined}