@payloadcms/ui 4.0.0-internal.f15737c → 4.0.0-internal.f2a04f7

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 (330) hide show
  1. package/dist/css/preflight.css +21 -2
  2. package/dist/elements/AppHeader/index.css +1 -1
  3. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  4. package/dist/elements/AppHeader/index.js +5 -1
  5. package/dist/elements/AppHeader/index.js.map +1 -1
  6. package/dist/elements/Autosave/index.d.ts.map +1 -1
  7. package/dist/elements/Autosave/index.js +10 -3
  8. package/dist/elements/Autosave/index.js.map +1 -1
  9. package/dist/elements/Button/index.css +24 -0
  10. package/dist/elements/Button/types.d.ts +1 -1
  11. package/dist/elements/Button/types.d.ts.map +1 -1
  12. package/dist/elements/Button/types.js.map +1 -1
  13. package/dist/elements/CloseModalOnRouteChange/index.d.ts.map +1 -1
  14. package/dist/elements/CloseModalOnRouteChange/index.js +27 -19
  15. package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -1
  16. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  17. package/dist/elements/CodeEditor/CodeEditor.js +5 -0
  18. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  19. package/dist/elements/DatePicker/DatePicker.js +6 -2
  20. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  21. package/dist/elements/DatePicker/index.css +35 -25
  22. package/dist/elements/DocumentControls/index.css +13 -10
  23. package/dist/elements/DocumentControls/index.d.ts +4 -2
  24. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  25. package/dist/elements/DocumentControls/index.js.map +1 -1
  26. package/dist/elements/DocumentDrawer/types.d.ts +1 -5
  27. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  28. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  29. package/dist/elements/DocumentFields/index.css +7 -7
  30. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  31. package/dist/elements/DocumentFields/index.js +1 -2
  32. package/dist/elements/DocumentFields/index.js.map +1 -1
  33. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  34. package/dist/elements/Drawer/types.d.ts +2 -2
  35. package/dist/elements/Drawer/types.d.ts.map +1 -1
  36. package/dist/elements/Drawer/types.js.map +1 -1
  37. package/dist/elements/EditUpload/library.css +6 -13
  38. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  39. package/dist/elements/FileManager/index.d.ts.map +1 -1
  40. package/dist/elements/FileManager/index.js +6 -1
  41. package/dist/elements/FileManager/index.js.map +1 -1
  42. package/dist/elements/Hierarchy/ActionsMenu/index.css +18 -0
  43. package/dist/elements/Hierarchy/ActionsMenu/index.d.ts +35 -0
  44. package/dist/elements/Hierarchy/ActionsMenu/index.d.ts.map +1 -0
  45. package/dist/elements/Hierarchy/ActionsMenu/index.js +99 -0
  46. package/dist/elements/Hierarchy/ActionsMenu/index.js.map +1 -0
  47. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +18 -16
  48. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
  49. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +2 -0
  50. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
  51. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
  52. package/dist/elements/Hierarchy/DocHeaderButton/index.css +12 -0
  53. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
  54. package/dist/elements/Hierarchy/DocHeaderButton/index.js +61 -14
  55. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  56. package/dist/elements/Hierarchy/Modal/Footer/index.css +33 -0
  57. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts +21 -0
  58. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts.map +1 -0
  59. package/dist/elements/Hierarchy/Modal/Footer/index.js +122 -0
  60. package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -0
  61. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +8 -3
  62. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  63. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +38 -12
  64. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  65. package/dist/elements/Hierarchy/Modal/index.css +0 -56
  66. package/dist/elements/Hierarchy/Modal/index.d.ts +5 -3
  67. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  68. package/dist/elements/Hierarchy/Modal/index.js +64 -65
  69. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  70. package/dist/elements/Hierarchy/Modal/types.d.ts +2 -0
  71. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
  72. package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
  73. package/dist/elements/Hierarchy/MoveMany/index.d.ts +1 -3
  74. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  75. package/dist/elements/Hierarchy/MoveMany/index.js +62 -84
  76. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  77. package/dist/elements/ListControls/types.d.ts +0 -10
  78. package/dist/elements/ListControls/types.d.ts.map +1 -1
  79. package/dist/elements/ListControls/types.js.map +1 -1
  80. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  81. package/dist/elements/ListDrawer/DrawerContent.js +1 -2
  82. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  83. package/dist/elements/ListDrawer/Provider.d.ts +0 -6
  84. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  85. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  86. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  87. package/dist/elements/ListDrawer/index.js +1 -1
  88. package/dist/elements/ListDrawer/index.js.map +1 -1
  89. package/dist/elements/ListDrawer/types.d.ts +1 -0
  90. package/dist/elements/ListDrawer/types.d.ts.map +1 -1
  91. package/dist/elements/ListDrawer/types.js.map +1 -1
  92. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.d.ts.map +1 -1
  93. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +24 -20
  94. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  95. package/dist/elements/LivePreview/Window/index.css +7 -1
  96. package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
  97. package/dist/elements/Nav/NavWrapper/index.js +19 -14
  98. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  99. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  100. package/dist/elements/PublishButton/index.js +71 -8
  101. package/dist/elements/PublishButton/index.js.map +1 -1
  102. package/dist/elements/PublishButton/validateAllLocales.d.ts +11 -0
  103. package/dist/elements/PublishButton/validateAllLocales.d.ts.map +1 -0
  104. package/dist/elements/PublishButton/validateAllLocales.js +263 -0
  105. package/dist/elements/PublishButton/validateAllLocales.js.map +1 -0
  106. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  107. package/dist/elements/RelationshipTable/AddNewButton.js +3 -0
  108. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  109. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  110. package/dist/elements/SaveDraftButton/index.js +15 -2
  111. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  112. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  113. package/dist/elements/SegmentedControl/index.css +50 -7
  114. package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
  115. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  116. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +0 -9
  117. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  118. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +63 -40
  119. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  120. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  121. package/dist/elements/Table/DefaultCell/index.js +6 -1
  122. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  123. package/dist/elements/Table/index.js.map +1 -1
  124. package/dist/elements/Tabs/index.css +4 -3
  125. package/dist/elements/Upload/getEditorFileSrc.d.ts +11 -0
  126. package/dist/elements/Upload/getEditorFileSrc.d.ts.map +1 -0
  127. package/dist/elements/Upload/getEditorFileSrc.js +6 -0
  128. package/dist/elements/Upload/getEditorFileSrc.js.map +1 -0
  129. package/dist/elements/Upload/index.d.ts.map +1 -1
  130. package/dist/elements/Upload/index.js +6 -1
  131. package/dist/elements/Upload/index.js.map +1 -1
  132. package/dist/exports/client/{CodeEditor-UKD3EPUY.js → CodeEditor-I6PL55BF.js} +2 -2
  133. package/dist/exports/client/{DatePicker-POZJVQP4.js → DatePicker-XAKGIULG.js} +2 -2
  134. package/dist/exports/client/{chunk-2AY67NFV.js → chunk-36JJSMEB.js} +2 -2
  135. package/dist/exports/client/chunk-36JJSMEB.js.map +7 -0
  136. package/dist/exports/client/chunk-R7M6BG75.js +27 -0
  137. package/dist/exports/client/chunk-R7M6BG75.js.map +7 -0
  138. package/dist/exports/client/index.d.ts +3 -0
  139. package/dist/exports/client/index.d.ts.map +1 -1
  140. package/dist/exports/client/index.js +27 -27
  141. package/dist/exports/client/index.js.map +4 -4
  142. package/dist/exports/shared/index.js +2 -2
  143. package/dist/exports/shared/index.js.map +3 -3
  144. package/dist/fields/Group/index.css +3 -5
  145. package/dist/fields/Tabs/index.css +14 -14
  146. package/dist/fields/Upload/Input.d.ts.map +1 -1
  147. package/dist/fields/Upload/Input.js +3 -1
  148. package/dist/fields/Upload/Input.js.map +1 -1
  149. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  150. package/dist/forms/Form/fieldReducer.js +6 -9
  151. package/dist/forms/Form/fieldReducer.js.map +1 -1
  152. package/dist/forms/Form/index.d.ts.map +1 -1
  153. package/dist/forms/Form/index.js +0 -1
  154. package/dist/forms/Form/index.js.map +1 -1
  155. package/dist/forms/Form/types.d.ts +0 -5
  156. package/dist/forms/Form/types.d.ts.map +1 -1
  157. package/dist/forms/Form/types.js.map +1 -1
  158. package/dist/forms/RenderFields/index.css +2 -2
  159. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +2 -2
  160. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  161. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  162. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -2
  163. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  164. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  165. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -2
  166. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  167. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  168. package/dist/forms/fieldSchemasToFormState/types.d.ts +2 -2
  169. package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
  170. package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
  171. package/dist/forms/useField/types.d.ts +0 -4
  172. package/dist/forms/useField/types.d.ts.map +1 -1
  173. package/dist/forms/useField/types.js.map +1 -1
  174. package/dist/icons/Arrow/index.d.ts +1 -1
  175. package/dist/icons/Arrow/index.d.ts.map +1 -1
  176. package/dist/icons/Arrow/index.js +7 -1
  177. package/dist/icons/Arrow/index.js.map +1 -1
  178. package/dist/icons/Clock/index.d.ts +6 -0
  179. package/dist/icons/Clock/index.d.ts.map +1 -0
  180. package/dist/icons/Clock/index.js +18 -0
  181. package/dist/icons/Clock/index.js.map +1 -0
  182. package/dist/icons/Pin/index.d.ts +7 -0
  183. package/dist/icons/Pin/index.d.ts.map +1 -0
  184. package/dist/icons/Pin/index.js +23 -0
  185. package/dist/icons/Pin/index.js.map +1 -0
  186. package/dist/icons/Sidebar/index.d.ts.map +1 -1
  187. package/dist/icons/Sidebar/index.js +2 -0
  188. package/dist/icons/Sidebar/index.js.map +1 -1
  189. package/dist/icons/Table/index.css +5 -1
  190. package/dist/layouts/Root/getRootLayoutData.d.ts +2 -2
  191. package/dist/layouts/Root/getRootLayoutData.d.ts.map +1 -1
  192. package/dist/layouts/Root/getRootLayoutData.js +8 -4
  193. package/dist/layouts/Root/getRootLayoutData.js.map +1 -1
  194. package/dist/layouts/Root/index.d.ts +1 -1
  195. package/dist/layouts/Root/index.d.ts.map +1 -1
  196. package/dist/layouts/Root/index.js +5 -20
  197. package/dist/layouts/Root/index.js.map +1 -1
  198. package/dist/providers/ListQuery/types.d.ts +0 -4
  199. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  200. package/dist/providers/ListQuery/types.js.map +1 -1
  201. package/dist/providers/RouteCache/index.d.ts.map +1 -1
  202. package/dist/providers/RouteCache/index.js +37 -25
  203. package/dist/providers/RouteCache/index.js.map +1 -1
  204. package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
  205. package/dist/providers/TableColumns/RenderDefaultCell/index.js +1 -2
  206. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
  207. package/dist/providers/TableColumns/types.d.ts +1 -34
  208. package/dist/providers/TableColumns/types.d.ts.map +1 -1
  209. package/dist/providers/TableColumns/types.js.map +1 -1
  210. package/dist/styles.css +22 -3
  211. package/dist/templates/Default/index.css +0 -1
  212. package/dist/utilities/appendCacheTag.d.ts +1 -0
  213. package/dist/utilities/appendCacheTag.d.ts.map +1 -1
  214. package/dist/utilities/appendCacheTag.js +2 -1
  215. package/dist/utilities/appendCacheTag.js.map +1 -1
  216. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  217. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +32 -6
  218. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
  219. package/dist/utilities/getDisplayedFieldValue.d.ts +8 -2
  220. package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
  221. package/dist/utilities/getDisplayedFieldValue.js +11 -1
  222. package/dist/utilities/getDisplayedFieldValue.js.map +1 -1
  223. package/dist/utilities/getDocumentThumbnail.d.ts +6 -0
  224. package/dist/utilities/getDocumentThumbnail.d.ts.map +1 -0
  225. package/dist/utilities/getDocumentThumbnail.js +27 -0
  226. package/dist/utilities/getDocumentThumbnail.js.map +1 -0
  227. package/dist/utilities/getDocumentThumbnailPopulate.d.ts +7 -0
  228. package/dist/utilities/getDocumentThumbnailPopulate.d.ts.map +1 -0
  229. package/dist/utilities/getDocumentThumbnailPopulate.js +23 -0
  230. package/dist/utilities/getDocumentThumbnailPopulate.js.map +1 -0
  231. package/dist/utilities/getDocumentThumbnailSelect.d.ts +7 -0
  232. package/dist/utilities/getDocumentThumbnailSelect.d.ts.map +1 -0
  233. package/dist/utilities/getDocumentThumbnailSelect.js +24 -0
  234. package/dist/utilities/getDocumentThumbnailSelect.js.map +1 -0
  235. package/dist/utilities/getHasScheduledPublish.js.map +1 -1
  236. package/dist/utilities/handleLivePreview.js.map +1 -1
  237. package/dist/utilities/hasSavePermission.js.map +1 -1
  238. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  239. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  240. package/dist/utilities/serverFunctionRegistry.js +2 -0
  241. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  242. package/dist/utilities/traverseForLocalizedFields.d.ts +7 -2
  243. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  244. package/dist/utilities/traverseForLocalizedFields.js +22 -8
  245. package/dist/utilities/traverseForLocalizedFields.js.map +1 -1
  246. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  247. package/dist/views/CreateFirstUser/index.js +4 -2
  248. package/dist/views/CreateFirstUser/index.js.map +1 -1
  249. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  250. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +30 -21
  251. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  252. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts +1 -1
  253. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
  254. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +16 -4
  255. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  256. package/dist/views/Edit/index.css +26 -0
  257. package/dist/views/Edit/index.d.ts.map +1 -1
  258. package/dist/views/Edit/index.js +1 -1
  259. package/dist/views/Edit/index.js.map +1 -1
  260. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
  261. package/dist/views/HierarchyList/DocumentListSelection/index.js +0 -1
  262. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  263. package/dist/views/List/DocumentGrid/index.d.ts.map +1 -1
  264. package/dist/views/List/DocumentGrid/index.js +2 -37
  265. package/dist/views/List/DocumentGrid/index.js.map +1 -1
  266. package/dist/views/List/enrichDocsWithVersionStatus.d.ts.map +1 -1
  267. package/dist/views/List/enrichDocsWithVersionStatus.js +3 -1
  268. package/dist/views/List/enrichDocsWithVersionStatus.js.map +1 -1
  269. package/dist/views/List/index.d.ts.map +1 -1
  270. package/dist/views/List/index.js +11 -24
  271. package/dist/views/List/index.js.map +1 -1
  272. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +2 -12
  273. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  274. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js +2 -2
  275. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
  276. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +2 -2
  277. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  278. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +2 -2
  279. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  280. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +2 -2
  281. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  282. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +2 -2
  283. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  284. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +2 -2
  285. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  286. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  287. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +2 -2
  288. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  289. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +8 -8
  290. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  291. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +2 -2
  292. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  293. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.d.ts.map +1 -1
  294. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +2 -2
  295. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
  296. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +1 -1
  297. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +31 -5
  298. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -1
  299. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.css +41 -0
  300. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts +19 -0
  301. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts.map +1 -0
  302. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js +121 -0
  303. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js.map +1 -0
  304. package/dist/widgets/RecentlyViewed/getDocuments.d.ts +20 -0
  305. package/dist/widgets/RecentlyViewed/getDocuments.d.ts.map +1 -0
  306. package/dist/widgets/RecentlyViewed/getDocuments.js +254 -0
  307. package/dist/widgets/RecentlyViewed/getDocuments.js.map +1 -0
  308. package/dist/widgets/RecentlyViewed/index.client.d.ts +41 -0
  309. package/dist/widgets/RecentlyViewed/index.client.d.ts.map +1 -0
  310. package/dist/widgets/RecentlyViewed/index.client.js +409 -0
  311. package/dist/widgets/RecentlyViewed/index.client.js.map +1 -0
  312. package/dist/widgets/RecentlyViewed/index.css +352 -0
  313. package/dist/widgets/RecentlyViewed/index.d.ts +1 -1
  314. package/dist/widgets/RecentlyViewed/index.d.ts.map +1 -1
  315. package/dist/widgets/RecentlyViewed/index.js +33 -134
  316. package/dist/widgets/RecentlyViewed/index.js.map +1 -1
  317. package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts +18 -0
  318. package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts.map +1 -0
  319. package/dist/widgets/RecentlyViewed/pinnedPreferences.js +81 -0
  320. package/dist/widgets/RecentlyViewed/pinnedPreferences.js.map +1 -0
  321. package/dist/widgets/RecentlyViewed/recents.d.ts +8 -0
  322. package/dist/widgets/RecentlyViewed/recents.d.ts.map +1 -0
  323. package/dist/widgets/RecentlyViewed/recents.js +19 -0
  324. package/dist/widgets/RecentlyViewed/recents.js.map +1 -0
  325. package/package.json +16 -16
  326. package/dist/exports/client/chunk-2AY67NFV.js.map +0 -7
  327. package/dist/exports/client/chunk-6XCSN54Q.js +0 -27
  328. package/dist/exports/client/chunk-6XCSN54Q.js.map +0 -7
  329. /package/dist/exports/client/{CodeEditor-UKD3EPUY.js.map → CodeEditor-I6PL55BF.js.map} +0 -0
  330. /package/dist/exports/client/{DatePicker-POZJVQP4.js.map → DatePicker-XAKGIULG.js.map} +0 -0
@@ -0,0 +1,409 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
4
+ import React, { useEffect, useId, useMemo, useRef, useState } from 'react';
5
+ import { Button } from '../../elements/Button/index.js';
6
+ import { CardGrid } from '../../elements/CardGrid/index.js';
7
+ import { DocumentCard } from '../../elements/DocumentCard/index.js';
8
+ import { ChevronIcon } from '../../icons/Chevron/index.js';
9
+ import { ClockIcon } from '../../icons/Clock/index.js';
10
+ import { DocumentIcon } from '../../icons/Document/index.js';
11
+ import { PinIcon } from '../../icons/Pin/index.js';
12
+ import { useAuth } from '../../providers/Auth/index.js';
13
+ import { useConfig } from '../../providers/Config/index.js';
14
+ import { useEntityVisibility } from '../../providers/EntityVisibility/index.js';
15
+ import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
16
+ import { useTranslation } from '../../providers/Translation/index.js';
17
+ import { isNavEntityVisible } from '../../utilities/isNavEntityVisible.js';
18
+ import { WidgetCard } from '../WidgetCard/index.js';
19
+ import { PinDocumentPicker } from './PinDocumentPicker/index.js';
20
+ import { updatePinnedPreferences } from './pinnedPreferences.js';
21
+ import { documentKey } from './recents.js';
22
+ import './index.css';
23
+ export function RecentsAndPinnedClient({
24
+ excludedCollections,
25
+ labels,
26
+ pinsURL
27
+ }) {
28
+ const {
29
+ permissions,
30
+ user
31
+ } = useAuth();
32
+ const {
33
+ t
34
+ } = useTranslation();
35
+ const {
36
+ config
37
+ } = useConfig();
38
+ const {
39
+ isEntityVisible
40
+ } = useEntityVisibility();
41
+ const {
42
+ serverFunction
43
+ } = useServerFunctions();
44
+ const pinnableCollections = useMemo(() => config.collections.filter(({
45
+ slug,
46
+ admin
47
+ }) => isEntityVisible({
48
+ collectionSlug: slug
49
+ }) && isNavEntityVisible({
50
+ adminGroup: admin.group,
51
+ entityPermissions: permissions?.collections?.[slug]
52
+ })).map(({
53
+ slug: slug_0
54
+ }) => slug_0), [config.collections, isEntityVisible, permissions]);
55
+ const canAddPin = Boolean(user) && pinnableCollections.length > 0;
56
+ const contentRef = useRef(null);
57
+ const listID = useId();
58
+ const [page, setPage] = useState(1);
59
+ const [pageSize, setPageSize] = useState(0);
60
+ const pinnedTabRef = useRef(null);
61
+ const recentsTabRef = useRef(null);
62
+ const previousPageRef = useRef(null);
63
+ const nextPageRef = useRef(null);
64
+ const paginationFocusRef = useRef(false);
65
+ const [activeTab, setActiveTab] = useState('pinned');
66
+ const [pageResult, setPageResult] = useState({
67
+ items: [],
68
+ page: 1,
69
+ totalDocs: 0
70
+ });
71
+ const [isLoading, setIsLoading] = useState(true);
72
+ const [shouldShowLoading, setShouldShowLoading] = useState(false);
73
+ const [isSaving, setIsSaving] = useState(false);
74
+ const [saveError, setSaveError] = useState('');
75
+ const [loadError, setLoadError] = useState('');
76
+ const [refresh, setRefresh] = useState(0);
77
+ const shouldIncludePinPlaceholder = activeTab === 'pinned' && canAddPin;
78
+ const totalPages = Math.max(1, Math.ceil((pageResult.totalDocs + Number(shouldIncludePinPlaceholder)) / (pageSize || 1)));
79
+ const currentPage = pageResult.page;
80
+ const items = pageResult.items;
81
+ const hasAddPinCard = shouldIncludePinPlaceholder && pageResult.page === totalPages && items.length < pageSize;
82
+ useEffect(() => {
83
+ if (!pageSize) {
84
+ return;
85
+ }
86
+ let isCurrent = true;
87
+ setIsLoading(true);
88
+ setShouldShowLoading(false);
89
+ setLoadError('');
90
+ const loadingTimeout = setTimeout(() => setShouldShowLoading(true), 180);
91
+ void serverFunction({
92
+ name: 'get-dashboard-documents',
93
+ args: {
94
+ excludedCollections,
95
+ limit: pageSize,
96
+ page,
97
+ shouldIncludePinPlaceholder,
98
+ tab: activeTab
99
+ }
100
+ }).then(result => {
101
+ if (!isCurrent) {
102
+ return;
103
+ }
104
+ setPageResult(result);
105
+ setPage(result.page);
106
+ setIsLoading(false);
107
+ if (paginationFocusRef.current) {
108
+ paginationFocusRef.current = false;
109
+ const lastPage = Math.max(1, Math.ceil((result.totalDocs + Number(shouldIncludePinPlaceholder)) / pageSize));
110
+ requestAnimationFrame(() => {
111
+ if (lastPage === 1) {
112
+ const activeTabRef = activeTab === 'pinned' ? pinnedTabRef : recentsTabRef;
113
+ activeTabRef.current?.focus();
114
+ } else if (result.page === 1) {
115
+ nextPageRef.current?.focus();
116
+ } else if (result.page === lastPage) {
117
+ previousPageRef.current?.focus();
118
+ }
119
+ });
120
+ }
121
+ }).catch(() => {
122
+ if (isCurrent) {
123
+ setIsLoading(false);
124
+ paginationFocusRef.current = false;
125
+ setLoadError(labels.loadError);
126
+ }
127
+ }).finally(() => clearTimeout(loadingTimeout));
128
+ return () => {
129
+ isCurrent = false;
130
+ clearTimeout(loadingTimeout);
131
+ };
132
+ }, [activeTab, excludedCollections, shouldIncludePinPlaceholder, labels.loadError, page, pageSize, refresh, serverFunction]);
133
+ useEffect(() => {
134
+ const element = contentRef.current;
135
+ if (!element) {
136
+ return;
137
+ }
138
+ let observedPageSize = 0;
139
+ const observer = new ResizeObserver(() => {
140
+ const styles = getComputedStyle(element);
141
+ const columns = styles.gridTemplateColumns.split(' ').length;
142
+ const rows = Number(styles.getPropertyValue('--recents-rows'));
143
+ const nextPageSize = columns * rows;
144
+ element.style.setProperty('--recents-columns', String(columns));
145
+ if (nextPageSize !== observedPageSize) {
146
+ observedPageSize = nextPageSize;
147
+ setPageSize(nextPageSize);
148
+ setPage(1);
149
+ }
150
+ });
151
+ observer.observe(element);
152
+ return () => observer.disconnect();
153
+ }, []);
154
+ const emptyMessage = activeTab === 'recents' ? labels.recentsEmpty : labels.pinnedEmpty;
155
+ const emptyDescription = activeTab === 'recents' ? labels.recentsEmptyDescription : labels.pinnedEmptyDescription;
156
+ const removePinnedDocument = async ({
157
+ item
158
+ }) => {
159
+ if (isSaving || activeTab !== 'pinned') {
160
+ return;
161
+ }
162
+ const previous = pageResult;
163
+ setPageResult(current => ({
164
+ ...current,
165
+ items: current.items.filter(entry => documentKey(entry) !== documentKey(item))
166
+ }));
167
+ requestAnimationFrame(() => pinnedTabRef.current?.focus());
168
+ setIsSaving(true);
169
+ setSaveError('');
170
+ try {
171
+ await updatePinnedPreferences({
172
+ document: item,
173
+ shouldPin: false,
174
+ url: pinsURL
175
+ });
176
+ setRefresh(value => value + 1);
177
+ } catch {
178
+ setPageResult(previous);
179
+ setSaveError(labels.pinnedSaveError);
180
+ } finally {
181
+ setIsSaving(false);
182
+ }
183
+ };
184
+ const addSelectedPin = async ({
185
+ document
186
+ }) => {
187
+ if (isSaving) {
188
+ return;
189
+ }
190
+ setIsSaving(true);
191
+ setSaveError('');
192
+ try {
193
+ await updatePinnedPreferences({
194
+ document,
195
+ shouldPin: true,
196
+ url: pinsURL
197
+ });
198
+ setPage(1);
199
+ setRefresh(value_0 => value_0 + 1);
200
+ } catch {
201
+ setSaveError(labels.pinnedSaveError);
202
+ } finally {
203
+ setIsSaving(false);
204
+ requestAnimationFrame(() => pinnedTabRef.current?.focus());
205
+ }
206
+ };
207
+ const pinDocumentPicker = canAddPin ? /*#__PURE__*/_jsx(PinDocumentPicker, {
208
+ collectionSlugs: pinnableCollections,
209
+ isDisabled: isLoading || isSaving,
210
+ isEmpty: pageResult.totalDocs === 0,
211
+ labels: labels,
212
+ onError: () => setSaveError(labels.pinnedSaveError),
213
+ onSelect: args => void addSelectedPin(args),
214
+ pinsURL: pinsURL
215
+ }) : null;
216
+ return /*#__PURE__*/_jsxs(WidgetCard, {
217
+ className: "recently-viewed-widget recents-widget",
218
+ title: labels.title,
219
+ children: [/*#__PURE__*/_jsxs("div", {
220
+ className: "recents-widget__toolbar",
221
+ children: [/*#__PURE__*/_jsx("div", {
222
+ "aria-label": labels.title,
223
+ className: "recents-widget__tabs",
224
+ role: "group",
225
+ children: ['pinned', 'recents'].map(tab => /*#__PURE__*/_jsx("button", {
226
+ "aria-pressed": activeTab === tab,
227
+ className: "recents-widget__tab",
228
+ onClick: () => {
229
+ if (isSaving) {
230
+ return;
231
+ }
232
+ if (activeTab === tab && page === 1) {
233
+ if (loadError) {
234
+ setRefresh(value_1 => value_1 + 1);
235
+ }
236
+ return;
237
+ }
238
+ setPageResult({
239
+ items: [],
240
+ page: 1,
241
+ totalDocs: 0
242
+ });
243
+ setIsLoading(true);
244
+ setActiveTab(tab);
245
+ setPage(1);
246
+ },
247
+ ref: tab === 'pinned' ? pinnedTabRef : recentsTabRef,
248
+ type: "button",
249
+ children: tab === 'recents' ? labels.recents : labels.pinned
250
+ }, tab))
251
+ }), totalPages > 1 ? /*#__PURE__*/_jsxs("div", {
252
+ "aria-label": labels.pagination,
253
+ className: "recents-widget__pagination",
254
+ role: "group",
255
+ children: [/*#__PURE__*/_jsx("button", {
256
+ "aria-controls": listID,
257
+ "aria-disabled": isLoading || isSaving,
258
+ "aria-label": labels.previous,
259
+ className: "recents-widget__previous",
260
+ disabled: currentPage === 1,
261
+ onClick: () => {
262
+ if (isLoading || isSaving) {
263
+ return;
264
+ }
265
+ paginationFocusRef.current = true;
266
+ setPage(currentPage - 1);
267
+ },
268
+ ref: previousPageRef,
269
+ type: "button",
270
+ children: /*#__PURE__*/_jsx("span", {
271
+ "aria-hidden": "true",
272
+ children: /*#__PURE__*/_jsx(ChevronIcon, {
273
+ direction: "left"
274
+ })
275
+ })
276
+ }), /*#__PURE__*/_jsx("span", {
277
+ "aria-atomic": "true",
278
+ "aria-live": "polite",
279
+ className: "recents-widget__page-status",
280
+ children: t('dashboard:widgetPageCount', {
281
+ currentPage,
282
+ totalPages
283
+ })
284
+ }), /*#__PURE__*/_jsx("button", {
285
+ "aria-controls": listID,
286
+ "aria-disabled": isLoading || isSaving,
287
+ "aria-label": labels.next,
288
+ className: "recents-widget__next",
289
+ disabled: currentPage === totalPages,
290
+ onClick: () => {
291
+ if (isLoading || isSaving) {
292
+ return;
293
+ }
294
+ paginationFocusRef.current = true;
295
+ setPage(currentPage + 1);
296
+ },
297
+ ref: nextPageRef,
298
+ type: "button",
299
+ children: /*#__PURE__*/_jsx("span", {
300
+ "aria-hidden": "true",
301
+ children: /*#__PURE__*/_jsx(ChevronIcon, {
302
+ direction: "right"
303
+ })
304
+ })
305
+ })]
306
+ }) : null]
307
+ }), /*#__PURE__*/_jsxs("div", {
308
+ "aria-busy": isLoading,
309
+ className: "recents-widget__viewport",
310
+ ref: contentRef,
311
+ children: [loadError ? /*#__PURE__*/_jsxs("div", {
312
+ className: "recents-widget__error",
313
+ children: [/*#__PURE__*/_jsx("span", {
314
+ children: loadError
315
+ }), /*#__PURE__*/_jsx(Button, {
316
+ buttonStyle: "secondary",
317
+ margin: false,
318
+ onClick: () => {
319
+ const activeTabRef_0 = activeTab === 'pinned' ? pinnedTabRef : recentsTabRef;
320
+ activeTabRef_0.current?.focus();
321
+ setRefresh(value_2 => value_2 + 1);
322
+ },
323
+ size: "medium",
324
+ type: "button",
325
+ children: labels.retry
326
+ })]
327
+ }) : items.length || hasAddPinCard && !isLoading ? /*#__PURE__*/_jsx("div", {
328
+ className: "recents-widget__content",
329
+ id: listID,
330
+ children: /*#__PURE__*/_jsx(CardGrid, {
331
+ ariaLabel: activeTab === 'pinned' ? labels.pinned : labels.recents,
332
+ className: "recents-widget__items recents-widget__items--grid",
333
+ getItemClassName: item_0 => item_0 ? 'recents-widget__item' : `recents-widget__item recents-widget__item--add-pin${pageResult.totalDocs === 0 ? ' recents-widget__item--empty' : ''}`,
334
+ getKey: item_1 => item_1 ? documentKey(item_1) : 'add-pin',
335
+ items: hasAddPinCard ? [...items, null] : items,
336
+ renderItem: item_2 => item_2 ? /*#__PURE__*/_jsxs(DocumentCard, {
337
+ href: item_2.href,
338
+ placeholder: /*#__PURE__*/_jsx(DocumentIcon, {}),
339
+ thumbnail: item_2.thumbnailURL ? {
340
+ alt: '',
341
+ src: item_2.thumbnailURL
342
+ } : undefined,
343
+ title: item_2.title,
344
+ children: [/*#__PURE__*/_jsxs("div", {
345
+ className: "recents-widget__meta",
346
+ children: [item_2.typeLabel, item_2.dateTime && item_2.dateLabel ? /*#__PURE__*/_jsxs(_Fragment, {
347
+ children: [' · ', /*#__PURE__*/_jsx("time", {
348
+ dateTime: item_2.dateTime,
349
+ children: item_2.dateLabel
350
+ })]
351
+ }) : null]
352
+ }), item_2.statusLabel ? /*#__PURE__*/_jsx("span", {
353
+ className: `recents-widget__status-pill${item_2.isDraft ? ' recents-widget__status-pill--draft' : item_2.isChanged ? ' recents-widget__status-pill--changed' : ''}`,
354
+ children: item_2.statusLabel
355
+ }) : null, activeTab === 'pinned' ? /*#__PURE__*/_jsx("button", {
356
+ "aria-label": `${labels.removePin}: ${item_2.title}`,
357
+ "aria-pressed": true,
358
+ className: "recents-widget__pin",
359
+ disabled: isSaving || isLoading,
360
+ onClick: () => void removePinnedDocument({
361
+ item: item_2
362
+ }),
363
+ type: "button",
364
+ children: /*#__PURE__*/_jsx("span", {
365
+ "aria-hidden": "true",
366
+ className: "recents-widget__pin-icon",
367
+ children: /*#__PURE__*/_jsx(PinIcon, {
368
+ isFilled: true
369
+ })
370
+ })
371
+ }) : null]
372
+ }) : pinDocumentPicker
373
+ })
374
+ }) : isLoading ? null : /*#__PURE__*/_jsxs("div", {
375
+ "aria-live": "polite",
376
+ className: "recents-widget__empty",
377
+ children: [/*#__PURE__*/_jsx("span", {
378
+ "aria-hidden": "true",
379
+ className: `recents-widget__empty-icon recents-widget__empty-icon--${activeTab}`,
380
+ children: activeTab === 'pinned' ? /*#__PURE__*/_jsx(PinIcon, {}) : /*#__PURE__*/_jsx(ClockIcon, {})
381
+ }), /*#__PURE__*/_jsxs("span", {
382
+ className: "recents-widget__empty-text",
383
+ children: [/*#__PURE__*/_jsx("span", {
384
+ className: "recents-widget__empty-title",
385
+ children: emptyMessage
386
+ }), /*#__PURE__*/_jsx("span", {
387
+ className: "recents-widget__empty-description",
388
+ children: emptyDescription
389
+ })]
390
+ })]
391
+ }), saveError && !loadError ? /*#__PURE__*/_jsx("span", {
392
+ "aria-hidden": "true",
393
+ className: "recents-widget__save-error",
394
+ children: saveError
395
+ }) : null, /*#__PURE__*/_jsx("span", {
396
+ "aria-hidden": "true",
397
+ className: "recents-widget__loading",
398
+ children: isLoading && shouldShowLoading ? /*#__PURE__*/_jsx("span", {
399
+ children: labels.loading
400
+ }) : null
401
+ })]
402
+ }), /*#__PURE__*/_jsx("span", {
403
+ "aria-live": "polite",
404
+ className: "recents-widget__status sr-only",
405
+ children: saveError || loadError || (isLoading && shouldShowLoading ? labels.loading : '')
406
+ })]
407
+ });
408
+ }
409
+ //# sourceMappingURL=index.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.client.js","names":["React","useEffect","useId","useMemo","useRef","useState","Button","CardGrid","DocumentCard","ChevronIcon","ClockIcon","DocumentIcon","PinIcon","useAuth","useConfig","useEntityVisibility","useServerFunctions","useTranslation","isNavEntityVisible","WidgetCard","PinDocumentPicker","updatePinnedPreferences","documentKey","RecentsAndPinnedClient","excludedCollections","labels","pinsURL","permissions","user","t","config","isEntityVisible","serverFunction","pinnableCollections","collections","filter","slug","admin","collectionSlug","adminGroup","group","entityPermissions","map","canAddPin","Boolean","length","contentRef","listID","page","setPage","pageSize","setPageSize","pinnedTabRef","recentsTabRef","previousPageRef","nextPageRef","paginationFocusRef","activeTab","setActiveTab","pageResult","setPageResult","items","totalDocs","isLoading","setIsLoading","shouldShowLoading","setShouldShowLoading","isSaving","setIsSaving","saveError","setSaveError","loadError","setLoadError","refresh","setRefresh","shouldIncludePinPlaceholder","totalPages","Math","max","ceil","Number","currentPage","hasAddPinCard","isCurrent","loadingTimeout","setTimeout","name","args","limit","tab","then","result","current","lastPage","requestAnimationFrame","activeTabRef","focus","catch","finally","clearTimeout","element","observedPageSize","observer","ResizeObserver","styles","getComputedStyle","columns","gridTemplateColumns","split","rows","getPropertyValue","nextPageSize","style","setProperty","String","observe","disconnect","emptyMessage","recentsEmpty","pinnedEmpty","emptyDescription","recentsEmptyDescription","pinnedEmptyDescription","removePinnedDocument","item","previous","entry","document","shouldPin","url","value","pinnedSaveError","addSelectedPin","pinDocumentPicker","_jsx","collectionSlugs","isDisabled","isEmpty","onError","onSelect","_jsxs","className","title","role","onClick","ref","type","recents","pinned","pagination","disabled","direction","next","buttonStyle","margin","size","retry","id","ariaLabel","getItemClassName","getKey","renderItem","href","placeholder","thumbnail","thumbnailURL","alt","src","undefined","typeLabel","dateTime","dateLabel","_Fragment","statusLabel","isDraft","isChanged","removePin","isFilled","loading"],"sources":["../../../src/widgets/RecentlyViewed/index.client.tsx"],"sourcesContent":["'use client'\n\nimport React, { useEffect, useId, useMemo, useRef, useState } from 'react'\n\nimport type { DocumentsPage, DocumentsTab } from './getDocuments.js'\nimport type { PinnedItem } from './recents.js'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { CardGrid } from '../../elements/CardGrid/index.js'\nimport { DocumentCard } from '../../elements/DocumentCard/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { ClockIcon } from '../../icons/Clock/index.js'\nimport { DocumentIcon } from '../../icons/Document/index.js'\nimport { PinIcon } from '../../icons/Pin/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useEntityVisibility } from '../../providers/EntityVisibility/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { isNavEntityVisible } from '../../utilities/isNavEntityVisible.js'\nimport { WidgetCard } from '../WidgetCard/index.js'\nimport { PinDocumentPicker } from './PinDocumentPicker/index.js'\nimport { updatePinnedPreferences } from './pinnedPreferences.js'\nimport { documentKey } from './recents.js'\nimport './index.css'\n\nexport type RecentDocument = {\n dateLabel?: string\n dateTime?: string\n href: string\n isChanged?: boolean\n isDraft?: boolean\n statusLabel?: string\n thumbnailURL?: string\n title: string\n typeLabel: string\n updatedAt?: string\n viewedAt?: string\n} & PinnedItem\n\ntype Labels = {\n addPin: string\n loadError: string\n loading: string\n next: string\n pagination: string\n pinned: string\n pinnedEmpty: string\n pinnedEmptyDescription: string\n pinnedSaveError: string\n previous: string\n recents: string\n recentsEmpty: string\n recentsEmptyDescription: string\n removePin: string\n retry: string\n title: string\n}\n\nexport function RecentsAndPinnedClient({\n excludedCollections,\n labels,\n pinsURL,\n}: {\n excludedCollections?: string[]\n labels: Labels\n pinsURL: string\n}) {\n const { permissions, user } = useAuth()\n const { t } = useTranslation()\n const { config } = useConfig()\n const { isEntityVisible } = useEntityVisibility()\n const { serverFunction } = useServerFunctions()\n const pinnableCollections = useMemo(\n () =>\n config.collections\n .filter(\n ({ slug, admin }) =>\n isEntityVisible({ collectionSlug: slug }) &&\n isNavEntityVisible({\n adminGroup: admin.group,\n entityPermissions: permissions?.collections?.[slug],\n }),\n )\n .map(({ slug }) => slug),\n [config.collections, isEntityVisible, permissions],\n )\n const canAddPin = Boolean(user) && pinnableCollections.length > 0\n const contentRef = useRef<HTMLDivElement>(null)\n const listID = useId()\n const [page, setPage] = useState(1)\n const [pageSize, setPageSize] = useState(0)\n const pinnedTabRef = useRef<HTMLButtonElement>(null)\n const recentsTabRef = useRef<HTMLButtonElement>(null)\n const previousPageRef = useRef<HTMLButtonElement>(null)\n const nextPageRef = useRef<HTMLButtonElement>(null)\n const paginationFocusRef = useRef(false)\n const [activeTab, setActiveTab] = useState<DocumentsTab>('pinned')\n const [pageResult, setPageResult] = useState<DocumentsPage>({ items: [], page: 1, totalDocs: 0 })\n const [isLoading, setIsLoading] = useState(true)\n const [shouldShowLoading, setShouldShowLoading] = useState(false)\n const [isSaving, setIsSaving] = useState(false)\n const [saveError, setSaveError] = useState('')\n const [loadError, setLoadError] = useState('')\n const [refresh, setRefresh] = useState(0)\n const shouldIncludePinPlaceholder = activeTab === 'pinned' && canAddPin\n const totalPages = Math.max(\n 1,\n Math.ceil((pageResult.totalDocs + Number(shouldIncludePinPlaceholder)) / (pageSize || 1)),\n )\n const currentPage = pageResult.page\n const items = pageResult.items\n const hasAddPinCard =\n shouldIncludePinPlaceholder && pageResult.page === totalPages && items.length < pageSize\n\n useEffect(() => {\n if (!pageSize) {\n return\n }\n let isCurrent = true\n setIsLoading(true)\n setShouldShowLoading(false)\n setLoadError('')\n const loadingTimeout = setTimeout(() => setShouldShowLoading(true), 180)\n void (\n serverFunction({\n name: 'get-dashboard-documents',\n args: {\n excludedCollections,\n limit: pageSize,\n page,\n shouldIncludePinPlaceholder,\n tab: activeTab,\n },\n }) as Promise<DocumentsPage>\n )\n .then((result: DocumentsPage) => {\n if (!isCurrent) {\n return\n }\n setPageResult(result)\n setPage(result.page)\n setIsLoading(false)\n if (paginationFocusRef.current) {\n paginationFocusRef.current = false\n const lastPage = Math.max(\n 1,\n Math.ceil((result.totalDocs + Number(shouldIncludePinPlaceholder)) / pageSize),\n )\n requestAnimationFrame(() => {\n if (lastPage === 1) {\n const activeTabRef = activeTab === 'pinned' ? pinnedTabRef : recentsTabRef\n\n activeTabRef.current?.focus()\n } else if (result.page === 1) {\n nextPageRef.current?.focus()\n } else if (result.page === lastPage) {\n previousPageRef.current?.focus()\n }\n })\n }\n })\n .catch(() => {\n if (isCurrent) {\n setIsLoading(false)\n paginationFocusRef.current = false\n setLoadError(labels.loadError)\n }\n })\n .finally(() => clearTimeout(loadingTimeout))\n return () => {\n isCurrent = false\n clearTimeout(loadingTimeout)\n }\n }, [\n activeTab,\n excludedCollections,\n shouldIncludePinPlaceholder,\n labels.loadError,\n page,\n pageSize,\n refresh,\n serverFunction,\n ])\n\n useEffect(() => {\n const element = contentRef.current\n\n if (!element) {\n return\n }\n\n let observedPageSize = 0\n const observer = new ResizeObserver(() => {\n const styles = getComputedStyle(element)\n const columns = styles.gridTemplateColumns.split(' ').length\n const rows = Number(styles.getPropertyValue('--recents-rows'))\n const nextPageSize = columns * rows\n\n element.style.setProperty('--recents-columns', String(columns))\n\n if (nextPageSize !== observedPageSize) {\n observedPageSize = nextPageSize\n setPageSize(nextPageSize)\n setPage(1)\n }\n })\n observer.observe(element)\n\n return () => observer.disconnect()\n }, [])\n\n const emptyMessage = activeTab === 'recents' ? labels.recentsEmpty : labels.pinnedEmpty\n const emptyDescription =\n activeTab === 'recents' ? labels.recentsEmptyDescription : labels.pinnedEmptyDescription\n\n const removePinnedDocument = async ({ item }: { item: RecentDocument }) => {\n if (isSaving || activeTab !== 'pinned') {\n return\n }\n\n const previous = pageResult\n\n setPageResult((current) => ({\n ...current,\n items: current.items.filter((entry) => documentKey(entry) !== documentKey(item)),\n }))\n requestAnimationFrame(() => pinnedTabRef.current?.focus())\n setIsSaving(true)\n setSaveError('')\n\n try {\n await updatePinnedPreferences({ document: item, shouldPin: false, url: pinsURL })\n setRefresh((value) => value + 1)\n } catch {\n setPageResult(previous)\n setSaveError(labels.pinnedSaveError)\n } finally {\n setIsSaving(false)\n }\n }\n\n const addSelectedPin = async ({ document }: { document: PinnedItem }) => {\n if (isSaving) {\n return\n }\n setIsSaving(true)\n setSaveError('')\n\n try {\n await updatePinnedPreferences({ document, shouldPin: true, url: pinsURL })\n setPage(1)\n setRefresh((value) => value + 1)\n } catch {\n setSaveError(labels.pinnedSaveError)\n } finally {\n setIsSaving(false)\n requestAnimationFrame(() => pinnedTabRef.current?.focus())\n }\n }\n\n const pinDocumentPicker = canAddPin ? (\n <PinDocumentPicker\n collectionSlugs={pinnableCollections}\n isDisabled={isLoading || isSaving}\n isEmpty={pageResult.totalDocs === 0}\n labels={labels}\n onError={() => setSaveError(labels.pinnedSaveError)}\n onSelect={(args) => void addSelectedPin(args)}\n pinsURL={pinsURL}\n />\n ) : null\n\n return (\n <WidgetCard className=\"recently-viewed-widget recents-widget\" title={labels.title}>\n <div className=\"recents-widget__toolbar\">\n <div aria-label={labels.title} className=\"recents-widget__tabs\" role=\"group\">\n {(['pinned', 'recents'] as const).map((tab) => (\n <button\n aria-pressed={activeTab === tab}\n className=\"recents-widget__tab\"\n key={tab}\n onClick={() => {\n if (isSaving) {\n return\n }\n if (activeTab === tab && page === 1) {\n if (loadError) {\n setRefresh((value) => value + 1)\n }\n return\n }\n setPageResult({ items: [], page: 1, totalDocs: 0 })\n setIsLoading(true)\n setActiveTab(tab)\n setPage(1)\n }}\n ref={tab === 'pinned' ? pinnedTabRef : recentsTabRef}\n type=\"button\"\n >\n {tab === 'recents' ? labels.recents : labels.pinned}\n </button>\n ))}\n </div>\n {totalPages > 1 ? (\n <div aria-label={labels.pagination} className=\"recents-widget__pagination\" role=\"group\">\n <button\n aria-controls={listID}\n aria-disabled={isLoading || isSaving}\n aria-label={labels.previous}\n className=\"recents-widget__previous\"\n disabled={currentPage === 1}\n onClick={() => {\n if (isLoading || isSaving) {\n return\n }\n paginationFocusRef.current = true\n setPage(currentPage - 1)\n }}\n ref={previousPageRef}\n type=\"button\"\n >\n <span aria-hidden=\"true\">\n <ChevronIcon direction=\"left\" />\n </span>\n </button>\n <span aria-atomic=\"true\" aria-live=\"polite\" className=\"recents-widget__page-status\">\n {t('dashboard:widgetPageCount', { currentPage, totalPages })}\n </span>\n <button\n aria-controls={listID}\n aria-disabled={isLoading || isSaving}\n aria-label={labels.next}\n className=\"recents-widget__next\"\n disabled={currentPage === totalPages}\n onClick={() => {\n if (isLoading || isSaving) {\n return\n }\n paginationFocusRef.current = true\n setPage(currentPage + 1)\n }}\n ref={nextPageRef}\n type=\"button\"\n >\n <span aria-hidden=\"true\">\n <ChevronIcon direction=\"right\" />\n </span>\n </button>\n </div>\n ) : null}\n </div>\n <div aria-busy={isLoading} className=\"recents-widget__viewport\" ref={contentRef}>\n {loadError ? (\n <div className=\"recents-widget__error\">\n <span>{loadError}</span>\n <Button\n buttonStyle=\"secondary\"\n margin={false}\n onClick={() => {\n const activeTabRef = activeTab === 'pinned' ? pinnedTabRef : recentsTabRef\n\n activeTabRef.current?.focus()\n setRefresh((value) => value + 1)\n }}\n size=\"medium\"\n type=\"button\"\n >\n {labels.retry}\n </Button>\n </div>\n ) : items.length || (hasAddPinCard && !isLoading) ? (\n <div className=\"recents-widget__content\" id={listID}>\n <CardGrid<null | RecentDocument>\n ariaLabel={activeTab === 'pinned' ? labels.pinned : labels.recents}\n className=\"recents-widget__items recents-widget__items--grid\"\n getItemClassName={(item) =>\n item\n ? 'recents-widget__item'\n : `recents-widget__item recents-widget__item--add-pin${pageResult.totalDocs === 0 ? ' recents-widget__item--empty' : ''}`\n }\n getKey={(item) => (item ? documentKey(item) : 'add-pin')}\n items={hasAddPinCard ? [...items, null] : items}\n renderItem={(item) =>\n item ? (\n <DocumentCard\n href={item.href}\n placeholder={<DocumentIcon />}\n thumbnail={item.thumbnailURL ? { alt: '', src: item.thumbnailURL } : undefined}\n title={item.title}\n >\n <div className=\"recents-widget__meta\">\n {item.typeLabel}\n {item.dateTime && item.dateLabel ? (\n <>\n {' · '}\n <time dateTime={item.dateTime}>{item.dateLabel}</time>\n </>\n ) : null}\n </div>\n {item.statusLabel ? (\n <span\n className={`recents-widget__status-pill${item.isDraft ? ' recents-widget__status-pill--draft' : item.isChanged ? ' recents-widget__status-pill--changed' : ''}`}\n >\n {item.statusLabel}\n </span>\n ) : null}\n {activeTab === 'pinned' ? (\n <button\n aria-label={`${labels.removePin}: ${item.title}`}\n aria-pressed={true}\n className=\"recents-widget__pin\"\n disabled={isSaving || isLoading}\n onClick={() => void removePinnedDocument({ item })}\n type=\"button\"\n >\n <span aria-hidden=\"true\" className=\"recents-widget__pin-icon\">\n <PinIcon isFilled />\n </span>\n </button>\n ) : null}\n </DocumentCard>\n ) : (\n pinDocumentPicker\n )\n }\n />\n </div>\n ) : isLoading ? null : (\n <div aria-live=\"polite\" className=\"recents-widget__empty\">\n <span\n aria-hidden=\"true\"\n className={`recents-widget__empty-icon recents-widget__empty-icon--${activeTab}`}\n >\n {activeTab === 'pinned' ? <PinIcon /> : <ClockIcon />}\n </span>\n <span className=\"recents-widget__empty-text\">\n <span className=\"recents-widget__empty-title\">{emptyMessage}</span>\n <span className=\"recents-widget__empty-description\">{emptyDescription}</span>\n </span>\n </div>\n )}\n {saveError && !loadError ? (\n <span aria-hidden=\"true\" className=\"recents-widget__save-error\">\n {saveError}\n </span>\n ) : null}\n <span aria-hidden=\"true\" className=\"recents-widget__loading\">\n {isLoading && shouldShowLoading ? <span>{labels.loading}</span> : null}\n </span>\n </div>\n <span aria-live=\"polite\" className=\"recents-widget__status sr-only\">\n {saveError || loadError || (isLoading && shouldShowLoading ? labels.loading : '')}\n </span>\n </WidgetCard>\n )\n}\n"],"mappings":"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","ignoreList":[]}