From 5b2dd7573d7ac2bd1b4ff06094a2dfd480ed24a4 Mon Sep 17 00:00:00 2001 From: Faton Ramadani Date: Thu, 22 Aug 2024 15:38:57 +0200 Subject: [PATCH] feat(frontend): Add a toggle to disable breakpoints in the App editor (#4274) * feat(frontend): Add a toggle to disable breakpoints in the App editor * feat(frontend): improve UI * feat(frontend): fix build * feat(frontend): fix build * feat(frontend): fix how mobileViewOnSmallerScreens works for older apps * feat(frontend): fix build --- frontend/src/lib/components/Dev.svelte | 3 +- .../components/apps/editor/AppEditor.svelte | 35 +++++++++++++++++- .../apps/editor/AppEditorHeader.svelte | 26 +++++++++---- .../components/apps/editor/AppPreview.svelte | 5 ++- frontend/src/lib/components/apps/types.ts | 1 + .../toggleButton-v2/ToggleEnable.svelte | 37 +++++++++++++++++++ .../(root)/(logged)/apps/add/+page.svelte | 1 + .../(logged)/apps/get/[...path]/+page.svelte | 3 +- .../[workspace]/[...secret]/+page.svelte | 2 +- 9 files changed, 98 insertions(+), 15 deletions(-) create mode 100644 frontend/src/lib/components/common/toggleButton-v2/ToggleEnable.svelte diff --git a/frontend/src/lib/components/Dev.svelte b/frontend/src/lib/components/Dev.svelte index 55a6bb80a6..f6054f7184 100644 --- a/frontend/src/lib/components/Dev.svelte +++ b/frontend/src/lib/components/Dev.svelte @@ -456,7 +456,8 @@ testStepStore, saveDraft: () => {}, initialPath: '', - flowInputsStore: writable({}) + flowInputsStore: writable({}), + customUi: {} }) $: updateFlow($flowStore) diff --git a/frontend/src/lib/components/apps/editor/AppEditor.svelte b/frontend/src/lib/components/apps/editor/AppEditor.svelte index 8649b9b146..72a83f02e1 100644 --- a/frontend/src/lib/components/apps/editor/AppEditor.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditor.svelte @@ -35,7 +35,7 @@ import VariableEditor from '$lib/components/VariableEditor.svelte' import { VariableService, type Policy } from '$lib/gen' import { initHistory } from '$lib/history' - import { Component, Minus, Paintbrush, Plus } from 'lucide-svelte' + import { Component, Minus, Paintbrush, Plus, Smartphone } from 'lucide-svelte' import { findGridItem, findGridItemParentGrid } from './appUtils' import ComponentNavigation from './component/ComponentNavigation.svelte' import CssSettings from './componentsPanel/CssSettings.svelte' @@ -222,7 +222,10 @@ $: context.mode = $mode == 'dnd' ? 'editor' : 'viewer' - $: width = $breakpoint === 'sm' ? 'min-w-[400px] max-w-[656px]' : 'min-w-[710px] w-full' + $: width = + $breakpoint === 'sm' && $appStore?.mobileViewOnSmallerScreens !== false + ? 'min-w-[400px] max-w-[656px]' + : 'min-w-[710px] w-full' let selectedTab: 'insert' | 'settings' | 'css' = 'insert' @@ -670,6 +673,34 @@ {/if} + {#if !$appStore?.mobileViewOnSmallerScreens && $breakpoint === 'sm'} +
+
+
Mobile View
+
+ Enabling mobile view allows you to adjust component placement for + smaller screens. +
+ +
+
+ {/if} diff --git a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte index 0cff2b872f..dd3467df78 100644 --- a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte @@ -83,6 +83,7 @@ import { getDeleteInput } from '../components/display/dbtable/queries/delete' import { collectOneOfFields } from './appUtils' import Summary from '$lib/components/Summary.svelte' + import ToggleEnable from '$lib/components/common/toggleButton-v2/ToggleEnable.svelte' async function hash(message) { try { @@ -1293,20 +1294,29 @@ /> {/if} -
+
- + + {#if $breakpoint === 'sm'} + + {/if}
diff --git a/frontend/src/lib/components/apps/editor/AppPreview.svelte b/frontend/src/lib/components/apps/editor/AppPreview.svelte index 0012a31843..74762ba031 100644 --- a/frontend/src/lib/components/apps/editor/AppPreview.svelte +++ b/frontend/src/lib/components/apps/editor/AppPreview.svelte @@ -153,7 +153,10 @@ .filter((x) => x != undefined) as string[] } - $: width = $breakpoint === 'sm' ? 'max-w-[640px]' : 'w-full min-w-[768px]' + $: width = + $breakpoint === 'sm' && $appStore?.mobileViewOnSmallerScreens !== false + ? 'max-w-[640px]' + : 'w-full min-w-[768px]' $: lockedClasses = isLocked ? '!max-h-[400px] overflow-hidden pointer-events-none' : '' function onThemeChange() { $darkMode = document.documentElement.classList.contains('dark') diff --git a/frontend/src/lib/components/apps/types.ts b/frontend/src/lib/components/apps/types.ts index 4ce6979aa5..aa19e57b6b 100644 --- a/frontend/src/lib/components/apps/types.ts +++ b/frontend/src/lib/components/apps/types.ts @@ -161,6 +161,7 @@ export type App = { subgrids?: Record theme: AppTheme | undefined hideLegacyTopBar?: boolean | undefined + mobileViewOnSmallerScreens?: boolean | undefined } export type ConnectingInput = { diff --git a/frontend/src/lib/components/common/toggleButton-v2/ToggleEnable.svelte b/frontend/src/lib/components/common/toggleButton-v2/ToggleEnable.svelte new file mode 100644 index 0000000000..54b5a44d3c --- /dev/null +++ b/frontend/src/lib/components/common/toggleButton-v2/ToggleEnable.svelte @@ -0,0 +1,37 @@ + + +
+ + + +
diff --git a/frontend/src/routes/(root)/(logged)/apps/add/+page.svelte b/frontend/src/routes/(root)/(logged)/apps/add/+page.svelte index 9e5d9ed267..56c4ec8921 100644 --- a/frontend/src/routes/(root)/(logged)/apps/add/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/apps/add/+page.svelte @@ -143,6 +143,7 @@ setUpTopBarComponentContent(id, value) value.hideLegacyTopBar = true + value.mobileViewOnSmallerScreens = false value = value } diff --git a/frontend/src/routes/(root)/(logged)/apps/get/[...path]/+page.svelte b/frontend/src/routes/(root)/(logged)/apps/get/[...path]/+page.svelte index b1fdf13279..b81f8d0710 100644 --- a/frontend/src/routes/(root)/(logged)/apps/get/[...path]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/apps/get/[...path]/+page.svelte @@ -1,5 +1,5 @@