WIP - configure list views
This commit is contained in:
@@ -70,12 +70,36 @@ export const useFields = () => {
|
||||
|
||||
/**
|
||||
* Build a ListView configuration from object definition
|
||||
* @param objectDef - The object definition containing fields
|
||||
* @param customConfig - Optional custom configuration
|
||||
* @param listLayoutConfig - Optional list view layout configuration from page_layouts
|
||||
*/
|
||||
const buildListViewConfig = (
|
||||
objectDef: any,
|
||||
customConfig?: Partial<ListViewConfig>
|
||||
customConfig?: Partial<ListViewConfig>,
|
||||
listLayoutConfig?: { fields: Array<{ fieldId: string; order?: number }> } | null
|
||||
): ListViewConfig => {
|
||||
const fields = objectDef.fields?.map(mapFieldDefinitionToConfig) || []
|
||||
let fields = objectDef.fields?.map(mapFieldDefinitionToConfig) || []
|
||||
|
||||
// If a list layout is provided, filter and order fields according to it
|
||||
if (listLayoutConfig && listLayoutConfig.fields && listLayoutConfig.fields.length > 0) {
|
||||
// Sort layout fields by order
|
||||
const sortedLayoutFields = [...listLayoutConfig.fields].sort((a, b) => (a.order ?? 0) - (b.order ?? 0))
|
||||
|
||||
// Map layout fields to actual field configs, preserving order
|
||||
const orderedFields: FieldConfig[] = []
|
||||
for (const layoutField of sortedLayoutFields) {
|
||||
const fieldConfig = fields.find((f: FieldConfig) => f.id === layoutField.fieldId)
|
||||
if (fieldConfig) {
|
||||
orderedFields.push(fieldConfig)
|
||||
}
|
||||
}
|
||||
|
||||
// Use ordered fields if we found any, otherwise fall back to all fields
|
||||
if (orderedFields.length > 0) {
|
||||
fields = orderedFields
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
objectApiName: objectDef.apiName,
|
||||
|
||||
Reference in New Issue
Block a user