From f6f0b575d6a7925d9956aa61d21b08cfc919a5fb Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 31 Jul 2024 16:44:46 +0100 Subject: [PATCH] Add top level screen layout setting --- .../_components/Screen/GeneralPanel.svelte | 20 ++++++++++++ .../client/src/components/Component.svelte | 1 - packages/client/src/components/Screen.svelte | 21 ++++++++++++- .../client/src/components/app/Layout.svelte | 10 +++--- .../components/preview/GridDNDHandler.svelte | 31 ++++++++----------- .../src/components/preview/SettingsBar.svelte | 2 +- packages/client/src/stores/screens.js | 23 +++++++------- packages/client/src/utils/grid.js | 2 +- 8 files changed, 73 insertions(+), 37 deletions(-) diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Screen/GeneralPanel.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Screen/GeneralPanel.svelte index cecfdba858..3d5ef6a278 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Screen/GeneralPanel.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Screen/GeneralPanel.svelte @@ -14,6 +14,7 @@ import sanitizeUrl from "helpers/sanitizeUrl" import ButtonActionEditor from "components/design/settings/controls/ButtonActionEditor/ButtonActionEditor.svelte" import { getBindableProperties } from "dataBinding" + import BarButtonList from "components/design/settings/controls/BarButtonList.svelte" $: bindings = getBindableProperties($selectedScreen, null) @@ -124,6 +125,24 @@ disabled: !!$selectedScreen.layoutId, }, }, + { + key: "layout", + label: "Layout", + defaultValue: "flex", + control: BarButtonList, + props: { + options: [ + { + barIcon: "ModernGridView", + value: "flex", + }, + { + barIcon: "ViewGrid", + value: "grid", + }, + ], + }, + }, ] const removeCustomLayout = async () => { @@ -149,6 +168,7 @@ value={Helpers.deepGet($selectedScreen, setting.key)} onChange={val => setScreenSetting(setting, val)} props={{ ...setting.props, error: errors[setting.key] }} + defaultValue={setting.defaultValue} {bindings} /> {/each} diff --git a/packages/client/src/components/Component.svelte b/packages/client/src/components/Component.svelte index 6ff6fa00fc..852aa30287 100644 --- a/packages/client/src/components/Component.svelte +++ b/packages/client/src/components/Component.svelte @@ -619,7 +619,6 @@ if (isBlock) { return } - console.log("select", id) e.stopPropagation() builderStore.actions.selectComponent(id) } diff --git a/packages/client/src/components/Screen.svelte b/packages/client/src/components/Screen.svelte index ac0af9f3b2..ab1cc7812d 100644 --- a/packages/client/src/components/Screen.svelte +++ b/packages/client/src/components/Screen.svelte @@ -13,10 +13,29 @@ const onLoadActions = memo() // Get the screen definition for the current route - $: screenDefinition = $screenStore.activeScreen?.props + $: screenDefinition = getScreenDefinition($screenStore.activeScreen) $: onLoadActions.set($screenStore.activeScreen?.onLoad) $: runOnLoadActions($onLoadActions, params) + const getScreenDefinition = activeScreen => { + if (!activeScreen) { + return null + } + + // Enrich screen definition with some builder screen props and styles + return { + ...activeScreen.props, + layout: activeScreen.layout, + _styles: { + ...activeScreen.props._styles, + normal: { + ...activeScreen.props._styles?.normal, + flex: "1 1 auto", + }, + }, + } + } + // Enrich and execute any on load actions. // We manually construct the full context here as this component is the // one that provides the url context, so it is not available in $context yet diff --git a/packages/client/src/components/app/Layout.svelte b/packages/client/src/components/app/Layout.svelte index af74e14aa0..cc2a086b2e 100644 --- a/packages/client/src/components/app/Layout.svelte +++ b/packages/client/src/components/app/Layout.svelte @@ -36,8 +36,8 @@ export let logoLinkUrl export let openLogoLinkInNewTab export let textAlign - export let embedded = false + export let pageLayout = "flex" const NavigationClasses = { Top: "top", @@ -319,7 +319,7 @@ } }} > -
+
@@ -481,8 +481,9 @@ position: relative; padding: 32px; } - .main.size--max { - padding: 0; + .main.layout--grid { + padding-top: 0; + padding-bottom: 0; } .layout--none .main { padding: 0; @@ -501,6 +502,7 @@ } .size--max { width: 100%; + padding: 0; } /* Nav components */ diff --git a/packages/client/src/components/preview/GridDNDHandler.svelte b/packages/client/src/components/preview/GridDNDHandler.svelte index 67e5a0bf39..6cc322a83e 100644 --- a/packages/client/src/components/preview/GridDNDHandler.svelte +++ b/packages/client/src/components/preview/GridDNDHandler.svelte @@ -1,13 +1,13 @@