@payloadcms/ui 4.0.0-internal.a0ef1b8 → 4.0.0-internal.bc5cf8c

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 (838) hide show
  1. package/dist/css/colors.css +112 -59
  2. package/dist/css/design-tokens.css +5 -0
  3. package/dist/css/elevations.css +4 -0
  4. package/dist/css/radius.css +1 -3
  5. package/dist/css/theme.css +4 -0
  6. package/dist/css/utilities.css +7 -1
  7. package/dist/elements/APIKeyInput/index.css +92 -0
  8. package/dist/elements/APIKeyInput/index.d.ts +14 -0
  9. package/dist/elements/APIKeyInput/index.d.ts.map +1 -0
  10. package/dist/elements/APIKeyInput/index.js +86 -0
  11. package/dist/elements/APIKeyInput/index.js.map +1 -0
  12. package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
  13. package/dist/elements/AddNewRelation/index.js +85 -103
  14. package/dist/elements/AddNewRelation/index.js.map +1 -1
  15. package/dist/elements/AppHeader/index.d.ts +3 -1
  16. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  17. package/dist/elements/AppHeader/index.js +14 -27
  18. package/dist/elements/AppHeader/index.js.map +1 -1
  19. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  20. package/dist/elements/ArrayAction/index.js +1 -2
  21. package/dist/elements/ArrayAction/index.js.map +1 -1
  22. package/dist/elements/BulkUpload/ActionsBar/index.css +13 -11
  23. package/dist/elements/BulkUpload/ActionsBar/index.d.ts +1 -5
  24. package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
  25. package/dist/elements/BulkUpload/ActionsBar/index.js +57 -61
  26. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  27. package/dist/elements/BulkUpload/AddFilesView/index.css +14 -8
  28. package/dist/elements/BulkUpload/AddFilesView/index.d.ts +2 -2
  29. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  30. package/dist/elements/BulkUpload/AddFilesView/index.js +41 -36
  31. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  32. package/dist/elements/BulkUpload/AddingFilesView/index.css +177 -0
  33. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts +6 -2
  34. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
  35. package/dist/elements/BulkUpload/AddingFilesView/index.js +135 -66
  36. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  37. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js +4 -4
  38. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  39. package/dist/elements/BulkUpload/EditForm/index.css +9 -0
  40. package/dist/elements/BulkUpload/EditForm/index.d.ts +2 -2
  41. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  42. package/dist/elements/BulkUpload/EditForm/index.js +17 -18
  43. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  44. package/dist/elements/BulkUpload/EditForm/types.d.ts +2 -3
  45. package/dist/elements/BulkUpload/EditForm/types.d.ts.map +1 -1
  46. package/dist/elements/BulkUpload/EditForm/types.js.map +1 -1
  47. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts +1 -1
  48. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  49. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +77 -59
  50. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  51. package/dist/elements/BulkUpload/EditMany/index.css +71 -0
  52. package/dist/elements/BulkUpload/EditMany/index.d.ts +1 -1
  53. package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
  54. package/dist/elements/BulkUpload/EditMany/index.js +29 -11
  55. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  56. package/dist/elements/BulkUpload/FileSidebar/index.css +79 -180
  57. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  58. package/dist/elements/BulkUpload/FileSidebar/index.js +42 -165
  59. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  60. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  61. package/dist/elements/BulkUpload/FormsManager/index.js +14 -1
  62. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  63. package/dist/elements/BulkUpload/index.css +48 -0
  64. package/dist/elements/BulkUpload/index.d.ts +6 -5
  65. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  66. package/dist/elements/BulkUpload/index.js +42 -41
  67. package/dist/elements/BulkUpload/index.js.map +1 -1
  68. package/dist/elements/Button/index.css +8 -0
  69. package/dist/elements/Card/index.css +1 -1
  70. package/dist/elements/Chip/index.css +1 -1
  71. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  72. package/dist/elements/CodeEditor/CodeEditor.js +19 -0
  73. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  74. package/dist/elements/ColumnSelection/Popup.d.ts +12 -0
  75. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -0
  76. package/dist/elements/{ColumnSelector/index.js → ColumnSelection/Popup.js} +24 -13
  77. package/dist/elements/ColumnSelection/Popup.js.map +1 -0
  78. package/dist/elements/ColumnSelection/index.d.ts +10 -0
  79. package/dist/elements/ColumnSelection/index.d.ts.map +1 -0
  80. package/dist/elements/{ColumnsButton → ColumnSelection}/index.js +23 -17
  81. package/dist/elements/ColumnSelection/index.js.map +1 -0
  82. package/dist/elements/Combobox/index.css +9 -8
  83. package/dist/elements/ConfirmationModal/index.css +7 -0
  84. package/dist/elements/ConfirmationModal/index.d.ts +1 -0
  85. package/dist/elements/ConfirmationModal/index.d.ts.map +1 -1
  86. package/dist/elements/ConfirmationModal/index.js +7 -3
  87. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  88. package/dist/elements/CopyLocaleData/index.js +1 -1
  89. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  90. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  91. package/dist/elements/CreateDocumentButton/index.js +0 -1
  92. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  93. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  94. package/dist/elements/DatePicker/DatePicker.js +4 -2
  95. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  96. package/dist/elements/DatePicker/index.css +11 -6
  97. package/dist/elements/DatePicker/index.js +1 -1
  98. package/dist/elements/DatePicker/index.js.map +1 -1
  99. package/dist/elements/DeleteMany/index.d.ts +3 -26
  100. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  101. package/dist/elements/DeleteMany/index.js +1 -95
  102. package/dist/elements/DeleteMany/index.js.map +1 -1
  103. package/dist/elements/Dialog/DialogHeader/index.d.ts +4 -0
  104. package/dist/elements/Dialog/DialogHeader/index.d.ts.map +1 -1
  105. package/dist/elements/Dialog/DialogHeader/index.js +45 -30
  106. package/dist/elements/Dialog/DialogHeader/index.js.map +1 -1
  107. package/dist/elements/Dialog/DialogModal/index.d.ts +6 -1
  108. package/dist/elements/Dialog/DialogModal/index.d.ts.map +1 -1
  109. package/dist/elements/Dialog/DialogModal/index.js +58 -31
  110. package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
  111. package/dist/elements/Dialog/DialogTitle/index.css +9 -0
  112. package/dist/elements/Dialog/DialogTitle/index.d.ts +5 -0
  113. package/dist/elements/Dialog/DialogTitle/index.d.ts.map +1 -0
  114. package/dist/elements/Dialog/DialogTitle/index.js +10 -0
  115. package/dist/elements/Dialog/DialogTitle/index.js.map +1 -0
  116. package/dist/elements/Dialog/index.css +10 -0
  117. package/dist/elements/DocumentControls/index.css +18 -2
  118. package/dist/elements/DocumentControls/index.d.ts +6 -0
  119. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  120. package/dist/elements/DocumentControls/index.js +19 -9
  121. package/dist/elements/DocumentControls/index.js.map +1 -1
  122. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  123. package/dist/elements/DocumentDrawer/DrawerContent.js +10 -6
  124. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  125. package/dist/elements/DocumentDrawer/DrawerHeader/index.css +76 -4
  126. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts +7 -1
  127. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts.map +1 -1
  128. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +150 -87
  129. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  130. package/dist/elements/DocumentDrawer/types.d.ts +1 -0
  131. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  132. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  133. package/dist/elements/DocumentFields/index.css +66 -4
  134. package/dist/elements/DocumentFields/index.d.ts +5 -0
  135. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  136. package/dist/elements/DocumentFields/index.js +9 -1
  137. package/dist/elements/DocumentFields/index.js.map +1 -1
  138. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts +12 -0
  139. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts.map +1 -0
  140. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js +28 -0
  141. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js.map +1 -0
  142. package/dist/elements/DocumentHeader/index.js +2 -3
  143. package/dist/elements/DocumentHeader/index.js.map +1 -1
  144. package/dist/elements/DraggableSortable/index.js.map +1 -1
  145. package/dist/elements/Drawer/index.css +57 -26
  146. package/dist/elements/Drawer/index.d.ts +25 -0
  147. package/dist/elements/Drawer/index.d.ts.map +1 -1
  148. package/dist/elements/Drawer/index.js +133 -54
  149. package/dist/elements/Drawer/index.js.map +1 -1
  150. package/dist/elements/Drawer/types.d.ts +1 -0
  151. package/dist/elements/Drawer/types.d.ts.map +1 -1
  152. package/dist/elements/Drawer/types.js.map +1 -1
  153. package/dist/elements/DrawerActionHeader/index.css +1 -1
  154. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.css +7 -1
  155. package/dist/elements/DrawerHeader/index.d.ts +10 -0
  156. package/dist/elements/DrawerHeader/index.d.ts.map +1 -0
  157. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.js +16 -11
  158. package/dist/elements/DrawerHeader/index.js.map +1 -0
  159. package/dist/elements/Dropzone/index.css +5 -13
  160. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +1 -1
  161. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  162. package/dist/elements/EditMany/DrawerContent.d.ts +1 -1
  163. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  164. package/dist/elements/EditMany/DrawerContent.js +76 -71
  165. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  166. package/dist/elements/EditMany/index.css +71 -0
  167. package/dist/elements/EditMany/index.d.ts +9 -11
  168. package/dist/elements/EditMany/index.d.ts.map +1 -1
  169. package/dist/elements/EditMany/index.js +2 -40
  170. package/dist/elements/EditMany/index.js.map +1 -1
  171. package/dist/elements/EditUpload/index.css +97 -158
  172. package/dist/elements/EditUpload/index.d.ts +2 -1
  173. package/dist/elements/EditUpload/index.d.ts.map +1 -1
  174. package/dist/elements/EditUpload/index.js +205 -231
  175. package/dist/elements/EditUpload/index.js.map +1 -1
  176. package/dist/elements/EditUpload/{library.scss → library.css} +108 -46
  177. package/dist/elements/FieldSelect/index.css +3 -0
  178. package/dist/elements/FileDetails/DraggableFileDetails/index.css +32 -0
  179. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +2 -2
  180. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  181. package/dist/elements/FileDetails/DraggableFileDetails/index.js +19 -18
  182. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  183. package/dist/elements/FileDetails/FileMeta/index.css +27 -0
  184. package/dist/elements/FileDetails/FileMeta/index.d.ts +1 -1
  185. package/dist/elements/FileDetails/FileMeta/index.d.ts.map +1 -1
  186. package/dist/elements/FileDetails/FileMeta/index.js +1 -1
  187. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  188. package/dist/elements/FileDetails/StaticFileDetails/index.css +140 -0
  189. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +2 -2
  190. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  191. package/dist/elements/FileDetails/StaticFileDetails/index.js +1 -1
  192. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  193. package/dist/elements/FileDetails/index.d.ts +1 -1
  194. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  195. package/dist/elements/FileDetails/index.js.map +1 -1
  196. package/dist/elements/FileManager/FilePreview/AudioPreview/index.css +8 -0
  197. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts +10 -0
  198. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts.map +1 -0
  199. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js +24 -0
  200. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js.map +1 -0
  201. package/dist/elements/FileManager/FilePreview/PdfPreview/index.css +9 -0
  202. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts +12 -0
  203. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts.map +1 -0
  204. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js +27 -0
  205. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js.map +1 -0
  206. package/dist/elements/FileManager/FilePreview/VideoPreview/index.css +8 -0
  207. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts +10 -0
  208. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts.map +1 -0
  209. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js +24 -0
  210. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js.map +1 -0
  211. package/dist/elements/FileManager/FilePreview/index.css +83 -0
  212. package/dist/elements/FileManager/FilePreview/index.d.ts +13 -0
  213. package/dist/elements/FileManager/FilePreview/index.d.ts.map +1 -0
  214. package/dist/elements/FileManager/FilePreview/index.js +140 -0
  215. package/dist/elements/FileManager/FilePreview/index.js.map +1 -0
  216. package/dist/elements/FileManager/FileToolbar/index.css +91 -0
  217. package/dist/elements/FileManager/FileToolbar/index.d.ts +14 -0
  218. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -0
  219. package/dist/elements/FileManager/FileToolbar/index.js +106 -0
  220. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -0
  221. package/dist/elements/FileManager/index.css +154 -0
  222. package/dist/elements/FileManager/index.d.ts +19 -0
  223. package/dist/elements/FileManager/index.d.ts.map +1 -0
  224. package/dist/elements/FileManager/index.js +424 -0
  225. package/dist/elements/FileManager/index.js.map +1 -0
  226. package/dist/elements/GroupBy/Popup.d.ts +21 -0
  227. package/dist/elements/GroupBy/Popup.d.ts.map +1 -0
  228. package/dist/elements/GroupBy/Popup.js +268 -0
  229. package/dist/elements/GroupBy/Popup.js.map +1 -0
  230. package/dist/elements/GroupBy/index.d.ts +12 -0
  231. package/dist/elements/GroupBy/index.d.ts.map +1 -0
  232. package/dist/elements/GroupBy/index.js +91 -0
  233. package/dist/elements/GroupBy/index.js.map +1 -0
  234. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.css +2 -2
  235. package/dist/elements/Hierarchy/Drawer/index.css +4 -22
  236. package/dist/elements/Hierarchy/Drawer/index.d.ts.map +1 -1
  237. package/dist/elements/Hierarchy/Drawer/index.js +5 -3
  238. package/dist/elements/Hierarchy/Drawer/index.js.map +1 -1
  239. package/dist/elements/Hierarchy/Field/SelectedHierarchies.css +36 -0
  240. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts +1 -1
  241. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
  242. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +1 -1
  243. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
  244. package/dist/elements/Hierarchy/Field/index.client.d.ts +1 -1
  245. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
  246. package/dist/elements/Hierarchy/Field/index.client.js +5 -2
  247. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  248. package/dist/elements/Hierarchy/Field/index.css +37 -0
  249. package/dist/elements/Hierarchy/MoveMany/index.d.ts +0 -1
  250. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  251. package/dist/elements/Hierarchy/MoveMany/index.js +0 -1
  252. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  253. package/dist/elements/Hierarchy/Tree/LoadMore/index.css +27 -0
  254. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts +1 -1
  255. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts.map +1 -1
  256. package/dist/elements/Hierarchy/Tree/LoadMore/index.js +1 -1
  257. package/dist/elements/Hierarchy/Tree/LoadMore/index.js.map +1 -1
  258. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
  259. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js +36 -16
  260. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
  261. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  262. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +20 -15
  263. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  264. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  265. package/dist/elements/ListColumnSelectionButton/index.d.ts +11 -0
  266. package/dist/elements/ListColumnSelectionButton/index.d.ts.map +1 -0
  267. package/dist/elements/ListColumnSelectionButton/index.js +37 -0
  268. package/dist/elements/ListColumnSelectionButton/index.js.map +1 -0
  269. package/dist/elements/ListControls/index.css +5 -0
  270. package/dist/elements/ListControls/index.d.ts.map +1 -1
  271. package/dist/elements/ListControls/index.js +7 -8
  272. package/dist/elements/ListControls/index.js.map +1 -1
  273. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  274. package/dist/elements/ListDrawer/DrawerContent.js +13 -7
  275. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  276. package/dist/elements/ListDrawer/Provider.d.ts +1 -1
  277. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  278. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  279. package/dist/elements/ListGroupByButton/index.d.ts +12 -0
  280. package/dist/elements/ListGroupByButton/index.d.ts.map +1 -0
  281. package/dist/elements/ListGroupByButton/index.js +55 -0
  282. package/dist/elements/ListGroupByButton/index.js.map +1 -0
  283. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.d.ts.map +1 -1
  284. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +2 -0
  285. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  286. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +4 -4
  287. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  288. package/dist/elements/ListSelection/index.css +1 -1
  289. package/dist/elements/ListWhereBuilder/index.d.ts +16 -0
  290. package/dist/elements/ListWhereBuilder/index.d.ts.map +1 -0
  291. package/dist/elements/ListWhereBuilder/index.js +62 -0
  292. package/dist/elements/ListWhereBuilder/index.js.map +1 -0
  293. package/dist/elements/LivePreview/Toolbar/Controls/index.js +2 -2
  294. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  295. package/dist/elements/LivePreview/Toolbar/SizeInput/index.css +5 -44
  296. package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts.map +1 -1
  297. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js +25 -43
  298. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  299. package/dist/elements/LoadMoreRow/index.css +34 -0
  300. package/dist/elements/LoadMoreRow/index.d.ts +1 -1
  301. package/dist/elements/LoadMoreRow/index.d.ts.map +1 -1
  302. package/dist/elements/LoadMoreRow/index.js +4 -8
  303. package/dist/elements/LoadMoreRow/index.js.map +1 -1
  304. package/dist/elements/Loading/index.css +28 -74
  305. package/dist/elements/Loading/index.d.ts.map +1 -1
  306. package/dist/elements/Loading/index.js +16 -60
  307. package/dist/elements/Loading/index.js.map +1 -1
  308. package/dist/elements/Localizer/index.d.ts.map +1 -1
  309. package/dist/elements/Localizer/index.js +3 -4
  310. package/dist/elements/Localizer/index.js.map +1 -1
  311. package/dist/elements/MenuSeparator/index.d.ts +4 -0
  312. package/dist/elements/MenuSeparator/index.d.ts.map +1 -0
  313. package/dist/elements/MenuSeparator/index.js +10 -0
  314. package/dist/elements/MenuSeparator/index.js.map +1 -0
  315. package/dist/elements/MiniCarousel/index.css +94 -0
  316. package/dist/elements/MiniCarousel/index.d.ts +15 -0
  317. package/dist/elements/MiniCarousel/index.d.ts.map +1 -0
  318. package/dist/elements/MiniCarousel/index.js +84 -0
  319. package/dist/elements/MiniCarousel/index.js.map +1 -0
  320. package/dist/elements/Nav/index.css +2 -2
  321. package/dist/elements/Nav/index.d.ts.map +1 -1
  322. package/dist/elements/Nav/index.js +4 -23
  323. package/dist/elements/Nav/index.js.map +1 -1
  324. package/dist/elements/NavGroup/index.css +1 -1
  325. package/dist/elements/Pill/index.css +1 -1
  326. package/dist/elements/PillSelector/index.css +1 -1
  327. package/dist/elements/Popup/PopupButtonList/index.css +48 -4
  328. package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  329. package/dist/elements/Popup/PopupButtonList/index.js +1 -0
  330. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  331. package/dist/elements/Popup/PopupGroupLabel/index.css +19 -4
  332. package/dist/elements/Popup/index.d.ts +8 -1
  333. package/dist/elements/Popup/index.d.ts.map +1 -1
  334. package/dist/elements/Popup/index.js +160 -63
  335. package/dist/elements/Popup/index.js.map +1 -1
  336. package/dist/elements/PreviewSizes/index.css +149 -0
  337. package/dist/elements/PreviewSizes/index.d.ts +2 -2
  338. package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
  339. package/dist/elements/PreviewSizes/index.js +1 -1
  340. package/dist/elements/PreviewSizes/index.js.map +1 -1
  341. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts +13 -0
  342. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts.map +1 -0
  343. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js +41 -0
  344. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js.map +1 -0
  345. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts +1 -0
  346. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  347. package/dist/elements/PublishButton/ScheduleDrawer/index.js +9 -31
  348. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  349. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  350. package/dist/elements/PublishButton/index.js +4 -5
  351. package/dist/elements/PublishButton/index.js.map +1 -1
  352. package/dist/elements/PublishMany/DrawerContent.d.ts +2 -1
  353. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  354. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  355. package/dist/elements/PublishMany/index.d.ts +2 -6
  356. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  357. package/dist/elements/PublishMany/index.js +0 -38
  358. package/dist/elements/PublishMany/index.js.map +1 -1
  359. package/dist/elements/QueryPresets/cells/ColumnsCell/{index.scss → index.css} +1 -3
  360. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts +1 -1
  361. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts.map +1 -1
  362. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js +1 -1
  363. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js.map +1 -1
  364. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts +1 -1
  365. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts.map +1 -1
  366. package/dist/elements/QueryPresets/fields/ColumnsField/index.js +77 -48
  367. package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
  368. package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts +1 -1
  369. package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts.map +1 -1
  370. package/dist/elements/QueryPresets/fields/GroupByField/index.js +12 -21
  371. package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
  372. package/dist/elements/QueryPresets/fields/Heading/index.css +52 -0
  373. package/dist/elements/QueryPresets/fields/Heading/index.d.ts +7 -0
  374. package/dist/elements/QueryPresets/fields/Heading/index.d.ts.map +1 -0
  375. package/dist/elements/QueryPresets/fields/Heading/index.js +31 -0
  376. package/dist/elements/QueryPresets/fields/Heading/index.js.map +1 -0
  377. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts +1 -1
  378. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +1 -1
  379. package/dist/elements/QueryPresets/fields/WhereField/index.js +24 -23
  380. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  381. package/dist/elements/QueryPresets/fields/fields.css +23 -0
  382. package/dist/elements/ReactSelect/MultiValue/index.css +1 -1
  383. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts +5 -0
  384. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts.map +1 -0
  385. package/dist/elements/ReactSelect/getCaptureMenuScroll.js +10 -0
  386. package/dist/elements/ReactSelect/getCaptureMenuScroll.js.map +1 -0
  387. package/dist/elements/ReactSelect/getMenuListStyles.d.ts +6 -0
  388. package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -0
  389. package/dist/elements/ReactSelect/getMenuListStyles.js +7 -0
  390. package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -0
  391. package/dist/elements/ReactSelect/index.css +52 -52
  392. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  393. package/dist/elements/ReactSelect/index.js +210 -114
  394. package/dist/elements/ReactSelect/index.js.map +1 -1
  395. package/dist/elements/ReactSelect/types.d.ts +7 -1
  396. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  397. package/dist/elements/ReactSelect/types.js.map +1 -1
  398. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  399. package/dist/elements/RelationshipTable/AddNewButton.js +1 -2
  400. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  401. package/dist/elements/RelationshipTable/index.js +2 -2
  402. package/dist/elements/RelationshipTable/index.js.map +1 -1
  403. package/dist/elements/RenderTitle/index.css +10 -0
  404. package/dist/elements/RenderTitle/index.d.ts +5 -0
  405. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  406. package/dist/elements/RenderTitle/index.js +52 -27
  407. package/dist/elements/RenderTitle/index.js.map +1 -1
  408. package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
  409. package/dist/elements/SchedulePublishButton/index.js +6 -1
  410. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  411. package/dist/elements/SelectMany/index.js +1 -1
  412. package/dist/elements/SelectMany/index.js.map +1 -1
  413. package/dist/elements/SortColumn/index.css +1 -1
  414. package/dist/elements/Spinner/index.css +16 -0
  415. package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts.map +1 -1
  416. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +1 -2
  417. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  418. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  419. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +21 -2
  420. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  421. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  422. package/dist/elements/Table/OrderableRow.js +1 -1
  423. package/dist/elements/Table/OrderableRow.js.map +1 -1
  424. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  425. package/dist/elements/Table/RelationshipProvider/index.js +1 -0
  426. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  427. package/dist/elements/Table/index.css +39 -10
  428. package/dist/elements/Tabs/index.css +100 -0
  429. package/dist/elements/Tabs/index.d.ts +32 -0
  430. package/dist/elements/Tabs/index.d.ts.map +1 -0
  431. package/dist/elements/Tabs/index.js +62 -0
  432. package/dist/elements/Tabs/index.js.map +1 -0
  433. package/dist/elements/Thumbnail/index.css +41 -0
  434. package/dist/elements/Thumbnail/index.d.ts +3 -3
  435. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  436. package/dist/elements/Thumbnail/index.js +1 -1
  437. package/dist/elements/Thumbnail/index.js.map +1 -1
  438. package/dist/elements/TimezonePicker/index.css +58 -24
  439. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  440. package/dist/elements/TimezonePicker/index.js +31 -4
  441. package/dist/elements/TimezonePicker/index.js.map +1 -1
  442. package/dist/elements/Toasts/fieldErrors.d.ts +1 -0
  443. package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
  444. package/dist/elements/Toasts/fieldErrors.js +25 -9
  445. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  446. package/dist/elements/Toasts/index.css +5 -0
  447. package/dist/elements/Tooltip/index.css +20 -4
  448. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  449. package/dist/elements/Tooltip/index.js +71 -3
  450. package/dist/elements/Tooltip/index.js.map +1 -1
  451. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  452. package/dist/elements/UnpublishButton/index.js +5 -13
  453. package/dist/elements/UnpublishButton/index.js.map +1 -1
  454. package/dist/elements/UnpublishMany/DrawerContent.d.ts +2 -1
  455. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  456. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  457. package/dist/elements/UnpublishMany/index.d.ts +2 -4
  458. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  459. package/dist/elements/UnpublishMany/index.js +0 -38
  460. package/dist/elements/UnpublishMany/index.js.map +1 -1
  461. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +11 -0
  462. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -0
  463. package/dist/elements/Upload/UploadFromURLModal/index.js +88 -0
  464. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -0
  465. package/dist/elements/Upload/index.css +134 -45
  466. package/dist/elements/Upload/index.d.ts +3 -8
  467. package/dist/elements/Upload/index.d.ts.map +1 -1
  468. package/dist/elements/Upload/index.js +71 -92
  469. package/dist/elements/Upload/index.js.map +1 -1
  470. package/dist/elements/UserMenu/LanguageMenu/index.d.ts +6 -0
  471. package/dist/elements/UserMenu/LanguageMenu/index.d.ts.map +1 -0
  472. package/dist/elements/UserMenu/LanguageMenu/index.js +133 -0
  473. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -0
  474. package/dist/elements/UserMenu/SettingsMenu/index.d.ts +15 -0
  475. package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -0
  476. package/dist/elements/UserMenu/SettingsMenu/index.js +119 -0
  477. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -0
  478. package/dist/elements/UserMenu/SubMenuHeader/index.d.ts +6 -0
  479. package/dist/elements/UserMenu/SubMenuHeader/index.d.ts.map +1 -0
  480. package/dist/elements/UserMenu/SubMenuHeader/index.js +34 -0
  481. package/dist/elements/UserMenu/SubMenuHeader/index.js.map +1 -0
  482. package/dist/elements/UserMenu/ThemeMenu/index.d.ts +6 -0
  483. package/dist/elements/UserMenu/ThemeMenu/index.d.ts.map +1 -0
  484. package/dist/elements/UserMenu/ThemeMenu/index.js +145 -0
  485. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -0
  486. package/dist/elements/UserMenu/index.css +80 -0
  487. package/dist/elements/UserMenu/index.d.ts +10 -0
  488. package/dist/elements/UserMenu/index.d.ts.map +1 -0
  489. package/dist/elements/UserMenu/index.js +204 -0
  490. package/dist/elements/UserMenu/index.js.map +1 -0
  491. package/dist/elements/WhereBuilder/Condition/index.css +1 -1
  492. package/dist/elements/WhereBuilder/Condition/index.d.ts +1 -0
  493. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  494. package/dist/elements/WhereBuilder/Condition/index.js +20 -2
  495. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  496. package/dist/elements/WhereBuilder/index.d.ts +4 -3
  497. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  498. package/dist/elements/WhereBuilder/index.js +71 -62
  499. package/dist/elements/WhereBuilder/index.js.map +1 -1
  500. package/dist/elements/WhereBuilder/types.d.ts +6 -5
  501. package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
  502. package/dist/elements/WhereBuilder/types.js.map +1 -1
  503. package/dist/exports/client/index.d.ts +18 -3
  504. package/dist/exports/client/index.d.ts.map +1 -1
  505. package/dist/exports/client/index.js +1 -2
  506. package/dist/exports/client/index.js.map +4 -4
  507. package/dist/exports/shared/index.js +2 -2
  508. package/dist/exports/shared/index.js.map +2 -2
  509. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.css +2 -50
  510. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.d.ts.map +1 -1
  511. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js +27 -20
  512. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js.map +1 -1
  513. package/dist/fields/Blocks/BlockSelector/index.css +15 -4
  514. package/dist/fields/Blocks/BlockSelector/index.js +1 -1
  515. package/dist/fields/Blocks/BlockSelector/index.js.map +1 -1
  516. package/dist/fields/Blocks/index.d.ts.map +1 -1
  517. package/dist/fields/Blocks/index.js +6 -11
  518. package/dist/fields/Blocks/index.js.map +1 -1
  519. package/dist/fields/Checkbox/index.css +2 -2
  520. package/dist/fields/Group/index.css +4 -4
  521. package/dist/fields/Join/index.js +1 -1
  522. package/dist/fields/Join/index.js.map +1 -1
  523. package/dist/fields/Number/Input.d.ts.map +1 -1
  524. package/dist/fields/Number/Input.js +47 -35
  525. package/dist/fields/Number/Input.js.map +1 -1
  526. package/dist/fields/Number/index.css +19 -0
  527. package/dist/fields/Number/types.d.ts +6 -0
  528. package/dist/fields/Number/types.d.ts.map +1 -1
  529. package/dist/fields/Number/types.js.map +1 -1
  530. package/dist/fields/RadioGroup/index.css +6 -0
  531. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +3 -3
  532. package/dist/fields/Row/index.d.ts +1 -1
  533. package/dist/fields/Tabs/Tab/index.d.ts +0 -1
  534. package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
  535. package/dist/fields/Tabs/Tab/index.js +12 -23
  536. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  537. package/dist/fields/Tabs/index.d.ts.map +1 -1
  538. package/dist/fields/Tabs/index.js +37 -37
  539. package/dist/fields/Tabs/index.js.map +1 -1
  540. package/dist/fields/Text/Input.d.ts.map +1 -1
  541. package/dist/fields/Text/Input.js +31 -28
  542. package/dist/fields/Text/Input.js.map +1 -1
  543. package/dist/fields/Text/types.d.ts +5 -0
  544. package/dist/fields/Text/types.d.ts.map +1 -1
  545. package/dist/fields/Text/types.js.map +1 -1
  546. package/dist/fields/Upload/HasMany/index.css +4 -0
  547. package/dist/fields/Upload/Input.d.ts.map +1 -1
  548. package/dist/fields/Upload/Input.js +12 -11
  549. package/dist/fields/Upload/Input.js.map +1 -1
  550. package/dist/fields/Upload/index.js +1 -1
  551. package/dist/fields/Upload/index.js.map +1 -1
  552. package/dist/forms/RenderFields/RenderField.d.ts +1 -1
  553. package/dist/forms/RenderFields/RenderField.js +2 -1
  554. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  555. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
  556. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  557. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js +1 -1
  558. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
  559. package/dist/forms/fieldSchemasToFormState/renderField.js +1 -1
  560. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  561. package/dist/forms/useField/index.js.map +1 -1
  562. package/dist/hooks/useElementHeightVariable.d.ts +15 -0
  563. package/dist/hooks/useElementHeightVariable.d.ts.map +1 -0
  564. package/dist/hooks/useElementHeightVariable.js +53 -0
  565. package/dist/hooks/useElementHeightVariable.js.map +1 -0
  566. package/dist/icons/Check/index.css +1 -2
  567. package/dist/icons/Check/index.js +1 -1
  568. package/dist/icons/Check/index.js.map +1 -1
  569. package/dist/icons/Crop/index.css +5 -0
  570. package/dist/icons/Crop/index.d.ts +7 -0
  571. package/dist/icons/Crop/index.d.ts.map +1 -0
  572. package/dist/icons/Crop/index.js +24 -0
  573. package/dist/icons/Crop/index.js.map +1 -0
  574. package/dist/icons/Dots/index.css +4 -4
  575. package/dist/icons/Download/index.css +5 -0
  576. package/dist/icons/{ExternalLink → Download}/index.d.ts +1 -1
  577. package/dist/icons/Download/index.d.ts.map +1 -0
  578. package/dist/icons/Download/index.js +27 -0
  579. package/dist/icons/Download/index.js.map +1 -0
  580. package/dist/icons/Gear/index.d.ts.map +1 -1
  581. package/dist/icons/Gear/index.js +8 -1
  582. package/dist/icons/Gear/index.js.map +1 -1
  583. package/dist/icons/InteractionEnter/index.css +5 -0
  584. package/dist/icons/InteractionEnter/index.d.ts +11 -0
  585. package/dist/icons/InteractionEnter/index.d.ts.map +1 -0
  586. package/dist/icons/InteractionEnter/index.js +25 -0
  587. package/dist/icons/InteractionEnter/index.js.map +1 -0
  588. package/dist/icons/{Write → Key}/index.css +1 -1
  589. package/dist/icons/Key/index.d.ts +7 -0
  590. package/dist/icons/Key/index.d.ts.map +1 -0
  591. package/dist/icons/Key/index.js +24 -0
  592. package/dist/icons/Key/index.js.map +1 -0
  593. package/dist/icons/LogOut/index.js +2 -2
  594. package/dist/icons/LogOut/index.js.map +1 -1
  595. package/dist/icons/{ExternalLink → NewTab}/index.css +1 -1
  596. package/dist/icons/NewTab/index.d.ts +7 -0
  597. package/dist/icons/NewTab/index.d.ts.map +1 -0
  598. package/dist/icons/NewTab/index.js +25 -0
  599. package/dist/icons/NewTab/index.js.map +1 -0
  600. package/dist/icons/Replace/index.css +5 -0
  601. package/dist/icons/Replace/index.d.ts +6 -0
  602. package/dist/icons/Replace/index.d.ts.map +1 -0
  603. package/dist/icons/Replace/index.js +20 -0
  604. package/dist/icons/Replace/index.js.map +1 -0
  605. package/dist/icons/Reset/index.css +5 -0
  606. package/dist/icons/Reset/index.d.ts +7 -0
  607. package/dist/icons/Reset/index.d.ts.map +1 -0
  608. package/dist/icons/Reset/index.js +25 -0
  609. package/dist/icons/Reset/index.js.map +1 -0
  610. package/dist/icons/Schedule/index.d.ts.map +1 -1
  611. package/dist/icons/Schedule/index.js +38 -39
  612. package/dist/icons/Schedule/index.js.map +1 -1
  613. package/dist/icons/Swap/index.js +1 -1
  614. package/dist/icons/Swap/index.js.map +1 -1
  615. package/dist/icons/VariableColor/index.css +5 -0
  616. package/dist/icons/VariableColor/index.d.ts +7 -0
  617. package/dist/icons/VariableColor/index.d.ts.map +1 -0
  618. package/dist/icons/VariableColor/index.js +23 -0
  619. package/dist/icons/VariableColor/index.js.map +1 -0
  620. package/dist/icons/Warning/index.css +1 -7
  621. package/dist/icons/Warning/index.d.ts +1 -1
  622. package/dist/icons/Warning/index.d.ts.map +1 -1
  623. package/dist/icons/Warning/index.js +11 -16
  624. package/dist/icons/Warning/index.js.map +1 -1
  625. package/dist/icons/WarningTriangle/index.css +5 -0
  626. package/dist/icons/WarningTriangle/index.d.ts +6 -0
  627. package/dist/icons/WarningTriangle/index.d.ts.map +1 -0
  628. package/dist/icons/WarningTriangle/index.js +21 -0
  629. package/dist/icons/WarningTriangle/index.js.map +1 -0
  630. package/dist/icons/Write/index.d.ts +0 -1
  631. package/dist/icons/Write/index.d.ts.map +1 -1
  632. package/dist/icons/Write/index.js +1 -2
  633. package/dist/icons/Write/index.js.map +1 -1
  634. package/dist/providers/Auth/index.d.ts +3 -1
  635. package/dist/providers/Auth/index.d.ts.map +1 -1
  636. package/dist/providers/Auth/index.js +8 -3
  637. package/dist/providers/Auth/index.js.map +1 -1
  638. package/dist/providers/Config/index.js.map +1 -1
  639. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  640. package/dist/providers/DocumentInfo/index.js +4 -0
  641. package/dist/providers/DocumentInfo/index.js.map +1 -1
  642. package/dist/providers/DocumentInfo/types.d.ts +4 -0
  643. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  644. package/dist/providers/DocumentInfo/types.js.map +1 -1
  645. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  646. package/dist/providers/ListQuery/index.js +1 -8
  647. package/dist/providers/ListQuery/index.js.map +1 -1
  648. package/dist/providers/Root/index.d.ts.map +1 -1
  649. package/dist/providers/Root/index.js +27 -24
  650. package/dist/providers/Root/index.js.map +1 -1
  651. package/dist/providers/TableColumns/RenderDefaultCell/index.css +1 -0
  652. package/dist/providers/Theme/index.d.ts +17 -2
  653. package/dist/providers/Theme/index.d.ts.map +1 -1
  654. package/dist/providers/Theme/index.js +126 -75
  655. package/dist/providers/Theme/index.js.map +1 -1
  656. package/dist/providers/ToastContainer/index.css +208 -0
  657. package/dist/providers/ToastContainer/index.d.ts +1 -0
  658. package/dist/providers/ToastContainer/index.d.ts.map +1 -1
  659. package/dist/providers/ToastContainer/index.js +19 -6
  660. package/dist/providers/ToastContainer/index.js.map +1 -1
  661. package/dist/scss/app.scss +10 -4
  662. package/dist/styles.css +1365 -1
  663. package/dist/templates/Default/index.d.ts.map +1 -1
  664. package/dist/templates/Default/index.js +53 -3
  665. package/dist/templates/Default/index.js.map +1 -1
  666. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +1 -2
  667. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
  668. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +1 -2
  669. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
  670. package/dist/utilities/copyDataFromLocale.js +1 -1
  671. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  672. package/dist/utilities/formatDocTitle/formatDateTitle.d.ts.map +1 -1
  673. package/dist/utilities/formatDocTitle/formatDateTitle.js +1 -1
  674. package/dist/utilities/formatDocTitle/formatDateTitle.js.map +1 -1
  675. package/dist/utilities/getHasScheduledPublish.d.ts +12 -0
  676. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -0
  677. package/dist/utilities/getHasScheduledPublish.js +38 -0
  678. package/dist/utilities/getHasScheduledPublish.js.map +1 -0
  679. package/dist/utilities/getVersions.d.ts.map +1 -1
  680. package/dist/utilities/getVersions.js +1 -21
  681. package/dist/utilities/getVersions.js.map +1 -1
  682. package/dist/utilities/reduceFieldsToOptions.js +1 -1
  683. package/dist/utilities/reduceFieldsToOptions.js.map +1 -1
  684. package/dist/utilities/renderTable.js +1 -1
  685. package/dist/utilities/renderTable.js.map +1 -1
  686. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  687. package/dist/utilities/traverseForLocalizedFields.js +3 -0
  688. package/dist/utilities/traverseForLocalizedFields.js.map +1 -1
  689. package/dist/views/API/index.client.js +2 -2
  690. package/dist/views/API/index.client.js.map +1 -1
  691. package/dist/views/Account/ResetPreferences/index.js +1 -0
  692. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  693. package/dist/views/Account/Settings/index.css +30 -13
  694. package/dist/views/Account/ToggleTheme/index.d.ts.map +1 -1
  695. package/dist/views/Account/ToggleTheme/index.js +31 -47
  696. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  697. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  698. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +1 -1
  699. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  700. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +2 -2
  701. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  702. package/dist/views/Document/index.d.ts.map +1 -1
  703. package/dist/views/Document/index.js +11 -1
  704. package/dist/views/Document/index.js.map +1 -1
  705. package/dist/views/Document/renderDocumentSlots.d.ts +1 -0
  706. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  707. package/dist/views/Document/renderDocumentSlots.js +47 -1
  708. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  709. package/dist/views/Edit/Auth/APIKey.d.ts.map +1 -1
  710. package/dist/views/Edit/Auth/APIKey.js +10 -32
  711. package/dist/views/Edit/Auth/APIKey.js.map +1 -1
  712. package/dist/views/Edit/Auth/index.css +0 -67
  713. package/dist/views/Edit/index.css +143 -6
  714. package/dist/views/Edit/index.d.ts +1 -1
  715. package/dist/views/Edit/index.d.ts.map +1 -1
  716. package/dist/views/Edit/index.js +96 -79
  717. package/dist/views/Edit/index.js.map +1 -1
  718. package/dist/views/HierarchyList/DocumentListSelection/index.js +8 -8
  719. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  720. package/dist/views/HierarchyList/HierarchyTable/SlotTable.css +2 -2
  721. package/dist/views/List/ListHeader/index.css +28 -1
  722. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  723. package/dist/views/List/ListHeader/index.js +0 -1
  724. package/dist/views/List/ListHeader/index.js.map +1 -1
  725. package/dist/views/List/ListSelection/index.d.ts.map +1 -1
  726. package/dist/views/List/ListSelection/index.js +84 -33
  727. package/dist/views/List/ListSelection/index.js.map +1 -1
  728. package/dist/views/List/handleGroupBy.d.ts.map +1 -1
  729. package/dist/views/List/handleGroupBy.js +9 -0
  730. package/dist/views/List/handleGroupBy.js.map +1 -1
  731. package/dist/views/List/index.client.d.ts.map +1 -1
  732. package/dist/views/List/index.client.js +10 -9
  733. package/dist/views/List/index.client.js.map +1 -1
  734. package/dist/views/List/index.css +15 -0
  735. package/dist/views/List/index.d.ts.map +1 -1
  736. package/dist/views/List/index.js +11 -4
  737. package/dist/views/List/index.js.map +1 -1
  738. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  739. package/dist/views/List/renderListViewSlots.js +11 -0
  740. package/dist/views/List/renderListViewSlots.js.map +1 -1
  741. package/dist/views/Logout/LogoutClient.d.ts +14 -0
  742. package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
  743. package/dist/views/Logout/LogoutClient.js +39 -33
  744. package/dist/views/Logout/LogoutClient.js.map +1 -1
  745. package/dist/views/Logout/index.d.ts.map +1 -1
  746. package/dist/views/Logout/index.js +7 -2
  747. package/dist/views/Logout/index.js.map +1 -1
  748. package/dist/views/Verify/index.client.d.ts +4 -0
  749. package/dist/views/Verify/index.client.d.ts.map +1 -1
  750. package/dist/views/Verify/index.client.js +81 -0
  751. package/dist/views/Verify/index.client.js.map +1 -1
  752. package/dist/views/Verify/index.css +38 -0
  753. package/dist/views/Verify/index.d.ts +1 -1
  754. package/dist/views/Verify/index.d.ts.map +1 -1
  755. package/dist/views/Verify/index.js +13 -19
  756. package/dist/views/Verify/index.js.map +1 -1
  757. package/dist/views/Version/Default/index.css +3 -5
  758. package/dist/views/Version/Default/index.d.ts.map +1 -1
  759. package/dist/views/Version/Default/index.js +7 -28
  760. package/dist/views/Version/Default/index.js.map +1 -1
  761. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +2 -2
  762. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  763. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
  764. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts.map +1 -1
  765. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +3 -3
  766. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
  767. package/dist/views/Version/Restore/index.css +2 -2
  768. package/dist/views/Version/SelectComparison/VersionDrawer/index.css +5 -0
  769. package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts +1 -1
  770. package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts.map +1 -1
  771. package/dist/views/Version/SelectComparison/VersionDrawer/index.js +1 -2
  772. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  773. package/dist/views/Version/SelectComparison/index.css +5 -0
  774. package/dist/views/Version/SelectComparison/index.d.ts +1 -1
  775. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  776. package/dist/views/Version/SelectComparison/index.js +1 -1
  777. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  778. package/dist/views/Version/SelectLocales/index.d.ts +1 -2
  779. package/dist/views/Version/SelectLocales/index.d.ts.map +1 -1
  780. package/dist/views/Version/SelectLocales/index.js +83 -32
  781. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  782. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  783. package/dist/views/Versions/index.css +19 -16
  784. package/dist/views/Versions/index.d.ts +1 -1
  785. package/dist/views/Versions/index.d.ts.map +1 -1
  786. package/dist/views/Versions/index.js +3 -26
  787. package/dist/views/Versions/index.js.map +1 -1
  788. package/package.json +5 -5
  789. package/dist/elements/BulkUpload/AddingFilesView/index.scss +0 -25
  790. package/dist/elements/BulkUpload/EditForm/index.scss +0 -11
  791. package/dist/elements/BulkUpload/EditMany/index.scss +0 -171
  792. package/dist/elements/BulkUpload/Header/index.d.ts +0 -9
  793. package/dist/elements/BulkUpload/Header/index.d.ts.map +0 -1
  794. package/dist/elements/BulkUpload/Header/index.js.map +0 -1
  795. package/dist/elements/ColumnSelector/index.d.ts +0 -9
  796. package/dist/elements/ColumnSelector/index.d.ts.map +0 -1
  797. package/dist/elements/ColumnSelector/index.js.map +0 -1
  798. package/dist/elements/ColumnsButton/index.d.ts +0 -7
  799. package/dist/elements/ColumnsButton/index.d.ts.map +0 -1
  800. package/dist/elements/ColumnsButton/index.js.map +0 -1
  801. package/dist/elements/EditMany/index.scss +0 -182
  802. package/dist/elements/FileDetails/DraggableFileDetails/index.scss +0 -35
  803. package/dist/elements/FileDetails/FileMeta/index.scss +0 -31
  804. package/dist/elements/FileDetails/StaticFileDetails/index.scss +0 -134
  805. package/dist/elements/GroupByBuilder/index.d.ts +0 -12
  806. package/dist/elements/GroupByBuilder/index.d.ts.map +0 -1
  807. package/dist/elements/GroupByBuilder/index.js +0 -164
  808. package/dist/elements/GroupByBuilder/index.js.map +0 -1
  809. package/dist/elements/GroupByBuilder/index.scss +0 -39
  810. package/dist/elements/GroupByControl/index.d.ts +0 -9
  811. package/dist/elements/GroupByControl/index.d.ts.map +0 -1
  812. package/dist/elements/GroupByControl/index.js +0 -255
  813. package/dist/elements/GroupByControl/index.js.map +0 -1
  814. package/dist/elements/Hierarchy/Field/SelectedHierarchies.scss +0 -78
  815. package/dist/elements/Hierarchy/Field/index.scss +0 -41
  816. package/dist/elements/Hierarchy/MoveMany/index.scss +0 -7
  817. package/dist/elements/Hierarchy/Tree/LoadMore/index.scss +0 -26
  818. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts +0 -7
  819. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts.map +0 -1
  820. package/dist/elements/Hierarchy/Tree/TreeConnector.js +0 -23
  821. package/dist/elements/Hierarchy/Tree/TreeConnector.js.map +0 -1
  822. package/dist/elements/LoadMoreRow/index.scss +0 -45
  823. package/dist/elements/PreviewSizes/index.scss +0 -147
  824. package/dist/elements/QueryPresets/fields/ColumnsField/index.scss +0 -17
  825. package/dist/elements/QueryPresets/fields/GroupByField/index.scss +0 -17
  826. package/dist/elements/QueryPresets/fields/WhereField/index.scss +0 -23
  827. package/dist/elements/Thumbnail/index.scss +0 -53
  828. package/dist/fields/Tabs/Tab/index.css +0 -82
  829. package/dist/icons/ExternalLink/index.d.ts.map +0 -1
  830. package/dist/icons/ExternalLink/index.js +0 -26
  831. package/dist/icons/ExternalLink/index.js.map +0 -1
  832. package/dist/scss/toasts.scss +0 -146
  833. package/dist/views/Unauthorized/index.scss +0 -14
  834. package/dist/views/Verify/index.scss +0 -18
  835. package/dist/views/Version/SelectComparison/VersionDrawer/index.scss +0 -18
  836. package/dist/views/Version/SelectComparison/index.scss +0 -9
  837. /package/dist/elements/{ColumnSelector/index.css → ColumnSelection/Popup.css} +0 -0
  838. /package/dist/elements/{GroupByControl/index.css → GroupBy/Popup.css} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","formatAdminURL","React","useEffect","useState","Account","LogOutIcon","useAuth","useConfig","useTranslation","MenuSeparator","Popup","PopupList","RenderCustomComponent","LanguageMenu","LanguageMenuContent","SettingsMenu","SettingsMenuContent","SubMenuHeader","ThemeMenu","ThemeMenuContent","baseClass","UserMenu","t0","$","CustomAvatar","settingsItemGroups","t1","undefined","user","languageOptions","t","config","t2","getEntityConfig","admin","t3","routes","t4","t5","theme","adminTheme","userSlug","account","accountRoute","logout","logoutRoute","adminRoute","breakpoints","t6","s","smallBreak","isMobile","Boolean","activeMobileSubmenu","setActiveMobileSubmenu","t7","t8","userCollectionConfig","collectionSlug","useAsTitle","titleValue","titleString","identifier","username","email","hasMultipleLanguages","Array","isArray","length","showThemeMenu","hasSettingsItems","some","_temp","showPreferencesGroup","logoutHref","path","accountHref","t9","Symbol","for","t10","t11","active","ariaProps","_jsx","className","filter","join","type","children","CustomComponent","Fallback","caret","horizontalAlign","onToggleClose","renderButton","verticalAlign","_jsxs","_Fragment","onBack","title","groups","href","ButtonGroup","onMobileOpen","MenuItem","Button","icon","group","items"],"sources":["../../../src/elements/UserMenu/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect, useState } from 'react'\n\nimport type { UserMenuSettingsGroup } from './SettingsMenu/index.js'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MenuSeparator } from '../MenuSeparator/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { LanguageMenu, LanguageMenuContent } from './LanguageMenu/index.js'\nimport { SettingsMenu, SettingsMenuContent } from './SettingsMenu/index.js'\nimport { SubMenuHeader } from './SubMenuHeader/index.js'\nimport { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js'\nimport './index.css'\n\nconst baseClass = 'user-menu'\n\ntype UserMenuProps = {\n CustomAvatar?: React.ReactNode\n settingsItemGroups?: UserMenuSettingsGroup[]\n}\n\nexport const UserMenu: React.FC<UserMenuProps> = ({ CustomAvatar, settingsItemGroups = [] }) => {\n const { user } = useAuth()\n const { languageOptions, t } = useTranslation()\n const {\n config: {\n admin: {\n routes: { account: accountRoute, logout: logoutRoute },\n theme: adminTheme,\n user: userSlug,\n },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const isMobile = Boolean(smallBreak)\n\n const [activeMobileSubmenu, setActiveMobileSubmenu] = useState<\n 'language' | 'settings' | 'theme' | null\n >(null)\n\n useEffect(() => {\n if (!isMobile) {\n setActiveMobileSubmenu(null)\n }\n }, [isMobile])\n\n const userCollectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const useAsTitle = userCollectionConfig?.admin?.useAsTitle ?? 'email'\n const titleValue =\n useAsTitle !== 'email' && user ? (user as Record<string, unknown>)[useAsTitle] : undefined\n const titleString = typeof titleValue === 'string' ? titleValue : undefined\n\n const identifier = user?.username ?? user?.email ?? ''\n const hasMultipleLanguages = Array.isArray(languageOptions) && languageOptions.length > 1\n const showThemeMenu = adminTheme === 'all'\n const hasSettingsItems = settingsItemGroups.some((group) => group.items.length > 0)\n const showPreferencesGroup = showThemeMenu || hasMultipleLanguages\n\n const logoutHref = formatAdminURL({ adminRoute, path: logoutRoute })\n const accountHref = formatAdminURL({ adminRoute, path: accountRoute })\n\n return (\n <Popup\n caret={false}\n className={baseClass}\n horizontalAlign=\"right\"\n onToggleClose={() => setActiveMobileSubmenu(null)}\n renderButton={({ active, ...ariaProps }) => (\n <button\n {...ariaProps}\n aria-label={t('authentication:account')}\n className={[`${baseClass}__trigger`, active && `${baseClass}__trigger--active`]\n .filter(Boolean)\n .join(' ')}\n type=\"button\"\n >\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </button>\n )}\n size=\"large\"\n theme=\"dark\"\n verticalAlign=\"bottom\"\n >\n {isMobile && activeMobileSubmenu ? (\n // Mobile submenu panel\n <>\n {activeMobileSubmenu === 'theme' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:theme')}\n />\n <ThemeMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'language' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:language')}\n />\n <LanguageMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'settings' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:settings')}\n />\n <SettingsMenuContent groups={settingsItemGroups} />\n </>\n )}\n </>\n ) : (\n // Normal menu content (desktop always; mobile when no active submenu)\n <>\n {/* Profile header */}\n <a className={`${baseClass}__profile`} href={accountHref}>\n <div className={`${baseClass}__avatar`}>\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </div>\n <div>\n {titleString && <p className={`${baseClass}__name`}>{titleString}</p>}\n {identifier && <p className={`${baseClass}__identifier`}>{identifier}</p>}\n </div>\n </a>\n\n {/* Preferences group: Theme + Language */}\n {showPreferencesGroup && (\n <PopupList.ButtonGroup>\n {showThemeMenu && (\n <ThemeMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('theme') : undefined}\n />\n )}\n {hasMultipleLanguages && (\n <LanguageMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('language') : undefined}\n />\n )}\n </PopupList.ButtonGroup>\n )}\n\n <MenuSeparator />\n\n {/* Settings group */}\n {hasSettingsItems && (\n <>\n <PopupList.ButtonGroup>\n <SettingsMenu\n groups={settingsItemGroups}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('settings') : undefined}\n />\n </PopupList.ButtonGroup>\n <MenuSeparator />\n </>\n )}\n\n {/* Account actions */}\n <PopupList.MenuItem>\n <PopupList.Button href={logoutHref} icon={<LogOutIcon />}>\n {t('authentication:logOut')}\n </PopupList.Button>\n </PopupList.MenuItem>\n </>\n )}\n </Popup>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -28,7 +28,7 @@
28
28
  text-transform: lowercase;
29
29
  }
30
30
 
31
- .condition__join .rs__menu {
31
+ .condition__join-menu {
32
32
  text-transform: lowercase;
33
33
  }
34
34
 
@@ -3,6 +3,7 @@ import type { AddCondition, ReducedField, RemoveCondition, UpdateCondition, Upda
3
3
  export type Props = {
4
4
  readonly addCondition: AddCondition;
5
5
  readonly andIndex: number;
6
+ readonly disableRemoveButton: boolean;
6
7
  readonly fieldPath: string;
7
8
  readonly filterOptions?: ResolvedFilterOptions;
8
9
  readonly isFirstCondition: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,UAAU,EACV,KAAK,EACN,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,qBAAqB,CAAA;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CACtB,CAAA;AAED,OAAO,KAAK,EAAE,QAAQ,EAA2B,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAcvF,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkLrC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAEvE,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,UAAU,EACV,KAAK,EACN,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,qBAAqB,CAAA;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CACtB,CAAA;AAED,OAAO,KAAK,EAAE,QAAQ,EAA2B,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAcvF,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuMrC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import React, { useCallback, useEffect, useState } from 'react';
4
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
5
5
  import { isFieldDisabled } from 'payload/shared';
6
6
  import { useDebounce } from '../../../hooks/useDebounce.js';
7
7
  import { useEffectEvent } from '../../../hooks/useEffectEvent.js';
@@ -16,6 +16,7 @@ const baseClass = 'condition';
16
16
  export const Condition = props => {
17
17
  const {
18
18
  andIndex,
19
+ disableRemoveButton,
19
20
  fieldPath,
20
21
  filterOptions,
21
22
  isFirstCondition,
@@ -35,6 +36,9 @@ export const Condition = props => {
35
36
  const reducedField = reducedFields.find(field => field.fieldPath === fieldPath);
36
37
  const [internalValue, setInternalValue] = useState(value);
37
38
  const debouncedValue = useDebounce(internalValue, 300);
39
+ // Tracks the last value this row reported upward, so the downward sync below can tell our own
40
+ // committed echo apart from a genuine external change (e.g. the row being cleared/reset).
41
+ const lastReportedValue = useRef(value);
38
42
  const booleanSelect = ['exists'].includes(operator) || reducedField?.field?.type === 'checkbox';
39
43
  let valueOptions = [];
40
44
  if (booleanSelect) {
@@ -50,19 +54,29 @@ export const Condition = props => {
50
54
  }
51
55
  const updateValue = useEffectEvent(async debouncedValue_0 => {
52
56
  if (operator) {
57
+ const normalizedValue = debouncedValue_0 === null || debouncedValue_0 === '' ? undefined : debouncedValue_0;
58
+ lastReportedValue.current = normalizedValue;
53
59
  await updateCondition({
54
60
  type: 'value',
55
61
  andIndex,
56
62
  field: reducedField,
57
63
  operator,
58
64
  orIndex,
59
- value: debouncedValue_0 === null || debouncedValue_0 === '' ? undefined : debouncedValue_0
65
+ value: normalizedValue
60
66
  });
61
67
  }
62
68
  });
63
69
  useEffect(() => {
64
70
  void updateValue(debouncedValue);
65
71
  }, [debouncedValue]);
72
+ // Sync external value changes (e.g. the row being cleared or reset to a placeholder) down into
73
+ // local state, but skip our own committed echo so this never clobbers in-progress typing.
74
+ useEffect(() => {
75
+ if (value !== lastReportedValue.current) {
76
+ lastReportedValue.current = value;
77
+ setInternalValue(value);
78
+ }
79
+ }, [value]);
66
80
  const disabled = !reducedField?.fieldPath || isFieldDisabled(reducedField?.field, 'filter');
67
81
  const handleFieldChange = useCallback(async field_0 => {
68
82
  setInternalValue(undefined);
@@ -103,6 +117,9 @@ export const Condition = props => {
103
117
  className: `${baseClass}__join-label`,
104
118
  children: t('general:where')
105
119
  }) : /*#__PURE__*/_jsx(ReactSelect, {
120
+ classNames: {
121
+ menu: () => 'condition__join-menu'
122
+ },
106
123
  isClearable: false,
107
124
  onChange: option_0 => updateJoin({
108
125
  andIndex,
@@ -166,6 +183,7 @@ export const Condition = props => {
166
183
  children: /*#__PURE__*/_jsx(Button, {
167
184
  buttonStyle: "ghost",
168
185
  className: `${baseClass}__actions-remove`,
186
+ disabled: disableRemoveButton,
169
187
  icon: /*#__PURE__*/_jsx(LineIcon, {
170
188
  size: 24
171
189
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useState","isFieldDisabled","useDebounce","useEffectEvent","LineIcon","useTranslation","Button","ReactSelect","DefaultFilter","getOperatorValueTypes","baseClass","Condition","props","andIndex","fieldPath","filterOptions","isFirstCondition","join","operator","orIndex","reducedFields","removeCondition","RenderedFilter","updateCondition","updateJoin","value","t","reducedField","find","field","internalValue","setInternalValue","debouncedValue","booleanSelect","includes","type","valueOptions","label","options","updateValue","undefined","disabled","handleFieldChange","option","handleOperatorChange","operatorValueTypes","validOperatorValue","isValidValue","_jsx","className","_jsxs","isClearable","onChange","filterOption","inputValue","data","plainTextLabel","toLowerCase","filter","map","f","operators","o","internalField","buttonStyle","icon","size","onClick"],"sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type {\n AddCondition,\n ReducedField,\n RemoveCondition,\n UpdateCondition,\n UpdateJoin,\n Value,\n} from '../types.js'\n\nexport type Props = {\n readonly addCondition: AddCondition\n readonly andIndex: number\n readonly fieldPath: string\n readonly filterOptions?: ResolvedFilterOptions\n readonly isFirstCondition: boolean\n readonly join: 'and' | 'or'\n readonly operator: Operator\n readonly orIndex: number\n readonly reducedFields: ReducedField[]\n readonly removeCondition: RemoveCondition\n readonly RenderedFilter?: React.ReactNode\n readonly updateCondition: UpdateCondition\n readonly updateJoin: UpdateJoin\n readonly value: Value\n}\n\nimport type { Operator, Option as PayloadOption, ResolvedFilterOptions } from 'payload'\n\nimport { isFieldDisabled } from 'payload/shared'\n\nimport type { Option } from '../../ReactSelect/index.js'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { LineIcon } from '../../../icons/Line/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport { DefaultFilter } from './DefaultFilter/index.js'\nimport { getOperatorValueTypes } from './validOperators.js'\nimport './index.css'\n\nconst baseClass = 'condition'\n\nexport const Condition: React.FC<Props> = (props) => {\n const {\n andIndex,\n fieldPath,\n filterOptions,\n isFirstCondition,\n join,\n operator,\n orIndex,\n reducedFields,\n removeCondition,\n RenderedFilter,\n updateCondition,\n updateJoin,\n value,\n } = props\n\n const { t } = useTranslation()\n\n const reducedField = reducedFields.find((field) => field.fieldPath === fieldPath)\n\n const [internalValue, setInternalValue] = useState<Value>(value)\n\n const debouncedValue = useDebounce(internalValue, 300)\n\n const booleanSelect = ['exists'].includes(operator) || reducedField?.field?.type === 'checkbox'\n\n let valueOptions: PayloadOption[] = []\n\n if (booleanSelect) {\n valueOptions = [\n { label: t('general:true'), value: 'true' },\n { label: t('general:false'), value: 'false' },\n ]\n } else if (reducedField?.field && 'options' in reducedField.field) {\n valueOptions = reducedField.field.options\n }\n\n const updateValue = useEffectEvent(async (debouncedValue: Value) => {\n if (operator) {\n await updateCondition({\n type: 'value',\n andIndex,\n field: reducedField,\n operator,\n orIndex,\n value: debouncedValue === null || debouncedValue === '' ? undefined : debouncedValue,\n })\n }\n })\n\n useEffect(() => {\n void updateValue(debouncedValue)\n }, [debouncedValue])\n\n const disabled = !reducedField?.fieldPath || isFieldDisabled(reducedField?.field, 'filter')\n\n const handleFieldChange = useCallback(\n async (field: Option<string>) => {\n setInternalValue(undefined)\n await updateCondition({\n type: 'field',\n andIndex,\n field: reducedFields.find((option) => option.fieldPath === field.value),\n operator,\n orIndex,\n value: undefined,\n })\n },\n [andIndex, operator, orIndex, reducedFields, updateCondition],\n )\n\n const handleOperatorChange = useCallback(\n async (operator: Option<Operator>) => {\n const operatorValueTypes = getOperatorValueTypes(reducedField.field.type)\n const validOperatorValue = operatorValueTypes[operator.value] || 'any'\n const isValidValue =\n validOperatorValue === 'any' ||\n typeof value === validOperatorValue ||\n (validOperatorValue === 'boolean' && (value === 'true' || value === 'false'))\n\n if (!isValidValue) {\n // if the current value is not valid for the new operator\n // reset the value before passing it to updateCondition\n setInternalValue(undefined)\n }\n\n await updateCondition({\n type: 'operator',\n andIndex,\n field: reducedField,\n operator: operator.value,\n orIndex,\n value: isValidValue ? value : undefined,\n })\n },\n [andIndex, reducedField, orIndex, updateCondition, value],\n )\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__join`}>\n {isFirstCondition ? (\n <span className={`${baseClass}__join-label`}>{t('general:where')}</span>\n ) : (\n <ReactSelect\n isClearable={false}\n onChange={(option: Option<'and' | 'or'>) =>\n updateJoin({ andIndex, join: option.value, orIndex })\n }\n options={[\n { label: t('general:and'), value: 'and' },\n { label: t('general:or'), value: 'or' },\n ]}\n value={{ label: join === 'and' ? t('general:and') : t('general:or'), value: join }}\n />\n )}\n </div>\n <div className={`${baseClass}__inputs`}>\n <div className={`${baseClass}__field`}>\n <ReactSelect\n disabled={disabled}\n filterOption={(option, inputValue) =>\n ((option?.data?.plainTextLabel as string) || option.label)\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n }\n isClearable={false}\n onChange={handleFieldChange}\n options={reducedFields\n .filter((field) => !isFieldDisabled(field.field, 'filter'))\n .map((f) => ({ ...f, value: f.fieldPath }))}\n value={reducedField ? { ...reducedField, value: reducedField.fieldPath } : undefined}\n />\n </div>\n <div className={`${baseClass}__operator`}>\n <ReactSelect\n disabled={disabled}\n isClearable={false}\n onChange={handleOperatorChange}\n options={reducedField?.operators}\n value={reducedField?.operators.find((o) => operator === o.value) || null}\n />\n </div>\n <div className={`${baseClass}__value`}>\n {RenderedFilter || (\n <DefaultFilter\n booleanSelect={booleanSelect}\n disabled={\n !operator || !reducedField || isFieldDisabled(reducedField?.field, 'filter')\n }\n filterOptions={filterOptions}\n internalField={reducedField}\n onChange={setInternalValue}\n operator={operator}\n options={valueOptions}\n value={internalValue ?? ''}\n />\n )}\n </div>\n </div>\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__actions-remove`}\n icon={<LineIcon size={24} />}\n onClick={() =>\n removeCondition({\n andIndex,\n orIndex,\n })\n }\n />\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useRef","useState","isFieldDisabled","useDebounce","useEffectEvent","LineIcon","useTranslation","Button","ReactSelect","DefaultFilter","getOperatorValueTypes","baseClass","Condition","props","andIndex","disableRemoveButton","fieldPath","filterOptions","isFirstCondition","join","operator","orIndex","reducedFields","removeCondition","RenderedFilter","updateCondition","updateJoin","value","t","reducedField","find","field","internalValue","setInternalValue","debouncedValue","lastReportedValue","booleanSelect","includes","type","valueOptions","label","options","updateValue","normalizedValue","undefined","current","disabled","handleFieldChange","option","handleOperatorChange","operatorValueTypes","validOperatorValue","isValidValue","_jsx","className","_jsxs","classNames","menu","isClearable","onChange","filterOption","inputValue","data","plainTextLabel","toLowerCase","filter","map","f","operators","o","internalField","buttonStyle","icon","size","onClick"],"sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type {\n AddCondition,\n ReducedField,\n RemoveCondition,\n UpdateCondition,\n UpdateJoin,\n Value,\n} from '../types.js'\n\nexport type Props = {\n readonly addCondition: AddCondition\n readonly andIndex: number\n readonly disableRemoveButton: boolean\n readonly fieldPath: string\n readonly filterOptions?: ResolvedFilterOptions\n readonly isFirstCondition: boolean\n readonly join: 'and' | 'or'\n readonly operator: Operator\n readonly orIndex: number\n readonly reducedFields: ReducedField[]\n readonly removeCondition: RemoveCondition\n readonly RenderedFilter?: React.ReactNode\n readonly updateCondition: UpdateCondition\n readonly updateJoin: UpdateJoin\n readonly value: Value\n}\n\nimport type { Operator, Option as PayloadOption, ResolvedFilterOptions } from 'payload'\n\nimport { isFieldDisabled } from 'payload/shared'\n\nimport type { Option } from '../../ReactSelect/index.js'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { LineIcon } from '../../../icons/Line/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport { DefaultFilter } from './DefaultFilter/index.js'\nimport { getOperatorValueTypes } from './validOperators.js'\nimport './index.css'\n\nconst baseClass = 'condition'\n\nexport const Condition: React.FC<Props> = (props) => {\n const {\n andIndex,\n disableRemoveButton,\n fieldPath,\n filterOptions,\n isFirstCondition,\n join,\n operator,\n orIndex,\n reducedFields,\n removeCondition,\n RenderedFilter,\n updateCondition,\n updateJoin,\n value,\n } = props\n\n const { t } = useTranslation()\n\n const reducedField = reducedFields.find((field) => field.fieldPath === fieldPath)\n\n const [internalValue, setInternalValue] = useState<Value>(value)\n\n const debouncedValue = useDebounce(internalValue, 300)\n\n // Tracks the last value this row reported upward, so the downward sync below can tell our own\n // committed echo apart from a genuine external change (e.g. the row being cleared/reset).\n const lastReportedValue = useRef<Value>(value)\n\n const booleanSelect = ['exists'].includes(operator) || reducedField?.field?.type === 'checkbox'\n\n let valueOptions: PayloadOption[] = []\n\n if (booleanSelect) {\n valueOptions = [\n { label: t('general:true'), value: 'true' },\n { label: t('general:false'), value: 'false' },\n ]\n } else if (reducedField?.field && 'options' in reducedField.field) {\n valueOptions = reducedField.field.options\n }\n\n const updateValue = useEffectEvent(async (debouncedValue: Value) => {\n if (operator) {\n const normalizedValue =\n debouncedValue === null || debouncedValue === '' ? undefined : debouncedValue\n lastReportedValue.current = normalizedValue\n await updateCondition({\n type: 'value',\n andIndex,\n field: reducedField,\n operator,\n orIndex,\n value: normalizedValue,\n })\n }\n })\n\n useEffect(() => {\n void updateValue(debouncedValue)\n }, [debouncedValue])\n\n // Sync external value changes (e.g. the row being cleared or reset to a placeholder) down into\n // local state, but skip our own committed echo so this never clobbers in-progress typing.\n useEffect(() => {\n if (value !== lastReportedValue.current) {\n lastReportedValue.current = value\n setInternalValue(value)\n }\n }, [value])\n\n const disabled = !reducedField?.fieldPath || isFieldDisabled(reducedField?.field, 'filter')\n\n const handleFieldChange = useCallback(\n async (field: Option<string>) => {\n setInternalValue(undefined)\n await updateCondition({\n type: 'field',\n andIndex,\n field: reducedFields.find((option) => option.fieldPath === field.value),\n operator,\n orIndex,\n value: undefined,\n })\n },\n [andIndex, operator, orIndex, reducedFields, updateCondition],\n )\n\n const handleOperatorChange = useCallback(\n async (operator: Option<Operator>) => {\n const operatorValueTypes = getOperatorValueTypes(reducedField.field.type)\n const validOperatorValue = operatorValueTypes[operator.value] || 'any'\n const isValidValue =\n validOperatorValue === 'any' ||\n typeof value === validOperatorValue ||\n (validOperatorValue === 'boolean' && (value === 'true' || value === 'false'))\n\n if (!isValidValue) {\n // if the current value is not valid for the new operator\n // reset the value before passing it to updateCondition\n setInternalValue(undefined)\n }\n\n await updateCondition({\n type: 'operator',\n andIndex,\n field: reducedField,\n operator: operator.value,\n orIndex,\n value: isValidValue ? value : undefined,\n })\n },\n [andIndex, reducedField, orIndex, updateCondition, value],\n )\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__join`}>\n {isFirstCondition ? (\n <span className={`${baseClass}__join-label`}>{t('general:where')}</span>\n ) : (\n <ReactSelect\n classNames={{\n menu: () => 'condition__join-menu',\n }}\n isClearable={false}\n onChange={(option: Option<'and' | 'or'>) =>\n updateJoin({ andIndex, join: option.value, orIndex })\n }\n options={[\n { label: t('general:and'), value: 'and' },\n { label: t('general:or'), value: 'or' },\n ]}\n value={{ label: join === 'and' ? t('general:and') : t('general:or'), value: join }}\n />\n )}\n </div>\n <div className={`${baseClass}__inputs`}>\n <div className={`${baseClass}__field`}>\n <ReactSelect\n disabled={disabled}\n filterOption={(option, inputValue) =>\n ((option?.data?.plainTextLabel as string) || option.label)\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n }\n isClearable={false}\n onChange={handleFieldChange}\n options={reducedFields\n .filter((field) => !isFieldDisabled(field.field, 'filter'))\n .map((f) => ({ ...f, value: f.fieldPath }))}\n value={reducedField ? { ...reducedField, value: reducedField.fieldPath } : undefined}\n />\n </div>\n <div className={`${baseClass}__operator`}>\n <ReactSelect\n disabled={disabled}\n isClearable={false}\n onChange={handleOperatorChange}\n options={reducedField?.operators}\n value={reducedField?.operators.find((o) => operator === o.value) || null}\n />\n </div>\n <div className={`${baseClass}__value`}>\n {RenderedFilter || (\n <DefaultFilter\n booleanSelect={booleanSelect}\n disabled={\n !operator || !reducedField || isFieldDisabled(reducedField?.field, 'filter')\n }\n filterOptions={filterOptions}\n internalField={reducedField}\n onChange={setInternalValue}\n operator={operator}\n options={valueOptions}\n value={internalValue ?? ''}\n />\n )}\n </div>\n </div>\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__actions-remove`}\n disabled={disableRemoveButton}\n icon={<LineIcon size={24} />}\n onClick={() =>\n removeCondition({\n andIndex,\n orIndex,\n })\n }\n />\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,9 +3,10 @@ import type { WhereBuilderProps } from './types.js';
3
3
  import './index.css';
4
4
  export { WhereBuilderProps };
5
5
  /**
6
- * The WhereBuilder component is used to render the filter controls for a collection's list view
7
- * or in a form (e.g. Query Presets). When `value` and `onChange` are provided, it is controlled
8
- * by the form; otherwise it uses list query state from {@link useListQuery}.
6
+ * Presentational filter builder. It renders the conditions described by `value` and
7
+ * reports edits through `onChange`. It is unaware of where its value is stored the
8
+ * list view wires it to list query state via {@link ListWhereBuilder}, and the Query
9
+ * Presets drawer wires it to form state.
9
10
  */
10
11
  export declare const WhereBuilder: React.FC<WhereBuilderProps>;
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAKV,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAUnB,OAAO,aAAa,CAAA;AAKpB,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAwRpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAKV,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAQnB,OAAO,aAAa,CAAA;AAKpB,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAsRpD,CAAA"}
@@ -6,8 +6,6 @@ import { isFieldDisabled, transformWhereQuery, validateWhereQuery } from 'payloa
6
6
  import React, { useMemo } from 'react';
7
7
  import { CirclePlusIcon } from '../../icons/CirclePlus/index.js';
8
8
  import { useAuth } from '../../providers/Auth/index.js';
9
- import { useConfig } from '../../providers/Config/index.js';
10
- import { useListQuery } from '../../providers/ListQuery/index.js';
11
9
  import { useTranslation } from '../../providers/Translation/index.js';
12
10
  import { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js';
13
11
  import { Button } from '../Button/index.js';
@@ -16,19 +14,20 @@ import './index.css';
16
14
  import { fieldTypeConditions, getValidFieldOperators } from './field-types.js';
17
15
  const baseClass = 'where-builder';
18
16
  /**
19
- * The WhereBuilder component is used to render the filter controls for a collection's list view
20
- * or in a form (e.g. Query Presets). When `value` and `onChange` are provided, it is controlled
21
- * by the form; otherwise it uses list query state from {@link useListQuery}.
17
+ * Presentational filter builder. It renders the conditions described by `value` and
18
+ * reports edits through `onChange`. It is unaware of where its value is stored the
19
+ * list view wires it to list query state via {@link ListWhereBuilder}, and the Query
20
+ * Presets drawer wires it to form state.
22
21
  */
23
22
  export const WhereBuilder = props => {
24
23
  const {
25
24
  collectionSlug,
26
- fields: fieldsProp,
27
- onChange,
28
- onClose,
25
+ fields,
26
+ onChange: handleWhereChange,
27
+ onEmptyRemove,
29
28
  renderedFilters = undefined,
30
29
  resolvedFilterOptions = undefined,
31
- value: valueProp
30
+ value
32
31
  } = props;
33
32
  const {
34
33
  i18n,
@@ -37,15 +36,6 @@ export const WhereBuilder = props => {
37
36
  const {
38
37
  permissions
39
38
  } = useAuth();
40
- const {
41
- getEntityConfig
42
- } = useConfig();
43
- const listQuery = useListQuery();
44
- const isFormMode = typeof onChange === 'function';
45
- const collectionConfig = useMemo(() => isFormMode ? getEntityConfig({
46
- collectionSlug
47
- }) : null, [isFormMode, collectionSlug, getEntityConfig]);
48
- const fields = isFormMode ? collectionConfig?.fields : fieldsProp;
49
39
  const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields;
50
40
  const reducedFields = useMemo(() => reduceFieldsToOptions({
51
41
  fieldPermissions,
@@ -54,31 +44,24 @@ export const WhereBuilder = props => {
54
44
  }), [fieldPermissions, fields, i18n]);
55
45
  const firstField = useMemo(() => reducedFields.find(f => !isFieldDisabled(f.field, 'filter')), [reducedFields]);
56
46
  const conditions = useMemo(() => {
57
- const whereFromSearch = isFormMode ? valueProp : listQuery.query?.where;
58
- if (whereFromSearch) {
59
- if (validateWhereQuery(whereFromSearch)) {
60
- return whereFromSearch.or ?? [];
47
+ if (value) {
48
+ if (validateWhereQuery(value)) {
49
+ return value.or ?? [];
61
50
  }
62
- const transformedWhere = transformWhereQuery(whereFromSearch);
51
+ const transformedWhere = transformWhereQuery(value);
63
52
  if (validateWhereQuery(transformedWhere)) {
64
53
  return transformedWhere.or ?? [];
65
54
  }
66
- if (!isFormMode) {
67
- console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`); // eslint-disable-line no-console
68
- }
69
55
  }
70
56
  return [];
71
- }, [isFormMode, valueProp, listQuery.query?.where]);
72
- const handleWhereChange = useMemo(() => isFormMode ? where => {
73
- onChange?.(where);
74
- } : listQuery.handleWhereChange, [isFormMode, onChange, listQuery.handleWhereChange]);
75
- const addCondition = React.useCallback(async ({
57
+ }, [value]);
58
+ const addCondition = React.useCallback(({
76
59
  andIndex,
77
60
  field,
78
61
  orIndex,
79
62
  relation
80
63
  }) => {
81
- const newConditions = [...conditions];
64
+ const newConditions = structuredClone(conditions);
82
65
  const defaultOperator = fieldTypeConditions[field.field.type].operators[0].value;
83
66
  if (relation === 'and') {
84
67
  newConditions[orIndex].and.splice(andIndex, 0, {
@@ -95,30 +78,36 @@ export const WhereBuilder = props => {
95
78
  }]
96
79
  });
97
80
  }
98
- await handleWhereChange({
81
+ void handleWhereChange({
99
82
  or: newConditions
100
83
  });
101
84
  }, [conditions, handleWhereChange]);
102
- const updateCondition = React.useCallback(async ({
85
+ const updateCondition = React.useCallback(({
86
+ type,
103
87
  andIndex: andIndex_0,
104
88
  field: field_0,
105
89
  operator: incomingOperator,
106
90
  orIndex: orIndex_0,
107
- value
91
+ value: value_0
108
92
  }) => {
109
93
  // Virtual first row: conditions not yet committed, build from scratch
110
94
  if (conditions.length === 0) {
95
+ // Ignore empty value edits so a cleared row doesn't re-commit itself. Field and
96
+ // operator picks carry empty values too, but must fall through to build the row.
97
+ if (type === 'value' && (value_0 === undefined || value_0 === null || value_0 === '')) {
98
+ return;
99
+ }
111
100
  const {
112
101
  validOperator
113
102
  } = getValidFieldOperators({
114
103
  field: field_0.field,
115
104
  operator: incomingOperator
116
105
  });
117
- await handleWhereChange({
106
+ void handleWhereChange({
118
107
  or: [{
119
108
  and: [{
120
109
  [String(field_0.fieldPath)]: {
121
- [validOperator]: value
110
+ [validOperator]: value_0
122
111
  }
123
112
  }]
124
113
  }]
@@ -135,47 +124,47 @@ export const WhereBuilder = props => {
135
124
  });
136
125
  // Skip if nothing changed
137
126
  const existingValue = existingCondition[String(field_0.fieldPath)]?.[validOperator_0];
138
- if (typeof existingValue !== 'undefined' && existingValue === value) {
127
+ if (typeof existingValue !== 'undefined' && existingValue === value_0) {
139
128
  return;
140
129
  }
141
130
  const newRowCondition = {
142
131
  [String(field_0.fieldPath)]: {
143
- [validOperator_0]: value
132
+ [validOperator_0]: value_0
144
133
  }
145
134
  };
146
135
  if (dequal(existingCondition, newRowCondition)) {
147
136
  return;
148
137
  }
149
- const newConditions_0 = [...conditions];
138
+ const newConditions_0 = structuredClone(conditions);
150
139
  newConditions_0[orIndex_0].and[andIndex_0] = newRowCondition;
151
- await handleWhereChange({
140
+ void handleWhereChange({
152
141
  or: newConditions_0
153
142
  });
154
143
  }
155
144
  }, [conditions, handleWhereChange]);
156
- const removeCondition = React.useCallback(async ({
145
+ const removeCondition = React.useCallback(({
157
146
  andIndex: andIndex_1,
158
147
  orIndex: orIndex_1
159
148
  }) => {
160
149
  // Virtual first row: removing it just closes the panel
161
150
  if (conditions.length === 0) {
162
- onClose?.();
151
+ onEmptyRemove?.();
163
152
  return;
164
153
  }
165
- const newConditions_1 = [...conditions];
154
+ const newConditions_1 = structuredClone(conditions);
166
155
  newConditions_1[orIndex_1].and.splice(andIndex_1, 1);
167
156
  if (newConditions_1[orIndex_1].and.length === 0) {
168
157
  newConditions_1.splice(orIndex_1, 1);
169
158
  }
170
- await handleWhereChange({
159
+ void handleWhereChange({
171
160
  or: newConditions_1
172
161
  });
173
162
  // Removing the last remaining condition closes the filters panel.
174
163
  if (newConditions_1.length === 0) {
175
- onClose?.();
164
+ onEmptyRemove?.();
176
165
  }
177
- }, [conditions, handleWhereChange, onClose]);
178
- const updateJoin = React.useCallback(async ({
166
+ }, [conditions, handleWhereChange, onEmptyRemove]);
167
+ const updateJoin = React.useCallback(({
179
168
  andIndex: andIndex_2,
180
169
  join,
181
170
  orIndex: orIndex_2
@@ -207,29 +196,48 @@ export const WhereBuilder = props => {
207
196
  newConditions_2[newConditions_2.length - 1].and.push(cond_0);
208
197
  }
209
198
  });
210
- await handleWhereChange({
199
+ void handleWhereChange({
211
200
  or: newConditions_2
212
201
  });
213
202
  }, [conditions, handleWhereChange]);
214
- const addFirstFilter = React.useCallback(async () => {
215
- if (firstField) {
216
- await addCondition({
217
- andIndex: 0,
218
- field: firstField,
219
- orIndex: conditions.length,
220
- relation: 'or'
203
+ const addFirstFilter = React.useCallback(() => {
204
+ if (!firstField) {
205
+ return;
206
+ }
207
+ // With no committed conditions, only the virtual placeholder row is shown. Commit it
208
+ // and append a new row so a second row appears on the first click.
209
+ if (conditions.length === 0) {
210
+ const defaultOperator_0 = firstField.operators[0].value;
211
+ const makeRow = () => ({
212
+ and: [{
213
+ [String(firstField.fieldPath)]: {
214
+ [defaultOperator_0]: undefined
215
+ }
216
+ }]
221
217
  });
218
+ void handleWhereChange({
219
+ or: [makeRow(), makeRow()]
220
+ });
221
+ return;
222
222
  }
223
- }, [addCondition, conditions.length, firstField]);
224
- // When conditions is empty in list mode, show a virtual first row immediately
225
- // (derived from the first available field) so the panel never opens blank.
226
- const displayConditions = !isFormMode && conditions.length === 0 && firstField ? [{
223
+ void addCondition({
224
+ andIndex: 0,
225
+ field: firstField,
226
+ orIndex: conditions.length,
227
+ relation: 'or'
228
+ });
229
+ }, [addCondition, conditions.length, firstField, handleWhereChange]);
230
+ // When conditions is empty, show a virtual first row so the panel never opens blank.
231
+ const displayConditions = conditions.length === 0 && firstField ? [{
227
232
  and: [{
228
233
  [firstField.fieldPath]: {
229
234
  [firstField.operators[0].value]: undefined
230
235
  }
231
236
  }]
232
237
  }] : conditions;
238
+ // Disable the remove button only when there are no committed conditions and this host
239
+ // doesn't provide an empty-state removal handler.
240
+ const disableRemoveButton = conditions.length === 0 && !onEmptyRemove;
233
241
  return /*#__PURE__*/_jsx("div", {
234
242
  className: baseClass,
235
243
  children: /*#__PURE__*/_jsxs("div", {
@@ -242,12 +250,13 @@ export const WhereBuilder = props => {
242
250
  const condition = displayConditions[orIndex_3].and[andIndex_3];
243
251
  const fieldPath = Object.keys(condition)[0];
244
252
  const operator = Object.keys(condition?.[fieldPath] || {})?.[0] || undefined;
245
- const value_0 = condition?.[fieldPath]?.[operator] || undefined;
253
+ const value_1 = condition?.[fieldPath]?.[operator] || undefined;
246
254
  const isFirstCondition = orIndex_3 === 0 && andIndex_3 === 0;
247
255
  const join_0 = andIndex_3 === 0 ? 'or' : 'and';
248
256
  return /*#__PURE__*/_jsx(Condition, {
249
257
  addCondition: addCondition,
250
258
  andIndex: andIndex_3,
259
+ disableRemoveButton: disableRemoveButton,
251
260
  fieldPath: fieldPath,
252
261
  filterOptions: resolvedFilterOptions?.get(fieldPath),
253
262
  isFirstCondition: isFirstCondition,
@@ -259,7 +268,7 @@ export const WhereBuilder = props => {
259
268
  RenderedFilter: renderedFilters?.get(fieldPath),
260
269
  updateCondition: updateCondition,
261
270
  updateJoin: updateJoin,
262
- value: value_0
271
+ value: value_1
263
272
  }, andIndex_3);
264
273
  })
265
274
  }, compoundOrKey);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dequal","isFieldDisabled","transformWhereQuery","validateWhereQuery","React","useMemo","CirclePlusIcon","useAuth","useConfig","useListQuery","useTranslation","reduceFieldsToOptions","Button","Condition","fieldTypeConditions","getValidFieldOperators","baseClass","WhereBuilder","props","collectionSlug","fields","fieldsProp","onChange","onClose","renderedFilters","undefined","resolvedFilterOptions","value","valueProp","i18n","t","permissions","getEntityConfig","listQuery","isFormMode","collectionConfig","fieldPermissions","collections","reducedFields","firstField","find","f","field","conditions","whereFromSearch","query","where","or","transformedWhere","console","warn","JSON","stringify","handleWhereChange","addCondition","useCallback","andIndex","orIndex","relation","newConditions","defaultOperator","type","operators","and","splice","String","fieldPath","push","updateCondition","operator","incomingOperator","length","validOperator","existingCondition","existingValue","newRowCondition","removeCondition","updateJoin","join","flattened","forEach","orGroup","oIdx","cond","aIdx","isTarget","currentJoin","itemJoin","index","addFirstFilter","displayConditions","_jsx","className","_jsxs","map","compoundOrKey","Array","isArray","_","condition","Object","keys","isFirstCondition","filterOptions","get","RenderedFilter","buttonStyle","icon","size","iconPosition","onClick"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { isFieldDisabled, transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport type {\n AddCondition,\n RemoveCondition,\n UpdateCondition,\n UpdateJoin,\n WhereBuilderProps,\n} from './types.js'\n\nimport { CirclePlusIcon } from '../../icons/CirclePlus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/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 { Condition } from './Condition/index.js'\nimport './index.css'\nimport { fieldTypeConditions, getValidFieldOperators } from './field-types.js'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view\n * or in a form (e.g. Query Presets). When `value` and `onChange` are provided, it is controlled\n * by the form; otherwise it uses list query state from {@link useListQuery}.\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const {\n collectionSlug,\n fields: fieldsProp,\n onChange,\n onClose,\n renderedFilters = undefined,\n resolvedFilterOptions = undefined,\n value: valueProp,\n } = props\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { getEntityConfig } = useConfig()\n const listQuery = useListQuery()\n\n const isFormMode = typeof onChange === 'function'\n\n const collectionConfig = useMemo(\n () => (isFormMode ? getEntityConfig({ collectionSlug }) : null),\n [isFormMode, collectionSlug, getEntityConfig],\n )\n const fields = isFormMode ? collectionConfig?.fields : fieldsProp\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields: fields ?? [],\n i18n,\n }),\n [fieldPermissions, fields, i18n],\n )\n\n const firstField = useMemo(\n () => reducedFields.find((f) => !isFieldDisabled(f.field, 'filter')),\n [reducedFields],\n )\n\n const conditions = useMemo(() => {\n const whereFromSearch = isFormMode ? valueProp : listQuery.query?.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or ?? []\n }\n\n const transformedWhere = transformWhereQuery(whereFromSearch)\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or ?? []\n }\n\n if (!isFormMode) {\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n }\n\n return []\n }, [isFormMode, valueProp, listQuery.query?.where])\n\n const handleWhereChange = useMemo(\n () =>\n isFormMode\n ? (where: { or: typeof conditions }) => {\n onChange?.(where)\n }\n : listQuery.handleWhereChange,\n [isFormMode, onChange, listQuery.handleWhereChange],\n )\n\n const addCondition: AddCondition = React.useCallback(\n async ({ andIndex, field, orIndex, relation }) => {\n const newConditions = [...conditions]\n\n const defaultOperator = fieldTypeConditions[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [String(field.fieldPath)]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [String(field.fieldPath)]: {\n [defaultOperator]: undefined,\n },\n },\n ],\n })\n }\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const updateCondition: UpdateCondition = React.useCallback(\n async ({ andIndex, field, operator: incomingOperator, orIndex, value }) => {\n // Virtual first row: conditions not yet committed, build from scratch\n if (conditions.length === 0) {\n const { validOperator } = getValidFieldOperators({\n field: field.field,\n operator: incomingOperator,\n })\n await handleWhereChange({\n or: [{ and: [{ [String(field.fieldPath)]: { [validOperator]: value } }] }],\n })\n return\n }\n\n const existingCondition = conditions[orIndex].and[andIndex]\n\n if (typeof existingCondition === 'object' && field?.fieldPath) {\n const { validOperator } = getValidFieldOperators({\n field: field.field,\n operator: incomingOperator,\n })\n\n // Skip if nothing changed\n const existingValue = existingCondition[String(field.fieldPath)]?.[validOperator]\n if (typeof existingValue !== 'undefined' && existingValue === value) {\n return\n }\n\n const newRowCondition = {\n [String(field.fieldPath)]: { [validOperator]: value },\n }\n\n if (dequal(existingCondition, newRowCondition)) {\n return\n }\n\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n\n await handleWhereChange({ or: newConditions })\n }\n },\n [conditions, handleWhereChange],\n )\n\n const removeCondition: RemoveCondition = React.useCallback(\n async ({ andIndex, orIndex }) => {\n // Virtual first row: removing it just closes the panel\n if (conditions.length === 0) {\n onClose?.()\n return\n }\n\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n\n await handleWhereChange({ or: newConditions })\n\n // Removing the last remaining condition closes the filters panel.\n if (newConditions.length === 0) {\n onClose?.()\n }\n },\n [conditions, handleWhereChange, onClose],\n )\n\n const updateJoin: UpdateJoin = React.useCallback(\n async ({ andIndex, join, orIndex }) => {\n // Flatten the nested or/and structure into a single ordered list, tracking\n // the join relation that connects each condition to the previous one.\n const flattened: { cond: (typeof conditions)[number]['and'][number]; join: 'and' | 'or' }[] =\n []\n\n conditions.forEach((orGroup, oIdx) => {\n orGroup.and.forEach((cond, aIdx) => {\n const isTarget = oIdx === orIndex && aIdx === andIndex\n const currentJoin = flattened.length === 0 ? null : aIdx === 0 ? 'or' : 'and'\n\n flattened.push({ cond, join: isTarget ? join : currentJoin })\n })\n })\n\n // Rebuild the or/and structure from the flattened list using the join relations.\n const newConditions: typeof conditions = []\n\n flattened.forEach(({ cond, join: itemJoin }, index) => {\n if (index === 0 || itemJoin === 'or') {\n newConditions.push({ and: [cond] })\n } else {\n newConditions[newConditions.length - 1].and.push(cond)\n }\n })\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const addFirstFilter = React.useCallback(async () => {\n if (firstField) {\n await addCondition({\n andIndex: 0,\n field: firstField,\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }, [addCondition, conditions.length, firstField])\n\n // When conditions is empty in list mode, show a virtual first row immediately\n // (derived from the first available field) so the panel never opens blank.\n const displayConditions =\n !isFormMode && conditions.length === 0 && firstField\n ? ([\n { and: [{ [firstField.fieldPath]: { [firstField.operators[0].value]: undefined } }] },\n ] as typeof conditions)\n : conditions\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__or-filters`}>\n {displayConditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <div className={`${baseClass}__and-filters`} key={compoundOrKey}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = displayConditions[orIndex].and[andIndex]\n const fieldPath = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldPath] || {})?.[0] as Operator) || undefined\n\n const value = condition?.[fieldPath]?.[operator] || undefined\n\n const isFirstCondition = orIndex === 0 && andIndex === 0\n const join: 'and' | 'or' = andIndex === 0 ? 'or' : 'and'\n\n return (\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldPath={fieldPath}\n filterOptions={resolvedFilterOptions?.get(fieldPath)}\n isFirstCondition={isFirstCondition}\n join={join}\n key={andIndex}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldPath)}\n updateCondition={updateCondition}\n updateJoin={updateJoin}\n value={value}\n />\n )\n })}\n </div>\n )\n })}\n <div className={`${baseClass}__add-or-row`}>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__add-or`}\n icon={<CirclePlusIcon size={24} />}\n iconPosition=\"left\"\n onClick={addFirstFilter}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["dequal","isFieldDisabled","transformWhereQuery","validateWhereQuery","React","useMemo","CirclePlusIcon","useAuth","useTranslation","reduceFieldsToOptions","Button","Condition","fieldTypeConditions","getValidFieldOperators","baseClass","WhereBuilder","props","collectionSlug","fields","onChange","handleWhereChange","onEmptyRemove","renderedFilters","undefined","resolvedFilterOptions","value","i18n","t","permissions","fieldPermissions","collections","reducedFields","firstField","find","f","field","conditions","or","transformedWhere","addCondition","useCallback","andIndex","orIndex","relation","newConditions","structuredClone","defaultOperator","type","operators","and","splice","String","fieldPath","push","updateCondition","operator","incomingOperator","length","validOperator","existingCondition","existingValue","newRowCondition","removeCondition","updateJoin","join","flattened","forEach","orGroup","oIdx","cond","aIdx","isTarget","currentJoin","itemJoin","index","addFirstFilter","makeRow","displayConditions","disableRemoveButton","_jsx","className","_jsxs","map","compoundOrKey","Array","isArray","_","condition","Object","keys","isFirstCondition","filterOptions","get","RenderedFilter","buttonStyle","icon","size","iconPosition","onClick"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { isFieldDisabled, transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport type {\n AddCondition,\n RemoveCondition,\n UpdateCondition,\n UpdateJoin,\n WhereBuilderProps,\n} from './types.js'\n\nimport { CirclePlusIcon } from '../../icons/CirclePlus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport './index.css'\nimport { fieldTypeConditions, getValidFieldOperators } from './field-types.js'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * Presentational filter builder. It renders the conditions described by `value` and\n * reports edits through `onChange`. It is unaware of where its value is stored — the\n * list view wires it to list query state via {@link ListWhereBuilder}, and the Query\n * Presets drawer wires it to form state.\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const {\n collectionSlug,\n fields,\n onChange: handleWhereChange,\n onEmptyRemove,\n renderedFilters = undefined,\n resolvedFilterOptions = undefined,\n value,\n } = props\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields: fields ?? [],\n i18n,\n }),\n [fieldPermissions, fields, i18n],\n )\n\n const firstField = useMemo(\n () => reducedFields.find((f) => !isFieldDisabled(f.field, 'filter')),\n [reducedFields],\n )\n\n const conditions = useMemo(() => {\n if (value) {\n if (validateWhereQuery(value)) {\n return value.or ?? []\n }\n\n const transformedWhere = transformWhereQuery(value)\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or ?? []\n }\n }\n\n return []\n }, [value])\n\n const addCondition: AddCondition = React.useCallback(\n ({ andIndex, field, orIndex, relation }) => {\n const newConditions = structuredClone(conditions)\n\n const defaultOperator = fieldTypeConditions[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [String(field.fieldPath)]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [String(field.fieldPath)]: {\n [defaultOperator]: undefined,\n },\n },\n ],\n })\n }\n\n void handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const updateCondition: UpdateCondition = React.useCallback(\n ({ type, andIndex, field, operator: incomingOperator, orIndex, value }) => {\n // Virtual first row: conditions not yet committed, build from scratch\n if (conditions.length === 0) {\n // Ignore empty value edits so a cleared row doesn't re-commit itself. Field and\n // operator picks carry empty values too, but must fall through to build the row.\n if (type === 'value' && (value === undefined || value === null || value === '')) {\n return\n }\n\n const { validOperator } = getValidFieldOperators({\n field: field.field,\n operator: incomingOperator,\n })\n void handleWhereChange({\n or: [{ and: [{ [String(field.fieldPath)]: { [validOperator]: value } }] }],\n })\n return\n }\n\n const existingCondition = conditions[orIndex].and[andIndex]\n\n if (typeof existingCondition === 'object' && field?.fieldPath) {\n const { validOperator } = getValidFieldOperators({\n field: field.field,\n operator: incomingOperator,\n })\n\n // Skip if nothing changed\n const existingValue = existingCondition[String(field.fieldPath)]?.[validOperator]\n if (typeof existingValue !== 'undefined' && existingValue === value) {\n return\n }\n\n const newRowCondition = {\n [String(field.fieldPath)]: { [validOperator]: value },\n }\n\n if (dequal(existingCondition, newRowCondition)) {\n return\n }\n\n const newConditions = structuredClone(conditions)\n newConditions[orIndex].and[andIndex] = newRowCondition\n\n void handleWhereChange({ or: newConditions })\n }\n },\n [conditions, handleWhereChange],\n )\n\n const removeCondition: RemoveCondition = React.useCallback(\n ({ andIndex, orIndex }) => {\n // Virtual first row: removing it just closes the panel\n if (conditions.length === 0) {\n onEmptyRemove?.()\n return\n }\n\n const newConditions = structuredClone(conditions)\n newConditions[orIndex].and.splice(andIndex, 1)\n\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n\n void handleWhereChange({ or: newConditions })\n\n // Removing the last remaining condition closes the filters panel.\n if (newConditions.length === 0) {\n onEmptyRemove?.()\n }\n },\n [conditions, handleWhereChange, onEmptyRemove],\n )\n\n const updateJoin: UpdateJoin = React.useCallback(\n ({ andIndex, join, orIndex }) => {\n // Flatten the nested or/and structure into a single ordered list, tracking\n // the join relation that connects each condition to the previous one.\n const flattened: { cond: (typeof conditions)[number]['and'][number]; join: 'and' | 'or' }[] =\n []\n\n conditions.forEach((orGroup, oIdx) => {\n orGroup.and.forEach((cond, aIdx) => {\n const isTarget = oIdx === orIndex && aIdx === andIndex\n const currentJoin = flattened.length === 0 ? null : aIdx === 0 ? 'or' : 'and'\n\n flattened.push({ cond, join: isTarget ? join : currentJoin })\n })\n })\n\n // Rebuild the or/and structure from the flattened list using the join relations.\n const newConditions: typeof conditions = []\n\n flattened.forEach(({ cond, join: itemJoin }, index) => {\n if (index === 0 || itemJoin === 'or') {\n newConditions.push({ and: [cond] })\n } else {\n newConditions[newConditions.length - 1].and.push(cond)\n }\n })\n\n void handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const addFirstFilter = React.useCallback(() => {\n if (!firstField) {\n return\n }\n\n // With no committed conditions, only the virtual placeholder row is shown. Commit it\n // and append a new row so a second row appears on the first click.\n if (conditions.length === 0) {\n const defaultOperator = firstField.operators[0].value\n const makeRow = () => ({\n and: [{ [String(firstField.fieldPath)]: { [defaultOperator]: undefined } }],\n })\n\n void handleWhereChange({ or: [makeRow(), makeRow()] })\n return\n }\n\n void addCondition({\n andIndex: 0,\n field: firstField,\n orIndex: conditions.length,\n relation: 'or',\n })\n }, [addCondition, conditions.length, firstField, handleWhereChange])\n\n // When conditions is empty, show a virtual first row so the panel never opens blank.\n const displayConditions =\n conditions.length === 0 && firstField\n ? ([\n { and: [{ [firstField.fieldPath]: { [firstField.operators[0].value]: undefined } }] },\n ] as typeof conditions)\n : conditions\n\n // Disable the remove button only when there are no committed conditions and this host\n // doesn't provide an empty-state removal handler.\n const disableRemoveButton = conditions.length === 0 && !onEmptyRemove\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__or-filters`}>\n {displayConditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <div className={`${baseClass}__and-filters`} key={compoundOrKey}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = displayConditions[orIndex].and[andIndex]\n const fieldPath = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldPath] || {})?.[0] as Operator) || undefined\n\n const value = condition?.[fieldPath]?.[operator] || undefined\n\n const isFirstCondition = orIndex === 0 && andIndex === 0\n const join: 'and' | 'or' = andIndex === 0 ? 'or' : 'and'\n\n return (\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n disableRemoveButton={disableRemoveButton}\n fieldPath={fieldPath}\n filterOptions={resolvedFilterOptions?.get(fieldPath)}\n isFirstCondition={isFirstCondition}\n join={join}\n key={andIndex}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldPath)}\n updateCondition={updateCondition}\n updateJoin={updateJoin}\n value={value}\n />\n )\n })}\n </div>\n )\n })}\n <div className={`${baseClass}__add-or-row`}>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__add-or`}\n icon={<CirclePlusIcon size={24} />}\n iconPosition=\"left\"\n onClick={addFirstFilter}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}