windmill-components 1.550.0 → 1.555.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/aiStore.d.ts +13 -0
- package/package/aiStore.js +70 -0
- package/package/common.d.ts +2 -1
- package/package/components/AIProviderPicker.svelte +25 -8
- package/package/components/ArgEnum.svelte +3 -2
- package/package/components/ArgEnum.svelte.d.ts +1 -0
- package/package/components/ArgInput.svelte +235 -174
- package/package/components/ArgInput.svelte.d.ts +4 -1
- package/package/components/ArrayTypeNarrowing.svelte +38 -32
- package/package/components/AutoscalingEvents.svelte +21 -5
- package/package/components/AutoscalingEvents.svelte.d.ts +4 -18
- package/package/components/DateTimeInput.svelte +8 -6
- package/package/components/DeployButton.svelte +1 -1
- package/package/components/Dev.svelte +6 -4
- package/package/components/EditableSchemaForm.svelte +7 -6
- package/package/components/Editor.svelte +2 -1
- package/package/components/EditorSettings.svelte +5 -5
- package/package/components/EditorSettings.svelte.d.ts +4 -18
- package/package/components/FakeMonacoPlaceHolder.svelte +4 -2
- package/package/components/FakeMonacoPlaceHolder.svelte.d.ts +1 -0
- package/package/components/FieldHeader.svelte +5 -7
- package/package/components/FirstStepInputs.svelte +1 -1
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowPlugConnect.svelte +8 -2
- package/package/components/FlowPlugConnect.svelte.d.ts +1 -0
- package/package/components/FlowPreviewContent.svelte +113 -92
- package/package/components/FlowPreviewContent.svelte.d.ts +3 -3
- package/package/components/FlowStatusViewer.svelte +3 -2
- package/package/components/FlowStatusViewerInner.svelte +1 -1
- package/package/components/FolderEditor.svelte +6 -7
- package/package/components/GroupEditor.svelte +148 -141
- package/package/components/GroupEditor.svelte.d.ts +5 -4
- package/package/components/InputTransformForm.svelte +88 -82
- package/package/components/InputTransformSchemaForm.svelte +5 -4
- package/package/components/InstanceSetting.svelte +17 -9
- package/package/components/JsonEditor.svelte +18 -9
- package/package/components/JsonEditor.svelte.d.ts +1 -1
- package/package/components/JsonInputs.svelte +1 -1
- package/package/components/ModulePreviewForm.svelte +23 -19
- package/package/components/NumberTypeNarrowing.svelte +32 -16
- package/package/components/ObjectStoreConfigSettings.svelte +27 -19
- package/package/components/Path.svelte +2 -8
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/ResourceEditor.svelte +3 -10
- package/package/components/ResourcePicker.svelte +85 -72
- package/package/components/ResourcePicker.svelte.d.ts +2 -0
- package/package/components/RunChart.svelte +1 -1
- package/package/components/RunForm.svelte +11 -7
- package/package/components/S3ArrayHelperButton.svelte +12 -6
- package/package/components/S3ArrayHelperButton.svelte.d.ts +1 -0
- package/package/components/S3FilePicker.svelte +1 -1
- package/package/components/SchemaForm.svelte +18 -10
- package/package/components/SchemaForm.svelte.d.ts +7 -1
- package/package/components/SchemaFormWithArgPicker.svelte +1 -1
- package/package/components/ScriptBuilder.svelte +2 -2
- package/package/components/ScriptEditor.svelte +4 -3
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ShareModal.svelte +4 -4
- package/package/components/SimpleEditor.svelte +6 -2
- package/package/components/SimpleEditor.svelte.d.ts +3 -0
- package/package/components/StringTypeNarrowing.svelte +5 -1
- package/package/components/SuperadminSettingsInner.svelte +3 -3
- package/package/components/TemplateEditor.svelte +18 -9
- package/package/components/Toast.svelte +2 -7
- package/package/components/Toast.svelte.d.ts +4 -18
- package/package/components/Toggle.svelte +17 -7
- package/package/components/ToggleHubWorkspaceQuick.svelte +3 -3
- package/package/components/WorkerGroup.svelte +2 -14
- package/package/components/apps/components/buttons/AppButton.svelte +57 -39
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -2
- package/package/components/apps/components/display/dbtable/queries/insert.js +2 -1
- package/package/components/apps/components/display/dbtable/utils.d.ts +8 -8
- package/package/components/apps/components/display/table/utils.js +13 -3
- package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -3
- package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +33 -271
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +233 -0
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +18 -0
- package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +47 -0
- package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +8 -0
- package/package/components/apps/editor/GridEditor.svelte +7 -2
- package/package/components/apps/editor/appDeploy.svelte.d.ts +1 -0
- package/package/components/apps/editor/appDeploy.svelte.js +6 -0
- package/package/components/apps/editor/appUtils.d.ts +1 -0
- package/package/components/apps/editor/appUtils.js +30 -1
- package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -1
- package/package/components/apps/editor/component/components.d.ts +3 -3
- package/package/components/apps/editor/component/components.js +1 -1
- package/package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +6 -4
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +58 -8
- package/package/components/auditLogs/AuditLogsFilters.svelte +1 -1
- package/package/components/common/ResizeTransitionWrapper.svelte +39 -0
- package/package/components/common/ResizeTransitionWrapper.svelte.d.ts +12 -0
- package/package/components/common/badge/CountBadge.svelte +29 -0
- package/package/components/common/badge/CountBadge.svelte.d.ts +8 -0
- package/package/components/common/button/Button.svelte +1 -0
- package/package/components/common/button/ConnectionButton.svelte +6 -1
- package/package/components/common/button/ConnectionButton.svelte.d.ts +2 -0
- package/package/components/common/button/RefreshButton.svelte +8 -4
- package/package/components/common/button/RefreshButton.svelte.d.ts +3 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte +1 -1
- package/package/components/common/fileInput/FileInput.svelte +7 -6
- package/package/components/common/fileUpload/S3ArgInput.svelte +11 -9
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +1 -0
- package/package/components/common/popup/PopupV2.svelte +6 -0
- package/package/components/common/toggleButton-v2/ToggleButton.svelte +17 -26
- package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +16 -30
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +3 -3
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
- package/package/components/copilot/CodeCompletionStatus.svelte +2 -1
- package/package/components/copilot/CronGen.svelte +1 -1
- package/package/components/copilot/FlowInlineScriptAIButton.svelte +2 -2
- package/package/components/copilot/IteratorGen.svelte +30 -25
- package/package/components/copilot/IteratorGen.svelte.d.ts +8 -7
- package/package/components/copilot/MetadataGen.svelte +4 -3
- package/package/components/copilot/PredicateGen.svelte +15 -12
- package/package/components/copilot/PredicateGen.svelte.d.ts +5 -4
- package/package/components/copilot/RegexGen.svelte +1 -1
- package/package/components/copilot/ScriptFix.svelte +1 -1
- package/package/components/copilot/ScriptGen.svelte +2 -1
- package/package/components/copilot/StepGenQuick.svelte +15 -16
- package/package/components/copilot/StepGenQuick.svelte.d.ts +14 -13
- package/package/components/copilot/StepInputGen.svelte +50 -36
- package/package/components/copilot/StepInputGen.svelte.d.ts +13 -10
- package/package/components/copilot/StepInputsGen.svelte +18 -19
- package/package/components/copilot/StepInputsGen.svelte.d.ts +4 -18
- package/package/components/copilot/autocomplete/Autocompletor.js +1 -1
- package/package/components/copilot/autocomplete/request.js +1 -1
- package/package/components/copilot/chat/AIChat.svelte +2 -1
- package/package/components/copilot/chat/AIChatManager.svelte.js +2 -1
- package/package/components/copilot/chat/AiChatLayout.svelte +2 -1
- package/package/components/copilot/chat/ProviderModelSelector.svelte +10 -9
- package/package/components/copilot/chat/ProviderModelSelector.svelte.d.ts +2 -17
- package/package/components/copilot/chat/flow/FlowAIButton.svelte +1 -1
- package/package/components/copilot/chat/script/core.js +2 -1
- package/package/components/copilot/chat/shared.js +2 -1
- package/package/components/copilot/lib.js +2 -1
- package/package/components/details/DetailPageLayout.svelte +3 -2
- package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
- package/package/components/flows/CreateActionsFlow.svelte +1 -1
- package/package/components/flows/FlowChatInterface.svelte +404 -0
- package/package/components/flows/FlowChatInterface.svelte.d.ts +19 -0
- package/package/components/flows/FlowChatMessage.svelte +41 -0
- package/package/components/flows/FlowChatMessage.svelte.d.ts +9 -0
- package/package/components/flows/FlowConversationsSidebar.svelte +213 -0
- package/package/components/flows/FlowConversationsSidebar.svelte.d.ts +15 -0
- package/package/components/flows/FlowEditor.svelte.d.ts +1 -1
- package/package/components/flows/FlowModuleIcon.svelte +10 -10
- package/package/components/flows/common/FlowCard.svelte +10 -2
- package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
- package/package/components/flows/common/FlowCardHeader.svelte +2 -1
- package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
- package/package/components/flows/content/DynamicInputHelpBox.svelte +4 -4
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowInput.svelte +381 -259
- package/package/components/flows/content/FlowInput.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowInputsQuick.svelte +55 -34
- package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +2 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +5 -10
- package/package/components/flows/flowInfers.d.ts +60 -0
- package/package/components/flows/flowInfers.js +72 -66
- package/package/components/flows/{flowStore.d.ts → flowStore.svelte.d.ts} +1 -0
- package/package/components/flows/header/FlowPreviewButtons.svelte +1 -1
- package/package/components/flows/map/FlowErrorHandlerItem.svelte +4 -2
- package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -2
- package/package/components/flows/map/FlowStickyNode.svelte +2 -2
- package/package/components/flows/map/FlowStickyNode.svelte.d.ts +1 -0
- package/package/components/flows/map/InsertModuleButton.svelte +5 -2
- package/package/components/flows/map/InsertModuleButton.svelte.d.ts +4 -3
- package/package/components/flows/map/InsertModuleInner.svelte +3 -1
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +2 -2
- package/package/components/flows/map/VirtualItem.svelte +1 -2
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +8 -3
- package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +15 -12
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -15
- package/package/components/graph/FlowGraphV2.svelte +2 -1
- package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
- package/package/components/graph/graphBuilder.svelte.d.ts +2 -0
- package/package/components/graph/graphBuilder.svelte.js +1 -0
- package/package/components/graph/renderers/edges/BaseEdge.svelte +1 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte +13 -2
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +2 -27
- package/package/components/instanceSettings.js +17 -0
- package/package/components/progressBar/ProgressBar.svelte +1 -1
- package/package/components/raw_apps/FileEditorIcon.svelte +1 -1
- package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +4 -18
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte +2 -8
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte.d.ts +4 -18
- package/package/components/raw_apps/RawAppEditor.svelte +6 -7
- package/package/components/raw_apps/RawAppEditorHeader.svelte +48 -301
- package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +18 -19
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +10 -16
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +13 -13
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +8 -11
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -2
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +0 -1
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +7 -13
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +8 -8
- package/package/components/raw_apps/RawAppPreview.svelte +3 -7
- package/package/components/raw_apps/RawAppPreview.svelte.d.ts +5 -19
- package/package/components/raw_apps/utils.d.ts +1 -1
- package/package/components/raw_apps/utils.js +3 -3
- package/package/components/runs/RunOption.svelte +2 -2
- package/package/components/runs/RunsFilter.svelte +15 -12
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/schema/EditableSchemaDrawer.svelte +19 -18
- package/package/components/schema/FlowPropertyEditor.svelte +9 -2
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +22 -26
- package/package/components/schema/SchemaFormDND.svelte +3 -2
- package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
- package/package/components/select/DraggableTags.svelte +2 -2
- package/package/components/select/MultiSelect.svelte +14 -8
- package/package/components/select/Select.svelte +12 -5
- package/package/components/select/Select.svelte.d.ts +11 -0
- package/package/components/select/SelectDropdown.svelte +98 -46
- package/package/components/select/SelectDropdown.svelte.d.ts +10 -0
- package/package/components/select/utils.svelte.js +2 -0
- package/package/components/settings/CreateToken.svelte +76 -49
- package/package/components/settings/WorkspaceUserSettings.svelte +20 -17
- package/package/components/sidebar/CriticalAlertTable.svelte +2 -1
- package/package/components/sidebar/Linkify.svelte +14 -0
- package/package/components/sidebar/Linkify.svelte.d.ts +5 -0
- package/package/components/sidebar/WorkspaceMenu.svelte +8 -3
- package/package/components/table/tableUtils.js +1 -1
- package/package/components/text_input/TextInput.svelte +30 -0
- package/package/components/text_input/TextInput.svelte.d.ts +17 -0
- package/package/components/triggers/TriggersEditor.svelte +11 -1
- package/package/components/triggers/triggers.svelte.d.ts +1 -1
- package/package/components/triggers/triggers.svelte.js +8 -4
- package/package/components/tutorials/FlowBuilderTutorialErrorHandler.svelte +2 -2
- package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +3 -0
- package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +49 -17
- package/package/components/tutorials/Tutorial.svelte +9 -0
- package/package/components/tutorials/Tutorial.svelte.d.ts +1 -0
- package/package/components/tutorials/app/AppTutorial.svelte +41 -57
- package/package/components/tutorials/app/BackgroundRunnablesTutorial.svelte +3 -5
- package/package/components/tutorials/app/ConnectionTutorial.svelte +2 -2
- package/package/components/tutorials/utils.js +2 -154
- package/package/components/vscode.js +16 -8
- package/package/components/workspaceSettings/AISettings.svelte +4 -3
- package/package/components/workspaceSettings/CreateWorkspace.svelte +2 -2
- package/package/components/workspaceSettings/DucklakeSettings.svelte +64 -7
- package/package/components/workspaceSettings/StorageSettings.svelte +24 -26
- package/package/editorUtils.d.ts +1 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +82 -1
- package/package/gen/schemas.gen.js +82 -1
- package/package/gen/services.gen.d.ts +175 -1
- package/package/gen/services.gen.js +345 -2
- package/package/gen/types.gen.d.ts +1324 -549
- package/package/script_helpers.js +5 -5
- package/package/services/JobManager.js +4 -2
- package/package/stores.d.ts +4 -13
- package/package/stores.js +5 -68
- package/package/toast.js +2 -1
- package/package/utils.d.ts +1 -0
- package/package/utils.js +3 -0
- package/package.json +3 -3
- /package/package/components/flows/{flowStore.js → flowStore.svelte.js} +0 -0
|
@@ -29,7 +29,6 @@ let selectedTab = $state('inputs');
|
|
|
29
29
|
let args = $state({});
|
|
30
30
|
function getSchema(runnable) {
|
|
31
31
|
if (runnable?.type == 'runnableByPath') {
|
|
32
|
-
console.log('runnable.schema', runnable.schema);
|
|
33
32
|
return runnable.schema;
|
|
34
33
|
}
|
|
35
34
|
else if (runnable?.type == 'runnableByName' && runnable.inlineScript) {
|
|
@@ -4,10 +4,7 @@ import { workspaceStore } from '../../stores';
|
|
|
4
4
|
import RawAppInlineScriptPanelList from './RawAppInlineScriptPanelList.svelte';
|
|
5
5
|
import RawAppInlineScripRunnable from './RawAppInlineScriptRunnable.svelte';
|
|
6
6
|
import { createScriptFromInlineScript } from '../apps/editor/inlineScriptsPanel/utils';
|
|
7
|
-
|
|
8
|
-
export let selectedRunnable;
|
|
9
|
-
export let appPath;
|
|
10
|
-
export let width = undefined;
|
|
7
|
+
let { runnables, selectedRunnable = $bindable(), appPath, width = undefined } = $props();
|
|
11
8
|
</script>
|
|
12
9
|
|
|
13
10
|
<Splitpanes
|
|
@@ -22,7 +19,7 @@ export let width = undefined;
|
|
|
22
19
|
<div class="text-sm text-secondary text-center py-8 px-2">
|
|
23
20
|
Select a runnable on the left panel
|
|
24
21
|
</div>
|
|
25
|
-
{:else if
|
|
22
|
+
{:else if runnables?.[selectedRunnable]}
|
|
26
23
|
{#key selectedRunnable}
|
|
27
24
|
<RawAppInlineScripRunnable
|
|
28
25
|
{appPath}
|
|
@@ -35,16 +32,13 @@ export let width = undefined;
|
|
|
35
32
|
)
|
|
36
33
|
}}
|
|
37
34
|
on:delete={() => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
selectedRunnable = undefined
|
|
43
|
-
return { ...runnables }
|
|
44
|
-
})
|
|
35
|
+
if (selectedRunnable) {
|
|
36
|
+
delete runnables[selectedRunnable]
|
|
37
|
+
}
|
|
38
|
+
selectedRunnable = undefined
|
|
45
39
|
}}
|
|
46
40
|
id={selectedRunnable}
|
|
47
|
-
bind:runnable={
|
|
41
|
+
bind:runnable={runnables[selectedRunnable]}
|
|
48
42
|
/>{/key}
|
|
49
43
|
{:else}
|
|
50
44
|
<div class="text-sm text-tertiary text-center py-8 px-2">
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import type { Writable } from 'svelte/store';
|
|
2
1
|
import type { Runnable } from '../apps/inputType';
|
|
2
|
+
interface Props {
|
|
3
|
+
runnables: Record<string, Runnable>;
|
|
4
|
+
selectedRunnable: string | undefined;
|
|
5
|
+
appPath: string;
|
|
6
|
+
width?: number | undefined;
|
|
7
|
+
}
|
|
3
8
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
4
9
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
5
10
|
$$bindings?: Bindings;
|
|
@@ -13,15 +18,10 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
13
18
|
};
|
|
14
19
|
z_$$bindings?: Bindings;
|
|
15
20
|
}
|
|
16
|
-
declare const RawAppInlineScriptsPanel: $$__sveltets_2_IsomorphicComponent<{
|
|
17
|
-
runnables: Writable<Record<string, Runnable>>;
|
|
18
|
-
selectedRunnable: string | undefined;
|
|
19
|
-
appPath: string;
|
|
20
|
-
width?: number | undefined;
|
|
21
|
-
}, {
|
|
21
|
+
declare const RawAppInlineScriptsPanel: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
22
22
|
hidePanel: CustomEvent<any>;
|
|
23
23
|
} & {
|
|
24
24
|
[evt: string]: CustomEvent<any>;
|
|
25
|
-
}, {}, {},
|
|
25
|
+
}, {}, {}, "selectedRunnable">;
|
|
26
26
|
type RawAppInlineScriptsPanel = InstanceType<typeof RawAppInlineScriptsPanel>;
|
|
27
27
|
export default RawAppInlineScriptsPanel;
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
<script lang="ts">import {} from '../../stores';
|
|
2
2
|
import RawAppBackgroundRunner from './RawAppBackgroundRunner.svelte';
|
|
3
3
|
import { htmlContent } from './utils';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export let version;
|
|
7
|
-
export let path;
|
|
8
|
-
export let runnables;
|
|
9
|
-
let iframe;
|
|
4
|
+
let { workspace, user, secret, path, runnables } = $props();
|
|
5
|
+
let iframe = $state();
|
|
10
6
|
</script>
|
|
11
7
|
|
|
12
8
|
<RawAppBackgroundRunner {workspace} editor={false} {iframe} {runnables} {path} />
|
|
@@ -14,6 +10,6 @@ let iframe;
|
|
|
14
10
|
<iframe
|
|
15
11
|
bind:this={iframe}
|
|
16
12
|
title="raw-app"
|
|
17
|
-
srcDoc={htmlContent(workspace,
|
|
13
|
+
srcDoc={htmlContent(workspace, secret, { ctx: user, workspace })}
|
|
18
14
|
class="w-full h-full min-h-screen bg-white border-none"
|
|
19
15
|
></iframe>
|
|
@@ -1,26 +1,12 @@
|
|
|
1
1
|
import { type UserExt } from '../../stores';
|
|
2
2
|
import type { HiddenRunnable } from '../apps/types';
|
|
3
|
-
interface
|
|
4
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
5
|
-
$$bindings?: Bindings;
|
|
6
|
-
} & Exports;
|
|
7
|
-
(internal: unknown, props: Props & {
|
|
8
|
-
$$events?: Events;
|
|
9
|
-
$$slots?: Slots;
|
|
10
|
-
}): Exports & {
|
|
11
|
-
$set?: any;
|
|
12
|
-
$on?: any;
|
|
13
|
-
};
|
|
14
|
-
z_$$bindings?: Bindings;
|
|
15
|
-
}
|
|
16
|
-
declare const RawAppPreview: $$__sveltets_2_IsomorphicComponent<{
|
|
3
|
+
interface Props {
|
|
17
4
|
workspace: string;
|
|
18
5
|
user: UserExt | undefined;
|
|
19
|
-
|
|
6
|
+
secret: string | undefined;
|
|
20
7
|
path: string;
|
|
21
8
|
runnables: Record<string, HiddenRunnable>;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
type RawAppPreview = InstanceType<typeof RawAppPreview>;
|
|
9
|
+
}
|
|
10
|
+
declare const RawAppPreview: import("svelte").Component<Props, {}, "">;
|
|
11
|
+
type RawAppPreview = ReturnType<typeof RawAppPreview>;
|
|
26
12
|
export default RawAppPreview;
|
|
@@ -2,5 +2,5 @@ import type { HiddenRunnable } from '../apps/types';
|
|
|
2
2
|
export type RawApp = {
|
|
3
3
|
files: string[];
|
|
4
4
|
};
|
|
5
|
-
export declare function htmlContent(workspace: string,
|
|
5
|
+
export declare function htmlContent(workspace: string, secret: string | undefined, ctx: any): string;
|
|
6
6
|
export declare function genWmillTs(runnables: Record<string, HiddenRunnable>): string;
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { schemaToTsType } from '../../schema';
|
|
2
2
|
import { capitalize } from '../../utils';
|
|
3
|
-
export function htmlContent(workspace,
|
|
3
|
+
export function htmlContent(workspace, secret, ctx) {
|
|
4
4
|
return `
|
|
5
5
|
<!DOCTYPE html>
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
8
|
<meta charset="UTF-8" />
|
|
9
9
|
<title>App Preview</title>
|
|
10
|
-
<link rel="stylesheet" href="/api/w/${workspace}/apps/get_data/v/${
|
|
10
|
+
<link rel="stylesheet" href="/api/w/${workspace}/apps/get_data/v/${secret}.css" />
|
|
11
11
|
<script>
|
|
12
12
|
window.ctx = ${ctx ? JSON.stringify(ctx) : 'undefined'}
|
|
13
13
|
</script>
|
|
14
14
|
</head>
|
|
15
15
|
<body>
|
|
16
16
|
<div id="root"></div>
|
|
17
|
-
<script src="/api/w/${workspace}/apps/get_data/v/${
|
|
17
|
+
<script src="/api/w/${workspace}/apps/get_data/v/${secret}.js"></script>
|
|
18
18
|
</body>
|
|
19
19
|
</html>
|
|
20
20
|
`;
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
let { label, children, tooltip, for: forAttr = '', noLabel = false } = $props();
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
|
-
<div class="flex flex-col items-start w-fit">
|
|
5
|
+
<div class="flex flex-col items-start w-fit gap-0.5">
|
|
6
6
|
<div class="text-xs truncate">
|
|
7
7
|
{#if forAttr}
|
|
8
|
-
<label for={forAttr} class:text-transparent={noLabel}>{label}</label>
|
|
8
|
+
<label for={forAttr} class="text-hint" class:text-transparent={noLabel}>{label}</label>
|
|
9
9
|
{:else}
|
|
10
10
|
<span class:text-transparent={noLabel}>{label}</span>
|
|
11
11
|
{/if}
|
|
@@ -121,9 +121,10 @@ function resetFilter() {
|
|
|
121
121
|
</RunOption>
|
|
122
122
|
{/if}
|
|
123
123
|
<!-- Filter by -->
|
|
124
|
-
<div class="flex flex-row gap-
|
|
124
|
+
<div class="flex flex-row gap-4">
|
|
125
125
|
<RunOption label="Filter by" for="filter-by">
|
|
126
126
|
<ToggleButtonGroup
|
|
127
|
+
class="h-9"
|
|
127
128
|
bind:selected={filterBy}
|
|
128
129
|
on:selected={(e) => {
|
|
129
130
|
if (e.detail != filterBy) {
|
|
@@ -164,7 +165,7 @@ function resetFilter() {
|
|
|
164
165
|
bind:value={() => user ?? undefined, (v) => (user = v ?? null)}
|
|
165
166
|
clearable
|
|
166
167
|
onClear={() => ((user = null), dispatch('reset'))}
|
|
167
|
-
inputClass="!h-
|
|
168
|
+
inputClass="!max-h-9 min-w-36 border-none"
|
|
168
169
|
onCreateItem={(item) => (usernames.push(item), (user = item))}
|
|
169
170
|
createText="Press enter to use this value"
|
|
170
171
|
id="user"
|
|
@@ -179,7 +180,7 @@ function resetFilter() {
|
|
|
179
180
|
bind:value={() => folder ?? undefined, (v) => (folder = v ?? null)}
|
|
180
181
|
clearable
|
|
181
182
|
onClear={() => ((folder = null), dispatch('reset'))}
|
|
182
|
-
inputClass="!h-
|
|
183
|
+
inputClass="!max-h-9 min-w-36 border-none"
|
|
183
184
|
id="folder"
|
|
184
185
|
/>
|
|
185
186
|
{/key}
|
|
@@ -192,7 +193,7 @@ function resetFilter() {
|
|
|
192
193
|
bind:value={() => path ?? undefined, (v) => (path = v ?? null)}
|
|
193
194
|
clearable
|
|
194
195
|
onClear={() => ((path = null), dispatch('reset'))}
|
|
195
|
-
inputClass="!h-
|
|
196
|
+
inputClass="!max-h-9 min-w-36 border-none"
|
|
196
197
|
onCreateItem={(item) => (paths.push(item), (path = item))}
|
|
197
198
|
createText="Press enter to use this value"
|
|
198
199
|
id="path"
|
|
@@ -417,7 +418,7 @@ function resetFilter() {
|
|
|
417
418
|
<RunOption label="Kind" for="kind">
|
|
418
419
|
{#if small && !calendarSmall}
|
|
419
420
|
<DropdownSelect
|
|
420
|
-
btnClasses="min-w-24"
|
|
421
|
+
btnClasses="min-w-24 h-9 bg-surface-secondary font-normal"
|
|
421
422
|
items={[
|
|
422
423
|
{
|
|
423
424
|
displayName: 'All',
|
|
@@ -462,7 +463,7 @@ function resetFilter() {
|
|
|
462
463
|
selected={jobKindsCat}
|
|
463
464
|
/>
|
|
464
465
|
{:else}
|
|
465
|
-
<ToggleButtonGroup bind:selected={jobKindsCat}>
|
|
466
|
+
<ToggleButtonGroup bind:selected={jobKindsCat} class="h-9">
|
|
466
467
|
{#snippet children({ item })}
|
|
467
468
|
<ToggleButton value="all" label="All" {item} />
|
|
468
469
|
<ToggleButton
|
|
@@ -509,6 +510,7 @@ function resetFilter() {
|
|
|
509
510
|
<!-- Status -->
|
|
510
511
|
<RunOption label="Status" for="status">
|
|
511
512
|
<ToggleButtonGroup
|
|
513
|
+
class="h-9"
|
|
512
514
|
selected={success ?? 'all'}
|
|
513
515
|
on:selected={({ detail }) => {
|
|
514
516
|
success = detail === 'all' ? undefined : detail
|
|
@@ -523,7 +525,7 @@ function resetFilter() {
|
|
|
523
525
|
tooltip="Running"
|
|
524
526
|
class="whitespace-nowrap"
|
|
525
527
|
icon={CirclePlay}
|
|
526
|
-
|
|
528
|
+
selectedColor="yellow"
|
|
527
529
|
{item}
|
|
528
530
|
/>
|
|
529
531
|
<ToggleButton
|
|
@@ -531,7 +533,7 @@ function resetFilter() {
|
|
|
531
533
|
tooltip="Success"
|
|
532
534
|
class="whitespace-nowrap"
|
|
533
535
|
icon={CircleCheck}
|
|
534
|
-
|
|
536
|
+
selectedColor="green"
|
|
535
537
|
{item}
|
|
536
538
|
/>
|
|
537
539
|
<ToggleButton
|
|
@@ -539,7 +541,7 @@ function resetFilter() {
|
|
|
539
541
|
tooltip="Failure"
|
|
540
542
|
class="whitespace-nowrap"
|
|
541
543
|
icon={CircleAlert}
|
|
542
|
-
|
|
544
|
+
selectedColor="red"
|
|
543
545
|
{item}
|
|
544
546
|
/>
|
|
545
547
|
{#if success == 'waiting'}
|
|
@@ -548,7 +550,7 @@ function resetFilter() {
|
|
|
548
550
|
tooltip="Waiting"
|
|
549
551
|
class="whitespace-nowrap"
|
|
550
552
|
icon={Hourglass}
|
|
551
|
-
|
|
553
|
+
selectedColor="blue"
|
|
552
554
|
{item}
|
|
553
555
|
/>
|
|
554
556
|
{:else if success == 'suspended'}
|
|
@@ -557,7 +559,7 @@ function resetFilter() {
|
|
|
557
559
|
tooltip="Suspended"
|
|
558
560
|
class="whitespace-nowrap"
|
|
559
561
|
icon={Hourglass}
|
|
560
|
-
|
|
562
|
+
selectedColor="purple"
|
|
561
563
|
{item}
|
|
562
564
|
/>
|
|
563
565
|
{/if}
|
|
@@ -576,11 +578,12 @@ function resetFilter() {
|
|
|
576
578
|
{#snippet trigger()}
|
|
577
579
|
<Button
|
|
578
580
|
color="light"
|
|
579
|
-
variant="
|
|
581
|
+
variant="contained"
|
|
580
582
|
size="xs"
|
|
581
583
|
nonCaptureEvent={true}
|
|
582
584
|
startIcon={{ icon: ListFilterPlus }}
|
|
583
585
|
iconOnly
|
|
586
|
+
btnClasses="bg-surface-secondary py-[8.5px]"
|
|
584
587
|
></Button>
|
|
585
588
|
{/snippet}
|
|
586
589
|
|
|
@@ -42,6 +42,6 @@ declare const RunsFilter: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
42
42
|
successChange: CustomEvent<any>;
|
|
43
43
|
} & {
|
|
44
44
|
[evt: string]: CustomEvent<any>;
|
|
45
|
-
}, {}, {}, "path" | "
|
|
45
|
+
}, {}, {}, "path" | "user" | "folder" | "tag" | "success" | "worker" | "label" | "isSkipped" | "argFilter" | "resultFilter" | "schedulePath" | "jobKindsCat" | "concurrencyKey" | "argError" | "resultError" | "allWorkspaces" | "allowWildcards" | "filterBy">;
|
|
46
46
|
type RunsFilter = InstanceType<typeof RunsFilter>;
|
|
47
47
|
export default RunsFilter;
|
|
@@ -191,24 +191,25 @@ const rnd = generateRandomString();
|
|
|
191
191
|
{/snippet}
|
|
192
192
|
</Drawer>
|
|
193
193
|
{:else}
|
|
194
|
-
<div class="mt-2"
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
194
|
+
<div class="mt-2 bg-surface-secondary rounded-md border py-2.5">
|
|
195
|
+
<SimpleEditor
|
|
196
|
+
bind:this={editor}
|
|
197
|
+
small
|
|
198
|
+
fixedOverflowWidgets={false}
|
|
199
|
+
on:change={() => {
|
|
200
|
+
try {
|
|
201
|
+
schema = JSON.parse(schemaString)
|
|
202
|
+
error = ''
|
|
203
|
+
} catch (err) {
|
|
204
|
+
error = err.message
|
|
205
|
+
}
|
|
206
|
+
}}
|
|
207
|
+
bind:code={schemaString}
|
|
208
|
+
lang="json"
|
|
209
|
+
autoHeight
|
|
210
|
+
automaticLayout
|
|
211
|
+
/>
|
|
212
|
+
</div>
|
|
212
213
|
{#if !emptyString(error)}
|
|
213
214
|
<div class="text-red-400 text-xs">{error}</div>
|
|
214
215
|
{:else}
|
|
@@ -15,6 +15,11 @@ import ResourcePicker from '../ResourcePicker.svelte';
|
|
|
15
15
|
import { DynamicInput } from '../../utils';
|
|
16
16
|
let { format = $bindable(undefined), contentEncoding = undefined, type = undefined, oneOf = $bindable(undefined), required = false, pattern = undefined, password = undefined, variableEditor = undefined, itemPicker = undefined, nullable = $bindable(undefined), disabled = $bindable(undefined), defaultValue = $bindable(undefined), propsNames = [], showExpr = $bindable(undefined), extra = {}, customErrorMessage = undefined, itemsType = undefined, properties = $bindable(undefined), order = $bindable(undefined), requiredProperty = $bindable(undefined), displayWebhookWarning = true, onDrawerClose = undefined } = $props();
|
|
17
17
|
let oneOfSelected = $state(oneOf?.[0]?.title);
|
|
18
|
+
$effect(() => {
|
|
19
|
+
if (oneOf?.length && !oneOfSelected) {
|
|
20
|
+
oneOfSelected = oneOf[0].title;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
18
23
|
const dispatch = createEventDispatcher();
|
|
19
24
|
function getResourceTypesFromFormat(format) {
|
|
20
25
|
if (format?.startsWith('resource-')) {
|
|
@@ -372,9 +377,10 @@ let customObjectSelected = $state(format?.startsWith('jsonschema-') ? 'json-sche
|
|
|
372
377
|
showExpr = showExpr ? undefined : 'true //fields.foo == 42'
|
|
373
378
|
}}
|
|
374
379
|
/>
|
|
375
|
-
{#if showExpr
|
|
376
|
-
<div class="
|
|
380
|
+
{#if showExpr}
|
|
381
|
+
<div class="mt-2 bg-surface-secondary rounded-md pl-4">
|
|
377
382
|
<SimpleEditor
|
|
383
|
+
yPadding={8}
|
|
378
384
|
extraLib={`declare const fields: Record<${propsNames
|
|
379
385
|
?.filter((x) => x != name)
|
|
380
386
|
.map((x) => `"${x}"`)
|
|
@@ -383,6 +389,7 @@ let customObjectSelected = $state(format?.startsWith('jsonschema-') ? 'json-sche
|
|
|
383
389
|
bind:code={showExpr}
|
|
384
390
|
shouldBindKey={false}
|
|
385
391
|
fixedOverflowWidgets={false}
|
|
392
|
+
hideLineNumbers
|
|
386
393
|
autoHeight
|
|
387
394
|
/>
|
|
388
395
|
</div>
|
|
@@ -47,6 +47,6 @@ declare const FlowPropertyEditor: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
47
47
|
requiredChange: CustomEvent<any>;
|
|
48
48
|
} & {
|
|
49
49
|
[evt: string]: CustomEvent<any>;
|
|
50
|
-
}, {}, {}, "disabled" | "properties" | "
|
|
50
|
+
}, {}, {}, "disabled" | "properties" | "oneOf" | "format" | "defaultValue" | "order" | "nullable" | "showExpr" | "requiredProperty">;
|
|
51
51
|
type FlowPropertyEditor = InstanceType<typeof FlowPropertyEditor>;
|
|
52
52
|
export default FlowPropertyEditor;
|
|
@@ -12,6 +12,7 @@ import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelt
|
|
|
12
12
|
import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
|
|
13
13
|
import { createEventDispatcher, onMount, untrack } from 'svelte';
|
|
14
14
|
import { createDispatcherIfMounted } from '../../createDispatcherIfMounted';
|
|
15
|
+
import TextInput, { inputBaseClass, inputBorderClass } from '../text_input/TextInput.svelte';
|
|
15
16
|
let { description = $bindable(undefined), format = $bindable(undefined), contentEncoding = $bindable(undefined), type = undefined, oneOf = $bindable(), pattern = $bindable(undefined), enum_ = $bindable(undefined), extra = $bindable({}), minW = true, customErrorMessage = $bindable(undefined), title = $bindable(undefined), placeholder = $bindable(undefined), properties = $bindable(), isFlowInput = false, isAppInput = false, order = $bindable(), itemsType = $bindable(undefined), typeeditor, children } = $props();
|
|
16
17
|
$effect.pre(() => {
|
|
17
18
|
if (description == undefined) {
|
|
@@ -112,6 +113,7 @@ $effect(() => {
|
|
|
112
113
|
onkeydown={onKeyDown}
|
|
113
114
|
onchange={() => dispatch('change')}
|
|
114
115
|
placeholder="Field description"
|
|
116
|
+
class={twMerge(inputBorderClass(), inputBaseClass, 'w-full')}
|
|
115
117
|
></textarea>
|
|
116
118
|
</Label>
|
|
117
119
|
|
|
@@ -119,30 +121,31 @@ $effect(() => {
|
|
|
119
121
|
{#snippet header()}
|
|
120
122
|
<Tooltip light>Will be displayed in the UI instead of the field name.</Tooltip>
|
|
121
123
|
{/snippet}
|
|
122
|
-
<
|
|
124
|
+
<TextInput
|
|
123
125
|
bind:value={title}
|
|
124
|
-
|
|
125
|
-
onkeydown={onKeyDown}
|
|
126
|
-
placeholder="Field title"
|
|
126
|
+
inputProps={{ placeholder: 'Field title', onkeydown, onchange: () => dispatch('change') }}
|
|
127
127
|
/>
|
|
128
128
|
</Label>
|
|
129
129
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
130
|
+
{#if shouldDisplayPlaceholder(type, format, enum_, contentEncoding, pattern, extra)}
|
|
131
|
+
<Label label="Placeholder">
|
|
132
|
+
{#snippet header()}
|
|
133
|
+
<Tooltip light>
|
|
134
|
+
Will be displayed in the input field when the field is empty. If not set, the default
|
|
135
|
+
value will be used. The placeholder is disabled depending on the field type, format,
|
|
136
|
+
etc.
|
|
137
|
+
</Tooltip>
|
|
138
|
+
{/snippet}
|
|
137
139
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
140
|
+
<textarea
|
|
141
|
+
placeholder="Enter a placeholder"
|
|
142
|
+
rows="1"
|
|
143
|
+
bind:value={placeholder}
|
|
144
|
+
onchange={() => dispatch('change')}
|
|
145
|
+
class={twMerge(inputBorderClass(), inputBaseClass, 'w-full')}
|
|
146
|
+
></textarea>
|
|
147
|
+
</Label>
|
|
148
|
+
{/if}
|
|
146
149
|
|
|
147
150
|
{#if type == 'array'}
|
|
148
151
|
<ArrayTypeNarrowing
|
|
@@ -218,10 +221,3 @@ $effect(() => {
|
|
|
218
221
|
{@render children?.()}
|
|
219
222
|
</div>
|
|
220
223
|
</div>
|
|
221
|
-
|
|
222
|
-
<style>
|
|
223
|
-
input::-webkit-outer-spin-button,
|
|
224
|
-
input::-webkit-inner-spin-button {
|
|
225
|
-
-webkit-appearance: none !important;
|
|
226
|
-
margin: 0;
|
|
227
|
-
}</style>
|
|
@@ -4,7 +4,7 @@ import SchemaForm from '../SchemaForm.svelte';
|
|
|
4
4
|
import { GripVertical } from 'lucide-svelte';
|
|
5
5
|
import { deepEqual } from 'fast-equals';
|
|
6
6
|
import { generateRandomString } from '../../utils';
|
|
7
|
-
let { schema = $bindable(), args = $bindable(undefined), prettifyHeader = false, onlyMaskPassword = false, disablePortal = false, disabled = false, hiddenArgs = [], nestedParent = undefined, disableDnd = false, shouldDispatchChanges = false, helperScript = undefined, diff = {}, nestedClasses = '', isValid = $bindable(true), noVariablePicker = false, className = '', dndType = generateRandomString() } = $props();
|
|
7
|
+
let { schema = $bindable(), args = $bindable(undefined), prettifyHeader = false, onlyMaskPassword = false, disablePortal = false, disabled = false, hiddenArgs = [], nestedParent = undefined, disableDnd = false, shouldDispatchChanges = false, helperScript = undefined, diff = {}, nestedClasses = '', isValid = $bindable(true), noVariablePicker = false, className = '', dndType = generateRandomString(), lightHeaderFont } = $props();
|
|
8
8
|
$effect.pre(() => {
|
|
9
9
|
if (args == undefined) {
|
|
10
10
|
args = {};
|
|
@@ -83,10 +83,11 @@ $effect(() => {
|
|
|
83
83
|
{shouldDispatchChanges}
|
|
84
84
|
bind:isValid
|
|
85
85
|
{noVariablePicker}
|
|
86
|
+
{lightHeaderFont}
|
|
86
87
|
>
|
|
87
88
|
{#snippet actions()}
|
|
88
89
|
{#if !disableDnd}
|
|
89
|
-
<div class="w-4 h-8 cursor-move ml-2 handle" aria-label="drag-handle" use:dragHandle>
|
|
90
|
+
<div class="w-4 h-8 cursor-move ml-2 handle mt-[9px]" aria-label="drag-handle" use:dragHandle>
|
|
90
91
|
<GripVertical size={16} />
|
|
91
92
|
</div>
|
|
92
93
|
{/if}
|
|
@@ -22,6 +22,7 @@ interface Props {
|
|
|
22
22
|
helperScript?: DynamicInput.HelperScript;
|
|
23
23
|
className?: string;
|
|
24
24
|
dndType?: string;
|
|
25
|
+
lightHeaderFont?: boolean;
|
|
25
26
|
}
|
|
26
27
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
27
28
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -21,7 +21,7 @@ let dragPos = $state([0, 0]);
|
|
|
21
21
|
role="listitem"
|
|
22
22
|
class={twMerge(
|
|
23
23
|
allowClear ? 'pr-1' : 'pr-3',
|
|
24
|
-
'pl-3 min-h-6 bg-surface
|
|
24
|
+
'pl-3 min-h-6 border bg-surface rounded-full flex items-center gap-0.5',
|
|
25
25
|
currentlyDraggingIndex !== undefined ? 'hover:opacity-20' : ''
|
|
26
26
|
)}
|
|
27
27
|
style={currentlyDraggingIndex === index
|
|
@@ -45,7 +45,7 @@ let dragPos = $state([0, 0]);
|
|
|
45
45
|
<span class="text-sm select-none">{item.label || item.value}</span>
|
|
46
46
|
{#if allowClear}
|
|
47
47
|
<CloseButton
|
|
48
|
-
class="text-
|
|
48
|
+
class="text-hint bg-transparent"
|
|
49
49
|
small
|
|
50
50
|
on:close={(e) => (onRemove(item), e.stopPropagation())}
|
|
51
51
|
/>
|
|
@@ -6,6 +6,7 @@ import CloseButton from '../common/CloseButton.svelte';
|
|
|
6
6
|
import DraggableTags from './DraggableTags.svelte';
|
|
7
7
|
import { Search } from 'lucide-svelte';
|
|
8
8
|
import { twMerge } from 'tailwind-merge';
|
|
9
|
+
import TextInput, { inputBorderClass } from '../text_input/TextInput.svelte';
|
|
9
10
|
let { items, placeholder = 'Select items', value = $bindable(), class: className = '', style, listAutoWidth = true, disabled = false, disablePortal = false, createText, reorderable = true, noItemsMsg, selectedUlClass = '', placeholderClass = '', allowClear = true, hideMainClearBtn = false, onOpen, groupBy, sortBy, onCreateItem } = $props();
|
|
10
11
|
let filterText = $state('');
|
|
11
12
|
let open = $state(false);
|
|
@@ -44,7 +45,8 @@ function clearValue() {
|
|
|
44
45
|
<div
|
|
45
46
|
bind:this={wrapperEl}
|
|
46
47
|
class={twMerge(
|
|
47
|
-
'relative min-h-
|
|
48
|
+
'relative min-h-10 flex items-center w-full bg-surface-secondary !text-secondary rounded-md',
|
|
49
|
+
inputBorderClass({ forceFocus: open && !disabled }),
|
|
48
50
|
disabled ? 'pointer-events-none' : '',
|
|
49
51
|
open && !disabled ? 'open' : '',
|
|
50
52
|
disabled ? 'disabled' : '',
|
|
@@ -58,7 +60,9 @@ function clearValue() {
|
|
|
58
60
|
<!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
|
|
59
61
|
|
|
60
62
|
{#if value.length === 0}
|
|
61
|
-
<span
|
|
63
|
+
<span
|
|
64
|
+
class={twMerge('text-sm ml-4 h-full flex items-center flex-1 text-hint', placeholderClass)}
|
|
65
|
+
>
|
|
62
66
|
{placeholder}
|
|
63
67
|
</span>
|
|
64
68
|
{:else}
|
|
@@ -79,10 +83,10 @@ function clearValue() {
|
|
|
79
83
|
/>
|
|
80
84
|
</ul>
|
|
81
85
|
{/if}
|
|
82
|
-
{#if allowClear && !hideMainClearBtn}
|
|
86
|
+
{#if allowClear && !hideMainClearBtn && !!value?.length}
|
|
83
87
|
<CloseButton
|
|
84
88
|
noBg
|
|
85
|
-
class="mr-1 remove-all"
|
|
89
|
+
class="mr-1 remove-all bg-transparent text-hint"
|
|
86
90
|
small
|
|
87
91
|
on:close={(e) => (clearValue(), e.stopPropagation())}
|
|
88
92
|
/>
|
|
@@ -108,12 +112,14 @@ function clearValue() {
|
|
|
108
112
|
{#snippet header()}
|
|
109
113
|
{#if processedItems.length - value.length > 0 || onCreateItem}
|
|
110
114
|
<div class="mx-2 mb-1 mt-2 flex items-center relative">
|
|
111
|
-
<
|
|
115
|
+
<TextInput
|
|
112
116
|
bind:this={searchInputEl}
|
|
113
117
|
bind:value={filterText}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
118
|
+
inputProps={{
|
|
119
|
+
onblur: (e) => (e.preventDefault(), searchInputEl?.focus()),
|
|
120
|
+
placeholder: 'Search...'
|
|
121
|
+
}}
|
|
122
|
+
class="!pr-7 !bg-surface"
|
|
117
123
|
/>
|
|
118
124
|
<Search size={16} class="absolute right-2 text-tertiary" />
|
|
119
125
|
</div>
|
|
@@ -6,7 +6,8 @@ import { untrack } from 'svelte';
|
|
|
6
6
|
import { getLabel, processItems } from './utils.svelte';
|
|
7
7
|
import SelectDropdown from './SelectDropdown.svelte';
|
|
8
8
|
import { deepEqual } from 'fast-equals';
|
|
9
|
-
|
|
9
|
+
import { inputBaseClass, inputBorderClass } from '../text_input/TextInput.svelte';
|
|
10
|
+
let { items, placeholder = 'Please select', value = $bindable(), filterText = $bindable(''), class: className = '', clearable = false, listAutoWidth = true, disabled: _disabled = false, containerStyle = '', inputClass = '', disablePortal = false, loading = false, error = false, autofocus, RightIcon, createText, noItemsMsg, open = $bindable(false), id, itemLabelWrapperClasses, itemButtonWrapperClasses, groupBy, sortBy, onFocus, onBlur, onClear, onCreateItem, startSnippet, endSnippet, bottomSnippet } = $props();
|
|
10
11
|
let disabled = $derived(_disabled || (loading && !value));
|
|
11
12
|
let inputEl = $state();
|
|
12
13
|
let processedItems = $derived.by(() => {
|
|
@@ -54,7 +55,7 @@ function clearValue() {
|
|
|
54
55
|
</div>
|
|
55
56
|
{:else if clearable && !disabled && value}
|
|
56
57
|
<div class="absolute z-10 right-2 h-full flex items-center">
|
|
57
|
-
<CloseButton class="text-
|
|
58
|
+
<CloseButton class="bg-transparent text-hint" noBg small on:close={clearValue} />
|
|
58
59
|
</div>
|
|
59
60
|
{:else if RightIcon}
|
|
60
61
|
<div class="absolute z-10 right-2 h-full flex items-center">
|
|
@@ -72,10 +73,12 @@ function clearValue() {
|
|
|
72
73
|
: (valueEntry?.label ?? getLabel({ value }) ?? placeholder)}
|
|
73
74
|
style={containerStyle}
|
|
74
75
|
class={twMerge(
|
|
75
|
-
|
|
76
|
+
inputBaseClass,
|
|
77
|
+
inputBorderClass({ error, forceFocus: open }),
|
|
78
|
+
'w-full',
|
|
76
79
|
open ? '' : 'cursor-pointer',
|
|
77
|
-
!loading && value ? '!placeholder-
|
|
78
|
-
(clearable || RightIcon) && !disabled && value ? '
|
|
80
|
+
!loading && value && !disabled ? '!placeholder-secondary' : 'placeholder-hint',
|
|
81
|
+
(clearable || RightIcon) && !disabled && value ? 'pr-8' : '',
|
|
79
82
|
inputClass ?? ''
|
|
80
83
|
)}
|
|
81
84
|
autocomplete="off"
|
|
@@ -94,6 +97,10 @@ function clearValue() {
|
|
|
94
97
|
getInputRect={inputEl && (() => inputEl!.getBoundingClientRect())}
|
|
95
98
|
{listAutoWidth}
|
|
96
99
|
{noItemsMsg}
|
|
100
|
+
{itemLabelWrapperClasses}
|
|
101
|
+
{itemButtonWrapperClasses}
|
|
97
102
|
{startSnippet}
|
|
103
|
+
{endSnippet}
|
|
104
|
+
{bottomSnippet}
|
|
98
105
|
/>
|
|
99
106
|
</div>
|