@payloadcms/ui 3.0.0-beta.73 → 3.0.0-beta.74

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 (256) hide show
  1. package/dist/elements/ArrayAction/index.scss +0 -13
  2. package/dist/elements/Banner/index.scss +1 -1
  3. package/dist/elements/Button/index.js +1 -1
  4. package/dist/elements/Button/index.js.map +1 -1
  5. package/dist/elements/Button/index.scss +112 -118
  6. package/dist/elements/Button/types.d.ts +1 -1
  7. package/dist/elements/Button/types.d.ts.map +1 -1
  8. package/dist/elements/Button/types.js.map +1 -1
  9. package/dist/elements/Card/index.scss +38 -9
  10. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  11. package/dist/elements/CodeEditor/CodeEditor.js +2 -1
  12. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  13. package/dist/elements/Collapsible/index.scss +61 -30
  14. package/dist/elements/ColumnSelector/index.scss +20 -2
  15. package/dist/elements/DocumentControls/index.scss +2 -2
  16. package/dist/elements/DocumentDrawer/index.scss +4 -6
  17. package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts.map +1 -1
  18. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +4 -2
  19. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
  20. package/dist/elements/DraggableSortable/useDraggableSortable/index.d.ts.map +1 -1
  21. package/dist/elements/DraggableSortable/useDraggableSortable/index.js +10 -4
  22. package/dist/elements/DraggableSortable/useDraggableSortable/index.js.map +1 -1
  23. package/dist/elements/DraggableSortable/useDraggableSortable/types.d.ts +1 -0
  24. package/dist/elements/DraggableSortable/useDraggableSortable/types.d.ts.map +1 -1
  25. package/dist/elements/DraggableSortable/useDraggableSortable/types.js.map +1 -1
  26. package/dist/elements/Drawer/index.scss +11 -7
  27. package/dist/elements/Dropzone/index.js +2 -2
  28. package/dist/elements/Dropzone/index.js.map +1 -1
  29. package/dist/elements/Dropzone/index.scss +7 -3
  30. package/dist/elements/EditMany/index.scss +2 -2
  31. package/dist/elements/EditUpload/index.scss +4 -1
  32. package/dist/elements/FileDetails/FileMeta/index.scss +1 -0
  33. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  34. package/dist/elements/FileDetails/index.js +3 -1
  35. package/dist/elements/FileDetails/index.js.map +1 -1
  36. package/dist/elements/FileDetails/index.scss +28 -12
  37. package/dist/elements/Hamburger/index.d.ts.map +1 -1
  38. package/dist/elements/Hamburger/index.js +17 -41
  39. package/dist/elements/Hamburger/index.js.map +1 -1
  40. package/dist/elements/Hamburger/index.scss +22 -102
  41. package/dist/elements/IDLabel/index.js +1 -1
  42. package/dist/elements/IDLabel/index.js.map +1 -1
  43. package/dist/elements/IDLabel/index.scss +2 -2
  44. package/dist/elements/ListControls/index.d.ts.map +1 -1
  45. package/dist/elements/ListControls/index.js +5 -1
  46. package/dist/elements/ListControls/index.js.map +1 -1
  47. package/dist/elements/ListControls/index.scss +6 -12
  48. package/dist/elements/NavGroup/index.scss +2 -2
  49. package/dist/elements/Pill/index.d.ts.map +1 -1
  50. package/dist/elements/Pill/index.js +1 -5
  51. package/dist/elements/Pill/index.js.map +1 -1
  52. package/dist/elements/Pill/index.scss +8 -21
  53. package/dist/elements/Popup/index.scss +6 -0
  54. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  55. package/dist/elements/PreviewButton/index.js +3 -1
  56. package/dist/elements/PreviewButton/index.js.map +1 -1
  57. package/dist/elements/PublishButton/index.js +1 -1
  58. package/dist/elements/PublishButton/index.js.map +1 -1
  59. package/dist/elements/ReactSelect/MultiValue/index.scss +25 -3
  60. package/dist/elements/ReactSelect/MultiValueLabel/index.scss +1 -1
  61. package/dist/elements/ReactSelect/MultiValueRemove/index.scss +3 -3
  62. package/dist/elements/ReactSelect/ValueContainer/index.scss +5 -12
  63. package/dist/elements/ReactSelect/index.scss +2 -3
  64. package/dist/elements/RenderTitle/index.scss +1 -1
  65. package/dist/elements/SaveButton/index.d.ts.map +1 -1
  66. package/dist/elements/SaveButton/index.js +4 -2
  67. package/dist/elements/SaveButton/index.js.map +1 -1
  68. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  69. package/dist/elements/SaveDraftButton/index.js +4 -2
  70. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  71. package/dist/elements/SearchFilter/index.d.ts.map +1 -1
  72. package/dist/elements/SearchFilter/index.js +11 -15
  73. package/dist/elements/SearchFilter/index.js.map +1 -1
  74. package/dist/elements/SearchFilter/index.scss +2 -1
  75. package/dist/elements/SelectRow/index.scss +1 -0
  76. package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
  77. package/dist/elements/StayLoggedIn/index.js +2 -0
  78. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  79. package/dist/elements/Table/DefaultCell/fields/Code/index.scss +1 -1
  80. package/dist/elements/Table/DefaultCell/fields/JSON/index.scss +1 -1
  81. package/dist/elements/Table/index.scss +10 -1
  82. package/dist/elements/ThumbnailCard/index.scss +10 -1
  83. package/dist/elements/Upload/index.scss +2 -1
  84. package/dist/exports/client/{CodeEditor-OI35YO7H.js → CodeEditor-UPOVAXRP.js} +2 -2
  85. package/dist/exports/client/{CodeEditor-OI35YO7H.js.map → CodeEditor-UPOVAXRP.js.map} +2 -2
  86. package/dist/exports/client/{DatePicker-5IFHNQHA.js → DatePicker-XJHHMZP7.js} +2 -2
  87. package/dist/exports/client/chunk-TIH7OFW3.js +30 -0
  88. package/dist/exports/client/{chunk-WDFUZ6GL.js.map → chunk-TIH7OFW3.js.map} +2 -2
  89. package/dist/exports/client/index.d.ts +1 -0
  90. package/dist/exports/client/index.d.ts.map +1 -1
  91. package/dist/exports/client/index.js +27 -27
  92. package/dist/exports/client/index.js.map +4 -4
  93. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  94. package/dist/fields/Array/ArrayRow.js +4 -2
  95. package/dist/fields/Array/ArrayRow.js.map +1 -1
  96. package/dist/fields/Array/index.scss +3 -1
  97. package/dist/fields/Blocks/BlocksDrawer/BlockSearch/index.scss +3 -4
  98. package/dist/fields/Blocks/SectionTitle/index.scss +1 -0
  99. package/dist/fields/Checkbox/index.d.ts.map +1 -1
  100. package/dist/fields/Checkbox/index.js.map +1 -1
  101. package/dist/fields/Checkbox/index.scss +7 -8
  102. package/dist/fields/Code/index.scss +6 -0
  103. package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
  104. package/dist/fields/ConfirmPassword/index.js +10 -16
  105. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  106. package/dist/fields/DateTime/index.d.ts.map +1 -1
  107. package/dist/fields/DateTime/index.js.map +1 -1
  108. package/dist/fields/Email/index.d.ts.map +1 -1
  109. package/dist/fields/Email/index.js.map +1 -1
  110. package/dist/fields/JSON/index.d.ts.map +1 -1
  111. package/dist/fields/JSON/index.js.map +1 -1
  112. package/dist/fields/Password/index.d.ts +2 -2
  113. package/dist/fields/Password/index.d.ts.map +1 -1
  114. package/dist/fields/Password/index.js.map +1 -1
  115. package/dist/fields/Point/index.d.ts.map +1 -1
  116. package/dist/fields/Point/index.js.map +1 -1
  117. package/dist/fields/RadioGroup/Radio/index.d.ts.map +1 -1
  118. package/dist/fields/RadioGroup/Radio/index.js +4 -1
  119. package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
  120. package/dist/fields/RadioGroup/Radio/index.scss +13 -6
  121. package/dist/fields/RadioGroup/index.scss +5 -1
  122. package/dist/fields/Relationship/AddNew/index.scss +3 -0
  123. package/dist/fields/Relationship/index.d.ts.map +1 -1
  124. package/dist/fields/Relationship/index.js +2 -1
  125. package/dist/fields/Relationship/index.js.map +1 -1
  126. package/dist/fields/Relationship/index.scss +7 -0
  127. package/dist/fields/Relationship/select-components/MultiValueLabel/index.scss +8 -5
  128. package/dist/fields/Select/index.d.ts.map +1 -1
  129. package/dist/fields/Select/index.js.map +1 -1
  130. package/dist/fields/Text/Input.d.ts.map +1 -1
  131. package/dist/fields/Text/Input.js +13 -17
  132. package/dist/fields/Text/Input.js.map +1 -1
  133. package/dist/fields/Text/index.d.ts.map +1 -1
  134. package/dist/fields/Text/index.js.map +1 -1
  135. package/dist/fields/Text/index.scss +6 -0
  136. package/dist/fields/Textarea/index.d.ts.map +1 -1
  137. package/dist/fields/Textarea/index.js.map +1 -1
  138. package/dist/fields/Textarea/index.scss +1 -6
  139. package/dist/fields/Upload/index.scss +10 -3
  140. package/dist/forms/Form/index.d.ts.map +1 -1
  141. package/dist/forms/Form/index.js +17 -9
  142. package/dist/forms/Form/index.js.map +1 -1
  143. package/dist/forms/RenderFields/index.scss +1 -1
  144. package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts +1 -0
  145. package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  146. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js +2 -1
  147. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
  148. package/dist/forms/buildStateFromSchema/index.d.ts +1 -0
  149. package/dist/forms/buildStateFromSchema/index.d.ts.map +1 -1
  150. package/dist/forms/buildStateFromSchema/index.js +2 -1
  151. package/dist/forms/buildStateFromSchema/index.js.map +1 -1
  152. package/dist/forms/buildStateFromSchema/iterateFields.d.ts +2 -1
  153. package/dist/forms/buildStateFromSchema/iterateFields.d.ts.map +1 -1
  154. package/dist/forms/buildStateFromSchema/iterateFields.js +2 -1
  155. package/dist/forms/buildStateFromSchema/iterateFields.js.map +1 -1
  156. package/dist/forms/useField/index.d.ts.map +1 -1
  157. package/dist/forms/useField/index.js +13 -7
  158. package/dist/forms/useField/index.js.map +1 -1
  159. package/dist/forms/useField/types.d.ts +2 -2
  160. package/dist/forms/useField/types.d.ts.map +1 -1
  161. package/dist/forms/useField/types.js.map +1 -1
  162. package/dist/icons/Calendar/index.d.ts.map +1 -1
  163. package/dist/icons/Calendar/index.js +8 -33
  164. package/dist/icons/Calendar/index.js.map +1 -1
  165. package/dist/icons/Calendar/index.scss +1 -1
  166. package/dist/icons/Check/index.d.ts.map +1 -1
  167. package/dist/icons/Check/index.js +8 -17
  168. package/dist/icons/Check/index.js.map +1 -1
  169. package/dist/icons/Check/index.scss +1 -1
  170. package/dist/icons/Chevron/index.js +5 -4
  171. package/dist/icons/Chevron/index.js.map +1 -1
  172. package/dist/icons/Chevron/index.scss +2 -5
  173. package/dist/icons/CloseMenu/index.d.ts.map +1 -1
  174. package/dist/icons/CloseMenu/index.js +8 -22
  175. package/dist/icons/CloseMenu/index.js.map +1 -1
  176. package/dist/icons/CloseMenu/index.scss +2 -2
  177. package/dist/icons/CodeBlock/index.d.ts.map +1 -1
  178. package/dist/icons/CodeBlock/index.js +8 -14
  179. package/dist/icons/CodeBlock/index.js.map +1 -1
  180. package/dist/icons/Copy/index.d.ts.map +1 -1
  181. package/dist/icons/Copy/index.js +12 -16
  182. package/dist/icons/Copy/index.js.map +1 -1
  183. package/dist/icons/Copy/index.scss +1 -1
  184. package/dist/icons/DragHandle/index.d.ts.map +1 -1
  185. package/dist/icons/DragHandle/index.js +19 -25
  186. package/dist/icons/DragHandle/index.js.map +1 -1
  187. package/dist/icons/DragHandle/index.scss +2 -0
  188. package/dist/icons/Edit/index.d.ts.map +1 -1
  189. package/dist/icons/Edit/index.js +8 -21
  190. package/dist/icons/Edit/index.js.map +1 -1
  191. package/dist/icons/Edit/index.scss +3 -3
  192. package/dist/icons/Line/index.d.ts.map +1 -1
  193. package/dist/icons/Line/index.js +7 -6
  194. package/dist/icons/Line/index.js.map +1 -1
  195. package/dist/icons/Line/index.scss +1 -1
  196. package/dist/icons/Link/index.d.ts.map +1 -1
  197. package/dist/icons/Link/index.js +11 -14
  198. package/dist/icons/Link/index.js.map +1 -1
  199. package/dist/icons/Link/index.scss +1 -1
  200. package/dist/icons/LogOut/index.d.ts.map +1 -1
  201. package/dist/icons/LogOut/index.js +9 -24
  202. package/dist/icons/LogOut/index.js.map +1 -1
  203. package/dist/icons/LogOut/index.scss +1 -1
  204. package/dist/icons/Menu/index.d.ts.map +1 -1
  205. package/dist/icons/Menu/index.js +10 -28
  206. package/dist/icons/Menu/index.js.map +1 -1
  207. package/dist/icons/Menu/index.scss +3 -2
  208. package/dist/icons/MinimizeMaximize/index.d.ts.map +1 -1
  209. package/dist/icons/MinimizeMaximize/index.js +8 -35
  210. package/dist/icons/MinimizeMaximize/index.js.map +1 -1
  211. package/dist/icons/More/index.d.ts.map +1 -1
  212. package/dist/icons/More/index.js +10 -13
  213. package/dist/icons/More/index.js.map +1 -1
  214. package/dist/icons/More/index.scss +1 -0
  215. package/dist/icons/Plus/index.d.ts.map +1 -1
  216. package/dist/icons/Plus/index.js +10 -20
  217. package/dist/icons/Plus/index.js.map +1 -1
  218. package/dist/icons/Plus/index.scss +1 -1
  219. package/dist/icons/Search/index.d.ts.map +1 -1
  220. package/dist/icons/Search/index.js +8 -18
  221. package/dist/icons/Search/index.js.map +1 -1
  222. package/dist/icons/Search/index.scss +1 -1
  223. package/dist/icons/Swap/index.d.ts.map +1 -1
  224. package/dist/icons/Swap/index.js +8 -28
  225. package/dist/icons/Swap/index.js.map +1 -1
  226. package/dist/icons/Swap/index.scss +2 -2
  227. package/dist/icons/X/index.d.ts.map +1 -1
  228. package/dist/icons/X/index.js +10 -21
  229. package/dist/icons/X/index.js.map +1 -1
  230. package/dist/icons/X/index.scss +3 -3
  231. package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts +2 -1
  232. package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts.map +1 -1
  233. package/dist/providers/ComponentMap/buildComponentMap/collections.js +2 -1
  234. package/dist/providers/ComponentMap/buildComponentMap/collections.js.map +1 -1
  235. package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts +2 -1
  236. package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -1
  237. package/dist/providers/ComponentMap/buildComponentMap/fields.js +9 -2
  238. package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -1
  239. package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts +2 -1
  240. package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts.map +1 -1
  241. package/dist/providers/ComponentMap/buildComponentMap/globals.js +2 -1
  242. package/dist/providers/ComponentMap/buildComponentMap/globals.js.map +1 -1
  243. package/dist/providers/ComponentMap/buildComponentMap/index.d.ts.map +1 -1
  244. package/dist/providers/ComponentMap/buildComponentMap/index.js +2 -0
  245. package/dist/providers/ComponentMap/buildComponentMap/index.js.map +1 -1
  246. package/dist/scss/app.scss +2 -1
  247. package/dist/scss/toasts.scss +10 -3
  248. package/dist/scss/type.scss +14 -23
  249. package/dist/scss/vars.scss +26 -47
  250. package/dist/styles.css +1 -1
  251. package/dist/utilities/buildFormState.d.ts.map +1 -1
  252. package/dist/utilities/buildFormState.js +1 -4
  253. package/dist/utilities/buildFormState.js.map +1 -1
  254. package/package.json +4 -4
  255. package/dist/exports/client/chunk-WDFUZ6GL.js +0 -30
  256. /package/dist/exports/client/{DatePicker-5IFHNQHA.js.map → DatePicker-XJHHMZP7.js.map} +0 -0
@@ -63,13 +63,20 @@ export const Form = (props)=>{
63
63
  valueToValidate = contextRef.current.getDataByPath(path);
64
64
  }
65
65
  validationResult = await field.validate(valueToValidate, {
66
+ ...field,
66
67
  id,
67
- config,
68
+ collectionSlug,
68
69
  data,
69
70
  operation,
70
- siblingData: contextRef.current.getSiblingData(path),
71
- t,
72
- user
71
+ preferences: {},
72
+ req: {
73
+ payload: {
74
+ config
75
+ },
76
+ t,
77
+ user
78
+ },
79
+ siblingData: contextRef.current.getSiblingData(path)
73
80
  });
74
81
  if (typeof validationResult === 'string') {
75
82
  validatedField.errorMessage = validationResult;
@@ -94,12 +101,13 @@ export const Form = (props)=>{
94
101
  }
95
102
  return isValid;
96
103
  }, [
104
+ collectionSlug,
105
+ config,
106
+ dispatchFields,
97
107
  id,
98
- user,
99
108
  operation,
100
109
  t,
101
- dispatchFields,
102
- config
110
+ user
103
111
  ]);
104
112
  const submit = useCallback(async (options = {}, e)=>{
105
113
  const { action: actionArg = action, method: methodToUse = method, overrides = {}, skipValidation } = options;
@@ -528,11 +536,11 @@ export const Form = (props)=>{
528
536
  modified
529
537
  ]);
530
538
  return /*#__PURE__*/ _jsx("form", {
531
- action: action,
539
+ action: typeof action === 'function' ? void action : action,
532
540
  className: classes,
533
541
  method: method,
534
542
  noValidate: true,
535
- onSubmit: (e)=>contextRef.current.submit({}, e),
543
+ onSubmit: (e)=>void contextRef.current.submit({}, e),
536
544
  ref: formRef,
537
545
  children: /*#__PURE__*/ _jsx(FormContext.Provider, {
538
546
  value: contextRef.current,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport {\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\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 { 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 {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.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 isInitializing: initializingFromProps,\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\n const config = useConfig()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n const [initializing, setInitializing] = useState(initializingFromProps)\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 /**\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 (!dequal(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 = action,\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 // create new toast promise which will resolve manually later\n let successToast, errorToast\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableSuccessStatus || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\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 errorToast(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 if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = contextRef.current.createFormData(overrides)\n\n try {\n let res\n\n if (typeof actionArg === 'string') {\n res = await requests[methodToUse.toLowerCase()](actionArg, {\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, successToast, errorToast)\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 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 successToast(json.message || t('general:submissionSuccessful'))\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 errorToast(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?.errors)) {\n err.data?.errors.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 dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n } catch (err) {\n console.error('Error submitting form', err)\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n\n errorToast(err.message)\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 ],\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 useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\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 contextRef.current.initializing = initializing\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') setDisabled(disabledFromProps)\n }, [disabledFromProps])\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', optimize: false, 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 return (\n <form\n action={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 <InitializingContext.Provider value={!isMounted || (isMounted && initializing)}>\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 </InitializingContext.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":["dequal","useRouter","serialize","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useTranslation","requests","getFormState","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","globalSlug","action","beforeSubmit","children","className","disableSuccessStatus","disableValidationOnSubmit","disabled","disabledFromProps","handleResponse","initialState","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","config","routes","api","apiRoute","serverURL","setDisabled","isMounted","setIsMounted","modified","setModified","initializing","setInitializing","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","successToast","errorToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","formState","every","formData","createFormData","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","stringify","indices","nullsAsUndefineds","reset","newState","schemaPath","replaceState","getFieldStateBySchemaPath","fieldSchema","addFieldRow","rowIndex","subFieldState","blockType","removeFieldRow","replaceFieldRow","optimize","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","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, PayloadRequest } from 'payload'\n\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport {\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\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 { 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 {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.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 isInitializing: initializingFromProps,\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\n const config = useConfig()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n const [initializing, setInitializing] = useState(initializingFromProps)\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 /**\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 ...field,\n id,\n collectionSlug,\n data,\n operation,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as PayloadRequest,\n siblingData: contextRef.current.getSiblingData(path),\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 (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg = action,\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 // create new toast promise which will resolve manually later\n let successToast, errorToast\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableSuccessStatus || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\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 errorToast(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 if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = contextRef.current.createFormData(overrides)\n\n try {\n let res\n\n if (typeof actionArg === 'string') {\n res = await requests[methodToUse.toLowerCase()](actionArg, {\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, successToast, errorToast)\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 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 successToast(json.message || t('general:submissionSuccessful'))\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 errorToast(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?.errors)) {\n err.data?.errors.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 dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n } catch (err) {\n console.error('Error submitting form', err)\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n\n errorToast(err.message)\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 ],\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 useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\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 contextRef.current.initializing = initializing\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') setDisabled(disabledFromProps)\n }, [disabledFromProps])\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', optimize: false, 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 return (\n <form\n action={typeof action === 'function' ? void action : action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => void 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 <InitializingContext.Provider value={!isMounted || (isMounted && initializing)}>\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 </InitializingContext.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":["dequal","useRouter","serialize","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useTranslation","requests","getFormState","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","globalSlug","action","beforeSubmit","children","className","disableSuccessStatus","disableValidationOnSubmit","disabled","disabledFromProps","handleResponse","initialState","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","config","routes","api","apiRoute","serverURL","setDisabled","isMounted","setIsMounted","modified","setModified","initializing","setInitializing","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","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","skipValidation","preventDefault","successToast","errorToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","formState","every","formData","createFormData","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","stringify","indices","nullsAsUndefineds","reset","newState","schemaPath","replaceState","getFieldStateBySchemaPath","fieldSchema","addFieldRow","rowIndex","subFieldState","blockType","removeFieldRow","replaceFieldRow","optimize","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","form","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"mappings":"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"}
@@ -30,7 +30,7 @@
30
30
  margin-top: 0;
31
31
  }
32
32
 
33
- &:last-child {
33
+ &:last-of-type {
34
34
  margin-bottom: 0;
35
35
  }
36
36
  }
@@ -5,6 +5,7 @@ export type AddFieldStatePromiseArgs = {
5
5
  * if all parents are localized, then the field is localized
6
6
  */
7
7
  anyParentLocalized?: boolean;
8
+ collectionSlug?: string;
8
9
  data: Data;
9
10
  field: Field;
10
11
  fieldIndex: number;
@@ -1 +1 @@
1
- {"version":3,"file":"addFieldStatePromise.d.ts","sourceRoot":"","sources":["../../../src/forms/buildStateFromSchema/addFieldStatePromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,mBAAmB,EACnB,KAAK,EAGL,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAWhB,MAAM,MAAM,wBAAwB,GAAG;IACrC,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAA;IACpD;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,IAAI,CAAA;IACd,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,mBAAmB,CAAA;IAEhC;;;OAGG;IACH,GAAG,EAAE,cAAc,CAAA;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,SAAgB,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAqgBvF,CAAA"}
1
+ {"version":3,"file":"addFieldStatePromise.d.ts","sourceRoot":"","sources":["../../../src/forms/buildStateFromSchema/addFieldStatePromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,mBAAmB,EACnB,KAAK,EAGL,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAWhB,MAAM,MAAM,wBAAwB,GAAG;IACrC,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAA;IACpD;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,IAAI,CAAA;IACd,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IAEZ,WAAW,EAAE,mBAAmB,CAAA;IAChC;;;OAGG;IACH,GAAG,EAAE,cAAc,CAAA;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,SAAgB,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAugBvF,CAAA"}
@@ -7,7 +7,7 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
7
7
  * Flattens the fields schema and fields data.
8
8
  * The output is the field path (e.g. array.0.name) mapped to a FormField object.
9
9
  */ export const addFieldStatePromise = async (args)=>{
10
- const { id, addErrorPathToParent: addErrorPathToParentArg, anyParentLocalized = false, data, field, fieldIndex, filter, forceFullValue = false, fullData, includeSchema = false, omitParents = false, operation, passesCondition, path, preferences, req, skipConditionChecks = false, skipValidation = false, state } = args;
10
+ const { id, addErrorPathToParent: addErrorPathToParentArg, anyParentLocalized = false, collectionSlug, data, field, fieldIndex, filter, forceFullValue = false, fullData, includeSchema = false, omitParents = false, operation, passesCondition, path, preferences, req, skipConditionChecks = false, skipValidation = false, state } = args;
11
11
  if (fieldAffectsData(field)) {
12
12
  const validate = field.validate;
13
13
  const fieldState = {
@@ -31,6 +31,7 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
31
31
  validationResult = await validate(data?.[field.name], {
32
32
  ...field,
33
33
  id,
34
+ collectionSlug,
34
35
  data: fullData,
35
36
  operation,
36
37
  req,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/buildStateFromSchema/addFieldStatePromise.ts"],"sourcesContent":["import type {\n Data,\n DocumentPreferences,\n Field,\n FilterOptionsResult,\n FormField,\n FormState,\n PayloadRequest,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { fieldAffectsData, fieldHasSubFields, tabHasName } from 'payload/shared'\n\nimport { getFilterOptionsQuery } from './getFilterOptionsQuery.js'\nimport { iterateFields } from './iterateFields.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\nexport type AddFieldStatePromiseArgs = {\n addErrorPathToParent: (path: string) => void\n /**\n * if all parents are localized, then the field is localized\n */\n anyParentLocalized?: boolean\n data: Data\n field: Field\n fieldIndex: number\n /**\n * You can use this to filter down to only `localized` fields that require translation (type: text, textarea, etc.). Another plugin might want to look for only `point` type fields to do some GIS function. With the filter function you can go in like a surgeon.\n */\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id: number | string\n /**\n * Whether the field schema should be included in the state\n */\n includeSchema?: boolean\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n operation: 'create' | 'update'\n passesCondition: boolean\n path: string\n preferences: DocumentPreferences\n\n /**\n * Req is used for validation and defaultValue calculation. If you don't need validation,\n * just create your own req and pass in the locale and the user\n */\n req: PayloadRequest\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state: FormState\n}\n\n/**\n * Flattens the fields schema and fields data.\n * The output is the field path (e.g. array.0.name) mapped to a FormField object.\n */\nexport const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Promise<void> => {\n const {\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n data,\n field,\n fieldIndex,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n omitParents = false,\n operation,\n passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks = false,\n skipValidation = false,\n state,\n } = args\n\n if (fieldAffectsData(field)) {\n const validate = field.validate\n\n const fieldState: FormField = {\n errorPaths: [],\n fieldSchema: includeSchema ? field : undefined,\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n\n let validationResult: string | true = true\n\n if (typeof validate === 'function' && !skipValidation && passesCondition) {\n let jsonError\n\n if (field.type === 'json' && typeof data[field.name] === 'string') {\n try {\n JSON.parse(data[field.name] as string)\n } catch (e) {\n jsonError = e\n }\n }\n\n validationResult = await validate(data?.[field.name], {\n ...field,\n id,\n data: fullData,\n operation,\n req,\n siblingData: data,\n // @ts-expect-error-next-line\n jsonError,\n preferences,\n })\n }\n\n const addErrorPathToParent = (errorPath: string) => {\n if (typeof addErrorPathToParentArg === 'function') {\n addErrorPathToParentArg(errorPath)\n }\n\n if (!fieldState.errorPaths.includes(errorPath)) {\n fieldState.errorPaths.push(errorPath)\n fieldState.valid = false\n }\n }\n\n if (typeof validationResult === 'string') {\n fieldState.errorMessage = validationResult\n fieldState.valid = false\n addErrorPathToParent(`${path}${field.name}`)\n } else {\n fieldState.valid = true\n }\n\n switch (field.type) {\n case 'array': {\n const arrayValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const { promises, rowMetadata } = arrayValue.reduce(\n (acc, row, i) => {\n const rowPath = `${path}${field.name}.${i}.`\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? field.fields.find((field) => 'name' in field && field.name === 'id')\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n })\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? arrayValue : arrayValue.length\n fieldState.initialValue = forceFullValue ? arrayValue : arrayValue.length\n\n if (arrayValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'blocks': {\n const blocksValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const { promises, rowMetadata } = blocksValue.reduce(\n (acc, row, i) => {\n const block = field.blocks.find((blockType) => blockType.slug === row.blockType)\n const rowPath = `${path}${field.name}.${i}.`\n\n if (block) {\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'id',\n )\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n\n state[`${rowPath}blockType`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockType',\n )\n : undefined,\n initialValue: row.blockType,\n valid: true,\n value: row.blockType,\n }\n\n state[`${rowPath}blockName`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockName',\n )\n : undefined,\n initialValue: row.blockName,\n valid: true,\n value: row.blockName,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n fields: block.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n blockType: row.blockType,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n })\n }\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? blocksValue : blocksValue.length\n fieldState.initialValue = forceFullValue ? blocksValue : blocksValue.length\n\n if (blocksValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'group': {\n if (!filter || filter(args)) {\n fieldState.disableFormData = true\n state[`${path}${field.name}`] = fieldState\n }\n\n await iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: data?.[field.name] || {},\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: `${path}${field.name}.`,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n\n break\n }\n\n case 'relationship': {\n if (field.filterOptions) {\n if (typeof field.filterOptions === 'object') {\n if (typeof field.relationTo === 'string') {\n fieldState.filterOptions = {\n [field.relationTo]: field.filterOptions,\n }\n } else {\n fieldState.filterOptions = field.relationTo.reduce((acc, relation) => {\n acc[relation] = field.filterOptions\n return acc\n }, {})\n }\n }\n\n if (typeof field.filterOptions === 'function') {\n const query = await getFilterOptionsQuery(field.filterOptions, {\n id,\n data: fullData,\n relationTo: field.relationTo,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n }\n\n if (field.hasMany) {\n const relationshipValue = Array.isArray(data[field.name])\n ? data[field.name].map((relationship) => {\n if (Array.isArray(field.relationTo)) {\n return {\n relationTo: relationship.relationTo,\n value:\n relationship.value && typeof relationship.value === 'object'\n ? relationship.value?.id\n : relationship.value,\n }\n }\n if (typeof relationship === 'object' && relationship !== null) {\n return relationship.id\n }\n return relationship\n })\n : undefined\n\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n if (\n data[field.name] &&\n typeof data[field.name] === 'object' &&\n 'relationTo' in data[field.name] &&\n 'value' in data[field.name]\n ) {\n const value =\n typeof data[field.name]?.value === 'object' &&\n data[field.name]?.value &&\n 'id' in data[field.name].value\n ? data[field.name].value.id\n : data[field.name].value\n const relationshipValue = {\n relationTo: data[field.name]?.relationTo,\n value,\n }\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n } else {\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'upload': {\n if (field.filterOptions) {\n if (typeof field.filterOptions === 'object') {\n fieldState.filterOptions = {\n [field.relationTo]: field.filterOptions,\n }\n }\n\n if (typeof field.filterOptions === 'function') {\n const query = await getFilterOptionsQuery(field.filterOptions, {\n id,\n data: fullData,\n relationTo: field.relationTo,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n }\n\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n default: {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n\n // Add field to state\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n }\n } else if (fieldHasSubFields(field)) {\n // Handle field types that do not use names (row, etc)\n\n if (!filter || filter(args)) {\n state[`${path}_index-${fieldIndex}`] = {\n disableFormData: true,\n errorPaths: [],\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n }\n\n await iterateFields({\n id,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: field.localized || anyParentLocalized,\n data,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tabs') {\n const promises = field.tabs.map((tab) => {\n const isNamedTab = tabHasName(tab)\n\n return iterateFields({\n id,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: tab.localized || anyParentLocalized,\n data: isNamedTab ? data?.[tab.name] || {} : data,\n fields: tab.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: isNamedTab ? `${path}${tab.name}.` : path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n })\n\n await Promise.all(promises)\n } else if (field.type === 'ui') {\n if (!filter || filter(args)) {\n state[`${path}_index-${fieldIndex}`] = {\n disableFormData: true,\n errorPaths: [],\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n }\n }\n}\n"],"names":["ObjectIdImport","fieldAffectsData","fieldHasSubFields","tabHasName","getFilterOptionsQuery","iterateFields","ObjectId","default","addFieldStatePromise","args","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","data","field","fieldIndex","filter","forceFullValue","fullData","includeSchema","omitParents","operation","passesCondition","path","preferences","req","skipConditionChecks","skipValidation","state","validate","fieldState","errorPaths","fieldSchema","undefined","initialValue","valid","value","validationResult","jsonError","type","name","JSON","parse","e","siblingData","errorPath","includes","push","errorMessage","arrayValue","Array","isArray","promises","rowMetadata","reduce","acc","row","i","rowPath","toHexString","fields","find","localized","parentPassesCondition","collapsedRowIDs","collapsed","admin","initCollapsed","Promise","all","length","disableFormData","rows","blocksValue","block","blocks","blockType","slug","blockField","blockName","filterOptions","relationTo","relation","query","user","hasMany","relationshipValue","map","relationship","tabs","tab","isNamedTab"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/forms/buildStateFromSchema/addFieldStatePromise.ts"],"sourcesContent":["import type {\n Data,\n DocumentPreferences,\n Field,\n FilterOptionsResult,\n FormField,\n FormState,\n PayloadRequest,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { fieldAffectsData, fieldHasSubFields, tabHasName } from 'payload/shared'\n\nimport { getFilterOptionsQuery } from './getFilterOptionsQuery.js'\nimport { iterateFields } from './iterateFields.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\nexport type AddFieldStatePromiseArgs = {\n addErrorPathToParent: (path: string) => void\n /**\n * if all parents are localized, then the field is localized\n */\n anyParentLocalized?: boolean\n collectionSlug?: string\n data: Data\n field: Field\n fieldIndex: number\n /**\n * You can use this to filter down to only `localized` fields that require translation (type: text, textarea, etc.). Another plugin might want to look for only `point` type fields to do some GIS function. With the filter function you can go in like a surgeon.\n */\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id: number | string\n /**\n * Whether the field schema should be included in the state\n */\n includeSchema?: boolean\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n operation: 'create' | 'update'\n passesCondition: boolean\n path: string\n\n preferences: DocumentPreferences\n /**\n * Req is used for validation and defaultValue calculation. If you don't need validation,\n * just create your own req and pass in the locale and the user\n */\n req: PayloadRequest\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state: FormState\n}\n\n/**\n * Flattens the fields schema and fields data.\n * The output is the field path (e.g. array.0.name) mapped to a FormField object.\n */\nexport const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Promise<void> => {\n const {\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n collectionSlug,\n data,\n field,\n fieldIndex,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n omitParents = false,\n operation,\n passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks = false,\n skipValidation = false,\n state,\n } = args\n\n if (fieldAffectsData(field)) {\n const validate = field.validate\n\n const fieldState: FormField = {\n errorPaths: [],\n fieldSchema: includeSchema ? field : undefined,\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n\n let validationResult: string | true = true\n\n if (typeof validate === 'function' && !skipValidation && passesCondition) {\n let jsonError\n\n if (field.type === 'json' && typeof data[field.name] === 'string') {\n try {\n JSON.parse(data[field.name] as string)\n } catch (e) {\n jsonError = e\n }\n }\n\n validationResult = await validate(data?.[field.name], {\n ...field,\n id,\n collectionSlug,\n data: fullData,\n operation,\n req,\n siblingData: data,\n // @ts-expect-error-next-line\n jsonError,\n preferences,\n })\n }\n\n const addErrorPathToParent = (errorPath: string) => {\n if (typeof addErrorPathToParentArg === 'function') {\n addErrorPathToParentArg(errorPath)\n }\n\n if (!fieldState.errorPaths.includes(errorPath)) {\n fieldState.errorPaths.push(errorPath)\n fieldState.valid = false\n }\n }\n\n if (typeof validationResult === 'string') {\n fieldState.errorMessage = validationResult\n fieldState.valid = false\n addErrorPathToParent(`${path}${field.name}`)\n } else {\n fieldState.valid = true\n }\n\n switch (field.type) {\n case 'array': {\n const arrayValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const { promises, rowMetadata } = arrayValue.reduce(\n (acc, row, i) => {\n const rowPath = `${path}${field.name}.${i}.`\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? field.fields.find((field) => 'name' in field && field.name === 'id')\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n })\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? arrayValue : arrayValue.length\n fieldState.initialValue = forceFullValue ? arrayValue : arrayValue.length\n\n if (arrayValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'blocks': {\n const blocksValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const { promises, rowMetadata } = blocksValue.reduce(\n (acc, row, i) => {\n const block = field.blocks.find((blockType) => blockType.slug === row.blockType)\n const rowPath = `${path}${field.name}.${i}.`\n\n if (block) {\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'id',\n )\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n\n state[`${rowPath}blockType`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockType',\n )\n : undefined,\n initialValue: row.blockType,\n valid: true,\n value: row.blockType,\n }\n\n state[`${rowPath}blockName`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockName',\n )\n : undefined,\n initialValue: row.blockName,\n valid: true,\n value: row.blockName,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n fields: block.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n blockType: row.blockType,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n })\n }\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? blocksValue : blocksValue.length\n fieldState.initialValue = forceFullValue ? blocksValue : blocksValue.length\n\n if (blocksValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'group': {\n if (!filter || filter(args)) {\n fieldState.disableFormData = true\n state[`${path}${field.name}`] = fieldState\n }\n\n await iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: data?.[field.name] || {},\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: `${path}${field.name}.`,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n\n break\n }\n\n case 'relationship': {\n if (field.filterOptions) {\n if (typeof field.filterOptions === 'object') {\n if (typeof field.relationTo === 'string') {\n fieldState.filterOptions = {\n [field.relationTo]: field.filterOptions,\n }\n } else {\n fieldState.filterOptions = field.relationTo.reduce((acc, relation) => {\n acc[relation] = field.filterOptions\n return acc\n }, {})\n }\n }\n\n if (typeof field.filterOptions === 'function') {\n const query = await getFilterOptionsQuery(field.filterOptions, {\n id,\n data: fullData,\n relationTo: field.relationTo,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n }\n\n if (field.hasMany) {\n const relationshipValue = Array.isArray(data[field.name])\n ? data[field.name].map((relationship) => {\n if (Array.isArray(field.relationTo)) {\n return {\n relationTo: relationship.relationTo,\n value:\n relationship.value && typeof relationship.value === 'object'\n ? relationship.value?.id\n : relationship.value,\n }\n }\n if (typeof relationship === 'object' && relationship !== null) {\n return relationship.id\n }\n return relationship\n })\n : undefined\n\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n if (\n data[field.name] &&\n typeof data[field.name] === 'object' &&\n 'relationTo' in data[field.name] &&\n 'value' in data[field.name]\n ) {\n const value =\n typeof data[field.name]?.value === 'object' &&\n data[field.name]?.value &&\n 'id' in data[field.name].value\n ? data[field.name].value.id\n : data[field.name].value\n const relationshipValue = {\n relationTo: data[field.name]?.relationTo,\n value,\n }\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n } else {\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'upload': {\n if (field.filterOptions) {\n if (typeof field.filterOptions === 'object') {\n fieldState.filterOptions = {\n [field.relationTo]: field.filterOptions,\n }\n }\n\n if (typeof field.filterOptions === 'function') {\n const query = await getFilterOptionsQuery(field.filterOptions, {\n id,\n data: fullData,\n relationTo: field.relationTo,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n }\n\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n default: {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n\n // Add field to state\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n }\n } else if (fieldHasSubFields(field)) {\n // Handle field types that do not use names (row, etc)\n\n if (!filter || filter(args)) {\n state[`${path}_index-${fieldIndex}`] = {\n disableFormData: true,\n errorPaths: [],\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n }\n\n await iterateFields({\n id,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: field.localized || anyParentLocalized,\n data,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tabs') {\n const promises = field.tabs.map((tab) => {\n const isNamedTab = tabHasName(tab)\n\n return iterateFields({\n id,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: tab.localized || anyParentLocalized,\n data: isNamedTab ? data?.[tab.name] || {} : data,\n fields: tab.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: isNamedTab ? `${path}${tab.name}.` : path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n })\n\n await Promise.all(promises)\n } else if (field.type === 'ui') {\n if (!filter || filter(args)) {\n state[`${path}_index-${fieldIndex}`] = {\n disableFormData: true,\n errorPaths: [],\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n }\n }\n}\n"],"names":["ObjectIdImport","fieldAffectsData","fieldHasSubFields","tabHasName","getFilterOptionsQuery","iterateFields","ObjectId","default","addFieldStatePromise","args","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","collectionSlug","data","field","fieldIndex","filter","forceFullValue","fullData","includeSchema","omitParents","operation","passesCondition","path","preferences","req","skipConditionChecks","skipValidation","state","validate","fieldState","errorPaths","fieldSchema","undefined","initialValue","valid","value","validationResult","jsonError","type","name","JSON","parse","e","siblingData","errorPath","includes","push","errorMessage","arrayValue","Array","isArray","promises","rowMetadata","reduce","acc","row","i","rowPath","toHexString","fields","find","localized","parentPassesCondition","collapsedRowIDs","collapsed","admin","initCollapsed","Promise","all","length","disableFormData","rows","blocksValue","block","blocks","blockType","slug","blockField","blockName","filterOptions","relationTo","relation","query","user","hasMany","relationshipValue","map","relationship","tabs","tab","isNamedTab"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { Data, DocumentPreferences, Field as FieldSchema, FormState, PayloadRequest } from 'payload';
2
2
  import { iterateFields } from './iterateFields.js';
3
3
  type Args = {
4
+ collectionSlug?: string;
4
5
  data?: Data;
5
6
  fieldSchema: FieldSchema[] | undefined;
6
7
  id?: number | string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/buildStateFromSchema/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,mBAAmB,EACnB,KAAK,IAAI,WAAW,EACpB,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,KAAK,IAAI,GAAG;IACV,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,WAAW,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;IACtC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC/B,WAAW,EAAE,mBAAmB,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,CAAC,EAAE,IAAI,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,cAAc,CAAC,EAAE,mBAAmB,CAAA;IACpC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,oBAAoB,SAAgB,IAAI,KAAG,OAAO,CAAC,SAAS,CAiCxE,CAAA;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/buildStateFromSchema/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,mBAAmB,EACnB,KAAK,IAAI,WAAW,EACpB,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,KAAK,IAAI,GAAG;IACV,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,WAAW,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;IACtC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC/B,WAAW,EAAE,mBAAmB,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,CAAC,EAAE,IAAI,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,cAAc,CAAC,EAAE,mBAAmB,CAAA;IACpC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,oBAAoB,SAAgB,IAAI,KAAG,OAAO,CAAC,SAAS,CAkCxE,CAAA;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { calculateDefaultValues } from './calculateDefaultValues/index.js';
2
2
  import { iterateFields } from './iterateFields.js';
3
3
  export const buildStateFromSchema = async (args)=>{
4
- const { id, data: fullData = {}, fieldSchema, operation, preferences, req } = args;
4
+ const { id, collectionSlug, data: fullData = {}, fieldSchema, operation, preferences, req } = args;
5
5
  if (fieldSchema) {
6
6
  const state = {};
7
7
  const dataWithDefaultValues = await calculateDefaultValues({
@@ -15,6 +15,7 @@ export const buildStateFromSchema = async (args)=>{
15
15
  await iterateFields({
16
16
  id,
17
17
  addErrorPathToParent: null,
18
+ collectionSlug,
18
19
  data: dataWithDefaultValues,
19
20
  fields: fieldSchema,
20
21
  fullData,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/buildStateFromSchema/index.tsx"],"sourcesContent":["import type {\n Data,\n DocumentPreferences,\n Field as FieldSchema,\n FormState,\n PayloadRequest,\n} from 'payload'\n\nimport { calculateDefaultValues } from './calculateDefaultValues/index.js'\nimport { iterateFields } from './iterateFields.js'\n\ntype Args = {\n data?: Data\n fieldSchema: FieldSchema[] | undefined\n id?: number | string\n operation?: 'create' | 'update'\n preferences: DocumentPreferences\n req: PayloadRequest\n siblingData?: Data\n}\n\nexport type BuildFormStateArgs = {\n collectionSlug?: string\n data?: Data\n docPreferences?: DocumentPreferences\n formState?: FormState\n globalSlug?: string\n id?: number | string\n locale?: string\n operation?: 'create' | 'update'\n schemaPath: string\n}\n\nexport const buildStateFromSchema = async (args: Args): Promise<FormState> => {\n const { id, data: fullData = {}, fieldSchema, operation, preferences, req } = args\n\n if (fieldSchema) {\n const state: FormState = {}\n\n const dataWithDefaultValues = await calculateDefaultValues({\n id,\n data: fullData,\n fields: fieldSchema,\n locale: req.locale,\n siblingData: fullData,\n user: req.user,\n })\n\n await iterateFields({\n id,\n addErrorPathToParent: null,\n data: dataWithDefaultValues,\n fields: fieldSchema,\n fullData,\n operation,\n parentPassesCondition: true,\n path: '',\n preferences,\n req,\n state,\n })\n\n return state\n }\n\n return {}\n}\n\nexport { iterateFields }\n"],"names":["calculateDefaultValues","iterateFields","buildStateFromSchema","args","id","data","fullData","fieldSchema","operation","preferences","req","state","dataWithDefaultValues","fields","locale","siblingData","user","addErrorPathToParent","parentPassesCondition","path"],"mappings":"AAQA,SAASA,sBAAsB,QAAQ,oCAAmC;AAC1E,SAASC,aAAa,QAAQ,qBAAoB;AAwBlD,OAAO,MAAMC,uBAAuB,OAAOC;IACzC,MAAM,EAAEC,EAAE,EAAEC,MAAMC,WAAW,CAAC,CAAC,EAAEC,WAAW,EAAEC,SAAS,EAAEC,WAAW,EAAEC,GAAG,EAAE,GAAGP;IAE9E,IAAII,aAAa;QACf,MAAMI,QAAmB,CAAC;QAE1B,MAAMC,wBAAwB,MAAMZ,uBAAuB;YACzDI;YACAC,MAAMC;YACNO,QAAQN;YACRO,QAAQJ,IAAII,MAAM;YAClBC,aAAaT;YACbU,MAAMN,IAAIM,IAAI;QAChB;QAEA,MAAMf,cAAc;YAClBG;YACAa,sBAAsB;YACtBZ,MAAMO;YACNC,QAAQN;YACRD;YACAE;YACAU,uBAAuB;YACvBC,MAAM;YACNV;YACAC;YACAC;QACF;QAEA,OAAOA;IACT;IAEA,OAAO,CAAC;AACV,EAAC;AAED,SAASV,aAAa,GAAE"}
1
+ {"version":3,"sources":["../../../src/forms/buildStateFromSchema/index.tsx"],"sourcesContent":["import type {\n Data,\n DocumentPreferences,\n Field as FieldSchema,\n FormState,\n PayloadRequest,\n} from 'payload'\n\nimport { calculateDefaultValues } from './calculateDefaultValues/index.js'\nimport { iterateFields } from './iterateFields.js'\n\ntype Args = {\n collectionSlug?: string\n data?: Data\n fieldSchema: FieldSchema[] | undefined\n id?: number | string\n operation?: 'create' | 'update'\n preferences: DocumentPreferences\n req: PayloadRequest\n siblingData?: Data\n}\n\nexport type BuildFormStateArgs = {\n collectionSlug?: string\n data?: Data\n docPreferences?: DocumentPreferences\n formState?: FormState\n globalSlug?: string\n id?: number | string\n locale?: string\n operation?: 'create' | 'update'\n schemaPath: string\n}\n\nexport const buildStateFromSchema = async (args: Args): Promise<FormState> => {\n const { id, collectionSlug, data: fullData = {}, fieldSchema, operation, preferences, req } = args\n\n if (fieldSchema) {\n const state: FormState = {}\n\n const dataWithDefaultValues = await calculateDefaultValues({\n id,\n data: fullData,\n fields: fieldSchema,\n locale: req.locale,\n siblingData: fullData,\n user: req.user,\n })\n\n await iterateFields({\n id,\n addErrorPathToParent: null,\n collectionSlug,\n data: dataWithDefaultValues,\n fields: fieldSchema,\n fullData,\n operation,\n parentPassesCondition: true,\n path: '',\n preferences,\n req,\n state,\n })\n\n return state\n }\n\n return {}\n}\n\nexport { iterateFields }\n"],"names":["calculateDefaultValues","iterateFields","buildStateFromSchema","args","id","collectionSlug","data","fullData","fieldSchema","operation","preferences","req","state","dataWithDefaultValues","fields","locale","siblingData","user","addErrorPathToParent","parentPassesCondition","path"],"mappings":"AAQA,SAASA,sBAAsB,QAAQ,oCAAmC;AAC1E,SAASC,aAAa,QAAQ,qBAAoB;AAyBlD,OAAO,MAAMC,uBAAuB,OAAOC;IACzC,MAAM,EAAEC,EAAE,EAAEC,cAAc,EAAEC,MAAMC,WAAW,CAAC,CAAC,EAAEC,WAAW,EAAEC,SAAS,EAAEC,WAAW,EAAEC,GAAG,EAAE,GAAGR;IAE9F,IAAIK,aAAa;QACf,MAAMI,QAAmB,CAAC;QAE1B,MAAMC,wBAAwB,MAAMb,uBAAuB;YACzDI;YACAE,MAAMC;YACNO,QAAQN;YACRO,QAAQJ,IAAII,MAAM;YAClBC,aAAaT;YACbU,MAAMN,IAAIM,IAAI;QAChB;QAEA,MAAMhB,cAAc;YAClBG;YACAc,sBAAsB;YACtBb;YACAC,MAAMO;YACNC,QAAQN;YACRD;YACAE;YACAU,uBAAuB;YACvBC,MAAM;YACNV;YACAC;YACAC;QACF;QAEA,OAAOA;IACT;IAEA,OAAO,CAAC;AACV,EAAC;AAED,SAASX,aAAa,GAAE"}
@@ -6,6 +6,7 @@ type Args = {
6
6
  * if any parents is localized, then the field is localized. @default false
7
7
  */
8
8
  anyParentLocalized?: boolean;
9
+ collectionSlug?: string;
9
10
  data: Data;
10
11
  fields: FieldSchema[];
11
12
  filter?: (args: AddFieldStatePromiseArgs) => boolean;
@@ -47,6 +48,6 @@ type Args = {
47
48
  /**
48
49
  * Flattens the fields schema and fields data
49
50
  */
50
- export declare const iterateFields: ({ id, addErrorPathToParent: addErrorPathToParentArg, anyParentLocalized, data, fields, filter, forceFullValue, fullData, includeSchema, omitParents, operation, parentPassesCondition, path, preferences, req, skipConditionChecks, skipValidation, state, }: Args) => Promise<void>;
51
+ export declare const iterateFields: ({ id, addErrorPathToParent: addErrorPathToParentArg, anyParentLocalized, collectionSlug, data, fields, filter, forceFullValue, fullData, includeSchema, omitParents, operation, parentPassesCondition, path, preferences, req, skipConditionChecks, skipValidation, state, }: Args) => Promise<void>;
51
52
  export {};
52
53
  //# sourceMappingURL=iterateFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iterateFields.d.ts","sourceRoot":"","sources":["../../../src/forms/buildStateFromSchema/iterateFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,mBAAmB,EACnB,KAAK,IAAI,WAAW,EACpB,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAIzE,KAAK,IAAI,GAAG;IACV,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAA;IACpD;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,IAAI,CAAA;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;OAEG;IACH,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,mBAAmB,CAAA;IACjC,GAAG,EAAE,cAAc,CAAA;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,iQAmBvB,IAAI,KAAG,OAAO,CAAC,IAAI,CAyCrB,CAAA"}
1
+ {"version":3,"file":"iterateFields.d.ts","sourceRoot":"","sources":["../../../src/forms/buildStateFromSchema/iterateFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,mBAAmB,EACnB,KAAK,IAAI,WAAW,EACpB,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAIzE,KAAK,IAAI,GAAG;IACV,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAA;IACpD;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,IAAI,CAAA;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;OAEG;IACH,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,mBAAmB,CAAA;IACjC,GAAG,EAAE,cAAc,CAAA;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,iRAoBvB,IAAI,KAAG,OAAO,CAAC,IAAI,CA0CrB,CAAA"}
@@ -2,7 +2,7 @@ import { fieldIsPresentationalOnly } from 'payload/shared';
2
2
  import { addFieldStatePromise } from './addFieldStatePromise.js';
3
3
  /**
4
4
  * Flattens the fields schema and fields data
5
- */ export const iterateFields = async ({ id, addErrorPathToParent: addErrorPathToParentArg, anyParentLocalized = false, data, fields, filter, forceFullValue = false, fullData, includeSchema = false, omitParents = false, operation, parentPassesCondition = true, path = '', preferences, req, skipConditionChecks = false, skipValidation = false, state = {} })=>{
5
+ */ export const iterateFields = async ({ id, addErrorPathToParent: addErrorPathToParentArg, anyParentLocalized = false, collectionSlug, data, fields, filter, forceFullValue = false, fullData, includeSchema = false, omitParents = false, operation, parentPassesCondition = true, path = '', preferences, req, skipConditionChecks = false, skipValidation = false, state = {} })=>{
6
6
  const promises = [];
7
7
  fields.forEach((field, fieldIndex)=>{
8
8
  if (!fieldIsPresentationalOnly(field) && !field?.admin?.disabled) {
@@ -16,6 +16,7 @@ import { addFieldStatePromise } from './addFieldStatePromise.js';
16
16
  id,
17
17
  addErrorPathToParent: addErrorPathToParentArg,
18
18
  anyParentLocalized,
19
+ collectionSlug,
19
20
  data,
20
21
  field,
21
22
  fieldIndex,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/buildStateFromSchema/iterateFields.ts"],"sourcesContent":["import type {\n Data,\n DocumentPreferences,\n Field as FieldSchema,\n FormState,\n PayloadRequest,\n} from 'payload'\n\nimport { fieldIsPresentationalOnly } from 'payload/shared'\n\nimport type { AddFieldStatePromiseArgs } from './addFieldStatePromise.js'\n\nimport { addFieldStatePromise } from './addFieldStatePromise.js'\n\ntype Args = {\n addErrorPathToParent: (path: string) => void\n /**\n * if any parents is localized, then the field is localized. @default false\n */\n anyParentLocalized?: boolean\n data: Data\n fields: FieldSchema[]\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id?: number | string\n /**\n * Whether the field schema should be included in the state. @default false\n */\n includeSchema?: boolean\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n /**\n * operation is only needed for validation\n */\n operation: 'create' | 'update'\n parentPassesCondition?: boolean\n /**\n * The initial path of the field. @default ''\n */\n path?: string\n preferences?: DocumentPreferences\n req: PayloadRequest\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state?: FormState\n}\n\n/**\n * Flattens the fields schema and fields data\n */\nexport const iterateFields = async ({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n data,\n fields,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n omitParents = false,\n operation,\n parentPassesCondition = true,\n path = '',\n preferences,\n req,\n skipConditionChecks = false,\n skipValidation = false,\n state = {},\n}: Args): Promise<void> => {\n const promises = []\n\n fields.forEach((field, fieldIndex) => {\n if (!fieldIsPresentationalOnly(field) && !field?.admin?.disabled) {\n let passesCondition = true\n if (!skipConditionChecks) {\n passesCondition = Boolean(\n (field?.admin?.condition\n ? Boolean(field.admin.condition(fullData || {}, data || {}, { user: req.user }))\n : true) && parentPassesCondition,\n )\n }\n\n promises.push(\n addFieldStatePromise({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized,\n data,\n field,\n fieldIndex,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n }\n })\n\n await Promise.all(promises)\n}\n"],"names":["fieldIsPresentationalOnly","addFieldStatePromise","iterateFields","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","data","fields","filter","forceFullValue","fullData","includeSchema","omitParents","operation","parentPassesCondition","path","preferences","req","skipConditionChecks","skipValidation","state","promises","forEach","field","fieldIndex","admin","disabled","passesCondition","Boolean","condition","user","push","Promise","all"],"mappings":"AAQA,SAASA,yBAAyB,QAAQ,iBAAgB;AAI1D,SAASC,oBAAoB,QAAQ,4BAA2B;AA+ChE;;CAEC,GACD,OAAO,MAAMC,gBAAgB,OAAO,EAClCC,EAAE,EACFC,sBAAsBC,uBAAuB,EAC7CC,qBAAqB,KAAK,EAC1BC,IAAI,EACJC,MAAM,EACNC,MAAM,EACNC,iBAAiB,KAAK,EACtBC,QAAQ,EACRC,gBAAgB,KAAK,EACrBC,cAAc,KAAK,EACnBC,SAAS,EACTC,wBAAwB,IAAI,EAC5BC,OAAO,EAAE,EACTC,WAAW,EACXC,GAAG,EACHC,sBAAsB,KAAK,EAC3BC,iBAAiB,KAAK,EACtBC,QAAQ,CAAC,CAAC,EACL;IACL,MAAMC,WAAW,EAAE;IAEnBd,OAAOe,OAAO,CAAC,CAACC,OAAOC;QACrB,IAAI,CAACzB,0BAA0BwB,UAAU,CAACA,OAAOE,OAAOC,UAAU;YAChE,IAAIC,kBAAkB;YACtB,IAAI,CAACT,qBAAqB;gBACxBS,kBAAkBC,QAChB,AAACL,CAAAA,OAAOE,OAAOI,YACXD,QAAQL,MAAME,KAAK,CAACI,SAAS,CAACnB,YAAY,CAAC,GAAGJ,QAAQ,CAAC,GAAG;oBAAEwB,MAAMb,IAAIa,IAAI;gBAAC,MAC3E,IAAG,KAAMhB;YAEjB;YAEAO,SAASU,IAAI,CACX/B,qBAAqB;gBACnBE;gBACAC,sBAAsBC;gBACtBC;gBACAC;gBACAiB;gBACAC;gBACAhB;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAc;gBACAZ;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;YACF;QAEJ;IACF;IAEA,MAAMY,QAAQC,GAAG,CAACZ;AACpB,EAAC"}
1
+ {"version":3,"sources":["../../../src/forms/buildStateFromSchema/iterateFields.ts"],"sourcesContent":["import type {\n Data,\n DocumentPreferences,\n Field as FieldSchema,\n FormState,\n PayloadRequest,\n} from 'payload'\n\nimport { fieldIsPresentationalOnly } from 'payload/shared'\n\nimport type { AddFieldStatePromiseArgs } from './addFieldStatePromise.js'\n\nimport { addFieldStatePromise } from './addFieldStatePromise.js'\n\ntype Args = {\n addErrorPathToParent: (path: string) => void\n /**\n * if any parents is localized, then the field is localized. @default false\n */\n anyParentLocalized?: boolean\n collectionSlug?: string\n data: Data\n fields: FieldSchema[]\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id?: number | string\n /**\n * Whether the field schema should be included in the state. @default false\n */\n includeSchema?: boolean\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n /**\n * operation is only needed for validation\n */\n operation: 'create' | 'update'\n parentPassesCondition?: boolean\n /**\n * The initial path of the field. @default ''\n */\n path?: string\n preferences?: DocumentPreferences\n req: PayloadRequest\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state?: FormState\n}\n\n/**\n * Flattens the fields schema and fields data\n */\nexport const iterateFields = async ({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n collectionSlug,\n data,\n fields,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n omitParents = false,\n operation,\n parentPassesCondition = true,\n path = '',\n preferences,\n req,\n skipConditionChecks = false,\n skipValidation = false,\n state = {},\n}: Args): Promise<void> => {\n const promises = []\n\n fields.forEach((field, fieldIndex) => {\n if (!fieldIsPresentationalOnly(field) && !field?.admin?.disabled) {\n let passesCondition = true\n if (!skipConditionChecks) {\n passesCondition = Boolean(\n (field?.admin?.condition\n ? Boolean(field.admin.condition(fullData || {}, data || {}, { user: req.user }))\n : true) && parentPassesCondition,\n )\n }\n\n promises.push(\n addFieldStatePromise({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized,\n collectionSlug,\n data,\n field,\n fieldIndex,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n }\n })\n\n await Promise.all(promises)\n}\n"],"names":["fieldIsPresentationalOnly","addFieldStatePromise","iterateFields","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","collectionSlug","data","fields","filter","forceFullValue","fullData","includeSchema","omitParents","operation","parentPassesCondition","path","preferences","req","skipConditionChecks","skipValidation","state","promises","forEach","field","fieldIndex","admin","disabled","passesCondition","Boolean","condition","user","push","Promise","all"],"mappings":"AAQA,SAASA,yBAAyB,QAAQ,iBAAgB;AAI1D,SAASC,oBAAoB,QAAQ,4BAA2B;AAgDhE;;CAEC,GACD,OAAO,MAAMC,gBAAgB,OAAO,EAClCC,EAAE,EACFC,sBAAsBC,uBAAuB,EAC7CC,qBAAqB,KAAK,EAC1BC,cAAc,EACdC,IAAI,EACJC,MAAM,EACNC,MAAM,EACNC,iBAAiB,KAAK,EACtBC,QAAQ,EACRC,gBAAgB,KAAK,EACrBC,cAAc,KAAK,EACnBC,SAAS,EACTC,wBAAwB,IAAI,EAC5BC,OAAO,EAAE,EACTC,WAAW,EACXC,GAAG,EACHC,sBAAsB,KAAK,EAC3BC,iBAAiB,KAAK,EACtBC,QAAQ,CAAC,CAAC,EACL;IACL,MAAMC,WAAW,EAAE;IAEnBd,OAAOe,OAAO,CAAC,CAACC,OAAOC;QACrB,IAAI,CAAC1B,0BAA0ByB,UAAU,CAACA,OAAOE,OAAOC,UAAU;YAChE,IAAIC,kBAAkB;YACtB,IAAI,CAACT,qBAAqB;gBACxBS,kBAAkBC,QAChB,AAACL,CAAAA,OAAOE,OAAOI,YACXD,QAAQL,MAAME,KAAK,CAACI,SAAS,CAACnB,YAAY,CAAC,GAAGJ,QAAQ,CAAC,GAAG;oBAAEwB,MAAMb,IAAIa,IAAI;gBAAC,MAC3E,IAAG,KAAMhB;YAEjB;YAEAO,SAASU,IAAI,CACXhC,qBAAqB;gBACnBE;gBACAC,sBAAsBC;gBACtBC;gBACAC;gBACAC;gBACAiB;gBACAC;gBACAhB;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAc;gBACAZ;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;YACF;QAEJ;IACF;IAEA,MAAMY,QAAQC,GAAG,CAACZ;AACpB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/useField/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAkBlC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,WAAY,OAAO,KAAG,SAAS,CAAC,CAAC,CAsM1D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/useField/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAkBlC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,WAAY,OAAO,KAAG,SAAS,CAAC,CAAC,CA4M1D,CAAA"}