Add Contact standard object, related lists, meilisearch, pagination, search, AI assistant

This commit is contained in:
Francisco Gaona
2026-01-16 18:01:26 +01:00
parent 51c82d3d95
commit 20fc90a3fb
62 changed files with 6613 additions and 278 deletions

View File

@@ -21,11 +21,13 @@ interface Props {
}
const props = withDefaults(defineProps<Props>(), {
baseUrl: '/central',
// Default to runtime objects endpoint; override when consuming central entities
baseUrl: '/runtime/objects',
})
const emit = defineEmits<{
'update:modelValue': [value: any]
'update:relatedFields': [value: Record<string, any>]
}>()
const { api } = useApi()
@@ -39,6 +41,10 @@ const isReadOnly = computed(() => props.readonly || props.field.isReadOnly || pr
const isEditMode = computed(() => props.mode === ViewMode.EDIT)
const isListMode = computed(() => props.mode === ViewMode.LIST)
const isDetailMode = computed(() => props.mode === ViewMode.DETAIL)
const relationTypeValue = computed(() => {
if (!props.field.relationTypeField) return null
return props.recordData?.[props.field.relationTypeField] ?? null
})
// Check if field is a relationship field
const isRelationshipField = computed(() => {
@@ -99,6 +105,13 @@ const formatValue = (val: any): string => {
return String(val)
}
}
const handleRelationTypeUpdate = (value: string | null) => {
if (!props.field.relationTypeField) return
emit('update:relatedFields', {
[props.field.relationTypeField]: value,
})
}
</script>
<template>
@@ -161,7 +174,9 @@ const formatValue = (val: any): string => {
v-if="field.type === FieldType.BELONGS_TO"
:field="field"
v-model="value"
:relation-type-value="relationTypeValue"
:base-url="baseUrl"
@update:relation-type-value="handleRelationTypeUpdate"
/>
<!-- Text Input -->