@payloadcms/ui 3.17.1 → 3.18.0-canary.030d28e

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 (34) hide show
  1. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
  3. package/dist/elements/EditMany/DrawerContent.d.ts +9 -0
  4. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -0
  5. package/dist/elements/EditMany/DrawerContent.js +388 -0
  6. package/dist/elements/EditMany/DrawerContent.js.map +1 -0
  7. package/dist/elements/EditMany/index.d.ts +1 -0
  8. package/dist/elements/EditMany/index.d.ts.map +1 -1
  9. package/dist/elements/EditMany/index.js +53 -374
  10. package/dist/elements/EditMany/index.js.map +1 -1
  11. package/dist/exports/client/{DatePicker-KBQ2BMRY.js → DatePicker-THCU4KZJ.js} +2 -2
  12. package/dist/exports/client/{chunk-KVIFHJCL.js → chunk-EG3ZOHFS.js} +1 -1
  13. package/dist/exports/client/{chunk-KVIFHJCL.js.map → chunk-EG3ZOHFS.js.map} +2 -2
  14. package/dist/exports/client/index.js +10 -10
  15. package/dist/exports/client/index.js.map +4 -4
  16. package/dist/forms/Form/index.d.ts.map +1 -1
  17. package/dist/forms/Form/index.js +1 -1
  18. package/dist/forms/Form/index.js.map +1 -1
  19. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  20. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +82 -62
  21. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  22. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  23. package/dist/forms/fieldSchemasToFormState/renderField.js +18 -12
  24. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  25. package/dist/providers/ListQuery/index.js +3 -1
  26. package/dist/providers/ListQuery/index.js.map +1 -1
  27. package/dist/providers/Root/index.d.ts +2 -2
  28. package/dist/providers/Root/index.d.ts.map +1 -1
  29. package/dist/providers/Root/index.js.map +1 -1
  30. package/dist/providers/Translation/index.d.ts +3 -3
  31. package/dist/providers/Translation/index.d.ts.map +1 -1
  32. package/dist/providers/Translation/index.js.map +1 -1
  33. package/package.json +5 -5
  34. /package/dist/exports/client/{DatePicker-KBQ2BMRY.js.map → DatePicker-THCU4KZJ.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAGV,SAAS,EAGV,MAAM,YAAY,CAAA;AA6BnB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA4qBpC,CAAA;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAGV,SAAS,EAGV,MAAM,YAAY,CAAA;AA6BnB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAgrBpC,CAAA;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -197,7 +197,7 @@ export const Form = props => {
197
197
  });
198
198
  revalidatedFormState = result;
199
199
  }, Promise.resolve());
200
- const isValid_0 = Object.entries(revalidatedFormState).every(([, field_0]) => field_0.valid);
200
+ const isValid_0 = Object.entries(revalidatedFormState).every(([, field_0]) => field_0.valid !== false);
201
201
  if (!isValid_0) {
202
202
  setProcessing(false);
203
203
  setSubmitted(true);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dequal","useRouter","serialize","deepCopyObjectSimpleWithoutReactComponents","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","useIgnoredEffectDebounced","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useServerFunctions","useTranslation","abortAndIgnore","handleAbortRef","requests","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","docPermissions","getDocPreferences","globalSlug","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","handleResponse","initialState","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","getFormState","config","setDisabled","isMounted","setIsMounted","modified","setModified","initializing","setInitializing","processing","setProcessing","setSubmitted","formRef","contextRef","abortResetFormRef","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","overridesFromArgs","skipValidation","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","serializableFields","reduce","priorOnChange","beforeSubmitFn","result","formState","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","newState","mergedFormState","acceptValues","existingState","incomingState","optimize","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","dataToSerialize","_payload","JSON","stringify","indices","nullsAsUndefineds","reset","controller","docPreferences","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","classes","filter","join","executeOnChange","onChangeFn","changed","delay","_jsx","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\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 { type FormState, type PayloadRequest } from 'payload'\nimport {\n deepCopyObjectSimpleWithoutReactComponents,\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 CreateFormData,\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useIgnoredEffectDebounced } from '../../hooks/useIgnoredEffect.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 { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.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, docPermissions, getDocPreferences, globalSlug } = useDocumentInfo()\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disabled: disabledFromProps,\n disableSuccessStatus,\n disableValidationOnSubmit,\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 { getFormState } = useServerFunctions()\n\n const { config } = useConfig()\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 const abortResetFormRef = useRef<AbortController>(null)\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 ('validate' in field && 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 unknown 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: overridesFromArgs = {},\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 errorToast, successToast\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) {\n await wait(100)\n }\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: serializableFields,\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 let overrides = {}\n\n if (typeof overridesFromArgs === 'function') {\n overrides = overridesFromArgs(contextRef.current.fields)\n } else if (typeof overridesFromArgs === 'object') {\n overrides = overridesFromArgs\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n const data = reduceFieldsToValues(serializableFields, true)\n\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n\n onSubmit(serializableFields, 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 mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function'),\n })\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) {\n json = await res.json()\n }\n if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json)\n if (newFormState) {\n const { newState: mergedFormState } = mergeServerFormState({\n acceptValues: true,\n existingState: contextRef.current.fields || {},\n incomingState: newFormState,\n })\n\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: mergedFormState,\n })\n }\n }\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?.path) {\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) // eslint-disable-line no-console\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\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\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n const createFormData = useCallback<CreateFormData>((overrides, { mergeOverrideData = true }) => {\n let data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(data),\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 controller = handleAbortRef(abortResetFormRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newState } = await getFormState({\n id,\n collectionSlug,\n data,\n docPermissions,\n docPreferences,\n globalSlug,\n locale,\n operation,\n renderAllFields: true,\n schemaPath: collectionSlug ? collectionSlug : globalSlug,\n signal: controller.signal,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n\n abortResetFormRef.current = null\n },\n [\n collectionSlug,\n dispatchFields,\n globalSlug,\n id,\n operation,\n getFormState,\n docPermissions,\n getDocPreferences,\n locale,\n ],\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 addFieldRow: FormContextType['addFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const newRows: unknown[] = getDataByPath(path) || []\n const rowIndex = rowIndexArg === undefined ? newRows.length : rowIndexArg\n\n // dispatch ADD_ROW that sets requiresRender: true and adds a blank row to local form state.\n // This performs no form state request, as the debounced onChange effect will do that for us.\n dispatchFields({\n type: 'ADD_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\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 ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const currentRows: unknown[] = getDataByPath(path)\n const rowIndex = rowIndexArg === undefined ? currentRows.length : rowIndexArg\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n useEffect(() => {\n const abortOnChange = abortResetFormRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\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') {\n setDisabled(disabledFromProps)\n }\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') {\n setSubmitted(submittedFromProps)\n }\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 useIgnoredEffectDebounced(\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 // Edit view default onChange is in packages/ui/src/views/Edit/index.tsx. This onChange usually sends a form state request\n revalidatedFormState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(contextRef.current.fields),\n })\n }\n\n if (!revalidatedFormState) {\n return\n }\n\n const { changed, newState } = mergeServerFormState({\n existingState: contextRef.current.fields || {},\n incomingState: 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) {\n void executeOnChange()\n }\n },\n /*\n Make sure we trigger this whenever modified changes (not just when `fields` changes),\n otherwise we will miss merging server form state for the first form update/onChange.\n\n Here's why:\n `fields` updates before `modified`, because setModified is in a setTimeout.\n So on the first change, modified is false, so we don't trigger the effect even though we should.\n **/\n [contextRef.current.fields, modified],\n [dispatchFields, onChange],\n {\n delay: 250,\n },\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["dequal","useRouter","serialize","deepCopyObjectSimpleWithoutReactComponents","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","useIgnoredEffectDebounced","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useServerFunctions","useTranslation","abortAndIgnore","handleAbortRef","requests","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","docPermissions","getDocPreferences","globalSlug","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","handleResponse","initialState","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","getFormState","config","setDisabled","isMounted","setIsMounted","modified","setModified","initializing","setInitializing","processing","setProcessing","setSubmitted","formRef","contextRef","abortResetFormRef","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","overridesFromArgs","skipValidation","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","serializableFields","reduce","priorOnChange","beforeSubmitFn","result","formState","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","newState","mergedFormState","acceptValues","existingState","incomingState","optimize","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","dataToSerialize","_payload","JSON","stringify","indices","nullsAsUndefineds","reset","controller","docPreferences","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","classes","filter","join","executeOnChange","onChangeFn","changed","delay","_jsx","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\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 { type FormState, type PayloadRequest } from 'payload'\nimport {\n deepCopyObjectSimpleWithoutReactComponents,\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 CreateFormData,\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useIgnoredEffectDebounced } from '../../hooks/useIgnoredEffect.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 { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.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, docPermissions, getDocPreferences, globalSlug } = useDocumentInfo()\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disabled: disabledFromProps,\n disableSuccessStatus,\n disableValidationOnSubmit,\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 { getFormState } = useServerFunctions()\n\n const { config } = useConfig()\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 const abortResetFormRef = useRef<AbortController>(null)\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 ('validate' in field && 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 unknown 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: overridesFromArgs = {},\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 errorToast, successToast\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) {\n await wait(100)\n }\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: serializableFields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(\n ([, field]) => field.valid !== false,\n )\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 let overrides = {}\n\n if (typeof overridesFromArgs === 'function') {\n overrides = overridesFromArgs(contextRef.current.fields)\n } else if (typeof overridesFromArgs === 'object') {\n overrides = overridesFromArgs\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n const data = reduceFieldsToValues(serializableFields, true)\n\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n\n onSubmit(serializableFields, 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 mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function'),\n })\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) {\n json = await res.json()\n }\n if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json)\n if (newFormState) {\n const { newState: mergedFormState } = mergeServerFormState({\n acceptValues: true,\n existingState: contextRef.current.fields || {},\n incomingState: newFormState,\n })\n\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: mergedFormState,\n })\n }\n }\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?.path) {\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) // eslint-disable-line no-console\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\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\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n const createFormData = useCallback<CreateFormData>((overrides, { mergeOverrideData = true }) => {\n let data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(data),\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 controller = handleAbortRef(abortResetFormRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newState } = await getFormState({\n id,\n collectionSlug,\n data,\n docPermissions,\n docPreferences,\n globalSlug,\n locale,\n operation,\n renderAllFields: true,\n schemaPath: collectionSlug ? collectionSlug : globalSlug,\n signal: controller.signal,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n\n abortResetFormRef.current = null\n },\n [\n collectionSlug,\n dispatchFields,\n globalSlug,\n id,\n operation,\n getFormState,\n docPermissions,\n getDocPreferences,\n locale,\n ],\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 addFieldRow: FormContextType['addFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const newRows: unknown[] = getDataByPath(path) || []\n const rowIndex = rowIndexArg === undefined ? newRows.length : rowIndexArg\n\n // dispatch ADD_ROW that sets requiresRender: true and adds a blank row to local form state.\n // This performs no form state request, as the debounced onChange effect will do that for us.\n dispatchFields({\n type: 'ADD_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\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 ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const currentRows: unknown[] = getDataByPath(path)\n const rowIndex = rowIndexArg === undefined ? currentRows.length : rowIndexArg\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n useEffect(() => {\n const abortOnChange = abortResetFormRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\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') {\n setDisabled(disabledFromProps)\n }\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') {\n setSubmitted(submittedFromProps)\n }\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 useIgnoredEffectDebounced(\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 // Edit view default onChange is in packages/ui/src/views/Edit/index.tsx. This onChange usually sends a form state request\n revalidatedFormState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(contextRef.current.fields),\n })\n }\n\n if (!revalidatedFormState) {\n return\n }\n\n const { changed, newState } = mergeServerFormState({\n existingState: contextRef.current.fields || {},\n incomingState: 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) {\n void executeOnChange()\n }\n },\n /*\n Make sure we trigger this whenever modified changes (not just when `fields` changes),\n otherwise we will miss merging server form state for the first form update/onChange.\n\n Here's why:\n `fields` updates before `modified`, because setModified is in a setTimeout.\n So on the first change, modified is false, so we don't trigger the effect even though we should.\n **/\n [contextRef.current.fields, modified],\n [dispatchFields, onChange],\n {\n delay: 250,\n },\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"],"mappings":"AAAA;;;AACA,SAASA,MAAM,QAAQ,cAAa,CAAC;AACrC,SAASC,SAAS,QAAQ;AAC1B,SAASC,SAAS,QAAQ;AAE1B,SACEC,0CAA0C,EAC1CC,aAAA,IAAiBC,iBAAiB,EAClCC,cAAA,IAAkBC,kBAAkB,EACpCC,oBAAoB,EACpBC,IAAI,QACC;AACP,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAC5E,SAASC,KAAK,QAAQ;AAUtB,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,kBAAkB,QAAQ;AACnC,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,SAAS,QAAQ;AAC1B,SAASC,YAAY,QAAQ;AAC7B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,EAAEC,cAAc,QAAQ;AAC/C,SAASC,QAAQ,QAAQ;AACzB,SACEC,WAAW,EACXC,iBAAiB,EACjBC,gBAAgB,EAChBC,mBAAmB,EACnBC,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,QACX;AACP,SAASC,aAAa,QAAQ;AAC9B,SAASC,YAAY,QAAQ;AAC7B,SAASC,gBAAgB,QAAQ;AACjC,SAASC,oBAAoB,QAAQ;AAErC,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,IAAA,GAA6BC,KAAA;EACxC,MAAM;IAAEC,EAAE;IAAEC,cAAc;IAAEC,cAAc;IAAEC,iBAAiB;IAAEC;EAAU,CAAE,GAAG1B,eAAA;EAE9E,MAAM;IACJ2B,MAAM;IACNC,YAAY;IACZC,QAAQ;IACRC,SAAS;IACTC,QAAA,EAAUC,iBAAiB;IAC3BC,oBAAoB;IACpBC,yBAAyB;IACzB;IACAC,cAAc;IACdC,YAAY;IACZC,cAAA,EAAgBC,qBAAqB;IACrCC,QAAQ;IACRC,QAAQ;IACRC,SAAS;IACTC,QAAQ;IACRC,SAAA,EAAWC,kBAAkB;IAC7BC,IAAI;IACJC;EAAmB,CACpB,GAAGzB,KAAA;EAEJ,MAAM0B,MAAA,GAAS,YAAY1B,KAAA,GAAQA,KAAA,EAAO0B,MAAA,GAASC,SAAA;EAEnD,MAAMC,MAAA,GAASrE,SAAA;EAEf,MAAM;IAAEsE,IAAA,EAAMC;EAAM,CAAE,GAAGlD,SAAA;EACzB,MAAM;IAAEmD,IAAI;IAAEC;EAAC,CAAE,GAAGjD,cAAA;EACpB,MAAM;IAAEkD,aAAa;IAAEC;EAAI,CAAE,GAAGzD,OAAA;EAChC,MAAM0D,SAAA,GAAYtD,YAAA;EAElB,MAAM;IAAEuD;EAAY,CAAE,GAAGtD,kBAAA;EAEzB,MAAM;IAAEuD;EAAM,CAAE,GAAG3D,SAAA;EAEnB,MAAM,CAACgC,QAAA,EAAU4B,WAAA,CAAY,GAAGjE,QAAA,CAASsC,iBAAA,IAAqB;EAC9D,MAAM,CAAC4B,SAAA,EAAWC,YAAA,CAAa,GAAGnE,QAAA,CAAS;EAC3C,MAAM,CAACoE,QAAA,EAAUC,WAAA,CAAY,GAAGrE,QAAA,CAAS;EACzC,MAAM,CAACsE,YAAA,EAAcC,eAAA,CAAgB,GAAGvE,QAAA,CAAS4C,qBAAA;EACjD,MAAM,CAAC4B,UAAA,EAAYC,aAAA,CAAc,GAAGzE,QAAA,CAAS;EAC7C,MAAM,CAACiD,SAAA,EAAWyB,YAAA,CAAa,GAAG1E,QAAA,CAAS;EAC3C,MAAM2E,OAAA,GAAU5E,MAAA,CAAwB;EACxC,MAAM6E,UAAA,GAAa7E,MAAA,CAAO,CAAC;EAC3B,MAAM8E,iBAAA,GAAoB9E,MAAA,CAAwB;EAElD,MAAM+E,aAAA,GAAgBhF,UAAA,CAAWwB,YAAA,EAAc,CAAC,GAAG,MAAMoB,YAAA;EAEzD;;;;EAIA,MAAM,CAACqC,MAAA,EAAQC,cAAA,CAAe,GAAGF,aAAA;EAEjCF,UAAA,CAAWK,OAAO,CAACF,MAAM,GAAGA,MAAA;EAE5B,MAAMG,YAAA,GAAetF,WAAA,CAAY;IAC/B,MAAMuF,mBAAA,GAAsB,CAAC;IAC7B,IAAIC,OAAA,GAAU;IAEd,MAAMC,eAAA,GAAkBT,UAAA,CAAWK,OAAO,CAACK,OAAO;IAClD,MAAMC,IAAA,GAAOF,eAAA;IAEb,MAAMG,kBAAA,GAAqBC,MAAA,CAAOC,OAAO,CAACd,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAEY,GAAG,CACtE,OAAO,CAACC,IAAA,EAAMC,KAAA,CAAM;MAClB,MAAMC,cAAA,GAAiBD,KAAA;MAEvB,IAAIA,KAAA,CAAME,eAAe,KAAK,OAAO;QACnC,IAAIC,gBAAA,GAAqCF,cAAA,CAAeG,KAAK;QAE7D,IAAI,cAAcJ,KAAA,IAAS,OAAOA,KAAA,CAAMK,QAAQ,KAAK,YAAY;UAC/D,IAAIC,eAAA,GAAkBN,KAAA,CAAMO,KAAK;UAEjC,IAAIP,KAAA,EAAOQ,IAAA,IAAQC,KAAA,CAAMC,OAAO,CAACV,KAAA,CAAMQ,IAAI,GAAG;YAC5CF,eAAA,GAAkBvB,UAAA,CAAWK,OAAO,CAAC5F,aAAa,CAACuG,IAAA;UACrD;UAEAI,gBAAA,GAAmB,MAAMH,KAAA,CAAMK,QAAQ,CAACC,eAAA,EAAiB;YACvD,GAAGN,KAAK;YACRjE,EAAA;YACAC,cAAA;YACA0D,IAAA;YACAzB,SAAA;YACA0C,WAAA,EAAa,CAAC;YACdC,GAAA,EAAK;cACHC,OAAA,EAAS;gBACP1C;cACF;cACAL,CAAA;cACAE;YACF;YACA8C,WAAA,EAAa/B,UAAA,CAAWK,OAAO,CAAC1F,cAAc,CAACqG,IAAA;UACjD;UAEA,IAAI,OAAOI,gBAAA,KAAqB,UAAU;YACxCF,cAAA,CAAec,YAAY,GAAGZ,gBAAA;YAC9BF,cAAA,CAAeG,KAAK,GAAG;UACzB,OAAO;YACLH,cAAA,CAAeG,KAAK,GAAG;YACvBH,cAAA,CAAec,YAAY,GAAGtD,SAAA;UAChC;QACF;QAEA,IAAIwC,cAAA,CAAeG,KAAK,KAAK,OAAO;UAClCb,OAAA,GAAU;QACZ;MACF;MAEAD,mBAAmB,CAACS,IAAA,CAAK,GAAGE,cAAA;IAC9B;IAGF,MAAMe,OAAA,CAAQC,GAAG,CAACtB,kBAAA;IAElB,IAAI,CAACvG,MAAA,CAAO2F,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAEI,mBAAA,GAAsB;MAC3DH,cAAA,CAAe;QAAE+B,IAAA,EAAM;QAAiBC,KAAA,EAAO7B;MAAoB;IACrE;IAEA,OAAOC,OAAA;EACT,GAAG,CAACvD,cAAA,EAAgBmC,MAAA,EAAQgB,cAAA,EAAgBpD,EAAA,EAAIkC,SAAA,EAAWH,CAAA,EAAGE,IAAA,CAAK;EAEnE,MAAMoD,MAAA,GAASrH,WAAA,CACb,OAAOsH,OAAA,GAAyB,CAAC,CAAC,EAAEC,CAAA;IAClC,MAAM;MACJlF,MAAA,EAAQmF,SAAA,GAAYnF,MAAM;MAC1BoB,MAAA,EAAQgE,WAAA,GAAchE,MAAM;MAC5BiE,SAAA,EAAWC,iBAAA,GAAoB,CAAC,CAAC;MACjCC;IAAc,CACf,GAAGN,OAAA;IAEJ,IAAI7E,QAAA,EAAU;MACZ,IAAI8E,CAAA,EAAG;QACLA,CAAA,CAAEM,cAAc;MAClB;MACA;IACF;IAEA;IACA,IAAIC,UAAA,EAAYC,YAAA;IAChB,MAAMC,OAAA,GAAU,IAAIf,OAAA,CAAQ,CAACgB,OAAA,EAASC,MAAA;MACpCH,YAAA,GAAeE,OAAA;MACfH,UAAA,GAAaI,MAAA;IACf;IAEA,MAAMC,mBAAA,GACJX,SAAA,IAAa,OAAOnF,MAAA,KAAW,YAAY,OAAOA,MAAA,KAAW;IAE/D,IAAIe,QAAA,IAAYT,oBAAA,IAAwB,CAACwF,mBAAA,EAAqB;MAC5D;MACA;MACAJ,YAAA,GAAgBpC,MAAA,IAAStF,KAAA,CAAM+H,OAAO,CAACzC,MAAA;MACvCmC,UAAA,GAAcnC,MAAA,IAAStF,KAAA,CAAMgI,KAAK,CAAC1C,MAAA;IACrC,OAAO;MACLtF,KAAA,CAAM2H,OAAO,CAACA,OAAA,EAAS;QACrBK,KAAA,EAAQ1C,MAAA;UACN,OAAOA,MAAA;QACT;QACA2C,OAAA,EAASvE,CAAA,CAAE;QACXqE,OAAA,EAAUzC,MAAA;UACR,OAAOA,MAAA;QACT;MACF;IACF;IAEA,IAAI4B,CAAA,EAAG;MACLA,CAAA,CAAEgB,eAAe;MACjBhB,CAAA,CAAEM,cAAc;IAClB;IAEAhD,aAAA,CAAc;IACdR,WAAA,CAAY;IAEZ,IAAIb,mBAAA,EAAqB;MACvB,MAAM1D,IAAA,CAAK;IACb;IAEA;IACA,IAAI4G,KAAA,CAAMC,OAAO,CAACrE,YAAA,GAAe;MAC/B,IAAIkG,oBAAA;MAEJ,MAAMC,kBAAA,GAAqBjJ,0CAAA,CACzBwF,UAAA,CAAWK,OAAO,CAACF,MAAM;MAG3B,MAAM7C,YAAA,CAAaoG,MAAM,CAAC,OAAOC,aAAA,EAAeC,cAAA;QAC9C,MAAMD,aAAA;QAEN,MAAME,MAAA,GAAS,MAAMD,cAAA,CAAe;UAClCE,SAAA,EAAWL;QACb;QAEAD,oBAAA,GAAuBK,MAAA;MACzB,GAAG5B,OAAA,CAAQgB,OAAO;MAElB,MAAMzC,SAAA,GAAUK,MAAA,CAAOC,OAAO,CAAC0C,oBAAA,EAAsBO,KAAK,CACxD,CAAC,GAAG9C,OAAA,CAAM,KAAKA,OAAA,CAAMI,KAAK,KAAK;MAGjC,IAAI,CAACb,SAAA,EAAS;QACZX,aAAA,CAAc;QACdC,YAAA,CAAa;QACbT,WAAA,CAAY;QACZ,OAAOe,cAAA,CAAe;UAAE+B,IAAA,EAAM;UAAiBC,KAAA,EAAOoB;QAAqB;MAC7E;IACF;IAEA,MAAMhD,SAAA,GACJoC,cAAA,IAAkBhF,yBAAA,GAA4B,OAAO,MAAMoC,UAAA,CAAWK,OAAO,CAACC,YAAY;IAE5F;IACA,IAAI,CAACE,SAAA,EAAS;MACZsC,UAAA,CAAW/D,CAAA,CAAE;MACbc,aAAA,CAAc;MACdC,YAAA,CAAa;MACbT,WAAA,CAAY;MACZ;IACF;IAEA,IAAIqD,SAAA,GAAY,CAAC;IAEjB,IAAI,OAAOC,iBAAA,KAAsB,YAAY;MAC3CD,SAAA,GAAYC,iBAAA,CAAkB3C,UAAA,CAAWK,OAAO,CAACF,MAAM;IACzD,OAAO,IAAI,OAAOwC,iBAAA,KAAsB,UAAU;MAChDD,SAAA,GAAYC,iBAAA;IACd;IAEA;IACA,IAAIzE,QAAA,EAAU;MACZ,MAAMuF,oBAAA,GAAqBjJ,0CAAA,CACzBwF,UAAA,CAAWK,OAAO,CAACF,MAAM;MAG3B,MAAMQ,MAAA,GAAO9F,oBAAA,CAAqB4I,oBAAA,EAAoB;MAEtD,KAAK,MAAM,CAACO,GAAA,EAAKxC,KAAA,CAAM,IAAIX,MAAA,CAAOC,OAAO,CAAC4B,SAAA,GAAY;QACpD/B,MAAI,CAACqD,GAAA,CAAI,GAAGxC,KAAA;MACd;MAEAtD,QAAA,CAASuF,oBAAA,EAAoB9C,MAAA;IAC/B;IAEA,IAAI,CAACwC,mBAAA,EAAqB;MACxB;MACA;MACAtD,aAAA,CAAc;MACdC,YAAA,CAAa;MACbT,WAAA,CAAY;MACZ;IACF;IAEA,MAAM4E,QAAA,GAAWjE,UAAA,CAAWK,OAAO,CAAC6D,cAAc,CAACxB,SAAA,EAAW;MAC5DyB,iBAAA,EAAmBC,OAAA,CAAQ,OAAOzB,iBAAA,KAAsB;IAC1D;IAEA,IAAI;MACF,IAAI0B,GAAA;MAEJ,IAAI,OAAO7B,SAAA,KAAc,UAAU;QACjC6B,GAAA,GAAM,MAAMpI,QAAQ,CAACwG,WAAA,CAAY6B,WAAW,GAAG,CAAC9B,SAAA,EAAW;UACzD+B,IAAA,EAAMN,QAAA;UACNO,OAAA,EAAS;YACP,mBAAmB1F,IAAA,CAAK2F;UAC1B;QACF;MACF,OAAO,IAAI,OAAOpH,MAAA,KAAW,YAAY;QACvCgH,GAAA,GAAM,MAAMhH,MAAA,CAAO4G,QAAA;MACrB;MAEAxE,WAAA,CAAY;MACZJ,WAAA,CAAY;MAEZ,IAAI,OAAOxB,cAAA,KAAmB,YAAY;QACxCA,cAAA,CAAewG,GAAA,EAAKtB,YAAA,EAAcD,UAAA;QAClC;MACF;MAEA,MAAM4B,WAAA,GAAcL,GAAA,CAAIG,OAAO,CAACG,GAAG,CAAC;MACpC,MAAMC,MAAA,GAASF,WAAA,IAAeA,WAAA,CAAYG,OAAO,CAAC,wBAAwB,CAAC;MAE3E;MACA,IAAIC,IAAA,GAA4B,CAAC;MAEjC,IAAIF,MAAA,EAAQ;QACVE,IAAA,GAAO,MAAMT,GAAA,CAAIS,IAAI;MACvB;MACA,IAAIT,GAAA,CAAIU,MAAM,GAAG,KAAK;QACpB,IAAI,OAAO5G,SAAA,KAAc,YAAY;UACnC,MAAM6G,YAAA,GAAe,MAAM7G,SAAA,CAAU2G,IAAA;UACrC,IAAIE,YAAA,EAAc;YAChB,MAAM;cAAEC,QAAA,EAAUC;YAAe,CAAE,GAAGtI,oBAAA,CAAqB;cACzDuI,YAAA,EAAc;cACdC,aAAA,EAAepF,UAAA,CAAWK,OAAO,CAACF,MAAM,IAAI,CAAC;cAC7CkF,aAAA,EAAeL;YACjB;YAEA5E,cAAA,CAAe;cACb+B,IAAA,EAAM;cACNmD,QAAA,EAAU;cACVlD,KAAA,EAAO8C;YACT;UACF;QACF;QACApF,YAAA,CAAa;QACbD,aAAA,CAAc;QAEd,IAAIzB,QAAA,EAAU;UACZO,MAAA,CAAO4G,IAAI,CAACnH,QAAA;QACd,OAAO,IAAI,CAACT,oBAAA,EAAsB;UAChCoF,YAAA,CAAa+B,IAAA,CAAKU,OAAO,IAAIzG,CAAA,CAAE;QACjC;MACF,OAAO;QACLc,aAAA,CAAc;QACdC,YAAA,CAAa;QAEbE,UAAA,CAAWK,OAAO,GAAG;UAAE,GAAGL,UAAA,CAAWK;QAAQ,EAAE;QAAA;QAC/C,IAAIyE,IAAA,CAAKU,OAAO,EAAE;UAChB1C,UAAA,CAAWgC,IAAA,CAAKU,OAAO;UAEvB;QACF;QAEA,IAAI9D,KAAA,CAAMC,OAAO,CAACmD,IAAA,CAAKW,MAAM,GAAG;UAC9B,MAAM,CAACC,WAAA,EAAaC,cAAA,CAAe,GAAGb,IAAA,CAAKW,MAAM,CAAC/B,MAAM,CACtD,CAAC,CAACkC,SAAA,EAAWC,YAAA,CAAa,EAAEC,KAAA;YAC1B,MAAMC,YAAA,GAAe,EAAE;YACvB,MAAMC,eAAA,GAAkB,EAAE;YAE1B,IAAIF,KAAA,EAAKN,OAAA,EAAS;cAChBQ,eAAA,CAAgBT,IAAI,CAACO,KAAA;YACvB;YAEA,IAAIpE,KAAA,CAAMC,OAAO,CAACmE,KAAA,EAAKnF,IAAA,EAAM8E,MAAA,GAAS;cACpCK,KAAA,CAAInF,IAAI,EAAE8E,MAAA,CAAOQ,OAAA,CAASC,SAAA;gBACxB,IAAIA,SAAA,EAAWlF,IAAA,EAAM;kBACnB+E,YAAA,CAAaR,IAAI,CAACW,SAAA;gBACpB,OAAO;kBACLF,eAAA,CAAgBT,IAAI,CAACW,SAAA;gBACvB;cACF;YACF;YAEA,OAAO,CACL,C,GAAIN,SAAA,E,GAAcG,YAAA,CAAa,EAC/B,C,GAAIF,YAAA,E,GAAiBG,eAAA,CAAgB,CACtC;UACH,GACA,CAAC,EAAE,EAAE,EAAE,CAAC;UAGV5F,cAAA,CAAe;YACb+B,IAAA,EAAM;YACNsD,MAAA,EAAQC;UACV;UAEAC,cAAA,CAAeM,OAAO,CAAEH,KAAA;YACtBhD,UAAA,CAAWgD,KAAA,CAAIN,OAAO,IAAIzG,CAAA,CAAE;UAC9B;UAEA;QACF;QAEA,MAAMyG,OAAA,GAAU/I,aAAA,GAAgB4H,GAAA,CAAIU,MAAM,CAAC,IAAIV,GAAA,EAAK8B,UAAA,IAAcpH,CAAA,CAAE;QAEpE+D,UAAA,CAAW0C,OAAA;MACb;IACF,EAAE,OAAOM,GAAA,EAAK;MACZM,OAAA,CAAQ/C,KAAK,CAAC,yBAAyByC,GAAA,EAAK;MAAA;MAC5CjG,aAAA,CAAc;MACdC,YAAA,CAAa;MACbT,WAAA,CAAY;MACZyD,UAAA,CAAWgD,GAAA,CAAIN,OAAO;IACxB;EACF,GACA,CACElI,YAAA,EACAD,MAAA,EACAM,oBAAA,EACAC,yBAAA,EACAH,QAAA,EACA2C,cAAA,EACAvC,cAAA,EACAY,MAAA,EACAP,QAAA,EACAC,SAAA,EACAC,QAAA,EACAO,MAAA,EACAI,CAAA,EACAD,IAAA,EACAN,mBAAA,CACD;EAGH,MAAM6H,SAAA,GAAYrL,WAAA,CAAY,MAAMgF,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAE,EAAE;EAEjE,MAAMmG,QAAA,GAAWtL,WAAA,CAAagG,MAAA,IAAiBhB,UAAA,CAAWK,OAAO,CAACF,MAAM,CAACa,MAAA,CAAK,EAAE,EAAE;EAElF,MAAMN,OAAA,GAAU1F,WAAA,CAAY,MAAMH,oBAAA,CAAqBmF,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAE,OAAO,EAAE;EAE3F,MAAMxF,cAAA,GAAiBK,WAAA,CACpBgG,MAAA,IAAiBpG,kBAAA,CAAmBoF,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAEa,MAAA,GAChE,EAAE;EAGJ,MAAMvG,aAAA,GAAgBO,WAAA,CACnBgG,MAAA,IAAiBtG,iBAAA,CAAkBsF,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAEa,MAAA,GAC/D,EAAE;EAGJ,MAAMkD,cAAA,GAAiBlJ,WAAA,CAA4B,CAAC0H,WAAA,EAAW;IAAEyB,iBAAA,GAAoB;EAAI,CAAE;IACzF,IAAIxD,MAAA,GAAO9F,oBAAA,CAAqBmF,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAE;IAE3D,MAAMoG,IAAA,GAAO5F,MAAA,EAAM4F,IAAA;IAEnB,IAAIA,IAAA,EAAM;MACR,OAAO5F,MAAA,CAAK4F,IAAI;IAClB;IAEA,IAAIpC,iBAAA,EAAmB;MACrBxD,MAAA,GAAO;QACL,GAAGA,MAAI;QACP,GAAG+B;MACL;IACF,OAAO;MACL/B,MAAA,GAAO+B,WAAA;IACT;IAEA,MAAM8D,eAAA,GAAkB;MACtBC,QAAA,EAAUC,IAAA,CAAKC,SAAS,CAAChG,MAAA;MACzB4F;IACF;IAEA;IACA,MAAMtC,UAAA,GAAW1J,SAAA,CAAUiM,eAAA,EAAiB;MAAEI,OAAA,EAAS;MAAMC,iBAAA,EAAmB;IAAM;IAEtF,OAAO5C,UAAA;EACT,GAAG,EAAE;EAEL,MAAM6C,KAAA,GAAQ9L,WAAA,CACZ,MAAO2F,MAAA;IACL,MAAMoG,UAAA,GAAa/K,cAAA,CAAeiE,iBAAA;IAElC,MAAM+G,cAAA,GAAiB,MAAM7J,iBAAA;IAE7B,MAAM;MAAEiF,KAAA,EAAO6C;IAAQ,CAAE,GAAG,MAAM9F,YAAA,CAAa;MAC7CnC,EAAA;MACAC,cAAA;MACA0D,IAAA,EAAAA,MAAA;MACAzD,cAAA;MACA8J,cAAA;MACA5J,UAAA;MACAyB,MAAA;MACAK,SAAA;MACA+H,eAAA,EAAiB;MACjBC,UAAA,EAAYjK,cAAA,GAAiBA,cAAA,GAAiBG,UAAA;MAC9C+J,MAAA,EAAQJ,UAAA,CAAWI;IACrB;IAEAnH,UAAA,CAAWK,OAAO,GAAG;MAAE,GAAG1D;IAAiB;IAC3C8C,WAAA,CAAY;IACZW,cAAA,CAAe;MAAE+B,IAAA,EAAM;MAAiBC,KAAA,EAAO6C;IAAS;IAExDhF,iBAAA,CAAkBI,OAAO,GAAG;EAC9B,GACA,CACEpD,cAAA,EACAmD,cAAA,EACAhD,UAAA,EACAJ,EAAA,EACAkC,SAAA,EACAC,YAAA,EACAjC,cAAA,EACAC,iBAAA,EACA0B,MAAA,CACD;EAGH,MAAMuI,YAAA,GAAepM,WAAA,CAClBoH,KAAA;IACCpC,UAAA,CAAWK,OAAO,GAAG;MAAE,GAAG1D;IAAiB;IAC3C8C,WAAA,CAAY;IACZW,cAAA,CAAe;MAAE+B,IAAA,EAAM;MAAiBC;IAAM;EAChD,GACA,CAAChC,cAAA,CAAe;EAGlB,MAAMiH,WAAA,GAA8CrM,WAAA,CAClD,CAAC;IAAEsM,SAAS;IAAEtG,IAAI,EAAJA,MAAI;IAAEuG,QAAA,EAAUC,WAAW;IAAEC;EAAa,CAAE;IACxD,MAAMC,OAAA,GAAqBjN,aAAA,CAAcuG,MAAA,KAAS,EAAE;IACpD,MAAMuG,QAAA,GAAWC,WAAA,KAAgB9I,SAAA,GAAYgJ,OAAA,CAAQC,MAAM,GAAGH,WAAA;IAE9D;IACA;IACApH,cAAA,CAAe;MACb+B,IAAA,EAAM;MACNmF,SAAA;MACAtG,IAAA,EAAAA,MAAA;MACAuG,QAAA;MACAE;IACF;IAEAhI,WAAA,CAAY;EACd,GACA,CAACW,cAAA,EAAgB3F,aAAA,CAAc;EAGjC,MAAMmN,cAAA,GAAoD5M,WAAA,CACxD,CAAC;IAAEgG,IAAI,EAAJA,MAAI;IAAEuG,QAAQ,EAARA;EAAQ,CAAE;IACjBnH,cAAA,CAAe;MAAE+B,IAAA,EAAM;MAAcnB,IAAA,EAAAA,MAAA;MAAMuG,QAAA,EAAAA;IAAS;EACtD,GACA,CAACnH,cAAA,CAAe;EAGlB,MAAMyH,eAAA,GAAsD7M,WAAA,CAC1D,CAAC;IAAEsM,SAAS,EAATA,WAAS;IAAEtG,IAAI,EAAJA,MAAI;IAAEuG,QAAA,EAAUC,aAAW;IAAEC,aAAa,EAAbA;EAAa,CAAE;IACxD,MAAMK,WAAA,GAAyBrN,aAAA,CAAcuG,MAAA;IAC7C,MAAMuG,UAAA,GAAWC,aAAA,KAAgB9I,SAAA,GAAYoJ,WAAA,CAAYH,MAAM,GAAGH,aAAA;IAElEpH,cAAA,CAAe;MACb+B,IAAA,EAAM;MACNmF,SAAA,EAAAA,WAAA;MACAtG,IAAA,EAAAA,MAAA;MACAuG,QAAA,EAAAA,UAAA;MACAE,aAAA,EAAAA;IACF;IAEAhI,WAAA,CAAY;EACd,GACA,CAACW,cAAA,EAAgB3F,aAAA,CAAc;EAGjCQ,SAAA,CAAU;IACR,MAAM8M,aAAA,GAAgB9H,iBAAA,CAAkBI,OAAO;IAE/C,OAAO;MACLtE,cAAA,CAAegM,aAAA;IACjB;EACF,GAAG,EAAE;EAEL9M,SAAA,CAAU;IACR,IAAI+C,qBAAA,KAA0BU,SAAA,EAAW;MACvCiB,eAAA,CAAgB3B,qBAAA;IAClB;EACF,GAAG,CAACA,qBAAA,CAAsB;EAE1BgC,UAAA,CAAWK,OAAO,CAACgC,MAAM,GAAGA,MAAA;EAC5BrC,UAAA,CAAWK,OAAO,CAACgG,SAAS,GAAGA,SAAA;EAC/BrG,UAAA,CAAWK,OAAO,CAACiG,QAAQ,GAAGA,QAAA;EAC9BtG,UAAA,CAAWK,OAAO,CAACK,OAAO,GAAGA,OAAA;EAC7BV,UAAA,CAAWK,OAAO,CAAC1F,cAAc,GAAGA,cAAA;EACpCqF,UAAA,CAAWK,OAAO,CAAC5F,aAAa,GAAGA,aAAA;EACnCuF,UAAA,CAAWK,OAAO,CAACC,YAAY,GAAGA,YAAA;EAClCN,UAAA,CAAWK,OAAO,CAAC6D,cAAc,GAAGA,cAAA;EACpClE,UAAA,CAAWK,OAAO,CAACZ,WAAW,GAAGA,WAAA;EACjCO,UAAA,CAAWK,OAAO,CAACR,aAAa,GAAGA,aAAA;EACnCG,UAAA,CAAWK,OAAO,CAACP,YAAY,GAAGA,YAAA;EAClCE,UAAA,CAAWK,OAAO,CAAC5C,QAAQ,GAAGA,QAAA;EAC9BuC,UAAA,CAAWK,OAAO,CAAChB,WAAW,GAAGA,WAAA;EACjCW,UAAA,CAAWK,OAAO,CAACN,OAAO,GAAGA,OAAA;EAC7BC,UAAA,CAAWK,OAAO,CAACyG,KAAK,GAAGA,KAAA;EAC3B9G,UAAA,CAAWK,OAAO,CAAC+G,YAAY,GAAGA,YAAA;EAClCpH,UAAA,CAAWK,OAAO,CAACD,cAAc,GAAGA,cAAA;EACpCJ,UAAA,CAAWK,OAAO,CAACgH,WAAW,GAAGA,WAAA;EACjCrH,UAAA,CAAWK,OAAO,CAACuH,cAAc,GAAGA,cAAA;EACpC5H,UAAA,CAAWK,OAAO,CAACwH,eAAe,GAAGA,eAAA;EACrC7H,UAAA,CAAWK,OAAO,CAAC9B,IAAI,GAAGA,IAAA;EAC1ByB,UAAA,CAAWK,OAAO,CAACX,YAAY,GAAGA,YAAA;EAElCzE,SAAA,CAAU;IACRsE,YAAA,CAAa;EACf,GAAG,EAAE;EAELtE,SAAA,CAAU;IACR,IAAI,OAAOyC,iBAAA,KAAsB,WAAW;MAC1C2B,WAAA,CAAY3B,iBAAA;IACd;EACF,GAAG,CAACA,iBAAA,CAAkB;EAEtBzC,SAAA,CAAU;IACR,IAAI,OAAOqD,kBAAA,KAAuB,WAAW;MAC3CwB,YAAA,CAAaxB,kBAAA;IACf;EACF,GAAG,CAACA,kBAAA,CAAmB;EAEvBrD,SAAA,CAAU;IACR,IAAI6C,YAAA,EAAc;MAChBkC,UAAA,CAAWK,OAAO,GAAG;QAAE,GAAG1D;MAAiB;MAC3CyD,cAAA,CAAe;QAAE+B,IAAA,EAAM;QAAiBmD,QAAA,EAAU;QAAOlD,KAAA,EAAOtE;MAAa;IAC/E;EACF,GAAG,CAACA,YAAA,EAAcsC,cAAA,CAAe;EAEjC7E,kBAAA,CACE;IACEyD,aAAA;EACF,GACA,OACA,CAACmB,MAAA,CAAO;EAGVlF,SAAA,CAAU;IACR+E,UAAA,CAAWK,OAAO,GAAG;MAAE,GAAGL,UAAA,CAAWK;IAAQ,EAAE;IAAA;IAC/CZ,WAAA,CAAY;EACd,GAAG,CAACZ,MAAA,CAAO;EAEX,MAAMmJ,OAAA,GAAU,CAACxK,SAAA,EAAWX,SAAA,CAAU,CAACoL,MAAM,CAAC7D,OAAA,EAAS8D,IAAI,CAAC;EAE5D5M,yBAAA,CACE;IACE,MAAM6M,eAAA,GAAkB,MAAAA,CAAA;MACtB,IAAIzG,KAAA,CAAMC,OAAO,CAAC1D,QAAA,GAAW;QAC3B,IAAIuF,sBAAA,GAAkCxD,UAAA,CAAWK,OAAO,CAACF,MAAM;QAE/D,KAAK,MAAMiI,UAAA,IAAcnK,QAAA,EAAU;UACjC;UACAuF,sBAAA,GAAuB,MAAM4E,UAAA,CAAW;YACtCtE,SAAA,EAAWtJ,0CAAA,CAA2CwF,UAAA,CAAWK,OAAO,CAACF,MAAM;UACjF;QACF;QAEA,IAAI,CAACqD,sBAAA,EAAsB;UACzB;QACF;QAEA,MAAM;UAAE6E,OAAO;UAAEpD,QAAQ,EAARA;QAAQ,CAAE,GAAGrI,oBAAA,CAAqB;UACjDwI,aAAA,EAAepF,UAAA,CAAWK,OAAO,CAACF,MAAM,IAAI,CAAC;UAC7CkF,aAAA,EAAe7B;QACjB;QAEA,IAAI6E,OAAA,EAAS;UACXjI,cAAA,CAAe;YACb+B,IAAA,EAAM;YACNmD,QAAA,EAAU;YACVlD,KAAA,EAAO6C;UACT;QACF;MACF;IACF;IAEA,IAAIzF,QAAA,EAAU;MACZ,KAAK2I,eAAA;IACP;EACF;EACA;;;;;;;EAQA,CAACnI,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAEX,QAAA,CAAS,EACrC,CAACY,cAAA,EAAgBnC,QAAA,CAAS,EAC1B;IACEqK,KAAA,EAAO;EACT;EAGF,oBACEC,IAAA,CAAC;IACClL,MAAA,EAAQ,OAAOA,MAAA,KAAW,aAAa,KAAKA,MAAA,GAASA,MAAA;IACrDG,SAAA,EAAWwK,OAAA;IACXvJ,MAAA,EAAQA,MAAA;IACR+J,UAAU;IACVtK,QAAA,EAAWqE,GAAA,IAAM,KAAKvC,UAAA,CAAWK,OAAO,CAACgC,MAAM,CAAC,CAAC,GAAGE,GAAA;IACpDkG,GAAA,EAAK1I,OAAA;cAEL,aAAAwI,IAAA,CAACrM,WAAA,CAAYwM,QAAQ;MAAClH,KAAA,EAAOxB,UAAA,CAAWK,OAAO;gBAC7C,aAAAkI,IAAA,CAACnM,gBAAA,CAAiBsM,QAAQ;QACxBlH,KAAA,EAAO;UACLrB,MAAA;UACA,GAAGH,UAAA,CAAWK;QAChB;kBAEA,aAAAkI,IAAA,CAAC/L,gBAAA,CAAiBkM,QAAQ;UAAClH,KAAA,EAAOnD,SAAA;oBAChC,aAAAkK,IAAA,CAAClM,mBAAA,CAAoBqM,QAAQ;YAAClH,KAAA,EAAO,CAAClC,SAAA,IAAcA,SAAA,IAAaI,YAAA;sBAC/D,aAAA6I,IAAA,CAAChM,iBAAA,CAAkBmM,QAAQ;cAAClH,KAAA,EAAO5B,UAAA;wBACjC,aAAA2I,IAAA,CAACjM,eAAA,CAAgBoM,QAAQ;gBAAClH,KAAA,EAAOhC,QAAA;0BAC/B,aAAA+I,IAAA,CAACpM,iBAAA,CAAkBuM,QAAQ;kBAAClH,KAAA,EAAOtB,aAAA;4BAChC3C;;;;;;;;;AAUrB;AAEA,SACErB,WAAW,EACXC,iBAAiB,EACjBC,gBAAgB,EAChBE,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,EAChBmM,gBAAgB,EAChBC,OAAO,EACPC,aAAa,EACbC,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,EAChBC,YAAY,QACP","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"addFieldStatePromise.d.ts","sourceRoot":"","sources":["../../../src/forms/fieldSchemasToFormState/addFieldStatePromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,IAAI,EACJ,mBAAmB,EACnB,KAAK,EACL,cAAc,EAEd,SAAS,EACT,0BAA0B,EAC1B,cAAc,EAEd,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAehB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAQnD,MAAM,MAAM,wBAAwB,GAAG;IACrC,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,cAAc,CAAA;IAC9B;;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,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,0BAA0B,CAAA;IAC7C,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,mBAAmB,CAAA;IAChC,iBAAiB,EAAE,SAAS,CAAA;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,iBAAiB,CAAA;IAChC;;;OAGG;IACH,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,0BAA0B,CAAA;CAClC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,SAAgB,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAuqBvF,CAAA"}
1
+ {"version":3,"file":"addFieldStatePromise.d.ts","sourceRoot":"","sources":["../../../src/forms/fieldSchemasToFormState/addFieldStatePromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,IAAI,EACJ,mBAAmB,EACnB,KAAK,EACL,cAAc,EAEd,SAAS,EACT,0BAA0B,EAC1B,cAAc,EAEd,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAchB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAQnD,MAAM,MAAM,wBAAwB,GAAG;IACrC,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,cAAc,CAAA;IAC9B;;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,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,0BAA0B,CAAA;IAC7C,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,mBAAmB,CAAA;IAChC,iBAAiB,EAAE,SAAS,CAAA;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,iBAAiB,CAAA;IAChC;;;OAGG;IACH,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,0BAA0B,CAAA;CAClC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,SAAgB,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAssBvF,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import ObjectIdImport from 'bson-objectid';
2
- import { deepCopyObjectSimple, fieldAffectsData, fieldHasSubFields, fieldIsHiddenOrDisabled, fieldIsID, fieldIsLocalized, fieldIsSidebar, getFieldPaths, tabHasName } from 'payload/shared';
2
+ import { deepCopyObjectSimple, fieldAffectsData, fieldHasSubFields, fieldIsHiddenOrDisabled, fieldIsID, fieldIsLocalized, getFieldPaths, tabHasName } from 'payload/shared';
3
3
  import { getFilterOptionsQuery } from './getFilterOptionsQuery.js';
4
4
  import { iterateFields } from './iterateFields.js';
5
5
  const ObjectId = ObjectIdImport.default || ObjectIdImport;
@@ -44,21 +44,20 @@ export const addFieldStatePromise = async args => {
44
44
  }
45
45
  const requiresRender = renderAllFields || previousFormState?.[path]?.requiresRender;
46
46
  let fieldPermissions = true;
47
- const fieldState = {
48
- errorPaths: [],
49
- fieldSchema: includeSchema ? field : undefined,
50
- initialValue: undefined,
51
- isSidebar: fieldIsSidebar(field),
52
- passesCondition,
53
- valid: true,
54
- value: undefined
55
- };
47
+ const fieldState = {};
48
+ if (passesCondition === false) {
49
+ fieldState.passesCondition = false;
50
+ }
51
+ if (includeSchema) {
52
+ fieldState.fieldSchema = field;
53
+ }
56
54
  if (fieldAffectsData(field) && !fieldIsHiddenOrDisabled(field)) {
57
55
  fieldPermissions = parentPermissions === true ? parentPermissions : deepCopyObjectSimple(parentPermissions?.[field.name]);
58
56
  let hasPermission = fieldPermissions === true || deepCopyObjectSimple(fieldPermissions?.read);
59
57
  if (typeof field?.access?.read === 'function') {
60
58
  hasPermission = await field.access.read({
61
- doc: fullData,
59
+ id,
60
+ data: fullData,
62
61
  req,
63
62
  siblingData: data
64
63
  });
@@ -103,6 +102,9 @@ export const addFieldStatePromise = async args => {
103
102
  if (typeof addErrorPathToParentArg === 'function') {
104
103
  addErrorPathToParentArg(errorPath);
105
104
  }
105
+ if (!fieldState.errorPaths) {
106
+ fieldState.errorPaths = [];
107
+ }
106
108
  if (!fieldState.errorPaths.includes(errorPath)) {
107
109
  fieldState.errorPaths.push(errorPath);
108
110
  fieldState.valid = false;
@@ -112,8 +114,6 @@ export const addFieldStatePromise = async args => {
112
114
  fieldState.errorMessage = validationResult;
113
115
  fieldState.valid = false;
114
116
  addErrorPathToParent(path);
115
- } else {
116
- fieldState.valid = true;
117
117
  }
118
118
  switch (field.type) {
119
119
  case 'array':
@@ -126,12 +126,14 @@ export const addFieldStatePromise = async args => {
126
126
  const parentPath = path + '.' + i;
127
127
  row.id = row?.id || new ObjectId().toHexString();
128
128
  if (!omitParents && (!filter || filter(args))) {
129
- state[parentPath + '.id'] = {
130
- fieldSchema: includeSchema ? field.fields.find(field => fieldIsID(field)) : undefined,
129
+ const idKey = parentPath + '.id';
130
+ state[idKey] = {
131
131
  initialValue: row.id,
132
- valid: true,
133
132
  value: row.id
134
133
  };
134
+ if (includeSchema) {
135
+ state[idKey].fieldSchema = field.fields.find(field => fieldIsID(field));
136
+ }
135
137
  }
136
138
  acc.promises.push(iterateFields({
137
139
  id,
@@ -162,41 +164,46 @@ export const addFieldStatePromise = async args => {
162
164
  skipValidation,
163
165
  state
164
166
  }));
165
- const previousRows = previousFormState?.[path]?.rows || [];
166
- const collapsedRowIDsFromPrefs = preferences?.fields?.[path]?.collapsed;
167
+ if (!acc.rows) {
168
+ acc.rows = [];
169
+ }
167
170
  acc.rows.push({
168
- id: row.id,
169
- collapsed: (() => {
170
- // First, check if `previousFormState` has a matching row
171
- const previousRow = previousRows.find(prevRow => prevRow.id === row.id);
172
- if (previousRow?.collapsed !== undefined) {
173
- return previousRow.collapsed;
174
- }
175
- // If previousFormState is undefined, check preferences
176
- if (collapsedRowIDsFromPrefs !== undefined) {
177
- return collapsedRowIDsFromPrefs.includes(row.id) // Check if collapsed in preferences
178
- ;
179
- }
180
- // If neither exists, fallback to `field.admin.initCollapsed`
181
- return field.admin.initCollapsed;
182
- })()
171
+ id: row.id
183
172
  });
173
+ const previousRows = previousFormState?.[path]?.rows || [];
174
+ const collapsedRowIDsFromPrefs = preferences?.fields?.[path]?.collapsed;
175
+ const collapsed = (() => {
176
+ // First, check if `previousFormState` has a matching row
177
+ const previousRow = previousRows.find(prevRow => prevRow.id === row.id);
178
+ if (previousRow?.collapsed !== undefined) {
179
+ return previousRow.collapsed;
180
+ }
181
+ // If previousFormState is undefined, check preferences
182
+ if (collapsedRowIDsFromPrefs !== undefined) {
183
+ return collapsedRowIDsFromPrefs.includes(row.id) // Check if collapsed in preferences
184
+ ;
185
+ }
186
+ // If neither exists, fallback to `field.admin.initCollapsed`
187
+ return field.admin.initCollapsed;
188
+ })();
189
+ if (collapsed) {
190
+ acc.rows[acc.rows.length - 1].collapsed = collapsed;
191
+ }
184
192
  return acc;
185
193
  }, {
186
194
  promises: [],
187
- rows: []
195
+ rows: undefined
188
196
  });
189
197
  // Wait for all promises and update fields with the results
190
198
  await Promise.all(promises);
191
- fieldState.rows = rows;
199
+ if (rows) {
200
+ fieldState.rows = rows;
201
+ }
192
202
  // Unset requiresRender
193
203
  // so it will be removed from form state
194
204
  fieldState.requiresRender = false;
195
205
  // Add values to field state
196
- if (data[field.name] === null) {
197
- fieldState.value = null;
198
- fieldState.initialValue = null;
199
- } else {
206
+ if (data[field.name] !== null) {
200
207
  fieldState.value = forceFullValue ? arrayValue : arrayValue.length;
201
208
  fieldState.initialValue = forceFullValue ? arrayValue : arrayValue.length;
202
209
  if (arrayValue.length > 0) {
@@ -225,24 +232,34 @@ export const addFieldStatePromise = async args => {
225
232
  if (block) {
226
233
  row.id = row?.id || new ObjectId().toHexString();
227
234
  if (!omitParents && (!filter || filter(args))) {
228
- state[parentPath + '.id'] = {
229
- fieldSchema: includeSchema ? block.fields.find(blockField => fieldIsID(blockField)) : undefined,
235
+ // Handle block `id` field
236
+ const idKey = parentPath + '.id';
237
+ state[idKey] = {
230
238
  initialValue: row.id,
231
- valid: true,
232
239
  value: row.id
233
240
  };
234
- state[parentPath + '.blockType'] = {
235
- fieldSchema: includeSchema ? block.fields.find(blockField => 'name' in blockField && blockField.name === 'blockType') : undefined,
241
+ if (includeSchema) {
242
+ state[idKey].fieldSchema = includeSchema ? block.fields.find(blockField => fieldIsID(blockField)) : undefined;
243
+ }
244
+ // Handle `blockType` field
245
+ const fieldKey = parentPath + '.blockType';
246
+ state[fieldKey] = {
236
247
  initialValue: row.blockType,
237
- valid: true,
238
248
  value: row.blockType
239
249
  };
240
- state[parentPath + '.blockName'] = {
241
- fieldSchema: includeSchema ? block.fields.find(blockField => 'name' in blockField && blockField.name === 'blockName') : undefined,
242
- initialValue: row.blockName,
243
- valid: true,
244
- value: row.blockName
245
- };
250
+ if (includeSchema) {
251
+ state[fieldKey].fieldSchema = block.fields.find(blockField => 'name' in blockField && blockField.name === 'blockType');
252
+ }
253
+ // Handle `blockName` field
254
+ const blockNameKey = parentPath + '.blockName';
255
+ state[blockNameKey] = {};
256
+ if (row.blockName) {
257
+ state[blockNameKey].initialValue = row.blockName;
258
+ state[blockNameKey].value = row.blockName;
259
+ }
260
+ if (includeSchema) {
261
+ state[blockNameKey].fieldSchema = block.fields.find(blockField => 'name' in blockField && blockField.name === 'blockName');
262
+ }
246
263
  }
247
264
  acc.promises.push(iterateFields({
248
265
  id,
@@ -273,12 +290,15 @@ export const addFieldStatePromise = async args => {
273
290
  skipValidation,
274
291
  state
275
292
  }));
276
- const collapsedRowIDs = preferences?.fields?.[path]?.collapsed;
277
293
  acc.rowMetadata.push({
278
294
  id: row.id,
279
- blockType: row.blockType,
280
- collapsed: collapsedRowIDs === undefined ? field.admin.initCollapsed : collapsedRowIDs.includes(row.id)
295
+ blockType: row.blockType
281
296
  });
297
+ const collapsedRowIDs = preferences?.fields?.[path]?.collapsed;
298
+ const collapsed = collapsedRowIDs === undefined ? field.admin.initCollapsed : collapsedRowIDs.includes(row.id);
299
+ if (collapsed) {
300
+ acc.rowMetadata[acc.rowMetadata.length - 1].collapsed = collapsed;
301
+ }
282
302
  }
283
303
  return acc;
284
304
  }, {
@@ -409,8 +429,10 @@ export const addFieldStatePromise = async args => {
409
429
  }
410
430
  default:
411
431
  {
412
- fieldState.value = data[field.name];
413
- fieldState.initialValue = data[field.name];
432
+ if (data[field.name] !== undefined) {
433
+ fieldState.value = data[field.name];
434
+ fieldState.initialValue = data[field.name];
435
+ }
414
436
  // Add field to state
415
437
  if (!filter || filter(args)) {
416
438
  state[path] = fieldState;
@@ -422,13 +444,11 @@ export const addFieldStatePromise = async args => {
422
444
  // Handle field types that do not use names (row, etc)
423
445
  if (!filter || filter(args)) {
424
446
  state[path] = {
425
- disableFormData: true,
426
- errorPaths: [],
427
- initialValue: undefined,
428
- passesCondition,
429
- valid: true,
430
- value: undefined
447
+ disableFormData: true
431
448
  };
449
+ if (passesCondition === false) {
450
+ state[path].passesCondition = false;
451
+ }
432
452
  }
433
453
  await iterateFields({
434
454
  id,