@payloadcms/ui 3.29.0-internal.2984e42 → 3.29.0-internal.3471e81

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 (37) hide show
  1. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +127 -143
  3. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  4. package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
  5. package/dist/elements/BulkUpload/EditMany/index.js +1 -1
  6. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  7. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  8. package/dist/elements/BulkUpload/FileSidebar/index.js +5 -5
  9. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  10. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  12. package/dist/elements/EditMany/DrawerContent.d.ts +1 -2
  13. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  14. package/dist/elements/EditMany/DrawerContent.js +119 -107
  15. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  16. package/dist/elements/EditMany/index.d.ts.map +1 -1
  17. package/dist/elements/EditMany/index.js +5 -6
  18. package/dist/elements/EditMany/index.js.map +1 -1
  19. package/dist/elements/FieldSelect/index.d.ts +2 -12
  20. package/dist/elements/FieldSelect/index.d.ts.map +1 -1
  21. package/dist/elements/FieldSelect/index.js +48 -31
  22. package/dist/elements/FieldSelect/index.js.map +1 -1
  23. package/dist/elements/QueryPresets/cells/WhereCell/index.d.ts.map +1 -1
  24. package/dist/elements/QueryPresets/cells/WhereCell/index.js +1 -7
  25. package/dist/elements/QueryPresets/cells/WhereCell/index.js.map +1 -1
  26. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +1 -1
  27. package/dist/elements/QueryPresets/fields/WhereField/index.js +0 -3
  28. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  29. package/dist/elements/Thumbnail/index.js +1 -1
  30. package/dist/elements/Thumbnail/index.js.map +1 -1
  31. package/dist/exports/client/index.js +11 -11
  32. package/dist/exports/client/index.js.map +4 -4
  33. package/dist/fields/Group/index.scss +6 -12
  34. package/dist/forms/Form/fieldReducer.js +1 -1
  35. package/dist/forms/Form/fieldReducer.js.map +1 -1
  36. package/dist/styles.css +1 -1
  37. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","isImage","qs","React","toast","fieldReducer","useConfig","useLocale","useServerFunctions","useTranslation","useUploadHandlers","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","createThumbnail","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","thumbnailUrls","totalErrorCount","initialState","FormsManagerProvider","children","config","routes","api","serverURL","code","i18n","t","getDocumentSlots","getFormState","getUploadHandler","setDocumentSlots","useState","setHasSubmitted","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","formsRef","useRef","formsCount","length","thumbnailUrlsRef","processedFiles","Set","renderedThumbnails","setRenderedThumbnails","useEffect","newThumbnails","i","file","formState","value","has","type","add","thumbnailUrl","setTimeout","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","isUploading","setIsUploading","loadingText","setLoadingText","hasInitializedWithFiles","initialStateRef","actionURL","initializeSharedDocPermissions","useCallback","params","locale","docAccessURL","res","fetch","stringify","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","docPreferences","fields","operation","renderAllFields","schemaPath","skipValidation","_err","index","currentFormsData","map","form","errorCount","files","isLoading","key","removeThumbnails","indexes","filter","_","includes","count","overrides","currentForms","newDocs","total","req","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","path","error","remainingForms","thumbnailIndexesToRemove","successCount","Math","max","success","acc","updatedFields","afterStateUpdate","Object","entries","newFormErrorCount","values","valid","_jsxs","_jsx","animationDuration","overlayType","show","useFormsManager","use"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Data, DocumentSlots, FormState, SanitizedDocumentPermissions } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { isImage } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport type { State } from './reducer.js'\n\nimport { fieldReducer } from '../../../forms/Form/fieldReducer.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../../providers/UploadHandlers/index.js'\nimport { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js'\nimport { LoadingOverlay } from '../../Loading/index.js'\nimport { useLoadingOverlay } from '../../LoadingOverlay/index.js'\nimport { createThumbnail } from '../../Thumbnail/createThumbnail.js'\nimport { useBulkUpload } from '../index.js'\nimport { createFormData } from './createFormData.js'\nimport { formsManagementReducer } from './reducer.js'\n\ntype FormsManagerContext = {\n readonly activeIndex: State['activeIndex']\n readonly addFiles: (filelist: FileList) => Promise<void>\n readonly bulkUpdateForm: (\n updatedFields: Record<string, unknown>,\n afterStateUpdate?: () => void,\n ) => Promise<void>\n readonly collectionSlug: string\n readonly docPermissions?: SanitizedDocumentPermissions\n readonly documentSlots: DocumentSlots\n readonly forms: State['forms']\n getFormDataRef: React.RefObject<() => Data>\n readonly hasPublishPermission: boolean\n readonly hasSavePermission: boolean\n readonly hasSubmitted: boolean\n readonly isInitializing: boolean\n readonly removeFile: (index: number) => void\n readonly saveAllDocs: ({ overrides }?: { overrides?: Record<string, unknown> }) => Promise<void>\n readonly setActiveIndex: (index: number) => void\n readonly setFormTotalErrorCount: ({\n errorCount,\n index,\n }: {\n errorCount: number\n index: number\n }) => void\n readonly thumbnailUrls: string[]\n readonly totalErrorCount?: number\n}\n\nconst Context = React.createContext<FormsManagerContext>({\n activeIndex: 0,\n addFiles: () => Promise.resolve(),\n bulkUpdateForm: () => null,\n collectionSlug: '',\n docPermissions: undefined,\n documentSlots: {},\n forms: [],\n getFormDataRef: { current: () => ({}) },\n hasPublishPermission: false,\n hasSavePermission: false,\n hasSubmitted: false,\n isInitializing: false,\n removeFile: () => {},\n saveAllDocs: () => Promise.resolve(),\n setActiveIndex: () => 0,\n setFormTotalErrorCount: () => {},\n thumbnailUrls: [],\n totalErrorCount: 0,\n})\n\nconst initialState: State = {\n activeIndex: 0,\n forms: [],\n totalErrorCount: 0,\n}\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\n\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const { getDocumentSlots, getFormState } = useServerFunctions()\n const { getUploadHandler } = useUploadHandlers()\n\n const [documentSlots, setDocumentSlots] = React.useState<DocumentSlots>({})\n const [hasSubmitted, setHasSubmitted] = React.useState(false)\n const [docPermissions, setDocPermissions] = React.useState<SanitizedDocumentPermissions>()\n const [hasSavePermission, setHasSavePermission] = React.useState(false)\n const [hasPublishPermission, setHasPublishPermission] = React.useState(false)\n const [hasInitializedState, setHasInitializedState] = React.useState(false)\n const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false)\n const [isInitializing, setIsInitializing] = React.useState(false)\n const [state, dispatch] = React.useReducer(formsManagementReducer, initialState)\n const { activeIndex, forms, totalErrorCount } = state\n\n const formsRef = React.useRef(forms)\n formsRef.current = forms\n const formsCount = forms.length\n\n const thumbnailUrlsRef = React.useRef<string[]>([])\n const processedFiles = React.useRef(new Set()) // Track already-processed files\n const [renderedThumbnails, setRenderedThumbnails] = React.useState<string[]>([])\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;(async () => {\n const newThumbnails = [...thumbnailUrlsRef.current]\n\n for (let i = 0; i < formsCount; i++) {\n const file = formsRef.current[i].formState.file.value as File\n\n // Skip if already processed\n if (processedFiles.current.has(file) || !file || !isImage(file.type)) {\n continue\n }\n processedFiles.current.add(file)\n\n // Generate thumbnail and update ref\n const thumbnailUrl = await createThumbnail(file)\n newThumbnails[i] = thumbnailUrl\n thumbnailUrlsRef.current = newThumbnails\n\n // Trigger re-render in batches\n setRenderedThumbnails([...newThumbnails])\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n })()\n }, [formsCount])\n\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess } = useBulkUpload()\n\n const [isUploading, setIsUploading] = React.useState(false)\n const [loadingText, setLoadingText] = React.useState('')\n\n const hasInitializedWithFiles = React.useRef(false)\n const initialStateRef = React.useRef<FormState>(null)\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n\n const actionURL = `${api}/${collectionSlug}`\n\n const initializeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessURL = `/${collectionSlug}/access`\n const res = await fetch(`${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n const json: SanitizedDocumentPermissions = await res.json()\n const publishedAccessJSON = await fetch(\n `${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n isEditing: false,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n setHasInitializedDocPermissions(true)\n }, [api, code, collectionSlug, i18n.language, serverURL])\n\n const initializeSharedFormState = React.useCallback(\n async (abortController?: AbortController) => {\n if (abortController?.signal) {\n abortController.abort('aborting previous fetch for initial form state without files')\n }\n\n // FETCH AND SET THE DOCUMENT SLOTS HERE!\n const documentSlots = await getDocumentSlots({ collectionSlug })\n setDocumentSlots(documentSlots)\n\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: { fields: {} },\n locale: code,\n operation: 'create',\n renderAllFields: true,\n schemaPath: collectionSlug,\n skipValidation: true,\n })\n initialStateRef.current = formStateWithoutFiles\n setHasInitializedState(true)\n } catch (_err) {\n // swallow error\n }\n },\n [getDocumentSlots, collectionSlug, getFormState, docPermissions, code],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: index,\n forms: forms.map((form, i) => {\n if (i === activeIndex) {\n return {\n errorCount: form.errorCount,\n formState: currentFormsData,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n dispatch({ type: 'ADD_FORMS', files, initialState: initialStateRef.current })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n },\n [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay],\n )\n\n const removeThumbnails = React.useCallback((indexes: number[]) => {\n thumbnailUrlsRef.current = thumbnailUrlsRef.current.filter((_, i) => !indexes.includes(i))\n setRenderedThumbnails([...thumbnailUrlsRef.current])\n }, [])\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback(\n (index) => {\n dispatch({ type: 'REMOVE_FORM', index })\n removeThumbnails([index])\n },\n [removeThumbnails],\n )\n\n const setFormTotalErrorCount: FormsManagerContext['setFormTotalErrorCount'] = React.useCallback(\n ({ errorCount, index }) => {\n dispatch({\n type: 'UPDATE_ERROR_COUNT',\n count: errorCount,\n index,\n })\n },\n [],\n )\n\n const saveAllDocs: FormsManagerContext['saveAllDocs'] = React.useCallback(\n async ({ overrides } = {}) => {\n const currentFormsData = getFormDataRef.current()\n const currentForms = [...forms]\n currentForms[activeIndex] = {\n errorCount: currentForms[activeIndex].errorCount,\n formState: currentFormsData,\n }\n const newDocs = []\n\n setIsUploading(true)\n\n for (let i = 0; i < currentForms.length; i++) {\n try {\n const form = currentForms[i]\n\n setLoadingText(t('general:uploadingBulk', { current: i + 1, total: currentForms.length }))\n\n const req = await fetch(actionURL, {\n body: await createFormData(\n form.formState,\n overrides,\n collectionSlug,\n getUploadHandler({ collectionSlug }),\n ),\n method: 'POST',\n })\n\n const json = await req.json()\n\n if (req.status === 201 && json?.doc) {\n newDocs.push(json.doc)\n }\n\n // should expose some sort of helper for this\n const [fieldErrors, nonFieldErrors] = (json?.errors || []).reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs: any[] = []\n const newNonFieldErrs: any[] = []\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 currentForms[i] = {\n errorCount: fieldErrors.length,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n\n if (req.status === 413 || req.status === 400) {\n // file too large\n currentForms[i] = {\n ...currentForms[i],\n errorCount: currentForms[i].errorCount + 1,\n }\n\n toast.error(nonFieldErrors[0]?.message)\n }\n } catch (_) {\n // swallow\n }\n }\n\n setHasSubmitted(true)\n setLoadingText('')\n setIsUploading(false)\n\n const remainingForms = []\n const thumbnailIndexesToRemove = []\n\n currentForms.forEach(({ errorCount }, i) => {\n if (errorCount) {\n remainingForms.push(currentForms[i])\n } else {\n thumbnailIndexesToRemove.push(i)\n }\n })\n\n const successCount = Math.max(0, currentForms.length - remainingForms.length)\n const errorCount = currentForms.length - successCount\n\n if (successCount) {\n toast.success(`Successfully saved ${successCount} files`)\n\n if (typeof onSuccess === 'function') {\n onSuccess(newDocs, errorCount)\n }\n\n if (remainingForms.length && thumbnailIndexesToRemove.length) {\n removeThumbnails(thumbnailIndexesToRemove)\n }\n }\n\n if (errorCount) {\n toast.error(`Failed to save ${errorCount} files`)\n } else {\n closeModal(drawerSlug)\n }\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: 0,\n forms: remainingForms,\n totalErrorCount: remainingForms.reduce((acc, { errorCount }) => acc + errorCount, 0),\n },\n })\n },\n [\n actionURL,\n activeIndex,\n forms,\n removeThumbnails,\n onSuccess,\n collectionSlug,\n getUploadHandler,\n t,\n closeModal,\n drawerSlug,\n ],\n )\n\n const bulkUpdateForm = React.useCallback(\n async (updatedFields: Record<string, unknown>, afterStateUpdate?: () => void) => {\n for (let i = 0; i < forms.length; i++) {\n Object.entries(updatedFields).forEach(([path, value]) => {\n if (forms[i].formState[path]) {\n forms[i].formState[path].value = value\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[i].errorCount,\n formState: forms[i].formState,\n index: i,\n })\n }\n })\n\n if (typeof afterStateUpdate === 'function') {\n afterStateUpdate()\n }\n\n if (hasSubmitted) {\n const { state } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: forms[i].formState,\n operation: 'create',\n schemaPath: collectionSlug,\n })\n\n const newFormErrorCount = Object.values(state).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n )\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: newFormErrorCount,\n formState: state,\n index: i,\n })\n }\n }\n },\n [collectionSlug, docPermissions, forms, getFormState, hasSubmitted],\n )\n\n React.useEffect(() => {\n if (!collectionSlug) {\n return\n }\n if (!hasInitializedState) {\n void initializeSharedFormState()\n }\n\n if (!hasInitializedDocPermissions) {\n void initializeSharedDocPermissions()\n }\n\n if (initialFiles) {\n if (!hasInitializedState || !hasInitializedDocPermissions) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (hasInitializedState && initialFiles && !hasInitializedWithFiles.current) {\n void addFiles(initialFiles)\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n addFiles,\n initialFiles,\n initializeSharedFormState,\n initializeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n ])\n\n return (\n <Context\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n bulkUpdateForm,\n collectionSlug,\n docPermissions,\n documentSlots,\n forms,\n getFormDataRef,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n isInitializing,\n removeFile,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n thumbnailUrls: renderedThumbnails,\n totalErrorCount,\n }}\n >\n {isUploading && (\n <LoadingOverlay\n animationDuration=\"250ms\"\n loadingText={loadingText}\n overlayType=\"fullscreen\"\n show\n />\n )}\n {children}\n </Context>\n )\n}\n\nexport function useFormsManager() {\n return React.use(Context)\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","isImage","qs","React","toast","fieldReducer","useConfig","useLocale","useServerFunctions","useTranslation","useUploadHandlers","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","createThumbnail","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","thumbnailUrls","totalErrorCount","initialState","FormsManagerProvider","children","config","routes","api","serverURL","code","i18n","t","getDocumentSlots","getFormState","getUploadHandler","setDocumentSlots","useState","setHasSubmitted","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","formsRef","useRef","formsCount","length","thumbnailUrlsRef","processedFiles","Set","renderedThumbnails","setRenderedThumbnails","useEffect","newThumbnails","i","file","formState","value","has","type","add","thumbnailUrl","setTimeout","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","isUploading","setIsUploading","loadingText","setLoadingText","hasInitializedWithFiles","initialStateRef","actionURL","initializeSharedDocPermissions","useCallback","params","locale","docAccessURL","res","fetch","stringify","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","docPreferences","fields","operation","renderAllFields","schemaPath","skipValidation","_err","index","currentFormsData","map","form","errorCount","files","isLoading","key","removeThumbnails","indexes","filter","_","includes","count","overrides","currentForms","newDocs","total","req","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","path","error","remainingForms","thumbnailIndexesToRemove","successCount","Math","max","success","acc","updatedFields","afterStateUpdate","Object","entries","newFormErrorCount","values","valid","_jsxs","_jsx","animationDuration","overlayType","show","useFormsManager","use"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Data, DocumentSlots, FormState, SanitizedDocumentPermissions } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { isImage } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport type { State } from './reducer.js'\n\nimport { fieldReducer } from '../../../forms/Form/fieldReducer.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../../providers/UploadHandlers/index.js'\nimport { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js'\nimport { LoadingOverlay } from '../../Loading/index.js'\nimport { useLoadingOverlay } from '../../LoadingOverlay/index.js'\nimport { createThumbnail } from '../../Thumbnail/createThumbnail.js'\nimport { useBulkUpload } from '../index.js'\nimport { createFormData } from './createFormData.js'\nimport { formsManagementReducer } from './reducer.js'\n\ntype FormsManagerContext = {\n readonly activeIndex: State['activeIndex']\n readonly addFiles: (filelist: FileList) => Promise<void>\n readonly bulkUpdateForm: (\n updatedFields: Record<string, unknown>,\n afterStateUpdate?: () => void,\n ) => Promise<void>\n readonly collectionSlug: string\n readonly docPermissions?: SanitizedDocumentPermissions\n readonly documentSlots: DocumentSlots\n readonly forms: State['forms']\n getFormDataRef: React.RefObject<() => Data>\n readonly hasPublishPermission: boolean\n readonly hasSavePermission: boolean\n readonly hasSubmitted: boolean\n readonly isInitializing: boolean\n readonly removeFile: (index: number) => void\n readonly saveAllDocs: ({ overrides }?: { overrides?: Record<string, unknown> }) => Promise<void>\n readonly setActiveIndex: (index: number) => void\n readonly setFormTotalErrorCount: ({\n errorCount,\n index,\n }: {\n errorCount: number\n index: number\n }) => void\n readonly thumbnailUrls: string[]\n readonly totalErrorCount?: number\n}\n\nconst Context = React.createContext<FormsManagerContext>({\n activeIndex: 0,\n addFiles: () => Promise.resolve(),\n bulkUpdateForm: () => null,\n collectionSlug: '',\n docPermissions: undefined,\n documentSlots: {},\n forms: [],\n getFormDataRef: { current: () => ({}) },\n hasPublishPermission: false,\n hasSavePermission: false,\n hasSubmitted: false,\n isInitializing: false,\n removeFile: () => {},\n saveAllDocs: () => Promise.resolve(),\n setActiveIndex: () => 0,\n setFormTotalErrorCount: () => {},\n thumbnailUrls: [],\n totalErrorCount: 0,\n})\n\nconst initialState: State = {\n activeIndex: 0,\n forms: [],\n totalErrorCount: 0,\n}\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\n\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const { getDocumentSlots, getFormState } = useServerFunctions()\n const { getUploadHandler } = useUploadHandlers()\n\n const [documentSlots, setDocumentSlots] = React.useState<DocumentSlots>({})\n const [hasSubmitted, setHasSubmitted] = React.useState(false)\n const [docPermissions, setDocPermissions] = React.useState<SanitizedDocumentPermissions>()\n const [hasSavePermission, setHasSavePermission] = React.useState(false)\n const [hasPublishPermission, setHasPublishPermission] = React.useState(false)\n const [hasInitializedState, setHasInitializedState] = React.useState(false)\n const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false)\n const [isInitializing, setIsInitializing] = React.useState(false)\n const [state, dispatch] = React.useReducer(formsManagementReducer, initialState)\n const { activeIndex, forms, totalErrorCount } = state\n\n const formsRef = React.useRef(forms)\n formsRef.current = forms\n const formsCount = forms.length\n\n const thumbnailUrlsRef = React.useRef<string[]>([])\n const processedFiles = React.useRef(new Set()) // Track already-processed files\n const [renderedThumbnails, setRenderedThumbnails] = React.useState<string[]>([])\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;(async () => {\n const newThumbnails = [...thumbnailUrlsRef.current]\n\n for (let i = 0; i < formsCount; i++) {\n const file = formsRef.current[i].formState.file.value as File\n\n // Skip if already processed\n if (processedFiles.current.has(file) || !file || !isImage(file.type)) {\n continue\n }\n processedFiles.current.add(file)\n\n // Generate thumbnail and update ref\n const thumbnailUrl = await createThumbnail(file)\n newThumbnails[i] = thumbnailUrl\n thumbnailUrlsRef.current = newThumbnails\n\n // Trigger re-render in batches\n setRenderedThumbnails([...newThumbnails])\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n })()\n }, [formsCount])\n\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess } = useBulkUpload()\n\n const [isUploading, setIsUploading] = React.useState(false)\n const [loadingText, setLoadingText] = React.useState('')\n\n const hasInitializedWithFiles = React.useRef(false)\n const initialStateRef = React.useRef<FormState>(null)\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n\n const actionURL = `${api}/${collectionSlug}`\n\n const initializeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessURL = `/${collectionSlug}/access`\n const res = await fetch(`${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n const json: SanitizedDocumentPermissions = await res.json()\n const publishedAccessJSON = await fetch(\n `${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n isEditing: false,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n setHasInitializedDocPermissions(true)\n }, [api, code, collectionSlug, i18n.language, serverURL])\n\n const initializeSharedFormState = React.useCallback(\n async (abortController?: AbortController) => {\n if (abortController?.signal) {\n abortController.abort('aborting previous fetch for initial form state without files')\n }\n\n // FETCH AND SET THE DOCUMENT SLOTS HERE!\n const documentSlots = await getDocumentSlots({ collectionSlug })\n setDocumentSlots(documentSlots)\n\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: { fields: {} },\n locale: code,\n operation: 'create',\n renderAllFields: true,\n schemaPath: collectionSlug,\n skipValidation: true,\n })\n initialStateRef.current = formStateWithoutFiles\n setHasInitializedState(true)\n } catch (_err) {\n // swallow error\n }\n },\n [getDocumentSlots, collectionSlug, getFormState, docPermissions, code],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: index,\n forms: forms.map((form, i) => {\n if (i === activeIndex) {\n return {\n errorCount: form.errorCount,\n formState: currentFormsData,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n dispatch({ type: 'ADD_FORMS', files, initialState: initialStateRef.current })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n },\n [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay],\n )\n\n const removeThumbnails = React.useCallback((indexes: number[]) => {\n thumbnailUrlsRef.current = thumbnailUrlsRef.current.filter((_, i) => !indexes.includes(i))\n setRenderedThumbnails([...thumbnailUrlsRef.current])\n }, [])\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback(\n (index) => {\n dispatch({ type: 'REMOVE_FORM', index })\n removeThumbnails([index])\n },\n [removeThumbnails],\n )\n\n const setFormTotalErrorCount: FormsManagerContext['setFormTotalErrorCount'] = React.useCallback(\n ({ errorCount, index }) => {\n dispatch({\n type: 'UPDATE_ERROR_COUNT',\n count: errorCount,\n index,\n })\n },\n [],\n )\n\n const saveAllDocs: FormsManagerContext['saveAllDocs'] = React.useCallback(\n async ({ overrides } = {}) => {\n const currentFormsData = getFormDataRef.current()\n const currentForms = [...forms]\n currentForms[activeIndex] = {\n errorCount: currentForms[activeIndex].errorCount,\n formState: currentFormsData,\n }\n const newDocs = []\n\n setIsUploading(true)\n\n for (let i = 0; i < currentForms.length; i++) {\n try {\n const form = currentForms[i]\n\n setLoadingText(t('general:uploadingBulk', { current: i + 1, total: currentForms.length }))\n\n const req = await fetch(actionURL, {\n body: await createFormData(\n form.formState,\n overrides,\n collectionSlug,\n getUploadHandler({ collectionSlug }),\n ),\n method: 'POST',\n })\n\n const json = await req.json()\n\n if (req.status === 201 && json?.doc) {\n newDocs.push(json.doc)\n }\n\n // should expose some sort of helper for this\n const [fieldErrors, nonFieldErrors] = (json?.errors || []).reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs: any[] = []\n const newNonFieldErrs: any[] = []\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 currentForms[i] = {\n errorCount: fieldErrors.length,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n\n if (req.status === 413) {\n // file too large\n currentForms[i] = {\n ...currentForms[i],\n errorCount: currentForms[i].errorCount + 1,\n }\n\n toast.error(nonFieldErrors[0]?.message)\n }\n } catch (_) {\n // swallow\n }\n }\n\n setHasSubmitted(true)\n setLoadingText('')\n setIsUploading(false)\n\n const remainingForms = []\n const thumbnailIndexesToRemove = []\n\n currentForms.forEach(({ errorCount }, i) => {\n if (errorCount) {\n remainingForms.push(currentForms[i])\n } else {\n thumbnailIndexesToRemove.push(i)\n }\n })\n\n const successCount = Math.max(0, currentForms.length - remainingForms.length)\n const errorCount = currentForms.length - successCount\n\n if (successCount) {\n toast.success(`Successfully saved ${successCount} files`)\n\n if (typeof onSuccess === 'function') {\n onSuccess(newDocs, errorCount)\n }\n\n if (remainingForms.length && thumbnailIndexesToRemove.length) {\n removeThumbnails(thumbnailIndexesToRemove)\n }\n }\n\n if (errorCount) {\n toast.error(`Failed to save ${errorCount} files`)\n } else {\n closeModal(drawerSlug)\n }\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: 0,\n forms: remainingForms,\n totalErrorCount: remainingForms.reduce((acc, { errorCount }) => acc + errorCount, 0),\n },\n })\n },\n [\n actionURL,\n activeIndex,\n forms,\n removeThumbnails,\n onSuccess,\n collectionSlug,\n getUploadHandler,\n t,\n closeModal,\n drawerSlug,\n ],\n )\n\n const bulkUpdateForm = React.useCallback(\n async (updatedFields: Record<string, unknown>, afterStateUpdate?: () => void) => {\n for (let i = 0; i < forms.length; i++) {\n Object.entries(updatedFields).forEach(([path, value]) => {\n if (forms[i].formState[path]) {\n forms[i].formState[path].value = value\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[i].errorCount,\n formState: forms[i].formState,\n index: i,\n })\n }\n })\n\n if (typeof afterStateUpdate === 'function') {\n afterStateUpdate()\n }\n\n if (hasSubmitted) {\n const { state } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: forms[i].formState,\n operation: 'create',\n schemaPath: collectionSlug,\n })\n\n const newFormErrorCount = Object.values(state).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n )\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: newFormErrorCount,\n formState: state,\n index: i,\n })\n }\n }\n },\n [collectionSlug, docPermissions, forms, getFormState, hasSubmitted],\n )\n\n React.useEffect(() => {\n if (!collectionSlug) {\n return\n }\n if (!hasInitializedState) {\n void initializeSharedFormState()\n }\n\n if (!hasInitializedDocPermissions) {\n void initializeSharedDocPermissions()\n }\n\n if (initialFiles) {\n if (!hasInitializedState || !hasInitializedDocPermissions) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (hasInitializedState && initialFiles && !hasInitializedWithFiles.current) {\n void addFiles(initialFiles)\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n addFiles,\n initialFiles,\n initializeSharedFormState,\n initializeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n ])\n\n return (\n <Context\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n bulkUpdateForm,\n collectionSlug,\n docPermissions,\n documentSlots,\n forms,\n getFormDataRef,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n isInitializing,\n removeFile,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n thumbnailUrls: renderedThumbnails,\n totalErrorCount,\n }}\n >\n {isUploading && (\n <LoadingOverlay\n animationDuration=\"250ms\"\n loadingText={loadingText}\n overlayType=\"fullscreen\"\n show\n />\n )}\n {children}\n </Context>\n )\n}\n\nexport function useFormsManager() {\n return React.use(Context)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,6 @@ import { type EditManyProps } from './index.js';
4
4
  import './index.scss';
5
5
  export declare const EditManyDrawerContent: React.FC<{
6
6
  drawerSlug: string;
7
- selectedFields: FieldWithPathClient[];
8
- setSelectedFields: React.Dispatch<React.SetStateAction<FieldWithPathClient[]>>;
7
+ selected: FieldWithPathClient[];
9
8
  } & EditManyProps>;
10
9
  //# sourceMappingURL=DrawerContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/EditMany/DrawerContent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAc,MAAM,SAAS,CAAA;AAO9D,OAAO,KAAoD,MAAM,OAAO,CAAA;AAqBxE,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,cAAc,CAAA;AA+ErB,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAC1C;IACE,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,mBAAmB,EAAE,CAAA;IACrC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAA;CAC/E,GAAG,aAAa,CAoNlB,CAAA"}
1
+ {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/EditMany/DrawerContent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAa,MAAM,SAAS,CAAA;AAO7D,OAAO,KAAoD,MAAM,OAAO,CAAA;AAqBxE,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,cAAc,CAAA;AAmGrB,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAC1C;IACE,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAChC,GAAG,aAAa,CA2MlB,CAAA"}
@@ -5,7 +5,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { useModal } from '@faceless-ui/modal';
6
6
  import { getTranslation } from '@payloadcms/translations';
7
7
  import { useRouter, useSearchParams } from 'next/navigation.js';
8
- import { mergeListSearchAndWhere, unflatten } from 'payload/shared';
8
+ import { mergeListSearchAndWhere } from 'payload/shared';
9
9
  import * as qs from 'qs-esm';
10
10
  import React, { useCallback, useEffect, useMemo, useState } from 'react';
11
11
  import { useForm } from '../../forms/Form/context.js';
@@ -22,15 +22,27 @@ import { SelectAllStatus, useSelection } from '../../providers/Selection/index.j
22
22
  import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
23
23
  import { useTranslation } from '../../providers/Translation/index.js';
24
24
  import { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js';
25
+ import { filterOutUploadFields } from '../../utilities/filterOutUploadFields.js';
25
26
  import { parseSearchParams } from '../../utilities/parseSearchParams.js';
26
27
  import { FieldSelect } from '../FieldSelect/index.js';
27
28
  import { baseClass } from './index.js';
28
29
  import './index.scss';
30
+ const sanitizeUnselectedFields = (formState, selected) => {
31
+ const filteredData = selected.reduce((acc, field) => {
32
+ const foundState = formState?.[field.path];
33
+ if (foundState) {
34
+ acc[field.path] = formState?.[field.path]?.value;
35
+ }
36
+ return acc;
37
+ }, {});
38
+ return filteredData;
39
+ };
29
40
  const Submit = t0 => {
30
- const $ = _c(7);
41
+ const $ = _c(8);
31
42
  const {
32
43
  action,
33
- disabled
44
+ disabled,
45
+ selected
34
46
  } = t0;
35
47
  const {
36
48
  submit
@@ -39,43 +51,46 @@ const Submit = t0 => {
39
51
  t
40
52
  } = useTranslation();
41
53
  let t1;
42
- if ($[0] !== action || $[1] !== submit) {
54
+ if ($[0] !== action || $[1] !== selected || $[2] !== submit) {
43
55
  t1 = () => {
44
56
  submit({
45
57
  action,
46
58
  method: "PATCH",
59
+ overrides: formState => sanitizeUnselectedFields(formState, selected),
47
60
  skipValidation: true
48
61
  });
49
62
  };
50
63
  $[0] = action;
51
- $[1] = submit;
52
- $[2] = t1;
64
+ $[1] = selected;
65
+ $[2] = submit;
66
+ $[3] = t1;
53
67
  } else {
54
- t1 = $[2];
68
+ t1 = $[3];
55
69
  }
56
70
  const save = t1;
57
71
  let t2;
58
- if ($[3] !== disabled || $[4] !== save || $[5] !== t) {
72
+ if ($[4] !== disabled || $[5] !== save || $[6] !== t) {
59
73
  t2 = _jsx(FormSubmit, {
60
74
  className: `${baseClass}__save`,
61
75
  disabled,
62
76
  onClick: save,
63
77
  children: t("general:save")
64
78
  });
65
- $[3] = disabled;
66
- $[4] = save;
67
- $[5] = t;
68
- $[6] = t2;
79
+ $[4] = disabled;
80
+ $[5] = save;
81
+ $[6] = t;
82
+ $[7] = t2;
69
83
  } else {
70
- t2 = $[6];
84
+ t2 = $[7];
71
85
  }
72
86
  return t2;
73
87
  };
74
88
  const PublishButton = t0 => {
75
- const $ = _c(7);
89
+ const $ = _c(8);
76
90
  const {
77
91
  action,
78
- disabled
92
+ disabled,
93
+ selected
79
94
  } = t0;
80
95
  const {
81
96
  submit
@@ -84,46 +99,49 @@ const PublishButton = t0 => {
84
99
  t
85
100
  } = useTranslation();
86
101
  let t1;
87
- if ($[0] !== action || $[1] !== submit) {
102
+ if ($[0] !== action || $[1] !== selected || $[2] !== submit) {
88
103
  t1 = () => {
89
104
  submit({
90
105
  action,
91
106
  method: "PATCH",
92
- overrides: {
107
+ overrides: formState => ({
108
+ ...sanitizeUnselectedFields(formState, selected),
93
109
  _status: "published"
94
- },
110
+ }),
95
111
  skipValidation: true
96
112
  });
97
113
  };
98
114
  $[0] = action;
99
- $[1] = submit;
100
- $[2] = t1;
115
+ $[1] = selected;
116
+ $[2] = submit;
117
+ $[3] = t1;
101
118
  } else {
102
- t1 = $[2];
119
+ t1 = $[3];
103
120
  }
104
121
  const save = t1;
105
122
  let t2;
106
- if ($[3] !== disabled || $[4] !== save || $[5] !== t) {
123
+ if ($[4] !== disabled || $[5] !== save || $[6] !== t) {
107
124
  t2 = _jsx(FormSubmit, {
108
125
  className: `${baseClass}__publish`,
109
126
  disabled,
110
127
  onClick: save,
111
128
  children: t("version:publishChanges")
112
129
  });
113
- $[3] = disabled;
114
- $[4] = save;
115
- $[5] = t;
116
- $[6] = t2;
130
+ $[4] = disabled;
131
+ $[5] = save;
132
+ $[6] = t;
133
+ $[7] = t2;
117
134
  } else {
118
- t2 = $[6];
135
+ t2 = $[7];
119
136
  }
120
137
  return t2;
121
138
  };
122
139
  const SaveDraftButton = t0 => {
123
- const $ = _c(7);
140
+ const $ = _c(8);
124
141
  const {
125
142
  action,
126
- disabled
143
+ disabled,
144
+ selected
127
145
  } = t0;
128
146
  const {
129
147
  submit
@@ -132,26 +150,28 @@ const SaveDraftButton = t0 => {
132
150
  t
133
151
  } = useTranslation();
134
152
  let t1;
135
- if ($[0] !== action || $[1] !== submit) {
153
+ if ($[0] !== action || $[1] !== selected || $[2] !== submit) {
136
154
  t1 = () => {
137
155
  submit({
138
156
  action,
139
157
  method: "PATCH",
140
- overrides: {
158
+ overrides: formState => ({
159
+ ...sanitizeUnselectedFields(formState, selected),
141
160
  _status: "draft"
142
- },
161
+ }),
143
162
  skipValidation: true
144
163
  });
145
164
  };
146
165
  $[0] = action;
147
- $[1] = submit;
148
- $[2] = t1;
166
+ $[1] = selected;
167
+ $[2] = submit;
168
+ $[3] = t1;
149
169
  } else {
150
- t1 = $[2];
170
+ t1 = $[3];
151
171
  }
152
172
  const save = t1;
153
173
  let t2;
154
- if ($[3] !== disabled || $[4] !== save || $[5] !== t) {
174
+ if ($[4] !== disabled || $[5] !== save || $[6] !== t) {
155
175
  t2 = _jsx(FormSubmit, {
156
176
  buttonStyle: "secondary",
157
177
  className: `${baseClass}__draft`,
@@ -159,18 +179,19 @@ const SaveDraftButton = t0 => {
159
179
  onClick: save,
160
180
  children: t("version:saveDraft")
161
181
  });
162
- $[3] = disabled;
163
- $[4] = save;
164
- $[5] = t;
165
- $[6] = t2;
182
+ $[4] = disabled;
183
+ $[5] = save;
184
+ $[6] = t;
185
+ $[7] = t2;
166
186
  } else {
167
- t2 = $[6];
187
+ t2 = $[7];
168
188
  }
169
189
  return t2;
170
190
  };
171
191
  export const EditManyDrawerContent = props => {
172
192
  const {
173
193
  collection: {
194
+ slug,
174
195
  fields,
175
196
  labels: {
176
197
  plural,
@@ -179,8 +200,7 @@ export const EditManyDrawerContent = props => {
179
200
  } = {},
180
201
  collection,
181
202
  drawerSlug,
182
- selectedFields,
183
- setSelectedFields
203
+ selected: selectedFromProps
184
204
  } = props;
185
205
  const {
186
206
  permissions,
@@ -209,41 +229,63 @@ export const EditManyDrawerContent = props => {
209
229
  i18n,
210
230
  t
211
231
  } = useTranslation();
212
- const [isInitializing, setIsInitializing] = useState(false);
232
+ const [selected, setSelected] = useState([]);
233
+ useEffect(() => {
234
+ setSelected(selectedFromProps);
235
+ }, [selectedFromProps]);
213
236
  const router = useRouter();
237
+ const [initialState, setInitialState] = useState();
238
+ const hasInitializedState = React.useRef(false);
214
239
  const abortFormStateRef = React.useRef(null);
215
240
  const {
216
241
  clearRouteCache
217
242
  } = useRouteCache();
218
- const collectionPermissions = permissions?.collections?.[collection.slug];
243
+ const collectionPermissions = permissions?.collections?.[slug];
219
244
  const searchParams = useSearchParams();
220
- const select = useMemo(() => {
221
- return unflatten(selectedFields.reduce((acc, field) => {
222
- acc[field.path] = true;
223
- return acc;
224
- }, {}));
225
- }, [selectedFields]);
245
+ const filteredFields = filterOutUploadFields(fields);
246
+ React.useEffect(() => {
247
+ const controller = new AbortController();
248
+ if (!hasInitializedState.current) {
249
+ const getInitialState = async () => {
250
+ const {
251
+ state: result
252
+ } = await getFormState({
253
+ collectionSlug: slug,
254
+ data: {},
255
+ docPermissions: collectionPermissions,
256
+ docPreferences: null,
257
+ operation: 'update',
258
+ schemaPath: slug,
259
+ signal: controller.signal,
260
+ skipValidation: true
261
+ });
262
+ setInitialState(result);
263
+ hasInitializedState.current = true;
264
+ };
265
+ void getInitialState();
266
+ }
267
+ return () => {
268
+ abortAndIgnore(controller);
269
+ };
270
+ }, [apiRoute, hasInitializedState, serverURL, slug, getFormState, user, collectionPermissions]);
226
271
  const onChange = useCallback(async ({
227
- formState: prevFormState,
228
- submitted
272
+ formState: prevFormState
229
273
  }) => {
230
- const controller = handleAbortRef(abortFormStateRef);
274
+ const controller_0 = handleAbortRef(abortFormStateRef);
231
275
  const {
232
276
  state
233
277
  } = await getFormState({
234
- collectionSlug: collection.slug,
278
+ collectionSlug: slug,
235
279
  docPermissions: collectionPermissions,
236
280
  docPreferences: null,
237
281
  formState: prevFormState,
238
282
  operation: 'update',
239
- schemaPath: collection.slug,
240
- select,
241
- signal: controller.signal,
242
- skipValidation: !submitted
283
+ schemaPath: slug,
284
+ signal: controller_0.signal
243
285
  });
244
286
  abortFormStateRef.current = null;
245
287
  return state;
246
- }, [getFormState, collection, collectionPermissions, select]);
288
+ }, [getFormState, slug, collectionPermissions]);
247
289
  useEffect(() => {
248
290
  const abortFormState = abortFormStateRef.current;
249
291
  return () => {
@@ -268,46 +310,13 @@ export const EditManyDrawerContent = props => {
268
310
  ;
269
311
  closeModal(drawerSlug);
270
312
  };
271
- const onFieldSelect = useCallback(async ({
272
- dispatchFields,
273
- formState,
274
- selected
275
- }) => {
276
- setIsInitializing(true);
277
- if (selected === null) {
278
- setSelectedFields([]);
279
- } else {
280
- setSelectedFields(selected.map(({
281
- value
282
- }) => value));
283
- }
284
- const {
285
- state: state_0
286
- } = await getFormState({
287
- collectionSlug: collection.slug,
288
- docPermissions: collectionPermissions,
289
- docPreferences: null,
290
- formState,
291
- operation: 'update',
292
- schemaPath: collection.slug,
293
- select: unflatten(selected.reduce((acc_0, option) => {
294
- acc_0[option.value.path] = true;
295
- return acc_0;
296
- }, {})),
297
- skipValidation: true
298
- });
299
- dispatchFields({
300
- type: 'UPDATE_MANY',
301
- formState: state_0
302
- });
303
- setIsInitializing(false);
304
- }, [getFormState, collection.slug, collectionPermissions, setSelectedFields]);
305
313
  return /*#__PURE__*/_jsx(DocumentInfoProvider, {
306
- collectionSlug: collection.slug,
314
+ collectionSlug: slug,
307
315
  currentEditor: user,
308
316
  hasPublishedDoc: false,
309
317
  id: null,
310
318
  initialData: {},
319
+ initialState: initialState,
311
320
  isLocked: false,
312
321
  lastUpdateTime: 0,
313
322
  mostRecentVersionIsAutosaved: false,
@@ -335,17 +344,17 @@ export const EditManyDrawerContent = props => {
335
344
  })]
336
345
  }), /*#__PURE__*/_jsxs(Form, {
337
346
  className: `${baseClass}__form`,
338
- isInitializing: isInitializing,
347
+ initialState: initialState,
339
348
  onChange: [onChange],
340
349
  onSuccess: onSuccess,
341
350
  children: [/*#__PURE__*/_jsx(FieldSelect, {
342
- fields: fields,
343
- onChange: onFieldSelect
344
- }), selectedFields.length === 0 ? null : /*#__PURE__*/_jsx(RenderFields, {
345
- fields: selectedFields,
351
+ fields: filteredFields,
352
+ setSelected: setSelected
353
+ }), selected.length === 0 ? null : /*#__PURE__*/_jsx(RenderFields, {
354
+ fields: selected,
346
355
  parentIndexPath: "",
347
356
  parentPath: "",
348
- parentSchemaPath: collection.slug,
357
+ parentSchemaPath: slug,
349
358
  permissions: collectionPermissions?.fields,
350
359
  readOnly: false
351
360
  }), /*#__PURE__*/_jsx("div", {
@@ -358,15 +367,18 @@ export const EditManyDrawerContent = props => {
358
367
  className: `${baseClass}__document-actions`,
359
368
  children: collection?.versions?.drafts ? /*#__PURE__*/_jsxs(React.Fragment, {
360
369
  children: [/*#__PURE__*/_jsx(SaveDraftButton, {
361
- action: `${serverURL}${apiRoute}/${collection.slug}${queryString}&draft=true`,
362
- disabled: selectedFields.length === 0
370
+ action: `${serverURL}${apiRoute}/${slug}${queryString}&draft=true`,
371
+ disabled: selected.length === 0,
372
+ selected: selected
363
373
  }), /*#__PURE__*/_jsx(PublishButton, {
364
- action: `${serverURL}${apiRoute}/${collection.slug}${queryString}&draft=true`,
365
- disabled: selectedFields.length === 0
374
+ action: `${serverURL}${apiRoute}/${slug}${queryString}&draft=true`,
375
+ disabled: selected.length === 0,
376
+ selected: selected
366
377
  })]
367
378
  }) : /*#__PURE__*/_jsx(Submit, {
368
- action: `${serverURL}${apiRoute}/${collection.slug}${queryString}`,
369
- disabled: selectedFields.length === 0
379
+ action: `${serverURL}${apiRoute}/${slug}${queryString}`,
380
+ disabled: selected.length === 0,
381
+ selected: selected
370
382
  })
371
383
  })
372
384
  })