@payloadcms/ui 3.45.0-canary.5 → 3.45.0-internal.2f73d3c
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/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/index.js +1 -4
- package/dist/elements/BulkUpload/index.js.map +1 -1
- package/dist/elements/FileDetails/StaticFileDetails/index.js +1 -1
- package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +1 -1
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/WhereBuilder/index.js +2 -2
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/exports/client/index.js +20 -20
- package/dist/exports/client/index.js.map +3 -3
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +1 -0
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +23 -19
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/package.json +4 -4
- package/dist/forms/fieldSchemasToFormState/isRowCollapsed.d.ts +0 -8
- package/dist/forms/fieldSchemasToFormState/isRowCollapsed.d.ts.map +0 -1
- package/dist/forms/fieldSchemasToFormState/isRowCollapsed.js +0 -18
- package/dist/forms/fieldSchemasToFormState/isRowCollapsed.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/BulkUpload/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIzC,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/BulkUpload/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIzC,OAAO,KAAK,MAAM,OAAO,CAAA;AA8DzB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,gBAAgB,sBAY/B;AAED,KAAK,iBAAiB,GAAG;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,QAAQ,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC1C,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,WAAW,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;IAC9D,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;CAChF,CAAA;AAiBD,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAsDtF;AAED,eAAO,MAAM,aAAa,yBAA2B,CAAA;AAErD,wBAAgB,uBAAuB,WAItC"}
|
|
@@ -7,7 +7,6 @@ import { validateMimeType } from 'payload/shared';
|
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import { toast } from 'sonner';
|
|
9
9
|
import { useConfig } from '../../providers/Config/index.js';
|
|
10
|
-
import { EditDepthProvider } from '../../providers/EditDepth/index.js';
|
|
11
10
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
12
11
|
import { UploadControlsProvider } from '../../providers/UploadControls/index.js';
|
|
13
12
|
import { Drawer, useDrawerDepth } from '../Drawer/index.js';
|
|
@@ -78,9 +77,7 @@ export function BulkUploadDrawer() {
|
|
|
78
77
|
slug: drawerSlug,
|
|
79
78
|
children: _jsx(FormsManagerProvider, {
|
|
80
79
|
children: _jsx(UploadControlsProvider, {
|
|
81
|
-
children: _jsx(
|
|
82
|
-
children: _jsx(DrawerContent, {})
|
|
83
|
-
})
|
|
80
|
+
children: _jsx(DrawerContent, {})
|
|
84
81
|
})
|
|
85
82
|
})
|
|
86
83
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","validateMimeType","React","toast","useConfig","EditDepthProvider","useTranslation","UploadControlsProvider","Drawer","useDrawerDepth","AddFilesView","AddingFilesView","FormsManagerProvider","useFormsManager","drawerSlug","DrawerContent","addFiles","forms","isInitializing","closeModal","collectionSlug","useBulkUpload","getEntityConfig","t","uploadCollection","uploadConfig","upload","uploadMimeTypes","mimeTypes","onDrop","useCallback","acceptedFiles","fileTransfer","DataTransfer","candidateFile","undefined","length","type","items","add","files","error","_jsx","acceptMimeTypes","join","onCancel","BulkUploadDrawer","$","t0","gutter","Header","slug","children","Context","createContext","currentActivePath","initialFiles","maxFiles","onSuccess","setCollectionSlug","setCurrentActivePath","setInitialFiles","setMaxFiles","setOnCancel","setOnSuccess","BulkUploadProvider","collection","setCollection","useState","onSuccessFunctionMap","setOnSuccessFunctionMap","onCancelFunction","setOnCancelFunction","useBulkUploadDrawerSlug","t1","Symbol","for","t2","path","prev","t3","t4","docIDs","errorCount","Object","hasOwn","onSuccessFunction","t5","value","_jsxs","Fragment","use","depth"],"sources":["../../../src/elements/BulkUpload/index.tsx"],"sourcesContent":["'use client'\n\nimport type { JsonObject } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { validateMimeType } from 'payload/shared'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { Drawer, useDrawerDepth } from '../Drawer/index.js'\nimport { AddFilesView } from './AddFilesView/index.js'\nimport { AddingFilesView } from './AddingFilesView/index.js'\nimport { FormsManagerProvider, useFormsManager } from './FormsManager/index.js'\n\nconst drawerSlug = 'bulk-upload-drawer-slug'\n\nfunction DrawerContent() {\n const { addFiles, forms, isInitializing } = useFormsManager()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug } = useBulkUpload()\n const { getEntityConfig } = useConfig()\n const { t } = useTranslation()\n\n const uploadCollection = getEntityConfig({ collectionSlug })\n const uploadConfig = uploadCollection?.upload\n const uploadMimeTypes = uploadConfig?.mimeTypes\n\n const onDrop = React.useCallback(\n (acceptedFiles: FileList) => {\n const fileTransfer = new DataTransfer()\n for (const candidateFile of acceptedFiles) {\n if (\n uploadMimeTypes === undefined ||\n uploadMimeTypes.length === 0 ||\n validateMimeType(candidateFile.type, uploadMimeTypes)\n ) {\n fileTransfer.items.add(candidateFile)\n }\n }\n if (fileTransfer.files.length === 0) {\n toast.error(t('error:invalidFileType'))\n } else {\n void addFiles(fileTransfer.files)\n }\n },\n [addFiles, t, uploadMimeTypes],\n )\n\n if (!collectionSlug) {\n return null\n }\n\n if (!forms.length && !isInitializing) {\n return (\n <AddFilesView\n acceptMimeTypes={uploadMimeTypes?.join(', ')}\n onCancel={() => closeModal(drawerSlug)}\n onDrop={onDrop}\n />\n )\n } else {\n return <AddingFilesView />\n }\n}\n\nexport type BulkUploadProps = {\n readonly children: React.ReactNode\n}\n\nexport function BulkUploadDrawer() {\n const { drawerSlug } = useBulkUpload()\n\n return (\n <Drawer gutter={false} Header={null} slug={drawerSlug}>\n <FormsManagerProvider>\n <UploadControlsProvider>\n <EditDepthProvider>\n <DrawerContent />\n </EditDepthProvider>\n </UploadControlsProvider>\n </FormsManagerProvider>\n </Drawer>\n )\n}\n\ntype BulkUploadContext = {\n collectionSlug: string\n currentActivePath: string\n drawerSlug: string\n initialFiles: FileList\n maxFiles: number\n onCancel: () => void\n onSuccess: (newDocs: JsonObject[], errorCount: number) => void\n setCollectionSlug: (slug: string) => void\n setCurrentActivePath: (path: string) => void\n setInitialFiles: (files: FileList) => void\n setMaxFiles: (maxFiles: number) => void\n setOnCancel: (onCancel: BulkUploadContext['onCancel']) => void\n setOnSuccess: (path: string, onSuccess: BulkUploadContext['onSuccess']) => void\n}\n\nconst Context = React.createContext<BulkUploadContext>({\n collectionSlug: '',\n currentActivePath: undefined,\n drawerSlug: '',\n initialFiles: undefined,\n maxFiles: undefined,\n onCancel: () => null,\n onSuccess: () => null,\n setCollectionSlug: () => null,\n setCurrentActivePath: () => null,\n setInitialFiles: () => null,\n setMaxFiles: () => null,\n setOnCancel: () => null,\n setOnSuccess: () => null,\n})\nexport function BulkUploadProvider({ children }: { readonly children: React.ReactNode }) {\n const [collection, setCollection] = React.useState<string>()\n const [onSuccessFunctionMap, setOnSuccessFunctionMap] =\n React.useState<Record<string, BulkUploadContext['onSuccess']>>()\n const [onCancelFunction, setOnCancelFunction] = React.useState<BulkUploadContext['onCancel']>()\n const [initialFiles, setInitialFiles] = React.useState<FileList>(undefined)\n const [maxFiles, setMaxFiles] = React.useState<number>(undefined)\n const [currentActivePath, setCurrentActivePath] = React.useState<string>(undefined)\n const drawerSlug = useBulkUploadDrawerSlug()\n\n const setCollectionSlug: BulkUploadContext['setCollectionSlug'] = (slug) => {\n setCollection(slug)\n }\n\n const setOnSuccess: BulkUploadContext['setOnSuccess'] = React.useCallback((path, onSuccess) => {\n setOnSuccessFunctionMap((prev) => ({\n ...prev,\n [path]: onSuccess,\n }))\n }, [])\n\n return (\n <Context\n value={{\n collectionSlug: collection,\n currentActivePath,\n drawerSlug,\n initialFiles,\n maxFiles,\n onCancel: () => {\n if (typeof onCancelFunction === 'function') {\n onCancelFunction()\n }\n },\n onSuccess: (docIDs, errorCount) => {\n if (onSuccessFunctionMap && Object.hasOwn(onSuccessFunctionMap, currentActivePath)) {\n const onSuccessFunction = onSuccessFunctionMap[currentActivePath]\n onSuccessFunction(docIDs, errorCount)\n }\n },\n setCollectionSlug,\n setCurrentActivePath,\n setInitialFiles,\n setMaxFiles,\n setOnCancel: setOnCancelFunction,\n setOnSuccess,\n }}\n >\n <React.Fragment>\n {children}\n <BulkUploadDrawer />\n </React.Fragment>\n </Context>\n )\n}\n\nexport const useBulkUpload = () => React.use(Context)\n\nexport function useBulkUploadDrawerSlug() {\n const depth = useDrawerDepth()\n\n return `${drawerSlug}-${depth || 1}`\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","validateMimeType","React","toast","useConfig","useTranslation","UploadControlsProvider","Drawer","useDrawerDepth","AddFilesView","AddingFilesView","FormsManagerProvider","useFormsManager","drawerSlug","DrawerContent","addFiles","forms","isInitializing","closeModal","collectionSlug","useBulkUpload","getEntityConfig","t","uploadCollection","uploadConfig","upload","uploadMimeTypes","mimeTypes","onDrop","useCallback","acceptedFiles","fileTransfer","DataTransfer","candidateFile","undefined","length","type","items","add","files","error","_jsx","acceptMimeTypes","join","onCancel","BulkUploadDrawer","$","t0","gutter","Header","slug","children","Context","createContext","currentActivePath","initialFiles","maxFiles","onSuccess","setCollectionSlug","setCurrentActivePath","setInitialFiles","setMaxFiles","setOnCancel","setOnSuccess","BulkUploadProvider","collection","setCollection","useState","onSuccessFunctionMap","setOnSuccessFunctionMap","onCancelFunction","setOnCancelFunction","useBulkUploadDrawerSlug","t1","Symbol","for","t2","path","prev","t3","t4","docIDs","errorCount","Object","hasOwn","onSuccessFunction","t5","value","_jsxs","Fragment","use","depth"],"sources":["../../../src/elements/BulkUpload/index.tsx"],"sourcesContent":["'use client'\n\nimport type { JsonObject } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { validateMimeType } from 'payload/shared'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { Drawer, useDrawerDepth } from '../Drawer/index.js'\nimport { AddFilesView } from './AddFilesView/index.js'\nimport { AddingFilesView } from './AddingFilesView/index.js'\nimport { FormsManagerProvider, useFormsManager } from './FormsManager/index.js'\n\nconst drawerSlug = 'bulk-upload-drawer-slug'\n\nfunction DrawerContent() {\n const { addFiles, forms, isInitializing } = useFormsManager()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug } = useBulkUpload()\n const { getEntityConfig } = useConfig()\n const { t } = useTranslation()\n\n const uploadCollection = getEntityConfig({ collectionSlug })\n const uploadConfig = uploadCollection?.upload\n const uploadMimeTypes = uploadConfig?.mimeTypes\n\n const onDrop = React.useCallback(\n (acceptedFiles: FileList) => {\n const fileTransfer = new DataTransfer()\n for (const candidateFile of acceptedFiles) {\n if (\n uploadMimeTypes === undefined ||\n uploadMimeTypes.length === 0 ||\n validateMimeType(candidateFile.type, uploadMimeTypes)\n ) {\n fileTransfer.items.add(candidateFile)\n }\n }\n if (fileTransfer.files.length === 0) {\n toast.error(t('error:invalidFileType'))\n } else {\n void addFiles(fileTransfer.files)\n }\n },\n [addFiles, t, uploadMimeTypes],\n )\n\n if (!collectionSlug) {\n return null\n }\n\n if (!forms.length && !isInitializing) {\n return (\n <AddFilesView\n acceptMimeTypes={uploadMimeTypes?.join(', ')}\n onCancel={() => closeModal(drawerSlug)}\n onDrop={onDrop}\n />\n )\n } else {\n return <AddingFilesView />\n }\n}\n\nexport type BulkUploadProps = {\n readonly children: React.ReactNode\n}\n\nexport function BulkUploadDrawer() {\n const { drawerSlug } = useBulkUpload()\n\n return (\n <Drawer gutter={false} Header={null} slug={drawerSlug}>\n <FormsManagerProvider>\n <UploadControlsProvider>\n <DrawerContent />\n </UploadControlsProvider>\n </FormsManagerProvider>\n </Drawer>\n )\n}\n\ntype BulkUploadContext = {\n collectionSlug: string\n currentActivePath: string\n drawerSlug: string\n initialFiles: FileList\n maxFiles: number\n onCancel: () => void\n onSuccess: (newDocs: JsonObject[], errorCount: number) => void\n setCollectionSlug: (slug: string) => void\n setCurrentActivePath: (path: string) => void\n setInitialFiles: (files: FileList) => void\n setMaxFiles: (maxFiles: number) => void\n setOnCancel: (onCancel: BulkUploadContext['onCancel']) => void\n setOnSuccess: (path: string, onSuccess: BulkUploadContext['onSuccess']) => void\n}\n\nconst Context = React.createContext<BulkUploadContext>({\n collectionSlug: '',\n currentActivePath: undefined,\n drawerSlug: '',\n initialFiles: undefined,\n maxFiles: undefined,\n onCancel: () => null,\n onSuccess: () => null,\n setCollectionSlug: () => null,\n setCurrentActivePath: () => null,\n setInitialFiles: () => null,\n setMaxFiles: () => null,\n setOnCancel: () => null,\n setOnSuccess: () => null,\n})\nexport function BulkUploadProvider({ children }: { readonly children: React.ReactNode }) {\n const [collection, setCollection] = React.useState<string>()\n const [onSuccessFunctionMap, setOnSuccessFunctionMap] =\n React.useState<Record<string, BulkUploadContext['onSuccess']>>()\n const [onCancelFunction, setOnCancelFunction] = React.useState<BulkUploadContext['onCancel']>()\n const [initialFiles, setInitialFiles] = React.useState<FileList>(undefined)\n const [maxFiles, setMaxFiles] = React.useState<number>(undefined)\n const [currentActivePath, setCurrentActivePath] = React.useState<string>(undefined)\n const drawerSlug = useBulkUploadDrawerSlug()\n\n const setCollectionSlug: BulkUploadContext['setCollectionSlug'] = (slug) => {\n setCollection(slug)\n }\n\n const setOnSuccess: BulkUploadContext['setOnSuccess'] = React.useCallback((path, onSuccess) => {\n setOnSuccessFunctionMap((prev) => ({\n ...prev,\n [path]: onSuccess,\n }))\n }, [])\n\n return (\n <Context\n value={{\n collectionSlug: collection,\n currentActivePath,\n drawerSlug,\n initialFiles,\n maxFiles,\n onCancel: () => {\n if (typeof onCancelFunction === 'function') {\n onCancelFunction()\n }\n },\n onSuccess: (docIDs, errorCount) => {\n if (onSuccessFunctionMap && Object.hasOwn(onSuccessFunctionMap, currentActivePath)) {\n const onSuccessFunction = onSuccessFunctionMap[currentActivePath]\n onSuccessFunction(docIDs, errorCount)\n }\n },\n setCollectionSlug,\n setCurrentActivePath,\n setInitialFiles,\n setMaxFiles,\n setOnCancel: setOnCancelFunction,\n setOnSuccess,\n }}\n >\n <React.Fragment>\n {children}\n <BulkUploadDrawer />\n </React.Fragment>\n </Context>\n )\n}\n\nexport const useBulkUpload = () => React.use(Context)\n\nexport function useBulkUploadDrawerSlug() {\n const depth = useDrawerDepth()\n\n return `${drawerSlug}-${depth || 1}`\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -48,7 +48,7 @@ export const StaticFileDetails = props => {
|
|
|
48
48
|
mimeType: mimeType,
|
|
49
49
|
url: url,
|
|
50
50
|
width: width
|
|
51
|
-
}), (enableAdjustments ||
|
|
51
|
+
}), (enableAdjustments || customUploadActions) && /*#__PURE__*/_jsx(UploadActions, {
|
|
52
52
|
customActions: customUploadActions,
|
|
53
53
|
enableAdjustments: Boolean(enableAdjustments),
|
|
54
54
|
enablePreviewSizes: hasImageSizes && doc.filename,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","Button","Thumbnail","UploadActions","FileMeta","baseClass","StaticFileDetails","props","customUploadActions","doc","enableAdjustments","handleRemove","hasImageSizes","hideRemoveFile","imageCacheTag","uploadConfig","filename","filesize","height","mimeType","thumbnailURL","url","width","previewAllowed","displayPreview","_jsx","className","_jsxs","fileSrc","customActions","Boolean","enablePreviewSizes","buttonStyle","icon","iconStyle","onClick","round"],"sources":["../../../../src/elements/FileDetails/StaticFileDetails/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { Button } from '../../Button/index.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { UploadActions } from '../../Upload/index.js'\nimport { FileMeta } from '../FileMeta/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-details'\n\nimport type { Data, FileSizes, SanitizedCollectionConfig } from 'payload'\n\nexport type StaticFileDetailsProps = {\n customUploadActions?: React.ReactNode[]\n doc: {\n sizes?: FileSizes\n } & Data\n enableAdjustments?: boolean\n handleRemove?: () => void\n hasImageSizes?: boolean\n hideRemoveFile?: boolean\n imageCacheTag?: string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const StaticFileDetails: React.FC<StaticFileDetailsProps> = (props) => {\n const {\n customUploadActions,\n doc,\n enableAdjustments,\n handleRemove,\n hasImageSizes,\n hideRemoveFile,\n imageCacheTag,\n uploadConfig,\n } = props\n\n const { filename, filesize, height, mimeType, thumbnailURL, url, width } = doc\n\n const previewAllowed = uploadConfig.displayPreview ?? true\n\n return (\n <div className={baseClass}>\n <header>\n {previewAllowed && (\n <Thumbnail\n // size=\"small\"\n className={`${baseClass}__thumbnail`}\n doc={doc}\n fileSrc={thumbnailURL || url}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n <div className={`${baseClass}__main-detail`}>\n <FileMeta\n filename={filename as string}\n filesize={filesize as number}\n height={height as number}\n mimeType={mimeType as string}\n url={url as string}\n width={width as number}\n />\n\n {(enableAdjustments ||
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","Button","Thumbnail","UploadActions","FileMeta","baseClass","StaticFileDetails","props","customUploadActions","doc","enableAdjustments","handleRemove","hasImageSizes","hideRemoveFile","imageCacheTag","uploadConfig","filename","filesize","height","mimeType","thumbnailURL","url","width","previewAllowed","displayPreview","_jsx","className","_jsxs","fileSrc","customActions","Boolean","enablePreviewSizes","buttonStyle","icon","iconStyle","onClick","round"],"sources":["../../../../src/elements/FileDetails/StaticFileDetails/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { Button } from '../../Button/index.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { UploadActions } from '../../Upload/index.js'\nimport { FileMeta } from '../FileMeta/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-details'\n\nimport type { Data, FileSizes, SanitizedCollectionConfig } from 'payload'\n\nexport type StaticFileDetailsProps = {\n customUploadActions?: React.ReactNode[]\n doc: {\n sizes?: FileSizes\n } & Data\n enableAdjustments?: boolean\n handleRemove?: () => void\n hasImageSizes?: boolean\n hideRemoveFile?: boolean\n imageCacheTag?: string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const StaticFileDetails: React.FC<StaticFileDetailsProps> = (props) => {\n const {\n customUploadActions,\n doc,\n enableAdjustments,\n handleRemove,\n hasImageSizes,\n hideRemoveFile,\n imageCacheTag,\n uploadConfig,\n } = props\n\n const { filename, filesize, height, mimeType, thumbnailURL, url, width } = doc\n\n const previewAllowed = uploadConfig.displayPreview ?? true\n\n return (\n <div className={baseClass}>\n <header>\n {previewAllowed && (\n <Thumbnail\n // size=\"small\"\n className={`${baseClass}__thumbnail`}\n doc={doc}\n fileSrc={thumbnailURL || url}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n <div className={`${baseClass}__main-detail`}>\n <FileMeta\n filename={filename as string}\n filesize={filesize as number}\n height={height as number}\n mimeType={mimeType as string}\n url={url as string}\n width={width as number}\n />\n\n {(enableAdjustments || customUploadActions) && (\n <UploadActions\n customActions={customUploadActions}\n enableAdjustments={Boolean(enableAdjustments)}\n enablePreviewSizes={hasImageSizes && doc.filename}\n mimeType={mimeType}\n />\n )}\n </div>\n {!hideRemoveFile && handleRemove && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleRemove}\n round\n />\n )}\n </header>\n </div>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,MAAW;AAElB,SAASC,MAAM,QAAQ;AACvB,SAASC,SAAS,QAAQ;AAC1B,SAASC,aAAa,QAAQ;AAC9B,SAASC,QAAQ,QAAQ;AACzB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAiBlB,OAAO,MAAMC,iBAAA,GAAuDC,KAAA;EAClE,MAAM;IACJC,mBAAmB;IACnBC,GAAG;IACHC,iBAAiB;IACjBC,YAAY;IACZC,aAAa;IACbC,cAAc;IACdC,aAAa;IACbC;EAAY,CACb,GAAGR,KAAA;EAEJ,MAAM;IAAES,QAAQ;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,QAAQ;IAAEC,YAAY;IAAEC,GAAG;IAAEC;EAAK,CAAE,GAAGb,GAAA;EAE3E,MAAMc,cAAA,GAAiBR,YAAA,CAAaS,cAAc,IAAI;EAEtD,oBACEC,IAAA,CAAC;IAAIC,SAAA,EAAWrB,SAAA;cACd,aAAAsB,KAAA,CAAC;iBACEJ,cAAA,iBACCE,IAAA,CAACvB,SAAA;QACC;QACAwB,SAAA,EAAW,GAAGrB,SAAA,aAAsB;QACpCI,GAAA,EAAKA,GAAA;QACLmB,OAAA,EAASR,YAAA,IAAgBC,GAAA;QACzBP,aAAA,EAAeA,aAAA;QACfC,YAAA,EAAcA;uBAGlBY,KAAA,CAAC;QAAID,SAAA,EAAW,GAAGrB,SAAA,eAAwB;gCACzCoB,IAAA,CAACrB,QAAA;UACCY,QAAA,EAAUA,QAAA;UACVC,QAAA,EAAUA,QAAA;UACVC,MAAA,EAAQA,MAAA;UACRC,QAAA,EAAUA,QAAA;UACVE,GAAA,EAAKA,GAAA;UACLC,KAAA,EAAOA;YAGP,CAAAZ,iBAAA,IAAqBF,mBAAkB,kBACvCiB,IAAA,CAACtB,aAAA;UACC0B,aAAA,EAAerB,mBAAA;UACfE,iBAAA,EAAmBoB,OAAA,CAAQpB,iBAAA;UAC3BqB,kBAAA,EAAoBnB,aAAA,IAAiBH,GAAA,CAAIO,QAAQ;UACjDG,QAAA,EAAUA;;UAIf,CAACN,cAAA,IAAkBF,YAAA,iBAClBc,IAAA,CAACxB,MAAA;QACC+B,WAAA,EAAY;QACZN,SAAA,EAAW,GAAGrB,SAAA,UAAmB;QACjC4B,IAAA,EAAK;QACLC,SAAA,EAAU;QACVC,OAAA,EAASxB,YAAA;QACTyB,KAAK;;;;AAMjB","ignoreList":[]}
|
|
@@ -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,WAAW,EAAE,MAAM,SAAS,CAAA;AAIhF,OAAO,KAA6D,MAAM,OAAO,CAAA;AAiBjF,OAAO,cAAc,CAAA;AAMrB,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,sBAkDnB,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;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAYxC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CACnC,GAAG,WAAW,CAAA;AAEf,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIhF,OAAO,KAA6D,MAAM,OAAO,CAAA;AAiBjF,OAAO,cAAc,CAAA;AAMrB,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,sBAkDnB,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;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAYxC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CACnC,GAAG,WAAW,CAAA;AAEf,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2a9C,CAAA"}
|
|
@@ -284,7 +284,7 @@ export const Upload_v4 = props => {
|
|
|
284
284
|
toast.error('The provided URL is not allowed.');
|
|
285
285
|
setUploadStatus('failed');
|
|
286
286
|
}
|
|
287
|
-
}, [
|
|
287
|
+
}, [fileUrl, uploadConfig, setUploadStatus, handleFileChange, useServerSideFetch, collectionSlug, id, serverURL, api]);
|
|
288
288
|
useEffect(() => {
|
|
289
289
|
if (initialState?.file?.value instanceof File) {
|
|
290
290
|
setFileSrc(URL.createObjectURL(initialState.file.value));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","useTranslation","UploadControlsProvider","useUploadControls","useUploadEdits","Button","Drawer","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","openModal","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","_jsx","buttonStyle","margin","onClick","size","Upload","props","resetUploadEdits","updateUploadEdits","uploadEdits","Upload_v4","collectionSlug","initialState","onChange","uploadConfig","UploadControls","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","uploadControlFile","uploadControlFileName","uploadControlFileUrl","config","routes","api","serverURL","setModified","id","docPermissions","savedDocumentData","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","fileName","decodeURIComponent","split","pop","file","_clientError","error","encodeURIComponent","serverResponse","_serverError","current","canRemoveUpload","update","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","handleControlFileUrl","handleControlFile","filter","message","customUploadActions","doc","handleRemove","hideRemoveFile","hideFileInputOnCreate","click","accept","hidden","ref","title","icon","iconStyle","round","tooltip","Header","slug","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { isImage } from 'payload/shared'\nimport React, { Fragment, 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 { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider, useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport './index.scss'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\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 const { openModal } = useModal()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\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 <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__previewSizes`}\n margin={false}\n onClick={() => {\n openModal(sizePreviewSlug)\n }}\n size=\"small\"\n >\n {t('upload:previewSizes')}\n </Button>\n )}\n {enableAdjustments && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__edit`}\n margin={false}\n onClick={() => {\n openModal(editDrawerSlug)\n }}\n size=\"small\"\n >\n {t('upload:editImage')}\n </Button>\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 readonly UploadControls?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n return (\n <UploadControlsProvider>\n <Upload_v4\n {...props}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={uploadEdits}\n />\n </UploadControlsProvider>\n )\n}\n\nexport type UploadProps_v4 = {\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadEdits?: UploadEdits\n} & UploadProps\n\nexport const Upload_v4: React.FC<UploadProps_v4> = (props) => {\n const {\n collectionSlug,\n customActions,\n initialState,\n onChange,\n resetUploadEdits,\n updateUploadEdits,\n uploadConfig,\n UploadControls,\n uploadEdits,\n } = props\n\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileName,\n uploadControlFileUrl,\n } = useUploadControls()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { id, docPermissions, savedDocumentData, setUploadStatus } = 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 useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\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 setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl],\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 setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n ])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = useCallback(async () => {\n if (!fileUrl || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = uploadControlFileName || decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(`${serverURL}${api}${pasteURL}`)\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }, [\n api,\n collectionSlug,\n fileUrl,\n handleFileChange,\n id,\n serverURL,\n setUploadStatus,\n uploadConfig,\n uploadControlFileName,\n useServerSideFetch,\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 const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit])\n\n useEffect(() => {\n const handleControlFile = () => {\n if (uploadControlFile) {\n handleFileChange(uploadControlFile)\n }\n }\n\n void handleControlFile()\n }, [uploadControlFile, handleFileChange])\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 hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !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 {uploadConfig?.pasteURL !== false && (\n <Fragment>\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </Fragment>\n )}\n\n {UploadControls ? UploadControls : null}\n </div>\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 title={fileUrl}\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 setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\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 title={filename || value.name}\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={imageCacheTag}\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={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","useTranslation","UploadControlsProvider","useUploadControls","useUploadEdits","Button","Drawer","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","openModal","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","_jsx","buttonStyle","margin","onClick","size","Upload","props","resetUploadEdits","updateUploadEdits","uploadEdits","Upload_v4","collectionSlug","initialState","onChange","uploadConfig","UploadControls","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","uploadControlFile","uploadControlFileName","uploadControlFileUrl","config","routes","api","serverURL","setModified","id","docPermissions","savedDocumentData","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","fileName","decodeURIComponent","split","pop","file","_clientError","error","encodeURIComponent","serverResponse","_serverError","current","canRemoveUpload","update","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","handleControlFileUrl","handleControlFile","filter","message","customUploadActions","doc","handleRemove","hideRemoveFile","hideFileInputOnCreate","click","accept","hidden","ref","title","icon","iconStyle","round","tooltip","Header","slug","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { isImage } from 'payload/shared'\nimport React, { Fragment, 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 { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider, useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport './index.scss'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\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 const { openModal } = useModal()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\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 <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__previewSizes`}\n margin={false}\n onClick={() => {\n openModal(sizePreviewSlug)\n }}\n size=\"small\"\n >\n {t('upload:previewSizes')}\n </Button>\n )}\n {enableAdjustments && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__edit`}\n margin={false}\n onClick={() => {\n openModal(editDrawerSlug)\n }}\n size=\"small\"\n >\n {t('upload:editImage')}\n </Button>\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 readonly UploadControls?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n return (\n <UploadControlsProvider>\n <Upload_v4\n {...props}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={uploadEdits}\n />\n </UploadControlsProvider>\n )\n}\n\nexport type UploadProps_v4 = {\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadEdits?: UploadEdits\n} & UploadProps\n\nexport const Upload_v4: React.FC<UploadProps_v4> = (props) => {\n const {\n collectionSlug,\n customActions,\n initialState,\n onChange,\n resetUploadEdits,\n updateUploadEdits,\n uploadConfig,\n UploadControls,\n uploadEdits,\n } = props\n\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileName,\n uploadControlFileUrl,\n } = useUploadControls()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { id, docPermissions, savedDocumentData, setUploadStatus } = 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 useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\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 setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl],\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 setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n ])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = useCallback(async () => {\n if (!fileUrl || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = uploadControlFileName || decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(`${serverURL}${api}${pasteURL}`)\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }, [\n fileUrl,\n uploadConfig,\n setUploadStatus,\n handleFileChange,\n useServerSideFetch,\n collectionSlug,\n id,\n serverURL,\n api,\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 const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit])\n\n useEffect(() => {\n const handleControlFile = () => {\n if (uploadControlFile) {\n handleFileChange(uploadControlFile)\n }\n }\n\n void handleControlFile()\n }, [uploadControlFile, handleFileChange])\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 hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !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 {uploadConfig?.pasteURL !== false && (\n <Fragment>\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </Fragment>\n )}\n\n {UploadControls ? UploadControls : null}\n </div>\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 title={fileUrl}\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 setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\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 title={filename || value.name}\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={imageCacheTag}\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={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -173,7 +173,7 @@ export const WhereBuilder = props => {
|
|
|
173
173
|
onClick: async () => {
|
|
174
174
|
await addCondition({
|
|
175
175
|
andIndex: 0,
|
|
176
|
-
field: reducedFields
|
|
176
|
+
field: reducedFields[0],
|
|
177
177
|
orIndex: conditions.length,
|
|
178
178
|
relation: 'or'
|
|
179
179
|
});
|
|
@@ -195,7 +195,7 @@ export const WhereBuilder = props => {
|
|
|
195
195
|
if (reducedFields.length > 0) {
|
|
196
196
|
await addCondition({
|
|
197
197
|
andIndex: 0,
|
|
198
|
-
field: reducedFields.find(
|
|
198
|
+
field: reducedFields.find(field_1 => !field_1.field.admin?.disableListFilter),
|
|
199
199
|
orIndex: conditions.length,
|
|
200
200
|
relation: 'or'
|
|
201
201
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","transformWhereQuery","validateWhereQuery","React","useMemo","useListQuery","useTranslation","Button","Condition","fieldTypes","reduceFields","baseClass","WhereBuilder","props","collectionPluralLabel","fields","renderedFilters","resolvedFilterOptions","i18n","t","reducedFields","handleWhereChange","query","conditions","whereFromSearch","where","or","transformedWhere","console","warn","JSON","stringify","addCondition","useCallback","andIndex","field","orIndex","relation","newConditions","defaultOperator","type","operators","value","and","splice","String","undefined","push","updateCondition","operator","incomingOperator","valueArg","existingCondition","defaults","valueChanged","operatorChanged","Object","keys","newRowCondition","removeCondition","length","_jsxs","className","Fragment","_jsx","label","map","compoundOrKey","Array","isArray","_","condition","fieldName","filterOptions","get","RenderedFilter","buttonStyle","icon","iconPosition","iconStyle","onClick","find","admin","disableListFilter"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport type { AddCondition, RemoveCondition, UpdateCondition, WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport fieldTypes from './field-types.js'\nimport { reduceFields } from './reduceFields.js'\nimport './index.scss'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fields, renderedFilters, resolvedFilterOptions } = props\n const { i18n, t } = useTranslation()\n\n const reducedFields = useMemo(() => reduceFields({ fields, i18n }), [fields, i18n])\n\n const { handleWhereChange, query } = useListQuery()\n\n const conditions = useMemo(() => {\n const whereFromSearch = query.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n }, [query.where])\n\n const addCondition: AddCondition = React.useCallback(\n async ({ andIndex, field, orIndex, relation }) => {\n const newConditions = [...conditions]\n\n const defaultOperator = fieldTypes[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [String(field.value)]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [String(field.value)]: {\n [defaultOperator]: undefined,\n },\n },\n ],\n })\n }\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const updateCondition: UpdateCondition = React.useCallback(\n async ({ andIndex, field, operator: incomingOperator, orIndex, value: valueArg }) => {\n const existingCondition = conditions[orIndex].and[andIndex]\n\n const defaults = fieldTypes[field.field.type]\n const operator = incomingOperator || defaults.operators[0].value\n\n if (typeof existingCondition === 'object' && field.value) {\n const value = valueArg ?? existingCondition?.[operator]\n\n const valueChanged = value !== existingCondition?.[String(field.value)]?.[String(operator)]\n\n const operatorChanged =\n operator !== Object.keys(existingCondition?.[String(field.value)] || {})?.[0]\n\n if (valueChanged || operatorChanged) {\n const newRowCondition = {\n [String(field.value)]: { [operator]: value },\n }\n\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n\n await handleWhereChange({ or: newConditions })\n }\n }\n },\n [conditions, handleWhereChange],\n )\n\n const removeCondition: RemoveCondition = React.useCallback(\n async ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = conditions[orIndex].and[andIndex]\n const fieldName = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldName] || {})?.[0] as Operator) || undefined\n\n const value = condition?.[fieldName]?.[operator] || undefined\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={fieldName}\n filterOptions={resolvedFilterOptions?.get(fieldName)}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldName)}\n updateCondition={updateCondition}\n value={value}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n await addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n if (reducedFields.length > 0) {\n await addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","transformWhereQuery","validateWhereQuery","React","useMemo","useListQuery","useTranslation","Button","Condition","fieldTypes","reduceFields","baseClass","WhereBuilder","props","collectionPluralLabel","fields","renderedFilters","resolvedFilterOptions","i18n","t","reducedFields","handleWhereChange","query","conditions","whereFromSearch","where","or","transformedWhere","console","warn","JSON","stringify","addCondition","useCallback","andIndex","field","orIndex","relation","newConditions","defaultOperator","type","operators","value","and","splice","String","undefined","push","updateCondition","operator","incomingOperator","valueArg","existingCondition","defaults","valueChanged","operatorChanged","Object","keys","newRowCondition","removeCondition","length","_jsxs","className","Fragment","_jsx","label","map","compoundOrKey","Array","isArray","_","condition","fieldName","filterOptions","get","RenderedFilter","buttonStyle","icon","iconPosition","iconStyle","onClick","find","admin","disableListFilter"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport type { AddCondition, RemoveCondition, UpdateCondition, WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport fieldTypes from './field-types.js'\nimport { reduceFields } from './reduceFields.js'\nimport './index.scss'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fields, renderedFilters, resolvedFilterOptions } = props\n const { i18n, t } = useTranslation()\n\n const reducedFields = useMemo(() => reduceFields({ fields, i18n }), [fields, i18n])\n\n const { handleWhereChange, query } = useListQuery()\n\n const conditions = useMemo(() => {\n const whereFromSearch = query.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n }, [query.where])\n\n const addCondition: AddCondition = React.useCallback(\n async ({ andIndex, field, orIndex, relation }) => {\n const newConditions = [...conditions]\n\n const defaultOperator = fieldTypes[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [String(field.value)]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [String(field.value)]: {\n [defaultOperator]: undefined,\n },\n },\n ],\n })\n }\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const updateCondition: UpdateCondition = React.useCallback(\n async ({ andIndex, field, operator: incomingOperator, orIndex, value: valueArg }) => {\n const existingCondition = conditions[orIndex].and[andIndex]\n\n const defaults = fieldTypes[field.field.type]\n const operator = incomingOperator || defaults.operators[0].value\n\n if (typeof existingCondition === 'object' && field.value) {\n const value = valueArg ?? existingCondition?.[operator]\n\n const valueChanged = value !== existingCondition?.[String(field.value)]?.[String(operator)]\n\n const operatorChanged =\n operator !== Object.keys(existingCondition?.[String(field.value)] || {})?.[0]\n\n if (valueChanged || operatorChanged) {\n const newRowCondition = {\n [String(field.value)]: { [operator]: value },\n }\n\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n\n await handleWhereChange({ or: newConditions })\n }\n }\n },\n [conditions, handleWhereChange],\n )\n\n const removeCondition: RemoveCondition = React.useCallback(\n async ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = conditions[orIndex].and[andIndex]\n const fieldName = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldName] || {})?.[0] as Operator) || undefined\n\n const value = condition?.[fieldName]?.[operator] || undefined\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={fieldName}\n filterOptions={resolvedFilterOptions?.get(fieldName)}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldName)}\n updateCondition={updateCondition}\n value={value}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n await addCondition({\n andIndex: 0,\n field: reducedFields[0],\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n if (reducedFields.length > 0) {\n await addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|