@payloadcms/ui 3.57.0-canary.0 → 3.57.0-canary.1
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/EditForm/index.js +18 -4
- package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +2 -1
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/ClipboardAction/index.js +74 -173
- package/dist/elements/ClipboardAction/index.js.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.js +75 -170
- package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/elements/Collapsible/index.js +7 -15
- package/dist/elements/Collapsible/index.js.map +1 -1
- package/dist/elements/ConfirmationModal/index.js +8 -44
- package/dist/elements/ConfirmationModal/index.js.map +1 -1
- package/dist/elements/CopyLocaleData/index.js +89 -97
- package/dist/elements/CopyLocaleData/index.js.map +1 -1
- package/dist/elements/CopyToClipboard/index.js +2 -22
- package/dist/elements/CopyToClipboard/index.js.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.js +32 -47
- package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.js +47 -83
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.js +27 -55
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerHeader/index.js +2 -10
- package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/index.js +47 -99
- package/dist/elements/DocumentDrawer/index.js.map +1 -1
- package/dist/elements/Drawer/index.js +23 -57
- package/dist/elements/Drawer/index.js.map +1 -1
- package/dist/elements/DrawerActionHeader/index.js +3 -21
- package/dist/elements/DrawerActionHeader/index.js.map +1 -1
- package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +149 -225
- package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +1 -1
- package/dist/elements/FolderView/FolderFileCard/index.js +19 -27
- package/dist/elements/FolderView/FolderFileCard/index.js.map +1 -1
- package/dist/elements/FolderView/MoveDocToFolder/index.js +12 -23
- package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
- package/dist/elements/FullscreenModal/index.js +10 -20
- package/dist/elements/FullscreenModal/index.js.map +1 -1
- package/dist/elements/ListDrawer/index.js +18 -24
- package/dist/elements/ListDrawer/index.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +19 -32
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +1 -1
- package/dist/elements/ListSelection/index.js +11 -27
- package/dist/elements/ListSelection/index.js.map +1 -1
- package/dist/elements/LivePreview/Window/index.js +65 -146
- package/dist/elements/LivePreview/Window/index.js.map +1 -1
- package/dist/elements/Loading/index.js +2 -11
- package/dist/elements/Loading/index.js.map +1 -1
- package/dist/elements/LoadingOverlay/index.js +46 -102
- package/dist/elements/LoadingOverlay/index.js.map +1 -1
- package/dist/elements/Localizer/LocalizerLabel/index.js +23 -36
- package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetToggler/index.js +41 -139
- package/dist/elements/QueryPresets/QueryPresetToggler/index.js.map +1 -1
- package/dist/elements/RenderIfInViewport/index.d.ts +2 -2
- package/dist/elements/RenderIfInViewport/index.d.ts.map +1 -1
- package/dist/elements/RenderIfInViewport/index.js.map +1 -1
- package/dist/elements/SelectRow/index.js +39 -40
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/ShimmerEffect/index.js +20 -12
- package/dist/elements/ShimmerEffect/index.js.map +1 -1
- package/dist/elements/SortColumn/index.js +21 -30
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Date/index.js +9 -37
- package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +35 -37
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Select/index.js +12 -27
- package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
- package/dist/elements/Thumbnail/index.js +35 -75
- package/dist/elements/Thumbnail/index.js.map +1 -1
- package/dist/elements/ThumbnailCard/index.js +17 -26
- package/dist/elements/ThumbnailCard/index.js.map +1 -1
- package/dist/elements/Tooltip/index.js +51 -127
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Upload/index.js +2 -10
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Select/index.js +31 -44
- package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-3SOJDDUK.js → CodeEditor-B56LZ4XC.js} +2 -2
- package/dist/exports/client/{DatePicker-NMDEHPWL.js → DatePicker-F432AIH3.js} +2 -2
- package/dist/exports/client/{chunk-7RGKTZG2.js → chunk-AZDI6MW4.js} +1 -1
- package/dist/exports/client/{chunk-7RGKTZG2.js.map → chunk-AZDI6MW4.js.map} +1 -1
- package/dist/exports/client/chunk-IOKOROQ2.js +27 -0
- package/dist/exports/client/{chunk-HDOVBQ3N.js.map → chunk-IOKOROQ2.js.map} +3 -3
- package/dist/exports/client/index.d.ts +3 -2
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +24 -24
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/rsc/index.d.ts +1 -0
- package/dist/exports/rsc/index.d.ts.map +1 -1
- package/dist/exports/rsc/index.js +1 -0
- package/dist/exports/rsc/index.js.map +1 -1
- package/dist/fields/Array/ArrayRow.d.ts +2 -3
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +13 -23
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.js +273 -477
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.js +2 -19
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/FieldError/index.js +30 -29
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/FieldLabel/index.js +12 -64
- package/dist/fields/FieldLabel/index.js.map +1 -1
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.js +45 -103
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
- package/dist/fields/Relationship/select-components/SingleValue/index.js +29 -44
- package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
- package/dist/fields/Row/index.d.ts +1 -3
- package/dist/fields/Row/index.d.ts.map +1 -1
- package/dist/fields/Select/Input.js +18 -31
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Tabs/Tab/index.js +2 -11
- package/dist/fields/Tabs/Tab/index.js.map +1 -1
- package/dist/fields/Tabs/index.d.ts +2 -1
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js +185 -225
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Upload/RelationshipContent/index.js +79 -127
- package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.js +245 -237
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/RenderFields/types.d.ts +2 -10
- package/dist/forms/RenderFields/types.d.ts.map +1 -1
- package/dist/forms/RenderFields/types.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts +35 -0
- package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts.map +1 -0
- package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +83 -0
- package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +1 -0
- package/dist/forms/useField/index.d.ts +7 -0
- package/dist/forms/useField/index.d.ts.map +1 -1
- package/dist/forms/useField/index.js +76 -45
- package/dist/forms/useField/index.js.map +1 -1
- package/dist/hooks/useIntersect.js +35 -53
- package/dist/hooks/useIntersect.js.map +1 -1
- package/dist/hooks/usePayloadAPI.js +36 -44
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts +4 -1
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js +13 -0
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +4 -30
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/buildTableState.js +4 -30
- package/dist/utilities/buildTableState.js.map +1 -1
- package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
- package/dist/utilities/copyDataFromLocale.js +4 -19
- package/dist/utilities/copyDataFromLocale.js.map +1 -1
- package/dist/utilities/schedulePublishHandler.d.ts +1 -1
- package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
- package/dist/utilities/schedulePublishHandler.js +4 -18
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/dist/views/BrowseByFolder/index.js +37 -55
- package/dist/views/BrowseByFolder/index.js.map +1 -1
- package/dist/views/CollectionFolder/index.js +13 -40
- package/dist/views/CollectionFolder/index.js.map +1 -1
- package/dist/views/Edit/Auth/index.js +93 -105
- package/dist/views/Edit/Auth/index.js.map +1 -1
- package/package.json +7 -7
- package/dist/exports/client/chunk-HDOVBQ3N.js +0 -27
- /package/dist/exports/client/{CodeEditor-3SOJDDUK.js.map → CodeEditor-B56LZ4XC.js.map} +0 -0
- /package/dist/exports/client/{DatePicker-NMDEHPWL.js.map → DatePicker-F432AIH3.js.map} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import { c as _c } from "react/compiler-runtime";
|
|
3
4
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
5
|
import React, { useCallback, useEffect } from 'react';
|
|
5
6
|
import { Form, useForm } from '../../../forms/Form/index.js';
|
|
@@ -136,16 +137,29 @@ export function EditForm({
|
|
|
136
137
|
});
|
|
137
138
|
}
|
|
138
139
|
function GetFieldProxy() {
|
|
140
|
+
const $ = _c(4);
|
|
139
141
|
const {
|
|
140
142
|
getFields
|
|
141
143
|
} = useForm();
|
|
142
144
|
const {
|
|
143
145
|
getFormDataRef
|
|
144
146
|
} = useFormsManager();
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
let t0;
|
|
148
|
+
let t1;
|
|
149
|
+
if ($[0] !== getFields || $[1] !== getFormDataRef) {
|
|
150
|
+
t0 = () => {
|
|
151
|
+
getFormDataRef.current = getFields;
|
|
152
|
+
};
|
|
153
|
+
t1 = [getFields, getFormDataRef];
|
|
154
|
+
$[0] = getFields;
|
|
155
|
+
$[1] = getFormDataRef;
|
|
156
|
+
$[2] = t0;
|
|
157
|
+
$[3] = t1;
|
|
158
|
+
} else {
|
|
159
|
+
t0 = $[2];
|
|
160
|
+
t1 = $[3];
|
|
161
|
+
}
|
|
162
|
+
useEffect(t0, t1);
|
|
149
163
|
return null;
|
|
150
164
|
}
|
|
151
165
|
function ReportAllErrors() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useCallback","useEffect","Form","useForm","WatchChildErrors","useConfig","useDocumentEvents","useDocumentInfo","OperationProvider","useServerFunctions","abortAndIgnore","handleAbortRef","useDocumentDrawerContext","DocumentFields","MoveDocToFolder","Upload_v4","useFormsManager","baseClass","EditForm","resetUploadEdits","submitted","updateUploadEdits","uploadEdits","action","collectionSlug","docSlug","docPermissions","getDocPreferences","hasSavePermission","initialState","isInitializing","Upload","CustomUpload","onSave","onSaveFromContext","getFormState","config","folders","getEntityConfig","abortOnChangeRef","useRef","collectionConfig","reportUpdate","slug","schemaPath","useState","json","entitySlug","updatedAt","result","Date","toISOString","operation","onChange","formState","prevFormState","controller","docPreferences","state","newFormState","signal","skipValidation","current","abortOnChange","_jsx","_jsxs","className","disabled","undefined","method","onSuccess","BeforeFields","Fragment","customActions","buttonProps","buttonStyle","size","folderCollectionSlug","folderFieldName","fieldName","filter","Boolean","uploadConfig","upload","fields","schemaPathSegments","ReportAllErrors","GetFieldProxy","getFields","getFormDataRef","docConfig","activeIndex","setFormTotalErrorCount","errorCountRef","reportFormErrorCount","errorCount","index","path","setErrorCount"],"sources":["../../../../src/elements/BulkUpload/EditForm/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback, useEffect } from 'react'\n\nimport type { EditFormProps } from './types.js'\n\nimport { Form, useForm } from '../../../forms/Form/index.js'\nimport { type FormProps } from '../../../forms/Form/types.js'\nimport { WatchChildErrors } from '../../../forms/WatchChildErrors/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { OperationProvider } from '../../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../../utilities/abortAndIgnore.js'\nimport { useDocumentDrawerContext } from '../../DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../DocumentFields/index.js'\nimport { MoveDocToFolder } from '../../FolderView/MoveDocToFolder/index.js'\nimport { Upload_v4 } from '../../Upload/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\n\nexport function EditForm({\n resetUploadEdits,\n submitted,\n updateUploadEdits,\n uploadEdits,\n}: EditFormProps) {\n const {\n action,\n collectionSlug: docSlug,\n docPermissions,\n getDocPreferences,\n hasSavePermission,\n initialState,\n isInitializing,\n Upload: CustomUpload,\n } = useDocumentInfo()\n\n const { onSave: onSaveFromContext } = useDocumentDrawerContext()\n\n const { getFormState } = useServerFunctions()\n\n const {\n config: { folders },\n getEntityConfig,\n } = useConfig()\n\n const abortOnChangeRef = React.useRef<AbortController>(null)\n\n const collectionConfig = getEntityConfig({ collectionSlug: docSlug })\n const { reportUpdate } = useDocumentEvents()\n\n const collectionSlug = collectionConfig.slug\n\n const [schemaPath] = React.useState(collectionSlug)\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n entitySlug: collectionSlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: 'create',\n })\n }\n resetUploadEdits()\n },\n [collectionSlug, onSaveFromContext, reportUpdate, resetUploadEdits],\n )\n\n const onChange: NonNullable<FormProps['onChange']>[0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newFormState } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n operation: 'create',\n schemaPath,\n signal: controller.signal,\n skipValidation: !submitted,\n })\n\n abortOnChangeRef.current = null\n\n return newFormState\n },\n [collectionSlug, schemaPath, getDocPreferences, getFormState, docPermissions],\n )\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n return (\n <OperationProvider operation=\"create\">\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isInitializing || !hasSavePermission}\n initialState={isInitializing ? undefined : initialState}\n isInitializing={isInitializing}\n method=\"POST\"\n onChange={[onChange]}\n onSuccess={onSave}\n submitted={submitted}\n >\n <DocumentFields\n BeforeFields={\n <React.Fragment>\n {CustomUpload || (\n <Upload_v4\n collectionSlug={collectionConfig.slug}\n customActions={[\n folders && collectionConfig.folders && (\n <MoveDocToFolder\n buttonProps={{\n buttonStyle: 'pill',\n size: 'small',\n }}\n folderCollectionSlug={folders.slug}\n folderFieldName={folders.fieldName}\n key=\"move-doc-to-folder\"\n />\n ),\n ].filter(Boolean)}\n initialState={initialState}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadConfig={collectionConfig.upload}\n uploadEdits={uploadEdits}\n />\n )}\n </React.Fragment>\n }\n docPermissions={docPermissions}\n fields={collectionConfig.fields}\n schemaPathSegments={[collectionConfig.slug]}\n />\n <ReportAllErrors />\n <GetFieldProxy />\n </Form>\n </OperationProvider>\n )\n}\n\nfunction GetFieldProxy() {\n const { getFields } = useForm()\n const { getFormDataRef } = useFormsManager()\n\n useEffect(() => {\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n getFormDataRef.current = getFields\n }, [getFields, getFormDataRef])\n\n return null\n}\n\nfunction ReportAllErrors() {\n const { docConfig } = useDocumentInfo()\n const { activeIndex, setFormTotalErrorCount } = useFormsManager()\n const errorCountRef = React.useRef(0)\n\n const reportFormErrorCount = React.useCallback(\n (errorCount) => {\n if (errorCount === errorCountRef.current) {\n return\n }\n setFormTotalErrorCount({ errorCount, index: activeIndex })\n errorCountRef.current = errorCount\n },\n [activeIndex, setFormTotalErrorCount],\n )\n\n if (!docConfig) {\n return null\n }\n\n return (\n <WatchChildErrors fields={docConfig.fields} path={[]} setErrorCount={reportFormErrorCount} />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","useCallback","useEffect","Form","useForm","WatchChildErrors","useConfig","useDocumentEvents","useDocumentInfo","OperationProvider","useServerFunctions","abortAndIgnore","handleAbortRef","useDocumentDrawerContext","DocumentFields","MoveDocToFolder","Upload_v4","useFormsManager","baseClass","EditForm","resetUploadEdits","submitted","updateUploadEdits","uploadEdits","action","collectionSlug","docSlug","docPermissions","getDocPreferences","hasSavePermission","initialState","isInitializing","Upload","CustomUpload","onSave","onSaveFromContext","getFormState","config","folders","getEntityConfig","abortOnChangeRef","useRef","collectionConfig","reportUpdate","slug","schemaPath","useState","json","entitySlug","updatedAt","result","Date","toISOString","operation","onChange","formState","prevFormState","controller","docPreferences","state","newFormState","signal","skipValidation","current","abortOnChange","_jsx","_jsxs","className","disabled","undefined","method","onSuccess","BeforeFields","Fragment","customActions","buttonProps","buttonStyle","size","folderCollectionSlug","folderFieldName","fieldName","filter","Boolean","uploadConfig","upload","fields","schemaPathSegments","ReportAllErrors","GetFieldProxy","$","getFields","getFormDataRef","t0","t1","docConfig","activeIndex","setFormTotalErrorCount","errorCountRef","reportFormErrorCount","errorCount","index","path","setErrorCount"],"sources":["../../../../src/elements/BulkUpload/EditForm/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback, useEffect } from 'react'\n\nimport type { EditFormProps } from './types.js'\n\nimport { Form, useForm } from '../../../forms/Form/index.js'\nimport { type FormProps } from '../../../forms/Form/types.js'\nimport { WatchChildErrors } from '../../../forms/WatchChildErrors/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { OperationProvider } from '../../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../../utilities/abortAndIgnore.js'\nimport { useDocumentDrawerContext } from '../../DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../DocumentFields/index.js'\nimport { MoveDocToFolder } from '../../FolderView/MoveDocToFolder/index.js'\nimport { Upload_v4 } from '../../Upload/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\n\nexport function EditForm({\n resetUploadEdits,\n submitted,\n updateUploadEdits,\n uploadEdits,\n}: EditFormProps) {\n const {\n action,\n collectionSlug: docSlug,\n docPermissions,\n getDocPreferences,\n hasSavePermission,\n initialState,\n isInitializing,\n Upload: CustomUpload,\n } = useDocumentInfo()\n\n const { onSave: onSaveFromContext } = useDocumentDrawerContext()\n\n const { getFormState } = useServerFunctions()\n\n const {\n config: { folders },\n getEntityConfig,\n } = useConfig()\n\n const abortOnChangeRef = React.useRef<AbortController>(null)\n\n const collectionConfig = getEntityConfig({ collectionSlug: docSlug })\n const { reportUpdate } = useDocumentEvents()\n\n const collectionSlug = collectionConfig.slug\n\n const [schemaPath] = React.useState(collectionSlug)\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n entitySlug: collectionSlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: 'create',\n })\n }\n resetUploadEdits()\n },\n [collectionSlug, onSaveFromContext, reportUpdate, resetUploadEdits],\n )\n\n const onChange: NonNullable<FormProps['onChange']>[0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newFormState } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n operation: 'create',\n schemaPath,\n signal: controller.signal,\n skipValidation: !submitted,\n })\n\n abortOnChangeRef.current = null\n\n return newFormState\n },\n [collectionSlug, schemaPath, getDocPreferences, getFormState, docPermissions],\n )\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n return (\n <OperationProvider operation=\"create\">\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isInitializing || !hasSavePermission}\n initialState={isInitializing ? undefined : initialState}\n isInitializing={isInitializing}\n method=\"POST\"\n onChange={[onChange]}\n onSuccess={onSave}\n submitted={submitted}\n >\n <DocumentFields\n BeforeFields={\n <React.Fragment>\n {CustomUpload || (\n <Upload_v4\n collectionSlug={collectionConfig.slug}\n customActions={[\n folders && collectionConfig.folders && (\n <MoveDocToFolder\n buttonProps={{\n buttonStyle: 'pill',\n size: 'small',\n }}\n folderCollectionSlug={folders.slug}\n folderFieldName={folders.fieldName}\n key=\"move-doc-to-folder\"\n />\n ),\n ].filter(Boolean)}\n initialState={initialState}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadConfig={collectionConfig.upload}\n uploadEdits={uploadEdits}\n />\n )}\n </React.Fragment>\n }\n docPermissions={docPermissions}\n fields={collectionConfig.fields}\n schemaPathSegments={[collectionConfig.slug]}\n />\n <ReportAllErrors />\n <GetFieldProxy />\n </Form>\n </OperationProvider>\n )\n}\n\nfunction GetFieldProxy() {\n const { getFields } = useForm()\n const { getFormDataRef } = useFormsManager()\n\n useEffect(() => {\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n getFormDataRef.current = getFields\n }, [getFields, getFormDataRef])\n\n return null\n}\n\nfunction ReportAllErrors() {\n const { docConfig } = useDocumentInfo()\n const { activeIndex, setFormTotalErrorCount } = useFormsManager()\n const errorCountRef = React.useRef(0)\n\n const reportFormErrorCount = React.useCallback(\n (errorCount) => {\n if (errorCount === errorCountRef.current) {\n return\n }\n setFormTotalErrorCount({ errorCount, index: activeIndex })\n errorCountRef.current = errorCount\n },\n [activeIndex, setFormTotalErrorCount],\n )\n\n if (!docConfig) {\n return null\n }\n\n return (\n <WatchChildErrors fields={docConfig.fields} path={[]} setErrorCount={reportFormErrorCount} />\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,QAAQ;AAI9C,SAASC,IAAI,EAAEC,OAAO,QAAQ;AAE9B,SAASC,gBAAgB,QAAQ;AACjC,SAASC,SAAS,QAAQ;AAC1B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,eAAe,QAAQ;AAChC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,EAAEC,cAAc,QAAQ;AAC/C,SAASC,wBAAwB,QAAQ;AACzC,SAASC,cAAc,QAAQ;AAC/B,SAASC,eAAe,QAAQ;AAChC,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB;AACA;AACA;AAEA,OAAO,SAASC,SAAS;EACvBC,gBAAgB;EAChBC,SAAS;EACTC,iBAAiB;EACjBC;AAAW,CACG;EACd,MAAM;IACJC,MAAM;IACNC,cAAA,EAAgBC,OAAO;IACvBC,cAAc;IACdC,iBAAiB;IACjBC,iBAAiB;IACjBC,YAAY;IACZC,cAAc;IACdC,MAAA,EAAQC;EAAY,CACrB,GAAGzB,eAAA;EAEJ,MAAM;IAAE0B,MAAA,EAAQC;EAAiB,CAAE,GAAGtB,wBAAA;EAEtC,MAAM;IAAEuB;EAAY,CAAE,GAAG1B,kBAAA;EAEzB,MAAM;IACJ2B,MAAA,EAAQ;MAAEC;IAAO,CAAE;IACnBC;EAAe,CAChB,GAAGjC,SAAA;EAEJ,MAAMkC,gBAAA,GAAmBxC,KAAA,CAAMyC,MAAM,CAAkB;EAEvD,MAAMC,gBAAA,GAAmBH,eAAA,CAAgB;IAAEd,cAAA,EAAgBC;EAAQ;EACnE,MAAM;IAAEiB;EAAY,CAAE,GAAGpC,iBAAA;EAEzB,MAAMkB,cAAA,GAAiBiB,gBAAA,CAAiBE,IAAI;EAE5C,MAAM,CAACC,UAAA,CAAW,GAAG7C,KAAA,CAAM8C,QAAQ,CAACrB,cAAA;EAEpC,MAAMS,MAAA,GAASjC,WAAA,CACZ8C,IAAA;IACCJ,YAAA,CAAa;MACXK,UAAA,EAAYvB,cAAA;MACZwB,SAAA,EAAWF,IAAA,EAAMG,MAAA,EAAQD,SAAA,IAAa,IAAIE,IAAA,GAAOC,WAAW;IAC9D;IAEA,IAAI,OAAOjB,iBAAA,KAAsB,YAAY;MAC3C,KAAKA,iBAAA,CAAkB;QACrB,GAAGY,IAAI;QACPM,SAAA,EAAW;MACb;IACF;IACAjC,gBAAA;EACF,GACA,CAACK,cAAA,EAAgBU,iBAAA,EAAmBQ,YAAA,EAAcvB,gBAAA,CAAiB;EAGrE,MAAMkC,QAAA,GAAkDrD,WAAA,CACtD,OAAO;IAAEsD,SAAA,EAAWC,aAAa;IAAEnC,SAAS,EAATA;EAAS,CAAE;IAC5C,MAAMoC,UAAA,GAAa7C,cAAA,CAAe4B,gBAAA;IAElC,MAAMkB,cAAA,GAAiB,MAAM9B,iBAAA;IAE7B,MAAM;MAAE+B,KAAA,EAAOC;IAAY,CAAE,GAAG,MAAMxB,YAAA,CAAa;MACjDX,cAAA;MACAE,cAAA;MACA+B,cAAA;MACAH,SAAA,EAAWC,aAAA;MACXH,SAAA,EAAW;MACXR,UAAA;MACAgB,MAAA,EAAQJ,UAAA,CAAWI,MAAM;MACzBC,cAAA,EAAgB,CAACzC;IACnB;IAEAmB,gBAAA,CAAiBuB,OAAO,GAAG;IAE3B,OAAOH,YAAA;EACT,GACA,CAACnC,cAAA,EAAgBoB,UAAA,EAAYjB,iBAAA,EAAmBQ,YAAA,EAAcT,cAAA,CAAe;EAG/EzB,SAAA,CAAU;IACR,MAAM8D,aAAA,GAAgBxB,gBAAA,CAAiBuB,OAAO;IAE9C,OAAO;MACLpD,cAAA,CAAeqD,aAAA;IACjB;EACF,GAAG,EAAE;EAEL,oBACEC,IAAA,CAACxD,iBAAA;IAAkB4C,SAAA,EAAU;cAC3B,aAAAa,KAAA,CAAC/D,IAAA;MACCqB,MAAA,EAAQA,MAAA;MACR2C,SAAA,EAAW,GAAGjD,SAAA,QAAiB;MAC/BkD,QAAA,EAAUrC,cAAA,IAAkB,CAACF,iBAAA;MAC7BC,YAAA,EAAcC,cAAA,GAAiBsC,SAAA,GAAYvC,YAAA;MAC3CC,cAAA,EAAgBA,cAAA;MAChBuC,MAAA,EAAO;MACPhB,QAAA,EAAU,CAACA,QAAA,CAAS;MACpBiB,SAAA,EAAWrC,MAAA;MACXb,SAAA,EAAWA,SAAA;8BAEX4C,IAAA,CAACnD,cAAA;QACC0D,YAAA,eACEP,IAAA,CAACjE,KAAA,CAAMyE,QAAQ;oBACZxC,YAAA,iBACCgC,IAAA,CAACjD,SAAA;YACCS,cAAA,EAAgBiB,gBAAA,CAAiBE,IAAI;YACrC8B,aAAA,EAAe,CACbpC,OAAA,IAAWI,gBAAA,CAAiBJ,OAAO,iBACjC2B,IAAA,CAAClD,eAAA;cACC4D,WAAA,EAAa;gBACXC,WAAA,EAAa;gBACbC,IAAA,EAAM;cACR;cACAC,oBAAA,EAAsBxC,OAAA,CAAQM,IAAI;cAClCmC,eAAA,EAAiBzC,OAAA,CAAQ0C;eACrB,sBAGT,CAACC,MAAM,CAACC,OAAA;YACTpD,YAAA,EAAcA,YAAA;YACdV,gBAAA,EAAkBA,gBAAA;YAClBE,iBAAA,EAAmBA,iBAAA;YACnB6D,YAAA,EAAczC,gBAAA,CAAiB0C,MAAM;YACrC7D,WAAA,EAAaA;;;QAKrBI,cAAA,EAAgBA,cAAA;QAChB0D,MAAA,EAAQ3C,gBAAA,CAAiB2C,MAAM;QAC/BC,kBAAA,EAAoB,CAAC5C,gBAAA,CAAiBE,IAAI;uBAE5CqB,IAAA,CAACsB,eAAA,O,aACDtB,IAAA,CAACuB,aAAA;;;AAIT;AAEA,SAAAA,cAAA;EAAA,MAAAC,CAAA,GAAA1F,EAAA;EACE;IAAA2F;EAAA,IAAsBtF,OAAA;EACtB;IAAAuF;EAAA,IAA2B1E,eAAA;EAAA,IAAA2E,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAJ,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAE,cAAA;IAEjBC,EAAA,GAAAA,CAAA;MAERD,cAAA,CAAA5B,OAAA,GAAyB2B,SAAA;IAAA;IACxBG,EAAA,IAACH,SAAA,EAAWC,cAAA;IAAeF,CAAA,MAAAC,SAAA;IAAAD,CAAA,MAAAE,cAAA;IAAAF,CAAA,MAAAG,EAAA;IAAAH,CAAA,MAAAI,EAAA;EAAA;IAAAD,EAAA,GAAAH,CAAA;IAAAI,EAAA,GAAAJ,CAAA;EAAA;EAH9BvF,SAAA,CAAU0F,EAGV,EAAGC,EAA2B;EAAA;AAAA;AAKhC,SAASN,gBAAA;EACP,MAAM;IAAEO;EAAS,CAAE,GAAGtF,eAAA;EACtB,MAAM;IAAEuF,WAAW;IAAEC;EAAsB,CAAE,GAAG/E,eAAA;EAChD,MAAMgF,aAAA,GAAgBjG,KAAA,CAAMyC,MAAM,CAAC;EAEnC,MAAMyD,oBAAA,GAAuBlG,KAAA,CAAMC,WAAW,CAC3CkG,UAAA;IACC,IAAIA,UAAA,KAAeF,aAAA,CAAclC,OAAO,EAAE;MACxC;IACF;IACAiC,sBAAA,CAAuB;MAAEG,UAAA;MAAYC,KAAA,EAAOL;IAAY;IACxDE,aAAA,CAAclC,OAAO,GAAGoC,UAAA;EAC1B,GACA,CAACJ,WAAA,EAAaC,sBAAA,CAAuB;EAGvC,IAAI,CAACF,SAAA,EAAW;IACd,OAAO;EACT;EAEA,oBACE7B,IAAA,CAAC5D,gBAAA;IAAiBgF,MAAA,EAAQS,SAAA,CAAUT,MAAM;IAAEgB,IAAA,EAAM,EAAE;IAAEC,aAAA,EAAeJ;;AAEzE","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EAEb,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAezC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,cAAc,EAAE,CACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,gBAAgB,CAAC,EAAE,MAAM,IAAI,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAA;IACtD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,EAChC,UAAU,EACV,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CACxD,CAAA;AA6BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EAEb,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAezC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,cAAc,EAAE,CACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,gBAAgB,CAAC,EAAE,MAAM,IAAI,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAA;IACtD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,EAChC,UAAU,EACV,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CACxD,CAAA;AA6BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAwdnE;AAED,wBAAgB,eAAe,wBAE9B"}
|
|
@@ -253,6 +253,7 @@ export function FormsManagerProvider({
|
|
|
253
253
|
total: currentForms.length
|
|
254
254
|
}));
|
|
255
255
|
const actionURLWithParams = `${actionURL}${qs.stringify({
|
|
256
|
+
locale: code,
|
|
256
257
|
uploadEdits: form_0?.uploadEdits || undefined
|
|
257
258
|
}, {
|
|
258
259
|
addQueryPrefix: true
|
|
@@ -343,7 +344,7 @@ export function FormsManagerProvider({
|
|
|
343
344
|
if (remainingForms.length === 0) {
|
|
344
345
|
setInitialFiles(undefined);
|
|
345
346
|
}
|
|
346
|
-
}, [setInitialFiles, actionURL, collectionSlug, getUploadHandler, t, forms, activeIndex, closeModal, drawerSlug, onSuccess]);
|
|
347
|
+
}, [setInitialFiles, actionURL, collectionSlug, getUploadHandler, t, forms, activeIndex, closeModal, drawerSlug, onSuccess, code]);
|
|
347
348
|
const bulkUpdateForm = React.useCallback(async (updatedFields, afterStateUpdate) => {
|
|
348
349
|
for (let i_2 = 0; i_2 < forms.length; i_2++) {
|
|
349
350
|
Object.entries(updatedFields).forEach(([path, value]) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","qs","React","toast","fieldReducer","useConfig","useLocale","useServerFunctions","useTranslation","useUploadHandlers","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","totalErrorCount","updateUploadEdits","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","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","setInitialFiles","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","type","map","form","i","errorCount","formID","formState","uploadEdits","files","length","isLoading","key","count","overrides","currentForms","newDocs","total","actionURLWithParams","addQueryPrefix","req","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","path","error","_","remainingForms","successCount","Math","max","success","acc","updatedFields","afterStateUpdate","Object","entries","value","newFormErrorCount","values","valid","resetUploadEdits","useEffect","_jsxs","_jsx","animationDuration","overlayType","show","useFormsManager","use"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n Data,\n DocumentSlots,\n FormState,\n SanitizedDocumentPermissions,\n UploadEdits,\n} from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\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 { 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 resetUploadEdits?: () => 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 totalErrorCount?: number\n readonly updateUploadEdits: (args: UploadEdits) => void\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 totalErrorCount: 0,\n updateUploadEdits: () => {},\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\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess, setInitialFiles } = 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 = `${serverURL}${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 formID: form.formID,\n formState: currentFormsData,\n uploadEdits: form.uploadEdits,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n if (forms.length) {\n // save the state of the current form before adding new files\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: getFormDataRef.current(),\n index: activeIndex,\n })\n }\n\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, activeIndex, forms],\n )\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback((index) => {\n dispatch({ type: 'REMOVE_FORM', index })\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 formID: currentForms[activeIndex].formID,\n formState: currentFormsData,\n uploadEdits: currentForms[activeIndex].uploadEdits,\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 actionURLWithParams = `${actionURL}${qs.stringify(\n {\n uploadEdits: form?.uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n\n const req = await fetch(actionURLWithParams, {\n body: await createFormData(\n form.formState,\n overrides,\n collectionSlug,\n getUploadHandler({ collectionSlug }),\n ),\n credentials: 'include',\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 formID: currentForms[i].formID,\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\n currentForms.forEach(({ errorCount }, i) => {\n if (errorCount) {\n remainingForms.push(currentForms[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\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 if (remainingForms.length === 0) {\n setInitialFiles(undefined)\n }\n },\n [\n setInitialFiles,\n actionURL,\n collectionSlug,\n getUploadHandler,\n t,\n forms,\n activeIndex,\n closeModal,\n drawerSlug,\n onSuccess,\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 const updateUploadEdits = React.useCallback<FormsManagerContext['updateUploadEdits']>(\n (uploadEdits) => {\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: forms[activeIndex].formState,\n index: activeIndex,\n uploadEdits,\n })\n },\n [activeIndex, forms],\n )\n\n const resetUploadEdits = React.useCallback<FormsManagerContext['resetUploadEdits']>(() => {\n dispatch({\n type: 'REPLACE',\n state: {\n forms: forms.map((form) => ({\n ...form,\n uploadEdits: {},\n })),\n },\n })\n }, [forms])\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 resetUploadEdits,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n totalErrorCount,\n updateUploadEdits,\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","qs","React","toast","fieldReducer","useConfig","useLocale","useServerFunctions","useTranslation","useUploadHandlers","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","totalErrorCount","updateUploadEdits","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","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","setInitialFiles","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","type","map","form","i","errorCount","formID","formState","uploadEdits","files","length","isLoading","key","count","overrides","currentForms","newDocs","total","actionURLWithParams","addQueryPrefix","req","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","path","error","_","remainingForms","successCount","Math","max","success","acc","updatedFields","afterStateUpdate","Object","entries","value","newFormErrorCount","values","valid","resetUploadEdits","useEffect","_jsxs","_jsx","animationDuration","overlayType","show","useFormsManager","use"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n Data,\n DocumentSlots,\n FormState,\n SanitizedDocumentPermissions,\n UploadEdits,\n} from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\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 { 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 resetUploadEdits?: () => 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 totalErrorCount?: number\n readonly updateUploadEdits: (args: UploadEdits) => void\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 totalErrorCount: 0,\n updateUploadEdits: () => {},\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\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess, setInitialFiles } = 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 = `${serverURL}${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 formID: form.formID,\n formState: currentFormsData,\n uploadEdits: form.uploadEdits,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n if (forms.length) {\n // save the state of the current form before adding new files\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: getFormDataRef.current(),\n index: activeIndex,\n })\n }\n\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, activeIndex, forms],\n )\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback((index) => {\n dispatch({ type: 'REMOVE_FORM', index })\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 formID: currentForms[activeIndex].formID,\n formState: currentFormsData,\n uploadEdits: currentForms[activeIndex].uploadEdits,\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 actionURLWithParams = `${actionURL}${qs.stringify(\n {\n locale: code,\n uploadEdits: form?.uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n\n const req = await fetch(actionURLWithParams, {\n body: await createFormData(\n form.formState,\n overrides,\n collectionSlug,\n getUploadHandler({ collectionSlug }),\n ),\n credentials: 'include',\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 formID: currentForms[i].formID,\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\n currentForms.forEach(({ errorCount }, i) => {\n if (errorCount) {\n remainingForms.push(currentForms[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\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 if (remainingForms.length === 0) {\n setInitialFiles(undefined)\n }\n },\n [\n setInitialFiles,\n actionURL,\n collectionSlug,\n getUploadHandler,\n t,\n forms,\n activeIndex,\n closeModal,\n drawerSlug,\n onSuccess,\n code,\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 const updateUploadEdits = React.useCallback<FormsManagerContext['updateUploadEdits']>(\n (uploadEdits) => {\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: forms[activeIndex].formState,\n index: activeIndex,\n uploadEdits,\n })\n },\n [activeIndex, forms],\n )\n\n const resetUploadEdits = React.useCallback<FormsManagerContext['resetUploadEdits']>(() => {\n dispatch({\n type: 'REPLACE',\n state: {\n forms: forms.map((form) => ({\n ...form,\n uploadEdits: {},\n })),\n },\n })\n }, [forms])\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 resetUploadEdits,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n totalErrorCount,\n updateUploadEdits,\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,6 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { c as _c } from "react/compiler-runtime";
|
|
4
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
4
|
import { useCallback } from 'react';
|
|
6
5
|
import { toast } from 'sonner';
|
|
@@ -14,184 +13,86 @@ const baseClass = 'clipboard-action';
|
|
|
14
13
|
* Menu actions for copying and pasting fields. Currently, this is only used in Arrays and Blocks.
|
|
15
14
|
* @note This component doesn't use the Clipboard API, but localStorage. See rationale in #11513
|
|
16
15
|
*/
|
|
17
|
-
export const ClipboardAction =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if ($[0] !== t0) {
|
|
30
|
-
({
|
|
31
|
-
allowCopy,
|
|
32
|
-
allowPaste,
|
|
33
|
-
className,
|
|
34
|
-
copyClassName,
|
|
35
|
-
disabled,
|
|
36
|
-
isRow,
|
|
37
|
-
onPaste,
|
|
38
|
-
pasteClassName,
|
|
39
|
-
path,
|
|
40
|
-
...rest
|
|
41
|
-
} = t0);
|
|
42
|
-
$[0] = t0;
|
|
43
|
-
$[1] = allowCopy;
|
|
44
|
-
$[2] = allowPaste;
|
|
45
|
-
$[3] = className;
|
|
46
|
-
$[4] = copyClassName;
|
|
47
|
-
$[5] = disabled;
|
|
48
|
-
$[6] = isRow;
|
|
49
|
-
$[7] = onPaste;
|
|
50
|
-
$[8] = pasteClassName;
|
|
51
|
-
$[9] = path;
|
|
52
|
-
$[10] = rest;
|
|
53
|
-
} else {
|
|
54
|
-
allowCopy = $[1];
|
|
55
|
-
allowPaste = $[2];
|
|
56
|
-
className = $[3];
|
|
57
|
-
copyClassName = $[4];
|
|
58
|
-
disabled = $[5];
|
|
59
|
-
isRow = $[6];
|
|
60
|
-
onPaste = $[7];
|
|
61
|
-
pasteClassName = $[8];
|
|
62
|
-
path = $[9];
|
|
63
|
-
rest = $[10];
|
|
64
|
-
}
|
|
16
|
+
export const ClipboardAction = ({
|
|
17
|
+
allowCopy,
|
|
18
|
+
allowPaste,
|
|
19
|
+
className,
|
|
20
|
+
copyClassName,
|
|
21
|
+
disabled,
|
|
22
|
+
isRow,
|
|
23
|
+
onPaste,
|
|
24
|
+
pasteClassName,
|
|
25
|
+
path,
|
|
26
|
+
...rest
|
|
27
|
+
}) => {
|
|
65
28
|
const {
|
|
66
29
|
t
|
|
67
30
|
} = useTranslation();
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
let t2;
|
|
78
|
-
if ($[13] !== path || $[14] !== rest || $[15] !== t) {
|
|
79
|
-
t2 = () => {
|
|
80
|
-
const clipboardResult = clipboardCopy({
|
|
81
|
-
path,
|
|
82
|
-
t,
|
|
83
|
-
...rest
|
|
84
|
-
});
|
|
85
|
-
if (typeof clipboardResult === "string") {
|
|
86
|
-
toast.error(clipboardResult);
|
|
87
|
-
} else {
|
|
88
|
-
toast.success(t("general:copied"));
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
$[13] = path;
|
|
92
|
-
$[14] = rest;
|
|
93
|
-
$[15] = t;
|
|
94
|
-
$[16] = t2;
|
|
95
|
-
} else {
|
|
96
|
-
t2 = $[16];
|
|
97
|
-
}
|
|
98
|
-
const handleCopy = t2;
|
|
99
|
-
let t3;
|
|
100
|
-
if ($[17] !== onPaste || $[18] !== path || $[19] !== rest || $[20] !== t) {
|
|
101
|
-
t3 = () => {
|
|
102
|
-
const clipboardResult_0 = clipboardPaste(rest.type === "array" ? {
|
|
103
|
-
onPaste,
|
|
104
|
-
path,
|
|
105
|
-
schemaFields: rest.fields,
|
|
106
|
-
t
|
|
107
|
-
} : {
|
|
108
|
-
onPaste,
|
|
109
|
-
path,
|
|
110
|
-
schemaBlocks: rest.blocks,
|
|
111
|
-
t
|
|
112
|
-
});
|
|
113
|
-
if (typeof clipboardResult_0 === "string") {
|
|
114
|
-
toast.error(clipboardResult_0);
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
$[17] = onPaste;
|
|
118
|
-
$[18] = path;
|
|
119
|
-
$[19] = rest;
|
|
120
|
-
$[20] = t;
|
|
121
|
-
$[21] = t3;
|
|
122
|
-
} else {
|
|
123
|
-
t3 = $[21];
|
|
124
|
-
}
|
|
125
|
-
const handlePaste = t3;
|
|
126
|
-
if (!allowPaste && !allowCopy) {
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
let t4;
|
|
130
|
-
if ($[22] !== allowCopy || $[23] !== allowPaste || $[24] !== classes || $[25] !== copyClassName || $[26] !== disabled || $[27] !== handleCopy || $[28] !== handlePaste || $[29] !== isRow || $[30] !== pasteClassName) {
|
|
131
|
-
let t5;
|
|
132
|
-
if ($[32] !== allowCopy || $[33] !== allowPaste || $[34] !== copyClassName || $[35] !== handleCopy || $[36] !== handlePaste || $[37] !== isRow || $[38] !== pasteClassName) {
|
|
133
|
-
t5 = t6 => {
|
|
134
|
-
const {
|
|
135
|
-
close
|
|
136
|
-
} = t6;
|
|
137
|
-
return _jsxs(PopupList.ButtonGroup, {
|
|
138
|
-
children: [_jsx(PopupList.Button, {
|
|
139
|
-
className: copyClassName,
|
|
140
|
-
disabled: !allowCopy,
|
|
141
|
-
onClick: () => {
|
|
142
|
-
handleCopy();
|
|
143
|
-
close();
|
|
144
|
-
},
|
|
145
|
-
children: _jsx(ClipboardActionLabel, {
|
|
146
|
-
isRow
|
|
147
|
-
})
|
|
148
|
-
}), _jsx(PopupList.Button, {
|
|
149
|
-
className: pasteClassName,
|
|
150
|
-
disabled: !allowPaste,
|
|
151
|
-
onClick: () => {
|
|
152
|
-
handlePaste();
|
|
153
|
-
close();
|
|
154
|
-
},
|
|
155
|
-
children: _jsx(ClipboardActionLabel, {
|
|
156
|
-
isPaste: true,
|
|
157
|
-
isRow
|
|
158
|
-
})
|
|
159
|
-
})]
|
|
160
|
-
});
|
|
161
|
-
};
|
|
162
|
-
$[32] = allowCopy;
|
|
163
|
-
$[33] = allowPaste;
|
|
164
|
-
$[34] = copyClassName;
|
|
165
|
-
$[35] = handleCopy;
|
|
166
|
-
$[36] = handlePaste;
|
|
167
|
-
$[37] = isRow;
|
|
168
|
-
$[38] = pasteClassName;
|
|
169
|
-
$[39] = t5;
|
|
31
|
+
const classes = [`${baseClass}__popup`, className].filter(Boolean).join(' ');
|
|
32
|
+
const handleCopy = useCallback(() => {
|
|
33
|
+
const clipboardResult = clipboardCopy({
|
|
34
|
+
path,
|
|
35
|
+
t,
|
|
36
|
+
...rest
|
|
37
|
+
});
|
|
38
|
+
if (typeof clipboardResult === 'string') {
|
|
39
|
+
toast.error(clipboardResult);
|
|
170
40
|
} else {
|
|
171
|
-
|
|
41
|
+
toast.success(t('general:copied'));
|
|
172
42
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
43
|
+
}, [t, rest, path]);
|
|
44
|
+
const handlePaste = useCallback(() => {
|
|
45
|
+
const clipboardResult_0 = clipboardPaste(rest.type === 'array' ? {
|
|
46
|
+
onPaste,
|
|
47
|
+
path,
|
|
48
|
+
schemaFields: rest.fields,
|
|
49
|
+
t
|
|
50
|
+
} : {
|
|
51
|
+
onPaste,
|
|
52
|
+
path,
|
|
53
|
+
schemaBlocks: rest.blocks,
|
|
54
|
+
t
|
|
181
55
|
});
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
$[28] = handlePaste;
|
|
189
|
-
$[29] = isRow;
|
|
190
|
-
$[30] = pasteClassName;
|
|
191
|
-
$[31] = t4;
|
|
192
|
-
} else {
|
|
193
|
-
t4 = $[31];
|
|
56
|
+
if (typeof clipboardResult_0 === 'string') {
|
|
57
|
+
toast.error(clipboardResult_0);
|
|
58
|
+
}
|
|
59
|
+
}, [onPaste, rest, path, t]);
|
|
60
|
+
if (!allowPaste && !allowCopy) {
|
|
61
|
+
return null;
|
|
194
62
|
}
|
|
195
|
-
return
|
|
63
|
+
return /*#__PURE__*/_jsx(Popup, {
|
|
64
|
+
button: /*#__PURE__*/_jsx(MoreIcon, {}),
|
|
65
|
+
className: classes,
|
|
66
|
+
disabled: disabled,
|
|
67
|
+
horizontalAlign: "center",
|
|
68
|
+
render: ({
|
|
69
|
+
close
|
|
70
|
+
}) => /*#__PURE__*/_jsxs(PopupList.ButtonGroup, {
|
|
71
|
+
children: [/*#__PURE__*/_jsx(PopupList.Button, {
|
|
72
|
+
className: copyClassName,
|
|
73
|
+
disabled: !allowCopy,
|
|
74
|
+
onClick: () => {
|
|
75
|
+
void handleCopy();
|
|
76
|
+
close();
|
|
77
|
+
},
|
|
78
|
+
children: /*#__PURE__*/_jsx(ClipboardActionLabel, {
|
|
79
|
+
isRow: isRow
|
|
80
|
+
})
|
|
81
|
+
}), /*#__PURE__*/_jsx(PopupList.Button, {
|
|
82
|
+
className: pasteClassName,
|
|
83
|
+
disabled: !allowPaste,
|
|
84
|
+
onClick: () => {
|
|
85
|
+
void handlePaste();
|
|
86
|
+
close();
|
|
87
|
+
},
|
|
88
|
+
children: /*#__PURE__*/_jsx(ClipboardActionLabel, {
|
|
89
|
+
isPaste: true,
|
|
90
|
+
isRow: isRow
|
|
91
|
+
})
|
|
92
|
+
})]
|
|
93
|
+
}),
|
|
94
|
+
size: "large",
|
|
95
|
+
verticalAlign: "bottom"
|
|
96
|
+
});
|
|
196
97
|
};
|
|
197
98
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["useCallback","toast","MoreIcon","useTranslation","Popup","PopupList","ClipboardActionLabel","clipboardCopy","clipboardPaste","baseClass","ClipboardAction","allowCopy","allowPaste","className","copyClassName","disabled","isRow","onPaste","pasteClassName","path","rest","t","classes","filter","Boolean","join","handleCopy","clipboardResult","error","success","handlePaste","type","schemaFields","fields","schemaBlocks","blocks","_jsx","button","horizontalAlign","render","close","_jsxs","ButtonGroup","Button","onClick","isPaste","size","verticalAlign"],"sources":["../../../src/elements/ClipboardAction/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormStateWithoutComponents } from 'payload'\n\nimport { type FC, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardCopyData, OnPasteFn } from './types.js'\n\nimport { MoreIcon } from '../../icons/More/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { ClipboardActionLabel } from './ClipboardActionLabel.js'\nimport { clipboardCopy, clipboardPaste } from './clipboardUtilities.js'\n\nconst baseClass = 'clipboard-action'\n\ntype Props = {\n allowCopy?: boolean\n allowPaste?: boolean\n className?: string\n copyClassName?: string\n disabled?: boolean\n getDataToCopy: () => FormStateWithoutComponents\n isRow?: boolean\n onPaste: OnPasteFn\n pasteClassName?: string\n} & ClipboardCopyData\n\n/**\n * Menu actions for copying and pasting fields. Currently, this is only used in Arrays and Blocks.\n * @note This component doesn't use the Clipboard API, but localStorage. See rationale in #11513\n */\nexport const ClipboardAction: FC<Props> = ({\n allowCopy,\n allowPaste,\n className,\n copyClassName,\n disabled,\n isRow,\n onPaste,\n pasteClassName,\n path,\n ...rest\n}) => {\n const { t } = useTranslation()\n\n const classes = [`${baseClass}__popup`, className].filter(Boolean).join(' ')\n\n const handleCopy = useCallback(() => {\n const clipboardResult = clipboardCopy({\n path,\n t,\n ...rest,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n }, [t, rest, path])\n\n const handlePaste = useCallback(() => {\n const clipboardResult = clipboardPaste(\n rest.type === 'array'\n ? {\n onPaste,\n path,\n schemaFields: rest.fields,\n t,\n }\n : {\n onPaste,\n path,\n schemaBlocks: rest.blocks,\n t,\n },\n )\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n }, [onPaste, rest, path, t])\n\n if (!allowPaste && !allowCopy) {\n return null\n }\n\n return (\n <Popup\n button={<MoreIcon />}\n className={classes}\n disabled={disabled}\n horizontalAlign=\"center\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n <PopupList.Button\n className={copyClassName}\n disabled={!allowCopy}\n onClick={() => {\n void handleCopy()\n close()\n }}\n >\n <ClipboardActionLabel isRow={isRow} />\n </PopupList.Button>\n <PopupList.Button\n className={pasteClassName}\n disabled={!allowPaste}\n onClick={() => {\n void handlePaste()\n close()\n }}\n >\n <ClipboardActionLabel isPaste isRow={isRow} />\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n size=\"large\"\n verticalAlign=\"bottom\"\n />\n )\n}\n"],"mappings":"AAAA;;;AAIA,SAAkBA,WAAW,QAAQ;AACrC,SAASC,KAAK,QAAQ;AAItB,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,KAAK,EAAEC,SAAS,QAAQ;AACjC,SAASC,oBAAoB,QAAQ;AACrC,SAASC,aAAa,EAAEC,cAAc,QAAQ;AAE9C,MAAMC,SAAA,GAAY;AAclB;;;;AAIA,OAAO,MAAMC,eAAA,GAA6BA,CAAC;EACzCC,SAAS;EACTC,UAAU;EACVC,SAAS;EACTC,aAAa;EACbC,QAAQ;EACRC,KAAK;EACLC,OAAO;EACPC,cAAc;EACdC,IAAI;EACJ,GAAGC;AAAA,CACJ;EACC,MAAM;IAAEC;EAAC,CAAE,GAAGlB,cAAA;EAEd,MAAMmB,OAAA,GAAU,CAAC,GAAGb,SAAA,SAAkB,EAAEI,SAAA,CAAU,CAACU,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;EAExE,MAAMC,UAAA,GAAa1B,WAAA,CAAY;IAC7B,MAAM2B,eAAA,GAAkBpB,aAAA,CAAc;MACpCY,IAAA;MACAE,CAAA;MACA,GAAGD;IACL;IAEA,IAAI,OAAOO,eAAA,KAAoB,UAAU;MACvC1B,KAAA,CAAM2B,KAAK,CAACD,eAAA;IACd,OAAO;MACL1B,KAAA,CAAM4B,OAAO,CAACR,CAAA,CAAE;IAClB;EACF,GAAG,CAACA,CAAA,EAAGD,IAAA,EAAMD,IAAA,CAAK;EAElB,MAAMW,WAAA,GAAc9B,WAAA,CAAY;IAC9B,MAAM2B,iBAAA,GAAkBnB,cAAA,CACtBY,IAAA,CAAKW,IAAI,KAAK,UACV;MACEd,OAAA;MACAE,IAAA;MACAa,YAAA,EAAcZ,IAAA,CAAKa,MAAM;MACzBZ;IACF,IACA;MACEJ,OAAA;MACAE,IAAA;MACAe,YAAA,EAAcd,IAAA,CAAKe,MAAM;MACzBd;IACF;IAGN,IAAI,OAAOM,iBAAA,KAAoB,UAAU;MACvC1B,KAAA,CAAM2B,KAAK,CAACD,iBAAA;IACd;EACF,GAAG,CAACV,OAAA,EAASG,IAAA,EAAMD,IAAA,EAAME,CAAA,CAAE;EAE3B,IAAI,CAACT,UAAA,IAAc,CAACD,SAAA,EAAW;IAC7B,OAAO;EACT;EAEA,oBACEyB,IAAA,CAAChC,KAAA;IACCiC,MAAA,eAAQD,IAAA,CAAClC,QAAA;IACTW,SAAA,EAAWS,OAAA;IACXP,QAAA,EAAUA,QAAA;IACVuB,eAAA,EAAgB;IAChBC,MAAA,EAAQA,CAAC;MAAEC;IAAK,CAAE,kBAChBC,KAAA,CAACpC,SAAA,CAAUqC,WAAW;8BACpBN,IAAA,CAAC/B,SAAA,CAAUsC,MAAM;QACf9B,SAAA,EAAWC,aAAA;QACXC,QAAA,EAAU,CAACJ,SAAA;QACXiC,OAAA,EAASA,CAAA;UACP,KAAKlB,UAAA;UACLc,KAAA;QACF;kBAEA,aAAAJ,IAAA,CAAC9B,oBAAA;UAAqBU,KAAA,EAAOA;;uBAE/BoB,IAAA,CAAC/B,SAAA,CAAUsC,MAAM;QACf9B,SAAA,EAAWK,cAAA;QACXH,QAAA,EAAU,CAACH,UAAA;QACXgC,OAAA,EAASA,CAAA;UACP,KAAKd,WAAA;UACLU,KAAA;QACF;kBAEA,aAAAJ,IAAA,CAAC9B,oBAAA;UAAqBuC,OAAO;UAAC7B,KAAA,EAAOA;;;;IAI3C8B,IAAA,EAAK;IACLC,aAAA,EAAc;;AAGpB","ignoreList":[]}
|