From 47730131be3eb238a5bd6bfdebe953ca93f85bca Mon Sep 17 00:00:00 2001 From: Faton Ramadani Date: Tue, 26 Sep 2023 02:08:08 +0200 Subject: [PATCH] App editor improvements (#2328) * feat(frontend): add zoomable app editor * feat(frontend): add viewport zoom * fix(frontend): Fix build * improvements --------- Co-authored-by: Ruben Fiszel --- .../lib/components/ModulePreviewForm.svelte | 6 ++- frontend/src/lib/components/Toggle.svelte | 53 ++++++++++--------- .../apps/components/layout/AppTabs.svelte | 2 +- .../components/apps/editor/AppEditor.svelte | 45 +++++++++++++--- .../components/apps/editor/AppPreview.svelte | 4 +- .../components/apps/editor/GridEditor.svelte | 15 ++++-- .../componentsPanel/componentControlUtils.ts | 3 +- .../editor/contextPanel/ContextPanel.svelte | 2 +- .../editor/settingsPanel/GridGroup.svelte | 13 +++-- .../settingsPanel/common/PanelSection.svelte | 2 +- .../apps/svelte-grid/MoveResize.svelte | 47 ++++++++-------- frontend/src/lib/components/apps/types.ts | 3 +- .../src/lib/components/resourceTypesStore.ts | 2 + frontend/tailwind.config.cjs | 2 +- 14 files changed, 120 insertions(+), 79 deletions(-) diff --git a/frontend/src/lib/components/ModulePreviewForm.svelte b/frontend/src/lib/components/ModulePreviewForm.svelte index 13c32fa1e3..6d48d442b0 100644 --- a/frontend/src/lib/components/ModulePreviewForm.svelte +++ b/frontend/src/lib/components/ModulePreviewForm.svelte @@ -62,7 +62,11 @@ let resourceTypes: string[] | undefined = undefined - getResourceTypes() + async function loadResourceTypes() { + resourceTypes = await getResourceTypes() + } + + loadResourceTypes()
diff --git a/frontend/src/lib/components/Toggle.svelte b/frontend/src/lib/components/Toggle.svelte index 5a86316e17..4ad86a4ab6 100644 --- a/frontend/src/lib/components/Toggle.svelte +++ b/frontend/src/lib/components/Toggle.svelte @@ -18,7 +18,7 @@ export let size: 'sm' | 'xs' = 'sm' const id = (Math.random() + 1).toString(36).substring(10) const dispatch = createEventDispatcher() - const bothOptions = Boolean(options.left) && Boolean(options.right); + const bothOptions = Boolean(options.left) && Boolean(options.right) @@ -29,20 +29,21 @@ : 'cursor-pointer'}" > {#if Boolean(options?.left)} - - {options?.left} - + + {options?.left} + {/if} +
{#if Boolean(options?.right)} - - {options?.right} - {#if options?.rightTooltip} - {options?.rightTooltip} - {/if} - + + {options?.right} + {#if options?.rightTooltip} + {options?.rightTooltip} + {/if} + {/if}
diff --git a/frontend/src/lib/components/apps/components/layout/AppTabs.svelte b/frontend/src/lib/components/apps/components/layout/AppTabs.svelte index f2799371a9..1aaa388673 100644 --- a/frontend/src/lib/components/apps/components/layout/AppTabs.svelte +++ b/frontend/src/lib/components/apps/components/layout/AppTabs.svelte @@ -106,7 +106,7 @@ {/each} -
+
{#if !resolvedConfig.tabsKind || resolvedConfig.tabsKind == 'tabs' || (resolvedConfig.tabsKind == 'invisibleOnView' && $mode == 'dnd')}
('AppEditorContext', { history, pickVariableCallback, movingcomponents: writable(undefined), selectedComponentInEditor: writable(undefined), - jobsDrawerOpen: writable(false) + jobsDrawerOpen: writable(false), + scale }) let timeout: NodeJS.Timeout | undefined = undefined @@ -443,17 +446,48 @@ $focusedGrid = undefined }} class={twMerge( - 'bg-surface h-full w-full relative', + 'bg-surface-secondary h-full w-full relative', $appStore.css?.['app']?.['viewer']?.class, 'wm-app-viewer' )} style={$appStore.css?.['app']?.['viewer']?.style} > +
+
+ + {$scale} + +
+
+
+
{#if $appStore.grid} @@ -485,7 +519,6 @@ size="xs" class="h-full" on:pointerdown={() => { - console.log('click', $cssEditorOpen) if ($cssEditorOpen) { $cssEditorOpen = false selectedTab = 'insert' diff --git a/frontend/src/lib/components/apps/editor/AppPreview.svelte b/frontend/src/lib/components/apps/editor/AppPreview.svelte index b172181c39..8092d152f5 100644 --- a/frontend/src/lib/components/apps/editor/AppPreview.svelte +++ b/frontend/src/lib/components/apps/editor/AppPreview.svelte @@ -189,9 +189,9 @@
diff --git a/frontend/src/lib/components/apps/editor/GridEditor.svelte b/frontend/src/lib/components/apps/editor/GridEditor.svelte index 05204050e8..a55ee62461 100644 --- a/frontend/src/lib/components/apps/editor/GridEditor.svelte +++ b/frontend/src/lib/components/apps/editor/GridEditor.svelte @@ -32,7 +32,7 @@ allIdsInPath } = getContext('AppViewerContext') - const { history } = getContext('AppEditorContext') + const { history, scale } = getContext('AppEditorContext') let previousSelectedIds: string[] | undefined = undefined $: if (!deepEqual(previousSelectedIds, $selectedComponent)) { @@ -73,9 +73,9 @@
{ $selectedComponent = undefined @@ -83,7 +83,14 @@ }} bind:clientWidth={$parentWidth} > -
+
-
+
diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/GridGroup.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/GridGroup.svelte index 21c07e4af8..32660468d1 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/GridGroup.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/GridGroup.svelte @@ -6,7 +6,6 @@ import PanelSection from './common/PanelSection.svelte' import Toggle from '$lib/components/Toggle.svelte' import InputsSpecsEditor from './InputsSpecsEditor.svelte' - import Tooltip from '$lib/components/Tooltip.svelte' export let groupFields: RichConfigurations | undefined @@ -40,13 +39,13 @@ } console.log(groupFields) }} - options={{ right: 'container is a component group' }} - /> - Group fields allow inner components to depend on the group fields which make the container a + options={{ + right: 'container is a component group', + rightTooltip: `Group fields allow inner components to depend on the group fields which make the container a group of component that is encapsulated. Inside the group, it is possible to retrieve the values - using `group.` where x is the group field name + using \`group.\` where x is the group field name` + }} + />
{#if groupFields != undefined}
-
+
{title} diff --git a/frontend/src/lib/components/apps/svelte-grid/MoveResize.svelte b/frontend/src/lib/components/apps/svelte-grid/MoveResize.svelte index 5d60ff77bd..85f2d06a7f 100644 --- a/frontend/src/lib/components/apps/svelte-grid/MoveResize.svelte +++ b/frontend/src/lib/components/apps/svelte-grid/MoveResize.svelte @@ -1,5 +1,7 @@ +
void) | undefined> selectedComponentInEditor: Writable movingcomponents: Writable - jobsDrawerOpen: Writable + jobsDrawerOpen: Writable, + scale: Writable } export type FocusedGrid = { parentComponentId: string; subGridIndex: number } diff --git a/frontend/src/lib/components/resourceTypesStore.ts b/frontend/src/lib/components/resourceTypesStore.ts index 360fc81034..ab0d0063ce 100644 --- a/frontend/src/lib/components/resourceTypesStore.ts +++ b/frontend/src/lib/components/resourceTypesStore.ts @@ -14,3 +14,5 @@ export async function getResourceTypes() { return nrts } } + + diff --git a/frontend/tailwind.config.cjs b/frontend/tailwind.config.cjs index d2666154ce..4061c21aee 100644 --- a/frontend/tailwind.config.cjs +++ b/frontend/tailwind.config.cjs @@ -789,7 +789,7 @@ const config = { overflow: 'auto !important' }, '.splitpanes__splitter': { - backgroundColor: lightTheme.border + ' !important', + backgroundColor: 'rgb(243 244 246) !important', margin: '0 !important', border: 'none !important', '&::after': {