@@ -3,7 +3,7 @@ import type { CollectionPermission, GlobalPermission } from 'payload/auth'
3
3
import type { SanitizedCollectionConfig } from 'payload/types'
4
4
5
5
import { getTranslation } from '@payloadcms/translations'
6
- import React , { Fragment } from 'react'
6
+ import React , { Fragment , useEffect } from 'react'
7
7
8
8
import { useComponentMap } from '../../providers/ComponentMap/index.js'
9
9
import { useConfig } from '../../providers/Config/index.js'
@@ -64,6 +64,19 @@ export const DocumentControls: React.FC<{
64
64
routes : { admin : adminRoute } ,
65
65
} = config
66
66
67
+ // Settings these in state to avoid hydration issues if there is a mismatch between the server and client
68
+ const [ updatedAt , setUpdatedAt ] = React . useState < string > ( '' )
69
+ const [ createdAt , setCreatedAt ] = React . useState < string > ( '' )
70
+
71
+ useEffect ( ( ) => {
72
+ if ( data ?. updatedAt ) {
73
+ setUpdatedAt ( formatDate ( { date : data . updatedAt , i18n, pattern : dateFormat } ) )
74
+ }
75
+ if ( data ?. createdAt ) {
76
+ setCreatedAt ( formatDate ( { date : data . createdAt , i18n, pattern : dateFormat } ) )
77
+ }
78
+ } , [ data , i18n , dateFormat ] )
79
+
67
80
const hasCreatePermission =
68
81
permissions && 'create' in permissions && permissions . create ?. permission
69
82
@@ -127,35 +140,19 @@ export const DocumentControls: React.FC<{
127
140
className = { [ `${ baseClass } __list-item` , `${ baseClass } __value-wrap` ]
128
141
. filter ( Boolean )
129
142
. join ( ' ' ) }
130
- title = {
131
- data ?. updatedAt
132
- ? formatDate ( { date : data ?. updatedAt , i18n, pattern : dateFormat } )
133
- : ''
134
- }
143
+ title = { data ?. updatedAt ? updatedAt : '' }
135
144
>
136
145
< p className = { `${ baseClass } __label` } > { i18n . t ( 'general:lastModified' ) } : </ p >
137
- { data ?. updatedAt && (
138
- < p className = { `${ baseClass } __value` } >
139
- { formatDate ( { date : data ?. updatedAt , i18n, pattern : dateFormat } ) }
140
- </ p >
141
- ) }
146
+ { data ?. updatedAt && < p className = { `${ baseClass } __value` } > { updatedAt } </ p > }
142
147
</ li >
143
148
< li
144
149
className = { [ `${ baseClass } __list-item` , `${ baseClass } __value-wrap` ]
145
150
. filter ( Boolean )
146
151
. join ( ' ' ) }
147
- title = {
148
- data ?. createdAt
149
- ? formatDate ( { date : data ?. createdAt , i18n, pattern : dateFormat } )
150
- : ''
151
- }
152
+ title = { data ?. createdAt ? createdAt : '' }
152
153
>
153
154
< p className = { `${ baseClass } __label` } > { i18n . t ( 'general:created' ) } : </ p >
154
- { data ?. createdAt && (
155
- < p className = { `${ baseClass } __value` } >
156
- { formatDate ( { date : data ?. createdAt , i18n, pattern : dateFormat } ) }
157
- </ p >
158
- ) }
155
+ { data ?. createdAt && < p className = { `${ baseClass } __value` } > { createdAt } </ p > }
159
156
</ li >
160
157
</ Fragment >
161
158
) }
0 commit comments