Added datasource resolution behaviour for a Relationship picker nested in a form block

This commit is contained in:
Dean 2024-01-02 17:55:28 +00:00
parent 90d52ce9b7
commit c576b6ea19
1 changed files with 21 additions and 3 deletions

View File

@ -1,6 +1,9 @@
<script> <script>
import { currentAsset } from "builderStore" import { currentAsset, store } from "builderStore"
import { findClosestMatchingComponent } from "builderStore/componentUtils" import {
findClosestMatchingComponent,
findComponent,
} from "builderStore/componentUtils"
import { import {
getDatasourceForProvider, getDatasourceForProvider,
getSchemaForDatasource, getSchemaForDatasource,
@ -20,8 +23,23 @@
component => component._component.endsWith("/form") component => component._component.endsWith("/form")
) )
const resolveDatasource = (currentAsset, componentInstance, form) => {
if (!form && componentInstance._id != $store.selectedComponentId) {
const block = findComponent(
currentAsset.props,
$store.selectedComponentId
)
const def = store.actions.components.getDefinition(block._component)
return def?.block === true
? getDatasourceForProvider(currentAsset, block)
: {}
} else {
return getDatasourceForProvider(currentAsset, form)
}
}
// Get that form's schema // Get that form's schema
$: datasource = getDatasourceForProvider($currentAsset, form) $: datasource = resolveDatasource($currentAsset, componentInstance, form)
$: formSchema = getSchemaForDatasource($currentAsset, datasource)?.schema $: formSchema = getSchemaForDatasource($currentAsset, datasource)?.schema
// Get the schema for the relationship field that this picker is using // Get the schema for the relationship field that this picker is using