@payloadcms/next 3.74.0-canary.5 → 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 (474) 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.d.ts +1 -0
  62. package/dist/exports/client.d.ts.map +1 -1
  63. package/dist/exports/client.js +2 -1
  64. package/dist/exports/client.js.map +1 -1
  65. package/dist/exports/layouts.js +1 -0
  66. package/dist/exports/layouts.js.map +1 -1
  67. package/dist/exports/routes.js +1 -0
  68. package/dist/exports/routes.js.map +1 -1
  69. package/dist/exports/rsc.d.ts +1 -0
  70. package/dist/exports/rsc.d.ts.map +1 -1
  71. package/dist/exports/rsc.js +2 -0
  72. package/dist/exports/rsc.js.map +1 -1
  73. package/dist/exports/templates.js +1 -0
  74. package/dist/exports/templates.js.map +1 -1
  75. package/dist/exports/utilities.js +7 -12
  76. package/dist/exports/utilities.js.map +1 -1
  77. package/dist/exports/views.js +1 -0
  78. package/dist/exports/views.js.map +1 -1
  79. package/dist/index.js +1 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/layouts/Root/NestProviders.js +21 -20
  82. package/dist/layouts/Root/NestProviders.js.map +1 -1
  83. package/dist/layouts/Root/checkDependencies.js +49 -41
  84. package/dist/layouts/Root/checkDependencies.js.map +1 -1
  85. package/dist/layouts/Root/index.js +128 -103
  86. package/dist/layouts/Root/index.js.map +1 -1
  87. package/dist/prod/styles.css +5 -1
  88. package/dist/routes/graphql/handler.js +114 -122
  89. package/dist/routes/graphql/handler.js.map +1 -1
  90. package/dist/routes/graphql/index.js +1 -0
  91. package/dist/routes/graphql/index.js.map +1 -1
  92. package/dist/routes/graphql/playground.js +28 -27
  93. package/dist/routes/graphql/playground.js.map +1 -1
  94. package/dist/routes/index.js +1 -0
  95. package/dist/routes/index.js.map +1 -1
  96. package/dist/routes/rest/index.js +23 -22
  97. package/dist/routes/rest/index.js.map +1 -1
  98. package/dist/routes/rest/og/image.js +103 -79
  99. package/dist/routes/rest/og/image.js.map +1 -1
  100. package/dist/routes/rest/og/index.js +59 -54
  101. package/dist/routes/rest/og/index.js.map +1 -1
  102. package/dist/templates/Default/NavHamburger/index.js +12 -20
  103. package/dist/templates/Default/NavHamburger/index.js.map +1 -1
  104. package/dist/templates/Default/Wrapper/index.js +20 -44
  105. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  106. package/dist/templates/Default/Wrapper/index.scss +58 -0
  107. package/dist/templates/Default/index.js +147 -116
  108. package/dist/templates/Default/index.js.map +1 -1
  109. package/dist/templates/Default/index.scss +79 -0
  110. package/dist/templates/Minimal/index.js +26 -17
  111. package/dist/templates/Minimal/index.js.map +1 -1
  112. package/dist/templates/Minimal/index.scss +30 -0
  113. package/dist/utilities/getExistingAuthToken.js +3 -2
  114. package/dist/utilities/getExistingAuthToken.js.map +1 -1
  115. package/dist/utilities/getNextRequestI18n.js +12 -13
  116. package/dist/utilities/getNextRequestI18n.js.map +1 -1
  117. package/dist/utilities/getPayloadHMR.js +5 -5
  118. package/dist/utilities/getPayloadHMR.js.map +1 -1
  119. package/dist/utilities/getPreferences.js +27 -22
  120. package/dist/utilities/getPreferences.js.map +1 -1
  121. package/dist/utilities/getRequestLocale.js +13 -14
  122. package/dist/utilities/getRequestLocale.js.map +1 -1
  123. package/dist/utilities/getRequestTheme.js +19 -19
  124. package/dist/utilities/getRequestTheme.js.map +1 -1
  125. package/dist/utilities/getRouteWithoutAdmin.js +3 -5
  126. package/dist/utilities/getRouteWithoutAdmin.js.map +1 -1
  127. package/dist/utilities/handleAuthRedirect.js +22 -36
  128. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  129. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  130. package/dist/utilities/handleServerFunctions.js +33 -41
  131. package/dist/utilities/handleServerFunctions.js.map +1 -1
  132. package/dist/utilities/initReq.d.ts +2 -13
  133. package/dist/utilities/initReq.d.ts.map +1 -1
  134. package/dist/utilities/initReq.js +78 -96
  135. package/dist/utilities/initReq.js.map +1 -1
  136. package/dist/utilities/isCustomAdminView.js +22 -26
  137. package/dist/utilities/isCustomAdminView.js.map +1 -1
  138. package/dist/utilities/isPublicAdminRoute.js +26 -20
  139. package/dist/utilities/isPublicAdminRoute.js.map +1 -1
  140. package/dist/utilities/meta.js +68 -63
  141. package/dist/utilities/meta.js.map +1 -1
  142. package/dist/utilities/selectiveCache.js +25 -26
  143. package/dist/utilities/selectiveCache.js.map +1 -1
  144. package/dist/utilities/setPayloadAuthCookie.js +19 -22
  145. package/dist/utilities/setPayloadAuthCookie.js.map +1 -1
  146. package/dist/utilities/slugify.js +24 -33
  147. package/dist/utilities/slugify.js.map +1 -1
  148. package/dist/utilities/timestamp.js +7 -6
  149. package/dist/utilities/timestamp.js.map +1 -1
  150. package/dist/views/API/LocaleSelector/index.js +17 -39
  151. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  152. package/dist/views/API/RenderJSON/index.js +171 -126
  153. package/dist/views/API/RenderJSON/index.js.map +1 -1
  154. package/dist/views/API/RenderJSON/index.scss +129 -0
  155. package/dist/views/API/index.client.js +291 -199
  156. package/dist/views/API/index.client.js.map +1 -1
  157. package/dist/views/API/index.js +7 -2
  158. package/dist/views/API/index.js.map +1 -1
  159. package/dist/views/API/index.scss +119 -0
  160. package/dist/views/API/metadata.js +18 -23
  161. package/dist/views/API/metadata.js.map +1 -1
  162. package/dist/views/Account/ResetPreferences/index.js +78 -102
  163. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  164. package/dist/views/Account/Settings/LanguageSelector.js +18 -47
  165. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
  166. package/dist/views/Account/Settings/index.js +60 -25
  167. package/dist/views/Account/Settings/index.js.map +1 -1
  168. package/dist/views/Account/Settings/index.scss +48 -0
  169. package/dist/views/Account/ToggleTheme/index.js +38 -55
  170. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  171. package/dist/views/Account/index.client.js +16 -32
  172. package/dist/views/Account/index.client.js.map +1 -1
  173. package/dist/views/Account/index.js +147 -158
  174. package/dist/views/Account/index.js.map +1 -1
  175. package/dist/views/Account/metadata.js +8 -12
  176. package/dist/views/Account/metadata.js.map +1 -1
  177. package/dist/views/BrowseByFolder/buildView.js +138 -157
  178. package/dist/views/BrowseByFolder/buildView.js.map +1 -1
  179. package/dist/views/BrowseByFolder/index.js +16 -16
  180. package/dist/views/BrowseByFolder/index.js.map +1 -1
  181. package/dist/views/BrowseByFolder/metadata.js +13 -15
  182. package/dist/views/BrowseByFolder/metadata.js.map +1 -1
  183. package/dist/views/CollectionFolders/buildView.js +122 -142
  184. package/dist/views/CollectionFolders/buildView.js.map +1 -1
  185. package/dist/views/CollectionFolders/index.js +16 -16
  186. package/dist/views/CollectionFolders/index.js.map +1 -1
  187. package/dist/views/CollectionFolders/metadata.js +18 -21
  188. package/dist/views/CollectionFolders/metadata.js.map +1 -1
  189. package/dist/views/CollectionFolders/renderFolderViewSlots.js +58 -61
  190. package/dist/views/CollectionFolders/renderFolderViewSlots.js.map +1 -1
  191. package/dist/views/CollectionTrash/index.js +17 -17
  192. package/dist/views/CollectionTrash/index.js.map +1 -1
  193. package/dist/views/CollectionTrash/metadata.js +18 -21
  194. package/dist/views/CollectionTrash/metadata.js.map +1 -1
  195. package/dist/views/CreateFirstUser/index.client.js +117 -103
  196. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  197. package/dist/views/CreateFirstUser/index.js +87 -81
  198. package/dist/views/CreateFirstUser/index.js.map +1 -1
  199. package/dist/views/CreateFirstUser/index.scss +21 -0
  200. package/dist/views/CreateFirstUser/metadata.js +8 -12
  201. package/dist/views/CreateFirstUser/metadata.js.map +1 -1
  202. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +147 -138
  203. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  204. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +423 -405
  205. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  206. package/dist/views/Dashboard/Default/ModularDashboard/index.d.ts.map +1 -1
  207. package/dist/views/Dashboard/Default/ModularDashboard/index.js +75 -75
  208. package/dist/views/Dashboard/Default/ModularDashboard/index.js.map +1 -1
  209. package/dist/views/Dashboard/Default/ModularDashboard/index.scss +316 -0
  210. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +62 -89
  211. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  212. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.d.ts.map +1 -1
  213. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js +43 -47
  214. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js.map +1 -1
  215. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.d.ts.map +1 -1
  216. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +67 -65
  217. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  218. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +164 -147
  219. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  220. package/dist/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.js +31 -30
  221. package/dist/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.js.map +1 -1
  222. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js +223 -229
  223. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js.map +1 -1
  224. package/dist/views/Dashboard/Default/index.js +59 -45
  225. package/dist/views/Dashboard/Default/index.js.map +1 -1
  226. package/dist/views/Dashboard/index.js +46 -42
  227. package/dist/views/Dashboard/index.js.map +1 -1
  228. package/dist/views/Dashboard/metadata.js +10 -14
  229. package/dist/views/Dashboard/metadata.js.map +1 -1
  230. package/dist/views/Document/getCustomDocumentViewByKey.js +3 -2
  231. package/dist/views/Document/getCustomDocumentViewByKey.js.map +1 -1
  232. package/dist/views/Document/getCustomViewByRoute.js +27 -30
  233. package/dist/views/Document/getCustomViewByRoute.js.map +1 -1
  234. package/dist/views/Document/getDocPreferences.js +40 -41
  235. package/dist/views/Document/getDocPreferences.js.map +1 -1
  236. package/dist/views/Document/getDocumentData.js +44 -55
  237. package/dist/views/Document/getDocumentData.js.map +1 -1
  238. package/dist/views/Document/getDocumentPermissions.js +77 -80
  239. package/dist/views/Document/getDocumentPermissions.js.map +1 -1
  240. package/dist/views/Document/getDocumentView.js +313 -283
  241. package/dist/views/Document/getDocumentView.js.map +1 -1
  242. package/dist/views/Document/getIsLocked.js +73 -73
  243. package/dist/views/Document/getIsLocked.js.map +1 -1
  244. package/dist/views/Document/getMetaBySegment.js +130 -136
  245. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  246. package/dist/views/Document/getVersions.js +220 -213
  247. package/dist/views/Document/getVersions.js.map +1 -1
  248. package/dist/views/Document/handleServerFunction.d.ts.map +1 -1
  249. package/dist/views/Document/handleServerFunction.js +101 -130
  250. package/dist/views/Document/handleServerFunction.js.map +1 -1
  251. package/dist/views/Document/index.js +317 -355
  252. package/dist/views/Document/index.js.map +1 -1
  253. package/dist/views/Document/metadata.js +2 -1
  254. package/dist/views/Document/metadata.js.map +1 -1
  255. package/dist/views/Document/renderDocumentSlots.d.ts +3 -2
  256. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  257. package/dist/views/Document/renderDocumentSlots.js +142 -141
  258. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  259. package/dist/views/Edit/index.js +10 -6
  260. package/dist/views/Edit/index.js.map +1 -1
  261. package/dist/views/Edit/metadata.js +36 -46
  262. package/dist/views/Edit/metadata.js.map +1 -1
  263. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +130 -164
  264. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  265. package/dist/views/ForgotPassword/index.js +79 -62
  266. package/dist/views/ForgotPassword/index.js.map +1 -1
  267. package/dist/views/ForgotPassword/metadata.js +8 -12
  268. package/dist/views/ForgotPassword/metadata.js.map +1 -1
  269. package/dist/views/List/createSerializableValue.js +12 -11
  270. package/dist/views/List/createSerializableValue.js.map +1 -1
  271. package/dist/views/List/enrichDocsWithVersionStatus.js +86 -86
  272. package/dist/views/List/enrichDocsWithVersionStatus.js.map +1 -1
  273. package/dist/views/List/extractRelationshipDisplayValue.js +15 -14
  274. package/dist/views/List/extractRelationshipDisplayValue.js.map +1 -1
  275. package/dist/views/List/extractValueOrRelationshipID.js +16 -15
  276. package/dist/views/List/extractValueOrRelationshipID.js.map +1 -1
  277. package/dist/views/List/handleGroupBy.js +133 -150
  278. package/dist/views/List/handleGroupBy.js.map +1 -1
  279. package/dist/views/List/handleServerFunction.d.ts.map +1 -1
  280. package/dist/views/List/handleServerFunction.js +97 -123
  281. package/dist/views/List/handleServerFunction.js.map +1 -1
  282. package/dist/views/List/index.d.ts +1 -0
  283. package/dist/views/List/index.d.ts.map +1 -1
  284. package/dist/views/List/index.js +303 -318
  285. package/dist/views/List/index.js.map +1 -1
  286. package/dist/views/List/metadata.js +17 -20
  287. package/dist/views/List/metadata.js.map +1 -1
  288. package/dist/views/List/renderListViewSlots.js +82 -75
  289. package/dist/views/List/renderListViewSlots.js.map +1 -1
  290. package/dist/views/List/resolveAllFilterOptions.js +43 -45
  291. package/dist/views/List/resolveAllFilterOptions.js.map +1 -1
  292. package/dist/views/List/transformColumnsToSelect.js +9 -8
  293. package/dist/views/List/transformColumnsToSelect.js.map +1 -1
  294. package/dist/views/Login/LoginField/index.js +57 -89
  295. package/dist/views/Login/LoginField/index.js.map +1 -1
  296. package/dist/views/Login/LoginForm/index.js +107 -160
  297. package/dist/views/Login/LoginForm/index.js.map +1 -1
  298. package/dist/views/Login/LoginForm/index.scss +10 -0
  299. package/dist/views/Login/index.js +82 -85
  300. package/dist/views/Login/index.js.map +1 -1
  301. package/dist/views/Login/index.scss +10 -0
  302. package/dist/views/Login/metadata.js +8 -12
  303. package/dist/views/Login/metadata.js.map +1 -1
  304. package/dist/views/Logout/LogoutClient.js +84 -120
  305. package/dist/views/Logout/LogoutClient.js.map +1 -1
  306. package/dist/views/Logout/index.js +29 -29
  307. package/dist/views/Logout/index.js.map +1 -1
  308. package/dist/views/Logout/index.scss +25 -0
  309. package/dist/views/Logout/metadata.js +7 -11
  310. package/dist/views/Logout/metadata.js.map +1 -1
  311. package/dist/views/NotFound/index.client.js +71 -82
  312. package/dist/views/NotFound/index.client.js.map +1 -1
  313. package/dist/views/NotFound/index.js +72 -73
  314. package/dist/views/NotFound/index.js.map +1 -1
  315. package/dist/views/NotFound/index.scss +57 -0
  316. package/dist/views/NotFound/metadata.js +7 -9
  317. package/dist/views/NotFound/metadata.js.map +1 -1
  318. package/dist/views/ResetPassword/ResetPasswordForm/index.js +97 -108
  319. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  320. package/dist/views/ResetPassword/index.js +93 -73
  321. package/dist/views/ResetPassword/index.js.map +1 -1
  322. package/dist/views/ResetPassword/index.scss +11 -0
  323. package/dist/views/ResetPassword/metadata.js +8 -12
  324. package/dist/views/ResetPassword/metadata.js.map +1 -1
  325. package/dist/views/Root/attachViewActions.js +18 -23
  326. package/dist/views/Root/attachViewActions.js.map +1 -1
  327. package/dist/views/Root/generateCustomViewMetadata.js +19 -21
  328. package/dist/views/Root/generateCustomViewMetadata.js.map +1 -1
  329. package/dist/views/Root/getCustomViewByKey.js +12 -14
  330. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  331. package/dist/views/Root/getCustomViewByRoute.js +31 -42
  332. package/dist/views/Root/getCustomViewByRoute.js.map +1 -1
  333. package/dist/views/Root/getDocumentViewInfo.js +24 -23
  334. package/dist/views/Root/getDocumentViewInfo.js.map +1 -1
  335. package/dist/views/Root/getRouteData.js +333 -325
  336. package/dist/views/Root/getRouteData.js.map +1 -1
  337. package/dist/views/Root/index.js +248 -270
  338. package/dist/views/Root/index.js.map +1 -1
  339. package/dist/views/Root/isPathMatchingRoute.js +21 -26
  340. package/dist/views/Root/isPathMatchingRoute.js.map +1 -1
  341. package/dist/views/Root/metadata.js +176 -181
  342. package/dist/views/Root/metadata.js.map +1 -1
  343. package/dist/views/Unauthorized/index.js +54 -46
  344. package/dist/views/Unauthorized/index.js.map +1 -1
  345. package/dist/views/Unauthorized/index.scss +14 -0
  346. package/dist/views/Unauthorized/metadata.js +8 -12
  347. package/dist/views/Unauthorized/metadata.js.map +1 -1
  348. package/dist/views/Verify/index.client.js +25 -43
  349. package/dist/views/Verify/index.client.js.map +1 -1
  350. package/dist/views/Verify/index.js +69 -64
  351. package/dist/views/Verify/index.js.map +1 -1
  352. package/dist/views/Verify/index.scss +16 -0
  353. package/dist/views/Verify/metadata.js +8 -12
  354. package/dist/views/Verify/metadata.js.map +1 -1
  355. package/dist/views/Version/Default/SelectedLocalesContext.js +4 -4
  356. package/dist/views/Version/Default/SelectedLocalesContext.js.map +1 -1
  357. package/dist/views/Version/Default/SetStepNav.js +86 -127
  358. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  359. package/dist/views/Version/Default/index.js +380 -236
  360. package/dist/views/Version/Default/index.js.map +1 -1
  361. package/dist/views/Version/Default/index.scss +170 -0
  362. package/dist/views/Version/Default/types.js +2 -1
  363. package/dist/views/Version/Default/types.js.map +1 -1
  364. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +102 -119
  365. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  366. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.scss +81 -0
  367. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js +78 -73
  368. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -1
  369. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +363 -408
  370. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  371. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +40 -51
  372. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  373. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +35 -67
  374. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  375. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.scss +12 -0
  376. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +59 -56
  377. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  378. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.scss +9 -0
  379. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +139 -117
  380. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  381. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +59 -0
  382. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js +56 -61
  383. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js.map +1 -1
  384. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +223 -204
  385. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  386. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.scss +91 -0
  387. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js +17 -11
  388. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js.map +1 -1
  389. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +48 -73
  390. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  391. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.scss +4 -0
  392. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +132 -143
  393. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  394. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.scss +9 -0
  395. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +56 -81
  396. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  397. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.scss +4 -0
  398. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +252 -211
  399. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
  400. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.scss +121 -0
  401. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +23 -22
  402. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  403. package/dist/views/Version/RenderFieldsToDiff/index.js +12 -9
  404. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  405. package/dist/views/Version/RenderFieldsToDiff/index.scss +24 -0
  406. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +213 -228
  407. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  408. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js +1005 -826
  409. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js.map +1 -1
  410. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js +2 -1
  411. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js.map +1 -1
  412. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js +44 -43
  413. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js.map +1 -1
  414. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +32 -36
  415. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
  416. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +145 -129
  417. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +1 -1
  418. package/dist/views/Version/Restore/index.js +117 -93
  419. package/dist/views/Version/Restore/index.js.map +1 -1
  420. package/dist/views/Version/Restore/index.scss +84 -0
  421. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js +33 -50
  422. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
  423. package/dist/views/Version/SelectComparison/VersionDrawer/index.js +170 -226
  424. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  425. package/dist/views/Version/SelectComparison/VersionDrawer/index.scss +18 -0
  426. package/dist/views/Version/SelectComparison/index.js +73 -50
  427. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  428. package/dist/views/Version/SelectComparison/index.scss +9 -0
  429. package/dist/views/Version/SelectComparison/types.js +2 -1
  430. package/dist/views/Version/SelectComparison/types.js.map +1 -1
  431. package/dist/views/Version/SelectLocales/index.js +34 -32
  432. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  433. package/dist/views/Version/VersionPillLabel/VersionPillLabel.d.ts.map +1 -1
  434. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js +107 -96
  435. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js.map +1 -1
  436. package/dist/views/Version/VersionPillLabel/getVersionLabel.d.ts +3 -2
  437. package/dist/views/Version/VersionPillLabel/getVersionLabel.d.ts.map +1 -1
  438. package/dist/views/Version/VersionPillLabel/getVersionLabel.js +30 -39
  439. package/dist/views/Version/VersionPillLabel/getVersionLabel.js.map +1 -1
  440. package/dist/views/Version/VersionPillLabel/index.scss +26 -0
  441. package/dist/views/Version/fetchVersions.js +113 -138
  442. package/dist/views/Version/fetchVersions.js.map +1 -1
  443. package/dist/views/Version/index.d.ts.map +1 -1
  444. package/dist/views/Version/index.js +328 -323
  445. package/dist/views/Version/index.js.map +1 -1
  446. package/dist/views/Version/metadata.js +43 -50
  447. package/dist/views/Version/metadata.js.map +1 -1
  448. package/dist/views/Versions/buildColumns.js +95 -79
  449. package/dist/views/Versions/buildColumns.js.map +1 -1
  450. package/dist/views/Versions/cells/AutosaveCell/index.js +34 -38
  451. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  452. package/dist/views/Versions/cells/AutosaveCell/index.scss +9 -0
  453. package/dist/views/Versions/cells/CreatedAt/index.js +32 -53
  454. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  455. package/dist/views/Versions/cells/ID/index.js +10 -8
  456. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  457. package/dist/views/Versions/index.client.js +106 -83
  458. package/dist/views/Versions/index.client.js.map +1 -1
  459. package/dist/views/Versions/index.js +164 -164
  460. package/dist/views/Versions/index.js.map +1 -1
  461. package/dist/views/Versions/index.scss +110 -0
  462. package/dist/views/Versions/metadata.js +37 -44
  463. package/dist/views/Versions/metadata.js.map +1 -1
  464. package/dist/views/Versions/types.js +2 -1
  465. package/dist/views/Versions/types.js.map +1 -1
  466. package/dist/withPayload/withPayload.js +232 -174
  467. package/dist/withPayload/withPayload.js.map +1 -1
  468. package/dist/withPayload/withPayload.spec.js +36 -35
  469. package/dist/withPayload/withPayload.spec.js.map +1 -1
  470. package/dist/withPayload/withPayload.utils.js +65 -73
  471. package/dist/withPayload/withPayload.utils.js.map +1 -1
  472. package/dist/withPayload/withPayloadLegacy.js +41 -40
  473. package/dist/withPayload/withPayloadLegacy.js.map +1 -1
  474. 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"}