@payloadcms/ui 4.0.0-internal.cd47d20 → 4.0.0-internal.ce66a41

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 (807) hide show
  1. package/dist/css/app.css +1 -1
  2. package/dist/css/forms.css +0 -1
  3. package/dist/css/spacing.css +1 -1
  4. package/dist/css/typography.css +161 -55
  5. package/dist/elements/APIKeyInput/index.css +2 -2
  6. package/dist/elements/AddNewRelation/index.css +0 -4
  7. package/dist/elements/AddNewRelation/index.js +2 -2
  8. package/dist/elements/AddNewRelation/index.js.map +1 -1
  9. package/dist/elements/AppHeader/index.css +4 -0
  10. package/dist/elements/AppHeader/index.d.ts +1 -8
  11. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  12. package/dist/elements/AppHeader/index.js +10 -19
  13. package/dist/elements/AppHeader/index.js.map +1 -1
  14. package/dist/elements/Banner/index.css +3 -4
  15. package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
  16. package/dist/elements/BulkUpload/ActionsBar/index.js +12 -10
  17. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  18. package/dist/elements/BulkUpload/AddFilesView/index.css +5 -0
  19. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  20. package/dist/elements/BulkUpload/AddFilesView/index.js +49 -8
  21. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  22. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
  23. package/dist/elements/BulkUpload/AddingFilesView/index.js +25 -20
  24. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  25. package/dist/elements/BulkUpload/EditMany/index.css +4 -5
  26. package/dist/elements/BulkUpload/FileSidebar/index.css +0 -1
  27. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  28. package/dist/elements/BulkUpload/FileSidebar/index.js +28 -35
  29. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  30. package/dist/elements/BulkUpload/FormsManager/index.d.ts +2 -1
  31. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  32. package/dist/elements/BulkUpload/FormsManager/index.js +175 -60
  33. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  34. package/dist/elements/BulkUpload/useUploadCollectionOptions.d.ts +6 -0
  35. package/dist/elements/BulkUpload/useUploadCollectionOptions.d.ts.map +1 -0
  36. package/dist/elements/BulkUpload/useUploadCollectionOptions.js +74 -0
  37. package/dist/elements/BulkUpload/useUploadCollectionOptions.js.map +1 -0
  38. package/dist/elements/Button/index.css +7 -1
  39. package/dist/elements/Button/types.d.ts +1 -1
  40. package/dist/elements/Button/types.d.ts.map +1 -1
  41. package/dist/elements/Button/types.js.map +1 -1
  42. package/dist/elements/Card/index.css +7 -8
  43. package/dist/elements/CardGrid/index.css +20 -0
  44. package/dist/elements/CardGrid/index.d.ts +13 -0
  45. package/dist/elements/CardGrid/index.d.ts.map +1 -0
  46. package/dist/elements/CardGrid/index.js +23 -0
  47. package/dist/elements/CardGrid/index.js.map +1 -0
  48. package/dist/elements/Chip/index.css +0 -1
  49. package/dist/elements/CollapseAllToggle/index.d.ts +3 -0
  50. package/dist/elements/CollapseAllToggle/index.d.ts.map +1 -1
  51. package/dist/elements/CollapseAllToggle/index.js +36 -22
  52. package/dist/elements/CollapseAllToggle/index.js.map +1 -1
  53. package/dist/elements/Collapsible/index.css +4 -1
  54. package/dist/elements/Collapsible/index.d.ts +2 -0
  55. package/dist/elements/Collapsible/index.d.ts.map +1 -1
  56. package/dist/elements/Collapsible/index.js +67 -46
  57. package/dist/elements/Collapsible/index.js.map +1 -1
  58. package/dist/elements/ColumnSelection/Popup.css +14 -11
  59. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  60. package/dist/elements/ColumnSelection/Popup.js +22 -14
  61. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  62. package/dist/elements/CommandPalette/index.css +3 -8
  63. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  64. package/dist/elements/CopyLocaleData/index.js +1 -0
  65. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  66. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  67. package/dist/elements/CreateDocumentButton/index.js +56 -33
  68. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  69. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  70. package/dist/elements/DatePicker/DatePicker.js +33 -2
  71. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  72. package/dist/elements/DatePicker/hasAmbiguousYearInput.d.ts +8 -0
  73. package/dist/elements/DatePicker/hasAmbiguousYearInput.d.ts.map +1 -0
  74. package/dist/elements/DatePicker/hasAmbiguousYearInput.js +37 -0
  75. package/dist/elements/DatePicker/hasAmbiguousYearInput.js.map +1 -0
  76. package/dist/elements/DatePicker/index.css +27 -17
  77. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  78. package/dist/elements/DefaultListViewTabs/index.js +9 -7
  79. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  80. package/dist/elements/Dialog/DialogModal/index.d.ts.map +1 -1
  81. package/dist/elements/Dialog/DialogModal/index.js +40 -28
  82. package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
  83. package/dist/elements/Dialog/DialogTitle/index.css +1 -1
  84. package/dist/elements/Dialog/index.css +1 -2
  85. package/dist/elements/DocumentCard/index.css +73 -0
  86. package/dist/elements/DocumentCard/index.d.ts +18 -0
  87. package/dist/elements/DocumentCard/index.d.ts.map +1 -0
  88. package/dist/elements/DocumentCard/index.js +182 -0
  89. package/dist/elements/DocumentCard/index.js.map +1 -0
  90. package/dist/elements/DocumentControls/index.css +1 -5
  91. package/dist/elements/DocumentDrawer/DrawerHeader/index.css +4 -7
  92. package/dist/elements/DocumentDrawer/types.d.ts +1 -1
  93. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  94. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  95. package/dist/elements/DocumentFields/RequiredFieldsInfo/index.css +40 -0
  96. package/dist/elements/DocumentFields/RequiredFieldsInfo/index.d.ts +4 -0
  97. package/dist/elements/DocumentFields/RequiredFieldsInfo/index.d.ts.map +1 -0
  98. package/dist/elements/DocumentFields/RequiredFieldsInfo/index.js +88 -0
  99. package/dist/elements/DocumentFields/RequiredFieldsInfo/index.js.map +1 -0
  100. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  101. package/dist/elements/DocumentFields/index.js +2 -1
  102. package/dist/elements/DocumentFields/index.js.map +1 -1
  103. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  104. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +0 -1
  105. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  106. package/dist/elements/DocumentHeader/index.css +1 -1
  107. package/dist/elements/DraggableSortable/index.d.ts.map +1 -1
  108. package/dist/elements/DraggableSortable/index.js +13 -10
  109. package/dist/elements/DraggableSortable/index.js.map +1 -1
  110. package/dist/elements/DraggableSortable/types.d.ts +1 -0
  111. package/dist/elements/DraggableSortable/types.d.ts.map +1 -1
  112. package/dist/elements/DraggableSortable/types.js.map +1 -1
  113. package/dist/elements/Drawer/index.css +4 -5
  114. package/dist/elements/Drawer/types.d.ts +2 -2
  115. package/dist/elements/Drawer/types.d.ts.map +1 -1
  116. package/dist/elements/Drawer/types.js.map +1 -1
  117. package/dist/elements/Dropzone/index.d.ts +2 -1
  118. package/dist/elements/Dropzone/index.d.ts.map +1 -1
  119. package/dist/elements/Dropzone/index.js +9 -10
  120. package/dist/elements/Dropzone/index.js.map +1 -1
  121. package/dist/elements/EditMany/index.css +4 -5
  122. package/dist/elements/EditUpload/index.css +3 -4
  123. package/dist/elements/ErrorPill/index.css +0 -1
  124. package/dist/elements/FieldDiffContainer/index.css +0 -1
  125. package/dist/elements/FieldDiffLabel/index.css +4 -5
  126. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
  127. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  128. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  129. package/dist/elements/FileDetails/FileMeta/index.d.ts +1 -1
  130. package/dist/elements/FileDetails/FileMeta/index.d.ts.map +1 -1
  131. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  132. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +1 -1
  133. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  134. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  135. package/dist/elements/FileDetails/index.d.ts +1 -1
  136. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  137. package/dist/elements/FileDetails/index.js.map +1 -1
  138. package/dist/elements/FileManager/FilePreview/index.css +2 -3
  139. package/dist/elements/FileManager/FilePreview/index.js +4 -4
  140. package/dist/elements/FileManager/FilePreview/index.js.map +1 -1
  141. package/dist/elements/FileManager/FileToolbar/index.css +2 -3
  142. package/dist/elements/FileManager/index.css +0 -1
  143. package/dist/elements/FileManager/index.d.ts.map +1 -1
  144. package/dist/elements/FileManager/index.js +197 -177
  145. package/dist/elements/FileManager/index.js.map +1 -1
  146. package/dist/elements/FormHeader/index.css +0 -2
  147. package/dist/elements/GroupBy/Popup.css +3 -6
  148. package/dist/elements/HTMLDiff/index.css +0 -1
  149. package/dist/elements/HTMLDiff/index.d.ts +3 -1
  150. package/dist/elements/HTMLDiff/index.d.ts.map +1 -1
  151. package/dist/elements/HTMLDiff/index.js +9 -3
  152. package/dist/elements/HTMLDiff/index.js.map +1 -1
  153. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -1
  154. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +40 -36
  155. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
  156. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  157. package/dist/elements/Hierarchy/ColumnBrowser/index.js +15 -58
  158. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  159. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
  160. package/dist/elements/Hierarchy/DocHeaderButton/index.js +29 -1
  161. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  162. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.d.ts +9 -0
  163. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.d.ts.map +1 -0
  164. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.js +41 -0
  165. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.js.map +1 -0
  166. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
  167. package/dist/elements/Hierarchy/Field/index.client.js +120 -105
  168. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  169. package/dist/elements/Hierarchy/Field/index.css +0 -1
  170. package/dist/elements/Hierarchy/Modal/index.d.ts +1 -1
  171. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  172. package/dist/elements/Hierarchy/Modal/index.js +28 -39
  173. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  174. package/dist/elements/Hierarchy/Modal/selection.d.ts +12 -0
  175. package/dist/elements/Hierarchy/Modal/selection.d.ts.map +1 -0
  176. package/dist/elements/Hierarchy/Modal/selection.js +40 -0
  177. package/dist/elements/Hierarchy/Modal/selection.js.map +1 -0
  178. package/dist/elements/Hierarchy/Modal/types.d.ts +2 -0
  179. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
  180. package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
  181. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts.map +1 -1
  182. package/dist/elements/Hierarchy/Modal/useHierarchyModal.js +1 -1
  183. package/dist/elements/Hierarchy/Modal/useHierarchyModal.js.map +1 -1
  184. package/dist/elements/Hierarchy/MoveMany/index.d.ts +3 -1
  185. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  186. package/dist/elements/Hierarchy/MoveMany/index.js +17 -8
  187. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  188. package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -1
  189. package/dist/elements/Hierarchy/Search/index.js +11 -0
  190. package/dist/elements/Hierarchy/Search/index.js.map +1 -1
  191. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  192. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +7 -1
  193. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  194. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts +2 -1
  195. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
  196. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js +30 -28
  197. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
  198. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  199. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +6 -2
  200. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  201. package/dist/elements/Hierarchy/Tree/index.css +3 -1
  202. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  203. package/dist/elements/Hierarchy/Tree/index.js +25 -26
  204. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  205. package/dist/elements/HydratePreferences/index.d.ts +8 -0
  206. package/dist/elements/HydratePreferences/index.d.ts.map +1 -0
  207. package/dist/elements/HydratePreferences/index.js +34 -0
  208. package/dist/elements/HydratePreferences/index.js.map +1 -0
  209. package/dist/elements/IDLabel/index.css +5 -7
  210. package/dist/elements/IframeLoader/index.d.ts.map +1 -1
  211. package/dist/elements/IframeLoader/index.js +34 -6
  212. package/dist/elements/IframeLoader/index.js.map +1 -1
  213. package/dist/elements/ItemsDrawer/ItemSearch/index.css +0 -1
  214. package/dist/elements/ItemsDrawer/index.d.ts.map +1 -1
  215. package/dist/elements/ItemsDrawer/index.js +23 -1
  216. package/dist/elements/ItemsDrawer/index.js.map +1 -1
  217. package/dist/elements/LLMInstructionsCell/index.css +11 -0
  218. package/dist/elements/LLMInstructionsCell/index.d.ts +5 -0
  219. package/dist/elements/LLMInstructionsCell/index.d.ts.map +1 -0
  220. package/dist/elements/LLMInstructionsCell/index.js +24 -0
  221. package/dist/elements/LLMInstructionsCell/index.js.map +1 -0
  222. package/dist/elements/LLMInstructionsDescription/index.css +79 -0
  223. package/dist/elements/LLMInstructionsDescription/index.d.ts +6 -0
  224. package/dist/elements/LLMInstructionsDescription/index.d.ts.map +1 -0
  225. package/dist/elements/LLMInstructionsDescription/index.js +40 -0
  226. package/dist/elements/LLMInstructionsDescription/index.js.map +1 -0
  227. package/dist/elements/LLMInstructionsMenuItem/index.d.ts +5 -0
  228. package/dist/elements/LLMInstructionsMenuItem/index.d.ts.map +1 -0
  229. package/dist/elements/LLMInstructionsMenuItem/index.js +46 -0
  230. package/dist/elements/LLMInstructionsMenuItem/index.js.map +1 -0
  231. package/dist/elements/LayoutToggle/index.d.ts +8 -0
  232. package/dist/elements/LayoutToggle/index.d.ts.map +1 -0
  233. package/dist/elements/LayoutToggle/index.js +56 -0
  234. package/dist/elements/LayoutToggle/index.js.map +1 -0
  235. package/dist/elements/Link/index.d.ts.map +1 -1
  236. package/dist/elements/Link/index.js +3 -0
  237. package/dist/elements/Link/index.js.map +1 -1
  238. package/dist/elements/ListControls/index.d.ts.map +1 -1
  239. package/dist/elements/ListControls/index.js +5 -2
  240. package/dist/elements/ListControls/index.js.map +1 -1
  241. package/dist/elements/ListControls/types.d.ts +1 -0
  242. package/dist/elements/ListControls/types.d.ts.map +1 -1
  243. package/dist/elements/ListControls/types.js.map +1 -1
  244. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  245. package/dist/elements/ListDrawer/DrawerContent.js +1 -1
  246. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  247. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.d.ts +6 -0
  248. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.d.ts.map +1 -0
  249. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js +61 -0
  250. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js.map +1 -0
  251. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js +1 -1
  252. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js.map +1 -1
  253. package/dist/elements/ListHeader/DrawerTitleActions/index.d.ts +1 -0
  254. package/dist/elements/ListHeader/DrawerTitleActions/index.d.ts.map +1 -1
  255. package/dist/elements/ListHeader/DrawerTitleActions/index.js +1 -0
  256. package/dist/elements/ListHeader/DrawerTitleActions/index.js.map +1 -1
  257. package/dist/elements/ListHeader/index.css +4 -5
  258. package/dist/elements/Loading/index.d.ts.map +1 -1
  259. package/dist/elements/Loading/index.js +1 -0
  260. package/dist/elements/Loading/index.js.map +1 -1
  261. package/dist/elements/MiniCarousel/index.d.ts +1 -1
  262. package/dist/elements/MiniCarousel/index.d.ts.map +1 -1
  263. package/dist/elements/MiniCarousel/index.js +6 -6
  264. package/dist/elements/MiniCarousel/index.js.map +1 -1
  265. package/dist/elements/Nav/NavSidebarToggle/index.d.ts.map +1 -1
  266. package/dist/elements/Nav/NavSidebarToggle/index.js +29 -24
  267. package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
  268. package/dist/elements/Nav/NavWrapper/index.d.ts +1 -0
  269. package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
  270. package/dist/elements/Nav/NavWrapper/index.js +15 -13
  271. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  272. package/dist/elements/Nav/SidebarTabs/index.client.js +1 -1
  273. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  274. package/dist/elements/Nav/SidebarTabs/index.css +3 -3
  275. package/dist/elements/Nav/context.d.ts +1 -1
  276. package/dist/elements/Nav/context.d.ts.map +1 -1
  277. package/dist/elements/Nav/context.js +32 -11
  278. package/dist/elements/Nav/context.js.map +1 -1
  279. package/dist/elements/Nav/index.client.d.ts.map +1 -1
  280. package/dist/elements/Nav/index.client.js +1 -10
  281. package/dist/elements/Nav/index.client.js.map +1 -1
  282. package/dist/elements/Nav/index.css +45 -34
  283. package/dist/elements/Nav/index.d.ts +4 -0
  284. package/dist/elements/Nav/index.d.ts.map +1 -1
  285. package/dist/elements/Nav/index.js +15 -1
  286. package/dist/elements/Nav/index.js.map +1 -1
  287. package/dist/elements/NavGroup/index.css +32 -19
  288. package/dist/elements/NavGroup/index.d.ts.map +1 -1
  289. package/dist/elements/NavGroup/index.js +31 -28
  290. package/dist/elements/NavGroup/index.js.map +1 -1
  291. package/dist/elements/NoListResults/index.css +2 -3
  292. package/dist/elements/PageControls/index.css +4 -1
  293. package/dist/elements/PageControls/index.d.ts +1 -0
  294. package/dist/elements/PageControls/index.d.ts.map +1 -1
  295. package/dist/elements/PageControls/index.js +41 -21
  296. package/dist/elements/PageControls/index.js.map +1 -1
  297. package/dist/elements/Pagination/ClickableArrow/index.d.ts.map +1 -1
  298. package/dist/elements/Pagination/ClickableArrow/index.js +45 -11
  299. package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
  300. package/dist/elements/Pagination/SimplePagination/index.css +0 -1
  301. package/dist/elements/Pagination/index.css +0 -2
  302. package/dist/elements/Pagination/index.d.ts.map +1 -1
  303. package/dist/elements/Pagination/index.js +32 -18
  304. package/dist/elements/Pagination/index.js.map +1 -1
  305. package/dist/elements/PerPage/index.css +0 -1
  306. package/dist/elements/PerPage/index.js +3 -1
  307. package/dist/elements/PerPage/index.js.map +1 -1
  308. package/dist/elements/Pill/index.css +0 -1
  309. package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.css +53 -0
  310. package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.d.ts +13 -0
  311. package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.d.ts.map +1 -0
  312. package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.js +44 -0
  313. package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.js.map +1 -0
  314. package/dist/elements/Popup/PopupButtonList/index.css +30 -8
  315. package/dist/elements/Popup/PopupButtonList/index.d.ts +1 -0
  316. package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  317. package/dist/elements/Popup/PopupButtonList/index.js +1 -0
  318. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  319. package/dist/elements/Popup/PopupGroupLabel/index.css +0 -1
  320. package/dist/elements/Popup/SubmenuScope.d.ts +21 -0
  321. package/dist/elements/Popup/SubmenuScope.d.ts.map +1 -0
  322. package/dist/elements/Popup/SubmenuScope.js +89 -0
  323. package/dist/elements/Popup/SubmenuScope.js.map +1 -0
  324. package/dist/elements/Popup/index.css +5 -0
  325. package/dist/elements/Popup/index.d.ts +3 -0
  326. package/dist/elements/Popup/index.d.ts.map +1 -1
  327. package/dist/elements/Popup/index.js +75 -10
  328. package/dist/elements/Popup/index.js.map +1 -1
  329. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts +13 -0
  330. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts.map +1 -0
  331. package/dist/elements/Popup/useSubmenuPointerIntent.js +42 -0
  332. package/dist/elements/Popup/useSubmenuPointerIntent.js.map +1 -0
  333. package/dist/elements/PreviewSizes/index.d.ts +1 -1
  334. package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
  335. package/dist/elements/PreviewSizes/index.js +9 -9
  336. package/dist/elements/PreviewSizes/index.js.map +1 -1
  337. package/dist/elements/QueryPresets/fields/Heading/index.css +0 -1
  338. package/dist/elements/ReactSelect/MultiValueLabel/index.css +0 -1
  339. package/dist/elements/ReactSelect/ValueContainer/index.d.ts.map +1 -1
  340. package/dist/elements/ReactSelect/ValueContainer/index.js +23 -1
  341. package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
  342. package/dist/elements/ReactSelect/index.css +5 -3
  343. package/dist/elements/ReactSelect/types.d.ts +3 -0
  344. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  345. package/dist/elements/ReactSelect/types.js.map +1 -1
  346. package/dist/elements/RenderTitle/index.css +9 -7
  347. package/dist/elements/Search/ListSearchFilter/index.d.ts +2 -1
  348. package/dist/elements/Search/ListSearchFilter/index.d.ts.map +1 -1
  349. package/dist/elements/Search/ListSearchFilter/index.js +33 -17
  350. package/dist/elements/Search/ListSearchFilter/index.js.map +1 -1
  351. package/dist/elements/Search/SearchInput/index.css +0 -1
  352. package/dist/elements/Search/SearchInput/index.d.ts +1 -0
  353. package/dist/elements/Search/SearchInput/index.d.ts.map +1 -1
  354. package/dist/elements/Search/SearchInput/index.js +23 -20
  355. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  356. package/dist/elements/SegmentedControl/index.css +9 -0
  357. package/dist/elements/SegmentedControl/index.d.ts +20 -0
  358. package/dist/elements/SegmentedControl/index.d.ts.map +1 -0
  359. package/dist/elements/SegmentedControl/index.js +162 -0
  360. package/dist/elements/SegmentedControl/index.js.map +1 -0
  361. package/dist/elements/SelectRow/index.d.ts +1 -0
  362. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  363. package/dist/elements/SelectRow/index.js +35 -27
  364. package/dist/elements/SelectRow/index.js.map +1 -1
  365. package/dist/elements/SidebarRow/index.css +43 -2
  366. package/dist/elements/SidebarToggle/index.css +3 -1
  367. package/dist/elements/SkipToContent/index.css +21 -0
  368. package/dist/elements/SkipToContent/index.d.ts +4 -0
  369. package/dist/elements/SkipToContent/index.d.ts.map +1 -0
  370. package/dist/elements/SkipToContent/index.js +63 -0
  371. package/dist/elements/SkipToContent/index.js.map +1 -0
  372. package/dist/elements/SortColumn/index.css +1 -2
  373. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  374. package/dist/elements/SortColumn/index.js +7 -3
  375. package/dist/elements/SortColumn/index.js.map +1 -1
  376. package/dist/elements/Spinner/index.css +0 -2
  377. package/dist/elements/Status/index.css +3 -4
  378. package/dist/elements/StepNav/index.css +15 -9
  379. package/dist/elements/Switch/index.css +0 -1
  380. package/dist/elements/Switch/index.d.ts +1 -0
  381. package/dist/elements/Switch/index.d.ts.map +1 -1
  382. package/dist/elements/Switch/index.js +18 -16
  383. package/dist/elements/Switch/index.js.map +1 -1
  384. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.css +0 -1
  385. package/dist/elements/Table/DefaultCell/fields/Code/index.css +0 -1
  386. package/dist/elements/Table/DefaultCell/fields/File/index.css +18 -13
  387. package/dist/elements/Table/DefaultCell/fields/File/index.js +1 -1
  388. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  389. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +26 -7
  390. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  391. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +42 -8
  392. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  393. package/dist/elements/Table/DefaultCell/fields/JSON/index.css +0 -1
  394. package/dist/elements/Table/DefaultCell/fields/Status/index.css +0 -1
  395. package/dist/elements/Table/GridNavigation/useGridNavigation.d.ts +8 -0
  396. package/dist/elements/Table/GridNavigation/useGridNavigation.d.ts.map +1 -0
  397. package/dist/elements/Table/GridNavigation/useGridNavigation.js +397 -0
  398. package/dist/elements/Table/GridNavigation/useGridNavigation.js.map +1 -0
  399. package/dist/elements/Table/TableIdentity.d.ts +3 -0
  400. package/dist/elements/Table/TableIdentity.d.ts.map +1 -1
  401. package/dist/elements/Table/TableIdentity.js +13 -8
  402. package/dist/elements/Table/TableIdentity.js.map +1 -1
  403. package/dist/elements/Table/index.css +23 -3
  404. package/dist/elements/Table/index.d.ts +2 -0
  405. package/dist/elements/Table/index.d.ts.map +1 -1
  406. package/dist/elements/Table/index.js +77 -83
  407. package/dist/elements/Table/index.js.map +1 -1
  408. package/dist/elements/TableSection/index.css +4 -5
  409. package/dist/elements/Tabs/index.css +1 -2
  410. package/dist/elements/Tabs/index.d.ts +4 -0
  411. package/dist/elements/Tabs/index.d.ts.map +1 -1
  412. package/dist/elements/Tabs/index.js +30 -1
  413. package/dist/elements/Tabs/index.js.map +1 -1
  414. package/dist/elements/ThumbnailCard/index.css +0 -1
  415. package/dist/elements/TimezonePicker/index.css +0 -3
  416. package/dist/elements/Tooltip/index.css +2 -2
  417. package/dist/elements/Tooltip/index.d.ts +5 -5
  418. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  419. package/dist/elements/Tooltip/index.js +20 -13
  420. package/dist/elements/Tooltip/index.js.map +1 -1
  421. package/dist/elements/Upload/index.css +2 -3
  422. package/dist/elements/Upload/index.d.ts +1 -1
  423. package/dist/elements/Upload/index.d.ts.map +1 -1
  424. package/dist/elements/Upload/index.js +6 -6
  425. package/dist/elements/Upload/index.js.map +1 -1
  426. package/dist/elements/UserMenu/LanguageMenu/index.d.ts.map +1 -1
  427. package/dist/elements/UserMenu/LanguageMenu/index.js +12 -30
  428. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
  429. package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
  430. package/dist/elements/UserMenu/SettingsMenu/index.js +12 -30
  431. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
  432. package/dist/elements/UserMenu/ThemeMenu/index.d.ts.map +1 -1
  433. package/dist/elements/UserMenu/ThemeMenu/index.js +12 -30
  434. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
  435. package/dist/elements/UserMenu/index.css +29 -15
  436. package/dist/elements/UserMenu/index.d.ts +1 -0
  437. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  438. package/dist/elements/UserMenu/index.js +60 -46
  439. package/dist/elements/UserMenu/index.js.map +1 -1
  440. package/dist/exports/client/CodeEditor-UKD3EPUY.js +14 -0
  441. package/dist/exports/client/CodeEditor-UKD3EPUY.js.map +7 -0
  442. package/dist/exports/client/DatePicker-BBZ3XRWP.js +14 -0
  443. package/dist/exports/client/DatePicker-BBZ3XRWP.js.map +7 -0
  444. package/dist/exports/client/chunk-6XCSN54Q.js +27 -0
  445. package/dist/exports/client/chunk-6XCSN54Q.js.map +7 -0
  446. package/dist/exports/client/chunk-AVJIZPR3.js +14 -0
  447. package/dist/exports/client/chunk-AVJIZPR3.js.map +7 -0
  448. package/dist/exports/client/chunk-USFUVW7C.js +29 -0
  449. package/dist/exports/client/chunk-USFUVW7C.js.map +7 -0
  450. package/dist/exports/client/index.d.ts +22 -2
  451. package/dist/exports/client/index.d.ts.map +1 -1
  452. package/dist/exports/client/index.js +100 -1
  453. package/dist/exports/client/index.js.map +4 -4
  454. package/dist/exports/rsc/index.d.ts +3 -0
  455. package/dist/exports/rsc/index.d.ts.map +1 -1
  456. package/dist/exports/rsc/index.js +3 -0
  457. package/dist/exports/rsc/index.js.map +1 -1
  458. package/dist/exports/shared/index.js +1 -1
  459. package/dist/exports/shared/index.js.map +3 -3
  460. package/dist/fields/Array/index.css +4 -0
  461. package/dist/fields/Array/index.d.ts.map +1 -1
  462. package/dist/fields/Array/index.js +14 -5
  463. package/dist/fields/Array/index.js.map +1 -1
  464. package/dist/fields/Blocks/SectionTitle/index.css +3 -5
  465. package/dist/fields/Blocks/index.css +2 -2
  466. package/dist/fields/Blocks/index.d.ts.map +1 -1
  467. package/dist/fields/Blocks/index.js +20 -11
  468. package/dist/fields/Blocks/index.js.map +1 -1
  469. package/dist/fields/Checkbox/Input.d.ts +2 -2
  470. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  471. package/dist/fields/Checkbox/Input.js +134 -152
  472. package/dist/fields/Checkbox/Input.js.map +1 -1
  473. package/dist/fields/Checkbox/index.css +189 -155
  474. package/dist/fields/Code/index.d.ts.map +1 -1
  475. package/dist/fields/Code/index.js +20 -3
  476. package/dist/fields/Code/index.js.map +1 -1
  477. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  478. package/dist/fields/Collapsible/index.js +1 -0
  479. package/dist/fields/Collapsible/index.js.map +1 -1
  480. package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
  481. package/dist/fields/ConfirmPassword/index.js +45 -31
  482. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  483. package/dist/fields/Email/index.d.ts.map +1 -1
  484. package/dist/fields/Email/index.js +11 -0
  485. package/dist/fields/Email/index.js.map +1 -1
  486. package/dist/fields/FieldError/index.css +12 -0
  487. package/dist/fields/FieldError/index.d.ts.map +1 -1
  488. package/dist/fields/FieldError/index.js +4 -1
  489. package/dist/fields/FieldError/index.js.map +1 -1
  490. package/dist/fields/FieldLabel/index.css +5 -4
  491. package/dist/fields/FieldLabel/index.d.ts.map +1 -1
  492. package/dist/fields/FieldLabel/index.js +28 -10
  493. package/dist/fields/FieldLabel/index.js.map +1 -1
  494. package/dist/fields/Group/index.css +2 -3
  495. package/dist/fields/JSON/index.d.ts.map +1 -1
  496. package/dist/fields/JSON/index.js +15 -1
  497. package/dist/fields/JSON/index.js.map +1 -1
  498. package/dist/fields/Join/index.css +3 -4
  499. package/dist/fields/Password/input.d.ts.map +1 -1
  500. package/dist/fields/Password/input.js +73 -95
  501. package/dist/fields/Password/input.js.map +1 -1
  502. package/dist/fields/Point/index.d.ts.map +1 -1
  503. package/dist/fields/Point/index.js +15 -2
  504. package/dist/fields/Point/index.js.map +1 -1
  505. package/dist/fields/RadioGroup/Radio/index.css +0 -1
  506. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  507. package/dist/fields/Relationship/Input.js +25 -17
  508. package/dist/fields/Relationship/Input.js.map +1 -1
  509. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  510. package/dist/fields/Relationship/optionsReducer.js +2 -0
  511. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  512. package/dist/fields/Relationship/types.d.ts +8 -0
  513. package/dist/fields/Relationship/types.d.ts.map +1 -1
  514. package/dist/fields/Relationship/types.js.map +1 -1
  515. package/dist/fields/Select/Input.d.ts.map +1 -1
  516. package/dist/fields/Select/Input.js +70 -51
  517. package/dist/fields/Select/Input.js.map +1 -1
  518. package/dist/fields/Select/index.css +7 -0
  519. package/dist/fields/Tabs/Tab/index.d.ts +2 -0
  520. package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
  521. package/dist/fields/Tabs/Tab/index.js +15 -9
  522. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  523. package/dist/fields/Tabs/index.d.ts.map +1 -1
  524. package/dist/fields/Tabs/index.js +179 -116
  525. package/dist/fields/Tabs/index.js.map +1 -1
  526. package/dist/fields/Text/Input.d.ts.map +1 -1
  527. package/dist/fields/Text/Input.js +53 -34
  528. package/dist/fields/Text/Input.js.map +1 -1
  529. package/dist/fields/Upload/HasMany/index.js +1 -1
  530. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  531. package/dist/fields/Upload/HasOne/index.js +1 -1
  532. package/dist/fields/Upload/HasOne/index.js.map +1 -1
  533. package/dist/fields/Upload/Input.d.ts.map +1 -1
  534. package/dist/fields/Upload/Input.js +13 -4
  535. package/dist/fields/Upload/Input.js.map +1 -1
  536. package/dist/fields/shared/useRowFocus.d.ts +5 -0
  537. package/dist/fields/shared/useRowFocus.d.ts.map +1 -0
  538. package/dist/fields/shared/useRowFocus.js +50 -0
  539. package/dist/fields/shared/useRowFocus.js.map +1 -0
  540. package/dist/forms/NullifyField/index.d.ts +10 -0
  541. package/dist/forms/NullifyField/index.d.ts.map +1 -1
  542. package/dist/forms/NullifyField/index.js +14 -4
  543. package/dist/forms/NullifyField/index.js.map +1 -1
  544. package/dist/forms/RenderFields/index.css +3 -6
  545. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -2
  546. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  547. package/dist/graphics/Logo/index.d.ts.map +1 -1
  548. package/dist/graphics/Logo/index.js +2 -0
  549. package/dist/graphics/Logo/index.js.map +1 -1
  550. package/dist/icons/ImageStack/index.d.ts +3 -0
  551. package/dist/icons/ImageStack/index.d.ts.map +1 -0
  552. package/dist/icons/ImageStack/index.js +17 -0
  553. package/dist/icons/ImageStack/index.js.map +1 -0
  554. package/dist/icons/Table/index.css +1 -0
  555. package/dist/icons/Table/index.d.ts +7 -0
  556. package/dist/icons/Table/index.d.ts.map +1 -0
  557. package/dist/icons/Table/index.js +25 -0
  558. package/dist/icons/Table/index.js.map +1 -0
  559. package/dist/layouts/Root/DocumentRoot.d.ts +24 -0
  560. package/dist/layouts/Root/DocumentRoot.d.ts.map +1 -0
  561. package/dist/layouts/Root/DocumentRoot.js +40 -0
  562. package/dist/layouts/Root/DocumentRoot.js.map +1 -0
  563. package/dist/layouts/Root/ResolveThemeOnClient.d.ts +12 -0
  564. package/dist/layouts/Root/ResolveThemeOnClient.d.ts.map +1 -0
  565. package/dist/layouts/Root/ResolveThemeOnClient.js +35 -0
  566. package/dist/layouts/Root/ResolveThemeOnClient.js.map +1 -0
  567. package/dist/layouts/Root/RootProviders.d.ts +11 -0
  568. package/dist/layouts/Root/RootProviders.d.ts.map +1 -0
  569. package/dist/layouts/Root/RootProviders.js +164 -0
  570. package/dist/layouts/Root/RootProviders.js.map +1 -0
  571. package/dist/layouts/Root/getRootLayoutData.d.ts +29 -0
  572. package/dist/layouts/Root/getRootLayoutData.d.ts.map +1 -0
  573. package/dist/layouts/Root/getRootLayoutData.js +72 -0
  574. package/dist/layouts/Root/getRootLayoutData.js.map +1 -0
  575. package/dist/layouts/Root/index.d.ts.map +1 -1
  576. package/dist/layouts/Root/index.js +48 -103
  577. package/dist/layouts/Root/index.js.map +1 -1
  578. package/dist/providers/ListQuery/getSearchWithListQuery.d.ts +7 -0
  579. package/dist/providers/ListQuery/getSearchWithListQuery.d.ts.map +1 -0
  580. package/dist/providers/ListQuery/getSearchWithListQuery.js +22 -0
  581. package/dist/providers/ListQuery/getSearchWithListQuery.js.map +1 -0
  582. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  583. package/dist/providers/ListQuery/index.js +16 -12
  584. package/dist/providers/ListQuery/index.js.map +1 -1
  585. package/dist/providers/ListQuery/types.d.ts +4 -0
  586. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  587. package/dist/providers/ListQuery/types.js.map +1 -1
  588. package/dist/providers/Preferences/index.d.ts +7 -1
  589. package/dist/providers/Preferences/index.d.ts.map +1 -1
  590. package/dist/providers/Preferences/index.js +62 -20
  591. package/dist/providers/Preferences/index.js.map +1 -1
  592. package/dist/providers/TableColumns/buildColumnState/index.d.ts +1 -0
  593. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  594. package/dist/providers/TableColumns/buildColumnState/index.js +2 -0
  595. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  596. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +2 -1
  597. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  598. package/dist/providers/TableColumns/buildColumnState/renderCell.js +12 -28
  599. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  600. package/dist/providers/ToastContainer/index.css +6 -7
  601. package/dist/providers/ToastContainer/index.d.ts.map +1 -1
  602. package/dist/providers/ToastContainer/index.js +15 -4
  603. package/dist/providers/ToastContainer/index.js.map +1 -1
  604. package/dist/providers/Translation/index.d.ts.map +1 -1
  605. package/dist/providers/Translation/index.js +11 -1
  606. package/dist/providers/Translation/index.js.map +1 -1
  607. package/dist/styles.css +163 -58
  608. package/dist/templates/Default/Wrapper/index.css +20 -5
  609. package/dist/templates/Default/Wrapper/index.d.ts.map +1 -1
  610. package/dist/templates/Default/Wrapper/index.js +4 -3
  611. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  612. package/dist/templates/Default/index.d.ts.map +1 -1
  613. package/dist/templates/Default/index.js +19 -14
  614. package/dist/templates/Default/index.js.map +1 -1
  615. package/dist/utilities/filterLLMInstructionsMenuItems.d.ts +9 -0
  616. package/dist/utilities/filterLLMInstructionsMenuItems.d.ts.map +1 -0
  617. package/dist/utilities/filterLLMInstructionsMenuItems.js +37 -0
  618. package/dist/utilities/filterLLMInstructionsMenuItems.js.map +1 -0
  619. package/dist/utilities/filterOutUploadFields.js +1 -1
  620. package/dist/utilities/filterOutUploadFields.js.map +1 -1
  621. package/dist/utilities/generateFieldID.d.ts +1 -1
  622. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  623. package/dist/utilities/generateFieldID.js.map +1 -1
  624. package/dist/utilities/getClientConfig.d.ts +5 -1
  625. package/dist/utilities/getClientConfig.d.ts.map +1 -1
  626. package/dist/utilities/getClientConfig.js +2 -1
  627. package/dist/utilities/getClientConfig.js.map +1 -1
  628. package/dist/utilities/getRequestTheme.d.ts +8 -1
  629. package/dist/utilities/getRequestTheme.d.ts.map +1 -1
  630. package/dist/utilities/getRequestTheme.js +16 -4
  631. package/dist/utilities/getRequestTheme.js.map +1 -1
  632. package/dist/utilities/hierarchyCollectionRestrictions.d.ts +15 -0
  633. package/dist/utilities/hierarchyCollectionRestrictions.d.ts.map +1 -0
  634. package/dist/utilities/hierarchyCollectionRestrictions.js +17 -0
  635. package/dist/utilities/hierarchyCollectionRestrictions.js.map +1 -0
  636. package/dist/utilities/renderTable.d.ts +2 -1
  637. package/dist/utilities/renderTable.d.ts.map +1 -1
  638. package/dist/utilities/renderTable.js +4 -0
  639. package/dist/utilities/renderTable.js.map +1 -1
  640. package/dist/views/API/index.client.d.ts.map +1 -1
  641. package/dist/views/API/index.client.js +19 -1
  642. package/dist/views/API/index.client.js.map +1 -1
  643. package/dist/views/API/index.css +1 -2
  644. package/dist/views/CreateFirstUser/index.css +0 -2
  645. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  646. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +75 -116
  647. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  648. package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.d.ts +7 -0
  649. package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.d.ts.map +1 -0
  650. package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.js +65 -0
  651. package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.js.map +1 -0
  652. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts +2 -1
  653. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  654. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +8 -2
  655. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  656. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  657. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +127 -91
  658. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  659. package/dist/views/Dashboard/Default/ModularDashboard/index.css +9 -6
  660. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
  661. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +3 -0
  662. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  663. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.d.ts.map +1 -1
  664. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js +2 -38
  665. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js.map +1 -1
  666. package/dist/views/Document/index.js +1 -1
  667. package/dist/views/Document/index.js.map +1 -1
  668. package/dist/views/Document/renderDocumentSlots.d.ts +1 -1
  669. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  670. package/dist/views/Document/renderDocumentSlots.js +10 -3
  671. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  672. package/dist/views/Edit/Auth/index.css +4 -5
  673. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  674. package/dist/views/ForgotPassword/index.js +1 -3
  675. package/dist/views/ForgotPassword/index.js.map +1 -1
  676. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
  677. package/dist/views/HierarchyList/DocumentListSelection/index.js +104 -105
  678. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  679. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -1
  680. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +79 -63
  681. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
  682. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.d.ts.map +1 -1
  683. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js +35 -87
  684. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +1 -1
  685. package/dist/views/HierarchyList/HierarchyTable/SlotTable.css +0 -101
  686. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +2 -0
  687. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
  688. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +45 -32
  689. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
  690. package/dist/views/HierarchyList/HierarchyTable/index.css +51 -41
  691. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +3 -1
  692. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  693. package/dist/views/HierarchyList/HierarchyTable/index.js +80 -6
  694. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  695. package/dist/views/HierarchyList/getHierarchyListURL.d.ts +7 -0
  696. package/dist/views/HierarchyList/getHierarchyListURL.d.ts.map +1 -0
  697. package/dist/views/HierarchyList/getHierarchyListURL.js +22 -0
  698. package/dist/views/HierarchyList/getHierarchyListURL.js.map +1 -0
  699. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  700. package/dist/views/HierarchyList/index.js +32 -11
  701. package/dist/views/HierarchyList/index.js.map +1 -1
  702. package/dist/views/List/DocumentGrid/index.d.ts +17 -0
  703. package/dist/views/List/DocumentGrid/index.d.ts.map +1 -0
  704. package/dist/views/List/DocumentGrid/index.js +152 -0
  705. package/dist/views/List/DocumentGrid/index.js.map +1 -0
  706. package/dist/views/List/GroupedDocumentGrid/index.css +17 -0
  707. package/dist/views/List/GroupedDocumentGrid/index.d.ts +14 -0
  708. package/dist/views/List/GroupedDocumentGrid/index.d.ts.map +1 -0
  709. package/dist/views/List/GroupedDocumentGrid/index.js +99 -0
  710. package/dist/views/List/GroupedDocumentGrid/index.js.map +1 -0
  711. package/dist/views/List/ListHeader/index.css +4 -5
  712. package/dist/views/List/ListHeader/index.d.ts +1 -0
  713. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  714. package/dist/views/List/ListHeader/index.js +5 -2
  715. package/dist/views/List/ListHeader/index.js.map +1 -1
  716. package/dist/views/List/getDocumentListItemURL.d.ts +9 -0
  717. package/dist/views/List/getDocumentListItemURL.d.ts.map +1 -0
  718. package/dist/views/List/getDocumentListItemURL.js +23 -0
  719. package/dist/views/List/getDocumentListItemURL.js.map +1 -0
  720. package/dist/views/List/handleGroupBy.d.ts +6 -2
  721. package/dist/views/List/handleGroupBy.d.ts.map +1 -1
  722. package/dist/views/List/handleGroupBy.js +13 -3
  723. package/dist/views/List/handleGroupBy.js.map +1 -1
  724. package/dist/views/List/index.client.d.ts.map +1 -1
  725. package/dist/views/List/index.client.js +207 -129
  726. package/dist/views/List/index.client.js.map +1 -1
  727. package/dist/views/List/index.css +1 -2
  728. package/dist/views/List/index.d.ts.map +1 -1
  729. package/dist/views/List/index.js +57 -3
  730. package/dist/views/List/index.js.map +1 -1
  731. package/dist/views/List/renderListViewSlots.d.ts +3 -2
  732. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  733. package/dist/views/List/renderListViewSlots.js +12 -4
  734. package/dist/views/List/renderListViewSlots.js.map +1 -1
  735. package/dist/views/List/resolveDocumentListItemURL.d.ts +11 -0
  736. package/dist/views/List/resolveDocumentListItemURL.d.ts.map +1 -0
  737. package/dist/views/List/resolveDocumentListItemURL.js +30 -0
  738. package/dist/views/List/resolveDocumentListItemURL.js.map +1 -0
  739. package/dist/views/NotFound/index.css +0 -2
  740. package/dist/views/ResetPassword/index.d.ts.map +1 -1
  741. package/dist/views/ResetPassword/index.js +1 -3
  742. package/dist/views/ResetPassword/index.js.map +1 -1
  743. package/dist/views/Root/getRouteData.d.ts +1 -8
  744. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  745. package/dist/views/Root/getRouteData.js +3 -12
  746. package/dist/views/Root/getRouteData.js.map +1 -1
  747. package/dist/views/Unauthorized/index.css +0 -2
  748. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  749. package/dist/views/Unauthorized/index.js +2 -1
  750. package/dist/views/Unauthorized/index.js.map +1 -1
  751. package/dist/views/Version/Default/index.css +7 -11
  752. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.css +0 -1
  753. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.css +0 -1
  754. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.css +3 -4
  755. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.css +0 -1
  756. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
  757. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +3 -1
  758. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  759. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.css +0 -1
  760. package/dist/views/Versions/VersionPillLabel/index.css +1 -2
  761. package/dist/views/Versions/index.client.d.ts.map +1 -1
  762. package/dist/views/Versions/index.client.js +3 -1
  763. package/dist/views/Versions/index.client.js.map +1 -1
  764. package/dist/views/Versions/index.css +1 -1
  765. package/dist/widgets/CollectionCards/index.client.d.ts.map +1 -1
  766. package/dist/widgets/CollectionCards/index.client.js +8 -6
  767. package/dist/widgets/CollectionCards/index.client.js.map +1 -1
  768. package/dist/widgets/CollectionCards/index.css +30 -38
  769. package/dist/widgets/CollectionCards/index.d.ts.map +1 -1
  770. package/dist/widgets/CollectionCards/index.js +7 -5
  771. package/dist/widgets/CollectionCards/index.js.map +1 -1
  772. package/dist/widgets/CollectionQuery/index.css +4 -6
  773. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts +1 -1
  774. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +1 -1
  775. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -1
  776. package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts +4 -0
  777. package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts.map +1 -0
  778. package/dist/widgets/UploadDropzone/CollectionsField/index.js +29 -0
  779. package/dist/widgets/UploadDropzone/CollectionsField/index.js.map +1 -0
  780. package/dist/widgets/UploadDropzone/index.client.d.ts +10 -0
  781. package/dist/widgets/UploadDropzone/index.client.d.ts.map +1 -0
  782. package/dist/widgets/UploadDropzone/index.client.js +78 -0
  783. package/dist/widgets/UploadDropzone/index.client.js.map +1 -0
  784. package/dist/widgets/UploadDropzone/index.css +80 -0
  785. package/dist/widgets/UploadDropzone/index.d.ts +12 -0
  786. package/dist/widgets/UploadDropzone/index.d.ts.map +1 -0
  787. package/dist/widgets/UploadDropzone/index.js +58 -0
  788. package/dist/widgets/UploadDropzone/index.js.map +1 -0
  789. package/dist/widgets/Welcome/getWelcomeDisplay.d.ts +7 -0
  790. package/dist/widgets/Welcome/getWelcomeDisplay.d.ts.map +1 -0
  791. package/dist/widgets/Welcome/getWelcomeDisplay.js +21 -0
  792. package/dist/widgets/Welcome/getWelcomeDisplay.js.map +1 -0
  793. package/dist/widgets/Welcome/index.css +25 -0
  794. package/dist/widgets/Welcome/index.d.ts +5 -0
  795. package/dist/widgets/Welcome/index.d.ts.map +1 -0
  796. package/dist/widgets/Welcome/index.js +25 -0
  797. package/dist/widgets/Welcome/index.js.map +1 -0
  798. package/dist/widgets/WidgetCard/index.css +4 -8
  799. package/package.json +35 -10
  800. package/dist/providers/Root/index.d.ts +0 -25
  801. package/dist/providers/Root/index.d.ts.map +0 -1
  802. package/dist/providers/Root/index.js +0 -156
  803. package/dist/providers/Root/index.js.map +0 -1
  804. package/dist/utilities/dateLocales.d.ts +0 -30
  805. package/dist/utilities/dateLocales.d.ts.map +0 -1
  806. package/dist/utilities/dateLocales.js +0 -57
  807. package/dist/utilities/dateLocales.js.map +0 -1
@@ -2,7 +2,6 @@
2
2
 
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { transformWhereQuery, validateWhereQuery } from 'payload/shared';
5
- import * as qs from 'qs-esm';
6
5
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
7
6
  import { useListDrawerContext } from '../../elements/ListDrawer/Provider.js';
8
7
  import { useEffectEvent } from '../../hooks/useEffectEvent.js';
@@ -10,6 +9,7 @@ import { useRouteTransition } from '../../providers/RouteTransition/index.js';
10
9
  import { parseSearchParams } from '../../utilities/parseSearchParams.js';
11
10
  import { useRouter, useSearchParams } from '../RouterAdapter/index.js';
12
11
  import { ListQueryContext, ListQueryModifiedContext } from './context.js';
12
+ import { getSearchWithListQuery } from './getSearchWithListQuery.js';
13
13
  import { mergeQuery } from './mergeQuery.js';
14
14
  import { sanitizeQuery } from './sanitizeQuery.js';
15
15
  export { useListQuery } from './context.js';
@@ -40,7 +40,7 @@ export const ListQueryProvider = ({
40
40
  const queryFromURL = useMemo(() => sanitizeQuery(parseSearchParams(rawSearchParams)), [rawSearchParams]);
41
41
  const [query, setQuery] = useState(() => {
42
42
  if (modifySearchParams) {
43
- return queryFromURL;
43
+ return queryFromProps ? sanitizeQuery(queryFromProps) : queryFromURL;
44
44
  } else {
45
45
  return {
46
46
  limit: queryFromProps.limit,
@@ -48,6 +48,7 @@ export const ListQueryProvider = ({
48
48
  };
49
49
  }
50
50
  });
51
+ const [searchInput, setSearchInput] = useState(query?.search || '');
51
52
  const refineListData = useCallback(
52
53
  // eslint-disable-next-line @typescript-eslint/require-await
53
54
  async (incomingQuery, modified_0) => {
@@ -59,11 +60,11 @@ export const ListQueryProvider = ({
59
60
  }
60
61
  });
61
62
  if (modifySearchParams) {
62
- const search = `?${qs.stringify({
63
- ...newQuery,
64
- columns: JSON.stringify(newQuery.columns),
65
- queryByGroup: JSON.stringify(newQuery.queryByGroup)
66
- })}`;
63
+ const search = getSearchWithListQuery({
64
+ currentSearch: window.location.search,
65
+ query: newQuery,
66
+ updatedQuery: incomingQuery
67
+ });
67
68
  if (window.location.search !== search) {
68
69
  startRouteTransition(() => router.replace(search, {
69
70
  scroll: false
@@ -112,11 +113,10 @@ export const ListQueryProvider = ({
112
113
  ...(query || {}),
113
114
  ...(queryFromProps || {})
114
115
  });
115
- const search_1 = `?${qs.stringify({
116
- ...newQuery_0,
117
- columns: JSON.stringify(newQuery_0.columns),
118
- queryByGroup: JSON.stringify(newQuery_0.queryByGroup)
119
- })}`;
116
+ const search_1 = getSearchWithListQuery({
117
+ currentSearch: window.location.search,
118
+ query: newQuery_0
119
+ });
120
120
  if (window.location.search !== search_1) {
121
121
  setQuery(newQuery_0);
122
122
  // Important: do not use router.replace here to avoid re-rendering.
@@ -172,7 +172,11 @@ export const ListQueryProvider = ({
172
172
  orderableFieldName,
173
173
  query,
174
174
  refineListData,
175
+ resolvedGroupBy: queryFromProps?.groupBy,
176
+ resolvedSearch: queryFromProps?.search,
177
+ searchInput,
175
178
  setModified,
179
+ setSearchInput,
176
180
  ...contextRef.current
177
181
  },
178
182
  children: /*#__PURE__*/_jsx(ListQueryModifiedContext, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["transformWhereQuery","validateWhereQuery","qs","React","useCallback","useEffect","useMemo","useRef","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","useRouter","useSearchParams","ListQueryContext","ListQueryModifiedContext","mergeQuery","sanitizeQuery","useListQuery","ListQueryProvider","children","collectionSlug","data","modifySearchParams","onQueryChange","onQueryChangeFromProps","orderableFieldName","query","queryFromProps","router","rawSearchParams","startRouteTransition","modified","setModified","contextRef","current","onQueryChangeFromContext","queryFromURL","setQuery","limit","sort","refineListData","incomingQuery","newQuery","defaults","search","stringify","columns","JSON","queryByGroup","window","location","replace","scroll","handlePageChange","arg","page","handlePerPageChange","handleSearchChange","undefined","handleSortChange","handleWhereChange","where","syncPropsToURL","replaceState","history","hasActiveFilters","normalizedWhere","or","some","orGroup","and","andGroup","field","Object","keys","operatorObj","operator","Boolean","_jsx","value","defaultLimit","isGroupingBy","groupBy"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport { type ListQuery, type Where } from 'payload'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useRouter, useSearchParams } from '../RouterAdapter/index.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\nimport { mergeQuery } from './mergeQuery.js'\nimport { sanitizeQuery } from './sanitizeQuery.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n data,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n orderableFieldName,\n query: queryFromProps,\n}) => {\n // TODO: Investigate if this is still needed\n 'use no memo'\n\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n const contextRef = useRef({} as IListQueryContext)\n contextRef.current.modified = modified\n\n const { onQueryChange: onQueryChangeFromContext } = useListDrawerContext()\n const onQueryChange = onQueryChangeFromContext || onQueryChangeFromProps\n\n const queryFromURL = useMemo<ListQuery>(\n () => sanitizeQuery(parseSearchParams(rawSearchParams)),\n [rawSearchParams],\n )\n\n const [query, setQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return queryFromURL\n } else {\n return {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n }\n }\n })\n\n const refineListData = useCallback(\n // eslint-disable-next-line @typescript-eslint/require-await\n async (incomingQuery: ListQuery, modified?: boolean) => {\n setModified(modified ?? true)\n\n const newQuery = mergeQuery(query, incomingQuery, {\n defaults: {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n },\n })\n\n if (modifySearchParams) {\n const search = `?${qs.stringify({\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n })}`\n if (window.location.search !== search) {\n startRouteTransition(() => router.replace(search, { scroll: false }))\n }\n } else if (typeof onQueryChange === 'function') {\n onQueryChange(newQuery)\n }\n\n setQuery(newQuery)\n },\n [\n query,\n queryFromProps.limit,\n queryFromProps.sort,\n modifySearchParams,\n onQueryChange,\n startRouteTransition,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: arg })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: arg, page: 1 })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (sort: string) => {\n await refineListData({ sort })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (where: Where) => {\n await refineListData({ where })\n },\n [refineListData],\n )\n\n /**\n * The server component may pass props to this client component, e.g. from\n * fetching the query from preferences.\n * This effect is responsible for syncing the props back to the URL, without\n * triggering a re-render.\n */\n const syncPropsToURL = useEffectEvent(() => {\n const newQuery = sanitizeQuery({ ...(query || {}), ...(queryFromProps || {}) })\n\n const search = `?${qs.stringify({\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n })}`\n\n if (window.location.search !== search) {\n setQuery(newQuery)\n // Important: do not use router.replace here to avoid re-rendering.\n // Go through the adapter's replaceState so routers that observe history\n // mutations (e.g. TanStack) don't re-run their loader and double-load the\n // view. Falls back to the native call for adapters that don't implement it.\n if (router.replaceState) {\n router.replaceState(search)\n } else {\n window.history.replaceState(null, '', search)\n }\n }\n })\n\n // If `query` is updated externally, update the local state\n // E.g. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams && queryFromProps) {\n syncPropsToURL()\n }\n }, [modifySearchParams, queryFromProps])\n\n const hasActiveFilters = useMemo(() => {\n if (!query?.where) {\n return false\n }\n\n // Normalize flat/invalid where queries (e.g. `{ title: { equals } }`) into the\n // `or/and` structure so they are detected the same way the WhereBuilder reads them.\n const normalizedWhere = validateWhereQuery(query.where)\n ? query.where\n : transformWhereQuery(query.where)\n\n return (normalizedWhere.or ?? []).some((orGroup) =>\n (orGroup.and ?? []).some((andGroup) => {\n const field = Object.keys(andGroup)[0]\n if (!field) {\n return false\n }\n const operatorObj = andGroup[field]\n if (!operatorObj || typeof operatorObj !== 'object') {\n return false\n }\n const operator = Object.keys(operatorObj)[0]\n return Boolean(operator) && (operatorObj as Record<string, unknown>)[operator] !== undefined\n }),\n )\n }, [query?.where])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n defaultLimit: data?.limit,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n hasActiveFilters,\n isGroupingBy: Boolean(query?.groupBy),\n orderableFieldName,\n query,\n refineListData,\n setModified,\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["transformWhereQuery","validateWhereQuery","React","useCallback","useEffect","useMemo","useRef","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","useRouter","useSearchParams","ListQueryContext","ListQueryModifiedContext","getSearchWithListQuery","mergeQuery","sanitizeQuery","useListQuery","ListQueryProvider","children","collectionSlug","data","modifySearchParams","onQueryChange","onQueryChangeFromProps","orderableFieldName","query","queryFromProps","router","rawSearchParams","startRouteTransition","modified","setModified","contextRef","current","onQueryChangeFromContext","queryFromURL","setQuery","limit","sort","searchInput","setSearchInput","search","refineListData","incomingQuery","newQuery","defaults","currentSearch","window","location","updatedQuery","replace","scroll","handlePageChange","arg","page","handlePerPageChange","handleSearchChange","undefined","handleSortChange","handleWhereChange","where","syncPropsToURL","replaceState","history","hasActiveFilters","normalizedWhere","or","some","orGroup","and","andGroup","field","Object","keys","operatorObj","operator","Boolean","_jsx","value","defaultLimit","isGroupingBy","groupBy","resolvedGroupBy","resolvedSearch"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport { type ListQuery, type Where } from 'payload'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useRouter, useSearchParams } from '../RouterAdapter/index.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\nimport { getSearchWithListQuery } from './getSearchWithListQuery.js'\nimport { mergeQuery } from './mergeQuery.js'\nimport { sanitizeQuery } from './sanitizeQuery.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n data,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n orderableFieldName,\n query: queryFromProps,\n}) => {\n // TODO: Investigate if this is still needed\n 'use no memo'\n\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n const contextRef = useRef({} as IListQueryContext)\n contextRef.current.modified = modified\n\n const { onQueryChange: onQueryChangeFromContext } = useListDrawerContext()\n const onQueryChange = onQueryChangeFromContext || onQueryChangeFromProps\n\n const queryFromURL = useMemo<ListQuery>(\n () => sanitizeQuery(parseSearchParams(rawSearchParams)),\n [rawSearchParams],\n )\n\n const [query, setQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return queryFromProps ? sanitizeQuery(queryFromProps) : queryFromURL\n } else {\n return {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n }\n }\n })\n\n const [searchInput, setSearchInput] = useState(query?.search || '')\n\n const refineListData = useCallback(\n // eslint-disable-next-line @typescript-eslint/require-await\n async (incomingQuery: ListQuery, modified?: boolean) => {\n setModified(modified ?? true)\n\n const newQuery = mergeQuery(query, incomingQuery, {\n defaults: {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n },\n })\n\n if (modifySearchParams) {\n const search = getSearchWithListQuery({\n currentSearch: window.location.search,\n query: newQuery,\n updatedQuery: incomingQuery,\n })\n if (window.location.search !== search) {\n startRouteTransition(() => router.replace(search, { scroll: false }))\n }\n } else if (typeof onQueryChange === 'function') {\n onQueryChange(newQuery)\n }\n\n setQuery(newQuery)\n },\n [\n query,\n queryFromProps.limit,\n queryFromProps.sort,\n modifySearchParams,\n onQueryChange,\n startRouteTransition,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: arg })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: arg, page: 1 })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (sort: string) => {\n await refineListData({ sort })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (where: Where) => {\n await refineListData({ where })\n },\n [refineListData],\n )\n\n /**\n * The server component may pass props to this client component, e.g. from\n * fetching the query from preferences.\n * This effect is responsible for syncing the props back to the URL, without\n * triggering a re-render.\n */\n const syncPropsToURL = useEffectEvent(() => {\n const newQuery = sanitizeQuery({ ...(query || {}), ...(queryFromProps || {}) })\n\n const search = getSearchWithListQuery({\n currentSearch: window.location.search,\n query: newQuery,\n })\n\n if (window.location.search !== search) {\n setQuery(newQuery)\n // Important: do not use router.replace here to avoid re-rendering.\n // Go through the adapter's replaceState so routers that observe history\n // mutations (e.g. TanStack) don't re-run their loader and double-load the\n // view. Falls back to the native call for adapters that don't implement it.\n if (router.replaceState) {\n router.replaceState(search)\n } else {\n window.history.replaceState(null, '', search)\n }\n }\n })\n\n // If `query` is updated externally, update the local state\n // E.g. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams && queryFromProps) {\n syncPropsToURL()\n }\n }, [modifySearchParams, queryFromProps])\n\n const hasActiveFilters = useMemo(() => {\n if (!query?.where) {\n return false\n }\n\n // Normalize flat/invalid where queries (e.g. `{ title: { equals } }`) into the\n // `or/and` structure so they are detected the same way the WhereBuilder reads them.\n const normalizedWhere = validateWhereQuery(query.where)\n ? query.where\n : transformWhereQuery(query.where)\n\n return (normalizedWhere.or ?? []).some((orGroup) =>\n (orGroup.and ?? []).some((andGroup) => {\n const field = Object.keys(andGroup)[0]\n if (!field) {\n return false\n }\n const operatorObj = andGroup[field]\n if (!operatorObj || typeof operatorObj !== 'object') {\n return false\n }\n const operator = Object.keys(operatorObj)[0]\n return Boolean(operator) && (operatorObj as Record<string, unknown>)[operator] !== undefined\n }),\n )\n }, [query?.where])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n defaultLimit: data?.limit,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n hasActiveFilters,\n isGroupingBy: Boolean(query?.groupBy),\n orderableFieldName,\n query,\n refineListData,\n resolvedGroupBy: queryFromProps?.groupBy,\n resolvedSearch: queryFromProps?.search,\n searchInput,\n setModified,\n setSearchInput,\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n"],"mappings":"AAAA;;;AAEA,SAASA,mBAAmB,EAAEC,kBAAkB,QAAQ;AACxD,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAIzE,SAASC,oBAAoB,QAAQ;AACrC,SAASC,cAAc,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,SAAS,EAAEC,eAAe,QAAQ;AAC3C,SAASC,gBAAgB,EAAEC,wBAAwB,QAAQ;AAC3D,SAASC,sBAAsB,QAAQ;AACvC,SAASC,UAAU,QAAQ;AAC3B,SAASC,aAAa,QAAQ;AAE9B,SAASC,YAAY,QAAQ;AAE7B,OAAO,MAAMC,iBAAA,GAA8CA,CAAC;EAC1DC,QAAQ;EACRC,cAAc;EACdC,IAAI;EACJC,kBAAkB;EAClBC,aAAA,EAAeC,sBAAsB;EACrCC,kBAAkB;EAClBC,KAAA,EAAOC;AAAc,CACtB;EACC;EACA;;EAEA,MAAMC,MAAA,GAASlB,SAAA;EACf,MAAMmB,eAAA,GAAkBlB,eAAA;EACxB,MAAM;IAAEmB;EAAoB,CAAE,GAAGtB,kBAAA;EACjC,MAAM,CAACuB,QAAA,EAAUC,WAAA,CAAY,GAAG3B,QAAA,CAAS;EACzC,MAAM4B,UAAA,GAAa7B,MAAA,CAAO,CAAC;EAC3B6B,UAAA,CAAWC,OAAO,CAACH,QAAQ,GAAGA,QAAA;EAE9B,MAAM;IAAER,aAAA,EAAeY;EAAwB,CAAE,GAAG7B,oBAAA;EACpD,MAAMiB,aAAA,GAAgBY,wBAAA,IAA4BX,sBAAA;EAElD,MAAMY,YAAA,GAAejC,OAAA,CACnB,MAAMa,aAAA,CAAcP,iBAAA,CAAkBoB,eAAA,IACtC,CAACA,eAAA,CAAgB;EAGnB,MAAM,CAACH,KAAA,EAAOW,QAAA,CAAS,GAAGhC,QAAA,CAAoB;IAC5C,IAAIiB,kBAAA,EAAoB;MACtB,OAAOK,cAAA,GAAiBX,aAAA,CAAcW,cAAA,IAAkBS,YAAA;IAC1D,OAAO;MACL,OAAO;QACLE,KAAA,EAAOX,cAAA,CAAeW,KAAK;QAC3BC,IAAA,EAAMZ,cAAA,CAAeY;MACvB;IACF;EACF;EAEA,MAAM,CAACC,WAAA,EAAaC,cAAA,CAAe,GAAGpC,QAAA,CAASqB,KAAA,EAAOgB,MAAA,IAAU;EAEhE,MAAMC,cAAA,GAAiB1C,WAAA;EACrB;EACA,OAAO2C,aAAA,EAA0Bb,UAAA;IAC/BC,WAAA,CAAYD,UAAA,IAAY;IAExB,MAAMc,QAAA,GAAW9B,UAAA,CAAWW,KAAA,EAAOkB,aAAA,EAAe;MAChDE,QAAA,EAAU;QACRR,KAAA,EAAOX,cAAA,CAAeW,KAAK;QAC3BC,IAAA,EAAMZ,cAAA,CAAeY;MACvB;IACF;IAEA,IAAIjB,kBAAA,EAAoB;MACtB,MAAMoB,MAAA,GAAS5B,sBAAA,CAAuB;QACpCiC,aAAA,EAAeC,MAAA,CAAOC,QAAQ,CAACP,MAAM;QACrChB,KAAA,EAAOmB,QAAA;QACPK,YAAA,EAAcN;MAChB;MACA,IAAII,MAAA,CAAOC,QAAQ,CAACP,MAAM,KAAKA,MAAA,EAAQ;QACrCZ,oBAAA,CAAqB,MAAMF,MAAA,CAAOuB,OAAO,CAACT,MAAA,EAAQ;UAAEU,MAAA,EAAQ;QAAM;MACpE;IACF,OAAO,IAAI,OAAO7B,aAAA,KAAkB,YAAY;MAC9CA,aAAA,CAAcsB,QAAA;IAChB;IAEAR,QAAA,CAASQ,QAAA;EACX,GACA,CACEnB,KAAA,EACAC,cAAA,CAAeW,KAAK,EACpBX,cAAA,CAAeY,IAAI,EACnBjB,kBAAA,EACAC,aAAA,EACAO,oBAAA,EACAF,MAAA,CACD;EAGH,MAAMyB,gBAAA,GAAmBpD,WAAA,CACvB,MAAOqD,GAAA;IACL,MAAMX,cAAA,CAAe;MAAEY,IAAA,EAAMD;IAAI;EACnC,GACA,CAACX,cAAA,CAAe;EAGlB,MAAMa,mBAAA,GAAsBxD,KAAA,CAAMC,WAAW,CAC3C,MAAOqD,KAAA;IACL,MAAMX,cAAA,CAAe;MAAEL,KAAA,EAAOgB,KAAA;MAAKC,IAAA,EAAM;IAAE;EAC7C,GACA,CAACZ,cAAA,CAAe;EAGlB,MAAMc,kBAAA,GAAqBxD,WAAA,CACzB,MAAOqD,KAAA;IACL,MAAMZ,QAAA,GAASY,KAAA,KAAQ,KAAKI,SAAA,GAAYJ,KAAA;IACxC,MAAMX,cAAA,CAAe;MAAED,MAAA,EAAAA;IAAO;EAChC,GACA,CAACC,cAAA,CAAe;EAGlB,MAAMgB,gBAAA,GAAmB1D,WAAA,CACvB,MAAOsC,IAAA;IACL,MAAMI,cAAA,CAAe;MAAEJ;IAAK;EAC9B,GACA,CAACI,cAAA,CAAe;EAGlB,MAAMiB,iBAAA,GAAoB3D,WAAA,CACxB,MAAO4D,KAAA;IACL,MAAMlB,cAAA,CAAe;MAAEkB;IAAM;EAC/B,GACA,CAAClB,cAAA,CAAe;EAGlB;;;;;;EAMA,MAAMmB,cAAA,GAAiBvD,cAAA,CAAe;IACpC,MAAMsC,UAAA,GAAW7B,aAAA,CAAc;MAAE,IAAIU,KAAA,IAAS,CAAC,CAAC;MAAG,IAAIC,cAAA,IAAkB,CAAC,CAAC;IAAE;IAE7E,MAAMe,QAAA,GAAS5B,sBAAA,CAAuB;MACpCiC,aAAA,EAAeC,MAAA,CAAOC,QAAQ,CAACP,MAAM;MACrChB,KAAA,EAAOmB;IACT;IAEA,IAAIG,MAAA,CAAOC,QAAQ,CAACP,MAAM,KAAKA,QAAA,EAAQ;MACrCL,QAAA,CAASQ,UAAA;MACT;MACA;MACA;MACA;MACA,IAAIjB,MAAA,CAAOmC,YAAY,EAAE;QACvBnC,MAAA,CAAOmC,YAAY,CAACrB,QAAA;MACtB,OAAO;QACLM,MAAA,CAAOgB,OAAO,CAACD,YAAY,CAAC,MAAM,IAAIrB,QAAA;MACxC;IACF;EACF;EAEA;EACA;EACAxC,SAAA,CAAU;IACR,IAAIoB,kBAAA,IAAsBK,cAAA,EAAgB;MACxCmC,cAAA;IACF;EACF,GAAG,CAACxC,kBAAA,EAAoBK,cAAA,CAAe;EAEvC,MAAMsC,gBAAA,GAAmB9D,OAAA,CAAQ;IAC/B,IAAI,CAACuB,KAAA,EAAOmC,KAAA,EAAO;MACjB,OAAO;IACT;IAEA;IACA;IACA,MAAMK,eAAA,GAAkBnE,kBAAA,CAAmB2B,KAAA,CAAMmC,KAAK,IAClDnC,KAAA,CAAMmC,KAAK,GACX/D,mBAAA,CAAoB4B,KAAA,CAAMmC,KAAK;IAEnC,OAAO,CAACK,eAAA,CAAgBC,EAAE,IAAI,EAAE,EAAEC,IAAI,CAAEC,OAAA,IACtC,CAACA,OAAA,CAAQC,GAAG,IAAI,EAAE,EAAEF,IAAI,CAAEG,QAAA;MACxB,MAAMC,KAAA,GAAQC,MAAA,CAAOC,IAAI,CAACH,QAAA,CAAS,CAAC,EAAE;MACtC,IAAI,CAACC,KAAA,EAAO;QACV,OAAO;MACT;MACA,MAAMG,WAAA,GAAcJ,QAAQ,CAACC,KAAA,CAAM;MACnC,IAAI,CAACG,WAAA,IAAe,OAAOA,WAAA,KAAgB,UAAU;QACnD,OAAO;MACT;MACA,MAAMC,QAAA,GAAWH,MAAA,CAAOC,IAAI,CAACC,WAAA,CAAY,CAAC,EAAE;MAC5C,OAAOE,OAAA,CAAQD,QAAA,KAAaD,WAAwC,CAACC,QAAA,CAAS,KAAKlB,SAAA;IACrF;EAEJ,GAAG,CAAChC,KAAA,EAAOmC,KAAA,CAAM;EAEjB,oBACEiB,IAAA,CAAClE,gBAAA;IACCmE,KAAA,EAAO;MACL3D,cAAA;MACAC,IAAA;MACA2D,YAAA,EAAc3D,IAAA,EAAMiB,KAAA;MACpBe,gBAAA;MACAG,mBAAA;MACAC,kBAAA;MACAE,gBAAA;MACAC,iBAAA;MACAK,gBAAA;MACAgB,YAAA,EAAcJ,OAAA,CAAQnD,KAAA,EAAOwD,OAAA;MAC7BzD,kBAAA;MACAC,KAAA;MACAiB,cAAA;MACAwC,eAAA,EAAiBxD,cAAA,EAAgBuD,OAAA;MACjCE,cAAA,EAAgBzD,cAAA,EAAgBe,MAAA;MAChCF,WAAA;MACAR,WAAA;MACAS,cAAA;MACA,GAAGR,UAAA,CAAWC;IAChB;cAEA,aAAA4C,IAAA,CAACjE,wBAAA;MAAyBkE,KAAA,EAAOhD,QAAA;gBAAWZ;;;AAGlD","ignoreList":[]}
@@ -35,7 +35,11 @@ export type IListQueryContext = {
35
35
  orderableFieldName?: string;
36
36
  query: ListQuery;
37
37
  refineListData: (args: ListQuery, setModified?: boolean) => Promise<void>;
38
+ resolvedGroupBy?: string;
39
+ resolvedSearch?: string;
40
+ searchInput: string;
38
41
  setModified: (modified: boolean) => void;
42
+ setSearchInput: (search: string) => void;
39
43
  } & ContextHandlers;
40
44
  export {};
41
45
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,SAAS,EAET,aAAa,EACb,IAAI,EACJ,KAAK,EACN,MAAM,SAAS,CAAA;AAEhB,KAAK,eAAe,GAAG;IACrB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACxD,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;IAC1C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC9C,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,8EAA8E;IAC9E,gBAAgB,EAAE,OAAO,CAAA;IACzB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,KAAK,EAAE,SAAS,CAAA;IAChB,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;CACzC,GAAG,eAAe,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,SAAS,EAET,aAAa,EACb,IAAI,EACJ,KAAK,EACN,MAAM,SAAS,CAAA;AAEhB,KAAK,eAAe,GAAG;IACrB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACxD,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;IAC1C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC9C,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,8EAA8E;IAC9E,gBAAgB,EAAE,OAAO,CAAA;IACzB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,KAAK,EAAE,SAAS,CAAA;IAChB,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACzC,GAAG,eAAe,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/providers/ListQuery/types.ts"],"sourcesContent":["import type {\n ClientCollectionConfig,\n ListQuery,\n PaginatedDistinctDocs,\n PaginatedDocs,\n Sort,\n Where,\n} from 'payload'\n\ntype ContextHandlers = {\n handlePageChange?: (page: number) => Promise<void>\n handlePerPageChange?: (limit: number) => Promise<void>\n handleSearchChange?: (search: string) => Promise<void>\n handleSortChange?: (sort: string) => Promise<void>\n handleWhereChange?: (where: Where) => Promise<void>\n}\n\nexport type OnListQueryChange = (query: ListQuery) => void\n\nexport type ListQueryProps = {\n readonly children: React.ReactNode\n readonly collectionSlug?: ClientCollectionConfig['slug']\n readonly data: PaginatedDocs | undefined\n readonly modifySearchParams?: boolean\n readonly onQueryChange?: OnListQueryChange\n readonly orderableFieldName?: string\n /**\n * @deprecated\n */\n readonly preferenceKey?: string\n readonly query?: ListQuery\n}\n\nexport type IListQueryContext = {\n collectionSlug: ClientCollectionConfig['slug']\n data: ListQueryProps['data']\n defaultLimit?: number\n defaultSort?: Sort\n /** True when the where query contains at least one condition with a value. */\n hasActiveFilters: boolean\n /**\n * @experimental This prop is subject to change. Use at your own risk.\n */\n isGroupingBy: boolean\n modified: boolean\n orderableFieldName?: string\n query: ListQuery\n refineListData: (args: ListQuery, setModified?: boolean) => Promise<void>\n setModified: (modified: boolean) => void\n} & ContextHandlers\n"],"mappings":"AAiCA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/providers/ListQuery/types.ts"],"sourcesContent":["import type {\n ClientCollectionConfig,\n ListQuery,\n PaginatedDistinctDocs,\n PaginatedDocs,\n Sort,\n Where,\n} from 'payload'\n\ntype ContextHandlers = {\n handlePageChange?: (page: number) => Promise<void>\n handlePerPageChange?: (limit: number) => Promise<void>\n handleSearchChange?: (search: string) => Promise<void>\n handleSortChange?: (sort: string) => Promise<void>\n handleWhereChange?: (where: Where) => Promise<void>\n}\n\nexport type OnListQueryChange = (query: ListQuery) => void\n\nexport type ListQueryProps = {\n readonly children: React.ReactNode\n readonly collectionSlug?: ClientCollectionConfig['slug']\n readonly data: PaginatedDocs | undefined\n readonly modifySearchParams?: boolean\n readonly onQueryChange?: OnListQueryChange\n readonly orderableFieldName?: string\n /**\n * @deprecated\n */\n readonly preferenceKey?: string\n readonly query?: ListQuery\n}\n\nexport type IListQueryContext = {\n collectionSlug: ClientCollectionConfig['slug']\n data: ListQueryProps['data']\n defaultLimit?: number\n defaultSort?: Sort\n /** True when the where query contains at least one condition with a value. */\n hasActiveFilters: boolean\n /**\n * @experimental This prop is subject to change. Use at your own risk.\n */\n isGroupingBy: boolean\n modified: boolean\n orderableFieldName?: string\n query: ListQuery\n refineListData: (args: ListQuery, setModified?: boolean) => Promise<void>\n resolvedGroupBy?: string\n resolvedSearch?: string\n searchInput: string\n setModified: (modified: boolean) => void\n setSearchInput: (search: string) => void\n} & ContextHandlers\n"],"mappings":"AAiCA","ignoreList":[]}
@@ -1,5 +1,10 @@
1
1
  import React from 'react';
2
2
  import type { Preferences } from '../../forms/Form/types.js';
3
+ type PreferenceUpdater<T> = (current: null | T) => T;
4
+ type SetPreference = {
5
+ <T = Preferences>(key: string, updater: PreferenceUpdater<T>): Promise<void>;
6
+ <T = Preferences>(key: string, value: T, merge?: boolean): Promise<void>;
7
+ };
3
8
  type PreferencesContext = {
4
9
  getPreference: <T = Preferences>(key: string) => Promise<T>;
5
10
  /**
@@ -7,7 +12,8 @@ type PreferencesContext = {
7
12
  * @param value - preference data to store
8
13
  * @param merge - when true will combine the existing preference object batch the change into one request for objects, default = false
9
14
  */
10
- setPreference: <T = Preferences>(key: string, value: T, merge?: boolean) => Promise<void>;
15
+ setPreference: SetPreference;
16
+ syncPreference: <T = Preferences>(key: string, value: T) => void;
11
17
  };
12
18
  export declare const PreferencesProvider: React.FC<{
13
19
  children?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Preferences/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAEjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAQ5D,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3D;;;;OAIG;IACH,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1F,CAAA;AAYD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CA6IxE,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,kBAAkC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Preferences/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAEjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAQ5D,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;AAEpD,KAAK,aAAa,GAAG;IACnB,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5E,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACzE,CAAA;AAED,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3D;;;;OAIG;IACH,aAAa,EAAE,aAAa,CAAA;IAC5B,cAAc,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;CACjE,CAAA;AAYD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAmMxE,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,kBAAkC,CAAA"}
@@ -25,6 +25,8 @@ export const PreferencesProvider = ({
25
25
  const contextRef = useRef({});
26
26
  const preferencesRef = useRef({});
27
27
  const pendingUpdate = useRef({});
28
+ const pendingWrites = useRef({});
29
+ const updateQueues = useRef({});
28
30
  const {
29
31
  config
30
32
  } = useConfig();
@@ -43,6 +45,9 @@ export const PreferencesProvider = ({
43
45
  if (!user) {
44
46
  // clear preferences between users
45
47
  preferencesRef.current = {};
48
+ pendingUpdate.current = {};
49
+ pendingWrites.current = {};
50
+ updateQueues.current = {};
46
51
  }
47
52
  }, [user]);
48
53
  const getPreference = useCallback(async key => {
@@ -66,26 +71,62 @@ export const PreferencesProvider = ({
66
71
  const preference = await request.json();
67
72
  value = preference.value;
68
73
  }
69
- preferencesRef.current[key] = value;
70
- resolve(value);
74
+ if (prefs[key] === promise) {
75
+ prefs[key] = value;
76
+ resolve(value);
77
+ } else {
78
+ resolve(await prefs[key]);
79
+ }
71
80
  })();
72
81
  });
73
82
  prefs[key] = promise;
74
83
  return promise;
75
84
  }, [i18n.language, api, preferencesRef]);
76
- const setPreference = useCallback(async (key_0, value_0, merge = false) => {
85
+ const syncPreference = useCallback((key_0, value_0) => {
86
+ if (pendingWrites.current[key_0] || typeof pendingUpdate.current[key_0] !== 'undefined') {
87
+ return;
88
+ }
89
+ preferencesRef.current[key_0] = value_0;
90
+ }, []);
91
+ const setPreference = useCallback(async (key_1, value_1, merge = false) => {
92
+ if (typeof value_1 === 'function') {
93
+ const updater = value_1;
94
+ const previousUpdate = updateQueues.current[key_1] ?? Promise.resolve();
95
+ pendingWrites.current[key_1] = (pendingWrites.current[key_1] ?? 0) + 1;
96
+ const update = previousUpdate.then(async () => {
97
+ const current = await getPreference(key_1);
98
+ const nextValue = updater(current ?? null);
99
+ preferencesRef.current[key_1] = nextValue;
100
+ await requests.post(formatAdminURL({
101
+ apiRoute: api,
102
+ path: `/payload-preferences/${key_1}`
103
+ }), requestOptions(nextValue, i18n.language));
104
+ });
105
+ updateQueues.current[key_1] = update.catch(() => undefined);
106
+ try {
107
+ await update;
108
+ } finally {
109
+ pendingWrites.current[key_1] -= 1;
110
+ }
111
+ return;
112
+ }
77
113
  if (merge === false) {
78
- preferencesRef.current[key_0] = value_0;
79
- await requests.post(formatAdminURL({
80
- apiRoute: api,
81
- path: `/payload-preferences/${key_0}`
82
- }), requestOptions(value_0, i18n.language));
114
+ preferencesRef.current[key_1] = value_1;
115
+ pendingWrites.current[key_1] = (pendingWrites.current[key_1] ?? 0) + 1;
116
+ try {
117
+ await requests.post(formatAdminURL({
118
+ apiRoute: api,
119
+ path: `/payload-preferences/${key_1}`
120
+ }), requestOptions(value_1, i18n.language));
121
+ } finally {
122
+ pendingWrites.current[key_1] -= 1;
123
+ }
83
124
  return;
84
125
  }
85
- let newValue = value_0;
86
- const currentPreference = await getPreference(key_0);
126
+ let newValue = value_1;
127
+ const currentPreference = await getPreference(key_1);
87
128
  // handle value objects where multiple values can be set under one key
88
- if (typeof value_0 === 'object' && typeof currentPreference === 'object' && typeof newValue === 'object') {
129
+ if (typeof value_1 === 'object' && typeof currentPreference === 'object' && typeof newValue === 'object') {
89
130
  // merge the value with any existing preference for the key
90
131
  if (currentPreference) {
91
132
  newValue = deepMergeSimple(currentPreference, newValue);
@@ -94,37 +135,38 @@ export const PreferencesProvider = ({
94
135
  return;
95
136
  }
96
137
  // add the requested changes to a pendingUpdate batch for the key
97
- pendingUpdate.current[key_0] = {
98
- ...pendingUpdate.current[key_0],
138
+ pendingUpdate.current[key_1] = {
139
+ ...pendingUpdate.current[key_1],
99
140
  ...newValue
100
141
  };
101
142
  } else {
102
143
  if (newValue === currentPreference) {
103
144
  return;
104
145
  }
105
- pendingUpdate.current[key_0] = newValue;
146
+ pendingUpdate.current[key_1] = newValue;
106
147
  }
107
148
  const updatePreference = async () => {
108
149
  // compare the value stored in context before sending to eliminate duplicate requests
109
- if (dequal(pendingUpdate.current[key_0], preferencesRef.current[key_0])) {
150
+ if (dequal(pendingUpdate.current[key_1], preferencesRef.current[key_1])) {
110
151
  return;
111
152
  }
112
153
  // preference set in context here to prevent other updatePreference at the same time
113
- preferencesRef.current[key_0] = pendingUpdate.current[key_0];
154
+ preferencesRef.current[key_1] = pendingUpdate.current[key_1];
114
155
  await requests.post(formatAdminURL({
115
156
  apiRoute: api,
116
- path: `/payload-preferences/${key_0}`
117
- }), requestOptions(preferencesRef.current[key_0], i18n.language));
157
+ path: `/payload-preferences/${key_1}`
158
+ }), requestOptions(preferencesRef.current[key_1], i18n.language));
118
159
  // reset any changes for this key after sending the request
119
- delete pendingUpdate.current[key_0];
160
+ delete pendingUpdate.current[key_1];
120
161
  };
121
162
  // use timeout to allow multiple changes of different values using the same key in one request
122
163
  setTimeout(() => {
123
164
  void updatePreference();
124
165
  });
125
- }, [api, getPreference, i18n.language, pendingUpdate]);
166
+ }, [api, getPreference, i18n.language, pendingUpdate, updateQueues]);
126
167
  contextRef.current.getPreference = getPreference;
127
168
  contextRef.current.setPreference = setPreference;
169
+ contextRef.current.syncPreference = syncPreference;
128
170
  return /*#__PURE__*/_jsx(Context, {
129
171
  value: contextRef.current,
130
172
  children: children
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dequal","formatAdminURL","React","createContext","use","useCallback","useEffect","useRef","useTranslation","requests","deepMergeSimple","useAuth","useConfig","Context","requestOptions","value","language","body","JSON","stringify","headers","PreferencesProvider","children","contextRef","preferencesRef","pendingUpdate","config","user","i18n","routes","api","current","getPreference","key","prefs","promise","Promise","resolve","request","get","apiRoute","path","credentials","status","preference","json","setPreference","merge","post","newValue","currentPreference","updatePreference","setTimeout","_jsx","usePreferences"],"sources":["../../../src/providers/Preferences/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { formatAdminURL } from 'payload/shared'\nimport React, { createContext, use, useCallback, useEffect, useRef } from 'react'\n\nimport type { Preferences } from '../../forms/Form/types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { deepMergeSimple } from '../../utilities/deepMerge.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\ntype PreferencesContext = {\n getPreference: <T = Preferences>(key: string) => Promise<T>\n /**\n * @param key - a string identifier for the property being set\n * @param value - preference data to store\n * @param merge - when true will combine the existing preference object batch the change into one request for objects, default = false\n */\n setPreference: <T = Preferences>(key: string, value: T, merge?: boolean) => Promise<void>\n}\n\nconst Context = createContext({} as PreferencesContext)\n\nconst requestOptions = (value, language) => ({\n body: JSON.stringify({ value }),\n headers: {\n 'Accept-Language': language,\n 'Content-Type': 'application/json',\n },\n})\n\nexport const PreferencesProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const contextRef = useRef({} as PreferencesContext)\n const preferencesRef = useRef({})\n const pendingUpdate = useRef({})\n const { config } = useConfig()\n const { user } = useAuth()\n const { i18n } = useTranslation()\n\n const {\n routes: { api },\n } = config\n\n useEffect(() => {\n if (!user) {\n // clear preferences between users\n preferencesRef.current = {}\n }\n }, [user])\n\n const getPreference = useCallback(\n async <T = unknown,>(key: string): Promise<T> => {\n const prefs = preferencesRef.current\n\n if (typeof prefs[key] !== 'undefined') {\n return prefs[key]\n }\n\n const promise = new Promise((resolve: (value: T) => void) => {\n void (async () => {\n const request = await requests.get(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n let value = null\n\n if (request.status === 200) {\n const preference = await request.json()\n value = preference.value\n }\n\n preferencesRef.current[key] = value\n\n resolve(value)\n })()\n })\n\n prefs[key] = promise\n\n return promise\n },\n [i18n.language, api, preferencesRef],\n )\n\n const setPreference = useCallback(\n async (key: string, value: unknown, merge = false): Promise<void> => {\n if (merge === false) {\n preferencesRef.current[key] = value\n\n await requests.post(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n requestOptions(value, i18n.language),\n )\n\n return\n }\n\n let newValue = value\n const currentPreference = await getPreference(key)\n\n // handle value objects where multiple values can be set under one key\n if (\n typeof value === 'object' &&\n typeof currentPreference === 'object' &&\n typeof newValue === 'object'\n ) {\n // merge the value with any existing preference for the key\n if (currentPreference) {\n newValue = deepMergeSimple(currentPreference, newValue)\n }\n\n if (dequal(newValue, currentPreference)) {\n return\n }\n\n // add the requested changes to a pendingUpdate batch for the key\n pendingUpdate.current[key] = {\n ...pendingUpdate.current[key],\n ...(newValue as Record<string, unknown>),\n }\n } else {\n if (newValue === currentPreference) {\n return\n }\n\n pendingUpdate.current[key] = newValue\n }\n\n const updatePreference = async () => {\n // compare the value stored in context before sending to eliminate duplicate requests\n if (dequal(pendingUpdate.current[key], preferencesRef.current[key])) {\n return\n }\n\n // preference set in context here to prevent other updatePreference at the same time\n preferencesRef.current[key] = pendingUpdate.current[key]\n\n await requests.post(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n requestOptions(preferencesRef.current[key], i18n.language),\n )\n\n // reset any changes for this key after sending the request\n delete pendingUpdate.current[key]\n }\n\n // use timeout to allow multiple changes of different values using the same key in one request\n setTimeout(() => {\n void updatePreference()\n })\n },\n [api, getPreference, i18n.language, pendingUpdate],\n )\n\n contextRef.current.getPreference = getPreference\n contextRef.current.setPreference = setPreference\n return <Context value={contextRef.current}>{children}</Context>\n}\n\nexport const usePreferences = (): PreferencesContext => use(Context)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["dequal","formatAdminURL","React","createContext","use","useCallback","useEffect","useRef","useTranslation","requests","deepMergeSimple","useAuth","useConfig","Context","requestOptions","value","language","body","JSON","stringify","headers","PreferencesProvider","children","contextRef","preferencesRef","pendingUpdate","pendingWrites","updateQueues","config","user","i18n","routes","api","current","getPreference","key","prefs","promise","Promise","resolve","request","get","apiRoute","path","credentials","status","preference","json","syncPreference","setPreference","merge","updater","previousUpdate","update","then","nextValue","post","catch","undefined","newValue","currentPreference","updatePreference","setTimeout","_jsx","usePreferences"],"sources":["../../../src/providers/Preferences/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { formatAdminURL } from 'payload/shared'\nimport React, { createContext, use, useCallback, useEffect, useRef } from 'react'\n\nimport type { Preferences } from '../../forms/Form/types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { deepMergeSimple } from '../../utilities/deepMerge.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\ntype PreferenceUpdater<T> = (current: null | T) => T\n\ntype SetPreference = {\n <T = Preferences>(key: string, updater: PreferenceUpdater<T>): Promise<void>\n <T = Preferences>(key: string, value: T, merge?: boolean): Promise<void>\n}\n\ntype PreferencesContext = {\n getPreference: <T = Preferences>(key: string) => Promise<T>\n /**\n * @param key - a string identifier for the property being set\n * @param value - preference data to store\n * @param merge - when true will combine the existing preference object batch the change into one request for objects, default = false\n */\n setPreference: SetPreference\n syncPreference: <T = Preferences>(key: string, value: T) => void\n}\n\nconst Context = createContext({} as PreferencesContext)\n\nconst requestOptions = (value, language) => ({\n body: JSON.stringify({ value }),\n headers: {\n 'Accept-Language': language,\n 'Content-Type': 'application/json',\n },\n})\n\nexport const PreferencesProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const contextRef = useRef({} as PreferencesContext)\n const preferencesRef = useRef({})\n const pendingUpdate = useRef({})\n const pendingWrites = useRef<Record<string, number>>({})\n const updateQueues = useRef<Record<string, Promise<void>>>({})\n const { config } = useConfig()\n const { user } = useAuth()\n const { i18n } = useTranslation()\n\n const {\n routes: { api },\n } = config\n\n useEffect(() => {\n if (!user) {\n // clear preferences between users\n preferencesRef.current = {}\n pendingUpdate.current = {}\n pendingWrites.current = {}\n updateQueues.current = {}\n }\n }, [user])\n\n const getPreference = useCallback(\n async <T = unknown,>(key: string): Promise<T> => {\n const prefs = preferencesRef.current\n\n if (typeof prefs[key] !== 'undefined') {\n return prefs[key]\n }\n\n const promise = new Promise((resolve: (value: T) => void) => {\n void (async () => {\n const request = await requests.get(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n let value = null\n\n if (request.status === 200) {\n const preference = await request.json()\n value = preference.value\n }\n\n if (prefs[key] === promise) {\n prefs[key] = value\n resolve(value)\n } else {\n resolve(await prefs[key])\n }\n })()\n })\n\n prefs[key] = promise\n\n return promise\n },\n [i18n.language, api, preferencesRef],\n )\n\n const syncPreference = useCallback(<T = Preferences,>(key: string, value: T): void => {\n if (pendingWrites.current[key] || typeof pendingUpdate.current[key] !== 'undefined') {\n return\n }\n\n preferencesRef.current[key] = value\n }, [])\n\n const setPreference = useCallback(\n async <T = Preferences,>(\n key: string,\n value: PreferenceUpdater<T> | T,\n merge = false,\n ): Promise<void> => {\n if (typeof value === 'function') {\n const updater = value as PreferenceUpdater<T>\n const previousUpdate = updateQueues.current[key] ?? Promise.resolve()\n pendingWrites.current[key] = (pendingWrites.current[key] ?? 0) + 1\n const update = previousUpdate.then(async () => {\n const current = await getPreference<T>(key)\n const nextValue = updater(current ?? null)\n\n preferencesRef.current[key] = nextValue\n\n await requests.post(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n requestOptions(nextValue, i18n.language),\n )\n })\n\n updateQueues.current[key] = update.catch(() => undefined)\n try {\n await update\n } finally {\n pendingWrites.current[key] -= 1\n }\n return\n }\n\n if (merge === false) {\n preferencesRef.current[key] = value\n pendingWrites.current[key] = (pendingWrites.current[key] ?? 0) + 1\n\n try {\n await requests.post(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n requestOptions(value, i18n.language),\n )\n } finally {\n pendingWrites.current[key] -= 1\n }\n\n return\n }\n\n let newValue = value\n const currentPreference = await getPreference(key)\n\n // handle value objects where multiple values can be set under one key\n if (\n typeof value === 'object' &&\n typeof currentPreference === 'object' &&\n typeof newValue === 'object'\n ) {\n // merge the value with any existing preference for the key\n if (currentPreference) {\n newValue = deepMergeSimple(currentPreference, newValue)\n }\n\n if (dequal(newValue, currentPreference)) {\n return\n }\n\n // add the requested changes to a pendingUpdate batch for the key\n pendingUpdate.current[key] = {\n ...pendingUpdate.current[key],\n ...(newValue as Record<string, unknown>),\n }\n } else {\n if (newValue === currentPreference) {\n return\n }\n\n pendingUpdate.current[key] = newValue\n }\n\n const updatePreference = async () => {\n // compare the value stored in context before sending to eliminate duplicate requests\n if (dequal(pendingUpdate.current[key], preferencesRef.current[key])) {\n return\n }\n\n // preference set in context here to prevent other updatePreference at the same time\n preferencesRef.current[key] = pendingUpdate.current[key]\n\n await requests.post(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n requestOptions(preferencesRef.current[key], i18n.language),\n )\n\n // reset any changes for this key after sending the request\n delete pendingUpdate.current[key]\n }\n\n // use timeout to allow multiple changes of different values using the same key in one request\n setTimeout(() => {\n void updatePreference()\n })\n },\n [api, getPreference, i18n.language, pendingUpdate, updateQueues],\n )\n\n contextRef.current.getPreference = getPreference\n contextRef.current.setPreference = setPreference\n contextRef.current.syncPreference = syncPreference\n return <Context value={contextRef.current}>{children}</Context>\n}\n\nexport const usePreferences = (): PreferencesContext => use(Context)\n"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,7 @@ export type BuildColumnStateArgs = {
10
10
  enableRowSelections: boolean;
11
11
  enableRowTypes?: boolean;
12
12
  fieldPermissions?: SanitizedFieldsPermissions;
13
+ hierarchyParentFieldName?: string;
13
14
  i18n: I18nClient;
14
15
  payload: Payload;
15
16
  req?: PayloadRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAEV,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,MAAM,EACN,yBAAyB,EACzB,QAAQ,EACR,KAAK,EACL,aAAa,EACb,OAAO,EACP,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAG1B,SAAS,EACV,MAAM,SAAS,CAAA;AAUhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAY5E,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAC1C,eAAe,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,CAAA;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,0BAA0B,CAAA;IAC7C,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,YAAY,EAAE,KAAK,EAAE,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IAC5D,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,GAAG,CACA;IACE,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC5B,GACD;IACE,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE;QACJ,UAAU,EAAE,cAAc,CAAA;QAC1B,KAAK,EAAE,QAAQ,CAAA;KAChB,EAAE,CAAA;CACJ,CACJ,CAAA;AAED,eAAO,MAAM,gBAAgB,SAAU,oBAAoB,KAAG,MAAM,EA+NnE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAEV,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,MAAM,EACN,yBAAyB,EACzB,QAAQ,EACR,KAAK,EACL,aAAa,EACb,OAAO,EACP,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAG1B,SAAS,EACV,MAAM,SAAS,CAAA;AAUhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAY5E,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAC1C,eAAe,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,CAAA;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,0BAA0B,CAAA;IAC7C,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,YAAY,EAAE,KAAK,EAAE,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IAC5D,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,GAAG,CACA;IACE,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC5B,GACD;IACE,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE;QACJ,UAAU,EAAE,cAAc,CAAA;QAC1B,KAAK,EAAE,QAAQ,CAAA;KAChB,EAAE,CAAA;CACJ,CACJ,CAAA;AAED,eAAO,MAAM,gBAAgB,SAAU,oBAAoB,KAAG,MAAM,EAiOnE,CAAA"}
@@ -19,6 +19,7 @@ export const buildColumnState = args => {
19
19
  enableLinkedCell = true,
20
20
  enableRowSelections,
21
21
  fieldPermissions,
22
+ hierarchyParentFieldName,
22
23
  i18n,
23
24
  payload,
24
25
  req,
@@ -138,6 +139,7 @@ export const buildColumnState = args => {
138
139
  customCellProps,
139
140
  doc: dataType === 'monomorphic' ? doc : doc.value,
140
141
  enableRowSelections,
142
+ hierarchyParentFieldName,
141
143
  i18n,
142
144
  isLinkedColumn,
143
145
  payload,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["fieldIsHiddenOrDisabled","fieldIsID","fieldIsPresentationalOnly","flattenTopLevelFields","React","RenderServerComponent","SortColumn","filterFieldsWithPermissions","isColumnActive","renderCell","sortFieldMap","buildColumnState","args","beforeRows","clientFields","collectionSlug","columns","customCellProps","dataType","docs","enableLinkedCell","enableRowSelections","fieldPermissions","i18n","payload","req","serverFields","sortColumnProps","useAsTitle","viewType","sortedFieldMap","fields","keepPresentationalFields","moveSubFieldsToTop","_sortedFieldMap","idFieldIndex","findIndex","field","idField","splice","unshift","useAsTitleFieldIndex","name","useAsTitleField","sortTo","activeColumnsIndices","sorted","reduce","acc","clientField","colIndex","accessor","undefined","serverField","find","f","fAccessor","hasCustomCell","admin","components","Cell","type","columnPref","preference","isActive","column","includes","push","CustomLabel","CustomLabelToRender","Label","clientProps","customLabelServerProps","Component","importMap","serverProps","fieldAffectsDataSubFields","label","labelWithPrefix","dotAccessor","replace","isVirtualField","virtual","Heading","_jsx","disable","isLinkedColumn","active","renderedCells","map","doc","rowIndex","relationTo","columnIndex","value"],"sources":["../../../../src/providers/TableColumns/buildColumnState/index.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n ClientComponentProps,\n ClientField,\n CollectionPreferences,\n CollectionSlug,\n Column,\n DefaultCellComponentProps,\n Document,\n Field,\n PaginatedDocs,\n Payload,\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedFieldsPermissions,\n ServerComponentProps,\n StaticLabel,\n ViewTypes,\n} from 'payload'\n\nimport {\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsPresentationalOnly,\n flattenTopLevelFields,\n} from 'payload/shared'\nimport React from 'react'\n\nimport type { SortColumnProps } from '../../../elements/SortColumn/index.js'\n\nimport { RenderServerComponent } from '../../../elements/RenderServerComponent/index.js'\nimport {\n SortColumn,\n // eslint-disable-next-line payload/no-imports-from-exports-dir -- MUST reference the exports dir: https://github.com/payloadcms/payload/issues/12002#issuecomment-2791493587\n} from '../../../exports/client/index.js'\nimport { filterFieldsWithPermissions } from './filterFieldsWithPermissions.js'\nimport { isColumnActive } from './isColumnActive.js'\nimport { renderCell } from './renderCell.js'\nimport { sortFieldMap } from './sortFieldMap.js'\n\nexport type BuildColumnStateArgs = {\n beforeRows?: Column[]\n clientFields: ClientField[]\n columns?: CollectionPreferences['columns']\n customCellProps: DefaultCellComponentProps['customCellProps']\n enableLinkedCell?: boolean\n enableRowSelections: boolean\n enableRowTypes?: boolean\n fieldPermissions?: SanitizedFieldsPermissions\n i18n: I18nClient\n payload: Payload\n req?: PayloadRequest\n serverFields: Field[]\n sortColumnProps?: Partial<SortColumnProps>\n useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n viewType?: ViewTypes\n} & (\n | {\n collectionSlug: CollectionSlug\n dataType: 'monomorphic'\n docs: PaginatedDocs['docs']\n }\n | {\n collectionSlug?: undefined\n dataType: 'polymorphic'\n docs: {\n relationTo: CollectionSlug\n value: Document\n }[]\n }\n)\n\nexport const buildColumnState = (args: BuildColumnStateArgs): Column[] => {\n const {\n beforeRows,\n clientFields,\n collectionSlug,\n columns,\n customCellProps,\n dataType,\n docs,\n enableLinkedCell = true,\n enableRowSelections,\n fieldPermissions,\n i18n,\n payload,\n req,\n serverFields,\n sortColumnProps,\n useAsTitle,\n viewType,\n } = args\n\n // clientFields contains the fake `id` column\n let sortedFieldMap = flattenTopLevelFields(\n filterFieldsWithPermissions({ fieldPermissions, fields: clientFields }),\n {\n i18n,\n keepPresentationalFields: true,\n moveSubFieldsToTop: true,\n },\n ) as ClientField[]\n\n let _sortedFieldMap = flattenTopLevelFields(\n filterFieldsWithPermissions({\n fieldPermissions,\n fields: serverFields,\n }),\n {\n i18n,\n keepPresentationalFields: true,\n moveSubFieldsToTop: true,\n },\n ) as Field[] // TODO: think of a way to avoid this additional flatten\n\n // place the `ID` field first, if it exists\n // do the same for the `useAsTitle` field with precedence over the `ID` field\n // then sort the rest of the fields based on the `defaultColumns` or `columns`\n const idFieldIndex = sortedFieldMap?.findIndex((field) => fieldIsID(field))\n\n if (idFieldIndex > -1) {\n const idField = sortedFieldMap.splice(idFieldIndex, 1)[0]\n sortedFieldMap.unshift(idField)\n }\n\n const useAsTitleFieldIndex = useAsTitle\n ? sortedFieldMap.findIndex((field) => 'name' in field && field.name === useAsTitle)\n : -1\n\n if (useAsTitleFieldIndex > -1) {\n const useAsTitleField = sortedFieldMap.splice(useAsTitleFieldIndex, 1)[0]\n sortedFieldMap.unshift(useAsTitleField)\n }\n\n const sortTo = columns\n\n if (sortTo) {\n // sort the fields to the order of `defaultColumns` or `columns`\n sortedFieldMap = sortFieldMap<ClientField>(sortedFieldMap, sortTo)\n _sortedFieldMap = sortFieldMap<Field>(_sortedFieldMap, sortTo) // TODO: think of a way to avoid this additional sort\n }\n\n const activeColumnsIndices = []\n\n const sorted: Column[] = sortedFieldMap?.reduce((acc, clientField, colIndex) => {\n if (fieldIsHiddenOrDisabled(clientField) && !fieldIsID(clientField)) {\n return acc\n }\n\n const accessor =\n (clientField as any).accessor ?? ('name' in clientField ? clientField.name : undefined)\n\n const serverField = _sortedFieldMap.find((f) => {\n const fAccessor = (f as any).accessor ?? ('name' in f ? f.name : undefined)\n return fAccessor === accessor\n })\n\n const hasCustomCell =\n serverField?.admin &&\n 'components' in serverField.admin &&\n serverField.admin.components &&\n 'Cell' in serverField.admin.components &&\n serverField.admin.components.Cell\n\n if (serverField && serverField.type === 'group' && !hasCustomCell) {\n return acc // skip any group without a custom cell\n }\n\n const columnPref = columns?.find(\n (preference) => clientField && 'name' in clientField && preference.accessor === accessor,\n )\n\n const isActive = isColumnActive({\n accessor,\n activeColumnsIndices,\n column: columnPref,\n columns,\n })\n\n if (isActive && !activeColumnsIndices.includes(colIndex)) {\n activeColumnsIndices.push(colIndex)\n }\n\n let CustomLabel = undefined\n\n if (dataType === 'monomorphic') {\n const CustomLabelToRender =\n serverField &&\n 'admin' in serverField &&\n 'components' in serverField.admin &&\n serverField.admin.components &&\n 'Label' in serverField.admin.components &&\n serverField.admin.components.Label !== undefined // let it return `null`\n ? serverField.admin.components.Label\n : undefined\n\n const clientProps: ClientComponentProps = {\n field: clientField,\n }\n\n const customLabelServerProps: Pick<\n ServerComponentProps,\n 'clientField' | 'collectionSlug' | 'field' | 'i18n' | 'payload'\n > = {\n clientField,\n collectionSlug,\n field: serverField,\n i18n,\n payload,\n }\n\n CustomLabel = CustomLabelToRender\n ? RenderServerComponent({\n clientProps,\n Component: CustomLabelToRender,\n importMap: payload.importMap,\n serverProps: customLabelServerProps,\n })\n : undefined\n }\n\n const fieldAffectsDataSubFields =\n clientField &&\n clientField.type &&\n (clientField.type === 'array' ||\n clientField.type === 'group' ||\n clientField.type === 'blocks')\n\n const label =\n clientField && 'labelWithPrefix' in clientField && clientField.labelWithPrefix !== undefined\n ? clientField.labelWithPrefix\n : 'label' in clientField\n ? clientField.label\n : undefined\n\n // Convert accessor to dot notation specifically for SortColumn sorting behavior\n const dotAccessor = accessor?.replace(/-/g, '.')\n\n const isVirtualField = serverField && 'virtual' in serverField && serverField.virtual === true\n\n const Heading = (\n <SortColumn\n disable={\n fieldAffectsDataSubFields ||\n fieldIsPresentationalOnly(clientField) ||\n isVirtualField ||\n undefined\n }\n Label={CustomLabel}\n label={label as StaticLabel}\n name={dotAccessor}\n {...(sortColumnProps || {})}\n />\n )\n\n const isLinkedColumn = enableLinkedCell && colIndex === activeColumnsIndices[0]\n\n const column: Column = {\n accessor,\n active: isActive,\n CustomLabel,\n field: clientField,\n Heading,\n isLinkedColumn,\n renderedCells: isActive\n ? docs.map((doc, rowIndex) => {\n return renderCell({\n clientField,\n collectionSlug: dataType === 'monomorphic' ? collectionSlug : doc.relationTo,\n columnIndex: colIndex,\n customCellProps,\n doc: dataType === 'monomorphic' ? doc : doc.value,\n enableRowSelections,\n i18n,\n isLinkedColumn,\n payload,\n req,\n rowIndex,\n serverField,\n viewType,\n })\n })\n : [],\n }\n\n acc.push(column)\n\n return acc\n }, [])\n\n if (beforeRows) {\n sorted.unshift(...beforeRows)\n }\n\n return sorted\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["fieldIsHiddenOrDisabled","fieldIsID","fieldIsPresentationalOnly","flattenTopLevelFields","React","RenderServerComponent","SortColumn","filterFieldsWithPermissions","isColumnActive","renderCell","sortFieldMap","buildColumnState","args","beforeRows","clientFields","collectionSlug","columns","customCellProps","dataType","docs","enableLinkedCell","enableRowSelections","fieldPermissions","hierarchyParentFieldName","i18n","payload","req","serverFields","sortColumnProps","useAsTitle","viewType","sortedFieldMap","fields","keepPresentationalFields","moveSubFieldsToTop","_sortedFieldMap","idFieldIndex","findIndex","field","idField","splice","unshift","useAsTitleFieldIndex","name","useAsTitleField","sortTo","activeColumnsIndices","sorted","reduce","acc","clientField","colIndex","accessor","undefined","serverField","find","f","fAccessor","hasCustomCell","admin","components","Cell","type","columnPref","preference","isActive","column","includes","push","CustomLabel","CustomLabelToRender","Label","clientProps","customLabelServerProps","Component","importMap","serverProps","fieldAffectsDataSubFields","label","labelWithPrefix","dotAccessor","replace","isVirtualField","virtual","Heading","_jsx","disable","isLinkedColumn","active","renderedCells","map","doc","rowIndex","relationTo","columnIndex","value"],"sources":["../../../../src/providers/TableColumns/buildColumnState/index.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n ClientComponentProps,\n ClientField,\n CollectionPreferences,\n CollectionSlug,\n Column,\n DefaultCellComponentProps,\n Document,\n Field,\n PaginatedDocs,\n Payload,\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedFieldsPermissions,\n ServerComponentProps,\n StaticLabel,\n ViewTypes,\n} from 'payload'\n\nimport {\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsPresentationalOnly,\n flattenTopLevelFields,\n} from 'payload/shared'\nimport React from 'react'\n\nimport type { SortColumnProps } from '../../../elements/SortColumn/index.js'\n\nimport { RenderServerComponent } from '../../../elements/RenderServerComponent/index.js'\nimport {\n SortColumn,\n // eslint-disable-next-line payload/no-imports-from-exports-dir -- MUST reference the exports dir: https://github.com/payloadcms/payload/issues/12002#issuecomment-2791493587\n} from '../../../exports/client/index.js'\nimport { filterFieldsWithPermissions } from './filterFieldsWithPermissions.js'\nimport { isColumnActive } from './isColumnActive.js'\nimport { renderCell } from './renderCell.js'\nimport { sortFieldMap } from './sortFieldMap.js'\n\nexport type BuildColumnStateArgs = {\n beforeRows?: Column[]\n clientFields: ClientField[]\n columns?: CollectionPreferences['columns']\n customCellProps: DefaultCellComponentProps['customCellProps']\n enableLinkedCell?: boolean\n enableRowSelections: boolean\n enableRowTypes?: boolean\n fieldPermissions?: SanitizedFieldsPermissions\n hierarchyParentFieldName?: string\n i18n: I18nClient\n payload: Payload\n req?: PayloadRequest\n serverFields: Field[]\n sortColumnProps?: Partial<SortColumnProps>\n useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n viewType?: ViewTypes\n} & (\n | {\n collectionSlug: CollectionSlug\n dataType: 'monomorphic'\n docs: PaginatedDocs['docs']\n }\n | {\n collectionSlug?: undefined\n dataType: 'polymorphic'\n docs: {\n relationTo: CollectionSlug\n value: Document\n }[]\n }\n)\n\nexport const buildColumnState = (args: BuildColumnStateArgs): Column[] => {\n const {\n beforeRows,\n clientFields,\n collectionSlug,\n columns,\n customCellProps,\n dataType,\n docs,\n enableLinkedCell = true,\n enableRowSelections,\n fieldPermissions,\n hierarchyParentFieldName,\n i18n,\n payload,\n req,\n serverFields,\n sortColumnProps,\n useAsTitle,\n viewType,\n } = args\n\n // clientFields contains the fake `id` column\n let sortedFieldMap = flattenTopLevelFields(\n filterFieldsWithPermissions({ fieldPermissions, fields: clientFields }),\n {\n i18n,\n keepPresentationalFields: true,\n moveSubFieldsToTop: true,\n },\n ) as ClientField[]\n\n let _sortedFieldMap = flattenTopLevelFields(\n filterFieldsWithPermissions({\n fieldPermissions,\n fields: serverFields,\n }),\n {\n i18n,\n keepPresentationalFields: true,\n moveSubFieldsToTop: true,\n },\n ) as Field[] // TODO: think of a way to avoid this additional flatten\n\n // place the `ID` field first, if it exists\n // do the same for the `useAsTitle` field with precedence over the `ID` field\n // then sort the rest of the fields based on the `defaultColumns` or `columns`\n const idFieldIndex = sortedFieldMap?.findIndex((field) => fieldIsID(field))\n\n if (idFieldIndex > -1) {\n const idField = sortedFieldMap.splice(idFieldIndex, 1)[0]\n sortedFieldMap.unshift(idField)\n }\n\n const useAsTitleFieldIndex = useAsTitle\n ? sortedFieldMap.findIndex((field) => 'name' in field && field.name === useAsTitle)\n : -1\n\n if (useAsTitleFieldIndex > -1) {\n const useAsTitleField = sortedFieldMap.splice(useAsTitleFieldIndex, 1)[0]\n sortedFieldMap.unshift(useAsTitleField)\n }\n\n const sortTo = columns\n\n if (sortTo) {\n // sort the fields to the order of `defaultColumns` or `columns`\n sortedFieldMap = sortFieldMap<ClientField>(sortedFieldMap, sortTo)\n _sortedFieldMap = sortFieldMap<Field>(_sortedFieldMap, sortTo) // TODO: think of a way to avoid this additional sort\n }\n\n const activeColumnsIndices = []\n\n const sorted: Column[] = sortedFieldMap?.reduce((acc, clientField, colIndex) => {\n if (fieldIsHiddenOrDisabled(clientField) && !fieldIsID(clientField)) {\n return acc\n }\n\n const accessor =\n (clientField as any).accessor ?? ('name' in clientField ? clientField.name : undefined)\n\n const serverField = _sortedFieldMap.find((f) => {\n const fAccessor = (f as any).accessor ?? ('name' in f ? f.name : undefined)\n return fAccessor === accessor\n })\n\n const hasCustomCell =\n serverField?.admin &&\n 'components' in serverField.admin &&\n serverField.admin.components &&\n 'Cell' in serverField.admin.components &&\n serverField.admin.components.Cell\n\n if (serverField && serverField.type === 'group' && !hasCustomCell) {\n return acc // skip any group without a custom cell\n }\n\n const columnPref = columns?.find(\n (preference) => clientField && 'name' in clientField && preference.accessor === accessor,\n )\n\n const isActive = isColumnActive({\n accessor,\n activeColumnsIndices,\n column: columnPref,\n columns,\n })\n\n if (isActive && !activeColumnsIndices.includes(colIndex)) {\n activeColumnsIndices.push(colIndex)\n }\n\n let CustomLabel = undefined\n\n if (dataType === 'monomorphic') {\n const CustomLabelToRender =\n serverField &&\n 'admin' in serverField &&\n 'components' in serverField.admin &&\n serverField.admin.components &&\n 'Label' in serverField.admin.components &&\n serverField.admin.components.Label !== undefined // let it return `null`\n ? serverField.admin.components.Label\n : undefined\n\n const clientProps: ClientComponentProps = {\n field: clientField,\n }\n\n const customLabelServerProps: Pick<\n ServerComponentProps,\n 'clientField' | 'collectionSlug' | 'field' | 'i18n' | 'payload'\n > = {\n clientField,\n collectionSlug,\n field: serverField,\n i18n,\n payload,\n }\n\n CustomLabel = CustomLabelToRender\n ? RenderServerComponent({\n clientProps,\n Component: CustomLabelToRender,\n importMap: payload.importMap,\n serverProps: customLabelServerProps,\n })\n : undefined\n }\n\n const fieldAffectsDataSubFields =\n clientField &&\n clientField.type &&\n (clientField.type === 'array' ||\n clientField.type === 'group' ||\n clientField.type === 'blocks')\n\n const label =\n clientField && 'labelWithPrefix' in clientField && clientField.labelWithPrefix !== undefined\n ? clientField.labelWithPrefix\n : 'label' in clientField\n ? clientField.label\n : undefined\n\n // Convert accessor to dot notation specifically for SortColumn sorting behavior\n const dotAccessor = accessor?.replace(/-/g, '.')\n\n const isVirtualField = serverField && 'virtual' in serverField && serverField.virtual === true\n\n const Heading = (\n <SortColumn\n disable={\n fieldAffectsDataSubFields ||\n fieldIsPresentationalOnly(clientField) ||\n isVirtualField ||\n undefined\n }\n Label={CustomLabel}\n label={label as StaticLabel}\n name={dotAccessor}\n {...(sortColumnProps || {})}\n />\n )\n\n const isLinkedColumn = enableLinkedCell && colIndex === activeColumnsIndices[0]\n\n const column: Column = {\n accessor,\n active: isActive,\n CustomLabel,\n field: clientField,\n Heading,\n isLinkedColumn,\n renderedCells: isActive\n ? docs.map((doc, rowIndex) => {\n return renderCell({\n clientField,\n collectionSlug: dataType === 'monomorphic' ? collectionSlug : doc.relationTo,\n columnIndex: colIndex,\n customCellProps,\n doc: dataType === 'monomorphic' ? doc : doc.value,\n enableRowSelections,\n hierarchyParentFieldName,\n i18n,\n isLinkedColumn,\n payload,\n req,\n rowIndex,\n serverField,\n viewType,\n })\n })\n : [],\n }\n\n acc.push(column)\n\n return acc\n }, [])\n\n if (beforeRows) {\n sorted.unshift(...beforeRows)\n }\n\n return sorted\n}\n"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,7 @@ type RenderCellArgs = {
8
8
  readonly customCellProps: DefaultCellComponentProps['customCellProps'];
9
9
  readonly doc: Document;
10
10
  readonly enableRowSelections: boolean;
11
+ readonly hierarchyParentFieldName?: string;
11
12
  readonly i18n: I18nClient;
12
13
  readonly isLinkedColumn: boolean;
13
14
  readonly payload: Payload;
@@ -16,6 +17,6 @@ type RenderCellArgs = {
16
17
  readonly serverField: Field;
17
18
  readonly viewType?: ViewTypes;
18
19
  };
19
- export declare function renderCell({ clientField, collectionSlug, columnIndex, customCellProps, doc, enableRowSelections, i18n, isLinkedColumn, payload, req, rowIndex, serverField, viewType, }: RenderCellArgs): React.JSX.Element;
20
+ export declare function renderCell({ clientField, collectionSlug, columnIndex, customCellProps, doc, enableRowSelections, hierarchyParentFieldName, i18n, isLinkedColumn, payload, req, rowIndex, serverField, viewType, }: RenderCellArgs): React.JSX.Element;
20
21
  export {};
21
22
  //# sourceMappingURL=renderCell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderCell.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/renderCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,WAAW,EACX,yBAAyB,EAEzB,QAAQ,EACR,KAAK,EACL,OAAO,EACP,cAAc,EACd,SAAS,EACV,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAczB,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,eAAe,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,CAAA;IACtE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAC9B,CAAA;AACD,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,cAAc,EACd,WAAW,EACX,eAAe,EACf,GAAG,EACH,mBAAmB,EACnB,IAAI,EACJ,cAAc,EACd,OAAO,EACP,GAAG,EACH,QAAQ,EACR,WAAW,EACX,QAAQ,GACT,EAAE,cAAc,qBAqOhB"}
1
+ {"version":3,"file":"renderCell.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/renderCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,WAAW,EACX,yBAAyB,EAEzB,QAAQ,EACR,KAAK,EACL,OAAO,EACP,cAAc,EACd,SAAS,EACV,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,eAAe,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,CAAA;IACtE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAC9B,CAAA;AACD,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,cAAc,EACd,WAAW,EACX,eAAe,EACf,GAAG,EACH,mBAAmB,EACnB,wBAAwB,EACxB,IAAI,EACJ,cAAc,EACd,OAAO,EACP,GAAG,EACH,QAAQ,EACR,WAAW,EACX,QAAQ,GACT,EAAE,cAAc,qBAkNhB"}
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { MissingEditorProp } from 'payload';
3
- import { formatAdminURL } from 'payload/shared';
4
3
  import React from 'react';
5
4
  import { RenderCustomComponent } from '../../../elements/RenderCustomComponent/index.js';
6
5
  import { RenderServerComponent } from '../../../elements/RenderServerComponent/index.js';
7
6
  import { DefaultCell, FolderIcon, RenderDefaultCell, TagIcon } from '../../../exports/client/index.js';
8
7
  import { hasOptionLabelJSXElement } from '../../../utilities/hasOptionLabelJSXElement.js';
8
+ import { resolveDocumentListItemURL } from '../../../views/List/resolveDocumentListItemURL.js';
9
9
  import { findValueFromPath } from './findValueFromPath.js';
10
10
  export function renderCell({
11
11
  clientField,
@@ -14,6 +14,7 @@ export function renderCell({
14
14
  customCellProps,
15
15
  doc,
16
16
  enableRowSelections,
17
+ hierarchyParentFieldName,
17
18
  i18n,
18
19
  isLinkedColumn,
19
20
  payload,
@@ -36,33 +37,16 @@ export function renderCell({
36
37
  let customLinkURL;
37
38
  if (isLinkedColumn && req) {
38
39
  const collectionConfig = payload.collections[collectionSlug]?.config;
39
- const formatDocURL = collectionConfig?.admin?.formatDocURL;
40
- if (typeof formatDocURL === 'function') {
41
- // Generate the default URL that would normally be used
42
- const adminRoute = req.payload.config.routes?.admin || '/admin';
43
- const defaultURL = formatAdminURL({
44
- adminRoute,
45
- path: `/collections/${collectionSlug}${viewType === 'trash' ? '/trash' : ''}/${encodeURIComponent(String(doc.id))}`
46
- });
47
- const customURL = formatDocURL({
48
- collectionSlug,
49
- defaultURL,
50
- doc,
51
- req,
52
- viewType
53
- });
54
- if (customURL === null) {
55
- // formatDocURL returned null = disable linking entirely
56
- shouldLink = false;
57
- } else if (typeof customURL === 'string') {
58
- // formatDocURL returned a string = use custom URL
59
- shouldLink = true;
60
- customLinkURL = customURL;
61
- } else {
62
- // formatDocURL returned unexpected type = disable linking for safety
63
- shouldLink = false;
64
- }
65
- }
40
+ const resolvedURL = resolveDocumentListItemURL({
41
+ collectionSlug,
42
+ doc,
43
+ formatDocURL: collectionConfig?.admin?.formatDocURL,
44
+ hierarchyParentFieldName,
45
+ req,
46
+ viewType
47
+ });
48
+ shouldLink = resolvedURL !== null;
49
+ customLinkURL = resolvedURL ?? undefined;
66
50
  }
67
51
  // For _status field, use _displayStatus if available (for showing "changed" status in list view)
68
52
  const cellData = 'name' in clientField && accessor === '_status' && '_displayStatus' in doc ? doc._displayStatus : 'name' in clientField ? findValueFromPath(doc, accessor) : undefined;