diff --git a/src/lib/components/workspace/Models/ActionsSelector.svelte b/src/lib/components/workspace/Models/ActionsSelector.svelte index af3db36947..40b9d2de0f 100644 --- a/src/lib/components/workspace/Models/ActionsSelector.svelte +++ b/src/lib/components/workspace/Models/ActionsSelector.svelte @@ -18,36 +18,49 @@ export let actions: Action[] = []; export let selectedActionIds: string[] = []; + $: selectableActions = actions.filter((action) => !action.is_global); $: selectedActions = actions.filter( (action) => action.is_global || selectedActionIds.includes(action.id) ); - $: availableActions = actions.filter( - (action) => !action.is_global && !selectedActionIds.includes(action.id) - ); - const selectAction = (action: Action) => { - selectedActionIds = [...selectedActionIds, action.id]; + const toggleAction = (action: Action) => { + selectedActionIds = selectedActionIds.includes(action.id) + ? selectedActionIds.filter((id) => id !== action.id) + : [...selectedActionIds, action.id]; }; {#if actions.length > 0}
-
+
{$i18n.t('Actions')}
+ + {#if selectableActions.length > 0} + ({ + ...action, + description: action.meta?.description + }))} + selectedIds={selectedActionIds} + placeholder={$i18n.t('Search actions')} + triggerLabel={$i18n.t('Select Action')} + emptyLabel={$i18n.t('No actions found')} + variant="dropdown" + on:select={(e) => { + toggleAction(e.detail); + }} + on:enableall={(e) => { + selectedActionIds = [ + ...new Set([...selectedActionIds, ...e.detail.map((action) => action.id)]) + ]; + }} + /> + {/if}
- { - selectAction(e.detail); - }} - /> - -
+
{#each selectedActions as action, actionIdx}
@@ -71,5 +84,9 @@ {/each}
+ +
+ {$i18n.t('To select actions here, add them to the "Functions" workspace first.')} +
{/if} diff --git a/src/lib/components/workspace/Models/DefaultFiltersSelector.svelte b/src/lib/components/workspace/Models/DefaultFiltersSelector.svelte index 7e82156447..33dea06f48 100644 --- a/src/lib/components/workspace/Models/DefaultFiltersSelector.svelte +++ b/src/lib/components/workspace/Models/DefaultFiltersSelector.svelte @@ -18,34 +18,45 @@ export let selectedFilterIds: string[] = []; $: selectedFilters = filters.filter((filter) => selectedFilterIds.includes(filter.id)); - $: availableFilters = filters.filter((filter) => !selectedFilterIds.includes(filter.id)); - const selectFilter = (filter: Filter) => { - selectedFilterIds = [...selectedFilterIds, filter.id]; + const toggleFilter = (filter: Filter) => { + selectedFilterIds = selectedFilterIds.includes(filter.id) + ? selectedFilterIds.filter((id) => id !== filter.id) + : [...selectedFilterIds, filter.id]; };
-
+
{$i18n.t('Default Filters')}
+ + {#if filters.length > 0} + ({ + ...filter, + description: filter.meta?.description + }))} + selectedIds={selectedFilterIds} + placeholder={$i18n.t('Search filters')} + triggerLabel={$i18n.t('Select Filter')} + emptyLabel={$i18n.t('No filters found')} + variant="dropdown" + on:select={(e) => { + toggleFilter(e.detail); + }} + on:enableall={(e) => { + selectedFilterIds = [ + ...new Set([...selectedFilterIds, ...e.detail.map((filter) => filter.id)]) + ]; + }} + /> + {/if}
{#if filters.length > 0} - ({ - ...filter, - description: filter.meta?.description - }))} - className="w-48 max-w-full" - placeholder={$i18n.t('Search filters')} - on:select={(e) => { - selectFilter(e.detail); - }} - /> - -
+
{#each selectedFilters as filter} {@const isSelected = selectedFilterIds.includes(filter.id)}
@@ -74,4 +85,8 @@
{/if}
+ +
+ {$i18n.t('To select default filters here, enable toggleable filters for this model first.')} +
diff --git a/src/lib/components/workspace/Models/FiltersSelector.svelte b/src/lib/components/workspace/Models/FiltersSelector.svelte index e7fa6963f8..72e4a261f3 100644 --- a/src/lib/components/workspace/Models/FiltersSelector.svelte +++ b/src/lib/components/workspace/Models/FiltersSelector.svelte @@ -18,40 +18,50 @@ export let filters: Filter[] = []; export let selectedFilterIds: string[] = []; + $: selectableFilters = filters.filter((filter) => !filter.is_global); $: selectedFilters = filters.filter( (filter) => filter.is_global || selectedFilterIds.includes(filter.id) ); - $: availableFilters = filters.filter( - (filter) => !filter.is_global && !selectedFilterIds.includes(filter.id) - ); - const selectFilter = (filter: Filter) => { - selectedFilterIds = [...selectedFilterIds, filter.id]; + const toggleFilter = (filter: Filter) => { + selectedFilterIds = selectedFilterIds.includes(filter.id) + ? selectedFilterIds.filter((id) => id !== filter.id) + : [...selectedFilterIds, filter.id]; }; {#if filters.length > 0}
-
+
{$i18n.t('Filters')}
+ + {#if selectableFilters.length > 0} + ({ + ...filter, + description: filter.meta?.description + }))} + selectedIds={selectedFilterIds} + placeholder={$i18n.t('Search filters')} + triggerLabel={$i18n.t('Select Filter')} + emptyLabel={$i18n.t('No filters found')} + variant="dropdown" + on:select={(e) => { + toggleFilter(e.detail); + }} + on:enableall={(e) => { + selectedFilterIds = [ + ...new Set([...selectedFilterIds, ...e.detail.map((filter) => filter.id)]) + ]; + }} + /> + {/if}
- ({ - ...filter, - description: filter.meta?.description - }))} - className="w-48 max-w-full" - placeholder={$i18n.t('Search filters')} - on:select={(e) => { - selectFilter(e.detail); - }} - /> - -
+
{#each selectedFilters as filter} {@const isSelected = filter.is_global || selectedFilterIds.includes(filter.id)}
@@ -82,5 +92,9 @@ {/each}
+ +
+ {$i18n.t('To select filters here, add them to the "Functions" workspace first.')} +
{/if} diff --git a/src/lib/components/workspace/Models/PromptSuggestions.svelte b/src/lib/components/workspace/Models/PromptSuggestions.svelte index 732a50090f..8e846ad5d3 100644 --- a/src/lib/components/workspace/Models/PromptSuggestions.svelte +++ b/src/lib/components/workspace/Models/PromptSuggestions.svelte @@ -3,6 +3,7 @@ import { saveAs } from 'file-saver'; import { toast } from 'svelte-sonner'; import Plus from '$lib/components/icons/Plus.svelte'; + import XMark from '$lib/components/icons/XMark.svelte'; import Tooltip from '$lib/components/common/Tooltip.svelte'; const i18n = getContext('i18n'); @@ -26,13 +27,13 @@ } -
-
-
+
+
+
{$i18n.t('Default Prompt Suggestions')}
-
+
{#if promptSuggestions.length} {/if}
{#if _promptSuggestions.length > 0} -
+
{#each _promptSuggestions as prompt, promptIdx}
-
-
+
+