Skip to main content

CnRelatedCollections

Declarative related-object list sections for a type:"detail" page body.

Each entry renders a titled section containing a CnObjectListWidget scoped to the current detail-page object via @objectId / @object.<field> filter tokens (resolved by CnObjectListWidget from the cnObjectContext inject CnDetailPage provides). Replaces the hand-coded "running cases / contracts / contacts" sections on ClientDetail, ContactDetail, MdmMasterEntityDetail.

CnDetailPage mounts this automatically when the manifest page config declares relatedCollections.

Manifest config (consumed by CnDetailPage)

"config": {
"register": "pipelinq", "schema": "client",
"relatedCollections": [
{
"title": "Running cases",
"register": "pipelinq", "schema": "case",
"filter": { "client": "@objectId", "status": "open" },
"columns": [{ "key": "title", "label": "Case" }, { "key": "status", "label": "Status" }],
"limit": 10,
"rowRoute": "cases-detail"
},
{
"title": "Contracts",
"register": "pipelinq", "schema": "contract",
"filter": { "client": "@objectId" }
}
]
}

Props

PropTypeDefaultDescription
collectionsArray[]Related-collection descriptors: { title?, register, schema, filter?, columns?, sort?, limit?, rowRoute? }. Each maps 1:1 to a CnObjectListWidget content blob. limit defaults to 10.

Events

EventPayloadDescription
row-click{ collection, row, index }A row in a section was clicked. (The list already navigates to rowRoute when set; this is for extra host handling.)

Slots

SlotScopeDescription
section-action{ collection, index }Right-aligned action surface in a section header (e.g. a "Link existing" relation-link button).