From 2650c70960a7374307a8862c3940c97d337d1d30 Mon Sep 17 00:00:00 2001 From: Jessica Chowdhury <67977755+JessChowdhury@users.noreply.github.com> Date: Fri, 15 Dec 2023 15:51:01 +0000 Subject: [PATCH] fix: format fields within tab for list controls (#4516) --- .../views/collections/List/formatFields.tsx | 46 +++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/packages/payload/src/admin/components/views/collections/List/formatFields.tsx b/packages/payload/src/admin/components/views/collections/List/formatFields.tsx index 5d7243fb8be..468b9aa3f7b 100644 --- a/packages/payload/src/admin/components/views/collections/List/formatFields.tsx +++ b/packages/payload/src/admin/components/views/collections/List/formatFields.tsx @@ -1,5 +1,3 @@ -import React from 'react' - import type { SanitizedCollectionConfig } from '../../../../../collections/config/types' import type { Field } from '../../../../../fields/config/types' @@ -8,29 +6,39 @@ import { fieldAffectsData, fieldIsPresentationalOnly } from '../../../../../fiel const formatFields = (config: SanitizedCollectionConfig): Field[] => { const hasID = config.fields.findIndex((field) => fieldAffectsData(field) && field.name === 'id') > -1 + + const defaultIDField: Field = { + name: 'id', + admin: { + disableBulkEdit: true, + }, + label: 'ID', + type: 'text', + } + + const shouldSkipField = (field: Field): boolean => + !fieldIsPresentationalOnly(field) && (field.hidden === true || field.admin?.disabled === true) + const fields: Field[] = config.fields.reduce( (formatted, field) => { - if ( - !fieldIsPresentationalOnly(field) && - (field.hidden === true || field?.admin?.disabled === true) - ) { + if (shouldSkipField(field)) { return formatted } - return [...formatted, field] + const formattedField = + field.type === 'tabs' + ? { + ...field, + tabs: field.tabs.map((tab) => ({ + ...tab, + fields: tab.fields.filter((tabField) => !shouldSkipField(tabField)), + })), + } + : field + + return [...formatted, formattedField] }, - hasID - ? [] - : [ - { - name: 'id', - admin: { - disableBulkEdit: true, - }, - label: 'ID', - type: 'text', - }, - ], + hasID ? [] : [defaultIDField], ) return fields