fix!: some custom components were not handled properly if they are RSCs (#6315)

**Breaking:** The following, exported components now need the `payload` object as a prop rather than the `config` object:
- `RenderCustomComponent` (optional)
- `Logo`
- `DefaultTemplate`
- `DefaultNav`
This commit is contained in:
Alessio Gravili
2024-05-13 12:05:13 -04:00
committed by GitHub
parent 23c7ab2bc4
commit 0d98b4b96f
16 changed files with 94 additions and 38 deletions

View File

@@ -1,8 +1,9 @@
import type { Permissions } from 'payload/auth'
import type { SanitizedConfig, VisibleEntities } from 'payload/types'
import type { Payload, SanitizedConfig, VisibleEntities } from 'payload/types'
import { Gutter } from '@payloadcms/ui/elements/Gutter'
import { SetStepNav } from '@payloadcms/ui/elements/StepNav'
import { WithServerSideProps } from '@payloadcms/ui/elements/WithServerSideProps'
import { SetViewActions } from '@payloadcms/ui/providers/Actions'
import React from 'react'
@@ -14,6 +15,7 @@ const baseClass = 'dashboard'
export type DashboardProps = {
Link: React.ComponentType<any>
config: SanitizedConfig
payload: Payload
permissions: Permissions
visibleEntities: VisibleEntities
}
@@ -26,24 +28,36 @@ export const DefaultDashboard: React.FC<DashboardProps> = (props) => {
components: { afterDashboard, beforeDashboard },
},
},
payload,
permissions,
visibleEntities,
} = props
const BeforeDashboards = Array.isArray(beforeDashboard)
? beforeDashboard.map((Component, i) => (
<WithServerSideProps Component={Component} key={i} payload={payload} />
))
: null
const AfterDashboards = Array.isArray(afterDashboard)
? afterDashboard.map((Component, i) => (
<WithServerSideProps Component={Component} key={i} payload={payload} />
))
: null
return (
<div className={baseClass}>
<SetStepNav nav={[]} />
<SetViewActions actions={[]} />
<Gutter className={`${baseClass}__wrap`}>
{Array.isArray(beforeDashboard) &&
beforeDashboard.map((Component, i) => <Component key={i} />)}
{Array.isArray(BeforeDashboards) && BeforeDashboards.map((Component) => Component)}
<DefaultDashboardClient
Link={Link}
permissions={permissions}
visibleEntities={visibleEntities}
/>
{Array.isArray(afterDashboard) &&
afterDashboard.map((Component, i) => <Component key={i} />)}
{Array.isArray(AfterDashboards) && AfterDashboards.map((Component) => Component)}
</Gutter>
</div>
)