@payloadcms/next 3.78.0-internal-debug.f663370 → 3.78.0-internal.ab11ffa

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 (487) hide show
  1. package/dist/auth/login.js +58 -52
  2. package/dist/auth/login.js.map +1 -1
  3. package/dist/auth/logout.js +44 -39
  4. package/dist/auth/logout.js.map +1 -1
  5. package/dist/auth/refresh.js +47 -45
  6. package/dist/auth/refresh.js.map +1 -1
  7. package/dist/cjs/withPayload.cjs +24 -65
  8. package/dist/cjs/withPayload.cjs.map +2 -2
  9. package/dist/config.js +0 -1
  10. package/dist/config.js.map +1 -1
  11. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +15 -9
  12. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
  13. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +71 -40
  14. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  15. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +59 -65
  16. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  17. package/dist/elements/DocumentHeader/Tabs/index.js +70 -80
  18. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  19. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +23 -16
  20. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  21. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +69 -61
  22. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  23. package/dist/elements/DocumentHeader/index.js +28 -48
  24. package/dist/elements/DocumentHeader/index.js.map +1 -1
  25. package/dist/elements/FormHeader/index.js +16 -30
  26. package/dist/elements/FormHeader/index.js.map +1 -1
  27. package/dist/elements/Logo/index.js +34 -19
  28. package/dist/elements/Logo/index.js.map +1 -1
  29. package/dist/elements/Nav/NavHamburger/index.js +44 -23
  30. package/dist/elements/Nav/NavHamburger/index.js.map +1 -1
  31. package/dist/elements/Nav/NavWrapper/index.js +54 -28
  32. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  33. package/dist/elements/Nav/SettingsMenuButton/index.js +39 -33
  34. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  35. package/dist/elements/Nav/getNavPrefs.js +22 -27
  36. package/dist/elements/Nav/getNavPrefs.js.map +1 -1
  37. package/dist/elements/Nav/index.client.js +118 -97
  38. package/dist/elements/Nav/index.client.js.map +1 -1
  39. package/dist/elements/Nav/index.js +170 -191
  40. package/dist/elements/Nav/index.js.map +1 -1
  41. package/dist/exports/auth.js +0 -1
  42. package/dist/exports/auth.js.map +1 -1
  43. package/dist/exports/client.js +1 -1
  44. package/dist/exports/client.js.map +1 -1
  45. package/dist/exports/layouts.js +0 -1
  46. package/dist/exports/layouts.js.map +1 -1
  47. package/dist/exports/routes.js +0 -1
  48. package/dist/exports/routes.js.map +1 -1
  49. package/dist/exports/rsc.js +0 -1
  50. package/dist/exports/rsc.js.map +1 -1
  51. package/dist/exports/templates.js +0 -1
  52. package/dist/exports/templates.js.map +1 -1
  53. package/dist/exports/utilities.js +12 -7
  54. package/dist/exports/utilities.js.map +1 -1
  55. package/dist/exports/views.js +0 -1
  56. package/dist/exports/views.js.map +1 -1
  57. package/dist/index.js +0 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/layouts/Root/NestProviders.js +20 -21
  60. package/dist/layouts/Root/NestProviders.js.map +1 -1
  61. package/dist/layouts/Root/checkDependencies.js +41 -49
  62. package/dist/layouts/Root/checkDependencies.js.map +1 -1
  63. package/dist/layouts/Root/index.js +103 -128
  64. package/dist/layouts/Root/index.js.map +1 -1
  65. package/dist/prod/styles.css +1 -5
  66. package/dist/routes/graphql/handler.js +122 -114
  67. package/dist/routes/graphql/handler.js.map +1 -1
  68. package/dist/routes/graphql/index.js +0 -1
  69. package/dist/routes/graphql/index.js.map +1 -1
  70. package/dist/routes/graphql/playground.js +27 -28
  71. package/dist/routes/graphql/playground.js.map +1 -1
  72. package/dist/routes/index.js +0 -1
  73. package/dist/routes/index.js.map +1 -1
  74. package/dist/routes/rest/index.js +22 -23
  75. package/dist/routes/rest/index.js.map +1 -1
  76. package/dist/routes/rest/og/image.js +79 -103
  77. package/dist/routes/rest/og/image.js.map +1 -1
  78. package/dist/routes/rest/og/index.js +54 -59
  79. package/dist/routes/rest/og/index.js.map +1 -1
  80. package/dist/templates/Default/NavHamburger/index.js +20 -12
  81. package/dist/templates/Default/NavHamburger/index.js.map +1 -1
  82. package/dist/templates/Default/Wrapper/index.js +44 -20
  83. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  84. package/dist/templates/Default/index.js +116 -147
  85. package/dist/templates/Default/index.js.map +1 -1
  86. package/dist/templates/Minimal/index.js +17 -26
  87. package/dist/templates/Minimal/index.js.map +1 -1
  88. package/dist/utilities/getExistingAuthToken.js +2 -3
  89. package/dist/utilities/getExistingAuthToken.js.map +1 -1
  90. package/dist/utilities/getNextRequestI18n.js +13 -12
  91. package/dist/utilities/getNextRequestI18n.js.map +1 -1
  92. package/dist/utilities/getPayloadHMR.js +5 -5
  93. package/dist/utilities/getPayloadHMR.js.map +1 -1
  94. package/dist/utilities/getPreferences.js +22 -27
  95. package/dist/utilities/getPreferences.js.map +1 -1
  96. package/dist/utilities/getRequestLocale.js +14 -13
  97. package/dist/utilities/getRequestLocale.js.map +1 -1
  98. package/dist/utilities/getRequestTheme.js +19 -19
  99. package/dist/utilities/getRequestTheme.js.map +1 -1
  100. package/dist/utilities/getRouteWithoutAdmin.js +5 -3
  101. package/dist/utilities/getRouteWithoutAdmin.js.map +1 -1
  102. package/dist/utilities/handleAuthRedirect.js +36 -22
  103. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  104. package/dist/utilities/handleServerFunctions.js +43 -33
  105. package/dist/utilities/handleServerFunctions.js.map +1 -1
  106. package/dist/utilities/initReq.js +96 -78
  107. package/dist/utilities/initReq.js.map +1 -1
  108. package/dist/utilities/isCustomAdminView.js +26 -22
  109. package/dist/utilities/isCustomAdminView.js.map +1 -1
  110. package/dist/utilities/isPublicAdminRoute.js +20 -26
  111. package/dist/utilities/isPublicAdminRoute.js.map +1 -1
  112. package/dist/utilities/meta.js +63 -68
  113. package/dist/utilities/meta.js.map +1 -1
  114. package/dist/utilities/selectiveCache.js +26 -25
  115. package/dist/utilities/selectiveCache.js.map +1 -1
  116. package/dist/utilities/setPayloadAuthCookie.js +22 -19
  117. package/dist/utilities/setPayloadAuthCookie.js.map +1 -1
  118. package/dist/utilities/slugify.js +33 -24
  119. package/dist/utilities/slugify.js.map +1 -1
  120. package/dist/utilities/timestamp.js +6 -7
  121. package/dist/utilities/timestamp.js.map +1 -1
  122. package/dist/views/API/LocaleSelector/index.js +39 -17
  123. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  124. package/dist/views/API/RenderJSON/index.js +126 -171
  125. package/dist/views/API/RenderJSON/index.js.map +1 -1
  126. package/dist/views/API/index.client.js +199 -291
  127. package/dist/views/API/index.client.js.map +1 -1
  128. package/dist/views/API/index.js +2 -7
  129. package/dist/views/API/index.js.map +1 -1
  130. package/dist/views/API/metadata.js +23 -18
  131. package/dist/views/API/metadata.js.map +1 -1
  132. package/dist/views/Account/ResetPreferences/index.js +102 -78
  133. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  134. package/dist/views/Account/Settings/LanguageSelector.js +47 -18
  135. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
  136. package/dist/views/Account/Settings/index.js +25 -60
  137. package/dist/views/Account/Settings/index.js.map +1 -1
  138. package/dist/views/Account/ToggleTheme/index.js +55 -38
  139. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  140. package/dist/views/Account/index.client.js +32 -16
  141. package/dist/views/Account/index.client.js.map +1 -1
  142. package/dist/views/Account/index.d.ts.map +1 -1
  143. package/dist/views/Account/index.js +162 -147
  144. package/dist/views/Account/index.js.map +1 -1
  145. package/dist/views/Account/metadata.js +12 -8
  146. package/dist/views/Account/metadata.js.map +1 -1
  147. package/dist/views/BrowseByFolder/buildView.js +157 -138
  148. package/dist/views/BrowseByFolder/buildView.js.map +1 -1
  149. package/dist/views/BrowseByFolder/index.js +16 -16
  150. package/dist/views/BrowseByFolder/index.js.map +1 -1
  151. package/dist/views/BrowseByFolder/metadata.js +15 -13
  152. package/dist/views/BrowseByFolder/metadata.js.map +1 -1
  153. package/dist/views/CollectionFolders/buildView.js +142 -122
  154. package/dist/views/CollectionFolders/buildView.js.map +1 -1
  155. package/dist/views/CollectionFolders/index.js +16 -16
  156. package/dist/views/CollectionFolders/index.js.map +1 -1
  157. package/dist/views/CollectionFolders/metadata.js +21 -18
  158. package/dist/views/CollectionFolders/metadata.js.map +1 -1
  159. package/dist/views/CollectionFolders/renderFolderViewSlots.js +61 -58
  160. package/dist/views/CollectionFolders/renderFolderViewSlots.js.map +1 -1
  161. package/dist/views/CollectionTrash/index.js +17 -17
  162. package/dist/views/CollectionTrash/index.js.map +1 -1
  163. package/dist/views/CollectionTrash/metadata.js +21 -18
  164. package/dist/views/CollectionTrash/metadata.js.map +1 -1
  165. package/dist/views/CreateFirstUser/index.client.js +103 -117
  166. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  167. package/dist/views/CreateFirstUser/index.js +81 -87
  168. package/dist/views/CreateFirstUser/index.js.map +1 -1
  169. package/dist/views/CreateFirstUser/metadata.js +12 -8
  170. package/dist/views/CreateFirstUser/metadata.js.map +1 -1
  171. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +174 -151
  172. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  173. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.d.ts +11 -0
  174. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.d.ts.map +1 -0
  175. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.js +128 -0
  176. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.js.map +1 -0
  177. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts +8 -0
  178. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -0
  179. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +78 -0
  180. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -0
  181. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts +1 -0
  182. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  183. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +415 -423
  184. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  185. package/dist/views/Dashboard/Default/ModularDashboard/index.d.ts.map +1 -1
  186. package/dist/views/Dashboard/Default/ModularDashboard/index.js +66 -82
  187. package/dist/views/Dashboard/Default/ModularDashboard/index.js.map +1 -1
  188. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.d.ts +1 -0
  189. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.d.ts.map +1 -1
  190. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +95 -61
  191. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  192. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.d.ts.map +1 -1
  193. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js +54 -43
  194. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js.map +1 -1
  195. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.d.ts +1 -0
  196. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.d.ts.map +1 -1
  197. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +73 -67
  198. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  199. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts +1 -0
  200. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
  201. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +173 -173
  202. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  203. package/dist/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.js +30 -31
  204. package/dist/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.js.map +1 -1
  205. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromConfig.d.ts +4 -0
  206. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromConfig.d.ts.map +1 -0
  207. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromConfig.js +21 -0
  208. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromConfig.js.map +1 -0
  209. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts +4 -0
  210. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts.map +1 -0
  211. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.js +10 -0
  212. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.js.map +1 -0
  213. package/dist/views/Dashboard/Default/ModularDashboard/utils/localeUtils.d.ts +23 -0
  214. package/dist/views/Dashboard/Default/ModularDashboard/utils/localeUtils.d.ts.map +1 -0
  215. package/dist/views/Dashboard/Default/ModularDashboard/utils/localeUtils.js +103 -0
  216. package/dist/views/Dashboard/Default/ModularDashboard/utils/localeUtils.js.map +1 -0
  217. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js +229 -223
  218. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js.map +1 -1
  219. package/dist/views/Dashboard/Default/index.js +45 -59
  220. package/dist/views/Dashboard/Default/index.js.map +1 -1
  221. package/dist/views/Dashboard/index.js +42 -46
  222. package/dist/views/Dashboard/index.js.map +1 -1
  223. package/dist/views/Dashboard/metadata.js +14 -10
  224. package/dist/views/Dashboard/metadata.js.map +1 -1
  225. package/dist/views/Document/getCustomDocumentViewByKey.js +2 -3
  226. package/dist/views/Document/getCustomDocumentViewByKey.js.map +1 -1
  227. package/dist/views/Document/getCustomViewByRoute.js +30 -27
  228. package/dist/views/Document/getCustomViewByRoute.js.map +1 -1
  229. package/dist/views/Document/getDocPreferences.js +41 -40
  230. package/dist/views/Document/getDocPreferences.js.map +1 -1
  231. package/dist/views/Document/getDocumentData.js +55 -44
  232. package/dist/views/Document/getDocumentData.js.map +1 -1
  233. package/dist/views/Document/getDocumentPermissions.d.ts +2 -0
  234. package/dist/views/Document/getDocumentPermissions.d.ts.map +1 -1
  235. package/dist/views/Document/getDocumentPermissions.js +117 -77
  236. package/dist/views/Document/getDocumentPermissions.js.map +1 -1
  237. package/dist/views/Document/getDocumentView.js +283 -313
  238. package/dist/views/Document/getDocumentView.js.map +1 -1
  239. package/dist/views/Document/getIsLocked.js +73 -73
  240. package/dist/views/Document/getIsLocked.js.map +1 -1
  241. package/dist/views/Document/getMetaBySegment.js +136 -130
  242. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  243. package/dist/views/Document/getVersions.js +213 -220
  244. package/dist/views/Document/getVersions.js.map +1 -1
  245. package/dist/views/Document/handleServerFunction.js +127 -100
  246. package/dist/views/Document/handleServerFunction.js.map +1 -1
  247. package/dist/views/Document/index.d.ts.map +1 -1
  248. package/dist/views/Document/index.js +359 -317
  249. package/dist/views/Document/index.js.map +1 -1
  250. package/dist/views/Document/metadata.js +1 -2
  251. package/dist/views/Document/metadata.js.map +1 -1
  252. package/dist/views/Document/renderDocumentSlots.js +155 -141
  253. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  254. package/dist/views/Edit/index.js +6 -10
  255. package/dist/views/Edit/index.js.map +1 -1
  256. package/dist/views/Edit/metadata.js +46 -36
  257. package/dist/views/Edit/metadata.js.map +1 -1
  258. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +164 -130
  259. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  260. package/dist/views/ForgotPassword/index.js +62 -79
  261. package/dist/views/ForgotPassword/index.js.map +1 -1
  262. package/dist/views/ForgotPassword/metadata.js +12 -8
  263. package/dist/views/ForgotPassword/metadata.js.map +1 -1
  264. package/dist/views/List/createSerializableValue.js +11 -12
  265. package/dist/views/List/createSerializableValue.js.map +1 -1
  266. package/dist/views/List/enrichDocsWithVersionStatus.js +86 -86
  267. package/dist/views/List/enrichDocsWithVersionStatus.js.map +1 -1
  268. package/dist/views/List/extractRelationshipDisplayValue.js +14 -15
  269. package/dist/views/List/extractRelationshipDisplayValue.js.map +1 -1
  270. package/dist/views/List/extractValueOrRelationshipID.js +15 -16
  271. package/dist/views/List/extractValueOrRelationshipID.js.map +1 -1
  272. package/dist/views/List/handleGroupBy.js +150 -133
  273. package/dist/views/List/handleGroupBy.js.map +1 -1
  274. package/dist/views/List/handleServerFunction.js +122 -96
  275. package/dist/views/List/handleServerFunction.js.map +1 -1
  276. package/dist/views/List/index.d.ts.map +1 -1
  277. package/dist/views/List/index.js +328 -302
  278. package/dist/views/List/index.js.map +1 -1
  279. package/dist/views/List/metadata.js +20 -17
  280. package/dist/views/List/metadata.js.map +1 -1
  281. package/dist/views/List/renderListViewSlots.js +75 -82
  282. package/dist/views/List/renderListViewSlots.js.map +1 -1
  283. package/dist/views/List/resolveAllFilterOptions.js +45 -43
  284. package/dist/views/List/resolveAllFilterOptions.js.map +1 -1
  285. package/dist/views/List/transformColumnsToSelect.js +8 -9
  286. package/dist/views/List/transformColumnsToSelect.js.map +1 -1
  287. package/dist/views/Login/LoginField/index.js +89 -57
  288. package/dist/views/Login/LoginField/index.js.map +1 -1
  289. package/dist/views/Login/LoginForm/index.js +160 -107
  290. package/dist/views/Login/LoginForm/index.js.map +1 -1
  291. package/dist/views/Login/index.js +85 -82
  292. package/dist/views/Login/index.js.map +1 -1
  293. package/dist/views/Login/metadata.js +12 -8
  294. package/dist/views/Login/metadata.js.map +1 -1
  295. package/dist/views/Logout/LogoutClient.js +120 -84
  296. package/dist/views/Logout/LogoutClient.js.map +1 -1
  297. package/dist/views/Logout/index.js +29 -29
  298. package/dist/views/Logout/index.js.map +1 -1
  299. package/dist/views/Logout/metadata.js +11 -7
  300. package/dist/views/Logout/metadata.js.map +1 -1
  301. package/dist/views/NotFound/index.client.js +82 -71
  302. package/dist/views/NotFound/index.client.js.map +1 -1
  303. package/dist/views/NotFound/index.js +73 -72
  304. package/dist/views/NotFound/index.js.map +1 -1
  305. package/dist/views/NotFound/metadata.js +9 -7
  306. package/dist/views/NotFound/metadata.js.map +1 -1
  307. package/dist/views/ResetPassword/ResetPasswordForm/index.js +108 -97
  308. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  309. package/dist/views/ResetPassword/index.js +73 -93
  310. package/dist/views/ResetPassword/index.js.map +1 -1
  311. package/dist/views/ResetPassword/metadata.js +12 -8
  312. package/dist/views/ResetPassword/metadata.js.map +1 -1
  313. package/dist/views/Root/attachViewActions.js +23 -18
  314. package/dist/views/Root/attachViewActions.js.map +1 -1
  315. package/dist/views/Root/generateCustomViewMetadata.js +21 -19
  316. package/dist/views/Root/generateCustomViewMetadata.js.map +1 -1
  317. package/dist/views/Root/getCustomViewByKey.js +14 -12
  318. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  319. package/dist/views/Root/getCustomViewByRoute.js +42 -31
  320. package/dist/views/Root/getCustomViewByRoute.js.map +1 -1
  321. package/dist/views/Root/getDocumentViewInfo.js +23 -24
  322. package/dist/views/Root/getDocumentViewInfo.js.map +1 -1
  323. package/dist/views/Root/getRouteData.js +325 -333
  324. package/dist/views/Root/getRouteData.js.map +1 -1
  325. package/dist/views/Root/index.js +270 -248
  326. package/dist/views/Root/index.js.map +1 -1
  327. package/dist/views/Root/isPathMatchingRoute.js +26 -21
  328. package/dist/views/Root/isPathMatchingRoute.js.map +1 -1
  329. package/dist/views/Root/metadata.js +181 -176
  330. package/dist/views/Root/metadata.js.map +1 -1
  331. package/dist/views/Unauthorized/index.js +46 -54
  332. package/dist/views/Unauthorized/index.js.map +1 -1
  333. package/dist/views/Unauthorized/metadata.js +12 -8
  334. package/dist/views/Unauthorized/metadata.js.map +1 -1
  335. package/dist/views/Verify/index.client.js +43 -25
  336. package/dist/views/Verify/index.client.js.map +1 -1
  337. package/dist/views/Verify/index.js +64 -69
  338. package/dist/views/Verify/index.js.map +1 -1
  339. package/dist/views/Verify/metadata.js +12 -8
  340. package/dist/views/Verify/metadata.js.map +1 -1
  341. package/dist/views/Version/Default/SelectedLocalesContext.js +4 -4
  342. package/dist/views/Version/Default/SelectedLocalesContext.js.map +1 -1
  343. package/dist/views/Version/Default/SetStepNav.js +127 -86
  344. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  345. package/dist/views/Version/Default/index.js +236 -380
  346. package/dist/views/Version/Default/index.js.map +1 -1
  347. package/dist/views/Version/Default/types.js +1 -2
  348. package/dist/views/Version/Default/types.js.map +1 -1
  349. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +119 -102
  350. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  351. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js +73 -78
  352. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -1
  353. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +408 -363
  354. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  355. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +51 -40
  356. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  357. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.d.ts.map +1 -1
  358. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +71 -36
  359. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  360. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +56 -59
  361. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  362. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +117 -139
  363. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  364. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js +61 -56
  365. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js.map +1 -1
  366. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +206 -224
  367. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  368. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js +11 -17
  369. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js.map +1 -1
  370. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  371. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +75 -49
  372. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  373. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +146 -135
  374. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  375. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
  376. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +83 -57
  377. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  378. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +211 -252
  379. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
  380. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +22 -23
  381. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  382. package/dist/views/Version/RenderFieldsToDiff/index.js +9 -12
  383. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  384. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +228 -213
  385. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  386. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js +826 -1005
  387. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js.map +1 -1
  388. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js +1 -2
  389. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js.map +1 -1
  390. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js +43 -44
  391. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js.map +1 -1
  392. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +36 -32
  393. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
  394. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +129 -145
  395. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +1 -1
  396. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  397. package/dist/views/Version/Restore/index.js +92 -117
  398. package/dist/views/Version/Restore/index.js.map +1 -1
  399. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js +50 -33
  400. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
  401. package/dist/views/Version/SelectComparison/VersionDrawer/index.js +226 -170
  402. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  403. package/dist/views/Version/SelectComparison/index.js +50 -73
  404. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  405. package/dist/views/Version/SelectComparison/types.js +1 -2
  406. package/dist/views/Version/SelectComparison/types.js.map +1 -1
  407. package/dist/views/Version/SelectLocales/index.js +32 -34
  408. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  409. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js +100 -106
  410. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js.map +1 -1
  411. package/dist/views/Version/VersionPillLabel/getVersionLabel.js +35 -30
  412. package/dist/views/Version/VersionPillLabel/getVersionLabel.js.map +1 -1
  413. package/dist/views/Version/fetchVersions.js +138 -113
  414. package/dist/views/Version/fetchVersions.js.map +1 -1
  415. package/dist/views/Version/index.js +326 -328
  416. package/dist/views/Version/index.js.map +1 -1
  417. package/dist/views/Version/metadata.js +50 -43
  418. package/dist/views/Version/metadata.js.map +1 -1
  419. package/dist/views/Versions/buildColumns.js +79 -95
  420. package/dist/views/Versions/buildColumns.js.map +1 -1
  421. package/dist/views/Versions/cells/AutosaveCell/index.js +38 -34
  422. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  423. package/dist/views/Versions/cells/CreatedAt/index.js +53 -32
  424. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  425. package/dist/views/Versions/cells/ID/index.js +8 -10
  426. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  427. package/dist/views/Versions/index.client.js +83 -106
  428. package/dist/views/Versions/index.client.js.map +1 -1
  429. package/dist/views/Versions/index.js +164 -164
  430. package/dist/views/Versions/index.js.map +1 -1
  431. package/dist/views/Versions/metadata.js +44 -37
  432. package/dist/views/Versions/metadata.js.map +1 -1
  433. package/dist/views/Versions/types.js +1 -2
  434. package/dist/views/Versions/types.js.map +1 -1
  435. package/dist/withPayload/withPayload.js +177 -236
  436. package/dist/withPayload/withPayload.js.map +1 -1
  437. package/dist/withPayload/withPayload.spec.js +35 -36
  438. package/dist/withPayload/withPayload.spec.js.map +1 -1
  439. package/dist/withPayload/withPayload.utils.js +73 -65
  440. package/dist/withPayload/withPayload.utils.js.map +1 -1
  441. package/dist/withPayload/withPayloadLegacy.js +40 -41
  442. package/dist/withPayload/withPayloadLegacy.js.map +1 -1
  443. package/package.json +8 -8
  444. package/dist/elements/DocumentHeader/Tabs/Tab/index.scss +0 -38
  445. package/dist/elements/DocumentHeader/Tabs/index.scss +0 -54
  446. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.scss +0 -10
  447. package/dist/elements/DocumentHeader/index.scss +0 -64
  448. package/dist/elements/FormHeader/index.scss +0 -8
  449. package/dist/elements/Nav/NavWrapper/index.scss +0 -27
  450. package/dist/elements/Nav/SettingsMenuButton/index.scss +0 -11
  451. package/dist/elements/Nav/index.scss +0 -173
  452. package/dist/esbuildEntry.d.ts +0 -5
  453. package/dist/esbuildEntry.d.ts.map +0 -1
  454. package/dist/esbuildEntry.js +0 -6
  455. package/dist/esbuildEntry.js.map +0 -1
  456. package/dist/templates/Default/Wrapper/index.scss +0 -58
  457. package/dist/templates/Default/index.scss +0 -79
  458. package/dist/templates/Minimal/index.scss +0 -30
  459. package/dist/views/API/RenderJSON/index.scss +0 -129
  460. package/dist/views/API/index.scss +0 -119
  461. package/dist/views/Account/Settings/index.scss +0 -48
  462. package/dist/views/CreateFirstUser/index.scss +0 -21
  463. package/dist/views/Dashboard/Default/ModularDashboard/index.scss +0 -316
  464. package/dist/views/Login/LoginForm/index.scss +0 -10
  465. package/dist/views/Login/index.scss +0 -10
  466. package/dist/views/Logout/index.scss +0 -25
  467. package/dist/views/NotFound/index.scss +0 -57
  468. package/dist/views/ResetPassword/index.scss +0 -11
  469. package/dist/views/Unauthorized/index.scss +0 -14
  470. package/dist/views/Verify/index.scss +0 -16
  471. package/dist/views/Version/Default/index.scss +0 -170
  472. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.scss +0 -81
  473. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.scss +0 -12
  474. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.scss +0 -9
  475. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +0 -59
  476. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.scss +0 -91
  477. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.scss +0 -4
  478. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.scss +0 -9
  479. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.scss +0 -4
  480. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.scss +0 -121
  481. package/dist/views/Version/RenderFieldsToDiff/index.scss +0 -24
  482. package/dist/views/Version/Restore/index.scss +0 -84
  483. package/dist/views/Version/SelectComparison/VersionDrawer/index.scss +0 -18
  484. package/dist/views/Version/SelectComparison/index.scss +0 -9
  485. package/dist/views/Version/VersionPillLabel/index.scss +0 -26
  486. package/dist/views/Versions/cells/AutosaveCell/index.scss +0 -9
  487. package/dist/views/Versions/index.scss +0 -110
@@ -4,182 +4,182 @@ import { PREFERENCE_KEYS } from 'payload/shared';
4
4
  import React, { useCallback, useEffect, useState } from 'react';
5
5
  import { RenderWidget } from './renderWidget/RenderWidget.js';
6
6
  export function useDashboardLayout(initialLayout) {
7
- const setLayoutPreference = useSetLayoutPreference();
8
- const [isEditing, setIsEditing] = useState(false);
9
- const { widgets = [] } = useConfig().config.admin.dashboard ?? {};
10
- const [currentLayout, setCurrentLayout] = useState(initialLayout);
11
- const { openModal } = useModal();
12
- const cancelModalSlug = 'cancel-dashboard-changes';
13
- const { serverFunction } = useServerFunctions();
14
- // Sync state when initialLayout prop changes (e.g., when query params change and server component re-renders)
15
- useEffect(()=>{
16
- if (!isEditing) {
17
- setCurrentLayout(initialLayout);
18
- }
19
- }, [
20
- initialLayout,
21
- isEditing
22
- ]);
23
- const saveLayout = useCallback(async ()=>{
24
- try {
25
- const layoutData = currentLayout.map((item)=>item.item);
26
- setIsEditing(false);
27
- await setLayoutPreference(layoutData);
28
- } catch {
29
- setIsEditing(true);
30
- toast.error('Failed to save layout');
31
- }
32
- }, [
33
- setLayoutPreference,
34
- currentLayout
35
- ]);
36
- const resetLayout = useCallback(async ()=>{
37
- try {
38
- await setLayoutPreference(null);
39
- const result = await serverFunction({
40
- name: 'get-default-layout',
41
- args: {}
42
- });
43
- setCurrentLayout(result.layout);
44
- setIsEditing(false);
45
- } catch {
46
- toast.error('Failed to reset layout');
47
- }
48
- }, [
49
- setLayoutPreference,
50
- serverFunction
51
- ]);
52
- const performCancel = useCallback(()=>{
53
- setCurrentLayout(initialLayout);
54
- setIsEditing(false);
55
- }, [
56
- initialLayout
57
- ]);
58
- const cancel = useCallback(()=>{
59
- // Check if layout has changed
60
- const hasChanges = currentLayout.length !== initialLayout.length || currentLayout.some((widget, index)=>{
61
- const initialWidget = initialLayout[index];
62
- return !initialWidget || widget.item.id !== initialWidget.item.id || widget.item.width !== initialWidget.item.width;
63
- });
64
- // If there are changes, show confirmation modal
65
- if (hasChanges) {
66
- openModal(cancelModalSlug);
67
- } else {
68
- performCancel();
69
- }
70
- }, [
71
- currentLayout,
72
- initialLayout,
73
- openModal,
74
- cancelModalSlug,
75
- performCancel
76
- ]);
77
- const moveWidget = useCallback(({ moveFromIndex, moveToIndex })=>{
78
- if (moveFromIndex === moveToIndex || moveFromIndex < 0 || moveToIndex < 0) {
79
- return;
80
- }
81
- setCurrentLayout((prev)=>{
82
- return arrayMove(prev, moveFromIndex, moveToIndex);
83
- });
84
- }, []);
85
- const addWidget = useCallback((widgetSlug)=>{
86
- if (!isEditing) {
87
- return;
88
- }
89
- const widgetId = `${widgetSlug}-${Date.now()}`;
90
- const widget = widgets.find((widget)=>widget.slug === widgetSlug);
91
- // Create a new widget instance using RenderWidget
92
- const newWidgetInstance = {
93
- component: React.createElement(RenderWidget, {
94
- widgetId
95
- }),
96
- // TODO: widgetData can be added here for custom props
97
- item: {
98
- id: widgetId,
99
- maxWidth: widget?.maxWidth ?? 'full',
100
- minWidth: widget?.minWidth ?? 'x-small',
101
- width: widget?.minWidth ?? 'x-small'
102
- }
103
- };
104
- setCurrentLayout((prev)=>[
105
- ...prev,
106
- newWidgetInstance
107
- ]);
108
- // Scroll to the newly added widget after it's rendered and highlight it
109
- setTimeout(()=>{
110
- const element = document.getElementById(widgetId);
111
- if (element) {
112
- element.scrollIntoView({
113
- behavior: 'smooth',
114
- block: 'center'
115
- });
116
- // Add highlight animation to the widget element
117
- const widget = element.closest('.widget');
118
- if (widget) {
119
- widget.classList.add('widget--highlight');
120
- // Remove the class after animation completes (1.5s fade out)
121
- setTimeout(()=>{
122
- widget.classList.remove('widget--highlight');
123
- }, 1500);
124
- }
125
- }
126
- }, 100);
127
- }, [
128
- isEditing,
129
- widgets
130
- ]);
131
- const deleteWidget = useCallback((widgetId)=>{
132
- if (!isEditing) {
133
- return;
134
- }
135
- setCurrentLayout((prev)=>prev.filter((item)=>item.item.id !== widgetId));
136
- }, [
137
- isEditing
138
- ]);
139
- const resizeWidget = useCallback((widgetId, newWidth)=>{
140
- if (!isEditing) {
141
- return;
142
- }
143
- setCurrentLayout((prev)=>prev.map((item)=>item.item.id === widgetId ? {
144
- ...item,
145
- item: {
146
- ...item.item,
147
- width: newWidth
148
- }
149
- } : item));
150
- }, [
151
- isEditing
152
- ]);
153
- const cancelModal = React.createElement(ConfirmationModal, {
154
- body: 'You have unsaved changes to your dashboard layout. Are you sure you want to discard them?',
155
- confirmLabel: 'Discard',
156
- heading: 'Discard changes?',
157
- modalSlug: cancelModalSlug,
158
- onConfirm: performCancel
7
+ const setLayoutPreference = useSetLayoutPreference();
8
+ const [isEditing, setIsEditing] = useState(false);
9
+ const {
10
+ widgets = []
11
+ } = useConfig().config.admin.dashboard ?? {};
12
+ const [currentLayout, setCurrentLayout] = useState(initialLayout);
13
+ const {
14
+ openModal
15
+ } = useModal();
16
+ const cancelModalSlug = 'cancel-dashboard-changes';
17
+ const {
18
+ serverFunction
19
+ } = useServerFunctions();
20
+ // Sync state when initialLayout prop changes (e.g., when query params change and server component re-renders)
21
+ useEffect(() => {
22
+ if (!isEditing) {
23
+ setCurrentLayout(initialLayout);
24
+ }
25
+ // do not sync while editing. Depending on `isEditing` in this effect causes an
26
+ // unintended rollback when toggling from editing -> view mode after save.
27
+ }, [initialLayout]);
28
+ const saveLayout = useCallback(async () => {
29
+ try {
30
+ const layoutData = currentLayout.map(item => item.item);
31
+ setIsEditing(false);
32
+ await setLayoutPreference(layoutData);
33
+ } catch {
34
+ setIsEditing(true);
35
+ toast.error('Failed to save layout');
36
+ }
37
+ }, [setLayoutPreference, currentLayout]);
38
+ const resetLayout = useCallback(async () => {
39
+ try {
40
+ await setLayoutPreference(null);
41
+ const result = await serverFunction({
42
+ name: 'get-default-layout',
43
+ args: {}
44
+ });
45
+ setCurrentLayout(result.layout);
46
+ setIsEditing(false);
47
+ } catch {
48
+ toast.error('Failed to reset layout');
49
+ }
50
+ }, [setLayoutPreference, serverFunction]);
51
+ const performCancel = useCallback(() => {
52
+ setCurrentLayout(initialLayout);
53
+ setIsEditing(false);
54
+ }, [initialLayout]);
55
+ const cancel = useCallback(() => {
56
+ // Check if layout has changed
57
+ const hasChanges = currentLayout.length !== initialLayout.length || currentLayout.some((widget, index) => {
58
+ const initialWidget = initialLayout[index];
59
+ return !initialWidget || widget.item.id !== initialWidget.item.id || widget.item.width !== initialWidget.item.width || JSON.stringify(widget.item.data || {}) !== JSON.stringify(initialWidget.item.data || {});
159
60
  });
160
- return {
161
- addWidget,
162
- cancel,
163
- cancelModal,
164
- currentLayout,
165
- deleteWidget,
166
- isEditing,
167
- moveWidget,
168
- resetLayout,
169
- resizeWidget,
170
- saveLayout,
171
- setIsEditing
61
+ // If there are changes, show confirmation modal
62
+ if (hasChanges) {
63
+ openModal(cancelModalSlug);
64
+ } else {
65
+ performCancel();
66
+ }
67
+ }, [currentLayout, initialLayout, openModal, cancelModalSlug, performCancel]);
68
+ const moveWidget = useCallback(({
69
+ moveFromIndex,
70
+ moveToIndex
71
+ }) => {
72
+ if (moveFromIndex === moveToIndex || moveFromIndex < 0 || moveToIndex < 0) {
73
+ return;
74
+ }
75
+ setCurrentLayout(prev => {
76
+ return arrayMove(prev, moveFromIndex, moveToIndex);
77
+ });
78
+ }, []);
79
+ const addWidget = useCallback(widgetSlug => {
80
+ if (!isEditing) {
81
+ return;
82
+ }
83
+ const widgetId = `${widgetSlug}-${Date.now()}`;
84
+ const widget = widgets.find(widget => widget.slug === widgetSlug);
85
+ // Create a new widget instance using RenderWidget
86
+ const newWidgetInstance = {
87
+ component: React.createElement(RenderWidget, {
88
+ widgetData: {},
89
+ widgetId
90
+ }),
91
+ item: {
92
+ id: widgetId,
93
+ data: {},
94
+ maxWidth: widget?.maxWidth ?? 'full',
95
+ minWidth: widget?.minWidth ?? 'x-small',
96
+ width: widget?.minWidth ?? 'x-small'
97
+ }
172
98
  };
99
+ setCurrentLayout(prev => [...prev, newWidgetInstance]);
100
+ // Scroll to the newly added widget after it's rendered and highlight it
101
+ setTimeout(() => {
102
+ const element = document.getElementById(widgetId);
103
+ if (element) {
104
+ element.scrollIntoView({
105
+ behavior: 'smooth',
106
+ block: 'center'
107
+ });
108
+ // Add highlight animation to the widget element
109
+ const widget = element.closest('.widget');
110
+ if (widget) {
111
+ widget.classList.add('widget--highlight');
112
+ // Remove the class after animation completes (1.5s fade out)
113
+ setTimeout(() => {
114
+ widget.classList.remove('widget--highlight');
115
+ }, 1500);
116
+ }
117
+ }
118
+ }, 100);
119
+ }, [isEditing, widgets]);
120
+ const deleteWidget = useCallback(widgetId => {
121
+ if (!isEditing) {
122
+ return;
123
+ }
124
+ setCurrentLayout(prev => prev.filter(item => item.item.id !== widgetId));
125
+ }, [isEditing]);
126
+ const resizeWidget = useCallback((widgetId, newWidth) => {
127
+ if (!isEditing) {
128
+ return;
129
+ }
130
+ setCurrentLayout(prev => prev.map(item => item.item.id === widgetId ? {
131
+ ...item,
132
+ item: {
133
+ ...item.item,
134
+ width: newWidth
135
+ }
136
+ } : item));
137
+ }, [isEditing]);
138
+ const updateWidgetData = useCallback((widgetId, data) => {
139
+ if (!isEditing) {
140
+ return;
141
+ }
142
+ setCurrentLayout(prev => prev.map(item => item.item.id === widgetId ? {
143
+ component: React.createElement(RenderWidget, {
144
+ widgetData: data,
145
+ widgetId
146
+ }),
147
+ item: {
148
+ ...item.item,
149
+ data
150
+ }
151
+ } : item));
152
+ }, [isEditing]);
153
+ const cancelModal = React.createElement(ConfirmationModal, {
154
+ body: 'You have unsaved changes to your dashboard layout. Are you sure you want to discard them?',
155
+ confirmLabel: 'Discard',
156
+ heading: 'Discard changes?',
157
+ modalSlug: cancelModalSlug,
158
+ onConfirm: performCancel
159
+ });
160
+ return {
161
+ addWidget,
162
+ cancel,
163
+ cancelModal,
164
+ currentLayout,
165
+ deleteWidget,
166
+ isEditing,
167
+ moveWidget,
168
+ resetLayout,
169
+ resizeWidget,
170
+ saveLayout,
171
+ setIsEditing,
172
+ updateWidgetData
173
+ };
173
174
  }
174
175
  function useSetLayoutPreference() {
175
- const { setPreference } = usePreferences();
176
- return useCallback(async (layout)=>{
177
- await setPreference(PREFERENCE_KEYS.DASHBOARD_LAYOUT, {
178
- layouts: layout
179
- }, false);
180
- }, [
181
- setPreference
182
- ]);
176
+ const {
177
+ setPreference
178
+ } = usePreferences();
179
+ return useCallback(async layout => {
180
+ await setPreference(PREFERENCE_KEYS.DASHBOARD_LAYOUT, {
181
+ layouts: layout
182
+ }, false);
183
+ }, [setPreference]);
183
184
  }
184
-
185
185
  //# sourceMappingURL=useDashboardLayout.js.map
@@ -1 +1 @@
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 { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { useCallback, useEffect, 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 // Sync state when initialLayout prop changes (e.g., when query params change and server component re-renders)\n useEffect(() => {\n if (!isEditing) {\n setCurrentLayout(initialLayout)\n }\n }, [initialLayout, isEditing])\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(PREFERENCE_KEYS.DASHBOARD_LAYOUT, { layouts: layout }, false)\n },\n [setPreference],\n )\n}\n"],"names":["arrayMove","ConfirmationModal","toast","useConfig","useModal","usePreferences","useServerFunctions","PREFERENCE_KEYS","React","useCallback","useEffect","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","DASHBOARD_LAYOUT","layouts"],"mappings":"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"}
1
+ {"version":3,"file":"useDashboardLayout.js","names":["arrayMove","ConfirmationModal","toast","useConfig","useModal","usePreferences","useServerFunctions","PREFERENCE_KEYS","React","useCallback","useEffect","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","JSON","stringify","data","moveWidget","moveFromIndex","moveToIndex","prev","addWidget","widgetSlug","widgetId","Date","now","find","slug","newWidgetInstance","component","createElement","widgetData","maxWidth","minWidth","setTimeout","element","document","getElementById","scrollIntoView","behavior","block","closest","classList","add","remove","deleteWidget","filter","resizeWidget","newWidth","updateWidgetData","cancelModal","body","confirmLabel","heading","modalSlug","onConfirm","setPreference","DASHBOARD_LAYOUT","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 { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { useCallback, useEffect, 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 // Sync state when initialLayout prop changes (e.g., when query params change and server component re-renders)\n useEffect(() => {\n if (!isEditing) {\n setCurrentLayout(initialLayout)\n }\n // do not sync while editing. Depending on `isEditing` in this effect causes an\n // unintended rollback when toggling from editing -> view mode after save.\n }, [initialLayout])\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 JSON.stringify(widget.item.data || {}) !== JSON.stringify(initialWidget.item.data || {})\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 widgetData: {},\n widgetId,\n }),\n item: {\n id: widgetId,\n data: {},\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 updateWidgetData = useCallback(\n (widgetId: string, data: Record<string, unknown>) => {\n if (!isEditing) {\n return\n }\n\n setCurrentLayout((prev) =>\n prev.map((item) =>\n item.item.id === widgetId\n ? {\n component: React.createElement(RenderWidget, {\n widgetData: data,\n widgetId,\n }),\n item: {\n ...item.item,\n data,\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 updateWidgetData,\n }\n}\n\nfunction useSetLayoutPreference() {\n const { setPreference } = usePreferences()\n return useCallback(\n async (layout: null | WidgetItem[]) => {\n await setPreference(PREFERENCE_KEYS.DASHBOARD_LAYOUT, { layouts: layout }, false)\n },\n [setPreference],\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,39 +1,38 @@
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 [];
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;
18
23
  }
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
- });
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
34
32
  }
33
+ });
35
34
  }
36
- return collisions.sort((a, b)=>a.data.value - b.data.value);
35
+ }
36
+ return collisions.sort((a, b) => a.data.value - b.data.value);
37
37
  };
38
-
39
38
  //# sourceMappingURL=collisionDetection.js.map
@@ -1 +1 @@
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"}
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":[]}
@@ -0,0 +1,4 @@
1
+ import type { DashboardConfig, PayloadRequest, Widget } from 'payload';
2
+ import type { WidgetItem } from '../index.client.js';
3
+ export declare function getItemsFromConfig(defaultLayout: NonNullable<DashboardConfig['defaultLayout']>, req: PayloadRequest, widgets: Pick<Widget, 'maxWidth' | 'minWidth' | 'slug'>[]): Promise<WidgetItem[]>;
4
+ //# sourceMappingURL=getItemsFromConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getItemsFromConfig.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/utils/getItemsFromConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAkB,MAAM,SAAS,CAAA;AAEtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,EAC5D,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC,EAAE,GACxD,OAAO,CAAC,UAAU,EAAE,CAAC,CAkBvB"}
@@ -0,0 +1,21 @@
1
+ export async function getItemsFromConfig(defaultLayout, req, widgets) {
2
+ let widgetInstances;
3
+ if (typeof defaultLayout === 'function') {
4
+ widgetInstances = await defaultLayout({
5
+ req
6
+ });
7
+ } else {
8
+ widgetInstances = defaultLayout;
9
+ }
10
+ return widgetInstances.map((widgetInstance, index) => {
11
+ const widget = widgets.find(w => w.slug === widgetInstance.widgetSlug);
12
+ return {
13
+ id: `${widgetInstance.widgetSlug}-${index}`,
14
+ data: widgetInstance.data,
15
+ maxWidth: widget?.maxWidth ?? 'full',
16
+ minWidth: widget?.minWidth ?? 'x-small',
17
+ width: widgetInstance.width || 'x-small'
18
+ };
19
+ });
20
+ }
21
+ //# sourceMappingURL=getItemsFromConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getItemsFromConfig.js","names":["getItemsFromConfig","defaultLayout","req","widgets","widgetInstances","map","widgetInstance","index","widget","find","w","slug","widgetSlug","id","data","maxWidth","minWidth","width"],"sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/utils/getItemsFromConfig.ts"],"sourcesContent":["import type { DashboardConfig, PayloadRequest, Widget, WidgetInstance } from 'payload'\n\nimport type { WidgetItem } from '../index.client.js'\n\nexport async function getItemsFromConfig(\n defaultLayout: NonNullable<DashboardConfig['defaultLayout']>,\n req: PayloadRequest,\n widgets: Pick<Widget, 'maxWidth' | 'minWidth' | 'slug'>[],\n): Promise<WidgetItem[]> {\n let widgetInstances: WidgetInstance[]\n if (typeof defaultLayout === 'function') {\n widgetInstances = await defaultLayout({ req })\n } else {\n widgetInstances = defaultLayout\n }\n\n return widgetInstances.map((widgetInstance, index) => {\n const widget = widgets.find((w) => w.slug === widgetInstance.widgetSlug)\n return {\n id: `${widgetInstance.widgetSlug}-${index}`,\n data: widgetInstance.data,\n maxWidth: widget?.maxWidth ?? 'full',\n minWidth: widget?.minWidth ?? 'x-small',\n width: widgetInstance.width || 'x-small',\n }\n })\n}\n"],"mappings":"AAIA,OAAO,eAAeA,mBACpBC,aAA4D,EAC5DC,GAAmB,EACnBC,OAAyD;EAEzD,IAAIC,eAAA;EACJ,IAAI,OAAOH,aAAA,KAAkB,YAAY;IACvCG,eAAA,GAAkB,MAAMH,aAAA,CAAc;MAAEC;IAAI;EAC9C,OAAO;IACLE,eAAA,GAAkBH,aAAA;EACpB;EAEA,OAAOG,eAAA,CAAgBC,GAAG,CAAC,CAACC,cAAA,EAAgBC,KAAA;IAC1C,MAAMC,MAAA,GAASL,OAAA,CAAQM,IAAI,CAAEC,CAAA,IAAMA,CAAA,CAAEC,IAAI,KAAKL,cAAA,CAAeM,UAAU;IACvE,OAAO;MACLC,EAAA,EAAI,GAAGP,cAAA,CAAeM,UAAU,IAAIL,KAAA,EAAO;MAC3CO,IAAA,EAAMR,cAAA,CAAeQ,IAAI;MACzBC,QAAA,EAAUP,MAAA,EAAQO,QAAA,IAAY;MAC9BC,QAAA,EAAUR,MAAA,EAAQQ,QAAA,IAAY;MAC9BC,KAAA,EAAOX,cAAA,CAAeW,KAAK,IAAI;IACjC;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import type { BasePayload, TypedUser } from 'payload';
2
+ import type { WidgetItem } from '../index.client.js';
3
+ export declare function getItemsFromPreferences(payload: BasePayload, user: TypedUser): Promise<null | WidgetItem[]>;
4
+ //# sourceMappingURL=getItemsFromPreferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getItemsFromPreferences.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAIrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAIpD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC,CAe9B"}
@@ -0,0 +1,10 @@
1
+ import { PREFERENCE_KEYS } from 'payload/shared';
2
+ import { getPreferences } from '../../../../../utilities/getPreferences.js';
3
+ export async function getItemsFromPreferences(payload, user) {
4
+ const savedPreferences = await getPreferences(PREFERENCE_KEYS.DASHBOARD_LAYOUT, payload, user.id, user.collection);
5
+ if (!savedPreferences?.value || typeof savedPreferences.value !== 'object' || !('layouts' in savedPreferences.value)) {
6
+ return null;
7
+ }
8
+ return savedPreferences.value.layouts;
9
+ }
10
+ //# sourceMappingURL=getItemsFromPreferences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getItemsFromPreferences.js","names":["PREFERENCE_KEYS","getPreferences","getItemsFromPreferences","payload","user","savedPreferences","DASHBOARD_LAYOUT","id","collection","value","layouts"],"sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.ts"],"sourcesContent":["import type { BasePayload, TypedUser } from 'payload'\n\nimport { PREFERENCE_KEYS } from 'payload/shared'\n\nimport type { WidgetItem } from '../index.client.js'\n\nimport { getPreferences } from '../../../../../utilities/getPreferences.js'\n\nexport async function getItemsFromPreferences(\n payload: BasePayload,\n user: TypedUser,\n): Promise<null | WidgetItem[]> {\n const savedPreferences = await getPreferences(\n PREFERENCE_KEYS.DASHBOARD_LAYOUT,\n payload,\n user.id,\n user.collection,\n )\n if (\n !savedPreferences?.value ||\n typeof savedPreferences.value !== 'object' ||\n !('layouts' in savedPreferences.value)\n ) {\n return null\n }\n return savedPreferences.value.layouts as null | WidgetItem[]\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ;AAIhC,SAASC,cAAc,QAAQ;AAE/B,OAAO,eAAeC,wBACpBC,OAAoB,EACpBC,IAAe;EAEf,MAAMC,gBAAA,GAAmB,MAAMJ,cAAA,CAC7BD,eAAA,CAAgBM,gBAAgB,EAChCH,OAAA,EACAC,IAAA,CAAKG,EAAE,EACPH,IAAA,CAAKI,UAAU;EAEjB,IACE,CAACH,gBAAA,EAAkBI,KAAA,IACnB,OAAOJ,gBAAA,CAAiBI,KAAK,KAAK,YAClC,EAAE,aAAaJ,gBAAA,CAAiBI,KAAK,CAAD,EACpC;IACA,OAAO;EACT;EACA,OAAOJ,gBAAA,CAAiBI,KAAK,CAACC,OAAO;AACvC","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ import type { ClientField, Field } from 'payload';
2
+ type AnyField = ClientField | Field;
3
+ /**
4
+ * Extracts locale-specific data from widget data stored in preferences.
5
+ *
6
+ * Localized fields are stored as `{ fieldName: { en: "Hello", de: "Hallo" } }` in preferences.
7
+ * This function flattens them to `{ fieldName: "Hello" }` for the given locale,
8
+ * which is the format the form state builder expects.
9
+ *
10
+ * Recursively handles nested field types (group, row, collapsible, tabs).
11
+ */
12
+ export declare function extractLocaleData(widgetData: Record<string, unknown>, locale: string, fields: readonly AnyField[]): Record<string, unknown>;
13
+ /**
14
+ * Merges locale-specific form data back into the full widget data structure.
15
+ *
16
+ * Non-localized fields are stored directly. Localized fields are stored as
17
+ * `{ fieldName: { en: "Hello", de: "Hallo" } }` so each locale's value is preserved independently.
18
+ *
19
+ * Recursively handles nested field types (group, row, collapsible, tabs).
20
+ */
21
+ export declare function mergeLocaleData(existingData: Record<string, unknown>, formData: Record<string, unknown>, locale: string, fields: readonly AnyField[]): Record<string, unknown>;
22
+ export {};
23
+ //# sourceMappingURL=localeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localeUtils.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/utils/localeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIjD,KAAK,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAA;AAYnC;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,QAAQ,EAAE,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmDzB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,QAAQ,EAAE,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkDzB"}