@payloadcms/ui 3.69.0-internal.424436e → 3.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/elements/AppHeader/index.js +1 -2
  2. package/dist/elements/AppHeader/index.js.map +1 -1
  3. package/dist/elements/AppHeader/index.scss +0 -1
  4. package/dist/elements/ArrayAction/index.d.ts +6 -6
  5. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  6. package/dist/elements/ArrayAction/index.js +8 -8
  7. package/dist/elements/ArrayAction/index.js.map +1 -1
  8. package/dist/elements/Autosave/index.d.ts.map +1 -1
  9. package/dist/elements/Autosave/index.js +20 -5
  10. package/dist/elements/Autosave/index.js.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  12. package/dist/elements/BulkUpload/FormsManager/index.js +10 -6
  13. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  14. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  15. package/dist/elements/CopyLocaleData/index.js +36 -39
  16. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  17. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  18. package/dist/elements/DefaultListViewTabs/index.js +1 -2
  19. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  20. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  21. package/dist/elements/DeleteDocument/index.js +9 -7
  22. package/dist/elements/DeleteDocument/index.js.map +1 -1
  23. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  24. package/dist/elements/DeleteMany/index.js +19 -16
  25. package/dist/elements/DeleteMany/index.js.map +1 -1
  26. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  27. package/dist/elements/DocumentControls/index.js +2 -4
  28. package/dist/elements/DocumentControls/index.js.map +1 -1
  29. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  30. package/dist/elements/DuplicateDocument/index.js +4 -6
  31. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  32. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  33. package/dist/elements/EditMany/DrawerContent.js +8 -12
  34. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  35. package/dist/elements/FolderView/BrowseByFolderButton/index.d.ts.map +1 -1
  36. package/dist/elements/FolderView/BrowseByFolderButton/index.js +2 -4
  37. package/dist/elements/FolderView/BrowseByFolderButton/index.js.map +1 -1
  38. package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -1
  39. package/dist/elements/FolderView/Cell/index.client.js +9 -2
  40. package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
  41. package/dist/elements/FolderView/CurrentFolderActions/index.d.ts.map +1 -1
  42. package/dist/elements/FolderView/CurrentFolderActions/index.js +7 -4
  43. package/dist/elements/FolderView/CurrentFolderActions/index.js.map +1 -1
  44. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts +1 -1
  45. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts.map +1 -1
  46. package/dist/elements/FolderView/MoveDocToFolder/index.js +5 -1
  47. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  48. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  49. package/dist/elements/IDLabel/index.js +11 -14
  50. package/dist/elements/IDLabel/index.js.map +1 -1
  51. package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts +8 -0
  52. package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts.map +1 -0
  53. package/dist/elements/ItemsDrawer/ItemSearch/index.js +56 -0
  54. package/dist/elements/ItemsDrawer/ItemSearch/index.js.map +1 -0
  55. package/dist/elements/ItemsDrawer/ItemSearch/index.scss +38 -0
  56. package/dist/elements/ItemsDrawer/index.d.ts +15 -0
  57. package/dist/elements/ItemsDrawer/index.d.ts.map +1 -0
  58. package/dist/elements/ItemsDrawer/index.js +195 -0
  59. package/dist/elements/ItemsDrawer/index.js.map +1 -0
  60. package/dist/elements/ItemsDrawer/index.scss +102 -0
  61. package/dist/elements/Link/index.d.ts.map +1 -1
  62. package/dist/elements/Link/index.js +5 -3
  63. package/dist/elements/Link/index.js.map +1 -1
  64. package/dist/elements/ListControls/index.d.ts.map +1 -1
  65. package/dist/elements/ListControls/index.js +6 -4
  66. package/dist/elements/ListControls/index.js.map +1 -1
  67. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  68. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +9 -2
  69. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  70. package/dist/elements/Logout/index.d.ts.map +1 -1
  71. package/dist/elements/Logout/index.js +8 -11
  72. package/dist/elements/Logout/index.js.map +1 -1
  73. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
  74. package/dist/elements/PermanentlyDeleteButton/index.js +19 -14
  75. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  76. package/dist/elements/Popup/PopupButtonList/index.scss +1 -0
  77. package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -1
  78. package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
  79. package/dist/elements/Popup/PopupTrigger/index.js +24 -92
  80. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  81. package/dist/elements/Popup/index.d.ts +32 -1
  82. package/dist/elements/Popup/index.d.ts.map +1 -1
  83. package/dist/elements/Popup/index.js +249 -122
  84. package/dist/elements/Popup/index.js.map +1 -1
  85. package/dist/elements/Popup/index.scss +49 -231
  86. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  87. package/dist/elements/PublishButton/ScheduleDrawer/index.js +6 -2
  88. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  89. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  90. package/dist/elements/PublishButton/index.js +14 -4
  91. package/dist/elements/PublishButton/index.js.map +1 -1
  92. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  93. package/dist/elements/PublishMany/DrawerContent.js +8 -5
  94. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  95. package/dist/elements/QueryPresets/QueryPresetBar/index.d.ts.map +1 -1
  96. package/dist/elements/QueryPresets/QueryPresetBar/index.js +7 -9
  97. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  98. package/dist/elements/RestoreButton/index.d.ts.map +1 -1
  99. package/dist/elements/RestoreButton/index.js +19 -14
  100. package/dist/elements/RestoreButton/index.js.map +1 -1
  101. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  102. package/dist/elements/RestoreMany/index.js +17 -14
  103. package/dist/elements/RestoreMany/index.js.map +1 -1
  104. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  105. package/dist/elements/SaveDraftButton/index.js +11 -5
  106. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  107. package/dist/elements/Status/index.d.ts.map +1 -1
  108. package/dist/elements/Status/index.js +11 -5
  109. package/dist/elements/Status/index.js.map +1 -1
  110. package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
  111. package/dist/elements/StayLoggedIn/index.js +17 -20
  112. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  113. package/dist/elements/StepNav/context.d.ts.map +1 -1
  114. package/dist/elements/StepNav/context.js +9 -1
  115. package/dist/elements/StepNav/context.js.map +1 -1
  116. package/dist/elements/StepNav/index.scss +0 -1
  117. package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
  118. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +39 -41
  119. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  120. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  121. package/dist/elements/Table/DefaultCell/index.js +9 -12
  122. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  123. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  124. package/dist/elements/Table/OrderableTable.js +5 -1
  125. package/dist/elements/Table/OrderableTable.js.map +1 -1
  126. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  127. package/dist/elements/Table/RelationshipProvider/index.js +25 -24
  128. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  129. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  130. package/dist/elements/UnpublishMany/DrawerContent.js +8 -5
  131. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  132. package/dist/elements/Upload/index.d.ts.map +1 -1
  133. package/dist/elements/Upload/index.js +7 -5
  134. package/dist/elements/Upload/index.js.map +1 -1
  135. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  136. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +14 -8
  137. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  138. package/dist/elements/withMergedProps/index.d.ts +1 -1
  139. package/dist/elements/withMergedProps/index.js +1 -1
  140. package/dist/elements/withMergedProps/index.js.map +1 -1
  141. package/dist/exports/client/index.d.ts +1 -2
  142. package/dist/exports/client/index.d.ts.map +1 -1
  143. package/dist/exports/client/index.js +12 -12
  144. package/dist/exports/client/index.js.map +4 -4
  145. package/dist/exports/rsc/index.d.ts +1 -0
  146. package/dist/exports/rsc/index.d.ts.map +1 -1
  147. package/dist/exports/rsc/index.js +1 -0
  148. package/dist/exports/rsc/index.js.map +1 -1
  149. package/dist/exports/shared/index.d.ts +3 -0
  150. package/dist/exports/shared/index.d.ts.map +1 -1
  151. package/dist/exports/shared/index.js +2 -2
  152. package/dist/exports/shared/index.js.map +4 -4
  153. package/dist/fields/Array/ArrayRow.d.ts +7 -18
  154. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  155. package/dist/fields/Array/ArrayRow.js +133 -65
  156. package/dist/fields/Array/ArrayRow.js.map +1 -1
  157. package/dist/fields/Array/index.d.ts.map +1 -1
  158. package/dist/fields/Array/index.js +3 -10
  159. package/dist/fields/Array/index.js.map +1 -1
  160. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  161. package/dist/fields/Relationship/Input.js +9 -3
  162. package/dist/fields/Relationship/Input.js.map +1 -1
  163. package/dist/fields/Upload/Input.d.ts.map +1 -1
  164. package/dist/fields/Upload/Input.js +7 -3
  165. package/dist/fields/Upload/Input.js.map +1 -1
  166. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js +8 -1
  167. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js.map +1 -1
  168. package/dist/graphics/Account/index.d.ts.map +1 -1
  169. package/dist/graphics/Account/index.js +2 -4
  170. package/dist/graphics/Account/index.js.map +1 -1
  171. package/dist/providers/Auth/index.d.ts.map +1 -1
  172. package/dist/providers/Auth/index.js +23 -26
  173. package/dist/providers/Auth/index.js.map +1 -1
  174. package/dist/providers/DocumentInfo/index.d.ts +1 -1
  175. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  176. package/dist/providers/DocumentInfo/index.js +16 -15
  177. package/dist/providers/DocumentInfo/index.js.map +1 -1
  178. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +1 -2
  179. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  180. package/dist/providers/DocumentInfo/useGetDocPermissions.js +16 -6
  181. package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
  182. package/dist/providers/Folders/index.d.ts.map +1 -1
  183. package/dist/providers/Folders/index.js +14 -11
  184. package/dist/providers/Folders/index.js.map +1 -1
  185. package/dist/providers/Locale/index.d.ts.map +1 -1
  186. package/dist/providers/Locale/index.js +45 -34
  187. package/dist/providers/Locale/index.js.map +1 -1
  188. package/dist/providers/Preferences/index.d.ts.map +1 -1
  189. package/dist/providers/Preferences/index.js +16 -7
  190. package/dist/providers/Preferences/index.js.map +1 -1
  191. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  192. package/dist/providers/RouteTransition/index.js +6 -1
  193. package/dist/providers/RouteTransition/index.js.map +1 -1
  194. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  195. package/dist/providers/TableColumns/buildColumnState/renderCell.js +1 -2
  196. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  197. package/dist/scss/app.scss +14 -1
  198. package/dist/styles.css +1 -1
  199. package/dist/utilities/getGlobalData.d.ts +11 -0
  200. package/dist/utilities/getGlobalData.d.ts.map +1 -0
  201. package/dist/utilities/getGlobalData.js +49 -0
  202. package/dist/utilities/getGlobalData.js.map +1 -0
  203. package/dist/utilities/getNavGroups.d.ts +5 -0
  204. package/dist/utilities/getNavGroups.d.ts.map +1 -0
  205. package/dist/utilities/getNavGroups.js +22 -0
  206. package/dist/utilities/getNavGroups.js.map +1 -0
  207. package/dist/utilities/getVisibleEntities.d.ts +5 -0
  208. package/dist/utilities/getVisibleEntities.d.ts.map +1 -0
  209. package/dist/utilities/getVisibleEntities.js +31 -0
  210. package/dist/utilities/getVisibleEntities.js.map +1 -0
  211. package/dist/utilities/groupNavItems.d.ts +3 -0
  212. package/dist/utilities/groupNavItems.d.ts.map +1 -1
  213. package/dist/utilities/groupNavItems.js +3 -0
  214. package/dist/utilities/groupNavItems.js.map +1 -1
  215. package/dist/utilities/handleBackToDashboard.js +1 -1
  216. package/dist/utilities/handleBackToDashboard.js.map +1 -1
  217. package/dist/utilities/handleGoBack.d.ts.map +1 -1
  218. package/dist/utilities/handleGoBack.js +1 -2
  219. package/dist/utilities/handleGoBack.js.map +1 -1
  220. package/dist/utilities/normalizeRelationshipValue.spec.js +1 -1
  221. package/dist/utilities/normalizeRelationshipValue.spec.js.map +1 -1
  222. package/dist/views/CollectionFolder/index.js +2 -4
  223. package/dist/views/CollectionFolder/index.js.map +1 -1
  224. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  225. package/dist/views/Edit/Auth/index.js +22 -21
  226. package/dist/views/Edit/Auth/index.js.map +1 -1
  227. package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
  228. package/dist/views/Edit/SetDocumentStepNav/index.js +36 -22
  229. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  230. package/dist/views/Edit/index.d.ts.map +1 -1
  231. package/dist/views/Edit/index.js +2 -3
  232. package/dist/views/Edit/index.js.map +1 -1
  233. package/dist/views/List/index.d.ts.map +1 -1
  234. package/dist/views/List/index.js +1 -2
  235. package/dist/views/List/index.js.map +1 -1
  236. package/dist/widgets/CollectionCards/index.d.ts +5 -0
  237. package/dist/widgets/CollectionCards/index.d.ts.map +1 -0
  238. package/dist/widgets/CollectionCards/index.js +135 -0
  239. package/dist/widgets/CollectionCards/index.js.map +1 -0
  240. package/dist/widgets/CollectionCards/index.scss +70 -0
  241. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useRouter","useSearchParams","formatAdminURL","hasAutosaveEnabled","React","Fragment","useCallback","useEffect","useMemo","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","LivePreviewWindow","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","useLivePreviewContext","usePreviewURL","OperationProvider","useRouteCache","useRouteTransition","useServerFunctions","UploadControlsProvider","useUploadEdits","abortAndIgnore","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","BeforeDocumentControls","Description","EditMenuItems","LivePreview","CustomLivePreview","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","UploadControls","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","data","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","documentLockState","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","isLocked","isTrashed","lastUpdateTime","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","setCurrentEditor","setData","setDocumentIsLocked","setLastUpdateTime","unlockDocument","updateDocumentEditor","clearDoc","drawerSlug","onDelete","onDuplicate","onRestore","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","serverURL","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","startRouteTransition","clearRouteCache","isLivePreviewEnabled","isLivePreviewing","previewWindowType","setURL","setLivePreviewURL","typeofLivePreviewURL","url","livePreviewURL","isPreviewEnabled","setPreviewURL","abortOnChangeRef","abortOnSaveRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","preventLeaveWithoutSaving","schemaPathSegments","validateBeforeSubmit","setValidateBeforeSubmit","disableLocalStrategy","nextHrefRef","handleDocumentLocking","lockedState","previousOwnerID","current","lockedUserID","hasShownLockedModal","lastEditedAt","getTime","handlePrevent","nextHref","handleLeaveConfirm","lockUser","isLockOwnedByCurrentUser","nextPath","URL","pathname","isInternalView","some","path","includes","err","console","error","json","ctx","context","formState","controller","document","doc","result","updatedAt","toISOString","redirectRoute","push","docPreferences","previewURL","state","renderAllFields","returnLivePreviewURL","returnLockStatus","returnPreviewURL","schemaPath","join","signal","skipValidation","file","onChange","prevFormState","submitted","currentTime","timeSinceLastUpdate","updateLastEdited","abortOnChange","abortOnSave","shouldShowDocumentLockedModal","isFolderCollection","folders","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","isDocumentForm","method","onSuccess","AfterHeader","showDocumentID","isActive","onReadOnly","onTakeOver","documentLockStateRef","isWithinDoc","onConfirm","onPrevent","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields","forceSidebarWrap","_Fragment"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientUser, DocumentViewClientProps } from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL, hasAutosaveEnabled } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { FormOnSuccess } from '../../forms/Form/types.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { LivePreviewWindow } from '../../elements/LivePreview/Window/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLivePreviewContext, usePreviewURL } from '../../providers/LivePreview/context.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\nexport type OnSaveContext = {\n getDocPermissions?: boolean\n incrementVersionCount?: boolean\n}\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport function DefaultEditView({\n BeforeDocumentControls,\n Description,\n EditMenuItems,\n LivePreview: CustomLivePreview,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n UploadControls,\n}: DocumentViewClientProps) {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n data,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n isLocked,\n isTrashed,\n lastUpdateTime,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n setCurrentEditor,\n setData,\n setDocumentIsLocked,\n setLastUpdateTime,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onRestore,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { clearRouteCache } = useRouteCache()\n const {\n isLivePreviewEnabled,\n isLivePreviewing,\n previewWindowType,\n setURL: setLivePreviewURL,\n typeofLivePreviewURL,\n url: livePreviewURL,\n } = useLivePreviewContext()\n const { isPreviewEnabled, setPreviewURL } = usePreviewURL()\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const autosaveEnabled = hasAutosaveEnabled(docConfig)\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n const isLockExpired = Date.now() > lockExpiryTime\n\n const preventLeaveWithoutSaving =\n !isReadOnlyForIncomingUser &&\n (typeof disableLeaveWithoutSaving !== 'undefined'\n ? !disableLeaveWithoutSaving\n : !autosaveEnabled)\n\n const schemaPathSegments = useMemo(() => [entitySlug], [entitySlug])\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const nextHrefRef = React.useRef<null | string>(null)\n\n const handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\n const previousOwnerID =\n typeof documentLockState.current?.user === 'object'\n ? documentLockState.current?.user?.id\n : documentLockState.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockState.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockState.current.hasShownLockedModal = true\n }\n\n documentLockState.current = {\n hasShownLockedModal: documentLockState.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n\n // Update lastUpdateTime when lock state changes\n if (lockedState.lastEditedAt) {\n setLastUpdateTime(new Date(lockedState.lastEditedAt).getTime())\n }\n }\n },\n [documentLockState, setCurrentEditor, setDocumentIsLocked, setLastUpdateTime, user?.id],\n )\n\n const handlePrevent = useCallback((nextHref: null | string) => {\n nextHrefRef.current = nextHref\n }, [])\n\n const handleLeaveConfirm = useCallback(async () => {\n const lockUser = documentLockState.current?.user\n\n const isLockOwnedByCurrentUser =\n typeof lockUser === 'object' ? lockUser?.id === user?.id : lockUser === user?.id\n\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Check where user is trying to go\n const nextPath = nextHrefRef.current ? new URL(nextHrefRef.current).pathname : ''\n const isInternalView = ['/preview', '/api', '/versions'].some((path) =>\n nextPath.includes(path),\n )\n\n // Remove the lock if the user is navigating away from the document view they have locked\n if (isLockOwnedByCurrentUser && !isInternalView) {\n try {\n await unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n } catch (err) {\n console.error('Failed to unlock before leave', err) // eslint-disable-line no-console\n }\n }\n }\n }, [\n collectionSlug,\n documentIsLocked,\n documentLockState,\n globalSlug,\n id,\n isLockingEnabled,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n user?.id,\n ])\n\n const onSave: FormOnSuccess<any, OnSaveContext> = useCallback(\n async (json, ctx) => {\n const { context, formState } = ctx || {}\n\n const controller = handleAbortRef(abortOnSaveRef)\n\n const document = json?.doc || json?.result\n\n const updatedAt = document?.updatedAt || new Date().toISOString()\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n setLastUpdateTime(updatedAt)\n\n if (context?.incrementVersionCount !== false) {\n incrementVersionCount()\n }\n\n if (typeof setData === 'function') {\n void setData(document || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n const operation = id ? 'update' : 'create'\n\n void onSaveFromContext({\n ...(json as Record<string, unknown>),\n context,\n operation,\n // @ts-expect-error todo: this is not right, should be under `doc`?\n updatedAt:\n operation === 'update'\n ? new Date().toISOString()\n : document?.updatedAt || new Date().toISOString(),\n })\n }\n\n if (!isEditing && depth < 2 && redirectAfterCreate !== false) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${document?.id}${locale ? `?locale=${locale}` : ''}`,\n serverURL,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n\n if (context?.getDocPermissions !== false) {\n await getDocPermissions(json)\n }\n\n if (id || globalSlug) {\n const docPreferences = await getDocPreferences()\n\n const { livePreviewURL, previewURL, state } = await getFormState({\n id,\n collectionSlug,\n data: document,\n docPermissions,\n docPreferences,\n formState,\n globalSlug,\n operation,\n renderAllFields: false,\n returnLivePreviewURL: isLivePreviewEnabled && typeofLivePreviewURL === 'function',\n returnLockStatus: false,\n returnPreviewURL: isPreviewEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: true,\n })\n\n // For upload collections, clear the file field from the returned state\n // to prevent the File object from persisting in form state after save\n if (upload && state) {\n delete state.file\n }\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (isLivePreviewEnabled && typeofLivePreviewURL === 'function') {\n setLivePreviewURL(livePreviewURL)\n }\n\n if (isPreviewEnabled) {\n setPreviewURL(previewURL)\n }\n\n reportUpdate({\n id,\n doc: document,\n drawerSlug,\n entitySlug,\n operation: 'update',\n updatedAt,\n })\n\n abortOnSaveRef.current = null\n\n return state\n } else {\n reportUpdate({\n id,\n doc: document,\n drawerSlug,\n entitySlug,\n operation: 'create',\n updatedAt,\n })\n }\n },\n [\n user,\n collectionSlug,\n userSlug,\n id,\n setLastUpdateTime,\n setData,\n onSaveFromContext,\n isEditing,\n depth,\n redirectAfterCreate,\n globalSlug,\n refreshCookieAsync,\n incrementVersionCount,\n adminRoute,\n locale,\n serverURL,\n startRouteTransition,\n router,\n resetUploadEdits,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n docPermissions,\n operation,\n isLivePreviewEnabled,\n typeofLivePreviewURL,\n isPreviewEnabled,\n schemaPathSegments,\n upload,\n isLockingEnabled,\n reportUpdate,\n drawerSlug,\n entitySlug,\n setDocumentIsLocked,\n setLivePreviewURL,\n setPreviewURL,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const result = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: !submitted,\n updateLastEdited,\n })\n\n if (!result) {\n return\n }\n\n const { lockedState, state } = result\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPathSegments,\n handleDocumentLocking,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n setShowTakeOverModal(false)\n }\n }, [])\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n const abortOnSave = abortOnSaveRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n abortAndIgnore(abortOnSave)\n }\n }, [])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !documentLockState.current?.hasShownLockedModal &&\n !isLockExpired\n\n const isFolderCollection = config.folders && collectionSlug === config.folders?.slug\n\n return (\n <main\n className={[\n baseClass,\n (id || globalSlug) && `${baseClass}--is-editing`,\n globalSlug && `global-edit--${globalSlug}`,\n collectionSlug && `collection-edit--${collectionSlug}`,\n isLivePreviewing && previewWindowType === 'iframe' && `${baseClass}--is-live-previewing`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission || isTrashed}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isDocumentForm={true}\n isInitializing={isInitializing}\n key={`${isLocked}`}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && (\n <DocumentDrawerHeader\n AfterHeader={Description}\n drawerSlug={drawerSlug}\n showDocumentID={!isFolderCollection}\n />\n )}\n {isLockingEnabled && shouldShowDocumentLockedModal && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router, serverURL })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver({\n id,\n clearRouteCache,\n collectionSlug,\n documentLockStateRef: documentLockState,\n globalSlug,\n isLockingEnabled,\n isWithinDoc: false,\n setCurrentEditor,\n updateDocumentEditor,\n user,\n })\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router, serverURL })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {preventLeaveWithoutSaving && (\n <LeaveWithoutSaving onConfirm={handleLeaveConfirm} onPrevent={handlePrevent} />\n )}\n {!isInDrawer && (\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n isTrashed={isTrashed}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n BeforeDocumentControls={BeforeDocumentControls}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={data}\n disableActions={disableActions || isFolderCollection || isTrashed}\n disableCreate={disableCreate}\n EditMenuItems={EditMenuItems}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n isInDrawer={isInDrawer}\n isTrashed={isTrashed}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onRestore={onRestore}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver({\n id,\n clearRouteCache,\n collectionSlug,\n documentLockStateRef: documentLockState,\n globalSlug,\n isLockingEnabled,\n isWithinDoc: true,\n setCurrentEditor,\n setIsReadOnlyForIncomingUser,\n updateDocumentEditor,\n user,\n })\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n redirectAfterRestore={redirectAfterRestore}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[\n `${baseClass}__main-wrapper`,\n previewWindowType === 'popup' && `${baseClass}--detached`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={data?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n // eslint-disable-next-line react-compiler/react-compiler\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n <UploadControlsProvider>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n UploadControls={UploadControls}\n />\n )}\n </UploadControlsProvider>\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n forceSidebarWrap={isLivePreviewing}\n isTrashed={isTrashed}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission || isTrashed}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </div>\n {isLivePreviewEnabled && !isInDrawer && livePreviewURL && (\n <>\n {CustomLivePreview || (\n <LivePreviewWindow collectionSlug={collectionSlug} globalSlug={globalSlug} />\n )}\n </>\n )}\n </div>\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useRouter","useSearchParams","formatAdminURL","hasAutosaveEnabled","React","Fragment","useCallback","useEffect","useMemo","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","LivePreviewWindow","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","useLivePreviewContext","usePreviewURL","OperationProvider","useRouteCache","useRouteTransition","useServerFunctions","UploadControlsProvider","useUploadEdits","abortAndIgnore","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","BeforeDocumentControls","Description","EditMenuItems","LivePreview","CustomLivePreview","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","UploadControls","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","data","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","documentLockState","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","isLocked","isTrashed","lastUpdateTime","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","setCurrentEditor","setData","setDocumentIsLocked","setLastUpdateTime","unlockDocument","updateDocumentEditor","clearDoc","drawerSlug","onDelete","onDuplicate","onRestore","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","serverURL","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","startRouteTransition","clearRouteCache","isLivePreviewEnabled","isLivePreviewing","previewWindowType","setURL","setLivePreviewURL","typeofLivePreviewURL","url","livePreviewURL","isPreviewEnabled","setPreviewURL","abortOnChangeRef","abortOnSaveRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","preventLeaveWithoutSaving","schemaPathSegments","validateBeforeSubmit","setValidateBeforeSubmit","disableLocalStrategy","nextHrefRef","handleDocumentLocking","lockedState","previousOwnerID","current","lockedUserID","hasShownLockedModal","lastEditedAt","getTime","handlePrevent","nextHref","handleLeaveConfirm","lockUser","isLockOwnedByCurrentUser","nextPath","URL","pathname","isInternalView","some","path","includes","err","console","error","json","ctx","context","formState","controller","document","doc","result","updatedAt","toISOString","redirectRoute","push","docPreferences","previewURL","state","renderAllFields","returnLivePreviewURL","returnLockStatus","returnPreviewURL","schemaPath","join","signal","skipValidation","file","onChange","prevFormState","submitted","currentTime","timeSinceLastUpdate","updateLastEdited","abortOnChange","abortOnSave","shouldShowDocumentLockedModal","isFolderCollection","folders","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","isDocumentForm","method","onSuccess","AfterHeader","showDocumentID","isActive","onReadOnly","onTakeOver","documentLockStateRef","isWithinDoc","onConfirm","onPrevent","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields","forceSidebarWrap","_Fragment"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientUser, DocumentViewClientProps } from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL, hasAutosaveEnabled } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { FormOnSuccess } from '../../forms/Form/types.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { LivePreviewWindow } from '../../elements/LivePreview/Window/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLivePreviewContext, usePreviewURL } from '../../providers/LivePreview/context.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\nexport type OnSaveContext = {\n getDocPermissions?: boolean\n incrementVersionCount?: boolean\n}\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport function DefaultEditView({\n BeforeDocumentControls,\n Description,\n EditMenuItems,\n LivePreview: CustomLivePreview,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n UploadControls,\n}: DocumentViewClientProps) {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n data,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n isLocked,\n isTrashed,\n lastUpdateTime,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n setCurrentEditor,\n setData,\n setDocumentIsLocked,\n setLastUpdateTime,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onRestore,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { clearRouteCache } = useRouteCache()\n const {\n isLivePreviewEnabled,\n isLivePreviewing,\n previewWindowType,\n setURL: setLivePreviewURL,\n typeofLivePreviewURL,\n url: livePreviewURL,\n } = useLivePreviewContext()\n const { isPreviewEnabled, setPreviewURL } = usePreviewURL()\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const autosaveEnabled = hasAutosaveEnabled(docConfig)\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n const isLockExpired = Date.now() > lockExpiryTime\n\n const preventLeaveWithoutSaving =\n !isReadOnlyForIncomingUser &&\n (typeof disableLeaveWithoutSaving !== 'undefined'\n ? !disableLeaveWithoutSaving\n : !autosaveEnabled)\n\n const schemaPathSegments = useMemo(() => [entitySlug], [entitySlug])\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const nextHrefRef = React.useRef<null | string>(null)\n\n const handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\n const previousOwnerID =\n typeof documentLockState.current?.user === 'object'\n ? documentLockState.current?.user?.id\n : documentLockState.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockState.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockState.current.hasShownLockedModal = true\n }\n\n documentLockState.current = {\n hasShownLockedModal: documentLockState.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n\n // Update lastUpdateTime when lock state changes\n if (lockedState.lastEditedAt) {\n setLastUpdateTime(new Date(lockedState.lastEditedAt).getTime())\n }\n }\n },\n [documentLockState, setCurrentEditor, setDocumentIsLocked, setLastUpdateTime, user?.id],\n )\n\n const handlePrevent = useCallback((nextHref: null | string) => {\n nextHrefRef.current = nextHref\n }, [])\n\n const handleLeaveConfirm = useCallback(async () => {\n const lockUser = documentLockState.current?.user\n\n const isLockOwnedByCurrentUser =\n typeof lockUser === 'object' ? lockUser?.id === user?.id : lockUser === user?.id\n\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Check where user is trying to go\n const nextPath = nextHrefRef.current ? new URL(nextHrefRef.current).pathname : ''\n const isInternalView = ['/preview', '/api', '/versions'].some((path) =>\n nextPath.includes(path),\n )\n\n // Remove the lock if the user is navigating away from the document view they have locked\n if (isLockOwnedByCurrentUser && !isInternalView) {\n try {\n await unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n } catch (err) {\n console.error('Failed to unlock before leave', err) // eslint-disable-line no-console\n }\n }\n }\n }, [\n collectionSlug,\n documentIsLocked,\n documentLockState,\n globalSlug,\n id,\n isLockingEnabled,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n user?.id,\n ])\n\n const onSave: FormOnSuccess<any, OnSaveContext> = useCallback(\n async (json, ctx) => {\n const { context, formState } = ctx || {}\n\n const controller = handleAbortRef(abortOnSaveRef)\n\n const document = json?.doc || json?.result\n\n const updatedAt = document?.updatedAt || new Date().toISOString()\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n setLastUpdateTime(updatedAt)\n\n if (context?.incrementVersionCount !== false) {\n incrementVersionCount()\n }\n\n if (typeof setData === 'function') {\n void setData(document || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n const operation = id ? 'update' : 'create'\n\n void onSaveFromContext({\n ...(json as Record<string, unknown>),\n context,\n operation,\n // @ts-expect-error todo: this is not right, should be under `doc`?\n updatedAt:\n operation === 'update'\n ? new Date().toISOString()\n : document?.updatedAt || new Date().toISOString(),\n })\n }\n\n if (!isEditing && depth < 2 && redirectAfterCreate !== false) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${document?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n\n if (context?.getDocPermissions !== false) {\n await getDocPermissions(json)\n }\n\n if (id || globalSlug) {\n const docPreferences = await getDocPreferences()\n\n const { livePreviewURL, previewURL, state } = await getFormState({\n id,\n collectionSlug,\n data: document,\n docPermissions,\n docPreferences,\n formState,\n globalSlug,\n operation,\n renderAllFields: false,\n returnLivePreviewURL: isLivePreviewEnabled && typeofLivePreviewURL === 'function',\n returnLockStatus: false,\n returnPreviewURL: isPreviewEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: true,\n })\n\n // For upload collections, clear the file field from the returned state\n // to prevent the File object from persisting in form state after save\n if (upload && state) {\n delete state.file\n }\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (isLivePreviewEnabled && typeofLivePreviewURL === 'function') {\n setLivePreviewURL(livePreviewURL)\n }\n\n if (isPreviewEnabled) {\n setPreviewURL(previewURL)\n }\n\n reportUpdate({\n id,\n doc: document,\n drawerSlug,\n entitySlug,\n operation: 'update',\n updatedAt,\n })\n\n abortOnSaveRef.current = null\n\n return state\n } else {\n reportUpdate({\n id,\n doc: document,\n drawerSlug,\n entitySlug,\n operation: 'create',\n updatedAt,\n })\n }\n },\n [\n user,\n collectionSlug,\n userSlug,\n id,\n setLastUpdateTime,\n setData,\n onSaveFromContext,\n isEditing,\n depth,\n redirectAfterCreate,\n globalSlug,\n refreshCookieAsync,\n incrementVersionCount,\n adminRoute,\n locale,\n startRouteTransition,\n router,\n resetUploadEdits,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n docPermissions,\n operation,\n isLivePreviewEnabled,\n typeofLivePreviewURL,\n isPreviewEnabled,\n schemaPathSegments,\n upload,\n isLockingEnabled,\n reportUpdate,\n drawerSlug,\n entitySlug,\n setDocumentIsLocked,\n setLivePreviewURL,\n setPreviewURL,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const result = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: !submitted,\n updateLastEdited,\n })\n\n if (!result) {\n return\n }\n\n const { lockedState, state } = result\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPathSegments,\n handleDocumentLocking,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n setShowTakeOverModal(false)\n }\n }, [])\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n const abortOnSave = abortOnSaveRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n abortAndIgnore(abortOnSave)\n }\n }, [])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !documentLockState.current?.hasShownLockedModal &&\n !isLockExpired\n\n const isFolderCollection = config.folders && collectionSlug === config.folders?.slug\n\n return (\n <main\n className={[\n baseClass,\n (id || globalSlug) && `${baseClass}--is-editing`,\n globalSlug && `global-edit--${globalSlug}`,\n collectionSlug && `collection-edit--${collectionSlug}`,\n isLivePreviewing && previewWindowType === 'iframe' && `${baseClass}--is-live-previewing`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission || isTrashed}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isDocumentForm={true}\n isInitializing={isInitializing}\n key={`${isLocked}`}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && (\n <DocumentDrawerHeader\n AfterHeader={Description}\n drawerSlug={drawerSlug}\n showDocumentID={!isFolderCollection}\n />\n )}\n {isLockingEnabled && shouldShowDocumentLockedModal && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router, serverURL })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver({\n id,\n clearRouteCache,\n collectionSlug,\n documentLockStateRef: documentLockState,\n globalSlug,\n isLockingEnabled,\n isWithinDoc: false,\n setCurrentEditor,\n updateDocumentEditor,\n user,\n })\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router, serverURL })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {preventLeaveWithoutSaving && (\n <LeaveWithoutSaving onConfirm={handleLeaveConfirm} onPrevent={handlePrevent} />\n )}\n {!isInDrawer && (\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n isTrashed={isTrashed}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n BeforeDocumentControls={BeforeDocumentControls}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={data}\n disableActions={disableActions || isFolderCollection || isTrashed}\n disableCreate={disableCreate}\n EditMenuItems={EditMenuItems}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n isInDrawer={isInDrawer}\n isTrashed={isTrashed}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onRestore={onRestore}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver({\n id,\n clearRouteCache,\n collectionSlug,\n documentLockStateRef: documentLockState,\n globalSlug,\n isLockingEnabled,\n isWithinDoc: true,\n setCurrentEditor,\n setIsReadOnlyForIncomingUser,\n updateDocumentEditor,\n user,\n })\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n redirectAfterRestore={redirectAfterRestore}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[\n `${baseClass}__main-wrapper`,\n previewWindowType === 'popup' && `${baseClass}--detached`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={data?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n // eslint-disable-next-line react-compiler/react-compiler\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n <UploadControlsProvider>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n UploadControls={UploadControls}\n />\n )}\n </UploadControlsProvider>\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n forceSidebarWrap={isLivePreviewing}\n isTrashed={isTrashed}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission || isTrashed}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </div>\n {isLivePreviewEnabled && !isInDrawer && livePreviewURL && (\n <>\n {CustomLivePreview || (\n <LivePreviewWindow collectionSlug={collectionSlug} globalSlug={globalSlug} />\n )}\n </>\n )}\n </div>\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAKlD,OAAO,KAA8B,MAAM,OAAO,CAAA;AAwBlD,OAAO,cAAc,CAAA;AAIrB,wBAAgB,eAAe,CAAC,KAAK,EAAE,mBAAmB,qBAuPzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAKlD,OAAO,KAA8B,MAAM,OAAO,CAAA;AAwBlD,OAAO,cAAc,CAAA;AAIrB,wBAAgB,eAAe,CAAC,KAAK,EAAE,mBAAmB,qBAsPzD"}
@@ -128,8 +128,7 @@ export function DefaultListView(props) {
128
128
  label: getTranslation(labels?.plural, i18n),
129
129
  url: isTrashEnabled && viewType === 'trash' ? formatAdminURL({
130
130
  adminRoute,
131
- path: `/collections/${collectionSlug}`,
132
- serverURL
131
+ path: `/collections/${collectionSlug}`
133
132
  }) : undefined
134
133
  };
135
134
  const trashLabel = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","useRouter","formatAdminURL","formatFilesize","React","Fragment","useEffect","useBulkUpload","Button","Gutter","ListControls","useListDrawerContext","useModal","PageControls","RenderCustomComponent","SelectMany","useStepNav","StickyToolbar","RelationshipProvider","ViewDescription","useControllableState","useConfig","useListQuery","SelectionProvider","TableColumnsProvider","useTranslation","useWindowInfo","ListSelection","CollectionListHeader","baseClass","DefaultListView","props","AfterList","AfterListTable","beforeActions","BeforeList","BeforeListTable","collectionSlug","columnState","Description","disableBulkDelete","disableBulkEdit","disableQueryPresets","enableRowSelections","hasCreatePermission","hasCreatePermissionFromProps","hasDeletePermission","listMenuItems","newDocumentURL","queryPreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","Table","InitialTable","viewType","allowCreate","createNewDrawerSlug","isInDrawer","onBulkSelect","undefined","config","routes","admin","adminRoute","serverURL","getEntityConfig","router","data","isGroupingBy","openModal","drawerSlug","bulkUploadDrawerSlug","setCollectionSlug","setOnSuccess","collectionConfig","labels","upload","isUploadCollection","Boolean","isBulkUploadEnabled","bulkUpload","isTrashEnabled","trash","i18n","setStepNav","breakpoints","s","smallBreak","docs","useMemo","map","doc","filesize","openBulkUpload","useCallback","refresh","baseLabel","label","plural","url","path","trashLabel","t","navItems","_jsxs","_jsx","className","totalDocs","CustomComponent","Fallback","description","hideFileInputOnCreate","onClick","enableQueryPresets","length","el","singular","to","AfterPageControls","showSelectAllAcrossPages","totalPages"],"sources":["../../../src/views/List/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ListViewClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL, formatFilesize } from 'payload/shared'\nimport React, { Fragment, useEffect } from 'react'\n\nimport { useBulkUpload } from '../../elements/BulkUpload/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { Gutter } from '../../elements/Gutter/index.js'\nimport { ListControls } from '../../elements/ListControls/index.js'\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useModal } from '../../elements/Modal/index.js'\nimport { PageControls } from '../../elements/PageControls/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { SelectMany } from '../../elements/SelectMany/index.js'\nimport { useStepNav } from '../../elements/StepNav/index.js'\nimport { StickyToolbar } from '../../elements/StickyToolbar/index.js'\nimport { RelationshipProvider } from '../../elements/Table/RelationshipProvider/index.js'\nimport { ViewDescription } from '../../elements/ViewDescription/index.js'\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { SelectionProvider } from '../../providers/Selection/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useWindowInfo } from '../../providers/WindowInfo/index.js'\nimport { ListSelection } from '../../views/List/ListSelection/index.js'\nimport { CollectionListHeader } from './ListHeader/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-list'\n\nexport function DefaultListView(props: ListViewClientProps) {\n const {\n AfterList,\n AfterListTable,\n beforeActions,\n BeforeList,\n BeforeListTable,\n collectionSlug,\n columnState,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n disableQueryPresets,\n enableRowSelections,\n hasCreatePermission: hasCreatePermissionFromProps,\n hasDeletePermission,\n listMenuItems,\n newDocumentURL,\n queryPreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n Table: InitialTable,\n viewType,\n } = props\n\n const [Table] = useControllableState(InitialTable)\n\n const { allowCreate, createNewDrawerSlug, isInDrawer, onBulkSelect } = useListDrawerContext()\n\n const hasCreatePermission =\n allowCreate !== undefined\n ? allowCreate && hasCreatePermissionFromProps\n : hasCreatePermissionFromProps\n\n const {\n config: {\n routes: { admin: adminRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n const router = useRouter()\n\n const { data, isGroupingBy } = useListQuery()\n\n const { openModal } = useModal()\n const { drawerSlug: bulkUploadDrawerSlug, setCollectionSlug, setOnSuccess } = useBulkUpload()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { labels, upload } = collectionConfig\n\n const isUploadCollection = Boolean(upload)\n\n const isBulkUploadEnabled = isUploadCollection && collectionConfig.upload.bulkUpload\n\n const isTrashEnabled = Boolean(collectionConfig.trash)\n\n const { i18n } = useTranslation()\n\n const { setStepNav } = useStepNav()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const docs = React.useMemo(() => {\n if (isUploadCollection) {\n return data.docs.map((doc) => {\n return {\n ...doc,\n filesize: formatFilesize(doc.filesize),\n }\n })\n } else {\n return data?.docs\n }\n }, [data?.docs, isUploadCollection])\n\n const openBulkUpload = React.useCallback(() => {\n setCollectionSlug(collectionSlug)\n openModal(bulkUploadDrawerSlug)\n setOnSuccess(() => router.refresh())\n }, [router, collectionSlug, bulkUploadDrawerSlug, openModal, setCollectionSlug, setOnSuccess])\n\n useEffect(() => {\n if (!isInDrawer) {\n const baseLabel = {\n label: getTranslation(labels?.plural, i18n),\n url:\n isTrashEnabled && viewType === 'trash'\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n serverURL,\n })\n : undefined,\n }\n\n const trashLabel = {\n label: i18n.t('general:trash'),\n }\n\n const navItems =\n isTrashEnabled && viewType === 'trash' ? [baseLabel, trashLabel] : [baseLabel]\n\n setStepNav(navItems)\n }\n }, [\n adminRoute,\n setStepNav,\n serverURL,\n labels,\n isInDrawer,\n isTrashEnabled,\n viewType,\n i18n,\n collectionSlug,\n ])\n\n return (\n <Fragment>\n <TableColumnsProvider collectionSlug={collectionSlug} columnState={columnState}>\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n <SelectionProvider docs={docs} totalDocs={data?.totalDocs}>\n {BeforeList}\n <Gutter className={`${baseClass}__wrap`}>\n <CollectionListHeader\n collectionConfig={collectionConfig}\n Description={\n <div className={`${baseClass}__sub-header`}>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={\n <ViewDescription\n collectionSlug={collectionSlug}\n description={collectionConfig?.admin?.description}\n />\n }\n />\n </div>\n }\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n hasCreatePermission={hasCreatePermission}\n hasDeletePermission={hasDeletePermission}\n i18n={i18n}\n isBulkUploadEnabled={isBulkUploadEnabled && !upload.hideFileInputOnCreate}\n isTrashEnabled={isTrashEnabled}\n newDocumentURL={newDocumentURL}\n openBulkUpload={openBulkUpload}\n smallBreak={smallBreak}\n viewType={viewType}\n />\n <ListControls\n beforeActions={\n enableRowSelections && typeof onBulkSelect === 'function'\n ? beforeActions\n ? [...beforeActions, <SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : [<SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : beforeActions\n }\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n disableQueryPresets={\n collectionConfig?.enableQueryPresets !== true || disableQueryPresets\n }\n listMenuItems={listMenuItems}\n queryPreset={queryPreset}\n queryPresetPermissions={queryPresetPermissions}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n {BeforeListTable}\n {docs?.length > 0 && (\n <div className={`${baseClass}__tables`}>\n <RelationshipProvider>{Table}</RelationshipProvider>\n </div>\n )}\n {docs?.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t(viewType === 'trash' ? 'general:noTrashResults' : 'general:noResults', {\n label: getTranslation(labels?.plural, i18n),\n })}\n </p>\n {hasCreatePermission && newDocumentURL && viewType !== 'trash' && (\n <Fragment>\n {isInDrawer ? (\n <Button el=\"button\" onClick={() => openModal(createNewDrawerSlug)}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n ) : (\n <Button el=\"link\" to={newDocumentURL}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n )}\n </Fragment>\n )}\n </div>\n )}\n {AfterListTable}\n {docs?.length > 0 && !isGroupingBy && (\n <PageControls\n AfterPageControls={\n smallBreak ? (\n <div className={`${baseClass}__list-selection`}>\n <ListSelection\n collectionConfig={collectionConfig}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n label={getTranslation(collectionConfig.labels.plural, i18n)}\n showSelectAllAcrossPages={!isGroupingBy}\n />\n <div className={`${baseClass}__list-selection-actions`}>\n {enableRowSelections && typeof onBulkSelect === 'function'\n ? beforeActions\n ? [\n ...beforeActions,\n <SelectMany key=\"select-many\" onClick={onBulkSelect} />,\n ]\n : [<SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : beforeActions}\n </div>\n </div>\n ) : null\n }\n collectionConfig={collectionConfig}\n />\n )}\n </Gutter>\n {AfterList}\n </SelectionProvider>\n </div>\n </TableColumnsProvider>\n {docs?.length > 0 && isGroupingBy && data.totalPages > 1 && (\n <StickyToolbar>\n <PageControls collectionConfig={collectionConfig} />\n </StickyToolbar>\n )}\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","useRouter","formatAdminURL","formatFilesize","React","Fragment","useEffect","useBulkUpload","Button","Gutter","ListControls","useListDrawerContext","useModal","PageControls","RenderCustomComponent","SelectMany","useStepNav","StickyToolbar","RelationshipProvider","ViewDescription","useControllableState","useConfig","useListQuery","SelectionProvider","TableColumnsProvider","useTranslation","useWindowInfo","ListSelection","CollectionListHeader","baseClass","DefaultListView","props","AfterList","AfterListTable","beforeActions","BeforeList","BeforeListTable","collectionSlug","columnState","Description","disableBulkDelete","disableBulkEdit","disableQueryPresets","enableRowSelections","hasCreatePermission","hasCreatePermissionFromProps","hasDeletePermission","listMenuItems","newDocumentURL","queryPreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","Table","InitialTable","viewType","allowCreate","createNewDrawerSlug","isInDrawer","onBulkSelect","undefined","config","routes","admin","adminRoute","serverURL","getEntityConfig","router","data","isGroupingBy","openModal","drawerSlug","bulkUploadDrawerSlug","setCollectionSlug","setOnSuccess","collectionConfig","labels","upload","isUploadCollection","Boolean","isBulkUploadEnabled","bulkUpload","isTrashEnabled","trash","i18n","setStepNav","breakpoints","s","smallBreak","docs","useMemo","map","doc","filesize","openBulkUpload","useCallback","refresh","baseLabel","label","plural","url","path","trashLabel","t","navItems","_jsxs","_jsx","className","totalDocs","CustomComponent","Fallback","description","hideFileInputOnCreate","onClick","enableQueryPresets","length","el","singular","to","AfterPageControls","showSelectAllAcrossPages","totalPages"],"sources":["../../../src/views/List/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ListViewClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL, formatFilesize } from 'payload/shared'\nimport React, { Fragment, useEffect } from 'react'\n\nimport { useBulkUpload } from '../../elements/BulkUpload/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { Gutter } from '../../elements/Gutter/index.js'\nimport { ListControls } from '../../elements/ListControls/index.js'\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useModal } from '../../elements/Modal/index.js'\nimport { PageControls } from '../../elements/PageControls/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { SelectMany } from '../../elements/SelectMany/index.js'\nimport { useStepNav } from '../../elements/StepNav/index.js'\nimport { StickyToolbar } from '../../elements/StickyToolbar/index.js'\nimport { RelationshipProvider } from '../../elements/Table/RelationshipProvider/index.js'\nimport { ViewDescription } from '../../elements/ViewDescription/index.js'\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { SelectionProvider } from '../../providers/Selection/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useWindowInfo } from '../../providers/WindowInfo/index.js'\nimport { ListSelection } from '../../views/List/ListSelection/index.js'\nimport { CollectionListHeader } from './ListHeader/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-list'\n\nexport function DefaultListView(props: ListViewClientProps) {\n const {\n AfterList,\n AfterListTable,\n beforeActions,\n BeforeList,\n BeforeListTable,\n collectionSlug,\n columnState,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n disableQueryPresets,\n enableRowSelections,\n hasCreatePermission: hasCreatePermissionFromProps,\n hasDeletePermission,\n listMenuItems,\n newDocumentURL,\n queryPreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n Table: InitialTable,\n viewType,\n } = props\n\n const [Table] = useControllableState(InitialTable)\n\n const { allowCreate, createNewDrawerSlug, isInDrawer, onBulkSelect } = useListDrawerContext()\n\n const hasCreatePermission =\n allowCreate !== undefined\n ? allowCreate && hasCreatePermissionFromProps\n : hasCreatePermissionFromProps\n\n const {\n config: {\n routes: { admin: adminRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n const router = useRouter()\n\n const { data, isGroupingBy } = useListQuery()\n\n const { openModal } = useModal()\n const { drawerSlug: bulkUploadDrawerSlug, setCollectionSlug, setOnSuccess } = useBulkUpload()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { labels, upload } = collectionConfig\n\n const isUploadCollection = Boolean(upload)\n\n const isBulkUploadEnabled = isUploadCollection && collectionConfig.upload.bulkUpload\n\n const isTrashEnabled = Boolean(collectionConfig.trash)\n\n const { i18n } = useTranslation()\n\n const { setStepNav } = useStepNav()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const docs = React.useMemo(() => {\n if (isUploadCollection) {\n return data.docs.map((doc) => {\n return {\n ...doc,\n filesize: formatFilesize(doc.filesize),\n }\n })\n } else {\n return data?.docs\n }\n }, [data?.docs, isUploadCollection])\n\n const openBulkUpload = React.useCallback(() => {\n setCollectionSlug(collectionSlug)\n openModal(bulkUploadDrawerSlug)\n setOnSuccess(() => router.refresh())\n }, [router, collectionSlug, bulkUploadDrawerSlug, openModal, setCollectionSlug, setOnSuccess])\n\n useEffect(() => {\n if (!isInDrawer) {\n const baseLabel = {\n label: getTranslation(labels?.plural, i18n),\n url:\n isTrashEnabled && viewType === 'trash'\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n })\n : undefined,\n }\n\n const trashLabel = {\n label: i18n.t('general:trash'),\n }\n\n const navItems =\n isTrashEnabled && viewType === 'trash' ? [baseLabel, trashLabel] : [baseLabel]\n\n setStepNav(navItems)\n }\n }, [\n adminRoute,\n setStepNav,\n serverURL,\n labels,\n isInDrawer,\n isTrashEnabled,\n viewType,\n i18n,\n collectionSlug,\n ])\n\n return (\n <Fragment>\n <TableColumnsProvider collectionSlug={collectionSlug} columnState={columnState}>\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n <SelectionProvider docs={docs} totalDocs={data?.totalDocs}>\n {BeforeList}\n <Gutter className={`${baseClass}__wrap`}>\n <CollectionListHeader\n collectionConfig={collectionConfig}\n Description={\n <div className={`${baseClass}__sub-header`}>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={\n <ViewDescription\n collectionSlug={collectionSlug}\n description={collectionConfig?.admin?.description}\n />\n }\n />\n </div>\n }\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n hasCreatePermission={hasCreatePermission}\n hasDeletePermission={hasDeletePermission}\n i18n={i18n}\n isBulkUploadEnabled={isBulkUploadEnabled && !upload.hideFileInputOnCreate}\n isTrashEnabled={isTrashEnabled}\n newDocumentURL={newDocumentURL}\n openBulkUpload={openBulkUpload}\n smallBreak={smallBreak}\n viewType={viewType}\n />\n <ListControls\n beforeActions={\n enableRowSelections && typeof onBulkSelect === 'function'\n ? beforeActions\n ? [...beforeActions, <SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : [<SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : beforeActions\n }\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n disableQueryPresets={\n collectionConfig?.enableQueryPresets !== true || disableQueryPresets\n }\n listMenuItems={listMenuItems}\n queryPreset={queryPreset}\n queryPresetPermissions={queryPresetPermissions}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n {BeforeListTable}\n {docs?.length > 0 && (\n <div className={`${baseClass}__tables`}>\n <RelationshipProvider>{Table}</RelationshipProvider>\n </div>\n )}\n {docs?.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t(viewType === 'trash' ? 'general:noTrashResults' : 'general:noResults', {\n label: getTranslation(labels?.plural, i18n),\n })}\n </p>\n {hasCreatePermission && newDocumentURL && viewType !== 'trash' && (\n <Fragment>\n {isInDrawer ? (\n <Button el=\"button\" onClick={() => openModal(createNewDrawerSlug)}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n ) : (\n <Button el=\"link\" to={newDocumentURL}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n )}\n </Fragment>\n )}\n </div>\n )}\n {AfterListTable}\n {docs?.length > 0 && !isGroupingBy && (\n <PageControls\n AfterPageControls={\n smallBreak ? (\n <div className={`${baseClass}__list-selection`}>\n <ListSelection\n collectionConfig={collectionConfig}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n label={getTranslation(collectionConfig.labels.plural, i18n)}\n showSelectAllAcrossPages={!isGroupingBy}\n />\n <div className={`${baseClass}__list-selection-actions`}>\n {enableRowSelections && typeof onBulkSelect === 'function'\n ? beforeActions\n ? [\n ...beforeActions,\n <SelectMany key=\"select-many\" onClick={onBulkSelect} />,\n ]\n : [<SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : beforeActions}\n </div>\n </div>\n ) : null\n }\n collectionConfig={collectionConfig}\n />\n )}\n </Gutter>\n {AfterList}\n </SelectionProvider>\n </div>\n </TableColumnsProvider>\n {docs?.length > 0 && isGroupingBy && data.totalPages > 1 && (\n <StickyToolbar>\n <PageControls collectionConfig={collectionConfig} />\n </StickyToolbar>\n )}\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import type { WidgetServerProps } from 'payload';
2
+ import React from 'react';
3
+ import './index.scss';
4
+ export declare function CollectionCards(props: WidgetServerProps): Promise<React.JSX.Element>;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/widgets/CollectionCards/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAKhD,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,OAAO,cAAc,CAAA;AAIrB,wBAAsB,eAAe,CAAC,KAAK,EAAE,iBAAiB,8BAwH7D"}
@@ -0,0 +1,135 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { getTranslation } from '@payloadcms/translations';
3
+ import { EntityType, getAccessResults } from 'payload';
4
+ import { formatAdminURL } from 'payload/shared';
5
+ import React from 'react';
6
+ import { Button } from '../../elements/Button/index.js';
7
+ import { Card } from '../../elements/Card/index.js';
8
+ import { Locked } from '../../elements/Locked/index.js';
9
+ import { getGlobalData } from '../../utilities/getGlobalData.js';
10
+ import { getNavGroups } from '../../utilities/getNavGroups.js';
11
+ import { getVisibleEntities } from '../../utilities/getVisibleEntities.js';
12
+ import './index.scss';
13
+ const baseClass = 'collections';
14
+ export async function CollectionCards(props) {
15
+ const {
16
+ i18n,
17
+ payload,
18
+ user
19
+ } = props.req;
20
+ const {
21
+ admin: adminRoute
22
+ } = payload.config.routes;
23
+ const {
24
+ t
25
+ } = i18n;
26
+ const permissions = await getAccessResults({
27
+ req: props.req
28
+ });
29
+ const visibleEntities = getVisibleEntities({
30
+ req: props.req
31
+ });
32
+ const globalData = await getGlobalData(props.req);
33
+ const navGroups = getNavGroups(permissions, visibleEntities, payload.config, i18n);
34
+ return /*#__PURE__*/_jsx("div", {
35
+ className: baseClass,
36
+ children: /*#__PURE__*/_jsx("div", {
37
+ className: `${baseClass}__wrap`,
38
+ children: !navGroups || navGroups?.length === 0 ? /*#__PURE__*/_jsx("p", {
39
+ children: "no nav groups...."
40
+ }) : navGroups.map(({
41
+ entities,
42
+ label
43
+ }, groupIndex) => {
44
+ return /*#__PURE__*/_jsxs("div", {
45
+ className: `${baseClass}__group`,
46
+ children: [/*#__PURE__*/_jsx("h2", {
47
+ className: `${baseClass}__label`,
48
+ children: label
49
+ }), /*#__PURE__*/_jsx("ul", {
50
+ className: `${baseClass}__card-list`,
51
+ children: entities.map(({
52
+ slug,
53
+ type,
54
+ label
55
+ }, entityIndex) => {
56
+ let title;
57
+ let buttonAriaLabel;
58
+ let createHREF;
59
+ let href;
60
+ let hasCreatePermission;
61
+ let isLocked = null;
62
+ let userEditing = null;
63
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
64
+ if (type === EntityType.collection) {
65
+ title = getTranslation(label, i18n);
66
+ buttonAriaLabel = t('general:showAllLabel', {
67
+ label: title
68
+ });
69
+ href = formatAdminURL({
70
+ adminRoute,
71
+ path: `/collections/${slug}`
72
+ });
73
+ createHREF = formatAdminURL({
74
+ adminRoute,
75
+ path: `/collections/${slug}/create`
76
+ });
77
+ hasCreatePermission = permissions?.collections?.[slug]?.create;
78
+ }
79
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
80
+ if (type === EntityType.global) {
81
+ title = getTranslation(label, i18n);
82
+ buttonAriaLabel = t('general:editLabel', {
83
+ label: getTranslation(label, i18n)
84
+ });
85
+ href = formatAdminURL({
86
+ adminRoute,
87
+ path: `/globals/${slug}`
88
+ });
89
+ // Find the lock status for the global
90
+ const globalLockData = globalData.find(global => global.slug === slug);
91
+ if (globalLockData) {
92
+ isLocked = globalLockData.data._isLocked;
93
+ userEditing = globalLockData.data._userEditing;
94
+ // Check if the lock is expired
95
+ const lockDuration = globalLockData?.lockDuration;
96
+ const lastEditedAt = new Date(globalLockData.data?._lastEditedAt).getTime();
97
+ const lockDurationInMilliseconds = lockDuration * 1000;
98
+ const lockExpirationTime = lastEditedAt + lockDurationInMilliseconds;
99
+ if (new Date().getTime() > lockExpirationTime) {
100
+ isLocked = false;
101
+ userEditing = null;
102
+ }
103
+ }
104
+ }
105
+ return /*#__PURE__*/_jsx("li", {
106
+ children: /*#__PURE__*/_jsx(Card, {
107
+ actions: isLocked && user?.id !== userEditing?.id ? /*#__PURE__*/_jsx(Locked, {
108
+ className: `${baseClass}__locked`,
109
+ user: userEditing
110
+ }) : hasCreatePermission && type === EntityType.collection ? /*#__PURE__*/_jsx(Button, {
111
+ "aria-label": t('general:createNewLabel', {
112
+ label
113
+ }),
114
+ buttonStyle: "icon-label",
115
+ el: "link",
116
+ icon: "plus",
117
+ iconStyle: "with-border",
118
+ round: true,
119
+ to: createHREF
120
+ }) : undefined,
121
+ buttonAriaLabel: buttonAriaLabel,
122
+ href: href,
123
+ id: `card-${slug}`,
124
+ title: getTranslation(label, i18n),
125
+ titleAs: "h3"
126
+ })
127
+ }, entityIndex);
128
+ })
129
+ })]
130
+ }, groupIndex);
131
+ })
132
+ })
133
+ });
134
+ }
135
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["getTranslation","EntityType","getAccessResults","formatAdminURL","React","Button","Card","Locked","getGlobalData","getNavGroups","getVisibleEntities","baseClass","CollectionCards","props","i18n","payload","user","req","admin","adminRoute","config","routes","t","permissions","visibleEntities","globalData","navGroups","_jsx","className","length","map","entities","label","groupIndex","_jsxs","slug","type","entityIndex","title","buttonAriaLabel","createHREF","href","hasCreatePermission","isLocked","userEditing","collection","path","collections","create","global","globalLockData","find","data","_isLocked","_userEditing","lockDuration","lastEditedAt","Date","_lastEditedAt","getTime","lockDurationInMilliseconds","lockExpirationTime","actions","id","buttonStyle","el","icon","iconStyle","round","to","undefined","titleAs"],"sources":["../../../src/widgets/CollectionCards/index.tsx"],"sourcesContent":["import type { WidgetServerProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { EntityType, getAccessResults } from 'payload'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { Card } from '../../elements/Card/index.js'\nimport { Locked } from '../../elements/Locked/index.js'\nimport { getGlobalData } from '../../utilities/getGlobalData.js'\nimport { getNavGroups } from '../../utilities/getNavGroups.js'\nimport { getVisibleEntities } from '../../utilities/getVisibleEntities.js'\nimport './index.scss'\n\nconst baseClass = 'collections'\n\nexport async function CollectionCards(props: WidgetServerProps) {\n const { i18n, payload, user } = props.req\n const { admin: adminRoute } = payload.config.routes\n const { t } = i18n\n const permissions = await getAccessResults({ req: props.req })\n const visibleEntities = getVisibleEntities({ req: props.req })\n const globalData = await getGlobalData(props.req)\n\n const navGroups = getNavGroups(permissions, visibleEntities, payload.config, i18n)\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n {!navGroups || navGroups?.length === 0 ? (\n <p>no nav groups....</p>\n ) : (\n navGroups.map(({ entities, label }, groupIndex) => {\n return (\n <div className={`${baseClass}__group`} key={groupIndex}>\n <h2 className={`${baseClass}__label`}>{label}</h2>\n <ul className={`${baseClass}__card-list`}>\n {entities.map(({ slug, type, label }, entityIndex) => {\n let title: string\n let buttonAriaLabel: string\n let createHREF: string\n let href: string\n let hasCreatePermission: boolean\n let isLocked = null\n let userEditing = null\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n if (type === EntityType.collection) {\n title = getTranslation(label, i18n)\n\n buttonAriaLabel = t('general:showAllLabel', { label: title })\n\n href = formatAdminURL({\n adminRoute,\n path: `/collections/${slug}`,\n })\n\n createHREF = formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/create`,\n })\n\n hasCreatePermission = permissions?.collections?.[slug]?.create\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n if (type === EntityType.global) {\n title = getTranslation(label, i18n)\n\n buttonAriaLabel = t('general:editLabel', {\n label: getTranslation(label, i18n),\n })\n\n href = formatAdminURL({\n adminRoute,\n path: `/globals/${slug}`,\n })\n\n // Find the lock status for the global\n const globalLockData = globalData.find((global) => global.slug === slug)\n if (globalLockData) {\n isLocked = globalLockData.data._isLocked\n userEditing = globalLockData.data._userEditing\n\n // Check if the lock is expired\n const lockDuration = globalLockData?.lockDuration\n const lastEditedAt = new Date(globalLockData.data?._lastEditedAt).getTime()\n\n const lockDurationInMilliseconds = lockDuration * 1000\n const lockExpirationTime = lastEditedAt + lockDurationInMilliseconds\n\n if (new Date().getTime() > lockExpirationTime) {\n isLocked = false\n userEditing = null\n }\n }\n }\n\n return (\n <li key={entityIndex}>\n <Card\n actions={\n isLocked && user?.id !== userEditing?.id ? (\n <Locked className={`${baseClass}__locked`} user={userEditing} />\n ) : // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n hasCreatePermission && type === EntityType.collection ? (\n <Button\n aria-label={t('general:createNewLabel', {\n label,\n })}\n buttonStyle=\"icon-label\"\n el=\"link\"\n icon=\"plus\"\n iconStyle=\"with-border\"\n round\n to={createHREF}\n />\n ) : undefined\n }\n buttonAriaLabel={buttonAriaLabel}\n href={href}\n id={`card-${slug}`}\n title={getTranslation(label, i18n)}\n titleAs=\"h3\"\n />\n </li>\n )\n })}\n </ul>\n </div>\n )\n })\n )}\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ @import '~@payloadcms/ui/scss';
2
+
3
+ @layer payload-default {
4
+ .collections {
5
+ display: flex;
6
+ width: 100%;
7
+ --gap: var(--base);
8
+ --cols: 5;
9
+
10
+ &__wrap {
11
+ width: 100%;
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: var(--base);
15
+ }
16
+
17
+ &__group {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: var(--gap);
21
+ }
22
+
23
+ &__label {
24
+ margin: 0;
25
+ }
26
+
27
+ &__card-list {
28
+ padding: 0;
29
+ margin: 0;
30
+ list-style: none;
31
+ gap: 12px;
32
+ display: grid;
33
+ grid-template-columns: repeat(var(--cols), 1fr);
34
+
35
+ .card {
36
+ height: 100%;
37
+ }
38
+ }
39
+
40
+ &__locked.locked {
41
+ align-items: unset;
42
+ justify-content: unset;
43
+ }
44
+
45
+ @include large-break {
46
+ --cols: 4;
47
+ }
48
+
49
+ @include mid-break {
50
+ --gap: var(--base);
51
+ --cols: 2;
52
+ }
53
+
54
+ @include small-break {
55
+ --cols: 2;
56
+
57
+ &__wrap {
58
+ gap: var(--base);
59
+ }
60
+
61
+ &__card-list {
62
+ gap: base(0.4);
63
+ }
64
+ }
65
+
66
+ @include extra-small-break {
67
+ --cols: 1;
68
+ }
69
+ }
70
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/ui",
3
- "version": "3.69.0-internal.424436e",
3
+ "version": "3.69.0",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -136,7 +136,7 @@
136
136
  "ts-essentials": "10.0.3",
137
137
  "use-context-selector": "2.0.0",
138
138
  "uuid": "10.0.0",
139
- "@payloadcms/translations": "3.69.0-internal.424436e"
139
+ "@payloadcms/translations": "3.69.0"
140
140
  },
141
141
  "devDependencies": {
142
142
  "@babel/cli": "7.27.2",
@@ -151,14 +151,14 @@
151
151
  "babel-plugin-react-compiler": "19.1.0-rc.3",
152
152
  "esbuild": "0.25.5",
153
153
  "esbuild-sass-plugin": "3.3.1",
154
- "payload": "3.69.0-internal.424436e",
155
- "@payloadcms/eslint-config": "3.28.0"
154
+ "@payloadcms/eslint-config": "3.28.0",
155
+ "payload": "3.69.0"
156
156
  },
157
157
  "peerDependencies": {
158
158
  "next": "^15.2.8 || ^15.3.8 || ^15.4.10 || ^15.5.9",
159
159
  "react": "^19.0.1 || ^19.1.2 || ^19.2.1",
160
160
  "react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1",
161
- "payload": "3.69.0-internal.424436e"
161
+ "payload": "3.69.0"
162
162
  },
163
163
  "engines": {
164
164
  "node": "^18.20.2 || >=20.9.0"