@payloadcms/ui 3.0.0-alpha.49 → 3.0.0-alpha.50

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 (442) hide show
  1. package/dist/elements/Autosave/index.d.ts.map +1 -1
  2. package/dist/elements/Autosave/index.js +2 -43
  3. package/dist/elements/Autosave/index.js.map +1 -1
  4. package/dist/elements/ColumnSelector/index.d.ts.map +1 -1
  5. package/dist/elements/ColumnSelector/index.js +2 -5
  6. package/dist/elements/ColumnSelector/index.js.map +1 -1
  7. package/dist/elements/DeleteDocument/index.js +2 -2
  8. package/dist/elements/DeleteDocument/index.js.map +1 -1
  9. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  10. package/dist/elements/DocumentControls/index.js +13 -4
  11. package/dist/elements/DocumentControls/index.js.map +1 -1
  12. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  13. package/dist/elements/DocumentDrawer/DrawerContent.js +31 -112
  14. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  15. package/dist/elements/DocumentDrawer/types.d.ts +0 -2
  16. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  17. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  18. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts +1 -0
  19. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
  20. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +8 -2
  21. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  22. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  23. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +1 -0
  24. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  25. package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  26. package/dist/elements/DocumentHeader/Tabs/index.js +4 -0
  27. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  28. package/dist/elements/EditMany/index.d.ts.map +1 -1
  29. package/dist/elements/EditMany/index.js +3 -25
  30. package/dist/elements/EditMany/index.js.map +1 -1
  31. package/dist/elements/FieldSelect/index.d.ts.map +1 -1
  32. package/dist/elements/FieldSelect/index.js +39 -12
  33. package/dist/elements/FieldSelect/index.js.map +1 -1
  34. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  35. package/dist/elements/FileDetails/index.js +2 -1
  36. package/dist/elements/FileDetails/index.js.map +1 -1
  37. package/dist/elements/ListControls/index.d.ts +0 -1
  38. package/dist/elements/ListControls/index.d.ts.map +1 -1
  39. package/dist/elements/ListControls/index.js +7 -6
  40. package/dist/elements/ListControls/index.js.map +1 -1
  41. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  42. package/dist/elements/ListDrawer/DrawerContent.js +5 -9
  43. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  44. package/dist/elements/Nav/index.client.d.ts +3 -0
  45. package/dist/elements/Nav/index.client.d.ts.map +1 -0
  46. package/dist/elements/Nav/index.client.js +77 -0
  47. package/dist/elements/Nav/index.client.js.map +1 -0
  48. package/dist/elements/Nav/index.d.ts +3 -7
  49. package/dist/elements/Nav/index.d.ts.map +1 -1
  50. package/dist/elements/Nav/index.js +4 -66
  51. package/dist/elements/Nav/index.js.map +1 -1
  52. package/dist/elements/PerPage/index.d.ts +1 -0
  53. package/dist/elements/PerPage/index.d.ts.map +1 -1
  54. package/dist/elements/PerPage/index.js +6 -4
  55. package/dist/elements/PerPage/index.js.map +1 -1
  56. package/dist/elements/PreviewButton/index.d.ts +4 -6
  57. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  58. package/dist/elements/PreviewButton/index.js +11 -65
  59. package/dist/elements/PreviewButton/index.js.map +1 -1
  60. package/dist/elements/PreviewButton/usePreviewURL.d.ts +9 -0
  61. package/dist/elements/PreviewButton/usePreviewURL.d.ts.map +1 -0
  62. package/dist/elements/PreviewButton/usePreviewURL.js +57 -0
  63. package/dist/elements/PreviewButton/usePreviewURL.js.map +1 -0
  64. package/dist/elements/Publish/index.d.ts +4 -2
  65. package/dist/elements/Publish/index.d.ts.map +1 -1
  66. package/dist/elements/Publish/index.js +15 -25
  67. package/dist/elements/Publish/index.js.map +1 -1
  68. package/dist/elements/ReactSelect/MultiValue/index.d.ts.map +1 -1
  69. package/dist/elements/ReactSelect/MultiValue/index.js +2 -1
  70. package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
  71. package/dist/elements/ReactSelect/ValueContainer/index.scss +4 -0
  72. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  73. package/dist/elements/ReactSelect/index.js +4 -1
  74. package/dist/elements/ReactSelect/index.js.map +1 -1
  75. package/dist/elements/ReactSelect/types.d.ts +2 -0
  76. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  77. package/dist/elements/ReactSelect/types.js.map +1 -1
  78. package/dist/elements/Save/index.d.ts +4 -2
  79. package/dist/elements/Save/index.d.ts.map +1 -1
  80. package/dist/elements/Save/index.js +7 -14
  81. package/dist/elements/Save/index.js.map +1 -1
  82. package/dist/elements/SaveDraft/index.d.ts +1 -2
  83. package/dist/elements/SaveDraft/index.d.ts.map +1 -1
  84. package/dist/elements/SaveDraft/index.js +33 -42
  85. package/dist/elements/SaveDraft/index.js.map +1 -1
  86. package/dist/elements/SortColumn/index.d.ts +3 -1
  87. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  88. package/dist/elements/SortColumn/index.js +5 -6
  89. package/dist/elements/SortColumn/index.js.map +1 -1
  90. package/dist/elements/Table/DefaultCell/fields/Array/index.d.ts +3 -3
  91. package/dist/elements/Table/DefaultCell/fields/Array/index.d.ts.map +1 -1
  92. package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
  93. package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts +4 -4
  94. package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts.map +1 -1
  95. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  96. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.d.ts +2 -2
  97. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.d.ts.map +1 -1
  98. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
  99. package/dist/elements/Table/DefaultCell/fields/Code/index.d.ts +2 -2
  100. package/dist/elements/Table/DefaultCell/fields/Code/index.d.ts.map +1 -1
  101. package/dist/elements/Table/DefaultCell/fields/Code/index.js.map +1 -1
  102. package/dist/elements/Table/DefaultCell/fields/Date/index.d.ts +2 -5
  103. package/dist/elements/Table/DefaultCell/fields/Date/index.d.ts.map +1 -1
  104. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  105. package/dist/elements/Table/DefaultCell/fields/File/index.d.ts +2 -2
  106. package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
  107. package/dist/elements/Table/DefaultCell/fields/File/index.js +4 -3
  108. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  109. package/dist/elements/Table/DefaultCell/fields/JSON/index.d.ts +2 -2
  110. package/dist/elements/Table/DefaultCell/fields/JSON/index.d.ts.map +1 -1
  111. package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
  112. package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts +4 -4
  113. package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
  114. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  115. package/dist/elements/Table/DefaultCell/fields/Select/index.d.ts +3 -3
  116. package/dist/elements/Table/DefaultCell/fields/Select/index.d.ts.map +1 -1
  117. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  118. package/dist/elements/Table/DefaultCell/fields/Textarea/index.d.ts +2 -2
  119. package/dist/elements/Table/DefaultCell/fields/Textarea/index.d.ts.map +1 -1
  120. package/dist/elements/Table/DefaultCell/fields/Textarea/index.js.map +1 -1
  121. package/dist/elements/Table/DefaultCell/fields/index.d.ts +4 -4
  122. package/dist/elements/Table/DefaultCell/index.d.ts +2 -2
  123. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  124. package/dist/elements/Table/DefaultCell/index.js +4 -2
  125. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  126. package/dist/elements/Table/TableCellProvider/index.d.ts +11 -11
  127. package/dist/elements/Table/TableCellProvider/index.d.ts.map +1 -1
  128. package/dist/elements/Table/TableCellProvider/index.js.map +1 -1
  129. package/dist/elements/Table/index.d.ts +8 -4
  130. package/dist/elements/Table/index.d.ts.map +1 -1
  131. package/dist/elements/Table/index.js +1 -0
  132. package/dist/elements/Table/index.js.map +1 -1
  133. package/dist/elements/TableColumns/{buildColumns.d.ts → buildColumnState.d.ts} +8 -6
  134. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -0
  135. package/dist/elements/TableColumns/{buildColumns.js → buildColumnState.js} +37 -13
  136. package/dist/elements/TableColumns/buildColumnState.js.map +1 -0
  137. package/dist/elements/TableColumns/filterFields.d.ts +3 -0
  138. package/dist/elements/TableColumns/filterFields.d.ts.map +1 -0
  139. package/dist/elements/TableColumns/filterFields.js +27 -0
  140. package/dist/elements/TableColumns/filterFields.js.map +1 -0
  141. package/dist/elements/TableColumns/getInitialColumns.d.ts +5 -0
  142. package/dist/elements/TableColumns/getInitialColumns.d.ts.map +1 -0
  143. package/dist/elements/TableColumns/getInitialColumns.js +48 -0
  144. package/dist/elements/TableColumns/getInitialColumns.js.map +1 -0
  145. package/dist/elements/TableColumns/index.d.ts +2 -2
  146. package/dist/elements/TableColumns/index.d.ts.map +1 -1
  147. package/dist/elements/TableColumns/index.js +11 -7
  148. package/dist/elements/TableColumns/index.js.map +1 -1
  149. package/dist/elements/Thumbnail/index.d.ts +6 -0
  150. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  151. package/dist/elements/Thumbnail/index.js +32 -16
  152. package/dist/elements/Thumbnail/index.js.map +1 -1
  153. package/dist/elements/ThumbnailCard/index.d.ts +1 -1
  154. package/dist/elements/ThumbnailCard/index.d.ts.map +1 -1
  155. package/dist/elements/ThumbnailCard/index.js +2 -6
  156. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  157. package/dist/elements/Tooltip/index.scss +4 -4
  158. package/dist/elements/Translation/index.d.ts.map +1 -1
  159. package/dist/elements/Translation/index.js +12 -9
  160. package/dist/elements/Translation/index.js.map +1 -1
  161. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  162. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +11 -7
  163. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  164. package/dist/elements/WhereBuilder/Condition/index.d.ts +21 -4
  165. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  166. package/dist/elements/WhereBuilder/Condition/index.js +45 -61
  167. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  168. package/dist/elements/WhereBuilder/Condition/index.scss +6 -0
  169. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  170. package/dist/elements/WhereBuilder/index.js +134 -55
  171. package/dist/elements/WhereBuilder/index.js.map +1 -1
  172. package/dist/elements/WhereBuilder/reduceFieldMap.d.ts +3 -0
  173. package/dist/elements/WhereBuilder/reduceFieldMap.d.ts.map +1 -0
  174. package/dist/elements/WhereBuilder/reduceFieldMap.js +36 -0
  175. package/dist/elements/WhereBuilder/reduceFieldMap.js.map +1 -0
  176. package/dist/elements/withMergedProps/index.js +1 -1
  177. package/dist/elements/withMergedProps/index.js.map +1 -1
  178. package/dist/fields/Array/ArrayRow.d.ts +2 -0
  179. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  180. package/dist/fields/Array/ArrayRow.js +3 -3
  181. package/dist/fields/Array/ArrayRow.js.map +1 -1
  182. package/dist/fields/Array/index.d.ts +1 -1
  183. package/dist/fields/Array/index.d.ts.map +1 -1
  184. package/dist/fields/Array/index.js +23 -8
  185. package/dist/fields/Array/index.js.map +1 -1
  186. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  187. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  188. package/dist/fields/Blocks/BlockRow.js +2 -3
  189. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  190. package/dist/fields/Blocks/index.d.ts +0 -1
  191. package/dist/fields/Blocks/index.d.ts.map +1 -1
  192. package/dist/fields/Blocks/index.js +17 -5
  193. package/dist/fields/Blocks/index.js.map +1 -1
  194. package/dist/fields/Checkbox/Input.d.ts +2 -1
  195. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  196. package/dist/fields/Checkbox/Input.js +3 -1
  197. package/dist/fields/Checkbox/Input.js.map +1 -1
  198. package/dist/fields/Checkbox/index.d.ts.map +1 -1
  199. package/dist/fields/Checkbox/index.js +6 -2
  200. package/dist/fields/Checkbox/index.js.map +1 -1
  201. package/dist/fields/Code/index.d.ts.map +1 -1
  202. package/dist/fields/Code/index.js +8 -3
  203. package/dist/fields/Code/index.js.map +1 -1
  204. package/dist/fields/Collapsible/index.d.ts +2 -1
  205. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  206. package/dist/fields/Collapsible/index.js +4 -3
  207. package/dist/fields/Collapsible/index.js.map +1 -1
  208. package/dist/fields/DateTime/index.d.ts.map +1 -1
  209. package/dist/fields/DateTime/index.js +7 -2
  210. package/dist/fields/DateTime/index.js.map +1 -1
  211. package/dist/fields/Email/index.d.ts.map +1 -1
  212. package/dist/fields/Email/index.js +7 -2
  213. package/dist/fields/Email/index.js.map +1 -1
  214. package/dist/fields/Group/index.d.ts +0 -1
  215. package/dist/fields/Group/index.d.ts.map +1 -1
  216. package/dist/fields/Group/index.js +9 -8
  217. package/dist/fields/Group/index.js.map +1 -1
  218. package/dist/fields/HiddenInput/index.d.ts +1 -0
  219. package/dist/fields/HiddenInput/index.d.ts.map +1 -1
  220. package/dist/fields/HiddenInput/index.js +4 -2
  221. package/dist/fields/HiddenInput/index.js.map +1 -1
  222. package/dist/fields/JSON/index.d.ts.map +1 -1
  223. package/dist/fields/JSON/index.js +8 -4
  224. package/dist/fields/JSON/index.js.map +1 -1
  225. package/dist/fields/Number/index.d.ts.map +1 -1
  226. package/dist/fields/Number/index.js +7 -2
  227. package/dist/fields/Number/index.js.map +1 -1
  228. package/dist/fields/Password/index.d.ts +0 -1
  229. package/dist/fields/Password/index.d.ts.map +1 -1
  230. package/dist/fields/Password/index.js +5 -2
  231. package/dist/fields/Password/index.js.map +1 -1
  232. package/dist/fields/Point/index.d.ts.map +1 -1
  233. package/dist/fields/Point/index.js +15 -10
  234. package/dist/fields/Point/index.js.map +1 -1
  235. package/dist/fields/RadioGroup/index.d.ts.map +1 -1
  236. package/dist/fields/RadioGroup/index.js +7 -2
  237. package/dist/fields/RadioGroup/index.js.map +1 -1
  238. package/dist/fields/Relationship/index.d.ts.map +1 -1
  239. package/dist/fields/Relationship/index.js +45 -14
  240. package/dist/fields/Relationship/index.js.map +1 -1
  241. package/dist/fields/Relationship/types.d.ts +3 -1
  242. package/dist/fields/Relationship/types.d.ts.map +1 -1
  243. package/dist/fields/Relationship/types.js.map +1 -1
  244. package/dist/fields/RichText/index.d.ts +2 -0
  245. package/dist/fields/RichText/index.d.ts.map +1 -1
  246. package/dist/fields/RichText/index.js.map +1 -1
  247. package/dist/fields/Row/index.d.ts.map +1 -1
  248. package/dist/fields/Row/index.js +2 -1
  249. package/dist/fields/Row/index.js.map +1 -1
  250. package/dist/fields/Select/index.d.ts +0 -1
  251. package/dist/fields/Select/index.d.ts.map +1 -1
  252. package/dist/fields/Select/index.js +8 -3
  253. package/dist/fields/Select/index.js.map +1 -1
  254. package/dist/fields/Tabs/index.d.ts +0 -1
  255. package/dist/fields/Tabs/index.d.ts.map +1 -1
  256. package/dist/fields/Tabs/index.js +2 -2
  257. package/dist/fields/Tabs/index.js.map +1 -1
  258. package/dist/fields/Text/Input.d.ts.map +1 -1
  259. package/dist/fields/Text/Input.js +4 -1
  260. package/dist/fields/Text/Input.js.map +1 -1
  261. package/dist/fields/Text/index.d.ts.map +1 -1
  262. package/dist/fields/Text/index.js +3 -1
  263. package/dist/fields/Text/index.js.map +1 -1
  264. package/dist/fields/Textarea/Input.d.ts.map +1 -1
  265. package/dist/fields/Textarea/Input.js +4 -1
  266. package/dist/fields/Textarea/Input.js.map +1 -1
  267. package/dist/fields/Textarea/index.d.ts.map +1 -1
  268. package/dist/fields/Textarea/index.js +3 -1
  269. package/dist/fields/Textarea/index.js.map +1 -1
  270. package/dist/fields/Upload/Input.d.ts.map +1 -1
  271. package/dist/fields/Upload/Input.js +10 -8
  272. package/dist/fields/Upload/Input.js.map +1 -1
  273. package/dist/fields/Upload/index.d.ts.map +1 -1
  274. package/dist/fields/Upload/index.js +6 -2
  275. package/dist/fields/Upload/index.js.map +1 -1
  276. package/dist/fields/shared/index.d.ts +1 -2
  277. package/dist/fields/shared/index.d.ts.map +1 -1
  278. package/dist/fields/shared/index.js.map +1 -1
  279. package/dist/forms/FieldDescription/index.d.ts +1 -2
  280. package/dist/forms/FieldDescription/index.d.ts.map +1 -1
  281. package/dist/forms/FieldDescription/index.js.map +1 -1
  282. package/dist/forms/FieldError/index.js +1 -1
  283. package/dist/forms/FieldError/index.js.map +1 -1
  284. package/dist/forms/FieldLabel/index.d.ts.map +1 -1
  285. package/dist/forms/FieldLabel/index.js +4 -4
  286. package/dist/forms/FieldLabel/index.js.map +1 -1
  287. package/dist/forms/FieldLabel/index.scss +1 -1
  288. package/dist/forms/FieldPropsProvider/index.d.ts +5 -0
  289. package/dist/forms/FieldPropsProvider/index.d.ts.map +1 -1
  290. package/dist/forms/FieldPropsProvider/index.js +5 -1
  291. package/dist/forms/FieldPropsProvider/index.js.map +1 -1
  292. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  293. package/dist/forms/Form/fieldReducer.js +6 -8
  294. package/dist/forms/Form/fieldReducer.js.map +1 -1
  295. package/dist/forms/Form/index.d.ts.map +1 -1
  296. package/dist/forms/Form/index.js +37 -20
  297. package/dist/forms/Form/index.js.map +1 -1
  298. package/dist/forms/Form/initContextState.d.ts.map +1 -1
  299. package/dist/forms/Form/initContextState.js +1 -0
  300. package/dist/forms/Form/initContextState.js.map +1 -1
  301. package/dist/forms/Form/mergeErrorPaths.d.ts +5 -0
  302. package/dist/forms/Form/mergeErrorPaths.d.ts.map +1 -0
  303. package/dist/forms/Form/mergeErrorPaths.js +29 -0
  304. package/dist/forms/Form/mergeErrorPaths.js.map +1 -0
  305. package/dist/forms/Form/mergeServerFormState.d.ts +1 -1
  306. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  307. package/dist/forms/Form/mergeServerFormState.js +36 -19
  308. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  309. package/dist/forms/Form/types.d.ts +8 -2
  310. package/dist/forms/Form/types.d.ts.map +1 -1
  311. package/dist/forms/Form/types.js.map +1 -1
  312. package/dist/forms/RenderFields/RenderField.d.ts +1 -0
  313. package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
  314. package/dist/forms/RenderFields/RenderField.js +12 -4
  315. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  316. package/dist/forms/RenderFields/index.d.ts.map +1 -1
  317. package/dist/forms/RenderFields/index.js +3 -3
  318. package/dist/forms/RenderFields/index.js.map +1 -1
  319. package/dist/forms/RenderFields/types.d.ts +1 -0
  320. package/dist/forms/RenderFields/types.d.ts.map +1 -1
  321. package/dist/forms/RenderFields/types.js.map +1 -1
  322. package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts +4 -3
  323. package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  324. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js +67 -42
  325. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
  326. package/dist/forms/buildStateFromSchema/calculateDefaultValues/index.d.ts +11 -0
  327. package/dist/forms/buildStateFromSchema/calculateDefaultValues/index.d.ts.map +1 -0
  328. package/dist/forms/buildStateFromSchema/calculateDefaultValues/index.js +13 -0
  329. package/dist/forms/buildStateFromSchema/calculateDefaultValues/index.js.map +1 -0
  330. package/dist/forms/buildStateFromSchema/calculateDefaultValues/iterateFields.d.ts +11 -0
  331. package/dist/forms/buildStateFromSchema/calculateDefaultValues/iterateFields.d.ts.map +1 -0
  332. package/dist/forms/buildStateFromSchema/calculateDefaultValues/iterateFields.js +16 -0
  333. package/dist/forms/buildStateFromSchema/calculateDefaultValues/iterateFields.js.map +1 -0
  334. package/dist/forms/buildStateFromSchema/calculateDefaultValues/promise.d.ts +12 -0
  335. package/dist/forms/buildStateFromSchema/calculateDefaultValues/promise.d.ts.map +1 -0
  336. package/dist/forms/buildStateFromSchema/calculateDefaultValues/promise.js +122 -0
  337. package/dist/forms/buildStateFromSchema/calculateDefaultValues/promise.js.map +1 -0
  338. package/dist/forms/buildStateFromSchema/index.d.ts +1 -0
  339. package/dist/forms/buildStateFromSchema/index.d.ts.map +1 -1
  340. package/dist/forms/buildStateFromSchema/index.js +10 -2
  341. package/dist/forms/buildStateFromSchema/index.js.map +1 -1
  342. package/dist/forms/buildStateFromSchema/iterateFields.d.ts +2 -2
  343. package/dist/forms/buildStateFromSchema/iterateFields.d.ts.map +1 -1
  344. package/dist/forms/buildStateFromSchema/iterateFields.js +4 -3
  345. package/dist/forms/buildStateFromSchema/iterateFields.js.map +1 -1
  346. package/dist/forms/useField/index.d.ts.map +1 -1
  347. package/dist/forms/useField/index.js +32 -12
  348. package/dist/forms/useField/index.js.map +1 -1
  349. package/dist/forms/useField/types.d.ts +1 -0
  350. package/dist/forms/useField/types.d.ts.map +1 -1
  351. package/dist/forms/useField/types.js.map +1 -1
  352. package/dist/forms/withCondition/WatchCondition.d.ts +3 -0
  353. package/dist/forms/withCondition/WatchCondition.d.ts.map +1 -1
  354. package/dist/forms/withCondition/WatchCondition.js +10 -2
  355. package/dist/forms/withCondition/WatchCondition.js.map +1 -1
  356. package/dist/forms/withCondition/index.js +4 -2
  357. package/dist/forms/withCondition/index.js.map +1 -1
  358. package/dist/hooks/usePayloadAPI.js +1 -1
  359. package/dist/hooks/usePayloadAPI.js.map +1 -1
  360. package/dist/hooks/useUseAsTitle.d.ts +3 -2
  361. package/dist/hooks/useUseAsTitle.d.ts.map +1 -1
  362. package/dist/hooks/useUseAsTitle.js +5 -6
  363. package/dist/hooks/useUseAsTitle.js.map +1 -1
  364. package/dist/providers/ClientFunction/index.d.ts.map +1 -1
  365. package/dist/providers/ClientFunction/index.js +27 -5
  366. package/dist/providers/ClientFunction/index.js.map +1 -1
  367. package/dist/providers/ComponentMap/buildComponentMap/{mapActions.d.ts → actions.d.ts} +1 -1
  368. package/dist/providers/ComponentMap/buildComponentMap/actions.d.ts.map +1 -0
  369. package/dist/providers/ComponentMap/buildComponentMap/{mapActions.js → actions.js} +1 -1
  370. package/dist/providers/ComponentMap/buildComponentMap/actions.js.map +1 -0
  371. package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts +13 -0
  372. package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts.map +1 -0
  373. package/dist/providers/ComponentMap/buildComponentMap/collections.js +74 -0
  374. package/dist/providers/ComponentMap/buildComponentMap/collections.js.map +1 -0
  375. package/dist/providers/ComponentMap/buildComponentMap/{mapFields.d.ts → fields.d.ts} +1 -1
  376. package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -0
  377. package/dist/providers/ComponentMap/buildComponentMap/{mapFields.js → fields.js} +43 -23
  378. package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -0
  379. package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts +12 -0
  380. package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts.map +1 -0
  381. package/dist/providers/ComponentMap/buildComponentMap/globals.js +49 -0
  382. package/dist/providers/ComponentMap/buildComponentMap/globals.js.map +1 -0
  383. package/dist/providers/ComponentMap/buildComponentMap/index.d.ts +2 -2
  384. package/dist/providers/ComponentMap/buildComponentMap/index.d.ts.map +1 -1
  385. package/dist/providers/ComponentMap/buildComponentMap/index.js +16 -83
  386. package/dist/providers/ComponentMap/buildComponentMap/index.js.map +1 -1
  387. package/dist/providers/ComponentMap/buildComponentMap/types.d.ts +8 -3
  388. package/dist/providers/ComponentMap/buildComponentMap/types.d.ts.map +1 -1
  389. package/dist/providers/ComponentMap/buildComponentMap/types.js.map +1 -1
  390. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  391. package/dist/providers/DocumentInfo/index.js +120 -96
  392. package/dist/providers/DocumentInfo/index.js.map +1 -1
  393. package/dist/providers/DocumentInfo/types.d.ts +12 -13
  394. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  395. package/dist/providers/DocumentInfo/types.js.map +1 -1
  396. package/dist/providers/EntityVisibility/index.d.ts +16 -0
  397. package/dist/providers/EntityVisibility/index.d.ts.map +1 -0
  398. package/dist/providers/EntityVisibility/index.js +25 -0
  399. package/dist/providers/EntityVisibility/index.js.map +1 -0
  400. package/dist/providers/ListInfo/index.d.ts +0 -1
  401. package/dist/providers/ListInfo/index.d.ts.map +1 -1
  402. package/dist/providers/ListInfo/index.js +2 -7
  403. package/dist/providers/ListInfo/index.js.map +1 -1
  404. package/dist/templates/Default/index.d.ts +2 -7
  405. package/dist/templates/Default/index.d.ts.map +1 -1
  406. package/dist/templates/Default/index.js +10 -12
  407. package/dist/templates/Default/index.js.map +1 -1
  408. package/dist/utilities/buildComponentMap.d.ts +1 -1
  409. package/dist/utilities/buildComponentMap.d.ts.map +1 -1
  410. package/dist/utilities/buildComponentMap.js +1 -1
  411. package/dist/utilities/buildComponentMap.js.map +1 -1
  412. package/dist/utilities/flattenFieldMap.d.ts +10 -0
  413. package/dist/utilities/flattenFieldMap.d.ts.map +1 -0
  414. package/dist/utilities/flattenFieldMap.js +33 -0
  415. package/dist/utilities/flattenFieldMap.js.map +1 -0
  416. package/dist/utilities/getFormState.d.ts +2 -0
  417. package/dist/utilities/getFormState.d.ts.map +1 -1
  418. package/dist/utilities/getFormState.js +8 -3
  419. package/dist/utilities/getFormState.js.map +1 -1
  420. package/package.json +10 -4
  421. package/dist/elements/TableColumns/buildColumns.d.ts.map +0 -1
  422. package/dist/elements/TableColumns/buildColumns.js.map +0 -1
  423. package/dist/elements/WhereBuilder/reducer.d.ts +0 -5
  424. package/dist/elements/WhereBuilder/reducer.d.ts.map +0 -1
  425. package/dist/elements/WhereBuilder/reducer.js +0 -78
  426. package/dist/elements/WhereBuilder/reducer.js.map +0 -1
  427. package/dist/forms/FieldDescription/types.d.ts +0 -8
  428. package/dist/forms/FieldDescription/types.d.ts.map +0 -1
  429. package/dist/forms/FieldDescription/types.js +0 -3
  430. package/dist/forms/FieldDescription/types.js.map +0 -1
  431. package/dist/hooks/useAdminThumbnail.d.ts +0 -3
  432. package/dist/hooks/useAdminThumbnail.d.ts.map +0 -1
  433. package/dist/hooks/useAdminThumbnail.js +0 -8
  434. package/dist/hooks/useAdminThumbnail.js.map +0 -1
  435. package/dist/hooks/useThumbnail.d.ts +0 -3
  436. package/dist/hooks/useThumbnail.d.ts.map +0 -1
  437. package/dist/hooks/useThumbnail.js +0 -45
  438. package/dist/hooks/useThumbnail.js.map +0 -1
  439. package/dist/providers/ComponentMap/buildComponentMap/mapActions.d.ts.map +0 -1
  440. package/dist/providers/ComponentMap/buildComponentMap/mapActions.js.map +0 -1
  441. package/dist/providers/ComponentMap/buildComponentMap/mapFields.d.ts.map +0 -1
  442. package/dist/providers/ComponentMap/buildComponentMap/mapFields.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/FieldLabel/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,cAAc,CAAA;AAuBrB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAQ3C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/FieldLabel/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,cAAc,CAAA;AA6BrB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAQ3C,CAAA"}
@@ -6,16 +6,16 @@ import { generateFieldID } from '../../utilities/generateFieldID.js';
6
6
  import { useFieldProps } from '../FieldPropsProvider/index.js';
7
7
  import { useForm } from '../Form/context.js';
8
8
  const DefaultFieldLabel = (props)=>{
9
- const { htmlFor: htmlForFromProps, label: labelFromProps, required = false } = props;
9
+ const { as: Element = 'label', htmlFor: htmlForFromProps, label: labelFromProps, required = false, unstyled = false } = props;
10
10
  const { uuid } = useForm();
11
11
  const { path } = useFieldProps();
12
12
  const htmlFor = htmlForFromProps || generateFieldID(path, uuid);
13
13
  const { i18n } = useTranslation();
14
14
  if (labelFromProps) {
15
- return /*#__PURE__*/ React.createElement("label", {
16
- className: "field-label",
15
+ return /*#__PURE__*/ React.createElement(Element, {
16
+ className: `field-label ${unstyled ? 'unstyled' : ''}`,
17
17
  htmlFor: htmlFor
18
- }, getTranslation(labelFromProps, i18n), required && /*#__PURE__*/ React.createElement("span", {
18
+ }, getTranslation(labelFromProps, i18n), required && !unstyled && /*#__PURE__*/ React.createElement("span", {
19
19
  className: "required"
20
20
  }, "*"));
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/FieldLabel/index.tsx"],"sourcesContent":["'use client'\nimport type { LabelProps } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { generateFieldID } from '../../utilities/generateFieldID.js'\nimport { useFieldProps } from '../FieldPropsProvider/index.js'\nimport { useForm } from '../Form/context.js'\nimport './index.scss'\n\nconst DefaultFieldLabel: React.FC<LabelProps> = (props) => {\n const { htmlFor: htmlForFromProps, label: labelFromProps, required = false } = props\n\n const { uuid } = useForm()\n const { path } = useFieldProps()\n const htmlFor = htmlForFromProps || generateFieldID(path, uuid)\n\n const { i18n } = useTranslation()\n\n if (labelFromProps) {\n return (\n <label className=\"field-label\" htmlFor={htmlFor}>\n {getTranslation(labelFromProps, i18n)}\n {required && <span className=\"required\">*</span>}\n </label>\n )\n }\n\n return null\n}\n\nexport const FieldLabel: React.FC<LabelProps> = (props) => {\n const { CustomLabel } = props\n\n if (CustomLabel !== undefined) {\n return CustomLabel\n }\n\n return <DefaultFieldLabel {...props} />\n}\n"],"names":["getTranslation","React","useTranslation","generateFieldID","useFieldProps","useForm","DefaultFieldLabel","props","htmlFor","htmlForFromProps","label","labelFromProps","required","uuid","path","i18n","className","span","FieldLabel","CustomLabel","undefined"],"mappings":"AAAA;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,WAAW,QAAO;AAEzB,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,iCAAgC;AAC9D,SAASC,OAAO,QAAQ,qBAAoB;AAG5C,MAAMC,oBAA0C,CAACC;IAC/C,MAAM,EAAEC,SAASC,gBAAgB,EAAEC,OAAOC,cAAc,EAAEC,WAAW,KAAK,EAAE,GAAGL;IAE/E,MAAM,EAAEM,IAAI,EAAE,GAAGR;IACjB,MAAM,EAAES,IAAI,EAAE,GAAGV;IACjB,MAAMI,UAAUC,oBAAoBN,gBAAgBW,MAAMD;IAE1D,MAAM,EAAEE,IAAI,EAAE,GAAGb;IAEjB,IAAIS,gBAAgB;QAClB,qBACE,oBAACD;YAAMM,WAAU;YAAcR,SAASA;WACrCR,eAAeW,gBAAgBI,OAC/BH,0BAAY,oBAACK;YAAKD,WAAU;WAAW;IAG9C;IAEA,OAAO;AACT;AAEA,OAAO,MAAME,aAAmC,CAACX;IAC/C,MAAM,EAAEY,WAAW,EAAE,GAAGZ;IAExB,IAAIY,gBAAgBC,WAAW;QAC7B,OAAOD;IACT;IAEA,qBAAO,oBAACb,mBAAsBC;AAChC,EAAC"}
1
+ {"version":3,"sources":["../../../src/forms/FieldLabel/index.tsx"],"sourcesContent":["'use client'\n\nimport type { LabelProps } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { generateFieldID } from '../../utilities/generateFieldID.js'\nimport { useFieldProps } from '../FieldPropsProvider/index.js'\nimport { useForm } from '../Form/context.js'\nimport './index.scss'\n\nconst DefaultFieldLabel: React.FC<LabelProps> = (props) => {\n const {\n as: Element = 'label',\n htmlFor: htmlForFromProps,\n label: labelFromProps,\n required = false,\n unstyled = false,\n } = props\n\n const { uuid } = useForm()\n const { path } = useFieldProps()\n const htmlFor = htmlForFromProps || generateFieldID(path, uuid)\n\n const { i18n } = useTranslation()\n\n if (labelFromProps) {\n return (\n <Element className={`field-label ${unstyled ? 'unstyled' : ''}`} htmlFor={htmlFor}>\n {getTranslation(labelFromProps, i18n)}\n {required && !unstyled && <span className=\"required\">*</span>}\n </Element>\n )\n }\n\n return null\n}\n\nexport const FieldLabel: React.FC<LabelProps> = (props) => {\n const { CustomLabel } = props\n\n if (CustomLabel !== undefined) {\n return CustomLabel\n }\n\n return <DefaultFieldLabel {...props} />\n}\n"],"names":["getTranslation","React","useTranslation","generateFieldID","useFieldProps","useForm","DefaultFieldLabel","props","as","Element","htmlFor","htmlForFromProps","label","labelFromProps","required","unstyled","uuid","path","i18n","className","span","FieldLabel","CustomLabel","undefined"],"mappings":"AAAA;AAIA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,WAAW,QAAO;AAEzB,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,iCAAgC;AAC9D,SAASC,OAAO,QAAQ,qBAAoB;AAG5C,MAAMC,oBAA0C,CAACC;IAC/C,MAAM,EACJC,IAAIC,UAAU,OAAO,EACrBC,SAASC,gBAAgB,EACzBC,OAAOC,cAAc,EACrBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EACjB,GAAGR;IAEJ,MAAM,EAAES,IAAI,EAAE,GAAGX;IACjB,MAAM,EAAEY,IAAI,EAAE,GAAGb;IACjB,MAAMM,UAAUC,oBAAoBR,gBAAgBc,MAAMD;IAE1D,MAAM,EAAEE,IAAI,EAAE,GAAGhB;IAEjB,IAAIW,gBAAgB;QAClB,qBACE,oBAACJ;YAAQU,WAAW,CAAC,YAAY,EAAEJ,WAAW,aAAa,GAAG,CAAC;YAAEL,SAASA;WACvEV,eAAea,gBAAgBK,OAC/BJ,YAAY,CAACC,0BAAY,oBAACK;YAAKD,WAAU;WAAW;IAG3D;IAEA,OAAO;AACT;AAEA,OAAO,MAAME,aAAmC,CAACd;IAC/C,MAAM,EAAEe,WAAW,EAAE,GAAGf;IAExB,IAAIe,gBAAgBC,WAAW;QAC7B,OAAOD;IACT;IAEA,qBAAO,oBAAChB,mBAAsBC;AAChC,EAAC"}
@@ -1,6 +1,6 @@
1
1
  @import '../../scss/styles.scss';
2
2
 
3
- label.field-label {
3
+ label.field-label:not(.unstyled) {
4
4
  @extend %body;
5
5
  display: flex;
6
6
  padding-bottom: base(0.25);
@@ -1,6 +1,8 @@
1
+ import type { FieldTypes } from 'payload/config';
1
2
  import type { FieldPermissions } from 'payload/types';
2
3
  import React from 'react';
3
4
  export type FieldPropsContextType = {
5
+ indexPath?: string;
4
6
  path: string;
5
7
  permissions?: FieldPermissions;
6
8
  readOnly: boolean;
@@ -8,9 +10,11 @@ export type FieldPropsContextType = {
8
10
  siblingPermissions: {
9
11
  [fieldName: string]: FieldPermissions;
10
12
  };
13
+ type: keyof FieldTypes;
11
14
  };
12
15
  export type Props = {
13
16
  children: React.ReactNode;
17
+ indexPath?: string;
14
18
  path: string;
15
19
  permissions?: FieldPermissions;
16
20
  readOnly: boolean;
@@ -18,6 +22,7 @@ export type Props = {
18
22
  siblingPermissions: {
19
23
  [fieldName: string]: FieldPermissions;
20
24
  };
25
+ type: keyof FieldTypes;
21
26
  };
22
27
  export declare const FieldPropsProvider: React.FC<Props>;
23
28
  export declare const useFieldProps: () => FieldPropsContextType;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/FieldPropsProvider/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE;QAClB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAAA;KACtC,CAAA;CACF,CAAA;AAUD,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE;QAClB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAAA;KACtC,CAAA;CACF,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAqB9C,CAAA;AAED,eAAO,MAAM,aAAa,6BAGzB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/FieldPropsProvider/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE;QAClB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAAA;KACtC,CAAA;IACD,IAAI,EAAE,MAAM,UAAU,CAAA;CACvB,CAAA;AAYD,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE;QAClB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAAA;KACtC,CAAA;IACD,IAAI,EAAE,MAAM,UAAU,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAyB9C,CAAA;AAED,eAAO,MAAM,aAAa,6BAGzB,CAAA"}
@@ -1,15 +1,19 @@
1
1
  'use client';
2
2
  import React from 'react';
3
3
  const FieldPropsContext = /*#__PURE__*/ React.createContext({
4
+ type: '',
5
+ indexPath: '',
4
6
  path: '',
5
7
  permissions: {},
6
8
  readOnly: false,
7
9
  schemaPath: '',
8
10
  siblingPermissions: {}
9
11
  });
10
- export const FieldPropsProvider = ({ children, path, permissions, readOnly, schemaPath, siblingPermissions })=>{
12
+ export const FieldPropsProvider = ({ type, children, indexPath, path, permissions, readOnly, schemaPath, siblingPermissions })=>{
11
13
  return /*#__PURE__*/ React.createElement(FieldPropsContext.Provider, {
12
14
  value: {
15
+ type,
16
+ indexPath,
13
17
  path,
14
18
  permissions,
15
19
  readOnly,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/FieldPropsProvider/index.tsx"],"sourcesContent":["'use client'\nimport type { FieldPermissions } from 'payload/types'\n\nimport React from 'react'\n\nexport type FieldPropsContextType = {\n path: string\n permissions?: FieldPermissions\n readOnly: boolean\n schemaPath: string\n siblingPermissions: {\n [fieldName: string]: FieldPermissions\n }\n}\n\nconst FieldPropsContext = React.createContext<FieldPropsContextType>({\n path: '',\n permissions: {} as FieldPermissions,\n readOnly: false,\n schemaPath: '',\n siblingPermissions: {},\n})\n\nexport type Props = {\n children: React.ReactNode\n path: string\n permissions?: FieldPermissions\n readOnly: boolean\n schemaPath: string\n siblingPermissions: {\n [fieldName: string]: FieldPermissions\n }\n}\n\nexport const FieldPropsProvider: React.FC<Props> = ({\n children,\n path,\n permissions,\n readOnly,\n schemaPath,\n siblingPermissions,\n}) => {\n return (\n <FieldPropsContext.Provider\n value={{\n path,\n permissions,\n readOnly,\n schemaPath,\n siblingPermissions,\n }}\n >\n {children}\n </FieldPropsContext.Provider>\n )\n}\n\nexport const useFieldProps = () => {\n const path = React.useContext(FieldPropsContext)\n return path\n}\n"],"names":["React","FieldPropsContext","createContext","path","permissions","readOnly","schemaPath","siblingPermissions","FieldPropsProvider","children","Provider","value","useFieldProps","useContext"],"mappings":"AAAA;AAGA,OAAOA,WAAW,QAAO;AAYzB,MAAMC,kCAAoBD,MAAME,aAAa,CAAwB;IACnEC,MAAM;IACNC,aAAa,CAAC;IACdC,UAAU;IACVC,YAAY;IACZC,oBAAoB,CAAC;AACvB;AAaA,OAAO,MAAMC,qBAAsC,CAAC,EAClDC,QAAQ,EACRN,IAAI,EACJC,WAAW,EACXC,QAAQ,EACRC,UAAU,EACVC,kBAAkB,EACnB;IACC,qBACE,oBAACN,kBAAkBS,QAAQ;QACzBC,OAAO;YACLR;YACAC;YACAC;YACAC;YACAC;QACF;OAECE;AAGP,EAAC;AAED,OAAO,MAAMG,gBAAgB;IAC3B,MAAMT,OAAOH,MAAMa,UAAU,CAACZ;IAC9B,OAAOE;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/forms/FieldPropsProvider/index.tsx"],"sourcesContent":["'use client'\nimport type { FieldTypes } from 'payload/config'\nimport type { FieldPermissions } from 'payload/types'\n\nimport React from 'react'\n\nexport type FieldPropsContextType = {\n indexPath?: string\n path: string\n permissions?: FieldPermissions\n readOnly: boolean\n schemaPath: string\n siblingPermissions: {\n [fieldName: string]: FieldPermissions\n }\n type: keyof FieldTypes\n}\n\nconst FieldPropsContext = React.createContext<FieldPropsContextType>({\n type: '' as keyof FieldTypes,\n indexPath: '',\n path: '',\n permissions: {} as FieldPermissions,\n readOnly: false,\n schemaPath: '',\n siblingPermissions: {},\n})\n\nexport type Props = {\n children: React.ReactNode\n indexPath?: string\n path: string\n permissions?: FieldPermissions\n readOnly: boolean\n schemaPath: string\n siblingPermissions: {\n [fieldName: string]: FieldPermissions\n }\n type: keyof FieldTypes\n}\n\nexport const FieldPropsProvider: React.FC<Props> = ({\n type,\n children,\n indexPath,\n path,\n permissions,\n readOnly,\n schemaPath,\n siblingPermissions,\n}) => {\n return (\n <FieldPropsContext.Provider\n value={{\n type,\n indexPath,\n path,\n permissions,\n readOnly,\n schemaPath,\n siblingPermissions,\n }}\n >\n {children}\n </FieldPropsContext.Provider>\n )\n}\n\nexport const useFieldProps = () => {\n const path = React.useContext(FieldPropsContext)\n return path\n}\n"],"names":["React","FieldPropsContext","createContext","type","indexPath","path","permissions","readOnly","schemaPath","siblingPermissions","FieldPropsProvider","children","Provider","value","useFieldProps","useContext"],"mappings":"AAAA;AAIA,OAAOA,WAAW,QAAO;AAczB,MAAMC,kCAAoBD,MAAME,aAAa,CAAwB;IACnEC,MAAM;IACNC,WAAW;IACXC,MAAM;IACNC,aAAa,CAAC;IACdC,UAAU;IACVC,YAAY;IACZC,oBAAoB,CAAC;AACvB;AAeA,OAAO,MAAMC,qBAAsC,CAAC,EAClDP,IAAI,EACJQ,QAAQ,EACRP,SAAS,EACTC,IAAI,EACJC,WAAW,EACXC,QAAQ,EACRC,UAAU,EACVC,kBAAkB,EACnB;IACC,qBACE,oBAACR,kBAAkBW,QAAQ;QACzBC,OAAO;YACLV;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;QACF;OAECE;AAGP,EAAC;AAED,OAAO,MAAMG,gBAAgB;IAC3B,MAAMT,OAAOL,MAAMe,UAAU,CAACd;IAC9B,OAAOI;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fieldReducer.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/fieldReducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,SAAS,EAAO,MAAM,eAAe,CAAA;AAM9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAO7C;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,CAgT7E"}
1
+ {"version":3,"file":"fieldReducer.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/fieldReducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,SAAS,EAAO,MAAM,eAAe,CAAA;AAM9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAO7C;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,CA4S7E"}
@@ -9,13 +9,13 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
9
9
  switch(action.type){
10
10
  case 'REPLACE_STATE':
11
11
  {
12
- const newState = {};
13
12
  if (action.optimize !== false) {
14
13
  // Only update fields that have changed
15
14
  // by comparing old value / initialValue to new
16
15
  // ..
17
16
  // This is a performance enhancement for saving
18
17
  // large documents with hundreds of fields
18
+ const newState = {};
19
19
  Object.entries(action.state).forEach(([path, field])=>{
20
20
  const oldField = state[path];
21
21
  const newField = field;
@@ -25,11 +25,10 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
25
25
  newState[path] = oldField;
26
26
  }
27
27
  });
28
- } else {
29
- // If we're not optimizing, just set the state to the new state
30
- return action.state;
28
+ return newState;
31
29
  }
32
- return newState;
30
+ // If we're not optimizing, just set the state to the new state
31
+ return action.state;
33
32
  }
34
33
  case 'REMOVE':
35
34
  {
@@ -93,7 +92,7 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
93
92
  ...state[path]?.rows || []
94
93
  ];
95
94
  const newRow = {
96
- id: new ObjectId().toHexString(),
95
+ id: subFieldState?.id?.value || new ObjectId().toHexString(),
97
96
  blockType: blockType || undefined,
98
97
  collapsed: false
99
98
  };
@@ -122,8 +121,7 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
122
121
  }
123
122
  case 'REPLACE_ROW':
124
123
  {
125
- const { blockType, path, rowIndex: rowIndexArg } = action;
126
- const subFieldState = {};
124
+ const { blockType, path, rowIndex: rowIndexArg, subFieldState = {} } = action;
127
125
  const { remainingFields, rows: siblingRows } = separateRows(path, state);
128
126
  const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0));
129
127
  const rowsMetadata = [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["import type { FormField, FormState, Row } from 'payload/types'\n\nimport ObjectIdImport from 'bson-objectid'\nimport equal from 'deep-equal'\nimport { deepCopyObject } from 'payload/utilities'\n\nimport type { FieldAction } from './types.js'\n\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\n/**\n * Reducer which modifies the form field state (all the current data of the fields in the form). When called using dispatch, it will return a new state object.\n */\nexport function fieldReducer(state: FormState, action: FieldAction): FormState {\n switch (action.type) {\n case 'REPLACE_STATE': {\n const newState = {}\n\n if (action.optimize !== false) {\n // Only update fields that have changed\n // by comparing old value / initialValue to new\n // ..\n // This is a performance enhancement for saving\n // large documents with hundreds of fields\n\n Object.entries(action.state).forEach(([path, field]) => {\n const oldField = state[path]\n const newField = field\n\n if (!equal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n })\n } else {\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n return newState\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) delete newState[action.path]\n return newState\n }\n\n case 'UPDATE': {\n const newField = Object.entries(action).reduce(\n (field, [key, value]) => {\n if (\n [\n 'disableFormData',\n 'errorMessage',\n 'initialValue',\n 'rows',\n 'valid',\n 'validate',\n 'value',\n ].includes(key)\n ) {\n return {\n ...field,\n [key]: value,\n }\n }\n\n return field\n },\n state[action.path] || ({} as FormField),\n )\n\n const newState = {\n ...state,\n [action.path]: newField,\n }\n\n return newState\n }\n\n case 'REMOVE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path]?.rows || [])]\n\n rows.splice(rowIndex, 1)\n rowsMetadata.splice(rowIndex, 1)\n\n const newState: FormState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: rows.length > 0,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'ADD_ROW': {\n const { blockType, path, rowIndex: rowIndexFromArgs, subFieldState = {} } = action\n\n const rowIndex =\n typeof rowIndexFromArgs === 'number' ? rowIndexFromArgs : state[path]?.rows?.length || 0\n\n const withNewRow = [...(state[path]?.rows || [])]\n\n const newRow: Row = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n withNewRow.splice(rowIndex, 0, newRow)\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // add new row to array _field state_\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'REPLACE_ROW': {\n const { blockType, path, rowIndex: rowIndexArg } = action\n const subFieldState: FormState = {}\n\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0))\n\n const rowsMetadata = [...(state[path]?.rows || [])]\n rowsMetadata[rowIndex] = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // replace form _field state_\n siblingRows[rowIndex] = subFieldState\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = state[path]?.rows || []\n\n const duplicateRowMetadata = deepCopyObject(rowsMetadata[rowIndex])\n if (duplicateRowMetadata.id) duplicateRowMetadata.id = new ObjectId().toHexString()\n\n const duplicateRowState = deepCopyObject(rows[rowIndex])\n if (duplicateRowState.id) duplicateRowState.id = new ObjectId().toHexString()\n\n // If there are subfields\n if (Object.keys(duplicateRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, duplicateRowState)\n rowsMetadata.splice(rowIndex + 1, 0, duplicateRowMetadata)\n }\n\n const newState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n const { remainingFields, rows } = separateRows(path, state)\n\n // copy the row to move\n const copyOfMovingRow = rows[moveFromIndex]\n // delete the row by index\n rows.splice(moveFromIndex, 1)\n // insert row copyOfMovingRow back in\n rows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowStateCopy = [...(state[path]?.rows || [])]\n const movingRowState = { ...rowStateCopy[moveFromIndex] }\n rowStateCopy.splice(moveFromIndex, 1)\n rowStateCopy.splice(moveToIndex, 0, movingRowState)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n rows: rowStateCopy,\n },\n }\n\n return newState\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { collapsed, path, rowID, setDocFieldPreferences } = action\n\n const arrayState = state[path]\n\n const { collapsedRowIDs, matchedIndex } = state[path].rows.reduce(\n (acc, row, index) => {\n const isMatchingRow = row.id === rowID\n if (isMatchingRow) acc.matchedIndex = index\n\n if (!isMatchingRow && row.collapsed) acc.collapsedRowIDs.push(row.id)\n else if (isMatchingRow && collapsed) acc.collapsedRowIDs.push(row.id)\n\n return acc\n },\n {\n collapsedRowIDs: [],\n matchedIndex: undefined,\n },\n )\n\n if (matchedIndex > -1) {\n arrayState.rows[matchedIndex].collapsed = collapsed\n setDocFieldPreferences(path, { collapsed: collapsedRowIDs })\n }\n\n const newState = {\n ...state,\n [path]: {\n ...arrayState,\n },\n }\n\n return newState\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { collapsed, path, setDocFieldPreferences } = action\n\n const { collapsedRowIDs, rows } = state[path].rows.reduce(\n (acc, row) => {\n if (collapsed) acc.collapsedRowIDs.push(row.id)\n\n acc.rows.push({\n ...row,\n collapsed,\n })\n\n return acc\n },\n {\n collapsedRowIDs: [],\n rows: [],\n },\n )\n\n setDocFieldPreferences(path, { collapsed: collapsedRowIDs })\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows,\n },\n }\n }\n\n default: {\n return state\n }\n }\n}\n"],"names":["ObjectIdImport","equal","deepCopyObject","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","newState","optimize","Object","entries","forEach","path","field","oldField","newField","reduce","key","value","includes","rowIndex","remainingFields","rows","rowsMetadata","splice","disableFormData","length","blockType","rowIndexFromArgs","subFieldState","withNewRow","newRow","id","toHexString","undefined","collapsed","initialValue","valid","siblingRows","rowIndexArg","Math","max","min","duplicateRowMetadata","duplicateRowState","keys","moveFromIndex","moveToIndex","copyOfMovingRow","rowStateCopy","movingRowState","rowID","setDocFieldPreferences","arrayState","collapsedRowIDs","matchedIndex","acc","row","index","isMatchingRow","push"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["import type { FormField, FormState, Row } from 'payload/types'\n\nimport ObjectIdImport from 'bson-objectid'\nimport equal from 'deep-equal'\nimport { deepCopyObject } from 'payload/utilities'\n\nimport type { FieldAction } from './types.js'\n\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\n/**\n * Reducer which modifies the form field state (all the current data of the fields in the form). When called using dispatch, it will return a new state object.\n */\nexport function fieldReducer(state: FormState, action: FieldAction): FormState {\n switch (action.type) {\n case 'REPLACE_STATE': {\n if (action.optimize !== false) {\n // Only update fields that have changed\n // by comparing old value / initialValue to new\n // ..\n // This is a performance enhancement for saving\n // large documents with hundreds of fields\n const newState = {}\n\n Object.entries(action.state).forEach(([path, field]) => {\n const oldField = state[path]\n const newField = field\n\n if (!equal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n })\n return newState\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) delete newState[action.path]\n return newState\n }\n\n case 'UPDATE': {\n const newField = Object.entries(action).reduce(\n (field, [key, value]) => {\n if (\n [\n 'disableFormData',\n 'errorMessage',\n 'initialValue',\n 'rows',\n 'valid',\n 'validate',\n 'value',\n ].includes(key)\n ) {\n return {\n ...field,\n [key]: value,\n }\n }\n\n return field\n },\n state[action.path] || ({} as FormField),\n )\n\n const newState = {\n ...state,\n [action.path]: newField,\n }\n\n return newState\n }\n\n case 'REMOVE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path]?.rows || [])]\n\n rows.splice(rowIndex, 1)\n rowsMetadata.splice(rowIndex, 1)\n\n const newState: FormState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: rows.length > 0,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'ADD_ROW': {\n const { blockType, path, rowIndex: rowIndexFromArgs, subFieldState = {} } = action\n\n const rowIndex =\n typeof rowIndexFromArgs === 'number' ? rowIndexFromArgs : state[path]?.rows?.length || 0\n\n const withNewRow = [...(state[path]?.rows || [])]\n\n const newRow: Row = {\n id: (subFieldState?.id?.value as string) || new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n withNewRow.splice(rowIndex, 0, newRow)\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // add new row to array _field state_\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'REPLACE_ROW': {\n const { blockType, path, rowIndex: rowIndexArg, subFieldState = {} } = action\n\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0))\n\n const rowsMetadata = [...(state[path]?.rows || [])]\n rowsMetadata[rowIndex] = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // replace form _field state_\n siblingRows[rowIndex] = subFieldState\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = state[path]?.rows || []\n\n const duplicateRowMetadata = deepCopyObject(rowsMetadata[rowIndex])\n if (duplicateRowMetadata.id) duplicateRowMetadata.id = new ObjectId().toHexString()\n\n const duplicateRowState = deepCopyObject(rows[rowIndex])\n if (duplicateRowState.id) duplicateRowState.id = new ObjectId().toHexString()\n\n // If there are subfields\n if (Object.keys(duplicateRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, duplicateRowState)\n rowsMetadata.splice(rowIndex + 1, 0, duplicateRowMetadata)\n }\n\n const newState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n const { remainingFields, rows } = separateRows(path, state)\n\n // copy the row to move\n const copyOfMovingRow = rows[moveFromIndex]\n // delete the row by index\n rows.splice(moveFromIndex, 1)\n // insert row copyOfMovingRow back in\n rows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowStateCopy = [...(state[path]?.rows || [])]\n const movingRowState = { ...rowStateCopy[moveFromIndex] }\n rowStateCopy.splice(moveFromIndex, 1)\n rowStateCopy.splice(moveToIndex, 0, movingRowState)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n rows: rowStateCopy,\n },\n }\n\n return newState\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { collapsed, path, rowID, setDocFieldPreferences } = action\n\n const arrayState = state[path]\n\n const { collapsedRowIDs, matchedIndex } = state[path].rows.reduce(\n (acc, row, index) => {\n const isMatchingRow = row.id === rowID\n if (isMatchingRow) acc.matchedIndex = index\n\n if (!isMatchingRow && row.collapsed) acc.collapsedRowIDs.push(row.id)\n else if (isMatchingRow && collapsed) acc.collapsedRowIDs.push(row.id)\n\n return acc\n },\n {\n collapsedRowIDs: [],\n matchedIndex: undefined,\n },\n )\n\n if (matchedIndex > -1) {\n arrayState.rows[matchedIndex].collapsed = collapsed\n setDocFieldPreferences(path, { collapsed: collapsedRowIDs })\n }\n\n const newState = {\n ...state,\n [path]: {\n ...arrayState,\n },\n }\n\n return newState\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { collapsed, path, setDocFieldPreferences } = action\n\n const { collapsedRowIDs, rows } = state[path].rows.reduce(\n (acc, row) => {\n if (collapsed) acc.collapsedRowIDs.push(row.id)\n\n acc.rows.push({\n ...row,\n collapsed,\n })\n\n return acc\n },\n {\n collapsedRowIDs: [],\n rows: [],\n },\n )\n\n setDocFieldPreferences(path, { collapsed: collapsedRowIDs })\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows,\n },\n }\n }\n\n default: {\n return state\n }\n }\n}\n"],"names":["ObjectIdImport","equal","deepCopyObject","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","optimize","newState","Object","entries","forEach","path","field","oldField","newField","reduce","key","value","includes","rowIndex","remainingFields","rows","rowsMetadata","splice","disableFormData","length","blockType","rowIndexFromArgs","subFieldState","withNewRow","newRow","id","toHexString","undefined","collapsed","initialValue","valid","siblingRows","rowIndexArg","Math","max","min","duplicateRowMetadata","duplicateRowState","keys","moveFromIndex","moveToIndex","copyOfMovingRow","rowStateCopy","movingRowState","rowID","setDocFieldPreferences","arrayState","collapsedRowIDs","matchedIndex","acc","row","index","isMatchingRow","push"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAEV,SAAS,EAGV,MAAM,YAAY,CAAA;AA+BnB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA4hBpC,CAAA;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAEV,SAAS,EAGV,MAAM,YAAY,CAAA;AA+BnB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAojBpC,CAAA;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -28,8 +28,8 @@ import { mergeServerFormState } from './mergeServerFormState.js';
28
28
  const baseClass = 'form';
29
29
  export const Form = (props)=>{
30
30
  const { id, collectionSlug, globalSlug } = useDocumentInfo();
31
- const { action, children, className, disableSuccessStatus, disabled, // fields: fieldsFromProps = collection?.fields || global?.fields,
32
- beforeSubmit, handleResponse, initialState, onChange, onSubmit, onSuccess, redirect, submitted: submittedFromProps, uuid, waitForAutocomplete } = props;
31
+ const { action, beforeSubmit, children, className, disableSuccessStatus, disableValidationOnSubmit, disabled: disabledFromProps, // fields: fieldsFromProps = collection?.fields || global?.fields,
32
+ handleResponse, initialState, onChange, onSubmit, onSuccess, redirect, submitted: submittedFromProps, uuid, waitForAutocomplete } = props;
33
33
  const method = 'method' in props ? props?.method : undefined;
34
34
  const router = useRouter();
35
35
  const { code: locale } = useLocale();
@@ -39,6 +39,7 @@ export const Form = (props)=>{
39
39
  const { formQueryParams } = useFormQueryParams();
40
40
  const config = useConfig();
41
41
  const { routes: { api: apiRoute }, serverURL } = config;
42
+ const [disabled, setDisabled] = useState(disabledFromProps || false);
42
43
  const [modified, setModified] = useState(false);
43
44
  const [processing, setProcessing] = useState(false);
44
45
  const [submitted, setSubmitted] = useState(false);
@@ -56,12 +57,9 @@ export const Form = (props)=>{
56
57
  const dataFromContext = contextRef.current.getData();
57
58
  const data = dataFromContext;
58
59
  const validationPromises = Object.entries(contextRef.current.fields).map(async ([path, field])=>{
59
- const validatedField = {
60
- ...field,
61
- valid: true
62
- };
60
+ const validatedField = field;
63
61
  if (field.passesCondition !== false) {
64
- let validationResult = true;
62
+ let validationResult = validatedField.valid;
65
63
  if (typeof field.validate === 'function') {
66
64
  let valueToValidate = field.value;
67
65
  if (field?.rows && Array.isArray(field.rows)) {
@@ -76,10 +74,15 @@ export const Form = (props)=>{
76
74
  t,
77
75
  user
78
76
  });
77
+ if (typeof validationResult === 'string') {
78
+ validatedField.errorMessage = validationResult;
79
+ validatedField.valid = false;
80
+ } else {
81
+ validatedField.valid = true;
82
+ validatedField.errorMessage = undefined;
83
+ }
79
84
  }
80
- if (typeof validationResult === 'string') {
81
- validatedField.errorMessage = validationResult;
82
- validatedField.valid = false;
85
+ if (validatedField.valid === false) {
83
86
  isValid = false;
84
87
  }
85
88
  }
@@ -114,7 +117,7 @@ export const Form = (props)=>{
114
117
  e.preventDefault();
115
118
  }
116
119
  setProcessing(true);
117
- setSubmitted(true);
120
+ setDisabled(true);
118
121
  if (waitForAutocomplete) await wait(100);
119
122
  // Execute server side validations
120
123
  if (Array.isArray(beforeSubmit)) {
@@ -129,17 +132,21 @@ export const Form = (props)=>{
129
132
  const isValid = Object.entries(revalidatedFormState).every(([, field])=>field.valid);
130
133
  if (!isValid) {
131
134
  setProcessing(false);
135
+ setSubmitted(true);
136
+ setDisabled(false);
132
137
  return dispatchFields({
133
138
  type: 'REPLACE_STATE',
134
139
  state: revalidatedFormState
135
140
  });
136
141
  }
137
142
  }
138
- const isValid = skipValidation ? true : await contextRef.current.validateForm();
143
+ const isValid = skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm();
139
144
  // If not valid, prevent submission
140
145
  if (!isValid) {
141
146
  toast.error(t('error:correctInvalidFields'));
142
147
  setProcessing(false);
148
+ setSubmitted(true);
149
+ setDisabled(false);
143
150
  return;
144
151
  }
145
152
  // If submit handler comes through via props, run that
@@ -167,19 +174,20 @@ export const Form = (props)=>{
167
174
  res = await action(formData);
168
175
  }
169
176
  setModified(false);
177
+ setDisabled(false);
170
178
  if (typeof handleResponse === 'function') {
171
179
  handleResponse(res);
172
180
  return;
173
181
  }
174
- setProcessing(false);
175
182
  const contentType = res.headers.get('content-type');
176
183
  const isJSON = contentType && contentType.indexOf('application/json') !== -1;
177
184
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
178
185
  let json = {};
179
186
  if (isJSON) json = await res.json();
180
187
  if (res.status < 400) {
188
+ if (typeof onSuccess === 'function') await onSuccess(json);
181
189
  setSubmitted(false);
182
- if (typeof onSuccess === 'function') onSuccess(json);
190
+ setProcessing(false);
183
191
  if (redirect) {
184
192
  router.push(redirect);
185
193
  } else if (!disableSuccessStatus) {
@@ -188,6 +196,8 @@ export const Form = (props)=>{
188
196
  });
189
197
  }
190
198
  } else {
199
+ setProcessing(false);
200
+ setSubmitted(true);
191
201
  contextRef.current = {
192
202
  ...contextRef.current
193
203
  } // triggers rerender of all components that subscribe to form
@@ -245,11 +255,15 @@ export const Form = (props)=>{
245
255
  }
246
256
  } catch (err) {
247
257
  setProcessing(false);
258
+ setSubmitted(true);
259
+ setDisabled(false);
248
260
  toast.error(err);
249
261
  }
250
262
  }, [
263
+ beforeSubmit,
251
264
  action,
252
265
  disableSuccessStatus,
266
+ disableValidationOnSubmit,
253
267
  disabled,
254
268
  dispatchFields,
255
269
  fields,
@@ -262,7 +276,6 @@ export const Form = (props)=>{
262
276
  t,
263
277
  i18n,
264
278
  waitForAutocomplete,
265
- beforeSubmit,
266
279
  formQueryParams
267
280
  ]);
268
281
  const getFields = useCallback(()=>contextRef.current.fields, []);
@@ -405,6 +418,7 @@ export const Form = (props)=>{
405
418
  contextRef.current.setProcessing = setProcessing;
406
419
  contextRef.current.setSubmitted = setSubmitted;
407
420
  contextRef.current.disabled = disabled;
421
+ contextRef.current.setDisabled = setDisabled;
408
422
  contextRef.current.formRef = formRef;
409
423
  contextRef.current.reset = reset;
410
424
  contextRef.current.replaceState = replaceState;
@@ -453,13 +467,13 @@ export const Form = (props)=>{
453
467
  useDebouncedEffect(()=>{
454
468
  const executeOnChange = async ()=>{
455
469
  if (Array.isArray(onChange)) {
456
- let revalidatedFormState = fields;
470
+ let revalidatedFormState = contextRef.current.fields;
457
471
  for (const onChangeFn of onChange){
458
472
  revalidatedFormState = await onChangeFn({
459
473
  formState: revalidatedFormState
460
474
  });
461
475
  }
462
- const { changed, newState } = mergeServerFormState(fields || {}, revalidatedFormState);
476
+ const { changed, newState } = mergeServerFormState(contextRef.current.fields || {}, revalidatedFormState);
463
477
  if (changed) {
464
478
  dispatchFields({
465
479
  type: 'REPLACE_STATE',
@@ -470,10 +484,13 @@ export const Form = (props)=>{
470
484
  }
471
485
  };
472
486
  if (modified) void executeOnChange();
473
- }, 150, [
474
- fields,
487
+ }, 150, // Make sure we trigger this whenever modified changes (not just when `fields` changes), otherwise we will miss merging server form state for the first form update/onChange. Here's why:
488
+ // `fields` updates before `modified`, because setModified is in a setTimeout. So on the first change, modified is false, so we don't trigger the effect even though we should.
489
+ [
490
+ contextRef.current.fields,
475
491
  dispatchFields,
476
- onChange
492
+ onChange,
493
+ modified
477
494
  ]);
478
495
  const actionString = typeof action === 'string' ? `${action}${QueryString.stringify(formQueryParams, {
479
496
  addQueryPrefix: true
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload/types'\n\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\nimport isDeepEqual from 'deep-equal'\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport { wait } from 'payload/utilities'\nimport QueryString from 'qs'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport type {\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport useThrottledEffect from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { reduceFieldsToValues } from '../../utilities/reduceFieldsToValues.js'\nimport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { getDataByPath as getDataByPathFunc } from './getDataByPath.js'\nimport { getSiblingData as getSiblingDataFunc } from './getSiblingData.js'\nimport { initContextState } from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n action,\n children,\n className,\n disableSuccessStatus,\n disabled,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n beforeSubmit,\n handleResponse,\n initialState, // fully formed initial field state\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { formQueryParams } = useFormQueryParams()\n\n const config = useConfig()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const [modified, setModified] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const dataFromContext = contextRef.current.getData()\n const data = dataFromContext\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = {\n ...field,\n valid: true,\n }\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = true\n\n if (typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n id,\n config,\n data,\n operation,\n siblingData: contextRef.current.getSiblingData(path),\n t,\n user,\n })\n }\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!isDeepEqual(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n return isValid\n }, [id, user, operation, t, dispatchFields, config])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg,\n method: methodToUse = method,\n overrides = {},\n skipValidation,\n } = options\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n setProcessing(true)\n setSubmitted(true)\n\n if (waitForAutocomplete) await wait(100)\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: fields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(([, field]) => field.valid)\n\n if (!isValid) {\n setProcessing(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid = skipValidation ? true : await contextRef.current.validateForm()\n\n // If not valid, prevent submission\n if (!isValid) {\n toast.error(t('error:correctInvalidFields'))\n setProcessing(false)\n\n return\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const data = {\n ...reduceFieldsToValues(fields, true),\n ...overrides,\n }\n\n onSubmit(fields, data)\n }\n\n const formData = contextRef.current.createFormData(overrides)\n\n try {\n let res\n const actionEndpoint =\n actionArg ||\n (typeof action === 'string'\n ? `${action}${QueryString.stringify(formQueryParams, { addQueryPrefix: true })}`\n : null)\n\n if (actionEndpoint) {\n res = await requests[methodToUse.toLowerCase()](actionEndpoint, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res)\n return\n }\n\n setProcessing(false)\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) json = await res.json()\n\n if (res.status < 400) {\n setSubmitted(false)\n\n if (typeof onSuccess === 'function') onSuccess(json)\n\n if (redirect) {\n router.push(redirect)\n } else if (!disableSuccessStatus) {\n toast.success(json.message || t('general:submissionSuccessful'), { autoClose: 3000 })\n }\n } else {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n toast.error(json.message)\n\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data)) {\n err.data.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n fieldErrors.forEach((err) => {\n dispatchFields({\n type: 'UPDATE',\n ...(contextRef.current?.fields?.[err.field] || {}),\n errorMessage: err.message,\n path: err.field,\n valid: false,\n })\n })\n\n nonFieldErrors.forEach((err) => {\n toast.error(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n toast.error(message)\n }\n } catch (err) {\n setProcessing(false)\n\n toast.error(err)\n }\n },\n [\n action,\n disableSuccessStatus,\n disabled,\n dispatchFields,\n fields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n beforeSubmit,\n formQueryParams,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const createFormData = useCallback((overrides: any = {}) => {\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n }, [])\n\n const reset = useCallback(\n async (data: unknown) => {\n const newState = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n data,\n globalSlug,\n operation,\n schemaPath: collectionSlug || globalSlug,\n },\n serverURL,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n },\n [apiRoute, collectionSlug, dispatchFields, globalSlug, id, operation, serverURL],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const getFieldStateBySchemaPath = useCallback(\n async ({ data, schemaPath }) => {\n const fieldSchema = await getFormState({\n apiRoute,\n body: {\n collectionSlug,\n data,\n globalSlug,\n schemaPath,\n },\n serverURL,\n })\n return fieldSchema\n },\n [apiRoute, collectionSlug, globalSlug, serverURL],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'ADD_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.disabled = disabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') setSubmitted(submittedFromProps)\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({ type: 'REPLACE_STATE', state: initialState })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n useDebouncedEffect(\n () => {\n const executeOnChange = async () => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = fields\n\n for (const onChangeFn of onChange) {\n revalidatedFormState = await onChangeFn({\n formState: revalidatedFormState,\n })\n }\n\n const { changed, newState } = mergeServerFormState(fields || {}, revalidatedFormState)\n\n if (changed) {\n dispatchFields({ type: 'REPLACE_STATE', optimize: false, state: newState })\n }\n }\n }\n\n if (modified) void executeOnChange()\n },\n 150,\n [fields, dispatchFields, onChange],\n )\n\n const actionString =\n typeof action === 'string'\n ? `${action}${QueryString.stringify(formQueryParams, { addQueryPrefix: true })}`\n : ''\n\n return (\n <form\n action={method ? actionString : action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <ProcessingContext.Provider value={processing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </ProcessingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </form>\n )\n}\n\nexport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"names":["isDeepEqual","useRouter","serialize","wait","QueryString","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useFormQueryParams","useLocale","useOperation","useTranslation","requests","getFormState","reduceFieldsToValues","FormContext","FormFieldsContext","FormWatchContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","globalSlug","action","children","className","disableSuccessStatus","disabled","beforeSubmit","handleResponse","initialState","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","formQueryParams","config","routes","api","apiRoute","serverURL","modified","setModified","processing","setProcessing","setSubmitted","formRef","contextRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","isValid","dataFromContext","getData","data","validationPromises","Object","entries","map","path","field","validatedField","valid","passesCondition","validationResult","validate","valueToValidate","value","rows","Array","isArray","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","skipValidation","preventDefault","stopPropagation","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","formState","resolve","every","error","formData","createFormData","res","actionEndpoint","stringify","addQueryPrefix","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","push","success","message","autoClose","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","indices","nullsAsUndefineds","reset","newState","schemaPath","replaceState","getFieldStateBySchemaPath","fieldSchema","addFieldRow","rowIndex","subFieldState","blockType","removeFieldRow","replaceFieldRow","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","optimize","actionString","form","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload/types'\n\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\nimport isDeepEqual from 'deep-equal'\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport { wait } from 'payload/utilities'\nimport QueryString from 'qs'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport type {\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport useThrottledEffect from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { reduceFieldsToValues } from '../../utilities/reduceFieldsToValues.js'\nimport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { getDataByPath as getDataByPathFunc } from './getDataByPath.js'\nimport { getSiblingData as getSiblingDataFunc } from './getSiblingData.js'\nimport { initContextState } from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled: disabledFromProps,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n handleResponse,\n initialState, // fully formed initial field state\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { formQueryParams } = useFormQueryParams()\n\n const config = useConfig()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [modified, setModified] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const dataFromContext = contextRef.current.getData()\n const data = dataFromContext\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if (typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n id,\n config,\n data,\n operation,\n siblingData: contextRef.current.getSiblingData(path),\n t,\n user,\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!isDeepEqual(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n return isValid\n }, [id, user, operation, t, dispatchFields, config])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg,\n method: methodToUse = method,\n overrides = {},\n skipValidation,\n } = options\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n setProcessing(true)\n setDisabled(true)\n\n if (waitForAutocomplete) await wait(100)\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: fields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(([, field]) => field.valid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n // If not valid, prevent submission\n if (!isValid) {\n toast.error(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const data = {\n ...reduceFieldsToValues(fields, true),\n ...overrides,\n }\n\n onSubmit(fields, data)\n }\n\n const formData = contextRef.current.createFormData(overrides)\n\n try {\n let res\n const actionEndpoint =\n actionArg ||\n (typeof action === 'string'\n ? `${action}${QueryString.stringify(formQueryParams, { addQueryPrefix: true })}`\n : null)\n\n if (actionEndpoint) {\n res = await requests[methodToUse.toLowerCase()](actionEndpoint, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) json = await res.json()\n\n if (res.status < 400) {\n if (typeof onSuccess === 'function') await onSuccess(json)\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n router.push(redirect)\n } else if (!disableSuccessStatus) {\n toast.success(json.message || t('general:submissionSuccessful'), { autoClose: 3000 })\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n toast.error(json.message)\n\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data)) {\n err.data.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n fieldErrors.forEach((err) => {\n dispatchFields({\n type: 'UPDATE',\n ...(contextRef.current?.fields?.[err.field] || {}),\n errorMessage: err.message,\n path: err.field,\n valid: false,\n })\n })\n\n nonFieldErrors.forEach((err) => {\n toast.error(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n toast.error(message)\n }\n } catch (err) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n\n toast.error(err)\n }\n },\n [\n beforeSubmit,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n fields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n formQueryParams,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const createFormData = useCallback((overrides: any = {}) => {\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n }, [])\n\n const reset = useCallback(\n async (data: unknown) => {\n const newState = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n data,\n globalSlug,\n operation,\n schemaPath: collectionSlug || globalSlug,\n },\n serverURL,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n },\n [apiRoute, collectionSlug, dispatchFields, globalSlug, id, operation, serverURL],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const getFieldStateBySchemaPath = useCallback(\n async ({ data, schemaPath }) => {\n const fieldSchema = await getFormState({\n apiRoute,\n body: {\n collectionSlug,\n data,\n globalSlug,\n schemaPath,\n },\n serverURL,\n })\n return fieldSchema\n },\n [apiRoute, collectionSlug, globalSlug, serverURL],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'ADD_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') setSubmitted(submittedFromProps)\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({ type: 'REPLACE_STATE', state: initialState })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n useDebouncedEffect(\n () => {\n const executeOnChange = async () => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = contextRef.current.fields\n\n for (const onChangeFn of onChange) {\n revalidatedFormState = await onChangeFn({\n formState: revalidatedFormState,\n })\n }\n\n const { changed, newState } = mergeServerFormState(\n contextRef.current.fields || {},\n revalidatedFormState,\n )\n\n if (changed) {\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: newState,\n })\n }\n }\n }\n\n if (modified) void executeOnChange()\n },\n 150,\n // Make sure we trigger this whenever modified changes (not just when `fields` changes), otherwise we will miss merging server form state for the first form update/onChange. Here's why:\n // `fields` updates before `modified`, because setModified is in a setTimeout. So on the first change, modified is false, so we don't trigger the effect even though we should.\n [contextRef.current.fields, dispatchFields, onChange, modified],\n )\n\n const actionString =\n typeof action === 'string'\n ? `${action}${QueryString.stringify(formQueryParams, { addQueryPrefix: true })}`\n : ''\n\n return (\n <form\n action={method ? actionString : action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <ProcessingContext.Provider value={processing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </ProcessingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </form>\n )\n}\n\nexport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"names":["isDeepEqual","useRouter","serialize","wait","QueryString","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useFormQueryParams","useLocale","useOperation","useTranslation","requests","getFormState","reduceFieldsToValues","FormContext","FormFieldsContext","FormWatchContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","globalSlug","action","beforeSubmit","children","className","disableSuccessStatus","disableValidationOnSubmit","disabled","disabledFromProps","handleResponse","initialState","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","formQueryParams","config","routes","api","apiRoute","serverURL","setDisabled","modified","setModified","processing","setProcessing","setSubmitted","formRef","contextRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","isValid","dataFromContext","getData","data","validationPromises","Object","entries","map","path","field","validatedField","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","skipValidation","preventDefault","stopPropagation","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","formState","resolve","every","error","formData","createFormData","res","actionEndpoint","stringify","addQueryPrefix","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","push","success","message","autoClose","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","indices","nullsAsUndefineds","reset","newState","schemaPath","replaceState","getFieldStateBySchemaPath","fieldSchema","addFieldRow","rowIndex","subFieldState","blockType","removeFieldRow","replaceFieldRow","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","optimize","actionString","form","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"initContextState.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/initContextState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,OAAO,EAUR,MAAM,YAAY,CAAA;AAanB,eAAO,MAAM,gBAAgB,EAAE,OAsB9B,CAAA"}
1
+ {"version":3,"file":"initContextState.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/initContextState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,OAAO,EAUR,MAAM,YAAY,CAAA;AAanB,eAAO,MAAM,gBAAgB,EAAE,OAuB9B,CAAA"}