@payloadcms/ui 3.29.0-internal.3471e81 → 3.29.0-internal.37e46b5

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 (473) hide show
  1. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/EditForm/index.js +8 -5
  3. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  4. package/dist/elements/BulkUpload/FormsManager/index.js +2 -2
  5. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  6. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  7. package/dist/elements/BulkUpload/index.js +4 -2
  8. package/dist/elements/BulkUpload/index.js.map +1 -1
  9. package/dist/elements/Collapsible/provider.d.ts.map +1 -1
  10. package/dist/elements/Collapsible/provider.js +5 -3
  11. package/dist/elements/Collapsible/provider.js.map +1 -1
  12. package/dist/elements/ColumnSelector/index.js +1 -1
  13. package/dist/elements/ColumnSelector/index.js.map +1 -1
  14. package/dist/elements/ColumnSelector/index.scss +3 -2
  15. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  16. package/dist/elements/DeleteDocument/index.js +2 -1
  17. package/dist/elements/DeleteDocument/index.js.map +1 -1
  18. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  19. package/dist/elements/DeleteMany/index.js +1 -1
  20. package/dist/elements/DeleteMany/index.js.map +1 -1
  21. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  22. package/dist/elements/DocumentDrawer/DrawerContent.js +1 -2
  23. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  24. package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
  25. package/dist/elements/DocumentDrawer/Provider.js +3 -3
  26. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  27. package/dist/elements/DocumentDrawer/types.d.ts +0 -4
  28. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  29. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  30. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  31. package/dist/elements/DocumentFields/index.js +5 -1
  32. package/dist/elements/DocumentFields/index.js.map +1 -1
  33. package/dist/elements/Drawer/index.d.ts.map +1 -1
  34. package/dist/elements/Drawer/index.js +5 -3
  35. package/dist/elements/Drawer/index.js.map +1 -1
  36. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  37. package/dist/elements/EditMany/DrawerContent.js +2 -2
  38. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  39. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  40. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +1 -2
  41. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  42. package/dist/elements/ListControls/index.d.ts +24 -1
  43. package/dist/elements/ListControls/index.d.ts.map +1 -1
  44. package/dist/elements/ListControls/index.js +86 -115
  45. package/dist/elements/ListControls/index.js.map +1 -1
  46. package/dist/elements/ListControls/index.scss +9 -5
  47. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  48. package/dist/elements/ListDrawer/DrawerContent.js +2 -4
  49. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  50. package/dist/elements/ListDrawer/Provider.js +3 -3
  51. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  52. package/dist/elements/ListDrawer/types.d.ts +2 -3
  53. package/dist/elements/ListDrawer/types.d.ts.map +1 -1
  54. package/dist/elements/ListDrawer/types.js.map +1 -1
  55. package/dist/elements/LoadingOverlay/index.js +3 -3
  56. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  57. package/dist/elements/Nav/context.d.ts.map +1 -1
  58. package/dist/elements/Nav/context.js +4 -2
  59. package/dist/elements/Nav/context.js.map +1 -1
  60. package/dist/elements/Pill/index.d.ts +1 -1
  61. package/dist/elements/Pill/index.d.ts.map +1 -1
  62. package/dist/elements/Pill/index.js +0 -2
  63. package/dist/elements/Pill/index.js.map +1 -1
  64. package/dist/elements/Pill/index.scss +6 -29
  65. package/dist/elements/Popup/PopupButtonList/index.d.ts +1 -1
  66. package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  67. package/dist/elements/Popup/PopupButtonList/index.js +0 -1
  68. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  69. package/dist/elements/Popup/index.d.ts.map +1 -1
  70. package/dist/elements/Popup/index.js +1 -1
  71. package/dist/elements/Popup/index.js.map +1 -1
  72. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts +1 -2
  73. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  74. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js +1 -4
  75. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
  76. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  77. package/dist/elements/PublishButton/ScheduleDrawer/index.js +3 -3
  78. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  79. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js +1 -1
  80. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
  81. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  82. package/dist/elements/RelationshipTable/index.js +4 -3
  83. package/dist/elements/RelationshipTable/index.js.map +1 -1
  84. package/dist/elements/StepNav/context.d.ts.map +1 -1
  85. package/dist/elements/StepNav/context.js +5 -3
  86. package/dist/elements/StepNav/context.js.map +1 -1
  87. package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
  88. package/dist/elements/Table/DefaultCell/fields/File/index.js +1 -24
  89. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  90. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  91. package/dist/elements/Table/DefaultCell/index.js +25 -32
  92. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  93. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  94. package/dist/elements/Table/RelationshipProvider/index.js +5 -3
  95. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  96. package/dist/elements/TableColumns/RenderDefaultCell/index.d.ts.map +1 -0
  97. package/dist/{providers → elements}/TableColumns/RenderDefaultCell/index.js +6 -4
  98. package/dist/elements/TableColumns/RenderDefaultCell/index.js.map +1 -0
  99. package/dist/{providers → elements}/TableColumns/buildColumnState.d.ts +1 -1
  100. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -0
  101. package/dist/{providers → elements}/TableColumns/buildColumnState.js +2 -9
  102. package/dist/elements/TableColumns/buildColumnState.js.map +1 -0
  103. package/dist/{providers → elements}/TableColumns/buildPolymorphicColumnState.d.ts +1 -1
  104. package/dist/elements/TableColumns/buildPolymorphicColumnState.d.ts.map +1 -0
  105. package/dist/{providers → elements}/TableColumns/buildPolymorphicColumnState.js +1 -1
  106. package/dist/elements/TableColumns/buildPolymorphicColumnState.js.map +1 -0
  107. package/dist/elements/TableColumns/context.d.ts.map +1 -0
  108. package/dist/elements/TableColumns/context.js +4 -0
  109. package/dist/elements/TableColumns/context.js.map +1 -0
  110. package/dist/elements/TableColumns/filterFields.d.ts.map +1 -0
  111. package/dist/elements/TableColumns/filterFields.js.map +1 -0
  112. package/dist/elements/TableColumns/getInitialColumns.d.ts.map +1 -0
  113. package/dist/elements/TableColumns/getInitialColumns.js.map +1 -0
  114. package/dist/elements/TableColumns/index.d.ts.map +1 -0
  115. package/dist/{providers → elements}/TableColumns/index.js +3 -5
  116. package/dist/elements/TableColumns/index.js.map +1 -0
  117. package/dist/{providers → elements}/TableColumns/types.d.ts +1 -1
  118. package/dist/elements/TableColumns/types.d.ts.map +1 -0
  119. package/dist/elements/TableColumns/types.js.map +1 -0
  120. package/dist/elements/Thumbnail/index.js +22 -24
  121. package/dist/elements/Thumbnail/index.js.map +1 -1
  122. package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
  123. package/dist/elements/Toasts/fieldErrors.js +2 -2
  124. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  125. package/dist/elements/Upload/index.d.ts.map +1 -1
  126. package/dist/elements/Upload/index.js +52 -8
  127. package/dist/elements/Upload/index.js.map +1 -1
  128. package/dist/elements/Upload/index.scss +1 -0
  129. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  130. package/dist/elements/WhereBuilder/Condition/index.js +1 -1
  131. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  132. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  133. package/dist/elements/WhereBuilder/index.js +15 -18
  134. package/dist/elements/WhereBuilder/index.js.map +1 -1
  135. package/dist/elements/WhereBuilder/transformWhereQuery.d.ts +8 -0
  136. package/dist/elements/WhereBuilder/transformWhereQuery.d.ts.map +1 -0
  137. package/dist/elements/WhereBuilder/transformWhereQuery.js +45 -0
  138. package/dist/elements/WhereBuilder/transformWhereQuery.js.map +1 -0
  139. package/dist/elements/WhereBuilder/validateWhereQuery.d.ts +4 -0
  140. package/dist/elements/WhereBuilder/validateWhereQuery.d.ts.map +1 -0
  141. package/dist/elements/WhereBuilder/validateWhereQuery.js +36 -0
  142. package/dist/elements/WhereBuilder/validateWhereQuery.js.map +1 -0
  143. package/dist/exports/client/{DatePicker-DMHV2M2L.js → CodeEditor-TQ5ADFPC.js} +2 -2
  144. package/dist/exports/client/{CodeEditor-J4IKAVAK.js → DatePicker-HHQ6TPOW.js} +2 -2
  145. package/dist/exports/client/{chunk-3AA2TJQ5.js → chunk-IMEQ6NKQ.js} +2 -2
  146. package/dist/exports/client/{chunk-3AA2TJQ5.js.map → chunk-IMEQ6NKQ.js.map} +3 -3
  147. package/dist/exports/client/{chunk-PKQOCWZD.js → chunk-LMYT7O7U.js} +2 -2
  148. package/dist/exports/client/{chunk-PKQOCWZD.js.map → chunk-LMYT7O7U.js.map} +3 -3
  149. package/dist/exports/client/index.d.ts +3 -7
  150. package/dist/exports/client/index.d.ts.map +1 -1
  151. package/dist/exports/client/index.js +23 -23
  152. package/dist/exports/client/index.js.map +4 -4
  153. package/dist/exports/shared/index.d.ts +3 -8
  154. package/dist/exports/shared/index.d.ts.map +1 -1
  155. package/dist/exports/shared/index.js +2 -2
  156. package/dist/exports/shared/index.js.map +4 -4
  157. package/dist/fields/Array/index.d.ts.map +1 -1
  158. package/dist/fields/Array/index.js +3 -4
  159. package/dist/fields/Array/index.js.map +1 -1
  160. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  161. package/dist/fields/Blocks/BlockRow.js +20 -26
  162. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  163. package/dist/fields/Blocks/index.d.ts.map +1 -1
  164. package/dist/fields/Blocks/index.js +4 -5
  165. package/dist/fields/Blocks/index.js.map +1 -1
  166. package/dist/fields/Checkbox/index.d.ts +1 -1
  167. package/dist/fields/Checkbox/index.d.ts.map +1 -1
  168. package/dist/fields/Checkbox/index.js +3 -4
  169. package/dist/fields/Checkbox/index.js.map +1 -1
  170. package/dist/fields/Code/index.d.ts.map +1 -1
  171. package/dist/fields/Code/index.js +3 -4
  172. package/dist/fields/Code/index.js.map +1 -1
  173. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  174. package/dist/fields/Collapsible/index.js +2 -3
  175. package/dist/fields/Collapsible/index.js.map +1 -1
  176. package/dist/fields/ConfirmPassword/index.js +11 -13
  177. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  178. package/dist/fields/DateTime/index.d.ts.map +1 -1
  179. package/dist/fields/DateTime/index.js +4 -5
  180. package/dist/fields/DateTime/index.js.map +1 -1
  181. package/dist/fields/Email/index.d.ts.map +1 -1
  182. package/dist/fields/Email/index.js +2 -3
  183. package/dist/fields/Email/index.js.map +1 -1
  184. package/dist/fields/Group/index.d.ts.map +1 -1
  185. package/dist/fields/Group/index.js.map +1 -1
  186. package/dist/fields/Group/provider.d.ts.map +1 -1
  187. package/dist/fields/Group/provider.js +5 -3
  188. package/dist/fields/Group/provider.js.map +1 -1
  189. package/dist/fields/JSON/index.d.ts.map +1 -1
  190. package/dist/fields/JSON/index.js +4 -5
  191. package/dist/fields/JSON/index.js.map +1 -1
  192. package/dist/fields/Number/index.d.ts.map +1 -1
  193. package/dist/fields/Number/index.js +5 -6
  194. package/dist/fields/Number/index.js.map +1 -1
  195. package/dist/fields/Password/index.d.ts.map +1 -1
  196. package/dist/fields/Password/index.js +4 -2
  197. package/dist/fields/Password/index.js.map +1 -1
  198. package/dist/fields/Point/index.d.ts.map +1 -1
  199. package/dist/fields/Point/index.js +3 -4
  200. package/dist/fields/Point/index.js.map +1 -1
  201. package/dist/fields/RadioGroup/index.d.ts.map +1 -1
  202. package/dist/fields/RadioGroup/index.js +3 -4
  203. package/dist/fields/RadioGroup/index.js.map +1 -1
  204. package/dist/fields/Relationship/index.d.ts.map +1 -1
  205. package/dist/fields/Relationship/index.js +4 -5
  206. package/dist/fields/Relationship/index.js.map +1 -1
  207. package/dist/fields/Row/provider.d.ts.map +1 -1
  208. package/dist/fields/Row/provider.js +5 -3
  209. package/dist/fields/Row/provider.js.map +1 -1
  210. package/dist/fields/Select/index.d.ts.map +1 -1
  211. package/dist/fields/Select/index.js +3 -4
  212. package/dist/fields/Select/index.js.map +1 -1
  213. package/dist/fields/Tabs/Tab/index.d.ts +0 -1
  214. package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
  215. package/dist/fields/Tabs/Tab/index.js +25 -29
  216. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  217. package/dist/fields/Tabs/Tab/index.scss +0 -4
  218. package/dist/fields/Tabs/index.d.ts +1 -1
  219. package/dist/fields/Tabs/index.d.ts.map +1 -1
  220. package/dist/fields/Tabs/index.js +194 -285
  221. package/dist/fields/Tabs/index.js.map +1 -1
  222. package/dist/fields/Tabs/index.scss +0 -8
  223. package/dist/fields/Tabs/provider.d.ts.map +1 -1
  224. package/dist/fields/Tabs/provider.js +5 -3
  225. package/dist/fields/Tabs/provider.js.map +1 -1
  226. package/dist/fields/Text/index.d.ts.map +1 -1
  227. package/dist/fields/Text/index.js +3 -4
  228. package/dist/fields/Text/index.js.map +1 -1
  229. package/dist/fields/Textarea/index.d.ts.map +1 -1
  230. package/dist/fields/Textarea/index.js +1 -2
  231. package/dist/fields/Textarea/index.js.map +1 -1
  232. package/dist/fields/Upload/index.d.ts.map +1 -1
  233. package/dist/fields/Upload/index.js +1 -2
  234. package/dist/fields/Upload/index.js.map +1 -1
  235. package/dist/forms/Form/context.d.ts.map +1 -1
  236. package/dist/forms/Form/context.js +25 -9
  237. package/dist/forms/Form/context.js.map +1 -1
  238. package/dist/forms/Form/index.d.ts.map +1 -1
  239. package/dist/forms/Form/index.js +8 -8
  240. package/dist/forms/Form/index.js.map +1 -1
  241. package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
  242. package/dist/forms/RowLabel/Context/index.js +2 -2
  243. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  244. package/dist/forms/RowLabel/index.d.ts.map +1 -1
  245. package/dist/forms/RowLabel/index.js +2 -2
  246. package/dist/forms/RowLabel/index.js.map +1 -1
  247. package/dist/forms/RowLabel/types.d.ts +1 -1
  248. package/dist/forms/RowLabel/types.d.ts.map +1 -1
  249. package/dist/forms/RowLabel/types.js.map +1 -1
  250. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +1 -3
  251. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  252. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -45
  253. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  254. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts +2 -4
  255. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts.map +1 -1
  256. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.js +0 -4
  257. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.js.map +1 -1
  258. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts +2 -4
  259. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts.map +1 -1
  260. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.js +0 -4
  261. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.js.map +1 -1
  262. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts +2 -4
  263. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
  264. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js +2 -41
  265. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
  266. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -4
  267. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  268. package/dist/forms/fieldSchemasToFormState/index.js +0 -6
  269. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  270. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -4
  271. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  272. package/dist/forms/fieldSchemasToFormState/iterateFields.js +0 -16
  273. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  274. package/dist/forms/useField/index.d.ts.map +1 -1
  275. package/dist/forms/useField/index.js +67 -70
  276. package/dist/forms/useField/index.js.map +1 -1
  277. package/dist/forms/useField/types.d.ts +0 -1
  278. package/dist/forms/useField/types.d.ts.map +1 -1
  279. package/dist/forms/useField/types.js.map +1 -1
  280. package/dist/hooks/useQueues.js +3 -3
  281. package/dist/hooks/useQueues.js.map +1 -1
  282. package/dist/icons/Chevron/index.d.ts +0 -1
  283. package/dist/icons/Chevron/index.d.ts.map +1 -1
  284. package/dist/icons/Chevron/index.js +0 -2
  285. package/dist/icons/Chevron/index.js.map +1 -1
  286. package/dist/icons/Dots/index.d.ts +0 -2
  287. package/dist/icons/Dots/index.d.ts.map +1 -1
  288. package/dist/icons/Dots/index.js +2 -5
  289. package/dist/icons/Dots/index.js.map +1 -1
  290. package/dist/icons/Dots/index.scss +0 -14
  291. package/dist/providers/Actions/index.d.ts.map +1 -1
  292. package/dist/providers/Actions/index.js +5 -3
  293. package/dist/providers/Actions/index.js.map +1 -1
  294. package/dist/providers/Auth/index.d.ts.map +1 -1
  295. package/dist/providers/Auth/index.js +5 -3
  296. package/dist/providers/Auth/index.js.map +1 -1
  297. package/dist/providers/ClientFunction/index.d.ts.map +1 -1
  298. package/dist/providers/ClientFunction/index.js +4 -4
  299. package/dist/providers/ClientFunction/index.js.map +1 -1
  300. package/dist/providers/Config/index.d.ts.map +1 -1
  301. package/dist/providers/Config/index.js +5 -3
  302. package/dist/providers/Config/index.js.map +1 -1
  303. package/dist/providers/DocumentEvents/index.d.ts.map +1 -1
  304. package/dist/providers/DocumentEvents/index.js +5 -3
  305. package/dist/providers/DocumentEvents/index.js.map +1 -1
  306. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  307. package/dist/providers/DocumentInfo/index.js +5 -3
  308. package/dist/providers/DocumentInfo/index.js.map +1 -1
  309. package/dist/providers/DocumentInfo/types.d.ts +0 -1
  310. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  311. package/dist/providers/DocumentInfo/types.js.map +1 -1
  312. package/dist/providers/EditDepth/index.d.ts.map +1 -1
  313. package/dist/providers/EditDepth/index.js +5 -3
  314. package/dist/providers/EditDepth/index.js.map +1 -1
  315. package/dist/providers/EntityVisibility/index.d.ts.map +1 -1
  316. package/dist/providers/EntityVisibility/index.js +5 -3
  317. package/dist/providers/EntityVisibility/index.js.map +1 -1
  318. package/dist/providers/ListQuery/context.d.ts +0 -2
  319. package/dist/providers/ListQuery/context.d.ts.map +1 -1
  320. package/dist/providers/ListQuery/context.js +2 -4
  321. package/dist/providers/ListQuery/context.js.map +1 -1
  322. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  323. package/dist/providers/ListQuery/index.js +14 -30
  324. package/dist/providers/ListQuery/index.js.map +1 -1
  325. package/dist/providers/ListQuery/types.d.ts +3 -6
  326. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  327. package/dist/providers/ListQuery/types.js.map +1 -1
  328. package/dist/providers/Locale/index.d.ts.map +1 -1
  329. package/dist/providers/Locale/index.js +9 -5
  330. package/dist/providers/Locale/index.js.map +1 -1
  331. package/dist/providers/Operation/index.d.ts.map +1 -1
  332. package/dist/providers/Operation/index.js +5 -3
  333. package/dist/providers/Operation/index.js.map +1 -1
  334. package/dist/providers/Params/index.d.ts.map +1 -1
  335. package/dist/providers/Params/index.js +5 -3
  336. package/dist/providers/Params/index.js.map +1 -1
  337. package/dist/providers/Preferences/index.d.ts.map +1 -1
  338. package/dist/providers/Preferences/index.js +5 -3
  339. package/dist/providers/Preferences/index.js.map +1 -1
  340. package/dist/providers/RouteCache/index.d.ts.map +1 -1
  341. package/dist/providers/RouteCache/index.js +5 -3
  342. package/dist/providers/RouteCache/index.js.map +1 -1
  343. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  344. package/dist/providers/RouteTransition/index.js +4 -2
  345. package/dist/providers/RouteTransition/index.js.map +1 -1
  346. package/dist/providers/SearchParams/index.d.ts.map +1 -1
  347. package/dist/providers/SearchParams/index.js +5 -3
  348. package/dist/providers/SearchParams/index.js.map +1 -1
  349. package/dist/providers/Selection/index.d.ts.map +1 -1
  350. package/dist/providers/Selection/index.js +5 -3
  351. package/dist/providers/Selection/index.js.map +1 -1
  352. package/dist/providers/ServerFunctions/index.d.ts +0 -1
  353. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  354. package/dist/providers/ServerFunctions/index.js +2 -2
  355. package/dist/providers/ServerFunctions/index.js.map +1 -1
  356. package/dist/providers/Theme/index.d.ts.map +1 -1
  357. package/dist/providers/Theme/index.js +5 -3
  358. package/dist/providers/Theme/index.js.map +1 -1
  359. package/dist/providers/Translation/index.d.ts.map +1 -1
  360. package/dist/providers/Translation/index.js +5 -3
  361. package/dist/providers/Translation/index.js.map +1 -1
  362. package/dist/providers/UploadControls/index.d.ts +12 -0
  363. package/dist/providers/UploadControls/index.d.ts.map +1 -0
  364. package/dist/providers/UploadControls/index.js +41 -0
  365. package/dist/providers/UploadControls/index.js.map +1 -0
  366. package/dist/providers/UploadEdits/index.d.ts.map +1 -1
  367. package/dist/providers/UploadEdits/index.js +4 -2
  368. package/dist/providers/UploadEdits/index.js.map +1 -1
  369. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  370. package/dist/providers/UploadHandlers/index.js +3 -3
  371. package/dist/providers/UploadHandlers/index.js.map +1 -1
  372. package/dist/styles.css +1 -1
  373. package/dist/utilities/buildFormState.d.ts.map +1 -1
  374. package/dist/utilities/buildFormState.js +1 -5
  375. package/dist/utilities/buildFormState.js.map +1 -1
  376. package/dist/utilities/mergeListSearchAndWhere.d.ts +10 -0
  377. package/dist/utilities/mergeListSearchAndWhere.d.ts.map +1 -0
  378. package/dist/utilities/mergeListSearchAndWhere.js +47 -0
  379. package/dist/utilities/mergeListSearchAndWhere.js.map +1 -0
  380. package/dist/utilities/renderTable.js +4 -4
  381. package/dist/utilities/renderTable.js.map +1 -1
  382. package/dist/utilities/upsertPreferences.d.ts +2 -7
  383. package/dist/utilities/upsertPreferences.d.ts.map +1 -1
  384. package/dist/utilities/upsertPreferences.js +5 -11
  385. package/dist/utilities/upsertPreferences.js.map +1 -1
  386. package/dist/views/Edit/index.d.ts.map +1 -1
  387. package/dist/views/Edit/index.js +10 -8
  388. package/dist/views/Edit/index.js.map +1 -1
  389. package/dist/views/List/index.d.ts.map +1 -1
  390. package/dist/views/List/index.js +1 -7
  391. package/dist/views/List/index.js.map +1 -1
  392. package/package.json +4 -4
  393. package/dist/elements/ListControls/ActiveQueryPreset/index.d.ts +0 -8
  394. package/dist/elements/ListControls/ActiveQueryPreset/index.d.ts.map +0 -1
  395. package/dist/elements/ListControls/ActiveQueryPreset/index.js +0 -102
  396. package/dist/elements/ListControls/ActiveQueryPreset/index.js.map +0 -1
  397. package/dist/elements/ListControls/ActiveQueryPreset/index.scss +0 -21
  398. package/dist/elements/ListControls/types.d.ts +0 -28
  399. package/dist/elements/ListControls/types.d.ts.map +0 -1
  400. package/dist/elements/ListControls/types.js.map +0 -1
  401. package/dist/elements/ListControls/useQueryPresets.d.ts +0 -17
  402. package/dist/elements/ListControls/useQueryPresets.d.ts.map +0 -1
  403. package/dist/elements/ListControls/useQueryPresets.js +0 -259
  404. package/dist/elements/ListControls/useQueryPresets.js.map +0 -1
  405. package/dist/elements/Popup/PopupDivider/index.d.ts +0 -4
  406. package/dist/elements/Popup/PopupDivider/index.d.ts.map +0 -1
  407. package/dist/elements/Popup/PopupDivider/index.js +0 -10
  408. package/dist/elements/Popup/PopupDivider/index.js.map +0 -1
  409. package/dist/elements/Popup/PopupDivider/index.scss +0 -10
  410. package/dist/elements/QueryPresets/cells/AccessCell/index.d.ts +0 -4
  411. package/dist/elements/QueryPresets/cells/AccessCell/index.d.ts.map +0 -1
  412. package/dist/elements/QueryPresets/cells/AccessCell/index.js +0 -25
  413. package/dist/elements/QueryPresets/cells/AccessCell/index.js.map +0 -1
  414. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts +0 -4
  415. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts.map +0 -1
  416. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js +0 -11
  417. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js.map +0 -1
  418. package/dist/elements/QueryPresets/cells/WhereCell/index.d.ts +0 -4
  419. package/dist/elements/QueryPresets/cells/WhereCell/index.d.ts.map +0 -1
  420. package/dist/elements/QueryPresets/cells/WhereCell/index.js +0 -23
  421. package/dist/elements/QueryPresets/cells/WhereCell/index.js.map +0 -1
  422. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts +0 -4
  423. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts.map +0 -1
  424. package/dist/elements/QueryPresets/fields/ColumnsField/index.js +0 -64
  425. package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +0 -1
  426. package/dist/elements/QueryPresets/fields/ColumnsField/index.scss +0 -28
  427. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts +0 -4
  428. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +0 -1
  429. package/dist/elements/QueryPresets/fields/WhereField/index.js +0 -118
  430. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +0 -1
  431. package/dist/elements/QueryPresets/fields/WhereField/index.scss +0 -23
  432. package/dist/icons/People/index.d.ts +0 -6
  433. package/dist/icons/People/index.d.ts.map +0 -1
  434. package/dist/icons/People/index.js +0 -18
  435. package/dist/icons/People/index.js.map +0 -1
  436. package/dist/icons/People/index.scss +0 -11
  437. package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +0 -1
  438. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +0 -1
  439. package/dist/providers/TableColumns/buildColumnState.d.ts.map +0 -1
  440. package/dist/providers/TableColumns/buildColumnState.js.map +0 -1
  441. package/dist/providers/TableColumns/buildPolymorphicColumnState.d.ts.map +0 -1
  442. package/dist/providers/TableColumns/buildPolymorphicColumnState.js.map +0 -1
  443. package/dist/providers/TableColumns/context.d.ts.map +0 -1
  444. package/dist/providers/TableColumns/context.js +0 -4
  445. package/dist/providers/TableColumns/context.js.map +0 -1
  446. package/dist/providers/TableColumns/filterFields.d.ts.map +0 -1
  447. package/dist/providers/TableColumns/filterFields.js.map +0 -1
  448. package/dist/providers/TableColumns/getInitialColumns.d.ts.map +0 -1
  449. package/dist/providers/TableColumns/getInitialColumns.js.map +0 -1
  450. package/dist/providers/TableColumns/index.d.ts.map +0 -1
  451. package/dist/providers/TableColumns/index.js.map +0 -1
  452. package/dist/providers/TableColumns/types.d.ts.map +0 -1
  453. package/dist/providers/TableColumns/types.js +0 -2
  454. package/dist/providers/TableColumns/types.js.map +0 -1
  455. package/dist/utilities/getDisplayedFieldValue.d.ts +0 -13
  456. package/dist/utilities/getDisplayedFieldValue.d.ts.map +0 -1
  457. package/dist/utilities/getDisplayedFieldValue.js +0 -28
  458. package/dist/utilities/getDisplayedFieldValue.js.map +0 -1
  459. package/dist/utilities/hasOptionLabelJSXElement.d.ts +0 -3
  460. package/dist/utilities/hasOptionLabelJSXElement.d.ts.map +0 -1
  461. package/dist/utilities/hasOptionLabelJSXElement.js +0 -15
  462. package/dist/utilities/hasOptionLabelJSXElement.js.map +0 -1
  463. /package/dist/{providers → elements}/TableColumns/RenderDefaultCell/index.d.ts +0 -0
  464. /package/dist/{providers → elements}/TableColumns/RenderDefaultCell/index.scss +0 -0
  465. /package/dist/{providers → elements}/TableColumns/context.d.ts +0 -0
  466. /package/dist/{providers → elements}/TableColumns/filterFields.d.ts +0 -0
  467. /package/dist/{providers → elements}/TableColumns/filterFields.js +0 -0
  468. /package/dist/{providers → elements}/TableColumns/getInitialColumns.d.ts +0 -0
  469. /package/dist/{providers → elements}/TableColumns/getInitialColumns.js +0 -0
  470. /package/dist/{providers → elements}/TableColumns/index.d.ts +0 -0
  471. /package/dist/elements/{ListControls → TableColumns}/types.js +0 -0
  472. /package/dist/exports/client/{CodeEditor-J4IKAVAK.js.map → CodeEditor-TQ5ADFPC.js.map} +0 -0
  473. /package/dist/exports/client/{DatePicker-DMHV2M2L.js.map → DatePicker-HHQ6TPOW.js.map} +0 -0
@@ -12,14 +12,16 @@ import { useField } from '../../forms/useField/index.js';
12
12
  import { useConfig } from '../../providers/Config/index.js';
13
13
  import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
14
14
  import { EditDepthProvider } from '../../providers/EditDepth/index.js';
15
+ import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
15
16
  import { useTranslation } from '../../providers/Translation/index.js';
17
+ import { useUploadControls } from '../../providers/UploadControls/index.js';
16
18
  import { useUploadEdits } from '../../providers/UploadEdits/index.js';
17
19
  import { Button } from '../Button/index.js';
18
20
  import { Drawer, DrawerToggler } from '../Drawer/index.js';
19
21
  import { Dropzone } from '../Dropzone/index.js';
20
22
  import { EditUpload } from '../EditUpload/index.js';
21
- import { FileDetails } from '../FileDetails/index.js';
22
23
  import './index.scss';
24
+ import { FileDetails } from '../FileDetails/index.js';
23
25
  import { PreviewSizes } from '../PreviewSizes/index.js';
24
26
  import { Thumbnail } from '../Thumbnail/index.js';
25
27
  const baseClass = 'file-field';
@@ -99,6 +101,16 @@ export const Upload = props => {
99
101
  onChange,
100
102
  uploadConfig
101
103
  } = props;
104
+ const {
105
+ getDocumentSlots
106
+ } = useServerFunctions();
107
+ const [documentSlots, setDocumentSlots] = React.useState({});
108
+ const {
109
+ setUploadControlFile,
110
+ setUploadControlFileUrl,
111
+ uploadControlFile,
112
+ uploadControlFileUrl
113
+ } = useUploadControls();
102
114
  const {
103
115
  config: {
104
116
  routes: {
@@ -148,10 +160,12 @@ export const Upload = props => {
148
160
  }
149
161
  setValue(newFile);
150
162
  setShowUrlInput(false);
163
+ setUploadControlFileUrl('');
164
+ setUploadControlFile(null);
151
165
  if (typeof onChange === 'function') {
152
166
  onChange(newFile);
153
167
  }
154
- }, [onChange, setValue]);
168
+ }, [onChange, setValue, setUploadControlFile, setUploadControlFileUrl]);
155
169
  const renameFile = (fileToChange, newName) => {
156
170
  // Creating a new File object with updated properties
157
171
  const newFile_0 = new File([fileToChange], newName, {
@@ -178,12 +192,14 @@ export const Upload = props => {
178
192
  setFileUrl('');
179
193
  resetUploadEdits();
180
194
  setShowUrlInput(false);
181
- }, [handleFileChange, resetUploadEdits]);
195
+ setUploadControlFileUrl('');
196
+ setUploadControlFile(null);
197
+ }, [handleFileChange, resetUploadEdits, setUploadControlFile, setUploadControlFileUrl]);
182
198
  const onEditsSave = useCallback(args => {
183
199
  setModified(true);
184
200
  updateUploadEdits(args);
185
201
  }, [setModified, updateUploadEdits]);
186
- const handleUrlSubmit = async () => {
202
+ const handleUrlSubmit = useCallback(async () => {
187
203
  if (!fileUrl || uploadConfig?.pasteURL === false) {
188
204
  return;
189
205
  }
@@ -228,7 +244,7 @@ export const Upload = props => {
228
244
  toast.error('The provided URL is not allowed.');
229
245
  setUploadStatus('failed');
230
246
  }
231
- };
247
+ }, [fileUrl, uploadConfig, setUploadStatus, handleFileChange, useServerSideFetch, collectionSlug, id, serverURL, api]);
232
248
  useEffect(() => {
233
249
  if (initialState?.file?.value instanceof File) {
234
250
  setFileSrc(URL.createObjectURL(initialState.file.value));
@@ -257,9 +273,31 @@ export const Upload = props => {
257
273
  const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled);
258
274
  const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ');
259
275
  const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt;
260
- if (uploadConfig.hideFileInputOnCreate && !savedDocumentData?.filename) {
261
- return null;
262
- }
276
+ useEffect(() => {
277
+ void (async () => {
278
+ const slots = await getDocumentSlots({
279
+ collectionSlug
280
+ });
281
+ setDocumentSlots(slots);
282
+ })();
283
+ }, [getDocumentSlots, collectionSlug]);
284
+ useEffect(() => {
285
+ const handleControlFileUrl = async () => {
286
+ if (uploadControlFileUrl) {
287
+ setFileUrl(uploadControlFileUrl);
288
+ await handleUrlSubmit();
289
+ }
290
+ };
291
+ void handleControlFileUrl();
292
+ }, [uploadControlFileUrl, handleUrlSubmit]);
293
+ useEffect(() => {
294
+ const handleControlFile = () => {
295
+ if (uploadControlFile) {
296
+ handleFileChange(uploadControlFile);
297
+ }
298
+ };
299
+ void handleControlFile();
300
+ }, [uploadControlFile, handleFileChange]);
263
301
  return /*#__PURE__*/_jsxs("div", {
264
302
  className: [fieldBaseClass, baseClass].filter(Boolean).join(' '),
265
303
  children: [/*#__PURE__*/_jsx(FieldError, {
@@ -312,10 +350,14 @@ export const Upload = props => {
312
350
  buttonStyle: "pill",
313
351
  onClick: () => {
314
352
  setShowUrlInput(true);
353
+ setUploadControlFileUrl('');
354
+ setUploadControlFile(null);
315
355
  },
316
356
  size: "small",
317
357
  children: t('upload:pasteURL')
318
358
  })]
359
+ }), uploadConfig?.admin?.components?.controls && documentSlots?.UploadControls !== undefined && /*#__PURE__*/_jsx(Fragment, {
360
+ children: documentSlots.UploadControls
319
361
  })]
320
362
  }), /*#__PURE__*/_jsxs("p", {
321
363
  className: `${baseClass}__dragAndDropText`,
@@ -351,6 +393,8 @@ export const Upload = props => {
351
393
  iconStyle: "with-border",
352
394
  onClick: () => {
353
395
  setShowUrlInput(false);
396
+ setUploadControlFileUrl('');
397
+ setUploadControlFile(null);
354
398
  },
355
399
  round: true,
356
400
  tooltip: t('general:cancel')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","useTranslation","useUploadEdits","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","_jsx","slug","Upload","props","collectionSlug","initialState","onChange","uploadConfig","config","routes","api","serverURL","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","id","docPermissions","savedDocumentData","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","fileName","decodeURIComponent","split","pop","file","_clientError","error","encodeURIComponent","serverResponse","_serverError","current","canRemoveUpload","update","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","hideFileInputOnCreate","filter","message","customUploadActions","doc","handleRemove","hideRemoveFile","buttonStyle","onClick","click","size","accept","hidden","ref","icon","iconStyle","round","tooltip","Header","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","title","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { isImage } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport './index.scss'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {enableAdjustments && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, customActions, initialState, onChange, uploadConfig } = props\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const { id, docPermissions, savedDocumentData, setUploadStatus } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\n\n const handleFileChange = useCallback(\n (newFile: File) => {\n if (newFile instanceof File) {\n setFileSrc(URL.createObjectURL(newFile))\n }\n\n setValue(newFile)\n setShowUrlInput(false)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange(renameFile(value, updatedFileName))\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange(fileToUpload)\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setShowUrlInput(false)\n }, [handleFileChange, resetUploadEdits])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = async () => {\n if (!fileUrl || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(`${serverURL}${api}${pasteURL}`)\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload =\n docPermissions?.update && 'delete' in docPermissions && docPermissions?.delete\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt\n\n if (uploadConfig.hideFileInputOnCreate && !savedDocumentData?.filename) {\n return null\n }\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {savedDocumentData && savedDocumentData.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={savedDocumentData}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !savedDocumentData?.filename) || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n {uploadConfig?.pasteURL !== false && (\n <Fragment>\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </Fragment>\n )}\n </div>\n\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && savedDocumentData?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || savedDocumentData?.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || savedDocumentData?.filename}\n fileSrc={savedDocumentData?.url || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || savedDocumentData?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || savedDocumentData?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {savedDocumentData && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: savedDocumentData.filename })}\n >\n <PreviewSizes\n doc={savedDocumentData}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","useServerFunctions","useTranslation","useUploadControls","useUploadEdits","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","_jsx","slug","Upload","props","collectionSlug","initialState","onChange","uploadConfig","getDocumentSlots","documentSlots","setDocumentSlots","setUploadControlFile","setUploadControlFileUrl","uploadControlFile","uploadControlFileUrl","config","routes","api","serverURL","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","id","docPermissions","savedDocumentData","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","fileName","decodeURIComponent","split","pop","file","_clientError","error","encodeURIComponent","serverResponse","_serverError","current","canRemoveUpload","update","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","slots","handleControlFileUrl","handleControlFile","filter","message","customUploadActions","doc","handleRemove","hideRemoveFile","hideFileInputOnCreate","buttonStyle","onClick","click","size","accept","hidden","ref","admin","components","controls","UploadControls","icon","iconStyle","round","tooltip","Header","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","title","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { DocumentSlots, FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { isImage } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport './index.scss'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {enableAdjustments && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, customActions, initialState, onChange, uploadConfig } = props\n const { getDocumentSlots } = useServerFunctions()\n const [documentSlots, setDocumentSlots] = React.useState<DocumentSlots>({})\n const { setUploadControlFile, setUploadControlFileUrl, uploadControlFile, uploadControlFileUrl } =\n useUploadControls()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const { id, docPermissions, savedDocumentData, setUploadStatus } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\n\n const handleFileChange = useCallback(\n (newFile: File) => {\n if (newFile instanceof File) {\n setFileSrc(URL.createObjectURL(newFile))\n }\n\n setValue(newFile)\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue, setUploadControlFile, setUploadControlFileUrl],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange(renameFile(value, updatedFileName))\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange(fileToUpload)\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n }, [handleFileChange, resetUploadEdits, setUploadControlFile, setUploadControlFileUrl])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = useCallback(async () => {\n if (!fileUrl || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(`${serverURL}${api}${pasteURL}`)\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }, [\n fileUrl,\n uploadConfig,\n setUploadStatus,\n handleFileChange,\n useServerSideFetch,\n collectionSlug,\n id,\n serverURL,\n api,\n ])\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload =\n docPermissions?.update && 'delete' in docPermissions && docPermissions?.delete\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt\n\n useEffect(() => {\n void (async () => {\n const slots = await getDocumentSlots({ collectionSlug })\n setDocumentSlots(slots)\n })()\n }, [getDocumentSlots, collectionSlug])\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit])\n\n useEffect(() => {\n const handleControlFile = () => {\n if (uploadControlFile) {\n handleFileChange(uploadControlFile)\n }\n }\n\n void handleControlFile()\n }, [uploadControlFile, handleFileChange])\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {savedDocumentData && savedDocumentData.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={savedDocumentData}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !savedDocumentData?.filename) || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n {uploadConfig?.pasteURL !== false && (\n <Fragment>\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </Fragment>\n )}\n\n {uploadConfig?.admin?.components?.controls &&\n documentSlots?.UploadControls !== undefined && (\n <Fragment>{documentSlots.UploadControls}</Fragment>\n )}\n </div>\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && savedDocumentData?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || savedDocumentData?.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || savedDocumentData?.filename}\n fileSrc={savedDocumentData?.url || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || savedDocumentData?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || savedDocumentData?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {savedDocumentData && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: savedDocumentData.filename })}\n >\n <PreviewSizes\n doc={savedDocumentData}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -101,6 +101,7 @@
101
101
  &__dropzoneButtons {
102
102
  display: flex;
103
103
  gap: calc(var(--base) * 0.5);
104
+ align-items: center;
104
105
  }
105
106
 
106
107
  &__orText {
@@ -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,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE/F,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,EAAE,qBAAqB,CAAA;IAC7C,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,EAAE,KAAK,CAAC,SAAS,CAAA;IACxC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,OAAO,KAAK,EAAE,QAAQ,EAA2B,qBAAqB,EAAE,MAAM,SAAS,CAAA;AASvF,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+JrC,CAAA"}
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,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE/F,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,EAAE,qBAAqB,CAAA;IAC7C,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,EAAE,KAAK,CAAC,SAAS,CAAA;IACxC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,OAAO,KAAK,EAAE,QAAQ,EAA2B,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAUvF,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+JrC,CAAA"}
@@ -7,8 +7,8 @@ import { useEffectEvent } from '../../../hooks/useEffectEvent.js';
7
7
  import { useTranslation } from '../../../providers/Translation/index.js';
8
8
  import { Button } from '../../Button/index.js';
9
9
  import { ReactSelect } from '../../ReactSelect/index.js';
10
- import './index.scss';
11
10
  import { DefaultFilter } from './DefaultFilter/index.js';
11
+ import './index.scss';
12
12
  const baseClass = 'condition';
13
13
  export const Condition = props => {
14
14
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useState","useDebounce","useEffectEvent","useTranslation","Button","ReactSelect","DefaultFilter","baseClass","Condition","props","addCondition","andIndex","fieldName","filterOptions","operator","orIndex","reducedFields","removeCondition","RenderedFilter","updateCondition","value","t","reducedField","find","field","internalValue","setInternalValue","debouncedValue","booleanSelect","includes","type","valueOptions","label","options","updateValue","disabled","admin","disableListFilter","handleFieldChange","undefined","option","handleOperatorChange","_jsx","className","_jsxs","isClearable","onChange","filter","operators","o","internalField","buttonStyle","icon","iconStyle","onClick","round","relation"],"sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { AddCondition, ReducedField, RemoveCondition, UpdateCondition } from '../types.js'\n\nexport type Props = {\n readonly addCondition: AddCondition\n readonly andIndex: number\n readonly fieldName: string\n readonly filterOptions: ResolvedFilterOptions\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 value: string\n}\n\nimport type { Operator, Option as PayloadOption, ResolvedFilterOptions } from 'payload'\n\nimport type { Option } from '../../ReactSelect/index.js'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport './index.scss'\nimport { DefaultFilter } from './DefaultFilter/index.js'\n\nconst baseClass = 'condition'\n\nexport const Condition: React.FC<Props> = (props) => {\n const {\n addCondition,\n andIndex,\n fieldName,\n filterOptions,\n operator,\n orIndex,\n reducedFields,\n removeCondition,\n RenderedFilter,\n updateCondition,\n value,\n } = props\n\n const { t } = useTranslation()\n\n const reducedField = reducedFields.find((field) => field.value === fieldName)\n\n const [internalValue, setInternalValue] = useState<string>(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) => {\n if (operator) {\n await updateCondition({\n andIndex,\n field: reducedField,\n operator,\n orIndex,\n value: debouncedValue === null ? '' : debouncedValue,\n })\n }\n })\n\n useEffect(() => {\n void updateValue(debouncedValue)\n }, [debouncedValue])\n\n const disabled =\n (!reducedField?.value && typeof reducedField?.value !== 'number') ||\n reducedField?.field?.admin?.disableListFilter\n\n const handleFieldChange = useCallback(\n async (field: Option<string>) => {\n setInternalValue(undefined)\n await updateCondition({\n andIndex,\n field: reducedFields.find((option) => option.value === 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 await updateCondition({\n andIndex,\n field: reducedField,\n operator: operator.value,\n orIndex,\n value,\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}__inputs`}>\n <div className={`${baseClass}__field`}>\n <ReactSelect\n disabled={disabled}\n isClearable={false}\n onChange={handleFieldChange}\n options={reducedFields.filter((field) => !field.field.admin.disableListFilter)}\n value={\n reducedField || {\n value: reducedField?.value,\n }\n }\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 || reducedField?.field?.admin?.disableListFilter\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=\"icon-label\"\n className={`${baseClass}__actions-remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() =>\n removeCondition({\n andIndex,\n orIndex,\n })\n }\n round\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-add`}\n icon=\"plus\"\n iconStyle=\"with-border\"\n onClick={() =>\n addCondition({\n andIndex: andIndex + 1,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex,\n relation: 'and',\n })\n }\n round\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","useState","useDebounce","useEffectEvent","useTranslation","Button","ReactSelect","DefaultFilter","baseClass","Condition","props","addCondition","andIndex","fieldName","filterOptions","operator","orIndex","reducedFields","removeCondition","RenderedFilter","updateCondition","value","t","reducedField","find","field","internalValue","setInternalValue","debouncedValue","booleanSelect","includes","type","valueOptions","label","options","updateValue","disabled","admin","disableListFilter","handleFieldChange","undefined","option","handleOperatorChange","_jsx","className","_jsxs","isClearable","onChange","filter","operators","o","internalField","buttonStyle","icon","iconStyle","onClick","round","relation"],"sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { AddCondition, ReducedField, RemoveCondition, UpdateCondition } from '../types.js'\n\nexport type Props = {\n readonly addCondition: AddCondition\n readonly andIndex: number\n readonly fieldName: string\n readonly filterOptions: ResolvedFilterOptions\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 value: string\n}\n\nimport type { Operator, Option as PayloadOption, ResolvedFilterOptions } from 'payload'\n\nimport type { Option } from '../../ReactSelect/index.js'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.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 './index.scss'\n\nconst baseClass = 'condition'\n\nexport const Condition: React.FC<Props> = (props) => {\n const {\n addCondition,\n andIndex,\n fieldName,\n filterOptions,\n operator,\n orIndex,\n reducedFields,\n removeCondition,\n RenderedFilter,\n updateCondition,\n value,\n } = props\n\n const { t } = useTranslation()\n\n const reducedField = reducedFields.find((field) => field.value === fieldName)\n\n const [internalValue, setInternalValue] = useState<string>(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) => {\n if (operator) {\n await updateCondition({\n andIndex,\n field: reducedField,\n operator,\n orIndex,\n value: debouncedValue === null ? '' : debouncedValue,\n })\n }\n })\n\n useEffect(() => {\n void updateValue(debouncedValue)\n }, [debouncedValue])\n\n const disabled =\n (!reducedField?.value && typeof reducedField?.value !== 'number') ||\n reducedField?.field?.admin?.disableListFilter\n\n const handleFieldChange = useCallback(\n async (field: Option<string>) => {\n setInternalValue(undefined)\n await updateCondition({\n andIndex,\n field: reducedFields.find((option) => option.value === 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 await updateCondition({\n andIndex,\n field: reducedField,\n operator: operator.value,\n orIndex,\n value,\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}__inputs`}>\n <div className={`${baseClass}__field`}>\n <ReactSelect\n disabled={disabled}\n isClearable={false}\n onChange={handleFieldChange}\n options={reducedFields.filter((field) => !field.field.admin.disableListFilter)}\n value={\n reducedField || {\n value: reducedField?.value,\n }\n }\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 || reducedField?.field?.admin?.disableListFilter\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=\"icon-label\"\n className={`${baseClass}__actions-remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() =>\n removeCondition({\n andIndex,\n orIndex,\n })\n }\n round\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-add`}\n icon=\"plus\"\n iconStyle=\"with-border\"\n onClick={() =>\n addCondition({\n andIndex: andIndex + 1,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex,\n relation: 'and',\n })\n }\n round\n />\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -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,EAAkD,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAQnG,OAAO,cAAc,CAAA;AAIrB,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAsMpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAkD,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAUnG,OAAO,cAAc,CAAA;AAIrB,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA+LpD,CAAA"}
@@ -2,7 +2,6 @@
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { getTranslation } from '@payloadcms/translations';
5
- import { transformWhereQuery, validateWhereQuery } from 'payload/shared';
6
5
  import React, { useMemo } from 'react';
7
6
  import { useListQuery } from '../../providers/ListQuery/index.js';
8
7
  import { useTranslation } from '../../providers/Translation/index.js';
@@ -10,6 +9,8 @@ import { Button } from '../Button/index.js';
10
9
  import { Condition } from './Condition/index.js';
11
10
  import fieldTypes from './field-types.js';
12
11
  import { reduceFields } from './reduceFields.js';
12
+ import { transformWhereQuery } from './transformWhereQuery.js';
13
+ import validateWhereQuery from './validateWhereQuery.js';
13
14
  import './index.scss';
14
15
  const baseClass = 'where-builder';
15
16
  /**
@@ -85,25 +86,21 @@ export const WhereBuilder = props => {
85
86
  orIndex: orIndex_0,
86
87
  value: valueArg
87
88
  }) => {
88
- const existingCondition = conditions[orIndex_0].and[andIndex_0];
89
+ const existingRowCondition = conditions[orIndex_0].and[andIndex_0];
89
90
  const defaults = fieldTypes[field_0.field.type];
90
91
  const operator = incomingOperator || defaults.operators[0].value;
91
- if (typeof existingCondition === 'object' && field_0.value) {
92
- const value = valueArg ?? existingCondition?.[operator];
93
- const valueChanged = value !== existingCondition?.[field_0.value]?.[operator];
94
- const operatorChanged = operator !== Object.keys(existingCondition?.[field_0.value] || {})?.[0];
95
- if (valueChanged || operatorChanged) {
96
- const newRowCondition = {
97
- [field_0.value]: {
98
- [operator]: value
99
- }
100
- };
101
- const newConditions_0 = [...conditions];
102
- newConditions_0[orIndex_0].and[andIndex_0] = newRowCondition;
103
- await handleWhereChange({
104
- or: newConditions_0
105
- });
106
- }
92
+ if (typeof existingRowCondition === 'object' && field_0.value) {
93
+ const value = valueArg ?? existingRowCondition?.[operator];
94
+ const newRowCondition = {
95
+ [field_0.value]: {
96
+ [operator]: value
97
+ }
98
+ };
99
+ const newConditions_0 = [...conditions];
100
+ newConditions_0[orIndex_0].and[andIndex_0] = newRowCondition;
101
+ await handleWhereChange({
102
+ or: newConditions_0
103
+ });
107
104
  }
108
105
  }, [conditions, handleWhereChange]);
109
106
  const removeCondition = React.useCallback(async ({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","transformWhereQuery","validateWhereQuery","React","useMemo","useListQuery","useTranslation","Button","Condition","fieldTypes","reduceFields","baseClass","WhereBuilder","props","collectionPluralLabel","fields","renderedFilters","resolvedFilterOptions","i18n","t","reducedFields","handleWhereChange","query","conditions","whereFromSearch","where","or","transformedWhere","console","warn","JSON","stringify","addCondition","useCallback","andIndex","field","orIndex","relation","newConditions","defaultOperator","type","operators","value","and","splice","undefined","push","updateCondition","operator","incomingOperator","valueArg","existingCondition","defaults","valueChanged","operatorChanged","Object","keys","newRowCondition","removeCondition","length","_jsxs","className","Fragment","_jsx","label","map","compoundOrKey","Array","isArray","_","condition","fieldName","filterOptions","get","RenderedFilter","buttonStyle","icon","iconPosition","iconStyle","onClick","find","admin","disableListFilter"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport type { AddCondition, RemoveCondition, UpdateCondition, WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport fieldTypes from './field-types.js'\nimport { reduceFields } from './reduceFields.js'\nimport './index.scss'\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 * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fields, renderedFilters, resolvedFilterOptions } = props\n const { i18n, t } = useTranslation()\n\n const reducedFields = useMemo(() => reduceFields({ fields, i18n }), [fields, i18n])\n\n const { handleWhereChange, query } = useListQuery()\n\n const conditions = useMemo(() => {\n const whereFromSearch = query.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n }, [query.where])\n\n const addCondition: AddCondition = React.useCallback(\n async ({ andIndex, field, orIndex, relation }) => {\n const newConditions = [...conditions]\n\n const defaultOperator = fieldTypes[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [field.value]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [field.value]: {\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: valueArg }) => {\n const existingCondition = conditions[orIndex].and[andIndex]\n\n const defaults = fieldTypes[field.field.type]\n const operator = incomingOperator || defaults.operators[0].value\n\n if (typeof existingCondition === 'object' && field.value) {\n const value = valueArg ?? existingCondition?.[operator]\n\n const valueChanged = value !== existingCondition?.[field.value]?.[operator]\n\n const operatorChanged =\n operator !== Object.keys(existingCondition?.[field.value] || {})?.[0]\n\n if (valueChanged || operatorChanged) {\n const newRowCondition = {\n [field.value]: { [operator]: value },\n }\n\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n\n await handleWhereChange({ or: newConditions })\n }\n }\n },\n [conditions, handleWhereChange],\n )\n\n const removeCondition: RemoveCondition = React.useCallback(\n async ({ andIndex, orIndex }) => {\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 [conditions, handleWhereChange],\n )\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = conditions[orIndex].and[andIndex]\n const fieldName = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldName] || {})?.[0] as Operator) || undefined\n\n const value = condition?.[fieldName]?.[operator] || undefined\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={fieldName}\n filterOptions={resolvedFilterOptions?.get(fieldName)}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldName)}\n updateCondition={updateCondition}\n value={value}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n await addCondition({\n andIndex: 0,\n field: reducedFields[0],\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n if (reducedFields.length > 0) {\n await addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","useMemo","useListQuery","useTranslation","Button","Condition","fieldTypes","reduceFields","transformWhereQuery","validateWhereQuery","baseClass","WhereBuilder","props","collectionPluralLabel","fields","renderedFilters","resolvedFilterOptions","i18n","t","reducedFields","handleWhereChange","query","conditions","whereFromSearch","where","or","transformedWhere","console","warn","JSON","stringify","addCondition","useCallback","andIndex","field","orIndex","relation","newConditions","defaultOperator","type","operators","value","and","splice","undefined","push","updateCondition","operator","incomingOperator","valueArg","existingRowCondition","defaults","newRowCondition","removeCondition","length","_jsxs","className","Fragment","_jsx","label","map","compoundOrKey","Array","isArray","_","condition","fieldName","Object","keys","filterOptions","get","RenderedFilter","buttonStyle","icon","iconPosition","iconStyle","onClick","find","admin","disableListFilter"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useMemo } from 'react'\n\nimport type { AddCondition, RemoveCondition, UpdateCondition, WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport fieldTypes from './field-types.js'\nimport { reduceFields } from './reduceFields.js'\nimport { transformWhereQuery } from './transformWhereQuery.js'\nimport validateWhereQuery from './validateWhereQuery.js'\nimport './index.scss'\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 * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fields, renderedFilters, resolvedFilterOptions } = props\n const { i18n, t } = useTranslation()\n\n const reducedFields = useMemo(() => reduceFields({ fields, i18n }), [fields, i18n])\n\n const { handleWhereChange, query } = useListQuery()\n\n const conditions = useMemo(() => {\n const whereFromSearch = query.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n }, [query.where])\n\n const addCondition: AddCondition = React.useCallback(\n async ({ andIndex, field, orIndex, relation }) => {\n const newConditions = [...conditions]\n\n const defaultOperator = fieldTypes[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [field.value]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [field.value]: {\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: valueArg }) => {\n const existingRowCondition = conditions[orIndex].and[andIndex]\n\n const defaults = fieldTypes[field.field.type]\n const operator = incomingOperator || defaults.operators[0].value\n\n if (typeof existingRowCondition === 'object' && field.value) {\n const value = valueArg ?? existingRowCondition?.[operator]\n\n const newRowCondition = {\n [field.value]: { [operator]: value },\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 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 [conditions, handleWhereChange],\n )\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = conditions[orIndex].and[andIndex]\n const fieldName = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldName] || {})?.[0] as Operator) || undefined\n\n const value = condition?.[fieldName]?.[operator] || undefined\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={fieldName}\n filterOptions={resolvedFilterOptions?.get(fieldName)}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldName)}\n updateCondition={updateCondition}\n value={value}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n await addCondition({\n andIndex: 0,\n field: reducedFields[0],\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n if (reducedFields.length > 0) {\n await addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import type { Where } from 'payload';
2
+ /**
3
+ * Something like [or][0][and][0][text][equals]=example%20post will work and pass through the validateWhereQuery check.
4
+ * However, something like [text][equals]=example%20post will not work and will fail the validateWhereQuery check,
5
+ * even though it is a valid Where query. This needs to be transformed here.
6
+ */
7
+ export declare const transformWhereQuery: (whereQuery: any) => Where;
8
+ //# sourceMappingURL=transformWhereQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformWhereQuery.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/transformWhereQuery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,uBAAiB,KA2ChD,CAAA"}
@@ -0,0 +1,45 @@
1
+ 'use client';
2
+
3
+ /**
4
+ * Something like [or][0][and][0][text][equals]=example%20post will work and pass through the validateWhereQuery check.
5
+ * However, something like [text][equals]=example%20post will not work and will fail the validateWhereQuery check,
6
+ * even though it is a valid Where query. This needs to be transformed here.
7
+ */
8
+ export const transformWhereQuery = whereQuery => {
9
+ if (!whereQuery) {
10
+ return {};
11
+ }
12
+ // Check if 'whereQuery' has 'or' field but no 'and'. This is the case for "correct" queries
13
+ if (whereQuery.or && !whereQuery.and) {
14
+ return {
15
+ or: whereQuery.or.map(query => {
16
+ // ...but if the or query does not have an and, we need to add it
17
+ if (!query.and) {
18
+ return {
19
+ and: [query]
20
+ };
21
+ }
22
+ return query;
23
+ })
24
+ };
25
+ }
26
+ // Check if 'whereQuery' has 'and' field but no 'or'.
27
+ if (whereQuery.and && !whereQuery.or) {
28
+ return {
29
+ or: [{
30
+ and: whereQuery.and
31
+ }]
32
+ };
33
+ }
34
+ // Check if 'whereQuery' has neither 'or' nor 'and'.
35
+ if (!whereQuery.or && !whereQuery.and) {
36
+ return {
37
+ or: [{
38
+ and: [whereQuery]
39
+ }]
40
+ };
41
+ }
42
+ // If 'whereQuery' has 'or' and 'and', just return it as it is.
43
+ return whereQuery;
44
+ };
45
+ //# sourceMappingURL=transformWhereQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformWhereQuery.js","names":["transformWhereQuery","whereQuery","or","and","map","query"],"sources":["../../../src/elements/WhereBuilder/transformWhereQuery.ts"],"sourcesContent":["'use client'\nimport type { Where } from 'payload'\n\n/**\n * Something like [or][0][and][0][text][equals]=example%20post will work and pass through the validateWhereQuery check.\n * However, something like [text][equals]=example%20post will not work and will fail the validateWhereQuery check,\n * even though it is a valid Where query. This needs to be transformed here.\n */\nexport const transformWhereQuery = (whereQuery): Where => {\n if (!whereQuery) {\n return {}\n }\n // Check if 'whereQuery' has 'or' field but no 'and'. This is the case for \"correct\" queries\n if (whereQuery.or && !whereQuery.and) {\n return {\n or: whereQuery.or.map((query) => {\n // ...but if the or query does not have an and, we need to add it\n if (!query.and) {\n return {\n and: [query],\n }\n }\n return query\n }),\n }\n }\n\n // Check if 'whereQuery' has 'and' field but no 'or'.\n if (whereQuery.and && !whereQuery.or) {\n return {\n or: [\n {\n and: whereQuery.and,\n },\n ],\n }\n }\n\n // Check if 'whereQuery' has neither 'or' nor 'and'.\n if (!whereQuery.or && !whereQuery.and) {\n return {\n or: [\n {\n and: [whereQuery], // top-level siblings are considered 'and'\n },\n ],\n }\n }\n\n // If 'whereQuery' has 'or' and 'and', just return it as it is.\n return whereQuery\n}\n"],"mappings":"AAAA;;AAGA;;;;;AAKA,OAAO,MAAMA,mBAAA,GAAuBC,UAAA;EAClC,IAAI,CAACA,UAAA,EAAY;IACf,OAAO,CAAC;EACV;EACA;EACA,IAAIA,UAAA,CAAWC,EAAE,IAAI,CAACD,UAAA,CAAWE,GAAG,EAAE;IACpC,OAAO;MACLD,EAAA,EAAID,UAAA,CAAWC,EAAE,CAACE,GAAG,CAAEC,KAAA;QACrB;QACA,IAAI,CAACA,KAAA,CAAMF,GAAG,EAAE;UACd,OAAO;YACLA,GAAA,EAAK,CAACE,KAAA;UACR;QACF;QACA,OAAOA,KAAA;MACT;IACF;EACF;EAEA;EACA,IAAIJ,UAAA,CAAWE,GAAG,IAAI,CAACF,UAAA,CAAWC,EAAE,EAAE;IACpC,OAAO;MACLA,EAAA,EAAI,CACF;QACEC,GAAA,EAAKF,UAAA,CAAWE;MAClB;IAEJ;EACF;EAEA;EACA,IAAI,CAACF,UAAA,CAAWC,EAAE,IAAI,CAACD,UAAA,CAAWE,GAAG,EAAE;IACrC,OAAO;MACLD,EAAA,EAAI,CACF;QACEC,GAAA,EAAK,CAACF,UAAA;MACR;IAEJ;EACF;EAEA;EACA,OAAOA,UAAA;AACT","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import type { Where } from 'payload';
2
+ declare const validateWhereQuery: (whereQuery: any) => whereQuery is Where;
3
+ export default validateWhereQuery;
4
+ //# sourceMappingURL=validateWhereQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateWhereQuery.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/validateWhereQuery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,KAAK,EAAE,MAAM,SAAS,CAAA;AAI9C,QAAA,MAAM,kBAAkB,uBAAiB,UAAU,IAAI,KAwCtD,CAAA;AAED,eAAe,kBAAkB,CAAA"}