@payloadcms/ui 4.0.0-beta.5 → 4.0.0-beta.6
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.
- package/dist/css/utilities.css +1 -0
- package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
- package/dist/elements/AddNewRelation/index.js +4 -0
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +2 -0
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/Collapsible/index.css +1 -1
- package/dist/elements/ColumnSelection/Popup.css +2 -2
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +15 -9
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/index.js +10 -8
- package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
- package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
- package/dist/elements/FileDetails/DraggableFileDetails/index.js +19 -12
- package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
- package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
- package/dist/elements/FileDetails/StaticFileDetails/index.js +63 -33
- package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
- package/dist/elements/FileManager/index.d.ts.map +1 -1
- package/dist/elements/FileManager/index.js +18 -11
- package/dist/elements/FileManager/index.js.map +1 -1
- package/dist/elements/FilterTrigger/index.d.ts.map +1 -1
- package/dist/elements/FilterTrigger/index.js +80 -44
- package/dist/elements/FilterTrigger/index.js.map +1 -1
- package/dist/elements/ListControls/index.css +1 -0
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +7 -4
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListControls/types.d.ts +1 -0
- package/dist/elements/ListControls/types.d.ts.map +1 -1
- package/dist/elements/ListControls/types.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +18 -12
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/LivePreview/Toolbar/index.d.ts.map +1 -1
- package/dist/elements/LivePreview/Toolbar/index.js +13 -7
- package/dist/elements/LivePreview/Toolbar/index.js.map +1 -1
- package/dist/elements/Nav/NavSidebarToggle/index.d.ts.map +1 -1
- package/dist/elements/Nav/NavSidebarToggle/index.js +26 -37
- package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js +9 -2
- package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.css +1 -1
- package/dist/elements/Nav/context.d.ts +1 -0
- package/dist/elements/Nav/context.d.ts.map +1 -1
- package/dist/elements/Nav/context.js +2 -0
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Nav/getNavPrefs.d.ts.map +1 -1
- package/dist/elements/Nav/getNavPrefs.js +7 -2
- package/dist/elements/Nav/getNavPrefs.js.map +1 -1
- package/dist/elements/Nav/index.css +11 -0
- package/dist/elements/Popup/PopupButtonList/index.css +1 -1
- package/dist/elements/PreviewButton/index.d.ts.map +1 -1
- package/dist/elements/PreviewButton/index.js +4 -0
- package/dist/elements/PreviewButton/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js +1 -0
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValue/index.css +1 -1
- package/dist/elements/ReactSelect/index.css +4 -2
- package/dist/elements/ReactSelect/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/index.js +8 -3
- package/dist/elements/ReactSelect/index.js.map +1 -1
- package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
- package/dist/elements/SchedulePublishButton/index.js +4 -0
- package/dist/elements/SchedulePublishButton/index.js.map +1 -1
- package/dist/elements/Search/SearchInput/index.css +32 -3
- package/dist/elements/SegmentedControl/index.css +1 -1
- package/dist/elements/SidebarToggle/index.css +1 -1
- package/dist/elements/SortColumn/index.css +49 -5
- package/dist/elements/SortRow/index.css +1 -3
- package/dist/elements/SortRow/index.d.ts.map +1 -1
- package/dist/elements/SortRow/index.js +16 -10
- package/dist/elements/SortRow/index.js.map +1 -1
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js +4 -1
- package/dist/elements/StepNav/index.js.map +1 -1
- package/dist/elements/Tabs/index.css +1 -1
- package/dist/elements/TimezonePicker/index.css +6 -5
- package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
- package/dist/elements/TimezonePicker/index.js +80 -43
- package/dist/elements/TimezonePicker/index.js.map +1 -1
- package/dist/elements/Upload/index.js +2 -0
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -1
- package/dist/elements/UploadDropzoneContent/index.js +1 -0
- package/dist/elements/UploadDropzoneContent/index.js.map +1 -1
- package/dist/elements/UserMenu/index.css +1 -1
- package/dist/exports/client/{DatePicker-AZBZPMY6.js → DatePicker-DJN2NVQC.js} +2 -2
- package/dist/exports/client/chunk-GQEFXRCN.js +29 -0
- package/dist/exports/client/{chunk-ZP2PB6M4.js.map → chunk-GQEFXRCN.js.map} +4 -4
- package/dist/exports/client/index.js +27 -27
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/Blocks/SectionTitle/index.css +21 -2
- package/dist/fields/DateTime/index.js +1 -1
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +1 -0
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/RelationshipContent/index.css +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +9 -7
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js +17 -1
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/styles.css +2 -1
- package/dist/views/List/index.client.d.ts.map +1 -1
- package/dist/views/List/index.client.js +15 -9
- package/dist/views/List/index.client.js.map +1 -1
- package/dist/views/Version/Default/index.d.ts.map +1 -1
- package/dist/views/Version/Default/index.js +6 -9
- package/dist/views/Version/Default/index.js.map +1 -1
- package/dist/views/Version/Default/types.d.ts +0 -1
- package/dist/views/Version/Default/types.d.ts.map +1 -1
- package/dist/views/Version/Default/types.js.map +1 -1
- package/dist/views/Version/Restore/index.css +0 -11
- package/dist/views/Version/Restore/index.d.ts +0 -1
- package/dist/views/Version/Restore/index.d.ts.map +1 -1
- package/dist/views/Version/Restore/index.js +87 -115
- package/dist/views/Version/Restore/index.js.map +1 -1
- package/dist/views/Version/index.d.ts.map +1 -1
- package/dist/views/Version/index.js +1 -2
- package/dist/views/Version/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/exports/client/chunk-ZP2PB6M4.js +0 -29
- /package/dist/exports/client/{DatePicker-AZBZPMY6.js.map → DatePicker-DJN2NVQC.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["dequal","serialize","deepCopyObjectSimpleWithoutReactComponents","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","hasDraftValidationEnabled","reduceFieldsToValues","uploadRequiresServerValidation","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","FieldErrorsToast","useDebouncedEffect","useEffectEvent","useQueue","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useFormErrorHandler","useLocale","useOperation","useRouter","useRouteTransition","useServerFunctions","useTranslation","useUploadHandlers","abortAndIgnore","handleAbortRef","requests","BackgroundProcessingContext","DocumentFormContext","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","SuccessfulSubmitCountContext","useDocumentForm","errorMessages","fieldReducer","initContextState","baseClass","Form","props","id","collectionSlug","docConfig","docPermissions","getDocPreferences","globalSlug","validateDrafts","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","el","handleResponse","initialState","isDocumentForm","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","documentForm","currentLocale","locale","code","i18n","t","refreshCookie","user","onNonFieldError","operation","queueTask","getFormState","startRouteTransition","getUploadHandler","config","setDisabled","isMounted","setIsMounted","setSubmitted","successfulSubmitCount","setSuccessfulSubmitCount","isValid","setIsValid","initializing","setInitializing","processing","setProcessing","backgroundProcessing","_setBackgroundProcessing","backgroundProcessingRef","modifiedWhileProcessingRef","setBackgroundProcessing","current","modified","_setModified","setModified","formRef","submitFocusRef","previousFocus","isConnected","document","activeElement","body","closest","matches","focus","preventScroll","contextRef","abortResetFormRef","isFirstRenderRef","fieldsReducer","formState","dispatchFields","fields","prevFormState","validateForm","validatedFieldState","data","getData","validationPromises","Object","entries","map","path","field","validatedField","pathSegments","split","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","blockData","event","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","acceptValues","actionArg","context","disableFormWhileProcessing","disableSuccessStatusFromArgs","methodToUse","overrides","overridesFromArgs","skipValidation","disableToast","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","HTMLElement","contains","serializableFormState","excludeFiles","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","headers","language","status","contentType","get","isJSON","indexOf","json","count","newFormState","prevStateRef","serverState","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","serverErrorAction","_jsx","statusText","console","getFields","getField","dataFromArgs","file","upload","handler","allowRestrictedFileTypes","filename","name","mimeType","JSON","stringify","docPrefix","prefix","dataToSerialize","_payload","indices","nullsAsUndefineds","reset","controller","docPreferences","newState","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","moveFieldRow","moveFromIndex","moveToIndex","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","optimize","handleLocaleChange","classes","filter","join","executeOnChange","onChangeFn","DocumentFormContextComponent","Fragment","documentFormContextProps","El","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 { serialize } from 'object-to-formdata'\nimport { type FormState, type PayloadRequest } from 'payload'\nimport {\n deepCopyObjectSimpleWithoutReactComponents,\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n hasDraftValidationEnabled,\n reduceFieldsToValues,\n uploadRequiresServerValidation,\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 Submit,\n SubmitOptions,\n} from './types.js'\n\nimport { FieldErrorsToast } from '../../elements/Toasts/fieldErrors.js'\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueue } from '../../hooks/useQueue.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 { useFormErrorHandler } from '../../providers/FormErrorHandler/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useRouter } from '../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../providers/UploadHandlers/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.js'\nimport {\n BackgroundProcessingContext,\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n SuccessfulSubmitCountContext,\n useDocumentForm,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, docConfig, docPermissions, getDocPreferences, globalSlug } =\n useDocumentInfo()\n\n const validateDrafts = hasDraftValidationEnabled(docConfig)\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 el,\n handleResponse,\n initialState, // fully formed initial field state\n isDocumentForm,\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 documentForm = useDocumentForm()\n\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const onNonFieldError = useFormErrorHandler()\n const operation = useOperation()\n const { queueTask } = useQueue()\n\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { getUploadHandler } = useUploadHandlers()\n\n const { config } = useConfig()\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n\n const [submitted, setSubmitted] = useState(false)\n const [successfulSubmitCount, setSuccessfulSubmitCount] = useState(0)\n\n /**\n * Tracks wether the form state passes validation.\n * For example the state could be submitted but invalid as field errors have been returned.\n */\n const [isValid, setIsValid] = useState(true)\n const [initializing, setInitializing] = useState(initializingFromProps)\n\n const [processing, setProcessing] = useState(false)\n\n /**\n * Determines whether the form is processing asynchronously in the background, e.g. autosave is running.\n * Useful to determine whether to disable the form or queue other processes while in flight, e.g. disable manual submits while an autosave is running.\n */\n const [backgroundProcessing, _setBackgroundProcessing] = useState(false)\n\n /**\n * A ref that can be read within the `setModified` interceptor.\n * Dependents of this state can read it immediately without needing to wait for a render cycle.\n */\n const backgroundProcessingRef = useRef(backgroundProcessing)\n\n /**\n * Flag to track if the form was modified _during a submission_, e.g. while autosave is running.\n * Useful in order to avoid resetting `modified` to false wrongfully after a submit.\n * For example, if the user modifies a field while the a background process (autosave) is running,\n * we need to ensure that after the submit completes, the `modified` state remains true.\n */\n const modifiedWhileProcessingRef = useRef(false)\n\n /**\n * Intercept the `setBackgroundProcessing` method to keep the ref in sync.\n * See the `backgroundProcessingRef` for more details.\n */\n const setBackgroundProcessing = useCallback((backgroundProcessing: boolean) => {\n backgroundProcessingRef.current = backgroundProcessing\n _setBackgroundProcessing(backgroundProcessing)\n }, [])\n\n const [modified, _setModified] = useState(false)\n\n /**\n * Intercept the `setModified` method to track whether the event happened during background processing.\n * See the `modifiedWhileProcessingRef` ref for more details.\n */\n const setModified = useCallback((modified: boolean) => {\n if (backgroundProcessingRef.current) {\n modifiedWhileProcessingRef.current = true\n }\n\n _setModified(modified)\n }, [])\n\n const formRef = useRef<HTMLFormElement>(null)\n const submitFocusRef = useRef<HTMLElement | null>(null)\n\n useEffect(() => {\n if (processing) {\n return\n }\n\n const previousFocus = submitFocusRef.current\n\n submitFocusRef.current = null\n if (\n previousFocus?.isConnected &&\n document.activeElement === document.body &&\n !previousFocus.closest('[inert]') &&\n !previousFocus.matches(':disabled')\n ) {\n previousFocus.focus({ preventScroll: true })\n }\n }, [processing])\n const contextRef = useRef({} as FormContextType)\n const abortResetFormRef = useRef<AbortController>(null)\n const isFirstRenderRef = useRef(true)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n const [formState, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = formState\n\n const prevFormState = useRef(formState)\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const data = contextRef.current.getData()\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n const pathSegments = path ? path.split('.') : []\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 // If there is a parent document form, we can get the data from that form\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'submit',\n operation,\n path: pathSegments,\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 setIsValid(isValid)\n\n return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user, documentForm])\n\n const submit = useCallback<Submit>(\n async (options, e) => {\n const {\n acceptValues = true,\n action: actionArg = action,\n context,\n disableFormWhileProcessing = true,\n disableSuccessStatus: disableSuccessStatusFromArgs,\n method: methodToUse = method,\n overrides: overridesFromArgs = {},\n skipValidation,\n } = options || {}\n\n const disableToast = disableSuccessStatusFromArgs ?? disableSuccessStatus\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n modifiedWhileProcessingRef.current = false\n\n // create new toast promise which will resolve manually later\n let errorToast, successToast\n\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 || disableToast || !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 if (disableFormWhileProcessing) {\n const activeElement = document.activeElement\n\n // Disabling the active field drops browser focus to the body.\n submitFocusRef.current =\n activeElement instanceof HTMLElement && formRef.current?.contains(activeElement)\n ? activeElement\n : null\n setProcessing(true)\n setDisabled(true)\n }\n\n if (waitForAutocomplete) {\n await wait(100)\n }\n\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const serializableFormState = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n {\n excludeFiles: true,\n },\n )\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: serializableFormState,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(\n ([, field]) => field.valid !== false,\n )\n\n setIsValid(isValid)\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 setIsValid(isValid)\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 for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n\n onSubmit(contextRef.current.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 try {\n const formData = await contextRef.current.createFormData(overrides, {\n data,\n mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function'),\n })\n\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 if (res.status < 400 && !modifiedWhileProcessingRef.current) {\n setModified(false)\n }\n modifiedWhileProcessingRef.current = false\n\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n await handleResponse(res, successToast, errorToast)\n setProcessing(false)\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\n if (res.status < 400) {\n setSuccessfulSubmitCount((count) => count + 1)\n\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json, {\n context,\n formState: serializableFormState,\n })\n\n if (newFormState) {\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n acceptValues,\n prevStateRef: prevFormState,\n serverState: newFormState,\n })\n }\n }\n\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n void startRouteTransition(() => router.push(redirect))\n } else if (!disableToast) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n // When there was an error submitting a draft,\n // set the form state to unsubmitted, to not trigger visible form validation on changes after the failed submit.\n // Also keep the form as modified so the save button remains enabled for retry.\n if (overridesFromArgs['_status'] === 'draft') {\n setModified(true)\n\n if (!validateDrafts) {\n setSubmitted(false)\n }\n }\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n\n if (json.message) {\n errorToast(json.message)\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 setIsValid(false)\n\n const serverErrorAction = {\n type: 'ADD_SERVER_ERRORS' as const,\n errors: fieldErrors,\n }\n\n prevFormState.current = fieldReducer(prevFormState.current, serverErrorAction)\n dispatchFields(serverErrorAction)\n\n nonFieldErrors.forEach((err) => {\n // Pass overridesFromArgs (not the computed overrides) so a retry re-evaluates any function overrides against current fields.\n if (\n onNonFieldError?.(\n err,\n () => void contextRef.current.submit({ overrides: overridesFromArgs }),\n )\n ) {\n return\n }\n errorToast(<FieldErrorsToast errorMessage={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\n return { formState: contextRef.current.fields, res }\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 startRouteTransition,\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 validateDrafts,\n waitForAutocomplete,\n setModified,\n setSubmitted,\n onNonFieldError,\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>(\n async (overrides, { data: dataFromArgs, mergeOverrideData = true }) => {\n let data = dataFromArgs || reduceFieldsToValues(contextRef.current.fields, true)\n\n let file = data?.file\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n delete data.file\n\n const handler = getUploadHandler({ collectionSlug })\n\n if (\n typeof handler === 'function' &&\n !uploadRequiresServerValidation({\n allowRestrictedFileTypes: docConfig.upload.allowRestrictedFileTypes,\n filename: file.name,\n mimeType: file.type,\n })\n ) {\n file = JSON.stringify(\n await handler({\n docPrefix: typeof data?.prefix === 'string' ? data.prefix : undefined,\n file,\n }),\n )\n }\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const dataToSerialize: Record<string, unknown> = {\n _payload: JSON.stringify(data),\n }\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n dataToSerialize.file = file\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, {\n indices: true,\n nullsAsUndefineds: false,\n })\n\n return formData\n },\n [collectionSlug, docConfig, getUploadHandler],\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 skipValidation: true,\n })\n\n contextRef.current = { ...initContextState }\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 setModified,\n ],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState }\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields, setModified],\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 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, setModified],\n )\n\n const moveFieldRow: FormContextType['moveFieldRow'] = useCallback(\n ({ moveFromIndex, moveToIndex, path }) => {\n dispatchFields({\n type: 'MOVE_ROW',\n moveFromIndex,\n moveToIndex,\n path,\n })\n\n setModified(true)\n },\n [dispatchFields, setModified],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n\n setModified(true)\n },\n [dispatchFields, setModified],\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, setModified],\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.setBackgroundProcessing = setBackgroundProcessing\n\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.setIsValid = setIsValid\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.moveFieldRow = moveFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n contextRef.current.isValid = isValid\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 }\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: initialState,\n })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [formState],\n )\n\n const handleLocaleChange = useEffectEvent(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n })\n\n useEffect(() => {\n handleLocaleChange()\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n const executeOnChange = useEffectEvent((submitted: boolean) => {\n queueTask(async () => {\n if (Array.isArray(onChange)) {\n let serverState: FormState\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 serverState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(formState, {\n excludeFiles: true,\n }),\n submitted,\n })\n }\n\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n prevStateRef: prevFormState,\n serverState,\n })\n }\n })\n })\n\n useDebouncedEffect(\n () => {\n if ((isFirstRenderRef.current || !dequal(formState, prevFormState.current)) && modified) {\n executeOnChange(submitted)\n }\n\n prevFormState.current = formState\n isFirstRenderRef.current = false\n },\n [modified, submitted, formState],\n 250,\n )\n\n const DocumentFormContextComponent: React.FC<any> = isDocumentForm\n ? DocumentFormContext\n : React.Fragment\n\n const documentFormContextProps = isDocumentForm\n ? {\n value: contextRef.current,\n }\n : {}\n\n const El: 'form' = (el as unknown as 'form') || 'form'\n\n return (\n <El\n action={typeof action === 'function' ? void action : action}\n className={classes}\n /**\n * data-form-ready signals if the form is ready to be used. This is used by our e2e tests\n * to wait for the form to be ready before interacting with it, reducing flakiness if the test is run in\n * slow network conditions.\n */\n data-form-ready={!processing && isMounted && !initializing}\n method={method}\n noValidate\n onSubmit={(e) => void contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <DocumentFormContextComponent {...documentFormContextProps}>\n <FormContext value={contextRef.current}>\n <FormWatchContext\n value={{\n fields: formState,\n ...contextRef.current,\n }}\n >\n <SubmittedContext value={submitted}>\n <InitializingContext value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext value={processing}>\n <BackgroundProcessingContext value={backgroundProcessing}>\n <ModifiedContext value={modified}>\n {/* eslint-disable-next-line @eslint-react/no-context-provider */}\n <FormFieldsContext.Provider value={fieldsReducer}>\n <SuccessfulSubmitCountContext value={successfulSubmitCount}>\n {children}\n </SuccessfulSubmitCountContext>\n </FormFieldsContext.Provider>\n </ModifiedContext>\n </BackgroundProcessingContext>\n </ProcessingContext>\n </InitializingContext>\n </SubmittedContext>\n </FormWatchContext>\n </FormContext>\n </DocumentFormContextComponent>\n </El>\n )\n}\n\nexport {\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useDocumentForm,\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","serialize","deepCopyObjectSimpleWithoutReactComponents","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","hasDraftValidationEnabled","reduceFieldsToValues","uploadRequiresServerValidation","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","FieldErrorsToast","useDebouncedEffect","useEffectEvent","useQueue","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useFormErrorHandler","useLocale","useOperation","useRouter","useRouteTransition","useServerFunctions","useTranslation","useUploadHandlers","abortAndIgnore","handleAbortRef","requests","BackgroundProcessingContext","DocumentFormContext","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","SuccessfulSubmitCountContext","useDocumentForm","errorMessages","fieldReducer","initContextState","baseClass","Form","props","id","collectionSlug","docConfig","docPermissions","getDocPreferences","globalSlug","validateDrafts","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","el","handleResponse","initialState","isDocumentForm","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","documentForm","currentLocale","locale","code","i18n","t","refreshCookie","user","onNonFieldError","operation","queueTask","getFormState","startRouteTransition","getUploadHandler","config","setDisabled","isMounted","setIsMounted","setSubmitted","successfulSubmitCount","setSuccessfulSubmitCount","isValid","setIsValid","initializing","setInitializing","processing","setProcessing","backgroundProcessing","_setBackgroundProcessing","backgroundProcessingRef","modifiedWhileProcessingRef","setBackgroundProcessing","current","modified","_setModified","setModified","formRef","submitFocusRef","previousFocus","isConnected","document","activeElement","body","closest","matches","focus","preventScroll","contextRef","abortResetFormRef","isFirstRenderRef","fieldsReducer","formState","dispatchFields","fields","prevFormState","validateForm","validatedFieldState","data","getData","validationPromises","Object","entries","map","path","field","validatedField","pathSegments","split","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","blockData","event","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","acceptValues","actionArg","context","disableFormWhileProcessing","disableSuccessStatusFromArgs","methodToUse","overrides","overridesFromArgs","skipValidation","disableToast","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","HTMLElement","contains","serializableFormState","excludeFiles","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","headers","language","status","contentType","get","isJSON","indexOf","json","count","newFormState","prevStateRef","serverState","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","serverErrorAction","_jsx","statusText","console","getFields","getField","dataFromArgs","file","upload","handler","allowRestrictedFileTypes","filename","name","mimeType","JSON","stringify","docPrefix","prefix","dataToSerialize","_payload","indices","nullsAsUndefineds","reset","controller","docPreferences","newState","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","moveFieldRow","moveFromIndex","moveToIndex","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","optimize","handleLocaleChange","classes","filter","join","executeOnChange","onChangeFn","startTransition","DocumentFormContextComponent","Fragment","documentFormContextProps","El","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 { serialize } from 'object-to-formdata'\nimport { type FormState, type PayloadRequest } from 'payload'\nimport {\n deepCopyObjectSimpleWithoutReactComponents,\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n hasDraftValidationEnabled,\n reduceFieldsToValues,\n uploadRequiresServerValidation,\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 Submit,\n SubmitOptions,\n} from './types.js'\n\nimport { FieldErrorsToast } from '../../elements/Toasts/fieldErrors.js'\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueue } from '../../hooks/useQueue.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 { useFormErrorHandler } from '../../providers/FormErrorHandler/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useRouter } from '../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../providers/UploadHandlers/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.js'\nimport {\n BackgroundProcessingContext,\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n SuccessfulSubmitCountContext,\n useDocumentForm,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, docConfig, docPermissions, getDocPreferences, globalSlug } =\n useDocumentInfo()\n\n const validateDrafts = hasDraftValidationEnabled(docConfig)\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 el,\n handleResponse,\n initialState, // fully formed initial field state\n isDocumentForm,\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 documentForm = useDocumentForm()\n\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const onNonFieldError = useFormErrorHandler()\n const operation = useOperation()\n const { queueTask } = useQueue()\n\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { getUploadHandler } = useUploadHandlers()\n\n const { config } = useConfig()\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n\n const [submitted, setSubmitted] = useState(false)\n const [successfulSubmitCount, setSuccessfulSubmitCount] = useState(0)\n\n /**\n * Tracks wether the form state passes validation.\n * For example the state could be submitted but invalid as field errors have been returned.\n */\n const [isValid, setIsValid] = useState(true)\n const [initializing, setInitializing] = useState(initializingFromProps)\n\n const [processing, setProcessing] = useState(false)\n\n /**\n * Determines whether the form is processing asynchronously in the background, e.g. autosave is running.\n * Useful to determine whether to disable the form or queue other processes while in flight, e.g. disable manual submits while an autosave is running.\n */\n const [backgroundProcessing, _setBackgroundProcessing] = useState(false)\n\n /**\n * A ref that can be read within the `setModified` interceptor.\n * Dependents of this state can read it immediately without needing to wait for a render cycle.\n */\n const backgroundProcessingRef = useRef(backgroundProcessing)\n\n /**\n * Flag to track if the form was modified _during a submission_, e.g. while autosave is running.\n * Useful in order to avoid resetting `modified` to false wrongfully after a submit.\n * For example, if the user modifies a field while the a background process (autosave) is running,\n * we need to ensure that after the submit completes, the `modified` state remains true.\n */\n const modifiedWhileProcessingRef = useRef(false)\n\n /**\n * Intercept the `setBackgroundProcessing` method to keep the ref in sync.\n * See the `backgroundProcessingRef` for more details.\n */\n const setBackgroundProcessing = useCallback((backgroundProcessing: boolean) => {\n backgroundProcessingRef.current = backgroundProcessing\n _setBackgroundProcessing(backgroundProcessing)\n }, [])\n\n const [modified, _setModified] = useState(false)\n\n /**\n * Intercept the `setModified` method to track whether the event happened during background processing.\n * See the `modifiedWhileProcessingRef` ref for more details.\n */\n const setModified = useCallback((modified: boolean) => {\n if (backgroundProcessingRef.current) {\n modifiedWhileProcessingRef.current = true\n }\n\n _setModified(modified)\n }, [])\n\n const formRef = useRef<HTMLFormElement>(null)\n const submitFocusRef = useRef<HTMLElement | null>(null)\n\n useEffect(() => {\n if (processing) {\n return\n }\n\n const previousFocus = submitFocusRef.current\n\n submitFocusRef.current = null\n if (\n previousFocus?.isConnected &&\n document.activeElement === document.body &&\n !previousFocus.closest('[inert]') &&\n !previousFocus.matches(':disabled')\n ) {\n previousFocus.focus({ preventScroll: true })\n }\n }, [processing])\n const contextRef = useRef({} as FormContextType)\n const abortResetFormRef = useRef<AbortController>(null)\n const isFirstRenderRef = useRef(true)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n const [formState, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = formState\n\n const prevFormState = useRef(formState)\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const data = contextRef.current.getData()\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n const pathSegments = path ? path.split('.') : []\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 // If there is a parent document form, we can get the data from that form\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'submit',\n operation,\n path: pathSegments,\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 setIsValid(isValid)\n\n return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user, documentForm])\n\n const submit = useCallback<Submit>(\n async (options, e) => {\n const {\n acceptValues = true,\n action: actionArg = action,\n context,\n disableFormWhileProcessing = true,\n disableSuccessStatus: disableSuccessStatusFromArgs,\n method: methodToUse = method,\n overrides: overridesFromArgs = {},\n skipValidation,\n } = options || {}\n\n const disableToast = disableSuccessStatusFromArgs ?? disableSuccessStatus\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n modifiedWhileProcessingRef.current = false\n\n // create new toast promise which will resolve manually later\n let errorToast, successToast\n\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 || disableToast || !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 if (disableFormWhileProcessing) {\n const activeElement = document.activeElement\n\n // Disabling the active field drops browser focus to the body.\n submitFocusRef.current =\n activeElement instanceof HTMLElement && formRef.current?.contains(activeElement)\n ? activeElement\n : null\n setProcessing(true)\n setDisabled(true)\n }\n\n if (waitForAutocomplete) {\n await wait(100)\n }\n\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const serializableFormState = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n {\n excludeFiles: true,\n },\n )\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: serializableFormState,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(\n ([, field]) => field.valid !== false,\n )\n\n setIsValid(isValid)\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 setIsValid(isValid)\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 for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n\n onSubmit(contextRef.current.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 try {\n const formData = await contextRef.current.createFormData(overrides, {\n data,\n mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function'),\n })\n\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 if (res.status < 400 && !modifiedWhileProcessingRef.current) {\n setModified(false)\n }\n modifiedWhileProcessingRef.current = false\n\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n await handleResponse(res, successToast, errorToast)\n setProcessing(false)\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\n if (res.status < 400) {\n setSuccessfulSubmitCount((count) => count + 1)\n\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json, {\n context,\n formState: serializableFormState,\n })\n\n if (newFormState) {\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n acceptValues,\n prevStateRef: prevFormState,\n serverState: newFormState,\n })\n }\n }\n\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n void startRouteTransition(() => router.push(redirect))\n } else if (!disableToast) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n // When there was an error submitting a draft,\n // set the form state to unsubmitted, to not trigger visible form validation on changes after the failed submit.\n // Also keep the form as modified so the save button remains enabled for retry.\n if (overridesFromArgs['_status'] === 'draft') {\n setModified(true)\n\n if (!validateDrafts) {\n setSubmitted(false)\n }\n }\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n\n if (json.message) {\n errorToast(json.message)\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 setIsValid(false)\n\n const serverErrorAction = {\n type: 'ADD_SERVER_ERRORS' as const,\n errors: fieldErrors,\n }\n\n prevFormState.current = fieldReducer(prevFormState.current, serverErrorAction)\n dispatchFields(serverErrorAction)\n\n nonFieldErrors.forEach((err) => {\n // Pass overridesFromArgs (not the computed overrides) so a retry re-evaluates any function overrides against current fields.\n if (\n onNonFieldError?.(\n err,\n () => void contextRef.current.submit({ overrides: overridesFromArgs }),\n )\n ) {\n return\n }\n errorToast(<FieldErrorsToast errorMessage={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\n return { formState: contextRef.current.fields, res }\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 startRouteTransition,\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 validateDrafts,\n waitForAutocomplete,\n setModified,\n setSubmitted,\n onNonFieldError,\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>(\n async (overrides, { data: dataFromArgs, mergeOverrideData = true }) => {\n let data = dataFromArgs || reduceFieldsToValues(contextRef.current.fields, true)\n\n let file = data?.file\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n delete data.file\n\n const handler = getUploadHandler({ collectionSlug })\n\n if (\n typeof handler === 'function' &&\n !uploadRequiresServerValidation({\n allowRestrictedFileTypes: docConfig.upload.allowRestrictedFileTypes,\n filename: file.name,\n mimeType: file.type,\n })\n ) {\n file = JSON.stringify(\n await handler({\n docPrefix: typeof data?.prefix === 'string' ? data.prefix : undefined,\n file,\n }),\n )\n }\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const dataToSerialize: Record<string, unknown> = {\n _payload: JSON.stringify(data),\n }\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n dataToSerialize.file = file\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, {\n indices: true,\n nullsAsUndefineds: false,\n })\n\n return formData\n },\n [collectionSlug, docConfig, getUploadHandler],\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 skipValidation: true,\n })\n\n contextRef.current = { ...initContextState }\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 setModified,\n ],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState }\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields, setModified],\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 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, setModified],\n )\n\n const moveFieldRow: FormContextType['moveFieldRow'] = useCallback(\n ({ moveFromIndex, moveToIndex, path }) => {\n dispatchFields({\n type: 'MOVE_ROW',\n moveFromIndex,\n moveToIndex,\n path,\n })\n\n setModified(true)\n },\n [dispatchFields, setModified],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n\n setModified(true)\n },\n [dispatchFields, setModified],\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, setModified],\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.setBackgroundProcessing = setBackgroundProcessing\n\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.setIsValid = setIsValid\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.moveFieldRow = moveFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n contextRef.current.isValid = isValid\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 }\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: initialState,\n })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [formState],\n )\n\n const handleLocaleChange = useEffectEvent(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n })\n\n useEffect(() => {\n handleLocaleChange()\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n const executeOnChange = useEffectEvent(() => {\n queueTask(async () => {\n if (Array.isArray(onChange)) {\n let serverState: FormState\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 serverState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(formState, {\n excludeFiles: true,\n }),\n submitted,\n })\n }\n\n React.startTransition(() => {\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n prevStateRef: prevFormState,\n serverState,\n })\n })\n }\n })\n })\n\n useDebouncedEffect(\n () => {\n if ((isFirstRenderRef.current || !dequal(formState, prevFormState.current)) && modified) {\n executeOnChange()\n }\n\n prevFormState.current = formState\n isFirstRenderRef.current = false\n },\n [modified, submitted, formState],\n 250,\n )\n\n const DocumentFormContextComponent: React.FC<any> = isDocumentForm\n ? DocumentFormContext\n : React.Fragment\n\n const documentFormContextProps = isDocumentForm\n ? {\n value: contextRef.current,\n }\n : {}\n\n const El: 'form' = (el as unknown as 'form') || 'form'\n\n return (\n <El\n action={typeof action === 'function' ? void action : action}\n className={classes}\n /**\n * data-form-ready signals if the form is ready to be used. This is used by our e2e tests\n * to wait for the form to be ready before interacting with it, reducing flakiness if the test is run in\n * slow network conditions.\n */\n data-form-ready={!processing && isMounted && !initializing}\n method={method}\n noValidate\n onSubmit={(e) => void contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <DocumentFormContextComponent {...documentFormContextProps}>\n <FormContext value={contextRef.current}>\n <FormWatchContext\n value={{\n fields: formState,\n ...contextRef.current,\n }}\n >\n <SubmittedContext value={submitted}>\n <InitializingContext value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext value={processing}>\n <BackgroundProcessingContext value={backgroundProcessing}>\n <ModifiedContext value={modified}>\n {/* eslint-disable-next-line @eslint-react/no-context-provider */}\n <FormFieldsContext.Provider value={fieldsReducer}>\n <SuccessfulSubmitCountContext value={successfulSubmitCount}>\n {children}\n </SuccessfulSubmitCountContext>\n </FormFieldsContext.Provider>\n </ModifiedContext>\n </BackgroundProcessingContext>\n </ProcessingContext>\n </InitializingContext>\n </SubmittedContext>\n </FormWatchContext>\n </FormContext>\n </DocumentFormContextComponent>\n </El>\n )\n}\n\nexport {\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useDocumentForm,\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAEhF,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;AAYnE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAwNtD,CAAA"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
+
import { dequal } from 'dequal/lite';
|
|
4
5
|
import { transformWhereQuery, validateWhereQuery } from 'payload/shared';
|
|
6
|
+
import * as qs from 'qs-esm';
|
|
5
7
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
6
8
|
import { useListDrawerContext } from '../../elements/ListDrawer/Provider.js';
|
|
7
9
|
import { useEffectEvent } from '../../hooks/useEffectEvent.js';
|
|
@@ -109,9 +111,23 @@ export const ListQueryProvider = ({
|
|
|
109
111
|
* triggering a re-render.
|
|
110
112
|
*/
|
|
111
113
|
const syncPropsToURL = useEffectEvent(() => {
|
|
114
|
+
// URL serialization omits empty draft conditions and compacts their array indexes.
|
|
115
|
+
// Preserve those rows on an equivalent server echo so the focused input stays mounted.
|
|
116
|
+
const shouldKeepDraftFilters = dequal(qs.parse(qs.stringify({
|
|
117
|
+
where: query?.where
|
|
118
|
+
}), {
|
|
119
|
+
depth: 10
|
|
120
|
+
}), qs.parse(qs.stringify({
|
|
121
|
+
where: queryFromProps?.where
|
|
122
|
+
}), {
|
|
123
|
+
depth: 10
|
|
124
|
+
}));
|
|
112
125
|
const newQuery_0 = sanitizeQuery({
|
|
113
126
|
...(query || {}),
|
|
114
|
-
...(queryFromProps || {})
|
|
127
|
+
...(queryFromProps || {}),
|
|
128
|
+
...(shouldKeepDraftFilters ? {
|
|
129
|
+
where: query?.where
|
|
130
|
+
} : {})
|
|
115
131
|
});
|
|
116
132
|
const search_1 = getSearchWithListQuery({
|
|
117
133
|
currentSearch: window.location.search,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["transformWhereQuery","validateWhereQuery","React","useCallback","useEffect","useMemo","useRef","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","useRouter","useSearchParams","ListQueryContext","ListQueryModifiedContext","getSearchWithListQuery","mergeQuery","sanitizeQuery","useListQuery","ListQueryProvider","children","collectionSlug","data","modifySearchParams","onQueryChange","onQueryChangeFromProps","orderableFieldName","query","queryFromProps","router","rawSearchParams","startRouteTransition","modified","setModified","contextRef","current","onQueryChangeFromContext","queryFromURL","setQuery","limit","sort","searchInput","setSearchInput","search","refineListData","incomingQuery","newQuery","defaults","pendingUpdate","undefined","currentSearch","window","location","updatedQuery","replace","scroll","handlePageChange","arg","page","handlePerPageChange","handleSearchChange","handleSortChange","handleWhereChange","where","syncPropsToURL","replaceState","history","hasActiveFilters","normalizedWhere","or","some","orGroup","and","andGroup","field","Object","keys","operatorObj","operator","Boolean","_jsx","value","defaultLimit","isGroupingBy","groupBy","resolvedGroupBy","resolvedSearch"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport { type ListQuery, type Where } from 'payload'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useRouter, useSearchParams } from '../RouterAdapter/index.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\nimport { getSearchWithListQuery } from './getSearchWithListQuery.js'\nimport { mergeQuery } from './mergeQuery.js'\nimport { sanitizeQuery } from './sanitizeQuery.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n data,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n orderableFieldName,\n query: queryFromProps,\n}) => {\n // TODO: Investigate if this is still needed\n 'use no memo'\n\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n const contextRef = useRef({} as IListQueryContext)\n contextRef.current.modified = modified\n\n const { onQueryChange: onQueryChangeFromContext } = useListDrawerContext()\n const onQueryChange = onQueryChangeFromContext || onQueryChangeFromProps\n\n const queryFromURL = useMemo<ListQuery>(\n () => sanitizeQuery(parseSearchParams(rawSearchParams)),\n [rawSearchParams],\n )\n\n const [query, setQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return queryFromProps ? sanitizeQuery(queryFromProps) : queryFromURL\n } else {\n return {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n }\n }\n })\n\n const [searchInput, setSearchInput] = useState(query?.search || '')\n\n const refineListData = useCallback(\n async (incomingQuery: ListQuery, modified?: boolean) => {\n setModified(modified ?? true)\n\n const newQuery = mergeQuery(query, incomingQuery, {\n defaults: {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n },\n })\n\n let pendingUpdate: Promise<unknown> | void = undefined\n\n if (modifySearchParams) {\n const search = getSearchWithListQuery({\n currentSearch: window.location.search,\n query: newQuery,\n updatedQuery: incomingQuery,\n })\n if (window.location.search !== search) {\n pendingUpdate = startRouteTransition(() => router.replace(search, { scroll: false }))\n }\n } else if (typeof onQueryChange === 'function') {\n pendingUpdate = onQueryChange(newQuery)\n }\n\n setQuery(newQuery)\n await pendingUpdate\n },\n [\n query,\n queryFromProps.limit,\n queryFromProps.sort,\n modifySearchParams,\n onQueryChange,\n startRouteTransition,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: arg })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: arg, page: 1 })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (sort: string) => {\n await refineListData({ sort })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (where: Where) => {\n await refineListData({ where })\n },\n [refineListData],\n )\n\n /**\n * The server component may pass props to this client component, e.g. from\n * fetching the query from preferences.\n * This effect is responsible for syncing the props back to the URL, without\n * triggering a re-render.\n */\n const syncPropsToURL = useEffectEvent(() => {\n const newQuery = sanitizeQuery({ ...(query || {}), ...(queryFromProps || {}) })\n\n const search = getSearchWithListQuery({\n currentSearch: window.location.search,\n query: newQuery,\n })\n\n if (window.location.search !== search) {\n setQuery(newQuery)\n // Important: do not use router.replace here to avoid re-rendering.\n // Go through the adapter's replaceState so routers that observe history\n // mutations (e.g. TanStack) don't re-run their loader and double-load the\n // view. Falls back to the native call for adapters that don't implement it.\n if (router.replaceState) {\n router.replaceState(search)\n } else {\n window.history.replaceState(null, '', search)\n }\n }\n })\n\n // If `query` is updated externally, update the local state\n // E.g. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams && queryFromProps) {\n syncPropsToURL()\n }\n }, [modifySearchParams, queryFromProps])\n\n const hasActiveFilters = useMemo(() => {\n if (!query?.where) {\n return false\n }\n\n // Normalize flat/invalid where queries (e.g. `{ title: { equals } }`) into the\n // `or/and` structure so they are detected the same way the WhereBuilder reads them.\n const normalizedWhere = validateWhereQuery(query.where)\n ? query.where\n : transformWhereQuery(query.where)\n\n return (normalizedWhere.or ?? []).some((orGroup) =>\n (orGroup.and ?? []).some((andGroup) => {\n const field = Object.keys(andGroup)[0]\n if (!field) {\n return false\n }\n const operatorObj = andGroup[field]\n if (!operatorObj || typeof operatorObj !== 'object') {\n return false\n }\n const operator = Object.keys(operatorObj)[0]\n return Boolean(operator) && (operatorObj as Record<string, unknown>)[operator] !== undefined\n }),\n )\n }, [query?.where])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n defaultLimit: data?.limit,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n hasActiveFilters,\n isGroupingBy: Boolean(query?.groupBy),\n orderableFieldName,\n query,\n refineListData,\n resolvedGroupBy: queryFromProps?.groupBy,\n resolvedSearch: queryFromProps?.search,\n searchInput,\n setModified,\n setSearchInput,\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["dequal","transformWhereQuery","validateWhereQuery","qs","React","useCallback","useEffect","useMemo","useRef","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","useRouter","useSearchParams","ListQueryContext","ListQueryModifiedContext","getSearchWithListQuery","mergeQuery","sanitizeQuery","useListQuery","ListQueryProvider","children","collectionSlug","data","modifySearchParams","onQueryChange","onQueryChangeFromProps","orderableFieldName","query","queryFromProps","router","rawSearchParams","startRouteTransition","modified","setModified","contextRef","current","onQueryChangeFromContext","queryFromURL","setQuery","limit","sort","searchInput","setSearchInput","search","refineListData","incomingQuery","newQuery","defaults","pendingUpdate","undefined","currentSearch","window","location","updatedQuery","replace","scroll","handlePageChange","arg","page","handlePerPageChange","handleSearchChange","handleSortChange","handleWhereChange","where","syncPropsToURL","shouldKeepDraftFilters","parse","stringify","depth","replaceState","history","hasActiveFilters","normalizedWhere","or","some","orGroup","and","andGroup","field","Object","keys","operatorObj","operator","Boolean","_jsx","value","defaultLimit","isGroupingBy","groupBy","resolvedGroupBy","resolvedSearch"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport type { ListQuery, Where } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useRouter, useSearchParams } from '../RouterAdapter/index.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\nimport { getSearchWithListQuery } from './getSearchWithListQuery.js'\nimport { mergeQuery } from './mergeQuery.js'\nimport { sanitizeQuery } from './sanitizeQuery.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n data,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n orderableFieldName,\n query: queryFromProps,\n}) => {\n // TODO: Investigate if this is still needed\n 'use no memo'\n\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n const contextRef = useRef({} as IListQueryContext)\n contextRef.current.modified = modified\n\n const { onQueryChange: onQueryChangeFromContext } = useListDrawerContext()\n const onQueryChange = onQueryChangeFromContext || onQueryChangeFromProps\n\n const queryFromURL = useMemo<ListQuery>(\n () => sanitizeQuery(parseSearchParams(rawSearchParams)),\n [rawSearchParams],\n )\n\n const [query, setQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return queryFromProps ? sanitizeQuery(queryFromProps) : queryFromURL\n } else {\n return {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n }\n }\n })\n\n const [searchInput, setSearchInput] = useState(query?.search || '')\n\n const refineListData = useCallback(\n async (incomingQuery: ListQuery, modified?: boolean) => {\n setModified(modified ?? true)\n\n const newQuery = mergeQuery(query, incomingQuery, {\n defaults: {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n },\n })\n\n let pendingUpdate: Promise<unknown> | void = undefined\n\n if (modifySearchParams) {\n const search = getSearchWithListQuery({\n currentSearch: window.location.search,\n query: newQuery,\n updatedQuery: incomingQuery,\n })\n if (window.location.search !== search) {\n pendingUpdate = startRouteTransition(() => router.replace(search, { scroll: false }))\n }\n } else if (typeof onQueryChange === 'function') {\n pendingUpdate = onQueryChange(newQuery)\n }\n\n setQuery(newQuery)\n await pendingUpdate\n },\n [\n query,\n queryFromProps.limit,\n queryFromProps.sort,\n modifySearchParams,\n onQueryChange,\n startRouteTransition,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: arg })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: arg, page: 1 })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (sort: string) => {\n await refineListData({ sort })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (where: Where) => {\n await refineListData({ where })\n },\n [refineListData],\n )\n\n /**\n * The server component may pass props to this client component, e.g. from\n * fetching the query from preferences.\n * This effect is responsible for syncing the props back to the URL, without\n * triggering a re-render.\n */\n const syncPropsToURL = useEffectEvent(() => {\n // URL serialization omits empty draft conditions and compacts their array indexes.\n // Preserve those rows on an equivalent server echo so the focused input stays mounted.\n const shouldKeepDraftFilters = dequal(\n qs.parse(qs.stringify({ where: query?.where }), { depth: 10 }),\n qs.parse(qs.stringify({ where: queryFromProps?.where }), { depth: 10 }),\n )\n const newQuery = sanitizeQuery({\n ...(query || {}),\n ...(queryFromProps || {}),\n ...(shouldKeepDraftFilters ? { where: query?.where } : {}),\n })\n\n const search = getSearchWithListQuery({\n currentSearch: window.location.search,\n query: newQuery,\n })\n\n if (window.location.search !== search) {\n setQuery(newQuery)\n // Important: do not use router.replace here to avoid re-rendering.\n // Go through the adapter's replaceState so routers that observe history\n // mutations (e.g. TanStack) don't re-run their loader and double-load the\n // view. Falls back to the native call for adapters that don't implement it.\n if (router.replaceState) {\n router.replaceState(search)\n } else {\n window.history.replaceState(null, '', search)\n }\n }\n })\n\n // If `query` is updated externally, update the local state\n // E.g. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams && queryFromProps) {\n syncPropsToURL()\n }\n }, [modifySearchParams, queryFromProps])\n\n const hasActiveFilters = useMemo(() => {\n if (!query?.where) {\n return false\n }\n\n // Normalize flat/invalid where queries (e.g. `{ title: { equals } }`) into the\n // `or/and` structure so they are detected the same way the WhereBuilder reads them.\n const normalizedWhere = validateWhereQuery(query.where)\n ? query.where\n : transformWhereQuery(query.where)\n\n return (normalizedWhere.or ?? []).some((orGroup) =>\n (orGroup.and ?? []).some((andGroup) => {\n const field = Object.keys(andGroup)[0]\n if (!field) {\n return false\n }\n const operatorObj = andGroup[field]\n if (!operatorObj || typeof operatorObj !== 'object') {\n return false\n }\n const operator = Object.keys(operatorObj)[0]\n return Boolean(operator) && (operatorObj as Record<string, unknown>)[operator] !== undefined\n }),\n )\n }, [query?.where])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n defaultLimit: data?.limit,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n hasActiveFilters,\n isGroupingBy: Boolean(query?.groupBy),\n orderableFieldName,\n query,\n refineListData,\n resolvedGroupBy: queryFromProps?.groupBy,\n resolvedSearch: queryFromProps?.search,\n searchInput,\n setModified,\n setSearchInput,\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|