diff --git a/packages/payload/src/collections/config/sanitize.ts b/packages/payload/src/collections/config/sanitize.ts index 617d8cdb0..b073c8ee9 100644 --- a/packages/payload/src/collections/config/sanitize.ts +++ b/packages/payload/src/collections/config/sanitize.ts @@ -158,7 +158,12 @@ export const sanitizeCollection = async ( } } - sanitized.labels = sanitized.labels || formatLabels(sanitized.slug) + const defaultLabels = formatLabels(sanitized.slug) + + sanitized.labels = { + plural: sanitized.labels?.plural || defaultLabels.plural, + singular: sanitized.labels?.singular || defaultLabels.singular, + } if (sanitized.versions) { if (sanitized.versions === true) { diff --git a/packages/payload/src/utilities/formatLabels.ts b/packages/payload/src/utilities/formatLabels.ts index 117ec302c..b413ba2a1 100644 --- a/packages/payload/src/utilities/formatLabels.ts +++ b/packages/payload/src/utilities/formatLabels.ts @@ -22,6 +22,7 @@ const toWords = (inputString: string, joinWords = false): string => { const formatLabels = (slug: string): { plural: string; singular: string } => { const words = toWords(slug) + return isPlural(slug) ? { plural: words, diff --git a/test/config/config.ts b/test/config/config.ts index 957b7c799..ee2237c40 100644 --- a/test/config/config.ts +++ b/test/config/config.ts @@ -14,6 +14,10 @@ export default buildConfigWithDefaults({ collections: [ { slug: 'pages', + labels: { + // Purposefully exclude `singular` to test default inheritance + plural: 'Pages', + }, access: { create: () => true, delete: () => true, diff --git a/test/config/int.spec.ts b/test/config/int.spec.ts index 398adbbd0..a715935a1 100644 --- a/test/config/int.spec.ts +++ b/test/config/int.spec.ts @@ -126,6 +126,11 @@ describe('Config', () => { description: 'The blockOne of this page', }) }) + + it('properly merges collection.labels with defaults', () => { + const [collection] = payload.config.collections + expect(collection?.labels).toEqual({ plural: 'Pages', singular: 'Page' }) + }) }) describe('global config', () => {