@payloadcms/ui 4.0.0-internal.8001944 → 4.0.0-internal.8089ef7

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 (715) 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/AppHeader/index.css +1 -1
  7. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  8. package/dist/elements/AppHeader/index.js +9 -2
  9. package/dist/elements/AppHeader/index.js.map +1 -1
  10. package/dist/elements/Autosave/index.d.ts.map +1 -1
  11. package/dist/elements/Autosave/index.js +10 -3
  12. package/dist/elements/Autosave/index.js.map +1 -1
  13. package/dist/elements/Banner/index.css +3 -4
  14. package/dist/elements/BulkUpload/EditMany/index.css +4 -5
  15. package/dist/elements/BulkUpload/FileSidebar/index.css +0 -1
  16. package/dist/elements/BulkUpload/FileSidebar/index.js +1 -1
  17. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  18. package/dist/elements/Button/index.css +31 -1
  19. package/dist/elements/Button/types.d.ts +1 -1
  20. package/dist/elements/Button/types.d.ts.map +1 -1
  21. package/dist/elements/Button/types.js.map +1 -1
  22. package/dist/elements/Card/index.css +3 -4
  23. package/dist/elements/CardGrid/index.css +20 -0
  24. package/dist/elements/CardGrid/index.d.ts +13 -0
  25. package/dist/elements/CardGrid/index.d.ts.map +1 -0
  26. package/dist/elements/CardGrid/index.js +23 -0
  27. package/dist/elements/CardGrid/index.js.map +1 -0
  28. package/dist/elements/Chip/index.css +0 -1
  29. package/dist/elements/CloseModalOnRouteChange/index.d.ts.map +1 -1
  30. package/dist/elements/CloseModalOnRouteChange/index.js +27 -19
  31. package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -1
  32. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  33. package/dist/elements/CodeEditor/CodeEditor.js +5 -0
  34. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  35. package/dist/elements/Collapsible/index.css +4 -1
  36. package/dist/elements/ColumnSelection/Popup.css +6 -11
  37. package/dist/elements/CommandPalette/index.css +3 -8
  38. package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
  39. package/dist/elements/CopyToClipboard/index.js +62 -54
  40. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  41. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  42. package/dist/elements/CreateDocumentButton/index.js +56 -33
  43. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  44. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  45. package/dist/elements/DatePicker/DatePicker.js +88 -15
  46. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  47. package/dist/elements/DatePicker/hasAmbiguousYearInput.d.ts +8 -0
  48. package/dist/elements/DatePicker/hasAmbiguousYearInput.d.ts.map +1 -0
  49. package/dist/elements/DatePicker/hasAmbiguousYearInput.js +37 -0
  50. package/dist/elements/DatePicker/hasAmbiguousYearInput.js.map +1 -0
  51. package/dist/elements/DatePicker/index.css +27 -17
  52. package/dist/elements/DatePicker/useDatePickerKeyboard.d.ts +18 -0
  53. package/dist/elements/DatePicker/useDatePickerKeyboard.d.ts.map +1 -0
  54. package/dist/elements/DatePicker/useDatePickerKeyboard.js +212 -0
  55. package/dist/elements/DatePicker/useDatePickerKeyboard.js.map +1 -0
  56. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  57. package/dist/elements/DefaultListViewTabs/index.js +9 -7
  58. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  59. package/dist/elements/Dialog/DialogTitle/index.css +1 -1
  60. package/dist/elements/Dialog/index.css +1 -2
  61. package/dist/elements/DocumentCard/index.css +73 -0
  62. package/dist/elements/DocumentCard/index.d.ts +18 -0
  63. package/dist/elements/DocumentCard/index.d.ts.map +1 -0
  64. package/dist/elements/DocumentCard/index.js +182 -0
  65. package/dist/elements/DocumentCard/index.js.map +1 -0
  66. package/dist/elements/DocumentControls/index.css +14 -15
  67. package/dist/elements/DocumentControls/index.d.ts +4 -2
  68. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  69. package/dist/elements/DocumentControls/index.js.map +1 -1
  70. package/dist/elements/DocumentDrawer/DrawerHeader/index.css +4 -7
  71. package/dist/elements/DocumentDrawer/types.d.ts +1 -5
  72. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  73. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  74. package/dist/elements/DocumentFields/RequiredFieldsInfo/index.css +2 -2
  75. package/dist/elements/DocumentFields/index.css +5 -5
  76. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  77. package/dist/elements/DocumentFields/index.js +1 -2
  78. package/dist/elements/DocumentFields/index.js.map +1 -1
  79. package/dist/elements/DocumentHeader/index.css +1 -1
  80. package/dist/elements/Drawer/index.css +4 -5
  81. package/dist/elements/Drawer/types.d.ts +2 -2
  82. package/dist/elements/Drawer/types.d.ts.map +1 -1
  83. package/dist/elements/Drawer/types.js.map +1 -1
  84. package/dist/elements/EditMany/index.css +4 -5
  85. package/dist/elements/EditUpload/index.css +3 -4
  86. package/dist/elements/EditUpload/index.d.ts.map +1 -1
  87. package/dist/elements/EditUpload/index.js +13 -2
  88. package/dist/elements/EditUpload/index.js.map +1 -1
  89. package/dist/elements/EditUpload/library.css +6 -13
  90. package/dist/elements/ErrorPill/index.css +0 -1
  91. package/dist/elements/FieldDiffContainer/index.css +0 -1
  92. package/dist/elements/FieldDiffLabel/index.css +4 -5
  93. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
  94. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  95. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  96. package/dist/elements/FileDetails/FileMeta/index.d.ts +1 -1
  97. package/dist/elements/FileDetails/FileMeta/index.d.ts.map +1 -1
  98. package/dist/elements/FileDetails/FileMeta/index.js +41 -21
  99. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  100. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +1 -1
  101. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  102. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  103. package/dist/elements/FileDetails/index.d.ts +1 -1
  104. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  105. package/dist/elements/FileDetails/index.js.map +1 -1
  106. package/dist/elements/FileManager/FilePreview/index.css +2 -3
  107. package/dist/elements/FileManager/FilePreview/index.js +4 -4
  108. package/dist/elements/FileManager/FilePreview/index.js.map +1 -1
  109. package/dist/elements/FileManager/FileToolbar/index.css +2 -3
  110. package/dist/elements/FileManager/index.css +0 -1
  111. package/dist/elements/FileManager/index.d.ts.map +1 -1
  112. package/dist/elements/FileManager/index.js +13 -6
  113. package/dist/elements/FileManager/index.js.map +1 -1
  114. package/dist/elements/FormHeader/index.css +0 -2
  115. package/dist/elements/GroupBy/Popup.css +3 -6
  116. package/dist/elements/HTMLDiff/index.css +0 -1
  117. package/dist/elements/Hierarchy/ActionsMenu/index.css +18 -0
  118. package/dist/elements/Hierarchy/ActionsMenu/index.d.ts +35 -0
  119. package/dist/elements/Hierarchy/ActionsMenu/index.d.ts.map +1 -0
  120. package/dist/elements/Hierarchy/ActionsMenu/index.js +99 -0
  121. package/dist/elements/Hierarchy/ActionsMenu/index.js.map +1 -0
  122. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +18 -16
  123. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
  124. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -1
  125. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +40 -36
  126. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
  127. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  128. package/dist/elements/Hierarchy/ColumnBrowser/index.js +15 -58
  129. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  130. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +2 -0
  131. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
  132. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
  133. package/dist/elements/Hierarchy/DocHeaderButton/index.css +12 -0
  134. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
  135. package/dist/elements/Hierarchy/DocHeaderButton/index.js +88 -13
  136. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  137. package/dist/elements/Hierarchy/EditButton/index.d.ts +8 -0
  138. package/dist/elements/Hierarchy/EditButton/index.d.ts.map +1 -0
  139. package/dist/elements/Hierarchy/EditButton/index.js +93 -0
  140. package/dist/elements/Hierarchy/EditButton/index.js.map +1 -0
  141. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.d.ts +9 -0
  142. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.d.ts.map +1 -0
  143. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.js +41 -0
  144. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.js.map +1 -0
  145. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
  146. package/dist/elements/Hierarchy/Field/index.client.js +120 -105
  147. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  148. package/dist/elements/Hierarchy/Field/index.css +0 -1
  149. package/dist/elements/Hierarchy/Modal/Footer/index.css +33 -0
  150. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts +21 -0
  151. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts.map +1 -0
  152. package/dist/elements/Hierarchy/Modal/Footer/index.js +122 -0
  153. package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -0
  154. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +8 -3
  155. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  156. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +38 -12
  157. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  158. package/dist/elements/Hierarchy/Modal/index.css +0 -56
  159. package/dist/elements/Hierarchy/Modal/index.d.ts +5 -3
  160. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  161. package/dist/elements/Hierarchy/Modal/index.js +90 -102
  162. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  163. package/dist/elements/Hierarchy/Modal/selection.d.ts +12 -0
  164. package/dist/elements/Hierarchy/Modal/selection.d.ts.map +1 -0
  165. package/dist/elements/Hierarchy/Modal/selection.js +40 -0
  166. package/dist/elements/Hierarchy/Modal/selection.js.map +1 -0
  167. package/dist/elements/Hierarchy/Modal/types.d.ts +4 -0
  168. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
  169. package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
  170. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts.map +1 -1
  171. package/dist/elements/Hierarchy/Modal/useHierarchyModal.js +1 -1
  172. package/dist/elements/Hierarchy/Modal/useHierarchyModal.js.map +1 -1
  173. package/dist/elements/Hierarchy/MoveMany/index.d.ts +3 -3
  174. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  175. package/dist/elements/Hierarchy/MoveMany/index.js +79 -92
  176. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  177. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  178. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +7 -1
  179. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  180. package/dist/elements/Hierarchy/Tree/index.css +1 -1
  181. package/dist/elements/HydratePreferences/index.d.ts +8 -0
  182. package/dist/elements/HydratePreferences/index.d.ts.map +1 -0
  183. package/dist/elements/HydratePreferences/index.js +34 -0
  184. package/dist/elements/HydratePreferences/index.js.map +1 -0
  185. package/dist/elements/IDLabel/index.css +5 -7
  186. package/dist/elements/ItemsDrawer/ItemSearch/index.css +0 -1
  187. package/dist/elements/LLMInstructionsCell/index.css +11 -0
  188. package/dist/elements/LLMInstructionsCell/index.d.ts +5 -0
  189. package/dist/elements/LLMInstructionsCell/index.d.ts.map +1 -0
  190. package/dist/elements/LLMInstructionsCell/index.js +24 -0
  191. package/dist/elements/LLMInstructionsCell/index.js.map +1 -0
  192. package/dist/elements/LLMInstructionsDescription/index.css +79 -0
  193. package/dist/elements/LLMInstructionsDescription/index.d.ts +6 -0
  194. package/dist/elements/LLMInstructionsDescription/index.d.ts.map +1 -0
  195. package/dist/elements/LLMInstructionsDescription/index.js +40 -0
  196. package/dist/elements/LLMInstructionsDescription/index.js.map +1 -0
  197. package/dist/elements/LLMInstructionsMenuItem/index.d.ts +5 -0
  198. package/dist/elements/LLMInstructionsMenuItem/index.d.ts.map +1 -0
  199. package/dist/elements/LLMInstructionsMenuItem/index.js +46 -0
  200. package/dist/elements/LLMInstructionsMenuItem/index.js.map +1 -0
  201. package/dist/elements/LayoutToggle/index.d.ts +8 -0
  202. package/dist/elements/LayoutToggle/index.d.ts.map +1 -0
  203. package/dist/elements/LayoutToggle/index.js +56 -0
  204. package/dist/elements/LayoutToggle/index.js.map +1 -0
  205. package/dist/elements/Link/index.d.ts.map +1 -1
  206. package/dist/elements/Link/index.js +3 -0
  207. package/dist/elements/Link/index.js.map +1 -1
  208. package/dist/elements/ListControls/index.d.ts.map +1 -1
  209. package/dist/elements/ListControls/index.js +2 -1
  210. package/dist/elements/ListControls/index.js.map +1 -1
  211. package/dist/elements/ListControls/types.d.ts +1 -10
  212. package/dist/elements/ListControls/types.d.ts.map +1 -1
  213. package/dist/elements/ListControls/types.js.map +1 -1
  214. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  215. package/dist/elements/ListDrawer/DrawerContent.js +2 -3
  216. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  217. package/dist/elements/ListDrawer/Provider.d.ts +0 -6
  218. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  219. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  220. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  221. package/dist/elements/ListDrawer/index.js +1 -1
  222. package/dist/elements/ListDrawer/index.js.map +1 -1
  223. package/dist/elements/ListDrawer/types.d.ts +1 -0
  224. package/dist/elements/ListDrawer/types.d.ts.map +1 -1
  225. package/dist/elements/ListDrawer/types.js.map +1 -1
  226. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.d.ts.map +1 -1
  227. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +24 -20
  228. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  229. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.d.ts +6 -0
  230. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.d.ts.map +1 -0
  231. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js +61 -0
  232. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js.map +1 -0
  233. package/dist/elements/ListHeader/DrawerTitleActions/index.d.ts +1 -0
  234. package/dist/elements/ListHeader/DrawerTitleActions/index.d.ts.map +1 -1
  235. package/dist/elements/ListHeader/DrawerTitleActions/index.js +1 -0
  236. package/dist/elements/ListHeader/DrawerTitleActions/index.js.map +1 -1
  237. package/dist/elements/ListHeader/index.css +4 -5
  238. package/dist/elements/MiniCarousel/index.d.ts +1 -1
  239. package/dist/elements/MiniCarousel/index.d.ts.map +1 -1
  240. package/dist/elements/MiniCarousel/index.js +6 -6
  241. package/dist/elements/MiniCarousel/index.js.map +1 -1
  242. package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
  243. package/dist/elements/Nav/NavWrapper/index.js +19 -14
  244. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  245. package/dist/elements/Nav/SidebarTabs/index.client.js +1 -1
  246. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  247. package/dist/elements/Nav/SidebarTabs/index.css +2 -1
  248. package/dist/elements/Nav/index.js +1 -2
  249. package/dist/elements/Nav/index.js.map +1 -1
  250. package/dist/elements/NavGroup/index.css +3 -4
  251. package/dist/elements/NoListResults/index.css +2 -3
  252. package/dist/elements/PageControls/index.css +4 -1
  253. package/dist/elements/PageControls/index.d.ts.map +1 -1
  254. package/dist/elements/PageControls/index.js +22 -8
  255. package/dist/elements/PageControls/index.js.map +1 -1
  256. package/dist/elements/Pagination/SimplePagination/index.css +0 -1
  257. package/dist/elements/Pagination/index.css +0 -2
  258. package/dist/elements/PerPage/index.css +0 -1
  259. package/dist/elements/Pill/index.css +0 -1
  260. package/dist/elements/Popup/PopupButtonList/index.css +4 -2
  261. package/dist/elements/Popup/PopupButtonList/index.d.ts +1 -0
  262. package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  263. package/dist/elements/Popup/PopupButtonList/index.js +4 -0
  264. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  265. package/dist/elements/Popup/PopupGroupLabel/index.css +0 -1
  266. package/dist/elements/PreviewSizes/index.d.ts +1 -1
  267. package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
  268. package/dist/elements/PreviewSizes/index.js +9 -9
  269. package/dist/elements/PreviewSizes/index.js.map +1 -1
  270. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  271. package/dist/elements/PublishButton/index.js +71 -8
  272. package/dist/elements/PublishButton/index.js.map +1 -1
  273. package/dist/elements/PublishButton/validateAllLocales.d.ts +11 -0
  274. package/dist/elements/PublishButton/validateAllLocales.d.ts.map +1 -0
  275. package/dist/elements/PublishButton/validateAllLocales.js +263 -0
  276. package/dist/elements/PublishButton/validateAllLocales.js.map +1 -0
  277. package/dist/elements/QueryPresets/fields/Heading/index.css +0 -1
  278. package/dist/elements/ReactSelect/MultiValueLabel/index.css +0 -1
  279. package/dist/elements/ReactSelect/index.css +0 -3
  280. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  281. package/dist/elements/RelationshipTable/AddNewButton.js +3 -0
  282. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  283. package/dist/elements/RenderTitle/index.css +9 -7
  284. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  285. package/dist/elements/SaveDraftButton/index.js +15 -2
  286. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  287. package/dist/elements/Search/SearchInput/index.css +0 -1
  288. package/dist/elements/Search/SearchInput/index.js +1 -1
  289. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  290. package/dist/elements/SegmentedControl/index.css +9 -0
  291. package/dist/elements/SegmentedControl/index.d.ts +20 -0
  292. package/dist/elements/SegmentedControl/index.d.ts.map +1 -0
  293. package/dist/elements/SegmentedControl/index.js +162 -0
  294. package/dist/elements/SegmentedControl/index.js.map +1 -0
  295. package/dist/elements/SidebarRow/index.css +1 -2
  296. package/dist/elements/SortColumn/index.css +1 -2
  297. package/dist/elements/Spinner/index.css +0 -2
  298. package/dist/elements/Status/index.css +3 -4
  299. package/dist/elements/StepNav/index.css +15 -9
  300. package/dist/elements/StepNav/index.d.ts.map +1 -1
  301. package/dist/elements/StepNav/index.js +7 -0
  302. package/dist/elements/StepNav/index.js.map +1 -1
  303. package/dist/elements/StepNav/types.d.ts +2 -0
  304. package/dist/elements/StepNav/types.d.ts.map +1 -1
  305. package/dist/elements/StepNav/types.js.map +1 -1
  306. package/dist/elements/Switch/index.css +0 -1
  307. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.css +0 -1
  308. package/dist/elements/Table/DefaultCell/fields/Code/index.css +0 -1
  309. package/dist/elements/Table/DefaultCell/fields/File/index.js +1 -1
  310. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  311. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +0 -9
  312. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  313. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +100 -43
  314. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  315. package/dist/elements/Table/DefaultCell/fields/JSON/index.css +0 -1
  316. package/dist/elements/Table/DefaultCell/fields/Status/index.css +0 -1
  317. package/dist/elements/Table/index.css +1 -1
  318. package/dist/elements/TableSection/index.css +4 -5
  319. package/dist/elements/Tabs/index.css +5 -5
  320. package/dist/elements/Tabs/index.d.ts +4 -0
  321. package/dist/elements/Tabs/index.d.ts.map +1 -1
  322. package/dist/elements/Tabs/index.js +30 -1
  323. package/dist/elements/Tabs/index.js.map +1 -1
  324. package/dist/elements/ThumbnailCard/index.css +0 -1
  325. package/dist/elements/TimezonePicker/index.css +0 -3
  326. package/dist/elements/Tooltip/index.css +0 -1
  327. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  328. package/dist/elements/Tooltip/index.js +1 -0
  329. package/dist/elements/Tooltip/index.js.map +1 -1
  330. package/dist/elements/Upload/getEditorFileSrc.d.ts +11 -0
  331. package/dist/elements/Upload/getEditorFileSrc.d.ts.map +1 -0
  332. package/dist/elements/Upload/getEditorFileSrc.js +6 -0
  333. package/dist/elements/Upload/getEditorFileSrc.js.map +1 -0
  334. package/dist/elements/Upload/index.css +2 -3
  335. package/dist/elements/Upload/index.d.ts +1 -1
  336. package/dist/elements/Upload/index.d.ts.map +1 -1
  337. package/dist/elements/Upload/index.js +12 -7
  338. package/dist/elements/Upload/index.js.map +1 -1
  339. package/dist/elements/UserMenu/index.css +7 -10
  340. package/dist/exports/client/CodeEditor-S7MOGZSR.js +14 -0
  341. package/dist/exports/client/CodeEditor-S7MOGZSR.js.map +7 -0
  342. package/dist/exports/client/DatePicker-POZJVQP4.js +14 -0
  343. package/dist/exports/client/DatePicker-POZJVQP4.js.map +7 -0
  344. package/dist/exports/client/chunk-2AY67NFV.js +29 -0
  345. package/dist/exports/client/chunk-2AY67NFV.js.map +7 -0
  346. package/dist/exports/client/chunk-AVJIZPR3.js +14 -0
  347. package/dist/exports/client/chunk-AVJIZPR3.js.map +7 -0
  348. package/dist/exports/client/chunk-Z42OBP5U.js +27 -0
  349. package/dist/exports/client/chunk-Z42OBP5U.js.map +7 -0
  350. package/dist/exports/client/index.d.ts +19 -1
  351. package/dist/exports/client/index.d.ts.map +1 -1
  352. package/dist/exports/client/index.js +100 -1
  353. package/dist/exports/client/index.js.map +4 -4
  354. package/dist/exports/rsc/index.d.ts +1 -0
  355. package/dist/exports/rsc/index.d.ts.map +1 -1
  356. package/dist/exports/rsc/index.js +1 -0
  357. package/dist/exports/rsc/index.js.map +1 -1
  358. package/dist/exports/shared/index.js +2 -2
  359. package/dist/exports/shared/index.js.map +3 -3
  360. package/dist/fields/Array/index.css +4 -0
  361. package/dist/fields/Blocks/SectionTitle/index.css +3 -5
  362. package/dist/fields/Blocks/index.css +2 -2
  363. package/dist/fields/Checkbox/Input.js +1 -1
  364. package/dist/fields/Checkbox/Input.js.map +1 -1
  365. package/dist/fields/Checkbox/index.css +4 -0
  366. package/dist/fields/DateTime/index.d.ts.map +1 -1
  367. package/dist/fields/DateTime/index.js +9 -2
  368. package/dist/fields/DateTime/index.js.map +1 -1
  369. package/dist/fields/FieldLabel/index.css +1 -2
  370. package/dist/fields/Group/index.css +5 -8
  371. package/dist/fields/Join/index.css +3 -4
  372. package/dist/fields/RadioGroup/Radio/index.css +0 -1
  373. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  374. package/dist/fields/Relationship/Input.js +25 -17
  375. package/dist/fields/Relationship/Input.js.map +1 -1
  376. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  377. package/dist/fields/Relationship/optionsReducer.js +2 -0
  378. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  379. package/dist/fields/Relationship/types.d.ts +8 -0
  380. package/dist/fields/Relationship/types.d.ts.map +1 -1
  381. package/dist/fields/Relationship/types.js.map +1 -1
  382. package/dist/fields/Select/Input.d.ts.map +1 -1
  383. package/dist/fields/Select/Input.js +17 -15
  384. package/dist/fields/Select/Input.js.map +1 -1
  385. package/dist/fields/Select/index.css +7 -0
  386. package/dist/fields/Tabs/Tab/index.d.ts +2 -0
  387. package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
  388. package/dist/fields/Tabs/Tab/index.js +15 -9
  389. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  390. package/dist/fields/Tabs/index.css +14 -14
  391. package/dist/fields/Tabs/index.d.ts.map +1 -1
  392. package/dist/fields/Tabs/index.js +179 -116
  393. package/dist/fields/Tabs/index.js.map +1 -1
  394. package/dist/fields/Upload/HasMany/index.js +1 -1
  395. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  396. package/dist/fields/Upload/HasOne/index.js +1 -1
  397. package/dist/fields/Upload/HasOne/index.js.map +1 -1
  398. package/dist/fields/Upload/Input.d.ts.map +1 -1
  399. package/dist/fields/Upload/Input.js +13 -4
  400. package/dist/fields/Upload/Input.js.map +1 -1
  401. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  402. package/dist/forms/Form/fieldReducer.js +6 -9
  403. package/dist/forms/Form/fieldReducer.js.map +1 -1
  404. package/dist/forms/Form/index.d.ts.map +1 -1
  405. package/dist/forms/Form/index.js +0 -1
  406. package/dist/forms/Form/index.js.map +1 -1
  407. package/dist/forms/Form/types.d.ts +0 -5
  408. package/dist/forms/Form/types.d.ts.map +1 -1
  409. package/dist/forms/Form/types.js.map +1 -1
  410. package/dist/forms/RenderFields/index.css +2 -5
  411. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +2 -2
  412. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  413. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  414. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -2
  415. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  416. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  417. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -2
  418. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  419. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  420. package/dist/forms/fieldSchemasToFormState/types.d.ts +2 -2
  421. package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
  422. package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
  423. package/dist/forms/useField/types.d.ts +0 -4
  424. package/dist/forms/useField/types.d.ts.map +1 -1
  425. package/dist/forms/useField/types.js.map +1 -1
  426. package/dist/icons/Arrow/index.d.ts +1 -1
  427. package/dist/icons/Arrow/index.d.ts.map +1 -1
  428. package/dist/icons/Arrow/index.js +7 -1
  429. package/dist/icons/Arrow/index.js.map +1 -1
  430. package/dist/icons/Clock/index.d.ts +6 -0
  431. package/dist/icons/Clock/index.d.ts.map +1 -0
  432. package/dist/icons/Clock/index.js +18 -0
  433. package/dist/icons/Clock/index.js.map +1 -0
  434. package/dist/icons/Pin/index.d.ts +7 -0
  435. package/dist/icons/Pin/index.d.ts.map +1 -0
  436. package/dist/icons/Pin/index.js +23 -0
  437. package/dist/icons/Pin/index.js.map +1 -0
  438. package/dist/icons/Sidebar/index.d.ts.map +1 -1
  439. package/dist/icons/Sidebar/index.js +2 -0
  440. package/dist/icons/Sidebar/index.js.map +1 -1
  441. package/dist/icons/Table/index.css +1 -0
  442. package/dist/icons/Table/index.d.ts +7 -0
  443. package/dist/icons/Table/index.d.ts.map +1 -0
  444. package/dist/icons/Table/index.js +25 -0
  445. package/dist/icons/Table/index.js.map +1 -0
  446. package/dist/layouts/Root/getRootLayoutData.d.ts +3 -6
  447. package/dist/layouts/Root/getRootLayoutData.d.ts.map +1 -1
  448. package/dist/layouts/Root/getRootLayoutData.js +14 -13
  449. package/dist/layouts/Root/getRootLayoutData.js.map +1 -1
  450. package/dist/layouts/Root/index.d.ts +1 -1
  451. package/dist/layouts/Root/index.d.ts.map +1 -1
  452. package/dist/layouts/Root/index.js +11 -18
  453. package/dist/layouts/Root/index.js.map +1 -1
  454. package/dist/providers/ListQuery/getSearchWithListQuery.d.ts +7 -0
  455. package/dist/providers/ListQuery/getSearchWithListQuery.d.ts.map +1 -0
  456. package/dist/providers/ListQuery/getSearchWithListQuery.js +22 -0
  457. package/dist/providers/ListQuery/getSearchWithListQuery.js.map +1 -0
  458. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  459. package/dist/providers/ListQuery/index.js +11 -12
  460. package/dist/providers/ListQuery/index.js.map +1 -1
  461. package/dist/providers/ListQuery/types.d.ts +0 -4
  462. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  463. package/dist/providers/ListQuery/types.js.map +1 -1
  464. package/dist/providers/Preferences/index.d.ts +7 -1
  465. package/dist/providers/Preferences/index.d.ts.map +1 -1
  466. package/dist/providers/Preferences/index.js +62 -20
  467. package/dist/providers/Preferences/index.js.map +1 -1
  468. package/dist/providers/RouteCache/index.d.ts.map +1 -1
  469. package/dist/providers/RouteCache/index.js +38 -37
  470. package/dist/providers/RouteCache/index.js.map +1 -1
  471. package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
  472. package/dist/providers/TableColumns/RenderDefaultCell/index.js +1 -2
  473. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
  474. package/dist/providers/TableColumns/buildColumnState/index.d.ts +1 -0
  475. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  476. package/dist/providers/TableColumns/buildColumnState/index.js +2 -0
  477. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  478. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +2 -1
  479. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  480. package/dist/providers/TableColumns/buildColumnState/renderCell.js +12 -28
  481. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  482. package/dist/providers/TableColumns/types.d.ts +1 -34
  483. package/dist/providers/TableColumns/types.d.ts.map +1 -1
  484. package/dist/providers/TableColumns/types.js.map +1 -1
  485. package/dist/providers/ToastContainer/index.css +6 -7
  486. package/dist/providers/Translation/index.d.ts.map +1 -1
  487. package/dist/providers/Translation/index.js +11 -1
  488. package/dist/providers/Translation/index.js.map +1 -1
  489. package/dist/styles.css +163 -58
  490. package/dist/utilities/appendCacheTag.d.ts +1 -0
  491. package/dist/utilities/appendCacheTag.d.ts.map +1 -1
  492. package/dist/utilities/appendCacheTag.js +2 -1
  493. package/dist/utilities/appendCacheTag.js.map +1 -1
  494. package/dist/utilities/buildClientFieldSchemaMap/index.d.ts.map +1 -1
  495. package/dist/utilities/buildClientFieldSchemaMap/index.js +9 -4
  496. package/dist/utilities/buildClientFieldSchemaMap/index.js.map +1 -1
  497. package/dist/utilities/filterLLMInstructionsMenuItems.d.ts +9 -0
  498. package/dist/utilities/filterLLMInstructionsMenuItems.d.ts.map +1 -0
  499. package/dist/utilities/filterLLMInstructionsMenuItems.js +37 -0
  500. package/dist/utilities/filterLLMInstructionsMenuItems.js.map +1 -0
  501. package/dist/utilities/filterOutUploadFields.js +1 -1
  502. package/dist/utilities/filterOutUploadFields.js.map +1 -1
  503. package/dist/utilities/getClientConfig.d.ts +5 -1
  504. package/dist/utilities/getClientConfig.d.ts.map +1 -1
  505. package/dist/utilities/getClientConfig.js +2 -1
  506. package/dist/utilities/getClientConfig.js.map +1 -1
  507. package/dist/utilities/getClientSchemaMap.d.ts.map +1 -1
  508. package/dist/utilities/getClientSchemaMap.js +2 -1
  509. package/dist/utilities/getClientSchemaMap.js.map +1 -1
  510. package/dist/utilities/getDocumentThumbnail.d.ts +6 -0
  511. package/dist/utilities/getDocumentThumbnail.d.ts.map +1 -0
  512. package/dist/utilities/getDocumentThumbnail.js +27 -0
  513. package/dist/utilities/getDocumentThumbnail.js.map +1 -0
  514. package/dist/utilities/getDocumentThumbnailPopulate.d.ts +7 -0
  515. package/dist/utilities/getDocumentThumbnailPopulate.d.ts.map +1 -0
  516. package/dist/utilities/getDocumentThumbnailPopulate.js +23 -0
  517. package/dist/utilities/getDocumentThumbnailPopulate.js.map +1 -0
  518. package/dist/utilities/getDocumentThumbnailSelect.d.ts +7 -0
  519. package/dist/utilities/getDocumentThumbnailSelect.d.ts.map +1 -0
  520. package/dist/utilities/getDocumentThumbnailSelect.js +24 -0
  521. package/dist/utilities/getDocumentThumbnailSelect.js.map +1 -0
  522. package/dist/utilities/hierarchyCollectionRestrictions.d.ts +15 -0
  523. package/dist/utilities/hierarchyCollectionRestrictions.d.ts.map +1 -0
  524. package/dist/utilities/hierarchyCollectionRestrictions.js +17 -0
  525. package/dist/utilities/hierarchyCollectionRestrictions.js.map +1 -0
  526. package/dist/utilities/renderTable.d.ts +2 -1
  527. package/dist/utilities/renderTable.d.ts.map +1 -1
  528. package/dist/utilities/renderTable.js +2 -0
  529. package/dist/utilities/renderTable.js.map +1 -1
  530. package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
  531. package/dist/utilities/schedulePublishHandler.js +3 -0
  532. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  533. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  534. package/dist/utilities/serverFunctionRegistry.js +2 -0
  535. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  536. package/dist/utilities/traverseForLocalizedFields.d.ts +7 -2
  537. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  538. package/dist/utilities/traverseForLocalizedFields.js +22 -8
  539. package/dist/utilities/traverseForLocalizedFields.js.map +1 -1
  540. package/dist/views/API/index.css +1 -2
  541. package/dist/views/CreateFirstUser/index.css +0 -2
  542. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  543. package/dist/views/CreateFirstUser/index.js +4 -2
  544. package/dist/views/CreateFirstUser/index.js.map +1 -1
  545. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  546. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +31 -21
  547. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  548. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +1 -2
  549. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  550. package/dist/views/Dashboard/Default/ModularDashboard/index.css +4 -3
  551. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts +1 -1
  552. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
  553. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +16 -4
  554. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  555. package/dist/views/Document/index.js +1 -1
  556. package/dist/views/Document/index.js.map +1 -1
  557. package/dist/views/Document/renderDocumentSlots.d.ts +1 -1
  558. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  559. package/dist/views/Document/renderDocumentSlots.js +10 -3
  560. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  561. package/dist/views/Edit/Auth/APIKey.d.ts.map +1 -1
  562. package/dist/views/Edit/Auth/APIKey.js +1 -0
  563. package/dist/views/Edit/Auth/APIKey.js.map +1 -1
  564. package/dist/views/Edit/Auth/index.css +4 -5
  565. package/dist/views/Edit/index.css +26 -0
  566. package/dist/views/Edit/index.d.ts.map +1 -1
  567. package/dist/views/Edit/index.js +1 -1
  568. package/dist/views/Edit/index.js.map +1 -1
  569. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  570. package/dist/views/ForgotPassword/index.js +1 -3
  571. package/dist/views/ForgotPassword/index.js.map +1 -1
  572. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
  573. package/dist/views/HierarchyList/DocumentListSelection/index.js +103 -105
  574. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  575. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts +4 -1
  576. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts.map +1 -1
  577. package/dist/views/HierarchyList/HierarchyListHeader/index.js +26 -14
  578. package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
  579. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -1
  580. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +44 -86
  581. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
  582. package/dist/views/HierarchyList/HierarchyTable/index.css +8 -31
  583. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +3 -1
  584. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  585. package/dist/views/HierarchyList/HierarchyTable/index.js +78 -5
  586. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  587. package/dist/views/HierarchyList/getHierarchyListURL.d.ts +7 -0
  588. package/dist/views/HierarchyList/getHierarchyListURL.d.ts.map +1 -0
  589. package/dist/views/HierarchyList/getHierarchyListURL.js +22 -0
  590. package/dist/views/HierarchyList/getHierarchyListURL.js.map +1 -0
  591. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  592. package/dist/views/HierarchyList/index.js +35 -11
  593. package/dist/views/HierarchyList/index.js.map +1 -1
  594. package/dist/views/List/DocumentGrid/index.d.ts +17 -0
  595. package/dist/views/List/DocumentGrid/index.d.ts.map +1 -0
  596. package/dist/views/List/DocumentGrid/index.js +117 -0
  597. package/dist/views/List/DocumentGrid/index.js.map +1 -0
  598. package/dist/views/List/GroupedDocumentGrid/index.css +17 -0
  599. package/dist/views/List/GroupedDocumentGrid/index.d.ts +14 -0
  600. package/dist/views/List/GroupedDocumentGrid/index.d.ts.map +1 -0
  601. package/dist/views/List/GroupedDocumentGrid/index.js +99 -0
  602. package/dist/views/List/GroupedDocumentGrid/index.js.map +1 -0
  603. package/dist/views/List/ListHeader/index.css +4 -5
  604. package/dist/views/List/ListHeader/index.d.ts +3 -1
  605. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  606. package/dist/views/List/ListHeader/index.js +15 -4
  607. package/dist/views/List/ListHeader/index.js.map +1 -1
  608. package/dist/views/List/enrichDocsWithVersionStatus.d.ts.map +1 -1
  609. package/dist/views/List/enrichDocsWithVersionStatus.js +3 -1
  610. package/dist/views/List/enrichDocsWithVersionStatus.js.map +1 -1
  611. package/dist/views/List/getDocumentListItemURL.d.ts +9 -0
  612. package/dist/views/List/getDocumentListItemURL.d.ts.map +1 -0
  613. package/dist/views/List/getDocumentListItemURL.js +23 -0
  614. package/dist/views/List/getDocumentListItemURL.js.map +1 -0
  615. package/dist/views/List/handleGroupBy.d.ts +6 -2
  616. package/dist/views/List/handleGroupBy.d.ts.map +1 -1
  617. package/dist/views/List/handleGroupBy.js +13 -3
  618. package/dist/views/List/handleGroupBy.js.map +1 -1
  619. package/dist/views/List/index.client.d.ts.map +1 -1
  620. package/dist/views/List/index.client.js +63 -18
  621. package/dist/views/List/index.client.js.map +1 -1
  622. package/dist/views/List/index.css +1 -1
  623. package/dist/views/List/index.d.ts.map +1 -1
  624. package/dist/views/List/index.js +91 -11
  625. package/dist/views/List/index.js.map +1 -1
  626. package/dist/views/List/renderListViewSlots.d.ts +3 -2
  627. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  628. package/dist/views/List/renderListViewSlots.js +12 -4
  629. package/dist/views/List/renderListViewSlots.js.map +1 -1
  630. package/dist/views/List/resolveDocumentListItemURL.d.ts +11 -0
  631. package/dist/views/List/resolveDocumentListItemURL.d.ts.map +1 -0
  632. package/dist/views/List/resolveDocumentListItemURL.js +30 -0
  633. package/dist/views/List/resolveDocumentListItemURL.js.map +1 -0
  634. package/dist/views/NotFound/index.css +0 -2
  635. package/dist/views/ResetPassword/index.d.ts.map +1 -1
  636. package/dist/views/ResetPassword/index.js +1 -3
  637. package/dist/views/ResetPassword/index.js.map +1 -1
  638. package/dist/views/Root/getRouteData.d.ts +1 -8
  639. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  640. package/dist/views/Root/getRouteData.js +3 -12
  641. package/dist/views/Root/getRouteData.js.map +1 -1
  642. package/dist/views/Unauthorized/index.css +0 -2
  643. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  644. package/dist/views/Unauthorized/index.js +2 -1
  645. package/dist/views/Unauthorized/index.js.map +1 -1
  646. package/dist/views/Version/Default/index.css +7 -11
  647. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.css +0 -1
  648. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +2 -12
  649. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  650. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.css +0 -1
  651. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js +2 -2
  652. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
  653. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +2 -2
  654. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  655. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +2 -2
  656. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  657. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +2 -2
  658. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  659. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.css +3 -4
  660. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +2 -2
  661. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  662. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.css +0 -1
  663. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +2 -2
  664. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  665. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  666. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +2 -2
  667. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  668. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +8 -8
  669. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  670. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +2 -2
  671. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  672. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.css +0 -1
  673. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.d.ts.map +1 -1
  674. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +2 -2
  675. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
  676. package/dist/views/Versions/VersionPillLabel/index.css +1 -2
  677. package/dist/views/Versions/index.css +1 -1
  678. package/dist/widgets/CollectionCards/index.css +0 -1
  679. package/dist/widgets/CollectionQuery/index.css +4 -6
  680. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +1 -1
  681. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +31 -5
  682. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -1
  683. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.css +41 -0
  684. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts +19 -0
  685. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts.map +1 -0
  686. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js +121 -0
  687. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js.map +1 -0
  688. package/dist/widgets/RecentlyViewed/getDocuments.d.ts +20 -0
  689. package/dist/widgets/RecentlyViewed/getDocuments.d.ts.map +1 -0
  690. package/dist/widgets/RecentlyViewed/getDocuments.js +251 -0
  691. package/dist/widgets/RecentlyViewed/getDocuments.js.map +1 -0
  692. package/dist/widgets/RecentlyViewed/index.client.d.ts +41 -0
  693. package/dist/widgets/RecentlyViewed/index.client.d.ts.map +1 -0
  694. package/dist/widgets/RecentlyViewed/index.client.js +404 -0
  695. package/dist/widgets/RecentlyViewed/index.client.js.map +1 -0
  696. package/dist/widgets/RecentlyViewed/index.css +352 -0
  697. package/dist/widgets/RecentlyViewed/index.d.ts +1 -1
  698. package/dist/widgets/RecentlyViewed/index.d.ts.map +1 -1
  699. package/dist/widgets/RecentlyViewed/index.js +33 -134
  700. package/dist/widgets/RecentlyViewed/index.js.map +1 -1
  701. package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts +18 -0
  702. package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts.map +1 -0
  703. package/dist/widgets/RecentlyViewed/pinnedPreferences.js +81 -0
  704. package/dist/widgets/RecentlyViewed/pinnedPreferences.js.map +1 -0
  705. package/dist/widgets/RecentlyViewed/recents.d.ts +8 -0
  706. package/dist/widgets/RecentlyViewed/recents.d.ts.map +1 -0
  707. package/dist/widgets/RecentlyViewed/recents.js +19 -0
  708. package/dist/widgets/RecentlyViewed/recents.js.map +1 -0
  709. package/dist/widgets/Welcome/index.css +16 -9
  710. package/dist/widgets/WidgetCard/index.css +4 -8
  711. package/package.json +8 -8
  712. package/dist/utilities/dateLocales.d.ts +0 -30
  713. package/dist/utilities/dateLocales.d.ts.map +0 -1
  714. package/dist/utilities/dateLocales.js +0 -57
  715. package/dist/utilities/dateLocales.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","React","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useEffectEvent","TagIcon","useConfig","useHierarchy","useTranslation","Button","DialogBody","DialogHeader","DialogModal","useDocumentDrawer","DrawerDepthProvider","HierarchyColumnBrowser","fetchAncestorPath","baseClass","HierarchyModalContent","baseFilter","closeModal","columnBrowserRef","disabledIds","filterByCollection","hasMany","hierarchyCollectionSlug","Icon","initialSelections","onCreateNew","onMoveToRoot","onSave","parentFieldName","ref","showMoveToRoot","useAsTitle","i18n","t","config","routes","api","serverURL","getEntityConfig","collectionConfig","collectionSlug","collectionLabel","labels","plural","parentFieldName_internal","hierarchy","initialExpandedPath","setInitialExpandedPath","isLoadingPath","setIsLoadingPath","Boolean","length","hasLoadedPathRef","firstSelection","mapSelections","ids","map","Map","id","set","path","loadAncestorPath","itemId","current","selections","setSelections","selectedIds","Set","keys","ancestorsWithSelections","handleSave","handleSelect","prev","next","has","delete","clear","handleClearAll","handleCancel","selectItem","selectionCount","size","_jsxs","className","_jsx","title","label","buttonStyle","margin","onClick","_Fragment","count","onSelect","HierarchyModal","props","modalSlug","reopenCount","refreshTree","createParentId","setCreateParentId","modalContentRef","documentDrawerKey","setDocumentDrawerKey","documentDrawerSlug","DocumentDrawer","closeDrawer","closeDocumentDrawer","openDrawer","openDocumentDrawer","drawerSlug","handleCreateNew","parentId","setTimeout","handleDocumentSave","doc","undefined","refreshColumn","modalContent","closeOnBlur","slug","initialData"],"sources":["../../../../src/elements/Hierarchy/Modal/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport type { HierarchyColumnBrowserRef } from '../ColumnBrowser/index.js'\nimport type { HierarchyModalInternalProps, SelectionWithPath } from './types.js'\n\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { TagIcon } from '../../../icons/Tag/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { DialogBody, DialogHeader, DialogModal } from '../../Dialog/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { DrawerDepthProvider } from '../../Drawer/index.js'\nimport { HierarchyColumnBrowser } from '../ColumnBrowser/index.js'\nimport { fetchAncestorPath } from './fetchAncestorPath.js'\nimport './index.css'\n\nexport const baseClass = 'hierarchy-modal'\n\ntype HierarchyModalContentProps = {\n columnBrowserRef?: React.RefObject<HierarchyColumnBrowserRef | null>\n onCreateNew?: (params: { parentId: null | number | string }) => void\n} & HierarchyModalInternalProps\n\nexport type HierarchyModalContentRef = {\n selectItem: (id: number | string) => void\n}\n\nexport const HierarchyModalContent = function HierarchyModalContent({\n baseFilter,\n closeModal,\n columnBrowserRef,\n disabledIds,\n filterByCollection,\n hasMany = false,\n hierarchyCollectionSlug,\n Icon,\n initialSelections,\n onCreateNew,\n onMoveToRoot,\n onSave,\n parentFieldName,\n ref,\n showMoveToRoot,\n useAsTitle,\n}: { ref?: React.RefObject<HierarchyModalContentRef | null> } & HierarchyModalContentProps) {\n const { i18n, t } = useTranslation()\n // NOTE: Do NOT use useModal() here - it causes re-renders when any modal state changes\n // Use closeModal prop instead which already handles closing the modal\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const collectionLabel = collectionConfig\n ? getTranslation(collectionConfig.labels?.plural || hierarchyCollectionSlug, i18n)\n : hierarchyCollectionSlug\n\n const parentFieldName_internal =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy.parentFieldName\n : parentFieldName\n\n const [initialExpandedPath, setInitialExpandedPath] = useState<(number | string)[] | undefined>()\n const [isLoadingPath, setIsLoadingPath] = useState(Boolean(initialSelections?.length))\n const hasLoadedPathRef = React.useRef(false)\n const firstSelection = initialSelections?.[0]\n\n const mapSelections = useCallback((ids?: (number | string)[]) => {\n const map = new Map<number | string, SelectionWithPath>()\n\n if (ids) {\n for (const id of ids) {\n map.set(id, { id, path: [] })\n }\n }\n\n return map\n }, [])\n\n const loadAncestorPath = useEffectEvent(async (itemId?: number | string) => {\n if (!itemId) {\n setIsLoadingPath(false)\n return\n }\n\n try {\n const path = await fetchAncestorPath({\n api,\n collectionSlug: hierarchyCollectionSlug,\n itemId,\n parentFieldName: parentFieldName_internal,\n serverURL,\n })\n setInitialExpandedPath(path)\n } catch {\n // Silently handle fetch errors - will just start at root\n } finally {\n setIsLoadingPath(false)\n }\n })\n\n // Load ancestor path on mount\n useEffect(() => {\n if (hasLoadedPathRef.current) {\n return\n }\n hasLoadedPathRef.current = true\n void loadAncestorPath(firstSelection)\n }, [firstSelection])\n\n const [selections, setSelections] = useState<Map<number | string, SelectionWithPath>>(() =>\n mapSelections(initialSelections),\n )\n\n const selectedIds = useMemo(() => new Set(selections.keys()), [selections])\n\n // For now, ancestorsWithSelections is empty - will be computed when we have path tracking\n const ancestorsWithSelections = useMemo(() => new Set<number | string>(), [])\n\n const handleSave = useCallback(() => {\n onSave({ closeModal, selections })\n }, [onSave, selections, closeModal])\n\n const handleSelect = useCallback(\n ({\n id,\n path,\n }: {\n id: number | string\n path: Array<{ id: number | string; title: string }>\n }) => {\n setSelections((prev) => {\n const next = new Map(prev)\n\n if (next.has(id)) {\n next.delete(id)\n } else {\n if (!hasMany) {\n // Single select: clear previous selections\n next.clear()\n }\n next.set(id, { id, path })\n }\n\n return next\n })\n },\n [hasMany],\n )\n\n const handleClearAll = useCallback(() => {\n setSelections(new Map())\n }, [])\n\n const handleCancel = useCallback(() => {\n setSelections(mapSelections(initialSelections))\n closeModal()\n }, [closeModal, initialSelections, mapSelections])\n\n // Expose selectItem for programmatic selection (e.g., after creating a new item)\n useImperativeHandle(\n ref,\n () => ({\n selectItem: (id: number | string) => {\n setSelections((prev) => {\n const next = new Map(prev)\n if (!hasMany) {\n next.clear()\n }\n // Path will be empty for newly created items - could be enhanced later\n next.set(id, { id, path: [] })\n return next\n })\n },\n }),\n [hasMany],\n )\n\n const selectionCount = selections.size\n\n return (\n <div className={`${baseClass}__content`}>\n <DialogHeader title={t('general:selectValue', { label: collectionLabel })}>\n <div className={`${baseClass}__header-actions`}>\n <Button buttonStyle=\"secondary\" margin={false} onClick={handleCancel} size=\"medium\">\n {t('general:cancel')}\n </Button>\n <Button margin={false} onClick={handleSave} size=\"medium\">\n {t('general:select')}\n </Button>\n </div>\n </DialogHeader>\n <DialogBody>\n <div className={`${baseClass}__subheader`}>\n <div className={`${baseClass}__subheader-left`}>\n {Icon || <TagIcon />}\n <h4>{collectionLabel}</h4>\n </div>\n <div className={`${baseClass}__subheader-right`}>\n {showMoveToRoot && onMoveToRoot && (\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__move-to-root`}\n margin={false}\n onClick={onMoveToRoot}\n size=\"medium\"\n >\n {t('hierarchy:moveToRoot')}\n </Button>\n )}\n {Boolean(selectionCount) && (\n <>\n {\n <span className={`${baseClass}__selection-info`}>\n {t('general:selectedCount', { count: selectionCount, label: '' })}\n </span>\n }\n <span>—</span>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__clear-all`}\n margin={false}\n onClick={handleClearAll}\n size=\"medium\"\n >\n {t('general:clear')}\n </Button>\n </>\n )}\n </div>\n </div>\n <div className={`${baseClass}__columns`}>\n <HierarchyColumnBrowser\n ancestorsWithSelections={ancestorsWithSelections}\n baseFilter={baseFilter}\n disabledIds={disabledIds}\n filterByCollection={filterByCollection}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n initialExpandedPath={initialExpandedPath}\n isLoadingPath={isLoadingPath}\n onCreateNew={onCreateNew}\n onSelect={handleSelect}\n parentFieldName={parentFieldName}\n ref={columnBrowserRef}\n selectedIds={selectedIds}\n useAsTitle={useAsTitle}\n />\n </div>\n </DialogBody>\n </div>\n )\n}\n\nexport const HierarchyModal: React.FC<HierarchyModalInternalProps> = (props) => {\n const { hierarchyCollectionSlug, modalSlug, parentFieldName, reopenCount } = props\n\n const { refreshTree } = useHierarchy()\n\n // Get parentFieldName from hierarchy config\n const { getEntityConfig } = useConfig()\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const parentFieldName_internal =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy.parentFieldName\n : parentFieldName\n\n // Track which parentId is being used for the document drawer - use state to trigger re-render\n const [createParentId, setCreateParentId] = useState<null | number | string>(null)\n\n // Ref to access column browser's refresh function\n const columnBrowserRef = useRef<HierarchyColumnBrowserRef | null>(null)\n\n // Ref to access drawer content's selectItem function\n const modalContentRef = useRef<HierarchyModalContentRef | null>(null)\n\n // Key for DocumentDrawer to force remount when parentId changes\n const [documentDrawerKey, setDocumentDrawerKey] = useState(0)\n\n // Stable drawer slug for the document drawer - must not change on remount\n const documentDrawerSlug = `${modalSlug}-create-doc`\n\n // Document drawer for creating new items - rendered OUTSIDE the modal to avoid nested modal issues\n const [DocumentDrawer, , { closeDrawer: closeDocumentDrawer, openDrawer: openDocumentDrawer }] =\n useDocumentDrawer({\n collectionSlug: hierarchyCollectionSlug,\n drawerSlug: documentDrawerSlug,\n })\n\n const handleCreateNew = useCallback(\n ({ parentId }: { parentId: null | number | string }) => {\n // Increment key to force DocumentDrawer remount with new initialData\n setDocumentDrawerKey((prev) => prev + 1)\n setCreateParentId(parentId)\n // Use setTimeout to ensure state update triggers re-render before opening drawer\n setTimeout(() => {\n openDocumentDrawer()\n }, 0)\n },\n [openDocumentDrawer],\n )\n\n // Refresh the column, select the new item, and close the document drawer after creation\n const handleDocumentSave = useCallback<\n NonNullable<React.ComponentProps<typeof DocumentDrawer>['onSave']>\n >(\n ({ doc }) => {\n if (columnBrowserRef.current && createParentId !== undefined) {\n void columnBrowserRef.current.refreshColumn(createParentId)\n }\n if (modalContentRef.current && doc?.id) {\n modalContentRef.current.selectItem(doc.id)\n }\n refreshTree(hierarchyCollectionSlug)\n closeDocumentDrawer()\n },\n [closeDocumentDrawer, createParentId, hierarchyCollectionSlug, refreshTree],\n )\n\n // Memoize the content - only depends on stable values\n const modalContent = useMemo(\n () => (\n <HierarchyModalContent\n key={reopenCount}\n {...props}\n columnBrowserRef={columnBrowserRef}\n onCreateNew={handleCreateNew}\n ref={modalContentRef}\n />\n ),\n [handleCreateNew, props, reopenCount],\n )\n\n return (\n <>\n <DialogModal className={baseClass} closeOnBlur size=\"large\" slug={modalSlug}>\n {modalContent}\n </DialogModal>\n <DrawerDepthProvider>\n <DocumentDrawer\n initialData={\n createParentId !== null ? { [parentFieldName_internal]: createParentId } : undefined\n }\n key={documentDrawerKey}\n onSave={handleDocumentSave}\n />\n </DrawerDepthProvider>\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useEffectEvent","useConfig","useHierarchy","useTranslation","DialogBody","DialogHeader","DialogModal","useDocumentDrawer","DrawerDepthProvider","HierarchyColumnBrowser","fetchAncestorPath","HierarchyModalFooter","createHierarchySelections","selectHierarchyItem","baseClass","HierarchyModalContent","baseFilter","closeModal","columnBrowserRef","confirmLabel","disabledIds","filterByCollection","hasMany","hierarchyCollectionSlug","Icon","initialSelections","isBusy","onCreateNew","onMoveToRoot","onSave","parentFieldName","ref","showMoveToRoot","title","useAsTitle","i18n","t","config","routes","api","serverURL","getEntityConfig","collectionConfig","collectionSlug","collectionLabel","labels","plural","collectionLabelSingular","singular","parentFieldName_internal","hierarchy","initialExpandedPath","setInitialExpandedPath","previousPath","setPreviousPath","isLoadingPath","setIsLoadingPath","Boolean","length","hasSelectedDestination","setHasSelectedDestination","hasLoadedPathRef","firstSelection","loadAncestorPath","itemId","undefined","ancestorIds","path","current","selections","setSelections","selectedIds","Set","keys","ancestorsWithSelections","handleSave","handleSelect","id","prev","handleClearAll","Map","handleCancel","selectItem","next","clear","set","selectionCount","size","destination","values","value","destinationPath","isDestinationUnchanged","_jsxs","className","_jsx","onClose","showClose","label","onSelect","isConfirmDisabled","isMultiSelect","onClear","onConfirm","placeholderLabel","selectionCountLabel","count","HierarchyModal","props","modalSlug","reopenCount","refreshTree","createParentId","setCreateParentId","createParentPath","setCreateParentPath","modalContentRef","documentDrawerKey","setDocumentDrawerKey","documentDrawerSlug","DocumentDrawer","closeDrawer","closeDocumentDrawer","openDrawer","openDocumentDrawer","drawerSlug","handleCreateNew","parentId","setTimeout","handleDocumentSave","doc","refreshColumn","String","modalContent","_Fragment","closeOnBlur","slug","initialData"],"sources":["../../../../src/elements/Hierarchy/Modal/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport type { HierarchyColumnBrowserRef } from '../ColumnBrowser/index.js'\nimport type { PathSegment } from '../ColumnBrowser/types.js'\nimport type { HierarchyModalInternalProps, SelectionWithPath } from './types.js'\n\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { DialogBody, DialogHeader, DialogModal } from '../../Dialog/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { DrawerDepthProvider } from '../../Drawer/index.js'\nimport { HierarchyColumnBrowser } from '../ColumnBrowser/index.js'\nimport { fetchAncestorPath } from './fetchAncestorPath.js'\nimport { HierarchyModalFooter } from './Footer/index.js'\nimport { createHierarchySelections, selectHierarchyItem } from './selection.js'\nimport './index.css'\n\nexport const baseClass = 'hierarchy-modal'\n\ntype HierarchyModalContentProps = {\n columnBrowserRef?: React.RefObject<HierarchyColumnBrowserRef | null>\n onCreateNew?: (params: { parentId: null | number | string; path: PathSegment[] }) => void\n} & HierarchyModalInternalProps\n\nexport type HierarchyModalContentRef = {\n selectItem: (selection: SelectionWithPath) => void\n}\n\nexport const HierarchyModalContent = function HierarchyModalContent({\n baseFilter,\n closeModal,\n columnBrowserRef,\n confirmLabel,\n disabledIds,\n filterByCollection,\n hasMany = false,\n hierarchyCollectionSlug,\n Icon,\n initialSelections,\n isBusy,\n onCreateNew,\n onMoveToRoot,\n onSave,\n parentFieldName,\n ref,\n showMoveToRoot,\n title,\n useAsTitle,\n}: { ref?: React.RefObject<HierarchyModalContentRef | null> } & HierarchyModalContentProps) {\n const { i18n, t } = useTranslation()\n // NOTE: Do NOT use useModal() here - it causes re-renders when any modal state changes\n // Use closeModal prop instead which already handles closing the modal\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const collectionLabel = collectionConfig\n ? getTranslation(collectionConfig.labels?.plural || hierarchyCollectionSlug, i18n)\n : hierarchyCollectionSlug\n const collectionLabelSingular = collectionConfig\n ? getTranslation(collectionConfig.labels?.singular || hierarchyCollectionSlug, i18n)\n : hierarchyCollectionSlug\n\n const parentFieldName_internal =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy.parentFieldName\n : parentFieldName\n\n const [initialExpandedPath, setInitialExpandedPath] = useState<(number | string)[] | undefined>()\n const [previousPath, setPreviousPath] = useState<PathSegment[] | undefined>()\n const [isLoadingPath, setIsLoadingPath] = useState(Boolean(initialSelections?.length))\n const [hasSelectedDestination, setHasSelectedDestination] = useState(false)\n const hasLoadedPathRef = React.useRef(false)\n const firstSelection = initialSelections?.[0]\n\n const loadAncestorPath = useEffectEvent(async (itemId?: number | string) => {\n if (itemId === undefined || itemId === null) {\n setIsLoadingPath(false)\n return\n }\n\n try {\n const { ancestorIds, path } = await fetchAncestorPath({\n api,\n collectionSlug: hierarchyCollectionSlug,\n itemId,\n parentFieldName: parentFieldName_internal,\n serverURL,\n useAsTitle: useAsTitle || 'id',\n })\n setInitialExpandedPath(ancestorIds)\n setPreviousPath(path)\n } catch {\n // Silently handle fetch errors - will just start at root\n } finally {\n setIsLoadingPath(false)\n }\n })\n\n // Load ancestor path on mount\n useEffect(() => {\n if (hasLoadedPathRef.current) {\n return\n }\n hasLoadedPathRef.current = true\n void loadAncestorPath(firstSelection)\n }, [firstSelection])\n\n const [selections, setSelections] = useState<Map<number | string, SelectionWithPath>>(() =>\n createHierarchySelections({ hasMany, initialSelections }),\n )\n\n const selectedIds = useMemo(() => new Set(selections.keys()), [selections])\n\n // For now, ancestorsWithSelections is empty - will be computed when we have path tracking\n const ancestorsWithSelections = useMemo(() => new Set<number | string>(), [])\n\n const handleSave = useCallback(() => {\n onSave({ closeModal, selections })\n }, [onSave, selections, closeModal])\n\n const handleSelect = useCallback(\n ({\n id,\n path,\n }: {\n id: number | string\n path: Array<{ id: number | string; title: string }>\n }) => {\n setHasSelectedDestination(true)\n setSelections((prev) => {\n return selectHierarchyItem({ id, current: prev, hasMany, path })\n })\n },\n [hasMany],\n )\n\n const handleClearAll = useCallback(() => {\n setSelections(new Map())\n }, [])\n\n const handleCancel = useCallback(() => {\n setSelections(createHierarchySelections({ hasMany, initialSelections }))\n setHasSelectedDestination(false)\n closeModal()\n }, [closeModal, hasMany, initialSelections])\n\n // Expose selectItem for programmatic selection (e.g., after creating a new item)\n useImperativeHandle(\n ref,\n () => ({\n selectItem: ({ id, path }: SelectionWithPath) => {\n setHasSelectedDestination(true)\n setSelections((prev) => {\n const next = new Map(prev)\n if (!hasMany) {\n next.clear()\n }\n next.set(id, { id, path })\n return next\n })\n },\n }),\n [hasMany],\n )\n\n const selectionCount = selections.size\n const destination =\n hasMany || !hasSelectedDestination ? undefined : selections.values().next().value\n const destinationPath = destination?.path\n const isDestinationUnchanged = destination !== undefined && destination.id === firstSelection\n\n return (\n <div className={`${baseClass}__content`}>\n <DialogHeader\n onClose={handleCancel}\n showClose\n title={title || t('general:selectValue', { label: collectionLabel })}\n />\n <DialogBody>\n <div className={`${baseClass}__columns`}>\n <HierarchyColumnBrowser\n ancestorsWithSelections={ancestorsWithSelections}\n baseFilter={baseFilter}\n disabledIds={disabledIds}\n filterByCollection={filterByCollection}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n initialExpandedPath={initialExpandedPath}\n isLoadingPath={isLoadingPath}\n onCreateNew={onCreateNew}\n onSelect={handleSelect}\n parentFieldName={parentFieldName}\n ref={columnBrowserRef}\n selectedIds={selectedIds}\n useAsTitle={useAsTitle}\n />\n </div>\n </DialogBody>\n <HierarchyModalFooter\n confirmLabel={confirmLabel || t('general:confirm')}\n destinationPath={destinationPath}\n Icon={Icon}\n isBusy={isBusy}\n isConfirmDisabled={\n !hasMany && (!hasSelectedDestination || selectionCount === 0 || isDestinationUnchanged)\n }\n isMultiSelect={hasMany}\n onClear={handleClearAll}\n onConfirm={handleSave}\n onMoveToRoot={onMoveToRoot}\n placeholderLabel={t('general:selectLabel', { label: collectionLabelSingular })}\n previousPath={hasMany ? undefined : previousPath}\n selectionCount={selectionCount}\n selectionCountLabel={t('general:selectedCount', {\n count: selectionCount,\n label: selectionCount === 1 ? collectionLabelSingular : collectionLabel,\n })}\n showMoveToRoot={showMoveToRoot}\n />\n </div>\n )\n}\n\nexport const HierarchyModal: React.FC<HierarchyModalInternalProps> = (props) => {\n const { hierarchyCollectionSlug, modalSlug, parentFieldName, reopenCount, useAsTitle } = props\n\n const { refreshTree } = useHierarchy()\n\n // Get parentFieldName from hierarchy config\n const { getEntityConfig } = useConfig()\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const parentFieldName_internal =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy.parentFieldName\n : parentFieldName\n\n // Track which parentId is being used for the document drawer - use state to trigger re-render\n const [createParentId, setCreateParentId] = useState<null | number | string>(null)\n const [createParentPath, setCreateParentPath] = useState<PathSegment[]>([])\n\n // Ref to access column browser's refresh function\n const columnBrowserRef = useRef<HierarchyColumnBrowserRef | null>(null)\n\n // Ref to access drawer content's selectItem function\n const modalContentRef = useRef<HierarchyModalContentRef | null>(null)\n\n // Key for DocumentDrawer to force remount when parentId changes\n const [documentDrawerKey, setDocumentDrawerKey] = useState(0)\n\n // Stable drawer slug for the document drawer - must not change on remount\n const documentDrawerSlug = `${modalSlug}-create-doc`\n\n // Document drawer for creating new items - rendered OUTSIDE the modal to avoid nested modal issues\n const [DocumentDrawer, , { closeDrawer: closeDocumentDrawer, openDrawer: openDocumentDrawer }] =\n useDocumentDrawer({\n collectionSlug: hierarchyCollectionSlug,\n drawerSlug: documentDrawerSlug,\n })\n\n const handleCreateNew = useCallback(\n ({ parentId, path = [] }: { parentId: null | number | string; path?: PathSegment[] }) => {\n // Increment key to force DocumentDrawer remount with new initialData\n setDocumentDrawerKey((prev) => prev + 1)\n setCreateParentId(parentId)\n setCreateParentPath(path)\n // Use setTimeout to ensure state update triggers re-render before opening drawer\n setTimeout(() => {\n openDocumentDrawer()\n }, 0)\n },\n [openDocumentDrawer],\n )\n\n // Refresh the column, select the new item, and close the document drawer after creation\n const handleDocumentSave = useCallback<\n NonNullable<React.ComponentProps<typeof DocumentDrawer>['onSave']>\n >(\n ({ doc }) => {\n if (columnBrowserRef.current && createParentId !== undefined) {\n void columnBrowserRef.current.refreshColumn(createParentId)\n }\n if (modalContentRef.current && doc?.id) {\n const title = useAsTitle ? doc[useAsTitle] : undefined\n\n modalContentRef.current.selectItem({\n id: doc.id,\n path: [\n ...createParentPath,\n {\n id: doc.id,\n title:\n typeof title === 'number' || typeof title === 'string'\n ? String(title)\n : String(doc.id),\n },\n ],\n })\n }\n refreshTree(hierarchyCollectionSlug)\n closeDocumentDrawer()\n },\n [\n closeDocumentDrawer,\n createParentId,\n createParentPath,\n hierarchyCollectionSlug,\n refreshTree,\n useAsTitle,\n ],\n )\n\n // Memoize the content - only depends on stable values\n const modalContent = useMemo(\n () => (\n <HierarchyModalContent\n key={reopenCount}\n {...props}\n columnBrowserRef={columnBrowserRef}\n onCreateNew={handleCreateNew}\n ref={modalContentRef}\n />\n ),\n [handleCreateNew, props, reopenCount],\n )\n\n return (\n <>\n <DialogModal className={baseClass} closeOnBlur size=\"large\" slug={modalSlug}>\n {modalContent}\n </DialogModal>\n <DrawerDepthProvider>\n <DocumentDrawer\n initialData={\n createParentId !== null ? { [parentFieldName_internal]: createParentId } : undefined\n }\n key={documentDrawerKey}\n onSave={handleDocumentSave}\n />\n </DrawerDepthProvider>\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ import type { SelectionWithPath } from './types.js';
2
+ export declare const createHierarchySelections: ({ hasMany, initialSelections, }: {
3
+ hasMany: boolean;
4
+ initialSelections?: (number | string)[];
5
+ }) => Map<number | string, SelectionWithPath>;
6
+ export declare const selectHierarchyItem: ({ id, current, hasMany, path, }: {
7
+ current: Map<number | string, SelectionWithPath>;
8
+ hasMany: boolean;
9
+ id: number | string;
10
+ path: SelectionWithPath['path'];
11
+ }) => Map<number | string, SelectionWithPath>;
12
+ //# sourceMappingURL=selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Modal/selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,eAAO,MAAM,yBAAyB,oCAGnC;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CACxC,KAAG,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,iBAAiB,CASzC,CAAA;AAED,eAAO,MAAM,mBAAmB,oCAK7B;IACD,OAAO,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;CAChC,KAAG,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,iBAAiB,CAgBzC,CAAA"}
@@ -0,0 +1,40 @@
1
+ export const createHierarchySelections = ({
2
+ hasMany,
3
+ initialSelections
4
+ }) => {
5
+ const selections = new Map();
6
+ const selectionsToCreate = hasMany ? initialSelections : initialSelections?.slice(0, 1);
7
+ for (const id of selectionsToCreate ?? []) {
8
+ selections.set(id, {
9
+ id,
10
+ path: []
11
+ });
12
+ }
13
+ return selections;
14
+ };
15
+ export const selectHierarchyItem = ({
16
+ id,
17
+ current,
18
+ hasMany,
19
+ path
20
+ }) => {
21
+ const next = new Map(current);
22
+ if (!hasMany) {
23
+ next.clear();
24
+ next.set(id, {
25
+ id,
26
+ path
27
+ });
28
+ return next;
29
+ }
30
+ if (next.has(id)) {
31
+ next.delete(id);
32
+ } else {
33
+ next.set(id, {
34
+ id,
35
+ path
36
+ });
37
+ }
38
+ return next;
39
+ };
40
+ //# sourceMappingURL=selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.js","names":["createHierarchySelections","hasMany","initialSelections","selections","Map","selectionsToCreate","slice","id","set","path","selectHierarchyItem","current","next","clear","has","delete"],"sources":["../../../../src/elements/Hierarchy/Modal/selection.ts"],"sourcesContent":["import type { SelectionWithPath } from './types.js'\n\nexport const createHierarchySelections = ({\n hasMany,\n initialSelections,\n}: {\n hasMany: boolean\n initialSelections?: (number | string)[]\n}): Map<number | string, SelectionWithPath> => {\n const selections = new Map<number | string, SelectionWithPath>()\n const selectionsToCreate = hasMany ? initialSelections : initialSelections?.slice(0, 1)\n\n for (const id of selectionsToCreate ?? []) {\n selections.set(id, { id, path: [] })\n }\n\n return selections\n}\n\nexport const selectHierarchyItem = ({\n id,\n current,\n hasMany,\n path,\n}: {\n current: Map<number | string, SelectionWithPath>\n hasMany: boolean\n id: number | string\n path: SelectionWithPath['path']\n}): Map<number | string, SelectionWithPath> => {\n const next = new Map(current)\n\n if (!hasMany) {\n next.clear()\n next.set(id, { id, path })\n return next\n }\n\n if (next.has(id)) {\n next.delete(id)\n } else {\n next.set(id, { id, path })\n }\n\n return next\n}\n"],"mappings":"AAEA,OAAO,MAAMA,yBAAA,GAA4BA,CAAC;EACxCC,OAAO;EACPC;AAAiB,CAIlB;EACC,MAAMC,UAAA,GAAa,IAAIC,GAAA;EACvB,MAAMC,kBAAA,GAAqBJ,OAAA,GAAUC,iBAAA,GAAoBA,iBAAA,EAAmBI,KAAA,CAAM,GAAG;EAErF,KAAK,MAAMC,EAAA,IAAMF,kBAAA,IAAsB,EAAE,EAAE;IACzCF,UAAA,CAAWK,GAAG,CAACD,EAAA,EAAI;MAAEA,EAAA;MAAIE,IAAA,EAAM;IAAG;EACpC;EAEA,OAAON,UAAA;AACT;AAEA,OAAO,MAAMO,mBAAA,GAAsBA,CAAC;EAClCH,EAAE;EACFI,OAAO;EACPV,OAAO;EACPQ;AAAI,CAML;EACC,MAAMG,IAAA,GAAO,IAAIR,GAAA,CAAIO,OAAA;EAErB,IAAI,CAACV,OAAA,EAAS;IACZW,IAAA,CAAKC,KAAK;IACVD,IAAA,CAAKJ,GAAG,CAACD,EAAA,EAAI;MAAEA,EAAA;MAAIE;IAAK;IACxB,OAAOG,IAAA;EACT;EAEA,IAAIA,IAAA,CAAKE,GAAG,CAACP,EAAA,GAAK;IAChBK,IAAA,CAAKG,MAAM,CAACR,EAAA;EACd,OAAO;IACLK,IAAA,CAAKJ,GAAG,CAACD,EAAA,EAAI;MAAEA,EAAA;MAAIE;IAAK;EAC1B;EAEA,OAAOG,IAAA;AACT","ignoreList":[]}
@@ -20,14 +20,18 @@ export type UseHierarchyModalArgs = {
20
20
  Icon?: React.ReactNode;
21
21
  };
22
22
  export type HierarchyModalProps = {
23
+ readonly confirmLabel?: string;
23
24
  readonly hasMany?: boolean;
24
25
  readonly initialSelections?: (number | string)[];
26
+ /** Disables the confirm and move to root actions while a save is running */
27
+ readonly isBusy?: boolean;
25
28
  readonly onMoveToRoot?: () => void;
26
29
  readonly onSave: (params: {
27
30
  closeModal: () => void;
28
31
  selections: Map<number | string, SelectionWithPath>;
29
32
  }) => void;
30
33
  readonly showMoveToRoot?: boolean;
34
+ readonly title?: string;
31
35
  };
32
36
  export type HierarchyModalInternalProps = {
33
37
  /** Base filter constraint (e.g., tenant filter) to apply to all queries */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Modal/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Modal/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/elements/Hierarchy/Modal/types.ts"],"sourcesContent":["import type { Where } from 'payload'\nimport type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\nexport type SelectionWithPath = {\n id: number | string\n path: Array<{ id: number | string; title: string }>\n}\n\nexport type UseHierarchyModalArgs = {\n /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */\n disabledIds?: Set<number | string>\n /**\n * When provided, filters hierarchy items to only show those that accept these collections.\n * Used with collectionSpecific hierarchy config.\n */\n filterByCollection?: string[]\n hierarchyCollectionSlug: string\n Icon?: React.ReactNode\n}\n\nexport type HierarchyModalProps = {\n readonly hasMany?: boolean\n readonly initialSelections?: (number | string)[]\n readonly onMoveToRoot?: () => void\n readonly onSave: (params: {\n closeModal: () => void\n selections: Map<number | string, SelectionWithPath>\n }) => void\n readonly showMoveToRoot?: boolean\n}\n\nexport type HierarchyModalInternalProps = {\n /** Base filter constraint (e.g., tenant filter) to apply to all queries */\n readonly baseFilter?: null | Where\n readonly closeModal: () => void\n /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */\n readonly disabledIds?: Set<number | string>\n /**\n * When provided, filters hierarchy items to only show those that accept these collections.\n * Used with collectionSpecific hierarchy config.\n */\n readonly filterByCollection?: string[]\n readonly hierarchyCollectionSlug: string\n readonly Icon?: React.ReactNode\n readonly modalSlug: string\n readonly parentFieldName: string\n readonly reopenCount?: number\n readonly useAsTitle?: string\n} & HierarchyModalProps\n\nexport type HierarchyModalTogglerProps = {\n children?: React.ReactNode\n className?: string\n disabled?: boolean\n modalSlug?: string\n} & HTMLAttributes<HTMLButtonElement>\n\nexport type UseHierarchyModal = (args: UseHierarchyModalArgs) => [\n React.FC<HierarchyModalProps>,\n React.FC<Omit<HierarchyModalTogglerProps, 'modalSlug'>>,\n {\n closeModal: () => void\n isModalOpen: boolean\n modalDepth: number\n modalSlug: string\n openModal: () => void\n toggleModal: () => void\n },\n]\n\n// Backward-compatible aliases\nexport type HierarchyDrawerProps = HierarchyModalProps\nexport type HierarchyDrawerInternalProps = HierarchyModalInternalProps\nexport type HierarchyDrawerTogglerProps = HierarchyModalTogglerProps\n\n// Re-export column browser types for backwards compatibility\nexport type { ColumnItemData } from '../ColumnBrowser/types.js'\n"],"mappings":"AA4EA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/elements/Hierarchy/Modal/types.ts"],"sourcesContent":["import type { Where } from 'payload'\nimport type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\nexport type SelectionWithPath = {\n id: number | string\n path: Array<{ id: number | string; title: string }>\n}\n\nexport type UseHierarchyModalArgs = {\n /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */\n disabledIds?: Set<number | string>\n /**\n * When provided, filters hierarchy items to only show those that accept these collections.\n * Used with collectionSpecific hierarchy config.\n */\n filterByCollection?: string[]\n hierarchyCollectionSlug: string\n Icon?: React.ReactNode\n}\n\nexport type HierarchyModalProps = {\n readonly confirmLabel?: string\n readonly hasMany?: boolean\n readonly initialSelections?: (number | string)[]\n /** Disables the confirm and move to root actions while a save is running */\n readonly isBusy?: boolean\n readonly onMoveToRoot?: () => void\n readonly onSave: (params: {\n closeModal: () => void\n selections: Map<number | string, SelectionWithPath>\n }) => void\n readonly showMoveToRoot?: boolean\n readonly title?: string\n}\n\nexport type HierarchyModalInternalProps = {\n /** Base filter constraint (e.g., tenant filter) to apply to all queries */\n readonly baseFilter?: null | Where\n readonly closeModal: () => void\n /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */\n readonly disabledIds?: Set<number | string>\n /**\n * When provided, filters hierarchy items to only show those that accept these collections.\n * Used with collectionSpecific hierarchy config.\n */\n readonly filterByCollection?: string[]\n readonly hierarchyCollectionSlug: string\n readonly Icon?: React.ReactNode\n readonly modalSlug: string\n readonly parentFieldName: string\n readonly reopenCount?: number\n readonly useAsTitle?: string\n} & HierarchyModalProps\n\nexport type HierarchyModalTogglerProps = {\n children?: React.ReactNode\n className?: string\n disabled?: boolean\n modalSlug?: string\n} & HTMLAttributes<HTMLButtonElement>\n\nexport type UseHierarchyModal = (args: UseHierarchyModalArgs) => [\n React.FC<HierarchyModalProps>,\n React.FC<Omit<HierarchyModalTogglerProps, 'modalSlug'>>,\n {\n closeModal: () => void\n isModalOpen: boolean\n modalDepth: number\n modalSlug: string\n openModal: () => void\n toggleModal: () => void\n },\n]\n\n// Backward-compatible aliases\nexport type HierarchyDrawerProps = HierarchyModalProps\nexport type HierarchyDrawerInternalProps = HierarchyModalInternalProps\nexport type HierarchyDrawerTogglerProps = HierarchyModalTogglerProps\n\n// Re-export column browser types for backwards compatibility\nexport type { ColumnItemData } from '../ColumnBrowser/types.js'\n"],"mappings":"AAgFA;AACA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useHierarchyModal.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Modal/useHierarchyModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAwD,MAAM,OAAO,CAAA;AAE5E,OAAO,KAAK,EAAuB,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEpG,cAAc,YAAY,CAAA;AAQ1B,eAAO,MAAM,wBAAwB,qBAGlC;IACD,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,KAAG,MAA4C,CAAA;AAEhD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAmBtE,CAAA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAqH/B,CAAA"}
1
+ {"version":3,"file":"useHierarchyModal.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Modal/useHierarchyModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAwD,MAAM,OAAO,CAAA;AAE5E,OAAO,KAAK,EAAuB,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEpG,cAAc,YAAY,CAAA;AAQ1B,eAAO,MAAM,wBAAwB,qBAGlC;IACD,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,KAAG,MAA4C,CAAA;AAEhD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAmBtE,CAAA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAsH/B,CAAA"}
@@ -71,7 +71,7 @@ export const useHierarchyModal = ({
71
71
  const parentFieldName = hierarchyConfig?.parentFieldName;
72
72
  // Use explicit prop if provided, otherwise fall back to allowedCollections from context
73
73
  // - allowedCollections is null/undefined: no filtering (undefined)
74
- // - allowedCollections is []: folder accepts everything, show only unrestricted destinations ([])
74
+ // - allowedCollections is []: no collection requirements ([])
75
75
  // - allowedCollections has values: show folders accepting those types
76
76
  // Memoize to prevent new array references on every render
77
77
  const filterByCollection = useMemo(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"useHierarchyModal.js","names":["useModal","React","useCallback","useId","useMemo","useRef","useState","useConfig","useEditDepth","useHierarchy","DrawerToggler","ModalToggler","baseClass","HierarchyModal","formatHierarchyModalSlug","depth","uuid","HierarchyModalToggler","children","className","disabled","modalSlug","onClick","rest","_jsx","filter","Boolean","join","slug","useHierarchyModal","disabledIds","filterByCollection","filterByCollectionProp","hierarchyCollectionSlug","Icon","getEntityConfig","allowedCollections","baseFilter","collectionConfig","collectionSlug","useAsTitle","admin","hierarchyConfig","hierarchy","undefined","parentFieldName","map","c","modalDepth","closeModal","openModal","toggleModal","reopenCount","setReopenCount","closeModalRef","openModalRef","toggleModalRef","current","toggleHierarchyModal","closeHierarchyModal","openHierarchyModal","count","MemoizedModal","ModalComponent","props","MemoizedModalToggler","TogglerComponent","MemoizedModalState","isModalOpen"],"sources":["../../../../src/elements/Hierarchy/Modal/useHierarchyModal.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useId, useMemo, useRef, useState } from 'react'\n\nimport type { HierarchyModalProps, HierarchyModalTogglerProps, UseHierarchyModal } from './types.js'\n\nexport * from './types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useEditDepth } from '../../../providers/EditDepth/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { DrawerToggler as ModalToggler } from '../../Drawer/index.js'\nimport { baseClass, HierarchyModal } from './index.js'\n\nexport const formatHierarchyModalSlug = ({\n depth,\n uuid,\n}: {\n depth: number\n uuid: string\n}): string => `hierarchy-modal_${depth}_${uuid}`\n\nexport const HierarchyModalToggler: React.FC<HierarchyModalTogglerProps> = ({\n children,\n className,\n disabled,\n modalSlug,\n onClick,\n ...rest\n}) => {\n return (\n <ModalToggler\n className={[className, `${baseClass}__toggler`].filter(Boolean).join(' ')}\n disabled={disabled}\n onClick={onClick}\n slug={modalSlug}\n {...rest}\n >\n {children}\n </ModalToggler>\n )\n}\n\n/**\n * Hook for using a hierarchy modal for selecting hierarchy items.\n *\n * @example\n * ```tsx\n * const [HierarchyModal, HierarchyModalToggler, { closeModal, openModal }] = useHierarchyModal({\n * collectionSlug: 'categories',\n * })\n *\n * return (\n * <>\n * <HierarchyModal\n * onSave={(selections) => console.log(selections)}\n * hasMany={true}\n * />\n * <HierarchyModalToggler>Select Categories</HierarchyModalToggler>\n * </>\n * )\n * ```\n */\nexport const useHierarchyModal: UseHierarchyModal = ({\n disabledIds,\n filterByCollection: filterByCollectionProp,\n hierarchyCollectionSlug,\n Icon,\n}) => {\n const { getEntityConfig } = useConfig()\n const { allowedCollections, baseFilter } = useHierarchy()\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n\n const useAsTitle = collectionConfig?.admin?.useAsTitle\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n const parentFieldName = hierarchyConfig?.parentFieldName\n\n // Use explicit prop if provided, otherwise fall back to allowedCollections from context\n // - allowedCollections is null/undefined: no filtering (undefined)\n // - allowedCollections is []: folder accepts everything, show only unrestricted destinations ([])\n // - allowedCollections has values: show folders accepting those types\n // Memoize to prevent new array references on every render\n const filterByCollection = useMemo(() => {\n if (filterByCollectionProp !== undefined) {\n return filterByCollectionProp\n }\n return allowedCollections !== null ? allowedCollections.map((c) => c.slug) : undefined\n }, [filterByCollectionProp, allowedCollections])\n\n const modalDepth = useEditDepth()\n const uuid = useId()\n const { closeModal, openModal, toggleModal } = useModal()\n const [reopenCount, setReopenCount] = useState(0)\n\n const modalSlug = formatHierarchyModalSlug({\n depth: modalDepth,\n uuid,\n })\n\n // Store modal functions in refs to ensure stable callbacks\n // This prevents re-renders when other modals (like DocumentDrawer) change state\n const closeModalRef = useRef(closeModal)\n const openModalRef = useRef(openModal)\n const toggleModalRef = useRef(toggleModal)\n closeModalRef.current = closeModal\n openModalRef.current = openModal\n toggleModalRef.current = toggleModal\n\n // Stable callbacks using refs - these will NEVER change\n const toggleHierarchyModal = useCallback(() => {\n toggleModalRef.current(modalSlug)\n }, [modalSlug])\n\n const closeHierarchyModal = useCallback(() => {\n closeModalRef.current(modalSlug)\n }, [modalSlug])\n\n const openHierarchyModal = useCallback(() => {\n setReopenCount((count) => count + 1)\n openModalRef.current(modalSlug)\n }, [modalSlug])\n\n const MemoizedModal = useMemo(() => {\n const ModalComponent: React.FC<HierarchyModalProps> = (props) => (\n <HierarchyModal\n key={modalSlug}\n {...props}\n baseFilter={baseFilter}\n closeModal={closeHierarchyModal}\n disabledIds={disabledIds}\n filterByCollection={filterByCollection}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n Icon={Icon}\n modalSlug={modalSlug}\n parentFieldName={parentFieldName}\n reopenCount={reopenCount}\n useAsTitle={useAsTitle}\n />\n )\n\n return ModalComponent\n }, [\n baseFilter,\n closeHierarchyModal,\n disabledIds,\n filterByCollection,\n Icon,\n modalSlug,\n parentFieldName,\n reopenCount,\n hierarchyCollectionSlug,\n useAsTitle,\n ])\n\n const MemoizedModalToggler = useMemo(() => {\n const TogglerComponent: React.FC<Omit<HierarchyModalTogglerProps, 'modalSlug'>> = (props) => (\n <HierarchyModalToggler {...props} modalSlug={modalSlug} />\n )\n\n return TogglerComponent\n }, [modalSlug])\n\n const MemoizedModalState = useMemo(\n () => ({\n closeModal: closeHierarchyModal,\n modalDepth,\n modalSlug,\n // Note: Not tracking isModalOpen to prevent re-renders when other modals change state\n // Consumers needing this can use useModal() directly\n isModalOpen: false,\n openModal: openHierarchyModal,\n toggleModal: toggleHierarchyModal,\n }),\n [closeHierarchyModal, modalDepth, modalSlug, openHierarchyModal, toggleHierarchyModal],\n )\n\n return [MemoizedModal, MemoizedModalToggler, MemoizedModalState]\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useHierarchyModal.js","names":["useModal","React","useCallback","useId","useMemo","useRef","useState","useConfig","useEditDepth","useHierarchy","DrawerToggler","ModalToggler","baseClass","HierarchyModal","formatHierarchyModalSlug","depth","uuid","HierarchyModalToggler","children","className","disabled","modalSlug","onClick","rest","_jsx","filter","Boolean","join","slug","useHierarchyModal","disabledIds","filterByCollection","filterByCollectionProp","hierarchyCollectionSlug","Icon","getEntityConfig","allowedCollections","baseFilter","collectionConfig","collectionSlug","useAsTitle","admin","hierarchyConfig","hierarchy","undefined","parentFieldName","map","c","modalDepth","closeModal","openModal","toggleModal","reopenCount","setReopenCount","closeModalRef","openModalRef","toggleModalRef","current","toggleHierarchyModal","closeHierarchyModal","openHierarchyModal","count","MemoizedModal","ModalComponent","props","MemoizedModalToggler","TogglerComponent","MemoizedModalState","isModalOpen"],"sources":["../../../../src/elements/Hierarchy/Modal/useHierarchyModal.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useId, useMemo, useRef, useState } from 'react'\n\nimport type { HierarchyModalProps, HierarchyModalTogglerProps, UseHierarchyModal } from './types.js'\n\nexport * from './types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useEditDepth } from '../../../providers/EditDepth/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { DrawerToggler as ModalToggler } from '../../Drawer/index.js'\nimport { baseClass, HierarchyModal } from './index.js'\n\nexport const formatHierarchyModalSlug = ({\n depth,\n uuid,\n}: {\n depth: number\n uuid: string\n}): string => `hierarchy-modal_${depth}_${uuid}`\n\nexport const HierarchyModalToggler: React.FC<HierarchyModalTogglerProps> = ({\n children,\n className,\n disabled,\n modalSlug,\n onClick,\n ...rest\n}) => {\n return (\n <ModalToggler\n className={[className, `${baseClass}__toggler`].filter(Boolean).join(' ')}\n disabled={disabled}\n onClick={onClick}\n slug={modalSlug}\n {...rest}\n >\n {children}\n </ModalToggler>\n )\n}\n\n/**\n * Hook for using a hierarchy modal for selecting hierarchy items.\n *\n * @example\n * ```tsx\n * const [HierarchyModal, HierarchyModalToggler, { closeModal, openModal }] = useHierarchyModal({\n * collectionSlug: 'categories',\n * })\n *\n * return (\n * <>\n * <HierarchyModal\n * onSave={(selections) => console.log(selections)}\n * hasMany={true}\n * />\n * <HierarchyModalToggler>Select Categories</HierarchyModalToggler>\n * </>\n * )\n * ```\n */\nexport const useHierarchyModal: UseHierarchyModal = ({\n disabledIds,\n filterByCollection: filterByCollectionProp,\n hierarchyCollectionSlug,\n Icon,\n}) => {\n const { getEntityConfig } = useConfig()\n const { allowedCollections, baseFilter } = useHierarchy()\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n\n const useAsTitle = collectionConfig?.admin?.useAsTitle\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n\n const parentFieldName = hierarchyConfig?.parentFieldName\n\n // Use explicit prop if provided, otherwise fall back to allowedCollections from context\n // - allowedCollections is null/undefined: no filtering (undefined)\n // - allowedCollections is []: no collection requirements ([])\n // - allowedCollections has values: show folders accepting those types\n // Memoize to prevent new array references on every render\n const filterByCollection = useMemo(() => {\n if (filterByCollectionProp !== undefined) {\n return filterByCollectionProp\n }\n return allowedCollections !== null ? allowedCollections.map((c) => c.slug) : undefined\n }, [filterByCollectionProp, allowedCollections])\n\n const modalDepth = useEditDepth()\n const uuid = useId()\n const { closeModal, openModal, toggleModal } = useModal()\n const [reopenCount, setReopenCount] = useState(0)\n\n const modalSlug = formatHierarchyModalSlug({\n depth: modalDepth,\n uuid,\n })\n\n // Store modal functions in refs to ensure stable callbacks\n // This prevents re-renders when other modals (like DocumentDrawer) change state\n const closeModalRef = useRef(closeModal)\n const openModalRef = useRef(openModal)\n const toggleModalRef = useRef(toggleModal)\n closeModalRef.current = closeModal\n openModalRef.current = openModal\n toggleModalRef.current = toggleModal\n\n // Stable callbacks using refs - these will NEVER change\n const toggleHierarchyModal = useCallback(() => {\n toggleModalRef.current(modalSlug)\n }, [modalSlug])\n\n const closeHierarchyModal = useCallback(() => {\n closeModalRef.current(modalSlug)\n }, [modalSlug])\n\n const openHierarchyModal = useCallback(() => {\n setReopenCount((count) => count + 1)\n openModalRef.current(modalSlug)\n }, [modalSlug])\n\n const MemoizedModal = useMemo(() => {\n const ModalComponent: React.FC<HierarchyModalProps> = (props) => (\n <HierarchyModal\n key={modalSlug}\n {...props}\n baseFilter={baseFilter}\n closeModal={closeHierarchyModal}\n disabledIds={disabledIds}\n filterByCollection={filterByCollection}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n Icon={Icon}\n modalSlug={modalSlug}\n parentFieldName={parentFieldName}\n reopenCount={reopenCount}\n useAsTitle={useAsTitle}\n />\n )\n\n return ModalComponent\n }, [\n baseFilter,\n closeHierarchyModal,\n disabledIds,\n filterByCollection,\n Icon,\n modalSlug,\n parentFieldName,\n reopenCount,\n hierarchyCollectionSlug,\n useAsTitle,\n ])\n\n const MemoizedModalToggler = useMemo(() => {\n const TogglerComponent: React.FC<Omit<HierarchyModalTogglerProps, 'modalSlug'>> = (props) => (\n <HierarchyModalToggler {...props} modalSlug={modalSlug} />\n )\n\n return TogglerComponent\n }, [modalSlug])\n\n const MemoizedModalState = useMemo(\n () => ({\n closeModal: closeHierarchyModal,\n modalDepth,\n modalSlug,\n // Note: Not tracking isModalOpen to prevent re-renders when other modals change state\n // Consumers needing this can use useModal() directly\n isModalOpen: false,\n openModal: openHierarchyModal,\n toggleModal: toggleHierarchyModal,\n }),\n [closeHierarchyModal, modalDepth, modalSlug, openHierarchyModal, toggleHierarchyModal],\n )\n\n return [MemoizedModal, MemoizedModalToggler, MemoizedModalState]\n}\n"],"mappings":"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","ignoreList":[]}
@@ -7,15 +7,15 @@ type MoveManyProps = {
7
7
  hierarchySlug: string;
8
8
  /** Icon to display in the hierarchy modal */
9
9
  Icon?: React.ReactNode;
10
- /** When multiple MoveMany components are rendered on the page, this will differentiate them */
11
- modalPrefix?: string;
12
10
  /** Callback after successful move */
13
11
  onSuccess?: () => void;
12
+ /** Collection slugs required by the selected documents at the destination. */
13
+ requiredCollections?: string[];
14
14
  /** Selections grouped by collection slug */
15
15
  selections: Record<string, {
16
16
  ids: (number | string)[];
17
17
  }>;
18
18
  };
19
- export declare function MoveMany({ currentParentID, hierarchySlug, Icon, modalPrefix, onSuccess, selections, }: MoveManyProps): React.JSX.Element;
19
+ export declare function MoveMany({ currentParentID, hierarchySlug, Icon, onSuccess, requiredCollections: requiredCollectionsProp, selections, }: MoveManyProps): React.JSX.Element;
20
20
  export {};
21
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/MoveMany/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAe7D,eAAO,MAAM,SAAS,cAAc,CAAA;AAEpC,KAAK,aAAa,GAAG;IACnB,oEAAoE;IACpE,eAAe,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IACxC,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAA;IACrB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,CAAC,CAAA;CACzD,CAAA;AAeD,wBAAgB,QAAQ,CAAC,EACvB,eAAe,EACf,aAAa,EACb,IAAI,EACJ,WAAW,EACX,SAAS,EACT,UAAU,GACX,EAAE,aAAa,qBAkQf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/MoveMany/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAiD,MAAM,OAAO,CAAA;AAkBrE,eAAO,MAAM,SAAS,cAAc,CAAA;AAEpC,KAAK,aAAa,GAAG;IACnB,oEAAoE;IACpE,eAAe,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IACxC,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAA;IACrB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,CAAC,CAAA;CACzD,CAAA;AAeD,wBAAgB,QAAQ,CAAC,EACvB,eAAe,EACf,aAAa,EACb,IAAI,EACJ,SAAS,EACT,mBAAmB,EAAE,uBAAuB,EAC5C,UAAU,GACX,EAAE,aAAa,qBAkQf"}
@@ -1,20 +1,19 @@
1
1
  'use client';
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import { useModal } from '@faceless-ui/modal';
5
4
  import { getTranslation } from '@payloadcms/translations';
6
5
  import { formatAdminURL } from 'payload/shared';
7
6
  import * as qs from 'qs-esm';
8
- import React, { useCallback, useMemo, useState } from 'react';
7
+ import React, { useCallback, useMemo, useRef, useState } from 'react';
9
8
  import { toast } from 'sonner';
10
9
  import { useConfig } from '../../../providers/Config/index.js';
11
10
  import { useDocumentSelection } from '../../../providers/DocumentSelection/index.js';
12
11
  import { useLocale } from '../../../providers/Locale/index.js';
13
12
  import { useTranslation } from '../../../providers/Translation/index.js';
14
13
  import { requests } from '../../../utilities/api.js';
15
- import { ConfirmationModal } from '../../ConfirmationModal/index.js';
14
+ import { getEffectiveHierarchyCollections, getHierarchyCollectionRestrictions } from '../../../utilities/hierarchyCollectionRestrictions.js';
16
15
  import { ListSelectionButton } from '../../ListSelection/index.js';
17
- import { Translation } from '../../Translation/index.js';
16
+ import { HierarchyActionsMenu } from '../ActionsMenu/index.js';
18
17
  import { useHierarchyModal } from '../Modal/useHierarchyModal.js';
19
18
  export const baseClass = 'move-many';
20
19
  /**
@@ -28,8 +27,8 @@ export function MoveMany({
28
27
  currentParentID,
29
28
  hierarchySlug,
30
29
  Icon,
31
- modalPrefix,
32
30
  onSuccess,
31
+ requiredCollections: requiredCollectionsProp,
33
32
  selections
34
33
  }) {
35
34
  const {
@@ -38,9 +37,6 @@ export function MoveMany({
38
37
  } = useTranslation();
39
38
  const currentLocale = useLocale();
40
39
  const locale = currentLocale?.code;
41
- const {
42
- openModal
43
- } = useModal();
44
40
  const {
45
41
  config: {
46
42
  collections,
@@ -52,12 +48,16 @@ export function MoveMany({
52
48
  const {
53
49
  getSelectionsWithMetadata
54
50
  } = useDocumentSelection();
55
- const [destination, setDestination] = useState(null);
56
- const confirmMoveDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-move-many`;
51
+ const hierarchyCollectionConfig = collections.find(c => c.slug === hierarchySlug);
52
+ const {
53
+ relatedCollectionSlugs
54
+ } = useMemo(() => getHierarchyCollectionRestrictions({
55
+ collectionConfig: hierarchyCollectionConfig
56
+ }), [hierarchyCollectionConfig]);
57
57
  // Compute required collections from selection metadata
58
58
  // For related items: add their collection slug
59
59
  // For folders: add their allowedCollections values
60
- const requiredCollections = useMemo(() => {
60
+ const inferredRequiredCollections = useMemo(() => {
61
61
  const selectionsWithMeta = getSelectionsWithMetadata();
62
62
  const required = new Set();
63
63
  for (const [collectionSlug, {
@@ -68,10 +68,11 @@ export function MoveMany({
68
68
  for (const {
69
69
  metadata
70
70
  } of items) {
71
- if (metadata.allowedCollections) {
72
- for (const slug of metadata.allowedCollections) {
73
- required.add(slug);
74
- }
71
+ for (const slug of getEffectiveHierarchyCollections({
72
+ allowedCollections: metadata.allowedCollections,
73
+ relatedCollectionSlugs
74
+ })) {
75
+ required.add(slug);
75
76
  }
76
77
  }
77
78
  } else {
@@ -80,7 +81,8 @@ export function MoveMany({
80
81
  }
81
82
  }
82
83
  return required.size > 0 ? Array.from(required) : undefined;
83
- }, [getSelectionsWithMetadata, hierarchySlug]);
84
+ }, [getSelectionsWithMetadata, hierarchySlug, relatedCollectionSlugs]);
85
+ const requiredCollections = requiredCollectionsProp ?? inferredRequiredCollections;
84
86
  // Folders being moved cannot be selected as destination (can't move into themselves)
85
87
  const disabledIds = useMemo(() => {
86
88
  const parentIds = selections[hierarchySlug]?.ids;
@@ -98,14 +100,15 @@ export function MoveMany({
98
100
  // Calculate total count and label
99
101
  const {
100
102
  count,
101
- label
103
+ label,
104
+ modalTitleLabel
102
105
  } = useMemo(() => {
103
106
  let totalCount = 0;
104
107
  const labels = [];
105
108
  for (const [collectionSlug_0, {
106
109
  ids
107
110
  }] of Object.entries(selections)) {
108
- const config = collections.find(c => c.slug === collectionSlug_0);
111
+ const config = collections.find(c_0 => c_0.slug === collectionSlug_0);
109
112
  if (config && ids.length > 0) {
110
113
  totalCount += ids.length;
111
114
  const collectionLabel = getTranslation(ids.length > 1 ? config.labels.plural : config.labels.singular, i18n);
@@ -114,39 +117,23 @@ export function MoveMany({
114
117
  }
115
118
  return {
116
119
  count: totalCount,
117
- label: labels.join(', ')
120
+ label: labels.join(', '),
121
+ modalTitleLabel: labels.length === 1 ? labels[0] : t(totalCount === 1 ? 'general:document' : 'general:documents')
118
122
  };
119
- }, [selections, collections, i18n]);
120
- const hierarchyCollectionConfig = collections.find(c_0 => c_0.slug === hierarchySlug);
123
+ }, [selections, collections, i18n, t]);
121
124
  const parentFieldName = getParentFieldName(hierarchyCollectionConfig);
122
125
  // Check if hierarchy has a valid parentFieldName
123
126
  const canMove = parentFieldName !== undefined;
124
- const handleDrawerSave = useCallback(({
125
- selections: selectionsMap
126
- }) => {
127
- if (selectionsMap.size === 0) {
128
- return;
129
- }
130
- const firstSelection = selectionsMap.values().next().value;
131
- const destinationId = firstSelection?.id;
132
- const destinationTitle = firstSelection?.path?.[firstSelection.path.length - 1]?.title || String(destinationId);
133
- setDestination({
134
- id: destinationId,
135
- title: destinationTitle
136
- });
137
- openModal(confirmMoveDrawerSlug);
138
- }, [openModal, confirmMoveDrawerSlug]);
139
- const handleMoveToRoot = useCallback(() => {
140
- setDestination({
141
- id: null,
142
- title: t('hierarchy:noParent')
143
- });
144
- openModal(confirmMoveDrawerSlug);
145
- }, [openModal, confirmMoveDrawerSlug, t]);
146
- const handleConfirmMove = useCallback(async () => {
147
- if (destination === null) {
127
+ const hierarchyLabel = getTranslation(hierarchyCollectionConfig?.labels?.singular || hierarchySlug, i18n) || hierarchySlug;
128
+ const isMovingRef = useRef(false);
129
+ const [isMoving, setIsMoving] = useState(false);
130
+ const moveDocuments = useCallback(async destination => {
131
+ // A ref, not state, so a second click in the same frame still sees the first move
132
+ if (isMovingRef.current) {
148
133
  return;
149
134
  }
135
+ isMovingRef.current = true;
136
+ setIsMoving(true);
150
137
  let totalMoved = 0;
151
138
  let hasErrors = false;
152
139
  try {
@@ -215,61 +202,61 @@ export function MoveMany({
215
202
  } catch (_err) {
216
203
  toast.error(t('error:unknown'));
217
204
  } finally {
218
- setDestination(null);
205
+ isMovingRef.current = false;
206
+ setIsMoving(false);
219
207
  }
220
- }, [closeModal, destination, selections, parentFieldName, locale, api, i18n, t, label, onSuccess]);
208
+ }, [closeModal, selections, parentFieldName, locale, api, i18n, t, label, onSuccess]);
209
+ const handleModalSave = useCallback(({
210
+ selections: selectionsMap
211
+ }) => {
212
+ const firstSelection = selectionsMap.values().next().value;
213
+ if (!firstSelection) {
214
+ return;
215
+ }
216
+ const destinationTitle = firstSelection.path[firstSelection.path.length - 1]?.title || String(firstSelection.id);
217
+ void moveDocuments({
218
+ id: firstSelection.id,
219
+ title: destinationTitle
220
+ });
221
+ }, [moveDocuments]);
222
+ const handleMoveToRoot = useCallback(() => {
223
+ void moveDocuments({
224
+ id: null,
225
+ title: t('hierarchy:noParent')
226
+ });
227
+ }, [moveDocuments, t]);
228
+ const canRemoveFromHierarchy = currentParentID !== null && currentParentID !== undefined;
229
+ const initialSelections = currentParentID === null || currentParentID === undefined ? undefined : [currentParentID];
221
230
  if (count === 0 || !canMove) {
222
231
  return null;
223
232
  }
224
233
  return /*#__PURE__*/_jsxs(React.Fragment, {
225
- children: [/*#__PURE__*/_jsx(ListSelectionButton, {
226
- "aria-label": t('general:move'),
227
- className: `${baseClass}__toggle`,
228
- onClick: openHierarchyModal,
229
- children: t('general:move')
234
+ children: [/*#__PURE__*/_jsx(HierarchyActionsMenu, {
235
+ hasActions: canRemoveFromHierarchy,
236
+ hierarchyLabel: hierarchyLabel,
237
+ onMove: openHierarchyModal,
238
+ onRemove: handleMoveToRoot,
239
+ renderTrigger: triggerProps => /*#__PURE__*/_jsx(ListSelectionButton, {
240
+ "aria-label": t('general:move'),
241
+ className: `${baseClass}__toggle`,
242
+ extraButtonProps: triggerProps?.extraButtonProps,
243
+ onClick: triggerProps?.onClick ?? openHierarchyModal,
244
+ selected: triggerProps?.selected,
245
+ children: t('general:move')
246
+ }),
247
+ showActionIcons: true
230
248
  }), /*#__PURE__*/_jsx(HierarchyModal, {
249
+ confirmLabel: t('general:confirm'),
231
250
  hasMany: false,
232
- initialSelections: currentParentID ? [currentParentID] : null,
251
+ initialSelections: initialSelections,
252
+ isBusy: isMoving,
233
253
  onMoveToRoot: handleMoveToRoot,
234
- onSave: handleDrawerSave,
235
- showMoveToRoot: true
236
- }), /*#__PURE__*/_jsx(ConfirmationModal, {
237
- body: /*#__PURE__*/_jsx("p", {
238
- children: destination?.id === null ? /*#__PURE__*/_jsx(Translation, {
239
- elements: {
240
- '1': ({
241
- children
242
- }) => /*#__PURE__*/_jsx("strong", {
243
- children: children
244
- })
245
- },
246
- i18nKey: "hierarchy:moveItemsToRootConfirmation",
247
- t: t,
248
- variables: {
249
- count,
250
- label
251
- }
252
- }) : /*#__PURE__*/_jsx(Translation, {
253
- elements: {
254
- '1': ({
255
- children: children_0
256
- }) => /*#__PURE__*/_jsx("strong", {
257
- children: children_0
258
- })
259
- },
260
- i18nKey: "general:moveConfirm",
261
- t: t,
262
- variables: {
263
- count,
264
- destination: destination?.title || '',
265
- label
266
- }
267
- })
268
- }),
269
- confirmingLabel: t('general:moving'),
270
- heading: t('general:confirmMove'),
271
- modalSlug: confirmMoveDrawerSlug,
272
- onConfirm: handleConfirmMove
254
+ onSave: handleModalSave,
255
+ showMoveToRoot: true,
256
+ title: t('general:moveCount', {
257
+ count,
258
+ label: modalTitleLabel
259
+ })
273
260
  })]
274
261
  });
275
262
  }