@payloadcms/ui 3.57.0-internal.f26caed → 3.57.0

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.
Files changed (145) hide show
  1. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/FileSidebar/index.js +74 -38
  3. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  4. package/dist/elements/BulkUpload/FileSidebar/index.scss +14 -1
  5. package/dist/elements/BulkUpload/FormsManager/index.d.ts +6 -1
  6. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  7. package/dist/elements/BulkUpload/FormsManager/index.js +52 -14
  8. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  9. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts +2 -2
  10. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/reducer.js +5 -5
  12. package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
  13. package/dist/elements/BulkUpload/index.d.ts +30 -5
  14. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  15. package/dist/elements/BulkUpload/index.js +130 -28
  16. package/dist/elements/BulkUpload/index.js.map +1 -1
  17. package/dist/elements/ConfirmationModal/index.d.ts.map +1 -1
  18. package/dist/elements/ConfirmationModal/index.js +1 -0
  19. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  20. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  21. package/dist/elements/DocumentLocked/index.js +41 -33
  22. package/dist/elements/DocumentLocked/index.js.map +1 -1
  23. package/dist/elements/DocumentTakeOver/index.d.ts.map +1 -1
  24. package/dist/elements/DocumentTakeOver/index.js +27 -19
  25. package/dist/elements/DocumentTakeOver/index.js.map +1 -1
  26. package/dist/elements/Drawer/index.d.ts.map +1 -1
  27. package/dist/elements/Drawer/index.js +1 -0
  28. package/dist/elements/Drawer/index.js.map +1 -1
  29. package/dist/elements/FullscreenModal/index.d.ts.map +1 -1
  30. package/dist/elements/FullscreenModal/index.js +1 -0
  31. package/dist/elements/FullscreenModal/index.js.map +1 -1
  32. package/dist/elements/LivePreview/IFrame/index.d.ts +1 -7
  33. package/dist/elements/LivePreview/IFrame/index.d.ts.map +1 -1
  34. package/dist/elements/LivePreview/IFrame/index.js +39 -18
  35. package/dist/elements/LivePreview/IFrame/index.js.map +1 -1
  36. package/dist/elements/LivePreview/Window/index.d.ts.map +1 -1
  37. package/dist/elements/LivePreview/Window/index.js +135 -61
  38. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  39. package/dist/elements/PublishButton/index.js +1 -1
  40. package/dist/elements/PublishButton/index.js.map +1 -1
  41. package/dist/elements/SearchBar/index.scss +4 -0
  42. package/dist/elements/Status/index.d.ts.map +1 -1
  43. package/dist/elements/Status/index.js +9 -19
  44. package/dist/elements/Status/index.js.map +1 -1
  45. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  46. package/dist/elements/Table/DefaultCell/index.js +20 -14
  47. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  48. package/dist/elements/Thumbnail/index.d.ts +4 -2
  49. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  50. package/dist/elements/Thumbnail/index.js +6 -2
  51. package/dist/elements/Thumbnail/index.js.map +1 -1
  52. package/dist/elements/Thumbnail/index.scss +11 -9
  53. package/dist/elements/Toasts/fieldErrors.js +1 -1
  54. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  55. package/dist/exports/client/index.js +24 -24
  56. package/dist/exports/client/index.js.map +4 -4
  57. package/dist/exports/rsc/index.d.ts +1 -0
  58. package/dist/exports/rsc/index.d.ts.map +1 -1
  59. package/dist/exports/rsc/index.js +1 -0
  60. package/dist/exports/rsc/index.js.map +1 -1
  61. package/dist/exports/shared/index.js +2 -2
  62. package/dist/exports/shared/index.js.map +3 -3
  63. package/dist/fields/Blocks/index.d.ts.map +1 -1
  64. package/dist/fields/Blocks/index.js +36 -16
  65. package/dist/fields/Blocks/index.js.map +1 -1
  66. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  67. package/dist/fields/Relationship/Input.js +1 -5
  68. package/dist/fields/Relationship/Input.js.map +1 -1
  69. package/dist/fields/Upload/Input.js +20 -20
  70. package/dist/fields/Upload/Input.js.map +1 -1
  71. package/dist/forms/Form/index.js +1 -2
  72. package/dist/forms/Form/index.js.map +1 -1
  73. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  74. package/dist/forms/Form/mergeServerFormState.js +8 -0
  75. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  76. package/dist/forms/Form/types.d.ts +2 -2
  77. package/dist/forms/Form/types.d.ts.map +1 -1
  78. package/dist/forms/Form/types.js.map +1 -1
  79. package/dist/forms/RenderFields/RenderField.js +223 -236
  80. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  81. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  82. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +33 -2
  83. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  84. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  85. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
  86. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  87. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts.map +1 -1
  88. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +2 -0
  89. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +1 -1
  90. package/dist/forms/fieldSchemasToFormState/types.d.ts +6 -0
  91. package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
  92. package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
  93. package/dist/forms/useField/index.d.ts.map +1 -1
  94. package/dist/forms/useField/index.js +76 -73
  95. package/dist/forms/useField/index.js.map +1 -1
  96. package/dist/forms/useField/types.d.ts +5 -9
  97. package/dist/forms/useField/types.d.ts.map +1 -1
  98. package/dist/forms/useField/types.js.map +1 -1
  99. package/dist/providers/LivePreview/context.d.ts +17 -2
  100. package/dist/providers/LivePreview/context.d.ts.map +1 -1
  101. package/dist/providers/LivePreview/context.js +3 -2
  102. package/dist/providers/LivePreview/context.js.map +1 -1
  103. package/dist/providers/LivePreview/index.d.ts +2 -2
  104. package/dist/providers/LivePreview/index.d.ts.map +1 -1
  105. package/dist/providers/LivePreview/index.js +33 -19
  106. package/dist/providers/LivePreview/index.js.map +1 -1
  107. package/dist/providers/RouteCache/index.d.ts.map +1 -1
  108. package/dist/providers/RouteCache/index.js +62 -25
  109. package/dist/providers/RouteCache/index.js.map +1 -1
  110. package/dist/providers/TableColumns/buildColumnState/index.d.ts +2 -1
  111. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  112. package/dist/providers/TableColumns/buildColumnState/index.js +2 -0
  113. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  114. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +3 -2
  115. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  116. package/dist/providers/TableColumns/buildColumnState/renderCell.js +39 -2
  117. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  118. package/dist/styles.css +1 -1
  119. package/dist/utilities/buildFormState.d.ts +2 -0
  120. package/dist/utilities/buildFormState.d.ts.map +1 -1
  121. package/dist/utilities/buildFormState.js +20 -1
  122. package/dist/utilities/buildFormState.js.map +1 -1
  123. package/dist/utilities/formatAbsoluteURL.d.ts +8 -0
  124. package/dist/utilities/formatAbsoluteURL.d.ts.map +1 -0
  125. package/dist/utilities/formatAbsoluteURL.js +15 -0
  126. package/dist/utilities/formatAbsoluteURL.js.map +1 -0
  127. package/dist/utilities/getFolderResultsComponentAndData.d.ts.map +1 -1
  128. package/dist/utilities/getFolderResultsComponentAndData.js +0 -4
  129. package/dist/utilities/getFolderResultsComponentAndData.js.map +1 -1
  130. package/dist/utilities/handleLivePreview.d.ts +58 -0
  131. package/dist/utilities/handleLivePreview.d.ts.map +1 -0
  132. package/dist/utilities/handleLivePreview.js +96 -0
  133. package/dist/utilities/handleLivePreview.js.map +1 -0
  134. package/dist/utilities/handleTakeOver.d.ts +17 -4
  135. package/dist/utilities/handleTakeOver.d.ts.map +1 -1
  136. package/dist/utilities/handleTakeOver.js +18 -2
  137. package/dist/utilities/handleTakeOver.js.map +1 -1
  138. package/dist/utilities/renderTable.d.ts +3 -2
  139. package/dist/utilities/renderTable.d.ts.map +1 -1
  140. package/dist/utilities/renderTable.js +2 -0
  141. package/dist/utilities/renderTable.js.map +1 -1
  142. package/dist/views/Edit/index.d.ts.map +1 -1
  143. package/dist/views/Edit/index.js +48 -13
  144. package/dist/views/Edit/index.js.map +1 -1
  145. 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;AAiBzB,OAAO,cAAc,CAAA;AAMrB,wBAAgB,WAAW,sBA0K1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAiBzB,OAAO,cAAc,CAAA;AAQrB,wBAAgB,WAAW,sBA6M1B"}
@@ -6,8 +6,10 @@ import { useModal } from '@faceless-ui/modal';
6
6
  import { useWindowInfo } from '@faceless-ui/window-info';
7
7
  import { isImage } from 'payload/shared';
8
8
  import React from 'react';
9
+ import { SelectInput } from '../../../fields/Select/Input.js';
9
10
  import { ChevronIcon } from '../../../icons/Chevron/index.js';
10
11
  import { XIcon } from '../../../icons/X/index.js';
12
+ import { useConfig } from '../../../providers/Config/index.js';
11
13
  import { useTranslation } from '../../../providers/Translation/index.js';
12
14
  import { AnimateHeight } from '../../AnimateHeight/index.js';
13
15
  import { Button } from '../../Button/index.js';
@@ -19,13 +21,13 @@ import { createThumbnail } from '../../Thumbnail/createThumbnail.js';
19
21
  import { Thumbnail } from '../../Thumbnail/index.js';
20
22
  import { Actions } from '../ActionsBar/index.js';
21
23
  import { AddFilesView } from '../AddFilesView/index.js';
24
+ import './index.scss';
22
25
  import { useFormsManager } from '../FormsManager/index.js';
23
26
  import { useBulkUpload } from '../index.js';
24
- import './index.scss';
25
27
  const addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files';
26
28
  const baseClass = 'file-selections';
27
29
  export function FileSidebar() {
28
- const $ = _c(34);
30
+ const $ = _c(39);
29
31
  const {
30
32
  activeIndex,
31
33
  addFiles,
@@ -37,6 +39,7 @@ export function FileSidebar() {
37
39
  } = useFormsManager();
38
40
  const {
39
41
  initialFiles,
42
+ initialForms,
40
43
  maxFiles
41
44
  } = useBulkUpload();
42
45
  const {
@@ -76,7 +79,15 @@ export function FileSidebar() {
76
79
  }
77
80
  const handleAddFiles = t1;
78
81
  const getFileSize = _temp;
79
- const totalFileCount = isInitializing ? initialFiles.length : forms.length;
82
+ const totalFileCount = isInitializing ? initialFiles?.length ?? initialForms?.length : forms.length;
83
+ const {
84
+ collectionSlug: bulkUploadCollectionSlug,
85
+ selectableCollections,
86
+ setCollectionSlug
87
+ } = useBulkUpload();
88
+ const {
89
+ getEntityConfig
90
+ } = useConfig();
80
91
  const t2 = showFiles && `${baseClass}__showingFiles`;
81
92
  let t3;
82
93
  if ($[5] !== t2) {
@@ -88,24 +99,24 @@ export function FileSidebar() {
88
99
  }
89
100
  const t4 = t3.join(" ");
90
101
  let t5;
91
- if ($[7] !== activeIndex || $[8] !== breakpoints.m || $[9] !== closeModal || $[10] !== forms || $[11] !== handleAddFiles || $[12] !== handleRemoveFile || $[13] !== i18n || $[14] !== initialFiles || $[15] !== isInitializing || $[16] !== maxFiles || $[17] !== openModal || $[18] !== setActiveIndex || $[19] !== showFiles || $[20] !== t || $[21] !== t4 || $[22] !== totalErrorCount || $[23] !== totalFileCount) {
102
+ if ($[7] !== activeIndex || $[8] !== breakpoints.m || $[9] !== bulkUploadCollectionSlug || $[10] !== closeModal || $[11] !== forms || $[12] !== getEntityConfig || $[13] !== handleAddFiles || $[14] !== handleRemoveFile || $[15] !== i18n || $[16] !== initialFiles || $[17] !== initialForms || $[18] !== isInitializing || $[19] !== maxFiles || $[20] !== openModal || $[21] !== selectableCollections || $[22] !== setActiveIndex || $[23] !== setCollectionSlug || $[24] !== showFiles || $[25] !== t || $[26] !== t4 || $[27] !== totalErrorCount || $[28] !== totalFileCount) {
92
103
  let t6;
93
- if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
104
+ if ($[30] === Symbol.for("react.memo_cache_sentinel")) {
94
105
  t6 = () => setShowFiles(_temp2);
95
- $[25] = t6;
106
+ $[30] = t6;
96
107
  } else {
97
- t6 = $[25];
108
+ t6 = $[30];
98
109
  }
99
110
  let t7;
100
- if ($[26] !== closeModal) {
111
+ if ($[31] !== closeModal) {
101
112
  t7 = () => closeModal(addMoreFilesDrawerSlug);
102
- $[26] = closeModal;
103
- $[27] = t7;
113
+ $[31] = closeModal;
114
+ $[32] = t7;
104
115
  } else {
105
- t7 = $[27];
116
+ t7 = $[32];
106
117
  }
107
118
  let t8;
108
- if ($[28] !== activeIndex || $[29] !== handleRemoveFile || $[30] !== i18n || $[31] !== setActiveIndex || $[32] !== t) {
119
+ if ($[33] !== activeIndex || $[34] !== handleRemoveFile || $[35] !== i18n || $[36] !== setActiveIndex || $[37] !== t) {
109
120
  t8 = (t9, index_0) => {
110
121
  const {
111
122
  errorCount,
@@ -149,14 +160,14 @@ export function FileSidebar() {
149
160
  })]
150
161
  }, formID);
151
162
  };
152
- $[28] = activeIndex;
153
- $[29] = handleRemoveFile;
154
- $[30] = i18n;
155
- $[31] = setActiveIndex;
156
- $[32] = t;
157
- $[33] = t8;
163
+ $[33] = activeIndex;
164
+ $[34] = handleRemoveFile;
165
+ $[35] = i18n;
166
+ $[36] = setActiveIndex;
167
+ $[37] = t;
168
+ $[38] = t8;
158
169
  } else {
159
- t8 = $[33];
170
+ t8 = $[38];
160
171
  }
161
172
  t5 = _jsxs("div", {
162
173
  className: t4,
@@ -164,7 +175,27 @@ export function FileSidebar() {
164
175
  className: `${baseClass}__mobileBlur`
165
176
  }) : null, _jsxs("div", {
166
177
  className: `${baseClass}__header`,
167
- children: [_jsxs("div", {
178
+ children: [selectableCollections?.length > 1 && _jsx(SelectInput, {
179
+ className: `${baseClass}__collectionSelect`,
180
+ isClearable: false,
181
+ name: "groupBy",
182
+ onChange: e => {
183
+ const val = typeof e === "object" && "value" in e ? e?.value : e;
184
+ setCollectionSlug(val);
185
+ },
186
+ options: selectableCollections?.map(coll => {
187
+ const config = getEntityConfig({
188
+ collectionSlug: coll
189
+ });
190
+ return {
191
+ label: config.labels.singular,
192
+ value: config.slug
193
+ };
194
+ }) || [],
195
+ path: "groupBy",
196
+ required: true,
197
+ value: bulkUploadCollectionSlug
198
+ }), _jsxs("div", {
168
199
  className: `${baseClass}__headerTopRow`,
169
200
  children: [_jsxs("div", {
170
201
  className: `${baseClass}__header__text`,
@@ -218,31 +249,36 @@ export function FileSidebar() {
218
249
  height: !breakpoints.m || showFiles ? "auto" : 0,
219
250
  children: _jsxs("div", {
220
251
  className: `${baseClass}__filesContainer`,
221
- children: [isInitializing && forms.length === 0 && initialFiles.length > 0 ? Array.from(initialFiles).map(_temp3) : null, forms.map(t8)]
252
+ children: [isInitializing && forms.length === 0 && (initialFiles?.length > 0 || initialForms?.length > 0) ? (initialFiles ? Array.from(initialFiles) : initialForms).map(_temp3) : null, forms.map(t8)]
222
253
  })
223
254
  })
224
255
  })]
225
256
  });
226
257
  $[7] = activeIndex;
227
258
  $[8] = breakpoints.m;
228
- $[9] = closeModal;
229
- $[10] = forms;
230
- $[11] = handleAddFiles;
231
- $[12] = handleRemoveFile;
232
- $[13] = i18n;
233
- $[14] = initialFiles;
234
- $[15] = isInitializing;
235
- $[16] = maxFiles;
236
- $[17] = openModal;
237
- $[18] = setActiveIndex;
238
- $[19] = showFiles;
239
- $[20] = t;
240
- $[21] = t4;
241
- $[22] = totalErrorCount;
242
- $[23] = totalFileCount;
243
- $[24] = t5;
259
+ $[9] = bulkUploadCollectionSlug;
260
+ $[10] = closeModal;
261
+ $[11] = forms;
262
+ $[12] = getEntityConfig;
263
+ $[13] = handleAddFiles;
264
+ $[14] = handleRemoveFile;
265
+ $[15] = i18n;
266
+ $[16] = initialFiles;
267
+ $[17] = initialForms;
268
+ $[18] = isInitializing;
269
+ $[19] = maxFiles;
270
+ $[20] = openModal;
271
+ $[21] = selectableCollections;
272
+ $[22] = setActiveIndex;
273
+ $[23] = setCollectionSlug;
274
+ $[24] = showFiles;
275
+ $[25] = t;
276
+ $[26] = t4;
277
+ $[27] = totalErrorCount;
278
+ $[28] = totalFileCount;
279
+ $[29] = t5;
244
280
  } else {
245
- t5 = $[24];
281
+ t5 = $[29];
246
282
  }
247
283
  return t5;
248
284
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","useWindowInfo","isImage","React","ChevronIcon","XIcon","useTranslation","AnimateHeight","Button","Drawer","ErrorPill","Pill","ShimmerEffect","createThumbnail","Thumbnail","Actions","AddFilesView","useFormsManager","useBulkUpload","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","_temp2","t7","t8","t9","index_0","errorCount","formID","formState","currentFile","file","value","_jsxs","className","index","children","onClick","type","_jsx","SidebarThumbnail","title","name","File","count","withMessage","size","buttonStyle","direction","gutter","Header","slug","onCancel","onDrop","height","Array","from","map","_temp3","file_0","animationDelay","prev","i","Math","floor","log","decimals","formattedSize","pow","toFixed","thumbnailURL","setThumbnailURL","isLoading","setIsLoading","useEffect","isCancelled","generateThumbnail","url","_","disableInlineStyles","fileSrc"],"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'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { AnimateHeight } from '../../AnimateHeight/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 { createThumbnail } from '../../Thumbnail/createThumbnail.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 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 : true) ? (\n <Pill\n className={`${baseClass}__header__addFile`}\n onClick={() => openModal(addMoreFilesDrawerSlug)}\n size=\"small\"\n >\n {t('upload:addFile')}\n </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 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, formID, formState }, index) => {\n const currentFile = (formState?.file?.value as File) || ({} 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={formID}\n >\n <button\n className={`${baseClass}__fileRow`}\n onClick={() => setActiveIndex(index)}\n type=\"button\"\n >\n <SidebarThumbnail file={currentFile} formID={formID} />\n <div className={`${baseClass}__fileDetails`}>\n <p className={`${baseClass}__fileName`} title={currentFile.name}>\n {currentFile.name || t('upload:noFile')}\n </p>\n </div>\n {currentFile instanceof File ? (\n <p className={`${baseClass}__fileSize`}>{getFileSize(currentFile)}</p>\n ) : null}\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\nfunction SidebarThumbnail({ file, formID }: { file: File; formID: string }) {\n const [thumbnailURL, setThumbnailURL] = React.useState<null | string>(null)\n const [isLoading, setIsLoading] = React.useState(true)\n\n React.useEffect(() => {\n let isCancelled = false\n\n async function generateThumbnail() {\n setIsLoading(true)\n setThumbnailURL(null)\n\n try {\n if (isImage(file.type)) {\n const url = await createThumbnail(file)\n if (!isCancelled) {\n setThumbnailURL(url)\n }\n } else {\n setThumbnailURL(null)\n }\n } catch (_) {\n if (!isCancelled) {\n setThumbnailURL(null)\n }\n } finally {\n if (!isCancelled) {\n setIsLoading(false)\n }\n }\n }\n\n void generateThumbnail()\n\n return () => {\n isCancelled = true\n }\n }, [file])\n\n if (isLoading) {\n return <ShimmerEffect className={`${baseClass}__thumbnail-shimmer`} disableInlineStyles />\n }\n\n return (\n <Thumbnail\n className={`${baseClass}__thumbnail`}\n fileSrc={thumbnailURL}\n key={`${formID}-${thumbnailURL || 'placeholder'}`}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","useWindowInfo","isImage","React","SelectInput","ChevronIcon","XIcon","useConfig","useTranslation","AnimateHeight","Button","Drawer","ErrorPill","Pill","ShimmerEffect","createThumbnail","Thumbnail","Actions","AddFilesView","useFormsManager","useBulkUpload","addMoreFilesDrawerSlug","baseClass","FileSidebar","$","activeIndex","addFiles","forms","isInitializing","removeFile","setActiveIndex","totalErrorCount","initialFiles","initialForms","maxFiles","i18n","t","closeModal","openModal","showFiles","setShowFiles","useState","breakpoints","t0","indexToRemove","handleRemoveFile","t1","filelist","handleAddFiles","getFileSize","_temp","totalFileCount","length","collectionSlug","bulkUploadCollectionSlug","selectableCollections","setCollectionSlug","getEntityConfig","t2","t3","filter","Boolean","t4","join","t5","m","t6","Symbol","for","_temp2","t7","t8","t9","index_0","errorCount","formID","formState","currentFile","file","value","_jsxs","className","index","children","onClick","type","_jsx","SidebarThumbnail","title","name","File","count","isClearable","onChange","e","val","options","map","coll","config","label","labels","singular","slug","path","required","withMessage","size","buttonStyle","direction","gutter","Header","onCancel","onDrop","height","Array","from","_temp3","file_0","animationDelay","prev","i","Math","floor","log","decimals","formattedSize","pow","toFixed","thumbnailURL","setThumbnailURL","isLoading","setIsLoading","useEffect","isCancelled","generateThumbnail","url","_","disableInlineStyles","fileSrc"],"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'\n\nimport { SelectInput } from '../../../fields/Select/Input.js'\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { AnimateHeight } from '../../AnimateHeight/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 { createThumbnail } from '../../Thumbnail/createThumbnail.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { Actions } from '../ActionsBar/index.js'\nimport { AddFilesView } from '../AddFilesView/index.js'\nimport './index.scss'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { useBulkUpload } from '../index.js'\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, initialForms, 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\n ? (initialFiles?.length ?? initialForms?.length)\n : forms.length\n\n const {\n collectionSlug: bulkUploadCollectionSlug,\n selectableCollections,\n setCollectionSlug,\n } = useBulkUpload()\n\n const { getEntityConfig } = useConfig()\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 {selectableCollections?.length > 1 && (\n <SelectInput\n className={`${baseClass}__collectionSelect`}\n isClearable={false}\n name=\"groupBy\"\n onChange={(e) => {\n const val: string =\n typeof e === 'object' && 'value' in e\n ? (e?.value as string)\n : (e as unknown as string)\n setCollectionSlug(val)\n }}\n options={\n selectableCollections?.map((coll) => {\n const config = getEntityConfig({ collectionSlug: coll })\n return { label: config.labels.singular, value: config.slug }\n }) || []\n }\n path=\"groupBy\"\n required\n value={bulkUploadCollectionSlug}\n />\n )}\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 : true) ? (\n <Pill\n className={`${baseClass}__header__addFile`}\n onClick={() => openModal(addMoreFilesDrawerSlug)}\n size=\"small\"\n >\n {t('upload:addFile')}\n </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 height={!breakpoints.m || showFiles ? 'auto' : 0}>\n <div className={`${baseClass}__filesContainer`}>\n {isInitializing &&\n forms.length === 0 &&\n (initialFiles?.length > 0 || initialForms?.length > 0)\n ? (initialFiles ? Array.from(initialFiles) : initialForms).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, formID, formState }, index) => {\n const currentFile = (formState?.file?.value as File) || ({} 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={formID}\n >\n <button\n className={`${baseClass}__fileRow`}\n onClick={() => setActiveIndex(index)}\n type=\"button\"\n >\n <SidebarThumbnail file={currentFile} formID={formID} />\n <div className={`${baseClass}__fileDetails`}>\n <p className={`${baseClass}__fileName`} title={currentFile.name}>\n {currentFile.name || t('upload:noFile')}\n </p>\n </div>\n {currentFile instanceof File ? (\n <p className={`${baseClass}__fileSize`}>{getFileSize(currentFile)}</p>\n ) : null}\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\nfunction SidebarThumbnail({ file, formID }: { file: File; formID: string }) {\n const [thumbnailURL, setThumbnailURL] = React.useState<null | string>(null)\n const [isLoading, setIsLoading] = React.useState(true)\n\n React.useEffect(() => {\n let isCancelled = false\n\n async function generateThumbnail() {\n setIsLoading(true)\n setThumbnailURL(null)\n\n try {\n if (isImage(file.type)) {\n const url = await createThumbnail(file)\n if (!isCancelled) {\n setThumbnailURL(url)\n }\n } else {\n setThumbnailURL(null)\n }\n } catch (_) {\n if (!isCancelled) {\n setThumbnailURL(null)\n }\n } finally {\n if (!isCancelled) {\n setIsLoading(false)\n }\n }\n }\n\n void generateThumbnail()\n\n return () => {\n isCancelled = true\n }\n }, [file])\n\n if (isLoading) {\n return <ShimmerEffect className={`${baseClass}__thumbnail-shimmer`} disableInlineStyles />\n }\n\n return (\n <Thumbnail\n className={`${baseClass}__thumbnail`}\n fileSrc={thumbnailURL}\n key={`${formID}-${thumbnailURL || 'placeholder'}`}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -8,7 +8,7 @@
8
8
  display: flex;
9
9
  flex-direction: column;
10
10
  width: 300px;
11
- overflow: auto;
11
+ overflow: visible;
12
12
  max-height: 100%;
13
13
 
14
14
  &__header {
@@ -28,6 +28,19 @@
28
28
  }
29
29
  }
30
30
 
31
+ &__collectionSelect {
32
+ width: 100%;
33
+
34
+ .react-select {
35
+ width: 100%;
36
+ }
37
+ .field-type__wrap {
38
+ width: 100%;
39
+ padding-block: var(--base);
40
+ padding-inline: var(--file-gutter-h);
41
+ }
42
+ }
43
+
31
44
  &__headerTopRow {
32
45
  display: flex;
33
46
  align-items: center;
@@ -1,4 +1,4 @@
1
- import type { Data, DocumentSlots, SanitizedDocumentPermissions, UploadEdits } from 'payload';
1
+ import type { Data, DocumentSlots, FormState, SanitizedDocumentPermissions, UploadEdits } from 'payload';
2
2
  import React from 'react';
3
3
  import type { State } from './reducer.js';
4
4
  type FormsManagerContext = {
@@ -27,6 +27,11 @@ type FormsManagerContext = {
27
27
  readonly totalErrorCount?: number;
28
28
  readonly updateUploadEdits: (args: UploadEdits) => void;
29
29
  };
30
+ export type InitialForms = Array<{
31
+ file: File;
32
+ formID?: string;
33
+ initialState?: FormState | null;
34
+ }>;
30
35
  type FormsManagerProps = {
31
36
  readonly children: React.ReactNode;
32
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EAEb,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAezC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,cAAc,EAAE,CACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,gBAAgB,CAAC,EAAE,MAAM,IAAI,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAA;IACtD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,EAChC,UAAU,EACV,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CACxD,CAAA;AA6BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAwdnE;AAED,wBAAgB,eAAe,wBAE9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,IAAI,EACJ,aAAa,EACb,SAAS,EAET,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAgBzC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,cAAc,EAAE,CACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,gBAAgB,CAAC,EAAE,MAAM,IAAI,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAA;IACtD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,EAChC,UAAU,EACV,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CACxD,CAAA;AA6BD,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC;IAC/B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAChC,CAAC,CAAA;AAEF,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAmhBnE;AAED,wBAAgB,eAAe,wBAE9B"}
@@ -6,6 +6,7 @@ import * as qs from 'qs-esm';
6
6
  import React from 'react';
7
7
  import { toast } from 'sonner';
8
8
  import { fieldReducer } from '../../../forms/Form/fieldReducer.js';
9
+ import { useEffectEvent } from '../../../hooks/useEffectEvent.js';
9
10
  import { useConfig } from '../../../providers/Config/index.js';
10
11
  import { useLocale } from '../../../providers/Locale/index.js';
11
12
  import { useServerFunctions } from '../../../providers/ServerFunctions/index.js';
@@ -96,8 +97,11 @@ export function FormsManagerProvider({
96
97
  collectionSlug,
97
98
  drawerSlug,
98
99
  initialFiles,
100
+ initialForms,
99
101
  onSuccess,
100
- setInitialFiles
102
+ setInitialFiles,
103
+ setInitialForms,
104
+ setSuccessfullyUploaded
101
105
  } = useBulkUpload();
102
106
  const [isUploading, setIsUploading] = React.useState(false);
103
107
  const [loadingText, setLoadingText] = React.useState('');
@@ -208,14 +212,37 @@ export function FormsManagerProvider({
208
212
  }
209
213
  dispatch({
210
214
  type: 'ADD_FORMS',
211
- files,
212
- initialState: initialStateRef.current
215
+ forms: Array.from(files).map(file => ({
216
+ file,
217
+ initialState: initialStateRef.current
218
+ }))
213
219
  });
214
220
  toggleLoadingOverlay({
215
221
  isLoading: false,
216
222
  key: 'addingDocs'
217
223
  });
218
224
  }, [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay, activeIndex, forms]);
225
+ const addFilesEffectEvent = useEffectEvent(addFiles);
226
+ const addInitialForms = useEffectEvent(async initialForms_0 => {
227
+ toggleLoadingOverlay({
228
+ isLoading: true,
229
+ key: 'addingDocs'
230
+ });
231
+ if (!hasInitializedState) {
232
+ await initializeSharedFormState();
233
+ }
234
+ dispatch({
235
+ type: 'ADD_FORMS',
236
+ forms: initialForms_0.map(form_0 => ({
237
+ ...form_0,
238
+ initialState: form_0?.initialState || initialStateRef.current
239
+ }))
240
+ });
241
+ toggleLoadingOverlay({
242
+ isLoading: false,
243
+ key: 'addingDocs'
244
+ });
245
+ });
219
246
  const removeFile = React.useCallback(index_0 => {
220
247
  dispatch({
221
248
  type: 'REMOVE_FORM',
@@ -247,19 +274,19 @@ export function FormsManagerProvider({
247
274
  setIsUploading(true);
248
275
  for (let i_0 = 0; i_0 < currentForms.length; i_0++) {
249
276
  try {
250
- const form_0 = currentForms[i_0];
277
+ const form_1 = currentForms[i_0];
251
278
  setLoadingText(t('general:uploadingBulk', {
252
279
  current: i_0 + 1,
253
280
  total: currentForms.length
254
281
  }));
255
282
  const actionURLWithParams = `${actionURL}${qs.stringify({
256
283
  locale: code,
257
- uploadEdits: form_0?.uploadEdits || undefined
284
+ uploadEdits: form_1?.uploadEdits || undefined
258
285
  }, {
259
286
  addQueryPrefix: true
260
287
  })}`;
261
288
  const req = await fetch(actionURLWithParams, {
262
- body: await createFormData(form_0.formState, overrides, collectionSlug, getUploadHandler({
289
+ body: await createFormData(form_1.formState, overrides, collectionSlug, getUploadHandler({
263
290
  collectionSlug
264
291
  })),
265
292
  credentials: 'include',
@@ -267,7 +294,11 @@ export function FormsManagerProvider({
267
294
  });
268
295
  const json_0 = await req.json();
269
296
  if (req.status === 201 && json_0?.doc) {
270
- newDocs.push(json_0.doc);
297
+ newDocs.push({
298
+ collectionSlug,
299
+ doc: json_0.doc,
300
+ formID: form_1.formID
301
+ });
271
302
  }
272
303
  // should expose some sort of helper for this
273
304
  const [fieldErrors, nonFieldErrors] = (json_0?.errors || []).reduce(([fieldErrs, nonFieldErrs], err) => {
@@ -322,6 +353,7 @@ export function FormsManagerProvider({
322
353
  const errorCount_1 = currentForms.length - successCount;
323
354
  if (successCount) {
324
355
  toast.success(`Successfully saved ${successCount} files`);
356
+ setSuccessfullyUploaded(true);
325
357
  if (typeof onSuccess === 'function') {
326
358
  onSuccess(newDocs, errorCount_1);
327
359
  }
@@ -343,8 +375,9 @@ export function FormsManagerProvider({
343
375
  });
344
376
  if (remainingForms.length === 0) {
345
377
  setInitialFiles(undefined);
378
+ setInitialForms(undefined);
346
379
  }
347
- }, [setInitialFiles, actionURL, collectionSlug, getUploadHandler, t, forms, activeIndex, closeModal, drawerSlug, onSuccess, code]);
380
+ }, [forms, activeIndex, t, actionURL, code, collectionSlug, getUploadHandler, onSuccess, closeModal, setSuccessfullyUploaded, drawerSlug, setInitialFiles, setInitialForms]);
348
381
  const bulkUpdateForm = React.useCallback(async (updatedFields, afterStateUpdate) => {
349
382
  for (let i_2 = 0; i_2 < forms.length; i_2++) {
350
383
  Object.entries(updatedFields).forEach(([path, value]) => {
@@ -395,8 +428,8 @@ export function FormsManagerProvider({
395
428
  dispatch({
396
429
  type: 'REPLACE',
397
430
  state: {
398
- forms: forms.map(form_1 => ({
399
- ...form_1,
431
+ forms: forms.map(form_2 => ({
432
+ ...form_2,
400
433
  uploadEdits: {}
401
434
  }))
402
435
  }
@@ -412,19 +445,24 @@ export function FormsManagerProvider({
412
445
  if (!hasInitializedDocPermissions) {
413
446
  void initializeSharedDocPermissions();
414
447
  }
415
- if (initialFiles) {
448
+ if (initialFiles || initialForms) {
416
449
  if (!hasInitializedState || !hasInitializedDocPermissions) {
417
450
  setIsInitializing(true);
418
451
  } else {
419
452
  setIsInitializing(false);
420
453
  }
421
454
  }
422
- if (hasInitializedState && initialFiles && !hasInitializedWithFiles.current) {
423
- void addFiles(initialFiles);
455
+ if (hasInitializedState && (initialForms?.length || initialFiles?.length) && !hasInitializedWithFiles.current) {
456
+ if (initialForms?.length) {
457
+ void addInitialForms(initialForms);
458
+ }
459
+ if (initialFiles?.length) {
460
+ void addFilesEffectEvent(initialFiles);
461
+ }
424
462
  hasInitializedWithFiles.current = true;
425
463
  }
426
464
  return;
427
- }, [addFiles, initialFiles, initializeSharedFormState, initializeSharedDocPermissions, collectionSlug, hasInitializedState, hasInitializedDocPermissions]);
465
+ }, [initialFiles, initializeSharedFormState, initializeSharedDocPermissions, collectionSlug, hasInitializedState, hasInitializedDocPermissions, initialForms]);
428
466
  return /*#__PURE__*/_jsxs(Context, {
429
467
  value: {
430
468
  activeIndex: state.activeIndex,