Skip to content

Commit 5561799

Browse files
authored
fix: widgets and other features failing with transitive dependency imports (#15392)
### What Re-exports UI components from `@payloadcms/next/rsc` and `@payloadcms/next/client` instead of requiring direct imports from `@payloadcms/ui` in the generated importMap. ### Why The generated `importMap.js` was importing from `@payloadcms/ui`, which isn't in users' `package.json` (it's a transitive dependency through `@payloadcms/next`). This breaks import resolution with pnpm and can fail in production builds with any package manager without `@payloadcms/ui` installed. ### How - Added re-exports in `@payloadcms/next/rsc` for: `CollectionCards`, `FolderField`, `FolderTableCell`, `SlugField` - Added re-exports in `@payloadcms/next/client` for: `FolderTypeField` and all `QueryPresets*` components - Updated all component paths in `@payloadcms/payload` to use `@payloadcms/next/rsc` or `@payloadcms/next/client` instead of `@payloadcms/ui` Fixes #15010
1 parent 8b21263 commit 5561799

File tree

9 files changed

+24
-13
lines changed

9 files changed

+24
-13
lines changed

packages/next/src/exports/client.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,13 @@
33
export { DefaultNavClient } from '../elements/Nav/index.client.js'
44
export { NavHamburger } from '../elements/Nav/NavHamburger/index.js'
55
export { NavWrapper } from '../elements/Nav/NavWrapper/index.js'
6+
export {
7+
FolderTypeField,
8+
QueryPresetsAccessCell,
9+
QueryPresetsColumnField,
10+
QueryPresetsColumnsCell,
11+
QueryPresetsGroupByCell,
12+
QueryPresetsGroupByField,
13+
QueryPresetsWhereCell,
14+
QueryPresetsWhereField,
15+
} from '@payloadcms/ui'

packages/next/src/exports/rsc.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export { DocumentHeader } from '../elements/DocumentHeader/index.js'
22
export { Logo } from '../elements/Logo/index.js'
33
export { DefaultNav } from '../elements/Nav/index.js'
4+
export { CollectionCards, FolderField, FolderTableCell, SlugField } from '@payloadcms/ui/rsc'

packages/payload/src/config/sanitize.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ const sanitizeAdminConfig = (configToSanitize: Config): Partial<SanitizedConfig>
5757
}
5858
;(sanitizedConfig.admin!.dashboard ??= { widgets: [] }).widgets.push({
5959
slug: 'collections',
60-
ComponentPath: '@payloadcms/ui/rsc#CollectionCards',
60+
ComponentPath: '@payloadcms/next/rsc#CollectionCards',
6161
minWidth: 'full',
6262
})
6363
sanitizedConfig.admin!.dashboard.defaultLayout ??= [

packages/payload/src/fields/baseFields/slug/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ export const slugField: SlugField = ({
131131
clientProps: {
132132
useAsSlug,
133133
} satisfies SlugFieldClientPropsOnly,
134-
path: '@payloadcms/ui#SlugField',
134+
path: '@payloadcms/next/rsc#SlugField',
135135
},
136136
},
137137
width: '100%',

packages/payload/src/folders/addFolderFieldToCollection.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ export const addFolderFieldToCollection = ({
2323
allowCreate: false,
2424
allowEdit: false,
2525
components: {
26-
Cell: '@payloadcms/ui/rsc#FolderTableCell',
27-
Field: '@payloadcms/ui/rsc#FolderField',
26+
Cell: '@payloadcms/next/rsc#FolderTableCell',
27+
Field: '@payloadcms/next/rsc#FolderField',
2828
},
2929
},
3030
},

packages/payload/src/folders/createFolderCollection.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export const createFolderCollection = ({
8686
admin: {
8787
components: {
8888
Field: {
89-
path: '@payloadcms/ui#FolderTypeField',
89+
path: '@payloadcms/next/client#FolderTypeField',
9090
},
9191
},
9292
position: 'sidebar',

packages/payload/src/query-presets/config.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ export const getQueryPresetsConfig = (config: Config): CollectionConfig => ({
5151
type: 'json',
5252
admin: {
5353
components: {
54-
Cell: '@payloadcms/ui#QueryPresetsWhereCell',
55-
Field: '@payloadcms/ui#QueryPresetsWhereField',
54+
Cell: '@payloadcms/next/client#QueryPresetsWhereCell',
55+
Field: '@payloadcms/next/client#QueryPresetsWhereField',
5656
},
5757
},
5858
hooks: {
@@ -78,8 +78,8 @@ export const getQueryPresetsConfig = (config: Config): CollectionConfig => ({
7878
type: 'json',
7979
admin: {
8080
components: {
81-
Cell: '@payloadcms/ui#QueryPresetsColumnsCell',
82-
Field: '@payloadcms/ui#QueryPresetsColumnField',
81+
Cell: '@payloadcms/next/client#QueryPresetsColumnsCell',
82+
Field: '@payloadcms/next/client#QueryPresetsColumnField',
8383
},
8484
},
8585
validate: (value) => {
@@ -99,8 +99,8 @@ export const getQueryPresetsConfig = (config: Config): CollectionConfig => ({
9999
type: 'text',
100100
admin: {
101101
components: {
102-
Cell: '@payloadcms/ui#QueryPresetsGroupByCell',
103-
Field: '@payloadcms/ui#QueryPresetsGroupByField',
102+
Cell: '@payloadcms/next/client#QueryPresetsGroupByCell',
103+
Field: '@payloadcms/next/client#QueryPresetsGroupByField',
104104
},
105105
},
106106
label: 'Group By',

packages/payload/src/query-presets/constraints.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export const getConstraints = (config: Config): Field => ({
2929
type: 'group',
3030
admin: {
3131
components: {
32-
Cell: '@payloadcms/ui#QueryPresetsAccessCell',
32+
Cell: '@payloadcms/next/client#QueryPresetsAccessCell',
3333
},
3434
condition: (data) => Boolean(data?.isShared),
3535
},

packages/ui/src/elements/FolderView/FolderTypeField/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Option, OptionObject, SelectFieldClientProps } from 'payload'
1+
import type { OptionObject, SelectFieldClientProps } from 'payload'
22

33
import React from 'react'
44

0 commit comments

Comments
 (0)