@payloadcms/ui 4.0.0-internal.4804abd → 4.0.0-internal.4a8e202

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 (754) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/css/app.css +121 -0
  3. package/dist/css/forms.css +0 -6
  4. package/dist/css/spacing.css +11 -3
  5. package/dist/css/z-index.css +10 -0
  6. package/dist/elements/APIKeyInput/index.css +4 -4
  7. package/dist/elements/AddNewRelation/index.css +27 -28
  8. package/dist/elements/AnimateHeight/usePatchAnimateHeight.d.ts.map +1 -1
  9. package/dist/elements/AppHeader/index.css +2 -18
  10. package/dist/elements/AppHeader/index.d.ts +2 -1
  11. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  12. package/dist/elements/AppHeader/index.js +10 -8
  13. package/dist/elements/AppHeader/index.js.map +1 -1
  14. package/dist/elements/ArrayAction/index.d.ts +2 -0
  15. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  16. package/dist/elements/ArrayAction/index.js +65 -24
  17. package/dist/elements/ArrayAction/index.js.map +1 -1
  18. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
  19. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  20. package/dist/elements/BulkUpload/FileSidebar/index.css +4 -0
  21. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
  22. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  23. package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
  24. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  25. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  26. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  27. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  28. package/dist/elements/Button/index.d.ts.map +1 -1
  29. package/dist/elements/ClipboardAction/ClipboardActionLabel.d.ts.map +1 -1
  30. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
  31. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
  32. package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
  33. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
  34. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
  35. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
  36. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  37. package/dist/elements/ClipboardAction/index.js +17 -1
  38. package/dist/elements/ClipboardAction/index.js.map +1 -1
  39. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
  40. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
  41. package/dist/elements/ClipboardAction/types.d.ts +3 -0
  42. package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
  43. package/dist/elements/ClipboardAction/types.js.map +1 -1
  44. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
  45. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
  46. package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
  47. package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
  48. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  49. package/dist/elements/CodeEditor/index.css +5 -5
  50. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  51. package/dist/elements/ColumnSelection/Popup.js +6 -6
  52. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  53. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +10 -0
  54. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +1 -0
  55. package/dist/elements/ColumnSelection/matchesColumnSearch.js +21 -0
  56. package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +1 -0
  57. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js +87 -0
  58. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +1 -0
  59. package/dist/elements/CommandPalette/index.css +0 -7
  60. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  61. package/dist/elements/CreateDocumentButton/index.js +4 -1
  62. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  63. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  64. package/dist/elements/DatePicker/DatePicker.js +1 -0
  65. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  66. package/dist/elements/DatePicker/getFormattedLocale.d.ts.map +1 -1
  67. package/dist/elements/DatePicker/index.css +1 -1
  68. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  69. package/dist/elements/DeleteDocument/index.js +16 -1
  70. package/dist/elements/DeleteDocument/index.js.map +1 -1
  71. package/dist/elements/Dialog/DialogTitle/index.d.ts.map +1 -1
  72. package/dist/elements/DocumentControls/index.css +0 -2
  73. package/dist/elements/DocumentControls/index.d.ts +2 -2
  74. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  75. package/dist/elements/DocumentControls/index.js.map +1 -1
  76. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts +2 -2
  77. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts.map +1 -1
  78. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  79. package/dist/elements/DocumentFields/index.css +8 -0
  80. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  81. package/dist/elements/DocumentLocked/index.d.ts +2 -2
  82. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  83. package/dist/elements/DocumentLocked/index.js.map +1 -1
  84. package/dist/elements/DraggableSortable/useDraggableSortable/index.d.ts.map +1 -1
  85. package/dist/elements/Drawer/index.d.ts.map +1 -1
  86. package/dist/elements/Drawer/index.js +1 -0
  87. package/dist/elements/Drawer/index.js.map +1 -1
  88. package/dist/elements/Drawer/useDrawerSlug.d.ts.map +1 -1
  89. package/dist/elements/DrawerActionHeader/index.d.ts.map +1 -1
  90. package/dist/elements/EditMany/DrawerContent.js +2 -2
  91. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  92. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  93. package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
  94. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  95. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
  96. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
  97. package/dist/elements/FileDetails/StaticFileDetails/index.css +8 -9
  98. package/dist/elements/FileManager/FilePreview/index.css +3 -3
  99. package/dist/elements/FileManager/index.css +36 -23
  100. package/dist/elements/FileManager/index.d.ts +1 -1
  101. package/dist/elements/FileManager/index.d.ts.map +1 -1
  102. package/dist/elements/FileManager/index.js +15 -4
  103. package/dist/elements/FileManager/index.js.map +1 -1
  104. package/dist/elements/HTMLDiff/diff/index.d.ts.map +1 -1
  105. package/dist/elements/HTMLDiff/index.d.ts.map +1 -1
  106. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +0 -1
  107. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  108. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  109. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts.map +1 -1
  110. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  111. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  112. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
  113. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  114. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  115. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
  116. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  117. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts +1 -1
  118. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
  119. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +38 -14
  120. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  121. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +37 -31
  122. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  123. package/dist/elements/Hierarchy/Tree/index.css +1 -1
  124. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  125. package/dist/elements/Hierarchy/Tree/index.js +18 -5
  126. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  127. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  128. package/dist/elements/InputStepper/index.css +0 -1
  129. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
  130. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  131. package/dist/elements/ListControls/index.js +1 -1
  132. package/dist/elements/ListControls/index.js.map +1 -1
  133. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  134. package/dist/elements/LoadingOverlay/reducer.d.ts.map +1 -1
  135. package/dist/elements/Locked/index.css +0 -5
  136. package/dist/elements/Locked/index.d.ts +2 -2
  137. package/dist/elements/Locked/index.d.ts.map +1 -1
  138. package/dist/elements/Locked/index.js +38 -19
  139. package/dist/elements/Locked/index.js.map +1 -1
  140. package/dist/elements/MiniCarousel/index.css +39 -37
  141. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  142. package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
  143. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  144. package/dist/elements/Nav/SidebarTabs/index.css +0 -5
  145. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
  146. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
  147. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
  148. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
  149. package/dist/elements/Nav/index.css +0 -5
  150. package/dist/elements/NavGroup/index.css +0 -1
  151. package/dist/elements/Pagination/index.css +5 -0
  152. package/dist/elements/Pagination/index.d.ts.map +1 -1
  153. package/dist/elements/Pagination/index.js +21 -21
  154. package/dist/elements/Pagination/index.js.map +1 -1
  155. package/dist/elements/PreviewButton/index.d.ts +1 -2
  156. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  157. package/dist/elements/PreviewButton/index.js +11 -5
  158. package/dist/elements/PreviewButton/index.js.map +1 -1
  159. package/dist/elements/PreviewSizes/index.css +8 -9
  160. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  161. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts.map +1 -1
  162. package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
  163. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts +7 -0
  164. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts.map +1 -0
  165. package/dist/elements/ReactSelect/DefaultMenuPortal.js +120 -0
  166. package/dist/elements/ReactSelect/DefaultMenuPortal.js.map +1 -0
  167. package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
  168. package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
  169. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts.map +1 -1
  170. package/dist/elements/ReactSelect/getMenuListStyles.d.ts +1 -1
  171. package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -1
  172. package/dist/elements/ReactSelect/getMenuListStyles.js +13 -5
  173. package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -1
  174. package/dist/elements/ReactSelect/getMenuStyles.d.ts +10 -0
  175. package/dist/elements/ReactSelect/getMenuStyles.d.ts.map +1 -0
  176. package/dist/elements/ReactSelect/getMenuStyles.js +21 -0
  177. package/dist/elements/ReactSelect/getMenuStyles.js.map +1 -0
  178. package/dist/elements/ReactSelect/index.css +8 -4
  179. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  180. package/dist/elements/ReactSelect/index.js +24 -101
  181. package/dist/elements/ReactSelect/index.js.map +1 -1
  182. package/dist/elements/ReactSelect/types.d.ts +1 -2
  183. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  184. package/dist/elements/ReactSelect/types.js.map +1 -1
  185. package/dist/elements/RelationshipTable/AddNewButton.d.ts +2 -2
  186. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  187. package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
  188. package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
  189. package/dist/elements/RelationshipTable/Pagination.js +27 -77
  190. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  191. package/dist/elements/RelationshipTable/index.css +0 -2
  192. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  193. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  194. package/dist/elements/RelationshipTable/index.js +36 -3
  195. package/dist/elements/RelationshipTable/index.js.map +1 -1
  196. package/dist/elements/RenderTitle/index.css +4 -0
  197. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  198. package/dist/elements/RenderTitle/index.js +18 -13
  199. package/dist/elements/RenderTitle/index.js.map +1 -1
  200. package/dist/elements/Search/ListSearchFilter/index.d.ts.map +1 -1
  201. package/dist/elements/Search/ListSearchFilter/index.js +1 -0
  202. package/dist/elements/Search/ListSearchFilter/index.js.map +1 -1
  203. package/dist/elements/Search/SearchInput/index.d.ts +2 -0
  204. package/dist/elements/Search/SearchInput/index.d.ts.map +1 -1
  205. package/dist/elements/Search/SearchInput/index.js +21 -18
  206. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  207. package/dist/elements/SelectAll/index.css +3 -1
  208. package/dist/elements/SelectRow/index.d.ts +5 -4
  209. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  210. package/dist/elements/SelectRow/index.js +10 -7
  211. package/dist/elements/SelectRow/index.js.map +1 -1
  212. package/dist/elements/SidebarRow/index.css +0 -2
  213. package/dist/elements/SidebarToggle/index.css +0 -17
  214. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  215. package/dist/elements/SortColumn/index.js +42 -38
  216. package/dist/elements/SortColumn/index.js.map +1 -1
  217. package/dist/elements/Table/DefaultCell/fields/index.d.ts +1 -1
  218. package/dist/elements/Table/DefaultCell/fields/index.d.ts.map +1 -1
  219. package/dist/elements/Table/OrderableRow.d.ts +3 -1
  220. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  221. package/dist/elements/Table/OrderableRow.js +17 -1
  222. package/dist/elements/Table/OrderableRow.js.map +1 -1
  223. package/dist/elements/Table/OrderableRowDragPreview.d.ts.map +1 -1
  224. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  225. package/dist/elements/Table/OrderableTable.js +19 -2
  226. package/dist/elements/Table/OrderableTable.js.map +1 -1
  227. package/dist/elements/Table/index.css +19 -0
  228. package/dist/elements/TableSection/index.css +0 -1
  229. package/dist/elements/Tabs/index.d.ts.map +1 -1
  230. package/dist/elements/Thumbnail/createThumbnail.d.ts.map +1 -1
  231. package/dist/elements/Thumbnail/index.d.ts +1 -1
  232. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  233. package/dist/elements/Thumbnail/index.js.map +1 -1
  234. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  235. package/dist/elements/TimezonePicker/index.js +5 -1
  236. package/dist/elements/TimezonePicker/index.js.map +1 -1
  237. package/dist/elements/Tooltip/index.css +15 -34
  238. package/dist/elements/Tooltip/index.d.ts +11 -3
  239. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  240. package/dist/elements/Tooltip/index.js +151 -85
  241. package/dist/elements/Tooltip/index.js.map +1 -1
  242. package/dist/elements/Upload/index.css +0 -5
  243. package/dist/elements/Upload/index.d.ts.map +1 -1
  244. package/dist/elements/UserMenu/SubMenuHeader/index.d.ts.map +1 -1
  245. package/dist/elements/UserMenu/SubMenuHeader/index.js +8 -9
  246. package/dist/elements/UserMenu/SubMenuHeader/index.js.map +1 -1
  247. package/dist/elements/UserMenu/index.css +26 -1
  248. package/dist/elements/UserMenu/index.d.ts +1 -0
  249. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  250. package/dist/elements/UserMenu/index.js +2 -1
  251. package/dist/elements/UserMenu/index.js.map +1 -1
  252. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.d.ts.map +1 -1
  253. package/dist/elements/WhereBuilder/Condition/Select/formatOptions.d.ts.map +1 -1
  254. package/dist/elements/WhereBuilder/Condition/validOperators.d.ts.map +1 -1
  255. package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
  256. package/dist/exports/client/index.d.ts +4 -1
  257. package/dist/exports/client/index.d.ts.map +1 -1
  258. package/dist/exports/client/index.js +1 -1
  259. package/dist/exports/client/index.js.map +3 -3
  260. package/dist/exports/layouts.d.ts +1 -0
  261. package/dist/exports/layouts.d.ts.map +1 -1
  262. package/dist/exports/layouts.js +1 -0
  263. package/dist/exports/layouts.js.map +1 -1
  264. package/dist/exports/rsc/index.d.ts +2 -0
  265. package/dist/exports/rsc/index.d.ts.map +1 -1
  266. package/dist/exports/rsc/index.js +2 -0
  267. package/dist/exports/rsc/index.js.map +1 -1
  268. package/dist/exports/shared/index.d.ts +1 -0
  269. package/dist/exports/shared/index.d.ts.map +1 -1
  270. package/dist/exports/shared/index.js +2 -2
  271. package/dist/exports/shared/index.js.map +4 -4
  272. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  273. package/dist/fields/Array/ArrayRow.js +97 -160
  274. package/dist/fields/Array/ArrayRow.js.map +1 -1
  275. package/dist/fields/Array/index.d.ts +1 -1
  276. package/dist/fields/Array/index.d.ts.map +1 -1
  277. package/dist/fields/Array/index.js +7 -4
  278. package/dist/fields/Array/index.js.map +1 -1
  279. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  280. package/dist/fields/Blocks/BlockRow.js +134 -195
  281. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  282. package/dist/fields/Blocks/RowActions.d.ts +2 -0
  283. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  284. package/dist/fields/Blocks/RowActions.js +23 -20
  285. package/dist/fields/Blocks/RowActions.js.map +1 -1
  286. package/dist/fields/Blocks/index.d.ts +1 -1
  287. package/dist/fields/Blocks/index.d.ts.map +1 -1
  288. package/dist/fields/Blocks/index.js +9 -6
  289. package/dist/fields/Blocks/index.js.map +1 -1
  290. package/dist/fields/Checkbox/Input.d.ts +2 -0
  291. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  292. package/dist/fields/Checkbox/Input.js +32 -26
  293. package/dist/fields/Checkbox/Input.js.map +1 -1
  294. package/dist/fields/Checkbox/index.css +37 -73
  295. package/dist/fields/Checkbox/index.d.ts +1 -1
  296. package/dist/fields/Code/index.css +1 -1
  297. package/dist/fields/Code/index.d.ts +2 -2
  298. package/dist/fields/Collapsible/index.d.ts +1 -1
  299. package/dist/fields/DateTime/index.d.ts +1 -1
  300. package/dist/fields/Email/index.d.ts +1 -1
  301. package/dist/fields/FieldError/index.css +0 -9
  302. package/dist/fields/FieldError/index.d.ts.map +1 -1
  303. package/dist/fields/FieldError/index.js +19 -9
  304. package/dist/fields/FieldError/index.js.map +1 -1
  305. package/dist/fields/Group/index.css +1 -7
  306. package/dist/fields/Group/index.d.ts +2 -2
  307. package/dist/fields/JSON/index.d.ts +1 -1
  308. package/dist/fields/Join/index.css +9 -0
  309. package/dist/fields/Join/index.d.ts +1 -1
  310. package/dist/fields/Join/index.d.ts.map +1 -1
  311. package/dist/fields/Join/index.js +13 -9
  312. package/dist/fields/Join/index.js.map +1 -1
  313. package/dist/fields/Number/index.d.ts +1 -1
  314. package/dist/fields/Password/types.d.ts +3 -3
  315. package/dist/fields/Password/types.d.ts.map +1 -1
  316. package/dist/fields/Password/types.js.map +1 -1
  317. package/dist/fields/Point/index.d.ts +1 -1
  318. package/dist/fields/RadioGroup/index.css +0 -7
  319. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  320. package/dist/fields/Relationship/Input.js +32 -14
  321. package/dist/fields/Relationship/Input.js.map +1 -1
  322. package/dist/fields/Relationship/findOptionsByValue.d.ts.map +1 -1
  323. package/dist/fields/Relationship/index.d.ts +1 -1
  324. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  325. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
  326. package/dist/fields/Row/index.d.ts +1 -1
  327. package/dist/fields/Select/index.d.ts +1 -1
  328. package/dist/fields/Select/index.d.ts.map +1 -1
  329. package/dist/fields/Slug/index.css +0 -1
  330. package/dist/fields/Slug/index.d.ts +7 -5
  331. package/dist/fields/Slug/index.d.ts.map +1 -1
  332. package/dist/fields/Slug/index.js +79 -113
  333. package/dist/fields/Slug/index.js.map +1 -1
  334. package/dist/fields/Tabs/index.d.ts +1 -1
  335. package/dist/fields/Text/index.d.ts +1 -1
  336. package/dist/fields/Text/types.d.ts +2 -2
  337. package/dist/fields/Text/types.d.ts.map +1 -1
  338. package/dist/fields/Text/types.js.map +1 -1
  339. package/dist/fields/Textarea/index.d.ts +1 -1
  340. package/dist/fields/Upload/index.css +19 -4
  341. package/dist/fields/index.d.ts.map +1 -1
  342. package/dist/fields/index.js +2 -0
  343. package/dist/fields/index.js.map +1 -1
  344. package/dist/fields/mergeFieldStyles.d.ts +1 -1
  345. package/dist/fields/mergeFieldStyles.d.ts.map +1 -1
  346. package/dist/forms/Form/context.d.ts.map +1 -1
  347. package/dist/forms/Form/createNestedClientFieldPath.d.ts.map +1 -1
  348. package/dist/forms/Form/errorMessages.d.ts.map +1 -1
  349. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  350. package/dist/forms/Form/fieldReducer.js +3 -1
  351. package/dist/forms/Form/fieldReducer.js.map +1 -1
  352. package/dist/forms/Form/index.d.ts.map +1 -1
  353. package/dist/forms/Form/index.js +9 -15
  354. package/dist/forms/Form/index.js.map +1 -1
  355. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  356. package/dist/forms/Form/reduceToSerializableFields.d.ts.map +1 -1
  357. package/dist/forms/Form/rowHelpers.d.ts.map +1 -1
  358. package/dist/forms/Form/rows.d.ts.map +1 -1
  359. package/dist/forms/Form/types.d.ts +3 -3
  360. package/dist/forms/Form/types.d.ts.map +1 -1
  361. package/dist/forms/Form/types.js.map +1 -1
  362. package/dist/forms/RenderFields/RenderField.d.ts +1 -1
  363. package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
  364. package/dist/forms/RenderFields/RenderField.js +10 -0
  365. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  366. package/dist/forms/RenderFields/index.css +17 -3
  367. package/dist/forms/WatchChildErrors/buildPathSegments.d.ts.map +1 -1
  368. package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
  369. package/dist/forms/WatchChildErrors/index.js +2 -2
  370. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  371. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +1 -0
  372. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  373. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +22 -6
  374. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  375. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts +2 -2
  376. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts.map +1 -1
  377. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.js.map +1 -1
  378. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts +2 -2
  379. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts.map +1 -1
  380. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.js.map +1 -1
  381. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts +2 -2
  382. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
  383. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
  384. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -1
  385. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  386. package/dist/forms/fieldSchemasToFormState/index.js +2 -0
  387. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  388. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -1
  389. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  390. package/dist/forms/fieldSchemasToFormState/iterateFields.js +2 -0
  391. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  392. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  393. package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
  394. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  395. package/dist/forms/useField/index.d.ts.map +1 -1
  396. package/dist/forms/withCondition/index.d.ts +1 -1
  397. package/dist/forms/withCondition/index.d.ts.map +1 -1
  398. package/dist/hooks/useDebouncedCallback.d.ts.map +1 -1
  399. package/dist/hooks/useDelay.d.ts.map +1 -1
  400. package/dist/hooks/useElementHeightVariable.d.ts.map +1 -1
  401. package/dist/hooks/useHotkey.d.ts.map +1 -1
  402. package/dist/hooks/useIntersect.d.ts.map +1 -1
  403. package/dist/hooks/usePopupWindow.d.ts +1 -1
  404. package/dist/hooks/usePopupWindow.d.ts.map +1 -1
  405. package/dist/hooks/useRelatedCollections.d.ts.map +1 -1
  406. package/dist/hooks/useResize.d.ts.map +1 -1
  407. package/dist/hooks/useUseAsTitle.d.ts.map +1 -1
  408. package/dist/layouts/Root/index.d.ts +1 -1
  409. package/dist/layouts/Root/index.d.ts.map +1 -1
  410. package/dist/layouts/Root/index.js +15 -5
  411. package/dist/layouts/Root/index.js.map +1 -1
  412. package/dist/layouts/Root/index.spec.js +20 -0
  413. package/dist/layouts/Root/index.spec.js.map +1 -0
  414. package/dist/layouts/Root/viewport.d.ts +5 -0
  415. package/dist/layouts/Root/viewport.d.ts.map +1 -0
  416. package/dist/layouts/Root/viewport.js +17 -0
  417. package/dist/layouts/Root/viewport.js.map +1 -0
  418. package/dist/providers/Auth/index.d.ts +8 -10
  419. package/dist/providers/Auth/index.d.ts.map +1 -1
  420. package/dist/providers/Auth/index.js +3 -8
  421. package/dist/providers/Auth/index.js.map +1 -1
  422. package/dist/providers/ClientFunction/index.d.ts.map +1 -1
  423. package/dist/providers/DocumentInfo/index.js.map +1 -1
  424. package/dist/providers/DocumentInfo/types.d.ts +6 -6
  425. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  426. package/dist/providers/DocumentInfo/types.js.map +1 -1
  427. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  428. package/dist/providers/DocumentTitle/index.d.ts +1 -0
  429. package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
  430. package/dist/providers/DocumentTitle/index.js +2 -0
  431. package/dist/providers/DocumentTitle/index.js.map +1 -1
  432. package/dist/providers/Embed/index.d.ts +24 -0
  433. package/dist/providers/Embed/index.d.ts.map +1 -0
  434. package/dist/providers/Embed/index.js +105 -0
  435. package/dist/providers/Embed/index.js.map +1 -0
  436. package/dist/providers/FormErrorHandler/index.d.ts +20 -0
  437. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
  438. package/dist/providers/FormErrorHandler/index.js +6 -0
  439. package/dist/providers/FormErrorHandler/index.js.map +1 -0
  440. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  441. package/dist/providers/ListQuery/index.js +8 -1
  442. package/dist/providers/ListQuery/index.js.map +1 -1
  443. package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
  444. package/dist/providers/ListQuery/sanitizeQuery.d.ts.map +1 -1
  445. package/dist/providers/LivePreview/sizeReducer.d.ts +1 -1
  446. package/dist/providers/LivePreview/sizeReducer.d.ts.map +1 -1
  447. package/dist/providers/Root/index.d.ts +3 -2
  448. package/dist/providers/Root/index.d.ts.map +1 -1
  449. package/dist/providers/Root/index.js +33 -27
  450. package/dist/providers/Root/index.js.map +1 -1
  451. package/dist/providers/SidebarTabs/index.d.ts +3 -2
  452. package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
  453. package/dist/providers/SidebarTabs/index.js.map +1 -1
  454. package/dist/providers/TableColumns/buildColumnState/filterFields.d.ts.map +1 -1
  455. package/dist/providers/TableColumns/buildColumnState/filterFieldsWithPermissions.d.ts.map +1 -1
  456. package/dist/providers/TableColumns/buildColumnState/findValueFromPath.d.ts.map +1 -1
  457. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  458. package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
  459. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  460. package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
  461. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
  462. package/dist/providers/TableColumns/getInitialColumns.d.ts +1 -1
  463. package/dist/providers/TableColumns/getInitialColumns.d.ts.map +1 -1
  464. package/dist/providers/Theme/index.d.ts +5 -2
  465. package/dist/providers/Theme/index.d.ts.map +1 -1
  466. package/dist/providers/Theme/index.js +109 -96
  467. package/dist/providers/Theme/index.js.map +1 -1
  468. package/dist/providers/Theme/shared.d.ts +3 -0
  469. package/dist/providers/Theme/shared.d.ts.map +1 -0
  470. package/dist/providers/Theme/shared.js +2 -0
  471. package/dist/providers/Theme/shared.js.map +1 -0
  472. package/dist/providers/UploadEdits/index.d.ts.map +1 -1
  473. package/dist/providers/UploadHandlers/index.d.ts +2 -7
  474. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  475. package/dist/providers/UploadHandlers/index.js +102 -42
  476. package/dist/providers/UploadHandlers/index.js.map +1 -1
  477. package/dist/styles.css +23 -10
  478. package/dist/templates/Default/index.d.ts.map +1 -1
  479. package/dist/templates/Default/index.js +6 -0
  480. package/dist/templates/Default/index.js.map +1 -1
  481. package/dist/utilities/api.d.ts.map +1 -1
  482. package/dist/utilities/buildClientFieldSchemaMap/index.d.ts.map +1 -1
  483. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  484. package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +1 -1
  485. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
  486. package/dist/utilities/buildFormState.d.ts +2 -2
  487. package/dist/utilities/buildFormState.d.ts.map +1 -1
  488. package/dist/utilities/buildFormState.js +1 -0
  489. package/dist/utilities/buildFormState.js.map +1 -1
  490. package/dist/utilities/checkDependencies.d.ts.map +1 -1
  491. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  492. package/dist/utilities/combineFieldLabel.js +5 -1
  493. package/dist/utilities/combineFieldLabel.js.map +1 -1
  494. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  495. package/dist/utilities/copyDataFromLocale.js +1 -0
  496. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  497. package/dist/utilities/filterOutUploadFields.d.ts.map +1 -1
  498. package/dist/utilities/findLocaleFromCode.d.ts.map +1 -1
  499. package/dist/utilities/formatAbsoluteURL.d.ts.map +1 -1
  500. package/dist/utilities/formatDocTitle/formatDateTitle.d.ts.map +1 -1
  501. package/dist/utilities/formatDocTitle/formatRelationshipTitle.d.ts.map +1 -1
  502. package/dist/utilities/formatDocTitle/index.d.ts +1 -1
  503. package/dist/utilities/formatDocTitle/index.d.ts.map +1 -1
  504. package/dist/utilities/formatDocTitle/index.js +1 -1
  505. package/dist/utilities/formatDocTitle/index.js.map +1 -1
  506. package/dist/utilities/formatFields.d.ts.map +1 -1
  507. package/dist/utilities/formatMetadata.d.ts.map +1 -1
  508. package/dist/utilities/formatRelativeDate.d.ts +15 -0
  509. package/dist/utilities/formatRelativeDate.d.ts.map +1 -0
  510. package/dist/utilities/formatRelativeDate.js +62 -0
  511. package/dist/utilities/formatRelativeDate.js.map +1 -0
  512. package/dist/utilities/generateFieldID.d.ts +1 -1
  513. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  514. package/dist/utilities/generateFieldID.js +2 -2
  515. package/dist/utilities/generateFieldID.js.map +1 -1
  516. package/dist/utilities/getColumns.d.ts.map +1 -1
  517. package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
  518. package/dist/utilities/getDocPreferences.d.ts +2 -2
  519. package/dist/utilities/getDocPreferences.d.ts.map +1 -1
  520. package/dist/utilities/getDocPreferences.js.map +1 -1
  521. package/dist/utilities/getDocumentData.d.ts +2 -2
  522. package/dist/utilities/getDocumentData.d.ts.map +1 -1
  523. package/dist/utilities/getDocumentData.js.map +1 -1
  524. package/dist/utilities/getDocumentPermissions.d.ts.map +1 -1
  525. package/dist/utilities/getGlobalData.d.ts +2 -2
  526. package/dist/utilities/getGlobalData.d.ts.map +1 -1
  527. package/dist/utilities/getGlobalData.js.map +1 -1
  528. package/dist/utilities/getHasScheduledPublish.d.ts +2 -2
  529. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
  530. package/dist/utilities/getHasScheduledPublish.js.map +1 -1
  531. package/dist/utilities/getIsLocked.d.ts +2 -2
  532. package/dist/utilities/getIsLocked.d.ts.map +1 -1
  533. package/dist/utilities/getIsLocked.js.map +1 -1
  534. package/dist/utilities/getLanguageDir.d.ts +12 -0
  535. package/dist/utilities/getLanguageDir.d.ts.map +1 -0
  536. package/dist/utilities/getLanguageDir.js +12 -0
  537. package/dist/utilities/getLanguageDir.js.map +1 -0
  538. package/dist/utilities/getOffsetTop.d.ts.map +1 -1
  539. package/dist/utilities/getRequestEmbed.d.ts +14 -0
  540. package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
  541. package/dist/utilities/getRequestEmbed.js +10 -0
  542. package/dist/utilities/getRequestEmbed.js.map +1 -0
  543. package/dist/utilities/getRequestHighContrast.d.ts.map +1 -1
  544. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  545. package/dist/utilities/getRequestTheme.d.ts +1 -1
  546. package/dist/utilities/getRequestTheme.d.ts.map +1 -1
  547. package/dist/utilities/getRequestTheme.js +1 -1
  548. package/dist/utilities/getRequestTheme.js.map +1 -1
  549. package/dist/utilities/getRouteWithoutAdmin.d.ts.map +1 -1
  550. package/dist/utilities/getSupportedMonacoLocale.d.ts.map +1 -1
  551. package/dist/utilities/getVersions.d.ts +2 -2
  552. package/dist/utilities/getVersions.d.ts.map +1 -1
  553. package/dist/utilities/getVersions.js +2 -5
  554. package/dist/utilities/getVersions.js.map +1 -1
  555. package/dist/utilities/handleAuthRedirect.d.ts +2 -2
  556. package/dist/utilities/handleAuthRedirect.d.ts.map +1 -1
  557. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  558. package/dist/utilities/handleBackToDashboard.d.ts.map +1 -1
  559. package/dist/utilities/handleFormStateLocking.d.ts +2 -2
  560. package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
  561. package/dist/utilities/handleFormStateLocking.js.map +1 -1
  562. package/dist/utilities/handleGoBack.d.ts.map +1 -1
  563. package/dist/utilities/handleLivePreview.d.ts +1 -0
  564. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  565. package/dist/utilities/handlePreview.d.ts.map +1 -1
  566. package/dist/utilities/handleServerFunctions.d.ts +32 -8
  567. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  568. package/dist/utilities/handleServerFunctions.js +17 -37
  569. package/dist/utilities/handleServerFunctions.js.map +1 -1
  570. package/dist/utilities/handleStaleDataCheck.d.ts.map +1 -1
  571. package/dist/utilities/handleTakeOver.d.ts +5 -5
  572. package/dist/utilities/handleTakeOver.d.ts.map +1 -1
  573. package/dist/utilities/handleTakeOver.js.map +1 -1
  574. package/dist/utilities/hasOptionLabelJSXElement.d.ts.map +1 -1
  575. package/dist/utilities/hasSavePermission.d.ts.map +1 -1
  576. package/dist/utilities/initReq.d.ts.map +1 -1
  577. package/dist/utilities/isClientUserObject.d.ts +2 -2
  578. package/dist/utilities/isClientUserObject.d.ts.map +1 -1
  579. package/dist/utilities/isClientUserObject.js.map +1 -1
  580. package/dist/utilities/isCustomAdminView.d.ts.map +1 -1
  581. package/dist/utilities/isEditing.d.ts.map +1 -1
  582. package/dist/utilities/isPathMatchingRoute.d.ts.map +1 -1
  583. package/dist/utilities/isPublicAdminRoute.d.ts.map +1 -1
  584. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  585. package/dist/utilities/isURLAllowed.js +9 -3
  586. package/dist/utilities/isURLAllowed.js.map +1 -1
  587. package/dist/utilities/recentlyViewed.d.ts +16 -0
  588. package/dist/utilities/recentlyViewed.d.ts.map +1 -0
  589. package/dist/utilities/recentlyViewed.js +21 -0
  590. package/dist/utilities/recentlyViewed.js.map +1 -0
  591. package/dist/utilities/recentlyViewed.spec.js +92 -0
  592. package/dist/utilities/recentlyViewed.spec.js.map +1 -0
  593. package/dist/utilities/reduceFieldsToOptions.d.ts.map +1 -1
  594. package/dist/utilities/reduceFieldsToValuesWithValidation.d.ts.map +1 -1
  595. package/dist/utilities/renderTable.d.ts +2 -2
  596. package/dist/utilities/renderTable.d.ts.map +1 -1
  597. package/dist/utilities/renderTable.js +18 -2
  598. package/dist/utilities/renderTable.js.map +1 -1
  599. package/dist/utilities/resolveFilterOptions.d.ts +1 -1
  600. package/dist/utilities/resolveFilterOptions.d.ts.map +1 -1
  601. package/dist/utilities/sanitizeFilterOptionsQuery.d.ts.map +1 -1
  602. package/dist/utilities/scrollToID.d.ts.map +1 -1
  603. package/dist/utilities/selectiveCache.d.ts.map +1 -1
  604. package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
  605. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  606. package/dist/utilities/serverFunctionRegistry.js +25 -7
  607. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  608. package/dist/utilities/setsAreEqual.d.ts.map +1 -1
  609. package/dist/utilities/slugify.d.ts +1 -1
  610. package/dist/utilities/slugify.d.ts.map +1 -1
  611. package/dist/utilities/slugify.js +50 -7
  612. package/dist/utilities/slugify.js.map +1 -1
  613. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  614. package/dist/utilities/upsertPreferences.d.ts.map +1 -1
  615. package/dist/views/Account/ResetPreferences/index.d.ts +2 -2
  616. package/dist/views/Account/ResetPreferences/index.d.ts.map +1 -1
  617. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  618. package/dist/views/Account/Settings/index.d.ts +2 -2
  619. package/dist/views/Account/Settings/index.d.ts.map +1 -1
  620. package/dist/views/Account/Settings/index.js.map +1 -1
  621. package/dist/views/CollectionTrash/generateCollectionTrashMetadata.d.ts.map +1 -1
  622. package/dist/views/Dashboard/Default/ModularDashboard/index.css +0 -8
  623. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
  624. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  625. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
  626. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  627. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts +2 -2
  628. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts.map +1 -1
  629. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.js.map +1 -1
  630. package/dist/views/Dashboard/Default/index.d.ts +2 -2
  631. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  632. package/dist/views/Dashboard/Default/index.js.map +1 -1
  633. package/dist/views/Document/getCustomDocumentViewByKey.d.ts +1 -1
  634. package/dist/views/Document/getCustomDocumentViewByKey.d.ts.map +1 -1
  635. package/dist/views/Document/getCustomViewByRoute.d.ts +1 -1
  636. package/dist/views/Document/getCustomViewByRoute.d.ts.map +1 -1
  637. package/dist/views/Document/getDocumentView.d.ts.map +1 -1
  638. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  639. package/dist/views/Document/index.d.ts +1 -1
  640. package/dist/views/Document/index.d.ts.map +1 -1
  641. package/dist/views/Document/index.js +10 -1
  642. package/dist/views/Document/index.js.map +1 -1
  643. package/dist/views/Document/recordRecentlyViewed.d.ts +12 -0
  644. package/dist/views/Document/recordRecentlyViewed.d.ts.map +1 -0
  645. package/dist/views/Document/recordRecentlyViewed.js +40 -0
  646. package/dist/views/Document/recordRecentlyViewed.js.map +1 -0
  647. package/dist/views/Edit/index.css +61 -53
  648. package/dist/views/Edit/index.d.ts.map +1 -1
  649. package/dist/views/Edit/index.js.map +1 -1
  650. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +2 -2
  651. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
  652. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
  653. package/dist/views/HierarchyList/HierarchyTable/types.d.ts +2 -2
  654. package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -1
  655. package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -1
  656. package/dist/views/HierarchyList/TypeFilter/index.d.ts.map +1 -1
  657. package/dist/views/HierarchyList/TypeFilter/index.js +3 -0
  658. package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -1
  659. package/dist/views/HierarchyList/index.css +1 -1
  660. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  661. package/dist/views/HierarchyList/index.js +2 -6
  662. package/dist/views/HierarchyList/index.js.map +1 -1
  663. package/dist/views/List/createSerializableValue.d.ts.map +1 -1
  664. package/dist/views/List/extractRelationshipDisplayValue.d.ts.map +1 -1
  665. package/dist/views/List/extractValueOrRelationshipID.d.ts.map +1 -1
  666. package/dist/views/List/generateListViewMetadata.d.ts.map +1 -1
  667. package/dist/views/List/handleGroupBy.d.ts.map +1 -1
  668. package/dist/views/List/handleHierarchy.d.ts +1 -1
  669. package/dist/views/List/handleHierarchy.d.ts.map +1 -1
  670. package/dist/views/List/index.css +1 -1
  671. package/dist/views/List/index.d.ts.map +1 -1
  672. package/dist/views/List/index.js +5 -7
  673. package/dist/views/List/index.js.map +1 -1
  674. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  675. package/dist/views/List/resolveAllFilterOptions.d.ts.map +1 -1
  676. package/dist/views/List/transformColumnsToSelect.d.ts.map +1 -1
  677. package/dist/views/Logout/LogoutClient.js +28 -32
  678. package/dist/views/Logout/LogoutClient.js.map +1 -1
  679. package/dist/views/Logout/index.d.ts.map +1 -1
  680. package/dist/views/Logout/index.js +11 -0
  681. package/dist/views/Logout/index.js.map +1 -1
  682. package/dist/views/NotFound/page.d.ts.map +1 -1
  683. package/dist/views/Root/generateCustomViewMetadata.d.ts.map +1 -1
  684. package/dist/views/Root/generatePageMetadata.d.ts.map +1 -1
  685. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts +1 -1
  686. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  687. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts +1 -1
  688. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  689. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  690. package/dist/views/Root/getCustomViewByRoute.d.ts.map +1 -1
  691. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  692. package/dist/views/Root/index.d.ts +12 -1
  693. package/dist/views/Root/index.d.ts.map +1 -1
  694. package/dist/views/Root/index.js +10 -3
  695. package/dist/views/Root/index.js.map +1 -1
  696. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  697. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.d.ts.map +1 -1
  698. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  699. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.d.ts.map +1 -1
  700. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  701. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +1 -0
  702. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  703. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  704. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
  705. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +1 -0
  706. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  707. package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts.map +1 -1
  708. package/dist/views/Versions/buildColumns.d.ts +1 -1
  709. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  710. package/dist/views/Versions/fetchVersions.d.ts +8 -8
  711. package/dist/views/Versions/fetchVersions.d.ts.map +1 -1
  712. package/dist/views/Versions/fetchVersions.js.map +1 -1
  713. package/dist/views/Versions/types.d.ts +2 -2
  714. package/dist/views/Versions/types.d.ts.map +1 -1
  715. package/dist/views/Versions/types.js.map +1 -1
  716. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts +2 -2
  717. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts.map +1 -1
  718. package/dist/widgets/CollectionCards/getCollectionCardsData.js.map +1 -1
  719. package/dist/widgets/CollectionCards/index.client.js.map +1 -1
  720. package/dist/widgets/CollectionQuery/index.css +10 -152
  721. package/dist/widgets/CollectionQuery/index.d.ts +0 -1
  722. package/dist/widgets/CollectionQuery/index.d.ts.map +1 -1
  723. package/dist/widgets/CollectionQuery/index.js +40 -111
  724. package/dist/widgets/CollectionQuery/index.js.map +1 -1
  725. package/dist/widgets/RecentlyViewed/CollectionsField/index.css +14 -0
  726. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts +10 -0
  727. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +1 -0
  728. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +76 -0
  729. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -0
  730. package/dist/widgets/RecentlyViewed/index.d.ts +10 -0
  731. package/dist/widgets/RecentlyViewed/index.d.ts.map +1 -0
  732. package/dist/widgets/RecentlyViewed/index.js +148 -0
  733. package/dist/widgets/RecentlyViewed/index.js.map +1 -0
  734. package/dist/widgets/WidgetCard/index.css +155 -0
  735. package/dist/widgets/WidgetCard/index.d.ts +19 -0
  736. package/dist/widgets/WidgetCard/index.d.ts.map +1 -0
  737. package/dist/widgets/WidgetCard/index.js +49 -0
  738. package/dist/widgets/WidgetCard/index.js.map +1 -0
  739. package/package.json +8 -516
  740. package/dist/elements/Nav/NavToggler/index.css +0 -12
  741. package/dist/elements/Nav/NavToggler/index.d.ts +0 -9
  742. package/dist/elements/Nav/NavToggler/index.d.ts.map +0 -1
  743. package/dist/elements/Nav/NavToggler/index.js +0 -91
  744. package/dist/elements/Nav/NavToggler/index.js.map +0 -1
  745. package/dist/elements/RelationshipTable/Pagination.css +0 -39
  746. package/dist/scss/app.scss +0 -183
  747. package/dist/scss/colors.scss +0 -191
  748. package/dist/scss/custom.css +0 -1
  749. package/dist/scss/queries.scss +0 -27
  750. package/dist/scss/styles.scss +0 -9
  751. package/dist/scss/svg.scss +0 -10
  752. package/dist/scss/toastify.scss +0 -61
  753. package/dist/scss/vars.scss +0 -192
  754. package/dist/scss/z-index.scss +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchySidebarTab.server.js","names":["getTranslation","DEFAULT_HIERARCHY_TREE_LIMIT","getInitialTreeData","PREFERENCE_KEYS","React","HierarchySidebarTab","TagIcon","RenderServerComponent","HierarchySidebarTabServer","hierarchyCollectionSlug","i18n","payload","req","searchParams","user","initialData","initialExpandedNodes","initialSelectedFilters","selectedNodeId","parentFieldName","treeLimit","typeFieldName","useAsTitle","collectionSpecificOptions","baseFilter","collectionConfig","collections","config","hierarchyConfig","hierarchy","undefined","IconComponent","admin","components","SmallIcon","icon","clientProps","size","Component","importMap","key","_jsx","selectedNodeParam","String","preferenceKey","HIERARCHY_TREE","docs","preferenceDocs","find","collection","limit","overrideAccess","where","and","equals","id","preferences","value","expandedNodes","selectedFilters","collectionSpecific","fieldName","relatedCollections","Object","keys","map","slug","relatedConfig","label","labels","plural","sort","a","b","localeCompare","selectedNodeParentId","ancestorIds","currentNodeId","isFirstIteration","node","findByID","depth","parentId","push","expandedSet","Set","forEach","add","Array","from","baseFilterFn","baseListFilter","page","collectionSlug","expandedNodeIds","length","filterByCollections","error","logger","warn","err","msg"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.server.tsx"],"sourcesContent":["import type { SidebarTabServerProps, Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { DEFAULT_HIERARCHY_TREE_LIMIT, getInitialTreeData } from 'payload'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React from 'react'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { HierarchySidebarTab } from '../../../exports/client/index.js'\nimport { TagIcon } from '../../../icons/Tag/index.js'\nimport { RenderServerComponent } from '../../RenderServerComponent/index.js'\n\nexport type HierarchySidebarTabServerProps = {\n hierarchyCollectionSlug: string\n} & SidebarTabServerProps\n\nexport const HierarchySidebarTabServer: React.FC<HierarchySidebarTabServerProps> = async ({\n hierarchyCollectionSlug,\n i18n,\n payload,\n req,\n searchParams,\n user,\n}) => {\n if (!user) {\n return null\n }\n\n let initialData = null\n let initialExpandedNodes: (number | string)[] = []\n let initialSelectedFilters: string[] = []\n let selectedNodeId: null | string = null\n let parentFieldName = 'parent'\n let treeLimit: number | undefined\n let typeFieldName: string | undefined\n let useAsTitle: string | undefined\n let collectionSpecificOptions: { label: string; value: string }[] = []\n let baseFilter: null | Where = null\n\n // Get collection config and render icon (outside try block - doesn't need async)\n const collectionConfig = payload.collections[hierarchyCollectionSlug]?.config\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n\n const IconComponent = hierarchyConfig?.admin?.components?.SmallIcon\n const icon = IconComponent ? (\n RenderServerComponent({\n clientProps: { size: 16 },\n Component: IconComponent,\n importMap: payload.importMap,\n key: `hierarchy-sidebar-icon-${hierarchyCollectionSlug}`,\n })\n ) : (\n <TagIcon size={16} />\n )\n\n try {\n // Get parentFieldName from config first (needed for URL parsing)\n parentFieldName = hierarchyConfig?.parentFieldName ?? 'parent'\n\n // Get selected node from URL (?<parentFieldName>=<id>)\n const selectedNodeParam = searchParams?.[parentFieldName]\n selectedNodeId = selectedNodeParam ? String(selectedNodeParam) : null\n\n // STEP 1: Load user's expanded node preferences\n const preferenceKey = `${PREFERENCE_KEYS.HIERARCHY_TREE}-${hierarchyCollectionSlug}`\n\n const { docs: preferenceDocs } = await payload.find({\n collection: 'payload-preferences',\n limit: 1,\n overrideAccess: false,\n user,\n where: {\n and: [\n { key: { equals: preferenceKey } },\n { 'user.value': { equals: user.id } },\n { 'user.relationTo': { equals: user.collection } },\n ],\n },\n })\n\n const preferences = preferenceDocs[0]\n\n if (preferences?.value?.expandedNodes) {\n initialExpandedNodes = preferences.value.expandedNodes\n }\n\n if (preferences?.value?.selectedFilters) {\n initialSelectedFilters = preferences.value.selectedFilters\n }\n\n // STEP 2: Get remaining config values\n treeLimit = hierarchyConfig?.admin?.treeLimit\n typeFieldName =\n hierarchyConfig?.collectionSpecific && typeof hierarchyConfig.collectionSpecific === 'object'\n ? hierarchyConfig.collectionSpecific.fieldName\n : undefined\n useAsTitle = collectionConfig?.admin?.useAsTitle\n\n // STEP 2.5: Build collection-specific options from related collections\n if (hierarchyConfig.collectionSpecific && hierarchyConfig?.relatedCollections) {\n collectionSpecificOptions = Object.keys(hierarchyConfig.relatedCollections)\n .map((slug) => {\n const relatedConfig = payload.collections[slug]?.config\n const label = relatedConfig?.labels?.plural ?? slug\n\n return {\n label: getTranslation(label, i18n),\n value: slug,\n }\n })\n .sort((a, b) => a.label.localeCompare(b.label))\n }\n\n // Track the immediate parent of the selected node (for ensuring siblings are loaded)\n let selectedNodeParentId: null | number | string = null\n\n // If there's a selected node, ensure its ancestor chain is expanded\n if (selectedNodeId) {\n // Walk up the parent chain to root\n const ancestorIds: (number | string)[] = []\n let currentNodeId: null | number | string = selectedNodeId\n let isFirstIteration = true\n\n while (currentNodeId) {\n try {\n const node = await payload.findByID({\n id: currentNodeId,\n collection: hierarchyCollectionSlug,\n depth: 0,\n overrideAccess: false,\n user,\n })\n\n const parentId = node?.[parentFieldName]\n\n // Capture the immediate parent of the selected node\n if (isFirstIteration) {\n selectedNodeParentId = parentId ?? null\n isFirstIteration = false\n }\n\n if (parentId) {\n ancestorIds.push(parentId)\n currentNodeId = parentId\n } else {\n currentNodeId = null\n }\n } catch {\n // Node not found or access denied\n break\n }\n }\n\n // Merge ancestor IDs with existing expanded nodes\n const expandedSet = new Set(initialExpandedNodes)\n ancestorIds.forEach((id) => expandedSet.add(id))\n initialExpandedNodes = Array.from(expandedSet)\n }\n\n const baseFilterFn =\n collectionConfig?.admin?.baseFilter ?? collectionConfig?.admin?.baseListFilter\n if (baseFilterFn && req) {\n baseFilter =\n (await baseFilterFn({ limit: DEFAULT_HIERARCHY_TREE_LIMIT, page: 1, req, sort: 'id' })) ??\n null\n }\n\n initialData = await getInitialTreeData({\n baseFilter,\n collectionSlug: hierarchyCollectionSlug,\n expandedNodeIds: initialExpandedNodes,\n ...(initialSelectedFilters.length > 0 && { filterByCollections: initialSelectedFilters }),\n ...(treeLimit !== undefined && { limit: treeLimit }),\n payload,\n selectedNodeId,\n selectedNodeParentId,\n user: req.user,\n })\n } catch (error) {\n payload.logger.warn({\n err: error,\n msg: `Failed to fetch hierarchy data for ${hierarchyCollectionSlug}`,\n })\n // Fall back to client-side fetching if server fetch fails\n }\n\n return (\n <HierarchySidebarTab\n baseFilter={baseFilter}\n collectionSpecificOptions={collectionSpecificOptions}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n initialSelectedFilters={initialSelectedFilters}\n parentFieldName={parentFieldName}\n selectedNodeId={selectedNodeId}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"HierarchySidebarTab.server.js","names":["getTranslation","DEFAULT_HIERARCHY_TREE_LIMIT","getInitialTreeData","PREFERENCE_KEYS","React","HierarchySidebarTab","TagIcon","RenderServerComponent","HierarchySidebarTabServer","hierarchyCollectionSlug","i18n","payload","req","searchParams","user","initialData","initialExpandedNodes","initialSelectedFilters","selectedNodeId","parentFieldName","treeLimit","typeFieldName","useAsTitle","collectionSpecificOptions","baseFilter","collectionConfig","collections","config","hierarchyConfig","hierarchy","undefined","IconComponent","admin","components","SmallIcon","icon","clientProps","size","Component","importMap","key","_jsx","selectedNodeParam","String","preferenceKey","HIERARCHY_TREE","docs","preferenceDocs","find","collection","limit","overrideAccess","where","and","equals","id","preferences","value","expandedNodes","selectedFilters","collectionSpecific","fieldName","relatedCollections","Object","keys","map","slug","relatedConfig","label","labels","plural","sort","a","b","localeCompare","selectedNodeParentId","ancestorIds","currentNodeId","isFirstIteration","node","findByID","depth","parentId","push","expandedSet","Set","forEach","add","Array","from","baseFilterFn","baseListFilter","page","collectionSlug","expandedNodeIds","length","filterByCollections","error","logger","warn","err","msg"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.server.tsx"],"sourcesContent":["import type { SidebarTabServerProps, Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { DEFAULT_HIERARCHY_TREE_LIMIT, getInitialTreeData } from 'payload'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React from 'react'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { HierarchySidebarTab } from '../../../exports/client/index.js'\nimport { TagIcon } from '../../../icons/Tag/index.js'\nimport { RenderServerComponent } from '../../RenderServerComponent/index.js'\n\nexport type HierarchySidebarTabServerProps = {\n hierarchyCollectionSlug: string\n} & SidebarTabServerProps\n\nexport const HierarchySidebarTabServer: React.FC<HierarchySidebarTabServerProps> = async ({\n hierarchyCollectionSlug,\n i18n,\n payload,\n req,\n searchParams,\n user,\n}) => {\n if (!user) {\n return null\n }\n\n let initialData = null\n let initialExpandedNodes: (number | string)[] = []\n let initialSelectedFilters: string[] = []\n let selectedNodeId: null | string = null\n let parentFieldName = 'parent'\n let treeLimit: number | undefined\n let typeFieldName: string | undefined\n let useAsTitle: string | undefined\n let collectionSpecificOptions: { label: string; value: string }[] = []\n let baseFilter: null | Where = null\n\n // Get collection config and render icon (outside try block - doesn't need async)\n const collectionConfig = payload.collections[hierarchyCollectionSlug]?.config\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n\n const IconComponent = hierarchyConfig?.admin?.components?.SmallIcon\n const icon = IconComponent ? (\n RenderServerComponent({\n clientProps: { size: 16 },\n Component: IconComponent,\n importMap: payload.importMap,\n key: `hierarchy-sidebar-icon-${hierarchyCollectionSlug}`,\n })\n ) : (\n <TagIcon size={16} />\n )\n\n try {\n // Get parentFieldName from config first (needed for URL parsing)\n parentFieldName = hierarchyConfig?.parentFieldName ?? 'parent'\n\n // Get selected node from URL (?<parentFieldName>=<id>)\n const selectedNodeParam = searchParams?.[parentFieldName]\n selectedNodeId = selectedNodeParam ? String(selectedNodeParam) : null\n\n // STEP 1: Load user's expanded node preferences\n const preferenceKey = `${PREFERENCE_KEYS.HIERARCHY_TREE}-${hierarchyCollectionSlug}`\n\n const { docs: preferenceDocs } = await payload.find({\n collection: 'payload-preferences',\n limit: 1,\n overrideAccess: false,\n user,\n where: {\n and: [\n { key: { equals: preferenceKey } },\n { 'user.value': { equals: user.id } },\n { 'user.relationTo': { equals: user.collection } },\n ],\n },\n })\n\n const preferences = preferenceDocs[0]\n\n if (preferences?.value?.expandedNodes) {\n initialExpandedNodes = preferences.value.expandedNodes\n }\n\n if (preferences?.value?.selectedFilters) {\n initialSelectedFilters = preferences.value.selectedFilters\n }\n\n // STEP 2: Get remaining config values\n treeLimit = hierarchyConfig?.admin?.treeLimit\n typeFieldName =\n hierarchyConfig?.collectionSpecific && typeof hierarchyConfig.collectionSpecific === 'object'\n ? hierarchyConfig.collectionSpecific.fieldName\n : undefined\n useAsTitle = collectionConfig?.admin?.useAsTitle\n\n // STEP 2.5: Build collection-specific options from related collections\n if (hierarchyConfig.collectionSpecific && hierarchyConfig?.relatedCollections) {\n collectionSpecificOptions = Object.keys(hierarchyConfig.relatedCollections)\n .map((slug) => {\n const relatedConfig = payload.collections[slug]?.config\n const label = relatedConfig?.labels?.plural ?? slug\n\n return {\n label: getTranslation(label, i18n),\n value: slug,\n }\n })\n .sort((a, b) => a.label.localeCompare(b.label))\n }\n\n // Track the immediate parent of the selected node (for ensuring siblings are loaded)\n let selectedNodeParentId: null | number | string = null\n\n // If there's a selected node, ensure its ancestor chain is expanded\n if (selectedNodeId) {\n // Walk up the parent chain to root\n const ancestorIds: (number | string)[] = []\n let currentNodeId: null | number | string = selectedNodeId\n let isFirstIteration = true\n\n while (currentNodeId) {\n try {\n const node = await payload.findByID({\n id: currentNodeId,\n collection: hierarchyCollectionSlug,\n depth: 0,\n overrideAccess: false,\n user,\n })\n\n const parentId = node?.[parentFieldName]\n\n // Capture the immediate parent of the selected node\n if (isFirstIteration) {\n selectedNodeParentId = parentId ?? null\n isFirstIteration = false\n }\n\n if (parentId) {\n ancestorIds.push(parentId)\n currentNodeId = parentId\n } else {\n currentNodeId = null\n }\n } catch {\n // Node not found or access denied\n break\n }\n }\n\n // Merge ancestor IDs with existing expanded nodes\n const expandedSet = new Set(initialExpandedNodes)\n ancestorIds.forEach((id) => expandedSet.add(id))\n // Include the selected node itself so its own children are loaded.\n expandedSet.add(selectedNodeId)\n initialExpandedNodes = Array.from(expandedSet)\n }\n\n const baseFilterFn =\n collectionConfig?.admin?.baseFilter ?? collectionConfig?.admin?.baseListFilter\n if (baseFilterFn && req) {\n baseFilter =\n (await baseFilterFn({ limit: DEFAULT_HIERARCHY_TREE_LIMIT, page: 1, req, sort: 'id' })) ??\n null\n }\n\n initialData = await getInitialTreeData({\n baseFilter,\n collectionSlug: hierarchyCollectionSlug,\n expandedNodeIds: initialExpandedNodes,\n ...(initialSelectedFilters.length > 0 && { filterByCollections: initialSelectedFilters }),\n ...(treeLimit !== undefined && { limit: treeLimit }),\n payload,\n selectedNodeId,\n selectedNodeParentId,\n user: req.user,\n })\n } catch (error) {\n payload.logger.warn({\n err: error,\n msg: `Failed to fetch hierarchy data for ${hierarchyCollectionSlug}`,\n })\n // Fall back to client-side fetching if server fetch fails\n }\n\n return (\n <HierarchySidebarTab\n baseFilter={baseFilter}\n collectionSpecificOptions={collectionSpecificOptions}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n initialSelectedFilters={initialSelectedFilters}\n parentFieldName={parentFieldName}\n selectedNodeId={selectedNodeId}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -18,7 +18,7 @@ export declare const useTreeFocus: () => TreeFocusContextType;
18
18
  export declare const useFocusableItem: ({ id, type, ref, }: {
19
19
  id: string;
20
20
  ref: React.RefObject<HTMLElement>;
21
- type: "load-more" | "node";
21
+ type: 'load-more' | 'node';
22
22
  }) => {
23
23
  handleFocus: () => void;
24
24
  isFocused: boolean;
@@ -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,GAAI,oBAI9B;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,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"}
@@ -8,32 +8,42 @@
8
8
  margin-left: 0;
9
9
  margin-right: 0;
10
10
  }
11
+
12
+ &:focus-visible {
13
+ outline: none;
14
+ }
11
15
  }
12
16
 
13
- .tree-node__content {
14
- padding: var(--tree-node-padding-y) var(--spacer-2);
15
- padding-left: calc(
16
- (var(--tree-depth, 0) * var(--tree-indent)) + (var(--spacer-1) * var(--tree-depth)) +
17
- var(--spacer-1)
17
+ .tree-node:focus-visible > .tree-node__content-wrapper > .tree-node__content {
18
+ outline: var(--accessibility-outline);
19
+ outline-offset: var(--accessibility-outline-offset);
20
+ }
21
+
22
+ .tree-node__content-wrapper {
23
+ margin-left: calc(
24
+ (var(--tree-depth, 0) * var(--tree-indent)) + (var(--spacer-1) * var(--tree-depth))
18
25
  );
19
- transition: background-color 100ms ease;
26
+ margin-bottom: var(--tree-row-gap);
27
+ }
28
+
29
+ .tree-node__content {
30
+ display: flex;
31
+ align-items: center;
20
32
  font-size: var(--tree-font-size);
21
33
  line-height: var(--tree-node-content-height);
22
- margin-bottom: var(--tree-row-gap);
23
34
  }
24
35
 
25
36
  .tree-node__toggle {
26
37
  background: none;
27
38
  border: none;
28
- padding: 0;
39
+ padding-block: var(--spacer-1);
40
+ padding-inline-start: var(--spacer-1);
29
41
  margin: 0;
30
42
  display: flex;
31
43
  align-items: center;
32
44
  justify-content: center;
33
45
  cursor: default;
34
46
  color: var(--color-icon-tertiary);
35
- width: var(--tree-chevron-width);
36
- height: var(--tree-chevron-width);
37
47
  flex-shrink: 0;
38
48
  border-radius: var(--button-radius);
39
49
 
@@ -42,13 +52,27 @@
42
52
  }
43
53
  }
44
54
 
45
- .tree-node__toggle-spacer {
46
- width: calc(var(--tree-chevron-width) + var(--tree-chevron-spacing));
47
- flex-shrink: 0;
55
+ .tree-node__node-trigger {
56
+ border: none;
57
+ background: none;
58
+ margin: 0;
59
+ padding: 0;
60
+ color: inherit;
61
+ font: inherit;
62
+ min-width: 0;
63
+ flex: 1;
64
+ display: flex;
65
+ align-items: center;
66
+ gap: var(--spacer-1);
67
+ text-align: left;
68
+ cursor: pointer;
69
+ padding-block: var(--spacer-1);
70
+ padding-inline-end: var(--spacer-1);
48
71
  }
49
72
 
50
73
  .tree-node__title {
51
- padding-left: var(--spacer-1);
74
+ padding-left: 0;
75
+ margin-left: var(--spacer-1);
52
76
  }
53
77
 
54
78
  .tree-node__loading {
@@ -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,GAAI,uNAkBtB,aAAa,sBA0Mf,CAAA"}
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"}
@@ -82,7 +82,6 @@ export const TreeNode = ({
82
82
  }, [loadMoreFromHook, setFocusedId]);
83
83
  const {
84
84
  handleFocus,
85
- isFocused,
86
85
  tabIndex
87
86
  } = useFocusableItem({
88
87
  id: `node-${node.id}`,
@@ -152,36 +151,43 @@ export const TreeNode = ({
152
151
  '--tree-depth': depth
153
152
  },
154
153
  tabIndex: tabIndex,
155
- children: [/*#__PURE__*/_jsxs("div", {
156
- className: [`${baseClass}__content`, 'sidebar-row', selected && `${baseClass}__content--selected`, selected && 'sidebar-row--selected'].filter(Boolean).join(' '),
157
- children: [hasChildren ? /*#__PURE__*/_jsx("button", {
158
- "aria-label": expanded ? t('general:collapse') : t('general:open'),
159
- className: `${baseClass}__toggle`,
160
- onClick: handleToggle,
161
- onMouseDown: e_2 => e_2.preventDefault(),
162
- tabIndex: -1,
163
- type: "button",
164
- children: /*#__PURE__*/_jsx(ChevronIcon, {
165
- direction: expanded ? 'down' : 'right'
166
- })
167
- }) : /*#__PURE__*/_jsx("div", {
168
- className: `${baseClass}__toggle-spacer`
169
- }), Boolean(icon) && /*#__PURE__*/_jsx("span", {
170
- className: "sidebar-row__icon",
171
- children: icon
172
- }), /*#__PURE__*/_jsx("span", {
173
- className: `${baseClass}__title sidebar-row__title`,
174
- onClick: handleSelectClick,
175
- onMouseDown: e_3 => e_3.preventDefault(),
176
- title: node.title,
177
- children: node.title
178
- }), isLoading && expanded && /*#__PURE__*/_jsx("span", {
179
- className: `${baseClass}__loading`,
180
- children: /*#__PURE__*/_jsx(Spinner, {
181
- loadingText: null,
182
- size: "sm"
183
- })
184
- })]
154
+ children: [/*#__PURE__*/_jsx("div", {
155
+ className: `${baseClass}__content-wrapper`,
156
+ children: /*#__PURE__*/_jsxs("div", {
157
+ className: [`${baseClass}__content`, 'sidebar-row', selected && `${baseClass}__content--selected`, selected && 'sidebar-row--selected'].filter(Boolean).join(' '),
158
+ children: [hasChildren && /*#__PURE__*/_jsx("button", {
159
+ "aria-label": expanded ? t('general:collapse') : t('general:open'),
160
+ className: `${baseClass}__toggle`,
161
+ onClick: handleToggle,
162
+ onMouseDown: e_2 => e_2.preventDefault(),
163
+ tabIndex: -1,
164
+ type: "button",
165
+ children: /*#__PURE__*/_jsx(ChevronIcon, {
166
+ direction: expanded ? 'down' : 'right',
167
+ size: 16
168
+ })
169
+ }), /*#__PURE__*/_jsxs("button", {
170
+ className: [`${baseClass}__node-trigger`, selected && `${baseClass}__node-trigger--selected`].filter(Boolean).join(' '),
171
+ onClick: handleSelectClick,
172
+ onMouseDown: e_3 => e_3.preventDefault(),
173
+ tabIndex: -1,
174
+ title: node.title,
175
+ type: "button",
176
+ children: [Boolean(icon) && /*#__PURE__*/_jsx("span", {
177
+ className: "sidebar-row__icon",
178
+ children: icon
179
+ }), /*#__PURE__*/_jsx("span", {
180
+ className: `${baseClass}__title sidebar-row__title`,
181
+ children: node.title
182
+ })]
183
+ }), isLoading && expanded && /*#__PURE__*/_jsx("span", {
184
+ className: `${baseClass}__loading`,
185
+ children: /*#__PURE__*/_jsx(Spinner, {
186
+ loadingText: null,
187
+ size: "sm"
188
+ })
189
+ })]
190
+ })
185
191
  }), expanded && children && children.length > 0 && /*#__PURE__*/_jsxs(_Fragment, {
186
192
  children: [/*#__PURE__*/_jsx("div", {
187
193
  className: `${baseClass}__children`,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","useRef","Spinner","ChevronIcon","useTranslation","LoadMore","useFocusableItem","useTreeFocus","useChildren","DEFAULT_TREE_LIMIT","baseClass","getDocumentTitle","doc","useAsTitle","docId","id","idStr","String","value","TreeNode","allPossibleTypeValues","baseFilter","cache","collectionSlug","depth","expandedNodes","filterByCollections","icon","limit","node","onSelect","onToggle","parentFieldName","selected","selectedNodeId","typeFieldName","t","expanded","has","nodeRef","setFocusedId","children","hasMore","isLoading","load","loadMore","loadMoreFromHook","totalDocs","enabled","parentId","handleLoadMore","newDocs","length","firstNewDoc","window","requestAnimationFrame","handleFocus","isFocused","tabIndex","type","ref","hasChildren","handleToggle","e","stopPropagation","handleSelectClick","handleKeyDown","target","currentTarget","key","preventDefault","_jsxs","undefined","className","onFocus","onKeyDown","role","style","filter","Boolean","join","_jsx","onClick","onMouseDown","direction","title","loadingText","size","_Fragment","map","child","childData","childId","childTitle","currentCount","onLoadMore"],"sources":["../../../../../src/elements/Hierarchy/Tree/TreeNode/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback, useRef } from 'react'\n\nimport type { TreeNodeProps } from '../types.js'\n\nimport { Spinner } from '../../../../elements/Spinner/index.js'\nimport { ChevronIcon } from '../../../../icons/Chevron/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { LoadMore } from '../LoadMore/index.js'\nimport { useFocusableItem, useTreeFocus } from '../TreeFocusContext.js'\nimport { useChildren } from '../useChildren.js'\nimport './index.css'\n\nconst DEFAULT_TREE_LIMIT = 10\n\nconst baseClass = 'tree-node'\n\nconst getDocumentTitle = (doc: Record<string, unknown>, useAsTitle: string | undefined): string => {\n const docId: number | string = doc.id as number | string\n const idStr = typeof docId === 'number' ? String(docId) : docId\n\n if (!useAsTitle) {\n return idStr\n }\n\n const value = doc[useAsTitle]\n if (value && (typeof value === 'string' || typeof value === 'number')) {\n return String(value)\n }\n return idStr\n}\n\nexport const TreeNode = ({\n allPossibleTypeValues,\n baseFilter,\n cache,\n collectionSlug,\n depth = 0,\n expandedNodes,\n filterByCollections,\n icon,\n limit = DEFAULT_TREE_LIMIT,\n node,\n onSelect,\n onToggle,\n parentFieldName,\n selected,\n selectedNodeId,\n typeFieldName,\n useAsTitle,\n}: TreeNodeProps) => {\n const { t } = useTranslation()\n const expanded = expandedNodes.has(node.id)\n const nodeRef = useRef<HTMLDivElement>(null)\n const { setFocusedId } = useTreeFocus()\n\n const {\n children,\n hasMore,\n isLoading,\n load,\n loadMore: loadMoreFromHook,\n totalDocs,\n } = useChildren({\n allPossibleTypeValues,\n baseFilter,\n cache,\n collectionSlug,\n enabled: expanded,\n filterByCollections,\n limit,\n parentFieldName,\n parentId: node.id,\n typeFieldName,\n useAsTitle,\n })\n\n const handleLoadMore = React.useCallback(async () => {\n const newDocs = await loadMoreFromHook()\n\n if (newDocs && newDocs.length > 0) {\n const firstNewDoc = newDocs[0]\n const docId: number | string = (firstNewDoc as { id: number | string }).id\n window.requestAnimationFrame(() => {\n setFocusedId(`node-${docId}`)\n })\n }\n }, [loadMoreFromHook, setFocusedId])\n\n const { handleFocus, isFocused, tabIndex } = useFocusableItem({\n id: `node-${node.id}`,\n type: 'node',\n ref: nodeRef,\n })\n\n // Determine if node has children:\n // - If explicitly set in data, use that\n // - If expanded and loaded, check the actual children\n // - Otherwise, assume it might have children (show chevron until proven otherwise)\n const hasChildren =\n node.hasChildren === true || (expanded && children !== null ? children.length > 0 : true)\n\n const handleToggle = useCallback(\n (e?: React.SyntheticEvent) => {\n e?.stopPropagation()\n void load()\n onToggle({ id: node.id })\n },\n [load, node.id, onToggle],\n )\n\n const handleSelectClick = useCallback(() => {\n onSelect?.({ id: node.id })\n }, [node.id, onSelect])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.target !== e.currentTarget) {\n return\n }\n switch (e.key) {\n case ' ':\n case 'Enter':\n e.preventDefault()\n e.stopPropagation()\n handleSelectClick()\n break\n case 'ArrowLeft':\n e.preventDefault()\n e.stopPropagation()\n if (hasChildren && expanded) {\n onToggle({ id: node.id })\n }\n break\n case 'ArrowRight':\n e.preventDefault()\n e.stopPropagation()\n if (hasChildren && !expanded) {\n handleToggle()\n }\n break\n }\n },\n [expanded, handleSelectClick, handleToggle, hasChildren, node.id, onToggle],\n )\n\n return (\n <div\n aria-expanded={hasChildren ? expanded : undefined}\n aria-level={depth + 1}\n aria-selected={selected}\n className={baseClass}\n onFocus={(e) => {\n if (e.target === e.currentTarget) {\n handleFocus()\n }\n }}\n onKeyDown={handleKeyDown}\n ref={nodeRef}\n role=\"treeitem\"\n style={{ '--tree-depth': depth } as React.CSSProperties}\n tabIndex={tabIndex}\n >\n <div\n className={[\n `${baseClass}__content`,\n 'sidebar-row',\n selected && `${baseClass}__content--selected`,\n selected && 'sidebar-row--selected',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {hasChildren ? (\n <button\n aria-label={expanded ? t('general:collapse') : t('general:open')}\n className={`${baseClass}__toggle`}\n onClick={handleToggle}\n onMouseDown={(e) => e.preventDefault()}\n tabIndex={-1}\n type=\"button\"\n >\n <ChevronIcon direction={expanded ? 'down' : 'right'} />\n </button>\n ) : (\n <div className={`${baseClass}__toggle-spacer`} />\n )}\n {Boolean(icon) && <span className=\"sidebar-row__icon\">{icon}</span>}\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -- keyboard handled by parent */}\n <span\n className={`${baseClass}__title sidebar-row__title`}\n onClick={handleSelectClick}\n onMouseDown={(e) => e.preventDefault()}\n title={node.title}\n >\n {node.title}\n </span>\n {isLoading && expanded && (\n <span className={`${baseClass}__loading`}>\n <Spinner loadingText={null} size=\"sm\" />\n </span>\n )}\n </div>\n\n {expanded && children && children.length > 0 && (\n <>\n <div className={`${baseClass}__children`} role=\"group\">\n {children.map((child) => {\n const childData = child as { id: number | string }\n const childId = childData.id\n const childTitle = getDocumentTitle(child, useAsTitle)\n return (\n <TreeNode\n allPossibleTypeValues={allPossibleTypeValues}\n baseFilter={baseFilter}\n cache={cache}\n collectionSlug={collectionSlug}\n depth={depth + 1}\n expandedNodes={expandedNodes}\n filterByCollections={filterByCollections}\n icon={icon}\n key={String(childId)}\n limit={limit}\n node={{\n id: childId,\n hasChildren: true,\n title: childTitle,\n }}\n onSelect={onSelect}\n onToggle={onToggle}\n parentFieldName={parentFieldName}\n selected={String(childId) === String(selectedNodeId)}\n selectedNodeId={selectedNodeId}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n })}\n </div>\n {hasMore && (\n <LoadMore\n currentCount={children.length}\n depth={depth + 1}\n id={`load-more-${node.id}`}\n onLoadMore={handleLoadMore}\n totalDocs={totalDocs}\n />\n )}\n </>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useRef","Spinner","ChevronIcon","useTranslation","LoadMore","useFocusableItem","useTreeFocus","useChildren","DEFAULT_TREE_LIMIT","baseClass","getDocumentTitle","doc","useAsTitle","docId","id","idStr","String","value","TreeNode","allPossibleTypeValues","baseFilter","cache","collectionSlug","depth","expandedNodes","filterByCollections","icon","limit","node","onSelect","onToggle","parentFieldName","selected","selectedNodeId","typeFieldName","t","expanded","has","nodeRef","setFocusedId","children","hasMore","isLoading","load","loadMore","loadMoreFromHook","totalDocs","enabled","parentId","handleLoadMore","newDocs","length","firstNewDoc","window","requestAnimationFrame","handleFocus","tabIndex","type","ref","hasChildren","handleToggle","e","stopPropagation","handleSelectClick","handleKeyDown","target","currentTarget","key","preventDefault","_jsxs","undefined","className","onFocus","onKeyDown","role","style","_jsx","filter","Boolean","join","onClick","onMouseDown","direction","size","title","loadingText","_Fragment","map","child","childData","childId","childTitle","currentCount","onLoadMore"],"sources":["../../../../../src/elements/Hierarchy/Tree/TreeNode/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback, useRef } from 'react'\n\nimport type { TreeNodeProps } from '../types.js'\n\nimport { Spinner } from '../../../../elements/Spinner/index.js'\nimport { ChevronIcon } from '../../../../icons/Chevron/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { LoadMore } from '../LoadMore/index.js'\nimport { useFocusableItem, useTreeFocus } from '../TreeFocusContext.js'\nimport { useChildren } from '../useChildren.js'\nimport './index.css'\n\nconst DEFAULT_TREE_LIMIT = 10\n\nconst baseClass = 'tree-node'\n\nconst getDocumentTitle = (doc: Record<string, unknown>, useAsTitle: string | undefined): string => {\n const docId: number | string = doc.id as number | string\n const idStr = typeof docId === 'number' ? String(docId) : docId\n\n if (!useAsTitle) {\n return idStr\n }\n\n const value = doc[useAsTitle]\n if (value && (typeof value === 'string' || typeof value === 'number')) {\n return String(value)\n }\n return idStr\n}\n\nexport const TreeNode = ({\n allPossibleTypeValues,\n baseFilter,\n cache,\n collectionSlug,\n depth = 0,\n expandedNodes,\n filterByCollections,\n icon,\n limit = DEFAULT_TREE_LIMIT,\n node,\n onSelect,\n onToggle,\n parentFieldName,\n selected,\n selectedNodeId,\n typeFieldName,\n useAsTitle,\n}: TreeNodeProps) => {\n const { t } = useTranslation()\n const expanded = expandedNodes.has(node.id)\n const nodeRef = useRef<HTMLDivElement>(null)\n const { setFocusedId } = useTreeFocus()\n\n const {\n children,\n hasMore,\n isLoading,\n load,\n loadMore: loadMoreFromHook,\n totalDocs,\n } = useChildren({\n allPossibleTypeValues,\n baseFilter,\n cache,\n collectionSlug,\n enabled: expanded,\n filterByCollections,\n limit,\n parentFieldName,\n parentId: node.id,\n typeFieldName,\n useAsTitle,\n })\n\n const handleLoadMore = React.useCallback(async () => {\n const newDocs = await loadMoreFromHook()\n\n if (newDocs && newDocs.length > 0) {\n const firstNewDoc = newDocs[0]\n const docId: number | string = (firstNewDoc as { id: number | string }).id\n window.requestAnimationFrame(() => {\n setFocusedId(`node-${docId}`)\n })\n }\n }, [loadMoreFromHook, setFocusedId])\n\n const { handleFocus, tabIndex } = useFocusableItem({\n id: `node-${node.id}`,\n type: 'node',\n ref: nodeRef,\n })\n\n // Determine if node has children:\n // - If explicitly set in data, use that\n // - If expanded and loaded, check the actual children\n // - Otherwise, assume it might have children (show chevron until proven otherwise)\n const hasChildren =\n node.hasChildren === true || (expanded && children !== null ? children.length > 0 : true)\n\n const handleToggle = useCallback(\n (e?: React.SyntheticEvent) => {\n e?.stopPropagation()\n void load()\n onToggle({ id: node.id })\n },\n [load, node.id, onToggle],\n )\n\n const handleSelectClick = useCallback(() => {\n onSelect?.({ id: node.id })\n }, [node.id, onSelect])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.target !== e.currentTarget) {\n return\n }\n switch (e.key) {\n case ' ':\n case 'Enter':\n e.preventDefault()\n e.stopPropagation()\n handleSelectClick()\n break\n case 'ArrowLeft':\n e.preventDefault()\n e.stopPropagation()\n if (hasChildren && expanded) {\n onToggle({ id: node.id })\n }\n break\n case 'ArrowRight':\n e.preventDefault()\n e.stopPropagation()\n if (hasChildren && !expanded) {\n handleToggle()\n }\n break\n }\n },\n [expanded, handleSelectClick, handleToggle, hasChildren, node.id, onToggle],\n )\n\n return (\n <div\n aria-expanded={hasChildren ? expanded : undefined}\n aria-level={depth + 1}\n aria-selected={selected}\n className={baseClass}\n onFocus={(e) => {\n if (e.target === e.currentTarget) {\n handleFocus()\n }\n }}\n onKeyDown={handleKeyDown}\n ref={nodeRef}\n role=\"treeitem\"\n style={{ '--tree-depth': depth } as React.CSSProperties}\n tabIndex={tabIndex}\n >\n <div className={`${baseClass}__content-wrapper`}>\n <div\n className={[\n `${baseClass}__content`,\n 'sidebar-row',\n selected && `${baseClass}__content--selected`,\n selected && 'sidebar-row--selected',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {hasChildren && (\n <button\n aria-label={expanded ? t('general:collapse') : t('general:open')}\n className={`${baseClass}__toggle`}\n onClick={handleToggle}\n onMouseDown={(e) => e.preventDefault()}\n tabIndex={-1}\n type=\"button\"\n >\n <ChevronIcon direction={expanded ? 'down' : 'right'} size={16} />\n </button>\n )}\n <button\n className={[\n `${baseClass}__node-trigger`,\n selected && `${baseClass}__node-trigger--selected`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={handleSelectClick}\n onMouseDown={(e) => e.preventDefault()}\n tabIndex={-1}\n title={node.title}\n type=\"button\"\n >\n {Boolean(icon) && <span className=\"sidebar-row__icon\">{icon}</span>}\n <span className={`${baseClass}__title sidebar-row__title`}>{node.title}</span>\n </button>\n {isLoading && expanded && (\n <span className={`${baseClass}__loading`}>\n <Spinner loadingText={null} size=\"sm\" />\n </span>\n )}\n </div>\n </div>\n\n {expanded && children && children.length > 0 && (\n <>\n <div className={`${baseClass}__children`} role=\"group\">\n {children.map((child) => {\n const childData = child as { id: number | string }\n const childId = childData.id\n const childTitle = getDocumentTitle(child, useAsTitle)\n return (\n <TreeNode\n allPossibleTypeValues={allPossibleTypeValues}\n baseFilter={baseFilter}\n cache={cache}\n collectionSlug={collectionSlug}\n depth={depth + 1}\n expandedNodes={expandedNodes}\n filterByCollections={filterByCollections}\n icon={icon}\n key={String(childId)}\n limit={limit}\n node={{\n id: childId,\n hasChildren: true,\n title: childTitle,\n }}\n onSelect={onSelect}\n onToggle={onToggle}\n parentFieldName={parentFieldName}\n selected={String(childId) === String(selectedNodeId)}\n selectedNodeId={selectedNodeId}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n })}\n </div>\n {hasMore && (\n <LoadMore\n currentCount={children.length}\n depth={depth + 1}\n id={`load-more-${node.id}`}\n onLoadMore={handleLoadMore}\n totalDocs={totalDocs}\n />\n )}\n </>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,6 @@
10
10
  --tree-indent: var(--spacer-3);
11
11
  --tree-chevron-width: var(--spacer-3);
12
12
  --tree-chevron-spacing: var(--spacer-2);
13
- --tree-node-padding-y: var(--spacer-1);
14
13
  --tree-node-content-height: var(--text-body-medium-line-height);
15
14
  --tree-row-gap: var(--spacer-1);
16
15
  --tree-font-size: var(--text-body-medium-font-size);
@@ -38,6 +37,7 @@
38
37
  .tree__all-option {
39
38
  gap: var(--spacer-1);
40
39
  padding-left: var(--spacer-2);
40
+ padding-block: var(--spacer-1);
41
41
 
42
42
  .sidebar-row__title {
43
43
  font-weight: var(--text-body-medium-strong-font-weight);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAwD,MAAM,OAAO,CAAA;AAE5E,OAAO,KAAK,EAAkB,kBAAkB,EAAgB,MAAM,YAAY,CAAA;AAgBlF,OAAO,aAAa,CAAA;AAwWpB,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAMtD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAwD,MAAM,OAAO,CAAA;AAE5E,OAAO,KAAK,EAAkB,kBAAkB,EAAgB,MAAM,YAAY,CAAA;AAgBlF,OAAO,aAAa,CAAA;AAsYpB,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAMtD,CAAA"}
@@ -45,7 +45,9 @@ const HierarchyTreeInner = ({
45
45
  useAsTitle: useAsTitleProp
46
46
  }) => {
47
47
  const {
48
- moveFocus
48
+ focusedId,
49
+ moveFocus,
50
+ setFocusedId
49
51
  } = useTreeFocus();
50
52
  const router = useRouter();
51
53
  const {
@@ -204,15 +206,26 @@ const HierarchyTreeInner = ({
204
206
  id: id_0
205
207
  });
206
208
  }, [onNodeClick]);
209
+ const rootFocusableIds = useMemo(() => rootNodes ? rootNodes.map(node => `node-${String(node.id)}`) : [], [rootNodes]);
210
+ const firstRootFocusableId = rootFocusableIds[0];
211
+ const lastRootFocusableId = rootFocusableIds[rootFocusableIds.length - 1];
207
212
  const handleTreeKeyDown = useCallback(e => {
208
213
  if (e.key === 'ArrowDown') {
209
214
  e.preventDefault();
215
+ if (focusedId && firstRootFocusableId && lastRootFocusableId && focusedId === lastRootFocusableId) {
216
+ setFocusedId(firstRootFocusableId);
217
+ return;
218
+ }
210
219
  moveFocus('down');
211
220
  } else if (e.key === 'ArrowUp') {
212
221
  e.preventDefault();
222
+ if (focusedId && firstRootFocusableId && lastRootFocusableId && focusedId === firstRootFocusableId) {
223
+ setFocusedId(lastRootFocusableId);
224
+ return;
225
+ }
213
226
  moveFocus('up');
214
227
  }
215
- }, [moveFocus]);
228
+ }, [firstRootFocusableId, focusedId, lastRootFocusableId, moveFocus, setFocusedId]);
216
229
  if (isLoading && !rootNodes) {
217
230
  return /*#__PURE__*/_jsx("div", {
218
231
  className: baseClass,
@@ -302,10 +315,10 @@ const HierarchyTreeInner = ({
302
315
  redirectAfterCreate: false
303
316
  })]
304
317
  })]
305
- }), rootNodes.map(node => {
306
- const nodeId_0 = node.id;
318
+ }), rootNodes.map(node_0 => {
319
+ const nodeId_0 = node_0.id;
307
320
  const nodeIdStr = typeof nodeId_0 === 'number' ? String(nodeId_0) : nodeId_0;
308
- const nodeTitle = getDocumentTitle(node, useAsTitle);
321
+ const nodeTitle = getDocumentTitle(node_0, useAsTitle);
309
322
  return /*#__PURE__*/_jsx(TreeNode, {
310
323
  allPossibleTypeValues: allPossibleTypeValues,
311
324
  baseFilter: baseFilter,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","getTranslation","DEFAULT_HIERARCHY_TREE_LIMIT","React","useCallback","useId","useMemo","useRef","useState","PlusIcon","useAuth","useConfig","useHierarchy","useRouter","useTranslation","Button","CreateDocumentButton","DelayedSpinner","DocumentDrawer","LoadMore","TreeFocusProvider","useTreeFocus","TreeNode","useChildren","baseClass","getDocumentTitle","doc","useAsTitle","docId","id","idStr","String","value","HierarchyTreeInner","baseFilter","collectionSlug","filterByCollections","icon","initialData","initialDataProp","initialExpandedNodes","initialExpandedNodesProp","onNodeClick","selectedNodeId","useAsTitleProp","moveFocus","router","i18n","t","permissions","getEntityConfig","closeModal","openModal","createDrawerSlug","isCreateDrawerOpen","setIsCreateDrawerOpen","getExpandedNodesForCollection","getTreeDataForCollection","toggleNodeForCollection","typeFieldName","collectionConfig","hierarchyConfig","hierarchy","undefined","parentFieldName","treeLimit","admin","canCreate","Boolean","collections","create","allPossibleTypeValues","relatedCollections","Object","keys","contextData","baseFilterKey","JSON","stringify","contextBaseFilterKey","contextSeededRef","lastInitialExpandedRef","current","expandedNodes","contextExpanded","size","Set","handleToggleNode","wasSeeded","length","initialSet","map","isCurrentlyExpanded","has","nodeId","childrenCache","Map","prevBaseFilterKeyRef","clear","docs","docsByParent","parentId","parentKey","set","get","push","filterKey","slice","sort","join","cacheKey","parentMeta","loadedParents","loadedCount","children","hasMore","page","Math","ceil","totalDocs","treeRef","rootNodes","isLoading","loadMore","loadMoreFromHook","refresh","cache","enabled","limit","handleLoadMore","handleNodeClick","handleTreeKeyDown","e","key","preventDefault","_jsx","className","collectionLabel","buttonStyle","drawerSlug","label","labels","singular","onSave","isAllSelected","handleAllClick","_jsxs","onKeyDown","ref","role","tabIndex","filter","onClick","plural","_Fragment","margin","redirectAfterCreate","node","nodeIdStr","nodeTitle","depth","hasChildren","title","onSelect","onToggle","selected","currentCount","onLoadMore","HierarchyTree","props"],"sources":["../../../../src/elements/Hierarchy/Tree/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { DEFAULT_HIERARCHY_TREE_LIMIT } from 'payload/shared'\nimport React, { useCallback, useId, useMemo, useRef, useState } from 'react'\n\nimport type { CachedChildren, HierarchyTreeProps, TreeDocument } from './types.js'\n\nimport { PlusIcon } from '../../../icons/Plus/index.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouter } from '../../../providers/RouterAdapter/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { CreateDocumentButton } from '../../CreateDocumentButton/index.js'\nimport { DelayedSpinner } from '../../DelayedSpinner/index.js'\nimport { DocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { LoadMore } from './LoadMore/index.js'\nimport { TreeFocusProvider, useTreeFocus } from './TreeFocusContext.js'\nimport { TreeNode } from './TreeNode/index.js'\nimport { useChildren } from './useChildren.js'\nimport './index.css'\n\nconst baseClass = 'tree'\n\nconst getDocumentTitle = (doc: TreeDocument, useAsTitle: string | undefined): string => {\n const docId: number | string = doc.id\n const idStr = typeof docId === 'number' ? String(docId) : docId\n\n if (!useAsTitle) {\n return idStr\n }\n\n const value = doc[useAsTitle]\n if (value && (typeof value === 'string' || typeof value === 'number')) {\n return String(value)\n }\n return idStr\n}\n\nconst HierarchyTreeInner: React.FC<HierarchyTreeProps> = ({\n baseFilter,\n collectionSlug,\n filterByCollections,\n icon,\n initialData: initialDataProp,\n initialExpandedNodes: initialExpandedNodesProp,\n onNodeClick,\n selectedNodeId,\n useAsTitle: useAsTitleProp,\n}) => {\n const { moveFocus } = useTreeFocus()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { getEntityConfig } = useConfig()\n const { closeModal, openModal } = useModal()\n const createDrawerSlug = `tree-create-${useId()}`\n const [isCreateDrawerOpen, setIsCreateDrawerOpen] = useState(false)\n\n const {\n getExpandedNodesForCollection,\n getTreeDataForCollection,\n toggleNodeForCollection,\n typeFieldName,\n } = useHierarchy()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const hierarchyConfig =\n collectionConfig.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n const parentFieldName = hierarchyConfig?.parentFieldName\n const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT\n const useAsTitle = useAsTitleProp ?? collectionConfig.admin?.useAsTitle\n const canCreate = Boolean(permissions?.collections?.[collectionSlug]?.create)\n\n const allPossibleTypeValues = useMemo(\n () =>\n hierarchyConfig?.relatedCollections\n ? Object.keys(hierarchyConfig.relatedCollections)\n : undefined,\n [hierarchyConfig?.relatedCollections],\n )\n\n const contextData = getTreeDataForCollection(collectionSlug)\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n const contextBaseFilterKey = contextData?.baseFilter ? JSON.stringify(contextData.baseFilter) : ''\n const initialData =\n baseFilterKey === contextBaseFilterKey ? (contextData ?? initialDataProp) : initialDataProp\n // Tracks whether context has been seeded at least once since the last navigation.\n // Resets when initialExpandedNodesProp changes (new array reference = navigation).\n // Allows the memo to distinguish \"not yet seeded\" (fall back to prop) from\n // \"user collapsed all nodes\" (trust empty context).\n const contextSeededRef = useRef(false)\n const lastInitialExpandedRef = useRef(initialExpandedNodesProp)\n if (lastInitialExpandedRef.current !== initialExpandedNodesProp) {\n lastInitialExpandedRef.current = initialExpandedNodesProp\n contextSeededRef.current = false\n }\n\n const expandedNodes = useMemo(() => {\n const contextExpanded = getExpandedNodesForCollection(collectionSlug)\n if (contextExpanded.size > 0) {\n contextSeededRef.current = true\n return contextExpanded\n }\n if (contextSeededRef.current) {\n // Context was seeded (had nodes since last navigation) — trust empty set as \"all collapsed\"\n return contextExpanded\n }\n return initialExpandedNodesProp ? new Set(initialExpandedNodesProp) : contextExpanded\n }, [collectionSlug, getExpandedNodesForCollection, initialExpandedNodesProp])\n\n const handleToggleNode = useCallback(\n ({ id }: { id: number | string }) => {\n // Mark context as seeded so the memo never falls back to the prop after this interaction.\n // Capture the previous value first — seeding is only needed on the very first interaction.\n const wasSeeded = contextSeededRef.current\n contextSeededRef.current = true\n const contextExpanded = getExpandedNodesForCollection(collectionSlug)\n if (!wasSeeded && contextExpanded.size === 0 && initialExpandedNodesProp?.length) {\n // Context not yet seeded. Seed it with all initial nodes, applying the toggle correctly:\n // exclude the target if collapsing, include it if expanding.\n const initialSet = new Set(initialExpandedNodesProp.map(String))\n const isCurrentlyExpanded = initialSet.has(String(id))\n for (const nodeId of initialExpandedNodesProp) {\n if (!isCurrentlyExpanded || String(nodeId) !== String(id)) {\n toggleNodeForCollection(collectionSlug, nodeId)\n }\n }\n if (!isCurrentlyExpanded) {\n toggleNodeForCollection(collectionSlug, id)\n }\n return\n }\n toggleNodeForCollection(collectionSlug, id)\n },\n [\n collectionSlug,\n getExpandedNodesForCollection,\n initialExpandedNodesProp,\n toggleNodeForCollection,\n ],\n )\n\n // Pre-populate cache with initialData synchronously before first render\n const childrenCache = useRef<Map<string, CachedChildren>>(new Map())\n\n const prevBaseFilterKeyRef = useRef(baseFilterKey)\n if (prevBaseFilterKeyRef.current !== baseFilterKey) {\n prevBaseFilterKeyRef.current = baseFilterKey\n childrenCache.current.clear()\n }\n\n useMemo(() => {\n if (!initialData || initialData.docs.length === 0) {\n return\n }\n\n const docsByParent = new Map<string, TreeDocument[]>()\n for (const doc of initialData.docs) {\n const parentId = doc[parentFieldName] || 'null'\n const parentKey = String(parentId)\n if (!docsByParent.has(parentKey)) {\n docsByParent.set(parentKey, [])\n }\n docsByParent.get(parentKey).push(doc)\n }\n\n const filterKey = filterByCollections?.length\n ? filterByCollections.slice().sort().join(',')\n : ''\n for (const [parentKey, docs] of docsByParent) {\n const cacheKey = `${collectionSlug}-${parentKey}-${filterKey}-${baseFilterKey}`\n const parentMeta = initialData.loadedParents[parentKey]\n\n if (parentMeta) {\n const loadedCount = parentMeta.loadedCount ?? docs.length\n childrenCache.current.set(cacheKey, {\n children: docs,\n hasMore: parentMeta.hasMore,\n page: Math.ceil(loadedCount / treeLimit) || 1,\n totalDocs: parentMeta.totalDocs,\n })\n } else {\n childrenCache.current.set(cacheKey, {\n children: docs,\n hasMore: false,\n page: 1,\n totalDocs: docs.length,\n })\n }\n }\n }, [initialData, filterByCollections, parentFieldName, collectionSlug, treeLimit, baseFilterKey])\n\n const treeRef = useRef<HTMLDivElement>(null)\n\n const {\n children: rootNodes,\n hasMore,\n isLoading,\n loadMore: loadMoreFromHook,\n refresh,\n totalDocs,\n } = useChildren({\n allPossibleTypeValues,\n baseFilter,\n cache: childrenCache,\n collectionSlug,\n enabled: true,\n filterByCollections,\n initialData,\n limit: treeLimit,\n parentFieldName,\n parentId: 'null',\n typeFieldName,\n useAsTitle,\n })\n\n const handleLoadMore = useCallback(async () => {\n await loadMoreFromHook()\n }, [loadMoreFromHook])\n\n const handleNodeClick = useCallback(\n ({ id }: { id: number | string }) => {\n onNodeClick?.({ id })\n },\n [onNodeClick],\n )\n\n const handleTreeKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n moveFocus('down')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n moveFocus('up')\n }\n },\n [moveFocus],\n )\n\n if (isLoading && !rootNodes) {\n return (\n <div className={baseClass}>\n <DelayedSpinner baseClass={baseClass} isLoading={true} />\n </div>\n )\n }\n\n if (!rootNodes || rootNodes.length === 0) {\n const collectionLabel = getEntityConfig({ collectionSlug })\n return (\n <div className={baseClass}>\n <CreateDocumentButton\n buttonStyle=\"primary\"\n collections={[{ collectionSlug }]}\n drawerSlug={createDrawerSlug}\n label={t('general:createNewLabel', {\n label: getTranslation(collectionLabel.labels.singular, i18n),\n })}\n onSave={async () => {\n await refresh()\n router.refresh()\n }}\n />\n </div>\n )\n }\n\n const isAllSelected = selectedNodeId === null\n const handleAllClick = () => onNodeClick?.({ id: null })\n\n return (\n <div\n className={baseClass}\n onKeyDown={handleTreeKeyDown}\n ref={treeRef}\n role=\"tree\"\n tabIndex={-1}\n >\n <div className={`${baseClass}__all-option-wrapper`}>\n <div\n aria-selected={isAllSelected}\n className={[\n `${baseClass}__all-option`,\n 'sidebar-row',\n isAllSelected && `${baseClass}__all-option--selected`,\n isAllSelected && 'sidebar-row--selected',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={handleAllClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleAllClick()\n }\n }}\n role=\"treeitem\"\n tabIndex={0}\n >\n <span className=\"sidebar-row__title\">\n {t('general:all')}{' '}\n {getTranslation(getEntityConfig({ collectionSlug })?.labels?.plural, i18n)}\n </span>\n </div>\n {canCreate && (\n <>\n <Button\n aria-label={t('general:createNew')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__create-button`}\n margin={false}\n onClick={() => {\n setIsCreateDrawerOpen(true)\n openModal(createDrawerSlug)\n }}\n >\n <PlusIcon size={24} />\n </Button>\n {isCreateDrawerOpen && (\n <DocumentDrawer\n collectionSlug={collectionSlug}\n drawerSlug={createDrawerSlug}\n initialData={parentFieldName ? { [parentFieldName]: null } : undefined}\n onSave={async () => {\n closeModal(createDrawerSlug)\n setIsCreateDrawerOpen(false)\n await refresh()\n router.refresh()\n }}\n redirectAfterCreate={false}\n />\n )}\n </>\n )}\n </div>\n {rootNodes.map((node) => {\n const nodeId: number | string = node.id\n const nodeIdStr = typeof nodeId === 'number' ? String(nodeId) : nodeId\n const nodeTitle = getDocumentTitle(node, useAsTitle)\n\n return (\n <TreeNode\n allPossibleTypeValues={allPossibleTypeValues}\n baseFilter={baseFilter}\n cache={childrenCache}\n collectionSlug={collectionSlug}\n depth={0}\n expandedNodes={expandedNodes}\n filterByCollections={filterByCollections}\n icon={icon}\n key={nodeIdStr}\n limit={treeLimit}\n node={{ id: nodeId, hasChildren: true, title: nodeTitle }}\n onSelect={handleNodeClick}\n onToggle={handleToggleNode}\n parentFieldName={parentFieldName}\n selected={nodeIdStr === String(selectedNodeId)}\n selectedNodeId={selectedNodeId}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n })}\n {hasMore && (\n <LoadMore\n currentCount={rootNodes.length}\n depth={0}\n id=\"load-more-root\"\n onLoadMore={handleLoadMore}\n totalDocs={totalDocs}\n />\n )}\n </div>\n )\n}\n\nexport const HierarchyTree: React.FC<HierarchyTreeProps> = (props) => {\n return (\n <TreeFocusProvider>\n <HierarchyTreeInner {...props} />\n </TreeFocusProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","getTranslation","DEFAULT_HIERARCHY_TREE_LIMIT","React","useCallback","useId","useMemo","useRef","useState","PlusIcon","useAuth","useConfig","useHierarchy","useRouter","useTranslation","Button","CreateDocumentButton","DelayedSpinner","DocumentDrawer","LoadMore","TreeFocusProvider","useTreeFocus","TreeNode","useChildren","baseClass","getDocumentTitle","doc","useAsTitle","docId","id","idStr","String","value","HierarchyTreeInner","baseFilter","collectionSlug","filterByCollections","icon","initialData","initialDataProp","initialExpandedNodes","initialExpandedNodesProp","onNodeClick","selectedNodeId","useAsTitleProp","focusedId","moveFocus","setFocusedId","router","i18n","t","permissions","getEntityConfig","closeModal","openModal","createDrawerSlug","isCreateDrawerOpen","setIsCreateDrawerOpen","getExpandedNodesForCollection","getTreeDataForCollection","toggleNodeForCollection","typeFieldName","collectionConfig","hierarchyConfig","hierarchy","undefined","parentFieldName","treeLimit","admin","canCreate","Boolean","collections","create","allPossibleTypeValues","relatedCollections","Object","keys","contextData","baseFilterKey","JSON","stringify","contextBaseFilterKey","contextSeededRef","lastInitialExpandedRef","current","expandedNodes","contextExpanded","size","Set","handleToggleNode","wasSeeded","length","initialSet","map","isCurrentlyExpanded","has","nodeId","childrenCache","Map","prevBaseFilterKeyRef","clear","docs","docsByParent","parentId","parentKey","set","get","push","filterKey","slice","sort","join","cacheKey","parentMeta","loadedParents","loadedCount","children","hasMore","page","Math","ceil","totalDocs","treeRef","rootNodes","isLoading","loadMore","loadMoreFromHook","refresh","cache","enabled","limit","handleLoadMore","handleNodeClick","rootFocusableIds","node","firstRootFocusableId","lastRootFocusableId","handleTreeKeyDown","e","key","preventDefault","_jsx","className","collectionLabel","buttonStyle","drawerSlug","label","labels","singular","onSave","isAllSelected","handleAllClick","_jsxs","onKeyDown","ref","role","tabIndex","filter","onClick","plural","_Fragment","margin","redirectAfterCreate","nodeIdStr","nodeTitle","depth","hasChildren","title","onSelect","onToggle","selected","currentCount","onLoadMore","HierarchyTree","props"],"sources":["../../../../src/elements/Hierarchy/Tree/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { DEFAULT_HIERARCHY_TREE_LIMIT } from 'payload/shared'\nimport React, { useCallback, useId, useMemo, useRef, useState } from 'react'\n\nimport type { CachedChildren, HierarchyTreeProps, TreeDocument } from './types.js'\n\nimport { PlusIcon } from '../../../icons/Plus/index.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouter } from '../../../providers/RouterAdapter/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { CreateDocumentButton } from '../../CreateDocumentButton/index.js'\nimport { DelayedSpinner } from '../../DelayedSpinner/index.js'\nimport { DocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { LoadMore } from './LoadMore/index.js'\nimport { TreeFocusProvider, useTreeFocus } from './TreeFocusContext.js'\nimport { TreeNode } from './TreeNode/index.js'\nimport { useChildren } from './useChildren.js'\nimport './index.css'\n\nconst baseClass = 'tree'\n\nconst getDocumentTitle = (doc: TreeDocument, useAsTitle: string | undefined): string => {\n const docId: number | string = doc.id\n const idStr = typeof docId === 'number' ? String(docId) : docId\n\n if (!useAsTitle) {\n return idStr\n }\n\n const value = doc[useAsTitle]\n if (value && (typeof value === 'string' || typeof value === 'number')) {\n return String(value)\n }\n return idStr\n}\n\nconst HierarchyTreeInner: React.FC<HierarchyTreeProps> = ({\n baseFilter,\n collectionSlug,\n filterByCollections,\n icon,\n initialData: initialDataProp,\n initialExpandedNodes: initialExpandedNodesProp,\n onNodeClick,\n selectedNodeId,\n useAsTitle: useAsTitleProp,\n}) => {\n const { focusedId, moveFocus, setFocusedId } = useTreeFocus()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { getEntityConfig } = useConfig()\n const { closeModal, openModal } = useModal()\n const createDrawerSlug = `tree-create-${useId()}`\n const [isCreateDrawerOpen, setIsCreateDrawerOpen] = useState(false)\n\n const {\n getExpandedNodesForCollection,\n getTreeDataForCollection,\n toggleNodeForCollection,\n typeFieldName,\n } = useHierarchy()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const hierarchyConfig =\n collectionConfig.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n const parentFieldName = hierarchyConfig?.parentFieldName\n const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT\n const useAsTitle = useAsTitleProp ?? collectionConfig.admin?.useAsTitle\n const canCreate = Boolean(permissions?.collections?.[collectionSlug]?.create)\n\n const allPossibleTypeValues = useMemo(\n () =>\n hierarchyConfig?.relatedCollections\n ? Object.keys(hierarchyConfig.relatedCollections)\n : undefined,\n [hierarchyConfig?.relatedCollections],\n )\n\n const contextData = getTreeDataForCollection(collectionSlug)\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n const contextBaseFilterKey = contextData?.baseFilter ? JSON.stringify(contextData.baseFilter) : ''\n const initialData =\n baseFilterKey === contextBaseFilterKey ? (contextData ?? initialDataProp) : initialDataProp\n // Tracks whether context has been seeded at least once since the last navigation.\n // Resets when initialExpandedNodesProp changes (new array reference = navigation).\n // Allows the memo to distinguish \"not yet seeded\" (fall back to prop) from\n // \"user collapsed all nodes\" (trust empty context).\n const contextSeededRef = useRef(false)\n const lastInitialExpandedRef = useRef(initialExpandedNodesProp)\n if (lastInitialExpandedRef.current !== initialExpandedNodesProp) {\n lastInitialExpandedRef.current = initialExpandedNodesProp\n contextSeededRef.current = false\n }\n\n const expandedNodes = useMemo(() => {\n const contextExpanded = getExpandedNodesForCollection(collectionSlug)\n if (contextExpanded.size > 0) {\n contextSeededRef.current = true\n return contextExpanded\n }\n if (contextSeededRef.current) {\n // Context was seeded (had nodes since last navigation) — trust empty set as \"all collapsed\"\n return contextExpanded\n }\n return initialExpandedNodesProp ? new Set(initialExpandedNodesProp) : contextExpanded\n }, [collectionSlug, getExpandedNodesForCollection, initialExpandedNodesProp])\n\n const handleToggleNode = useCallback(\n ({ id }: { id: number | string }) => {\n // Mark context as seeded so the memo never falls back to the prop after this interaction.\n // Capture the previous value first — seeding is only needed on the very first interaction.\n const wasSeeded = contextSeededRef.current\n contextSeededRef.current = true\n const contextExpanded = getExpandedNodesForCollection(collectionSlug)\n if (!wasSeeded && contextExpanded.size === 0 && initialExpandedNodesProp?.length) {\n // Context not yet seeded. Seed it with all initial nodes, applying the toggle correctly:\n // exclude the target if collapsing, include it if expanding.\n const initialSet = new Set(initialExpandedNodesProp.map(String))\n const isCurrentlyExpanded = initialSet.has(String(id))\n for (const nodeId of initialExpandedNodesProp) {\n if (!isCurrentlyExpanded || String(nodeId) !== String(id)) {\n toggleNodeForCollection(collectionSlug, nodeId)\n }\n }\n if (!isCurrentlyExpanded) {\n toggleNodeForCollection(collectionSlug, id)\n }\n return\n }\n toggleNodeForCollection(collectionSlug, id)\n },\n [\n collectionSlug,\n getExpandedNodesForCollection,\n initialExpandedNodesProp,\n toggleNodeForCollection,\n ],\n )\n\n // Pre-populate cache with initialData synchronously before first render\n const childrenCache = useRef<Map<string, CachedChildren>>(new Map())\n\n const prevBaseFilterKeyRef = useRef(baseFilterKey)\n if (prevBaseFilterKeyRef.current !== baseFilterKey) {\n prevBaseFilterKeyRef.current = baseFilterKey\n childrenCache.current.clear()\n }\n\n useMemo(() => {\n if (!initialData || initialData.docs.length === 0) {\n return\n }\n\n const docsByParent = new Map<string, TreeDocument[]>()\n for (const doc of initialData.docs) {\n const parentId = doc[parentFieldName] || 'null'\n const parentKey = String(parentId)\n if (!docsByParent.has(parentKey)) {\n docsByParent.set(parentKey, [])\n }\n docsByParent.get(parentKey).push(doc)\n }\n\n const filterKey = filterByCollections?.length\n ? filterByCollections.slice().sort().join(',')\n : ''\n for (const [parentKey, docs] of docsByParent) {\n const cacheKey = `${collectionSlug}-${parentKey}-${filterKey}-${baseFilterKey}`\n const parentMeta = initialData.loadedParents[parentKey]\n\n if (parentMeta) {\n const loadedCount = parentMeta.loadedCount ?? docs.length\n childrenCache.current.set(cacheKey, {\n children: docs,\n hasMore: parentMeta.hasMore,\n page: Math.ceil(loadedCount / treeLimit) || 1,\n totalDocs: parentMeta.totalDocs,\n })\n } else {\n childrenCache.current.set(cacheKey, {\n children: docs,\n hasMore: false,\n page: 1,\n totalDocs: docs.length,\n })\n }\n }\n }, [initialData, filterByCollections, parentFieldName, collectionSlug, treeLimit, baseFilterKey])\n\n const treeRef = useRef<HTMLDivElement>(null)\n\n const {\n children: rootNodes,\n hasMore,\n isLoading,\n loadMore: loadMoreFromHook,\n refresh,\n totalDocs,\n } = useChildren({\n allPossibleTypeValues,\n baseFilter,\n cache: childrenCache,\n collectionSlug,\n enabled: true,\n filterByCollections,\n initialData,\n limit: treeLimit,\n parentFieldName,\n parentId: 'null',\n typeFieldName,\n useAsTitle,\n })\n\n const handleLoadMore = useCallback(async () => {\n await loadMoreFromHook()\n }, [loadMoreFromHook])\n\n const handleNodeClick = useCallback(\n ({ id }: { id: number | string }) => {\n onNodeClick?.({ id })\n },\n [onNodeClick],\n )\n\n const rootFocusableIds = useMemo(\n () => (rootNodes ? rootNodes.map((node) => `node-${String(node.id)}`) : []),\n [rootNodes],\n )\n\n const firstRootFocusableId = rootFocusableIds[0]\n const lastRootFocusableId = rootFocusableIds[rootFocusableIds.length - 1]\n\n const handleTreeKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n\n if (\n focusedId &&\n firstRootFocusableId &&\n lastRootFocusableId &&\n focusedId === lastRootFocusableId\n ) {\n setFocusedId(firstRootFocusableId)\n return\n }\n\n moveFocus('down')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n\n if (\n focusedId &&\n firstRootFocusableId &&\n lastRootFocusableId &&\n focusedId === firstRootFocusableId\n ) {\n setFocusedId(lastRootFocusableId)\n return\n }\n\n moveFocus('up')\n }\n },\n [firstRootFocusableId, focusedId, lastRootFocusableId, moveFocus, setFocusedId],\n )\n\n if (isLoading && !rootNodes) {\n return (\n <div className={baseClass}>\n <DelayedSpinner baseClass={baseClass} isLoading={true} />\n </div>\n )\n }\n\n if (!rootNodes || rootNodes.length === 0) {\n const collectionLabel = getEntityConfig({ collectionSlug })\n return (\n <div className={baseClass}>\n <CreateDocumentButton\n buttonStyle=\"primary\"\n collections={[{ collectionSlug }]}\n drawerSlug={createDrawerSlug}\n label={t('general:createNewLabel', {\n label: getTranslation(collectionLabel.labels.singular, i18n),\n })}\n onSave={async () => {\n await refresh()\n router.refresh()\n }}\n />\n </div>\n )\n }\n\n const isAllSelected = selectedNodeId === null\n const handleAllClick = () => onNodeClick?.({ id: null })\n\n return (\n <div\n className={baseClass}\n onKeyDown={handleTreeKeyDown}\n ref={treeRef}\n role=\"tree\"\n tabIndex={-1}\n >\n <div className={`${baseClass}__all-option-wrapper`}>\n <div\n aria-selected={isAllSelected}\n className={[\n `${baseClass}__all-option`,\n 'sidebar-row',\n isAllSelected && `${baseClass}__all-option--selected`,\n isAllSelected && 'sidebar-row--selected',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={handleAllClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleAllClick()\n }\n }}\n role=\"treeitem\"\n tabIndex={0}\n >\n <span className=\"sidebar-row__title\">\n {t('general:all')}{' '}\n {getTranslation(getEntityConfig({ collectionSlug })?.labels?.plural, i18n)}\n </span>\n </div>\n {canCreate && (\n <>\n <Button\n aria-label={t('general:createNew')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__create-button`}\n margin={false}\n onClick={() => {\n setIsCreateDrawerOpen(true)\n openModal(createDrawerSlug)\n }}\n >\n <PlusIcon size={24} />\n </Button>\n {isCreateDrawerOpen && (\n <DocumentDrawer\n collectionSlug={collectionSlug}\n drawerSlug={createDrawerSlug}\n initialData={parentFieldName ? { [parentFieldName]: null } : undefined}\n onSave={async () => {\n closeModal(createDrawerSlug)\n setIsCreateDrawerOpen(false)\n await refresh()\n router.refresh()\n }}\n redirectAfterCreate={false}\n />\n )}\n </>\n )}\n </div>\n {rootNodes.map((node) => {\n const nodeId: number | string = node.id\n const nodeIdStr = typeof nodeId === 'number' ? String(nodeId) : nodeId\n const nodeTitle = getDocumentTitle(node, useAsTitle)\n\n return (\n <TreeNode\n allPossibleTypeValues={allPossibleTypeValues}\n baseFilter={baseFilter}\n cache={childrenCache}\n collectionSlug={collectionSlug}\n depth={0}\n expandedNodes={expandedNodes}\n filterByCollections={filterByCollections}\n icon={icon}\n key={nodeIdStr}\n limit={treeLimit}\n node={{ id: nodeId, hasChildren: true, title: nodeTitle }}\n onSelect={handleNodeClick}\n onToggle={handleToggleNode}\n parentFieldName={parentFieldName}\n selected={nodeIdStr === String(selectedNodeId)}\n selectedNodeId={selectedNodeId}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n })}\n {hasMore && (\n <LoadMore\n currentCount={rootNodes.length}\n depth={0}\n id=\"load-more-root\"\n onLoadMore={handleLoadMore}\n totalDocs={totalDocs}\n />\n )}\n </div>\n )\n}\n\nexport const HierarchyTree: React.FC<HierarchyTreeProps> = (props) => {\n return (\n <TreeFocusProvider>\n <HierarchyTreeInner {...props} />\n </TreeFocusProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useChildren.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/useChildren.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAMpC,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAK1E,KAAK,eAAe,GAAG;IACrB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;IAChC,gEAAgE;IAChE,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAA;IACzB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,WAAW,CAAC,EAAE,IAAI,GAAG,eAAe,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,IAAI,GAAG,YAAY,EAAE,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,wFAAwF;IACxF,IAAI,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACnC,QAAQ,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACvC,OAAO,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACtC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,+LAczB,eAAe,KAAG,iBAyPpB,CAAA"}
1
+ {"version":3,"file":"useChildren.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/useChildren.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAMpC,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAK1E,KAAK,eAAe,GAAG;IACrB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;IAChC,gEAAgE;IAChE,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAA;IACzB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,WAAW,CAAC,EAAE,IAAI,GAAG,eAAe,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,IAAI,GAAG,YAAY,EAAE,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,wFAAwF;IACxF,IAAI,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACnC,QAAQ,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACvC,OAAO,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACtC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,WAAW,kMAcrB,eAAe,KAAG,iBAyPpB,CAAA"}
@@ -20,7 +20,6 @@
20
20
  background: transparent;
21
21
  color: var(--color-icon-secondary);
22
22
  cursor: pointer;
23
- transition: color 100ms;
24
23
 
25
24
  &:hover:not(:disabled) {
26
25
  color: var(--color-icon);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/LeaveWithoutSaving/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAS7D,KAAK,uBAAuB,GAAG;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACtC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;CAC9C,CAAA;AAID,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAgDhE,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,qCAIrC;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACtC,sBAcA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/LeaveWithoutSaving/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAS7D,KAAK,uBAAuB,GAAG;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACtC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;CAC9C,CAAA;AAID,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAgDhE,CAAA;AAED,eAAO,MAAM,uBAAuB,wCAIjC;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACtC,sBAcA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePreventLeave.d.ts","sourceRoot":"","sources":["../../../src/elements/LeaveWithoutSaving/usePreventLeave.tsx"],"names":[],"mappings":"AA4BA,eAAO,MAAM,eAAe,GAAI,UAAS,CAAC,MAAM,OAAO,CAAC,GAAG,OAAc,EAAE,UAAU,MAAM,SA6B1F,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,yDAM7B;IACD,WAAW,EAAE,OAAO,CAAA;IAEpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAErB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB,SA8FA,CAAA"}
1
+ {"version":3,"file":"usePreventLeave.d.ts","sourceRoot":"","sources":["../../../src/elements/LeaveWithoutSaving/usePreventLeave.tsx"],"names":[],"mappings":"AA4BA,eAAO,MAAM,eAAe,aAAa,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,YAAmB,MAAM,SA6B1F,CAAA;AAED,eAAO,MAAM,eAAe,4DAMzB;IACD,WAAW,EAAE,OAAO,CAAA;IAEpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAErB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB,SA8FA,CAAA"}
@@ -127,7 +127,7 @@ export const ListControls = props => {
127
127
  className: `${baseClass}__toggle-where`,
128
128
  extraButtonProps: {
129
129
  "aria-controls": `${baseClass}-where`,
130
- "aria-expanded": visibleDrawer === "where"
130
+ "aria-expanded": isWhereOpen
131
131
  },
132
132
  icon: _jsx(ChevronIcon, {
133
133
  direction: isWhereOpen ? "up" : "down",