@payloadcms/ui 3.0.1-canary.d23ede3 → 3.0.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/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +28 -24
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/exports/client/index.js +10 -10
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Select/Input.d.ts +1 -0
- package/dist/fields/Select/Input.d.ts.map +1 -1
- package/dist/fields/Select/Input.js +44 -42
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js +1 -0
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +12 -6
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/DocumentInfo/types.d.ts +2 -0
- package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/types.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +10 -6
- package/dist/views/Edit/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAe,MAAM,SAAS,CAAA;AAGhF,OAAO,KAAmD,MAAM,OAAO,CAAA;AAkBvE,OAAO,cAAc,CAAA;AAGrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,wEAKvB,iBAAiB,sBAgCnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;CAC3D,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAe,MAAM,SAAS,CAAA;AAGhF,OAAO,KAAmD,MAAM,OAAO,CAAA;AAkBvE,OAAO,cAAc,CAAA;AAGrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,wEAKvB,iBAAiB,sBAgCnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;CAC3D,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAmTxC,CAAA"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import { c as _c } from "react/compiler-runtime";
|
|
4
4
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
|
-
import { isImage
|
|
5
|
+
import { isImage } from 'payload/shared';
|
|
6
6
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
7
7
|
import { toast } from 'sonner';
|
|
8
8
|
import { FieldError } from '../../fields/FieldError/index.js';
|
|
9
9
|
import { fieldBaseClass } from '../../fields/shared/index.js';
|
|
10
|
-
import { useForm } from '../../forms/Form/index.js';
|
|
10
|
+
import { useForm, useFormProcessing } from '../../forms/Form/index.js';
|
|
11
11
|
import { useField } from '../../forms/useField/index.js';
|
|
12
12
|
import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
13
13
|
import { EditDepthProvider } from '../../providers/EditDepth/index.js';
|
|
@@ -110,8 +110,10 @@ export const Upload = props => {
|
|
|
110
110
|
uploadEdits
|
|
111
111
|
} = useUploadEdits();
|
|
112
112
|
const {
|
|
113
|
-
docPermissions
|
|
113
|
+
docPermissions,
|
|
114
|
+
savedDocumentData
|
|
114
115
|
} = useDocumentInfo();
|
|
116
|
+
const isFormSubmitting = useFormProcessing();
|
|
115
117
|
const {
|
|
116
118
|
errorMessage,
|
|
117
119
|
setValue,
|
|
@@ -121,9 +123,8 @@ export const Upload = props => {
|
|
|
121
123
|
path: 'file',
|
|
122
124
|
validate
|
|
123
125
|
});
|
|
124
|
-
const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true));
|
|
125
126
|
const [fileSrc, setFileSrc] = useState(null);
|
|
126
|
-
const [
|
|
127
|
+
const [removedFile, setRemovedFile] = useState(false);
|
|
127
128
|
const [filename, setFilename] = useState(value?.name || '');
|
|
128
129
|
const [showUrlInput, setShowUrlInput] = useState(false);
|
|
129
130
|
const [fileUrl, setFileUrl] = useState('');
|
|
@@ -159,11 +160,10 @@ export const Upload = props => {
|
|
|
159
160
|
handleFileChange(fileToUpload);
|
|
160
161
|
}, [handleFileChange]);
|
|
161
162
|
const handleFileRemoval = useCallback(() => {
|
|
162
|
-
|
|
163
|
+
setRemovedFile(true);
|
|
163
164
|
handleFileChange(null);
|
|
164
165
|
setFileSrc('');
|
|
165
166
|
setFileUrl('');
|
|
166
|
-
setDoc({});
|
|
167
167
|
resetUploadEdits();
|
|
168
168
|
setShowUrlInput(false);
|
|
169
169
|
}, [handleFileChange, resetUploadEdits]);
|
|
@@ -189,17 +189,21 @@ export const Upload = props => {
|
|
|
189
189
|
}
|
|
190
190
|
};
|
|
191
191
|
useEffect(() => {
|
|
192
|
-
setDoc(reduceFieldsToValues(initialState || {}, true));
|
|
193
192
|
if (initialState?.file?.value instanceof File) {
|
|
194
193
|
setFileSrc(URL.createObjectURL(initialState.file.value));
|
|
194
|
+
setRemovedFile(false);
|
|
195
195
|
}
|
|
196
|
-
setReplacingFile(false);
|
|
197
196
|
}, [initialState]);
|
|
198
197
|
useEffect(() => {
|
|
199
198
|
if (showUrlInput && urlInputRef.current) {
|
|
200
199
|
// urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true
|
|
201
200
|
}
|
|
202
201
|
}, [showUrlInput]);
|
|
202
|
+
useEffect(() => {
|
|
203
|
+
if (isFormSubmitting) {
|
|
204
|
+
setRemovedFile(false);
|
|
205
|
+
}
|
|
206
|
+
}, [isFormSubmitting]);
|
|
203
207
|
const canRemoveUpload = docPermissions?.update && 'delete' in docPermissions && docPermissions?.delete;
|
|
204
208
|
const hasImageSizes = uploadConfig?.imageSizes?.length > 0;
|
|
205
209
|
const hasResizeOptions = Boolean(uploadConfig?.resizeOptions);
|
|
@@ -216,16 +220,16 @@ export const Upload = props => {
|
|
|
216
220
|
children: [/*#__PURE__*/_jsx(FieldError, {
|
|
217
221
|
message: errorMessage,
|
|
218
222
|
showError: showError
|
|
219
|
-
}),
|
|
223
|
+
}), savedDocumentData && savedDocumentData.filename && !removedFile && /*#__PURE__*/_jsx(FileDetails, {
|
|
220
224
|
collectionSlug: collectionSlug,
|
|
221
225
|
customUploadActions: customActions,
|
|
222
|
-
doc:
|
|
226
|
+
doc: savedDocumentData,
|
|
223
227
|
enableAdjustments: showCrop || showFocalPoint,
|
|
224
228
|
handleRemove: canRemoveUpload ? handleFileRemoval : undefined,
|
|
225
229
|
hasImageSizes: hasImageSizes,
|
|
226
|
-
imageCacheTag:
|
|
230
|
+
imageCacheTag: savedDocumentData.updatedAt,
|
|
227
231
|
uploadConfig: uploadConfig
|
|
228
|
-
}), (!
|
|
232
|
+
}), (!savedDocumentData?.filename || removedFile) && /*#__PURE__*/_jsxs("div", {
|
|
229
233
|
className: `${baseClass}__upload`,
|
|
230
234
|
children: [!value && !showUrlInput && /*#__PURE__*/_jsx(Dropzone, {
|
|
231
235
|
onChange: handleFileSelection,
|
|
@@ -320,7 +324,7 @@ export const Upload = props => {
|
|
|
320
324
|
}), /*#__PURE__*/_jsx(UploadActions, {
|
|
321
325
|
customActions: customActions,
|
|
322
326
|
enableAdjustments: showCrop || showFocalPoint,
|
|
323
|
-
enablePreviewSizes: hasImageSizes &&
|
|
327
|
+
enablePreviewSizes: hasImageSizes && savedDocumentData?.filename && !removedFile,
|
|
324
328
|
mimeType: value.type
|
|
325
329
|
})]
|
|
326
330
|
}), /*#__PURE__*/_jsx(Button, {
|
|
@@ -333,34 +337,34 @@ export const Upload = props => {
|
|
|
333
337
|
tooltip: t('general:cancel')
|
|
334
338
|
})]
|
|
335
339
|
})]
|
|
336
|
-
}), (value ||
|
|
340
|
+
}), (value || savedDocumentData?.filename) && /*#__PURE__*/_jsx(EditDepthProvider, {
|
|
337
341
|
children: /*#__PURE__*/_jsx(Drawer, {
|
|
338
342
|
Header: null,
|
|
339
343
|
slug: editDrawerSlug,
|
|
340
344
|
children: /*#__PURE__*/_jsx(EditUpload, {
|
|
341
|
-
fileName: value?.name ||
|
|
342
|
-
fileSrc:
|
|
343
|
-
imageCacheTag:
|
|
345
|
+
fileName: value?.name || savedDocumentData?.filename,
|
|
346
|
+
fileSrc: savedDocumentData?.url || fileSrc,
|
|
347
|
+
imageCacheTag: savedDocumentData?.updatedAt,
|
|
344
348
|
initialCrop: uploadEdits?.crop ?? undefined,
|
|
345
349
|
initialFocalPoint: {
|
|
346
|
-
x: uploadEdits?.focalPoint?.x ||
|
|
347
|
-
y: uploadEdits?.focalPoint?.y ||
|
|
350
|
+
x: uploadEdits?.focalPoint?.x || savedDocumentData?.focalX || 50,
|
|
351
|
+
y: uploadEdits?.focalPoint?.y || savedDocumentData?.focalY || 50
|
|
348
352
|
},
|
|
349
353
|
onSave: onEditsSave,
|
|
350
354
|
showCrop: showCrop,
|
|
351
355
|
showFocalPoint: showFocalPoint
|
|
352
356
|
})
|
|
353
357
|
})
|
|
354
|
-
}),
|
|
358
|
+
}), savedDocumentData && hasImageSizes && /*#__PURE__*/_jsx(Drawer, {
|
|
355
359
|
className: `${baseClass}__previewDrawer`,
|
|
356
360
|
hoverTitle: true,
|
|
357
361
|
slug: sizePreviewSlug,
|
|
358
362
|
title: t('upload:sizesFor', {
|
|
359
|
-
label:
|
|
363
|
+
label: savedDocumentData.filename
|
|
360
364
|
}),
|
|
361
365
|
children: /*#__PURE__*/_jsx(PreviewSizes, {
|
|
362
|
-
doc:
|
|
363
|
-
imageCacheTag:
|
|
366
|
+
doc: savedDocumentData,
|
|
367
|
+
imageCacheTag: savedDocumentData.updatedAt,
|
|
364
368
|
uploadConfig: uploadConfig
|
|
365
369
|
})
|
|
366
370
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","isImage","reduceFieldsToValues","React","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useField","useDocumentInfo","EditDepthProvider","useTranslation","useUploadEdits","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","Fragment","_jsx","slug","Upload","props","collectionSlug","initialState","onChange","uploadConfig","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","docPermissions","errorMessage","setValue","showError","path","doc","setDoc","fileSrc","setFileSrc","replacingFile","setReplacingFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","response","fetch","data","blob","fileName","split","pop","file","error","message","current","canRemoveUpload","update","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","filter","customUploadActions","handleRemove","imageCacheTag","updatedAt","buttonStyle","onClick","click","size","accept","hidden","ref","icon","iconStyle","round","tooltip","Header","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","title","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { isImage, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n\n const fileTypeIsAdjustable = isImage(mimeType) && mimeType !== 'image/svg+xml'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {enableAdjustments && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, customActions, initialState, onChange, uploadConfig } = props\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const { docPermissions } = useDocumentInfo()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true))\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [replacingFile, setReplacingFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleFileChange = useCallback(\n (newFile: File) => {\n if (newFile instanceof File) {\n setFileSrc(URL.createObjectURL(newFile))\n }\n\n setValue(newFile)\n setShowUrlInput(false)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange(renameFile(value, updatedFileName))\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange(fileToUpload)\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setReplacingFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\n setDoc({})\n resetUploadEdits()\n setShowUrlInput(false)\n }, [handleFileChange, resetUploadEdits])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = async () => {\n if (fileUrl) {\n try {\n const response = await fetch(fileUrl)\n const data = await response.blob()\n\n // Extract the file name from the URL\n const fileName = fileUrl.split('/').pop()\n\n // Create a new File object from the Blob data\n const file = new File([data], fileName, { type: data.type })\n handleFileChange(file)\n } catch (e) {\n toast.error(e.message)\n }\n }\n }\n\n useEffect(() => {\n setDoc(reduceFieldsToValues(initialState || {}, true))\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n }\n setReplacingFile(false)\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n const canRemoveUpload =\n docPermissions?.update && 'delete' in docPermissions && docPermissions?.delete\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {doc.filename && !replacingFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={doc}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n imageCacheTag={doc.updatedAt}\n uploadConfig={uploadConfig}\n />\n )}\n {(!doc.filename || replacingFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </div>\n\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && doc.filename && !replacingFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || doc.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || doc?.filename}\n fileSrc={doc?.url || fileSrc}\n imageCacheTag={doc.updatedAt}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || doc.focalX || 50,\n y: uploadEdits?.focalPoint?.y || doc.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {doc && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: doc?.filename })}\n >\n <PreviewSizes doc={doc} imageCacheTag={doc.updatedAt} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","isImage","React","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useDocumentInfo","EditDepthProvider","useTranslation","useUploadEdits","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","Fragment","_jsx","slug","Upload","props","collectionSlug","initialState","onChange","uploadConfig","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","docPermissions","savedDocumentData","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","response","fetch","data","blob","fileName","split","pop","file","error","message","current","canRemoveUpload","update","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","filter","customUploadActions","doc","handleRemove","imageCacheTag","updatedAt","buttonStyle","onClick","click","size","accept","hidden","ref","icon","iconStyle","round","tooltip","Header","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","title","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { isImage } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n\n const fileTypeIsAdjustable = isImage(mimeType) && mimeType !== 'image/svg+xml'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {enableAdjustments && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, customActions, initialState, onChange, uploadConfig } = props\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const { docPermissions, savedDocumentData } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleFileChange = useCallback(\n (newFile: File) => {\n if (newFile instanceof File) {\n setFileSrc(URL.createObjectURL(newFile))\n }\n\n setValue(newFile)\n setShowUrlInput(false)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange(renameFile(value, updatedFileName))\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange(fileToUpload)\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setShowUrlInput(false)\n }, [handleFileChange, resetUploadEdits])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = async () => {\n if (fileUrl) {\n try {\n const response = await fetch(fileUrl)\n const data = await response.blob()\n\n // Extract the file name from the URL\n const fileName = fileUrl.split('/').pop()\n\n // Create a new File object from the Blob data\n const file = new File([data], fileName, { type: data.type })\n handleFileChange(file)\n } catch (e) {\n toast.error(e.message)\n }\n }\n }\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload =\n docPermissions?.update && 'delete' in docPermissions && docPermissions?.delete\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {savedDocumentData && savedDocumentData.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={savedDocumentData}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n imageCacheTag={savedDocumentData.updatedAt}\n uploadConfig={uploadConfig}\n />\n )}\n {(!savedDocumentData?.filename || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </div>\n\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && savedDocumentData?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || savedDocumentData?.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || savedDocumentData?.filename}\n fileSrc={savedDocumentData?.url || fileSrc}\n imageCacheTag={savedDocumentData?.updatedAt}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || savedDocumentData?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || savedDocumentData?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {savedDocumentData && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: savedDocumentData.filename })}\n >\n <PreviewSizes\n doc={savedDocumentData}\n imageCacheTag={savedDocumentData.updatedAt}\n uploadConfig={uploadConfig}\n />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|