@payloadcms/ui 4.0.0-canary.2 → 4.0.0-canary.4

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 (481) hide show
  1. package/dist/css/colors.css +6 -0
  2. package/dist/css/design-tokens.css +5 -0
  3. package/dist/css/elevations.css +4 -0
  4. package/dist/css/utilities.css +3 -2
  5. package/dist/elements/AppHeader/index.d.ts +3 -2
  6. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  7. package/dist/elements/AppHeader/index.js +9 -2
  8. package/dist/elements/AppHeader/index.js.map +1 -1
  9. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  10. package/dist/elements/ArrayAction/index.js +1 -2
  11. package/dist/elements/ArrayAction/index.js.map +1 -1
  12. package/dist/elements/BulkUpload/ActionsBar/index.css +4 -8
  13. package/dist/elements/BulkUpload/ActionsBar/index.d.ts +1 -5
  14. package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
  15. package/dist/elements/BulkUpload/ActionsBar/index.js +15 -22
  16. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  17. package/dist/elements/BulkUpload/AddFilesView/index.css +14 -8
  18. package/dist/elements/BulkUpload/AddFilesView/index.d.ts +2 -2
  19. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  20. package/dist/elements/BulkUpload/AddFilesView/index.js +41 -36
  21. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  22. package/dist/elements/BulkUpload/AddingFilesView/index.css +158 -6
  23. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts +5 -1
  24. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
  25. package/dist/elements/BulkUpload/AddingFilesView/index.js +134 -65
  26. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  27. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js +4 -4
  28. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  29. package/dist/elements/BulkUpload/EditForm/index.d.ts +1 -1
  30. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  31. package/dist/elements/BulkUpload/EditForm/index.js +16 -17
  32. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  33. package/dist/elements/BulkUpload/EditForm/types.d.ts +2 -3
  34. package/dist/elements/BulkUpload/EditForm/types.d.ts.map +1 -1
  35. package/dist/elements/BulkUpload/EditForm/types.js.map +1 -1
  36. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  37. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +78 -64
  38. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  39. package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
  40. package/dist/elements/BulkUpload/EditMany/index.js +28 -10
  41. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  42. package/dist/elements/BulkUpload/FileSidebar/index.css +63 -143
  43. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  44. package/dist/elements/BulkUpload/FileSidebar/index.js +42 -175
  45. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  46. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  47. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  48. package/dist/elements/BulkUpload/index.css +48 -0
  49. package/dist/elements/BulkUpload/index.d.ts +6 -5
  50. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  51. package/dist/elements/BulkUpload/index.js +42 -41
  52. package/dist/elements/BulkUpload/index.js.map +1 -1
  53. package/dist/elements/Card/index.css +1 -1
  54. package/dist/elements/ColumnSelection/Popup.d.ts +12 -0
  55. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -0
  56. package/dist/elements/{ColumnSelector/index.js → ColumnSelection/Popup.js} +23 -12
  57. package/dist/elements/ColumnSelection/Popup.js.map +1 -0
  58. package/dist/elements/ColumnSelection/index.d.ts +10 -0
  59. package/dist/elements/ColumnSelection/index.d.ts.map +1 -0
  60. package/dist/elements/{ColumnsButton → ColumnSelection}/index.js +23 -17
  61. package/dist/elements/ColumnSelection/index.js.map +1 -0
  62. package/dist/elements/CopyLocaleData/index.js +1 -1
  63. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  64. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  65. package/dist/elements/CreateDocumentButton/index.js +0 -1
  66. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  67. package/dist/elements/DatePicker/index.css +8 -8
  68. package/dist/elements/Dialog/DialogHeader/index.d.ts +4 -0
  69. package/dist/elements/Dialog/DialogHeader/index.d.ts.map +1 -1
  70. package/dist/elements/Dialog/DialogHeader/index.js +45 -30
  71. package/dist/elements/Dialog/DialogHeader/index.js.map +1 -1
  72. package/dist/elements/Dialog/DialogModal/index.d.ts +5 -0
  73. package/dist/elements/Dialog/DialogModal/index.d.ts.map +1 -1
  74. package/dist/elements/Dialog/DialogModal/index.js +58 -31
  75. package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
  76. package/dist/elements/Dialog/DialogTitle/index.css +9 -0
  77. package/dist/elements/Dialog/DialogTitle/index.d.ts +5 -0
  78. package/dist/elements/Dialog/DialogTitle/index.d.ts.map +1 -0
  79. package/dist/elements/Dialog/DialogTitle/index.js +10 -0
  80. package/dist/elements/Dialog/DialogTitle/index.js.map +1 -0
  81. package/dist/elements/Dialog/index.css +7 -1
  82. package/dist/elements/DocumentControls/index.css +8 -2
  83. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  84. package/dist/elements/DocumentControls/index.js +12 -3
  85. package/dist/elements/DocumentControls/index.js.map +1 -1
  86. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts.map +1 -1
  87. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +5 -3
  88. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  89. package/dist/elements/DocumentFields/index.css +5 -2
  90. package/dist/elements/DocumentFields/index.d.ts +5 -0
  91. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  92. package/dist/elements/DocumentFields/index.js +9 -1
  93. package/dist/elements/DocumentFields/index.js.map +1 -1
  94. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts +12 -0
  95. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts.map +1 -0
  96. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js +28 -0
  97. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js.map +1 -0
  98. package/dist/elements/DocumentHeader/index.js +2 -3
  99. package/dist/elements/DocumentHeader/index.js.map +1 -1
  100. package/dist/elements/DraggableSortable/DragOverlayPreview/index.css +1 -1
  101. package/dist/elements/DrawerActionHeader/index.css +1 -1
  102. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.css +7 -1
  103. package/dist/elements/DrawerHeader/index.d.ts +10 -0
  104. package/dist/elements/DrawerHeader/index.d.ts.map +1 -0
  105. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.js +16 -11
  106. package/dist/elements/DrawerHeader/index.js.map +1 -0
  107. package/dist/elements/Dropzone/index.css +5 -13
  108. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +1 -1
  109. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  110. package/dist/elements/EditUpload/index.css +97 -158
  111. package/dist/elements/EditUpload/index.d.ts +2 -1
  112. package/dist/elements/EditUpload/index.d.ts.map +1 -1
  113. package/dist/elements/EditUpload/index.js +205 -231
  114. package/dist/elements/EditUpload/index.js.map +1 -1
  115. package/dist/elements/EditUpload/{library.scss → library.css} +108 -46
  116. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
  117. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  118. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  119. package/dist/elements/FileDetails/FileMeta/index.css +27 -0
  120. package/dist/elements/FileDetails/FileMeta/index.d.ts +1 -1
  121. package/dist/elements/FileDetails/FileMeta/index.d.ts.map +1 -1
  122. package/dist/elements/FileDetails/FileMeta/index.js +1 -1
  123. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  124. package/dist/elements/FileDetails/StaticFileDetails/index.css +140 -0
  125. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +2 -2
  126. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  127. package/dist/elements/FileDetails/StaticFileDetails/index.js +1 -1
  128. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  129. package/dist/elements/FileDetails/index.d.ts +1 -1
  130. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  131. package/dist/elements/FileDetails/index.js.map +1 -1
  132. package/dist/elements/FileManager/FilePreview/AudioPreview/index.css +8 -0
  133. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts +10 -0
  134. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts.map +1 -0
  135. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js +24 -0
  136. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js.map +1 -0
  137. package/dist/elements/FileManager/FilePreview/PdfPreview/index.css +9 -0
  138. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts +12 -0
  139. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts.map +1 -0
  140. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js +27 -0
  141. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js.map +1 -0
  142. package/dist/elements/FileManager/FilePreview/VideoPreview/index.css +8 -0
  143. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts +10 -0
  144. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts.map +1 -0
  145. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js +24 -0
  146. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js.map +1 -0
  147. package/dist/elements/FileManager/FilePreview/index.css +83 -0
  148. package/dist/elements/FileManager/FilePreview/index.d.ts +13 -0
  149. package/dist/elements/FileManager/FilePreview/index.d.ts.map +1 -0
  150. package/dist/elements/FileManager/FilePreview/index.js +140 -0
  151. package/dist/elements/FileManager/FilePreview/index.js.map +1 -0
  152. package/dist/elements/FileManager/FileToolbar/index.css +91 -0
  153. package/dist/elements/FileManager/FileToolbar/index.d.ts +14 -0
  154. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -0
  155. package/dist/elements/FileManager/FileToolbar/index.js +106 -0
  156. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -0
  157. package/dist/elements/FileManager/index.css +154 -0
  158. package/dist/elements/FileManager/index.d.ts +19 -0
  159. package/dist/elements/FileManager/index.d.ts.map +1 -0
  160. package/dist/elements/FileManager/index.js +424 -0
  161. package/dist/elements/FileManager/index.js.map +1 -0
  162. package/dist/elements/GroupBy/Popup.d.ts +21 -0
  163. package/dist/elements/GroupBy/Popup.d.ts.map +1 -0
  164. package/dist/elements/GroupBy/Popup.js +268 -0
  165. package/dist/elements/GroupBy/Popup.js.map +1 -0
  166. package/dist/elements/GroupBy/index.d.ts +12 -0
  167. package/dist/elements/GroupBy/index.d.ts.map +1 -0
  168. package/dist/elements/GroupBy/index.js +91 -0
  169. package/dist/elements/GroupBy/index.js.map +1 -0
  170. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.css +2 -2
  171. package/dist/elements/Hierarchy/Drawer/index.css +1 -1
  172. package/dist/elements/ListColumnSelectionButton/index.d.ts +11 -0
  173. package/dist/elements/ListColumnSelectionButton/index.d.ts.map +1 -0
  174. package/dist/elements/ListColumnSelectionButton/index.js +37 -0
  175. package/dist/elements/ListColumnSelectionButton/index.js.map +1 -0
  176. package/dist/elements/ListControls/index.d.ts.map +1 -1
  177. package/dist/elements/ListControls/index.js +7 -8
  178. package/dist/elements/ListControls/index.js.map +1 -1
  179. package/dist/elements/ListDrawer/DrawerContent.js +1 -1
  180. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  181. package/dist/elements/ListDrawer/Provider.d.ts +1 -1
  182. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  183. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  184. package/dist/elements/ListGroupByButton/index.d.ts +12 -0
  185. package/dist/elements/ListGroupByButton/index.d.ts.map +1 -0
  186. package/dist/elements/ListGroupByButton/index.js +55 -0
  187. package/dist/elements/ListGroupByButton/index.js.map +1 -0
  188. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.d.ts.map +1 -1
  189. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +2 -0
  190. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  191. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +4 -4
  192. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  193. package/dist/elements/ListWhereBuilder/index.d.ts +16 -0
  194. package/dist/elements/ListWhereBuilder/index.d.ts.map +1 -0
  195. package/dist/elements/ListWhereBuilder/index.js +62 -0
  196. package/dist/elements/ListWhereBuilder/index.js.map +1 -0
  197. package/dist/elements/LivePreview/Toolbar/Controls/index.js +2 -2
  198. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  199. package/dist/elements/LivePreview/Toolbar/SizeInput/index.css +5 -44
  200. package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts.map +1 -1
  201. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js +25 -43
  202. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  203. package/dist/elements/MiniCarousel/index.css +94 -0
  204. package/dist/elements/MiniCarousel/index.d.ts +15 -0
  205. package/dist/elements/MiniCarousel/index.d.ts.map +1 -0
  206. package/dist/elements/MiniCarousel/index.js +84 -0
  207. package/dist/elements/MiniCarousel/index.js.map +1 -0
  208. package/dist/elements/Nav/SettingsMenuButton/index.css +5 -0
  209. package/dist/elements/Nav/SettingsMenuButton/index.d.ts +1 -1
  210. package/dist/elements/Nav/SettingsMenuButton/index.d.ts.map +1 -1
  211. package/dist/elements/Nav/SettingsMenuButton/index.js +1 -1
  212. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  213. package/dist/elements/Nav/index.css +2 -2
  214. package/dist/elements/NavGroup/index.css +1 -1
  215. package/dist/elements/Popup/PopupButtonList/index.css +5 -0
  216. package/dist/elements/Popup/PopupGroupLabel/index.css +8 -5
  217. package/dist/elements/Popup/index.d.ts +1 -1
  218. package/dist/elements/Popup/index.d.ts.map +1 -1
  219. package/dist/elements/Popup/index.js +43 -12
  220. package/dist/elements/Popup/index.js.map +1 -1
  221. package/dist/elements/PreviewSizes/index.css +149 -0
  222. package/dist/elements/PreviewSizes/index.d.ts +2 -2
  223. package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
  224. package/dist/elements/PreviewSizes/index.js +1 -1
  225. package/dist/elements/PreviewSizes/index.js.map +1 -1
  226. package/dist/elements/PublishMany/DrawerContent.d.ts +2 -1
  227. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  228. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  229. package/dist/elements/PublishMany/index.d.ts +2 -6
  230. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  231. package/dist/elements/PublishMany/index.js +0 -38
  232. package/dist/elements/PublishMany/index.js.map +1 -1
  233. package/dist/elements/QueryPresets/cells/ColumnsCell/{index.scss → index.css} +1 -3
  234. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts +1 -1
  235. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts.map +1 -1
  236. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js +1 -1
  237. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js.map +1 -1
  238. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts +1 -1
  239. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts.map +1 -1
  240. package/dist/elements/QueryPresets/fields/ColumnsField/index.js +77 -48
  241. package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
  242. package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts +1 -1
  243. package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts.map +1 -1
  244. package/dist/elements/QueryPresets/fields/GroupByField/index.js +12 -21
  245. package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
  246. package/dist/elements/QueryPresets/fields/Heading/index.css +52 -0
  247. package/dist/elements/QueryPresets/fields/Heading/index.d.ts +7 -0
  248. package/dist/elements/QueryPresets/fields/Heading/index.d.ts.map +1 -0
  249. package/dist/elements/QueryPresets/fields/Heading/index.js +31 -0
  250. package/dist/elements/QueryPresets/fields/Heading/index.js.map +1 -0
  251. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts +1 -1
  252. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +1 -1
  253. package/dist/elements/QueryPresets/fields/WhereField/index.js +24 -23
  254. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  255. package/dist/elements/QueryPresets/fields/fields.css +23 -0
  256. package/dist/elements/ReactSelect/DropdownIndicator/index.css +1 -1
  257. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts +5 -0
  258. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts.map +1 -0
  259. package/dist/elements/ReactSelect/getCaptureMenuScroll.js +10 -0
  260. package/dist/elements/ReactSelect/getCaptureMenuScroll.js.map +1 -0
  261. package/dist/elements/ReactSelect/getMenuListStyles.d.ts +6 -0
  262. package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -0
  263. package/dist/elements/ReactSelect/getMenuListStyles.js +7 -0
  264. package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -0
  265. package/dist/elements/ReactSelect/index.css +0 -1
  266. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  267. package/dist/elements/ReactSelect/index.js +168 -148
  268. package/dist/elements/ReactSelect/index.js.map +1 -1
  269. package/dist/elements/ReactSelect/types.d.ts +1 -0
  270. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  271. package/dist/elements/ReactSelect/types.js.map +1 -1
  272. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  273. package/dist/elements/RelationshipTable/AddNewButton.js +1 -2
  274. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  275. package/dist/elements/RelationshipTable/index.js +2 -2
  276. package/dist/elements/RelationshipTable/index.js.map +1 -1
  277. package/dist/elements/Search/SearchInput/index.js +1 -1
  278. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  279. package/dist/elements/SortColumn/index.css +1 -1
  280. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  281. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +21 -2
  282. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  283. package/dist/elements/Table/index.css +24 -2
  284. package/dist/elements/Thumbnail/index.css +41 -0
  285. package/dist/elements/Thumbnail/index.d.ts +3 -3
  286. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  287. package/dist/elements/Thumbnail/index.js +1 -1
  288. package/dist/elements/Thumbnail/index.js.map +1 -1
  289. package/dist/elements/Toasts/fieldErrors.d.ts +1 -0
  290. package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
  291. package/dist/elements/Toasts/fieldErrors.js +25 -9
  292. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  293. package/dist/elements/Toasts/index.css +5 -0
  294. package/dist/elements/UnpublishMany/DrawerContent.d.ts +2 -1
  295. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  296. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  297. package/dist/elements/UnpublishMany/index.d.ts +2 -4
  298. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  299. package/dist/elements/UnpublishMany/index.js +0 -38
  300. package/dist/elements/UnpublishMany/index.js.map +1 -1
  301. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +11 -0
  302. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -0
  303. package/dist/elements/Upload/UploadFromURLModal/index.js +88 -0
  304. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -0
  305. package/dist/elements/Upload/index.css +134 -45
  306. package/dist/elements/Upload/index.d.ts +3 -8
  307. package/dist/elements/Upload/index.d.ts.map +1 -1
  308. package/dist/elements/Upload/index.js +71 -92
  309. package/dist/elements/Upload/index.js.map +1 -1
  310. package/dist/elements/UserMenu/LanguageMenu/index.js +1 -1
  311. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
  312. package/dist/elements/UserMenu/SettingsMenu/index.d.ts +6 -2
  313. package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
  314. package/dist/elements/UserMenu/SettingsMenu/index.js +15 -10
  315. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
  316. package/dist/elements/UserMenu/ThemeMenu/index.js +1 -1
  317. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
  318. package/dist/elements/UserMenu/index.d.ts +2 -1
  319. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  320. package/dist/elements/UserMenu/index.js +8 -5
  321. package/dist/elements/UserMenu/index.js.map +1 -1
  322. package/dist/elements/WhereBuilder/Condition/index.d.ts +1 -0
  323. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  324. package/dist/elements/WhereBuilder/Condition/index.js +17 -2
  325. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  326. package/dist/elements/WhereBuilder/index.d.ts +4 -3
  327. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  328. package/dist/elements/WhereBuilder/index.js +71 -62
  329. package/dist/elements/WhereBuilder/index.js.map +1 -1
  330. package/dist/elements/WhereBuilder/types.d.ts +6 -5
  331. package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
  332. package/dist/elements/WhereBuilder/types.js.map +1 -1
  333. package/dist/exports/client/index.d.ts +6 -2
  334. package/dist/exports/client/index.d.ts.map +1 -1
  335. package/dist/exports/client/index.js +26 -26
  336. package/dist/exports/client/index.js.map +4 -4
  337. package/dist/exports/shared/index.js +2 -2
  338. package/dist/exports/shared/index.js.map +2 -2
  339. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.css +1 -1
  340. package/dist/fields/Blocks/BlockSelector/index.css +2 -5
  341. package/dist/fields/Checkbox/index.css +2 -2
  342. package/dist/fields/Group/index.css +3 -3
  343. package/dist/fields/Number/Input.d.ts.map +1 -1
  344. package/dist/fields/Number/Input.js +47 -35
  345. package/dist/fields/Number/Input.js.map +1 -1
  346. package/dist/fields/Number/index.css +19 -0
  347. package/dist/fields/Number/types.d.ts +6 -0
  348. package/dist/fields/Number/types.d.ts.map +1 -1
  349. package/dist/fields/Number/types.js.map +1 -1
  350. package/dist/fields/RadioGroup/index.css +6 -0
  351. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
  352. package/dist/fields/Text/Input.d.ts.map +1 -1
  353. package/dist/fields/Text/Input.js +31 -28
  354. package/dist/fields/Text/Input.js.map +1 -1
  355. package/dist/fields/Text/types.d.ts +5 -0
  356. package/dist/fields/Text/types.d.ts.map +1 -1
  357. package/dist/fields/Text/types.js.map +1 -1
  358. package/dist/fields/Upload/Input.d.ts.map +1 -1
  359. package/dist/fields/Upload/Input.js +12 -11
  360. package/dist/fields/Upload/Input.js.map +1 -1
  361. package/dist/fields/Upload/index.js +1 -1
  362. package/dist/fields/Upload/index.js.map +1 -1
  363. package/dist/graphics/Icon/index.js +1 -1
  364. package/dist/graphics/Icon/index.js.map +1 -1
  365. package/dist/hooks/useElementHeightVariable.d.ts +15 -0
  366. package/dist/hooks/useElementHeightVariable.d.ts.map +1 -0
  367. package/dist/hooks/useElementHeightVariable.js +53 -0
  368. package/dist/hooks/useElementHeightVariable.js.map +1 -0
  369. package/dist/icons/Check/index.css +1 -2
  370. package/dist/icons/Check/index.js +1 -1
  371. package/dist/icons/Check/index.js.map +1 -1
  372. package/dist/icons/Crop/index.css +5 -0
  373. package/dist/icons/Crop/index.d.ts +7 -0
  374. package/dist/icons/Crop/index.d.ts.map +1 -0
  375. package/dist/icons/Crop/index.js +24 -0
  376. package/dist/icons/Crop/index.js.map +1 -0
  377. package/dist/icons/Download/index.css +5 -0
  378. package/dist/icons/{ExternalLink → Download}/index.d.ts +1 -1
  379. package/dist/icons/Download/index.d.ts.map +1 -0
  380. package/dist/icons/Download/index.js +27 -0
  381. package/dist/icons/Download/index.js.map +1 -0
  382. package/dist/icons/{ExternalLink → NewTab}/index.css +1 -1
  383. package/dist/icons/NewTab/index.d.ts +7 -0
  384. package/dist/icons/NewTab/index.d.ts.map +1 -0
  385. package/dist/icons/NewTab/index.js +25 -0
  386. package/dist/icons/NewTab/index.js.map +1 -0
  387. package/dist/icons/Replace/index.css +5 -0
  388. package/dist/icons/Replace/index.d.ts +6 -0
  389. package/dist/icons/Replace/index.d.ts.map +1 -0
  390. package/dist/icons/Replace/index.js +20 -0
  391. package/dist/icons/Replace/index.js.map +1 -0
  392. package/dist/icons/Reset/index.css +5 -0
  393. package/dist/icons/Reset/index.d.ts +7 -0
  394. package/dist/icons/Reset/index.d.ts.map +1 -0
  395. package/dist/icons/Reset/index.js +25 -0
  396. package/dist/icons/Reset/index.js.map +1 -0
  397. package/dist/icons/Swap/index.js +1 -1
  398. package/dist/icons/Swap/index.js.map +1 -1
  399. package/dist/icons/Warning/index.css +1 -7
  400. package/dist/icons/Warning/index.d.ts +1 -1
  401. package/dist/icons/Warning/index.d.ts.map +1 -1
  402. package/dist/icons/Warning/index.js +11 -16
  403. package/dist/icons/Warning/index.js.map +1 -1
  404. package/dist/providers/ToastContainer/index.css +208 -0
  405. package/dist/providers/ToastContainer/index.d.ts +1 -0
  406. package/dist/providers/ToastContainer/index.d.ts.map +1 -1
  407. package/dist/providers/ToastContainer/index.js +19 -6
  408. package/dist/providers/ToastContainer/index.js.map +1 -1
  409. package/dist/scss/app.scss +10 -4
  410. package/dist/styles.css +1 -1
  411. package/dist/templates/Default/index.d.ts.map +1 -1
  412. package/dist/templates/Default/index.js +52 -10
  413. package/dist/templates/Default/index.js.map +1 -1
  414. package/dist/utilities/reduceFieldsToOptions.js +1 -1
  415. package/dist/utilities/reduceFieldsToOptions.js.map +1 -1
  416. package/dist/views/API/index.client.js +2 -2
  417. package/dist/views/API/index.client.js.map +1 -1
  418. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +2 -2
  419. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  420. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +2 -2
  421. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  422. package/dist/views/Document/index.d.ts.map +1 -1
  423. package/dist/views/Document/index.js +1 -0
  424. package/dist/views/Document/index.js.map +1 -1
  425. package/dist/views/Document/renderDocumentSlots.d.ts +1 -0
  426. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  427. package/dist/views/Document/renderDocumentSlots.js +47 -1
  428. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  429. package/dist/views/Edit/index.css +143 -6
  430. package/dist/views/Edit/index.d.ts +1 -1
  431. package/dist/views/Edit/index.d.ts.map +1 -1
  432. package/dist/views/Edit/index.js +34 -31
  433. package/dist/views/Edit/index.js.map +1 -1
  434. package/dist/views/HierarchyList/DocumentListSelection/index.js +4 -4
  435. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  436. package/dist/views/HierarchyList/HierarchyTable/SlotTable.css +2 -2
  437. package/dist/views/List/ListHeader/index.css +5 -0
  438. package/dist/views/List/ListSelection/index.js +4 -4
  439. package/dist/views/List/ListSelection/index.js.map +1 -1
  440. package/dist/views/List/index.client.d.ts.map +1 -1
  441. package/dist/views/List/index.client.js +6 -6
  442. package/dist/views/List/index.client.js.map +1 -1
  443. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  444. package/dist/views/List/renderListViewSlots.js +9 -6
  445. package/dist/views/List/renderListViewSlots.js.map +1 -1
  446. package/dist/views/Logout/LogoutClient.js +1 -1
  447. package/dist/views/Logout/LogoutClient.js.map +1 -1
  448. package/dist/views/Versions/index.css +0 -4
  449. package/package.json +4 -4
  450. package/dist/elements/BulkUpload/Header/index.d.ts +0 -9
  451. package/dist/elements/BulkUpload/Header/index.d.ts.map +0 -1
  452. package/dist/elements/BulkUpload/Header/index.js.map +0 -1
  453. package/dist/elements/ColumnSelector/index.d.ts +0 -9
  454. package/dist/elements/ColumnSelector/index.d.ts.map +0 -1
  455. package/dist/elements/ColumnSelector/index.js.map +0 -1
  456. package/dist/elements/ColumnsButton/index.d.ts +0 -7
  457. package/dist/elements/ColumnsButton/index.d.ts.map +0 -1
  458. package/dist/elements/ColumnsButton/index.js.map +0 -1
  459. package/dist/elements/FileDetails/FileMeta/index.scss +0 -31
  460. package/dist/elements/FileDetails/StaticFileDetails/index.scss +0 -134
  461. package/dist/elements/GroupByBuilder/index.d.ts +0 -12
  462. package/dist/elements/GroupByBuilder/index.d.ts.map +0 -1
  463. package/dist/elements/GroupByBuilder/index.js +0 -164
  464. package/dist/elements/GroupByBuilder/index.js.map +0 -1
  465. package/dist/elements/GroupByBuilder/index.scss +0 -39
  466. package/dist/elements/GroupByControl/index.d.ts +0 -9
  467. package/dist/elements/GroupByControl/index.d.ts.map +0 -1
  468. package/dist/elements/GroupByControl/index.js +0 -254
  469. package/dist/elements/GroupByControl/index.js.map +0 -1
  470. package/dist/elements/Nav/SettingsMenuButton/index.scss +0 -11
  471. package/dist/elements/PreviewSizes/index.scss +0 -147
  472. package/dist/elements/QueryPresets/fields/ColumnsField/index.scss +0 -17
  473. package/dist/elements/QueryPresets/fields/GroupByField/index.scss +0 -17
  474. package/dist/elements/QueryPresets/fields/WhereField/index.scss +0 -23
  475. package/dist/elements/Thumbnail/index.scss +0 -53
  476. package/dist/icons/ExternalLink/index.d.ts.map +0 -1
  477. package/dist/icons/ExternalLink/index.js +0 -26
  478. package/dist/icons/ExternalLink/index.js.map +0 -1
  479. package/dist/scss/toasts.scss +0 -146
  480. /package/dist/elements/{ColumnSelector/index.css → ColumnSelection/Popup.css} +0 -0
  481. /package/dist/elements/{GroupByControl/index.css → GroupBy/Popup.css} +0 -0
@@ -1,164 +0,0 @@
1
- 'use client';
2
-
3
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import { isFieldDisabled } from 'payload/shared';
5
- import './index.scss';
6
- import React, { useMemo } from 'react';
7
- import { SelectInput } from '../../fields/Select/Input.js';
8
- import { useAuth } from '../../providers/Auth/index.js';
9
- import { useListQuery } from '../../providers/ListQuery/index.js';
10
- import { useTranslation } from '../../providers/Translation/index.js';
11
- import { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js';
12
- import { ReactSelect } from '../ReactSelect/index.js';
13
- const baseClass = 'group-by-builder';
14
- /**
15
- * Note: Some fields are already omitted from the list of fields:
16
- * - fields with nested field, e.g. `tabs`, `groups`, etc.
17
- * - fields that don't affect data, i.e. `row`, `collapsible`, `ui`, etc.
18
- * So we don't technically need to omit them here, but do anyway.
19
- * But some remaining fields still need an additional check, e.g. `richText`, etc.
20
- */
21
- const supportedFieldTypes = ['text', 'textarea', 'number', 'select', 'relationship', 'date', 'checkbox', 'radio', 'email', 'number', 'upload'];
22
- export const GroupByBuilder = ({
23
- collectionSlug,
24
- fields,
25
- onChange,
26
- value: valueProp
27
- }) => {
28
- const {
29
- i18n,
30
- t
31
- } = useTranslation();
32
- const {
33
- permissions
34
- } = useAuth();
35
- const listQuery = useListQuery();
36
- const isFormMode = typeof onChange === 'function';
37
- const groupByRaw = isFormMode ? valueProp : listQuery.query?.groupBy;
38
- const groupByFieldName = groupByRaw?.replace(/^-/, '');
39
- const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields;
40
- const reducedFields = useMemo(() => reduceFieldsToOptions({
41
- fieldPermissions,
42
- fields,
43
- i18n
44
- }), [fields, fieldPermissions, i18n]);
45
- const groupByField = reducedFields.find(field => field.fieldPath === groupByFieldName);
46
- const handleFieldChange = useMemo(() => {
47
- if (isFormMode) {
48
- return v => {
49
- const value = v === null ? undefined : v.value;
50
- const newGroupBy = value ? groupByRaw?.startsWith('-') ? `-${value}` : value : '';
51
- onChange?.(newGroupBy);
52
- };
53
- }
54
- return v_0 => {
55
- void (async () => {
56
- if (typeof listQuery.refineListData !== 'function') {
57
- return;
58
- }
59
- const value_0 = v_0 === null ? undefined : v_0.value;
60
- if (v_0 === null) {
61
- await listQuery.refineListData({
62
- groupBy: '',
63
- page: 1
64
- });
65
- } else {
66
- await listQuery.refineListData({
67
- groupBy: value_0 ? listQuery.query?.groupBy?.startsWith('-') ? `-${value_0}` : value_0 : undefined,
68
- page: 1
69
- });
70
- }
71
- })();
72
- };
73
- }, [isFormMode, groupByRaw, listQuery, onChange]);
74
- const handleClear = useMemo(() => {
75
- if (isFormMode) {
76
- return () => onChange?.('');
77
- }
78
- return () => {
79
- void (async () => {
80
- if (typeof listQuery.refineListData === 'function') {
81
- await listQuery.refineListData({
82
- groupBy: ''
83
- });
84
- }
85
- })();
86
- };
87
- }, [isFormMode, listQuery, onChange]);
88
- const handleDirectionChange = useMemo(() => {
89
- if (isFormMode) {
90
- return ({
91
- value: value_1
92
- }) => {
93
- if (!groupByFieldName) {
94
- return;
95
- }
96
- onChange?.(value_1 === 'asc' ? groupByFieldName : `-${groupByFieldName}`);
97
- };
98
- }
99
- return ({
100
- value: value_2
101
- }) => {
102
- void (async () => {
103
- if (!groupByFieldName || typeof listQuery.refineListData !== 'function') {
104
- return;
105
- }
106
- await listQuery.refineListData({
107
- groupBy: value_2 === 'asc' ? groupByFieldName : `-${groupByFieldName}`,
108
- page: 1
109
- });
110
- })();
111
- };
112
- }, [groupByFieldName, isFormMode, listQuery, onChange]);
113
- const directionValue = !groupByRaw || typeof groupByRaw !== 'string' ? 'asc' : groupByRaw.startsWith('-') ? 'desc' : 'asc';
114
- return /*#__PURE__*/_jsxs("div", {
115
- className: baseClass,
116
- children: [/*#__PURE__*/_jsxs("div", {
117
- className: `${baseClass}__header`,
118
- children: [/*#__PURE__*/_jsx("p", {
119
- children: t('general:groupByLabel', {
120
- label: ''
121
- })
122
- }), groupByRaw && /*#__PURE__*/_jsx("button", {
123
- className: `${baseClass}__clear-button`,
124
- id: "group-by--reset",
125
- onClick: () => void handleClear(),
126
- type: "button",
127
- children: t('general:clear')
128
- })]
129
- }), /*#__PURE__*/_jsxs("div", {
130
- className: `${baseClass}__inputs`,
131
- children: [/*#__PURE__*/_jsx(ReactSelect, {
132
- filterOption: (option, inputValue) => (option?.data?.plainTextLabel || option.label).toLowerCase().includes(inputValue.toLowerCase()),
133
- id: "group-by--field-select",
134
- isClearable: true,
135
- isMulti: false,
136
- onChange: handleFieldChange,
137
- options: reducedFields.filter(field_0 => !isFieldDisabled(field_0.field, 'groupBy') && field_0.fieldPath !== 'id' && supportedFieldTypes.includes(field_0.field.type)).map(f => ({
138
- ...f,
139
- value: f.fieldPath
140
- })),
141
- value: {
142
- label: groupByField?.label || t('general:selectValue'),
143
- value: groupByFieldName || ''
144
- }
145
- }), /*#__PURE__*/_jsx(SelectInput, {
146
- id: "group-by--sort",
147
- isClearable: false,
148
- name: "direction",
149
- onChange: handleDirectionChange,
150
- options: [{
151
- label: t('general:ascending'),
152
- value: 'asc'
153
- }, {
154
- label: t('general:descending'),
155
- value: 'desc'
156
- }],
157
- path: "direction",
158
- readOnly: !groupByFieldName,
159
- value: directionValue
160
- })]
161
- })]
162
- });
163
- };
164
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["isFieldDisabled","React","useMemo","SelectInput","useAuth","useListQuery","useTranslation","reduceFieldsToOptions","ReactSelect","baseClass","supportedFieldTypes","GroupByBuilder","collectionSlug","fields","onChange","value","valueProp","i18n","t","permissions","listQuery","isFormMode","groupByRaw","query","groupBy","groupByFieldName","replace","fieldPermissions","collections","reducedFields","groupByField","find","field","fieldPath","handleFieldChange","v","undefined","newGroupBy","startsWith","refineListData","page","handleClear","handleDirectionChange","directionValue","_jsxs","className","_jsx","label","id","onClick","type","filterOption","option","inputValue","data","plainTextLabel","toLowerCase","includes","isClearable","isMulti","options","filter","map","f","name","path","readOnly"],"sources":["../../../src/elements/GroupByBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField, Field, SanitizedCollectionConfig } from 'payload'\n\nimport { isFieldDisabled } from 'payload/shared'\n\nimport './index.scss'\n\nimport React, { useMemo } from 'react'\n\nimport { SelectInput } from '../../fields/Select/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\n\nexport type Props = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly fields: ClientField[]\n /** When set, GroupByBuilder is controlled by the form (value + onChange) instead of list query. */\n readonly onChange?: (groupBy: string) => void\n readonly value?: string\n}\n\nconst baseClass = 'group-by-builder'\n\n/**\n * Note: Some fields are already omitted from the list of fields:\n * - fields with nested field, e.g. `tabs`, `groups`, etc.\n * - fields that don't affect data, i.e. `row`, `collapsible`, `ui`, etc.\n * So we don't technically need to omit them here, but do anyway.\n * But some remaining fields still need an additional check, e.g. `richText`, etc.\n */\nconst supportedFieldTypes: Field['type'][] = [\n 'text',\n 'textarea',\n 'number',\n 'select',\n 'relationship',\n 'date',\n 'checkbox',\n 'radio',\n 'email',\n 'number',\n 'upload',\n]\n\nexport const GroupByBuilder: React.FC<Props> = ({\n collectionSlug,\n fields,\n onChange,\n value: valueProp,\n}) => {\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const listQuery = useListQuery()\n\n const isFormMode = typeof onChange === 'function'\n const groupByRaw = isFormMode ? valueProp : listQuery.query?.groupBy\n const groupByFieldName = groupByRaw?.replace(/^-/, '')\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields,\n i18n,\n }),\n [fields, fieldPermissions, i18n],\n )\n\n const groupByField = reducedFields.find((field) => field.fieldPath === groupByFieldName)\n\n const handleFieldChange = useMemo(() => {\n if (isFormMode) {\n return (v: { value: string } | null) => {\n const value = v === null ? undefined : v.value\n const newGroupBy = value ? (groupByRaw?.startsWith('-') ? `-${value}` : value) : ''\n onChange?.(newGroupBy)\n }\n }\n return (v: { value: string } | null) => {\n void (async () => {\n if (typeof listQuery.refineListData !== 'function') {\n return\n }\n const value = v === null ? undefined : v.value\n if (v === null) {\n await listQuery.refineListData({ groupBy: '', page: 1 })\n } else {\n await listQuery.refineListData({\n groupBy: value\n ? listQuery.query?.groupBy?.startsWith('-')\n ? `-${value}`\n : value\n : undefined,\n page: 1,\n })\n }\n })()\n }\n }, [isFormMode, groupByRaw, listQuery, onChange])\n\n const handleClear = useMemo(() => {\n if (isFormMode) {\n return () => onChange?.('')\n }\n return () => {\n void (async () => {\n if (typeof listQuery.refineListData === 'function') {\n await listQuery.refineListData({ groupBy: '' })\n }\n })()\n }\n }, [isFormMode, listQuery, onChange])\n\n const handleDirectionChange = useMemo(() => {\n if (isFormMode) {\n return ({ value }: { value: string }) => {\n if (!groupByFieldName) {\n return\n }\n onChange?.(value === 'asc' ? groupByFieldName : `-${groupByFieldName}`)\n }\n }\n return ({ value }: { value: string }) => {\n void (async () => {\n if (!groupByFieldName || typeof listQuery.refineListData !== 'function') {\n return\n }\n await listQuery.refineListData({\n groupBy: value === 'asc' ? groupByFieldName : `-${groupByFieldName}`,\n page: 1,\n })\n })()\n }\n }, [groupByFieldName, isFormMode, listQuery, onChange])\n\n const directionValue =\n !groupByRaw || typeof groupByRaw !== 'string'\n ? 'asc'\n : groupByRaw.startsWith('-')\n ? 'desc'\n : 'asc'\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <p>\n {t('general:groupByLabel', {\n label: '',\n })}\n </p>\n {groupByRaw && (\n <button\n className={`${baseClass}__clear-button`}\n id=\"group-by--reset\"\n onClick={() => void handleClear()}\n type=\"button\"\n >\n {t('general:clear')}\n </button>\n )}\n </div>\n <div className={`${baseClass}__inputs`}>\n <ReactSelect\n filterOption={(option, inputValue) =>\n ((option?.data?.plainTextLabel as string) || option.label)\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n }\n id=\"group-by--field-select\"\n isClearable\n isMulti={false}\n onChange={handleFieldChange}\n options={reducedFields\n .filter(\n (field) =>\n !isFieldDisabled(field.field, 'groupBy') &&\n field.fieldPath !== 'id' &&\n supportedFieldTypes.includes(field.field.type),\n )\n .map((f) => ({ ...f, value: f.fieldPath }))}\n value={{\n label: groupByField?.label || t('general:selectValue'),\n value: groupByFieldName || '',\n }}\n />\n <SelectInput\n id=\"group-by--sort\"\n isClearable={false}\n name=\"direction\"\n onChange={handleDirectionChange}\n options={[\n { label: t('general:ascending'), value: 'asc' },\n { label: t('general:descending'), value: 'desc' },\n ]}\n path=\"direction\"\n readOnly={!groupByFieldName}\n value={directionValue}\n />\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,39 +0,0 @@
1
- @import '../../scss/styles.scss';
2
-
3
- @layer payload-default {
4
- .group-by-builder {
5
- background: var(--theme-elevation-50);
6
- padding: var(--base);
7
- display: flex;
8
- flex-direction: column;
9
- gap: calc(var(--base) / 2);
10
-
11
- &__header {
12
- width: 100%;
13
- display: flex;
14
- justify-content: space-between;
15
- }
16
-
17
- &__clear-button {
18
- background: transparent;
19
- border: none;
20
- color: var(--theme-elevation-500);
21
- line-height: inherit;
22
- cursor: pointer;
23
- font-size: inherit;
24
- padding: 0;
25
- text-decoration: underline;
26
- }
27
-
28
- &__inputs {
29
- width: 100%;
30
- display: flex;
31
- gap: base(1);
32
-
33
- & > * {
34
- flex-grow: 1;
35
- width: 50%;
36
- }
37
- }
38
- }
39
- }
@@ -1,9 +0,0 @@
1
- import type { ClientField, SanitizedCollectionConfig } from 'payload';
2
- import React from 'react';
3
- import './index.css';
4
- export type GroupByControlProps = {
5
- readonly collectionSlug: SanitizedCollectionConfig['slug'];
6
- readonly fields: ClientField[];
7
- };
8
- export declare const GroupByControl: React.FC<GroupByControlProps>;
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GroupByControl/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAS,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAG5E,OAAO,KAAuC,MAAM,OAAO,CAAA;AAW3D,OAAO,aAAa,CAAA;AAEpB,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAC/B,CAAA;AAoBD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAoPxD,CAAA"}
@@ -1,254 +0,0 @@
1
- 'use client';
2
-
3
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import { isFieldDisabled } from 'payload/shared';
5
- import React, { useCallback, useMemo, useRef } from 'react';
6
- import { ChevronIcon } from '../../icons/Chevron/index.js';
7
- import { TrashIcon } from '../../icons/Trash/index.js';
8
- import { XIcon } from '../../icons/X/index.js';
9
- import { useAuth } from '../../providers/Auth/index.js';
10
- import { useListQuery } from '../../providers/ListQuery/index.js';
11
- import { useTranslation } from '../../providers/Translation/index.js';
12
- import { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js';
13
- import { Button } from '../Button/index.js';
14
- import { Popup, PopupList } from '../Popup/index.js';
15
- import './index.css';
16
- const baseClass = 'group-by-control';
17
- /**
18
- * Supported field types for group by functionality.
19
- */
20
- const supportedFieldTypes = ['text', 'textarea', 'number', 'select', 'relationship', 'date', 'checkbox', 'radio', 'email', 'upload'];
21
- export const GroupByControl = ({
22
- collectionSlug,
23
- fields
24
- }) => {
25
- const {
26
- i18n,
27
- t
28
- } = useTranslation();
29
- const {
30
- permissions
31
- } = useAuth();
32
- const listQuery = useListQuery();
33
- const closeRef = useRef(null);
34
- const groupByRaw = listQuery.query?.groupBy;
35
- const groupByFieldName = groupByRaw?.replace(/^-/, '');
36
- const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields;
37
- const reducedFields = useMemo(() => reduceFieldsToOptions({
38
- fieldPermissions,
39
- fields,
40
- i18n
41
- }), [fields, fieldPermissions, i18n]);
42
- const filteredFields = useMemo(() => reducedFields.filter(field => !isFieldDisabled(field.field, 'groupBy') && field.fieldPath !== 'id' && supportedFieldTypes.includes(field.field.type)), [reducedFields]);
43
- const groupByField = reducedFields.find(field_0 => field_0.fieldPath === groupByFieldName);
44
- const isActive = Boolean(groupByFieldName && groupByField);
45
- const handleFieldSelect = useCallback(value => {
46
- void (async () => {
47
- if (typeof listQuery.refineListData !== 'function') {
48
- return;
49
- }
50
- await listQuery.refineListData({
51
- groupBy: listQuery.query?.groupBy?.startsWith('-') ? `-${value}` : value,
52
- page: 1
53
- });
54
- })();
55
- }, [listQuery]);
56
- const handleClear = useCallback(() => {
57
- void (async () => {
58
- if (typeof listQuery.refineListData === 'function') {
59
- await listQuery.refineListData({
60
- groupBy: ''
61
- });
62
- }
63
- closeRef.current?.();
64
- })();
65
- }, [listQuery]);
66
- const handleDirectionSelect = useCallback(value_0 => {
67
- void (async () => {
68
- if (!groupByFieldName || typeof listQuery.refineListData !== 'function') {
69
- return;
70
- }
71
- await listQuery.refineListData({
72
- groupBy: value_0 === 'asc' ? groupByFieldName : `-${groupByFieldName}`,
73
- page: 1
74
- });
75
- })();
76
- }, [groupByFieldName, listQuery]);
77
- if (filteredFields.length === 0) {
78
- return null;
79
- }
80
- const directionValue = !groupByRaw || typeof groupByRaw !== 'string' ? 'asc' : groupByRaw.startsWith('-') ? 'desc' : 'asc';
81
- // Build the trigger button label
82
- const triggerLabel = isActive ? t('general:groupByLabel', {
83
- label: groupByField?.label || ''
84
- }) : t('general:groupByLabel', {
85
- label: ''
86
- });
87
- return /*#__PURE__*/_jsx(Popup, {
88
- className: baseClass,
89
- horizontalAlign: "right",
90
- portalClassName: `${baseClass}__popup`,
91
- render: ({
92
- close
93
- }) => {
94
- closeRef.current = close;
95
- return /*#__PURE__*/_jsxs("div", {
96
- className: `${baseClass}__content`,
97
- children: [/*#__PURE__*/_jsxs("div", {
98
- className: `${baseClass}__header`,
99
- children: [/*#__PURE__*/_jsx("span", {
100
- className: `${baseClass}__title`,
101
- children: t('general:groupByLabel', {
102
- label: ''
103
- })
104
- }), /*#__PURE__*/_jsxs("div", {
105
- className: `${baseClass}__header-actions`,
106
- children: [isActive && /*#__PURE__*/_jsx(Button, {
107
- "aria-label": t('general:clear'),
108
- buttonStyle: "ghost",
109
- icon: /*#__PURE__*/_jsx(TrashIcon, {}),
110
- onClick: handleClear,
111
- round: true,
112
- size: "medium"
113
- }), /*#__PURE__*/_jsx(Button, {
114
- "aria-label": t('general:close'),
115
- buttonStyle: "ghost",
116
- icon: /*#__PURE__*/_jsx(XIcon, {
117
- size: 24
118
- }),
119
- onClick: close,
120
- round: true,
121
- size: "medium"
122
- })]
123
- })]
124
- }), /*#__PURE__*/_jsxs("div", {
125
- className: `${baseClass}__body`,
126
- children: [/*#__PURE__*/_jsxs("div", {
127
- className: `${baseClass}__row`,
128
- children: [/*#__PURE__*/_jsx("label", {
129
- className: `${baseClass}__label`,
130
- children: t('general:field')
131
- }), /*#__PURE__*/_jsx("div", {
132
- className: `${baseClass}__input`,
133
- "data-popup-prevent-close": true,
134
- children: /*#__PURE__*/_jsx(Popup, {
135
- className: `${baseClass}__select-popup`,
136
- horizontalAlign: "right",
137
- render: ({
138
- close: closeFieldPopup
139
- }) => /*#__PURE__*/_jsx(PopupList.RadioGroup, {
140
- children: filteredFields.map((field_1, i) => /*#__PURE__*/_jsx(PopupList.RadioGroupItem, {
141
- active: field_1.fieldPath === groupByFieldName,
142
- onClick: () => {
143
- handleFieldSelect(field_1.fieldPath);
144
- closeFieldPopup();
145
- },
146
- children: field_1.label
147
- }, i))
148
- }),
149
- renderButton: ({
150
- active,
151
- onClick,
152
- onKeyDown
153
- }) => /*#__PURE__*/_jsxs("button", {
154
- className: `${baseClass}__select-trigger`,
155
- onClick: onClick,
156
- onKeyDown: onKeyDown,
157
- type: "button",
158
- children: [/*#__PURE__*/_jsx("span", {
159
- className: `${baseClass}__select-value`,
160
- children: groupByField?.label || t('general:selectValue')
161
- }), /*#__PURE__*/_jsx(ChevronIcon, {
162
- direction: active ? 'up' : 'down',
163
- size: 16
164
- })]
165
- }),
166
- size: "medium",
167
- verticalAlign: "bottom"
168
- })
169
- })]
170
- }), /*#__PURE__*/_jsxs("div", {
171
- className: `${baseClass}__row`,
172
- children: [/*#__PURE__*/_jsx("label", {
173
- className: `${baseClass}__label`,
174
- children: t('general:sort')
175
- }), /*#__PURE__*/_jsx("div", {
176
- className: `${baseClass}__input`,
177
- "data-popup-prevent-close": true,
178
- children: /*#__PURE__*/_jsx(Popup, {
179
- className: `${baseClass}__select-popup`,
180
- disabled: !groupByFieldName,
181
- horizontalAlign: "right",
182
- render: ({
183
- close: closeSortPopup
184
- }) => /*#__PURE__*/_jsxs(PopupList.RadioGroup, {
185
- children: [/*#__PURE__*/_jsx(PopupList.RadioGroupItem, {
186
- active: directionValue === 'desc',
187
- onClick: () => {
188
- handleDirectionSelect('desc');
189
- closeSortPopup();
190
- },
191
- children: t('general:descending')
192
- }), /*#__PURE__*/_jsx(PopupList.RadioGroupItem, {
193
- active: directionValue === 'asc',
194
- onClick: () => {
195
- handleDirectionSelect('asc');
196
- closeSortPopup();
197
- },
198
- children: t('general:ascending')
199
- })]
200
- }),
201
- renderButton: ({
202
- active: active_0,
203
- onClick: onClick_0,
204
- onKeyDown: onKeyDown_0
205
- }) => /*#__PURE__*/_jsxs("button", {
206
- className: [`${baseClass}__select-trigger`, !groupByFieldName && `${baseClass}__select-trigger--disabled`].filter(Boolean).join(' '),
207
- disabled: !groupByFieldName,
208
- onClick: onClick_0,
209
- onKeyDown: onKeyDown_0,
210
- type: "button",
211
- children: [/*#__PURE__*/_jsx("span", {
212
- className: `${baseClass}__select-value`,
213
- children: directionValue === 'desc' ? t('general:descending') : t('general:ascending')
214
- }), /*#__PURE__*/_jsx(ChevronIcon, {
215
- direction: active_0 ? 'up' : 'down',
216
- size: 16
217
- })]
218
- }),
219
- size: "small",
220
- verticalAlign: "bottom"
221
- })
222
- })]
223
- })]
224
- })]
225
- });
226
- },
227
- renderButton: ({
228
- active: active_1,
229
- onClick: onClick_1,
230
- onKeyDown: onKeyDown_1,
231
- ...ariaProps
232
- }) => /*#__PURE__*/_jsx(Button, {
233
- buttonStyle: "secondary",
234
- className: `${baseClass}__trigger`,
235
- extraButtonProps: {
236
- onKeyDown: onKeyDown_1
237
- },
238
- icon: /*#__PURE__*/_jsx(ChevronIcon, {
239
- direction: active_1 ? 'up' : 'down',
240
- size: 16
241
- }),
242
- id: "toggle-group-by",
243
- onClick: onClick_1,
244
- selected: active_1 || isActive,
245
- size: "medium",
246
- ...ariaProps,
247
- children: triggerLabel
248
- }),
249
- size: "large",
250
- theme: "auto",
251
- verticalAlign: "bottom"
252
- });
253
- };
254
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["isFieldDisabled","React","useCallback","useMemo","useRef","ChevronIcon","TrashIcon","XIcon","useAuth","useListQuery","useTranslation","reduceFieldsToOptions","Button","Popup","PopupList","baseClass","supportedFieldTypes","GroupByControl","collectionSlug","fields","i18n","t","permissions","listQuery","closeRef","groupByRaw","query","groupBy","groupByFieldName","replace","fieldPermissions","collections","reducedFields","filteredFields","filter","field","fieldPath","includes","type","groupByField","find","isActive","Boolean","handleFieldSelect","value","refineListData","startsWith","page","handleClear","current","handleDirectionSelect","length","directionValue","triggerLabel","label","_jsx","className","horizontalAlign","portalClassName","render","close","_jsxs","buttonStyle","icon","onClick","round","size","closeFieldPopup","RadioGroup","map","i","RadioGroupItem","active","renderButton","onKeyDown","direction","verticalAlign","disabled","closeSortPopup","join","ariaProps","extraButtonProps","id","selected","theme"],"sources":["../../../src/elements/GroupByControl/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField, Field, SanitizedCollectionConfig } from 'payload'\n\nimport { isFieldDisabled } from 'payload/shared'\nimport React, { useCallback, useMemo, useRef } from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { TrashIcon } from '../../icons/Trash/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { Button } from '../Button/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.css'\n\nexport type GroupByControlProps = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly fields: ClientField[]\n}\n\nconst baseClass = 'group-by-control'\n\n/**\n * Supported field types for group by functionality.\n */\nconst supportedFieldTypes: Field['type'][] = [\n 'text',\n 'textarea',\n 'number',\n 'select',\n 'relationship',\n 'date',\n 'checkbox',\n 'radio',\n 'email',\n 'upload',\n]\n\nexport const GroupByControl: React.FC<GroupByControlProps> = ({ collectionSlug, fields }) => {\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const listQuery = useListQuery()\n const closeRef = useRef<(() => void) | null>(null)\n\n const groupByRaw = listQuery.query?.groupBy\n const groupByFieldName = groupByRaw?.replace(/^-/, '')\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields,\n i18n,\n }),\n [fields, fieldPermissions, i18n],\n )\n\n const filteredFields = useMemo(\n () =>\n reducedFields.filter(\n (field) =>\n !isFieldDisabled(field.field, 'groupBy') &&\n field.fieldPath !== 'id' &&\n supportedFieldTypes.includes(field.field.type),\n ),\n [reducedFields],\n )\n\n const groupByField = reducedFields.find((field) => field.fieldPath === groupByFieldName)\n const isActive = Boolean(groupByFieldName && groupByField)\n\n const handleFieldSelect = useCallback(\n (value: string) => {\n void (async () => {\n if (typeof listQuery.refineListData !== 'function') {\n return\n }\n await listQuery.refineListData({\n groupBy: listQuery.query?.groupBy?.startsWith('-') ? `-${value}` : value,\n page: 1,\n })\n })()\n },\n [listQuery],\n )\n\n const handleClear = useCallback(() => {\n void (async () => {\n if (typeof listQuery.refineListData === 'function') {\n await listQuery.refineListData({ groupBy: '' })\n }\n closeRef.current?.()\n })()\n }, [listQuery])\n\n const handleDirectionSelect = useCallback(\n (value: 'asc' | 'desc') => {\n void (async () => {\n if (!groupByFieldName || typeof listQuery.refineListData !== 'function') {\n return\n }\n await listQuery.refineListData({\n groupBy: value === 'asc' ? groupByFieldName : `-${groupByFieldName}`,\n page: 1,\n })\n })()\n },\n [groupByFieldName, listQuery],\n )\n\n if (filteredFields.length === 0) {\n return null\n }\n\n const directionValue =\n !groupByRaw || typeof groupByRaw !== 'string'\n ? 'asc'\n : groupByRaw.startsWith('-')\n ? 'desc'\n : 'asc'\n\n // Build the trigger button label\n const triggerLabel = isActive\n ? t('general:groupByLabel', { label: groupByField?.label || '' })\n : t('general:groupByLabel', { label: '' })\n\n return (\n <Popup\n className={baseClass}\n horizontalAlign=\"right\"\n portalClassName={`${baseClass}__popup`}\n render={({ close }) => {\n closeRef.current = close\n return (\n <div className={`${baseClass}__content`}>\n <div className={`${baseClass}__header`}>\n <span className={`${baseClass}__title`}>\n {t('general:groupByLabel', { label: '' })}\n </span>\n <div className={`${baseClass}__header-actions`}>\n {isActive && (\n <Button\n aria-label={t('general:clear')}\n buttonStyle=\"ghost\"\n icon={<TrashIcon />}\n onClick={handleClear}\n round\n size=\"medium\"\n />\n )}\n <Button\n aria-label={t('general:close')}\n buttonStyle=\"ghost\"\n icon={<XIcon size={24} />}\n onClick={close}\n round\n size=\"medium\"\n />\n </div>\n </div>\n <div className={`${baseClass}__body`}>\n <div className={`${baseClass}__row`}>\n <label className={`${baseClass}__label`}>{t('general:field')}</label>\n <div className={`${baseClass}__input`} data-popup-prevent-close>\n <Popup\n className={`${baseClass}__select-popup`}\n horizontalAlign=\"right\"\n render={({ close: closeFieldPopup }) => (\n <PopupList.RadioGroup>\n {filteredFields.map((field, i) => (\n <PopupList.RadioGroupItem\n active={field.fieldPath === groupByFieldName}\n key={i}\n onClick={() => {\n handleFieldSelect(field.fieldPath)\n closeFieldPopup()\n }}\n >\n {field.label}\n </PopupList.RadioGroupItem>\n ))}\n </PopupList.RadioGroup>\n )}\n renderButton={({ active, onClick, onKeyDown }) => (\n <button\n className={`${baseClass}__select-trigger`}\n onClick={onClick}\n onKeyDown={onKeyDown}\n type=\"button\"\n >\n <span className={`${baseClass}__select-value`}>\n {groupByField?.label || t('general:selectValue')}\n </span>\n <ChevronIcon direction={active ? 'up' : 'down'} size={16} />\n </button>\n )}\n size=\"medium\"\n verticalAlign=\"bottom\"\n />\n </div>\n </div>\n <div className={`${baseClass}__row`}>\n <label className={`${baseClass}__label`}>{t('general:sort')}</label>\n <div className={`${baseClass}__input`} data-popup-prevent-close>\n <Popup\n className={`${baseClass}__select-popup`}\n disabled={!groupByFieldName}\n horizontalAlign=\"right\"\n render={({ close: closeSortPopup }) => (\n <PopupList.RadioGroup>\n <PopupList.RadioGroupItem\n active={directionValue === 'desc'}\n onClick={() => {\n handleDirectionSelect('desc')\n closeSortPopup()\n }}\n >\n {t('general:descending')}\n </PopupList.RadioGroupItem>\n <PopupList.RadioGroupItem\n active={directionValue === 'asc'}\n onClick={() => {\n handleDirectionSelect('asc')\n closeSortPopup()\n }}\n >\n {t('general:ascending')}\n </PopupList.RadioGroupItem>\n </PopupList.RadioGroup>\n )}\n renderButton={({ active, onClick, onKeyDown }) => (\n <button\n className={[\n `${baseClass}__select-trigger`,\n !groupByFieldName && `${baseClass}__select-trigger--disabled`,\n ]\n .filter(Boolean)\n .join(' ')}\n disabled={!groupByFieldName}\n onClick={onClick}\n onKeyDown={onKeyDown}\n type=\"button\"\n >\n <span className={`${baseClass}__select-value`}>\n {directionValue === 'desc'\n ? t('general:descending')\n : t('general:ascending')}\n </span>\n <ChevronIcon direction={active ? 'up' : 'down'} size={16} />\n </button>\n )}\n size=\"small\"\n verticalAlign=\"bottom\"\n />\n </div>\n </div>\n </div>\n </div>\n )\n }}\n renderButton={({ active, onClick, onKeyDown, ...ariaProps }) => (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__trigger`}\n extraButtonProps={{ onKeyDown }}\n icon={<ChevronIcon direction={active ? 'up' : 'down'} size={16} />}\n id=\"toggle-group-by\"\n onClick={onClick}\n selected={active || isActive}\n size=\"medium\"\n {...ariaProps}\n >\n {triggerLabel}\n </Button>\n )}\n size=\"large\"\n theme=\"auto\"\n verticalAlign=\"bottom\"\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,11 +0,0 @@
1
- @import '../../../scss/styles.scss';
2
-
3
- @layer payload-default {
4
- .settings-menu-button {
5
- &.popup--h-align-left {
6
- .popup__content {
7
- left: calc(var(--nav-padding-inline-start) * -0.5);
8
- }
9
- }
10
- }
11
- }