Skip to content

Commit 0303b78

Browse files
fix(next): thread default ServerProps to view actions and other components that were missing (#9868)
This PR threads default `serverProps` to Edit and List view action slots, as well as other various components that were missing them. --------- Co-authored-by: Alessio Gravili <alessio@gravili.de>
1 parent a0f0316 commit 0303b78

File tree

3 files changed

+35
-23
lines changed

3 files changed

+35
-23
lines changed

packages/next/src/templates/Default/index.tsx

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,20 @@ export const DefaultTemplate: React.FC<DefaultTemplateProps> = ({
4848
} = {},
4949
} = payload.config || {}
5050

51+
const serverProps = React.useMemo<ServerProps>(
52+
() => ({
53+
i18n,
54+
locale,
55+
params,
56+
payload,
57+
permissions,
58+
searchParams,
59+
user,
60+
visibleEntities,
61+
}),
62+
[i18n, locale, params, payload, permissions, searchParams, user, visibleEntities],
63+
)
64+
5165
const { Actions } = React.useMemo<{
5266
Actions: Record<string, React.ReactNode>
5367
}>(() => {
@@ -59,11 +73,13 @@ export const DefaultTemplate: React.FC<DefaultTemplateProps> = ({
5973
acc[action.path] = RenderServerComponent({
6074
Component: action,
6175
importMap: payload.importMap,
76+
serverProps,
6277
})
6378
} else {
6479
acc[action] = RenderServerComponent({
6580
Component: action,
6681
importMap: payload.importMap,
82+
serverProps,
6783
})
6884
}
6985
}
@@ -72,23 +88,14 @@ export const DefaultTemplate: React.FC<DefaultTemplateProps> = ({
7288
}, {})
7389
: undefined,
7490
}
75-
}, [viewActions, payload])
91+
}, [payload, serverProps, viewActions])
7692

7793
const NavComponent = RenderServerComponent({
7894
clientProps: { clientProps: { visibleEntities } },
7995
Component: CustomNav,
8096
Fallback: DefaultNav,
8197
importMap: payload.importMap,
82-
serverProps: {
83-
i18n,
84-
locale,
85-
params,
86-
payload,
87-
permissions,
88-
searchParams,
89-
user,
90-
visibleEntities,
91-
},
98+
serverProps,
9299
})
93100

94101
return (
@@ -99,16 +106,7 @@ export const DefaultTemplate: React.FC<DefaultTemplateProps> = ({
99106
clientProps: { clientProps: { visibleEntities } },
100107
Component: CustomHeader,
101108
importMap: payload.importMap,
102-
serverProps: {
103-
i18n,
104-
locale,
105-
params,
106-
payload,
107-
permissions,
108-
searchParams,
109-
user,
110-
visibleEntities,
111-
},
109+
serverProps,
112110
})}
113111
<div style={{ position: 'relative' }}>
114112
<div className={`${baseClass}__nav-toggler-wrapper`} id="nav-toggler">
@@ -127,6 +125,7 @@ export const DefaultTemplate: React.FC<DefaultTemplateProps> = ({
127125
? RenderServerComponent({
128126
Component: avatar.Component,
129127
importMap: payload.importMap,
128+
serverProps,
130129
})
131130
: undefined
132131
}
@@ -135,6 +134,7 @@ export const DefaultTemplate: React.FC<DefaultTemplateProps> = ({
135134
? RenderServerComponent({
136135
Component: components.graphics.Icon,
137136
importMap: payload.importMap,
137+
serverProps,
138138
})
139139
: undefined
140140
}

packages/next/src/views/Document/renderDocumentSlots.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import type {
55
SanitizedCollectionConfig,
66
SanitizedDocumentPermissions,
77
SanitizedGlobalConfig,
8+
ServerProps,
89
StaticDescription,
910
} from 'payload'
1011

1112
import { ViewDescription } from '@payloadcms/ui'
1213
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'
13-
import React from 'react'
1414

1515
import { getDocumentPermissions } from './getDocumentPermissions.js'
1616

@@ -29,6 +29,13 @@ export const renderDocumentSlots: (args: {
2929

3030
const isPreviewEnabled = collectionConfig?.admin?.preview || globalConfig?.admin?.preview
3131

32+
const serverProps: ServerProps = {
33+
i18n: req.i18n,
34+
payload: req.payload,
35+
user: req.user,
36+
// TODO: Add remaining serverProps
37+
}
38+
3239
const CustomPreviewButton =
3340
collectionConfig?.admin?.components?.edit?.PreviewButton ||
3441
globalConfig?.admin?.components?.elements?.PreviewButton
@@ -37,6 +44,7 @@ export const renderDocumentSlots: (args: {
3744
components.PreviewButton = RenderServerComponent({
3845
Component: CustomPreviewButton,
3946
importMap: req.payload.importMap,
47+
serverProps,
4048
})
4149
}
4250

@@ -60,6 +68,7 @@ export const renderDocumentSlots: (args: {
6068
Component: CustomDescription,
6169
Fallback: ViewDescription,
6270
importMap: req.payload.importMap,
71+
serverProps,
6372
})
6473
}
6574

@@ -73,6 +82,7 @@ export const renderDocumentSlots: (args: {
7382
components.PublishButton = RenderServerComponent({
7483
Component: CustomPublishButton,
7584
importMap: req.payload.importMap,
85+
serverProps,
7686
})
7787
}
7888
const CustomSaveDraftButton =
@@ -87,6 +97,7 @@ export const renderDocumentSlots: (args: {
8797
components.SaveDraftButton = RenderServerComponent({
8898
Component: CustomSaveDraftButton,
8999
importMap: req.payload.importMap,
100+
serverProps,
90101
})
91102
}
92103
} else {
@@ -98,6 +109,7 @@ export const renderDocumentSlots: (args: {
98109
components.SaveButton = RenderServerComponent({
99110
Component: CustomSaveButton,
100111
importMap: req.payload.importMap,
112+
serverProps,
101113
})
102114
}
103115
}

packages/payload/src/config/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,7 @@ export type Config = {
704704
| 'default'
705705
| 'gravatar'
706706
| {
707-
Component: PayloadComponent<never>
707+
Component: PayloadComponent
708708
}
709709
/**
710710
* Add extra and/or replace built-in components with custom components

0 commit comments

Comments
 (0)