@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.
- package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js +127 -143
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/EditMany/index.js +1 -1
- package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.js +5 -5
- package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.d.ts +1 -2
- package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +119 -107
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js +5 -6
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/FieldSelect/index.d.ts +2 -12
- package/dist/elements/FieldSelect/index.d.ts.map +1 -1
- package/dist/elements/FieldSelect/index.js +48 -31
- package/dist/elements/FieldSelect/index.js.map +1 -1
- package/dist/elements/QueryPresets/cells/WhereCell/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/cells/WhereCell/index.js +1 -7
- package/dist/elements/QueryPresets/cells/WhereCell/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/fields/WhereField/index.js +0 -3
- package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
- package/dist/elements/Thumbnail/index.js +1 -1
- package/dist/elements/Thumbnail/index.js.map +1 -1
- package/dist/exports/client/index.js +11 -11
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/Group/index.scss +6 -12
- package/dist/forms/Form/fieldReducer.js +1 -1
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/styles.css +1 -1
- 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
|
-
|
|
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,
|
|
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
|
|
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(
|
|
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] =
|
|
52
|
-
$[2] =
|
|
64
|
+
$[1] = selected;
|
|
65
|
+
$[2] = submit;
|
|
66
|
+
$[3] = t1;
|
|
53
67
|
} else {
|
|
54
|
-
t1 = $[
|
|
68
|
+
t1 = $[3];
|
|
55
69
|
}
|
|
56
70
|
const save = t1;
|
|
57
71
|
let t2;
|
|
58
|
-
if ($[
|
|
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
|
-
$[
|
|
66
|
-
$[
|
|
67
|
-
$[
|
|
68
|
-
$[
|
|
79
|
+
$[4] = disabled;
|
|
80
|
+
$[5] = save;
|
|
81
|
+
$[6] = t;
|
|
82
|
+
$[7] = t2;
|
|
69
83
|
} else {
|
|
70
|
-
t2 = $[
|
|
84
|
+
t2 = $[7];
|
|
71
85
|
}
|
|
72
86
|
return t2;
|
|
73
87
|
};
|
|
74
88
|
const PublishButton = t0 => {
|
|
75
|
-
const $ = _c(
|
|
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] =
|
|
100
|
-
$[2] =
|
|
115
|
+
$[1] = selected;
|
|
116
|
+
$[2] = submit;
|
|
117
|
+
$[3] = t1;
|
|
101
118
|
} else {
|
|
102
|
-
t1 = $[
|
|
119
|
+
t1 = $[3];
|
|
103
120
|
}
|
|
104
121
|
const save = t1;
|
|
105
122
|
let t2;
|
|
106
|
-
if ($[
|
|
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
|
-
$[
|
|
114
|
-
$[
|
|
115
|
-
$[
|
|
116
|
-
$[
|
|
130
|
+
$[4] = disabled;
|
|
131
|
+
$[5] = save;
|
|
132
|
+
$[6] = t;
|
|
133
|
+
$[7] = t2;
|
|
117
134
|
} else {
|
|
118
|
-
t2 = $[
|
|
135
|
+
t2 = $[7];
|
|
119
136
|
}
|
|
120
137
|
return t2;
|
|
121
138
|
};
|
|
122
139
|
const SaveDraftButton = t0 => {
|
|
123
|
-
const $ = _c(
|
|
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] =
|
|
148
|
-
$[2] =
|
|
166
|
+
$[1] = selected;
|
|
167
|
+
$[2] = submit;
|
|
168
|
+
$[3] = t1;
|
|
149
169
|
} else {
|
|
150
|
-
t1 = $[
|
|
170
|
+
t1 = $[3];
|
|
151
171
|
}
|
|
152
172
|
const save = t1;
|
|
153
173
|
let t2;
|
|
154
|
-
if ($[
|
|
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
|
-
$[
|
|
163
|
-
$[
|
|
164
|
-
$[
|
|
165
|
-
$[
|
|
182
|
+
$[4] = disabled;
|
|
183
|
+
$[5] = save;
|
|
184
|
+
$[6] = t;
|
|
185
|
+
$[7] = t2;
|
|
166
186
|
} else {
|
|
167
|
-
t2 = $[
|
|
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
|
-
|
|
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 [
|
|
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?.[
|
|
243
|
+
const collectionPermissions = permissions?.collections?.[slug];
|
|
219
244
|
const searchParams = useSearchParams();
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
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
|
|
274
|
+
const controller_0 = handleAbortRef(abortFormStateRef);
|
|
231
275
|
const {
|
|
232
276
|
state
|
|
233
277
|
} = await getFormState({
|
|
234
|
-
collectionSlug:
|
|
278
|
+
collectionSlug: slug,
|
|
235
279
|
docPermissions: collectionPermissions,
|
|
236
280
|
docPreferences: null,
|
|
237
281
|
formState: prevFormState,
|
|
238
282
|
operation: 'update',
|
|
239
|
-
schemaPath:
|
|
240
|
-
|
|
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,
|
|
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:
|
|
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
|
-
|
|
347
|
+
initialState: initialState,
|
|
339
348
|
onChange: [onChange],
|
|
340
349
|
onSuccess: onSuccess,
|
|
341
350
|
children: [/*#__PURE__*/_jsx(FieldSelect, {
|
|
342
|
-
fields:
|
|
343
|
-
|
|
344
|
-
}),
|
|
345
|
-
fields:
|
|
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:
|
|
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}/${
|
|
362
|
-
disabled:
|
|
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}/${
|
|
365
|
-
disabled:
|
|
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}/${
|
|
369
|
-
disabled:
|
|
379
|
+
action: `${serverURL}${apiRoute}/${slug}${queryString}`,
|
|
380
|
+
disabled: selected.length === 0,
|
|
381
|
+
selected: selected
|
|
370
382
|
})
|
|
371
383
|
})
|
|
372
384
|
})
|