@payloadcms/ui 4.0.0-internal.e55ccef → 4.0.0-internal.f11981a

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 (361) hide show
  1. package/dist/css/app.css +121 -0
  2. package/dist/css/forms.css +0 -6
  3. package/dist/css/spacing.css +11 -3
  4. package/dist/css/z-index.css +1 -0
  5. package/dist/elements/AddNewRelation/index.css +0 -1
  6. package/dist/elements/AppHeader/index.css +0 -3
  7. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  8. package/dist/elements/AppHeader/index.js +5 -1
  9. package/dist/elements/AppHeader/index.js.map +1 -1
  10. package/dist/elements/ArrayAction/index.d.ts +2 -0
  11. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  12. package/dist/elements/ArrayAction/index.js +65 -24
  13. package/dist/elements/ArrayAction/index.js.map +1 -1
  14. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
  15. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  16. package/dist/elements/BulkUpload/FileSidebar/index.css +4 -0
  17. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
  18. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  19. package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
  20. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  21. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  22. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  23. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  24. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
  25. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
  26. package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
  27. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
  28. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
  29. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
  30. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  31. package/dist/elements/ClipboardAction/index.js +17 -1
  32. package/dist/elements/ClipboardAction/index.js.map +1 -1
  33. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
  34. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
  35. package/dist/elements/ClipboardAction/types.d.ts +3 -0
  36. package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
  37. package/dist/elements/ClipboardAction/types.js.map +1 -1
  38. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
  39. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
  40. package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
  41. package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
  42. package/dist/elements/CodeEditor/index.css +0 -5
  43. package/dist/elements/CommandPalette/index.css +0 -7
  44. package/dist/elements/CopyToClipboard/index.d.ts +1 -0
  45. package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
  46. package/dist/elements/CopyToClipboard/index.js +10 -8
  47. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  48. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  49. package/dist/elements/CreateDocumentButton/index.js +4 -1
  50. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  51. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  52. package/dist/elements/DatePicker/DatePicker.js +1 -0
  53. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  54. package/dist/elements/DatePicker/index.css +1 -1
  55. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  56. package/dist/elements/DeleteDocument/index.js +16 -1
  57. package/dist/elements/DeleteDocument/index.js.map +1 -1
  58. package/dist/elements/EditMany/DrawerContent.js +2 -2
  59. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  60. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  61. package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
  62. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  63. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
  64. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
  65. package/dist/elements/FileDetails/StaticFileDetails/index.css +8 -9
  66. package/dist/elements/FileManager/FilePreview/index.css +3 -3
  67. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -1
  68. package/dist/elements/FileManager/FileToolbar/index.js +3 -0
  69. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -1
  70. package/dist/elements/FileManager/index.css +36 -23
  71. package/dist/elements/FileManager/index.d.ts +1 -1
  72. package/dist/elements/FileManager/index.d.ts.map +1 -1
  73. package/dist/elements/FileManager/index.js +15 -4
  74. package/dist/elements/FileManager/index.js.map +1 -1
  75. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +0 -1
  76. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  77. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
  78. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  79. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  80. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
  81. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  82. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +0 -1
  83. package/dist/elements/InputStepper/index.css +0 -1
  84. package/dist/elements/Locked/index.css +0 -8
  85. package/dist/elements/Locked/index.d.ts.map +1 -1
  86. package/dist/elements/Locked/index.js +70 -64
  87. package/dist/elements/Locked/index.js.map +1 -1
  88. package/dist/elements/MiniCarousel/index.css +39 -37
  89. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  90. package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
  91. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  92. package/dist/elements/Nav/SidebarTabs/index.css +0 -5
  93. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
  94. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
  95. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
  96. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
  97. package/dist/elements/NavGroup/index.css +0 -1
  98. package/dist/elements/PreviewButton/index.d.ts +1 -2
  99. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  100. package/dist/elements/PreviewButton/index.js +11 -5
  101. package/dist/elements/PreviewButton/index.js.map +1 -1
  102. package/dist/elements/PreviewSizes/index.css +8 -9
  103. package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
  104. package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
  105. package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
  106. package/dist/elements/ReactSelect/index.css +0 -3
  107. package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
  108. package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
  109. package/dist/elements/RelationshipTable/Pagination.js +27 -77
  110. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  111. package/dist/elements/RelationshipTable/index.css +0 -2
  112. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  113. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  114. package/dist/elements/RelationshipTable/index.js +36 -3
  115. package/dist/elements/RelationshipTable/index.js.map +1 -1
  116. package/dist/elements/RenderTitle/index.css +4 -0
  117. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  118. package/dist/elements/RenderTitle/index.js +18 -13
  119. package/dist/elements/RenderTitle/index.js.map +1 -1
  120. package/dist/elements/SelectRow/index.d.ts +4 -3
  121. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  122. package/dist/elements/SelectRow/index.js +10 -7
  123. package/dist/elements/SelectRow/index.js.map +1 -1
  124. package/dist/elements/SidebarToggle/index.css +0 -17
  125. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  126. package/dist/elements/SortColumn/index.js +42 -38
  127. package/dist/elements/SortColumn/index.js.map +1 -1
  128. package/dist/elements/Table/OrderableRow.d.ts +3 -1
  129. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  130. package/dist/elements/Table/OrderableRow.js +17 -1
  131. package/dist/elements/Table/OrderableRow.js.map +1 -1
  132. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  133. package/dist/elements/Table/OrderableTable.js +19 -2
  134. package/dist/elements/Table/OrderableTable.js.map +1 -1
  135. package/dist/elements/Table/index.css +1 -0
  136. package/dist/elements/TableSection/index.css +0 -1
  137. package/dist/elements/Thumbnail/index.d.ts +1 -1
  138. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  139. package/dist/elements/Thumbnail/index.js.map +1 -1
  140. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  141. package/dist/elements/TimezonePicker/index.js +5 -1
  142. package/dist/elements/TimezonePicker/index.js.map +1 -1
  143. package/dist/elements/Tooltip/index.css +15 -34
  144. package/dist/elements/Tooltip/index.d.ts +11 -3
  145. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  146. package/dist/elements/Tooltip/index.js +151 -85
  147. package/dist/elements/Tooltip/index.js.map +1 -1
  148. package/dist/elements/Upload/index.css +0 -5
  149. package/dist/exports/client/index.d.ts +5 -1
  150. package/dist/exports/client/index.d.ts.map +1 -1
  151. package/dist/exports/client/index.js +1 -1
  152. package/dist/exports/client/index.js.map +3 -3
  153. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  154. package/dist/fields/Array/ArrayRow.js +97 -160
  155. package/dist/fields/Array/ArrayRow.js.map +1 -1
  156. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  157. package/dist/fields/Blocks/BlockRow.js +134 -195
  158. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  159. package/dist/fields/Blocks/RowActions.d.ts +2 -0
  160. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  161. package/dist/fields/Blocks/RowActions.js +23 -20
  162. package/dist/fields/Blocks/RowActions.js.map +1 -1
  163. package/dist/fields/Blocks/index.js +3 -3
  164. package/dist/fields/Blocks/index.js.map +1 -1
  165. package/dist/fields/Checkbox/Input.d.ts +2 -0
  166. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  167. package/dist/fields/Checkbox/Input.js +32 -26
  168. package/dist/fields/Checkbox/Input.js.map +1 -1
  169. package/dist/fields/Checkbox/index.css +37 -73
  170. package/dist/fields/FieldError/index.css +0 -9
  171. package/dist/fields/FieldError/index.d.ts.map +1 -1
  172. package/dist/fields/FieldError/index.js +19 -9
  173. package/dist/fields/FieldError/index.js.map +1 -1
  174. package/dist/fields/Join/index.css +9 -0
  175. package/dist/fields/Join/index.d.ts.map +1 -1
  176. package/dist/fields/Join/index.js +13 -9
  177. package/dist/fields/Join/index.js.map +1 -1
  178. package/dist/fields/RadioGroup/index.css +0 -7
  179. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  180. package/dist/fields/Relationship/Input.js +32 -14
  181. package/dist/fields/Relationship/Input.js.map +1 -1
  182. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
  183. package/dist/fields/Slug/index.css +0 -1
  184. package/dist/fields/Slug/index.d.ts.map +1 -1
  185. package/dist/fields/Slug/index.js +75 -111
  186. package/dist/fields/Slug/index.js.map +1 -1
  187. package/dist/fields/Upload/index.css +19 -4
  188. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  189. package/dist/forms/Form/fieldReducer.js +3 -1
  190. package/dist/forms/Form/fieldReducer.js.map +1 -1
  191. package/dist/forms/Form/index.d.ts.map +1 -1
  192. package/dist/forms/Form/index.js +12 -15
  193. package/dist/forms/Form/index.js.map +1 -1
  194. package/dist/forms/Form/types.d.ts +1 -1
  195. package/dist/forms/Form/types.d.ts.map +1 -1
  196. package/dist/forms/Form/types.js.map +1 -1
  197. package/dist/forms/RenderFields/index.css +16 -2
  198. package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
  199. package/dist/forms/WatchChildErrors/index.js +2 -2
  200. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  201. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
  202. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  203. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  204. package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
  205. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  206. package/dist/layouts/Root/index.d.ts +1 -1
  207. package/dist/layouts/Root/index.d.ts.map +1 -1
  208. package/dist/layouts/Root/index.js +8 -2
  209. package/dist/layouts/Root/index.js.map +1 -1
  210. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  211. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  212. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  213. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  214. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  215. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  216. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  217. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  218. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  219. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  220. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  221. package/dist/providers/Auth/authSessionRequests.js +119 -0
  222. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  223. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  224. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  225. package/dist/providers/Auth/index.d.ts +2 -56
  226. package/dist/providers/Auth/index.d.ts.map +1 -1
  227. package/dist/providers/Auth/index.js +283 -135
  228. package/dist/providers/Auth/index.js.map +1 -1
  229. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  230. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  231. package/dist/providers/Auth/sessionActivity.js +49 -0
  232. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  233. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  234. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  235. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  236. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  237. package/dist/providers/Auth/sessionTiming.js +18 -0
  238. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  239. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  240. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  241. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  242. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  243. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  244. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  245. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  246. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  247. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  248. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  249. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  250. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  251. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  252. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  253. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  254. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  255. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  256. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  257. package/dist/providers/Auth/types.d.ts +66 -0
  258. package/dist/providers/Auth/types.d.ts.map +1 -0
  259. package/dist/providers/Auth/types.js +2 -0
  260. package/dist/providers/Auth/types.js.map +1 -0
  261. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  262. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  263. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  264. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  265. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  266. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  267. package/dist/providers/DocumentTitle/index.d.ts +1 -0
  268. package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
  269. package/dist/providers/DocumentTitle/index.js +2 -0
  270. package/dist/providers/DocumentTitle/index.js.map +1 -1
  271. package/dist/providers/Embed/index.d.ts +24 -0
  272. package/dist/providers/Embed/index.d.ts.map +1 -0
  273. package/dist/providers/Embed/index.js +105 -0
  274. package/dist/providers/Embed/index.js.map +1 -0
  275. package/dist/providers/FormErrorHandler/index.d.ts +24 -0
  276. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
  277. package/dist/providers/FormErrorHandler/index.js +6 -0
  278. package/dist/providers/FormErrorHandler/index.js.map +1 -0
  279. package/dist/providers/Root/index.d.ts +1 -0
  280. package/dist/providers/Root/index.d.ts.map +1 -1
  281. package/dist/providers/Root/index.js +37 -31
  282. package/dist/providers/Root/index.js.map +1 -1
  283. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  284. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  285. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  286. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  287. package/dist/providers/RouteTransition/index.d.ts +2 -0
  288. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  289. package/dist/providers/RouteTransition/index.js +42 -14
  290. package/dist/providers/RouteTransition/index.js.map +1 -1
  291. package/dist/providers/SidebarTabs/index.d.ts +3 -2
  292. package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
  293. package/dist/providers/SidebarTabs/index.js.map +1 -1
  294. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  295. package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
  296. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  297. package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
  298. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
  299. package/dist/providers/Theme/index.d.ts +3 -0
  300. package/dist/providers/Theme/index.d.ts.map +1 -1
  301. package/dist/providers/Theme/index.js +107 -95
  302. package/dist/providers/Theme/index.js.map +1 -1
  303. package/dist/providers/UploadHandlers/index.d.ts +2 -7
  304. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  305. package/dist/providers/UploadHandlers/index.js +102 -42
  306. package/dist/providers/UploadHandlers/index.js.map +1 -1
  307. package/dist/styles.css +13 -10
  308. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  309. package/dist/utilities/combineFieldLabel.js +5 -1
  310. package/dist/utilities/combineFieldLabel.js.map +1 -1
  311. package/dist/utilities/generateFieldID.d.ts +1 -1
  312. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  313. package/dist/utilities/generateFieldID.js +2 -2
  314. package/dist/utilities/generateFieldID.js.map +1 -1
  315. package/dist/utilities/getRequestEmbed.d.ts +14 -0
  316. package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
  317. package/dist/utilities/getRequestEmbed.js +10 -0
  318. package/dist/utilities/getRequestEmbed.js.map +1 -0
  319. package/dist/utilities/handleServerFunctions.d.ts +32 -8
  320. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  321. package/dist/utilities/handleServerFunctions.js +17 -37
  322. package/dist/utilities/handleServerFunctions.js.map +1 -1
  323. package/dist/utilities/renderTable.d.ts.map +1 -1
  324. package/dist/utilities/renderTable.js +18 -2
  325. package/dist/utilities/renderTable.js.map +1 -1
  326. package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
  327. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  328. package/dist/utilities/serverFunctionRegistry.js +25 -7
  329. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  330. package/dist/utilities/slugify.d.ts.map +1 -1
  331. package/dist/utilities/slugify.js +49 -6
  332. package/dist/utilities/slugify.js.map +1 -1
  333. package/dist/views/Dashboard/Default/ModularDashboard/index.css +0 -8
  334. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
  335. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  336. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
  337. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  338. package/dist/views/Edit/index.css +61 -53
  339. package/dist/views/HierarchyList/index.css +1 -1
  340. package/dist/views/List/index.css +1 -1
  341. package/dist/views/List/index.d.ts.map +1 -1
  342. package/dist/views/List/index.js +4 -0
  343. package/dist/views/List/index.js.map +1 -1
  344. package/dist/views/Logout/index.d.ts.map +1 -1
  345. package/dist/views/Logout/index.js +11 -0
  346. package/dist/views/Logout/index.js.map +1 -1
  347. package/dist/views/Root/index.d.ts +12 -1
  348. package/dist/views/Root/index.d.ts.map +1 -1
  349. package/dist/views/Root/index.js +10 -3
  350. package/dist/views/Root/index.js.map +1 -1
  351. package/package.json +6 -11
  352. package/dist/elements/RelationshipTable/Pagination.css +0 -39
  353. package/dist/scss/app.scss +0 -183
  354. package/dist/scss/colors.scss +0 -191
  355. package/dist/scss/custom.css +0 -1
  356. package/dist/scss/queries.scss +0 -27
  357. package/dist/scss/styles.scss +0 -9
  358. package/dist/scss/svg.scss +0 -10
  359. package/dist/scss/toastify.scss +0 -61
  360. package/dist/scss/vars.scss +0 -192
  361. package/dist/scss/z-index.scss +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchySidebarTab.js","names":["c","_c","formatAdminURL","React","useCallback","useEffect","useRef","useState","useConfig","useHierarchy","useRouter","useSearchParams","useRouteTransition","useSidebarTabs","HydrateHierarchyProvider","HierarchySearch","HierarchyTree","HierarchySidebarTab","t0","$","baseFilter","collectionSpecificOptions","hierarchyCollectionSlug","icon","initialData","initialExpandedNodes","initialSelectedFilters","parentFieldName","selectedNodeId","selectedNodeIdFromServer","treeLimit","typeFieldName","useAsTitle","router","searchParams","startRouteTransition","config","t1","routes","t2","admin","adminRoute","isSearchActive","setIsSearchActive","t3","selectedFilters","setSelectedFiltersLocal","setSelectedFilters","setSelectedFiltersContext","treeRefreshKeys","sidebarTabs","tabSlug","t4","get","treeRefreshKey","prevTreeRefreshKeyRef","t5","t6","current","reloadTabContent","t7","activeTabSlug","parentParam","isActiveTab","undefined","baseFilterKey","JSON","stringify","t8","filters","handleFilterChange","t9","t10","id","queryParam","url","path","push","refresh","handleNavigateToParent","_jsxs","_Fragment","children","_jsx","collectionSlug","expandedNodes","treeData","className","isActive","onActiveChange","onFilterChange","onSelect","filterByCollections","length","onNodeClick"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.tsx"],"sourcesContent":["'use client'\n\nimport type { SidebarTabClientProps } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { HierarchyInitialData } from './types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouter, useSearchParams } from '../../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../../providers/RouteTransition/index.js'\nimport { useSidebarTabs } from '../../../providers/SidebarTabs/index.js'\nimport { HydrateHierarchyProvider } from '../HydrateProvider/index.js'\nimport { HierarchySearch } from '../Search/index.js'\nimport { HierarchyTree } from './index.js'\n\nexport const HierarchySidebarTab: React.FC<\n {\n baseFilter?: Record<string, unknown>\n collectionSpecificOptions?: { label: string; value: string }[]\n hierarchyCollectionSlug: string\n icon?: React.ReactNode\n initialData?: HierarchyInitialData | null\n initialExpandedNodes?: (number | string)[]\n initialSelectedFilters?: string[]\n parentFieldName?: string\n selectedNodeId?: null | string\n treeLimit?: number\n typeFieldName?: string\n useAsTitle?: string\n } & SidebarTabClientProps\n> = ({\n baseFilter,\n collectionSpecificOptions,\n hierarchyCollectionSlug,\n icon,\n initialData,\n initialExpandedNodes,\n initialSelectedFilters,\n parentFieldName,\n selectedNodeId: selectedNodeIdFromServer,\n treeLimit,\n typeFieldName,\n useAsTitle,\n}) => {\n const router = useRouter()\n const searchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const [isSearchActive, setIsSearchActive] = useState(false)\n const [selectedFilters, setSelectedFiltersLocal] = useState<string[]>(\n initialSelectedFilters ?? [],\n )\n const { setSelectedFilters: setSelectedFiltersContext, treeRefreshKeys } = useHierarchy()\n const sidebarTabs = useSidebarTabs()\n\n // When refreshTree(slug) is called from the list view (e.g. after mutations), reload this tab.\n // Always reload regardless of active state so inactive tabs are fresh when switched to.\n const tabSlug = `hierarchy-${hierarchyCollectionSlug}`\n const treeRefreshKey = treeRefreshKeys.get(hierarchyCollectionSlug) ?? 0\n const prevTreeRefreshKeyRef = useRef(treeRefreshKey)\n useEffect(() => {\n if (prevTreeRefreshKeyRef.current !== treeRefreshKey) {\n prevTreeRefreshKeyRef.current = treeRefreshKey\n sidebarTabs?.reloadTabContent(tabSlug)\n }\n }, [treeRefreshKey, sidebarTabs, tabSlug])\n\n // Only highlight selected node when this tab is active\n const parentParam = searchParams.get(parentFieldName ?? 'parent')\n const isActiveTab = sidebarTabs?.activeTabSlug === tabSlug\n const selectedNodeId = isActiveTab\n ? (parentParam ?? selectedNodeIdFromServer ?? undefined)\n : undefined\n\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n\n const handleFilterChange = useCallback(\n (filters: string[]) => {\n setSelectedFiltersLocal(filters)\n setSelectedFiltersContext(filters)\n },\n [setSelectedFiltersContext],\n )\n\n const handleNavigateToParent = useCallback(\n ({ id }: { id: number | string }) => {\n const queryParam = parentFieldName ?? 'parent'\n const url = formatAdminURL({\n adminRoute,\n path: `/collections/${hierarchyCollectionSlug}/hierarchy?${queryParam}=${id}`,\n })\n startRouteTransition(() => {\n router.push(url)\n router.refresh()\n })\n },\n [adminRoute, hierarchyCollectionSlug, parentFieldName, router, startRouteTransition],\n )\n return (\n <>\n <HydrateHierarchyProvider\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n expandedNodes={initialExpandedNodes}\n parentFieldName={parentFieldName}\n selectedFilters={initialSelectedFilters}\n treeData={initialData}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n />\n <div className=\"hierarchy-sidebar-tab\">\n <HierarchySearch\n collectionSlug={hierarchyCollectionSlug}\n collectionSpecificOptions={collectionSpecificOptions}\n isActive={isSearchActive}\n onActiveChange={setIsSearchActive}\n onFilterChange={handleFilterChange}\n onSelect={handleNavigateToParent}\n selectedFilters={selectedFilters}\n />\n {!isSearchActive && (\n <HierarchyTree\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n filterByCollections={selectedFilters.length > 0 ? selectedFilters : undefined}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n key={`${hierarchyCollectionSlug}-${baseFilterKey}`}\n onNodeClick={handleNavigateToParent}\n selectedNodeId={selectedNodeId}\n useAsTitle={useAsTitle}\n />\n )}\n </div>\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"HierarchySidebarTab.js","names":["c","_c","formatAdminURL","React","useCallback","useEffect","useRef","useState","useConfig","useHierarchy","useRouter","useSearchParams","useRouteTransition","useSidebarTabs","HydrateHierarchyProvider","HierarchySearch","HierarchyTree","HierarchySidebarTab","t0","$","baseFilter","collectionSpecificOptions","hierarchyCollectionSlug","icon","initialData","initialExpandedNodes","initialSelectedFilters","parentFieldName","selectedNodeId","selectedNodeIdFromServer","treeLimit","typeFieldName","useAsTitle","router","searchParams","startRouteTransition","config","t1","routes","t2","admin","adminRoute","isSearchActive","setIsSearchActive","t3","selectedFilters","setSelectedFiltersLocal","setSelectedFilters","setSelectedFiltersContext","treeRefreshKeys","sidebarTabs","resolvedParentFieldName","t4","get","currentParentParam","tabSlug","isActiveTab","activeTabSlug","t5","treeRefreshKey","prevTreeRefreshKeyRef","t6","t7","current","reloadTabContent","undefined","t8","JSON","stringify","baseFilterKey","t9","filters","handleFilterChange","t10","t11","id","url","path","push","refresh","handleNavigateToParent","_jsxs","_Fragment","children","_jsx","collectionSlug","expandedNodes","treeData","className","isActive","onActiveChange","onFilterChange","onSelect","filterByCollections","length","onNodeClick"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.tsx"],"sourcesContent":["'use client'\n\nimport type { SidebarTabClientProps } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { HierarchyInitialData } from './types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouter, useSearchParams } from '../../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../../providers/RouteTransition/index.js'\nimport { useSidebarTabs } from '../../../providers/SidebarTabs/index.js'\nimport { HydrateHierarchyProvider } from '../HydrateProvider/index.js'\nimport { HierarchySearch } from '../Search/index.js'\nimport { HierarchyTree } from './index.js'\n\nexport const HierarchySidebarTab: React.FC<\n {\n baseFilter?: Record<string, unknown>\n collectionSpecificOptions?: { label: string; value: string }[]\n hierarchyCollectionSlug: string\n icon?: React.ReactNode\n initialData?: HierarchyInitialData | null\n initialExpandedNodes?: (number | string)[]\n initialSelectedFilters?: string[]\n parentFieldName?: string\n selectedNodeId?: null | string\n treeLimit?: number\n typeFieldName?: string\n useAsTitle?: string\n } & SidebarTabClientProps\n> = ({\n baseFilter,\n collectionSpecificOptions,\n hierarchyCollectionSlug,\n icon,\n initialData,\n initialExpandedNodes,\n initialSelectedFilters,\n parentFieldName,\n selectedNodeId: selectedNodeIdFromServer,\n treeLimit,\n typeFieldName,\n useAsTitle,\n}) => {\n const router = useRouter()\n const searchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const [isSearchActive, setIsSearchActive] = useState(false)\n const [selectedFilters, setSelectedFiltersLocal] = useState<string[]>(\n initialSelectedFilters ?? [],\n )\n const { setSelectedFilters: setSelectedFiltersContext, treeRefreshKeys } = useHierarchy()\n const sidebarTabs = useSidebarTabs()\n\n const resolvedParentFieldName = parentFieldName ?? 'parent'\n const currentParentParam = searchParams.get(resolvedParentFieldName)\n\n // When refreshTree(slug) is called from the list view (e.g. after mutations), reload this tab.\n // Always reload regardless of active state so inactive tabs are fresh when switched to.\n // The render-tab server function runs with a fresh request that lacks the client's URL query,\n // so forward the current selected parent id — otherwise the reload can't tell which node is\n // being viewed and rebuilds the tree from preference state.\n const tabSlug = `hierarchy-${hierarchyCollectionSlug}`\n const isActiveTab = sidebarTabs?.activeTabSlug === tabSlug\n const treeRefreshKey = treeRefreshKeys.get(hierarchyCollectionSlug) ?? 0\n const prevTreeRefreshKeyRef = useRef(treeRefreshKey)\n useEffect(() => {\n if (prevTreeRefreshKeyRef.current !== treeRefreshKey) {\n prevTreeRefreshKeyRef.current = treeRefreshKey\n // Only forward the selected parent id when this tab is active. currentParentParam\n // reflects the global URL search params, so an inactive tab could otherwise pick up\n // another hierarchy collection's value if they share the same parentFieldName.\n sidebarTabs?.reloadTabContent(tabSlug, {\n searchParams:\n isActiveTab && currentParentParam\n ? { [resolvedParentFieldName]: currentParentParam }\n : undefined,\n })\n }\n }, [\n treeRefreshKey,\n sidebarTabs,\n tabSlug,\n isActiveTab,\n currentParentParam,\n resolvedParentFieldName,\n ])\n\n // Only highlight selected node when this tab is active\n const selectedNodeId = isActiveTab\n ? (currentParentParam ?? selectedNodeIdFromServer ?? undefined)\n : undefined\n\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n\n const handleFilterChange = useCallback(\n (filters: string[]) => {\n setSelectedFiltersLocal(filters)\n setSelectedFiltersContext(filters)\n },\n [setSelectedFiltersContext],\n )\n\n const handleNavigateToParent = useCallback(\n ({ id }: { id: number | string }) => {\n const url = formatAdminURL({\n adminRoute,\n path: `/collections/${hierarchyCollectionSlug}/hierarchy?${resolvedParentFieldName}=${id}`,\n })\n startRouteTransition(() => {\n router.push(url)\n router.refresh()\n })\n },\n [adminRoute, hierarchyCollectionSlug, resolvedParentFieldName, router, startRouteTransition],\n )\n return (\n <>\n <HydrateHierarchyProvider\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n expandedNodes={initialExpandedNodes}\n parentFieldName={parentFieldName}\n selectedFilters={initialSelectedFilters}\n treeData={initialData}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n />\n <div className=\"hierarchy-sidebar-tab\">\n <HierarchySearch\n collectionSlug={hierarchyCollectionSlug}\n collectionSpecificOptions={collectionSpecificOptions}\n isActive={isSearchActive}\n onActiveChange={setIsSearchActive}\n onFilterChange={handleFilterChange}\n onSelect={handleNavigateToParent}\n selectedFilters={selectedFilters}\n />\n {!isSearchActive && (\n <HierarchyTree\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n filterByCollections={selectedFilters.length > 0 ? selectedFilters : undefined}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n key={`${hierarchyCollectionSlug}-${baseFilterKey}`}\n onNodeClick={handleNavigateToParent}\n selectedNodeId={selectedNodeId}\n useAsTitle={useAsTitle}\n />\n )}\n </div>\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchySidebarTab.server.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAS,MAAM,SAAS,CAAA;AAK3D,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,MAAM,8BAA8B,GAAG;IAC3C,uBAAuB,EAAE,MAAM,CAAA;CAChC,GAAG,qBAAqB,CAAA;AAEzB,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CA6L9E,CAAA"}
1
+ {"version":3,"file":"HierarchySidebarTab.server.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAS,MAAM,SAAS,CAAA;AAK3D,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,MAAM,8BAA8B,GAAG;IAC3C,uBAAuB,EAAE,MAAM,CAAA;CAChC,GAAG,qBAAqB,CAAA;AAEzB,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CA+L9E,CAAA"}
@@ -131,6 +131,8 @@ export const HierarchySidebarTabServer = async ({
131
131
  // Merge ancestor IDs with existing expanded nodes
132
132
  const expandedSet = new Set(initialExpandedNodes);
133
133
  ancestorIds.forEach(id => expandedSet.add(id));
134
+ // Include the selected node itself so its own children are loaded.
135
+ expandedSet.add(selectedNodeId);
134
136
  initialExpandedNodes = Array.from(expandedSet);
135
137
  }
136
138
  const baseFilterFn = collectionConfig?.admin?.baseFilter ?? collectionConfig?.admin?.baseListFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchySidebarTab.server.js","names":["getTranslation","DEFAULT_HIERARCHY_TREE_LIMIT","getInitialTreeData","PREFERENCE_KEYS","React","HierarchySidebarTab","TagIcon","RenderServerComponent","HierarchySidebarTabServer","hierarchyCollectionSlug","i18n","payload","req","searchParams","user","initialData","initialExpandedNodes","initialSelectedFilters","selectedNodeId","parentFieldName","treeLimit","typeFieldName","useAsTitle","collectionSpecificOptions","baseFilter","collectionConfig","collections","config","hierarchyConfig","hierarchy","undefined","IconComponent","admin","components","SmallIcon","icon","clientProps","size","Component","importMap","key","_jsx","selectedNodeParam","String","preferenceKey","HIERARCHY_TREE","docs","preferenceDocs","find","collection","limit","overrideAccess","where","and","equals","id","preferences","value","expandedNodes","selectedFilters","collectionSpecific","fieldName","relatedCollections","Object","keys","map","slug","relatedConfig","label","labels","plural","sort","a","b","localeCompare","selectedNodeParentId","ancestorIds","currentNodeId","isFirstIteration","node","findByID","depth","parentId","push","expandedSet","Set","forEach","add","Array","from","baseFilterFn","baseListFilter","page","collectionSlug","expandedNodeIds","length","filterByCollections","error","logger","warn","err","msg"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.server.tsx"],"sourcesContent":["import type { SidebarTabServerProps, Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { DEFAULT_HIERARCHY_TREE_LIMIT, getInitialTreeData } from 'payload'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React from 'react'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { HierarchySidebarTab } from '../../../exports/client/index.js'\nimport { TagIcon } from '../../../icons/Tag/index.js'\nimport { RenderServerComponent } from '../../RenderServerComponent/index.js'\n\nexport type HierarchySidebarTabServerProps = {\n hierarchyCollectionSlug: string\n} & SidebarTabServerProps\n\nexport const HierarchySidebarTabServer: React.FC<HierarchySidebarTabServerProps> = async ({\n hierarchyCollectionSlug,\n i18n,\n payload,\n req,\n searchParams,\n user,\n}) => {\n if (!user) {\n return null\n }\n\n let initialData = null\n let initialExpandedNodes: (number | string)[] = []\n let initialSelectedFilters: string[] = []\n let selectedNodeId: null | string = null\n let parentFieldName = 'parent'\n let treeLimit: number | undefined\n let typeFieldName: string | undefined\n let useAsTitle: string | undefined\n let collectionSpecificOptions: { label: string; value: string }[] = []\n let baseFilter: null | Where = null\n\n // Get collection config and render icon (outside try block - doesn't need async)\n const collectionConfig = payload.collections[hierarchyCollectionSlug]?.config\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n\n const IconComponent = hierarchyConfig?.admin?.components?.SmallIcon\n const icon = IconComponent ? (\n RenderServerComponent({\n clientProps: { size: 16 },\n Component: IconComponent,\n importMap: payload.importMap,\n key: `hierarchy-sidebar-icon-${hierarchyCollectionSlug}`,\n })\n ) : (\n <TagIcon size={16} />\n )\n\n try {\n // Get parentFieldName from config first (needed for URL parsing)\n parentFieldName = hierarchyConfig?.parentFieldName ?? 'parent'\n\n // Get selected node from URL (?<parentFieldName>=<id>)\n const selectedNodeParam = searchParams?.[parentFieldName]\n selectedNodeId = selectedNodeParam ? String(selectedNodeParam) : null\n\n // STEP 1: Load user's expanded node preferences\n const preferenceKey = `${PREFERENCE_KEYS.HIERARCHY_TREE}-${hierarchyCollectionSlug}`\n\n const { docs: preferenceDocs } = await payload.find({\n collection: 'payload-preferences',\n limit: 1,\n overrideAccess: false,\n user,\n where: {\n and: [\n { key: { equals: preferenceKey } },\n { 'user.value': { equals: user.id } },\n { 'user.relationTo': { equals: user.collection } },\n ],\n },\n })\n\n const preferences = preferenceDocs[0]\n\n if (preferences?.value?.expandedNodes) {\n initialExpandedNodes = preferences.value.expandedNodes\n }\n\n if (preferences?.value?.selectedFilters) {\n initialSelectedFilters = preferences.value.selectedFilters\n }\n\n // STEP 2: Get remaining config values\n treeLimit = hierarchyConfig?.admin?.treeLimit\n typeFieldName =\n hierarchyConfig?.collectionSpecific && typeof hierarchyConfig.collectionSpecific === 'object'\n ? hierarchyConfig.collectionSpecific.fieldName\n : undefined\n useAsTitle = collectionConfig?.admin?.useAsTitle\n\n // STEP 2.5: Build collection-specific options from related collections\n if (hierarchyConfig.collectionSpecific && hierarchyConfig?.relatedCollections) {\n collectionSpecificOptions = Object.keys(hierarchyConfig.relatedCollections)\n .map((slug) => {\n const relatedConfig = payload.collections[slug]?.config\n const label = relatedConfig?.labels?.plural ?? slug\n\n return {\n label: getTranslation(label, i18n),\n value: slug,\n }\n })\n .sort((a, b) => a.label.localeCompare(b.label))\n }\n\n // Track the immediate parent of the selected node (for ensuring siblings are loaded)\n let selectedNodeParentId: null | number | string = null\n\n // If there's a selected node, ensure its ancestor chain is expanded\n if (selectedNodeId) {\n // Walk up the parent chain to root\n const ancestorIds: (number | string)[] = []\n let currentNodeId: null | number | string = selectedNodeId\n let isFirstIteration = true\n\n while (currentNodeId) {\n try {\n const node = await payload.findByID({\n id: currentNodeId,\n collection: hierarchyCollectionSlug,\n depth: 0,\n overrideAccess: false,\n user,\n })\n\n const parentId = node?.[parentFieldName]\n\n // Capture the immediate parent of the selected node\n if (isFirstIteration) {\n selectedNodeParentId = parentId ?? null\n isFirstIteration = false\n }\n\n if (parentId) {\n ancestorIds.push(parentId)\n currentNodeId = parentId\n } else {\n currentNodeId = null\n }\n } catch {\n // Node not found or access denied\n break\n }\n }\n\n // Merge ancestor IDs with existing expanded nodes\n const expandedSet = new Set(initialExpandedNodes)\n ancestorIds.forEach((id) => expandedSet.add(id))\n initialExpandedNodes = Array.from(expandedSet)\n }\n\n const baseFilterFn =\n collectionConfig?.admin?.baseFilter ?? collectionConfig?.admin?.baseListFilter\n if (baseFilterFn && req) {\n baseFilter =\n (await baseFilterFn({ limit: DEFAULT_HIERARCHY_TREE_LIMIT, page: 1, req, sort: 'id' })) ??\n null\n }\n\n initialData = await getInitialTreeData({\n baseFilter,\n collectionSlug: hierarchyCollectionSlug,\n expandedNodeIds: initialExpandedNodes,\n ...(initialSelectedFilters.length > 0 && { filterByCollections: initialSelectedFilters }),\n ...(treeLimit !== undefined && { limit: treeLimit }),\n payload,\n selectedNodeId,\n selectedNodeParentId,\n user: req.user,\n })\n } catch (error) {\n payload.logger.warn({\n err: error,\n msg: `Failed to fetch hierarchy data for ${hierarchyCollectionSlug}`,\n })\n // Fall back to client-side fetching if server fetch fails\n }\n\n return (\n <HierarchySidebarTab\n baseFilter={baseFilter}\n collectionSpecificOptions={collectionSpecificOptions}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n initialSelectedFilters={initialSelectedFilters}\n parentFieldName={parentFieldName}\n selectedNodeId={selectedNodeId}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"HierarchySidebarTab.server.js","names":["getTranslation","DEFAULT_HIERARCHY_TREE_LIMIT","getInitialTreeData","PREFERENCE_KEYS","React","HierarchySidebarTab","TagIcon","RenderServerComponent","HierarchySidebarTabServer","hierarchyCollectionSlug","i18n","payload","req","searchParams","user","initialData","initialExpandedNodes","initialSelectedFilters","selectedNodeId","parentFieldName","treeLimit","typeFieldName","useAsTitle","collectionSpecificOptions","baseFilter","collectionConfig","collections","config","hierarchyConfig","hierarchy","undefined","IconComponent","admin","components","SmallIcon","icon","clientProps","size","Component","importMap","key","_jsx","selectedNodeParam","String","preferenceKey","HIERARCHY_TREE","docs","preferenceDocs","find","collection","limit","overrideAccess","where","and","equals","id","preferences","value","expandedNodes","selectedFilters","collectionSpecific","fieldName","relatedCollections","Object","keys","map","slug","relatedConfig","label","labels","plural","sort","a","b","localeCompare","selectedNodeParentId","ancestorIds","currentNodeId","isFirstIteration","node","findByID","depth","parentId","push","expandedSet","Set","forEach","add","Array","from","baseFilterFn","baseListFilter","page","collectionSlug","expandedNodeIds","length","filterByCollections","error","logger","warn","err","msg"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.server.tsx"],"sourcesContent":["import type { SidebarTabServerProps, Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { DEFAULT_HIERARCHY_TREE_LIMIT, getInitialTreeData } from 'payload'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React from 'react'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { HierarchySidebarTab } from '../../../exports/client/index.js'\nimport { TagIcon } from '../../../icons/Tag/index.js'\nimport { RenderServerComponent } from '../../RenderServerComponent/index.js'\n\nexport type HierarchySidebarTabServerProps = {\n hierarchyCollectionSlug: string\n} & SidebarTabServerProps\n\nexport const HierarchySidebarTabServer: React.FC<HierarchySidebarTabServerProps> = async ({\n hierarchyCollectionSlug,\n i18n,\n payload,\n req,\n searchParams,\n user,\n}) => {\n if (!user) {\n return null\n }\n\n let initialData = null\n let initialExpandedNodes: (number | string)[] = []\n let initialSelectedFilters: string[] = []\n let selectedNodeId: null | string = null\n let parentFieldName = 'parent'\n let treeLimit: number | undefined\n let typeFieldName: string | undefined\n let useAsTitle: string | undefined\n let collectionSpecificOptions: { label: string; value: string }[] = []\n let baseFilter: null | Where = null\n\n // Get collection config and render icon (outside try block - doesn't need async)\n const collectionConfig = payload.collections[hierarchyCollectionSlug]?.config\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n\n const IconComponent = hierarchyConfig?.admin?.components?.SmallIcon\n const icon = IconComponent ? (\n RenderServerComponent({\n clientProps: { size: 16 },\n Component: IconComponent,\n importMap: payload.importMap,\n key: `hierarchy-sidebar-icon-${hierarchyCollectionSlug}`,\n })\n ) : (\n <TagIcon size={16} />\n )\n\n try {\n // Get parentFieldName from config first (needed for URL parsing)\n parentFieldName = hierarchyConfig?.parentFieldName ?? 'parent'\n\n // Get selected node from URL (?<parentFieldName>=<id>)\n const selectedNodeParam = searchParams?.[parentFieldName]\n selectedNodeId = selectedNodeParam ? String(selectedNodeParam) : null\n\n // STEP 1: Load user's expanded node preferences\n const preferenceKey = `${PREFERENCE_KEYS.HIERARCHY_TREE}-${hierarchyCollectionSlug}`\n\n const { docs: preferenceDocs } = await payload.find({\n collection: 'payload-preferences',\n limit: 1,\n overrideAccess: false,\n user,\n where: {\n and: [\n { key: { equals: preferenceKey } },\n { 'user.value': { equals: user.id } },\n { 'user.relationTo': { equals: user.collection } },\n ],\n },\n })\n\n const preferences = preferenceDocs[0]\n\n if (preferences?.value?.expandedNodes) {\n initialExpandedNodes = preferences.value.expandedNodes\n }\n\n if (preferences?.value?.selectedFilters) {\n initialSelectedFilters = preferences.value.selectedFilters\n }\n\n // STEP 2: Get remaining config values\n treeLimit = hierarchyConfig?.admin?.treeLimit\n typeFieldName =\n hierarchyConfig?.collectionSpecific && typeof hierarchyConfig.collectionSpecific === 'object'\n ? hierarchyConfig.collectionSpecific.fieldName\n : undefined\n useAsTitle = collectionConfig?.admin?.useAsTitle\n\n // STEP 2.5: Build collection-specific options from related collections\n if (hierarchyConfig.collectionSpecific && hierarchyConfig?.relatedCollections) {\n collectionSpecificOptions = Object.keys(hierarchyConfig.relatedCollections)\n .map((slug) => {\n const relatedConfig = payload.collections[slug]?.config\n const label = relatedConfig?.labels?.plural ?? slug\n\n return {\n label: getTranslation(label, i18n),\n value: slug,\n }\n })\n .sort((a, b) => a.label.localeCompare(b.label))\n }\n\n // Track the immediate parent of the selected node (for ensuring siblings are loaded)\n let selectedNodeParentId: null | number | string = null\n\n // If there's a selected node, ensure its ancestor chain is expanded\n if (selectedNodeId) {\n // Walk up the parent chain to root\n const ancestorIds: (number | string)[] = []\n let currentNodeId: null | number | string = selectedNodeId\n let isFirstIteration = true\n\n while (currentNodeId) {\n try {\n const node = await payload.findByID({\n id: currentNodeId,\n collection: hierarchyCollectionSlug,\n depth: 0,\n overrideAccess: false,\n user,\n })\n\n const parentId = node?.[parentFieldName]\n\n // Capture the immediate parent of the selected node\n if (isFirstIteration) {\n selectedNodeParentId = parentId ?? null\n isFirstIteration = false\n }\n\n if (parentId) {\n ancestorIds.push(parentId)\n currentNodeId = parentId\n } else {\n currentNodeId = null\n }\n } catch {\n // Node not found or access denied\n break\n }\n }\n\n // Merge ancestor IDs with existing expanded nodes\n const expandedSet = new Set(initialExpandedNodes)\n ancestorIds.forEach((id) => expandedSet.add(id))\n // Include the selected node itself so its own children are loaded.\n expandedSet.add(selectedNodeId)\n initialExpandedNodes = Array.from(expandedSet)\n }\n\n const baseFilterFn =\n collectionConfig?.admin?.baseFilter ?? collectionConfig?.admin?.baseListFilter\n if (baseFilterFn && req) {\n baseFilter =\n (await baseFilterFn({ limit: DEFAULT_HIERARCHY_TREE_LIMIT, page: 1, req, sort: 'id' })) ??\n null\n }\n\n initialData = await getInitialTreeData({\n baseFilter,\n collectionSlug: hierarchyCollectionSlug,\n expandedNodeIds: initialExpandedNodes,\n ...(initialSelectedFilters.length > 0 && { filterByCollections: initialSelectedFilters }),\n ...(treeLimit !== undefined && { limit: treeLimit }),\n payload,\n selectedNodeId,\n selectedNodeParentId,\n user: req.user,\n })\n } catch (error) {\n payload.logger.warn({\n err: error,\n msg: `Failed to fetch hierarchy data for ${hierarchyCollectionSlug}`,\n })\n // Fall back to client-side fetching if server fetch fails\n }\n\n return (\n <HierarchySidebarTab\n baseFilter={baseFilter}\n collectionSpecificOptions={collectionSpecificOptions}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n initialSelectedFilters={initialSelectedFilters}\n parentFieldName={parentFieldName}\n selectedNodeId={selectedNodeId}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -29,7 +29,6 @@
29
29
  .tree-node__content {
30
30
  display: flex;
31
31
  align-items: center;
32
- transition: background-color 100ms ease;
33
32
  font-size: var(--tree-font-size);
34
33
  line-height: var(--tree-node-content-height);
35
34
  }
@@ -20,7 +20,6 @@
20
20
  background: transparent;
21
21
  color: var(--color-icon-secondary);
22
22
  cursor: pointer;
23
- transition: color 100ms;
24
23
 
25
24
  &:hover:not(:disabled) {
26
25
  color: var(--color-icon);
@@ -25,12 +25,4 @@
25
25
  outline-color: var(--color-border-selected);
26
26
  }
27
27
  }
28
-
29
- /* Fixed-position anchor mirroring the icon's rect, so the portaled tooltip (escaping
30
- * the table's `overflow` clipping) can position against it. */
31
- .locked__tooltip-anchor {
32
- position: fixed;
33
- z-index: var(--z-popup);
34
- pointer-events: none;
35
- }
36
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Locked/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC,OAAO,KAAmD,MAAM,OAAO,CAAA;AAOvE,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,IAAI,CAAA;CACX,CA+EA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Locked/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC,OAAO,KAAmB,MAAM,OAAO,CAAA;AAMvC,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,IAAI,CAAA;CACX,CAkCA,CAAA"}
@@ -1,83 +1,89 @@
1
1
  'use client';
2
2
 
3
+ import { c as _c } from "react/compiler-runtime";
3
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import React, { useCallback, useEffect, useRef, useState } from 'react';
5
- import { createPortal } from 'react-dom';
5
+ import React, { useState } from 'react';
6
6
  import { LockIcon } from '../../icons/Lock/index.js';
7
7
  import { useTranslation } from '../../providers/Translation/index.js';
8
8
  import { isClientUserObject } from '../../utilities/isClientUserObject.js';
9
9
  import { Tooltip } from '../Tooltip/index.js';
10
10
  import './index.css';
11
11
  const baseClass = 'locked';
12
- export const Locked = ({
13
- className,
14
- user
15
- }) => {
16
- const anchorRef = useRef(null);
12
+ export const Locked = t0 => {
13
+ const $ = _c(10);
14
+ const {
15
+ className,
16
+ user
17
+ } = t0;
17
18
  const [hovered, setHovered] = useState(false);
18
- const [anchorRect, setAnchorRect] = useState(null);
19
19
  const {
20
20
  t
21
21
  } = useTranslation();
22
- const userToUse = isClientUserObject(user) ? user.email ?? user.id : t('general:anotherUser');
23
- const tooltipLabel = `${userToUse} ${t('general:isEditing')}`;
24
- const updateAnchorRect = useCallback(() => {
25
- const node = anchorRef.current;
26
- if (!node) {
27
- return;
28
- }
29
- setAnchorRect(node.getBoundingClientRect());
30
- }, []);
31
- useEffect(() => {
32
- if (!hovered) {
33
- return;
34
- }
35
- // Keep the portaled tooltip aligned to the icon as the page or an overflow
36
- // container scrolls.
37
- window.addEventListener('scroll', updateAnchorRect, true);
38
- window.addEventListener('resize', updateAnchorRect);
39
- return () => {
40
- window.removeEventListener('scroll', updateAnchorRect, true);
41
- window.removeEventListener('resize', updateAnchorRect);
42
- };
43
- }, [hovered, updateAnchorRect]);
44
- return /*#__PURE__*/_jsxs("div", {
45
- "aria-label": tooltipLabel,
46
- className: [baseClass, className].filter(Boolean).join(' '),
47
- onBlur: () => setHovered(false),
48
- onFocus: () => {
49
- updateAnchorRect();
50
- setHovered(true);
51
- },
52
- onKeyDown: e => {
53
- if (e.key === ' ') {
54
- e.preventDefault(); // prevent page scroll when focused
55
- }
56
- },
57
- onMouseEnter: () => {
58
- updateAnchorRect();
59
- setHovered(true);
60
- },
61
- onMouseLeave: () => setHovered(false),
62
- ref: anchorRef,
63
- role: "button",
64
- tabIndex: 0,
65
- children: [/*#__PURE__*/_jsx(LockIcon, {}), hovered && anchorRect && /*#__PURE__*/createPortal(/*#__PURE__*/_jsx("div", {
66
- className: `${baseClass}__tooltip-anchor`,
67
- style: {
68
- height: anchorRect.height,
69
- left: anchorRect.left,
70
- top: anchorRect.top,
71
- width: anchorRect.width
72
- },
73
- children: /*#__PURE__*/_jsx(Tooltip, {
22
+ const userToUse = isClientUserObject(user) ? user.email ?? user.id : t("general:anotherUser");
23
+ const tooltipLabel = `${userToUse} ${t("general:isEditing")}`;
24
+ let t1;
25
+ if ($[0] !== className) {
26
+ t1 = [baseClass, className].filter(Boolean);
27
+ $[0] = className;
28
+ $[1] = t1;
29
+ } else {
30
+ t1 = $[1];
31
+ }
32
+ const t2 = t1.join(" ");
33
+ let t3;
34
+ let t4;
35
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
36
+ t3 = () => setHovered(false);
37
+ t4 = () => setHovered(true);
38
+ $[2] = t3;
39
+ $[3] = t4;
40
+ } else {
41
+ t3 = $[2];
42
+ t4 = $[3];
43
+ }
44
+ let t5;
45
+ let t6;
46
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
47
+ t5 = () => setHovered(true);
48
+ t6 = () => setHovered(false);
49
+ $[4] = t5;
50
+ $[5] = t6;
51
+ } else {
52
+ t5 = $[4];
53
+ t6 = $[5];
54
+ }
55
+ let t7;
56
+ if ($[6] !== hovered || $[7] !== t2 || $[8] !== tooltipLabel) {
57
+ t7 = _jsxs("div", {
58
+ "aria-label": tooltipLabel,
59
+ className: t2,
60
+ onBlur: t3,
61
+ onFocus: t4,
62
+ onKeyDown: _temp,
63
+ onMouseEnter: t5,
64
+ onMouseLeave: t6,
65
+ role: "button",
66
+ tabIndex: 0,
67
+ children: [_jsx(LockIcon, {}), _jsx(Tooltip, {
74
68
  alignCaret: "center",
75
69
  className: `${baseClass}__tooltip`,
76
70
  position: "bottom",
77
- show: true,
71
+ show: hovered,
78
72
  children: tooltipLabel
79
- })
80
- }), document.body)]
81
- });
73
+ })]
74
+ });
75
+ $[6] = hovered;
76
+ $[7] = t2;
77
+ $[8] = tooltipLabel;
78
+ $[9] = t7;
79
+ } else {
80
+ t7 = $[9];
81
+ }
82
+ return t7;
82
83
  };
84
+ function _temp(e) {
85
+ if (e.key === " ") {
86
+ e.preventDefault();
87
+ }
88
+ }
83
89
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useRef","useState","createPortal","LockIcon","useTranslation","isClientUserObject","Tooltip","baseClass","Locked","className","user","anchorRef","hovered","setHovered","anchorRect","setAnchorRect","t","userToUse","email","id","tooltipLabel","updateAnchorRect","node","current","getBoundingClientRect","window","addEventListener","removeEventListener","_jsxs","filter","Boolean","join","onBlur","onFocus","onKeyDown","e","key","preventDefault","onMouseEnter","onMouseLeave","ref","role","tabIndex","_jsx","style","height","left","top","width","alignCaret","position","show","document","body"],"sources":["../../../src/elements/Locked/index.tsx"],"sourcesContent":["'use client'\nimport type { User } from 'payload'\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { LockIcon } from '../../icons/Lock/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { isClientUserObject } from '../../utilities/isClientUserObject.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.css'\n\nconst baseClass = 'locked'\n\nexport const Locked: React.FC<{\n className?: string\n user: User\n}> = ({ className, user }) => {\n const anchorRef = useRef<HTMLDivElement>(null)\n const [hovered, setHovered] = useState(false)\n const [anchorRect, setAnchorRect] = useState<DOMRect | null>(null)\n const { t } = useTranslation()\n\n const userToUse = isClientUserObject(user) ? (user.email ?? user.id) : t('general:anotherUser')\n const tooltipLabel = `${userToUse} ${t('general:isEditing')}`\n\n const updateAnchorRect = useCallback(() => {\n const node = anchorRef.current\n\n if (!node) {\n return\n }\n\n setAnchorRect(node.getBoundingClientRect())\n }, [])\n\n useEffect(() => {\n if (!hovered) {\n return\n }\n\n // Keep the portaled tooltip aligned to the icon as the page or an overflow\n // container scrolls.\n window.addEventListener('scroll', updateAnchorRect, true)\n window.addEventListener('resize', updateAnchorRect)\n\n return () => {\n window.removeEventListener('scroll', updateAnchorRect, true)\n window.removeEventListener('resize', updateAnchorRect)\n }\n }, [hovered, updateAnchorRect])\n\n return (\n <div\n aria-label={tooltipLabel}\n className={[baseClass, className].filter(Boolean).join(' ')}\n onBlur={() => setHovered(false)}\n onFocus={() => {\n updateAnchorRect()\n setHovered(true)\n }}\n onKeyDown={(e) => {\n if (e.key === ' ') {\n e.preventDefault() // prevent page scroll when focused\n }\n }}\n onMouseEnter={() => {\n updateAnchorRect()\n setHovered(true)\n }}\n onMouseLeave={() => setHovered(false)}\n ref={anchorRef}\n role=\"button\"\n tabIndex={0}\n >\n <LockIcon />\n {hovered &&\n anchorRect &&\n createPortal(\n <div\n className={`${baseClass}__tooltip-anchor`}\n style={{\n height: anchorRect.height,\n left: anchorRect.left,\n top: anchorRect.top,\n width: anchorRect.width,\n }}\n >\n <Tooltip alignCaret=\"center\" className={`${baseClass}__tooltip`} position=\"bottom\" show>\n {tooltipLabel}\n </Tooltip>\n </div>,\n document.body,\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAGA,OAAOA,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAChE,SAASC,YAAY,QAAQ;AAE7B,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,OAAO,QAAQ;AACxB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,MAAA,GAGRA,CAAC;EAAEC,SAAS;EAAEC;AAAI,CAAE;EACvB,MAAMC,SAAA,GAAYX,MAAA,CAAuB;EACzC,MAAM,CAACY,OAAA,EAASC,UAAA,CAAW,GAAGZ,QAAA,CAAS;EACvC,MAAM,CAACa,UAAA,EAAYC,aAAA,CAAc,GAAGd,QAAA,CAAyB;EAC7D,MAAM;IAAEe;EAAC,CAAE,GAAGZ,cAAA;EAEd,MAAMa,SAAA,GAAYZ,kBAAA,CAAmBK,IAAA,IAASA,IAAA,CAAKQ,KAAK,IAAIR,IAAA,CAAKS,EAAE,GAAIH,CAAA,CAAE;EACzE,MAAMI,YAAA,GAAe,GAAGH,SAAA,IAAaD,CAAA,CAAE,sBAAsB;EAE7D,MAAMK,gBAAA,GAAmBvB,WAAA,CAAY;IACnC,MAAMwB,IAAA,GAAOX,SAAA,CAAUY,OAAO;IAE9B,IAAI,CAACD,IAAA,EAAM;MACT;IACF;IAEAP,aAAA,CAAcO,IAAA,CAAKE,qBAAqB;EAC1C,GAAG,EAAE;EAELzB,SAAA,CAAU;IACR,IAAI,CAACa,OAAA,EAAS;MACZ;IACF;IAEA;IACA;IACAa,MAAA,CAAOC,gBAAgB,CAAC,UAAUL,gBAAA,EAAkB;IACpDI,MAAA,CAAOC,gBAAgB,CAAC,UAAUL,gBAAA;IAElC,OAAO;MACLI,MAAA,CAAOE,mBAAmB,CAAC,UAAUN,gBAAA,EAAkB;MACvDI,MAAA,CAAOE,mBAAmB,CAAC,UAAUN,gBAAA;IACvC;EACF,GAAG,CAACT,OAAA,EAASS,gBAAA,CAAiB;EAE9B,oBACEO,KAAA,CAAC;IACC,cAAYR,YAAA;IACZX,SAAA,EAAW,CAACF,SAAA,EAAWE,SAAA,CAAU,CAACoB,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;IACvDC,MAAA,EAAQA,CAAA,KAAMnB,UAAA,CAAW;IACzBoB,OAAA,EAASA,CAAA;MACPZ,gBAAA;MACAR,UAAA,CAAW;IACb;IACAqB,SAAA,EAAYC,CAAA;MACV,IAAIA,CAAA,CAAEC,GAAG,KAAK,KAAK;QACjBD,CAAA,CAAEE,cAAc,IAAG;MACrB;IACF;IACAC,YAAA,EAAcA,CAAA;MACZjB,gBAAA;MACAR,UAAA,CAAW;IACb;IACA0B,YAAA,EAAcA,CAAA,KAAM1B,UAAA,CAAW;IAC/B2B,GAAA,EAAK7B,SAAA;IACL8B,IAAA,EAAK;IACLC,QAAA,EAAU;4BAEVC,IAAA,CAACxC,QAAA,OACAS,OAAA,IACCE,UAAA,iBACAZ,YAAA,cACEyC,IAAA,CAAC;MACClC,SAAA,EAAW,GAAGF,SAAA,kBAA2B;MACzCqC,KAAA,EAAO;QACLC,MAAA,EAAQ/B,UAAA,CAAW+B,MAAM;QACzBC,IAAA,EAAMhC,UAAA,CAAWgC,IAAI;QACrBC,GAAA,EAAKjC,UAAA,CAAWiC,GAAG;QACnBC,KAAA,EAAOlC,UAAA,CAAWkC;MACpB;gBAEA,aAAAL,IAAA,CAACrC,OAAA;QAAQ2C,UAAA,EAAW;QAASxC,SAAA,EAAW,GAAGF,SAAA,WAAoB;QAAE2C,QAAA,EAAS;QAASC,IAAI;kBACpF/B;;QAGLgC,QAAA,CAASC,IAAI;;AAIvB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useState","LockIcon","useTranslation","isClientUserObject","Tooltip","baseClass","Locked","t0","$","className","user","hovered","setHovered","t","userToUse","email","id","tooltipLabel","t1","filter","Boolean","t2","join","t3","t4","Symbol","for","t5","t6","t7","_jsxs","onBlur","onFocus","onKeyDown","_temp","onMouseEnter","onMouseLeave","role","tabIndex","children","_jsx","alignCaret","position","show","e","key","preventDefault"],"sources":["../../../src/elements/Locked/index.tsx"],"sourcesContent":["'use client'\nimport type { User } from 'payload'\n\nimport React, { useState } from 'react'\n\nimport { LockIcon } from '../../icons/Lock/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { isClientUserObject } from '../../utilities/isClientUserObject.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.css'\n\nconst baseClass = 'locked'\n\nexport const Locked: React.FC<{\n className?: string\n user: User\n}> = ({ className, user }) => {\n const [hovered, setHovered] = useState(false)\n const { t } = useTranslation()\n\n const userToUse = isClientUserObject(user) ? (user.email ?? user.id) : t('general:anotherUser')\n const tooltipLabel = `${userToUse} ${t('general:isEditing')}`\n\n return (\n <div\n aria-label={tooltipLabel}\n className={[baseClass, className].filter(Boolean).join(' ')}\n onBlur={() => setHovered(false)}\n onFocus={() => setHovered(true)}\n onKeyDown={(e) => {\n if (e.key === ' ') {\n e.preventDefault() // prevent page scroll when focused\n }\n }}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n role=\"button\"\n tabIndex={0}\n >\n <LockIcon />\n <Tooltip\n alignCaret=\"center\"\n className={`${baseClass}__tooltip`}\n position=\"bottom\"\n show={hovered}\n >\n {tooltipLabel}\n </Tooltip>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,IAASC,QAAQ,QAAQ;AAEhC,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,OAAO,QAAQ;AACxB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,MAAA,GAGRC,EAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EAAC;IAAAW,SAAA;IAAAC;EAAA,IAAAH,EAAmB;EACvB,OAAAI,OAAA,EAAAC,UAAA,IAA8BZ,QAAA,MAAS;EACvC;IAAAa;EAAA,IAAcX,cAAA;EAEd,MAAAY,SAAA,GAAkBX,kBAAA,CAAmBO,IAAA,IAASA,IAAA,CAAAK,KAAA,IAAcL,IAAA,CAAAM,EAAO,GAAIH,CAAA,CAAE;EACzE,MAAAI,YAAA,GAAqB,GAAGH,SAAA,IAAaD,CAAA,CAAE,sBAAsB;EAAA,IAAAK,EAAA;EAAA,IAAAV,CAAA,QAAAC,SAAA;IAK9CS,EAAA,IAAAb,SAAA,EAAYI,SAAA,EAAAU,MAAA,CAAAC,OAAkB;IAAAZ,CAAA,MAAAC,SAAA;IAAAD,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAA9B,MAAAa,EAAA,GAAAH,EAA8B,CAAAI,IAAA,CAAc;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAhB,CAAA,QAAAiB,MAAA,CAAAC,GAAA;IAC/CH,EAAA,GAAAA,CAAA,KAAMX,UAAA,MAAW;IAChBY,EAAA,GAAAA,CAAA,KAAMZ,UAAA,KAAW;IAAAJ,CAAA,MAAAe,EAAA;IAAAf,CAAA,MAAAgB,EAAA;EAAA;IAAAD,EAAA,GAAAf,CAAA;IAAAgB,EAAA,GAAAhB,CAAA;EAAA;EAAA,IAAAmB,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAApB,CAAA,QAAAiB,MAAA,CAAAC,GAAA;IAMZC,EAAA,GAAAA,CAAA,KAAMf,UAAA,KAAW;IACjBgB,EAAA,GAAAA,CAAA,KAAMhB,UAAA,MAAW;IAAAJ,CAAA,MAAAmB,EAAA;IAAAnB,CAAA,MAAAoB,EAAA;EAAA;IAAAD,EAAA,GAAAnB,CAAA;IAAAoB,EAAA,GAAApB,CAAA;EAAA;EAAA,IAAAqB,EAAA;EAAA,IAAArB,CAAA,QAAAG,OAAA,IAAAH,CAAA,QAAAa,EAAA,IAAAb,CAAA,QAAAS,YAAA;IAXjCY,EAAA,GAAAC,KAAA,CAAC;MAAA,cACab,YAAA;MAAAR,SAAA,EACDY,EAA4C;MAAAU,MAAA,EAC/CR,EAAiB;MAAAS,OAAA,EAChBR,EAAiB;MAAAS,SAAA,EAAAC,KAAA;MAAAC,YAAA,EAMZR,EAAiB;MAAAS,YAAA,EACjBR,EAAiB;MAAAS,IAAA,EAC1B;MAAAC,QAAA;MAAAC,QAAA,GAGLC,IAAA,CAAAvC,QAAA,IAAC,GACDuC,IAAA,CAAApC,OAAA;QAAAqC,UAAA,EACa;QAAAhC,SAAA,EACA,GAAAJ,SAAA,WAAuB;QAAAqC,QAAA,EACzB;QAAAC,IAAA,EACHhC,OAAA;QAAA4B,QAAA,EAELtB;MAAA,C;;;;;;;;;SAtBLY,E;CA0BJ;AAlCK,SAAAK,MAAAU,CAAA;EAAA,IAcOA,CAAA,CAAAC,GAAA,KAAU;IACZD,CAAA,CAAAE,cAAA,CAAgB;EAAA;AAAA","ignoreList":[]}
@@ -1,21 +1,23 @@
1
1
  @layer payload-default {
2
2
  .mini-carousel {
3
+ --carousel-item-width: 48px;
4
+ --carousel-item-height: 48px;
5
+ --carousel-divider-height: 48px;
3
6
  display: flex;
4
- flex-direction: column;
5
- align-items: stretch;
7
+ flex-direction: row;
8
+ align-items: center;
6
9
  gap: var(--spacer-3);
7
10
  padding: var(--spacer-2-5);
8
- height: 100%;
11
+ width: 100%;
12
+ height: auto;
9
13
  flex-shrink: 0;
10
- overflow-y: auto;
14
+ overflow-x: auto;
15
+ overflow-y: hidden;
11
16
  background: var(--color-bg-secondary);
12
- border-right: var(--stroke-width-small) solid var(--color-border);
13
- /* Honor the scroll-driven height below instead of stretching to the flex line. */
14
- align-self: flex-start;
15
- /* Scroll-driven: grow to fill the gap as the header scrolls away. Falls back to static height. */
16
- animation: mini-carousel-fill-scrolled-chrome linear both;
17
- animation-timeline: scroll(root block);
18
- animation-range: 0 calc(var(--app-header-height) + var(--doc-header-height));
17
+ border-top: var(--stroke-width-small) solid var(--color-border);
18
+ /* Stacked layout: no scroll-driven growth, fill via stretch instead. */
19
+ align-self: stretch;
20
+ animation: none;
19
21
  }
20
22
 
21
23
  @keyframes mini-carousel-fill-scrolled-chrome {
@@ -36,8 +38,8 @@
36
38
  background: var(--color-bg-secondary);
37
39
  cursor: pointer;
38
40
  overflow: hidden;
39
- width: 48px;
40
- height: 48px;
41
+ width: var(--carousel-item-width);
42
+ height: var(--carousel-item-height);
41
43
  }
42
44
 
43
45
  .mini-carousel__item img {
@@ -55,40 +57,40 @@
55
57
  }
56
58
 
57
59
  .mini-carousel__divider {
58
- width: 100%;
59
- height: var(--stroke-width-small);
60
+ width: var(--stroke-width-small);
61
+ height: var(--carousel-divider-height);
62
+ margin: 0 var(--spacer-2);
60
63
  background: var(--color-border);
61
64
  flex-shrink: 0;
62
65
  }
63
66
 
64
- /* Stacked layout: disable scroll-driven growth and fill via stretch. */
65
- @container edit-main (max-width: 1024px) {
67
+ @container edit-main (min-width: 768px) {
66
68
  .mini-carousel {
67
- align-self: stretch;
68
- height: auto;
69
- animation: none;
69
+ flex-direction: column;
70
+ align-items: stretch;
71
+ width: auto;
72
+ overflow-x: visible;
73
+ overflow-y: auto;
74
+ border-top: none;
75
+ border-right: var(--stroke-width-small) solid var(--color-border);
70
76
  }
71
- }
72
77
 
73
- @container edit-main (max-width: 768px) {
74
- .mini-carousel {
75
- flex-direction: row;
76
- align-items: center;
78
+ .mini-carousel__divider {
77
79
  width: 100%;
78
- overflow-x: auto;
79
- overflow-y: hidden;
80
- border-right: 0;
81
- border-top: var(--stroke-width-small) solid var(--color-border);
82
- }
83
-
84
- .mini-carousel__item {
85
- width: 48px;
80
+ height: var(--stroke-width-small);
81
+ margin: 0;
86
82
  }
83
+ }
87
84
 
88
- .mini-carousel__divider {
89
- width: var(--stroke-width-small);
90
- height: 48px;
91
- margin: 0 var(--spacer-2);
85
+ @container edit-main (min-width: 1024px) {
86
+ .mini-carousel {
87
+ height: 100%;
88
+ /* Honor the scroll-driven height below instead of stretching to the flex line. */
89
+ align-self: flex-start;
90
+ /* Scroll-driven: grow to fill the gap as the header scrolls away. Falls back to static height. */
91
+ animation: mini-carousel-fill-scrolled-chrome linear both;
92
+ animation-timeline: scroll(root block);
93
+ animation-range: 0 calc(var(--app-header-height) + var(--doc-header-height));
92
94
  }
93
95
  }
94
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../../src/elements/Nav/SidebarTabs/index.client.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAwC,MAAM,OAAO,CAAA;AAW5D,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,oEAAoE;IACpE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACnD;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,WAAW,EAAE,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA4L9D,CAAA"}
1
+ {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../../src/elements/Nav/SidebarTabs/index.client.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAwC,MAAM,OAAO,CAAA;AAW5D,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,oEAAoE;IACpE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACnD;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,WAAW,EAAE,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAmM9D,CAAA"}
@@ -41,7 +41,8 @@ export const SidebarTabsClient = ({
41
41
  }));
42
42
  }, [initialTabContents]);
43
43
  const loadTabContent = useCallback(async (tabSlug, {
44
- revalidate = false
44
+ revalidate = false,
45
+ serverArgs
45
46
  } = {}) => {
46
47
  const hasCachedContent = Boolean(tabContentRef.current[tabSlug]);
47
48
  // Skip if already loaded (unless revalidating) or currently loading
@@ -57,6 +58,7 @@ export const SidebarTabsClient = ({
57
58
  const result = await serverFunction({
58
59
  name: 'render-tab',
59
60
  args: {
61
+ ...serverArgs,
60
62
  tabSlug
61
63
  }
62
64
  });
@@ -73,14 +75,17 @@ export const SidebarTabsClient = ({
73
75
  }
74
76
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
75
77
  const handleRetry = () => {
76
- // Clear the error and retry loading
78
+ // Clear the error and retry loading, threading the original serverArgs through so the
79
+ // retry doesn't silently fall back to req.query-based rendering (the stale-tree bug).
77
80
  const clearedContent = {
78
81
  ...tabContentRef.current
79
82
  };
80
83
  delete clearedContent[tabSlug];
81
84
  tabContentRef.current = clearedContent;
82
85
  setTabContent(clearedContent);
83
- void loadTabContent(tabSlug);
86
+ void loadTabContent(tabSlug, {
87
+ serverArgs
88
+ });
84
89
  };
85
90
  const newContent = {
86
91
  ...tabContentRef.current,
@@ -96,7 +101,7 @@ export const SidebarTabsClient = ({
96
101
  setLoadingTab(null);
97
102
  }
98
103
  }, [serverFunction]);
99
- const reloadTabContent = useCallback(tabSlug_0 => {
104
+ const reloadTabContent = useCallback((tabSlug_0, serverArgs_0) => {
100
105
  // Clear cached content to force reload
101
106
  const clearedContent_0 = {
102
107
  ...tabContentRef.current
@@ -104,7 +109,9 @@ export const SidebarTabsClient = ({
104
109
  delete clearedContent_0[tabSlug_0];
105
110
  tabContentRef.current = clearedContent_0;
106
111
  setTabContent(clearedContent_0);
107
- void loadTabContent(tabSlug_0);
112
+ void loadTabContent(tabSlug_0, {
113
+ serverArgs: serverArgs_0
114
+ });
108
115
  }, [loadTabContent]);
109
116
  const handleTabChange = useCallback(slug => {
110
117
  setActiveTabID(slug);