windmill-components 1.504.6 → 1.511.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/ata/index.js +1 -1
- package/package/components/AppConnectInner.svelte +184 -29
- package/package/components/ArgInput.svelte +33 -103
- package/package/components/AuthSettings.svelte +45 -1
- package/package/components/Dev.svelte +31 -24
- package/package/components/DisplayResult.svelte +53 -26
- package/package/components/DisplayResult.svelte.d.ts +1 -1
- package/package/components/DynSelect.svelte +3 -3
- package/package/components/Editor.svelte +115 -88
- package/package/components/Editor.svelte.d.ts +30 -55
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/ErrorOrRecoveryHandler.svelte +73 -67
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +8 -24
- package/package/components/FlowBuilder.svelte +11 -2
- package/package/components/FlowJobResult.svelte +12 -17
- package/package/components/FlowJobResult.svelte.d.ts +5 -18
- package/package/components/FlowPreviewContent.svelte +13 -10
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowPreviewResult.svelte +14 -6
- package/package/components/FlowStatusViewer.svelte +11 -24
- package/package/components/FlowStatusViewer.svelte.d.ts +19 -18
- package/package/components/FlowStatusViewerInner.svelte +110 -131
- package/package/components/FlowStatusViewerInner.svelte.d.ts +20 -18
- package/package/components/GitDiffPreview.svelte +55 -0
- package/package/components/GitDiffPreview.svelte.d.ts +13 -0
- package/package/components/HistoricInputs.svelte +2 -2
- package/package/components/HttpAgentWorkerDrawer.svelte +1 -1
- package/package/components/InitGitRepoPopover.svelte +410 -0
- package/package/components/InitGitRepoPopover.svelte.d.ts +13 -0
- package/package/components/InstanceSetting.svelte +21 -9
- package/package/components/InstanceSettings.svelte +16 -3
- package/package/components/JobLoader.svelte +567 -0
- package/package/components/JobLoader.svelte.d.ts +53 -0
- package/package/components/JobLogs.svelte +6 -4
- package/package/components/JobLogs.svelte.d.ts +5 -18
- package/package/components/JsonEditor.svelte +11 -11
- package/package/components/JsonEditor.svelte.d.ts +14 -56
- package/package/components/Label.svelte +6 -11
- package/package/components/Label.svelte.d.ts +14 -39
- package/package/components/LightweightResourcePicker.svelte +18 -39
- package/package/components/LightweightResourcePicker.svelte.d.ts +6 -22
- package/package/components/LogViewer.svelte +35 -41
- package/package/components/LogViewer.svelte.d.ts +6 -20
- package/package/components/ModulePreviewResultViewer.svelte +3 -1
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -0
- package/package/components/ModuleTest.svelte +16 -11
- package/package/components/NumberTypeNarrowing.svelte +13 -16
- package/package/components/NumberTypeNarrowing.svelte.d.ts +4 -18
- package/package/components/PullGitRepoPopover.svelte +355 -0
- package/package/components/PullGitRepoPopover.svelte.d.ts +18 -0
- package/package/components/ResourceTypePicker.svelte +20 -17
- package/package/components/ResourceTypePicker.svelte.d.ts +7 -6
- package/package/components/S3FilePicker.svelte +5 -3
- package/package/components/SavedInputs.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +4 -3
- package/package/components/ScriptEditor.svelte +34 -31
- package/package/components/ScriptEditor.svelte.d.ts +3 -3
- package/package/components/Section.svelte +7 -20
- package/package/components/Section.svelte.d.ts +20 -47
- package/package/components/ServiceLogsInner.svelte +2 -1
- package/package/components/ServiceLogsInner.svelte.d.ts +1 -0
- package/package/components/SimpleEditor.svelte +4 -4
- package/package/components/SimpleEditor.svelte.d.ts +1 -0
- package/package/components/SqlRepl.svelte +0 -1
- package/package/components/Subsection.svelte +10 -12
- package/package/components/Subsection.svelte.d.ts +15 -39
- package/package/components/UserSettings.svelte +1 -1
- package/package/components/WorkerGroup.svelte +260 -165
- package/package/components/WorkerGroup.svelte.d.ts +2 -0
- package/package/components/WorkerTagPicker.svelte +3 -3
- package/package/components/WorkerTagSelect.svelte +33 -4
- package/package/components/apps/components/buttons/AppButton.svelte +7 -1
- package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
- package/package/components/apps/components/display/AppDisplayComponentByJobId.svelte +16 -11
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte +13 -10
- package/package/components/apps/components/display/AppMenu.svelte +5 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +3 -3
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +3 -3
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +3 -3
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +3 -3
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +3 -3
- package/package/components/apps/components/helpers/RunnableComponent.svelte +65 -54
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -5
- package/package/components/apps/components/inputs/AppUserResource.svelte +26 -8
- package/package/components/apps/editor/AppEditorHeader.svelte +11 -5
- package/package/components/apps/editor/AppJobsDrawer.svelte +5 -5
- package/package/components/apps/editor/RunnableJobPanel.svelte +4 -4
- package/package/components/apps/editor/component/components.d.ts +12 -0
- package/package/components/apps/editor/component/components.js +19 -7
- package/package/components/assets/AssetButtons.svelte +38 -0
- package/package/components/assets/AssetButtons.svelte.d.ts +15 -0
- package/package/components/assets/AssetsDropdownButton.svelte +60 -72
- package/package/components/assets/AssetsDropdownButton.svelte.d.ts +3 -4
- package/package/components/assets/AssetsUsageDrawer.svelte +10 -10
- package/package/components/assets/JobAssetsViewer.svelte +79 -0
- package/package/components/assets/JobAssetsViewer.svelte.d.ts +7 -0
- package/package/components/assets/README_DEV.md +0 -0
- package/package/components/assets/lib.d.ts +9 -1
- package/package/components/assets/lib.js +48 -7
- package/package/components/common/fileUpload/FileUpload.svelte +126 -84
- package/package/components/common/fileUpload/FileUpload.svelte.d.ts +13 -3
- package/package/components/common/fileUpload/S3ArgInput.svelte +111 -0
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +21 -0
- package/package/components/common/table/ScriptRow.svelte +3 -1
- package/package/components/copilot/AIFormSettings.svelte +3 -4
- package/package/components/copilot/AIFormSettings.svelte.d.ts +5 -19
- package/package/components/copilot/autocomplete/Autocompletor.d.ts +3 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +269 -35
- package/package/components/copilot/autocomplete/request.d.ts +3 -0
- package/package/components/copilot/autocomplete/request.js +15 -7
- package/package/components/copilot/chat/AIChatDisplay.svelte +8 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +13 -8
- package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte +5 -5
- package/package/components/copilot/chat/flow/core.d.ts +1 -1
- package/package/components/copilot/chat/flow/core.js +2 -38
- package/package/components/copilot/chat/navigator/apiTools.d.ts +8 -0
- package/package/components/copilot/chat/navigator/apiTools.js +95 -15
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +2 -1
- package/package/components/copilot/chat/script/core.d.ts +11 -2
- package/package/components/copilot/chat/script/core.js +165 -23
- package/package/components/copilot/chat/shared.d.ts +10 -0
- package/package/components/copilot/chat/shared.js +56 -0
- package/package/components/copilot/lib.d.ts +1 -0
- package/package/components/copilot/lib.js +30 -9
- package/package/components/custom_ui.d.ts +1 -0
- package/package/components/flows/FlowAssetsHandler.svelte +133 -0
- package/package/components/flows/FlowAssetsHandler.svelte.d.ts +14 -0
- package/package/components/flows/content/FlowModuleCache.svelte +4 -4
- package/package/components/flows/content/FlowModuleCache.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleComponent.svelte +16 -19
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +3 -4
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleSleep.svelte +6 -7
- package/package/components/flows/content/FlowModuleSleep.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleSuspend.svelte +19 -17
- package/package/components/flows/content/FlowModuleSuspend.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleTimeout.svelte +4 -4
- package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +4 -18
- package/package/components/flows/flowStore.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +9 -4
- package/package/components/flows/scheduleUtils.js +1 -1
- package/package/components/flows/types.d.ts +2 -1
- package/package/components/graph/FlowGraphV2.svelte +8 -104
- package/package/components/graph/FlowGraphV2.svelte.d.ts +0 -2
- package/package/components/graph/graphBuilder.svelte.d.ts +6 -3
- package/package/components/graph/graphBuilder.svelte.js +35 -9
- package/package/components/graph/renderers/edges/BaseEdge.svelte +2 -5
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/AssetNode.svelte +23 -20
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +5 -10
- package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +1 -1
- package/package/components/graph/util.js +1 -1
- package/package/components/home/ItemsList.svelte +2 -0
- package/package/components/icons/AssetGenericIcon.svelte +0 -3
- package/package/components/jobs/JobPreview.svelte +10 -6
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +13 -12
- package/package/components/runs/BatchReRunOptionsPane.svelte +5 -1
- package/package/components/runs/JobPreview.svelte +26 -16
- package/package/components/runs/{JobLoader.svelte.d.ts → JobsLoader.svelte.d.ts} +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte +2 -2
- package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -0
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +3 -2
- package/package/components/script_builder.d.ts +2 -2
- package/package/components/settings/CreateToken.svelte +76 -41
- package/package/components/settings/CreateToken.svelte.d.ts +1 -1
- package/package/components/settings/ScopeSelector.svelte +613 -0
- package/package/components/settings/ScopeSelector.svelte.d.ts +8 -0
- package/package/components/settings/TokenDisplay.svelte +103 -0
- package/package/components/settings/TokenDisplay.svelte.d.ts +10 -0
- package/package/components/settings/TokensTable.svelte +70 -349
- package/package/components/sidebar/CriticalAlertModal.svelte +3 -0
- package/package/components/triggers/DeleteTriggerButton.svelte +1 -1
- package/package/components/triggers/TriggerEditorToolbar.svelte +3 -3
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte +55 -0
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +13 -0
- package/package/components/triggers/TriggersEditor.svelte +45 -3
- package/package/components/triggers/TriggersWrapper.svelte +2 -2
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/gcp/utils.js +9 -1
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +3 -2
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +26 -23
- package/package/components/triggers/http/RouteEditorConfigSection.svelte.d.ts +5 -19
- package/package/components/triggers/http/RouteEditorInner.svelte +219 -175
- package/package/components/triggers/http/RouteEditorInner.svelte.d.ts +6 -2
- package/package/components/triggers/http/utils.js +9 -3
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/kafka/utils.js +9 -1
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte +4 -132
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte.d.ts +2 -5
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +182 -13
- package/package/components/triggers/mqtt/utils.js +9 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/nats/utils.js +9 -1
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +41 -2
- package/package/components/triggers/postgres/utils.js +9 -1
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +38 -92
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/sqs/utils.js +9 -1
- package/package/components/triggers/utils.js +12 -0
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/websocket/utils.js +11 -1
- package/package/components/workspaceSettings/AISettings.svelte +0 -2
- package/package/components/workspaceSettings/FilterList.svelte +56 -0
- package/package/components/workspaceSettings/FilterList.svelte.d.ts +8 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +785 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +18 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +305 -23
- package/package/gen/schemas.gen.js +305 -23
- package/package/gen/services.gen.d.ts +33 -1
- package/package/gen/services.gen.js +66 -2
- package/package/gen/types.gen.d.ts +216 -11
- package/package/history.svelte.js +0 -2
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +5 -2
- package/package/infer.js +16 -10
- package/package/svelte5Utils.svelte.d.ts +1 -0
- package/package/svelte5Utils.svelte.js +25 -18
- package/package/toast.js +10 -0
- package/package/utils.d.ts +3 -2
- package/package/utils.js +20 -5
- package/package.json +11 -11
- package/package/components/ResultJobLoader.svelte +0 -219
- package/package/components/ResultJobLoader.svelte.d.ts +0 -52
- package/package/components/TestJobLoader.svelte +0 -274
- package/package/components/TestJobLoader.svelte.d.ts +0 -43
- package/package/components/icons/AssetVarIcon.svelte +0 -31
- package/package/components/icons/AssetVarIcon.svelte.d.ts +0 -9
- /package/package/components/runs/{JobLoader.svelte → JobsLoader.svelte} +0 -0
|
@@ -17,7 +17,10 @@ import WebsocketEditorConfigSection from './WebsocketEditorConfigSection.svelte'
|
|
|
17
17
|
import { untrack } from 'svelte';
|
|
18
18
|
import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte';
|
|
19
19
|
import { saveWebsocketTriggerFromCfg } from './utils';
|
|
20
|
-
import { handleConfigChange } from '../utils';
|
|
20
|
+
import { getHandlerType, handleConfigChange } from '../utils';
|
|
21
|
+
import Tabs from '../../common/tabs/Tabs.svelte';
|
|
22
|
+
import Tab from '../../common/tabs/Tab.svelte';
|
|
23
|
+
import TriggerRetriesAndErrorHandler from '../TriggerRetriesAndErrorHandler.svelte';
|
|
21
24
|
let { useDrawer = true, description = undefined, hideTarget = false, hideTooltips = false, isEditor = false, allowDraft = false, trigger = undefined, isDeployed = false, customLabel = undefined, onConfigChange = undefined, onCaptureConfigChange = undefined, onUpdate = undefined, onDelete = undefined, onReset = undefined, cloudDisabled = false } = $props();
|
|
22
25
|
let drawer = $state();
|
|
23
26
|
let is_flow = $state(false);
|
|
@@ -43,6 +46,11 @@ let showLoading = $state(false);
|
|
|
43
46
|
let initialConfig = undefined;
|
|
44
47
|
let deploymentLoading = $state(false);
|
|
45
48
|
let isValid = $state(false);
|
|
49
|
+
let optionTabSelected = $state('error_handler');
|
|
50
|
+
let errorHandlerSelected = $state('slack');
|
|
51
|
+
let error_handler_path = $state();
|
|
52
|
+
let error_handler_args = $state({});
|
|
53
|
+
let retry = $state();
|
|
46
54
|
const websocketCfg = $derived.by(getSaveCfg);
|
|
47
55
|
const captureConfig = $derived.by(isEditor ? getCaptureConfig : () => ({}));
|
|
48
56
|
const saveDisabled = $derived.by(() => {
|
|
@@ -110,6 +118,10 @@ export async function openNew(nis_flow, fixedScriptPath_, defaultValues) {
|
|
|
110
118
|
url_runnable_args = defaultValues?.url_runnable_args ?? {};
|
|
111
119
|
dirtyPath = false;
|
|
112
120
|
can_return_message = false;
|
|
121
|
+
error_handler_path = defaultValues?.error_handler_path ?? undefined;
|
|
122
|
+
error_handler_args = defaultValues?.error_handler_args ?? {};
|
|
123
|
+
retry = defaultValues?.retry ?? undefined;
|
|
124
|
+
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
113
125
|
}
|
|
114
126
|
finally {
|
|
115
127
|
clearTimeout(loadingTimeout);
|
|
@@ -129,6 +141,10 @@ function loadTriggerConfig(cfg) {
|
|
|
129
141
|
url_runnable_args = cfg?.url_runnable_args;
|
|
130
142
|
can_return_message = cfg?.can_return_message;
|
|
131
143
|
can_write = canWrite(path, cfg?.extra_perms, $userStore);
|
|
144
|
+
error_handler_path = cfg?.error_handler_path;
|
|
145
|
+
error_handler_args = cfg?.error_handler_args ?? {};
|
|
146
|
+
retry = cfg?.retry;
|
|
147
|
+
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
132
148
|
}
|
|
133
149
|
function getSaveCfg() {
|
|
134
150
|
return {
|
|
@@ -141,7 +157,10 @@ function getSaveCfg() {
|
|
|
141
157
|
initial_messages,
|
|
142
158
|
url_runnable_args,
|
|
143
159
|
can_return_message,
|
|
144
|
-
enabled
|
|
160
|
+
enabled,
|
|
161
|
+
error_handler_path,
|
|
162
|
+
error_handler_args,
|
|
163
|
+
retry
|
|
145
164
|
};
|
|
146
165
|
}
|
|
147
166
|
async function loadTrigger(defaultConfig) {
|
|
@@ -243,14 +262,14 @@ $effect(() => {
|
|
|
243
262
|
</Drawer>
|
|
244
263
|
{:else}
|
|
245
264
|
<Section label={!customLabel ? 'WebSocket trigger' : ''} headerClass="grow min-w-0 h-[30px]">
|
|
246
|
-
|
|
265
|
+
{#snippet header()}
|
|
247
266
|
{#if customLabel}
|
|
248
267
|
{@render customLabel()}
|
|
249
268
|
{/if}
|
|
250
|
-
|
|
251
|
-
|
|
269
|
+
{/snippet}
|
|
270
|
+
{#snippet action()}
|
|
252
271
|
{@render actionsButtons()}
|
|
253
|
-
|
|
272
|
+
{/snippet}
|
|
254
273
|
{@render config()}
|
|
255
274
|
</Section>
|
|
256
275
|
{/if}
|
|
@@ -593,6 +612,28 @@ $effect(() => {
|
|
|
593
612
|
</div>
|
|
594
613
|
</div>
|
|
595
614
|
</Section>
|
|
615
|
+
|
|
616
|
+
<Section label="Advanced" collapsable>
|
|
617
|
+
<div class="flex flex-col gap-4">
|
|
618
|
+
<div class="min-h-96">
|
|
619
|
+
<Tabs bind:selected={optionTabSelected}>
|
|
620
|
+
<Tab value="error_handler">Error Handler</Tab>
|
|
621
|
+
<Tab value="retries">Retries</Tab>
|
|
622
|
+
</Tabs>
|
|
623
|
+
<div class="mt-4">
|
|
624
|
+
<TriggerRetriesAndErrorHandler
|
|
625
|
+
{optionTabSelected}
|
|
626
|
+
{itemKind}
|
|
627
|
+
{can_write}
|
|
628
|
+
bind:errorHandlerSelected
|
|
629
|
+
bind:error_handler_path
|
|
630
|
+
bind:error_handler_args
|
|
631
|
+
bind:retry
|
|
632
|
+
/>
|
|
633
|
+
</div>
|
|
634
|
+
</div>
|
|
635
|
+
</div>
|
|
636
|
+
</Section>
|
|
596
637
|
</div>
|
|
597
638
|
{/if}
|
|
598
639
|
{/snippet}
|
|
@@ -2,6 +2,15 @@ import { WebsocketTriggerService } from '../../../gen';
|
|
|
2
2
|
import { sendUserToast } from '../../../toast';
|
|
3
3
|
import { get } from 'svelte/store';
|
|
4
4
|
export async function saveWebsocketTriggerFromCfg(initialPath, triggerCfg, edit, workspace, usedTriggerKinds) {
|
|
5
|
+
const errorHandlerAndRetries = !triggerCfg.is_flow
|
|
6
|
+
? {
|
|
7
|
+
error_handler_path: triggerCfg.error_handler_path,
|
|
8
|
+
error_handler_args: triggerCfg.error_handler_path
|
|
9
|
+
? triggerCfg.error_handler_args
|
|
10
|
+
: undefined,
|
|
11
|
+
retry: triggerCfg.retry
|
|
12
|
+
}
|
|
13
|
+
: {};
|
|
5
14
|
const requestBody = {
|
|
6
15
|
path: triggerCfg.path,
|
|
7
16
|
script_path: triggerCfg.script_path,
|
|
@@ -10,7 +19,8 @@ export async function saveWebsocketTriggerFromCfg(initialPath, triggerCfg, edit,
|
|
|
10
19
|
filters: triggerCfg.filters,
|
|
11
20
|
initial_messages: triggerCfg.initial_messages,
|
|
12
21
|
url_runnable_args: triggerCfg.url_runnable_args,
|
|
13
|
-
can_return_message: triggerCfg.can_return_message
|
|
22
|
+
can_return_message: triggerCfg.can_return_message,
|
|
23
|
+
...errorHandlerAndRetries
|
|
14
24
|
};
|
|
15
25
|
try {
|
|
16
26
|
if (edit) {
|
|
@@ -160,8 +160,6 @@ async function onAiProviderChange(provider) {
|
|
|
160
160
|
{#if aiProviders[provider]}
|
|
161
161
|
<div class="mb-4 flex flex-col gap-2">
|
|
162
162
|
<div class="flex flex-row gap-1">
|
|
163
|
-
<!-- this can be removed once the parent component moves to runes -->
|
|
164
|
-
<!-- svelte-ignore binding_property_non_reactive -->
|
|
165
163
|
<ResourcePicker
|
|
166
164
|
selectFirst
|
|
167
165
|
resourceType={provider === 'openai' && usingOpenaiClientCredentialsOauth
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<script lang="ts">import { Plus, X } from 'lucide-svelte';
|
|
2
|
+
let { title = '', tooltip = undefined, items = $bindable([]), placeholder = 'Add filter (e.g. f/**)' } = $props();
|
|
3
|
+
let newItem = $state('');
|
|
4
|
+
let inputRef = $state(null);
|
|
5
|
+
function addItem() {
|
|
6
|
+
const value = newItem.trim();
|
|
7
|
+
if (value && !items.includes(value)) {
|
|
8
|
+
items = [...items, value];
|
|
9
|
+
newItem = '';
|
|
10
|
+
inputRef?.focus();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function removeItem(idx) {
|
|
14
|
+
items = items.filter((_, i) => i !== idx);
|
|
15
|
+
}
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<div class="flex flex-col gap-1">
|
|
19
|
+
<div class="flex items-center gap-2 mb-1">
|
|
20
|
+
<h4 class="font-semibold text-sm">{title}</h4>
|
|
21
|
+
{#if tooltip}
|
|
22
|
+
{@render tooltip?.()}
|
|
23
|
+
{/if}
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="flex flex-wrap gap-2 items-center mb-1">
|
|
27
|
+
{#each items as item, idx (item)}
|
|
28
|
+
<span class="flex items-center bg-gray-100 rounded-full px-3 py-1 text-xs text-gray-700">
|
|
29
|
+
{item}
|
|
30
|
+
<button
|
|
31
|
+
class="ml-2 text-gray-400 hover:text-red-500 focus:outline-none"
|
|
32
|
+
onclick={() => removeItem(idx)}
|
|
33
|
+
aria-label="Remove filter"
|
|
34
|
+
>
|
|
35
|
+
<X size={14} />
|
|
36
|
+
</button>
|
|
37
|
+
</span>
|
|
38
|
+
{/each}
|
|
39
|
+
|
|
40
|
+
<input
|
|
41
|
+
bind:this={inputRef}
|
|
42
|
+
class="border border-gray-300 rounded-full px-3 py-1 text-xs focus:outline-none focus:ring-2 focus:ring-primary"
|
|
43
|
+
{placeholder}
|
|
44
|
+
value={newItem}
|
|
45
|
+
oninput={(e) => (newItem = e.currentTarget.value)}
|
|
46
|
+
onkeydown={(e) => e.key === 'Enter' && (addItem(), e.preventDefault())}
|
|
47
|
+
/>
|
|
48
|
+
<button
|
|
49
|
+
class="ml-1 text-primary hover:bg-primary/10 rounded-full p-1"
|
|
50
|
+
onclick={addItem}
|
|
51
|
+
aria-label="Add filter"
|
|
52
|
+
>
|
|
53
|
+
<Plus size={14} />
|
|
54
|
+
</button>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|