@payloadcms/ui 3.80.0-internal.c396c15 → 3.80.0-internal.cdd7ef7

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 (518) hide show
  1. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/EditForm/index.js +0 -12
  3. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  4. package/dist/elements/Button/index.d.ts.map +1 -1
  5. package/dist/elements/Button/index.js +5 -3
  6. package/dist/elements/Button/index.js.map +1 -1
  7. package/dist/elements/Button/index.scss +38 -5
  8. package/dist/elements/Button/types.d.ts +1 -1
  9. package/dist/elements/Button/types.d.ts.map +1 -1
  10. package/dist/elements/Button/types.js.map +1 -1
  11. package/dist/elements/CheckboxPopup/index.d.ts.map +1 -1
  12. package/dist/elements/CheckboxPopup/index.js +0 -1
  13. package/dist/elements/CheckboxPopup/index.js.map +1 -1
  14. package/dist/elements/CheckboxPopup/index.scss +1 -0
  15. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  16. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +53 -3
  17. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  18. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +541 -0
  19. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -0
  20. package/dist/elements/Combobox/index.d.ts.map +1 -1
  21. package/dist/elements/Combobox/index.js +1 -0
  22. package/dist/elements/Combobox/index.js.map +1 -1
  23. package/dist/elements/CreateDocumentButton/index.d.ts +26 -0
  24. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -0
  25. package/dist/elements/CreateDocumentButton/index.js +182 -0
  26. package/dist/elements/CreateDocumentButton/index.js.map +1 -0
  27. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  28. package/dist/elements/DefaultListViewTabs/index.js +28 -54
  29. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  30. package/dist/elements/DelayedSpinner/index.d.ts +23 -0
  31. package/dist/elements/DelayedSpinner/index.d.ts.map +1 -0
  32. package/dist/elements/DelayedSpinner/index.js +61 -0
  33. package/dist/elements/DelayedSpinner/index.js.map +1 -0
  34. package/dist/elements/DocumentControls/index.d.ts +1 -0
  35. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  36. package/dist/elements/DocumentControls/index.js +6 -10
  37. package/dist/elements/DocumentControls/index.js.map +1 -1
  38. package/dist/elements/DocumentControls/index.scss +1 -1
  39. package/dist/elements/DocumentDrawer/index.d.ts.map +1 -1
  40. package/dist/elements/DocumentDrawer/index.js +54 -141
  41. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  42. package/dist/elements/DocumentDrawer/types.d.ts +7 -1
  43. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  44. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  45. package/dist/elements/DrawerActionHeader/index.d.ts.map +1 -1
  46. package/dist/elements/DrawerActionHeader/index.js +2 -0
  47. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  48. package/dist/elements/DrawerActionHeader/index.scss +2 -2
  49. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts +5 -0
  50. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts.map +1 -0
  51. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +166 -0
  52. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -0
  53. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.scss +63 -0
  54. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts +5 -0
  55. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -0
  56. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +161 -0
  57. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -0
  58. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.scss +105 -0
  59. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts +8 -0
  60. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -0
  61. package/dist/elements/Hierarchy/ColumnBrowser/index.js +473 -0
  62. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -0
  63. package/dist/elements/Hierarchy/ColumnBrowser/index.scss +20 -0
  64. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +106 -0
  65. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -0
  66. package/dist/elements/Hierarchy/ColumnBrowser/types.js +2 -0
  67. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -0
  68. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts +11 -0
  69. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -0
  70. package/dist/elements/Hierarchy/DocHeaderButton/index.js +126 -0
  71. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -0
  72. package/dist/elements/{FolderView/MoveDocToFolder → Hierarchy/DocHeaderButton}/index.scss +7 -1
  73. package/dist/elements/Hierarchy/DocHeaderButton/index.server.d.ts +10 -0
  74. package/dist/elements/Hierarchy/DocHeaderButton/index.server.d.ts.map +1 -0
  75. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js +34 -0
  76. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js.map +1 -0
  77. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts +15 -0
  78. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts.map +1 -0
  79. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js +60 -0
  80. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js.map +1 -0
  81. package/dist/elements/Hierarchy/Drawer/index.d.ts +20 -0
  82. package/dist/elements/Hierarchy/Drawer/index.d.ts.map +1 -0
  83. package/dist/elements/Hierarchy/Drawer/index.js +291 -0
  84. package/dist/elements/Hierarchy/Drawer/index.js.map +1 -0
  85. package/dist/elements/Hierarchy/Drawer/index.scss +81 -0
  86. package/dist/elements/Hierarchy/Drawer/types.d.ts +68 -0
  87. package/dist/elements/Hierarchy/Drawer/types.d.ts.map +1 -0
  88. package/dist/elements/Hierarchy/Drawer/types.js +3 -0
  89. package/dist/elements/Hierarchy/Drawer/types.js.map +1 -0
  90. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts +30 -0
  91. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts.map +1 -0
  92. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js +148 -0
  93. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js.map +1 -0
  94. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts +13 -0
  95. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -0
  96. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +185 -0
  97. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -0
  98. package/dist/elements/Hierarchy/Field/SelectedHierarchies.scss +78 -0
  99. package/dist/elements/Hierarchy/Field/index.client.d.ts +8 -0
  100. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -0
  101. package/dist/elements/Hierarchy/Field/index.client.js +186 -0
  102. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -0
  103. package/dist/elements/Hierarchy/Field/index.scss +35 -0
  104. package/dist/elements/Hierarchy/Field/index.server.d.ts +3 -0
  105. package/dist/elements/Hierarchy/Field/index.server.d.ts.map +1 -0
  106. package/dist/elements/Hierarchy/Field/index.server.js +30 -0
  107. package/dist/elements/Hierarchy/Field/index.server.js.map +1 -0
  108. package/dist/elements/Hierarchy/HydrateProvider/index.d.ts +4 -0
  109. package/dist/elements/Hierarchy/HydrateProvider/index.d.ts.map +1 -0
  110. package/dist/elements/Hierarchy/HydrateProvider/index.js +70 -0
  111. package/dist/elements/Hierarchy/HydrateProvider/index.js.map +1 -0
  112. package/dist/elements/Hierarchy/MoveMany/index.d.ts +22 -0
  113. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -0
  114. package/dist/elements/Hierarchy/MoveMany/index.js +278 -0
  115. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -0
  116. package/dist/elements/Hierarchy/MoveMany/index.scss +7 -0
  117. package/dist/elements/Hierarchy/Search/HierarchySearchInput.d.ts +18 -0
  118. package/dist/elements/Hierarchy/Search/HierarchySearchInput.d.ts.map +1 -0
  119. package/dist/elements/Hierarchy/Search/HierarchySearchInput.js +115 -0
  120. package/dist/elements/Hierarchy/Search/HierarchySearchInput.js.map +1 -0
  121. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.d.ts +13 -0
  122. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.d.ts.map +1 -0
  123. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js +88 -0
  124. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js.map +1 -0
  125. package/dist/elements/Hierarchy/Search/HierarchySearchResults.d.ts +17 -0
  126. package/dist/elements/Hierarchy/Search/HierarchySearchResults.d.ts.map +1 -0
  127. package/dist/elements/Hierarchy/Search/HierarchySearchResults.js +85 -0
  128. package/dist/elements/Hierarchy/Search/HierarchySearchResults.js.map +1 -0
  129. package/dist/elements/Hierarchy/Search/index.d.ts +10 -0
  130. package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -0
  131. package/dist/elements/Hierarchy/Search/index.js +144 -0
  132. package/dist/elements/Hierarchy/Search/index.js.map +1 -0
  133. package/dist/elements/Hierarchy/Search/index.scss +212 -0
  134. package/dist/elements/Hierarchy/Search/types.d.ts +21 -0
  135. package/dist/elements/Hierarchy/Search/types.d.ts.map +1 -0
  136. package/dist/elements/Hierarchy/Search/types.js +2 -0
  137. package/dist/elements/Hierarchy/Search/types.js.map +1 -0
  138. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts +20 -0
  139. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -0
  140. package/dist/elements/Hierarchy/Search/useHierarchySearch.js +122 -0
  141. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -0
  142. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts +21 -0
  143. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -0
  144. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +162 -0
  145. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -0
  146. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts +7 -0
  147. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -0
  148. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +177 -0
  149. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -0
  150. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.d.ts +8 -0
  151. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.d.ts.map +1 -0
  152. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.js +36 -0
  153. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.js.map +1 -0
  154. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts +12 -0
  155. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts.map +1 -0
  156. package/dist/elements/Hierarchy/Tree/LoadMore/index.js +29 -0
  157. package/dist/elements/Hierarchy/Tree/LoadMore/index.js.map +1 -0
  158. package/dist/elements/Hierarchy/Tree/LoadMore/index.scss +26 -0
  159. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts +7 -0
  160. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts.map +1 -0
  161. package/dist/elements/Hierarchy/Tree/TreeConnector.js +23 -0
  162. package/dist/elements/Hierarchy/Tree/TreeConnector.js.map +1 -0
  163. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts +28 -0
  164. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -0
  165. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js +140 -0
  166. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -0
  167. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts +5 -0
  168. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -0
  169. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +225 -0
  170. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -0
  171. package/dist/elements/Hierarchy/Tree/TreeNode/index.scss +110 -0
  172. package/dist/elements/Hierarchy/Tree/index.d.ts +5 -0
  173. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -0
  174. package/dist/elements/Hierarchy/Tree/index.js +270 -0
  175. package/dist/elements/Hierarchy/Tree/index.js.map +1 -0
  176. package/dist/elements/Hierarchy/Tree/index.scss +60 -0
  177. package/dist/elements/Hierarchy/Tree/types.d.ts +76 -0
  178. package/dist/elements/Hierarchy/Tree/types.d.ts.map +1 -0
  179. package/dist/elements/Hierarchy/Tree/types.js +2 -0
  180. package/dist/elements/Hierarchy/Tree/types.js.map +1 -0
  181. package/dist/elements/Hierarchy/Tree/useChildren.d.ts +32 -0
  182. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -0
  183. package/dist/elements/Hierarchy/Tree/useChildren.js +229 -0
  184. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -0
  185. package/dist/elements/Link/index.d.ts +4 -0
  186. package/dist/elements/Link/index.d.ts.map +1 -1
  187. package/dist/elements/Link/index.js +5 -0
  188. package/dist/elements/Link/index.js.map +1 -1
  189. package/dist/elements/ListHeader/TitleActions/index.d.ts +0 -1
  190. package/dist/elements/ListHeader/TitleActions/index.d.ts.map +1 -1
  191. package/dist/elements/ListHeader/TitleActions/index.js +0 -1
  192. package/dist/elements/ListHeader/TitleActions/index.js.map +1 -1
  193. package/dist/elements/ListHeader/index.js +2 -2
  194. package/dist/elements/ListHeader/index.js.map +1 -1
  195. package/dist/elements/ListSelection/index.scss +2 -1
  196. package/dist/elements/LoadMoreRow/index.d.ts +15 -0
  197. package/dist/elements/LoadMoreRow/index.d.ts.map +1 -0
  198. package/dist/elements/LoadMoreRow/index.js +75 -0
  199. package/dist/elements/LoadMoreRow/index.js.map +1 -0
  200. package/dist/elements/LoadMoreRow/index.scss +42 -0
  201. package/dist/elements/Locked/index.scss +1 -1
  202. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  203. package/dist/elements/PublishButton/index.js +3 -1
  204. package/dist/elements/PublishButton/index.js.map +1 -1
  205. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  206. package/dist/elements/RelationshipTable/index.js +17 -12
  207. package/dist/elements/RelationshipTable/index.js.map +1 -1
  208. package/dist/elements/Spinner/index.d.ts +16 -0
  209. package/dist/elements/Spinner/index.d.ts.map +1 -0
  210. package/dist/elements/Spinner/index.js +49 -0
  211. package/dist/elements/Spinner/index.js.map +1 -0
  212. package/dist/elements/Spinner/index.scss +39 -0
  213. package/dist/elements/StepNav/index.d.ts.map +1 -1
  214. package/dist/elements/StepNav/index.js +10 -1
  215. package/dist/elements/StepNav/index.js.map +1 -1
  216. package/dist/elements/StepNav/types.d.ts +1 -0
  217. package/dist/elements/StepNav/types.d.ts.map +1 -1
  218. package/dist/elements/StepNav/types.js.map +1 -1
  219. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts +6 -0
  220. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -0
  221. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +187 -0
  222. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -0
  223. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.scss +29 -0
  224. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  225. package/dist/elements/Table/DefaultCell/index.js +20 -0
  226. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  227. package/dist/elements/Toasts/fieldErrors.d.ts +4 -0
  228. package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
  229. package/dist/elements/Toasts/fieldErrors.js +4 -2
  230. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  231. package/dist/elements/Toasts/fieldErrors.spec.js +46 -0
  232. package/dist/elements/Toasts/fieldErrors.spec.js.map +1 -0
  233. package/dist/elements/Tooltip/index.js +1 -1
  234. package/dist/elements/Tooltip/index.js.map +1 -1
  235. package/dist/elements/Tooltip/index.scss +1 -15
  236. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  237. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +8 -6
  238. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  239. package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
  240. package/dist/elements/WhereBuilder/field-types.js +2 -5
  241. package/dist/elements/WhereBuilder/field-types.js.map +1 -1
  242. package/dist/exports/client/{DatePicker-CL2EGBVQ.js → DatePicker-T2DMDMM5.js} +2 -2
  243. package/dist/exports/client/chunk-WDZJLNNB.js +29 -0
  244. package/dist/exports/client/{chunk-SH42NW5R.js.map → chunk-WDZJLNNB.js.map} +4 -4
  245. package/dist/exports/client/index.d.ts +26 -9
  246. package/dist/exports/client/index.d.ts.map +1 -1
  247. package/dist/exports/client/index.js +26 -24
  248. package/dist/exports/client/index.js.map +4 -4
  249. package/dist/exports/rsc/index.d.ts +3 -3
  250. package/dist/exports/rsc/index.d.ts.map +1 -1
  251. package/dist/exports/rsc/index.js +3 -3
  252. package/dist/exports/rsc/index.js.map +1 -1
  253. package/dist/fields/Join/index.d.ts.map +1 -1
  254. package/dist/fields/Join/index.js +1 -1
  255. package/dist/fields/Join/index.js.map +1 -1
  256. package/dist/fields/Null/index.d.ts +11 -0
  257. package/dist/fields/Null/index.d.ts.map +1 -0
  258. package/dist/fields/Null/index.js +13 -0
  259. package/dist/fields/Null/index.js.map +1 -0
  260. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  261. package/dist/forms/Form/mergeServerFormState.js +101 -24
  262. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  263. package/dist/icons/Chevron/index.d.ts.map +1 -1
  264. package/dist/icons/Chevron/index.js +5 -1
  265. package/dist/icons/Chevron/index.js.map +1 -1
  266. package/dist/icons/Document/index.d.ts +3 -1
  267. package/dist/icons/Document/index.d.ts.map +1 -1
  268. package/dist/icons/Document/index.js +4 -2
  269. package/dist/icons/Document/index.js.map +1 -1
  270. package/dist/icons/Document/index.scss +4 -0
  271. package/dist/icons/Filter/index.d.ts +4 -0
  272. package/dist/icons/Filter/index.d.ts.map +1 -0
  273. package/dist/icons/Filter/index.js +15 -0
  274. package/dist/icons/Filter/index.js.map +1 -0
  275. package/dist/icons/Filter/index.scss +13 -0
  276. package/dist/icons/Folder/index.d.ts +4 -2
  277. package/dist/icons/Folder/index.d.ts.map +1 -1
  278. package/dist/icons/Folder/index.js +4 -2
  279. package/dist/icons/Folder/index.js.map +1 -1
  280. package/dist/icons/Folder/index.scss +8 -0
  281. package/dist/icons/Lock/index.scss +1 -1
  282. package/dist/icons/Plus/index.d.ts.map +1 -1
  283. package/dist/icons/Plus/index.js +2 -1
  284. package/dist/icons/Plus/index.js.map +1 -1
  285. package/dist/icons/TableView/index.d.ts +3 -0
  286. package/dist/icons/TableView/index.d.ts.map +1 -0
  287. package/dist/icons/TableView/index.js +16 -0
  288. package/dist/icons/TableView/index.js.map +1 -0
  289. package/dist/icons/Tag/index.d.ts +8 -0
  290. package/dist/icons/Tag/index.d.ts.map +1 -0
  291. package/dist/icons/Tag/index.js +22 -0
  292. package/dist/icons/Tag/index.js.map +1 -0
  293. package/dist/icons/Tag/index.scss +14 -0
  294. package/dist/providers/DocumentSelection/index.d.ts +8 -0
  295. package/dist/providers/DocumentSelection/index.d.ts.map +1 -0
  296. package/dist/providers/DocumentSelection/index.js +239 -0
  297. package/dist/providers/DocumentSelection/index.js.map +1 -0
  298. package/dist/providers/DocumentSelection/types.d.ts +122 -0
  299. package/dist/providers/DocumentSelection/types.d.ts.map +1 -0
  300. package/dist/providers/DocumentSelection/types.js +5 -0
  301. package/dist/providers/DocumentSelection/types.js.map +1 -0
  302. package/dist/providers/Hierarchy/index.d.ts +5 -0
  303. package/dist/providers/Hierarchy/index.d.ts.map +1 -0
  304. package/dist/providers/Hierarchy/index.js +350 -0
  305. package/dist/providers/Hierarchy/index.js.map +1 -0
  306. package/dist/providers/Hierarchy/types.d.ts +106 -0
  307. package/dist/providers/Hierarchy/types.d.ts.map +1 -0
  308. package/dist/providers/Hierarchy/types.js +2 -0
  309. package/dist/providers/Hierarchy/types.js.map +1 -0
  310. package/dist/providers/Root/index.d.ts.map +1 -1
  311. package/dist/providers/Root/index.js +18 -15
  312. package/dist/providers/Root/index.js.map +1 -1
  313. package/dist/providers/ServerFunctions/index.d.ts +1 -6
  314. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  315. package/dist/providers/ServerFunctions/index.js +0 -18
  316. package/dist/providers/ServerFunctions/index.js.map +1 -1
  317. package/dist/providers/SidebarTabs/index.d.ts +19 -0
  318. package/dist/providers/SidebarTabs/index.d.ts.map +1 -0
  319. package/dist/providers/SidebarTabs/index.js +24 -0
  320. package/dist/providers/SidebarTabs/index.js.map +1 -0
  321. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +2 -1
  322. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  323. package/dist/providers/TableColumns/buildColumnState/renderCell.js +34 -1
  324. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  325. package/dist/styles.css +1 -1
  326. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  327. package/dist/utilities/isSuperset.d.ts +6 -0
  328. package/dist/utilities/isSuperset.d.ts.map +1 -0
  329. package/dist/utilities/isSuperset.js +10 -0
  330. package/dist/utilities/isSuperset.js.map +1 -0
  331. package/dist/utilities/renderTable.d.ts +3 -1
  332. package/dist/utilities/renderTable.d.ts.map +1 -1
  333. package/dist/utilities/renderTable.js +9 -3
  334. package/dist/utilities/renderTable.js.map +1 -1
  335. package/dist/views/Edit/index.d.ts +1 -1
  336. package/dist/views/Edit/index.d.ts.map +1 -1
  337. package/dist/views/Edit/index.js +15 -4
  338. package/dist/views/Edit/index.js.map +1 -1
  339. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts +10 -0
  340. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -0
  341. package/dist/views/HierarchyList/DocumentListSelection/index.js +194 -0
  342. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -0
  343. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts +21 -0
  344. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts.map +1 -0
  345. package/dist/views/HierarchyList/HierarchyListHeader/index.js +67 -0
  346. package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -0
  347. package/dist/views/HierarchyList/HierarchyListHeader/index.scss +9 -0
  348. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts +4 -0
  349. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -0
  350. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +104 -0
  351. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -0
  352. package/dist/views/HierarchyList/HierarchyTable/DateCell.d.ts +4 -0
  353. package/dist/views/HierarchyList/HierarchyTable/DateCell.d.ts.map +1 -0
  354. package/dist/views/HierarchyList/HierarchyTable/DateCell.js +53 -0
  355. package/dist/views/HierarchyList/HierarchyTable/DateCell.js.map +1 -0
  356. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.d.ts +4 -0
  357. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.d.ts.map +1 -0
  358. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js +128 -0
  359. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +1 -0
  360. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +99 -0
  361. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -0
  362. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +118 -0
  363. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -0
  364. package/dist/views/HierarchyList/HierarchyTable/SlotTable.scss +214 -0
  365. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +27 -0
  366. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -0
  367. package/dist/views/HierarchyList/HierarchyTable/index.js +388 -0
  368. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -0
  369. package/dist/views/HierarchyList/HierarchyTable/index.scss +148 -0
  370. package/dist/views/HierarchyList/HierarchyTable/types.d.ts +20 -0
  371. package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -0
  372. package/dist/views/HierarchyList/HierarchyTable/types.js +2 -0
  373. package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -0
  374. package/dist/views/HierarchyList/TypeFilter/index.d.ts +15 -0
  375. package/dist/views/HierarchyList/TypeFilter/index.d.ts.map +1 -0
  376. package/dist/views/HierarchyList/TypeFilter/index.js +37 -0
  377. package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -0
  378. package/dist/views/HierarchyList/TypeFilter/index.scss +32 -0
  379. package/dist/views/HierarchyList/index.d.ts +5 -0
  380. package/dist/views/HierarchyList/index.d.ts.map +1 -0
  381. package/dist/views/HierarchyList/index.js +305 -0
  382. package/dist/views/HierarchyList/index.js.map +1 -0
  383. package/dist/views/HierarchyList/index.scss +72 -0
  384. package/dist/views/List/index.d.ts.map +1 -1
  385. package/dist/views/List/index.js +51 -7
  386. package/dist/views/List/index.js.map +1 -1
  387. package/package.json +4 -4
  388. package/dist/elements/FolderView/Breadcrumbs/index.d.ts +0 -19
  389. package/dist/elements/FolderView/Breadcrumbs/index.d.ts.map +0 -1
  390. package/dist/elements/FolderView/Breadcrumbs/index.js +0 -96
  391. package/dist/elements/FolderView/Breadcrumbs/index.js.map +0 -1
  392. package/dist/elements/FolderView/Breadcrumbs/index.scss +0 -56
  393. package/dist/elements/FolderView/BrowseByFolderButton/index.d.ts +0 -6
  394. package/dist/elements/FolderView/BrowseByFolderButton/index.d.ts.map +0 -1
  395. package/dist/elements/FolderView/BrowseByFolderButton/index.js +0 -40
  396. package/dist/elements/FolderView/BrowseByFolderButton/index.js.map +0 -1
  397. package/dist/elements/FolderView/BrowseByFolderButton/index.scss +0 -30
  398. package/dist/elements/FolderView/Cell/index.client.d.ts +0 -13
  399. package/dist/elements/FolderView/Cell/index.client.d.ts.map +0 -1
  400. package/dist/elements/FolderView/Cell/index.client.js +0 -95
  401. package/dist/elements/FolderView/Cell/index.client.js.map +0 -1
  402. package/dist/elements/FolderView/Cell/index.server.d.ts +0 -4
  403. package/dist/elements/FolderView/Cell/index.server.d.ts.map +0 -1
  404. package/dist/elements/FolderView/Cell/index.server.js +0 -18
  405. package/dist/elements/FolderView/Cell/index.server.js.map +0 -1
  406. package/dist/elements/FolderView/ColoredFolderIcon/index.d.ts +0 -3
  407. package/dist/elements/FolderView/ColoredFolderIcon/index.d.ts.map +0 -1
  408. package/dist/elements/FolderView/ColoredFolderIcon/index.js +0 -9
  409. package/dist/elements/FolderView/ColoredFolderIcon/index.js.map +0 -1
  410. package/dist/elements/FolderView/ColoredFolderIcon/index.scss +0 -5
  411. package/dist/elements/FolderView/CurrentFolderActions/index.d.ts +0 -7
  412. package/dist/elements/FolderView/CurrentFolderActions/index.d.ts.map +0 -1
  413. package/dist/elements/FolderView/CurrentFolderActions/index.js +0 -162
  414. package/dist/elements/FolderView/CurrentFolderActions/index.js.map +0 -1
  415. package/dist/elements/FolderView/DragOverlaySelection/index.d.ts +0 -11
  416. package/dist/elements/FolderView/DragOverlaySelection/index.d.ts.map +0 -1
  417. package/dist/elements/FolderView/DragOverlaySelection/index.js +0 -62
  418. package/dist/elements/FolderView/DragOverlaySelection/index.js.map +0 -1
  419. package/dist/elements/FolderView/DragOverlaySelection/index.scss +0 -35
  420. package/dist/elements/FolderView/DraggableTableRow/index.d.ts +0 -18
  421. package/dist/elements/FolderView/DraggableTableRow/index.d.ts.map +0 -1
  422. package/dist/elements/FolderView/DraggableTableRow/index.js +0 -63
  423. package/dist/elements/FolderView/DraggableTableRow/index.js.map +0 -1
  424. package/dist/elements/FolderView/DraggableTableRow/index.scss +0 -135
  425. package/dist/elements/FolderView/DraggableWithClick/index.d.ts +0 -15
  426. package/dist/elements/FolderView/DraggableWithClick/index.d.ts.map +0 -1
  427. package/dist/elements/FolderView/DraggableWithClick/index.js +0 -86
  428. package/dist/elements/FolderView/DraggableWithClick/index.js.map +0 -1
  429. package/dist/elements/FolderView/DraggableWithClick/index.scss +0 -5
  430. package/dist/elements/FolderView/Drawers/EditFolderAction/index.d.ts +0 -7
  431. package/dist/elements/FolderView/Drawers/EditFolderAction/index.d.ts.map +0 -1
  432. package/dist/elements/FolderView/Drawers/EditFolderAction/index.js +0 -39
  433. package/dist/elements/FolderView/Drawers/EditFolderAction/index.js.map +0 -1
  434. package/dist/elements/FolderView/Drawers/MoveToFolder/index.d.ts +0 -37
  435. package/dist/elements/FolderView/Drawers/MoveToFolder/index.d.ts.map +0 -1
  436. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +0 -609
  437. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +0 -1
  438. package/dist/elements/FolderView/Drawers/MoveToFolder/index.scss +0 -30
  439. package/dist/elements/FolderView/FilterFolderTypePill/index.d.ts +0 -4
  440. package/dist/elements/FolderView/FilterFolderTypePill/index.d.ts.map +0 -1
  441. package/dist/elements/FolderView/FilterFolderTypePill/index.js +0 -102
  442. package/dist/elements/FolderView/FilterFolderTypePill/index.js.map +0 -1
  443. package/dist/elements/FolderView/FilterFolderTypePill/index.scss +0 -16
  444. package/dist/elements/FolderView/FolderField/index.scss +0 -12
  445. package/dist/elements/FolderView/FolderField/index.server.d.ts +0 -4
  446. package/dist/elements/FolderView/FolderField/index.server.d.ts.map +0 -1
  447. package/dist/elements/FolderView/FolderField/index.server.js +0 -16
  448. package/dist/elements/FolderView/FolderField/index.server.js.map +0 -1
  449. package/dist/elements/FolderView/FolderFileCard/index.d.ts +0 -30
  450. package/dist/elements/FolderView/FolderFileCard/index.d.ts.map +0 -1
  451. package/dist/elements/FolderView/FolderFileCard/index.js +0 -209
  452. package/dist/elements/FolderView/FolderFileCard/index.js.map +0 -1
  453. package/dist/elements/FolderView/FolderFileCard/index.scss +0 -247
  454. package/dist/elements/FolderView/FolderFileTable/index.d.ts +0 -8
  455. package/dist/elements/FolderView/FolderFileTable/index.d.ts.map +0 -1
  456. package/dist/elements/FolderView/FolderFileTable/index.js +0 -284
  457. package/dist/elements/FolderView/FolderFileTable/index.js.map +0 -1
  458. package/dist/elements/FolderView/FolderFileTable/index.scss +0 -11
  459. package/dist/elements/FolderView/FolderTypeField/index.d.ts +0 -4
  460. package/dist/elements/FolderView/FolderTypeField/index.d.ts.map +0 -1
  461. package/dist/elements/FolderView/FolderTypeField/index.js +0 -123
  462. package/dist/elements/FolderView/FolderTypeField/index.js.map +0 -1
  463. package/dist/elements/FolderView/ItemCardGrid/index.d.ts +0 -16
  464. package/dist/elements/FolderView/ItemCardGrid/index.d.ts.map +0 -1
  465. package/dist/elements/FolderView/ItemCardGrid/index.js +0 -34
  466. package/dist/elements/FolderView/ItemCardGrid/index.js.map +0 -1
  467. package/dist/elements/FolderView/ItemCardGrid/index.scss +0 -16
  468. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts +0 -37
  469. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts.map +0 -1
  470. package/dist/elements/FolderView/MoveDocToFolder/index.js +0 -292
  471. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +0 -1
  472. package/dist/elements/FolderView/SimpleTable/index.d.ts +0 -19
  473. package/dist/elements/FolderView/SimpleTable/index.d.ts.map +0 -1
  474. package/dist/elements/FolderView/SimpleTable/index.js +0 -95
  475. package/dist/elements/FolderView/SimpleTable/index.js.map +0 -1
  476. package/dist/elements/FolderView/SimpleTable/index.scss +0 -59
  477. package/dist/elements/FolderView/SortByPill/index.d.ts +0 -4
  478. package/dist/elements/FolderView/SortByPill/index.d.ts.map +0 -1
  479. package/dist/elements/FolderView/SortByPill/index.js +0 -112
  480. package/dist/elements/FolderView/SortByPill/index.js.map +0 -1
  481. package/dist/elements/FolderView/SortByPill/index.scss +0 -16
  482. package/dist/elements/FolderView/ToggleViewButtons/index.d.ts +0 -8
  483. package/dist/elements/FolderView/ToggleViewButtons/index.d.ts.map +0 -1
  484. package/dist/elements/FolderView/ToggleViewButtons/index.js +0 -31
  485. package/dist/elements/FolderView/ToggleViewButtons/index.js.map +0 -1
  486. package/dist/elements/FolderView/ToggleViewButtons/index.scss +0 -17
  487. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.d.ts +0 -15
  488. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.d.ts.map +0 -1
  489. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +0 -182
  490. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +0 -1
  491. package/dist/exports/client/chunk-SH42NW5R.js +0 -29
  492. package/dist/providers/Folders/groupItemIDsByRelation.d.ts +0 -3
  493. package/dist/providers/Folders/groupItemIDsByRelation.d.ts.map +0 -1
  494. package/dist/providers/Folders/groupItemIDsByRelation.js +0 -10
  495. package/dist/providers/Folders/groupItemIDsByRelation.js.map +0 -1
  496. package/dist/providers/Folders/index.d.ts +0 -143
  497. package/dist/providers/Folders/index.d.ts.map +0 -1
  498. package/dist/providers/Folders/index.js +0 -641
  499. package/dist/providers/Folders/index.js.map +0 -1
  500. package/dist/utilities/getFolderResultsComponentAndData.d.ts +0 -25
  501. package/dist/utilities/getFolderResultsComponentAndData.d.ts.map +0 -1
  502. package/dist/utilities/getFolderResultsComponentAndData.js +0 -135
  503. package/dist/utilities/getFolderResultsComponentAndData.js.map +0 -1
  504. package/dist/views/BrowseByFolder/index.d.ts +0 -5
  505. package/dist/views/BrowseByFolder/index.d.ts.map +0 -1
  506. package/dist/views/BrowseByFolder/index.js +0 -342
  507. package/dist/views/BrowseByFolder/index.js.map +0 -1
  508. package/dist/views/BrowseByFolder/index.scss +0 -174
  509. package/dist/views/CollectionFolder/ListSelection/index.d.ts +0 -9
  510. package/dist/views/CollectionFolder/ListSelection/index.d.ts.map +0 -1
  511. package/dist/views/CollectionFolder/ListSelection/index.js +0 -180
  512. package/dist/views/CollectionFolder/ListSelection/index.js.map +0 -1
  513. package/dist/views/CollectionFolder/index.d.ts +0 -5
  514. package/dist/views/CollectionFolder/index.d.ts.map +0 -1
  515. package/dist/views/CollectionFolder/index.js +0 -325
  516. package/dist/views/CollectionFolder/index.js.map +0 -1
  517. package/dist/views/CollectionFolder/index.scss +0 -162
  518. /package/dist/exports/client/{DatePicker-CL2EGBVQ.js.map → DatePicker-T2DMDMM5.js.map} +0 -0
@@ -59,11 +59,20 @@ const StepNav = t0 => {
59
59
  }), stepNav.map((item, i) => {
60
60
  const StepLabel = getTranslation(item.label, i18n);
61
61
  const isLast = stepNav.length === i + 1;
62
- const Step = isLast ? _jsx("span", {
62
+ const Step = isLast ? item.url ? _jsx(Link, {
63
+ forceReload: item.forceReload,
64
+ href: item.url,
65
+ prefetch: false,
66
+ children: _jsx("span", {
67
+ className: `${baseClass}__last`,
68
+ children: StepLabel
69
+ })
70
+ }, i) : _jsx("span", {
63
71
  className: `${baseClass}__last`,
64
72
  children: StepLabel
65
73
  }, i) : _jsxs(Fragment, {
66
74
  children: [item.url ? _jsx(Link, {
75
+ forceReload: item.forceReload,
67
76
  href: item.url,
68
77
  prefetch: false,
69
78
  children: _jsx("span", {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","PayloadIcon","useConfig","useTranslation","Link","RenderCustomComponent","StepNavProvider","useStepNav","SetStepNav","baseClass","StepNav","t0","$","className","CustomIcon","i18n","stepNav","config","t1","routes","t2","admin","t","t3","_jsx","children","length","_jsxs","filter","Boolean","join","href","prefetch","tabIndex","title","CustomComponent","Fallback","map","item","i","StepLabel","label","isLast","Step","url"],"sources":["../../../src/elements/StepNav/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment } from 'react'\n\nimport type { StepNavItem } from './types.js'\n\nimport { PayloadIcon } from '../../graphics/Icon/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Link } from '../Link/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { StepNavProvider, useStepNav } from './context.js'\nimport './index.scss'\n\nexport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'step-nav'\n\nconst StepNav: React.FC<{\n readonly className?: string\n readonly CustomIcon?: React.ReactNode\n /**\n * @deprecated\n * This prop is deprecated and will be removed in the next major version.\n * Components now import their own `Link` directly from `next/link`.\n */\n readonly Link?: React.ComponentType\n}> = ({ className, CustomIcon }) => {\n const { i18n } = useTranslation()\n\n const { stepNav } = useStepNav()\n\n const {\n config: {\n routes: { admin },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n\n return (\n <Fragment>\n {stepNav.length > 0 ? (\n <nav className={[baseClass, className].filter(Boolean).join(' ')}>\n <Link className={`${baseClass}__home`} href={admin} prefetch={false} tabIndex={0}>\n <span title={t('general:dashboard')}>\n <RenderCustomComponent CustomComponent={CustomIcon} Fallback={<PayloadIcon />} />\n </span>\n </Link>\n <span>/</span>\n {stepNav.map((item, i) => {\n const StepLabel = getTranslation(item.label, i18n)\n const isLast = stepNav.length === i + 1\n\n const Step = isLast ? (\n <span className={`${baseClass}__last`} key={i}>\n {StepLabel}\n </span>\n ) : (\n <Fragment key={i}>\n {item.url ? (\n <Link href={item.url} prefetch={false}>\n <span key={i}>{StepLabel}</span>\n </Link>\n ) : (\n <span key={i}>{StepLabel}</span>\n )}\n <span>/</span>\n </Fragment>\n )\n\n return Step\n })}\n </nav>\n ) : (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__home`}>\n <span title={t('general:dashboard')}>\n <RenderCustomComponent CustomComponent={CustomIcon} Fallback={<PayloadIcon />} />\n </span>\n </div>\n </div>\n )}\n </Fragment>\n )\n}\n\nexport { StepNav, StepNavItem, StepNavProvider, useStepNav }\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","PayloadIcon","useConfig","useTranslation","Link","RenderCustomComponent","StepNavProvider","useStepNav","SetStepNav","baseClass","StepNav","t0","$","className","CustomIcon","i18n","stepNav","config","t1","routes","t2","admin","t","t3","_jsx","children","length","_jsxs","filter","Boolean","join","href","prefetch","tabIndex","title","CustomComponent","Fallback","map","item","i","StepLabel","label","isLast","Step","url","forceReload"],"sources":["../../../src/elements/StepNav/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment } from 'react'\n\nimport type { StepNavItem } from './types.js'\n\nimport { PayloadIcon } from '../../graphics/Icon/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Link } from '../Link/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { StepNavProvider, useStepNav } from './context.js'\nimport './index.scss'\n\nexport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'step-nav'\n\nconst StepNav: React.FC<{\n readonly className?: string\n readonly CustomIcon?: React.ReactNode\n /**\n * @deprecated\n * This prop is deprecated and will be removed in the next major version.\n * Components now import their own `Link` directly from `next/link`.\n */\n readonly Link?: React.ComponentType\n}> = ({ className, CustomIcon }) => {\n const { i18n } = useTranslation()\n\n const { stepNav } = useStepNav()\n\n const {\n config: {\n routes: { admin },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n\n return (\n <Fragment>\n {stepNav.length > 0 ? (\n <nav className={[baseClass, className].filter(Boolean).join(' ')}>\n <Link className={`${baseClass}__home`} href={admin} prefetch={false} tabIndex={0}>\n <span title={t('general:dashboard')}>\n <RenderCustomComponent CustomComponent={CustomIcon} Fallback={<PayloadIcon />} />\n </span>\n </Link>\n <span>/</span>\n {stepNav.map((item, i) => {\n const StepLabel = getTranslation(item.label, i18n)\n const isLast = stepNav.length === i + 1\n\n const Step = isLast ? (\n item.url ? (\n <Link forceReload={item.forceReload} href={item.url} key={i} prefetch={false}>\n <span className={`${baseClass}__last`}>{StepLabel}</span>\n </Link>\n ) : (\n <span className={`${baseClass}__last`} key={i}>\n {StepLabel}\n </span>\n )\n ) : (\n <Fragment key={i}>\n {item.url ? (\n <Link forceReload={item.forceReload} href={item.url} prefetch={false}>\n <span key={i}>{StepLabel}</span>\n </Link>\n ) : (\n <span key={i}>{StepLabel}</span>\n )}\n <span>/</span>\n </Fragment>\n )\n\n return Step\n })}\n </nav>\n ) : (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__home`}>\n <span title={t('general:dashboard')}>\n <RenderCustomComponent CustomComponent={CustomIcon} Fallback={<PayloadIcon />} />\n </span>\n </div>\n </div>\n )}\n </Fragment>\n )\n}\n\nexport { StepNav, StepNavItem, StepNavProvider, useStepNav }\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import type { LabelFunction, StaticLabel } from 'payload';
2
2
  import type React from 'react';
3
3
  export type StepNavItem = {
4
+ forceReload?: boolean;
4
5
  label: LabelFunction | React.JSX.Element | StaticLabel;
5
6
  url?: string;
6
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/StepNav/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,WAAW,CAAA;IACtD,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,CAAA;IAC1C,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/StepNav/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,EAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,WAAW,CAAA;IACtD,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,CAAA;IAC1C,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/StepNav/types.ts"],"sourcesContent":["import type { LabelFunction, StaticLabel } from 'payload'\nimport type React from 'react'\n\nexport type StepNavItem = {\n label: LabelFunction | React.JSX.Element | StaticLabel\n url?: string\n}\n\nexport type ContextType = {\n setStepNav: (items: StepNavItem[]) => void\n stepNav: StepNavItem[]\n}\n"],"mappings":"AAQA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/StepNav/types.ts"],"sourcesContent":["import type { LabelFunction, StaticLabel } from 'payload'\nimport type React from 'react'\n\nexport type StepNavItem = {\n forceReload?: boolean\n label: LabelFunction | React.JSX.Element | StaticLabel\n url?: string\n}\n\nexport type ContextType = {\n setStepNav: (items: StepNavItem[]) => void\n stepNav: StepNavItem[]\n}\n"],"mappings":"AASA","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ import type { DefaultCellComponentProps, RelationshipFieldClient } from 'payload';
2
+ import React from 'react';
3
+ import './index.scss';
4
+ export type HierarchyCellProps = DefaultCellComponentProps<RelationshipFieldClient>;
5
+ export declare const HierarchyCell: React.FC<HierarchyCellProps>;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/elements/Table/DefaultCell/fields/Hierarchy/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAEjF,OAAO,KAA4D,MAAM,OAAO,CAAA;AAchF,OAAO,cAAc,CAAA;AAKrB,MAAM,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,uBAAuB,CAAC,CAAA;AAEnF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAiMtD,CAAA"}
@@ -0,0 +1,187 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
+ import { useIntersect } from '../../../../../hooks/useIntersect.js';
6
+ import { FolderIcon } from '../../../../../icons/Folder/index.js';
7
+ import { TagIcon } from '../../../../../icons/Tag/index.js';
8
+ import { useConfig } from '../../../../../providers/Config/index.js';
9
+ import { useTranslation } from '../../../../../providers/Translation/index.js';
10
+ import { canUseDOM } from '../../../../../utilities/canUseDOM.js';
11
+ import { formatDocTitle } from '../../../../../utilities/formatDocTitle/index.js';
12
+ import { Button } from '../../../../Button/index.js';
13
+ import { useHierarchyDrawer } from '../../../../Hierarchy/Drawer/useHierarchyDrawer.js';
14
+ import { useListRelationships } from '../../../RelationshipProvider/index.js';
15
+ import './index.scss';
16
+ const baseClass = 'hierarchy-cell';
17
+ export const HierarchyCell = ({
18
+ cellData: cellDataFromProps,
19
+ collectionSlug,
20
+ customCellProps,
21
+ field,
22
+ rowData
23
+ }) => {
24
+ const relationTo = 'relationTo' in field ? field.relationTo : undefined;
25
+ const hasMany = field.hasMany ?? false;
26
+ const {
27
+ config,
28
+ getEntityConfig
29
+ } = useConfig();
30
+ const [intersectionRef, entry] = useIntersect();
31
+ const [values, setValues] = useState([]);
32
+ const {
33
+ documents,
34
+ getRelationships
35
+ } = useListRelationships();
36
+ const hasRequestedRef = useRef(false);
37
+ const {
38
+ i18n,
39
+ t
40
+ } = useTranslation();
41
+ const isAboveViewport = canUseDOM ? entry?.boundingClientRect?.top < window.innerHeight : false;
42
+ // Get the hierarchy collection config
43
+ const hierarchyCollectionSlug = typeof relationTo === 'string' ? relationTo : undefined;
44
+ const hierarchyCollectionConfig = hierarchyCollectionSlug ? getEntityConfig({
45
+ collectionSlug: hierarchyCollectionSlug
46
+ }) : undefined;
47
+ // Use pre-rendered icon from server if available, otherwise determine on client
48
+ const hierarchyConfig = hierarchyCollectionConfig?.hierarchy && typeof hierarchyCollectionConfig.hierarchy === 'object' ? hierarchyCollectionConfig.hierarchy : undefined;
49
+ // Pre-rendered icon from server (supports custom icons)
50
+ const preRenderedIcon = customCellProps?.hierarchyIcon;
51
+ // Fallback icon for client-side rendering
52
+ const fallbackIcon = useMemo(() => {
53
+ if (preRenderedIcon) {
54
+ return null // Don't need fallback if we have pre-rendered icon
55
+ ;
56
+ }
57
+ // Default based on allowHasMany: false = folder-like, true = tag-like
58
+ const IconComponent = hierarchyConfig?.allowHasMany === false ? FolderIcon : TagIcon;
59
+ return /*#__PURE__*/_jsx(IconComponent, {
60
+ color: "muted"
61
+ });
62
+ }, [hierarchyConfig, preRenderedIcon]);
63
+ // Set up the hierarchy drawer
64
+ const [HierarchyDrawer,, {
65
+ openDrawer
66
+ }] = useHierarchyDrawer({
67
+ hierarchyCollectionSlug: hierarchyCollectionSlug || ''
68
+ });
69
+ // Fetch relationship data when visible
70
+ useEffect(() => {
71
+ if ((cellDataFromProps || typeof cellDataFromProps === 'number') && isAboveViewport && !hasRequestedRef.current && typeof relationTo === 'string') {
72
+ const formattedValues = [];
73
+ const arrayCellData = Array.isArray(cellDataFromProps) ? cellDataFromProps : [cellDataFromProps];
74
+ arrayCellData.forEach(cell => {
75
+ if (typeof cell === 'object' && 'relationTo' in cell && 'value' in cell) {
76
+ formattedValues.push(cell);
77
+ }
78
+ if (typeof cell === 'number' || typeof cell === 'string') {
79
+ formattedValues.push({
80
+ relationTo,
81
+ value: cell
82
+ });
83
+ }
84
+ });
85
+ getRelationships(formattedValues);
86
+ hasRequestedRef.current = true;
87
+ setValues(formattedValues);
88
+ }
89
+ }, [cellDataFromProps, relationTo, isAboveViewport, getRelationships]);
90
+ // Reset when data changes
91
+ useEffect(() => {
92
+ hasRequestedRef.current = false;
93
+ }, [cellDataFromProps]);
94
+ // Get current selection IDs for the drawer
95
+ const initialSelections = useMemo(() => {
96
+ if (!cellDataFromProps) {
97
+ return [];
98
+ }
99
+ const data = Array.isArray(cellDataFromProps) ? cellDataFromProps : [cellDataFromProps];
100
+ return data.map(item => {
101
+ if (typeof item === 'object' && 'value' in item) {
102
+ return item.value;
103
+ }
104
+ return item;
105
+ });
106
+ }, [cellDataFromProps]);
107
+ // Handle save from drawer
108
+ const handleSave = useCallback(async ({
109
+ closeDrawer,
110
+ selections
111
+ }) => {
112
+ // Get selected IDs
113
+ const selectedIds = Array.from(selections.keys());
114
+ const newValue = hasMany ? selectedIds : selectedIds[0] ?? null;
115
+ // Update the document via API
116
+ try {
117
+ const response = await fetch(`${config.serverURL}${config.routes.api}/${collectionSlug}/${rowData.id}`, {
118
+ body: JSON.stringify({
119
+ [field.name]: newValue
120
+ }),
121
+ credentials: 'include',
122
+ headers: {
123
+ 'Content-Type': 'application/json'
124
+ },
125
+ method: 'PATCH'
126
+ });
127
+ if (response.ok && typeof relationTo === 'string') {
128
+ // Update local state with new selection to avoid page reload
129
+ const newValues = selectedIds.map(id => ({
130
+ relationTo,
131
+ value: id
132
+ }));
133
+ setValues(newValues);
134
+ // Request the new relationship docs to update the display
135
+ if (newValues.length > 0) {
136
+ getRelationships(newValues);
137
+ }
138
+ }
139
+ } catch (_error) {
140
+ // swallow error and close drawer anyway, user can try again
141
+ }
142
+ closeDrawer();
143
+ }, [collectionSlug, config, field.name, hasMany, rowData, relationTo, getRelationships]);
144
+ // Build display labels
145
+ const labels = useMemo(() => {
146
+ return values.map(({
147
+ relationTo: rel,
148
+ value
149
+ }) => {
150
+ const document = documents[rel]?.[value];
151
+ const relatedCollection = getEntityConfig({
152
+ collectionSlug: rel
153
+ });
154
+ return formatDocTitle({
155
+ collectionConfig: relatedCollection,
156
+ data: document || null,
157
+ dateFormat: config.admin.dateFormat,
158
+ fallback: `${t('general:untitled')} - ID: ${value}`,
159
+ i18n
160
+ });
161
+ });
162
+ }, [values, documents, getEntityConfig, config.admin.dateFormat, t, i18n]);
163
+ const displayText = labels.length > 0 ? labels.join(', ') : t('general:none');
164
+ const isLoading = values.length > 0 && values.some(({
165
+ relationTo: rel_0,
166
+ value: value_0
167
+ }) => documents[rel_0]?.[value_0] === null);
168
+ return /*#__PURE__*/_jsxs("div", {
169
+ className: baseClass,
170
+ ref: intersectionRef,
171
+ children: [/*#__PURE__*/_jsx(Button, {
172
+ buttonStyle: "subtle",
173
+ className: `${baseClass}__pill`,
174
+ icon: preRenderedIcon || fallbackIcon,
175
+ iconPosition: "left",
176
+ margin: false,
177
+ onClick: openDrawer,
178
+ size: "small",
179
+ children: isLoading ? `${t('general:loading')}...` : displayText
180
+ }), hierarchyCollectionSlug && /*#__PURE__*/_jsx(HierarchyDrawer, {
181
+ hasMany: hasMany,
182
+ initialSelections: initialSelections,
183
+ onSave: handleSave
184
+ })]
185
+ });
186
+ };
187
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","useIntersect","FolderIcon","TagIcon","useConfig","useTranslation","canUseDOM","formatDocTitle","Button","useHierarchyDrawer","useListRelationships","baseClass","HierarchyCell","cellData","cellDataFromProps","collectionSlug","customCellProps","field","rowData","relationTo","undefined","hasMany","config","getEntityConfig","intersectionRef","entry","values","setValues","documents","getRelationships","hasRequestedRef","i18n","t","isAboveViewport","boundingClientRect","top","window","innerHeight","hierarchyCollectionSlug","hierarchyCollectionConfig","hierarchyConfig","hierarchy","preRenderedIcon","hierarchyIcon","fallbackIcon","IconComponent","allowHasMany","_jsx","color","HierarchyDrawer","openDrawer","current","formattedValues","arrayCellData","Array","isArray","forEach","cell","push","value","initialSelections","data","map","item","handleSave","closeDrawer","selections","selectedIds","from","keys","newValue","response","fetch","serverURL","routes","api","id","body","JSON","stringify","name","credentials","headers","method","ok","newValues","length","_error","labels","rel","document","relatedCollection","collectionConfig","dateFormat","admin","fallback","displayText","join","isLoading","some","_jsxs","className","ref","buttonStyle","icon","iconPosition","margin","onClick","size","onSave"],"sources":["../../../../../../src/elements/Table/DefaultCell/fields/Hierarchy/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, RelationshipFieldClient } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { SelectionWithPath } from '../../../../Hierarchy/Drawer/types.js'\n\nimport { useIntersect } from '../../../../../hooks/useIntersect.js'\nimport { FolderIcon } from '../../../../../icons/Folder/index.js'\nimport { TagIcon } from '../../../../../icons/Tag/index.js'\nimport { useConfig } from '../../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\nimport { canUseDOM } from '../../../../../utilities/canUseDOM.js'\nimport { formatDocTitle } from '../../../../../utilities/formatDocTitle/index.js'\nimport { Button } from '../../../../Button/index.js'\nimport { useHierarchyDrawer } from '../../../../Hierarchy/Drawer/useHierarchyDrawer.js'\nimport { useListRelationships } from '../../../RelationshipProvider/index.js'\nimport './index.scss'\n\ntype Value = { relationTo: string; value: number | string }\nconst baseClass = 'hierarchy-cell'\n\nexport type HierarchyCellProps = DefaultCellComponentProps<RelationshipFieldClient>\n\nexport const HierarchyCell: React.FC<HierarchyCellProps> = ({\n cellData: cellDataFromProps,\n collectionSlug,\n customCellProps,\n field,\n rowData,\n}) => {\n const relationTo = 'relationTo' in field ? field.relationTo : undefined\n const hasMany = field.hasMany ?? false\n\n const { config, getEntityConfig } = useConfig()\n const [intersectionRef, entry] = useIntersect()\n const [values, setValues] = useState<Value[]>([])\n const { documents, getRelationships } = useListRelationships()\n const hasRequestedRef = useRef(false)\n const { i18n, t } = useTranslation()\n\n const isAboveViewport = canUseDOM ? entry?.boundingClientRect?.top < window.innerHeight : false\n\n // Get the hierarchy collection config\n const hierarchyCollectionSlug = typeof relationTo === 'string' ? relationTo : undefined\n const hierarchyCollectionConfig = hierarchyCollectionSlug\n ? getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n : undefined\n\n // Use pre-rendered icon from server if available, otherwise determine on client\n const hierarchyConfig =\n hierarchyCollectionConfig?.hierarchy && typeof hierarchyCollectionConfig.hierarchy === 'object'\n ? hierarchyCollectionConfig.hierarchy\n : undefined\n\n // Pre-rendered icon from server (supports custom icons)\n const preRenderedIcon = customCellProps?.hierarchyIcon as React.ReactNode | undefined\n\n // Fallback icon for client-side rendering\n const fallbackIcon = useMemo(() => {\n if (preRenderedIcon) {\n return null // Don't need fallback if we have pre-rendered icon\n }\n // Default based on allowHasMany: false = folder-like, true = tag-like\n const IconComponent = hierarchyConfig?.allowHasMany === false ? FolderIcon : TagIcon\n return <IconComponent color=\"muted\" />\n }, [hierarchyConfig, preRenderedIcon])\n\n // Set up the hierarchy drawer\n const [HierarchyDrawer, , { openDrawer }] = useHierarchyDrawer({\n hierarchyCollectionSlug: hierarchyCollectionSlug || '',\n })\n\n // Fetch relationship data when visible\n useEffect(() => {\n if (\n (cellDataFromProps || typeof cellDataFromProps === 'number') &&\n isAboveViewport &&\n !hasRequestedRef.current &&\n typeof relationTo === 'string'\n ) {\n const formattedValues: Value[] = []\n const arrayCellData = Array.isArray(cellDataFromProps)\n ? cellDataFromProps\n : [cellDataFromProps]\n\n arrayCellData.forEach((cell) => {\n if (typeof cell === 'object' && 'relationTo' in cell && 'value' in cell) {\n formattedValues.push(cell)\n }\n if (typeof cell === 'number' || typeof cell === 'string') {\n formattedValues.push({\n relationTo,\n value: cell,\n })\n }\n })\n\n getRelationships(formattedValues)\n hasRequestedRef.current = true\n setValues(formattedValues)\n }\n }, [cellDataFromProps, relationTo, isAboveViewport, getRelationships])\n\n // Reset when data changes\n useEffect(() => {\n hasRequestedRef.current = false\n }, [cellDataFromProps])\n\n // Get current selection IDs for the drawer\n const initialSelections = useMemo(() => {\n if (!cellDataFromProps) {\n return []\n }\n const data = Array.isArray(cellDataFromProps) ? cellDataFromProps : [cellDataFromProps]\n return data.map((item) => {\n if (typeof item === 'object' && 'value' in item) {\n return item.value\n }\n return item\n }) as (number | string)[]\n }, [cellDataFromProps])\n\n // Handle save from drawer\n const handleSave = useCallback(\n async ({\n closeDrawer,\n selections,\n }: {\n closeDrawer: () => void\n selections: Map<number | string, SelectionWithPath>\n }) => {\n // Get selected IDs\n const selectedIds = Array.from(selections.keys())\n const newValue = hasMany ? selectedIds : (selectedIds[0] ?? null)\n\n // Update the document via API\n try {\n const response = await fetch(\n `${config.serverURL}${config.routes.api}/${collectionSlug}/${rowData.id}`,\n {\n body: JSON.stringify({\n [field.name]: newValue,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n },\n )\n\n if (response.ok && typeof relationTo === 'string') {\n // Update local state with new selection to avoid page reload\n const newValues: Value[] = selectedIds.map((id) => ({\n relationTo,\n value: id,\n }))\n setValues(newValues)\n\n // Request the new relationship docs to update the display\n if (newValues.length > 0) {\n getRelationships(newValues)\n }\n }\n } catch (_error) {\n // swallow error and close drawer anyway, user can try again\n }\n\n closeDrawer()\n },\n [collectionSlug, config, field.name, hasMany, rowData, relationTo, getRelationships],\n )\n\n // Build display labels\n const labels = useMemo(() => {\n return values.map(({ relationTo: rel, value }) => {\n const document = documents[rel]?.[value]\n const relatedCollection = getEntityConfig({ collectionSlug: rel })\n\n return formatDocTitle({\n collectionConfig: relatedCollection,\n data: document || null,\n dateFormat: config.admin.dateFormat,\n fallback: `${t('general:untitled')} - ID: ${value}`,\n i18n,\n })\n })\n }, [values, documents, getEntityConfig, config.admin.dateFormat, t, i18n])\n\n const displayText = labels.length > 0 ? labels.join(', ') : t('general:none')\n const isLoading =\n values.length > 0 &&\n values.some(({ relationTo: rel, value }) => documents[rel]?.[value] === null)\n\n return (\n <div className={baseClass} ref={intersectionRef}>\n <Button\n buttonStyle=\"subtle\"\n className={`${baseClass}__pill`}\n icon={preRenderedIcon || fallbackIcon}\n iconPosition=\"left\"\n margin={false}\n onClick={openDrawer}\n size=\"small\"\n >\n {isLoading ? `${t('general:loading')}...` : displayText}\n </Button>\n {hierarchyCollectionSlug && (\n <HierarchyDrawer\n hasMany={hasMany}\n initialSelections={initialSelections}\n onSave={handleSave}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ .hierarchy-cell {
2
+ display: flex;
3
+ align-items: center;
4
+
5
+ &__pill {
6
+ cursor: pointer;
7
+ display: inline-flex;
8
+ align-items: center;
9
+ gap: calc(var(--base) / 3);
10
+
11
+ &:hover {
12
+ opacity: 0.8;
13
+ }
14
+ }
15
+
16
+ &__icon {
17
+ display: inline-flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ width: 16px;
21
+ height: 16px;
22
+ flex-shrink: 0;
23
+
24
+ svg {
25
+ width: 100%;
26
+ height: 100%;
27
+ }
28
+ }
29
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAqB,MAAM,SAAS,CAAA;AAI3E,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA8J3D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAqB,MAAM,SAAS,CAAA;AAI3E,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA+K3D,CAAA"}
@@ -12,6 +12,7 @@ import { getDisplayedFieldValue } from '../../../utilities/getDisplayedFieldValu
12
12
  import { isValidReactElement } from '../../../utilities/isValidReactElement.js';
13
13
  import { Link } from '../../Link/index.js';
14
14
  import { CodeCell } from './fields/Code/index.js';
15
+ import { HierarchyCell } from './fields/Hierarchy/index.js';
15
16
  import { cellComponents } from './fields/index.js';
16
17
  export const DefaultCell = props => {
17
18
  const $ = _c(16);
@@ -99,6 +100,25 @@ export const DefaultCell = props => {
99
100
  break bb0;
100
101
  }
101
102
  const displayedValue = getDisplayedFieldValue(cellData, field, i18n);
103
+ const isHierarchyField = field.type === "relationship" && (() => {
104
+ const relationTo = "relationTo" in field ? field.relationTo : undefined;
105
+ if (typeof relationTo !== "string") {
106
+ return false;
107
+ }
108
+ const relatedCollection = getEntityConfig({
109
+ collectionSlug: relationTo
110
+ });
111
+ return Boolean(relatedCollection?.hierarchy);
112
+ })();
113
+ if (isHierarchyField && field.type === "relationship") {
114
+ t4 = _jsx(HierarchyCell, {
115
+ cellData,
116
+ rowData,
117
+ ...props,
118
+ field
119
+ });
120
+ break bb0;
121
+ }
102
122
  const DefaultCellComponent = typeof cellData !== "undefined" && cellComponents[field.type];
103
123
  let CellComponent = null;
104
124
  if (isValidReactElement(displayedValue)) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","fieldAffectsData","fieldIsID","React","useConfig","useTranslation","formatAdminURL","getDisplayedFieldValue","isValidReactElement","Link","CodeCell","cellComponents","DefaultCell","props","$","cellData","className","classNameFromProps","collectionSlug","field","t0","link","linkURL","onClick","onClickFromProps","rowData","viewType","admin","i18n","config","t1","getEntityConfig","routes","t2","adminRoute","t3","t4","Symbol","for","collectionConfig","classNameFromConfigContext","undefined","WrapElement","wrapElementProps","prefetch","href","slug","path","encodeURIComponent","id","type","_jsx","children","nowrap","displayedValue","DefaultCellComponent","CellComponent","upload","name","FileCellComponent","File","_jsxs","t","label","JSON","stringify","options","length","classes","Array","isArray","map","_temp","join","className_0","filter","Boolean","value"],"sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, UploadFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsID } from 'payload/shared'\nimport React from 'react' // TODO: abstract this out to support all routers\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../../utilities/formatAdminURL.js'\nimport { getDisplayedFieldValue } from '../../../utilities/getDisplayedFieldValue.js'\nimport { isValidReactElement } from '../../../utilities/isValidReactElement.js'\nimport { Link } from '../../Link/index.js'\nimport { CodeCell } from './fields/Code/index.js'\nimport { cellComponents } from './fields/index.js'\n\nexport const DefaultCell: React.FC<DefaultCellComponentProps> = (props) => {\n const {\n cellData,\n className: classNameFromProps,\n collectionSlug,\n field,\n field: { admin },\n link,\n linkURL,\n onClick: onClickFromProps,\n rowData,\n viewType,\n } = props\n\n const { i18n } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const classNameFromConfigContext = admin && 'className' in admin ? admin.className : undefined\n\n const className =\n classNameFromProps ||\n (field.admin && 'className' in field.admin ? field.admin.className : null) ||\n classNameFromConfigContext\n\n const onClick = onClickFromProps\n\n let WrapElement: React.ComponentType<any> | string = 'span'\n\n const wrapElementProps: {\n className?: string\n href?: string\n onClick?: () => void\n prefetch?: false\n type?: 'button'\n } = {\n className,\n }\n\n if (link) {\n wrapElementProps.prefetch = false\n WrapElement = Link\n\n // Use custom linkURL if provided, otherwise use default URL generation\n if (linkURL) {\n wrapElementProps.href = linkURL\n } else {\n wrapElementProps.href = collectionConfig?.slug\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}${viewType === 'trash' ? '/trash' : ''}/${encodeURIComponent(rowData.id)}`,\n })\n : ''\n }\n }\n\n if (typeof onClick === 'function') {\n WrapElement = 'button'\n wrapElementProps.type = 'button'\n wrapElementProps.onClick = () => {\n onClick({\n cellData,\n collectionSlug: collectionConfig?.slug,\n rowData,\n })\n }\n }\n\n if (fieldIsID(field)) {\n return (\n <WrapElement {...wrapElementProps}>\n <CodeCell\n cellData={`ID: ${cellData}`}\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n field={{\n ...field,\n type: 'code',\n }}\n nowrap\n rowData={rowData}\n />\n </WrapElement>\n )\n }\n\n const displayedValue = getDisplayedFieldValue(cellData, field, i18n)\n\n const DefaultCellComponent: React.FC<DefaultCellComponentProps> =\n typeof cellData !== 'undefined' && cellComponents[field.type]\n\n let CellComponent: React.ReactNode = null\n\n // Handle JSX labels before using DefaultCellComponent\n if (isValidReactElement(displayedValue)) {\n CellComponent = displayedValue\n } else if (DefaultCellComponent) {\n CellComponent = <DefaultCellComponent cellData={cellData} rowData={rowData} {...props} />\n } else if (!DefaultCellComponent) {\n // DefaultCellComponent does not exist for certain field types like `text`\n if (\n collectionConfig?.upload &&\n fieldAffectsData(field) &&\n field.name === 'filename' &&\n field.type === 'text'\n ) {\n const FileCellComponent = cellComponents.File\n\n CellComponent = (\n <FileCellComponent\n cellData={cellData}\n rowData={rowData}\n {...(props as DefaultCellComponentProps<UploadFieldClient>)}\n collectionConfig={collectionConfig}\n field={field}\n />\n )\n } else {\n return (\n <WrapElement {...wrapElementProps}>\n {(displayedValue === '' ||\n typeof displayedValue === 'undefined' ||\n displayedValue === null) &&\n i18n.t('general:noLabel', {\n label: getTranslation(('label' in field ? field.label : null) || 'data', i18n),\n })}\n {typeof displayedValue === 'string' && displayedValue}\n {typeof displayedValue === 'number' && displayedValue}\n {typeof displayedValue === 'object' &&\n displayedValue !== null &&\n JSON.stringify(displayedValue)}\n </WrapElement>\n )\n }\n }\n\n if ((field.type === 'select' || field.type === 'radio') && field.options.length && cellData) {\n const classes = Array.isArray(cellData)\n ? cellData.map((value) => `selected--${value}`).join(' ')\n : `selected--${cellData}`\n\n const className = [wrapElementProps.className, classes].filter(Boolean).join(' ')\n\n return (\n <WrapElement {...wrapElementProps} className={className}>\n {CellComponent}\n </WrapElement>\n )\n }\n\n return <WrapElement {...wrapElementProps}>{CellComponent}</WrapElement>\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","fieldAffectsData","fieldIsID","React","useConfig","useTranslation","formatAdminURL","getDisplayedFieldValue","isValidReactElement","Link","CodeCell","HierarchyCell","cellComponents","DefaultCell","props","$","cellData","className","classNameFromProps","collectionSlug","field","t0","link","linkURL","onClick","onClickFromProps","rowData","viewType","admin","i18n","config","t1","getEntityConfig","routes","t2","adminRoute","t3","t4","Symbol","for","collectionConfig","classNameFromConfigContext","undefined","WrapElement","wrapElementProps","prefetch","href","slug","path","encodeURIComponent","id","type","_jsx","children","nowrap","displayedValue","isHierarchyField","relationTo","relatedCollection","Boolean","hierarchy","DefaultCellComponent","CellComponent","upload","name","FileCellComponent","File","_jsxs","t","label","JSON","stringify","options","length","classes","Array","isArray","map","_temp","join","className_0","filter","value"],"sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, UploadFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsID } from 'payload/shared'\nimport React from 'react' // TODO: abstract this out to support all routers\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../../utilities/formatAdminURL.js'\nimport { getDisplayedFieldValue } from '../../../utilities/getDisplayedFieldValue.js'\nimport { isValidReactElement } from '../../../utilities/isValidReactElement.js'\nimport { Link } from '../../Link/index.js'\nimport { CodeCell } from './fields/Code/index.js'\nimport { HierarchyCell } from './fields/Hierarchy/index.js'\nimport { cellComponents } from './fields/index.js'\n\nexport const DefaultCell: React.FC<DefaultCellComponentProps> = (props) => {\n const {\n cellData,\n className: classNameFromProps,\n collectionSlug,\n field,\n field: { admin },\n link,\n linkURL,\n onClick: onClickFromProps,\n rowData,\n viewType,\n } = props\n\n const { i18n } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const classNameFromConfigContext = admin && 'className' in admin ? admin.className : undefined\n\n const className =\n classNameFromProps ||\n (field.admin && 'className' in field.admin ? field.admin.className : null) ||\n classNameFromConfigContext\n\n const onClick = onClickFromProps\n\n let WrapElement: React.ComponentType<any> | string = 'span'\n\n const wrapElementProps: {\n className?: string\n href?: string\n onClick?: () => void\n prefetch?: false\n type?: 'button'\n } = {\n className,\n }\n\n if (link) {\n wrapElementProps.prefetch = false\n WrapElement = Link\n\n // Use custom linkURL if provided, otherwise use default URL generation\n if (linkURL) {\n wrapElementProps.href = linkURL\n } else {\n wrapElementProps.href = collectionConfig?.slug\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}${viewType === 'trash' ? '/trash' : ''}/${encodeURIComponent(rowData.id)}`,\n })\n : ''\n }\n }\n\n if (typeof onClick === 'function') {\n WrapElement = 'button'\n wrapElementProps.type = 'button'\n wrapElementProps.onClick = () => {\n onClick({\n cellData,\n collectionSlug: collectionConfig?.slug,\n rowData,\n })\n }\n }\n\n if (fieldIsID(field)) {\n return (\n <WrapElement {...wrapElementProps}>\n <CodeCell\n cellData={`ID: ${cellData}`}\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n field={{\n ...field,\n type: 'code',\n }}\n nowrap\n rowData={rowData}\n />\n </WrapElement>\n )\n }\n\n const displayedValue = getDisplayedFieldValue(cellData, field, i18n)\n\n // Check if this is a hierarchy relationship field by checking if the related collection has hierarchy config\n const isHierarchyField =\n field.type === 'relationship' &&\n (() => {\n const relationTo = 'relationTo' in field ? field.relationTo : undefined\n if (typeof relationTo !== 'string') {\n return false\n }\n const relatedCollection = getEntityConfig({ collectionSlug: relationTo })\n return Boolean(relatedCollection?.hierarchy)\n })()\n\n // For hierarchy fields, render the HierarchyCell directly (no wrapper needed)\n if (isHierarchyField && field.type === 'relationship') {\n return <HierarchyCell cellData={cellData} rowData={rowData} {...props} field={field} />\n }\n\n const DefaultCellComponent: React.FC<DefaultCellComponentProps> =\n typeof cellData !== 'undefined' && cellComponents[field.type]\n\n let CellComponent: React.ReactNode = null\n\n // Handle JSX labels before using DefaultCellComponent\n if (isValidReactElement(displayedValue)) {\n CellComponent = displayedValue\n } else if (DefaultCellComponent) {\n CellComponent = <DefaultCellComponent cellData={cellData} rowData={rowData} {...props} />\n } else if (!DefaultCellComponent) {\n // DefaultCellComponent does not exist for certain field types like `text`\n if (\n collectionConfig?.upload &&\n fieldAffectsData(field) &&\n field.name === 'filename' &&\n field.type === 'text'\n ) {\n const FileCellComponent = cellComponents.File\n\n CellComponent = (\n <FileCellComponent\n cellData={cellData}\n rowData={rowData}\n {...(props as DefaultCellComponentProps<UploadFieldClient>)}\n collectionConfig={collectionConfig}\n field={field}\n />\n )\n } else {\n return (\n <WrapElement {...wrapElementProps}>\n {(displayedValue === '' ||\n typeof displayedValue === 'undefined' ||\n displayedValue === null) &&\n i18n.t('general:noLabel', {\n label: getTranslation(('label' in field ? field.label : null) || 'data', i18n),\n })}\n {typeof displayedValue === 'string' && displayedValue}\n {typeof displayedValue === 'number' && displayedValue}\n {typeof displayedValue === 'object' &&\n displayedValue !== null &&\n JSON.stringify(displayedValue)}\n </WrapElement>\n )\n }\n }\n\n if ((field.type === 'select' || field.type === 'radio') && field.options.length && cellData) {\n const classes = Array.isArray(cellData)\n ? cellData.map((value) => `selected--${value}`).join(' ')\n : `selected--${cellData}`\n\n const className = [wrapElementProps.className, classes].filter(Boolean).join(' ')\n\n return (\n <WrapElement {...wrapElementProps} className={className}>\n {CellComponent}\n </WrapElement>\n )\n }\n\n return <WrapElement {...wrapElementProps}>{CellComponent}</WrapElement>\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,cAAc,QAAQ;AAC/B,SAASC,gBAAgB,EAAEC,SAAS,QAAQ;AAC5C,OAAOC,KAAA,MAAW,QAAO,CAAC;AAE1B,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,SAASC,sBAAsB,QAAQ;AACvC,SAASC,mBAAmB,QAAQ;AACpC,SAASC,IAAI,QAAQ;AACrB,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAE/B,OAAO,MAAMC,WAAA,GAAmDC,KAAA;EAAA,MAAAC,CAAA,GAAAhB,EAAA;EAC9D;IAAAiB,QAAA;IAAAC,SAAA,EAAAC,kBAAA;IAAAC,cAAA;IAAAC,KAAA;IAAAA,KAAA,EAAAC,EAAA;IAAAC,IAAA;IAAAC,OAAA;IAAAC,OAAA,EAAAC,gBAAA;IAAAC,OAAA;IAAAC;EAAA,IAWIb,KAAA;EANK;IAAAc;EAAA,IAAAP,EAAS;EAQlB;IAAAQ;EAAA,IAAiBxB,cAAA;EAEjB;IAAAyB,MAAA,EAAAC,EAAA;IAAAC;EAAA,IAKI5B,SAAA;EAJM;IAAA6B,MAAA,EAAAC;EAAA,IAAAH,EAEP;EADS;IAAAH,KAAA,EAAAO;EAAA,IAAAD,EAAqB;EAAA,IAAAE,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAtB,CAAA,QAAAa,KAAA,IAAAb,CAAA,QAAAoB,UAAA,IAAApB,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAG,kBAAA,IAAAH,CAAA,QAAAI,cAAA,IAAAJ,CAAA,QAAAK,KAAA,IAAAL,CAAA,QAAAiB,eAAA,IAAAjB,CAAA,QAAAc,IAAA,IAAAd,CAAA,QAAAO,IAAA,IAAAP,CAAA,QAAAQ,OAAA,IAAAR,CAAA,SAAAU,gBAAA,IAAAV,CAAA,SAAAD,KAAA,IAAAC,CAAA,SAAAW,OAAA,IAAAX,CAAA,SAAAY,QAAA;IA2D7BU,EAAA,GAAAC,MAAA,CAAAC,GAAA,8B;;MAtDJ,MAAAC,gBAAA,GAAyBR,eAAA;QAAAb;MAAA,CAAiC;MAE1D,MAAAsB,0BAAA,GAAmCb,KAAA,IAAS,eAAeA,KAAA,GAAQA,KAAA,CAAAX,SAAA,GAAAyB,SAAkB;MAErF,MAAAzB,SAAA,GACEC,kBAAA,KACCE,KAAA,CAAAQ,KAAA,IAAe,eAAeR,KAAA,CAAAQ,KAAW,GAAGR,KAAA,CAAAQ,KAAA,CAAAX,SAAA,OAA2B,KACxEwB,0BAAA;MAEF,MAAAjB,OAAA,GAAgBC,gBAAA;MAEhB,IAAAkB,WAAA,GAAqD;MAErD,MAAAC,gBAAA;QAAA3B;MAAA;MAQA,IAEIK,IAAA;QACFsB,gBAAA,CAAAC,QAAA;QACAF,WAAA,CAAAA,CAAA,CAAAA,IAAA;QAAA,IAGIpB,OAAA;UACFqB,gBAAA,CAAAE,IAAA,GAAwBvB,OAAA;QAAA;UAExBqB,gBAAA,CAAAE,IAAA,GAAwBN,gBAAA,EAAAO,IAAA,GACpBzC,cAAA;YAAA6B,UAAA;YAAAa,IAAA,EAEQ,gBAAgBR,gBAAA,EAAAO,IAAA,GAAyBpB,QAAA,KAAa,UAAU,WAAW,MAAMsB,kBAAA,CAAmBvB,OAAA,CAAAwB,EAAU;UAAG,CACzH,IACA;QAAA;MAAA;MAAA,IAIJ,OAAO1B,OAAA,KAAY;QACrBmB,WAAA,CAAAA,CAAA,CAAcA,QAAA;QACdC,gBAAA,CAAAO,IAAA,GAAwB;QACxBP,gBAAA,CAAApB,OAAA;UACEA,OAAA;YAAAR,QAAA;YAAAG,cAAA,EAEkBqB,gBAAA,EAAAO,IAAA;YAAArB;UAAA,CAElB;QAAA;MAAA;MAAA,IAIAxB,SAAA,CAAUkB,KAAA;QAEViB,EAAA,GAAAe,IAAA,CAACT,WAAA;UAAA,GAAgBC,gBAAgB;UAAAS,QAAA,EAC/BD,IAAA,CAAA1C,QAAA;YAAAM,QAAA,EACY,OAAOA,QAAA,EAAU;YAAAwB,gBAAA;YAAArB,cAAA;YAAAC,KAAA;cAAA,GAItBA,KAAK;cAAA+B,IAAA,EACF;YAAA;YAAAG,MAAA;YAAA5B;UAAA,C;;;;MAShB,MAAA6B,cAAA,GAAuBhD,sBAAA,CAAuBS,QAAA,EAAUI,KAAA,EAAOS,IAAA;MAG/D,MAAA2B,gBAAA,GACEpC,KAAA,CAAA+B,IAAA,KAAe,kBACf;QACE,MAAAM,UAAA,GAAmB,gBAAgBrC,KAAA,GAAQA,KAAA,CAAAqC,UAAA,GAAAf,SAAmB;QAAA,IAC1D,OAAOe,UAAA,KAAe;UAAA;QAAA;QAG1B,MAAAC,iBAAA,GAA0B1B,eAAA;UAAAb,cAAA,EAAkCsC;QAAA,CAAW;QAAA,OAChEE,OAAA,CAAQD,iBAAA,EAAAE,SAAmB;MAAA,GACpC;MAAA,IAGEJ,gBAAA,IAAoBpC,KAAA,CAAA+B,IAAA,KAAe;QAC9Bd,EAAA,GAAAe,IAAA,CAAAzC,aAAA;UAAAK,QAAA;UAAAU,OAAA;UAAA,GAAyDZ,KAAK;UAAAM;QAAA,C;;;MAGvE,MAAAyC,oBAAA,GACE,OAAO7C,QAAA,KAAa,eAAAJ,cAAA,CAA8BQ,KAAA,CAAA+B,IAAA,CAAW;MAE/D,IAAAW,aAAA;MAAqC,IAGjCtD,mBAAA,CAAoB+C,cAAA;QACtBO,aAAA,CAAAA,CAAA,CAAgBP,cAAA;MAAhB;QAAA,IACSM,oBAAA;UACTC,aAAA,CAAAA,CAAA,CAAgBA,KAACD,oBAAA;YAAA7C,QAAA;YAAAU,OAAA;YAAA,GAA+DZ;UAAK,C;QAArF;UAAA,KACU+C,oBAAA;YAAA,IAGRrB,gBAAA,EAAAuB,MAAA,IACA9D,gBAAA,CAAiBmB,KAAA,KACjBA,KAAA,CAAA4C,IAAA,KAAe,cACf5C,KAAA,CAAA+B,IAAA,KAAe;cAEf,MAAAc,iBAAA,GAAArD,cAAA,CAAAsD,IAAA;cAEAJ,aAAA,CAAAA,CAAA,CACEA,KAACG,iBAAA;gBAAAjD,QAAA;gBAAAU,OAAA;gBAAA,GAGMZ,KAAK;gBAAA0B,gBAAA;gBAAApB;cAAA,C;YAJd;cAWEiB,EAAA,GAAA8B,KAAA,CAACxB,WAAA;gBAAA,GAAgBC,gBAAgB;gBAAAS,QAAA,GAC7B,CAAAE,cAAA,KAAmB,MACnB,OAAOA,cAAA,KAAmB,eAC1BA,cAAA,SAAsB,KACtB1B,IAAA,CAAAuC,CAAA,CAAO;kBAAAC,KAAA,EACErE,cAAA,CAAe,CAAC,WAAWoB,KAAA,GAAQA,KAAA,CAAAiD,KAAA,OAAiB,KAAM,QAAQxC,IAAA;gBAAA,CAC3E,GACD,OAAO0B,cAAA,KAAmB,YAAYA,cAAA,EACtC,OAAOA,cAAA,KAAmB,YAAYA,cAAA,EACtC,OAAOA,cAAA,KAAmB,YACzBA,cAAA,SAAmB,IACnBe,IAAA,CAAAC,SAAA,CAAehB,cAAA;cAAA,C;;;;;;UAMrB,CAACnC,KAAA,CAAA+B,IAAA,KAAe,YAAY/B,KAAA,CAAA+B,IAAA,KAAe,OAAM,KAAM/B,KAAA,CAAAoD,OAAA,CAAAC,MAAoB,IAAIzD,QAAA;QACjF,MAAA0D,OAAA,GAAgBC,KAAA,CAAAC,OAAA,CAAc5D,QAAA,IAC1BA,QAAA,CAAA6D,GAAA,CAAAC,KAA4C,EAAAC,IAAA,CAAO,OACnD,aAAa/D,QAAA,EAAU;QAE3B,MAAAgE,WAAA,GAAkB,CAACpC,gBAAA,CAAA3B,SAAA,EAA4ByD,OAAA,EAAAO,MAAA,CAAAtB,OAAgB,EAAAoB,IAAA,CAAc;QAG3E1C,EAAA,GAAAe,IAAA,CAACT,WAAA;UAAA,GAAgBC,gBAAgB;UAAA3B,SAAA,EAAaA,WAAA;UAAAoC,QAAA,EAC3CS;QAAA,C;;;MAKA1B,EAAA,GAAAgB,IAAA,CAACT,WAAA;QAAA,GAAgBC,gBAAgB;QAAAS,QAAA,EAAGS;MAAA,C;;;;;;;;;;;;;;;;;;;;;;;;;SAApC1B,E;CACT;AA/KgE,SAAA0C,MAAAI,KAAA;EAAA,OAkKhC,aAAaA,KAAA,EAAO;AAAA","ignoreList":[]}
@@ -1,4 +1,8 @@
1
1
  import React from 'react';
2
+ export declare function createErrorsFromMessage(message: string): {
3
+ errors?: string[];
4
+ message: string;
5
+ };
2
6
  export declare function FieldErrorsToast({ errorMessage }: {
3
7
  errorMessage: any;
4
8
  }): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"fieldErrors.d.ts","sourceRoot":"","sources":["../../../src/elements/Toasts/fieldErrors.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAwDzB,wBAAgB,gBAAgB,CAAC,EAAE,YAAY,EAAE;;CAAA,qBAmBhD"}
1
+ {"version":3,"file":"fieldErrors.d.ts","sourceRoot":"","sources":["../../../src/elements/Toasts/fieldErrors.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AA6BzB,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG;IACxD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB,CAwBA;AAED,wBAAgB,gBAAgB,CAAC,EAAE,YAAY,EAAE;;CAAA,qBAmBhD"}
@@ -25,8 +25,10 @@ function groupSimilarErrors(items) {
25
25
  }
26
26
  return result;
27
27
  }
28
- function createErrorsFromMessage(message) {
29
- const [intro, errorsString] = message.split(':');
28
+ export function createErrorsFromMessage(message) {
29
+ const colonIndex = message.indexOf(':');
30
+ const intro = colonIndex >= 0 ? message.slice(0, colonIndex) : message;
31
+ const errorsString = colonIndex >= 0 ? message.slice(colonIndex + 1) : undefined;
30
32
  if (!errorsString) {
31
33
  return {
32
34
  message: intro
@@ -1 +1 @@
1
- {"version":3,"file":"fieldErrors.js","names":["c","_c","React","groupSimilarErrors","items","result","item","parts","split","inserted","i","length","startsWith","splice","push","createErrorsFromMessage","message","intro","errorsString","errors","map","error","replaceAll","trim","FieldErrorsToast","t0","$","errorMessage","t1","t2","useState","t3","_jsxs","children","Array","isArray","_jsx","_temp","index"],"sources":["../../../src/elements/Toasts/fieldErrors.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nfunction groupSimilarErrors(items: string[]): string[] {\n const result: string[] = []\n\n for (const item of items) {\n if (item) {\n const parts = item.split(' → ')\n let inserted = false\n\n // Find a place where a similar path exists\n for (let i = 0; i < result.length; i++) {\n if (result[i].startsWith(parts[0])) {\n result.splice(i + 1, 0, item)\n inserted = true\n break\n }\n }\n\n // If no similar path was found, add to the end\n if (!inserted) {\n result.push(item)\n }\n }\n }\n\n return result\n}\n\nfunction createErrorsFromMessage(message: string): {\n errors?: string[]\n message: string\n} {\n const [intro, errorsString] = message.split(':')\n\n if (!errorsString) {\n return {\n message: intro,\n }\n }\n\n const errors = errorsString.split(',').map((error) => error.replaceAll(' > ', ' → ').trim())\n\n if (errors.length === 1) {\n return {\n errors,\n message: `${intro}: `,\n }\n }\n\n return {\n errors: groupSimilarErrors(errors),\n message: `${intro} (${errors.length}):`,\n }\n}\n\nexport function FieldErrorsToast({ errorMessage }) {\n const [{ errors, message }] = React.useState(() => createErrorsFromMessage(errorMessage))\n\n return (\n <div>\n {message}\n {Array.isArray(errors) && errors.length > 0 ? (\n errors.length === 1 ? (\n <span data-testid=\"field-error\">{errors[0]}</span>\n ) : (\n <ul data-testid=\"field-errors\">\n {errors.map((error, index) => {\n return <li key={index}>{error}</li>\n })}\n </ul>\n )\n ) : null}\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,MAAW;AAElB,SAASC,mBAAmBC,KAAe;EACzC,MAAMC,MAAA,GAAmB,EAAE;EAE3B,KAAK,MAAMC,IAAA,IAAQF,KAAA,EAAO;IACxB,IAAIE,IAAA,EAAM;MACR,MAAMC,KAAA,GAAQD,IAAA,CAAKE,KAAK,CAAC;MACzB,IAAIC,QAAA,GAAW;MAEf;MACA,KAAK,IAAIC,CAAA,GAAI,GAAGA,CAAA,GAAIL,MAAA,CAAOM,MAAM,EAAED,CAAA,IAAK;QACtC,IAAIL,MAAM,CAACK,CAAA,CAAE,CAACE,UAAU,CAACL,KAAK,CAAC,EAAE,GAAG;UAClCF,MAAA,CAAOQ,MAAM,CAACH,CAAA,GAAI,GAAG,GAAGJ,IAAA;UACxBG,QAAA,GAAW;UACX;QACF;MACF;MAEA;MACA,IAAI,CAACA,QAAA,EAAU;QACbJ,MAAA,CAAOS,IAAI,CAACR,IAAA;MACd;IACF;EACF;EAEA,OAAOD,MAAA;AACT;AAEA,SAASU,wBAAwBC,OAAe;EAI9C,MAAM,CAACC,KAAA,EAAOC,YAAA,CAAa,GAAGF,OAAA,CAAQR,KAAK,CAAC;EAE5C,IAAI,CAACU,YAAA,EAAc;IACjB,OAAO;MACLF,OAAA,EAASC;IACX;EACF;EAEA,MAAME,MAAA,GAASD,YAAA,CAAaV,KAAK,CAAC,KAAKY,GAAG,CAAEC,KAAA,IAAUA,KAAA,CAAMC,UAAU,CAAC,OAAO,OAAOC,IAAI;EAEzF,IAAIJ,MAAA,CAAOR,MAAM,KAAK,GAAG;IACvB,OAAO;MACLQ,MAAA;MACAH,OAAA,EAAS,GAAGC,KAAA;IACd;EACF;EAEA,OAAO;IACLE,MAAA,EAAQhB,kBAAA,CAAmBgB,MAAA;IAC3BH,OAAA,EAAS,GAAGC,KAAA,KAAUE,MAAA,CAAOR,MAAM;EACrC;AACF;AAEA,OAAO,SAAAa,iBAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAzB,EAAA;EAA0B;IAAA0B;EAAA,IAAAF,EAAgB;EAAA,IAAAG,EAAA;EAAA,IAAAF,CAAA,QAAAC,YAAA;IACFC,EAAA,GAAAA,CAAA,KAAMb,uBAAA,CAAwBY,YAAA;IAAAD,CAAA,MAAAC,YAAA;IAAAD,CAAA,MAAAE,EAAA;EAAA;IAAAA,EAAA,GAAAF,CAAA;EAAA;EAA3E,OAAAG,EAAA,IAA8B3B,KAAA,CAAA4B,QAAA,CAAeF,EAA8B;EAApE;IAAAT,MAAA;IAAAH;EAAA,IAAAa,EAAmB;EAAA,IAAAE,EAAA;EAAA,IAAAL,CAAA,QAAAP,MAAA,IAAAO,CAAA,QAAAV,OAAA;IAGxBe,EAAA,GAAAC,KAAA,CAAC;MAAAC,QAAA,GACEjB,OAAA,EACAkB,KAAA,CAAAC,OAAA,CAAchB,MAAA,KAAWA,MAAA,CAAAR,MAAA,IAAgB,GACxCQ,MAAA,CAAAR,MAAA,MAAkB,GAChByB,IAAA,CAAC;QAAA,eAAiB;QAAAH,QAAA,EAAed,MAAM;MAAA,C,IAEvCiB,IAAA,CAAC;QAAA,eAAe;QAAAH,QAAA,EACbd,MAAA,CAAAC,GAAA,CAAAiB,KAED;MAAA,C,QAGF;IAAA,C;;;;;;;SAZNN,E;;AAJG,SAAAM,MAAAhB,KAAA,EAAAiB,KAAA;EAAA,OAYcF,IAAA,CAAC;IAAAH,QAAA,EAAgBZ;EAAA,GAARiB,KAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"fieldErrors.js","names":["c","_c","React","groupSimilarErrors","items","result","item","parts","split","inserted","i","length","startsWith","splice","push","createErrorsFromMessage","message","colonIndex","indexOf","intro","slice","errorsString","undefined","errors","map","error","replaceAll","trim","FieldErrorsToast","t0","$","errorMessage","t1","t2","useState","t3","_jsxs","children","Array","isArray","_jsx","_temp","index"],"sources":["../../../src/elements/Toasts/fieldErrors.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nfunction groupSimilarErrors(items: string[]): string[] {\n const result: string[] = []\n\n for (const item of items) {\n if (item) {\n const parts = item.split(' → ')\n let inserted = false\n\n // Find a place where a similar path exists\n for (let i = 0; i < result.length; i++) {\n if (result[i].startsWith(parts[0])) {\n result.splice(i + 1, 0, item)\n inserted = true\n break\n }\n }\n\n // If no similar path was found, add to the end\n if (!inserted) {\n result.push(item)\n }\n }\n }\n\n return result\n}\n\nexport function createErrorsFromMessage(message: string): {\n errors?: string[]\n message: string\n} {\n const colonIndex = message.indexOf(':')\n const intro = colonIndex >= 0 ? message.slice(0, colonIndex) : message\n const errorsString = colonIndex >= 0 ? message.slice(colonIndex + 1) : undefined\n\n if (!errorsString) {\n return {\n message: intro,\n }\n }\n\n const errors = errorsString.split(',').map((error) => error.replaceAll(' > ', ' → ').trim())\n\n if (errors.length === 1) {\n return {\n errors,\n message: `${intro}: `,\n }\n }\n\n return {\n errors: groupSimilarErrors(errors),\n message: `${intro} (${errors.length}):`,\n }\n}\n\nexport function FieldErrorsToast({ errorMessage }) {\n const [{ errors, message }] = React.useState(() => createErrorsFromMessage(errorMessage))\n\n return (\n <div>\n {message}\n {Array.isArray(errors) && errors.length > 0 ? (\n errors.length === 1 ? (\n <span data-testid=\"field-error\">{errors[0]}</span>\n ) : (\n <ul data-testid=\"field-errors\">\n {errors.map((error, index) => {\n return <li key={index}>{error}</li>\n })}\n </ul>\n )\n ) : null}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { createErrorsFromMessage } from './fieldErrors.js';
3
+ describe('createErrorsFromMessage', () => {
4
+ it('should return the full message when there is no colon', () => {
5
+ const result = createErrorsFromMessage('Something went wrong');
6
+ expect(result).toEqual({
7
+ message: 'Something went wrong'
8
+ });
9
+ });
10
+ it('should split a single field error after the colon', () => {
11
+ const result = createErrorsFromMessage('Validation failed: email');
12
+ expect(result).toEqual({
13
+ errors: ['email'],
14
+ message: 'Validation failed: '
15
+ });
16
+ });
17
+ it('should split multiple comma-separated field errors after the colon', () => {
18
+ const result = createErrorsFromMessage('The following fields are invalid: email, name');
19
+ expect(result).toEqual({
20
+ errors: ['email', 'name'],
21
+ message: 'The following fields are invalid (2):'
22
+ });
23
+ });
24
+ it('should preserve the full message when it contains multiple colons', () => {
25
+ const result = createErrorsFromMessage('With: multiple: colons');
26
+ expect(result).toEqual({
27
+ errors: ['multiple: colons'],
28
+ message: 'With: '
29
+ });
30
+ });
31
+ it('should replace " > " with " → " in error paths', () => {
32
+ const result = createErrorsFromMessage('Invalid: parent > child');
33
+ expect(result).toEqual({
34
+ errors: ['parent → child'],
35
+ message: 'Invalid: '
36
+ });
37
+ });
38
+ it('should group similar errors and count them', () => {
39
+ const result = createErrorsFromMessage('Invalid: blocks > 0, blocks > 1, other');
40
+ expect(result).toEqual({
41
+ errors: ['blocks → 0', 'blocks → 1', 'other'],
42
+ message: 'Invalid (3):'
43
+ });
44
+ });
45
+ });
46
+ //# sourceMappingURL=fieldErrors.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldErrors.spec.js","names":["describe","expect","it","createErrorsFromMessage","result","toEqual","message","errors"],"sources":["../../../src/elements/Toasts/fieldErrors.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { createErrorsFromMessage } from './fieldErrors.js'\n\ndescribe('createErrorsFromMessage', () => {\n it('should return the full message when there is no colon', () => {\n const result = createErrorsFromMessage('Something went wrong')\n\n expect(result).toEqual({ message: 'Something went wrong' })\n })\n\n it('should split a single field error after the colon', () => {\n const result = createErrorsFromMessage('Validation failed: email')\n\n expect(result).toEqual({ errors: ['email'], message: 'Validation failed: ' })\n })\n\n it('should split multiple comma-separated field errors after the colon', () => {\n const result = createErrorsFromMessage('The following fields are invalid: email, name')\n\n expect(result).toEqual({\n errors: ['email', 'name'],\n message: 'The following fields are invalid (2):',\n })\n })\n\n it('should preserve the full message when it contains multiple colons', () => {\n const result = createErrorsFromMessage('With: multiple: colons')\n\n expect(result).toEqual({ errors: ['multiple: colons'], message: 'With: ' })\n })\n\n it('should replace \" > \" with \" → \" in error paths', () => {\n const result = createErrorsFromMessage('Invalid: parent > child')\n\n expect(result).toEqual({ errors: ['parent → child'], message: 'Invalid: ' })\n })\n\n it('should group similar errors and count them', () => {\n const result = createErrorsFromMessage('Invalid: blocks > 0, blocks > 1, other')\n\n expect(result).toEqual({\n errors: ['blocks → 0', 'blocks → 1', 'other'],\n message: 'Invalid (3):',\n })\n })\n})\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ;AAErC,SAASC,uBAAuB,QAAQ;AAExCH,QAAA,CAAS,2BAA2B;EAClCE,EAAA,CAAG,yDAAyD;IAC1D,MAAME,MAAA,GAASD,uBAAA,CAAwB;IAEvCF,MAAA,CAAOG,MAAA,EAAQC,OAAO,CAAC;MAAEC,OAAA,EAAS;IAAuB;EAC3D;EAEAJ,EAAA,CAAG,qDAAqD;IACtD,MAAME,MAAA,GAASD,uBAAA,CAAwB;IAEvCF,MAAA,CAAOG,MAAA,EAAQC,OAAO,CAAC;MAAEE,MAAA,EAAQ,CAAC,QAAQ;MAAED,OAAA,EAAS;IAAsB;EAC7E;EAEAJ,EAAA,CAAG,sEAAsE;IACvE,MAAME,MAAA,GAASD,uBAAA,CAAwB;IAEvCF,MAAA,CAAOG,MAAA,EAAQC,OAAO,CAAC;MACrBE,MAAA,EAAQ,CAAC,SAAS,OAAO;MACzBD,OAAA,EAAS;IACX;EACF;EAEAJ,EAAA,CAAG,qEAAqE;IACtE,MAAME,MAAA,GAASD,uBAAA,CAAwB;IAEvCF,MAAA,CAAOG,MAAA,EAAQC,OAAO,CAAC;MAAEE,MAAA,EAAQ,CAAC,mBAAmB;MAAED,OAAA,EAAS;IAAS;EAC3E;EAEAJ,EAAA,CAAG,kDAAkD;IACnD,MAAME,MAAA,GAASD,uBAAA,CAAwB;IAEvCF,MAAA,CAAOG,MAAA,EAAQC,OAAO,CAAC;MAAEE,MAAA,EAAQ,CAAC,iBAAiB;MAAED,OAAA,EAAS;IAAY;EAC5E;EAEAJ,EAAA,CAAG,8CAA8C;IAC/C,MAAME,MAAA,GAASD,uBAAA,CAAwB;IAEvCF,MAAA,CAAOG,MAAA,EAAQC,OAAO,CAAC;MACrBE,MAAA,EAAQ,CAAC,cAAc,cAAc,QAAQ;MAC7CD,OAAA,EAAS;IACX;EACF;AACF","ignoreList":[]}
@@ -10,7 +10,7 @@ export const Tooltip = props => {
10
10
  boundingRef,
11
11
  children,
12
12
  className,
13
- delay = 350,
13
+ delay = 500,
14
14
  position: positionFromProps,
15
15
  show: showFromProps = true,
16
16
  staticPositioning = false
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useEffect","useIntersect","Tooltip","props","alignCaret","boundingRef","children","className","delay","position","positionFromProps","show","showFromProps","staticPositioning","setShow","useState","setPosition","getTitleAttribute","content","ref","intersectionEntry","root","current","rootMargin","threshold","timerID","setTimeout","clearTimeout","isIntersecting","_jsxs","Fragment","_jsx","filter","Boolean","join","style","opacity","title"],"sources":["../../../src/elements/Tooltip/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect } from 'react'\n\nimport { useIntersect } from '../../hooks/useIntersect.js'\nimport './index.scss'\n\nexport type Props = {\n alignCaret?: 'center' | 'left' | 'right'\n boundingRef?: React.RefObject<HTMLElement | null>\n children: React.ReactNode\n className?: string\n delay?: number\n position?: 'bottom' | 'top'\n show?: boolean\n /**\n * If the tooltip position should not change depending on if the toolbar is outside the boundingRef. @default false\n */\n staticPositioning?: boolean\n}\n\nexport const Tooltip: React.FC<Props> = (props) => {\n const {\n alignCaret = 'center',\n boundingRef,\n children,\n className,\n delay = 350,\n position: positionFromProps,\n show: showFromProps = true,\n staticPositioning = false,\n } = props\n\n const [show, setShow] = React.useState(showFromProps)\n const [position, setPosition] = React.useState<'bottom' | 'top'>('top')\n\n const getTitleAttribute = (content) => (typeof content === 'string' ? content : '')\n\n const [ref, intersectionEntry] = useIntersect(\n {\n root: boundingRef?.current || null,\n rootMargin: '-145px 0px 0px 100px',\n threshold: 0,\n },\n staticPositioning,\n )\n\n useEffect(() => {\n let timerID: NodeJS.Timeout\n\n // do not use the delay on transition-out\n if (delay && showFromProps) {\n timerID = setTimeout(() => {\n setShow(showFromProps)\n }, delay)\n } else {\n setShow(showFromProps)\n }\n\n return () => {\n if (timerID) {\n clearTimeout(timerID)\n }\n }\n }, [showFromProps, delay])\n\n useEffect(() => {\n if (staticPositioning) {\n return\n }\n setPosition(intersectionEntry?.isIntersecting ? 'top' : 'bottom')\n }, [intersectionEntry, staticPositioning])\n\n // The first aside is always on top. The purpose of that is that it can reliably be used for the interaction observer (as it's not moving around), to calculate the position of the actual tooltip.\n return (\n <React.Fragment>\n {!staticPositioning && (\n <aside\n aria-hidden=\"true\"\n className={['tooltip', className, `tooltip--caret-${alignCaret}`, 'tooltip--position-top']\n .filter(Boolean)\n .join(' ')}\n ref={ref}\n style={{ opacity: '0' }}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n )}\n <aside\n className={[\n 'tooltip',\n className,\n show && 'tooltip--show',\n `tooltip--caret-${alignCaret}`,\n `tooltip--position-${positionFromProps || position}`,\n ]\n .filter(Boolean)\n .join(' ')}\n title={getTitleAttribute(children)}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,IAASC,SAAS,QAAQ;AAEjC,SAASC,YAAY,QAAQ;AAC7B,OAAO;AAgBP,OAAO,MAAMC,OAAA,GAA4BC,KAAA;EACvC,MAAM;IACJC,UAAA,GAAa,QAAQ;IACrBC,WAAW;IACXC,QAAQ;IACRC,SAAS;IACTC,KAAA,GAAQ,GAAG;IACXC,QAAA,EAAUC,iBAAiB;IAC3BC,IAAA,EAAMC,aAAA,GAAgB,IAAI;IAC1BC,iBAAA,GAAoB;EAAK,CAC1B,GAAGV,KAAA;EAEJ,MAAM,CAACQ,IAAA,EAAMG,OAAA,CAAQ,GAAGf,KAAA,CAAMgB,QAAQ,CAACH,aAAA;EACvC,MAAM,CAACH,QAAA,EAAUO,WAAA,CAAY,GAAGjB,KAAA,CAAMgB,QAAQ,CAAmB;EAEjE,MAAME,iBAAA,GAAqBC,OAAA,IAAa,OAAOA,OAAA,KAAY,WAAWA,OAAA,GAAU;EAEhF,MAAM,CAACC,GAAA,EAAKC,iBAAA,CAAkB,GAAGnB,YAAA,CAC/B;IACEoB,IAAA,EAAMhB,WAAA,EAAaiB,OAAA,IAAW;IAC9BC,UAAA,EAAY;IACZC,SAAA,EAAW;EACb,GACAX,iBAAA;EAGFb,SAAA,CAAU;IACR,IAAIyB,OAAA;IAEJ;IACA,IAAIjB,KAAA,IAASI,aAAA,EAAe;MAC1Ba,OAAA,GAAUC,UAAA,CAAW;QACnBZ,OAAA,CAAQF,aAAA;MACV,GAAGJ,KAAA;IACL,OAAO;MACLM,OAAA,CAAQF,aAAA;IACV;IAEA,OAAO;MACL,IAAIa,OAAA,EAAS;QACXE,YAAA,CAAaF,OAAA;MACf;IACF;EACF,GAAG,CAACb,aAAA,EAAeJ,KAAA,CAAM;EAEzBR,SAAA,CAAU;IACR,IAAIa,iBAAA,EAAmB;MACrB;IACF;IACAG,WAAA,CAAYI,iBAAA,EAAmBQ,cAAA,GAAiB,QAAQ;EAC1D,GAAG,CAACR,iBAAA,EAAmBP,iBAAA,CAAkB;EAEzC;EACA,oBACEgB,KAAA,CAAC9B,KAAA,CAAM+B,QAAQ;eACZ,CAACjB,iBAAA,iBACAkB,IAAA,CAAC;MACC,eAAY;MACZxB,SAAA,EAAW,CAAC,WAAWA,SAAA,EAAW,kBAAkBH,UAAA,EAAY,EAAE,wBAAwB,CACvF4B,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;MACRf,GAAA,EAAKA,GAAA;MACLgB,KAAA,EAAO;QAAEC,OAAA,EAAS;MAAI;gBAEtB,aAAAL,IAAA,CAAC;QAAIxB,SAAA,EAAU;kBAAmBD;;qBAGtCyB,IAAA,CAAC;MACCxB,SAAA,EAAW,CACT,WACAA,SAAA,EACAI,IAAA,IAAQ,iBACR,kBAAkBP,UAAA,EAAY,EAC9B,qBAAqBM,iBAAA,IAAqBD,QAAA,EAAU,CACrD,CACEuB,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;MACRG,KAAA,EAAOpB,iBAAA,CAAkBX,QAAA;gBAEzB,aAAAyB,IAAA,CAAC;QAAIxB,SAAA,EAAU;kBAAmBD;;;;AAI1C","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useEffect","useIntersect","Tooltip","props","alignCaret","boundingRef","children","className","delay","position","positionFromProps","show","showFromProps","staticPositioning","setShow","useState","setPosition","getTitleAttribute","content","ref","intersectionEntry","root","current","rootMargin","threshold","timerID","setTimeout","clearTimeout","isIntersecting","_jsxs","Fragment","_jsx","filter","Boolean","join","style","opacity","title"],"sources":["../../../src/elements/Tooltip/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect } from 'react'\n\nimport { useIntersect } from '../../hooks/useIntersect.js'\nimport './index.scss'\n\nexport type Props = {\n alignCaret?: 'center' | 'left' | 'right'\n boundingRef?: React.RefObject<HTMLElement | null>\n children: React.ReactNode\n className?: string\n delay?: number\n position?: 'bottom' | 'top'\n show?: boolean\n /**\n * If the tooltip position should not change depending on if the toolbar is outside the boundingRef. @default false\n */\n staticPositioning?: boolean\n}\n\nexport const Tooltip: React.FC<Props> = (props) => {\n const {\n alignCaret = 'center',\n boundingRef,\n children,\n className,\n delay = 500,\n position: positionFromProps,\n show: showFromProps = true,\n staticPositioning = false,\n } = props\n\n const [show, setShow] = React.useState(showFromProps)\n const [position, setPosition] = React.useState<'bottom' | 'top'>('top')\n\n const getTitleAttribute = (content) => (typeof content === 'string' ? content : '')\n\n const [ref, intersectionEntry] = useIntersect(\n {\n root: boundingRef?.current || null,\n rootMargin: '-145px 0px 0px 100px',\n threshold: 0,\n },\n staticPositioning,\n )\n\n useEffect(() => {\n let timerID: NodeJS.Timeout\n\n // do not use the delay on transition-out\n if (delay && showFromProps) {\n timerID = setTimeout(() => {\n setShow(showFromProps)\n }, delay)\n } else {\n setShow(showFromProps)\n }\n\n return () => {\n if (timerID) {\n clearTimeout(timerID)\n }\n }\n }, [showFromProps, delay])\n\n useEffect(() => {\n if (staticPositioning) {\n return\n }\n setPosition(intersectionEntry?.isIntersecting ? 'top' : 'bottom')\n }, [intersectionEntry, staticPositioning])\n\n // The first aside is always on top. The purpose of that is that it can reliably be used for the interaction observer (as it's not moving around), to calculate the position of the actual tooltip.\n return (\n <React.Fragment>\n {!staticPositioning && (\n <aside\n aria-hidden=\"true\"\n className={['tooltip', className, `tooltip--caret-${alignCaret}`, 'tooltip--position-top']\n .filter(Boolean)\n .join(' ')}\n ref={ref}\n style={{ opacity: '0' }}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n )}\n <aside\n className={[\n 'tooltip',\n className,\n show && 'tooltip--show',\n `tooltip--caret-${alignCaret}`,\n `tooltip--position-${positionFromProps || position}`,\n ]\n .filter(Boolean)\n .join(' ')}\n title={getTitleAttribute(children)}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,IAASC,SAAS,QAAQ;AAEjC,SAASC,YAAY,QAAQ;AAC7B,OAAO;AAgBP,OAAO,MAAMC,OAAA,GAA4BC,KAAA;EACvC,MAAM;IACJC,UAAA,GAAa,QAAQ;IACrBC,WAAW;IACXC,QAAQ;IACRC,SAAS;IACTC,KAAA,GAAQ,GAAG;IACXC,QAAA,EAAUC,iBAAiB;IAC3BC,IAAA,EAAMC,aAAA,GAAgB,IAAI;IAC1BC,iBAAA,GAAoB;EAAK,CAC1B,GAAGV,KAAA;EAEJ,MAAM,CAACQ,IAAA,EAAMG,OAAA,CAAQ,GAAGf,KAAA,CAAMgB,QAAQ,CAACH,aAAA;EACvC,MAAM,CAACH,QAAA,EAAUO,WAAA,CAAY,GAAGjB,KAAA,CAAMgB,QAAQ,CAAmB;EAEjE,MAAME,iBAAA,GAAqBC,OAAA,IAAa,OAAOA,OAAA,KAAY,WAAWA,OAAA,GAAU;EAEhF,MAAM,CAACC,GAAA,EAAKC,iBAAA,CAAkB,GAAGnB,YAAA,CAC/B;IACEoB,IAAA,EAAMhB,WAAA,EAAaiB,OAAA,IAAW;IAC9BC,UAAA,EAAY;IACZC,SAAA,EAAW;EACb,GACAX,iBAAA;EAGFb,SAAA,CAAU;IACR,IAAIyB,OAAA;IAEJ;IACA,IAAIjB,KAAA,IAASI,aAAA,EAAe;MAC1Ba,OAAA,GAAUC,UAAA,CAAW;QACnBZ,OAAA,CAAQF,aAAA;MACV,GAAGJ,KAAA;IACL,OAAO;MACLM,OAAA,CAAQF,aAAA;IACV;IAEA,OAAO;MACL,IAAIa,OAAA,EAAS;QACXE,YAAA,CAAaF,OAAA;MACf;IACF;EACF,GAAG,CAACb,aAAA,EAAeJ,KAAA,CAAM;EAEzBR,SAAA,CAAU;IACR,IAAIa,iBAAA,EAAmB;MACrB;IACF;IACAG,WAAA,CAAYI,iBAAA,EAAmBQ,cAAA,GAAiB,QAAQ;EAC1D,GAAG,CAACR,iBAAA,EAAmBP,iBAAA,CAAkB;EAEzC;EACA,oBACEgB,KAAA,CAAC9B,KAAA,CAAM+B,QAAQ;eACZ,CAACjB,iBAAA,iBACAkB,IAAA,CAAC;MACC,eAAY;MACZxB,SAAA,EAAW,CAAC,WAAWA,SAAA,EAAW,kBAAkBH,UAAA,EAAY,EAAE,wBAAwB,CACvF4B,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;MACRf,GAAA,EAAKA,GAAA;MACLgB,KAAA,EAAO;QAAEC,OAAA,EAAS;MAAI;gBAEtB,aAAAL,IAAA,CAAC;QAAIxB,SAAA,EAAU;kBAAmBD;;qBAGtCyB,IAAA,CAAC;MACCxB,SAAA,EAAW,CACT,WACAA,SAAA,EACAI,IAAA,IAAQ,iBACR,kBAAkBP,UAAA,EAAY,EAC9B,qBAAqBM,iBAAA,IAAqBD,QAAA,EAAU,CACrD,CACEuB,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;MACRG,KAAA,EAAOpB,iBAAA,CAAkBX,QAAA;gBAEzB,aAAAyB,IAAA,CAAC;QAAIxB,SAAA,EAAU;kBAAmBD;;;;AAI1C","ignoreList":[]}