windmill-components 1.291.4 → 1.305.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/autosize.d.ts +4 -0
- package/package/autosize.js +76 -0
- package/package/components/AppConnect.svelte +26 -7
- package/package/components/ArgInput.svelte +129 -103
- package/package/components/ContentSearch.svelte +8 -2
- package/package/components/ContextualVariableEditor.svelte +69 -0
- package/package/components/ContextualVariableEditor.svelte.d.ts +21 -0
- package/package/components/CronInput.svelte +3 -0
- package/package/components/DBSchemaExplorer.svelte +2 -2
- package/package/components/DarkModeObserver.svelte +2 -2
- package/package/components/DateTimeInput.svelte +9 -3
- package/package/components/DefaultScripts.svelte +1 -0
- package/package/components/DisplayResult.svelte +83 -41
- package/package/components/DisplayResult.svelte.d.ts +1 -0
- package/package/components/DurationMs.svelte +1 -10
- package/package/components/DurationMs.svelte.d.ts +0 -1
- package/package/components/Editor.svelte +40 -10
- package/package/components/ErrorOrRecoveryHandler.svelte +5 -2
- package/package/components/FlowBuilder.svelte +9 -5
- package/package/components/FlowBuilder.svelte.d.ts +1 -0
- package/package/components/FlowGraphViewerStep.svelte +5 -4
- package/package/components/FlowJobResult.svelte +36 -1
- package/package/components/FlowJobResult.svelte.d.ts +2 -1
- package/package/components/FlowLoopIterationPreview.svelte +18 -2
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +6 -0
- package/package/components/FlowStatusViewer.svelte +1 -1
- package/package/components/FlowStatusViewerInner.svelte +117 -44
- package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -0
- package/package/components/FlowStatusWaitingForEvents.svelte +97 -54
- package/package/components/GfmMarkdown.svelte +14 -0
- package/package/components/GfmMarkdown.svelte.d.ts +16 -0
- package/package/components/GroupEditor.svelte +1 -2
- package/package/components/HighlightCode.svelte +1 -1
- package/package/components/InputTransformForm.svelte +24 -2
- package/package/components/InstanceGroupEditor.svelte +1 -2
- package/package/components/InstanceSettings.svelte +4 -0
- package/package/components/JobArgs.svelte +5 -4
- package/package/components/JobArgs.svelte.d.ts +1 -0
- package/package/components/JobStatus.svelte +2 -8
- package/package/components/LightweightArgInput.svelte +3 -6
- package/package/components/LightweightArgInput.svelte.d.ts +0 -1
- package/package/components/LogId.svelte +3 -0
- package/package/components/LogId.svelte.d.ts +16 -0
- package/package/components/LogViewer.svelte +14 -5
- package/package/components/MapResult.svelte +151 -0
- package/package/components/MapResult.svelte.d.ts +27 -0
- package/package/components/MoveDrawer.svelte +2 -1
- package/package/components/ObjectStoreConfigSettings.svelte +169 -0
- package/package/components/ObjectStoreConfigSettings.svelte.d.ts +32 -0
- package/package/components/ParqetTableRenderer.svelte +3 -2
- package/package/components/ResourceEditor.svelte +33 -11
- package/package/components/RunChart.svelte +0 -1
- package/package/components/RunForm.svelte.d.ts +1 -1
- package/package/components/RunFormAdvancedPopup.svelte.d.ts +1 -1
- package/package/components/SavedInputs.svelte +1 -1
- package/package/components/ScriptBuilder.svelte +38 -8
- package/package/components/SimpleEditor.svelte +1 -3
- package/package/components/SimpleEditor.svelte.d.ts +0 -3
- package/package/components/SupabaseConnect.svelte +2 -2
- package/package/components/TableSimple.svelte +12 -1
- package/package/components/TableSimple.svelte.d.ts +1 -0
- package/package/components/TestConnection.svelte +29 -4
- package/package/components/TestConnection.svelte.d.ts +2 -0
- package/package/components/TestJobLoader.svelte +19 -2
- package/package/components/TestJobLoader.svelte.d.ts +3 -0
- package/package/components/UserSettings.svelte +5 -2
- package/package/components/UserSettings.svelte.d.ts +4 -0
- package/package/components/VariableEditor.svelte +2 -3
- package/package/components/WorkspaceGroup.svelte +10 -1
- package/package/components/apps/components/display/AppCustomComponent.svelte +3 -0
- package/package/components/apps/components/display/AppText.svelte +14 -19
- package/package/components/apps/components/display/PlotlyHtml.svelte +5 -1
- package/package/components/apps/components/display/PlotlyHtmlV2.svelte +4 -1
- package/package/components/apps/components/display/VegaLiteHtml.svelte +3 -3
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +18 -2
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +8 -5
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +2 -0
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -18
- package/package/components/apps/components/display/dbtable/queries/count.js +2 -2
- package/package/components/apps/components/display/dbtable/queries/select.js +8 -6
- package/package/components/apps/components/display/dbtable/utils.d.ts +10 -5
- package/package/components/apps/components/display/dbtable/utils.js +83 -29
- package/package/components/apps/components/display/table/AppAggridTable.svelte +1 -1
- package/package/components/apps/components/display/table/AppTable.svelte +5 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -0
- package/package/components/apps/components/helpers/eval.d.ts +1 -0
- package/package/components/apps/components/inputs/AppFileInput.svelte +8 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +1 -1
- package/package/components/apps/editor/GridEditorMenu.svelte +11 -1
- package/package/components/apps/editor/RunnableJobPanel.svelte +5 -30
- package/package/components/apps/editor/appUtils.js +2 -1
- package/package/components/apps/editor/component/components.d.ts +78 -78
- package/package/components/apps/editor/component/components.js +12 -12
- package/package/components/apps/editor/component/default-codes.js +5 -1
- package/package/components/apps/editor/componentsPanel/CssEval.svelte +0 -1
- package/package/components/apps/editor/componentsPanel/CssProperty.svelte +113 -109
- package/package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +14 -7
- package/package/components/apps/editor/componentsPanel/componentControlUtils.js +2 -0
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +2 -1
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +3 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +6 -0
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -0
- package/package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/GridPane.svelte +11 -15
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/StylePanel.svelte +40 -39
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +2 -0
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +0 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -6
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +6 -2
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +1 -6
- package/package/components/apps/svelte-select/lib/Select.svelte.d.ts +2 -2
- package/package/components/apps/types.d.ts +1 -0
- package/package/components/apps/utils.js +3 -3
- package/package/components/build_workers.js +2 -1
- package/package/components/common/FileProgressBar.svelte +1 -1
- package/package/components/common/clearableInput/ClearableInput.svelte.d.ts +1 -1
- package/package/components/common/fileInput/FileInput.svelte +4 -0
- package/package/components/common/fileInput/FileInput.svelte.d.ts +2 -0
- package/package/components/common/modal/Modal.svelte +2 -0
- package/package/components/copilot/MetadataGen.svelte +17 -12
- package/package/components/copilot/MetadataGen.svelte.d.ts +1 -1
- package/package/components/copilot/ScriptGen.svelte +61 -27
- package/package/components/copilot/lib.d.ts +4 -1
- package/package/components/copilot/lib.js +46 -31
- package/package/components/copilot/prompts/edit.yaml +1 -0
- package/package/components/copilot/prompts/editPrompt.js +1 -1
- package/package/components/copilot/prompts/fix.yaml +1 -0
- package/package/components/copilot/prompts/fixPrompt.js +1 -1
- package/package/components/copilot/prompts/gen.yaml +1 -0
- package/package/components/copilot/prompts/genPrompt.js +1 -1
- package/package/components/details/WebhooksPanel.svelte +10 -3
- package/package/components/flows/content/FlowInputs.svelte +35 -36
- package/package/components/flows/content/FlowLoop.svelte +0 -1
- package/package/components/flows/content/FlowModuleComponent.svelte +18 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +7 -0
- package/package/components/flows/content/FlowModuleWrapper.svelte +4 -1
- package/package/components/flows/content/FlowSettings.svelte +32 -4
- package/package/components/flows/content/FlowWhileLoop.svelte +137 -0
- package/package/components/flows/content/FlowWhileLoop.svelte.d.ts +19 -0
- package/package/components/flows/content/SuspendDrawer.svelte +4 -4
- package/package/components/flows/dfs.js +1 -1
- package/package/components/flows/flowExplorer.js +1 -1
- package/package/components/flows/flowStateUtils.d.ts +1 -0
- package/package/components/flows/flowStateUtils.js +12 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -2
- package/package/components/flows/map/InsertModuleButton.svelte +12 -0
- package/package/components/flows/map/MapItem.svelte +5 -5
- package/package/components/flows/map/MapItem.svelte.d.ts +1 -1
- package/package/components/flows/types.d.ts +1 -0
- package/package/components/flows/utils.d.ts +1 -0
- package/package/components/flows/utils.js +3 -0
- package/package/components/graph/FlowGraph.svelte +1 -1
- package/package/components/graph/model.d.ts +5 -2
- package/package/components/graph/svelvet/container/views/GraphView.svelte +2 -0
- package/package/components/home/Item.svelte +7 -2
- package/package/components/home/TreeView.svelte +4 -2
- package/package/components/home/TreeViewRoot.svelte +1 -1
- package/package/components/instanceSettings.d.ts +1 -1
- package/package/components/instanceSettings.js +12 -4
- package/package/components/jobs/JobPreview.svelte +1 -4
- package/package/components/propertyPicker/ObjectViewer.svelte +3 -0
- package/package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
- package/package/components/runs/JobLoader.svelte +3 -2
- package/package/components/runs/JobPreview.svelte +13 -7
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +6 -8
- package/package/components/settings/ChangeWorkspaceId.svelte +98 -0
- package/package/components/settings/ChangeWorkspaceId.svelte.d.ts +16 -0
- package/package/components/settings/ChangeWorkspaceName.svelte +71 -0
- package/package/components/settings/ChangeWorkspaceName.svelte.d.ts +16 -0
- package/package/components/settings/PremiumInfo.svelte +2 -1
- package/package/components/sidebar/OperatorMenu.svelte +3 -2
- package/package/components/sidebar/UserMenu.svelte +13 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +30 -1
- package/package/components/sidebar/changelogs.js +51 -1
- package/package/components/table/AutoDataTable.svelte +62 -41
- package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +2 -2
- package/package/es6.d.ts.txt +1 -12395
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/index.d.ts +2 -0
- package/package/gen/models/CacheTtl.d.ts +4 -0
- package/package/gen/models/CacheTtl.js +5 -0
- package/package/gen/models/ContextualVariable.d.ts +1 -0
- package/package/gen/models/CreateWorkspace.d.ts +1 -1
- package/package/gen/models/FlowMetadata.d.ts +1 -0
- package/package/gen/models/FlowModule.d.ts +2 -0
- package/package/gen/models/FlowModuleValue.d.ts +2 -1
- package/package/gen/models/FlowStatus.d.ts +1 -0
- package/package/gen/models/FlowValue.d.ts +1 -0
- package/package/gen/models/GitRepositorySettings.d.ts +2 -1
- package/package/gen/models/GlobalUserInfo.d.ts +1 -0
- package/package/gen/models/NewScript.d.ts +1 -0
- package/package/gen/models/OpenFlowWPath.d.ts +1 -0
- package/package/gen/models/Script.d.ts +1 -0
- package/package/gen/models/WhileloopFlow.d.ts +8 -0
- package/package/gen/models/WhileloopFlow.js +5 -0
- package/package/gen/models/WorkspaceGitSyncSettings.d.ts +1 -1
- package/package/gen/services/JobService.d.ts +74 -8
- package/package/gen/services/JobService.js +55 -8
- package/package/gen/services/ScheduleService.d.ts +5 -1
- package/package/gen/services/ScheduleService.js +2 -1
- package/package/gen/services/SettingService.d.ts +11 -0
- package/package/gen/services/SettingService.js +13 -0
- package/package/gen/services/UserService.d.ts +29 -1
- package/package/gen/services/UserService.js +30 -0
- package/package/gen/services/WorkspaceService.d.ts +57 -2
- package/package/gen/services/WorkspaceService.js +76 -0
- package/package/hub.d.ts +3 -3
- package/package/hub.js +6 -6
- package/package/infer.d.ts +1 -20
- package/package/infer.js +1 -95
- package/package/inferArgSig.d.ts +20 -0
- package/package/inferArgSig.js +95 -0
- package/package/script_helpers.d.ts +3 -3
- package/package/script_helpers.js +47 -7
- package/package/scripts.d.ts +2 -2
- package/package/scripts.js +4 -4
- package/package/stores.d.ts +4 -0
- package/package/stores.js +2 -0
- package/package/utils.js +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export const action = (node) => {
|
|
2
|
+
/* Constants */
|
|
3
|
+
const update = new Event('update');
|
|
4
|
+
/* Functions */
|
|
5
|
+
const init = () => {
|
|
6
|
+
addStyles();
|
|
7
|
+
observeElement();
|
|
8
|
+
addEventListeners();
|
|
9
|
+
setInitialHeight();
|
|
10
|
+
};
|
|
11
|
+
const dispatchUpdateEvent = () => {
|
|
12
|
+
node.dispatchEvent(update);
|
|
13
|
+
};
|
|
14
|
+
const setInitialHeight = () => {
|
|
15
|
+
let height = 0;
|
|
16
|
+
if (node.value) {
|
|
17
|
+
height = node.scrollHeight;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
if (node.placeholder) {
|
|
21
|
+
node.value = node.placeholder;
|
|
22
|
+
height = node.scrollHeight;
|
|
23
|
+
node.value = '';
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
node.value = '|';
|
|
27
|
+
node.style.height = '0px';
|
|
28
|
+
height = node.scrollHeight;
|
|
29
|
+
node.value = '';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
node.style.height = height + 'px';
|
|
33
|
+
};
|
|
34
|
+
const setHeight = () => {
|
|
35
|
+
node.style.height = '0px';
|
|
36
|
+
node.style.height = Math.max(node.scrollHeight, 40) + 5 + 'px';
|
|
37
|
+
};
|
|
38
|
+
const addStyles = () => {
|
|
39
|
+
node.style.boxSizing = 'border-box';
|
|
40
|
+
};
|
|
41
|
+
const observeElement = () => {
|
|
42
|
+
let elementPrototype = Object.getPrototypeOf(node);
|
|
43
|
+
let descriptor = Object.getOwnPropertyDescriptor(elementPrototype, 'value');
|
|
44
|
+
Object.defineProperty(node, 'value', {
|
|
45
|
+
get: function () {
|
|
46
|
+
return descriptor?.get?.apply(this, arguments);
|
|
47
|
+
},
|
|
48
|
+
set: function () {
|
|
49
|
+
descriptor?.set?.apply(this, arguments);
|
|
50
|
+
dispatchUpdateEvent();
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
const addEventListeners = () => {
|
|
55
|
+
node.addEventListener('input', (e) => {
|
|
56
|
+
dispatchUpdateEvent();
|
|
57
|
+
});
|
|
58
|
+
node.addEventListener('update', setHeight);
|
|
59
|
+
};
|
|
60
|
+
const removeEventListeners = () => {
|
|
61
|
+
node.removeEventListener('input', dispatchUpdateEvent);
|
|
62
|
+
node.removeEventListener('update', setHeight);
|
|
63
|
+
};
|
|
64
|
+
if (node.tagName.toLowerCase() !== 'textarea') {
|
|
65
|
+
throw new Error('svelte-textarea-auto-height can only be used on textarea elements.');
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
init();
|
|
69
|
+
return {
|
|
70
|
+
destroy() {
|
|
71
|
+
removeEventListeners();
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
export default action;
|
|
@@ -61,12 +61,16 @@ import { Button, Drawer, Skeleton } from './common';
|
|
|
61
61
|
import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
62
62
|
import ApiConnectForm from './ApiConnectForm.svelte';
|
|
63
63
|
import SearchItems from './SearchItems.svelte';
|
|
64
|
-
import autosize from 'svelte-autosize';
|
|
65
64
|
import WhitelistIp from './WhitelistIp.svelte';
|
|
66
65
|
import { sendUserToast } from '../toast';
|
|
67
66
|
import OauthScopes from './OauthScopes.svelte';
|
|
68
67
|
import DarkModeObserver from './DarkModeObserver.svelte';
|
|
69
68
|
import Markdown from 'svelte-exmarkdown';
|
|
69
|
+
import autosize from '../autosize';
|
|
70
|
+
import Required from './Required.svelte';
|
|
71
|
+
import Toggle from './Toggle.svelte';
|
|
72
|
+
import { Pen } from 'lucide-svelte';
|
|
73
|
+
import GfmMarkdown from './GfmMarkdown.svelte';
|
|
70
74
|
export let newPageOAuth = false;
|
|
71
75
|
const nativeLanguagesCategory = [
|
|
72
76
|
'postgresql',
|
|
@@ -83,6 +87,7 @@ let valueToken = undefined;
|
|
|
83
87
|
let connects = undefined;
|
|
84
88
|
let connectsManual = undefined;
|
|
85
89
|
let args = {};
|
|
90
|
+
let renderDescription = true;
|
|
86
91
|
$: linkedSecretCandidates = apiTokenApps[resourceType]?.linkedSecret
|
|
87
92
|
? [apiTokenApps[resourceType]?.linkedSecret]
|
|
88
93
|
: args != undefined
|
|
@@ -468,7 +473,7 @@ let darkMode = false;
|
|
|
468
473
|
</div>
|
|
469
474
|
{/if}
|
|
470
475
|
{:else if !emptyString(resourceTypeInfo?.description)}
|
|
471
|
-
<
|
|
476
|
+
<h4 class="mt-8 mb-2">{resourceTypeInfo?.name} description</h4>
|
|
472
477
|
<div class="text-sm">
|
|
473
478
|
<Markdown md={urlize(resourceTypeInfo?.description ?? '', 'md')} />
|
|
474
479
|
</div>
|
|
@@ -477,8 +482,25 @@ let darkMode = false;
|
|
|
477
482
|
<WhitelistIp />
|
|
478
483
|
{/if}
|
|
479
484
|
|
|
480
|
-
<
|
|
481
|
-
|
|
485
|
+
<h4 class="mt-8 inline-flex items-center gap-4"
|
|
486
|
+
>Resource description <Required required={false} />
|
|
487
|
+
<div class="flex gap-1 items-center">
|
|
488
|
+
<Toggle size="xs" bind:checked={renderDescription} />
|
|
489
|
+
<Pen size={14} />
|
|
490
|
+
</div>
|
|
491
|
+
</h4>
|
|
492
|
+
{#if renderDescription}
|
|
493
|
+
<div>
|
|
494
|
+
<div class="flex flex-row-reverse text-2xs text-tertiary -mt-1">GH Markdown</div>
|
|
495
|
+
<textarea use:autosize bind:value={description} placeholder={'Resource description'} />
|
|
496
|
+
</div>
|
|
497
|
+
{:else if description == undefined || description == ''}
|
|
498
|
+
<div class="text-sm text-tertiary">No description provided</div>
|
|
499
|
+
{:else}
|
|
500
|
+
<div class="mt-2" />
|
|
501
|
+
<GfmMarkdown md={description} />
|
|
502
|
+
{/if}
|
|
503
|
+
<div class="mt-12">
|
|
482
504
|
{#key resourceTypeInfo}
|
|
483
505
|
<ApiConnectForm
|
|
484
506
|
{linkedSecret}
|
|
@@ -490,9 +512,6 @@ let darkMode = false;
|
|
|
490
512
|
/>
|
|
491
513
|
{/key}
|
|
492
514
|
</div>
|
|
493
|
-
|
|
494
|
-
<h2 class="mt-4 mb-2">Description</h2>
|
|
495
|
-
<textarea type="text" autocomplete="off" use:autosize bind:value={description} />
|
|
496
515
|
{:else}
|
|
497
516
|
<Path
|
|
498
517
|
initialPath=""
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<script>import { setInputCat as computeInputCat, emptyString } from '../utils';
|
|
2
2
|
import { ChevronDown, DollarSign, Pipette, Plus, X } from 'lucide-svelte';
|
|
3
3
|
import { createEventDispatcher } from 'svelte';
|
|
4
|
-
import autosize from 'svelte-autosize';
|
|
5
4
|
import Multiselect from 'svelte-multiselect';
|
|
6
5
|
import { fade } from 'svelte/transition';
|
|
7
6
|
import JsonEditor from './apps/editor/settingsPanel/inputEditor/JsonEditor.svelte';
|
|
@@ -24,6 +23,7 @@ import DateTimeInput from './DateTimeInput.svelte';
|
|
|
24
23
|
import S3FilePicker from './S3FilePicker.svelte';
|
|
25
24
|
import CurrencyInput from './apps/components/inputs/currency/CurrencyInput.svelte';
|
|
26
25
|
import FileUpload from './common/fileUpload/FileUpload.svelte';
|
|
26
|
+
import autosize from '../autosize';
|
|
27
27
|
export let label = '';
|
|
28
28
|
export let value;
|
|
29
29
|
export let defaultValue = undefined;
|
|
@@ -62,6 +62,7 @@ let ignoreValueUndefined = false;
|
|
|
62
62
|
let error = '';
|
|
63
63
|
let s3FilePicker;
|
|
64
64
|
let s3FileUploadRawMode;
|
|
65
|
+
let isListJson = false;
|
|
65
66
|
let el = undefined;
|
|
66
67
|
export let editor = undefined;
|
|
67
68
|
let inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncoding);
|
|
@@ -101,7 +102,7 @@ function handleDefaultValueChange() {
|
|
|
101
102
|
}
|
|
102
103
|
function evalValueToRaw() {
|
|
103
104
|
rawValue =
|
|
104
|
-
inputCat === 'object' || inputCat === 'resource-object'
|
|
105
|
+
inputCat === 'object' || inputCat === 'resource-object' || (inputCat == 'list' && !isListJson)
|
|
105
106
|
? JSON.stringify(value, null, 2)
|
|
106
107
|
: undefined;
|
|
107
108
|
}
|
|
@@ -276,7 +277,6 @@ function changePosition(i, up) {
|
|
|
276
277
|
{/if}
|
|
277
278
|
<span class="text-2xs font-semibold">Preview:</span>
|
|
278
279
|
{/if}
|
|
279
|
-
|
|
280
280
|
{#if description}
|
|
281
281
|
<div class="text-xs italic pb-1 text-secondary">
|
|
282
282
|
<pre class="font-main">{description}</pre>
|
|
@@ -343,107 +343,121 @@ function changePosition(i, up) {
|
|
|
343
343
|
{#if type == 'boolean' && value == undefined}
|
|
344
344
|
<span> Not set</span>
|
|
345
345
|
{/if}
|
|
346
|
-
{:else if inputCat == 'list'}
|
|
347
|
-
<div class="w-full">
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
<
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
<
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
{#
|
|
372
|
-
{#
|
|
373
|
-
{#
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
346
|
+
{:else if inputCat == 'list' && !isListJson}
|
|
347
|
+
<div class="w-full flex gap-4">
|
|
348
|
+
<div class="w-full">
|
|
349
|
+
{#if Array.isArray(itemsType?.multiselect) && Array.isArray(value)}
|
|
350
|
+
<div class="items-start">
|
|
351
|
+
<Multiselect
|
|
352
|
+
ulOptionsClass={'p-2 !bg-surface-secondary'}
|
|
353
|
+
{disabled}
|
|
354
|
+
bind:selected={value}
|
|
355
|
+
options={itemsType?.multiselect ?? []}
|
|
356
|
+
selectedOptionsDraggable={true}
|
|
357
|
+
/>
|
|
358
|
+
</div>
|
|
359
|
+
{:else if itemsType?.enum != undefined && Array.isArray(itemsType?.enum) && Array.isArray(value)}
|
|
360
|
+
<div class="items-start">
|
|
361
|
+
<Multiselect
|
|
362
|
+
ulOptionsClass={'p-2 !bg-surface-secondary'}
|
|
363
|
+
{disabled}
|
|
364
|
+
bind:selected={value}
|
|
365
|
+
options={itemsType?.enum ?? []}
|
|
366
|
+
selectedOptionsDraggable={true}
|
|
367
|
+
/>
|
|
368
|
+
</div>
|
|
369
|
+
{:else}
|
|
370
|
+
<div class="w-full">
|
|
371
|
+
{#key redraw}
|
|
372
|
+
{#if Array.isArray(value)}
|
|
373
|
+
{#each value ?? [] as v, i}
|
|
374
|
+
{#if i < itemsLimit}
|
|
375
|
+
<div class="flex max-w-md mt-1 w-full items-center">
|
|
376
|
+
{#if itemsType?.type == 'number'}
|
|
377
|
+
<input type="number" bind:value={v} id="arg-input-number-array" />
|
|
378
|
+
{:else if itemsType?.type == 'string' && itemsType?.contentEncoding == 'base64'}
|
|
379
|
+
<input
|
|
380
|
+
type="file"
|
|
381
|
+
class="my-6"
|
|
382
|
+
on:change={(x) => fileChanged(x, (val) => (value[i] = val))}
|
|
383
|
+
multiple={false}
|
|
384
|
+
/>
|
|
385
|
+
{:else if itemsType?.type == 'object'}
|
|
386
|
+
<JsonEditor code={JSON.stringify(v, null, 2)} bind:value={v} />
|
|
387
|
+
{:else if Array.isArray(itemsType?.enum)}
|
|
388
|
+
<ArgEnum
|
|
389
|
+
required
|
|
390
|
+
create={extra['disableCreate'] != true}
|
|
391
|
+
on:focus={() => {
|
|
392
|
+
dispatch('focus')
|
|
393
|
+
}}
|
|
394
|
+
on:blur={(e) => {
|
|
395
|
+
dispatch('blur')
|
|
396
|
+
}}
|
|
397
|
+
{defaultValue}
|
|
398
|
+
{valid}
|
|
399
|
+
{disabled}
|
|
400
|
+
{autofocus}
|
|
401
|
+
bind:value={v}
|
|
402
|
+
enum_={itemsType?.enum ?? []}
|
|
403
|
+
/>
|
|
404
|
+
{:else}
|
|
405
|
+
<input type="text" bind:value={v} id="arg-input-array" />
|
|
406
|
+
{/if}
|
|
407
|
+
<button
|
|
408
|
+
transition:fade|local={{ duration: 100 }}
|
|
409
|
+
class="rounded-full p-1 bg-surface-secondary duration-200 hover:bg-surface-hover ml-2"
|
|
410
|
+
aria-label="Clear"
|
|
411
|
+
on:click={() => {
|
|
412
|
+
value.splice(i, 1)
|
|
413
|
+
redraw += 1
|
|
395
414
|
}}
|
|
396
|
-
|
|
397
|
-
{
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
<button
|
|
407
|
-
transition:fade|local={{ duration: 100 }}
|
|
408
|
-
class="rounded-full p-1 bg-surface-secondary duration-200 hover:bg-surface-hover ml-2"
|
|
409
|
-
aria-label="Clear"
|
|
410
|
-
on:click={() => {
|
|
411
|
-
value.splice(i, 1)
|
|
412
|
-
redraw += 1
|
|
413
|
-
}}
|
|
414
|
-
>
|
|
415
|
-
<X size={14} />
|
|
416
|
-
</button>
|
|
417
|
-
</div>
|
|
415
|
+
>
|
|
416
|
+
<X size={14} />
|
|
417
|
+
</button>
|
|
418
|
+
</div>
|
|
419
|
+
{/if}
|
|
420
|
+
{/each}
|
|
421
|
+
{#if value.length > itemsLimit}
|
|
422
|
+
<button on:click={() => (itemsLimit += 50)} class="text-xs py-2 text-blue-600"
|
|
423
|
+
>{itemsLimit}/{value.length}: Load 50 more...</button
|
|
424
|
+
>
|
|
418
425
|
{/if}
|
|
419
|
-
{/each}
|
|
420
|
-
{#if value.length > itemsLimit}
|
|
421
|
-
<button on:click={() => (itemsLimit += 50)} class="text-xs py-2 text-blue-600"
|
|
422
|
-
>{itemsLimit}/{value.length}: Load 50 more...</button
|
|
423
|
-
>
|
|
424
426
|
{/if}
|
|
425
|
-
{/
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
</
|
|
445
|
-
|
|
446
|
-
|
|
427
|
+
{/key}
|
|
428
|
+
</div>
|
|
429
|
+
<div class="flex mt-2 gap-20 items-baseline">
|
|
430
|
+
<Button
|
|
431
|
+
variant="border"
|
|
432
|
+
color="light"
|
|
433
|
+
size="xs"
|
|
434
|
+
btnClasses="mt-1"
|
|
435
|
+
on:click={() => {
|
|
436
|
+
if (value == undefined || !Array.isArray(value)) {
|
|
437
|
+
value = []
|
|
438
|
+
}
|
|
439
|
+
value = value.concat('')
|
|
440
|
+
}}
|
|
441
|
+
id="arg-input-add-item"
|
|
442
|
+
startIcon={{ icon: Plus }}
|
|
443
|
+
>
|
|
444
|
+
Add item
|
|
445
|
+
</Button>
|
|
446
|
+
</div>
|
|
447
|
+
{/if}
|
|
448
|
+
</div>
|
|
449
|
+
<div class="mt-2 mr-4">
|
|
450
|
+
<Toggle
|
|
451
|
+
on:change={(e) => {
|
|
452
|
+
evalValueToRaw()
|
|
453
|
+
isListJson = !isListJson
|
|
454
|
+
}}
|
|
455
|
+
checked={isListJson}
|
|
456
|
+
textClass="text-secondary"
|
|
457
|
+
size="xs"
|
|
458
|
+
options={{ right: 'json' }}
|
|
459
|
+
/>
|
|
460
|
+
</div>
|
|
447
461
|
</div>
|
|
448
462
|
{:else if inputCat == 'resource-object' && resourceTypes == undefined}
|
|
449
463
|
<span class="text-2xs text-tertiary">Loading resource types...</span>
|
|
@@ -502,7 +516,7 @@ function changePosition(i, up) {
|
|
|
502
516
|
/>
|
|
503
517
|
{/if}
|
|
504
518
|
</div>
|
|
505
|
-
{:else if inputCat == 'object' || inputCat == 'resource-object'}
|
|
519
|
+
{:else if inputCat == 'object' || inputCat == 'resource-object' || isListJson}
|
|
506
520
|
{#if properties && Object.keys(properties).length > 0}
|
|
507
521
|
<div class="p-4 pl-8 border rounded w-full">
|
|
508
522
|
<SchemaForm
|
|
@@ -527,6 +541,19 @@ function changePosition(i, up) {
|
|
|
527
541
|
bind:value
|
|
528
542
|
/>
|
|
529
543
|
{/if}
|
|
544
|
+
{#if inputCat == 'list'}
|
|
545
|
+
<div class="block">
|
|
546
|
+
<Toggle
|
|
547
|
+
on:change={(e) => {
|
|
548
|
+
isListJson = !isListJson
|
|
549
|
+
}}
|
|
550
|
+
checked={isListJson}
|
|
551
|
+
textClass="text-secondary"
|
|
552
|
+
size="xs"
|
|
553
|
+
options={{ right: 'json' }}
|
|
554
|
+
/>
|
|
555
|
+
</div>
|
|
556
|
+
{/if}
|
|
530
557
|
{:else if inputCat == 'enum'}
|
|
531
558
|
<div class="flex flex-row w-full gap-1">
|
|
532
559
|
<ArgEnum
|
|
@@ -611,7 +638,6 @@ function changePosition(i, up) {
|
|
|
611
638
|
}}
|
|
612
639
|
use:autosize
|
|
613
640
|
on:keydown={onKeyDown}
|
|
614
|
-
type="text"
|
|
615
641
|
{disabled}
|
|
616
642
|
class={twMerge(
|
|
617
643
|
'w-full',
|
|
@@ -33,6 +33,12 @@ export async function loadFlows() {
|
|
|
33
33
|
}
|
|
34
34
|
let searchKind = 'all';
|
|
35
35
|
let isOpen = false;
|
|
36
|
+
let inputElement;
|
|
37
|
+
// Reactive statement to focus the input when the modal opens
|
|
38
|
+
$: if (isOpen && inputElement) {
|
|
39
|
+
// Use a timeout to ensure focus after any animations or rendering
|
|
40
|
+
setTimeout(() => inputElement.focus(), 0);
|
|
41
|
+
}
|
|
36
42
|
let scripts = undefined;
|
|
37
43
|
let filteredScriptItems = [];
|
|
38
44
|
let resources = undefined;
|
|
@@ -178,8 +184,8 @@ $: counts =
|
|
|
178
184
|
<div class="relative text-tertiary grow min-w-[100px]">
|
|
179
185
|
<!-- svelte-ignore a11y-autofocus -->
|
|
180
186
|
<input
|
|
181
|
-
|
|
182
|
-
placeholder=
|
|
187
|
+
bind:this={inputElement}
|
|
188
|
+
placeholder="Search in the content of resources, scripts, flows and apps"
|
|
183
189
|
bind:value={search}
|
|
184
190
|
class="bg-surface !h-10 !px-4 !pr-10 !rounded-lg text-sm focus:outline-none"
|
|
185
191
|
/>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<script>import { WorkspaceService } from '../gen';
|
|
2
|
+
import { createEventDispatcher } from 'svelte';
|
|
3
|
+
import { workspaceStore } from '../stores';
|
|
4
|
+
import { Button } from './common';
|
|
5
|
+
import Drawer from './common/drawer/Drawer.svelte';
|
|
6
|
+
import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
7
|
+
import { sendUserToast } from '../toast';
|
|
8
|
+
import Section from './Section.svelte';
|
|
9
|
+
import { Save } from 'lucide-svelte';
|
|
10
|
+
import autosize from '../autosize';
|
|
11
|
+
const dispatch = createEventDispatcher();
|
|
12
|
+
let edit = false;
|
|
13
|
+
let name = '';
|
|
14
|
+
let value = '';
|
|
15
|
+
export function initNew() {
|
|
16
|
+
edit = false;
|
|
17
|
+
name = '';
|
|
18
|
+
value = '';
|
|
19
|
+
drawer.openDrawer();
|
|
20
|
+
}
|
|
21
|
+
export function editVariable(editName, editValue) {
|
|
22
|
+
edit = true;
|
|
23
|
+
name = editName;
|
|
24
|
+
value = editValue;
|
|
25
|
+
drawer.openDrawer();
|
|
26
|
+
}
|
|
27
|
+
let drawer;
|
|
28
|
+
async function updateVariable() {
|
|
29
|
+
await WorkspaceService.setEnvironmentVariable({
|
|
30
|
+
workspace: $workspaceStore,
|
|
31
|
+
requestBody: {
|
|
32
|
+
value: value,
|
|
33
|
+
name: name
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
sendUserToast(`${edit ? 'Updated' : 'Created'} contextual variable ${name}`);
|
|
37
|
+
dispatch('update');
|
|
38
|
+
drawer.closeDrawer();
|
|
39
|
+
}
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<Drawer bind:this={drawer} size="900px">
|
|
43
|
+
<DrawerContent
|
|
44
|
+
title={edit ? `Update contextual variable ${name}` : 'Create a contextual variable'}
|
|
45
|
+
on:close={drawer.closeDrawer}
|
|
46
|
+
>
|
|
47
|
+
<div class="flex flex-col gap-8">
|
|
48
|
+
{#if !edit}
|
|
49
|
+
<Section label="Name">
|
|
50
|
+
<input type="text" bind:value={name} placeholder="Variable name" />
|
|
51
|
+
</Section>
|
|
52
|
+
{/if}
|
|
53
|
+
<Section label="Value">
|
|
54
|
+
<textarea rows="4" use:autosize bind:value placeholder="Variable value" />
|
|
55
|
+
</Section>
|
|
56
|
+
</div>
|
|
57
|
+
<svelte:fragment slot="actions">
|
|
58
|
+
<Button
|
|
59
|
+
on:click={() => updateVariable()}
|
|
60
|
+
disabled={value === '' || name === ''}
|
|
61
|
+
startIcon={{ icon: Save }}
|
|
62
|
+
color="dark"
|
|
63
|
+
size="sm"
|
|
64
|
+
>
|
|
65
|
+
{edit ? 'Update' : 'Save'}
|
|
66
|
+
</Button>
|
|
67
|
+
</svelte:fragment>
|
|
68
|
+
</DrawerContent>
|
|
69
|
+
</Drawer>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
initNew?: (() => void) | undefined;
|
|
5
|
+
editVariable?: ((editName: string, editValue: string) => void) | undefined;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
update: CustomEvent<any>;
|
|
9
|
+
} & {
|
|
10
|
+
[evt: string]: CustomEvent<any>;
|
|
11
|
+
};
|
|
12
|
+
slots: {};
|
|
13
|
+
};
|
|
14
|
+
export type ContextualVariableEditorProps = typeof __propDef.props;
|
|
15
|
+
export type ContextualVariableEditorEvents = typeof __propDef.events;
|
|
16
|
+
export type ContextualVariableEditorSlots = typeof __propDef.slots;
|
|
17
|
+
export default class ContextualVariableEditor extends SvelteComponent<ContextualVariableEditorProps, ContextualVariableEditorEvents, ContextualVariableEditorSlots> {
|
|
18
|
+
get initNew(): () => void;
|
|
19
|
+
get editVariable(): (editName: string, editValue: string) => void;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -11,6 +11,7 @@ import { onMount } from 'svelte';
|
|
|
11
11
|
import CronBuilder from './CronBuilder.svelte';
|
|
12
12
|
import Label from './Label.svelte';
|
|
13
13
|
import CronGen from './copilot/CronGen.svelte';
|
|
14
|
+
import DarkModeObserver from './DarkModeObserver.svelte';
|
|
14
15
|
export let schedule;
|
|
15
16
|
// export let offset: number = -60 * Math.floor(new Date().getTimezoneOffset() / 60)
|
|
16
17
|
export let timezone; // = Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
@@ -192,6 +193,8 @@ const items = Object.keys(timezones)
|
|
|
192
193
|
.flat();
|
|
193
194
|
</script>
|
|
194
195
|
|
|
196
|
+
<DarkModeObserver on:change={onThemeChange} />
|
|
197
|
+
|
|
195
198
|
<div class="w-full flex space-x-8">
|
|
196
199
|
<div class="w-full flex flex-col gap-4">
|
|
197
200
|
<Label label="Cron">
|
|
@@ -76,9 +76,9 @@ $: shouldDisplayError = resourcePath && resourcePath in $dbSchemas && !$dbSchema
|
|
|
76
76
|
</ToggleButtonGroup>
|
|
77
77
|
{/if}
|
|
78
78
|
{#if dbSchema.lang === 'graphql'}
|
|
79
|
-
<GraphqlSchemaViewer code={formatGraphqlSchema(dbSchema)} class="h-full" />
|
|
79
|
+
<GraphqlSchemaViewer code={formatGraphqlSchema(dbSchema.schema)} class="h-full" />
|
|
80
80
|
{:else}
|
|
81
|
-
<ObjectViewer json={formatSchema(dbSchema)} pureViewer />
|
|
81
|
+
<ObjectViewer json={formatSchema(dbSchema)} pureViewer collapseLevel={1} />
|
|
82
82
|
{/if}
|
|
83
83
|
</DrawerContent>
|
|
84
84
|
</Drawer>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createEventDispatcher } from 'svelte';
|
|
3
3
|
export let darkMode = false;
|
|
4
4
|
const dispatch = createEventDispatcher();
|
|
5
|
-
let observer;
|
|
5
|
+
let observer = undefined;
|
|
6
6
|
onMount(() => {
|
|
7
7
|
darkMode = document.documentElement.classList.contains('dark');
|
|
8
8
|
observer = new MutationObserver((mutationsList, observer) => {
|
|
@@ -17,6 +17,6 @@ onMount(() => {
|
|
|
17
17
|
observer.observe(document.documentElement, { attributes: true });
|
|
18
18
|
});
|
|
19
19
|
onDestroy(() => {
|
|
20
|
-
observer
|
|
20
|
+
observer?.disconnect();
|
|
21
21
|
});
|
|
22
22
|
</script>
|
|
@@ -9,7 +9,11 @@ let date = undefined;
|
|
|
9
9
|
let time = undefined;
|
|
10
10
|
function parseValue(value = undefined) {
|
|
11
11
|
let dateFromValue = value ? new Date(value) : undefined;
|
|
12
|
-
date = isValidDate(dateFromValue)
|
|
12
|
+
date = isValidDate(dateFromValue)
|
|
13
|
+
? `${dateFromValue.getFullYear().toString()}-${(dateFromValue.getMonth() + 1)
|
|
14
|
+
.toString()
|
|
15
|
+
.padStart(2, '0')}-${dateFromValue.getDate().toString().padStart(2, '0')}`
|
|
16
|
+
: undefined;
|
|
13
17
|
time = isValidDate(dateFromValue)
|
|
14
18
|
? `${dateFromValue.getHours().toString().padStart(2, '0')}:${dateFromValue
|
|
15
19
|
.getMinutes()
|
|
@@ -23,8 +27,10 @@ let initialTime = time;
|
|
|
23
27
|
function parseDateAndTime(date, time) {
|
|
24
28
|
if (date && time && (initialDate != date || initialTime != time)) {
|
|
25
29
|
let newDate = new Date(`${date}T${time}`);
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
if (newDate.toString() != 'Invalid Date') {
|
|
31
|
+
value = newDate.toISOString();
|
|
32
|
+
dispatch('change', value);
|
|
33
|
+
}
|
|
28
34
|
}
|
|
29
35
|
}
|
|
30
36
|
$: parseDateAndTime(date, time);
|