@payloadcms/next 3.74.0-canary.6 → 3.74.0-internal-debug.1b84a48

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 (470) hide show
  1. package/dist/auth/login.d.ts +9 -12
  2. package/dist/auth/login.d.ts.map +1 -1
  3. package/dist/auth/login.js +52 -58
  4. package/dist/auth/login.js.map +1 -1
  5. package/dist/auth/logout.d.ts +2 -2
  6. package/dist/auth/logout.d.ts.map +1 -1
  7. package/dist/auth/logout.js +39 -44
  8. package/dist/auth/logout.js.map +1 -1
  9. package/dist/auth/refresh.d.ts +2 -1
  10. package/dist/auth/refresh.d.ts.map +1 -1
  11. package/dist/auth/refresh.js +45 -47
  12. package/dist/auth/refresh.js.map +1 -1
  13. package/dist/cjs/withPayload.cjs +65 -24
  14. package/dist/cjs/withPayload.cjs.map +2 -2
  15. package/dist/config.js +1 -0
  16. package/dist/config.js.map +1 -1
  17. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +9 -15
  18. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
  19. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +40 -71
  20. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  21. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +65 -59
  22. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  23. package/dist/elements/DocumentHeader/Tabs/Tab/index.scss +38 -0
  24. package/dist/elements/DocumentHeader/Tabs/index.js +80 -70
  25. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  26. package/dist/elements/DocumentHeader/Tabs/index.scss +54 -0
  27. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +16 -23
  28. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  29. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.scss +10 -0
  30. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +61 -69
  31. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  32. package/dist/elements/DocumentHeader/index.js +48 -28
  33. package/dist/elements/DocumentHeader/index.js.map +1 -1
  34. package/dist/elements/DocumentHeader/index.scss +64 -0
  35. package/dist/elements/FormHeader/index.js +30 -16
  36. package/dist/elements/FormHeader/index.js.map +1 -1
  37. package/dist/elements/FormHeader/index.scss +8 -0
  38. package/dist/elements/Logo/index.js +19 -34
  39. package/dist/elements/Logo/index.js.map +1 -1
  40. package/dist/elements/Nav/NavHamburger/index.js +23 -44
  41. package/dist/elements/Nav/NavHamburger/index.js.map +1 -1
  42. package/dist/elements/Nav/NavWrapper/index.js +28 -54
  43. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  44. package/dist/elements/Nav/NavWrapper/index.scss +27 -0
  45. package/dist/elements/Nav/SettingsMenuButton/index.js +33 -39
  46. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  47. package/dist/elements/Nav/SettingsMenuButton/index.scss +11 -0
  48. package/dist/elements/Nav/getNavPrefs.js +27 -22
  49. package/dist/elements/Nav/getNavPrefs.js.map +1 -1
  50. package/dist/elements/Nav/index.client.js +97 -118
  51. package/dist/elements/Nav/index.client.js.map +1 -1
  52. package/dist/elements/Nav/index.js +148 -127
  53. package/dist/elements/Nav/index.js.map +1 -1
  54. package/dist/elements/Nav/index.scss +173 -0
  55. package/dist/esbuildEntry.d.ts +5 -0
  56. package/dist/esbuildEntry.d.ts.map +1 -0
  57. package/dist/esbuildEntry.js +6 -0
  58. package/dist/esbuildEntry.js.map +1 -0
  59. package/dist/exports/auth.js +1 -0
  60. package/dist/exports/auth.js.map +1 -1
  61. package/dist/exports/client.js +1 -1
  62. package/dist/exports/client.js.map +1 -1
  63. package/dist/exports/layouts.js +1 -0
  64. package/dist/exports/layouts.js.map +1 -1
  65. package/dist/exports/routes.js +1 -0
  66. package/dist/exports/routes.js.map +1 -1
  67. package/dist/exports/rsc.js +1 -0
  68. package/dist/exports/rsc.js.map +1 -1
  69. package/dist/exports/templates.js +1 -0
  70. package/dist/exports/templates.js.map +1 -1
  71. package/dist/exports/utilities.js +7 -12
  72. package/dist/exports/utilities.js.map +1 -1
  73. package/dist/exports/views.js +1 -0
  74. package/dist/exports/views.js.map +1 -1
  75. package/dist/index.js +1 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/layouts/Root/NestProviders.js +21 -20
  78. package/dist/layouts/Root/NestProviders.js.map +1 -1
  79. package/dist/layouts/Root/checkDependencies.js +49 -41
  80. package/dist/layouts/Root/checkDependencies.js.map +1 -1
  81. package/dist/layouts/Root/index.js +128 -103
  82. package/dist/layouts/Root/index.js.map +1 -1
  83. package/dist/prod/styles.css +5 -1
  84. package/dist/routes/graphql/handler.js +114 -122
  85. package/dist/routes/graphql/handler.js.map +1 -1
  86. package/dist/routes/graphql/index.js +1 -0
  87. package/dist/routes/graphql/index.js.map +1 -1
  88. package/dist/routes/graphql/playground.js +28 -27
  89. package/dist/routes/graphql/playground.js.map +1 -1
  90. package/dist/routes/index.js +1 -0
  91. package/dist/routes/index.js.map +1 -1
  92. package/dist/routes/rest/index.js +23 -22
  93. package/dist/routes/rest/index.js.map +1 -1
  94. package/dist/routes/rest/og/image.js +103 -79
  95. package/dist/routes/rest/og/image.js.map +1 -1
  96. package/dist/routes/rest/og/index.js +59 -54
  97. package/dist/routes/rest/og/index.js.map +1 -1
  98. package/dist/templates/Default/NavHamburger/index.js +12 -20
  99. package/dist/templates/Default/NavHamburger/index.js.map +1 -1
  100. package/dist/templates/Default/Wrapper/index.js +20 -44
  101. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  102. package/dist/templates/Default/Wrapper/index.scss +58 -0
  103. package/dist/templates/Default/index.js +147 -116
  104. package/dist/templates/Default/index.js.map +1 -1
  105. package/dist/templates/Default/index.scss +79 -0
  106. package/dist/templates/Minimal/index.js +26 -17
  107. package/dist/templates/Minimal/index.js.map +1 -1
  108. package/dist/templates/Minimal/index.scss +30 -0
  109. package/dist/utilities/getExistingAuthToken.js +3 -2
  110. package/dist/utilities/getExistingAuthToken.js.map +1 -1
  111. package/dist/utilities/getNextRequestI18n.js +12 -13
  112. package/dist/utilities/getNextRequestI18n.js.map +1 -1
  113. package/dist/utilities/getPayloadHMR.js +5 -5
  114. package/dist/utilities/getPayloadHMR.js.map +1 -1
  115. package/dist/utilities/getPreferences.js +27 -22
  116. package/dist/utilities/getPreferences.js.map +1 -1
  117. package/dist/utilities/getRequestLocale.js +13 -14
  118. package/dist/utilities/getRequestLocale.js.map +1 -1
  119. package/dist/utilities/getRequestTheme.js +19 -19
  120. package/dist/utilities/getRequestTheme.js.map +1 -1
  121. package/dist/utilities/getRouteWithoutAdmin.js +3 -5
  122. package/dist/utilities/getRouteWithoutAdmin.js.map +1 -1
  123. package/dist/utilities/handleAuthRedirect.js +22 -36
  124. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  125. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  126. package/dist/utilities/handleServerFunctions.js +33 -41
  127. package/dist/utilities/handleServerFunctions.js.map +1 -1
  128. package/dist/utilities/initReq.d.ts +2 -13
  129. package/dist/utilities/initReq.d.ts.map +1 -1
  130. package/dist/utilities/initReq.js +78 -96
  131. package/dist/utilities/initReq.js.map +1 -1
  132. package/dist/utilities/isCustomAdminView.js +22 -26
  133. package/dist/utilities/isCustomAdminView.js.map +1 -1
  134. package/dist/utilities/isPublicAdminRoute.js +26 -20
  135. package/dist/utilities/isPublicAdminRoute.js.map +1 -1
  136. package/dist/utilities/meta.js +68 -63
  137. package/dist/utilities/meta.js.map +1 -1
  138. package/dist/utilities/selectiveCache.js +25 -26
  139. package/dist/utilities/selectiveCache.js.map +1 -1
  140. package/dist/utilities/setPayloadAuthCookie.js +19 -22
  141. package/dist/utilities/setPayloadAuthCookie.js.map +1 -1
  142. package/dist/utilities/slugify.js +24 -33
  143. package/dist/utilities/slugify.js.map +1 -1
  144. package/dist/utilities/timestamp.js +7 -6
  145. package/dist/utilities/timestamp.js.map +1 -1
  146. package/dist/views/API/LocaleSelector/index.js +17 -39
  147. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  148. package/dist/views/API/RenderJSON/index.js +171 -126
  149. package/dist/views/API/RenderJSON/index.js.map +1 -1
  150. package/dist/views/API/RenderJSON/index.scss +129 -0
  151. package/dist/views/API/index.client.js +291 -199
  152. package/dist/views/API/index.client.js.map +1 -1
  153. package/dist/views/API/index.js +7 -2
  154. package/dist/views/API/index.js.map +1 -1
  155. package/dist/views/API/index.scss +119 -0
  156. package/dist/views/API/metadata.js +18 -23
  157. package/dist/views/API/metadata.js.map +1 -1
  158. package/dist/views/Account/ResetPreferences/index.js +78 -102
  159. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  160. package/dist/views/Account/Settings/LanguageSelector.js +18 -47
  161. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
  162. package/dist/views/Account/Settings/index.js +60 -25
  163. package/dist/views/Account/Settings/index.js.map +1 -1
  164. package/dist/views/Account/Settings/index.scss +48 -0
  165. package/dist/views/Account/ToggleTheme/index.js +38 -55
  166. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  167. package/dist/views/Account/index.client.js +16 -32
  168. package/dist/views/Account/index.client.js.map +1 -1
  169. package/dist/views/Account/index.js +147 -158
  170. package/dist/views/Account/index.js.map +1 -1
  171. package/dist/views/Account/metadata.js +8 -12
  172. package/dist/views/Account/metadata.js.map +1 -1
  173. package/dist/views/BrowseByFolder/buildView.js +138 -157
  174. package/dist/views/BrowseByFolder/buildView.js.map +1 -1
  175. package/dist/views/BrowseByFolder/index.js +16 -16
  176. package/dist/views/BrowseByFolder/index.js.map +1 -1
  177. package/dist/views/BrowseByFolder/metadata.js +13 -15
  178. package/dist/views/BrowseByFolder/metadata.js.map +1 -1
  179. package/dist/views/CollectionFolders/buildView.js +122 -142
  180. package/dist/views/CollectionFolders/buildView.js.map +1 -1
  181. package/dist/views/CollectionFolders/index.js +16 -16
  182. package/dist/views/CollectionFolders/index.js.map +1 -1
  183. package/dist/views/CollectionFolders/metadata.js +18 -21
  184. package/dist/views/CollectionFolders/metadata.js.map +1 -1
  185. package/dist/views/CollectionFolders/renderFolderViewSlots.js +58 -61
  186. package/dist/views/CollectionFolders/renderFolderViewSlots.js.map +1 -1
  187. package/dist/views/CollectionTrash/index.js +17 -17
  188. package/dist/views/CollectionTrash/index.js.map +1 -1
  189. package/dist/views/CollectionTrash/metadata.js +18 -21
  190. package/dist/views/CollectionTrash/metadata.js.map +1 -1
  191. package/dist/views/CreateFirstUser/index.client.js +117 -103
  192. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  193. package/dist/views/CreateFirstUser/index.js +87 -81
  194. package/dist/views/CreateFirstUser/index.js.map +1 -1
  195. package/dist/views/CreateFirstUser/index.scss +21 -0
  196. package/dist/views/CreateFirstUser/metadata.js +8 -12
  197. package/dist/views/CreateFirstUser/metadata.js.map +1 -1
  198. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +147 -138
  199. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  200. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +423 -405
  201. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  202. package/dist/views/Dashboard/Default/ModularDashboard/index.d.ts.map +1 -1
  203. package/dist/views/Dashboard/Default/ModularDashboard/index.js +75 -75
  204. package/dist/views/Dashboard/Default/ModularDashboard/index.js.map +1 -1
  205. package/dist/views/Dashboard/Default/ModularDashboard/index.scss +316 -0
  206. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +62 -89
  207. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  208. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.d.ts.map +1 -1
  209. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js +43 -47
  210. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js.map +1 -1
  211. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.d.ts.map +1 -1
  212. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +67 -65
  213. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  214. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +164 -147
  215. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  216. package/dist/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.js +31 -30
  217. package/dist/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.js.map +1 -1
  218. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js +223 -229
  219. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js.map +1 -1
  220. package/dist/views/Dashboard/Default/index.js +59 -45
  221. package/dist/views/Dashboard/Default/index.js.map +1 -1
  222. package/dist/views/Dashboard/index.js +46 -42
  223. package/dist/views/Dashboard/index.js.map +1 -1
  224. package/dist/views/Dashboard/metadata.js +10 -14
  225. package/dist/views/Dashboard/metadata.js.map +1 -1
  226. package/dist/views/Document/getCustomDocumentViewByKey.js +3 -2
  227. package/dist/views/Document/getCustomDocumentViewByKey.js.map +1 -1
  228. package/dist/views/Document/getCustomViewByRoute.js +27 -30
  229. package/dist/views/Document/getCustomViewByRoute.js.map +1 -1
  230. package/dist/views/Document/getDocPreferences.js +40 -41
  231. package/dist/views/Document/getDocPreferences.js.map +1 -1
  232. package/dist/views/Document/getDocumentData.js +44 -55
  233. package/dist/views/Document/getDocumentData.js.map +1 -1
  234. package/dist/views/Document/getDocumentPermissions.js +77 -80
  235. package/dist/views/Document/getDocumentPermissions.js.map +1 -1
  236. package/dist/views/Document/getDocumentView.js +313 -283
  237. package/dist/views/Document/getDocumentView.js.map +1 -1
  238. package/dist/views/Document/getIsLocked.js +73 -73
  239. package/dist/views/Document/getIsLocked.js.map +1 -1
  240. package/dist/views/Document/getMetaBySegment.js +130 -136
  241. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  242. package/dist/views/Document/getVersions.js +220 -213
  243. package/dist/views/Document/getVersions.js.map +1 -1
  244. package/dist/views/Document/handleServerFunction.d.ts.map +1 -1
  245. package/dist/views/Document/handleServerFunction.js +101 -130
  246. package/dist/views/Document/handleServerFunction.js.map +1 -1
  247. package/dist/views/Document/index.js +317 -355
  248. package/dist/views/Document/index.js.map +1 -1
  249. package/dist/views/Document/metadata.js +2 -1
  250. package/dist/views/Document/metadata.js.map +1 -1
  251. package/dist/views/Document/renderDocumentSlots.d.ts +3 -2
  252. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  253. package/dist/views/Document/renderDocumentSlots.js +142 -141
  254. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  255. package/dist/views/Edit/index.js +10 -6
  256. package/dist/views/Edit/index.js.map +1 -1
  257. package/dist/views/Edit/metadata.js +36 -46
  258. package/dist/views/Edit/metadata.js.map +1 -1
  259. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +130 -164
  260. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  261. package/dist/views/ForgotPassword/index.js +79 -62
  262. package/dist/views/ForgotPassword/index.js.map +1 -1
  263. package/dist/views/ForgotPassword/metadata.js +8 -12
  264. package/dist/views/ForgotPassword/metadata.js.map +1 -1
  265. package/dist/views/List/createSerializableValue.js +12 -11
  266. package/dist/views/List/createSerializableValue.js.map +1 -1
  267. package/dist/views/List/enrichDocsWithVersionStatus.js +86 -86
  268. package/dist/views/List/enrichDocsWithVersionStatus.js.map +1 -1
  269. package/dist/views/List/extractRelationshipDisplayValue.js +15 -14
  270. package/dist/views/List/extractRelationshipDisplayValue.js.map +1 -1
  271. package/dist/views/List/extractValueOrRelationshipID.js +16 -15
  272. package/dist/views/List/extractValueOrRelationshipID.js.map +1 -1
  273. package/dist/views/List/handleGroupBy.js +133 -150
  274. package/dist/views/List/handleGroupBy.js.map +1 -1
  275. package/dist/views/List/handleServerFunction.d.ts.map +1 -1
  276. package/dist/views/List/handleServerFunction.js +97 -123
  277. package/dist/views/List/handleServerFunction.js.map +1 -1
  278. package/dist/views/List/index.d.ts +1 -0
  279. package/dist/views/List/index.d.ts.map +1 -1
  280. package/dist/views/List/index.js +303 -318
  281. package/dist/views/List/index.js.map +1 -1
  282. package/dist/views/List/metadata.js +17 -20
  283. package/dist/views/List/metadata.js.map +1 -1
  284. package/dist/views/List/renderListViewSlots.js +82 -75
  285. package/dist/views/List/renderListViewSlots.js.map +1 -1
  286. package/dist/views/List/resolveAllFilterOptions.js +43 -45
  287. package/dist/views/List/resolveAllFilterOptions.js.map +1 -1
  288. package/dist/views/List/transformColumnsToSelect.js +9 -8
  289. package/dist/views/List/transformColumnsToSelect.js.map +1 -1
  290. package/dist/views/Login/LoginField/index.js +57 -89
  291. package/dist/views/Login/LoginField/index.js.map +1 -1
  292. package/dist/views/Login/LoginForm/index.js +107 -160
  293. package/dist/views/Login/LoginForm/index.js.map +1 -1
  294. package/dist/views/Login/LoginForm/index.scss +10 -0
  295. package/dist/views/Login/index.js +82 -85
  296. package/dist/views/Login/index.js.map +1 -1
  297. package/dist/views/Login/index.scss +10 -0
  298. package/dist/views/Login/metadata.js +8 -12
  299. package/dist/views/Login/metadata.js.map +1 -1
  300. package/dist/views/Logout/LogoutClient.js +84 -120
  301. package/dist/views/Logout/LogoutClient.js.map +1 -1
  302. package/dist/views/Logout/index.js +29 -29
  303. package/dist/views/Logout/index.js.map +1 -1
  304. package/dist/views/Logout/index.scss +25 -0
  305. package/dist/views/Logout/metadata.js +7 -11
  306. package/dist/views/Logout/metadata.js.map +1 -1
  307. package/dist/views/NotFound/index.client.js +71 -82
  308. package/dist/views/NotFound/index.client.js.map +1 -1
  309. package/dist/views/NotFound/index.js +72 -73
  310. package/dist/views/NotFound/index.js.map +1 -1
  311. package/dist/views/NotFound/index.scss +57 -0
  312. package/dist/views/NotFound/metadata.js +7 -9
  313. package/dist/views/NotFound/metadata.js.map +1 -1
  314. package/dist/views/ResetPassword/ResetPasswordForm/index.js +97 -108
  315. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  316. package/dist/views/ResetPassword/index.js +93 -73
  317. package/dist/views/ResetPassword/index.js.map +1 -1
  318. package/dist/views/ResetPassword/index.scss +11 -0
  319. package/dist/views/ResetPassword/metadata.js +8 -12
  320. package/dist/views/ResetPassword/metadata.js.map +1 -1
  321. package/dist/views/Root/attachViewActions.js +18 -23
  322. package/dist/views/Root/attachViewActions.js.map +1 -1
  323. package/dist/views/Root/generateCustomViewMetadata.js +19 -21
  324. package/dist/views/Root/generateCustomViewMetadata.js.map +1 -1
  325. package/dist/views/Root/getCustomViewByKey.js +12 -14
  326. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  327. package/dist/views/Root/getCustomViewByRoute.js +31 -42
  328. package/dist/views/Root/getCustomViewByRoute.js.map +1 -1
  329. package/dist/views/Root/getDocumentViewInfo.js +24 -23
  330. package/dist/views/Root/getDocumentViewInfo.js.map +1 -1
  331. package/dist/views/Root/getRouteData.js +333 -325
  332. package/dist/views/Root/getRouteData.js.map +1 -1
  333. package/dist/views/Root/index.js +248 -270
  334. package/dist/views/Root/index.js.map +1 -1
  335. package/dist/views/Root/isPathMatchingRoute.js +21 -26
  336. package/dist/views/Root/isPathMatchingRoute.js.map +1 -1
  337. package/dist/views/Root/metadata.js +176 -181
  338. package/dist/views/Root/metadata.js.map +1 -1
  339. package/dist/views/Unauthorized/index.js +54 -46
  340. package/dist/views/Unauthorized/index.js.map +1 -1
  341. package/dist/views/Unauthorized/index.scss +14 -0
  342. package/dist/views/Unauthorized/metadata.js +8 -12
  343. package/dist/views/Unauthorized/metadata.js.map +1 -1
  344. package/dist/views/Verify/index.client.js +25 -43
  345. package/dist/views/Verify/index.client.js.map +1 -1
  346. package/dist/views/Verify/index.js +69 -64
  347. package/dist/views/Verify/index.js.map +1 -1
  348. package/dist/views/Verify/index.scss +16 -0
  349. package/dist/views/Verify/metadata.js +8 -12
  350. package/dist/views/Verify/metadata.js.map +1 -1
  351. package/dist/views/Version/Default/SelectedLocalesContext.js +4 -4
  352. package/dist/views/Version/Default/SelectedLocalesContext.js.map +1 -1
  353. package/dist/views/Version/Default/SetStepNav.js +86 -127
  354. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  355. package/dist/views/Version/Default/index.js +380 -236
  356. package/dist/views/Version/Default/index.js.map +1 -1
  357. package/dist/views/Version/Default/index.scss +170 -0
  358. package/dist/views/Version/Default/types.js +2 -1
  359. package/dist/views/Version/Default/types.js.map +1 -1
  360. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +102 -119
  361. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  362. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.scss +81 -0
  363. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js +78 -73
  364. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -1
  365. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +363 -408
  366. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  367. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +40 -51
  368. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  369. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +35 -67
  370. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  371. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.scss +12 -0
  372. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +59 -56
  373. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  374. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.scss +9 -0
  375. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +139 -117
  376. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  377. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +59 -0
  378. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js +56 -61
  379. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js.map +1 -1
  380. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +223 -204
  381. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  382. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.scss +91 -0
  383. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js +17 -11
  384. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js.map +1 -1
  385. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +48 -73
  386. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  387. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.scss +4 -0
  388. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +132 -143
  389. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  390. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.scss +9 -0
  391. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +56 -81
  392. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  393. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.scss +4 -0
  394. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +252 -211
  395. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
  396. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.scss +121 -0
  397. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +23 -22
  398. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  399. package/dist/views/Version/RenderFieldsToDiff/index.js +12 -9
  400. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  401. package/dist/views/Version/RenderFieldsToDiff/index.scss +24 -0
  402. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +213 -228
  403. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  404. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js +1005 -826
  405. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js.map +1 -1
  406. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js +2 -1
  407. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js.map +1 -1
  408. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js +44 -43
  409. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js.map +1 -1
  410. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +32 -36
  411. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
  412. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +145 -129
  413. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +1 -1
  414. package/dist/views/Version/Restore/index.js +117 -93
  415. package/dist/views/Version/Restore/index.js.map +1 -1
  416. package/dist/views/Version/Restore/index.scss +84 -0
  417. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js +33 -50
  418. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
  419. package/dist/views/Version/SelectComparison/VersionDrawer/index.js +170 -226
  420. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  421. package/dist/views/Version/SelectComparison/VersionDrawer/index.scss +18 -0
  422. package/dist/views/Version/SelectComparison/index.js +73 -50
  423. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  424. package/dist/views/Version/SelectComparison/index.scss +9 -0
  425. package/dist/views/Version/SelectComparison/types.js +2 -1
  426. package/dist/views/Version/SelectComparison/types.js.map +1 -1
  427. package/dist/views/Version/SelectLocales/index.js +34 -32
  428. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  429. package/dist/views/Version/VersionPillLabel/VersionPillLabel.d.ts.map +1 -1
  430. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js +107 -96
  431. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js.map +1 -1
  432. package/dist/views/Version/VersionPillLabel/getVersionLabel.d.ts +3 -2
  433. package/dist/views/Version/VersionPillLabel/getVersionLabel.d.ts.map +1 -1
  434. package/dist/views/Version/VersionPillLabel/getVersionLabel.js +30 -39
  435. package/dist/views/Version/VersionPillLabel/getVersionLabel.js.map +1 -1
  436. package/dist/views/Version/VersionPillLabel/index.scss +26 -0
  437. package/dist/views/Version/fetchVersions.js +113 -138
  438. package/dist/views/Version/fetchVersions.js.map +1 -1
  439. package/dist/views/Version/index.d.ts.map +1 -1
  440. package/dist/views/Version/index.js +328 -323
  441. package/dist/views/Version/index.js.map +1 -1
  442. package/dist/views/Version/metadata.js +43 -50
  443. package/dist/views/Version/metadata.js.map +1 -1
  444. package/dist/views/Versions/buildColumns.js +95 -79
  445. package/dist/views/Versions/buildColumns.js.map +1 -1
  446. package/dist/views/Versions/cells/AutosaveCell/index.js +34 -38
  447. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  448. package/dist/views/Versions/cells/AutosaveCell/index.scss +9 -0
  449. package/dist/views/Versions/cells/CreatedAt/index.js +32 -53
  450. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  451. package/dist/views/Versions/cells/ID/index.js +10 -8
  452. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  453. package/dist/views/Versions/index.client.js +106 -83
  454. package/dist/views/Versions/index.client.js.map +1 -1
  455. package/dist/views/Versions/index.js +164 -164
  456. package/dist/views/Versions/index.js.map +1 -1
  457. package/dist/views/Versions/index.scss +110 -0
  458. package/dist/views/Versions/metadata.js +37 -44
  459. package/dist/views/Versions/metadata.js.map +1 -1
  460. package/dist/views/Versions/types.js +2 -1
  461. package/dist/views/Versions/types.js.map +1 -1
  462. package/dist/withPayload/withPayload.js +232 -174
  463. package/dist/withPayload/withPayload.js.map +1 -1
  464. package/dist/withPayload/withPayload.spec.js +36 -35
  465. package/dist/withPayload/withPayload.spec.js.map +1 -1
  466. package/dist/withPayload/withPayload.utils.js +65 -73
  467. package/dist/withPayload/withPayload.utils.js.map +1 -1
  468. package/dist/withPayload/withPayloadLegacy.js +41 -40
  469. package/dist/withPayload/withPayloadLegacy.js.map +1 -1
  470. package/package.json +6 -6
@@ -3,156 +3,173 @@ import { ConfirmationModal, toast, useConfig, useModal, usePreferences, useServe
3
3
  import React, { useCallback, useState } from 'react';
4
4
  import { RenderWidget } from './renderWidget/RenderWidget.js';
5
5
  export function useDashboardLayout(initialLayout) {
6
- const setLayoutPreference = useSetLayoutPreference();
7
- const [isEditing, setIsEditing] = useState(false);
8
- const {
9
- widgets = []
10
- } = useConfig().config.admin.dashboard ?? {};
11
- const [currentLayout, setCurrentLayout] = useState(initialLayout);
12
- const {
13
- openModal
14
- } = useModal();
15
- const cancelModalSlug = 'cancel-dashboard-changes';
16
- const {
17
- serverFunction
18
- } = useServerFunctions();
19
- const saveLayout = useCallback(async () => {
20
- try {
21
- const layoutData = currentLayout.map(item => item.item);
22
- setIsEditing(false);
23
- await setLayoutPreference(layoutData);
24
- } catch {
25
- setIsEditing(true);
26
- toast.error('Failed to save layout');
27
- }
28
- }, [setLayoutPreference, currentLayout]);
29
- const resetLayout = useCallback(async () => {
30
- try {
31
- await setLayoutPreference(null);
32
- const result = await serverFunction({
33
- name: 'get-default-layout',
34
- args: {}
35
- });
36
- setCurrentLayout(result.layout);
37
- setIsEditing(false);
38
- } catch {
39
- toast.error('Failed to reset layout');
40
- }
41
- }, [setLayoutPreference, serverFunction]);
42
- const performCancel = useCallback(() => {
43
- setCurrentLayout(initialLayout);
44
- setIsEditing(false);
45
- }, [initialLayout]);
46
- const cancel = useCallback(() => {
47
- // Check if layout has changed
48
- const hasChanges = currentLayout.length !== initialLayout.length || currentLayout.some((widget, index) => {
49
- const initialWidget = initialLayout[index];
50
- return !initialWidget || widget.item.id !== initialWidget.item.id || widget.item.width !== initialWidget.item.width;
51
- });
52
- // If there are changes, show confirmation modal
53
- if (hasChanges) {
54
- openModal(cancelModalSlug);
55
- } else {
56
- performCancel();
57
- }
58
- }, [currentLayout, initialLayout, openModal, cancelModalSlug, performCancel]);
59
- const moveWidget = useCallback(({
60
- moveFromIndex,
61
- moveToIndex
62
- }) => {
63
- if (moveFromIndex === moveToIndex || moveFromIndex < 0 || moveToIndex < 0) {
64
- return;
65
- }
66
- setCurrentLayout(prev => {
67
- return arrayMove(prev, moveFromIndex, moveToIndex);
68
- });
69
- }, []);
70
- const addWidget = useCallback(widgetSlug => {
71
- if (!isEditing) {
72
- return;
73
- }
74
- const widgetId = `${widgetSlug}-${Date.now()}`;
75
- const widget = widgets.find(widget => widget.slug === widgetSlug);
76
- // Create a new widget instance using RenderWidget
77
- const newWidgetInstance = {
78
- component: React.createElement(RenderWidget, {
79
- widgetId
80
- }),
81
- item: {
82
- id: widgetId,
83
- maxWidth: widget?.maxWidth ?? 'full',
84
- minWidth: widget?.minWidth ?? 'x-small',
85
- width: widget?.minWidth ?? 'x-small'
86
- }
87
- };
88
- setCurrentLayout(prev => [...prev, newWidgetInstance]);
89
- // Scroll to the newly added widget after it's rendered and highlight it
90
- setTimeout(() => {
91
- const element = document.getElementById(widgetId);
92
- if (element) {
93
- element.scrollIntoView({
94
- behavior: 'smooth',
95
- block: 'center'
6
+ const setLayoutPreference = useSetLayoutPreference();
7
+ const [isEditing, setIsEditing] = useState(false);
8
+ const { widgets = [] } = useConfig().config.admin.dashboard ?? {};
9
+ const [currentLayout, setCurrentLayout] = useState(initialLayout);
10
+ const { openModal } = useModal();
11
+ const cancelModalSlug = 'cancel-dashboard-changes';
12
+ const { serverFunction } = useServerFunctions();
13
+ const saveLayout = useCallback(async ()=>{
14
+ try {
15
+ const layoutData = currentLayout.map((item)=>item.item);
16
+ setIsEditing(false);
17
+ await setLayoutPreference(layoutData);
18
+ } catch {
19
+ setIsEditing(true);
20
+ toast.error('Failed to save layout');
21
+ }
22
+ }, [
23
+ setLayoutPreference,
24
+ currentLayout
25
+ ]);
26
+ const resetLayout = useCallback(async ()=>{
27
+ try {
28
+ await setLayoutPreference(null);
29
+ const result = await serverFunction({
30
+ name: 'get-default-layout',
31
+ args: {}
32
+ });
33
+ setCurrentLayout(result.layout);
34
+ setIsEditing(false);
35
+ } catch {
36
+ toast.error('Failed to reset layout');
37
+ }
38
+ }, [
39
+ setLayoutPreference,
40
+ serverFunction
41
+ ]);
42
+ const performCancel = useCallback(()=>{
43
+ setCurrentLayout(initialLayout);
44
+ setIsEditing(false);
45
+ }, [
46
+ initialLayout
47
+ ]);
48
+ const cancel = useCallback(()=>{
49
+ // Check if layout has changed
50
+ const hasChanges = currentLayout.length !== initialLayout.length || currentLayout.some((widget, index)=>{
51
+ const initialWidget = initialLayout[index];
52
+ return !initialWidget || widget.item.id !== initialWidget.item.id || widget.item.width !== initialWidget.item.width;
53
+ });
54
+ // If there are changes, show confirmation modal
55
+ if (hasChanges) {
56
+ openModal(cancelModalSlug);
57
+ } else {
58
+ performCancel();
59
+ }
60
+ }, [
61
+ currentLayout,
62
+ initialLayout,
63
+ openModal,
64
+ cancelModalSlug,
65
+ performCancel
66
+ ]);
67
+ const moveWidget = useCallback(({ moveFromIndex, moveToIndex })=>{
68
+ if (moveFromIndex === moveToIndex || moveFromIndex < 0 || moveToIndex < 0) {
69
+ return;
70
+ }
71
+ setCurrentLayout((prev)=>{
72
+ return arrayMove(prev, moveFromIndex, moveToIndex);
96
73
  });
97
- // Add highlight animation to the widget element
98
- const widget = element.closest('.widget');
99
- if (widget) {
100
- widget.classList.add('widget--highlight');
101
- // Remove the class after animation completes (1.5s fade out)
102
- setTimeout(() => {
103
- widget.classList.remove('widget--highlight');
104
- }, 1500);
74
+ }, []);
75
+ const addWidget = useCallback((widgetSlug)=>{
76
+ if (!isEditing) {
77
+ return;
78
+ }
79
+ const widgetId = `${widgetSlug}-${Date.now()}`;
80
+ const widget = widgets.find((widget)=>widget.slug === widgetSlug);
81
+ // Create a new widget instance using RenderWidget
82
+ const newWidgetInstance = {
83
+ component: React.createElement(RenderWidget, {
84
+ widgetId
85
+ }),
86
+ // TODO: widgetData can be added here for custom props
87
+ item: {
88
+ id: widgetId,
89
+ maxWidth: widget?.maxWidth ?? 'full',
90
+ minWidth: widget?.minWidth ?? 'x-small',
91
+ width: widget?.minWidth ?? 'x-small'
92
+ }
93
+ };
94
+ setCurrentLayout((prev)=>[
95
+ ...prev,
96
+ newWidgetInstance
97
+ ]);
98
+ // Scroll to the newly added widget after it's rendered and highlight it
99
+ setTimeout(()=>{
100
+ const element = document.getElementById(widgetId);
101
+ if (element) {
102
+ element.scrollIntoView({
103
+ behavior: 'smooth',
104
+ block: 'center'
105
+ });
106
+ // Add highlight animation to the widget element
107
+ const widget = element.closest('.widget');
108
+ if (widget) {
109
+ widget.classList.add('widget--highlight');
110
+ // Remove the class after animation completes (1.5s fade out)
111
+ setTimeout(()=>{
112
+ widget.classList.remove('widget--highlight');
113
+ }, 1500);
114
+ }
115
+ }
116
+ }, 100);
117
+ }, [
118
+ isEditing,
119
+ widgets
120
+ ]);
121
+ const deleteWidget = useCallback((widgetId)=>{
122
+ if (!isEditing) {
123
+ return;
105
124
  }
106
- }
107
- }, 100);
108
- }, [isEditing, widgets]);
109
- const deleteWidget = useCallback(widgetId => {
110
- if (!isEditing) {
111
- return;
112
- }
113
- setCurrentLayout(prev => prev.filter(item => item.item.id !== widgetId));
114
- }, [isEditing]);
115
- const resizeWidget = useCallback((widgetId, newWidth) => {
116
- if (!isEditing) {
117
- return;
118
- }
119
- setCurrentLayout(prev => prev.map(item => item.item.id === widgetId ? {
120
- ...item,
121
- item: {
122
- ...item.item,
123
- width: newWidth
124
- }
125
- } : item));
126
- }, [isEditing]);
127
- const cancelModal = React.createElement(ConfirmationModal, {
128
- body: 'You have unsaved changes to your dashboard layout. Are you sure you want to discard them?',
129
- confirmLabel: 'Discard',
130
- heading: 'Discard changes?',
131
- modalSlug: cancelModalSlug,
132
- onConfirm: performCancel
133
- });
134
- return {
135
- addWidget,
136
- cancel,
137
- cancelModal,
138
- currentLayout,
139
- deleteWidget,
140
- isEditing,
141
- moveWidget,
142
- resetLayout,
143
- resizeWidget,
144
- saveLayout,
145
- setIsEditing
146
- };
125
+ setCurrentLayout((prev)=>prev.filter((item)=>item.item.id !== widgetId));
126
+ }, [
127
+ isEditing
128
+ ]);
129
+ const resizeWidget = useCallback((widgetId, newWidth)=>{
130
+ if (!isEditing) {
131
+ return;
132
+ }
133
+ setCurrentLayout((prev)=>prev.map((item)=>item.item.id === widgetId ? {
134
+ ...item,
135
+ item: {
136
+ ...item.item,
137
+ width: newWidth
138
+ }
139
+ } : item));
140
+ }, [
141
+ isEditing
142
+ ]);
143
+ const cancelModal = React.createElement(ConfirmationModal, {
144
+ body: 'You have unsaved changes to your dashboard layout. Are you sure you want to discard them?',
145
+ confirmLabel: 'Discard',
146
+ heading: 'Discard changes?',
147
+ modalSlug: cancelModalSlug,
148
+ onConfirm: performCancel
149
+ });
150
+ return {
151
+ addWidget,
152
+ cancel,
153
+ cancelModal,
154
+ currentLayout,
155
+ deleteWidget,
156
+ isEditing,
157
+ moveWidget,
158
+ resetLayout,
159
+ resizeWidget,
160
+ saveLayout,
161
+ setIsEditing
162
+ };
147
163
  }
148
164
  function useSetLayoutPreference() {
149
- const {
150
- setPreference
151
- } = usePreferences();
152
- return useCallback(async layout => {
153
- await setPreference('dashboard-layout', {
154
- layouts: layout
155
- }, false);
156
- }, [setPreference]);
165
+ const { setPreference } = usePreferences();
166
+ return useCallback(async (layout)=>{
167
+ await setPreference('dashboard-layout', {
168
+ layouts: layout
169
+ }, false);
170
+ }, [
171
+ setPreference
172
+ ]);
157
173
  }
174
+
158
175
  //# sourceMappingURL=useDashboardLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDashboardLayout.js","names":["arrayMove","ConfirmationModal","toast","useConfig","useModal","usePreferences","useServerFunctions","React","useCallback","useState","RenderWidget","useDashboardLayout","initialLayout","setLayoutPreference","useSetLayoutPreference","isEditing","setIsEditing","widgets","config","admin","dashboard","currentLayout","setCurrentLayout","openModal","cancelModalSlug","serverFunction","saveLayout","layoutData","map","item","error","resetLayout","result","name","args","layout","performCancel","cancel","hasChanges","length","some","widget","index","initialWidget","id","width","moveWidget","moveFromIndex","moveToIndex","prev","addWidget","widgetSlug","widgetId","Date","now","find","slug","newWidgetInstance","component","createElement","maxWidth","minWidth","setTimeout","element","document","getElementById","scrollIntoView","behavior","block","closest","classList","add","remove","deleteWidget","filter","resizeWidget","newWidth","cancelModal","body","confirmLabel","heading","modalSlug","onConfirm","setPreference","layouts"],"sources":["../../../../../src/views/Dashboard/Default/ModularDashboard/useDashboardLayout.ts"],"sourcesContent":["import type { WidgetWidth } from 'payload'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport {\n ConfirmationModal,\n toast,\n useConfig,\n useModal,\n usePreferences,\n useServerFunctions,\n} from '@payloadcms/ui'\nimport React, { useCallback, useState } from 'react'\n\nimport type { WidgetInstanceClient, WidgetItem } from './index.client.js'\nimport type { GetDefaultLayoutServerFnReturnType } from './renderWidget/getDefaultLayoutServerFn.js'\n\nimport { RenderWidget } from './renderWidget/RenderWidget.js'\n\nexport function useDashboardLayout(initialLayout: WidgetInstanceClient[]) {\n const setLayoutPreference = useSetLayoutPreference()\n const [isEditing, setIsEditing] = useState(false)\n const { widgets = [] } = useConfig().config.admin.dashboard ?? {}\n const [currentLayout, setCurrentLayout] = useState<WidgetInstanceClient[]>(initialLayout)\n const { openModal } = useModal()\n const cancelModalSlug = 'cancel-dashboard-changes'\n const { serverFunction } = useServerFunctions()\n\n const saveLayout = useCallback(async () => {\n try {\n const layoutData: WidgetItem[] = currentLayout.map((item) => item.item)\n setIsEditing(false)\n await setLayoutPreference(layoutData)\n } catch {\n setIsEditing(true)\n toast.error('Failed to save layout')\n }\n }, [setLayoutPreference, currentLayout])\n\n const resetLayout = useCallback(async () => {\n try {\n await setLayoutPreference(null)\n\n const result = (await serverFunction({\n name: 'get-default-layout',\n args: {},\n })) as GetDefaultLayoutServerFnReturnType\n\n setCurrentLayout(result.layout)\n setIsEditing(false)\n } catch {\n toast.error('Failed to reset layout')\n }\n }, [setLayoutPreference, serverFunction])\n\n const performCancel = useCallback(() => {\n setCurrentLayout(initialLayout)\n setIsEditing(false)\n }, [initialLayout])\n\n const cancel = useCallback(() => {\n // Check if layout has changed\n const hasChanges =\n currentLayout.length !== initialLayout.length ||\n currentLayout.some((widget, index) => {\n const initialWidget = initialLayout[index]\n return (\n !initialWidget ||\n widget.item.id !== initialWidget.item.id ||\n widget.item.width !== initialWidget.item.width\n )\n })\n\n // If there are changes, show confirmation modal\n if (hasChanges) {\n openModal(cancelModalSlug)\n } else {\n performCancel()\n }\n }, [currentLayout, initialLayout, openModal, cancelModalSlug, performCancel])\n\n const moveWidget = useCallback(\n ({ moveFromIndex, moveToIndex }: { moveFromIndex: number; moveToIndex: number }) => {\n if (moveFromIndex === moveToIndex || moveFromIndex < 0 || moveToIndex < 0) {\n return\n }\n\n setCurrentLayout((prev) => {\n return arrayMove(prev, moveFromIndex, moveToIndex)\n })\n },\n [],\n )\n\n const addWidget = useCallback(\n (widgetSlug: string) => {\n if (!isEditing) {\n return\n }\n\n const widgetId = `${widgetSlug}-${Date.now()}`\n const widget = widgets.find((widget) => widget.slug === widgetSlug)\n\n // Create a new widget instance using RenderWidget\n const newWidgetInstance: WidgetInstanceClient = {\n component: React.createElement(RenderWidget, {\n widgetId,\n // TODO: widgetData can be added here for custom props\n }),\n item: {\n id: widgetId,\n maxWidth: widget?.maxWidth ?? 'full',\n minWidth: widget?.minWidth ?? 'x-small',\n width: widget?.minWidth ?? 'x-small',\n },\n }\n\n setCurrentLayout((prev) => [...prev, newWidgetInstance])\n\n // Scroll to the newly added widget after it's rendered and highlight it\n setTimeout(() => {\n const element = document.getElementById(widgetId)\n if (element) {\n element.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n\n // Add highlight animation to the widget element\n const widget = element.closest('.widget')\n if (widget) {\n widget.classList.add('widget--highlight')\n // Remove the class after animation completes (1.5s fade out)\n setTimeout(() => {\n widget.classList.remove('widget--highlight')\n }, 1500)\n }\n }\n }, 100)\n },\n [isEditing, widgets],\n )\n\n const deleteWidget = useCallback(\n (widgetId: string) => {\n if (!isEditing) {\n return\n }\n setCurrentLayout((prev) => prev.filter((item) => item.item.id !== widgetId))\n },\n [isEditing],\n )\n\n const resizeWidget = useCallback(\n (widgetId: string, newWidth: WidgetWidth) => {\n if (!isEditing) {\n return\n }\n setCurrentLayout((prev) =>\n prev.map((item) =>\n item.item.id === widgetId\n ? {\n ...item,\n item: {\n ...item.item,\n width: newWidth,\n } satisfies WidgetItem,\n }\n : item,\n ),\n )\n },\n [isEditing],\n )\n\n const cancelModal = React.createElement(ConfirmationModal, {\n body: 'You have unsaved changes to your dashboard layout. Are you sure you want to discard them?',\n confirmLabel: 'Discard',\n heading: 'Discard changes?',\n modalSlug: cancelModalSlug,\n onConfirm: performCancel,\n })\n\n return {\n addWidget,\n cancel,\n cancelModal,\n currentLayout,\n deleteWidget,\n isEditing,\n moveWidget,\n resetLayout,\n resizeWidget,\n saveLayout,\n setIsEditing,\n }\n}\n\nfunction useSetLayoutPreference() {\n const { setPreference } = usePreferences()\n return useCallback(\n async (layout: null | WidgetItem[]) => {\n await setPreference('dashboard-layout', { layouts: layout }, false)\n },\n [setPreference],\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"sources":["../../../../../src/views/Dashboard/Default/ModularDashboard/useDashboardLayout.ts"],"sourcesContent":["import type { WidgetWidth } from 'payload'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport {\n ConfirmationModal,\n toast,\n useConfig,\n useModal,\n usePreferences,\n useServerFunctions,\n} from '@payloadcms/ui'\nimport React, { useCallback, useState } from 'react'\n\nimport type { WidgetInstanceClient, WidgetItem } from './index.client.js'\nimport type { GetDefaultLayoutServerFnReturnType } from './renderWidget/getDefaultLayoutServerFn.js'\n\nimport { RenderWidget } from './renderWidget/RenderWidget.js'\n\nexport function useDashboardLayout(initialLayout: WidgetInstanceClient[]) {\n const setLayoutPreference = useSetLayoutPreference()\n const [isEditing, setIsEditing] = useState(false)\n const { widgets = [] } = useConfig().config.admin.dashboard ?? {}\n const [currentLayout, setCurrentLayout] = useState<WidgetInstanceClient[]>(initialLayout)\n const { openModal } = useModal()\n const cancelModalSlug = 'cancel-dashboard-changes'\n const { serverFunction } = useServerFunctions()\n\n const saveLayout = useCallback(async () => {\n try {\n const layoutData: WidgetItem[] = currentLayout.map((item) => item.item)\n setIsEditing(false)\n await setLayoutPreference(layoutData)\n } catch {\n setIsEditing(true)\n toast.error('Failed to save layout')\n }\n }, [setLayoutPreference, currentLayout])\n\n const resetLayout = useCallback(async () => {\n try {\n await setLayoutPreference(null)\n\n const result = (await serverFunction({\n name: 'get-default-layout',\n args: {},\n })) as GetDefaultLayoutServerFnReturnType\n\n setCurrentLayout(result.layout)\n setIsEditing(false)\n } catch {\n toast.error('Failed to reset layout')\n }\n }, [setLayoutPreference, serverFunction])\n\n const performCancel = useCallback(() => {\n setCurrentLayout(initialLayout)\n setIsEditing(false)\n }, [initialLayout])\n\n const cancel = useCallback(() => {\n // Check if layout has changed\n const hasChanges =\n currentLayout.length !== initialLayout.length ||\n currentLayout.some((widget, index) => {\n const initialWidget = initialLayout[index]\n return (\n !initialWidget ||\n widget.item.id !== initialWidget.item.id ||\n widget.item.width !== initialWidget.item.width\n )\n })\n\n // If there are changes, show confirmation modal\n if (hasChanges) {\n openModal(cancelModalSlug)\n } else {\n performCancel()\n }\n }, [currentLayout, initialLayout, openModal, cancelModalSlug, performCancel])\n\n const moveWidget = useCallback(\n ({ moveFromIndex, moveToIndex }: { moveFromIndex: number; moveToIndex: number }) => {\n if (moveFromIndex === moveToIndex || moveFromIndex < 0 || moveToIndex < 0) {\n return\n }\n\n setCurrentLayout((prev) => {\n return arrayMove(prev, moveFromIndex, moveToIndex)\n })\n },\n [],\n )\n\n const addWidget = useCallback(\n (widgetSlug: string) => {\n if (!isEditing) {\n return\n }\n\n const widgetId = `${widgetSlug}-${Date.now()}`\n const widget = widgets.find((widget) => widget.slug === widgetSlug)\n\n // Create a new widget instance using RenderWidget\n const newWidgetInstance: WidgetInstanceClient = {\n component: React.createElement(RenderWidget, {\n widgetId,\n // TODO: widgetData can be added here for custom props\n }),\n item: {\n id: widgetId,\n maxWidth: widget?.maxWidth ?? 'full',\n minWidth: widget?.minWidth ?? 'x-small',\n width: widget?.minWidth ?? 'x-small',\n },\n }\n\n setCurrentLayout((prev) => [...prev, newWidgetInstance])\n\n // Scroll to the newly added widget after it's rendered and highlight it\n setTimeout(() => {\n const element = document.getElementById(widgetId)\n if (element) {\n element.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n\n // Add highlight animation to the widget element\n const widget = element.closest('.widget')\n if (widget) {\n widget.classList.add('widget--highlight')\n // Remove the class after animation completes (1.5s fade out)\n setTimeout(() => {\n widget.classList.remove('widget--highlight')\n }, 1500)\n }\n }\n }, 100)\n },\n [isEditing, widgets],\n )\n\n const deleteWidget = useCallback(\n (widgetId: string) => {\n if (!isEditing) {\n return\n }\n setCurrentLayout((prev) => prev.filter((item) => item.item.id !== widgetId))\n },\n [isEditing],\n )\n\n const resizeWidget = useCallback(\n (widgetId: string, newWidth: WidgetWidth) => {\n if (!isEditing) {\n return\n }\n setCurrentLayout((prev) =>\n prev.map((item) =>\n item.item.id === widgetId\n ? {\n ...item,\n item: {\n ...item.item,\n width: newWidth,\n } satisfies WidgetItem,\n }\n : item,\n ),\n )\n },\n [isEditing],\n )\n\n const cancelModal = React.createElement(ConfirmationModal, {\n body: 'You have unsaved changes to your dashboard layout. Are you sure you want to discard them?',\n confirmLabel: 'Discard',\n heading: 'Discard changes?',\n modalSlug: cancelModalSlug,\n onConfirm: performCancel,\n })\n\n return {\n addWidget,\n cancel,\n cancelModal,\n currentLayout,\n deleteWidget,\n isEditing,\n moveWidget,\n resetLayout,\n resizeWidget,\n saveLayout,\n setIsEditing,\n }\n}\n\nfunction useSetLayoutPreference() {\n const { setPreference } = usePreferences()\n return useCallback(\n async (layout: null | WidgetItem[]) => {\n await setPreference('dashboard-layout', { layouts: layout }, false)\n },\n [setPreference],\n )\n}\n"],"names":["arrayMove","ConfirmationModal","toast","useConfig","useModal","usePreferences","useServerFunctions","React","useCallback","useState","RenderWidget","useDashboardLayout","initialLayout","setLayoutPreference","useSetLayoutPreference","isEditing","setIsEditing","widgets","config","admin","dashboard","currentLayout","setCurrentLayout","openModal","cancelModalSlug","serverFunction","saveLayout","layoutData","map","item","error","resetLayout","result","name","args","layout","performCancel","cancel","hasChanges","length","some","widget","index","initialWidget","id","width","moveWidget","moveFromIndex","moveToIndex","prev","addWidget","widgetSlug","widgetId","Date","now","find","slug","newWidgetInstance","component","createElement","maxWidth","minWidth","setTimeout","element","document","getElementById","scrollIntoView","behavior","block","closest","classList","add","remove","deleteWidget","filter","resizeWidget","newWidth","cancelModal","body","confirmLabel","heading","modalSlug","onConfirm","setPreference","layouts"],"mappings":"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"}
@@ -1,38 +1,39 @@
1
1
  /**
2
2
  * Collision detection that considers the X
3
3
  * axis only with respect to the position of the pointer (or collisionRect for keyboard)
4
- */export const closestInXAxis = args => {
5
- const collisions = [];
6
- // Use pointer coordinates if available (mouse/touch), otherwise use collisionRect center (keyboard)
7
- let x;
8
- let y;
9
- if (args.pointerCoordinates) {
10
- x = args.pointerCoordinates.x;
11
- y = args.pointerCoordinates.y;
12
- } else if (args.collisionRect) {
13
- // For keyboard navigation, use the center of the collisionRect
14
- x = args.collisionRect.left + args.collisionRect.width / 2;
15
- y = args.collisionRect.top + args.collisionRect.height / 2;
16
- } else {
17
- return [];
18
- }
19
- for (const container of args.droppableContainers) {
20
- const rect = args.droppableRects.get(container.id);
21
- if (!rect) {
22
- continue;
4
+ */ export const closestInXAxis = (args)=>{
5
+ const collisions = [];
6
+ // Use pointer coordinates if available (mouse/touch), otherwise use collisionRect center (keyboard)
7
+ let x;
8
+ let y;
9
+ if (args.pointerCoordinates) {
10
+ x = args.pointerCoordinates.x;
11
+ y = args.pointerCoordinates.y;
12
+ } else if (args.collisionRect) {
13
+ // For keyboard navigation, use the center of the collisionRect
14
+ x = args.collisionRect.left + args.collisionRect.width / 2;
15
+ y = args.collisionRect.top + args.collisionRect.height / 2;
16
+ } else {
17
+ return [];
23
18
  }
24
- // Only consider widgets in the same row (same Y axis)
25
- if (y >= rect.top && y <= rect.bottom) {
26
- const centerX = rect.left + rect.width / 2;
27
- const distance = Math.abs(x - centerX);
28
- collisions.push({
29
- id: String(container.id),
30
- data: {
31
- value: distance
19
+ for (const container of args.droppableContainers){
20
+ const rect = args.droppableRects.get(container.id);
21
+ if (!rect) {
22
+ continue;
23
+ }
24
+ // Only consider widgets in the same row (same Y axis)
25
+ if (y >= rect.top && y <= rect.bottom) {
26
+ const centerX = rect.left + rect.width / 2;
27
+ const distance = Math.abs(x - centerX);
28
+ collisions.push({
29
+ id: String(container.id),
30
+ data: {
31
+ value: distance
32
+ }
33
+ });
32
34
  }
33
- });
34
35
  }
35
- }
36
- return collisions.sort((a, b) => a.data.value - b.data.value);
36
+ return collisions.sort((a, b)=>a.data.value - b.data.value);
37
37
  };
38
+
38
39
  //# sourceMappingURL=collisionDetection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collisionDetection.js","names":["closestInXAxis","args","collisions","x","y","pointerCoordinates","collisionRect","left","width","top","height","container","droppableContainers","rect","droppableRects","get","id","bottom","centerX","distance","Math","abs","push","String","data","value","sort","a","b"],"sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.ts"],"sourcesContent":["import type { CollisionDetection } from '@dnd-kit/core'\n\n/**\n * Collision detection that considers the X\n * axis only with respect to the position of the pointer (or collisionRect for keyboard)\n */\nexport const closestInXAxis: CollisionDetection = (args) => {\n const collisions: Array<{ data: { value: number }; id: string }> = []\n\n // Use pointer coordinates if available (mouse/touch), otherwise use collisionRect center (keyboard)\n let x: number\n let y: number\n\n if (args.pointerCoordinates) {\n x = args.pointerCoordinates.x\n y = args.pointerCoordinates.y\n } else if (args.collisionRect) {\n // For keyboard navigation, use the center of the collisionRect\n x = args.collisionRect.left + args.collisionRect.width / 2\n y = args.collisionRect.top + args.collisionRect.height / 2\n } else {\n return []\n }\n\n for (const container of args.droppableContainers) {\n const rect = args.droppableRects.get(container.id)\n if (!rect) {\n continue\n }\n\n // Only consider widgets in the same row (same Y axis)\n if (y >= rect.top && y <= rect.bottom) {\n const centerX = rect.left + rect.width / 2\n const distance = Math.abs(x - centerX)\n collisions.push({ id: String(container.id), data: { value: distance } })\n }\n }\n\n return collisions.sort((a, b) => a.data.value - b.data.value)\n}\n"],"mappings":"AAEA;;;GAIA,OAAO,MAAMA,cAAA,GAAsCC,IAAA;EACjD,MAAMC,UAAA,GAA6D,EAAE;EAErE;EACA,IAAIC,CAAA;EACJ,IAAIC,CAAA;EAEJ,IAAIH,IAAA,CAAKI,kBAAkB,EAAE;IAC3BF,CAAA,GAAIF,IAAA,CAAKI,kBAAkB,CAACF,CAAC;IAC7BC,CAAA,GAAIH,IAAA,CAAKI,kBAAkB,CAACD,CAAC;EAC/B,OAAO,IAAIH,IAAA,CAAKK,aAAa,EAAE;IAC7B;IACAH,CAAA,GAAIF,IAAA,CAAKK,aAAa,CAACC,IAAI,GAAGN,IAAA,CAAKK,aAAa,CAACE,KAAK,GAAG;IACzDJ,CAAA,GAAIH,IAAA,CAAKK,aAAa,CAACG,GAAG,GAAGR,IAAA,CAAKK,aAAa,CAACI,MAAM,GAAG;EAC3D,OAAO;IACL,OAAO,EAAE;EACX;EAEA,KAAK,MAAMC,SAAA,IAAaV,IAAA,CAAKW,mBAAmB,EAAE;IAChD,MAAMC,IAAA,GAAOZ,IAAA,CAAKa,cAAc,CAACC,GAAG,CAACJ,SAAA,CAAUK,EAAE;IACjD,IAAI,CAACH,IAAA,EAAM;MACT;IACF;IAEA;IACA,IAAIT,CAAA,IAAKS,IAAA,CAAKJ,GAAG,IAAIL,CAAA,IAAKS,IAAA,CAAKI,MAAM,EAAE;MACrC,MAAMC,OAAA,GAAUL,IAAA,CAAKN,IAAI,GAAGM,IAAA,CAAKL,KAAK,GAAG;MACzC,MAAMW,QAAA,GAAWC,IAAA,CAAKC,GAAG,CAAClB,CAAA,GAAIe,OAAA;MAC9BhB,UAAA,CAAWoB,IAAI,CAAC;QAAEN,EAAA,EAAIO,MAAA,CAAOZ,SAAA,CAAUK,EAAE;QAAGQ,IAAA,EAAM;UAAEC,KAAA,EAAON;QAAS;MAAE;IACxE;EACF;EAEA,OAAOjB,UAAA,CAAWwB,IAAI,CAAC,CAACC,CAAA,EAAGC,CAAA,KAAMD,CAAA,CAAEH,IAAI,CAACC,KAAK,GAAGG,CAAA,CAAEJ,IAAI,CAACC,KAAK;AAC9D","ignoreList":[]}
1
+ {"version":3,"sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.ts"],"sourcesContent":["import type { CollisionDetection } from '@dnd-kit/core'\n\n/**\n * Collision detection that considers the X\n * axis only with respect to the position of the pointer (or collisionRect for keyboard)\n */\nexport const closestInXAxis: CollisionDetection = (args) => {\n const collisions: Array<{ data: { value: number }; id: string }> = []\n\n // Use pointer coordinates if available (mouse/touch), otherwise use collisionRect center (keyboard)\n let x: number\n let y: number\n\n if (args.pointerCoordinates) {\n x = args.pointerCoordinates.x\n y = args.pointerCoordinates.y\n } else if (args.collisionRect) {\n // For keyboard navigation, use the center of the collisionRect\n x = args.collisionRect.left + args.collisionRect.width / 2\n y = args.collisionRect.top + args.collisionRect.height / 2\n } else {\n return []\n }\n\n for (const container of args.droppableContainers) {\n const rect = args.droppableRects.get(container.id)\n if (!rect) {\n continue\n }\n\n // Only consider widgets in the same row (same Y axis)\n if (y >= rect.top && y <= rect.bottom) {\n const centerX = rect.left + rect.width / 2\n const distance = Math.abs(x - centerX)\n collisions.push({ id: String(container.id), data: { value: distance } })\n }\n }\n\n return collisions.sort((a, b) => a.data.value - b.data.value)\n}\n"],"names":["closestInXAxis","args","collisions","x","y","pointerCoordinates","collisionRect","left","width","top","height","container","droppableContainers","rect","droppableRects","get","id","bottom","centerX","distance","Math","abs","push","String","data","value","sort","a","b"],"mappings":"AAEA;;;CAGC,GACD,OAAO,MAAMA,iBAAqC,CAACC;IACjD,MAAMC,aAA6D,EAAE;IAErE,oGAAoG;IACpG,IAAIC;IACJ,IAAIC;IAEJ,IAAIH,KAAKI,kBAAkB,EAAE;QAC3BF,IAAIF,KAAKI,kBAAkB,CAACF,CAAC;QAC7BC,IAAIH,KAAKI,kBAAkB,CAACD,CAAC;IAC/B,OAAO,IAAIH,KAAKK,aAAa,EAAE;QAC7B,+DAA+D;QAC/DH,IAAIF,KAAKK,aAAa,CAACC,IAAI,GAAGN,KAAKK,aAAa,CAACE,KAAK,GAAG;QACzDJ,IAAIH,KAAKK,aAAa,CAACG,GAAG,GAAGR,KAAKK,aAAa,CAACI,MAAM,GAAG;IAC3D,OAAO;QACL,OAAO,EAAE;IACX;IAEA,KAAK,MAAMC,aAAaV,KAAKW,mBAAmB,CAAE;QAChD,MAAMC,OAAOZ,KAAKa,cAAc,CAACC,GAAG,CAACJ,UAAUK,EAAE;QACjD,IAAI,CAACH,MAAM;YACT;QACF;QAEA,sDAAsD;QACtD,IAAIT,KAAKS,KAAKJ,GAAG,IAAIL,KAAKS,KAAKI,MAAM,EAAE;YACrC,MAAMC,UAAUL,KAAKN,IAAI,GAAGM,KAAKL,KAAK,GAAG;YACzC,MAAMW,WAAWC,KAAKC,GAAG,CAAClB,IAAIe;YAC9BhB,WAAWoB,IAAI,CAAC;gBAAEN,IAAIO,OAAOZ,UAAUK,EAAE;gBAAGQ,MAAM;oBAAEC,OAAON;gBAAS;YAAE;QACxE;IACF;IAEA,OAAOjB,WAAWwB,IAAI,CAAC,CAACC,GAAGC,IAAMD,EAAEH,IAAI,CAACC,KAAK,GAAGG,EAAEJ,IAAI,CAACC,KAAK;AAC9D,EAAC"}