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 @@ -