@payloadcms/ui 3.0.0-beta.120 → 3.0.0-beta.121
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/ActionsBar/index.scss +4 -0
- package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.js +34 -25
- package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.scss +40 -2
- package/dist/elements/BulkUpload/FormsManager/index.d.ts +1 -0
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +35 -5
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts +1 -0
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +94 -92
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/Thumbnail/createThumbnail.d.ts +5 -0
- package/dist/elements/Thumbnail/createThumbnail.d.ts.map +1 -0
- package/dist/elements/Thumbnail/createThumbnail.js +50 -0
- package/dist/elements/Thumbnail/createThumbnail.js.map +1 -0
- package/dist/elements/Thumbnail/index.d.ts.map +1 -1
- package/dist/elements/Thumbnail/index.js.map +1 -1
- package/dist/exports/client/index.js +22 -22
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +2 -0
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/fields/Textarea/index.d.ts.map +1 -1
- package/dist/fields/Textarea/index.js +1 -0
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/providers/ListQuery/index.js +1 -1
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAgBzB,OAAO,cAAc,CAAA;AASrB,wBAAgB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAgBzB,OAAO,cAAc,CAAA;AASrB,wBAAgB,WAAW,sBAsK1B"}
|
|
@@ -25,7 +25,7 @@ const AnimateHeight = AnimateHeightImport.default || AnimateHeightImport;
|
|
|
25
25
|
const addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files';
|
|
26
26
|
const baseClass = 'file-selections';
|
|
27
27
|
export function FileSidebar() {
|
|
28
|
-
const $ = _c(
|
|
28
|
+
const $ = _c(36);
|
|
29
29
|
const {
|
|
30
30
|
activeIndex,
|
|
31
31
|
addFiles,
|
|
@@ -33,6 +33,7 @@ export function FileSidebar() {
|
|
|
33
33
|
isInitializing,
|
|
34
34
|
removeFile,
|
|
35
35
|
setActiveIndex,
|
|
36
|
+
thumbnailUrls,
|
|
36
37
|
totalErrorCount
|
|
37
38
|
} = useFormsManager();
|
|
38
39
|
const {
|
|
@@ -88,24 +89,24 @@ export function FileSidebar() {
|
|
|
88
89
|
}
|
|
89
90
|
const t4 = t3.join(" ");
|
|
90
91
|
let t5;
|
|
91
|
-
if ($[7] !== breakpoints.m || $[8] !== showFiles || $[9] !== totalErrorCount || $[10] !== i18n || $[11] !== totalFileCount || $[12] !== t || $[13] !== maxFiles || $[14] !== openModal || $[15] !== closeModal || $[16] !== handleAddFiles || $[17] !== isInitializing || $[18] !== forms || $[19] !== initialFiles || $[20] !== activeIndex || $[21] !== setActiveIndex || $[22] !==
|
|
92
|
+
if ($[7] !== breakpoints.m || $[8] !== showFiles || $[9] !== totalErrorCount || $[10] !== i18n || $[11] !== totalFileCount || $[12] !== t || $[13] !== maxFiles || $[14] !== openModal || $[15] !== closeModal || $[16] !== handleAddFiles || $[17] !== isInitializing || $[18] !== forms || $[19] !== initialFiles || $[20] !== activeIndex || $[21] !== setActiveIndex || $[22] !== thumbnailUrls || $[23] !== handleRemoveFile || $[24] !== t4) {
|
|
92
93
|
let t6;
|
|
93
|
-
if ($[
|
|
94
|
+
if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
|
|
94
95
|
t6 = () => setShowFiles(prev => !prev);
|
|
95
|
-
$[
|
|
96
|
+
$[26] = t6;
|
|
96
97
|
} else {
|
|
97
|
-
t6 = $[
|
|
98
|
+
t6 = $[26];
|
|
98
99
|
}
|
|
99
100
|
let t7;
|
|
100
|
-
if ($[
|
|
101
|
+
if ($[27] !== closeModal) {
|
|
101
102
|
t7 = () => closeModal(addMoreFilesDrawerSlug);
|
|
102
|
-
$[
|
|
103
|
-
$[
|
|
103
|
+
$[27] = closeModal;
|
|
104
|
+
$[28] = t7;
|
|
104
105
|
} else {
|
|
105
|
-
t7 = $[
|
|
106
|
+
t7 = $[28];
|
|
106
107
|
}
|
|
107
108
|
let t8;
|
|
108
|
-
if ($[
|
|
109
|
+
if ($[29] !== activeIndex || $[30] !== setActiveIndex || $[31] !== thumbnailUrls || $[32] !== i18n || $[33] !== t || $[34] !== handleRemoveFile) {
|
|
109
110
|
t8 = (t9, index_0) => {
|
|
110
111
|
const {
|
|
111
112
|
errorCount,
|
|
@@ -120,7 +121,7 @@ export function FileSidebar() {
|
|
|
120
121
|
type: "button",
|
|
121
122
|
children: [_jsx(Thumbnail, {
|
|
122
123
|
className: `${baseClass}__thumbnail`,
|
|
123
|
-
fileSrc: isImage(currentFile.type) ?
|
|
124
|
+
fileSrc: isImage(currentFile.type) ? thumbnailUrls[index_0] : undefined
|
|
124
125
|
}), _jsx("div", {
|
|
125
126
|
className: `${baseClass}__fileDetails`,
|
|
126
127
|
children: _jsx("p", {
|
|
@@ -148,14 +149,15 @@ export function FileSidebar() {
|
|
|
148
149
|
})]
|
|
149
150
|
}, index_0);
|
|
150
151
|
};
|
|
151
|
-
$[
|
|
152
|
-
$[
|
|
153
|
-
$[
|
|
154
|
-
$[
|
|
155
|
-
$[
|
|
156
|
-
$[
|
|
152
|
+
$[29] = activeIndex;
|
|
153
|
+
$[30] = setActiveIndex;
|
|
154
|
+
$[31] = thumbnailUrls;
|
|
155
|
+
$[32] = i18n;
|
|
156
|
+
$[33] = t;
|
|
157
|
+
$[34] = handleRemoveFile;
|
|
158
|
+
$[35] = t8;
|
|
157
159
|
} else {
|
|
158
|
-
t8 = $[
|
|
160
|
+
t8 = $[35];
|
|
159
161
|
}
|
|
160
162
|
t5 = _jsxs("div", {
|
|
161
163
|
className: t4,
|
|
@@ -182,13 +184,19 @@ export function FileSidebar() {
|
|
|
182
184
|
children: [typeof maxFiles === "number" && totalFileCount < maxFiles ? _jsx(Pill, {
|
|
183
185
|
onClick: () => openModal(addMoreFilesDrawerSlug),
|
|
184
186
|
children: t("upload:addFile")
|
|
185
|
-
}) : null,
|
|
187
|
+
}) : null, _jsxs(Button, {
|
|
186
188
|
buttonStyle: "transparent",
|
|
187
189
|
className: `${baseClass}__toggler`,
|
|
188
190
|
onClick: t6,
|
|
189
|
-
children: _jsx(
|
|
191
|
+
children: [_jsx("span", {
|
|
192
|
+
className: `${baseClass}__toggler__label`,
|
|
193
|
+
children: _jsxs("strong", {
|
|
194
|
+
title: `${totalFileCount} ${t(totalFileCount > 1 ? "upload:filesToUpload" : "upload:fileToUpload")}`,
|
|
195
|
+
children: [totalFileCount, " ", t(totalFileCount > 1 ? "upload:filesToUpload" : "upload:fileToUpload")]
|
|
196
|
+
})
|
|
197
|
+
}), _jsx(ChevronIcon, {
|
|
190
198
|
direction: showFiles ? "down" : "up"
|
|
191
|
-
})
|
|
199
|
+
})]
|
|
192
200
|
}), _jsx(Drawer, {
|
|
193
201
|
gutter: false,
|
|
194
202
|
Header: null,
|
|
@@ -230,11 +238,12 @@ export function FileSidebar() {
|
|
|
230
238
|
$[19] = initialFiles;
|
|
231
239
|
$[20] = activeIndex;
|
|
232
240
|
$[21] = setActiveIndex;
|
|
233
|
-
$[22] =
|
|
234
|
-
$[23] =
|
|
235
|
-
$[24] =
|
|
241
|
+
$[22] = thumbnailUrls;
|
|
242
|
+
$[23] = handleRemoveFile;
|
|
243
|
+
$[24] = t4;
|
|
244
|
+
$[25] = t5;
|
|
236
245
|
} else {
|
|
237
|
-
t5 = $[
|
|
246
|
+
t5 = $[25];
|
|
238
247
|
}
|
|
239
248
|
return t5;
|
|
240
249
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","useWindowInfo","isImage","React","AnimateHeightImport","ChevronIcon","XIcon","useTranslation","Button","Drawer","ErrorPill","Pill","ShimmerEffect","Thumbnail","Actions","AddFilesView","useFormsManager","useBulkUpload","AnimateHeight","default","addMoreFilesDrawerSlug","baseClass","FileSidebar","$","activeIndex","addFiles","forms","isInitializing","removeFile","setActiveIndex","totalErrorCount","initialFiles","maxFiles","i18n","t","closeModal","openModal","showFiles","setShowFiles","useState","breakpoints","t0","indexToRemove","handleRemoveFile","t1","filelist","handleAddFiles","getFileSize","_temp","totalFileCount","length","t2","t3","filter","Boolean","t4","join","t5","m","t6","Symbol","for","prev","t7","t8","t9","index_0","errorCount","formState","currentFile","file","value","_jsxs","className","index","children","onClick","type","_jsx","fileSrc","URL","createObjectURL","undefined","title","name","count","withMessage","buttonStyle","direction","gutter","Header","slug","onCancel","onDrop","duration","height","Array","from","map","_temp2","file_0","animationDelay","size","i","Math","floor","log","decimals","formattedSize","pow","toFixed"],"sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { isImage } from 'payload/shared'\nimport React from 'react'\nimport AnimateHeightImport from 'react-animate-height'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Drawer } from '../../Drawer/index.js'\nimport { ErrorPill } from '../../ErrorPill/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { Actions } from '../ActionsBar/index.js'\nimport { AddFilesView } from '../AddFilesView/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { useBulkUpload } from '../index.js'\nimport './index.scss'\n\nconst AnimateHeight = (AnimateHeightImport.default ||\n AnimateHeightImport) as typeof AnimateHeightImport.default\n\nconst addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files'\n\nconst baseClass = 'file-selections'\n\nexport function FileSidebar() {\n const {\n activeIndex,\n addFiles,\n forms,\n isInitializing,\n removeFile,\n setActiveIndex,\n totalErrorCount,\n } = useFormsManager()\n const { initialFiles, maxFiles } = useBulkUpload()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const [showFiles, setShowFiles] = React.useState(false)\n const { breakpoints } = useWindowInfo()\n\n const handleRemoveFile = React.useCallback(\n (indexToRemove: number) => {\n removeFile(indexToRemove)\n },\n [removeFile],\n )\n\n const handleAddFiles = React.useCallback(\n (filelist: FileList) => {\n void addFiles(filelist)\n closeModal(addMoreFilesDrawerSlug)\n },\n [addFiles, closeModal],\n )\n\n const getFileSize = React.useCallback((file: File) => {\n const size = file.size\n const i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024))\n const decimals = i > 1 ? 1 : 0\n const formattedSize =\n (size / Math.pow(1024, i)).toFixed(decimals) + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]\n return formattedSize\n }, [])\n\n const totalFileCount = isInitializing ? initialFiles.length : forms.length\n\n return (\n <div\n className={[baseClass, showFiles && `${baseClass}__showingFiles`].filter(Boolean).join(' ')}\n >\n {breakpoints.m && showFiles ? <div className={`${baseClass}__mobileBlur`} /> : null}\n <div className={`${baseClass}__header`}>\n <div className={`${baseClass}__headerTopRow`}>\n <div className={`${baseClass}__header__text`}>\n <ErrorPill count={totalErrorCount} i18n={i18n} withMessage />\n <p>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </p>\n </div>\n\n <div className={`${baseClass}__header__actions`}>\n {typeof maxFiles === 'number' && totalFileCount < maxFiles ? (\n <Pill onClick={() => openModal(addMoreFilesDrawerSlug)}>{t('upload:addFile')}</Pill>\n ) : null}\n <Button\n buttonStyle=\"transparent\"\n className={`${baseClass}__toggler`}\n onClick={() => setShowFiles((prev) => !prev)}\n >\n <ChevronIcon direction={showFiles ? 'down' : 'up'} />\n </Button>\n\n <Drawer gutter={false} Header={null} slug={addMoreFilesDrawerSlug}>\n <AddFilesView\n onCancel={() => closeModal(addMoreFilesDrawerSlug)}\n onDrop={handleAddFiles}\n />\n </Drawer>\n </div>\n </div>\n\n <div className={`${baseClass}__header__mobileDocActions`}>\n <Actions />\n </div>\n </div>\n\n <div className={`${baseClass}__animateWrapper`}>\n <AnimateHeight duration={200} height={!breakpoints.m || showFiles ? 'auto' : 0}>\n <div className={`${baseClass}__filesContainer`}>\n {isInitializing && forms.length === 0 && initialFiles.length > 0\n ? Array.from(initialFiles).map((file, index) => (\n <ShimmerEffect\n animationDelay={`calc(${index} * ${60}ms)`}\n height=\"35px\"\n key={index}\n />\n ))\n : null}\n {forms.map(({ errorCount, formState }, index) => {\n const currentFile = formState.file.value as File\n\n return (\n <div\n className={[\n `${baseClass}__fileRowContainer`,\n index === activeIndex && `${baseClass}__fileRowContainer--active`,\n errorCount && errorCount > 0 && `${baseClass}__fileRowContainer--error`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={index}\n >\n <button\n className={`${baseClass}__fileRow`}\n onClick={() => setActiveIndex(index)}\n type=\"button\"\n >\n <Thumbnail\n className={`${baseClass}__thumbnail`}\n fileSrc={\n isImage(currentFile.type) ? URL.createObjectURL(currentFile) : undefined\n }\n />\n <div className={`${baseClass}__fileDetails`}>\n <p className={`${baseClass}__fileName`} title={currentFile.name}>\n {currentFile.name}\n </p>\n </div>\n <p className={`${baseClass}__fileSize`}>{getFileSize(currentFile)}</p>\n <div className={`${baseClass}__remove ${baseClass}__remove--underlay`}>\n <XIcon />\n </div>\n\n {errorCount ? (\n <ErrorPill\n className={`${baseClass}__errorCount`}\n count={errorCount}\n i18n={i18n}\n />\n ) : null}\n </button>\n\n <button\n aria-label={t('general:remove')}\n className={`${baseClass}__remove ${baseClass}__remove--overlay`}\n onClick={() => handleRemoveFile(index)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n )\n })}\n </div>\n </AnimateHeight>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","useWindowInfo","isImage","React","AnimateHeightImport","ChevronIcon","XIcon","useTranslation","Button","Drawer","ErrorPill","Pill","ShimmerEffect","Thumbnail","Actions","AddFilesView","useFormsManager","useBulkUpload","AnimateHeight","default","addMoreFilesDrawerSlug","baseClass","FileSidebar","$","activeIndex","addFiles","forms","isInitializing","removeFile","setActiveIndex","thumbnailUrls","totalErrorCount","initialFiles","maxFiles","i18n","t","closeModal","openModal","showFiles","setShowFiles","useState","breakpoints","t0","indexToRemove","handleRemoveFile","t1","filelist","handleAddFiles","getFileSize","_temp","totalFileCount","length","t2","t3","filter","Boolean","t4","join","t5","m","t6","Symbol","for","prev","t7","t8","t9","index_0","errorCount","formState","currentFile","file","value","_jsxs","className","index","children","onClick","type","_jsx","fileSrc","undefined","title","name","count","withMessage","buttonStyle","direction","gutter","Header","slug","onCancel","onDrop","duration","height","Array","from","map","_temp2","file_0","animationDelay","size","i","Math","floor","log","decimals","formattedSize","pow","toFixed"],"sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { isImage } from 'payload/shared'\nimport React from 'react'\nimport AnimateHeightImport from 'react-animate-height'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Drawer } from '../../Drawer/index.js'\nimport { ErrorPill } from '../../ErrorPill/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { Actions } from '../ActionsBar/index.js'\nimport { AddFilesView } from '../AddFilesView/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { useBulkUpload } from '../index.js'\nimport './index.scss'\n\nconst AnimateHeight = (AnimateHeightImport.default ||\n AnimateHeightImport) as typeof AnimateHeightImport.default\n\nconst addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files'\n\nconst baseClass = 'file-selections'\n\nexport function FileSidebar() {\n const {\n activeIndex,\n addFiles,\n forms,\n isInitializing,\n removeFile,\n setActiveIndex,\n thumbnailUrls,\n totalErrorCount,\n } = useFormsManager()\n const { initialFiles, maxFiles } = useBulkUpload()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const [showFiles, setShowFiles] = React.useState(false)\n const { breakpoints } = useWindowInfo()\n\n const handleRemoveFile = React.useCallback(\n (indexToRemove: number) => {\n removeFile(indexToRemove)\n },\n [removeFile],\n )\n\n const handleAddFiles = React.useCallback(\n (filelist: FileList) => {\n void addFiles(filelist)\n closeModal(addMoreFilesDrawerSlug)\n },\n [addFiles, closeModal],\n )\n\n const getFileSize = React.useCallback((file: File) => {\n const size = file.size\n const i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024))\n const decimals = i > 1 ? 1 : 0\n const formattedSize =\n (size / Math.pow(1024, i)).toFixed(decimals) + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]\n return formattedSize\n }, [])\n\n const totalFileCount = isInitializing ? initialFiles.length : forms.length\n\n return (\n <div\n className={[baseClass, showFiles && `${baseClass}__showingFiles`].filter(Boolean).join(' ')}\n >\n {breakpoints.m && showFiles ? <div className={`${baseClass}__mobileBlur`} /> : null}\n <div className={`${baseClass}__header`}>\n <div className={`${baseClass}__headerTopRow`}>\n <div className={`${baseClass}__header__text`}>\n <ErrorPill count={totalErrorCount} i18n={i18n} withMessage />\n <p>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </p>\n </div>\n\n <div className={`${baseClass}__header__actions`}>\n {typeof maxFiles === 'number' && totalFileCount < maxFiles ? (\n <Pill onClick={() => openModal(addMoreFilesDrawerSlug)}>{t('upload:addFile')}</Pill>\n ) : null}\n <Button\n buttonStyle=\"transparent\"\n className={`${baseClass}__toggler`}\n onClick={() => setShowFiles((prev) => !prev)}\n >\n <span className={`${baseClass}__toggler__label`}>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </span>\n <ChevronIcon direction={showFiles ? 'down' : 'up'} />\n </Button>\n\n <Drawer gutter={false} Header={null} slug={addMoreFilesDrawerSlug}>\n <AddFilesView\n onCancel={() => closeModal(addMoreFilesDrawerSlug)}\n onDrop={handleAddFiles}\n />\n </Drawer>\n </div>\n </div>\n\n <div className={`${baseClass}__header__mobileDocActions`}>\n <Actions />\n </div>\n </div>\n\n <div className={`${baseClass}__animateWrapper`}>\n <AnimateHeight duration={200} height={!breakpoints.m || showFiles ? 'auto' : 0}>\n <div className={`${baseClass}__filesContainer`}>\n {isInitializing && forms.length === 0 && initialFiles.length > 0\n ? Array.from(initialFiles).map((file, index) => (\n <ShimmerEffect\n animationDelay={`calc(${index} * ${60}ms)`}\n height=\"35px\"\n key={index}\n />\n ))\n : null}\n {forms.map(({ errorCount, formState }, index) => {\n const currentFile = formState.file.value as File\n\n return (\n <div\n className={[\n `${baseClass}__fileRowContainer`,\n index === activeIndex && `${baseClass}__fileRowContainer--active`,\n errorCount && errorCount > 0 && `${baseClass}__fileRowContainer--error`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={index}\n >\n <button\n className={`${baseClass}__fileRow`}\n onClick={() => setActiveIndex(index)}\n type=\"button\"\n >\n <Thumbnail\n className={`${baseClass}__thumbnail`}\n fileSrc={isImage(currentFile.type) ? thumbnailUrls[index] : undefined}\n />\n <div className={`${baseClass}__fileDetails`}>\n <p className={`${baseClass}__fileName`} title={currentFile.name}>\n {currentFile.name}\n </p>\n </div>\n <p className={`${baseClass}__fileSize`}>{getFileSize(currentFile)}</p>\n <div className={`${baseClass}__remove ${baseClass}__remove--underlay`}>\n <XIcon />\n </div>\n\n {errorCount ? (\n <ErrorPill\n className={`${baseClass}__errorCount`}\n count={errorCount}\n i18n={i18n}\n />\n ) : null}\n </button>\n\n <button\n aria-label={t('general:remove')}\n className={`${baseClass}__remove ${baseClass}__remove--overlay`}\n onClick={() => handleRemoveFile(index)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n )\n })}\n </div>\n </AnimateHeight>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -192,6 +192,10 @@
|
|
|
192
192
|
display: none;
|
|
193
193
|
margin: 0;
|
|
194
194
|
padding-block: 0;
|
|
195
|
+
|
|
196
|
+
&__text {
|
|
197
|
+
display: none;
|
|
198
|
+
}
|
|
195
199
|
}
|
|
196
200
|
|
|
197
201
|
&__header__mobileDocActions {
|
|
@@ -245,7 +249,17 @@
|
|
|
245
249
|
|
|
246
250
|
&__headerTopRow {
|
|
247
251
|
border-top: 1px solid var(--theme-border-color);
|
|
248
|
-
padding-block: calc(var(--base) * 0.8);
|
|
252
|
+
padding-block: 0 calc(var(--base) * 0.8) 0;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
&__header__text {
|
|
256
|
+
display: none;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
&__header__actions {
|
|
260
|
+
flex-grow: 2;
|
|
261
|
+
display: flex;
|
|
262
|
+
justify-content: flex-end;
|
|
249
263
|
}
|
|
250
264
|
|
|
251
265
|
&__header__mobileDocActions {
|
|
@@ -268,7 +282,31 @@
|
|
|
268
282
|
|
|
269
283
|
&__toggler {
|
|
270
284
|
padding-right: 0;
|
|
271
|
-
|
|
285
|
+
padding-left: 0;
|
|
286
|
+
padding-top: calc(var(--base) * 0.8);
|
|
287
|
+
padding-bottom: calc(var(--base) * 0.8);
|
|
288
|
+
display: flex;
|
|
289
|
+
justify-content: flex-end;
|
|
290
|
+
flex-grow: 1;
|
|
291
|
+
|
|
292
|
+
.btn__label {
|
|
293
|
+
width: 100%;
|
|
294
|
+
display: flex;
|
|
295
|
+
align-items: center;
|
|
296
|
+
justify-content: space-between;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
&__text {
|
|
300
|
+
display: flex;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
svg {
|
|
304
|
+
max-width: 1.5rem;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.btn__content {
|
|
308
|
+
width: 100%;
|
|
309
|
+
}
|
|
272
310
|
}
|
|
273
311
|
|
|
274
312
|
.btn {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAa,MAAM,SAAS,CAAA;AAInE,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAa,MAAM,SAAS,CAAA;AAInE,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAczC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAA;IAC7C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,EAChC,UAAU,EACV,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AA2BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AACD,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBA4VnE;AAED,wBAAgB,eAAe,wBAE9B"}
|
|
@@ -12,6 +12,7 @@ import { useTranslation } from '../../../providers/Translation/index.js';
|
|
|
12
12
|
import { getFormState } from '../../../utilities/getFormState.js';
|
|
13
13
|
import { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js';
|
|
14
14
|
import { useLoadingOverlay } from '../../LoadingOverlay/index.js';
|
|
15
|
+
import { createThumbnail } from '../../Thumbnail/createThumbnail.js';
|
|
15
16
|
import { useBulkUpload } from '../index.js';
|
|
16
17
|
import { createFormData } from './createFormData.js';
|
|
17
18
|
import { formsManagementReducer } from './reducer.js';
|
|
@@ -32,6 +33,7 @@ const Context = /*#__PURE__*/React.createContext({
|
|
|
32
33
|
saveAllDocs: () => Promise.resolve(),
|
|
33
34
|
setActiveIndex: () => 0,
|
|
34
35
|
setFormTotalErrorCount: () => {},
|
|
36
|
+
thumbnailUrls: [],
|
|
35
37
|
totalErrorCount: 0
|
|
36
38
|
});
|
|
37
39
|
const initialState = {
|
|
@@ -71,6 +73,33 @@ export function FormsManagerProvider({
|
|
|
71
73
|
forms,
|
|
72
74
|
totalErrorCount
|
|
73
75
|
} = state;
|
|
76
|
+
const formsRef = React.useRef(forms);
|
|
77
|
+
formsRef.current = forms;
|
|
78
|
+
const formsCount = forms.length;
|
|
79
|
+
const thumbnailUrlsRef = React.useRef([]);
|
|
80
|
+
const processedFiles = React.useRef(new Set()) // Track already-processed files
|
|
81
|
+
;
|
|
82
|
+
const [renderedThumbnails, setRenderedThumbnails] = React.useState([]);
|
|
83
|
+
React.useEffect(() => {
|
|
84
|
+
(async () => {
|
|
85
|
+
const newThumbnails = [...thumbnailUrlsRef.current];
|
|
86
|
+
for (let i = 0; i < formsCount; i++) {
|
|
87
|
+
const file = formsRef.current[i].formState.file.value;
|
|
88
|
+
// Skip if already processed
|
|
89
|
+
if (processedFiles.current.has(file) || !file) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
processedFiles.current.add(file);
|
|
93
|
+
// Generate thumbnail and update ref
|
|
94
|
+
const thumbnailUrl = await createThumbnail(file);
|
|
95
|
+
newThumbnails[i] = thumbnailUrl;
|
|
96
|
+
thumbnailUrlsRef.current = newThumbnails;
|
|
97
|
+
// Trigger re-render in batches
|
|
98
|
+
setRenderedThumbnails([...newThumbnails]);
|
|
99
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
100
|
+
}
|
|
101
|
+
})();
|
|
102
|
+
}, [formsCount, createThumbnail]);
|
|
74
103
|
const {
|
|
75
104
|
toggleLoadingOverlay
|
|
76
105
|
} = useLoadingOverlay();
|
|
@@ -152,8 +181,8 @@ export function FormsManagerProvider({
|
|
|
152
181
|
type: 'REPLACE',
|
|
153
182
|
state: {
|
|
154
183
|
activeIndex: index,
|
|
155
|
-
forms: forms.map((form,
|
|
156
|
-
if (
|
|
184
|
+
forms: forms.map((form, i_0) => {
|
|
185
|
+
if (i_0 === activeIndex) {
|
|
157
186
|
return {
|
|
158
187
|
errorCount: form.errorCount,
|
|
159
188
|
formState: currentFormsData
|
|
@@ -208,7 +237,7 @@ export function FormsManagerProvider({
|
|
|
208
237
|
formState: currentFormsData_0
|
|
209
238
|
};
|
|
210
239
|
const newDocs = [];
|
|
211
|
-
const promises = currentForms.map(async (form_0,
|
|
240
|
+
const promises = currentForms.map(async (form_0, i_1) => {
|
|
212
241
|
try {
|
|
213
242
|
toggleLoadingOverlay({
|
|
214
243
|
isLoading: true,
|
|
@@ -242,9 +271,9 @@ export function FormsManagerProvider({
|
|
|
242
271
|
}
|
|
243
272
|
return [[...fieldErrs, ...newFieldErrs], [...nonFieldErrs, ...newNonFieldErrs]];
|
|
244
273
|
}, [[], []]);
|
|
245
|
-
currentForms[
|
|
274
|
+
currentForms[i_1] = {
|
|
246
275
|
errorCount: fieldErrors.length,
|
|
247
|
-
formState: fieldReducer(currentForms[
|
|
276
|
+
formState: fieldReducer(currentForms[i_1].formState, {
|
|
248
277
|
type: 'ADD_SERVER_ERRORS',
|
|
249
278
|
errors: fieldErrors
|
|
250
279
|
})
|
|
@@ -327,6 +356,7 @@ export function FormsManagerProvider({
|
|
|
327
356
|
saveAllDocs,
|
|
328
357
|
setActiveIndex,
|
|
329
358
|
setFormTotalErrorCount,
|
|
359
|
+
thumbnailUrls: renderedThumbnails,
|
|
330
360
|
totalErrorCount
|
|
331
361
|
},
|
|
332
362
|
children: children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","qs","React","toast","fieldReducer","useConfig","useLocale","useTranslation","getFormState","hasSavePermission","getHasSavePermission","useLoadingOverlay","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","collectionSlug","docPermissions","undefined","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","totalErrorCount","initialState","FormsManagerProvider","children","config","routes","api","serverURL","code","i18n","t","setHasSubmitted","useState","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","hasInitializedWithFiles","useRef","initialStateRef","actionURL","initilizeSharedDocPermissions","useCallback","params","locale","docAccessURL","res","fetch","stringify","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","permission","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","apiRoute","operation","schemaPath","error","index","currentFormsData","type","map","form","i","errorCount","formState","files","isLoading","key","count","overrides","currentForms","newDocs","promises","loadingText","req","status","doc","push","errors","length","fieldErrors","nonFieldErrors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","field","all","remainingForms","filter","successCount","Math","max","success","acc","useEffect","_jsx","Provider","value","useFormsManager","useContext"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Data, DocumentPermissions, FormState } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport type { State } from './reducer.js'\n\nimport { fieldReducer } from '../../../forms/Form/fieldReducer.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { getFormState } from '../../../utilities/getFormState.js'\nimport { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js'\nimport { useLoadingOverlay } from '../../LoadingOverlay/index.js'\nimport { useBulkUpload } from '../index.js'\nimport { createFormData } from './createFormData.js'\nimport { formsManagementReducer } from './reducer.js'\n\ntype FormsManagerContext = {\n readonly activeIndex: State['activeIndex']\n readonly addFiles: (filelist: FileList) => Promise<void>\n readonly collectionSlug: string\n readonly docPermissions?: DocumentPermissions\n readonly forms: State['forms']\n getFormDataRef: React.RefObject<() => Data>\n readonly hasPublishPermission: boolean\n readonly hasSavePermission: boolean\n readonly hasSubmitted: boolean\n readonly isInitializing: boolean\n readonly removeFile: (index: number) => void\n readonly saveAllDocs: ({ overrides }?: { overrides?: Record<string, unknown> }) => Promise<void>\n readonly setActiveIndex: (index: number) => void\n readonly setFormTotalErrorCount: ({\n errorCount,\n index,\n }: {\n errorCount: number\n index: number\n }) => void\n readonly totalErrorCount?: number\n}\n\nconst Context = React.createContext<FormsManagerContext>({\n activeIndex: 0,\n addFiles: () => Promise.resolve(),\n collectionSlug: '',\n docPermissions: undefined,\n forms: [],\n getFormDataRef: { current: () => ({}) },\n hasPublishPermission: false,\n hasSavePermission: false,\n hasSubmitted: false,\n isInitializing: false,\n removeFile: () => {},\n saveAllDocs: () => Promise.resolve(),\n setActiveIndex: () => 0,\n setFormTotalErrorCount: () => {},\n totalErrorCount: 0,\n})\n\nconst initialState: State = {\n activeIndex: 0,\n forms: [],\n totalErrorCount: 0,\n}\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const [hasSubmitted, setHasSubmitted] = React.useState(false)\n const [docPermissions, setDocPermissions] = React.useState<DocumentPermissions>()\n const [hasSavePermission, setHasSavePermission] = React.useState(false)\n const [hasPublishPermission, setHasPublishPermission] = React.useState(false)\n const [hasInitializedState, setHasInitializedState] = React.useState(false)\n const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false)\n const [isInitializing, setIsInitializing] = React.useState(false)\n const [state, dispatch] = React.useReducer(formsManagementReducer, initialState)\n const { activeIndex, forms, totalErrorCount } = state\n\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess } = useBulkUpload()\n\n const hasInitializedWithFiles = React.useRef(false)\n const initialStateRef = React.useRef<FormState>(null)\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n\n const actionURL = `${api}/${collectionSlug}`\n\n const initilizeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessURL = `/${collectionSlug}/access`\n const res = await fetch(`${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n const json: DocumentPermissions = await res.json()\n const publishedAccessJSON = await fetch(\n `${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n isEditing: false,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update?.permission)\n setHasInitializedDocPermissions(true)\n }, [api, code, collectionSlug, i18n.language, serverURL])\n\n const initializeSharedFormState = React.useCallback(\n async (abortController?: AbortController) => {\n if (abortController?.signal) {\n abortController.abort('aborting previous fetch for initial form state without files')\n }\n\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n apiRoute: config.routes.api,\n body: {\n collectionSlug,\n locale: code,\n operation: 'create',\n schemaPath: collectionSlug,\n },\n // onError: onLoadError,\n serverURL: config.serverURL,\n signal: abortController?.signal,\n })\n initialStateRef.current = formStateWithoutFiles\n setHasInitializedState(true)\n } catch (error) {\n // swallow error\n }\n },\n [code, collectionSlug, config.routes.api, config.serverURL],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: index,\n forms: forms.map((form, i) => {\n if (i === activeIndex) {\n return {\n errorCount: form.errorCount,\n formState: currentFormsData,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n dispatch({ type: 'ADD_FORMS', files, initialState: initialStateRef.current })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n },\n [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay],\n )\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback((index) => {\n dispatch({ type: 'REMOVE_FORM', index })\n }, [])\n\n const setFormTotalErrorCount: FormsManagerContext['setFormTotalErrorCount'] = React.useCallback(\n ({ errorCount, index }) => {\n dispatch({\n type: 'UPDATE_ERROR_COUNT',\n count: errorCount,\n index,\n })\n },\n [],\n )\n\n const saveAllDocs: FormsManagerContext['saveAllDocs'] = React.useCallback(\n async ({ overrides } = {}) => {\n const currentFormsData = getFormDataRef.current()\n const currentForms = [...forms]\n currentForms[activeIndex] = {\n errorCount: currentForms[activeIndex].errorCount,\n formState: currentFormsData,\n }\n const newDocs = []\n const promises = currentForms.map(async (form, i) => {\n try {\n toggleLoadingOverlay({\n isLoading: true,\n key: 'saveAllDocs',\n loadingText: t('general:uploading'),\n })\n const req = await fetch(actionURL, {\n body: createFormData(form.formState, overrides),\n method: 'POST',\n })\n\n const json = await req.json()\n\n if (req.status === 201 && json?.doc) {\n newDocs.push(json.doc)\n }\n\n // should expose some sort of helper for this\n if (json?.errors?.length) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs: any[] = []\n const newNonFieldErrs: any[] = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n currentForms[i] = {\n errorCount: fieldErrors.length,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n }\n } catch (error) {\n // swallow error\n } finally {\n setHasSubmitted(true)\n toggleLoadingOverlay({ isLoading: false, key: 'saveAllDocs' })\n }\n })\n\n await Promise.all(promises)\n\n const remainingForms = currentForms.filter(({ errorCount }) => errorCount > 0)\n const successCount = Math.max(0, currentForms.length - remainingForms.length)\n const errorCount = currentForms.length - successCount\n\n if (successCount) {\n toast.success(`Successfully saved ${successCount} files`)\n\n if (typeof onSuccess === 'function') {\n onSuccess(newDocs, errorCount)\n }\n }\n\n if (errorCount) {\n toast.error(`Failed to save ${errorCount} files`)\n } else {\n closeModal(drawerSlug)\n }\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: 0,\n forms: remainingForms,\n totalErrorCount: remainingForms.reduce((acc, { errorCount }) => acc + errorCount, 0),\n },\n })\n },\n [actionURL, activeIndex, forms, onSuccess, t, toggleLoadingOverlay, closeModal, drawerSlug],\n )\n\n React.useEffect(() => {\n if (!collectionSlug) {\n return\n }\n if (!hasInitializedState) {\n void initializeSharedFormState()\n }\n\n if (!hasInitializedDocPermissions) {\n void initilizeSharedDocPermissions()\n }\n\n if (initialFiles) {\n if (!hasInitializedState || !hasInitializedDocPermissions) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (hasInitializedState && initialFiles && !hasInitializedWithFiles.current) {\n void addFiles(initialFiles)\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n addFiles,\n initialFiles,\n initializeSharedFormState,\n initilizeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n ])\n\n return (\n <Context.Provider\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n collectionSlug,\n docPermissions,\n forms,\n getFormDataRef,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n isInitializing,\n removeFile,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n totalErrorCount,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport function useFormsManager() {\n return React.useContext(Context)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","qs","React","toast","fieldReducer","useConfig","useLocale","useTranslation","getFormState","hasSavePermission","getHasSavePermission","useLoadingOverlay","createThumbnail","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","collectionSlug","docPermissions","undefined","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","thumbnailUrls","totalErrorCount","initialState","FormsManagerProvider","children","config","routes","api","serverURL","code","i18n","t","setHasSubmitted","useState","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","formsRef","useRef","formsCount","length","thumbnailUrlsRef","processedFiles","Set","renderedThumbnails","setRenderedThumbnails","useEffect","newThumbnails","i","file","formState","value","has","add","thumbnailUrl","setTimeout","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","hasInitializedWithFiles","initialStateRef","actionURL","initilizeSharedDocPermissions","useCallback","params","locale","docAccessURL","res","fetch","stringify","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","permission","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","apiRoute","operation","schemaPath","error","index","currentFormsData","type","map","form","errorCount","files","isLoading","key","count","overrides","currentForms","newDocs","promises","loadingText","req","status","doc","push","errors","fieldErrors","nonFieldErrors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","field","all","remainingForms","filter","successCount","Math","max","success","acc","_jsx","Provider","useFormsManager","useContext"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Data, DocumentPermissions, FormState } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport type { State } from './reducer.js'\n\nimport { fieldReducer } from '../../../forms/Form/fieldReducer.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { getFormState } from '../../../utilities/getFormState.js'\nimport { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js'\nimport { useLoadingOverlay } from '../../LoadingOverlay/index.js'\nimport { createThumbnail } from '../../Thumbnail/createThumbnail.js'\nimport { useBulkUpload } from '../index.js'\nimport { createFormData } from './createFormData.js'\nimport { formsManagementReducer } from './reducer.js'\n\ntype FormsManagerContext = {\n readonly activeIndex: State['activeIndex']\n readonly addFiles: (filelist: FileList) => Promise<void>\n readonly collectionSlug: string\n readonly docPermissions?: DocumentPermissions\n readonly forms: State['forms']\n getFormDataRef: React.RefObject<() => Data>\n readonly hasPublishPermission: boolean\n readonly hasSavePermission: boolean\n readonly hasSubmitted: boolean\n readonly isInitializing: boolean\n readonly removeFile: (index: number) => void\n readonly saveAllDocs: ({ overrides }?: { overrides?: Record<string, unknown> }) => Promise<void>\n readonly setActiveIndex: (index: number) => void\n readonly setFormTotalErrorCount: ({\n errorCount,\n index,\n }: {\n errorCount: number\n index: number\n }) => void\n readonly thumbnailUrls: string[]\n readonly totalErrorCount?: number\n}\n\nconst Context = React.createContext<FormsManagerContext>({\n activeIndex: 0,\n addFiles: () => Promise.resolve(),\n collectionSlug: '',\n docPermissions: undefined,\n forms: [],\n getFormDataRef: { current: () => ({}) },\n hasPublishPermission: false,\n hasSavePermission: false,\n hasSubmitted: false,\n isInitializing: false,\n removeFile: () => {},\n saveAllDocs: () => Promise.resolve(),\n setActiveIndex: () => 0,\n setFormTotalErrorCount: () => {},\n thumbnailUrls: [],\n totalErrorCount: 0,\n})\n\nconst initialState: State = {\n activeIndex: 0,\n forms: [],\n totalErrorCount: 0,\n}\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const [hasSubmitted, setHasSubmitted] = React.useState(false)\n const [docPermissions, setDocPermissions] = React.useState<DocumentPermissions>()\n const [hasSavePermission, setHasSavePermission] = React.useState(false)\n const [hasPublishPermission, setHasPublishPermission] = React.useState(false)\n const [hasInitializedState, setHasInitializedState] = React.useState(false)\n const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false)\n const [isInitializing, setIsInitializing] = React.useState(false)\n const [state, dispatch] = React.useReducer(formsManagementReducer, initialState)\n const { activeIndex, forms, totalErrorCount } = state\n\n const formsRef = React.useRef(forms)\n formsRef.current = forms\n const formsCount = forms.length\n\n const thumbnailUrlsRef = React.useRef<string[]>([])\n const processedFiles = React.useRef(new Set()) // Track already-processed files\n const [renderedThumbnails, setRenderedThumbnails] = React.useState<string[]>([])\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;(async () => {\n const newThumbnails = [...thumbnailUrlsRef.current]\n\n for (let i = 0; i < formsCount; i++) {\n const file = formsRef.current[i].formState.file.value as File\n\n // Skip if already processed\n if (processedFiles.current.has(file) || !file) {\n continue\n }\n processedFiles.current.add(file)\n\n // Generate thumbnail and update ref\n const thumbnailUrl = await createThumbnail(file)\n newThumbnails[i] = thumbnailUrl\n thumbnailUrlsRef.current = newThumbnails\n\n // Trigger re-render in batches\n setRenderedThumbnails([...newThumbnails])\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n })()\n }, [formsCount, createThumbnail])\n\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess } = useBulkUpload()\n\n const hasInitializedWithFiles = React.useRef(false)\n const initialStateRef = React.useRef<FormState>(null)\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n\n const actionURL = `${api}/${collectionSlug}`\n\n const initilizeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessURL = `/${collectionSlug}/access`\n const res = await fetch(`${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n const json: DocumentPermissions = await res.json()\n const publishedAccessJSON = await fetch(\n `${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n isEditing: false,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update?.permission)\n setHasInitializedDocPermissions(true)\n }, [api, code, collectionSlug, i18n.language, serverURL])\n\n const initializeSharedFormState = React.useCallback(\n async (abortController?: AbortController) => {\n if (abortController?.signal) {\n abortController.abort('aborting previous fetch for initial form state without files')\n }\n\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n apiRoute: config.routes.api,\n body: {\n collectionSlug,\n locale: code,\n operation: 'create',\n schemaPath: collectionSlug,\n },\n // onError: onLoadError,\n serverURL: config.serverURL,\n signal: abortController?.signal,\n })\n initialStateRef.current = formStateWithoutFiles\n setHasInitializedState(true)\n } catch (error) {\n // swallow error\n }\n },\n [code, collectionSlug, config.routes.api, config.serverURL],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: index,\n forms: forms.map((form, i) => {\n if (i === activeIndex) {\n return {\n errorCount: form.errorCount,\n formState: currentFormsData,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n dispatch({ type: 'ADD_FORMS', files, initialState: initialStateRef.current })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n },\n [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay],\n )\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback((index) => {\n dispatch({ type: 'REMOVE_FORM', index })\n }, [])\n\n const setFormTotalErrorCount: FormsManagerContext['setFormTotalErrorCount'] = React.useCallback(\n ({ errorCount, index }) => {\n dispatch({\n type: 'UPDATE_ERROR_COUNT',\n count: errorCount,\n index,\n })\n },\n [],\n )\n\n const saveAllDocs: FormsManagerContext['saveAllDocs'] = React.useCallback(\n async ({ overrides } = {}) => {\n const currentFormsData = getFormDataRef.current()\n const currentForms = [...forms]\n currentForms[activeIndex] = {\n errorCount: currentForms[activeIndex].errorCount,\n formState: currentFormsData,\n }\n const newDocs = []\n const promises = currentForms.map(async (form, i) => {\n try {\n toggleLoadingOverlay({\n isLoading: true,\n key: 'saveAllDocs',\n loadingText: t('general:uploading'),\n })\n const req = await fetch(actionURL, {\n body: createFormData(form.formState, overrides),\n method: 'POST',\n })\n\n const json = await req.json()\n\n if (req.status === 201 && json?.doc) {\n newDocs.push(json.doc)\n }\n\n // should expose some sort of helper for this\n if (json?.errors?.length) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs: any[] = []\n const newNonFieldErrs: any[] = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n currentForms[i] = {\n errorCount: fieldErrors.length,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n }\n } catch (error) {\n // swallow error\n } finally {\n setHasSubmitted(true)\n toggleLoadingOverlay({ isLoading: false, key: 'saveAllDocs' })\n }\n })\n\n await Promise.all(promises)\n\n const remainingForms = currentForms.filter(({ errorCount }) => errorCount > 0)\n const successCount = Math.max(0, currentForms.length - remainingForms.length)\n const errorCount = currentForms.length - successCount\n\n if (successCount) {\n toast.success(`Successfully saved ${successCount} files`)\n\n if (typeof onSuccess === 'function') {\n onSuccess(newDocs, errorCount)\n }\n }\n\n if (errorCount) {\n toast.error(`Failed to save ${errorCount} files`)\n } else {\n closeModal(drawerSlug)\n }\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: 0,\n forms: remainingForms,\n totalErrorCount: remainingForms.reduce((acc, { errorCount }) => acc + errorCount, 0),\n },\n })\n },\n [actionURL, activeIndex, forms, onSuccess, t, toggleLoadingOverlay, closeModal, drawerSlug],\n )\n\n React.useEffect(() => {\n if (!collectionSlug) {\n return\n }\n if (!hasInitializedState) {\n void initializeSharedFormState()\n }\n\n if (!hasInitializedDocPermissions) {\n void initilizeSharedDocPermissions()\n }\n\n if (initialFiles) {\n if (!hasInitializedState || !hasInitializedDocPermissions) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (hasInitializedState && initialFiles && !hasInitializedWithFiles.current) {\n void addFiles(initialFiles)\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n addFiles,\n initialFiles,\n initializeSharedFormState,\n initilizeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n ])\n\n return (\n <Context.Provider\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n collectionSlug,\n docPermissions,\n forms,\n getFormDataRef,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n isInitializing,\n removeFile,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n thumbnailUrls: renderedThumbnails,\n totalErrorCount,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport function useFormsManager() {\n return React.useContext(Context)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@ import React from 'react';
|
|
|
3
3
|
import type { DocumentDrawerProps } from '../DocumentDrawer/types.js';
|
|
4
4
|
import './index.scss';
|
|
5
5
|
type RelationshipTableComponentProps = {
|
|
6
|
+
readonly allowCreate?: boolean;
|
|
6
7
|
readonly field: JoinFieldClient;
|
|
7
8
|
readonly filterOptions?: boolean | Where;
|
|
8
9
|
readonly initialData?: PaginatedDocs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,eAAe,EACf,aAAa,EACb,KAAK,EACN,MAAM,SAAS,CAAA;AAEhB,OAAO,KAA2C,MAAM,OAAO,CAAA;AAO/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAiBrE,OAAO,cAAc,CAAA;AAKrB,KAAK,+BAA+B,GAAG;IACrC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAA;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAA;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CA0RvE,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,eAAe,EACf,aAAa,EACb,KAAK,EACN,MAAM,SAAS,CAAA;AAEhB,OAAO,KAA2C,MAAM,OAAO,CAAA;AAO/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAiBrE,OAAO,cAAc,CAAA;AAKrB,KAAK,+BAA+B,GAAG;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAA;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAA;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CA0RvE,CAAA"}
|