diff --git a/backend/src/object/field-mapper.service.ts b/backend/src/object/field-mapper.service.ts index 5c55c0d..1de9b1b 100644 --- a/backend/src/object/field-mapper.service.ts +++ b/backend/src/object/field-mapper.service.ts @@ -152,6 +152,7 @@ export class FieldMapperService { 'phone': 'text', 'picklist': 'select', 'multipicklist': 'multiSelect', + 'multi_picklist': 'multiSelect', 'lookup': 'belongsTo', 'master-detail': 'belongsTo', 'currency': 'currency', diff --git a/backend/src/object/object.service.ts b/backend/src/object/object.service.ts index dd3a1b1..263b00f 100644 --- a/backend/src/object/object.service.ts +++ b/backend/src/object/object.service.ts @@ -336,13 +336,27 @@ export class ObjectService { updated_at: knex.fn.now(), }; - // Store relationDisplayField in UI metadata if provided - if (data.relationDisplayField || data.relationObjects || data.relationTypeField) { - fieldData.ui_metadata = JSON.stringify({ - relationDisplayField: data.relationDisplayField, - relationObjects: data.relationObjects, - relationTypeField: data.relationTypeField, - }); + // Build UI metadata from all sources + const uiMetadataObj: any = {}; + + // Merge general uiMetadata (options, placeholder, helpText, etc.) + if (data.uiMetadata && typeof data.uiMetadata === 'object') { + Object.assign(uiMetadataObj, data.uiMetadata); + } + + // Store relation-specific fields in UI metadata if provided + if (data.relationDisplayField) { + uiMetadataObj.relationDisplayField = data.relationDisplayField; + } + if (data.relationObjects) { + uiMetadataObj.relationObjects = data.relationObjects; + } + if (data.relationTypeField) { + uiMetadataObj.relationTypeField = data.relationTypeField; + } + + if (Object.keys(uiMetadataObj).length > 0) { + fieldData.ui_metadata = JSON.stringify(uiMetadataObj); } await knex('field_definitions').insert(fieldData); diff --git a/frontend/components/fields/FieldRenderer.vue b/frontend/components/fields/FieldRenderer.vue index 6574b23..fe5cc55 100644 --- a/frontend/components/fields/FieldRenderer.vue +++ b/frontend/components/fields/FieldRenderer.vue @@ -249,6 +249,51 @@ const handleRelationTypeUpdate = (value: string | null) => { + +