diff --git a/frontend/src/lib/components/Editor.svelte b/frontend/src/lib/components/Editor.svelte
index b172d3b662..db718312ce 100644
--- a/frontend/src/lib/components/Editor.svelte
+++ b/frontend/src/lib/components/Editor.svelte
@@ -357,6 +357,10 @@
dispatch('change')
})
+ editor.onDidFocusEditorText(() => {
+ dispatch('focus')
+ })
+
if (lang == 'json') {
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
validate: true,
diff --git a/frontend/src/lib/components/SchemaForm.svelte b/frontend/src/lib/components/SchemaForm.svelte
index 8d7ba647fb..e806b87280 100644
--- a/frontend/src/lib/components/SchemaForm.svelte
+++ b/frontend/src/lib/components/SchemaForm.svelte
@@ -22,6 +22,8 @@
let inputCheck: { [id: string]: boolean } = {}
let overlays: { [id: string]: OverlayPropertyPicker } = {}
+ let monacos: { [id: string]: Editor } = {}
+
$: isValid = allTrue(inputCheck) ?? false
let propertiesTypes: { [id: string]: InputTransform.type } = inputTransform
@@ -85,6 +87,16 @@
function isStaticTemplate(inputCat: InputCat) {
return inputCat === 'string' || inputCat === 'number'
}
+
+ function focusProp(argName: string) {
+ Object.keys(overlays).forEach((k) => {
+ if (k == argName) {
+ overlays[k].focus()
+ } else {
+ overlays[k].unfocus()
+ }
+ })
+ }
@@ -142,7 +154,7 @@
{#if propertiesTypes[argName] === undefined || propertiesTypes[argName] === InputTransform.type.STATIC}
{
const toAppend = `\$\{${event.detail}}`
@@ -151,15 +163,7 @@
}}
>
{
- Object.keys(overlays).forEach((k) => {
- if (k == argName) {
- overlays[k].focus()
- } else {
- overlays[k].unfocus()
- }
- })
- }}
+ on:focus={() => focusProp(argName)}
label={argName}
bind:description={schema.properties[argName].description}
bind:value={args[argName].value}
@@ -184,15 +188,25 @@
{:else if propertiesTypes[argName] === InputTransform.type.JAVASCRIPT}
{#if args[argName].expr != undefined}
-
-
-
+
{
+ monacos[argName].insertAtCursor(event.detail)
+ }}
+ >
+
+ focusProp(argName)}
+ bind:code={args[argName].expr}
+ lang="javascript"
+ class="few-lines-editor"
+ {extraLib}
+ extraLibPath="file:///node_modules/@types/windmill@{i}/index.d.ts"
+ />
+
+
{/if}
{:else}
diff --git a/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte b/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte
index 3e3c385773..074c16b967 100644
--- a/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte
+++ b/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte
@@ -22,7 +22,7 @@
closeBracket = isArray ? ']' : '}'
}
- $: collapsed = false
+ $: collapsed = level == 2
function collapse() {
collapsed = !collapsed
@@ -52,7 +52,8 @@
{#if keys.length > 0}
-
+ {#if level != 0}(-){/if}
{#each keys as key, index}
-
@@ -86,7 +87,6 @@
{/each}
-
{openBracket}{collapsedSymbol}{closeBracket}
diff --git a/frontend/src/lib/components/propertyPicker/WarningMessage.svelte b/frontend/src/lib/components/propertyPicker/WarningMessage.svelte
index 2e50db3eca..03d6ed2c05 100644
--- a/frontend/src/lib/components/propertyPicker/WarningMessage.svelte
+++ b/frontend/src/lib/components/propertyPicker/WarningMessage.svelte
@@ -1,4 +1,4 @@
-