diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 720cd9a131..ef3081c9d6 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -24,6 +24,7 @@ "set-interval-async": "^3.0.2", "svelte-autosize": "^1.0.1", "svelte-chartjs": "^3.1.0", + "svelte-select": "^5.0.0-beta.40", "vscode-ws-jsonrpc": "^2.0.0" }, "devDependencies": { @@ -255,6 +256,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@floating-ui/core": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.0.2.tgz", + "integrity": "sha512-Skfy0YS3NJ5nV9us0uuPN0HDk1Q4edljaOhRBJGDWs9EBa7ZVMYBHRFlhLvvmwEoaIM9BlH6QJFn9/uZg0bACg==" + }, + "node_modules/@floating-ui/dom": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.0.7.tgz", + "integrity": "sha512-6RsqvCYe0AYWtsGvuWqCm7mZytnXAZCjWtsWu1Kg8dI3INvj/DbKlDsZO+mKSaQdPT12uxIW9W2dAWJkPx4Y5g==", + "dependencies": { + "@floating-ui/core": "^1.0.2" + } + }, "node_modules/@fortawesome/fontawesome-common-types": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.0.tgz", @@ -1993,8 +2007,7 @@ "node_modules/dedent-js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", - "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==", - "dev": true + "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==" }, "node_modules/deep-extend": { "version": "0.6.0", @@ -3736,7 +3749,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -4047,7 +4059,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -4282,7 +4293,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -5978,6 +5988,29 @@ "integrity": "sha512-uSiaGiSY5KCTx5OtColSk/1qFFUAzGvnoQYDE5xfOmcyvf3lAI1IjPv0p0LRKrTudS9rGZYWPx44qsD09ER6QQ==", "dev": true }, + "node_modules/svelte-floating-ui": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/svelte-floating-ui/-/svelte-floating-ui-0.3.2.tgz", + "integrity": "sha512-L5YqnVLfCp+JcGNMD6MFdmzsFSgskFR+TJ/2xhKjSQkAXi4dTowImb5HzAAsJpPOPY10e/+Ta/ucyNTZPGr3VQ==", + "dependencies": { + "@floating-ui/core": "^0.7.3", + "@floating-ui/dom": "^0.5.4", + "svelte2tsx": "^0.5.11" + } + }, + "node_modules/svelte-floating-ui/node_modules/@floating-ui/core": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz", + "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==" + }, + "node_modules/svelte-floating-ui/node_modules/@floating-ui/dom": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz", + "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==", + "dependencies": { + "@floating-ui/core": "^0.7.3" + } + }, "node_modules/svelte-grid": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/svelte-grid/-/svelte-grid-5.1.1.tgz", @@ -6115,6 +6148,15 @@ "sourcemap-codec": "^1.4.8" } }, + "node_modules/svelte-select": { + "version": "5.0.0-beta.40", + "resolved": "https://registry.npmjs.org/svelte-select/-/svelte-select-5.0.0-beta.40.tgz", + "integrity": "sha512-qL21CUu/H+sVdIynYMdZTEEEAWgeWYgpGAiDq87wPfc1PK69Osl4p6zZOCEmHhNwW5s9gUqe67ovh9Fx/NbdKA==", + "dependencies": { + "@floating-ui/dom": "^1.0.2", + "svelte-floating-ui": "^0.3.2" + } + }, "node_modules/svelte-splitpanes": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/svelte-splitpanes/-/svelte-splitpanes-0.7.3.tgz", @@ -6159,7 +6201,6 @@ "version": "0.5.20", "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.5.20.tgz", "integrity": "sha512-yNHmN/uoAnJ7d1XqVohiNA6TMFOxibHyEddUAHVt1PiLXtbwAJF3WaGYlg8QbOdoXzOVsVNCAlqRUIdULUm+OA==", - "dev": true, "dependencies": { "dedent-js": "^1.0.1", "pascal-case": "^3.1.1" @@ -6442,7 +6483,6 @@ "version": "4.8.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", - "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7058,6 +7098,19 @@ "strip-json-comments": "^3.1.1" } }, + "@floating-ui/core": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.0.2.tgz", + "integrity": "sha512-Skfy0YS3NJ5nV9us0uuPN0HDk1Q4edljaOhRBJGDWs9EBa7ZVMYBHRFlhLvvmwEoaIM9BlH6QJFn9/uZg0bACg==" + }, + "@floating-ui/dom": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.0.7.tgz", + "integrity": "sha512-6RsqvCYe0AYWtsGvuWqCm7mZytnXAZCjWtsWu1Kg8dI3INvj/DbKlDsZO+mKSaQdPT12uxIW9W2dAWJkPx4Y5g==", + "requires": { + "@floating-ui/core": "^1.0.2" + } + }, "@fortawesome/fontawesome-common-types": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.0.tgz", @@ -8269,8 +8322,7 @@ "dedent-js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", - "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==", - "dev": true + "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==" }, "deep-extend": { "version": "0.6.0", @@ -9504,7 +9556,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, "requires": { "tslib": "^2.0.3" } @@ -9737,7 +9788,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, "requires": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -9909,7 +9959,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -11100,6 +11149,31 @@ "integrity": "sha512-uSiaGiSY5KCTx5OtColSk/1qFFUAzGvnoQYDE5xfOmcyvf3lAI1IjPv0p0LRKrTudS9rGZYWPx44qsD09ER6QQ==", "dev": true }, + "svelte-floating-ui": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/svelte-floating-ui/-/svelte-floating-ui-0.3.2.tgz", + "integrity": "sha512-L5YqnVLfCp+JcGNMD6MFdmzsFSgskFR+TJ/2xhKjSQkAXi4dTowImb5HzAAsJpPOPY10e/+Ta/ucyNTZPGr3VQ==", + "requires": { + "@floating-ui/core": "^0.7.3", + "@floating-ui/dom": "^0.5.4", + "svelte2tsx": "^0.5.11" + }, + "dependencies": { + "@floating-ui/core": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz", + "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==" + }, + "@floating-ui/dom": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz", + "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==", + "requires": { + "@floating-ui/core": "^0.7.3" + } + } + } + }, "svelte-grid": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/svelte-grid/-/svelte-grid-5.1.1.tgz", @@ -11176,6 +11250,15 @@ } } }, + "svelte-select": { + "version": "5.0.0-beta.40", + "resolved": "https://registry.npmjs.org/svelte-select/-/svelte-select-5.0.0-beta.40.tgz", + "integrity": "sha512-qL21CUu/H+sVdIynYMdZTEEEAWgeWYgpGAiDq87wPfc1PK69Osl4p6zZOCEmHhNwW5s9gUqe67ovh9Fx/NbdKA==", + "requires": { + "@floating-ui/dom": "^1.0.2", + "svelte-floating-ui": "^0.3.2" + } + }, "svelte-splitpanes": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/svelte-splitpanes/-/svelte-splitpanes-0.7.3.tgz", @@ -11210,7 +11293,6 @@ "version": "0.5.20", "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.5.20.tgz", "integrity": "sha512-yNHmN/uoAnJ7d1XqVohiNA6TMFOxibHyEddUAHVt1PiLXtbwAJF3WaGYlg8QbOdoXzOVsVNCAlqRUIdULUm+OA==", - "dev": true, "requires": { "dedent-js": "^1.0.1", "pascal-case": "^3.1.1" @@ -11421,8 +11503,7 @@ "typescript": { "version": "4.8.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", - "dev": true + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" }, "uglify-js": { "version": "3.16.3", diff --git a/frontend/package.json b/frontend/package.json index c9cb6c9793..6681745d78 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -74,6 +74,7 @@ "set-interval-async": "^3.0.2", "svelte-autosize": "^1.0.1", "svelte-chartjs": "^3.1.0", + "svelte-select": "^5.0.0-beta.40", "vscode-ws-jsonrpc": "^2.0.0" } } diff --git a/frontend/src/lib/components/AppConnect.svelte b/frontend/src/lib/components/AppConnect.svelte index c49593dc9e..388767b354 100644 --- a/frontend/src/lib/components/AppConnect.svelte +++ b/frontend/src/lib/components/AppConnect.svelte @@ -201,7 +201,12 @@ You can also contribute to windmill and add it as an API integration if relevant. {/if} -
OAuth APIs
+

OAuth APIs

+ {#if Object.keys(connects).length == 0} + + Your instance has no OAuth connection setup. You can still add a resource manually. + + {/if}
{#each Object.entries(connects).sort((a, b) => a[0].localeCompare(b[0])) as [key, values]}
-
Scopes
+

Scopes

{#if !manual && resource_type != ''} {#each scopes as v}
@@ -259,47 +264,13 @@ {:else}

Pick an OAuth API and customize the scopes here

{/if} -
Extra params
- {#if !manual && resource_type != ''} - {#each extra_params as [k, v]} -
- - - - -
- {/each} -
- - - ({(extra_params ?? []).length} item{(extra_params ?? []).length > 1 ? 's' : ''}) - -
- {:else} -

Pick an OAuth API and customize the extra parameters here

+

Non OAuth APIs

+ {#if Object.keys(connectsManual).length == 0} + + Your instance has no resource types setup. Sync with the hub to get all the latest + resource types. + {/if} -
Non OAuth APIs
{#each connectsManual as [key, instructions]}
{:else if inputCat == 'resource-object'} - + {:else if inputCat == 'object'} {#if properties && Object.keys(properties).length > 0}
diff --git a/frontend/src/lib/components/CronInput.svelte b/frontend/src/lib/components/CronInput.svelte index 753d5bfa14..9afcc9e431 100644 --- a/frontend/src/lib/components/CronInput.svelte +++ b/frontend/src/lib/components/CronInput.svelte @@ -49,7 +49,7 @@ />
{#if !disabled} -
+
diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index 682f0fb95e..78c1c81342 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -10,7 +10,7 @@ sendUserToast, setQueryWithoutLoad } from '$lib/utils' - import { faEye, faPen } from '@fortawesome/free-solid-svg-icons' + import { faEye, faPen, faSave } from '@fortawesome/free-solid-svg-icons' import { setContext } from 'svelte' import { writable } from 'svelte/store' import CenteredPage from './CenteredPage.svelte' @@ -244,7 +244,12 @@
- +
diff --git a/frontend/src/lib/components/InputTransformForm.svelte b/frontend/src/lib/components/InputTransformForm.svelte index 3b972de968..5b6dea7eb2 100644 --- a/frontend/src/lib/components/InputTransformForm.svelte +++ b/frontend/src/lib/components/InputTransformForm.svelte @@ -151,12 +151,18 @@ }} > {#if isStaticTemplate(inputCat)} - Template + Template {:else} - Static + Static {/if} - + Dynamic (JS) diff --git a/frontend/src/lib/components/ObjectResourceInput.svelte b/frontend/src/lib/components/ObjectResourceInput.svelte index 5c337ec978..f71720e852 100644 --- a/frontend/src/lib/components/ObjectResourceInput.svelte +++ b/frontend/src/lib/components/ObjectResourceInput.svelte @@ -1,13 +1,15 @@ -
-
- +
+
+
+ { + if (e.detail === 'resource') { + resourceToValue() + } else { + argToValue() + } + }} + > + Resource ({resourceTypeName}) + Raw + +
-
+
{#if option == 'resource'} loadSchema(format)} @@ -83,13 +94,9 @@ : undefined} /> {:else} -
-

- Object of resource type - {resourceTypeName} -

+
{#if !isString(args)} - + {/if}
{/if} diff --git a/frontend/src/lib/components/ResourceEditor.svelte b/frontend/src/lib/components/ResourceEditor.svelte index e7878d9517..336b71a6e6 100644 --- a/frontend/src/lib/components/ResourceEditor.svelte +++ b/frontend/src/lib/components/ResourceEditor.svelte @@ -15,6 +15,7 @@ import DrawerContent from './common/drawer/DrawerContent.svelte' import autosize from 'svelte-autosize' import SimpleEditor from './SimpleEditor.svelte' + import AppConnect from './AppConnect.svelte' let path = '' let initialPath = '' @@ -217,8 +218,17 @@
{/if}
- + {#if step === 1} + - -
+