From 43b5c120b5225f78cfb68febe4572a177dafed89 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 9 Nov 2022 10:28:15 +0000 Subject: [PATCH 1/6] Refactor form block to use a different structure depending on type, and fix issue with bindings breaking and forms not appearing --- .../components/app/blocks/FormBlock.svelte | 242 ------------------ .../app/blocks/form/FormBlock.svelte | 101 ++++++++ .../app/blocks/form/InnerFormBlock.svelte | 192 ++++++++++++++ .../client/src/components/app/blocks/index.js | 2 +- 4 files changed, 294 insertions(+), 243 deletions(-) delete mode 100644 packages/client/src/components/app/blocks/FormBlock.svelte create mode 100644 packages/client/src/components/app/blocks/form/FormBlock.svelte create mode 100644 packages/client/src/components/app/blocks/form/InnerFormBlock.svelte diff --git a/packages/client/src/components/app/blocks/FormBlock.svelte b/packages/client/src/components/app/blocks/FormBlock.svelte deleted file mode 100644 index 3311ddd7bb..0000000000 --- a/packages/client/src/components/app/blocks/FormBlock.svelte +++ /dev/null @@ -1,242 +0,0 @@ - - - - {#if fields?.length} - - - - - {#if renderHeader} - - - {#if renderButtons} - - {#if renderDeleteButton} - - {/if} - {#if renderSaveButton} - - {/if} - - {/if} - - {/if} - - {#each fields as field, idx} - {#if getComponentForField(field)} - - {/if} - {/each} - - - - - - {:else} - - {/if} - diff --git a/packages/client/src/components/app/blocks/form/FormBlock.svelte b/packages/client/src/components/app/blocks/form/FormBlock.svelte new file mode 100644 index 0000000000..9ec587519f --- /dev/null +++ b/packages/client/src/components/app/blocks/form/FormBlock.svelte @@ -0,0 +1,101 @@ + + + + {#if actionType === "Create"} + + + + {:else} + + + + + + {/if} + diff --git a/packages/client/src/components/app/blocks/form/InnerFormBlock.svelte b/packages/client/src/components/app/blocks/form/InnerFormBlock.svelte new file mode 100644 index 0000000000..948584120b --- /dev/null +++ b/packages/client/src/components/app/blocks/form/InnerFormBlock.svelte @@ -0,0 +1,192 @@ + + +{#if fields?.length} + + + {#if renderHeader} + + + {#if renderButtons} + + {#if renderDeleteButton} + + {/if} + {#if renderSaveButton} + + {/if} + + {/if} + + {/if} + + {#each fields as field, idx} + {#if getComponentForField(field)} + + {/if} + {/each} + + + +{:else} + +{/if} diff --git a/packages/client/src/components/app/blocks/index.js b/packages/client/src/components/app/blocks/index.js index 734bff2c0f..0f05890fef 100644 --- a/packages/client/src/components/app/blocks/index.js +++ b/packages/client/src/components/app/blocks/index.js @@ -1,5 +1,5 @@ export { default as tableblock } from "./TableBlock.svelte" export { default as cardsblock } from "./CardsBlock.svelte" export { default as repeaterblock } from "./RepeaterBlock.svelte" -export { default as formblock } from "./FormBlock.svelte" +export { default as formblock } from "./form/FormBlock.svelte" export { default as chartblock } from "./ChartBlock.svelte" From 2eeac325f31abe2a479230454da80b6566286c35 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 14 Nov 2022 09:25:45 +0000 Subject: [PATCH 2/6] Adjust styles so placeholder component is left aligned --- packages/client/src/components/app/blocks/form/FormBlock.svelte | 2 +- .../client/src/components/app/blocks/form/InnerFormBlock.svelte | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/client/src/components/app/blocks/form/FormBlock.svelte b/packages/client/src/components/app/blocks/form/FormBlock.svelte index 9ec587519f..8964475673 100644 --- a/packages/client/src/components/app/blocks/form/FormBlock.svelte +++ b/packages/client/src/components/app/blocks/form/FormBlock.svelte @@ -65,7 +65,7 @@ type="container" props={{ direction: "column", - hAlign: "center", + hAlign: "left", vAlign: "stretch", }} > diff --git a/packages/client/src/components/app/blocks/form/InnerFormBlock.svelte b/packages/client/src/components/app/blocks/form/InnerFormBlock.svelte index 948584120b..c4e9b0941c 100644 --- a/packages/client/src/components/app/blocks/form/InnerFormBlock.svelte +++ b/packages/client/src/components/app/blocks/form/InnerFormBlock.svelte @@ -97,6 +97,8 @@ styles={{ normal: { width: "600px", + "margin-left": "auto", + "margin-right": "auto", }, }} context="form" From 4c366114f02b205d39b59af458a944a5bb3c1e6d Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 14 Nov 2022 09:33:01 +0000 Subject: [PATCH 3/6] Fix date time field inconsistency with showing time --- packages/client/src/components/app/forms/DateTimeField.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/components/app/forms/DateTimeField.svelte b/packages/client/src/components/app/forms/DateTimeField.svelte index 19ff49c9ba..6bcd20d250 100644 --- a/packages/client/src/components/app/forms/DateTimeField.svelte +++ b/packages/client/src/components/app/forms/DateTimeField.svelte @@ -6,7 +6,7 @@ export let label export let placeholder export let disabled = false - export let enableTime = false + export let enableTime = true export let timeOnly = false export let time24hr = false export let ignoreTimezones = false From e7061647da6e2989166a201bc30a1526febe817c Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 15 Nov 2022 12:52:06 +0000 Subject: [PATCH 4/6] Ensure action parameters can never be null and fix display of close screen modal action --- .../ButtonActionDrawer.svelte | 22 +++++++++---------- .../actions/CloseScreenModal.svelte | 9 ++++++-- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/ButtonActionDrawer.svelte b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/ButtonActionDrawer.svelte index ef7c81233b..1d18fa3a92 100644 --- a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/ButtonActionDrawer.svelte +++ b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/ButtonActionDrawer.svelte @@ -23,14 +23,18 @@ export let bindings = [] export let nested - $: showAvailableActions = !actions?.length - let actionQuery - $: parsedQuery = - typeof actionQuery === "string" ? actionQuery.toLowerCase().trim() : "" - let selectedAction = actions?.length ? actions[0] : null + $: { + // Ensure parameters object is never null + if (selectedAction && !selectedAction.parameters) { + selectedAction.parameters = {} + } + } + $: parsedQuery = + typeof actionQuery === "string" ? actionQuery.toLowerCase().trim() : "" + $: showAvailableActions = !actions?.length $: mappedActionTypes = actionTypes.reduce((acc, action) => { let parsedName = action.name.toLowerCase().trim() if (parsedQuery.length && parsedName.indexOf(parsedQuery) < 0) { @@ -40,7 +44,6 @@ acc[action.type].push(action) return acc }, {}) - // These are ephemeral bindings which only exist while executing actions $: eventContexBindings = getEventContextBindings( $currentAsset, @@ -50,9 +53,8 @@ selectedAction?.id ) $: allBindings = eventContexBindings.concat(bindings) - - // Assign a unique ID to each action $: { + // Ensure each action has a unique ID if (actions) { actions.forEach(action => { if (!action.id) { @@ -61,13 +63,11 @@ }) } } - $: selectedActionComponent = selectedAction && actionTypes.find(t => t.name === selectedAction[EVENT_TYPE_KEY])?.component - - // Select the first action if we delete an action $: { + // Select the first action if we delete an action if (selectedAction && !actions?.includes(selectedAction)) { selectedAction = actions?.[0] } diff --git a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/CloseScreenModal.svelte b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/CloseScreenModal.svelte index 5f3b3ef639..d01a085a23 100644 --- a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/CloseScreenModal.svelte +++ b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/CloseScreenModal.svelte @@ -6,9 +6,11 @@ export let bindings = [] -Navigate To screen, or leave blank. -
+ + You can optionally navigate to another screen after closing the screen + modal. +