@payloadcms/ui 3.0.0-beta.92 → 3.0.0-beta.94

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 (112) hide show
  1. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/AddFilesView/index.js +44 -30
  3. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  4. package/dist/elements/BulkUpload/AddFilesView/index.scss +14 -1
  5. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
  6. package/dist/elements/BulkUpload/AddingFilesView/index.js +7 -7
  7. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  8. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.d.ts.map +1 -1
  9. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js +14 -17
  10. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  11. package/dist/elements/BulkUpload/DrawerCloseButton/index.d.ts +1 -2
  12. package/dist/elements/BulkUpload/DrawerCloseButton/index.d.ts.map +1 -1
  13. package/dist/elements/BulkUpload/DrawerCloseButton/index.js +5 -8
  14. package/dist/elements/BulkUpload/DrawerCloseButton/index.js.map +1 -1
  15. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  16. package/dist/elements/BulkUpload/EditForm/index.js +31 -28
  17. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  18. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  19. package/dist/elements/BulkUpload/FileSidebar/index.js +65 -55
  20. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  21. package/dist/elements/BulkUpload/FileSidebar/index.scss +4 -0
  22. package/dist/elements/BulkUpload/FormsManager/index.d.ts +4 -7
  23. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  24. package/dist/elements/BulkUpload/FormsManager/index.js +62 -36
  25. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  26. package/dist/elements/BulkUpload/Header/index.d.ts.map +1 -1
  27. package/dist/elements/BulkUpload/Header/index.js +1 -3
  28. package/dist/elements/BulkUpload/Header/index.js.map +1 -1
  29. package/dist/elements/BulkUpload/index.d.ts +21 -5
  30. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  31. package/dist/elements/BulkUpload/index.js +148 -51
  32. package/dist/elements/BulkUpload/index.js.map +1 -1
  33. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  34. package/dist/elements/DocumentDrawer/DrawerContent.js +18 -15
  35. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  36. package/dist/elements/DocumentDrawer/types.d.ts +1 -0
  37. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  38. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  39. package/dist/elements/DraggableSortable/index.d.ts.map +1 -1
  40. package/dist/elements/DraggableSortable/index.js +1 -0
  41. package/dist/elements/DraggableSortable/index.js.map +1 -1
  42. package/dist/elements/Dropzone/index.d.ts +3 -3
  43. package/dist/elements/Dropzone/index.d.ts.map +1 -1
  44. package/dist/elements/Dropzone/index.js +23 -50
  45. package/dist/elements/Dropzone/index.js.map +1 -1
  46. package/dist/elements/Dropzone/index.scss +6 -23
  47. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  48. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  49. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  50. package/dist/elements/FileDetails/StaticFileDetails/index.js +0 -1
  51. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  52. package/dist/elements/FileDetails/StaticFileDetails/index.scss +1 -0
  53. package/dist/elements/ListDrawer/index.scss +7 -0
  54. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  55. package/dist/elements/PublishButton/index.js +108 -45
  56. package/dist/elements/PublishButton/index.js.map +1 -1
  57. package/dist/elements/ShimmerEffect/index.d.ts +3 -3
  58. package/dist/elements/ShimmerEffect/index.d.ts.map +1 -1
  59. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  60. package/dist/elements/Thumbnail/index.d.ts +10 -6
  61. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  62. package/dist/elements/Thumbnail/index.js +84 -9
  63. package/dist/elements/Thumbnail/index.js.map +1 -1
  64. package/dist/elements/Upload/index.d.ts.map +1 -1
  65. package/dist/elements/Upload/index.js +59 -33
  66. package/dist/elements/Upload/index.js.map +1 -1
  67. package/dist/elements/Upload/index.scss +9 -0
  68. package/dist/exports/client/{CodeEditor-MTP455NO.js → CodeEditor-P66JEENA.js} +2 -2
  69. package/dist/exports/client/{chunk-NJHSEGFB.js → chunk-XKP472RX.js} +1 -1
  70. package/dist/exports/client/{chunk-NJHSEGFB.js.map → chunk-XKP472RX.js.map} +1 -1
  71. package/dist/exports/client/index.d.ts +3 -2
  72. package/dist/exports/client/index.d.ts.map +1 -1
  73. package/dist/exports/client/index.js +19 -19
  74. package/dist/exports/client/index.js.map +4 -4
  75. package/dist/fields/Upload/HasMany/index.d.ts +16 -2
  76. package/dist/fields/Upload/HasMany/index.d.ts.map +1 -1
  77. package/dist/fields/Upload/HasMany/index.js +148 -224
  78. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  79. package/dist/fields/Upload/HasMany/index.scss +12 -56
  80. package/dist/fields/Upload/HasOne/index.d.ts +13 -9
  81. package/dist/fields/Upload/HasOne/index.d.ts.map +1 -1
  82. package/dist/fields/Upload/HasOne/index.js +30 -121
  83. package/dist/fields/Upload/HasOne/index.js.map +1 -1
  84. package/dist/fields/Upload/HasOne/index.scss +0 -68
  85. package/dist/fields/Upload/{HasOne/Input.d.ts → Input.d.ts} +9 -4
  86. package/dist/fields/Upload/Input.d.ts.map +1 -0
  87. package/dist/fields/Upload/Input.js +366 -0
  88. package/dist/fields/Upload/Input.js.map +1 -0
  89. package/dist/fields/Upload/RelationshipContent/index.d.ts +21 -0
  90. package/dist/fields/Upload/RelationshipContent/index.d.ts.map +1 -0
  91. package/dist/fields/Upload/RelationshipContent/index.js +135 -0
  92. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -0
  93. package/dist/fields/Upload/RelationshipContent/index.scss +51 -0
  94. package/dist/fields/Upload/UploadCard/index.d.ts +10 -0
  95. package/dist/fields/Upload/UploadCard/index.d.ts.map +1 -0
  96. package/dist/fields/Upload/UploadCard/index.js +15 -0
  97. package/dist/fields/Upload/UploadCard/index.js.map +1 -0
  98. package/dist/fields/Upload/UploadCard/index.scss +27 -0
  99. package/dist/fields/Upload/index.d.ts +4 -4
  100. package/dist/fields/Upload/index.d.ts.map +1 -1
  101. package/dist/fields/Upload/index.js +85 -91
  102. package/dist/fields/Upload/index.js.map +1 -1
  103. package/dist/fields/Upload/index.scss +57 -0
  104. package/dist/providers/Root/index.d.ts +12 -12
  105. package/dist/providers/Root/index.d.ts.map +1 -1
  106. package/dist/providers/Root/index.js.map +1 -1
  107. package/dist/styles.css +1 -1
  108. package/package.json +4 -4
  109. package/dist/fields/Upload/HasOne/Input.d.ts.map +0 -1
  110. package/dist/fields/Upload/HasOne/Input.js +0 -324
  111. package/dist/fields/Upload/HasOne/Input.js.map +0 -1
  112. /package/dist/exports/client/{CodeEditor-MTP455NO.js.map → CodeEditor-P66JEENA.js.map} +0 -0
@@ -13,23 +13,30 @@ import { Button } from '../../Button/index.js';
13
13
  import { Drawer } from '../../Drawer/index.js';
14
14
  import { ErrorPill } from '../../ErrorPill/index.js';
15
15
  import { Pill } from '../../Pill/index.js';
16
+ import { ShimmerEffect } from '../../ShimmerEffect/index.js';
16
17
  import { Actions } from '../ActionsBar/index.js';
17
18
  import { AddFilesView } from '../AddFilesView/index.js';
18
19
  import { useFormsManager } from '../FormsManager/index.js';
20
+ import { useBulkUpload } from '../index.js';
19
21
  import './index.scss';
20
22
  const AnimateHeight = AnimateHeightImport.default || AnimateHeightImport;
21
- const drawerSlug = 'bulk-upload-drawer--add-more-files';
23
+ const addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files';
22
24
  const baseClass = 'file-selections';
23
25
  export function FileSidebar() {
24
- const $ = _c(32);
26
+ const $ = _c(34);
25
27
  const {
26
28
  activeIndex,
27
29
  addFiles,
28
30
  forms,
31
+ isInitializing,
29
32
  removeFile,
30
33
  setActiveIndex,
31
34
  totalErrorCount
32
35
  } = useFormsManager();
36
+ const {
37
+ initialFiles,
38
+ maxFiles
39
+ } = useBulkUpload();
33
40
  const {
34
41
  i18n,
35
42
  t
@@ -57,7 +64,7 @@ export function FileSidebar() {
57
64
  if ($[2] !== addFiles || $[3] !== closeModal) {
58
65
  t1 = filelist => {
59
66
  addFiles(filelist);
60
- closeModal(drawerSlug);
67
+ closeModal(addMoreFilesDrawerSlug);
61
68
  };
62
69
  $[2] = addFiles;
63
70
  $[3] = closeModal;
@@ -67,6 +74,7 @@ export function FileSidebar() {
67
74
  }
68
75
  const handleAddFiles = t1;
69
76
  const getFileSize = _temp;
77
+ const totalFileCount = isInitializing ? initialFiles.length : forms.length;
70
78
  const t2 = showFiles && `${baseClass}__showingFiles`;
71
79
  let t3;
72
80
  if ($[5] !== t2) {
@@ -78,43 +86,35 @@ export function FileSidebar() {
78
86
  }
79
87
  const t4 = t3.join(" ");
80
88
  let t5;
81
- if ($[7] !== breakpoints.m || $[8] !== showFiles || $[9] !== totalErrorCount || $[10] !== i18n || $[11] !== forms || $[12] !== t || $[13] !== openModal || $[14] !== closeModal || $[15] !== handleAddFiles || $[16] !== activeIndex || $[17] !== setActiveIndex || $[18] !== handleRemoveFile || $[19] !== t4) {
89
+ 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] !== handleRemoveFile || $[23] !== t4) {
82
90
  let t6;
83
- if ($[21] !== openModal) {
84
- t6 = () => openModal(drawerSlug);
85
- $[21] = openModal;
86
- $[22] = t6;
91
+ if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
92
+ t6 = () => setShowFiles(prev => !prev);
93
+ $[25] = t6;
87
94
  } else {
88
- t6 = $[22];
95
+ t6 = $[25];
89
96
  }
90
97
  let t7;
91
- if ($[23] === Symbol.for("react.memo_cache_sentinel")) {
92
- t7 = () => setShowFiles(prev => !prev);
93
- $[23] = t7;
98
+ if ($[26] !== closeModal) {
99
+ t7 = () => closeModal(addMoreFilesDrawerSlug);
100
+ $[26] = closeModal;
101
+ $[27] = t7;
94
102
  } else {
95
- t7 = $[23];
103
+ t7 = $[27];
96
104
  }
97
105
  let t8;
98
- if ($[24] !== closeModal) {
99
- t8 = () => closeModal(drawerSlug);
100
- $[24] = closeModal;
101
- $[25] = t8;
102
- } else {
103
- t8 = $[25];
104
- }
105
- let t9;
106
- if ($[26] !== activeIndex || $[27] !== setActiveIndex || $[28] !== i18n || $[29] !== t || $[30] !== handleRemoveFile) {
107
- t9 = (t10, index) => {
106
+ if ($[28] !== activeIndex || $[29] !== setActiveIndex || $[30] !== i18n || $[31] !== t || $[32] !== handleRemoveFile) {
107
+ t8 = (t9, index_0) => {
108
108
  const {
109
109
  errorCount,
110
110
  formState
111
- } = t10;
111
+ } = t9;
112
112
  const currentFile = formState.file.value;
113
113
  return _jsxs("div", {
114
- className: [`${baseClass}__fileRowContainer`, index === activeIndex && `${baseClass}__fileRowContainer--active`, errorCount && errorCount > 0 && `${baseClass}__fileRowContainer--error`].filter(Boolean).join(" "),
114
+ className: [`${baseClass}__fileRowContainer`, index_0 === activeIndex && `${baseClass}__fileRowContainer--active`, errorCount && errorCount > 0 && `${baseClass}__fileRowContainer--error`].filter(Boolean).join(" "),
115
115
  children: [_jsxs("button", {
116
116
  className: `${baseClass}__fileRow`,
117
- onClick: () => setActiveIndex(index),
117
+ onClick: () => setActiveIndex(index_0),
118
118
  type: "button",
119
119
  children: [_jsx("img", {
120
120
  alt: currentFile.name,
@@ -140,20 +140,20 @@ export function FileSidebar() {
140
140
  }), _jsx("button", {
141
141
  "aria-label": t("general:remove"),
142
142
  className: `${baseClass}__remove ${baseClass}__remove--overlay`,
143
- onClick: () => handleRemoveFile(index),
143
+ onClick: () => handleRemoveFile(index_0),
144
144
  type: "button",
145
145
  children: _jsx(XIcon, {})
146
146
  })]
147
- }, index);
147
+ }, index_0);
148
148
  };
149
- $[26] = activeIndex;
150
- $[27] = setActiveIndex;
151
- $[28] = i18n;
152
- $[29] = t;
153
- $[30] = handleRemoveFile;
154
- $[31] = t9;
149
+ $[28] = activeIndex;
150
+ $[29] = setActiveIndex;
151
+ $[30] = i18n;
152
+ $[31] = t;
153
+ $[32] = handleRemoveFile;
154
+ $[33] = t8;
155
155
  } else {
156
- t9 = $[31];
156
+ t8 = $[33];
157
157
  }
158
158
  t5 = _jsxs("div", {
159
159
  className: t4,
@@ -171,28 +171,28 @@ export function FileSidebar() {
171
171
  withMessage: true
172
172
  }), _jsx("p", {
173
173
  children: _jsxs("strong", {
174
- title: `${forms.length} ${t(forms.length > 1 ? "upload:filesToUpload" : "upload:fileToUpload")}`,
175
- children: [forms.length, " ", t(forms.length > 1 ? "upload:filesToUpload" : "upload:fileToUpload")]
174
+ title: `${totalFileCount} ${t(totalFileCount > 1 ? "upload:filesToUpload" : "upload:fileToUpload")}`,
175
+ children: [totalFileCount, " ", t(totalFileCount > 1 ? "upload:filesToUpload" : "upload:fileToUpload")]
176
176
  })
177
177
  })]
178
178
  }), _jsxs("div", {
179
179
  className: `${baseClass}__header__actions`,
180
- children: [_jsx(Pill, {
181
- onClick: t6,
180
+ children: [typeof maxFiles === "number" && totalFileCount < maxFiles ? _jsx(Pill, {
181
+ onClick: () => openModal(addMoreFilesDrawerSlug),
182
182
  children: t("upload:addFile")
183
- }), _jsx(Button, {
183
+ }) : null, _jsx(Button, {
184
184
  buttonStyle: "transparent",
185
185
  className: `${baseClass}__toggler`,
186
- onClick: t7,
186
+ onClick: t6,
187
187
  children: _jsx(ChevronIcon, {
188
188
  direction: showFiles ? "down" : "up"
189
189
  })
190
190
  }), _jsx(Drawer, {
191
191
  Header: null,
192
192
  gutter: false,
193
- slug: drawerSlug,
193
+ slug: addMoreFilesDrawerSlug,
194
194
  children: _jsx(AddFilesView, {
195
- onCancel: t8,
195
+ onCancel: t7,
196
196
  onDrop: handleAddFiles
197
197
  })
198
198
  })]
@@ -206,9 +206,9 @@ export function FileSidebar() {
206
206
  children: _jsx(AnimateHeight, {
207
207
  duration: 200,
208
208
  height: !breakpoints.m || showFiles ? "auto" : 0,
209
- children: _jsx("div", {
209
+ children: _jsxs("div", {
210
210
  className: `${baseClass}__filesContainer`,
211
- children: forms.map(t9)
211
+ children: [isInitializing && forms.length === 0 && initialFiles.length > 0 ? Array.from(initialFiles).map(_temp2) : null, forms.map(t8)]
212
212
  })
213
213
  })
214
214
  })]
@@ -217,21 +217,31 @@ export function FileSidebar() {
217
217
  $[8] = showFiles;
218
218
  $[9] = totalErrorCount;
219
219
  $[10] = i18n;
220
- $[11] = forms;
220
+ $[11] = totalFileCount;
221
221
  $[12] = t;
222
- $[13] = openModal;
223
- $[14] = closeModal;
224
- $[15] = handleAddFiles;
225
- $[16] = activeIndex;
226
- $[17] = setActiveIndex;
227
- $[18] = handleRemoveFile;
228
- $[19] = t4;
229
- $[20] = t5;
222
+ $[13] = maxFiles;
223
+ $[14] = openModal;
224
+ $[15] = closeModal;
225
+ $[16] = handleAddFiles;
226
+ $[17] = isInitializing;
227
+ $[18] = forms;
228
+ $[19] = initialFiles;
229
+ $[20] = activeIndex;
230
+ $[21] = setActiveIndex;
231
+ $[22] = handleRemoveFile;
232
+ $[23] = t4;
233
+ $[24] = t5;
230
234
  } else {
231
- t5 = $[20];
235
+ t5 = $[24];
232
236
  }
233
237
  return t5;
234
238
  }
239
+ function _temp2(file_0, index) {
240
+ return _jsx(ShimmerEffect, {
241
+ animationDelay: `calc(${index} * ${60}ms)`,
242
+ height: "35px"
243
+ }, index);
244
+ }
235
245
  function _temp(file) {
236
246
  const size = file.size;
237
247
  const i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","useWindowInfo","React","AnimateHeightImport","ChevronIcon","XIcon","useTranslation","Button","Drawer","ErrorPill","Pill","Actions","AddFilesView","useFormsManager","AnimateHeight","default","drawerSlug","baseClass","FileSidebar","$","activeIndex","addFiles","forms","removeFile","setActiveIndex","totalErrorCount","i18n","t","closeModal","openModal","showFiles","setShowFiles","useState","breakpoints","t0","indexToRemove","handleRemoveFile","t1","filelist","handleAddFiles","getFileSize","_temp","t2","t3","filter","Boolean","t4","join","t5","m","t6","t7","Symbol","for","prev","t8","t9","t10","index","errorCount","formState","currentFile","file","value","_jsxs","className","children","onClick","type","_jsx","alt","name","src","URL","createObjectURL","title","count","withMessage","length","buttonStyle","direction","Header","gutter","slug","onCancel","onDrop","duration","height","map","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 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 { Actions } from '../ActionsBar/index.js'\nimport { AddFilesView } from '../AddFilesView/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport './index.scss'\n\nconst AnimateHeight = (AnimateHeightImport.default ||\n AnimateHeightImport) as typeof AnimateHeightImport.default\n\nconst drawerSlug = 'bulk-upload-drawer--add-more-files'\n\nconst baseClass = 'file-selections'\n\nexport function FileSidebar() {\n const { activeIndex, addFiles, forms, removeFile, setActiveIndex, totalErrorCount } =\n useFormsManager()\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 addFiles(filelist)\n closeModal(drawerSlug)\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 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={`${forms.length} ${t(forms.length > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {forms.length}{' '}\n {t(forms.length > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </p>\n </div>\n\n <div className={`${baseClass}__header__actions`}>\n <Pill onClick={() => openModal(drawerSlug)}>{t('upload:addFile')}</Pill>\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 Header={null} gutter={false} slug={drawerSlug}>\n <AddFilesView onCancel={() => closeModal(drawerSlug)} onDrop={handleAddFiles} />\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 {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 <img alt={currentFile.name} src={URL.createObjectURL(currentFile)} />\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","React","AnimateHeightImport","ChevronIcon","XIcon","useTranslation","Button","Drawer","ErrorPill","Pill","ShimmerEffect","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","alt","name","src","URL","createObjectURL","title","count","withMessage","buttonStyle","direction","Header","gutter","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 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 { 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 Header={null} gutter={false} 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 <img alt={currentFile.name} src={URL.createObjectURL(currentFile)} />\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":[]}
@@ -53,6 +53,10 @@
53
53
  margin-top: calc(var(--base) / 2);
54
54
  width: 100%;
55
55
  padding-inline: var(--file-gutter-h);
56
+
57
+ .shimmer-effect {
58
+ border-radius: var(--style-radius-m);
59
+ }
56
60
  }
57
61
 
58
62
  &__fileRowContainer {
@@ -1,10 +1,9 @@
1
1
  import type { Data, DocumentPermissions } from 'payload';
2
2
  import React from 'react';
3
- import type { BulkUploadProps } from '../index.js';
4
3
  import type { State } from './reducer.js';
5
4
  type FormsManagerContext = {
6
5
  readonly activeIndex: State['activeIndex'];
7
- readonly addFiles: (filelist: FileList) => void;
6
+ readonly addFiles: (filelist: FileList) => Promise<void>;
8
7
  readonly collectionSlug: string;
9
8
  readonly docPermissions?: DocumentPermissions;
10
9
  readonly forms: State['forms'];
@@ -12,7 +11,7 @@ type FormsManagerContext = {
12
11
  readonly hasPublishPermission: boolean;
13
12
  readonly hasSavePermission: boolean;
14
13
  readonly hasSubmitted: boolean;
15
- readonly isLoadingFiles: boolean;
14
+ readonly isInitializing: boolean;
16
15
  readonly removeFile: (index: number) => void;
17
16
  readonly saveAllDocs: ({ overrides }?: {
18
17
  overrides?: Record<string, unknown>;
@@ -24,12 +23,10 @@ type FormsManagerContext = {
24
23
  }) => void;
25
24
  readonly totalErrorCount?: number;
26
25
  };
27
- type Props = {
26
+ type FormsManagerProps = {
28
27
  readonly children: React.ReactNode;
29
- readonly collectionSlug: string;
30
- readonly onSuccess: BulkUploadProps['onSuccess'];
31
28
  };
32
- export declare function FormsManagerProvider({ children, collectionSlug, onSuccess }: Props): React.JSX.Element;
29
+ export declare function FormsManagerProvider({ children }: FormsManagerProps): React.JSX.Element;
33
30
  export declare function useFormsManager(): FormsManagerContext;
34
31
  export {};
35
32
  //# sourceMappingURL=index.d.ts.map
@@ -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,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAazC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC/C,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,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AA0BD,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;CACjD,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,KAAK,qBA2RlF;AAED,wBAAgB,eAAe,wBAE9B"}
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;AAazC,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,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AA0BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AACD,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAuTnE;AAED,wBAAgB,eAAe,wBAE9B"}
@@ -12,12 +12,12 @@ 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 { drawerSlug } from '../index.js';
15
+ import { useBulkUpload } from '../index.js';
16
16
  import { createFormData } from './createFormData.js';
17
17
  import { formsManagementReducer } from './reducer.js';
18
18
  const Context = /*#__PURE__*/React.createContext({
19
19
  activeIndex: 0,
20
- addFiles: () => {},
20
+ addFiles: () => Promise.resolve(),
21
21
  collectionSlug: '',
22
22
  docPermissions: undefined,
23
23
  forms: [],
@@ -27,7 +27,7 @@ const Context = /*#__PURE__*/React.createContext({
27
27
  hasPublishPermission: false,
28
28
  hasSavePermission: false,
29
29
  hasSubmitted: false,
30
- isLoadingFiles: true,
30
+ isInitializing: false,
31
31
  removeFile: () => {},
32
32
  saveAllDocs: () => Promise.resolve(),
33
33
  setActiveIndex: () => 0,
@@ -40,9 +40,7 @@ const initialState = {
40
40
  totalErrorCount: 0
41
41
  };
42
42
  export function FormsManagerProvider({
43
- children,
44
- collectionSlug,
45
- onSuccess
43
+ children
46
44
  }) {
47
45
  const {
48
46
  config
@@ -56,18 +54,17 @@ export function FormsManagerProvider({
56
54
  const {
57
55
  code
58
56
  } = useLocale();
59
- const {
60
- closeModal
61
- } = useModal();
62
57
  const {
63
58
  i18n,
64
59
  t
65
60
  } = useTranslation();
66
- const [isLoadingFiles, setIsLoadingFiles] = React.useState(false);
67
61
  const [hasSubmitted, setHasSubmitted] = React.useState(false);
68
62
  const [docPermissions, setDocPermissions] = React.useState();
69
63
  const [hasSavePermission, setHasSavePermission] = React.useState(false);
70
64
  const [hasPublishPermission, setHasPublishPermission] = React.useState(false);
65
+ const [hasInitializedState, setHasInitializedState] = React.useState(false);
66
+ const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false);
67
+ const [isInitializing, setIsInitializing] = React.useState(false);
71
68
  const [state, dispatch] = React.useReducer(formsManagementReducer, initialState);
72
69
  const {
73
70
  activeIndex,
@@ -77,16 +74,20 @@ export function FormsManagerProvider({
77
74
  const {
78
75
  toggleLoadingOverlay
79
76
  } = useLoadingOverlay();
77
+ const {
78
+ closeModal
79
+ } = useModal();
80
+ const {
81
+ collectionSlug,
82
+ drawerSlug,
83
+ initialFiles,
84
+ onSuccess
85
+ } = useBulkUpload();
86
+ const hasInitializedWithFiles = React.useRef(false);
80
87
  const initialStateRef = React.useRef(null);
81
- const hasFetchedInitialFormState = React.useRef(false);
82
88
  const getFormDataRef = React.useRef(() => ({}));
83
- const initialFormStateAbortControllerRef = React.useRef(null);
84
- const hasFetchedInitialDocPermissions = React.useRef(false);
85
- const initialDocPermissionsAbortControllerRef = React.useRef(null);
86
89
  const actionURL = `${api}/${collectionSlug}`;
87
90
  const initilizeSharedDocPermissions = React.useCallback(async () => {
88
- if (initialDocPermissionsAbortControllerRef.current) initialDocPermissionsAbortControllerRef.current.abort('aborting previous fetch for initial doc permissions');
89
- initialDocPermissionsAbortControllerRef.current = new AbortController();
90
91
  const params = {
91
92
  locale: code || undefined
92
93
  };
@@ -97,8 +98,7 @@ export function FormsManagerProvider({
97
98
  'Accept-Language': i18n.language,
98
99
  'Content-Type': 'application/json'
99
100
  },
100
- method: 'post',
101
- signal: initialDocPermissionsAbortControllerRef.current.signal
101
+ method: 'post'
102
102
  });
103
103
  const json = await res.json();
104
104
  const publishedAccessJSON = await fetch(`${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`, {
@@ -119,10 +119,12 @@ export function FormsManagerProvider({
119
119
  isEditing: false
120
120
  }));
121
121
  setHasPublishPermission(publishedAccessJSON?.update?.permission);
122
+ setHasInitializedDocPermissions(true);
122
123
  }, [api, code, collectionSlug, i18n.language, serverURL]);
123
- const initializeSharedFormState = React.useCallback(async () => {
124
- if (initialFormStateAbortControllerRef.current) initialFormStateAbortControllerRef.current.abort('aborting previous fetch for initial form state without files');
125
- initialFormStateAbortControllerRef.current = new AbortController();
124
+ const initializeSharedFormState = React.useCallback(async abortController => {
125
+ if (abortController?.signal) {
126
+ abortController.abort('aborting previous fetch for initial form state without files');
127
+ }
126
128
  try {
127
129
  const formStateWithoutFiles = await getFormState({
128
130
  apiRoute: config.routes.api,
@@ -134,10 +136,10 @@ export function FormsManagerProvider({
134
136
  },
135
137
  // onError: onLoadError,
136
138
  serverURL: config.serverURL,
137
- signal: initialFormStateAbortControllerRef.current.signal
139
+ signal: abortController?.signal
138
140
  });
139
141
  initialStateRef.current = formStateWithoutFiles;
140
- hasFetchedInitialFormState.current = true;
142
+ setHasInitializedState(true);
141
143
  } catch (error) {
142
144
  // swallow error
143
145
  }
@@ -160,15 +162,24 @@ export function FormsManagerProvider({
160
162
  }
161
163
  });
162
164
  }, [forms, activeIndex]);
163
- const addFiles = React.useCallback(files => {
164
- setIsLoadingFiles(true);
165
+ const addFiles = React.useCallback(async files => {
166
+ toggleLoadingOverlay({
167
+ isLoading: true,
168
+ key: 'addingDocs'
169
+ });
170
+ if (!hasInitializedState) {
171
+ await initializeSharedFormState();
172
+ }
165
173
  dispatch({
166
174
  type: 'ADD_FORMS',
167
175
  files,
168
176
  initialState: initialStateRef.current
169
177
  });
170
- setIsLoadingFiles(false);
171
- }, []);
178
+ toggleLoadingOverlay({
179
+ isLoading: false,
180
+ key: 'addingDocs'
181
+ });
182
+ }, [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay]);
172
183
  const removeFile = React.useCallback(index_0 => {
173
184
  dispatch({
174
185
  type: 'REMOVE_FORM',
@@ -194,6 +205,7 @@ export function FormsManagerProvider({
194
205
  errorCount: currentForms[activeIndex].errorCount,
195
206
  formState: currentFormsData_0
196
207
  };
208
+ const newDocs = [];
197
209
  const promises = currentForms.map(async (form_0, i_0) => {
198
210
  try {
199
211
  toggleLoadingOverlay({
@@ -206,6 +218,9 @@ export function FormsManagerProvider({
206
218
  method: 'POST'
207
219
  });
208
220
  const json_0 = await req.json();
221
+ if (req.status === 201 && json_0?.doc) {
222
+ newDocs.push(json_0.doc);
223
+ }
209
224
  // should expose some sort of helper for this
210
225
  if (json_0?.errors?.length) {
211
226
  const [fieldErrors, nonFieldErrors] = json_0.errors.reduce(([fieldErrs, nonFieldErrs], err) => {
@@ -251,15 +266,14 @@ export function FormsManagerProvider({
251
266
  const errorCount_1 = currentForms.length - successCount;
252
267
  if (successCount) {
253
268
  toast.success(`Successfully saved ${successCount} files`);
254
- if (errorCount_1 === 0) {
255
- closeModal(drawerSlug);
256
- }
257
269
  if (typeof onSuccess === 'function') {
258
- onSuccess();
270
+ onSuccess(newDocs, errorCount_1);
259
271
  }
260
272
  }
261
273
  if (errorCount_1) {
262
274
  toast.error(`Failed to save ${errorCount_1} files`);
275
+ } else {
276
+ closeModal(drawerSlug);
263
277
  }
264
278
  dispatch({
265
279
  type: 'REPLACE',
@@ -271,16 +285,28 @@ export function FormsManagerProvider({
271
285
  }) => acc + errorCount_2, 0)
272
286
  }
273
287
  });
274
- }, [actionURL, activeIndex, closeModal, forms, onSuccess]);
288
+ }, [actionURL, activeIndex, forms, onSuccess, t, toggleLoadingOverlay, closeModal, drawerSlug]);
275
289
  React.useEffect(() => {
276
- if (!hasFetchedInitialFormState.current) {
290
+ if (!collectionSlug) return;
291
+ if (!hasInitializedState) {
277
292
  void initializeSharedFormState();
278
293
  }
279
- if (!hasFetchedInitialDocPermissions.current) {
294
+ if (!hasInitializedDocPermissions) {
280
295
  void initilizeSharedDocPermissions();
281
296
  }
297
+ if (initialFiles) {
298
+ if (!hasInitializedState || !hasInitializedDocPermissions) {
299
+ setIsInitializing(true);
300
+ } else {
301
+ setIsInitializing(false);
302
+ }
303
+ }
304
+ if (hasInitializedState && initialFiles && !hasInitializedWithFiles.current) {
305
+ void addFiles(initialFiles);
306
+ hasInitializedWithFiles.current = true;
307
+ }
282
308
  return;
283
- }, [initializeSharedFormState, initilizeSharedDocPermissions]);
309
+ }, [addFiles, initialFiles, initializeSharedFormState, initilizeSharedDocPermissions, collectionSlug, hasInitializedState, hasInitializedDocPermissions]);
284
310
  return /*#__PURE__*/_jsx(Context.Provider, {
285
311
  value: {
286
312
  activeIndex: state.activeIndex,
@@ -292,7 +318,7 @@ export function FormsManagerProvider({
292
318
  hasPublishPermission,
293
319
  hasSavePermission,
294
320
  hasSubmitted,
295
- isLoadingFiles,
321
+ isInitializing,
296
322
  removeFile,
297
323
  saveAllDocs,
298
324
  setActiveIndex,