chore: consolidates server-side edit view props
This commit is contained in:
@@ -112,19 +112,14 @@ export const Account = async ({
|
|||||||
action: `${serverURL}${api}/${userSlug}/${data?.id}?locale=${locale.code}`,
|
action: `${serverURL}${api}/${userSlug}/${data?.id}?locale=${locale.code}`,
|
||||||
apiURL: `${serverURL}${api}/${userSlug}/${data?.id}?locale=${locale.code}`,
|
apiURL: `${serverURL}${api}/${userSlug}/${data?.id}?locale=${locale.code}`,
|
||||||
collectionSlug: userSlug,
|
collectionSlug: userSlug,
|
||||||
config,
|
|
||||||
data,
|
data,
|
||||||
docPermissions: collectionPermissions,
|
docPermissions: collectionPermissions,
|
||||||
docPreferences,
|
docPreferences,
|
||||||
hasSavePermission: collectionPermissions?.update?.permission,
|
hasSavePermission: collectionPermissions?.update?.permission,
|
||||||
i18n: req.i18n,
|
initPageResult: page,
|
||||||
initialState,
|
initialState,
|
||||||
locale,
|
|
||||||
payload,
|
|
||||||
permissions,
|
|
||||||
searchParams,
|
searchParams,
|
||||||
updatedAt: '', // TODO
|
updatedAt: '', // TODO
|
||||||
user,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ export const Document = async ({ page, params, searchParams }: Props) => {
|
|||||||
const isEditing = Boolean(globalSlug || (collectionSlug && !!id))
|
const isEditing = Boolean(globalSlug || (collectionSlug && !!id))
|
||||||
|
|
||||||
const {
|
const {
|
||||||
i18n,
|
|
||||||
payload,
|
payload,
|
||||||
payload: { config },
|
payload: { config },
|
||||||
user,
|
user,
|
||||||
@@ -185,24 +184,18 @@ export const Document = async ({ page, params, searchParams }: Props) => {
|
|||||||
action: `${action}?${queryString.stringify(formQueryParams)}`,
|
action: `${action}?${queryString.stringify(formQueryParams)}`,
|
||||||
apiURL,
|
apiURL,
|
||||||
canAccessAdmin: permissions?.canAccessAdmin,
|
canAccessAdmin: permissions?.canAccessAdmin,
|
||||||
collectionConfig,
|
|
||||||
collectionSlug,
|
collectionSlug,
|
||||||
config,
|
|
||||||
data,
|
data,
|
||||||
docPermissions,
|
docPermissions,
|
||||||
docPreferences,
|
docPreferences,
|
||||||
globalConfig,
|
|
||||||
globalSlug,
|
globalSlug,
|
||||||
hasSavePermission,
|
hasSavePermission,
|
||||||
i18n,
|
initPageResult: page,
|
||||||
initialState,
|
initialState,
|
||||||
isEditing,
|
isEditing,
|
||||||
locale,
|
params,
|
||||||
payload,
|
|
||||||
permissions,
|
|
||||||
searchParams,
|
searchParams,
|
||||||
updatedAt: data?.updatedAt?.toString(),
|
updatedAt: data?.updatedAt?.toString(),
|
||||||
user,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -4,12 +4,9 @@ import type { ServerSideEditViewProps } from './types'
|
|||||||
|
|
||||||
export const sanitizeEditViewProps = (props: ServerSideEditViewProps) => {
|
export const sanitizeEditViewProps = (props: ServerSideEditViewProps) => {
|
||||||
const clientSideProps = { ...props }
|
const clientSideProps = { ...props }
|
||||||
delete clientSideProps.payload
|
delete clientSideProps.initPageResult.req
|
||||||
delete clientSideProps.config
|
delete clientSideProps.initPageResult.collectionConfig
|
||||||
|
delete clientSideProps.initPageResult.globalConfig
|
||||||
delete clientSideProps.searchParams
|
delete clientSideProps.searchParams
|
||||||
delete clientSideProps.i18n
|
|
||||||
delete clientSideProps.collectionConfig
|
|
||||||
delete clientSideProps.globalConfig
|
|
||||||
|
|
||||||
return clientSideProps as EditViewProps
|
return clientSideProps as EditViewProps
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +1,25 @@
|
|||||||
import type { I18n } from '@payloadcms/translations'
|
|
||||||
import type { FormState } from '@payloadcms/ui'
|
import type { FormState } from '@payloadcms/ui'
|
||||||
import type { Permissions, User } from 'payload/auth'
|
import type { EditViewProps } from 'payload/config'
|
||||||
import type { EditViewProps, Locale } from 'payload/config'
|
import type { Data, DocumentPermissions, DocumentPreferences } from 'payload/types'
|
||||||
import type {
|
|
||||||
Data,
|
import type { InitPageResult } from '../../utilities/initPage'
|
||||||
DocumentPermissions,
|
|
||||||
DocumentPreferences,
|
|
||||||
Payload,
|
|
||||||
SanitizedConfig,
|
|
||||||
} from 'payload/types'
|
|
||||||
|
|
||||||
export type ServerSideEditViewProps = EditViewProps & {
|
export type ServerSideEditViewProps = EditViewProps & {
|
||||||
action?: string
|
action?: string
|
||||||
apiURL: string
|
apiURL: string
|
||||||
canAccessAdmin?: boolean
|
canAccessAdmin?: boolean
|
||||||
collectionConfig?: SanitizedConfig['collections'][0]
|
|
||||||
config: SanitizedConfig
|
|
||||||
data: Data
|
data: Data
|
||||||
disableActions?: boolean
|
disableActions?: boolean
|
||||||
disableLeaveWithoutSaving?: boolean
|
disableLeaveWithoutSaving?: boolean
|
||||||
docPermissions: DocumentPermissions
|
docPermissions: DocumentPermissions
|
||||||
docPreferences: DocumentPreferences
|
docPreferences: DocumentPreferences
|
||||||
globalConfig?: SanitizedConfig['globals'][0]
|
|
||||||
hasSavePermission?: boolean
|
hasSavePermission?: boolean
|
||||||
i18n: I18n
|
|
||||||
id?: string
|
id?: string
|
||||||
|
initPageResult: InitPageResult
|
||||||
initialState?: FormState
|
initialState?: FormState
|
||||||
isEditing?: boolean
|
isEditing?: boolean
|
||||||
locale: Locale
|
params?: { [key: string]: string | string[] }
|
||||||
payload: Payload
|
|
||||||
permissions: Permissions
|
|
||||||
searchParams: { [key: string]: string | string[] | undefined }
|
searchParams: { [key: string]: string | string[] | undefined }
|
||||||
// isLoading: boolean
|
// isLoading: boolean
|
||||||
updatedAt: string
|
updatedAt: string
|
||||||
user: User
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,15 @@
|
|||||||
import type { LivePreviewConfig } from 'payload/config'
|
import type { LivePreviewConfig } from 'payload/config'
|
||||||
import type { Data } from 'payload/types'
|
|
||||||
|
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import type { InitPageResult } from '../../utilities/initPage'
|
import type { ServerSideEditViewProps } from '../Edit/types'
|
||||||
|
|
||||||
import { LivePreviewClient } from './index.client'
|
import { LivePreviewClient } from './index.client'
|
||||||
import './index.scss'
|
import './index.scss'
|
||||||
|
|
||||||
type Props = {
|
export const LivePreviewView: React.FC = async (props: ServerSideEditViewProps) => {
|
||||||
data: Data
|
const { initPageResult } = props
|
||||||
page: InitPageResult
|
|
||||||
params: { [key: string]: string | string[] }
|
|
||||||
searchParams: { [key: string]: string | string[] | undefined }
|
|
||||||
}
|
|
||||||
export const LivePreviewView: React.FC = async (props: Props) => {
|
|
||||||
const { page } = props
|
|
||||||
const {
|
const {
|
||||||
collectionConfig,
|
collectionConfig,
|
||||||
globalConfig,
|
globalConfig,
|
||||||
@@ -27,7 +21,7 @@ export const LivePreviewView: React.FC = async (props: Props) => {
|
|||||||
},
|
},
|
||||||
} = {},
|
} = {},
|
||||||
} = {},
|
} = {},
|
||||||
} = page
|
} = initPageResult
|
||||||
|
|
||||||
// TODO(JAKE): not sure what `data` is or what it should be
|
// TODO(JAKE): not sure what `data` is or what it should be
|
||||||
const { data = {} } = props
|
const { data = {} } = props
|
||||||
|
|||||||
@@ -5,23 +5,19 @@ import type { Document } from 'payload/types'
|
|||||||
import { notFound } from 'next/navigation'
|
import { notFound } from 'next/navigation'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import type { InitPageResult } from '../../utilities/initPage'
|
import type { ServerSideEditViewProps } from '../Edit/types'
|
||||||
|
|
||||||
import { DefaultVersionView } from './Default'
|
import { DefaultVersionView } from './Default'
|
||||||
|
|
||||||
type Props = {
|
export const VersionView: React.FC = async (props: ServerSideEditViewProps) => {
|
||||||
page: InitPageResult
|
const { initPageResult, params } = props
|
||||||
params: { [key: string]: string | string[] }
|
|
||||||
searchParams: { [key: string]: string | string[] | undefined }
|
|
||||||
}
|
|
||||||
export const VersionView: React.FC = async (props: Props) => {
|
|
||||||
const { page, params } = props
|
|
||||||
const {
|
const {
|
||||||
collectionConfig,
|
collectionConfig,
|
||||||
globalConfig,
|
globalConfig,
|
||||||
permissions,
|
permissions,
|
||||||
req: { payload, payload: { config } = {}, user } = {},
|
req: { payload, payload: { config } = {}, user } = {},
|
||||||
} = page
|
} = initPageResult
|
||||||
|
|
||||||
// /entityType/:entitySlug/:id/versions/:versionID
|
// /entityType/:entitySlug/:id/versions/:versionID
|
||||||
const [entityType, entitySlug, id, versions, versionID] = params.segments
|
const [entityType, entitySlug, id, versions, versionID] = params.segments
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import { getTranslation } from '@payloadcms/translations'
|
|
||||||
import { Gutter } from '@payloadcms/ui'
|
import { Gutter } from '@payloadcms/ui'
|
||||||
import { notFound } from 'next/navigation'
|
import { notFound } from 'next/navigation'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
@@ -14,25 +13,28 @@ import './index.scss'
|
|||||||
export const baseClass = 'versions'
|
export const baseClass = 'versions'
|
||||||
|
|
||||||
export const VersionsView: React.FC<ServerSideEditViewProps> = async (props) => {
|
export const VersionsView: React.FC<ServerSideEditViewProps> = async (props) => {
|
||||||
const { config, i18n, payload, searchParams, user } = props
|
const { id, initPageResult, searchParams } = props
|
||||||
|
|
||||||
const id = 'id' in props ? props.id : undefined
|
const {
|
||||||
const collectionConfig = 'collectionConfig' in props && props?.collectionConfig
|
collectionConfig,
|
||||||
const globalConfig = 'globalConfig' in props && props?.globalConfig
|
globalConfig,
|
||||||
|
req: {
|
||||||
|
i18n,
|
||||||
|
payload,
|
||||||
|
payload: { config },
|
||||||
|
user,
|
||||||
|
},
|
||||||
|
} = initPageResult
|
||||||
|
|
||||||
const collectionSlug = collectionConfig?.slug
|
const collectionSlug = collectionConfig?.slug
|
||||||
const globalSlug = globalConfig?.slug
|
const globalSlug = globalConfig?.slug
|
||||||
const { limit, page, sort } = searchParams
|
const { limit, page, sort } = searchParams
|
||||||
|
|
||||||
const {
|
const {
|
||||||
routes: { admin: adminRoute, api: apiRoute },
|
routes: { api: apiRoute },
|
||||||
serverURL,
|
serverURL,
|
||||||
} = config
|
} = config
|
||||||
|
|
||||||
let docURL: string
|
|
||||||
let entityLabel: string
|
|
||||||
let slug: string
|
|
||||||
let editURL: string
|
|
||||||
let versionsData
|
let versionsData
|
||||||
|
|
||||||
if (collectionSlug) {
|
if (collectionSlug) {
|
||||||
@@ -51,12 +53,8 @@ export const VersionsView: React.FC<ServerSideEditViewProps> = async (props) =>
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error) // eslint-disable-line no-console
|
||||||
}
|
}
|
||||||
|
|
||||||
docURL = `${serverURL}${apiRoute}/${slug}/${id}`
|
|
||||||
entityLabel = getTranslation(collectionConfig.labels.singular, i18n)
|
|
||||||
editURL = `${adminRoute}/collections/${collectionSlug}/${id}`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (globalSlug) {
|
if (globalSlug) {
|
||||||
@@ -74,16 +72,12 @@ export const VersionsView: React.FC<ServerSideEditViewProps> = async (props) =>
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error) // eslint-disable-line no-console
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!versionsData) {
|
if (!versionsData) {
|
||||||
return notFound()
|
return notFound()
|
||||||
}
|
}
|
||||||
|
|
||||||
docURL = `${serverURL}${apiRoute}/globals/${globalSlug}`
|
|
||||||
entityLabel = getTranslation(globalConfig.label, i18n)
|
|
||||||
editURL = `${adminRoute}/globals/${globalSlug}`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const columns = buildVersionColumns({
|
const columns = buildVersionColumns({
|
||||||
|
|||||||
@@ -10,7 +10,11 @@
|
|||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"forceConsistentCasingInFileNames": true,
|
"forceConsistentCasingInFileNames": true,
|
||||||
"jsx": "preserve",
|
"jsx": "preserve",
|
||||||
"lib": ["dom", "dom.iterable", "esnext"],
|
"lib": [
|
||||||
|
"dom",
|
||||||
|
"dom.iterable",
|
||||||
|
"esnext"
|
||||||
|
],
|
||||||
"noEmit": true,
|
"noEmit": true,
|
||||||
"outDir": "./dist",
|
"outDir": "./dist",
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
@@ -18,7 +22,11 @@
|
|||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"strict": false,
|
"strict": false,
|
||||||
"types": ["jest", "node", "@types/jest"],
|
"types": [
|
||||||
|
"jest",
|
||||||
|
"node",
|
||||||
|
"@types/jest"
|
||||||
|
],
|
||||||
"incremental": true,
|
"incremental": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"plugins": [
|
"plugins": [
|
||||||
@@ -27,26 +35,59 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"paths": {
|
"paths": {
|
||||||
"payload": ["./packages/payload/src"],
|
"payload": [
|
||||||
"payload/*": ["./packages/payload/src/exports/*"],
|
"./packages/payload/src"
|
||||||
"@payloadcms/db-mongodb": ["./packages/db-mongodb/src"],
|
],
|
||||||
"@payloadcms/richtext-lexical": ["./packages/richtext-lexical/src"],
|
"payload/*": [
|
||||||
"@payloadcms/ui": ["./packages/ui/src/exports/index.ts"],
|
"./packages/payload/src/exports/*"
|
||||||
"@payloadcms/ui/*": ["./packages/ui/src/exports/*"],
|
],
|
||||||
"@payloadcms/ui/scss": ["./packages/ui/src/scss/styles.scss"],
|
"@payloadcms/db-mongodb": [
|
||||||
"@payloadcms/ui/scss/app.scss": ["./packages/ui/src/scss/app.scss"],
|
"./packages/db-mongodb/src"
|
||||||
"@payloadcms/translations": ["./packages/translations/src/exports/index.ts"],
|
],
|
||||||
|
"@payloadcms/richtext-lexical": [
|
||||||
|
"./packages/richtext-lexical/src"
|
||||||
|
],
|
||||||
|
"@payloadcms/ui": [
|
||||||
|
"./packages/ui/src/exports/index.ts"
|
||||||
|
],
|
||||||
|
"@payloadcms/ui/*": [
|
||||||
|
"./packages/ui/src/exports/*"
|
||||||
|
],
|
||||||
|
"@payloadcms/ui/scss": [
|
||||||
|
"./packages/ui/src/scss/styles.scss"
|
||||||
|
],
|
||||||
|
"@payloadcms/ui/scss/app.scss": [
|
||||||
|
"./packages/ui/src/scss/app.scss"
|
||||||
|
],
|
||||||
|
"@payloadcms/translations": [
|
||||||
|
"./packages/translations/src/exports/index.ts"
|
||||||
|
],
|
||||||
"@payloadcms/translations/client": [
|
"@payloadcms/translations/client": [
|
||||||
"./packages/translations/src/_generatedFiles_/client/index.ts"
|
"./packages/translations/src/_generatedFiles_/client/index.ts"
|
||||||
],
|
],
|
||||||
"@payloadcms/translations/api": ["./packages/translations/src/_generatedFiles_/api/index.ts"],
|
"@payloadcms/translations/api": [
|
||||||
"@payloadcms/next/*": ["./packages/next/src/*"],
|
"./packages/translations/src/_generatedFiles_/api/index.ts"
|
||||||
"@payloadcms/next": ["./packages/next/src/exports/*"],
|
],
|
||||||
"@payloadcms/graphql": ["./packages/graphql/src"],
|
"@payloadcms/next/*": [
|
||||||
"@payload-config": ["./test/_community/config.ts"]
|
"./packages/next/src/*"
|
||||||
|
],
|
||||||
|
"@payloadcms/next": [
|
||||||
|
"./packages/next/src/exports/*"
|
||||||
|
],
|
||||||
|
"@payloadcms/graphql": [
|
||||||
|
"./packages/graphql/src"
|
||||||
|
],
|
||||||
|
"@payload-config": [
|
||||||
|
"./test/_community/config.ts"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"exclude": ["dist", "build", "temp", "node_modules"],
|
"exclude": [
|
||||||
|
"dist",
|
||||||
|
"build",
|
||||||
|
"temp",
|
||||||
|
"node_modules"
|
||||||
|
],
|
||||||
"composite": true,
|
"composite": true,
|
||||||
"references": [
|
"references": [
|
||||||
{
|
{
|
||||||
@@ -114,4 +155,4 @@
|
|||||||
"app/**/*.tsx",
|
"app/**/*.tsx",
|
||||||
"scripts/**/*.ts"
|
"scripts/**/*.ts"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user