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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (807) hide show
  1. package/dist/css/app.css +1 -1
  2. package/dist/css/forms.css +0 -1
  3. package/dist/css/spacing.css +1 -1
  4. package/dist/css/typography.css +161 -55
  5. package/dist/elements/APIKeyInput/index.css +2 -2
  6. package/dist/elements/AddNewRelation/index.css +0 -4
  7. package/dist/elements/AddNewRelation/index.js +2 -2
  8. package/dist/elements/AddNewRelation/index.js.map +1 -1
  9. package/dist/elements/AppHeader/index.css +4 -0
  10. package/dist/elements/AppHeader/index.d.ts +1 -8
  11. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  12. package/dist/elements/AppHeader/index.js +10 -19
  13. package/dist/elements/AppHeader/index.js.map +1 -1
  14. package/dist/elements/Banner/index.css +3 -4
  15. package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
  16. package/dist/elements/BulkUpload/ActionsBar/index.js +12 -10
  17. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  18. package/dist/elements/BulkUpload/AddFilesView/index.css +5 -0
  19. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  20. package/dist/elements/BulkUpload/AddFilesView/index.js +49 -8
  21. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  22. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
  23. package/dist/elements/BulkUpload/AddingFilesView/index.js +25 -20
  24. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  25. package/dist/elements/BulkUpload/EditMany/index.css +4 -5
  26. package/dist/elements/BulkUpload/FileSidebar/index.css +0 -1
  27. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  28. package/dist/elements/BulkUpload/FileSidebar/index.js +28 -35
  29. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  30. package/dist/elements/BulkUpload/FormsManager/index.d.ts +2 -1
  31. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  32. package/dist/elements/BulkUpload/FormsManager/index.js +175 -60
  33. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  34. package/dist/elements/BulkUpload/useUploadCollectionOptions.d.ts +6 -0
  35. package/dist/elements/BulkUpload/useUploadCollectionOptions.d.ts.map +1 -0
  36. package/dist/elements/BulkUpload/useUploadCollectionOptions.js +74 -0
  37. package/dist/elements/BulkUpload/useUploadCollectionOptions.js.map +1 -0
  38. package/dist/elements/Button/index.css +7 -1
  39. package/dist/elements/Button/types.d.ts +1 -1
  40. package/dist/elements/Button/types.d.ts.map +1 -1
  41. package/dist/elements/Button/types.js.map +1 -1
  42. package/dist/elements/Card/index.css +7 -8
  43. package/dist/elements/CardGrid/index.css +20 -0
  44. package/dist/elements/CardGrid/index.d.ts +13 -0
  45. package/dist/elements/CardGrid/index.d.ts.map +1 -0
  46. package/dist/elements/CardGrid/index.js +23 -0
  47. package/dist/elements/CardGrid/index.js.map +1 -0
  48. package/dist/elements/Chip/index.css +0 -1
  49. package/dist/elements/CollapseAllToggle/index.d.ts +3 -0
  50. package/dist/elements/CollapseAllToggle/index.d.ts.map +1 -1
  51. package/dist/elements/CollapseAllToggle/index.js +36 -22
  52. package/dist/elements/CollapseAllToggle/index.js.map +1 -1
  53. package/dist/elements/Collapsible/index.css +4 -1
  54. package/dist/elements/Collapsible/index.d.ts +2 -0
  55. package/dist/elements/Collapsible/index.d.ts.map +1 -1
  56. package/dist/elements/Collapsible/index.js +67 -46
  57. package/dist/elements/Collapsible/index.js.map +1 -1
  58. package/dist/elements/ColumnSelection/Popup.css +14 -11
  59. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  60. package/dist/elements/ColumnSelection/Popup.js +22 -14
  61. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  62. package/dist/elements/CommandPalette/index.css +3 -8
  63. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  64. package/dist/elements/CopyLocaleData/index.js +1 -0
  65. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  66. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  67. package/dist/elements/CreateDocumentButton/index.js +56 -33
  68. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  69. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  70. package/dist/elements/DatePicker/DatePicker.js +33 -2
  71. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  72. package/dist/elements/DatePicker/hasAmbiguousYearInput.d.ts +8 -0
  73. package/dist/elements/DatePicker/hasAmbiguousYearInput.d.ts.map +1 -0
  74. package/dist/elements/DatePicker/hasAmbiguousYearInput.js +37 -0
  75. package/dist/elements/DatePicker/hasAmbiguousYearInput.js.map +1 -0
  76. package/dist/elements/DatePicker/index.css +27 -17
  77. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  78. package/dist/elements/DefaultListViewTabs/index.js +9 -7
  79. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  80. package/dist/elements/Dialog/DialogModal/index.d.ts.map +1 -1
  81. package/dist/elements/Dialog/DialogModal/index.js +40 -28
  82. package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
  83. package/dist/elements/Dialog/DialogTitle/index.css +1 -1
  84. package/dist/elements/Dialog/index.css +1 -2
  85. package/dist/elements/DocumentCard/index.css +73 -0
  86. package/dist/elements/DocumentCard/index.d.ts +18 -0
  87. package/dist/elements/DocumentCard/index.d.ts.map +1 -0
  88. package/dist/elements/DocumentCard/index.js +182 -0
  89. package/dist/elements/DocumentCard/index.js.map +1 -0
  90. package/dist/elements/DocumentControls/index.css +1 -5
  91. package/dist/elements/DocumentDrawer/DrawerHeader/index.css +4 -7
  92. package/dist/elements/DocumentDrawer/types.d.ts +1 -1
  93. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  94. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  95. package/dist/elements/DocumentFields/RequiredFieldsInfo/index.css +40 -0
  96. package/dist/elements/DocumentFields/RequiredFieldsInfo/index.d.ts +4 -0
  97. package/dist/elements/DocumentFields/RequiredFieldsInfo/index.d.ts.map +1 -0
  98. package/dist/elements/DocumentFields/RequiredFieldsInfo/index.js +88 -0
  99. package/dist/elements/DocumentFields/RequiredFieldsInfo/index.js.map +1 -0
  100. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  101. package/dist/elements/DocumentFields/index.js +2 -1
  102. package/dist/elements/DocumentFields/index.js.map +1 -1
  103. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  104. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +0 -1
  105. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  106. package/dist/elements/DocumentHeader/index.css +1 -1
  107. package/dist/elements/DraggableSortable/index.d.ts.map +1 -1
  108. package/dist/elements/DraggableSortable/index.js +13 -10
  109. package/dist/elements/DraggableSortable/index.js.map +1 -1
  110. package/dist/elements/DraggableSortable/types.d.ts +1 -0
  111. package/dist/elements/DraggableSortable/types.d.ts.map +1 -1
  112. package/dist/elements/DraggableSortable/types.js.map +1 -1
  113. package/dist/elements/Drawer/index.css +4 -5
  114. package/dist/elements/Drawer/types.d.ts +2 -2
  115. package/dist/elements/Drawer/types.d.ts.map +1 -1
  116. package/dist/elements/Drawer/types.js.map +1 -1
  117. package/dist/elements/Dropzone/index.d.ts +2 -1
  118. package/dist/elements/Dropzone/index.d.ts.map +1 -1
  119. package/dist/elements/Dropzone/index.js +9 -10
  120. package/dist/elements/Dropzone/index.js.map +1 -1
  121. package/dist/elements/EditMany/index.css +4 -5
  122. package/dist/elements/EditUpload/index.css +3 -4
  123. package/dist/elements/ErrorPill/index.css +0 -1
  124. package/dist/elements/FieldDiffContainer/index.css +0 -1
  125. package/dist/elements/FieldDiffLabel/index.css +4 -5
  126. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
  127. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  128. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  129. package/dist/elements/FileDetails/FileMeta/index.d.ts +1 -1
  130. package/dist/elements/FileDetails/FileMeta/index.d.ts.map +1 -1
  131. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  132. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +1 -1
  133. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  134. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  135. package/dist/elements/FileDetails/index.d.ts +1 -1
  136. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  137. package/dist/elements/FileDetails/index.js.map +1 -1
  138. package/dist/elements/FileManager/FilePreview/index.css +2 -3
  139. package/dist/elements/FileManager/FilePreview/index.js +4 -4
  140. package/dist/elements/FileManager/FilePreview/index.js.map +1 -1
  141. package/dist/elements/FileManager/FileToolbar/index.css +2 -3
  142. package/dist/elements/FileManager/index.css +0 -1
  143. package/dist/elements/FileManager/index.d.ts.map +1 -1
  144. package/dist/elements/FileManager/index.js +197 -177
  145. package/dist/elements/FileManager/index.js.map +1 -1
  146. package/dist/elements/FormHeader/index.css +0 -2
  147. package/dist/elements/GroupBy/Popup.css +3 -6
  148. package/dist/elements/HTMLDiff/index.css +0 -1
  149. package/dist/elements/HTMLDiff/index.d.ts +3 -1
  150. package/dist/elements/HTMLDiff/index.d.ts.map +1 -1
  151. package/dist/elements/HTMLDiff/index.js +9 -3
  152. package/dist/elements/HTMLDiff/index.js.map +1 -1
  153. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -1
  154. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +40 -36
  155. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
  156. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  157. package/dist/elements/Hierarchy/ColumnBrowser/index.js +15 -58
  158. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  159. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
  160. package/dist/elements/Hierarchy/DocHeaderButton/index.js +29 -1
  161. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  162. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.d.ts +9 -0
  163. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.d.ts.map +1 -0
  164. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.js +41 -0
  165. package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.js.map +1 -0
  166. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
  167. package/dist/elements/Hierarchy/Field/index.client.js +120 -105
  168. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  169. package/dist/elements/Hierarchy/Field/index.css +0 -1
  170. package/dist/elements/Hierarchy/Modal/index.d.ts +1 -1
  171. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  172. package/dist/elements/Hierarchy/Modal/index.js +28 -39
  173. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  174. package/dist/elements/Hierarchy/Modal/selection.d.ts +12 -0
  175. package/dist/elements/Hierarchy/Modal/selection.d.ts.map +1 -0
  176. package/dist/elements/Hierarchy/Modal/selection.js +40 -0
  177. package/dist/elements/Hierarchy/Modal/selection.js.map +1 -0
  178. package/dist/elements/Hierarchy/Modal/types.d.ts +2 -0
  179. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
  180. package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
  181. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts.map +1 -1
  182. package/dist/elements/Hierarchy/Modal/useHierarchyModal.js +1 -1
  183. package/dist/elements/Hierarchy/Modal/useHierarchyModal.js.map +1 -1
  184. package/dist/elements/Hierarchy/MoveMany/index.d.ts +3 -1
  185. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  186. package/dist/elements/Hierarchy/MoveMany/index.js +17 -8
  187. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  188. package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -1
  189. package/dist/elements/Hierarchy/Search/index.js +11 -0
  190. package/dist/elements/Hierarchy/Search/index.js.map +1 -1
  191. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  192. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +7 -1
  193. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  194. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts +2 -1
  195. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
  196. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js +30 -28
  197. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
  198. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  199. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +6 -2
  200. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  201. package/dist/elements/Hierarchy/Tree/index.css +3 -1
  202. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  203. package/dist/elements/Hierarchy/Tree/index.js +25 -26
  204. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  205. package/dist/elements/HydratePreferences/index.d.ts +8 -0
  206. package/dist/elements/HydratePreferences/index.d.ts.map +1 -0
  207. package/dist/elements/HydratePreferences/index.js +34 -0
  208. package/dist/elements/HydratePreferences/index.js.map +1 -0
  209. package/dist/elements/IDLabel/index.css +5 -7
  210. package/dist/elements/IframeLoader/index.d.ts.map +1 -1
  211. package/dist/elements/IframeLoader/index.js +34 -6
  212. package/dist/elements/IframeLoader/index.js.map +1 -1
  213. package/dist/elements/ItemsDrawer/ItemSearch/index.css +0 -1
  214. package/dist/elements/ItemsDrawer/index.d.ts.map +1 -1
  215. package/dist/elements/ItemsDrawer/index.js +23 -1
  216. package/dist/elements/ItemsDrawer/index.js.map +1 -1
  217. package/dist/elements/LLMInstructionsCell/index.css +11 -0
  218. package/dist/elements/LLMInstructionsCell/index.d.ts +5 -0
  219. package/dist/elements/LLMInstructionsCell/index.d.ts.map +1 -0
  220. package/dist/elements/LLMInstructionsCell/index.js +24 -0
  221. package/dist/elements/LLMInstructionsCell/index.js.map +1 -0
  222. package/dist/elements/LLMInstructionsDescription/index.css +79 -0
  223. package/dist/elements/LLMInstructionsDescription/index.d.ts +6 -0
  224. package/dist/elements/LLMInstructionsDescription/index.d.ts.map +1 -0
  225. package/dist/elements/LLMInstructionsDescription/index.js +40 -0
  226. package/dist/elements/LLMInstructionsDescription/index.js.map +1 -0
  227. package/dist/elements/LLMInstructionsMenuItem/index.d.ts +5 -0
  228. package/dist/elements/LLMInstructionsMenuItem/index.d.ts.map +1 -0
  229. package/dist/elements/LLMInstructionsMenuItem/index.js +46 -0
  230. package/dist/elements/LLMInstructionsMenuItem/index.js.map +1 -0
  231. package/dist/elements/LayoutToggle/index.d.ts +8 -0
  232. package/dist/elements/LayoutToggle/index.d.ts.map +1 -0
  233. package/dist/elements/LayoutToggle/index.js +56 -0
  234. package/dist/elements/LayoutToggle/index.js.map +1 -0
  235. package/dist/elements/Link/index.d.ts.map +1 -1
  236. package/dist/elements/Link/index.js +3 -0
  237. package/dist/elements/Link/index.js.map +1 -1
  238. package/dist/elements/ListControls/index.d.ts.map +1 -1
  239. package/dist/elements/ListControls/index.js +5 -2
  240. package/dist/elements/ListControls/index.js.map +1 -1
  241. package/dist/elements/ListControls/types.d.ts +1 -0
  242. package/dist/elements/ListControls/types.d.ts.map +1 -1
  243. package/dist/elements/ListControls/types.js.map +1 -1
  244. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  245. package/dist/elements/ListDrawer/DrawerContent.js +1 -1
  246. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  247. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.d.ts +6 -0
  248. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.d.ts.map +1 -0
  249. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js +61 -0
  250. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js.map +1 -0
  251. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js +1 -1
  252. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js.map +1 -1
  253. package/dist/elements/ListHeader/DrawerTitleActions/index.d.ts +1 -0
  254. package/dist/elements/ListHeader/DrawerTitleActions/index.d.ts.map +1 -1
  255. package/dist/elements/ListHeader/DrawerTitleActions/index.js +1 -0
  256. package/dist/elements/ListHeader/DrawerTitleActions/index.js.map +1 -1
  257. package/dist/elements/ListHeader/index.css +4 -5
  258. package/dist/elements/Loading/index.d.ts.map +1 -1
  259. package/dist/elements/Loading/index.js +1 -0
  260. package/dist/elements/Loading/index.js.map +1 -1
  261. package/dist/elements/MiniCarousel/index.d.ts +1 -1
  262. package/dist/elements/MiniCarousel/index.d.ts.map +1 -1
  263. package/dist/elements/MiniCarousel/index.js +6 -6
  264. package/dist/elements/MiniCarousel/index.js.map +1 -1
  265. package/dist/elements/Nav/NavSidebarToggle/index.d.ts.map +1 -1
  266. package/dist/elements/Nav/NavSidebarToggle/index.js +29 -24
  267. package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
  268. package/dist/elements/Nav/NavWrapper/index.d.ts +1 -0
  269. package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
  270. package/dist/elements/Nav/NavWrapper/index.js +15 -13
  271. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  272. package/dist/elements/Nav/SidebarTabs/index.client.js +1 -1
  273. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  274. package/dist/elements/Nav/SidebarTabs/index.css +3 -3
  275. package/dist/elements/Nav/context.d.ts +1 -1
  276. package/dist/elements/Nav/context.d.ts.map +1 -1
  277. package/dist/elements/Nav/context.js +32 -11
  278. package/dist/elements/Nav/context.js.map +1 -1
  279. package/dist/elements/Nav/index.client.d.ts.map +1 -1
  280. package/dist/elements/Nav/index.client.js +1 -10
  281. package/dist/elements/Nav/index.client.js.map +1 -1
  282. package/dist/elements/Nav/index.css +45 -34
  283. package/dist/elements/Nav/index.d.ts +4 -0
  284. package/dist/elements/Nav/index.d.ts.map +1 -1
  285. package/dist/elements/Nav/index.js +15 -1
  286. package/dist/elements/Nav/index.js.map +1 -1
  287. package/dist/elements/NavGroup/index.css +32 -19
  288. package/dist/elements/NavGroup/index.d.ts.map +1 -1
  289. package/dist/elements/NavGroup/index.js +31 -28
  290. package/dist/elements/NavGroup/index.js.map +1 -1
  291. package/dist/elements/NoListResults/index.css +2 -3
  292. package/dist/elements/PageControls/index.css +4 -1
  293. package/dist/elements/PageControls/index.d.ts +1 -0
  294. package/dist/elements/PageControls/index.d.ts.map +1 -1
  295. package/dist/elements/PageControls/index.js +41 -21
  296. package/dist/elements/PageControls/index.js.map +1 -1
  297. package/dist/elements/Pagination/ClickableArrow/index.d.ts.map +1 -1
  298. package/dist/elements/Pagination/ClickableArrow/index.js +45 -11
  299. package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
  300. package/dist/elements/Pagination/SimplePagination/index.css +0 -1
  301. package/dist/elements/Pagination/index.css +0 -2
  302. package/dist/elements/Pagination/index.d.ts.map +1 -1
  303. package/dist/elements/Pagination/index.js +32 -18
  304. package/dist/elements/Pagination/index.js.map +1 -1
  305. package/dist/elements/PerPage/index.css +0 -1
  306. package/dist/elements/PerPage/index.js +3 -1
  307. package/dist/elements/PerPage/index.js.map +1 -1
  308. package/dist/elements/Pill/index.css +0 -1
  309. package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.css +53 -0
  310. package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.d.ts +13 -0
  311. package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.d.ts.map +1 -0
  312. package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.js +44 -0
  313. package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.js.map +1 -0
  314. package/dist/elements/Popup/PopupButtonList/index.css +30 -8
  315. package/dist/elements/Popup/PopupButtonList/index.d.ts +1 -0
  316. package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  317. package/dist/elements/Popup/PopupButtonList/index.js +1 -0
  318. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  319. package/dist/elements/Popup/PopupGroupLabel/index.css +0 -1
  320. package/dist/elements/Popup/SubmenuScope.d.ts +21 -0
  321. package/dist/elements/Popup/SubmenuScope.d.ts.map +1 -0
  322. package/dist/elements/Popup/SubmenuScope.js +89 -0
  323. package/dist/elements/Popup/SubmenuScope.js.map +1 -0
  324. package/dist/elements/Popup/index.css +5 -0
  325. package/dist/elements/Popup/index.d.ts +3 -0
  326. package/dist/elements/Popup/index.d.ts.map +1 -1
  327. package/dist/elements/Popup/index.js +75 -10
  328. package/dist/elements/Popup/index.js.map +1 -1
  329. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts +13 -0
  330. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts.map +1 -0
  331. package/dist/elements/Popup/useSubmenuPointerIntent.js +42 -0
  332. package/dist/elements/Popup/useSubmenuPointerIntent.js.map +1 -0
  333. package/dist/elements/PreviewSizes/index.d.ts +1 -1
  334. package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
  335. package/dist/elements/PreviewSizes/index.js +9 -9
  336. package/dist/elements/PreviewSizes/index.js.map +1 -1
  337. package/dist/elements/QueryPresets/fields/Heading/index.css +0 -1
  338. package/dist/elements/ReactSelect/MultiValueLabel/index.css +0 -1
  339. package/dist/elements/ReactSelect/ValueContainer/index.d.ts.map +1 -1
  340. package/dist/elements/ReactSelect/ValueContainer/index.js +23 -1
  341. package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
  342. package/dist/elements/ReactSelect/index.css +5 -3
  343. package/dist/elements/ReactSelect/types.d.ts +3 -0
  344. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  345. package/dist/elements/ReactSelect/types.js.map +1 -1
  346. package/dist/elements/RenderTitle/index.css +9 -7
  347. package/dist/elements/Search/ListSearchFilter/index.d.ts +2 -1
  348. package/dist/elements/Search/ListSearchFilter/index.d.ts.map +1 -1
  349. package/dist/elements/Search/ListSearchFilter/index.js +33 -17
  350. package/dist/elements/Search/ListSearchFilter/index.js.map +1 -1
  351. package/dist/elements/Search/SearchInput/index.css +0 -1
  352. package/dist/elements/Search/SearchInput/index.d.ts +1 -0
  353. package/dist/elements/Search/SearchInput/index.d.ts.map +1 -1
  354. package/dist/elements/Search/SearchInput/index.js +23 -20
  355. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  356. package/dist/elements/SegmentedControl/index.css +9 -0
  357. package/dist/elements/SegmentedControl/index.d.ts +20 -0
  358. package/dist/elements/SegmentedControl/index.d.ts.map +1 -0
  359. package/dist/elements/SegmentedControl/index.js +162 -0
  360. package/dist/elements/SegmentedControl/index.js.map +1 -0
  361. package/dist/elements/SelectRow/index.d.ts +1 -0
  362. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  363. package/dist/elements/SelectRow/index.js +35 -27
  364. package/dist/elements/SelectRow/index.js.map +1 -1
  365. package/dist/elements/SidebarRow/index.css +43 -2
  366. package/dist/elements/SidebarToggle/index.css +3 -1
  367. package/dist/elements/SkipToContent/index.css +21 -0
  368. package/dist/elements/SkipToContent/index.d.ts +4 -0
  369. package/dist/elements/SkipToContent/index.d.ts.map +1 -0
  370. package/dist/elements/SkipToContent/index.js +63 -0
  371. package/dist/elements/SkipToContent/index.js.map +1 -0
  372. package/dist/elements/SortColumn/index.css +1 -2
  373. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  374. package/dist/elements/SortColumn/index.js +7 -3
  375. package/dist/elements/SortColumn/index.js.map +1 -1
  376. package/dist/elements/Spinner/index.css +0 -2
  377. package/dist/elements/Status/index.css +3 -4
  378. package/dist/elements/StepNav/index.css +15 -9
  379. package/dist/elements/Switch/index.css +0 -1
  380. package/dist/elements/Switch/index.d.ts +1 -0
  381. package/dist/elements/Switch/index.d.ts.map +1 -1
  382. package/dist/elements/Switch/index.js +18 -16
  383. package/dist/elements/Switch/index.js.map +1 -1
  384. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.css +0 -1
  385. package/dist/elements/Table/DefaultCell/fields/Code/index.css +0 -1
  386. package/dist/elements/Table/DefaultCell/fields/File/index.css +18 -13
  387. package/dist/elements/Table/DefaultCell/fields/File/index.js +1 -1
  388. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  389. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +26 -7
  390. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  391. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +42 -8
  392. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  393. package/dist/elements/Table/DefaultCell/fields/JSON/index.css +0 -1
  394. package/dist/elements/Table/DefaultCell/fields/Status/index.css +0 -1
  395. package/dist/elements/Table/GridNavigation/useGridNavigation.d.ts +8 -0
  396. package/dist/elements/Table/GridNavigation/useGridNavigation.d.ts.map +1 -0
  397. package/dist/elements/Table/GridNavigation/useGridNavigation.js +397 -0
  398. package/dist/elements/Table/GridNavigation/useGridNavigation.js.map +1 -0
  399. package/dist/elements/Table/TableIdentity.d.ts +3 -0
  400. package/dist/elements/Table/TableIdentity.d.ts.map +1 -1
  401. package/dist/elements/Table/TableIdentity.js +13 -8
  402. package/dist/elements/Table/TableIdentity.js.map +1 -1
  403. package/dist/elements/Table/index.css +23 -3
  404. package/dist/elements/Table/index.d.ts +2 -0
  405. package/dist/elements/Table/index.d.ts.map +1 -1
  406. package/dist/elements/Table/index.js +77 -83
  407. package/dist/elements/Table/index.js.map +1 -1
  408. package/dist/elements/TableSection/index.css +4 -5
  409. package/dist/elements/Tabs/index.css +1 -2
  410. package/dist/elements/Tabs/index.d.ts +4 -0
  411. package/dist/elements/Tabs/index.d.ts.map +1 -1
  412. package/dist/elements/Tabs/index.js +30 -1
  413. package/dist/elements/Tabs/index.js.map +1 -1
  414. package/dist/elements/ThumbnailCard/index.css +0 -1
  415. package/dist/elements/TimezonePicker/index.css +0 -3
  416. package/dist/elements/Tooltip/index.css +2 -2
  417. package/dist/elements/Tooltip/index.d.ts +5 -5
  418. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  419. package/dist/elements/Tooltip/index.js +20 -13
  420. package/dist/elements/Tooltip/index.js.map +1 -1
  421. package/dist/elements/Upload/index.css +2 -3
  422. package/dist/elements/Upload/index.d.ts +1 -1
  423. package/dist/elements/Upload/index.d.ts.map +1 -1
  424. package/dist/elements/Upload/index.js +6 -6
  425. package/dist/elements/Upload/index.js.map +1 -1
  426. package/dist/elements/UserMenu/LanguageMenu/index.d.ts.map +1 -1
  427. package/dist/elements/UserMenu/LanguageMenu/index.js +12 -30
  428. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
  429. package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
  430. package/dist/elements/UserMenu/SettingsMenu/index.js +12 -30
  431. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
  432. package/dist/elements/UserMenu/ThemeMenu/index.d.ts.map +1 -1
  433. package/dist/elements/UserMenu/ThemeMenu/index.js +12 -30
  434. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
  435. package/dist/elements/UserMenu/index.css +29 -15
  436. package/dist/elements/UserMenu/index.d.ts +1 -0
  437. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  438. package/dist/elements/UserMenu/index.js +60 -46
  439. package/dist/elements/UserMenu/index.js.map +1 -1
  440. package/dist/exports/client/CodeEditor-UKD3EPUY.js +14 -0
  441. package/dist/exports/client/CodeEditor-UKD3EPUY.js.map +7 -0
  442. package/dist/exports/client/DatePicker-BBZ3XRWP.js +14 -0
  443. package/dist/exports/client/DatePicker-BBZ3XRWP.js.map +7 -0
  444. package/dist/exports/client/chunk-6XCSN54Q.js +27 -0
  445. package/dist/exports/client/chunk-6XCSN54Q.js.map +7 -0
  446. package/dist/exports/client/chunk-AVJIZPR3.js +14 -0
  447. package/dist/exports/client/chunk-AVJIZPR3.js.map +7 -0
  448. package/dist/exports/client/chunk-USFUVW7C.js +29 -0
  449. package/dist/exports/client/chunk-USFUVW7C.js.map +7 -0
  450. package/dist/exports/client/index.d.ts +22 -2
  451. package/dist/exports/client/index.d.ts.map +1 -1
  452. package/dist/exports/client/index.js +100 -1
  453. package/dist/exports/client/index.js.map +4 -4
  454. package/dist/exports/rsc/index.d.ts +3 -0
  455. package/dist/exports/rsc/index.d.ts.map +1 -1
  456. package/dist/exports/rsc/index.js +3 -0
  457. package/dist/exports/rsc/index.js.map +1 -1
  458. package/dist/exports/shared/index.js +1 -1
  459. package/dist/exports/shared/index.js.map +3 -3
  460. package/dist/fields/Array/index.css +4 -0
  461. package/dist/fields/Array/index.d.ts.map +1 -1
  462. package/dist/fields/Array/index.js +14 -5
  463. package/dist/fields/Array/index.js.map +1 -1
  464. package/dist/fields/Blocks/SectionTitle/index.css +3 -5
  465. package/dist/fields/Blocks/index.css +2 -2
  466. package/dist/fields/Blocks/index.d.ts.map +1 -1
  467. package/dist/fields/Blocks/index.js +20 -11
  468. package/dist/fields/Blocks/index.js.map +1 -1
  469. package/dist/fields/Checkbox/Input.d.ts +2 -2
  470. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  471. package/dist/fields/Checkbox/Input.js +134 -152
  472. package/dist/fields/Checkbox/Input.js.map +1 -1
  473. package/dist/fields/Checkbox/index.css +189 -155
  474. package/dist/fields/Code/index.d.ts.map +1 -1
  475. package/dist/fields/Code/index.js +20 -3
  476. package/dist/fields/Code/index.js.map +1 -1
  477. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  478. package/dist/fields/Collapsible/index.js +1 -0
  479. package/dist/fields/Collapsible/index.js.map +1 -1
  480. package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
  481. package/dist/fields/ConfirmPassword/index.js +45 -31
  482. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  483. package/dist/fields/Email/index.d.ts.map +1 -1
  484. package/dist/fields/Email/index.js +11 -0
  485. package/dist/fields/Email/index.js.map +1 -1
  486. package/dist/fields/FieldError/index.css +12 -0
  487. package/dist/fields/FieldError/index.d.ts.map +1 -1
  488. package/dist/fields/FieldError/index.js +4 -1
  489. package/dist/fields/FieldError/index.js.map +1 -1
  490. package/dist/fields/FieldLabel/index.css +5 -4
  491. package/dist/fields/FieldLabel/index.d.ts.map +1 -1
  492. package/dist/fields/FieldLabel/index.js +28 -10
  493. package/dist/fields/FieldLabel/index.js.map +1 -1
  494. package/dist/fields/Group/index.css +2 -3
  495. package/dist/fields/JSON/index.d.ts.map +1 -1
  496. package/dist/fields/JSON/index.js +15 -1
  497. package/dist/fields/JSON/index.js.map +1 -1
  498. package/dist/fields/Join/index.css +3 -4
  499. package/dist/fields/Password/input.d.ts.map +1 -1
  500. package/dist/fields/Password/input.js +73 -95
  501. package/dist/fields/Password/input.js.map +1 -1
  502. package/dist/fields/Point/index.d.ts.map +1 -1
  503. package/dist/fields/Point/index.js +15 -2
  504. package/dist/fields/Point/index.js.map +1 -1
  505. package/dist/fields/RadioGroup/Radio/index.css +0 -1
  506. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  507. package/dist/fields/Relationship/Input.js +25 -17
  508. package/dist/fields/Relationship/Input.js.map +1 -1
  509. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  510. package/dist/fields/Relationship/optionsReducer.js +2 -0
  511. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  512. package/dist/fields/Relationship/types.d.ts +8 -0
  513. package/dist/fields/Relationship/types.d.ts.map +1 -1
  514. package/dist/fields/Relationship/types.js.map +1 -1
  515. package/dist/fields/Select/Input.d.ts.map +1 -1
  516. package/dist/fields/Select/Input.js +70 -51
  517. package/dist/fields/Select/Input.js.map +1 -1
  518. package/dist/fields/Select/index.css +7 -0
  519. package/dist/fields/Tabs/Tab/index.d.ts +2 -0
  520. package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
  521. package/dist/fields/Tabs/Tab/index.js +15 -9
  522. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  523. package/dist/fields/Tabs/index.d.ts.map +1 -1
  524. package/dist/fields/Tabs/index.js +179 -116
  525. package/dist/fields/Tabs/index.js.map +1 -1
  526. package/dist/fields/Text/Input.d.ts.map +1 -1
  527. package/dist/fields/Text/Input.js +53 -34
  528. package/dist/fields/Text/Input.js.map +1 -1
  529. package/dist/fields/Upload/HasMany/index.js +1 -1
  530. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  531. package/dist/fields/Upload/HasOne/index.js +1 -1
  532. package/dist/fields/Upload/HasOne/index.js.map +1 -1
  533. package/dist/fields/Upload/Input.d.ts.map +1 -1
  534. package/dist/fields/Upload/Input.js +13 -4
  535. package/dist/fields/Upload/Input.js.map +1 -1
  536. package/dist/fields/shared/useRowFocus.d.ts +5 -0
  537. package/dist/fields/shared/useRowFocus.d.ts.map +1 -0
  538. package/dist/fields/shared/useRowFocus.js +50 -0
  539. package/dist/fields/shared/useRowFocus.js.map +1 -0
  540. package/dist/forms/NullifyField/index.d.ts +10 -0
  541. package/dist/forms/NullifyField/index.d.ts.map +1 -1
  542. package/dist/forms/NullifyField/index.js +14 -4
  543. package/dist/forms/NullifyField/index.js.map +1 -1
  544. package/dist/forms/RenderFields/index.css +3 -6
  545. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -2
  546. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  547. package/dist/graphics/Logo/index.d.ts.map +1 -1
  548. package/dist/graphics/Logo/index.js +2 -0
  549. package/dist/graphics/Logo/index.js.map +1 -1
  550. package/dist/icons/ImageStack/index.d.ts +3 -0
  551. package/dist/icons/ImageStack/index.d.ts.map +1 -0
  552. package/dist/icons/ImageStack/index.js +17 -0
  553. package/dist/icons/ImageStack/index.js.map +1 -0
  554. package/dist/icons/Table/index.css +1 -0
  555. package/dist/icons/Table/index.d.ts +7 -0
  556. package/dist/icons/Table/index.d.ts.map +1 -0
  557. package/dist/icons/Table/index.js +25 -0
  558. package/dist/icons/Table/index.js.map +1 -0
  559. package/dist/layouts/Root/DocumentRoot.d.ts +24 -0
  560. package/dist/layouts/Root/DocumentRoot.d.ts.map +1 -0
  561. package/dist/layouts/Root/DocumentRoot.js +40 -0
  562. package/dist/layouts/Root/DocumentRoot.js.map +1 -0
  563. package/dist/layouts/Root/ResolveThemeOnClient.d.ts +12 -0
  564. package/dist/layouts/Root/ResolveThemeOnClient.d.ts.map +1 -0
  565. package/dist/layouts/Root/ResolveThemeOnClient.js +35 -0
  566. package/dist/layouts/Root/ResolveThemeOnClient.js.map +1 -0
  567. package/dist/layouts/Root/RootProviders.d.ts +11 -0
  568. package/dist/layouts/Root/RootProviders.d.ts.map +1 -0
  569. package/dist/layouts/Root/RootProviders.js +164 -0
  570. package/dist/layouts/Root/RootProviders.js.map +1 -0
  571. package/dist/layouts/Root/getRootLayoutData.d.ts +29 -0
  572. package/dist/layouts/Root/getRootLayoutData.d.ts.map +1 -0
  573. package/dist/layouts/Root/getRootLayoutData.js +72 -0
  574. package/dist/layouts/Root/getRootLayoutData.js.map +1 -0
  575. package/dist/layouts/Root/index.d.ts.map +1 -1
  576. package/dist/layouts/Root/index.js +48 -103
  577. package/dist/layouts/Root/index.js.map +1 -1
  578. package/dist/providers/ListQuery/getSearchWithListQuery.d.ts +7 -0
  579. package/dist/providers/ListQuery/getSearchWithListQuery.d.ts.map +1 -0
  580. package/dist/providers/ListQuery/getSearchWithListQuery.js +22 -0
  581. package/dist/providers/ListQuery/getSearchWithListQuery.js.map +1 -0
  582. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  583. package/dist/providers/ListQuery/index.js +16 -12
  584. package/dist/providers/ListQuery/index.js.map +1 -1
  585. package/dist/providers/ListQuery/types.d.ts +4 -0
  586. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  587. package/dist/providers/ListQuery/types.js.map +1 -1
  588. package/dist/providers/Preferences/index.d.ts +7 -1
  589. package/dist/providers/Preferences/index.d.ts.map +1 -1
  590. package/dist/providers/Preferences/index.js +62 -20
  591. package/dist/providers/Preferences/index.js.map +1 -1
  592. package/dist/providers/TableColumns/buildColumnState/index.d.ts +1 -0
  593. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  594. package/dist/providers/TableColumns/buildColumnState/index.js +2 -0
  595. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  596. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +2 -1
  597. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  598. package/dist/providers/TableColumns/buildColumnState/renderCell.js +12 -28
  599. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  600. package/dist/providers/ToastContainer/index.css +6 -7
  601. package/dist/providers/ToastContainer/index.d.ts.map +1 -1
  602. package/dist/providers/ToastContainer/index.js +15 -4
  603. package/dist/providers/ToastContainer/index.js.map +1 -1
  604. package/dist/providers/Translation/index.d.ts.map +1 -1
  605. package/dist/providers/Translation/index.js +11 -1
  606. package/dist/providers/Translation/index.js.map +1 -1
  607. package/dist/styles.css +163 -58
  608. package/dist/templates/Default/Wrapper/index.css +20 -5
  609. package/dist/templates/Default/Wrapper/index.d.ts.map +1 -1
  610. package/dist/templates/Default/Wrapper/index.js +4 -3
  611. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  612. package/dist/templates/Default/index.d.ts.map +1 -1
  613. package/dist/templates/Default/index.js +19 -14
  614. package/dist/templates/Default/index.js.map +1 -1
  615. package/dist/utilities/filterLLMInstructionsMenuItems.d.ts +9 -0
  616. package/dist/utilities/filterLLMInstructionsMenuItems.d.ts.map +1 -0
  617. package/dist/utilities/filterLLMInstructionsMenuItems.js +37 -0
  618. package/dist/utilities/filterLLMInstructionsMenuItems.js.map +1 -0
  619. package/dist/utilities/filterOutUploadFields.js +1 -1
  620. package/dist/utilities/filterOutUploadFields.js.map +1 -1
  621. package/dist/utilities/generateFieldID.d.ts +1 -1
  622. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  623. package/dist/utilities/generateFieldID.js.map +1 -1
  624. package/dist/utilities/getClientConfig.d.ts +5 -1
  625. package/dist/utilities/getClientConfig.d.ts.map +1 -1
  626. package/dist/utilities/getClientConfig.js +2 -1
  627. package/dist/utilities/getClientConfig.js.map +1 -1
  628. package/dist/utilities/getRequestTheme.d.ts +8 -1
  629. package/dist/utilities/getRequestTheme.d.ts.map +1 -1
  630. package/dist/utilities/getRequestTheme.js +16 -4
  631. package/dist/utilities/getRequestTheme.js.map +1 -1
  632. package/dist/utilities/hierarchyCollectionRestrictions.d.ts +15 -0
  633. package/dist/utilities/hierarchyCollectionRestrictions.d.ts.map +1 -0
  634. package/dist/utilities/hierarchyCollectionRestrictions.js +17 -0
  635. package/dist/utilities/hierarchyCollectionRestrictions.js.map +1 -0
  636. package/dist/utilities/renderTable.d.ts +2 -1
  637. package/dist/utilities/renderTable.d.ts.map +1 -1
  638. package/dist/utilities/renderTable.js +4 -0
  639. package/dist/utilities/renderTable.js.map +1 -1
  640. package/dist/views/API/index.client.d.ts.map +1 -1
  641. package/dist/views/API/index.client.js +19 -1
  642. package/dist/views/API/index.client.js.map +1 -1
  643. package/dist/views/API/index.css +1 -2
  644. package/dist/views/CreateFirstUser/index.css +0 -2
  645. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  646. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +75 -116
  647. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  648. package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.d.ts +7 -0
  649. package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.d.ts.map +1 -0
  650. package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.js +65 -0
  651. package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.js.map +1 -0
  652. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts +2 -1
  653. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  654. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +8 -2
  655. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  656. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  657. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +127 -91
  658. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  659. package/dist/views/Dashboard/Default/ModularDashboard/index.css +9 -6
  660. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
  661. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +3 -0
  662. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  663. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.d.ts.map +1 -1
  664. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js +2 -38
  665. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js.map +1 -1
  666. package/dist/views/Document/index.js +1 -1
  667. package/dist/views/Document/index.js.map +1 -1
  668. package/dist/views/Document/renderDocumentSlots.d.ts +1 -1
  669. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  670. package/dist/views/Document/renderDocumentSlots.js +10 -3
  671. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  672. package/dist/views/Edit/Auth/index.css +4 -5
  673. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  674. package/dist/views/ForgotPassword/index.js +1 -3
  675. package/dist/views/ForgotPassword/index.js.map +1 -1
  676. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
  677. package/dist/views/HierarchyList/DocumentListSelection/index.js +104 -105
  678. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  679. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -1
  680. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +79 -63
  681. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
  682. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.d.ts.map +1 -1
  683. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js +35 -87
  684. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +1 -1
  685. package/dist/views/HierarchyList/HierarchyTable/SlotTable.css +0 -101
  686. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +2 -0
  687. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
  688. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +45 -32
  689. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
  690. package/dist/views/HierarchyList/HierarchyTable/index.css +51 -41
  691. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +3 -1
  692. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  693. package/dist/views/HierarchyList/HierarchyTable/index.js +80 -6
  694. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  695. package/dist/views/HierarchyList/getHierarchyListURL.d.ts +7 -0
  696. package/dist/views/HierarchyList/getHierarchyListURL.d.ts.map +1 -0
  697. package/dist/views/HierarchyList/getHierarchyListURL.js +22 -0
  698. package/dist/views/HierarchyList/getHierarchyListURL.js.map +1 -0
  699. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  700. package/dist/views/HierarchyList/index.js +32 -11
  701. package/dist/views/HierarchyList/index.js.map +1 -1
  702. package/dist/views/List/DocumentGrid/index.d.ts +17 -0
  703. package/dist/views/List/DocumentGrid/index.d.ts.map +1 -0
  704. package/dist/views/List/DocumentGrid/index.js +152 -0
  705. package/dist/views/List/DocumentGrid/index.js.map +1 -0
  706. package/dist/views/List/GroupedDocumentGrid/index.css +17 -0
  707. package/dist/views/List/GroupedDocumentGrid/index.d.ts +14 -0
  708. package/dist/views/List/GroupedDocumentGrid/index.d.ts.map +1 -0
  709. package/dist/views/List/GroupedDocumentGrid/index.js +99 -0
  710. package/dist/views/List/GroupedDocumentGrid/index.js.map +1 -0
  711. package/dist/views/List/ListHeader/index.css +4 -5
  712. package/dist/views/List/ListHeader/index.d.ts +1 -0
  713. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  714. package/dist/views/List/ListHeader/index.js +5 -2
  715. package/dist/views/List/ListHeader/index.js.map +1 -1
  716. package/dist/views/List/getDocumentListItemURL.d.ts +9 -0
  717. package/dist/views/List/getDocumentListItemURL.d.ts.map +1 -0
  718. package/dist/views/List/getDocumentListItemURL.js +23 -0
  719. package/dist/views/List/getDocumentListItemURL.js.map +1 -0
  720. package/dist/views/List/handleGroupBy.d.ts +6 -2
  721. package/dist/views/List/handleGroupBy.d.ts.map +1 -1
  722. package/dist/views/List/handleGroupBy.js +13 -3
  723. package/dist/views/List/handleGroupBy.js.map +1 -1
  724. package/dist/views/List/index.client.d.ts.map +1 -1
  725. package/dist/views/List/index.client.js +207 -129
  726. package/dist/views/List/index.client.js.map +1 -1
  727. package/dist/views/List/index.css +1 -2
  728. package/dist/views/List/index.d.ts.map +1 -1
  729. package/dist/views/List/index.js +57 -3
  730. package/dist/views/List/index.js.map +1 -1
  731. package/dist/views/List/renderListViewSlots.d.ts +3 -2
  732. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  733. package/dist/views/List/renderListViewSlots.js +12 -4
  734. package/dist/views/List/renderListViewSlots.js.map +1 -1
  735. package/dist/views/List/resolveDocumentListItemURL.d.ts +11 -0
  736. package/dist/views/List/resolveDocumentListItemURL.d.ts.map +1 -0
  737. package/dist/views/List/resolveDocumentListItemURL.js +30 -0
  738. package/dist/views/List/resolveDocumentListItemURL.js.map +1 -0
  739. package/dist/views/NotFound/index.css +0 -2
  740. package/dist/views/ResetPassword/index.d.ts.map +1 -1
  741. package/dist/views/ResetPassword/index.js +1 -3
  742. package/dist/views/ResetPassword/index.js.map +1 -1
  743. package/dist/views/Root/getRouteData.d.ts +1 -8
  744. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  745. package/dist/views/Root/getRouteData.js +3 -12
  746. package/dist/views/Root/getRouteData.js.map +1 -1
  747. package/dist/views/Unauthorized/index.css +0 -2
  748. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  749. package/dist/views/Unauthorized/index.js +2 -1
  750. package/dist/views/Unauthorized/index.js.map +1 -1
  751. package/dist/views/Version/Default/index.css +7 -11
  752. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.css +0 -1
  753. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.css +0 -1
  754. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.css +3 -4
  755. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.css +0 -1
  756. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
  757. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +3 -1
  758. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  759. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.css +0 -1
  760. package/dist/views/Versions/VersionPillLabel/index.css +1 -2
  761. package/dist/views/Versions/index.client.d.ts.map +1 -1
  762. package/dist/views/Versions/index.client.js +3 -1
  763. package/dist/views/Versions/index.client.js.map +1 -1
  764. package/dist/views/Versions/index.css +1 -1
  765. package/dist/widgets/CollectionCards/index.client.d.ts.map +1 -1
  766. package/dist/widgets/CollectionCards/index.client.js +8 -6
  767. package/dist/widgets/CollectionCards/index.client.js.map +1 -1
  768. package/dist/widgets/CollectionCards/index.css +30 -38
  769. package/dist/widgets/CollectionCards/index.d.ts.map +1 -1
  770. package/dist/widgets/CollectionCards/index.js +7 -5
  771. package/dist/widgets/CollectionCards/index.js.map +1 -1
  772. package/dist/widgets/CollectionQuery/index.css +4 -6
  773. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts +1 -1
  774. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +1 -1
  775. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -1
  776. package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts +4 -0
  777. package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts.map +1 -0
  778. package/dist/widgets/UploadDropzone/CollectionsField/index.js +29 -0
  779. package/dist/widgets/UploadDropzone/CollectionsField/index.js.map +1 -0
  780. package/dist/widgets/UploadDropzone/index.client.d.ts +10 -0
  781. package/dist/widgets/UploadDropzone/index.client.d.ts.map +1 -0
  782. package/dist/widgets/UploadDropzone/index.client.js +78 -0
  783. package/dist/widgets/UploadDropzone/index.client.js.map +1 -0
  784. package/dist/widgets/UploadDropzone/index.css +80 -0
  785. package/dist/widgets/UploadDropzone/index.d.ts +12 -0
  786. package/dist/widgets/UploadDropzone/index.d.ts.map +1 -0
  787. package/dist/widgets/UploadDropzone/index.js +58 -0
  788. package/dist/widgets/UploadDropzone/index.js.map +1 -0
  789. package/dist/widgets/Welcome/getWelcomeDisplay.d.ts +7 -0
  790. package/dist/widgets/Welcome/getWelcomeDisplay.d.ts.map +1 -0
  791. package/dist/widgets/Welcome/getWelcomeDisplay.js +21 -0
  792. package/dist/widgets/Welcome/getWelcomeDisplay.js.map +1 -0
  793. package/dist/widgets/Welcome/index.css +25 -0
  794. package/dist/widgets/Welcome/index.d.ts +5 -0
  795. package/dist/widgets/Welcome/index.d.ts.map +1 -0
  796. package/dist/widgets/Welcome/index.js +25 -0
  797. package/dist/widgets/Welcome/index.js.map +1 -0
  798. package/dist/widgets/WidgetCard/index.css +4 -8
  799. package/package.json +35 -10
  800. package/dist/providers/Root/index.d.ts +0 -25
  801. package/dist/providers/Root/index.d.ts.map +0 -1
  802. package/dist/providers/Root/index.js +0 -156
  803. package/dist/providers/Root/index.js.map +0 -1
  804. package/dist/utilities/dateLocales.d.ts +0 -30
  805. package/dist/utilities/dateLocales.d.ts.map +0 -1
  806. package/dist/utilities/dateLocales.js +0 -57
  807. package/dist/utilities/dateLocales.js.map +0 -1
@@ -12,6 +12,7 @@ import { useDocumentSelection } from '../../../providers/DocumentSelection/index
12
12
  import { useLocale } from '../../../providers/Locale/index.js';
13
13
  import { useTranslation } from '../../../providers/Translation/index.js';
14
14
  import { requests } from '../../../utilities/api.js';
15
+ import { getEffectiveHierarchyCollections, getHierarchyCollectionRestrictions } from '../../../utilities/hierarchyCollectionRestrictions.js';
15
16
  import { ConfirmationModal } from '../../ConfirmationModal/index.js';
16
17
  import { ListSelectionButton } from '../../ListSelection/index.js';
17
18
  import { Translation } from '../../Translation/index.js';
@@ -30,6 +31,7 @@ export function MoveMany({
30
31
  Icon,
31
32
  modalPrefix,
32
33
  onSuccess,
34
+ requiredCollections: requiredCollectionsProp,
33
35
  selections
34
36
  }) {
35
37
  const {
@@ -52,12 +54,18 @@ export function MoveMany({
52
54
  const {
53
55
  getSelectionsWithMetadata
54
56
  } = useDocumentSelection();
57
+ const hierarchyCollectionConfig = collections.find(c => c.slug === hierarchySlug);
58
+ const {
59
+ relatedCollectionSlugs
60
+ } = useMemo(() => getHierarchyCollectionRestrictions({
61
+ collectionConfig: hierarchyCollectionConfig
62
+ }), [hierarchyCollectionConfig]);
55
63
  const [destination, setDestination] = useState(null);
56
64
  const confirmMoveDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-move-many`;
57
65
  // Compute required collections from selection metadata
58
66
  // For related items: add their collection slug
59
67
  // For folders: add their allowedCollections values
60
- const requiredCollections = useMemo(() => {
68
+ const inferredRequiredCollections = useMemo(() => {
61
69
  const selectionsWithMeta = getSelectionsWithMetadata();
62
70
  const required = new Set();
63
71
  for (const [collectionSlug, {
@@ -68,10 +76,11 @@ export function MoveMany({
68
76
  for (const {
69
77
  metadata
70
78
  } of items) {
71
- if (metadata.allowedCollections) {
72
- for (const slug of metadata.allowedCollections) {
73
- required.add(slug);
74
- }
79
+ for (const slug of getEffectiveHierarchyCollections({
80
+ allowedCollections: metadata.allowedCollections,
81
+ relatedCollectionSlugs
82
+ })) {
83
+ required.add(slug);
75
84
  }
76
85
  }
77
86
  } else {
@@ -80,7 +89,8 @@ export function MoveMany({
80
89
  }
81
90
  }
82
91
  return required.size > 0 ? Array.from(required) : undefined;
83
- }, [getSelectionsWithMetadata, hierarchySlug]);
92
+ }, [getSelectionsWithMetadata, hierarchySlug, relatedCollectionSlugs]);
93
+ const requiredCollections = requiredCollectionsProp ?? inferredRequiredCollections;
84
94
  // Folders being moved cannot be selected as destination (can't move into themselves)
85
95
  const disabledIds = useMemo(() => {
86
96
  const parentIds = selections[hierarchySlug]?.ids;
@@ -105,7 +115,7 @@ export function MoveMany({
105
115
  for (const [collectionSlug_0, {
106
116
  ids
107
117
  }] of Object.entries(selections)) {
108
- const config = collections.find(c => c.slug === collectionSlug_0);
118
+ const config = collections.find(c_0 => c_0.slug === collectionSlug_0);
109
119
  if (config && ids.length > 0) {
110
120
  totalCount += ids.length;
111
121
  const collectionLabel = getTranslation(ids.length > 1 ? config.labels.plural : config.labels.singular, i18n);
@@ -117,7 +127,6 @@ export function MoveMany({
117
127
  label: labels.join(', ')
118
128
  };
119
129
  }, [selections, collections, i18n]);
120
- const hierarchyCollectionConfig = collections.find(c_0 => c_0.slug === hierarchySlug);
121
130
  const parentFieldName = getParentFieldName(hierarchyCollectionConfig);
122
131
  // Check if hierarchy has a valid parentFieldName
123
132
  const canMove = parentFieldName !== undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","qs","React","useCallback","useMemo","useState","toast","useConfig","useDocumentSelection","useLocale","useTranslation","requests","ConfirmationModal","ListSelectionButton","Translation","useHierarchyModal","baseClass","getParentFieldName","hierarchyConfig","config","hierarchy","undefined","parentFieldName","MoveMany","currentParentID","hierarchySlug","Icon","modalPrefix","onSuccess","selections","i18n","t","currentLocale","locale","code","openModal","collections","routes","api","getSelectionsWithMetadata","destination","setDestination","confirmMoveDrawerSlug","requiredCollections","selectionsWithMeta","required","Set","collectionSlug","items","Object","entries","metadata","allowedCollections","slug","add","size","Array","from","disabledIds","parentIds","ids","length","HierarchyModal","closeModal","openHierarchyModal","filterByCollection","hierarchyCollectionSlug","count","label","totalCount","labels","find","c","collectionLabel","plural","singular","push","join","hierarchyCollectionConfig","canMove","handleDrawerSave","selectionsMap","firstSelection","values","next","value","destinationId","id","destinationTitle","path","title","String","handleMoveToRoot","handleConfirmMove","totalMoved","hasErrors","queryString","stringify","where","in","addQueryPrefix","url","apiRoute","response","patch","body","JSON","headers","language","credentials","json","status","errors","error","message","description","map","movedCount","docs","successKey","success","_err","_jsxs","Fragment","_jsx","className","onClick","hasMany","initialSelections","onMoveToRoot","onSave","showMoveToRoot","elements","1","children","i18nKey","variables","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../../src/elements/Hierarchy/MoveMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { SelectionWithPath } from '../Modal/types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentSelection } from '../../../providers/DocumentSelection/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../../ListSelection/index.js'\nimport { Translation } from '../../Translation/index.js'\nimport { useHierarchyModal } from '../Modal/useHierarchyModal.js'\n\nexport const baseClass = 'move-many'\n\ntype MoveManyProps = {\n /** Current parent ID - modal will open expanded to this location */\n currentParentID?: null | number | string\n /** The hierarchy collection slug (e.g., 'folders') */\n hierarchySlug: string\n /** Icon to display in the hierarchy modal */\n Icon?: React.ReactNode\n /** When multiple MoveMany components are rendered on the page, this will differentiate them */\n modalPrefix?: string\n /** Callback after successful move */\n onSuccess?: () => void\n /** Selections grouped by collection slug */\n selections: Record<string, { ids: (number | string)[] }>\n}\n\n/**\n * Gets the parent field name from the hierarchy config.\n */\nfunction getParentFieldName(\n hierarchyConfig: ClientCollectionConfig | undefined,\n): string | undefined {\n const config =\n hierarchyConfig?.hierarchy && typeof hierarchyConfig.hierarchy === 'object'\n ? hierarchyConfig.hierarchy\n : undefined\n return config?.parentFieldName\n}\n\nexport function MoveMany({\n currentParentID,\n hierarchySlug,\n Icon,\n modalPrefix,\n onSuccess,\n selections,\n}: MoveManyProps) {\n const { i18n, t } = useTranslation()\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n const { openModal } = useModal()\n const {\n config: {\n collections,\n routes: { api },\n },\n } = useConfig()\n\n const { getSelectionsWithMetadata } = useDocumentSelection()\n\n const [destination, setDestination] = useState<{\n id: null | number | string\n title: string\n } | null>(null)\n\n const confirmMoveDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-move-many`\n\n // Compute required collections from selection metadata\n // For related items: add their collection slug\n // For folders: add their allowedCollections values\n const requiredCollections = useMemo(() => {\n const selectionsWithMeta = getSelectionsWithMetadata()\n const required = new Set<string>()\n\n for (const [collectionSlug, { selections: items }] of Object.entries(selectionsWithMeta)) {\n if (collectionSlug === hierarchySlug) {\n // For folders, add their allowedCollections to required set\n for (const { metadata } of items) {\n if (metadata.allowedCollections) {\n for (const slug of metadata.allowedCollections) {\n required.add(slug)\n }\n }\n }\n } else {\n // For related items, add their collection slug\n required.add(collectionSlug)\n }\n }\n\n return required.size > 0 ? Array.from(required) : undefined\n }, [getSelectionsWithMetadata, hierarchySlug])\n\n // Folders being moved cannot be selected as destination (can't move into themselves)\n const disabledIds = useMemo(() => {\n const parentIds = selections[hierarchySlug]?.ids\n return parentIds?.length ? new Set(parentIds) : undefined\n }, [selections, hierarchySlug])\n\n const [HierarchyModal, , { closeModal, openModal: openHierarchyModal }] = useHierarchyModal({\n disabledIds,\n filterByCollection: requiredCollections,\n hierarchyCollectionSlug: hierarchySlug,\n Icon,\n })\n\n // Calculate total count and label\n const { count, label } = useMemo(() => {\n let totalCount = 0\n const labels: string[] = []\n\n for (const [collectionSlug, { ids }] of Object.entries(selections)) {\n const config = collections.find((c) => c.slug === collectionSlug)\n\n if (config && ids.length > 0) {\n totalCount += ids.length\n const collectionLabel = getTranslation(\n ids.length > 1 ? config.labels.plural : config.labels.singular,\n i18n,\n )\n labels.push(collectionLabel)\n }\n }\n\n return {\n count: totalCount,\n label: labels.join(', '),\n }\n }, [selections, collections, i18n])\n\n const hierarchyCollectionConfig = collections.find((c) => c.slug === hierarchySlug)\n const parentFieldName = getParentFieldName(hierarchyCollectionConfig)\n\n // Check if hierarchy has a valid parentFieldName\n const canMove = parentFieldName !== undefined\n\n const handleDrawerSave = useCallback(\n ({ selections: selectionsMap }: { selections: Map<number | string, SelectionWithPath> }) => {\n if (selectionsMap.size === 0) {\n return\n }\n\n const firstSelection = selectionsMap.values().next().value\n const destinationId = firstSelection?.id\n const destinationTitle =\n firstSelection?.path?.[firstSelection.path.length - 1]?.title || String(destinationId)\n\n setDestination({ id: destinationId, title: destinationTitle })\n openModal(confirmMoveDrawerSlug)\n },\n [openModal, confirmMoveDrawerSlug],\n )\n\n const handleMoveToRoot = useCallback(() => {\n setDestination({ id: null, title: t('hierarchy:noParent') })\n openModal(confirmMoveDrawerSlug)\n }, [openModal, confirmMoveDrawerSlug, t])\n\n const handleConfirmMove = useCallback(async () => {\n if (destination === null) {\n return\n }\n\n let totalMoved = 0\n let hasErrors = false\n\n try {\n for (const [collectionSlug, { ids }] of Object.entries(selections)) {\n if (ids.length === 0) {\n continue\n }\n\n const queryString = qs.stringify(\n {\n locale,\n where: { id: { in: ids } },\n },\n { addQueryPrefix: true },\n )\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${queryString}`,\n })\n\n const response = await requests.patch(url, {\n body: JSON.stringify({ [parentFieldName]: destination.id }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n })\n\n const json = await response.json()\n\n if (response.status >= 400) {\n hasErrors = true\n\n if (json?.errors?.length > 0) {\n toast.error(json.message || t('error:unknown'), {\n description: json.errors\n .map((error: { message: string }) => error.message)\n .join('\\n'),\n })\n } else {\n toast.error(json?.message || t('error:unknown'))\n }\n\n continue\n }\n\n const movedCount = json?.docs?.length || 0\n totalMoved += movedCount\n\n if (json?.errors?.length > 0) {\n hasErrors = true\n toast.error(json.message, {\n description: json.errors.map((error: { message: string }) => error.message).join('\\n'),\n })\n }\n }\n\n if (totalMoved > 0) {\n const successKey =\n destination.id === null ? 'hierarchy:itemsMovedToRoot' : 'hierarchy:itemsMovedTo'\n\n toast.success(\n t(successKey, {\n destination: destination.title,\n title: label,\n }),\n )\n }\n\n if (!hasErrors || totalMoved > 0) {\n closeModal()\n onSuccess?.()\n }\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setDestination(null)\n }\n }, [closeModal, destination, selections, parentFieldName, locale, api, i18n, t, label, onSuccess])\n\n if (count === 0 || !canMove) {\n return null\n }\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:move')}\n className={`${baseClass}__toggle`}\n onClick={openHierarchyModal}\n >\n {t('general:move')}\n </ListSelectionButton>\n <HierarchyModal\n hasMany={false}\n initialSelections={currentParentID ? [currentParentID] : null}\n onMoveToRoot={handleMoveToRoot}\n onSave={handleDrawerSave}\n showMoveToRoot\n />\n <ConfirmationModal\n body={\n <p>\n {destination?.id === null ? (\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"hierarchy:moveItemsToRootConfirmation\"\n t={t}\n variables={{\n count,\n label,\n }}\n />\n ) : (\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:moveConfirm\"\n t={t}\n variables={{\n count,\n destination: destination?.title || '',\n label,\n }}\n />\n )}\n </p>\n }\n confirmingLabel={t('general:moving')}\n heading={t('general:confirmMove')}\n modalSlug={confirmMoveDrawerSlug}\n onConfirm={handleConfirmMove}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","qs","React","useCallback","useMemo","useState","toast","useConfig","useDocumentSelection","useLocale","useTranslation","requests","getEffectiveHierarchyCollections","getHierarchyCollectionRestrictions","ConfirmationModal","ListSelectionButton","Translation","useHierarchyModal","baseClass","getParentFieldName","hierarchyConfig","config","hierarchy","undefined","parentFieldName","MoveMany","currentParentID","hierarchySlug","Icon","modalPrefix","onSuccess","requiredCollections","requiredCollectionsProp","selections","i18n","t","currentLocale","locale","code","openModal","collections","routes","api","getSelectionsWithMetadata","hierarchyCollectionConfig","find","c","slug","relatedCollectionSlugs","collectionConfig","destination","setDestination","confirmMoveDrawerSlug","inferredRequiredCollections","selectionsWithMeta","required","Set","collectionSlug","items","Object","entries","metadata","allowedCollections","add","size","Array","from","disabledIds","parentIds","ids","length","HierarchyModal","closeModal","openHierarchyModal","filterByCollection","hierarchyCollectionSlug","count","label","totalCount","labels","collectionLabel","plural","singular","push","join","canMove","handleDrawerSave","selectionsMap","firstSelection","values","next","value","destinationId","id","destinationTitle","path","title","String","handleMoveToRoot","handleConfirmMove","totalMoved","hasErrors","queryString","stringify","where","in","addQueryPrefix","url","apiRoute","response","patch","body","JSON","headers","language","credentials","json","status","errors","error","message","description","map","movedCount","docs","successKey","success","_err","_jsxs","Fragment","_jsx","className","onClick","hasMany","initialSelections","onMoveToRoot","onSave","showMoveToRoot","elements","1","children","i18nKey","variables","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../../src/elements/Hierarchy/MoveMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { SelectionWithPath } from '../Modal/types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentSelection } from '../../../providers/DocumentSelection/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport {\n getEffectiveHierarchyCollections,\n getHierarchyCollectionRestrictions,\n} from '../../../utilities/hierarchyCollectionRestrictions.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../../ListSelection/index.js'\nimport { Translation } from '../../Translation/index.js'\nimport { useHierarchyModal } from '../Modal/useHierarchyModal.js'\n\nexport const baseClass = 'move-many'\n\ntype MoveManyProps = {\n /** Current parent ID - modal will open expanded to this location */\n currentParentID?: null | number | string\n /** The hierarchy collection slug (e.g., 'folders') */\n hierarchySlug: string\n /** Icon to display in the hierarchy modal */\n Icon?: React.ReactNode\n /** When multiple MoveMany components are rendered on the page, this will differentiate them */\n modalPrefix?: string\n /** Callback after successful move */\n onSuccess?: () => void\n /** Collection slugs required by the selected documents at the destination. */\n requiredCollections?: string[]\n /** Selections grouped by collection slug */\n selections: Record<string, { ids: (number | string)[] }>\n}\n\n/**\n * Gets the parent field name from the hierarchy config.\n */\nfunction getParentFieldName(\n hierarchyConfig: ClientCollectionConfig | undefined,\n): string | undefined {\n const config =\n hierarchyConfig?.hierarchy && typeof hierarchyConfig.hierarchy === 'object'\n ? hierarchyConfig.hierarchy\n : undefined\n return config?.parentFieldName\n}\n\nexport function MoveMany({\n currentParentID,\n hierarchySlug,\n Icon,\n modalPrefix,\n onSuccess,\n requiredCollections: requiredCollectionsProp,\n selections,\n}: MoveManyProps) {\n const { i18n, t } = useTranslation()\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n const { openModal } = useModal()\n const {\n config: {\n collections,\n routes: { api },\n },\n } = useConfig()\n\n const { getSelectionsWithMetadata } = useDocumentSelection()\n const hierarchyCollectionConfig = collections.find((c) => c.slug === hierarchySlug)\n\n const { relatedCollectionSlugs } = useMemo(\n () => getHierarchyCollectionRestrictions({ collectionConfig: hierarchyCollectionConfig }),\n [hierarchyCollectionConfig],\n )\n\n const [destination, setDestination] = useState<{\n id: null | number | string\n title: string\n } | null>(null)\n\n const confirmMoveDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-move-many`\n\n // Compute required collections from selection metadata\n // For related items: add their collection slug\n // For folders: add their allowedCollections values\n const inferredRequiredCollections = useMemo(() => {\n const selectionsWithMeta = getSelectionsWithMetadata()\n const required = new Set<string>()\n\n for (const [collectionSlug, { selections: items }] of Object.entries(selectionsWithMeta)) {\n if (collectionSlug === hierarchySlug) {\n // For folders, add their allowedCollections to required set\n for (const { metadata } of items) {\n for (const slug of getEffectiveHierarchyCollections({\n allowedCollections: metadata.allowedCollections,\n relatedCollectionSlugs,\n })) {\n required.add(slug)\n }\n }\n } else {\n // For related items, add their collection slug\n required.add(collectionSlug)\n }\n }\n\n return required.size > 0 ? Array.from(required) : undefined\n }, [getSelectionsWithMetadata, hierarchySlug, relatedCollectionSlugs])\n\n const requiredCollections = requiredCollectionsProp ?? inferredRequiredCollections\n\n // Folders being moved cannot be selected as destination (can't move into themselves)\n const disabledIds = useMemo(() => {\n const parentIds = selections[hierarchySlug]?.ids\n return parentIds?.length ? new Set(parentIds) : undefined\n }, [selections, hierarchySlug])\n\n const [HierarchyModal, , { closeModal, openModal: openHierarchyModal }] = useHierarchyModal({\n disabledIds,\n filterByCollection: requiredCollections,\n hierarchyCollectionSlug: hierarchySlug,\n Icon,\n })\n\n // Calculate total count and label\n const { count, label } = useMemo(() => {\n let totalCount = 0\n const labels: string[] = []\n\n for (const [collectionSlug, { ids }] of Object.entries(selections)) {\n const config = collections.find((c) => c.slug === collectionSlug)\n\n if (config && ids.length > 0) {\n totalCount += ids.length\n const collectionLabel = getTranslation(\n ids.length > 1 ? config.labels.plural : config.labels.singular,\n i18n,\n )\n labels.push(collectionLabel)\n }\n }\n\n return {\n count: totalCount,\n label: labels.join(', '),\n }\n }, [selections, collections, i18n])\n\n const parentFieldName = getParentFieldName(hierarchyCollectionConfig)\n\n // Check if hierarchy has a valid parentFieldName\n const canMove = parentFieldName !== undefined\n\n const handleDrawerSave = useCallback(\n ({ selections: selectionsMap }: { selections: Map<number | string, SelectionWithPath> }) => {\n if (selectionsMap.size === 0) {\n return\n }\n\n const firstSelection = selectionsMap.values().next().value\n const destinationId = firstSelection?.id\n const destinationTitle =\n firstSelection?.path?.[firstSelection.path.length - 1]?.title || String(destinationId)\n\n setDestination({ id: destinationId, title: destinationTitle })\n openModal(confirmMoveDrawerSlug)\n },\n [openModal, confirmMoveDrawerSlug],\n )\n\n const handleMoveToRoot = useCallback(() => {\n setDestination({ id: null, title: t('hierarchy:noParent') })\n openModal(confirmMoveDrawerSlug)\n }, [openModal, confirmMoveDrawerSlug, t])\n\n const handleConfirmMove = useCallback(async () => {\n if (destination === null) {\n return\n }\n\n let totalMoved = 0\n let hasErrors = false\n\n try {\n for (const [collectionSlug, { ids }] of Object.entries(selections)) {\n if (ids.length === 0) {\n continue\n }\n\n const queryString = qs.stringify(\n {\n locale,\n where: { id: { in: ids } },\n },\n { addQueryPrefix: true },\n )\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${queryString}`,\n })\n\n const response = await requests.patch(url, {\n body: JSON.stringify({ [parentFieldName]: destination.id }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n })\n\n const json = await response.json()\n\n if (response.status >= 400) {\n hasErrors = true\n\n if (json?.errors?.length > 0) {\n toast.error(json.message || t('error:unknown'), {\n description: json.errors\n .map((error: { message: string }) => error.message)\n .join('\\n'),\n })\n } else {\n toast.error(json?.message || t('error:unknown'))\n }\n\n continue\n }\n\n const movedCount = json?.docs?.length || 0\n totalMoved += movedCount\n\n if (json?.errors?.length > 0) {\n hasErrors = true\n toast.error(json.message, {\n description: json.errors.map((error: { message: string }) => error.message).join('\\n'),\n })\n }\n }\n\n if (totalMoved > 0) {\n const successKey =\n destination.id === null ? 'hierarchy:itemsMovedToRoot' : 'hierarchy:itemsMovedTo'\n\n toast.success(\n t(successKey, {\n destination: destination.title,\n title: label,\n }),\n )\n }\n\n if (!hasErrors || totalMoved > 0) {\n closeModal()\n onSuccess?.()\n }\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setDestination(null)\n }\n }, [closeModal, destination, selections, parentFieldName, locale, api, i18n, t, label, onSuccess])\n\n if (count === 0 || !canMove) {\n return null\n }\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:move')}\n className={`${baseClass}__toggle`}\n onClick={openHierarchyModal}\n >\n {t('general:move')}\n </ListSelectionButton>\n <HierarchyModal\n hasMany={false}\n initialSelections={currentParentID ? [currentParentID] : null}\n onMoveToRoot={handleMoveToRoot}\n onSave={handleDrawerSave}\n showMoveToRoot\n />\n <ConfirmationModal\n body={\n <p>\n {destination?.id === null ? (\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"hierarchy:moveItemsToRootConfirmation\"\n t={t}\n variables={{\n count,\n label,\n }}\n />\n ) : (\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:moveConfirm\"\n t={t}\n variables={{\n count,\n destination: destination?.title || '',\n label,\n }}\n />\n )}\n </p>\n }\n confirmingLabel={t('general:moving')}\n heading={t('general:confirmMove')}\n modalSlug={confirmMoveDrawerSlug}\n onConfirm={handleConfirmMove}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Search/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAEpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAUtD,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA4I1D,CAAA;AAED,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Search/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAEpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAUtD,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAqJ1D,CAAA;AAED,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -33,6 +33,7 @@ export const HierarchySearch = t0 => {
33
33
  getEntityConfig
34
34
  } = useConfig();
35
35
  const [inputValue, setInputValue] = useState("");
36
+ const [completedQuery, setCompletedQuery] = useState("");
36
37
  const collectionConfig = getEntityConfig({
37
38
  collectionSlug
38
39
  });
@@ -57,6 +58,7 @@ export const HierarchySearch = t0 => {
57
58
  if ($[0] !== onActiveChange || $[1] !== search) {
58
59
  t1 = async query => {
59
60
  await search(query);
61
+ setCompletedQuery(query);
60
62
  onActiveChange(true);
61
63
  };
62
64
  $[0] = onActiveChange;
@@ -193,6 +195,15 @@ export const HierarchySearch = t0 => {
193
195
  },
194
196
  verticalAlign: "bottom"
195
197
  })]
198
+ }), _jsx("div", {
199
+ "aria-atomic": "true",
200
+ className: "sr-only",
201
+ role: "status",
202
+ children: isActive && !isLoading ? totalDocs === 0 ? t("hierarchy:noResults", {
203
+ query: completedQuery
204
+ }) : t("hierarchy:searchResults", {
205
+ count: totalDocs
206
+ }) : ""
196
207
  }), isActive && _jsx(HierarchySearchResults, {
197
208
  hasNextPage,
198
209
  isLoading,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useCallback","useState","FilterIcon","useConfig","useTranslation","Button","Popup","PopupList","SearchInput","HierarchySearchResults","useHierarchySearch","baseClass","HierarchySearch","t0","$","collectionSlug","collectionSpecificOptions","isActive","onActiveChange","onFilterChange","onSelect","selectedFilters","i18n","t","getEntityConfig","inputValue","setInputValue","collectionConfig","titleField","admin","useAsTitle","collectionLabel","labels","plural","hierarchyConfig","hierarchy","clearResults","hasNextPage","isLoading","loadMore","results","search","totalDocs","parentFieldName","titlePathField","titlePathFieldName","t1","query","handleSearch","t2","handleClear","t3","value","handleInputChange","t4","t5","id","handleSelect","t6","selectedValues","handleFilterChange","hasFilters","length","hasActiveFilters","_jsxs","className","children","_jsx","onChange","onClear","onSearch","placeholder","label","buttonClassName","caret","horizontalAlign","popupType","render","CheckboxGroup","map","value_0","isActive_0","includes","CheckboxGroupItem","active","onClick","newSelectedValues","filter","v","onKeyDown","ariaProps","t7","buttonStyle","extraButtonProps","icon","hasBadgeCutout","size","onLoadMore","HierarchySearchResultItem"],"sources":["../../../../src/elements/Hierarchy/Search/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useState } from 'react'\n\nimport type { HierarchySearchProps } from './types.js'\n\nimport { FilterIcon } from '../../../icons/Filter/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Popup, PopupList } from '../../Popup/index.js'\nimport { SearchInput } from '../../Search/SearchInput/index.js'\nimport { HierarchySearchResults } from './HierarchySearchResults.js'\nimport { useHierarchySearch } from './useHierarchySearch.js'\nimport './index.css'\n\nconst baseClass = 'hierarchy-search'\n\nexport const HierarchySearch: React.FC<HierarchySearchProps> = ({\n collectionSlug,\n collectionSpecificOptions,\n isActive,\n onActiveChange,\n onFilterChange,\n onSelect,\n selectedFilters,\n}) => {\n const { i18n, t } = useTranslation()\n const { getEntityConfig } = useConfig()\n const [inputValue, setInputValue] = useState('')\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const titleField = collectionConfig?.admin?.useAsTitle || 'id'\n const collectionLabel = getTranslation(collectionConfig?.labels?.plural, i18n)\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : null\n\n const { clearResults, hasNextPage, isLoading, loadMore, results, search, totalDocs } =\n useHierarchySearch({\n collectionSlug,\n parentFieldName: hierarchyConfig?.parentFieldName,\n titleField,\n titlePathField: hierarchyConfig?.titlePathFieldName,\n })\n\n const handleSearch = useCallback(\n async (query: string) => {\n await search(query)\n onActiveChange(true)\n },\n [search, onActiveChange],\n )\n\n const handleClear = useCallback(() => {\n setInputValue('')\n clearResults()\n onActiveChange(false)\n }, [clearResults, onActiveChange])\n\n const handleInputChange = useCallback(\n (value: string) => {\n setInputValue(value)\n if (!value && isActive) {\n clearResults()\n onActiveChange(false)\n }\n },\n [isActive, clearResults, onActiveChange],\n )\n\n const handleSelect = useCallback(\n ({ id }: { id: number | string }) => {\n onSelect({ id })\n handleClear()\n },\n [onSelect, handleClear],\n )\n\n const handleFilterChange = useCallback(\n ({ selectedValues }: { selectedValues: string[] }) => {\n onFilterChange?.(selectedValues)\n },\n [onFilterChange],\n )\n\n const hasFilters = collectionSpecificOptions && collectionSpecificOptions.length > 0\n const hasActiveFilters = selectedFilters && selectedFilters.length > 0\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__controls`}>\n <SearchInput\n onChange={handleInputChange}\n onClear={handleClear}\n onSearch={handleSearch}\n placeholder={t('hierarchy:searchLabel', { label: collectionLabel })}\n value={inputValue}\n />\n {hasFilters && (\n <Popup\n buttonClassName={`${baseClass}__filter`}\n caret={false}\n horizontalAlign=\"right\"\n popupType=\"menu\"\n render={() => (\n <PopupList.CheckboxGroup>\n {collectionSpecificOptions.map(({ label, value }) => {\n const isActive = selectedFilters?.includes(value)\n return (\n <PopupList.CheckboxGroupItem\n active={isActive}\n key={value}\n onClick={() => {\n const newSelectedValues = isActive\n ? selectedFilters.filter((v) => v !== value)\n : [...selectedFilters, value]\n handleFilterChange({ selectedValues: newSelectedValues })\n }}\n >\n {label}\n </PopupList.CheckboxGroupItem>\n )\n })}\n </PopupList.CheckboxGroup>\n )}\n renderButton={({ active, onClick, onKeyDown, ...ariaProps }) => (\n <Button\n {...ariaProps}\n aria-label={t('general:filter')}\n buttonStyle=\"secondary\"\n className={`${baseClass}__filter`}\n extraButtonProps={{ onKeyDown }}\n icon={<FilterIcon hasBadgeCutout={hasActiveFilters} size={16} />}\n onClick={onClick}\n round\n selected={active}\n />\n )}\n verticalAlign=\"bottom\"\n />\n )}\n </div>\n {isActive && (\n <HierarchySearchResults\n hasNextPage={hasNextPage}\n isLoading={isLoading}\n onLoadMore={loadMore}\n onSelect={handleSelect}\n query={inputValue}\n results={results}\n titleField={titleField}\n totalDocs={totalDocs}\n />\n )}\n </div>\n )\n}\n\nexport { HierarchySearchResultItem } from './HierarchySearchResultItem.js'\nexport { HierarchySearchResults } from './HierarchySearchResults.js'\nexport type { HierarchySearchProps, SearchResult } from './types.js'\nexport { useHierarchySearch } from './useHierarchySearch.js'\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useCallback","useState","FilterIcon","useConfig","useTranslation","Button","Popup","PopupList","SearchInput","HierarchySearchResults","useHierarchySearch","baseClass","HierarchySearch","t0","$","collectionSlug","collectionSpecificOptions","isActive","onActiveChange","onFilterChange","onSelect","selectedFilters","i18n","t","getEntityConfig","inputValue","setInputValue","completedQuery","setCompletedQuery","collectionConfig","titleField","admin","useAsTitle","collectionLabel","labels","plural","hierarchyConfig","hierarchy","clearResults","hasNextPage","isLoading","loadMore","results","search","totalDocs","parentFieldName","titlePathField","titlePathFieldName","t1","query","handleSearch","t2","handleClear","t3","value","handleInputChange","t4","t5","id","handleSelect","t6","selectedValues","handleFilterChange","hasFilters","length","hasActiveFilters","_jsxs","className","children","_jsx","onChange","onClear","onSearch","placeholder","label","buttonClassName","caret","horizontalAlign","popupType","render","CheckboxGroup","map","value_0","isActive_0","includes","CheckboxGroupItem","active","onClick","newSelectedValues","filter","v","onKeyDown","ariaProps","t7","buttonStyle","extraButtonProps","icon","hasBadgeCutout","size","role","count","onLoadMore","HierarchySearchResultItem"],"sources":["../../../../src/elements/Hierarchy/Search/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useState } from 'react'\n\nimport type { HierarchySearchProps } from './types.js'\n\nimport { FilterIcon } from '../../../icons/Filter/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Popup, PopupList } from '../../Popup/index.js'\nimport { SearchInput } from '../../Search/SearchInput/index.js'\nimport { HierarchySearchResults } from './HierarchySearchResults.js'\nimport { useHierarchySearch } from './useHierarchySearch.js'\nimport './index.css'\n\nconst baseClass = 'hierarchy-search'\n\nexport const HierarchySearch: React.FC<HierarchySearchProps> = ({\n collectionSlug,\n collectionSpecificOptions,\n isActive,\n onActiveChange,\n onFilterChange,\n onSelect,\n selectedFilters,\n}) => {\n const { i18n, t } = useTranslation()\n const { getEntityConfig } = useConfig()\n const [inputValue, setInputValue] = useState('')\n const [completedQuery, setCompletedQuery] = useState('')\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const titleField = collectionConfig?.admin?.useAsTitle || 'id'\n const collectionLabel = getTranslation(collectionConfig?.labels?.plural, i18n)\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : null\n\n const { clearResults, hasNextPage, isLoading, loadMore, results, search, totalDocs } =\n useHierarchySearch({\n collectionSlug,\n parentFieldName: hierarchyConfig?.parentFieldName,\n titleField,\n titlePathField: hierarchyConfig?.titlePathFieldName,\n })\n\n const handleSearch = useCallback(\n async (query: string) => {\n await search(query)\n setCompletedQuery(query)\n onActiveChange(true)\n },\n [search, onActiveChange],\n )\n\n const handleClear = useCallback(() => {\n setInputValue('')\n clearResults()\n onActiveChange(false)\n }, [clearResults, onActiveChange])\n\n const handleInputChange = useCallback(\n (value: string) => {\n setInputValue(value)\n if (!value && isActive) {\n clearResults()\n onActiveChange(false)\n }\n },\n [isActive, clearResults, onActiveChange],\n )\n\n const handleSelect = useCallback(\n ({ id }: { id: number | string }) => {\n onSelect({ id })\n handleClear()\n },\n [onSelect, handleClear],\n )\n\n const handleFilterChange = useCallback(\n ({ selectedValues }: { selectedValues: string[] }) => {\n onFilterChange?.(selectedValues)\n },\n [onFilterChange],\n )\n\n const hasFilters = collectionSpecificOptions && collectionSpecificOptions.length > 0\n const hasActiveFilters = selectedFilters && selectedFilters.length > 0\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__controls`}>\n <SearchInput\n onChange={handleInputChange}\n onClear={handleClear}\n onSearch={handleSearch}\n placeholder={t('hierarchy:searchLabel', { label: collectionLabel })}\n value={inputValue}\n />\n {hasFilters && (\n <Popup\n buttonClassName={`${baseClass}__filter`}\n caret={false}\n horizontalAlign=\"right\"\n popupType=\"menu\"\n render={() => (\n <PopupList.CheckboxGroup>\n {collectionSpecificOptions.map(({ label, value }) => {\n const isActive = selectedFilters?.includes(value)\n return (\n <PopupList.CheckboxGroupItem\n active={isActive}\n key={value}\n onClick={() => {\n const newSelectedValues = isActive\n ? selectedFilters.filter((v) => v !== value)\n : [...selectedFilters, value]\n handleFilterChange({ selectedValues: newSelectedValues })\n }}\n >\n {label}\n </PopupList.CheckboxGroupItem>\n )\n })}\n </PopupList.CheckboxGroup>\n )}\n renderButton={({ active, onClick, onKeyDown, ...ariaProps }) => (\n <Button\n {...ariaProps}\n aria-label={t('general:filter')}\n buttonStyle=\"secondary\"\n className={`${baseClass}__filter`}\n extraButtonProps={{ onKeyDown }}\n icon={<FilterIcon hasBadgeCutout={hasActiveFilters} size={16} />}\n onClick={onClick}\n round\n selected={active}\n />\n )}\n verticalAlign=\"bottom\"\n />\n )}\n </div>\n <div aria-atomic=\"true\" className=\"sr-only\" role=\"status\">\n {isActive && !isLoading\n ? totalDocs === 0\n ? t('hierarchy:noResults', { query: completedQuery })\n : t('hierarchy:searchResults', { count: totalDocs })\n : ''}\n </div>\n {isActive && (\n <HierarchySearchResults\n hasNextPage={hasNextPage}\n isLoading={isLoading}\n onLoadMore={loadMore}\n onSelect={handleSelect}\n query={inputValue}\n results={results}\n titleField={titleField}\n totalDocs={totalDocs}\n />\n )}\n </div>\n )\n}\n\nexport { HierarchySearchResultItem } from './HierarchySearchResultItem.js'\nexport { HierarchySearchResults } from './HierarchySearchResults.js'\nexport type { HierarchySearchProps, SearchResult } from './types.js'\nexport { useHierarchySearch } from './useHierarchySearch.js'\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchySidebarTab.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAGpD,OAAO,KAAmD,MAAM,OAAO,CAAA;AAEvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAWtD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CACxC;IACE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,yBAAyB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC9D,uBAAuB,EAAE,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACzC,oBAAoB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1C,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,qBAAqB,CAmI1B,CAAA"}
1
+ {"version":3,"file":"HierarchySidebarTab.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAIpD,OAAO,KAAmD,MAAM,OAAO,CAAA;AAEvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAWtD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CACxC;IACE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,yBAAyB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC9D,uBAAuB,EAAE,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACzC,oBAAoB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1C,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,qBAAqB,CAsI1B,CAAA"}
@@ -3,6 +3,7 @@
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
5
5
  import { formatAdminURL } from 'payload/shared';
6
+ import * as qs from 'qs-esm';
6
7
  import React, { useCallback, useEffect, useRef, useState } from 'react';
7
8
  import { useConfig } from '../../../providers/Config/index.js';
8
9
  import { useHierarchy } from '../../../providers/Hierarchy/index.js';
@@ -138,7 +139,12 @@ export const HierarchySidebarTab = t0 => {
138
139
  } = t11;
139
140
  const url = formatAdminURL({
140
141
  adminRoute,
141
- path: `/collections/${hierarchyCollectionSlug}/hierarchy?${resolvedParentFieldName}=${id}`
142
+ path: `/collections/${hierarchyCollectionSlug}${qs.stringify({
143
+ [resolvedParentFieldName]: id,
144
+ view: "hierarchy"
145
+ }, {
146
+ addQueryPrefix: true
147
+ })}`
142
148
  });
143
149
  startRouteTransition(() => {
144
150
  router.push(url);
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchySidebarTab.js","names":["c","_c","formatAdminURL","React","useCallback","useEffect","useRef","useState","useConfig","useHierarchy","useRouter","useSearchParams","useRouteTransition","useSidebarTabs","HydrateHierarchyProvider","HierarchySearch","HierarchyTree","HierarchySidebarTab","t0","$","baseFilter","collectionSpecificOptions","hierarchyCollectionSlug","icon","initialData","initialExpandedNodes","initialSelectedFilters","parentFieldName","selectedNodeId","selectedNodeIdFromServer","treeLimit","typeFieldName","useAsTitle","router","searchParams","startRouteTransition","config","t1","routes","t2","admin","adminRoute","isSearchActive","setIsSearchActive","t3","selectedFilters","setSelectedFiltersLocal","setSelectedFilters","setSelectedFiltersContext","treeRefreshKeys","sidebarTabs","resolvedParentFieldName","t4","get","currentParentParam","tabSlug","isActiveTab","activeTabSlug","t5","treeRefreshKey","prevTreeRefreshKeyRef","t6","t7","current","reloadTabContent","undefined","t8","JSON","stringify","baseFilterKey","t9","filters","handleFilterChange","t10","t11","id","url","path","push","refresh","handleNavigateToParent","_jsxs","_Fragment","children","_jsx","collectionSlug","expandedNodes","treeData","className","isActive","onActiveChange","onFilterChange","onSelect","filterByCollections","length","onNodeClick"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.tsx"],"sourcesContent":["'use client'\n\nimport type { SidebarTabClientProps } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { HierarchyInitialData } from './types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouter, useSearchParams } from '../../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../../providers/RouteTransition/index.js'\nimport { useSidebarTabs } from '../../../providers/SidebarTabs/index.js'\nimport { HydrateHierarchyProvider } from '../HydrateProvider/index.js'\nimport { HierarchySearch } from '../Search/index.js'\nimport { HierarchyTree } from './index.js'\n\nexport const HierarchySidebarTab: React.FC<\n {\n baseFilter?: Record<string, unknown>\n collectionSpecificOptions?: { label: string; value: string }[]\n hierarchyCollectionSlug: string\n icon?: React.ReactNode\n initialData?: HierarchyInitialData | null\n initialExpandedNodes?: (number | string)[]\n initialSelectedFilters?: string[]\n parentFieldName?: string\n selectedNodeId?: null | string\n treeLimit?: number\n typeFieldName?: string\n useAsTitle?: string\n } & SidebarTabClientProps\n> = ({\n baseFilter,\n collectionSpecificOptions,\n hierarchyCollectionSlug,\n icon,\n initialData,\n initialExpandedNodes,\n initialSelectedFilters,\n parentFieldName,\n selectedNodeId: selectedNodeIdFromServer,\n treeLimit,\n typeFieldName,\n useAsTitle,\n}) => {\n const router = useRouter()\n const searchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const [isSearchActive, setIsSearchActive] = useState(false)\n const [selectedFilters, setSelectedFiltersLocal] = useState<string[]>(\n initialSelectedFilters ?? [],\n )\n const { setSelectedFilters: setSelectedFiltersContext, treeRefreshKeys } = useHierarchy()\n const sidebarTabs = useSidebarTabs()\n\n const resolvedParentFieldName = parentFieldName ?? 'parent'\n const currentParentParam = searchParams.get(resolvedParentFieldName)\n\n // When refreshTree(slug) is called from the list view (e.g. after mutations), reload this tab.\n // Always reload regardless of active state so inactive tabs are fresh when switched to.\n // The render-tab server function runs with a fresh request that lacks the client's URL query,\n // so forward the current selected parent id — otherwise the reload can't tell which node is\n // being viewed and rebuilds the tree from preference state.\n const tabSlug = `hierarchy-${hierarchyCollectionSlug}`\n const isActiveTab = sidebarTabs?.activeTabSlug === tabSlug\n const treeRefreshKey = treeRefreshKeys.get(hierarchyCollectionSlug) ?? 0\n const prevTreeRefreshKeyRef = useRef(treeRefreshKey)\n useEffect(() => {\n if (prevTreeRefreshKeyRef.current !== treeRefreshKey) {\n prevTreeRefreshKeyRef.current = treeRefreshKey\n // Only forward the selected parent id when this tab is active. currentParentParam\n // reflects the global URL search params, so an inactive tab could otherwise pick up\n // another hierarchy collection's value if they share the same parentFieldName.\n sidebarTabs?.reloadTabContent(tabSlug, {\n searchParams:\n isActiveTab && currentParentParam\n ? { [resolvedParentFieldName]: currentParentParam }\n : undefined,\n })\n }\n }, [\n treeRefreshKey,\n sidebarTabs,\n tabSlug,\n isActiveTab,\n currentParentParam,\n resolvedParentFieldName,\n ])\n\n // Only highlight selected node when this tab is active\n const selectedNodeId = isActiveTab\n ? (currentParentParam ?? selectedNodeIdFromServer ?? undefined)\n : undefined\n\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n\n const handleFilterChange = useCallback(\n (filters: string[]) => {\n setSelectedFiltersLocal(filters)\n setSelectedFiltersContext(filters)\n },\n [setSelectedFiltersContext],\n )\n\n const handleNavigateToParent = useCallback(\n ({ id }: { id: number | string }) => {\n const url = formatAdminURL({\n adminRoute,\n path: `/collections/${hierarchyCollectionSlug}/hierarchy?${resolvedParentFieldName}=${id}`,\n })\n startRouteTransition(() => {\n router.push(url)\n router.refresh()\n })\n },\n [adminRoute, hierarchyCollectionSlug, resolvedParentFieldName, router, startRouteTransition],\n )\n return (\n <>\n <HydrateHierarchyProvider\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n expandedNodes={initialExpandedNodes}\n parentFieldName={parentFieldName}\n selectedFilters={initialSelectedFilters}\n treeData={initialData}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n />\n <div className=\"hierarchy-sidebar-tab\">\n <HierarchySearch\n collectionSlug={hierarchyCollectionSlug}\n collectionSpecificOptions={collectionSpecificOptions}\n isActive={isSearchActive}\n onActiveChange={setIsSearchActive}\n onFilterChange={handleFilterChange}\n onSelect={handleNavigateToParent}\n selectedFilters={selectedFilters}\n />\n {!isSearchActive && (\n <HierarchyTree\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n filterByCollections={selectedFilters.length > 0 ? selectedFilters : undefined}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n key={`${hierarchyCollectionSlug}-${baseFilterKey}`}\n onNodeClick={handleNavigateToParent}\n selectedNodeId={selectedNodeId}\n useAsTitle={useAsTitle}\n />\n )}\n </div>\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"HierarchySidebarTab.js","names":["c","_c","formatAdminURL","qs","React","useCallback","useEffect","useRef","useState","useConfig","useHierarchy","useRouter","useSearchParams","useRouteTransition","useSidebarTabs","HydrateHierarchyProvider","HierarchySearch","HierarchyTree","HierarchySidebarTab","t0","$","baseFilter","collectionSpecificOptions","hierarchyCollectionSlug","icon","initialData","initialExpandedNodes","initialSelectedFilters","parentFieldName","selectedNodeId","selectedNodeIdFromServer","treeLimit","typeFieldName","useAsTitle","router","searchParams","startRouteTransition","config","t1","routes","t2","admin","adminRoute","isSearchActive","setIsSearchActive","t3","selectedFilters","setSelectedFiltersLocal","setSelectedFilters","setSelectedFiltersContext","treeRefreshKeys","sidebarTabs","resolvedParentFieldName","t4","get","currentParentParam","tabSlug","isActiveTab","activeTabSlug","t5","treeRefreshKey","prevTreeRefreshKeyRef","t6","t7","current","reloadTabContent","undefined","t8","JSON","stringify","baseFilterKey","t9","filters","handleFilterChange","t10","t11","id","url","path","view","addQueryPrefix","push","refresh","handleNavigateToParent","_jsxs","_Fragment","children","_jsx","collectionSlug","expandedNodes","treeData","className","isActive","onActiveChange","onFilterChange","onSelect","filterByCollections","length","onNodeClick"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.tsx"],"sourcesContent":["'use client'\n\nimport type { SidebarTabClientProps } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { HierarchyInitialData } from './types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouter, useSearchParams } from '../../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../../providers/RouteTransition/index.js'\nimport { useSidebarTabs } from '../../../providers/SidebarTabs/index.js'\nimport { HydrateHierarchyProvider } from '../HydrateProvider/index.js'\nimport { HierarchySearch } from '../Search/index.js'\nimport { HierarchyTree } from './index.js'\n\nexport const HierarchySidebarTab: React.FC<\n {\n baseFilter?: Record<string, unknown>\n collectionSpecificOptions?: { label: string; value: string }[]\n hierarchyCollectionSlug: string\n icon?: React.ReactNode\n initialData?: HierarchyInitialData | null\n initialExpandedNodes?: (number | string)[]\n initialSelectedFilters?: string[]\n parentFieldName?: string\n selectedNodeId?: null | string\n treeLimit?: number\n typeFieldName?: string\n useAsTitle?: string\n } & SidebarTabClientProps\n> = ({\n baseFilter,\n collectionSpecificOptions,\n hierarchyCollectionSlug,\n icon,\n initialData,\n initialExpandedNodes,\n initialSelectedFilters,\n parentFieldName,\n selectedNodeId: selectedNodeIdFromServer,\n treeLimit,\n typeFieldName,\n useAsTitle,\n}) => {\n const router = useRouter()\n const searchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const [isSearchActive, setIsSearchActive] = useState(false)\n const [selectedFilters, setSelectedFiltersLocal] = useState<string[]>(\n initialSelectedFilters ?? [],\n )\n const { setSelectedFilters: setSelectedFiltersContext, treeRefreshKeys } = useHierarchy()\n const sidebarTabs = useSidebarTabs()\n\n const resolvedParentFieldName = parentFieldName ?? 'parent'\n const currentParentParam = searchParams.get(resolvedParentFieldName)\n\n // When refreshTree(slug) is called from the list view (e.g. after mutations), reload this tab.\n // Always reload regardless of active state so inactive tabs are fresh when switched to.\n // The render-tab server function runs with a fresh request that lacks the client's URL query,\n // so forward the current selected parent id — otherwise the reload can't tell which node is\n // being viewed and rebuilds the tree from preference state.\n const tabSlug = `hierarchy-${hierarchyCollectionSlug}`\n const isActiveTab = sidebarTabs?.activeTabSlug === tabSlug\n const treeRefreshKey = treeRefreshKeys.get(hierarchyCollectionSlug) ?? 0\n const prevTreeRefreshKeyRef = useRef(treeRefreshKey)\n useEffect(() => {\n if (prevTreeRefreshKeyRef.current !== treeRefreshKey) {\n prevTreeRefreshKeyRef.current = treeRefreshKey\n // Only forward the selected parent id when this tab is active. currentParentParam\n // reflects the global URL search params, so an inactive tab could otherwise pick up\n // another hierarchy collection's value if they share the same parentFieldName.\n sidebarTabs?.reloadTabContent(tabSlug, {\n searchParams:\n isActiveTab && currentParentParam\n ? { [resolvedParentFieldName]: currentParentParam }\n : undefined,\n })\n }\n }, [\n treeRefreshKey,\n sidebarTabs,\n tabSlug,\n isActiveTab,\n currentParentParam,\n resolvedParentFieldName,\n ])\n\n // Only highlight selected node when this tab is active\n const selectedNodeId = isActiveTab\n ? (currentParentParam ?? selectedNodeIdFromServer ?? undefined)\n : undefined\n\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n\n const handleFilterChange = useCallback(\n (filters: string[]) => {\n setSelectedFiltersLocal(filters)\n setSelectedFiltersContext(filters)\n },\n [setSelectedFiltersContext],\n )\n\n const handleNavigateToParent = useCallback(\n ({ id }: { id: number | string }) => {\n const url = formatAdminURL({\n adminRoute,\n path: `/collections/${hierarchyCollectionSlug}${qs.stringify(\n { [resolvedParentFieldName]: id, view: 'hierarchy' },\n { addQueryPrefix: true },\n )}`,\n })\n startRouteTransition(() => {\n router.push(url)\n router.refresh()\n })\n },\n [adminRoute, hierarchyCollectionSlug, resolvedParentFieldName, router, startRouteTransition],\n )\n return (\n <>\n <HydrateHierarchyProvider\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n expandedNodes={initialExpandedNodes}\n parentFieldName={parentFieldName}\n selectedFilters={initialSelectedFilters}\n treeData={initialData}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n />\n <div className=\"hierarchy-sidebar-tab\">\n <HierarchySearch\n collectionSlug={hierarchyCollectionSlug}\n collectionSpecificOptions={collectionSpecificOptions}\n isActive={isSearchActive}\n onActiveChange={setIsSearchActive}\n onFilterChange={handleFilterChange}\n onSelect={handleNavigateToParent}\n selectedFilters={selectedFilters}\n />\n {!isSearchActive && (\n <HierarchyTree\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n filterByCollections={selectedFilters.length > 0 ? selectedFilters : undefined}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n key={`${hierarchyCollectionSlug}-${baseFilterKey}`}\n onNodeClick={handleNavigateToParent}\n selectedNodeId={selectedNodeId}\n useAsTitle={useAsTitle}\n />\n )}\n </div>\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -15,8 +15,9 @@ export declare const TreeFocusProvider: React.FC<{
15
15
  children: React.ReactNode;
16
16
  }>;
17
17
  export declare const useTreeFocus: () => TreeFocusContextType;
18
- export declare const useFocusableItem: ({ id, type, ref, }: {
18
+ export declare const useFocusableItem: ({ id, type, isInitialTabStop, ref, }: {
19
19
  id: string;
20
+ isInitialTabStop?: boolean;
20
21
  ref: React.RefObject<HTMLElement>;
21
22
  type: 'load-more' | 'node';
22
23
  }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"TreeFocusContext.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/TreeFocusContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAY9B,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACjC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAA;CAC3B,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;IACxB,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC7C,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;IAC3C,YAAY,EAAE,CAAC,EAAE,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACzC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACrC,CAAA;AAID,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAgFrE,CAAA;AAED,eAAO,MAAM,YAAY,4BAMxB,CAAA;AAED,eAAO,MAAM,gBAAgB,uBAI1B;IACD,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACjC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAA;CAC3B;;;;CAsCA,CAAA"}
1
+ {"version":3,"file":"TreeFocusContext.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/TreeFocusContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAY9B,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACjC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAA;CAC3B,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;IACxB,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC7C,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;IAC3C,YAAY,EAAE,CAAC,EAAE,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACzC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACrC,CAAA;AAID,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAiFrE,CAAA;AAED,eAAO,MAAM,YAAY,4BAMxB,CAAA;AAED,eAAO,MAAM,gBAAgB,yCAK1B;IACD,EAAE,EAAE,MAAM,CAAA;IACV,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACjC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAA;CAC3B;;;;CAoCA,CAAA"}
@@ -23,6 +23,7 @@ export const TreeFocusProvider = ({
23
23
  }, []);
24
24
  const unregisterItem = useCallback(id_0 => {
25
25
  itemsRef.current.delete(id_0);
26
+ setFocusedIdState(focusedId_0 => focusedId_0 === id_0 ? null : focusedId_0);
26
27
  }, []);
27
28
  const moveFocus = useCallback(direction => {
28
29
  const items = Array.from(itemsRef.current.values());
@@ -81,8 +82,10 @@ export const useFocusableItem = t0 => {
81
82
  const {
82
83
  id,
83
84
  type,
85
+ isInitialTabStop: t1,
84
86
  ref
85
87
  } = t0;
88
+ const isInitialTabStop = t1 === undefined ? false : t1;
86
89
  const {
87
90
  focusedId,
88
91
  registerItem,
@@ -90,12 +93,11 @@ export const useFocusableItem = t0 => {
90
93
  unregisterItem
91
94
  } = useTreeFocus();
92
95
  const isFocused = focusedId === id;
93
- const isFirstItemEver = focusedId === null;
94
96
  const wasFocusedRef = useRef(false);
95
- let t1;
96
97
  let t2;
98
+ let t3;
97
99
  if ($[0] !== id || $[1] !== ref || $[2] !== registerItem || $[3] !== type || $[4] !== unregisterItem) {
98
- t1 = () => {
100
+ t2 = () => {
99
101
  registerItem({
100
102
  id,
101
103
  type,
@@ -105,54 +107,54 @@ export const useFocusableItem = t0 => {
105
107
  unregisterItem(id);
106
108
  };
107
109
  };
108
- t2 = [id, ref, type, registerItem, unregisterItem];
110
+ t3 = [id, ref, type, registerItem, unregisterItem];
109
111
  $[0] = id;
110
112
  $[1] = ref;
111
113
  $[2] = registerItem;
112
114
  $[3] = type;
113
115
  $[4] = unregisterItem;
114
- $[5] = t1;
115
- $[6] = t2;
116
+ $[5] = t2;
117
+ $[6] = t3;
116
118
  } else {
117
- t1 = $[5];
118
- t2 = $[6];
119
+ t2 = $[5];
120
+ t3 = $[6];
119
121
  }
120
- useEffect(t1, t2);
121
- let t3;
122
+ useEffect(t2, t3);
122
123
  let t4;
124
+ let t5;
123
125
  if ($[7] !== isFocused || $[8] !== ref) {
124
- t3 = () => {
126
+ t4 = () => {
125
127
  if (isFocused && !wasFocusedRef.current && ref.current && document.activeElement !== ref.current) {
126
128
  ref.current.focus();
127
129
  }
128
130
  wasFocusedRef.current = isFocused;
129
131
  };
130
- t4 = [isFocused, ref];
132
+ t5 = [isFocused, ref];
131
133
  $[7] = isFocused;
132
134
  $[8] = ref;
133
- $[9] = t3;
134
- $[10] = t4;
135
+ $[9] = t4;
136
+ $[10] = t5;
135
137
  } else {
136
- t3 = $[9];
137
- t4 = $[10];
138
+ t4 = $[9];
139
+ t5 = $[10];
138
140
  }
139
- useLayoutEffect(t3, t4);
140
- let t5;
141
+ useLayoutEffect(t4, t5);
142
+ let t6;
141
143
  if ($[11] !== id || $[12] !== setFocusedId) {
142
- t5 = () => {
144
+ t6 = () => {
143
145
  setFocusedId(id);
144
146
  };
145
147
  $[11] = id;
146
148
  $[12] = setFocusedId;
147
- $[13] = t5;
149
+ $[13] = t6;
148
150
  } else {
149
- t5 = $[13];
151
+ t6 = $[13];
150
152
  }
151
- const handleFocus = t5;
152
- const tabIndex = isFocused ? 0 : isFirstItemEver ? 0 : -1;
153
- let t6;
153
+ const handleFocus = t6;
154
+ const tabIndex = isFocused || focusedId === null && isInitialTabStop ? 0 : -1;
155
+ let t7;
154
156
  if ($[14] !== handleFocus || $[15] !== isFocused || $[16] !== tabIndex) {
155
- t6 = {
157
+ t7 = {
156
158
  handleFocus,
157
159
  isFocused,
158
160
  tabIndex
@@ -160,10 +162,10 @@ export const useFocusableItem = t0 => {
160
162
  $[14] = handleFocus;
161
163
  $[15] = isFocused;
162
164
  $[16] = tabIndex;
163
- $[17] = t6;
165
+ $[17] = t7;
164
166
  } else {
165
- t6 = $[17];
167
+ t7 = $[17];
166
168
  }
167
- return t6;
169
+ return t7;
168
170
  };
169
171
  //# sourceMappingURL=TreeFocusContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeFocusContext.js","names":["c","_c","createContext","use","useCallback","useEffect","useLayoutEffect","useRef","useState","TreeFocusContext","undefined","TreeFocusProvider","children","focusedId","setFocusedIdState","itemsRef","Map","setFocusedId","id","item","current","get","ref","document","activeElement","focus","registerItem","set","unregisterItem","delete","moveFocus","direction","items","Array","from","values","length","sortedItems","filter","sort","a","b","aElement","bElement","position","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","currentIndex","findIndex","nextIndex","Math","min","max","nextItem","_jsx","value","useTreeFocus","context","Error","useFocusableItem","t0","$","type","isFocused","isFirstItemEver","wasFocusedRef","t1","t2","t3","t4","t5","handleFocus","tabIndex","t6"],"sources":["../../../../src/elements/Hierarchy/Tree/TreeFocusContext.tsx"],"sourcesContent":["'use client'\n\nimport type React from 'react'\n\nimport {\n createContext,\n use,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\n\ntype FocusableItem = {\n id: string\n ref: React.RefObject<HTMLElement>\n type: 'load-more' | 'node'\n}\n\ntype TreeFocusContextType = {\n focusedId: null | string\n moveFocus: (direction: 'down' | 'up') => void\n registerItem: (item: FocusableItem) => void\n setFocusedId: (id: null | string) => void\n unregisterItem: (id: string) => void\n}\n\nconst TreeFocusContext = createContext<TreeFocusContextType | undefined>(undefined)\n\nexport const TreeFocusProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const [focusedId, setFocusedIdState] = useState<null | string>(null)\n const itemsRef = useRef<Map<string, FocusableItem>>(new Map())\n\n const setFocusedId = useCallback((id: null | string) => {\n setFocusedIdState(id)\n if (id) {\n const item = itemsRef.current.get(id)\n if (item?.ref.current && document.activeElement !== item.ref.current) {\n item.ref.current.focus()\n }\n }\n }, [])\n\n const registerItem = useCallback((item: FocusableItem) => {\n itemsRef.current.set(item.id, item)\n }, [])\n\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current.delete(id)\n }, [])\n\n const moveFocus = useCallback(\n (direction: 'down' | 'up') => {\n const items = Array.from(itemsRef.current.values())\n if (items.length === 0) {\n return\n }\n\n // Sort items by their DOM position to ensure correct navigation order\n const sortedItems = items\n .filter((item) => item.ref.current)\n .sort((a, b) => {\n const aElement = a.ref.current\n const bElement = b.ref.current\n if (!aElement || !bElement) {\n return 0\n }\n\n const position = aElement.compareDocumentPosition(bElement)\n if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1\n }\n return 0\n })\n\n const currentIndex = focusedId ? sortedItems.findIndex((item) => item.id === focusedId) : -1\n\n let nextIndex: number\n if (direction === 'down') {\n nextIndex = currentIndex === -1 ? 0 : Math.min(currentIndex + 1, sortedItems.length - 1)\n } else {\n nextIndex = Math.max(currentIndex - 1, 0)\n }\n\n const nextItem = sortedItems[nextIndex]\n if (nextItem && nextItem.ref.current) {\n nextItem.ref.current.focus()\n setFocusedId(nextItem.id)\n }\n },\n [focusedId, setFocusedId],\n )\n\n return (\n <TreeFocusContext\n value={{\n focusedId,\n moveFocus,\n registerItem,\n setFocusedId,\n unregisterItem,\n }}\n >\n {children}\n </TreeFocusContext>\n )\n}\n\nexport const useTreeFocus = () => {\n const context = use(TreeFocusContext)\n if (!context) {\n throw new Error('useTreeFocus must be used within TreeFocusProvider')\n }\n return context\n}\n\nexport const useFocusableItem = ({\n id,\n type,\n ref,\n}: {\n id: string\n ref: React.RefObject<HTMLElement>\n type: 'load-more' | 'node'\n}) => {\n const { focusedId, registerItem, setFocusedId, unregisterItem } = useTreeFocus()\n const isFocused = focusedId === id\n const isFirstItemEver = focusedId === null\n const wasFocusedRef = useRef(false)\n\n useEffect(() => {\n registerItem({ id, type, ref })\n return () => {\n unregisterItem(id)\n }\n }, [id, ref, type, registerItem, unregisterItem])\n\n useLayoutEffect(() => {\n if (\n isFocused &&\n !wasFocusedRef.current &&\n ref.current &&\n document.activeElement !== ref.current\n ) {\n ref.current.focus()\n }\n\n wasFocusedRef.current = isFocused\n }, [isFocused, ref])\n\n const handleFocus = useCallback(() => {\n setFocusedId(id)\n }, [id, setFocusedId])\n\n // Roving tabindex: focused item gets 0, first item (when nothing focused) gets 0, all others get -1\n const tabIndex = isFocused ? 0 : isFirstItemEver ? 0 : -1\n\n return {\n handleFocus,\n isFocused,\n tabIndex,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TreeFocusContext.js","names":["c","_c","createContext","use","useCallback","useEffect","useLayoutEffect","useRef","useState","TreeFocusContext","undefined","TreeFocusProvider","children","focusedId","setFocusedIdState","itemsRef","Map","setFocusedId","id","item","current","get","ref","document","activeElement","focus","registerItem","set","unregisterItem","delete","moveFocus","direction","items","Array","from","values","length","sortedItems","filter","sort","a","b","aElement","bElement","position","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","currentIndex","findIndex","nextIndex","Math","min","max","nextItem","_jsx","value","useTreeFocus","context","Error","useFocusableItem","t0","$","type","isInitialTabStop","t1","isFocused","wasFocusedRef","t2","t3","t4","t5","t6","handleFocus","tabIndex","t7"],"sources":["../../../../src/elements/Hierarchy/Tree/TreeFocusContext.tsx"],"sourcesContent":["'use client'\n\nimport type React from 'react'\n\nimport {\n createContext,\n use,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\n\ntype FocusableItem = {\n id: string\n ref: React.RefObject<HTMLElement>\n type: 'load-more' | 'node'\n}\n\ntype TreeFocusContextType = {\n focusedId: null | string\n moveFocus: (direction: 'down' | 'up') => void\n registerItem: (item: FocusableItem) => void\n setFocusedId: (id: null | string) => void\n unregisterItem: (id: string) => void\n}\n\nconst TreeFocusContext = createContext<TreeFocusContextType | undefined>(undefined)\n\nexport const TreeFocusProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const [focusedId, setFocusedIdState] = useState<null | string>(null)\n const itemsRef = useRef<Map<string, FocusableItem>>(new Map())\n\n const setFocusedId = useCallback((id: null | string) => {\n setFocusedIdState(id)\n if (id) {\n const item = itemsRef.current.get(id)\n if (item?.ref.current && document.activeElement !== item.ref.current) {\n item.ref.current.focus()\n }\n }\n }, [])\n\n const registerItem = useCallback((item: FocusableItem) => {\n itemsRef.current.set(item.id, item)\n }, [])\n\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current.delete(id)\n setFocusedIdState((focusedId) => (focusedId === id ? null : focusedId))\n }, [])\n\n const moveFocus = useCallback(\n (direction: 'down' | 'up') => {\n const items = Array.from(itemsRef.current.values())\n if (items.length === 0) {\n return\n }\n\n // Sort items by their DOM position to ensure correct navigation order\n const sortedItems = items\n .filter((item) => item.ref.current)\n .sort((a, b) => {\n const aElement = a.ref.current\n const bElement = b.ref.current\n if (!aElement || !bElement) {\n return 0\n }\n\n const position = aElement.compareDocumentPosition(bElement)\n if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1\n }\n return 0\n })\n\n const currentIndex = focusedId ? sortedItems.findIndex((item) => item.id === focusedId) : -1\n\n let nextIndex: number\n if (direction === 'down') {\n nextIndex = currentIndex === -1 ? 0 : Math.min(currentIndex + 1, sortedItems.length - 1)\n } else {\n nextIndex = Math.max(currentIndex - 1, 0)\n }\n\n const nextItem = sortedItems[nextIndex]\n if (nextItem && nextItem.ref.current) {\n nextItem.ref.current.focus()\n setFocusedId(nextItem.id)\n }\n },\n [focusedId, setFocusedId],\n )\n\n return (\n <TreeFocusContext\n value={{\n focusedId,\n moveFocus,\n registerItem,\n setFocusedId,\n unregisterItem,\n }}\n >\n {children}\n </TreeFocusContext>\n )\n}\n\nexport const useTreeFocus = () => {\n const context = use(TreeFocusContext)\n if (!context) {\n throw new Error('useTreeFocus must be used within TreeFocusProvider')\n }\n return context\n}\n\nexport const useFocusableItem = ({\n id,\n type,\n isInitialTabStop = false,\n ref,\n}: {\n id: string\n isInitialTabStop?: boolean\n ref: React.RefObject<HTMLElement>\n type: 'load-more' | 'node'\n}) => {\n const { focusedId, registerItem, setFocusedId, unregisterItem } = useTreeFocus()\n const isFocused = focusedId === id\n const wasFocusedRef = useRef(false)\n\n useEffect(() => {\n registerItem({ id, type, ref })\n return () => {\n unregisterItem(id)\n }\n }, [id, ref, type, registerItem, unregisterItem])\n\n useLayoutEffect(() => {\n if (\n isFocused &&\n !wasFocusedRef.current &&\n ref.current &&\n document.activeElement !== ref.current\n ) {\n ref.current.focus()\n }\n\n wasFocusedRef.current = isFocused\n }, [isFocused, ref])\n\n const handleFocus = useCallback(() => {\n setFocusedId(id)\n }, [id, setFocusedId])\n\n const tabIndex = isFocused || (focusedId === null && isInitialTabStop) ? 0 : -1\n\n return {\n handleFocus,\n isFocused,\n tabIndex,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/Hierarchy/Tree/TreeNode/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAQhD,OAAO,aAAa,CAAA;AAqBpB,eAAO,MAAM,QAAQ,0NAkBlB,aAAa,sBAgNf,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/Hierarchy/Tree/TreeNode/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqC,MAAM,OAAO,CAAA;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAQhD,OAAO,aAAa,CAAA;AAqBpB,eAAO,MAAM,QAAQ,0NAkBlB,aAAa,sBAqNf,CAAA"}