diff --git a/packages/client/manifest.json b/packages/client/manifest.json index f730aedfe0..655a785fed 100644 --- a/packages/client/manifest.json +++ b/packages/client/manifest.json @@ -4402,6 +4402,7 @@ "type": "text", "label": "Row ID", "key": "rowId", + "nested": true, "dependsOn": { "setting": "actionType", "value": "Create", diff --git a/packages/client/src/components/app/blocks/FormBlock.svelte b/packages/client/src/components/app/blocks/FormBlock.svelte index da0abaeb06..7b23033f45 100644 --- a/packages/client/src/components/app/blocks/FormBlock.svelte +++ b/packages/client/src/components/app/blocks/FormBlock.svelte @@ -83,7 +83,7 @@ operator: "equal", type: "string", value: rowId, - valueType: "binding", + valueType: "Binding", }, ] // If we're using an "update" form, use the real data provider. If we're @@ -93,6 +93,10 @@ actionType !== "Create" ? `{{ literal ${safe(providerId)} }}` : { rows: [{}] } + $: renderDeleteButton = showDeleteButton && actionType === "Update" + $: renderSaveButton = showSaveButton && actionType !== "View" + $: renderButtons = renderDeleteButton || renderSaveButton + $: renderHeader = renderButtons || title const fetchSchema = async () => { schema = (await fetchDatasourceSchema(dataSource)) || {} @@ -108,110 +112,132 @@ -
- {#if fields?.length} + {#if fields?.length} + - -
- -
- {#if showDeleteButton && actionType === "Update"} - - {/if} - {#if showSaveButton && actionType !== "View"} - - {/if} -
-
- - {#each fields as field} - {#if getComponentForField(field)} - - {/if} - {/each} + {#if renderHeader} + + {#if title} + + {/if} + {#if renderButtons} + + {#if renderDeleteButton} + + {/if} + {#if renderSaveButton} + + {/if} + + {/if} -
+ {/if} + + {#each fields as field, idx} + {#if getComponentForField(field)} + + {/if} + {/each} +
- {:else} - - {/if} -
+ + {:else} + + {/if}
- -