From 402e7eaa9ca15eb7d935593d67d9759ca5c3aeef Mon Sep 17 00:00:00 2001 From: Faton Ramadani Date: Wed, 12 Jun 2024 18:37:18 +0200 Subject: [PATCH] feat(frontend): Generated UI editor + Schema Form complete refactor (#3835) * feat(frontend): wip * feat(frontend): wip * feat(frontend): wip * feat(frontend): wip * feat(frontend): wip * feat(frontend): add type editor * feat(frontend): wip * feat(frontend): wip * feat(frontend): wip * feat(frontend): wip * feat(frontend): dnd * feat(frontend): add missing error * feat(frontend): fix build * feat(frontend): fix build * feat(frontend): clean up * feat(frontend): fix layout * feat(frontend): fix dark mode * feat(frontend): Fix Dnd + resource s3 and objects * feat(frontend): handle inner objets * feat(frontend): wip * feat(frontend): wip * feat(frontend): wip * fix(frontend): UI nits * fix(frontend): fix type selection * fix(frontend): Correctly handle subproperties * fix(frontend): fix autosize + height * fix(frontend): replace everywhere * fix(frontend): fix dnd * fix(frontend): fix list refresh + height issues * fix(frontend): fix order * fix(frontend): restore default behavior * fix(frontend): Move the rename input * fix(frontend): Fix rename wrt order array * fix(frontend): Fix hub * fix(frontend): Fix renam * fix(frontend): Fix UI Nits + fix SchemaForm order * fix(frontend): Handle nested order * fix(frontend): Fix saving properties * fix(frontend): Improve approval form * feat(frontend): done * feat(frontend): merge main * feat(frontend): done * feat(frontend): wip * feat(frontend): SchemaFormDND * feat(frontend): SchemaFormDND wip * feat(frontend): improve displayWebhookWarning * feat(frontend): DND done * feat(frontend): DND done * feat(frontend): improve name * feat(frontend): improve dnd * feat(frontend): done * first batch * new try * nits * all * drag handle in more places * push everything * migrate all * all * fix * fix * fix henri bug --------- Co-authored-by: Ruben Fiszel --- backend/windmill-api/src/oauth2_ee.rs | 26 +- frontend/package-lock.json | 21 +- frontend/package.json | 8 +- frontend/src/lib/autosize.ts | 2 +- frontend/src/lib/components/ArgInput.svelte | 189 ++---- .../lib/components/ArrayTypeNarrowing.svelte | 56 +- .../lib/components/EditableSchemaForm.svelte | 539 ++++++++++++++---- .../lib/components/NumberTypeNarrowing.svelte | 115 ++-- .../lib/components/ObjectResourceInput.svelte | 2 + .../lib/components/ObjectTypeNarrowing.svelte | 1 - .../src/lib/components/PropertyRow.svelte | 98 ---- frontend/src/lib/components/Range.svelte | 329 ++--------- .../src/lib/components/ResourcePicker.svelte | 4 + .../lib/components/ResourceTypePicker.svelte | 127 +++-- .../src/lib/components/SchemaEditor.svelte | 389 ------------- frontend/src/lib/components/SchemaForm.svelte | 249 +++++--- .../src/lib/components/SchemaModal.svelte | 474 --------------- .../src/lib/components/ScriptBuilder.svelte | 15 +- .../src/lib/components/ScriptSchema.svelte | 23 +- .../lib/components/StringTypeNarrowing.svelte | 386 +++++++------ frontend/src/lib/components/Toggle.svelte | 9 +- .../ArrayStaticInputEditor.svelte | 48 +- .../editor/settingsPanel/GridCondition.svelte | 69 +-- .../apps/editor/settingsPanel/GridTab.svelte | 30 +- .../editor/settingsPanel/SubTypeEditor.svelte | 2 - .../inputEditor/StaticInputEditor.svelte | 21 +- .../components/common/drawer/Drawer.svelte | 3 +- .../toggleButton-v2/ToggleButtonGroup.svelte | 5 +- .../components/flows/content/FlowInput.svelte | 117 ++-- .../flows/content/FlowModuleSuspend.svelte | 140 +++-- .../lib/components/schema/AddProperty.svelte | 172 ++++++ .../components/schema/AddPropertyForm.svelte | 37 ++ .../schema/EditableSchemaDrawer.svelte | 148 +++++ .../schema/EditableSchemaWrapper.svelte | 35 ++ .../schema/FlowPropertyEditor.svelte | 193 +++++++ .../components/schema/PropertyEditor.svelte | 163 ++++++ .../components/schema/SchemaFormDND.svelte | 93 +++ frontend/src/lib/infer.ts | 1 - frontend/src/lib/inferArgSig.ts | 28 + frontend/src/lib/utils.ts | 9 +- .../(root)/(logged)/resources/+page.svelte | 10 +- 41 files changed, 2190 insertions(+), 2196 deletions(-) delete mode 100644 frontend/src/lib/components/PropertyRow.svelte delete mode 100644 frontend/src/lib/components/SchemaEditor.svelte delete mode 100644 frontend/src/lib/components/SchemaModal.svelte create mode 100644 frontend/src/lib/components/schema/AddProperty.svelte create mode 100644 frontend/src/lib/components/schema/AddPropertyForm.svelte create mode 100644 frontend/src/lib/components/schema/EditableSchemaDrawer.svelte create mode 100644 frontend/src/lib/components/schema/EditableSchemaWrapper.svelte create mode 100644 frontend/src/lib/components/schema/FlowPropertyEditor.svelte create mode 100644 frontend/src/lib/components/schema/PropertyEditor.svelte create mode 100644 frontend/src/lib/components/schema/SchemaFormDND.svelte diff --git a/backend/windmill-api/src/oauth2_ee.rs b/backend/windmill-api/src/oauth2_ee.rs index 302084f5a7..39960cec92 100644 --- a/backend/windmill-api/src/oauth2_ee.rs +++ b/backend/windmill-api/src/oauth2_ee.rs @@ -12,6 +12,7 @@ use axum::{routing::get, Json, Router}; use hmac::Mac; use hyper::HeaderMap; +use itertools::Itertools; use oauth2::{Client as OClient, *}; use serde::{Deserialize, Serialize}; use sqlx::{Postgres, Transaction}; @@ -49,8 +50,8 @@ pub enum InstanceEvent { #[derive(Debug, Clone)] pub struct ClientWithScopes { _client: OClient, - scopes: Vec, - extra_params: Option>, + _scopes: Vec, + _extra_params: Option>, _extra_params_callback: Option>, _allowed_domains: Option>, _userinfo_url: Option, @@ -120,25 +121,12 @@ async fn list_logins() -> error::JsonResult { return Ok(Json(Logins { oauth: vec![], saml: None })); } -#[derive(Serialize)] -struct ScopesAndParams { - scopes: Vec, - extra_params: Option>, -} -async fn list_connects() -> error::JsonResult> { +async fn list_connects() -> error::JsonResult> { Ok(Json( (&OAUTH_CLIENTS.read().await.connects) - .into_iter() - .map(|(k, v)| { - ( - k.to_owned(), - ScopesAndParams { - scopes: v.scopes.clone(), - extra_params: v.extra_params.clone(), - }, - ) - }) - .collect::>(), + .keys() + .map(|x| x.to_owned()) + .collect_vec(), )) } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index d6ebf7f310..a9aed32dd5 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -15,6 +15,7 @@ "@popperjs/core": "^2.11.6", "@redocly/json-to-json-schema": "^0.0.1", "@tanstack/svelte-table": "^8.9.9", + "@windmill-labs/svelte-dnd-action": "latest", "ag-charts-community": "^9.0.1", "ag-charts-enterprise": "^9.0.1", "ag-grid-community": "^31.0.0", @@ -42,7 +43,6 @@ "quill": "^1.3.7", "svelte-carousel": "^1.0.25", "svelte-chartjs": "^3.1.5", - "svelte-dnd-action": "^0.9.38", "svelte-exmarkdown": "^3.0.3", "svelte-infinite-loading": "^1.3.8", "svelte-portal": "^2.2.1", @@ -117,6 +117,9 @@ "svelte": "^4.0.0" } }, + "../svelte-dnd-action": { + "extraneous": true + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -2197,6 +2200,14 @@ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, + "node_modules/@windmill-labs/svelte-dnd-action": { + "version": "0.9.48", + "resolved": "https://registry.npmjs.org/@windmill-labs/svelte-dnd-action/-/svelte-dnd-action-0.9.48.tgz", + "integrity": "sha512-A6pWayH3nOi79DZohTscGj5t2PuNtHlKM5WIAj9WlVDx5pS1A+MsyfuNZi8oCpj2590wFmQl+58G4y4xZqDa1Q==", + "peerDependencies": { + "svelte": ">=3.23.0 || ^5.0.0-next.0" + } + }, "node_modules/@zerodevx/svelte-toast": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@zerodevx/svelte-toast/-/svelte-toast-0.9.5.tgz", @@ -9244,14 +9255,6 @@ "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0" } }, - "node_modules/svelte-dnd-action": { - "version": "0.9.38", - "resolved": "https://registry.npmjs.org/svelte-dnd-action/-/svelte-dnd-action-0.9.38.tgz", - "integrity": "sha512-L80YR+aknn54LmjPKFELYGDkZhed5ReBzH2xe61zFNGfQyoeXbFB1hs69QWgBIYufZPWUhAiVXIMhP7UQWs1dw==", - "peerDependencies": { - "svelte": ">=3.23.0" - } - }, "node_modules/svelte-eslint-parser": { "version": "0.33.1", "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.33.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 23d446c90f..51baa61820 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -122,7 +122,7 @@ "quill": "^1.3.7", "svelte-carousel": "^1.0.25", "svelte-chartjs": "^3.1.5", - "svelte-dnd-action": "^0.9.38", + "@windmill-labs/svelte-dnd-action": "latest", "svelte-exmarkdown": "^3.0.3", "svelte-infinite-loading": "^1.3.8", "svelte-portal": "^2.2.1", @@ -245,9 +245,9 @@ "default": "./package/components/SchemaForm.svelte" }, "./components/SchemaEditor.svelte": { - "types": "./package/components/SchemaEditor.svelte.d.ts", - "svelte": "./package/components/SchemaEditor.svelte", - "default": "./package/components/SchemaEditor.svelte" + "types": "./package/components/EditableSchemaForm.svelte.d.ts", + "svelte": "./package/components/EditableSchemaForm.svelte", + "default": "./package/components/EditableSchemaForm.svelte" }, "./components/scriptEditor/LogPanel.svelte": { "types": "./package/components/scriptEditor/LogPanel.svelte.d.ts", diff --git a/frontend/src/lib/autosize.ts b/frontend/src/lib/autosize.ts index 16ed752110..5273d2e4ac 100644 --- a/frontend/src/lib/autosize.ts +++ b/frontend/src/lib/autosize.ts @@ -43,7 +43,7 @@ export const action = (node) => { } const setHeight = () => { - node.style.height = '0px' + node.style.height = 'auto' node.style.height = Math.max(node.scrollHeight ?? 0, 30) + 2 + 'px' } diff --git a/frontend/src/lib/components/ArgInput.svelte b/frontend/src/lib/components/ArgInput.svelte index 9ae4f0a648..e06c62355e 100644 --- a/frontend/src/lib/components/ArgInput.svelte +++ b/frontend/src/lib/components/ArgInput.svelte @@ -1,7 +1,7 @@ - - {#if editableSchema} - - {#if editableSchema.i > 0} - - {/if} - {#if editableSchema.i < editableSchema.total - 1} - - {/if} - {/if} {/if} - {#if editableSchema} -