@payloadcms/ui 3.19.0-canary.edf2c5e → 3.20.0-canary.0e01b65

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 (89) hide show
  1. package/dist/elements/BulkUpload/ActionsBar/index.d.ts +5 -1
  2. package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
  3. package/dist/elements/BulkUpload/ActionsBar/index.js +38 -31
  4. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  5. package/dist/elements/BulkUpload/AddingFilesView/index.js +5 -3
  6. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  7. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  8. package/dist/elements/BulkUpload/EditForm/index.js +4 -2
  9. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  10. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts +11 -0
  11. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -0
  12. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +166 -0
  13. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -0
  14. package/dist/elements/BulkUpload/EditMany/index.d.ts +9 -0
  15. package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -0
  16. package/dist/elements/BulkUpload/EditMany/index.js +69 -0
  17. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -0
  18. package/dist/elements/BulkUpload/EditMany/index.scss +201 -0
  19. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  20. package/dist/elements/BulkUpload/FileSidebar/index.js +3 -2
  21. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  22. package/dist/elements/BulkUpload/FileSidebar/index.scss +5 -0
  23. package/dist/elements/BulkUpload/FormsManager/index.d.ts +1 -0
  24. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  25. package/dist/elements/BulkUpload/FormsManager/index.js +70 -32
  26. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  27. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts +6 -0
  28. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts.map +1 -1
  29. package/dist/elements/BulkUpload/FormsManager/reducer.js +18 -0
  30. package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
  31. package/dist/elements/BulkUpload/Header/index.d.ts.map +1 -1
  32. package/dist/elements/BulkUpload/Header/index.js +2 -0
  33. package/dist/elements/BulkUpload/Header/index.js.map +1 -1
  34. package/dist/elements/BulkUpload/Header/index.scss +2 -0
  35. package/dist/elements/EditMany/DrawerContent.d.ts +1 -1
  36. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  37. package/dist/elements/EditMany/DrawerContent.js +6 -3
  38. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  39. package/dist/elements/Pill/index.d.ts +1 -0
  40. package/dist/elements/Pill/index.d.ts.map +1 -1
  41. package/dist/elements/Pill/index.js +3 -2
  42. package/dist/elements/Pill/index.js.map +1 -1
  43. package/dist/elements/Pill/index.scss +5 -0
  44. package/dist/elements/ViewDescription/index.scss +7 -0
  45. package/dist/exports/client/index.js +22 -22
  46. package/dist/exports/client/index.js.map +4 -4
  47. package/dist/fields/Password/index.d.ts.map +1 -1
  48. package/dist/fields/Password/index.js +1 -0
  49. package/dist/fields/Password/index.js.map +1 -1
  50. package/dist/fields/Tabs/index.d.ts.map +1 -1
  51. package/dist/fields/Tabs/index.js +3 -2
  52. package/dist/fields/Tabs/index.js.map +1 -1
  53. package/dist/forms/Form/index.d.ts.map +1 -1
  54. package/dist/forms/Form/index.js +6 -3
  55. package/dist/forms/Form/index.js.map +1 -1
  56. package/dist/forms/Form/types.d.ts +1 -0
  57. package/dist/forms/Form/types.d.ts.map +1 -1
  58. package/dist/forms/Form/types.js.map +1 -1
  59. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  60. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +10 -7
  61. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  62. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -1
  63. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  64. package/dist/forms/fieldSchemasToFormState/index.js +19 -18
  65. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  66. package/dist/forms/useField/index.d.ts.map +1 -1
  67. package/dist/forms/useField/index.js +1 -0
  68. package/dist/forms/useField/index.js.map +1 -1
  69. package/dist/styles.css +1 -1
  70. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  71. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +3 -2
  72. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
  73. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
  74. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +3 -2
  75. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
  76. package/dist/utilities/buildFormState.d.ts.map +1 -1
  77. package/dist/utilities/buildFormState.js +3 -1
  78. package/dist/utilities/buildFormState.js.map +1 -1
  79. package/dist/utilities/filterOutUploadFields.d.ts +3 -0
  80. package/dist/utilities/filterOutUploadFields.d.ts.map +1 -0
  81. package/dist/utilities/filterOutUploadFields.js +6 -0
  82. package/dist/utilities/filterOutUploadFields.js.map +1 -0
  83. package/dist/views/Edit/Auth/APIKey.d.ts.map +1 -1
  84. package/dist/views/Edit/Auth/APIKey.js +1 -0
  85. package/dist/views/Edit/Auth/APIKey.js.map +1 -1
  86. package/dist/views/Edit/index.d.ts.map +1 -1
  87. package/dist/views/Edit/index.js +5 -2
  88. package/dist/views/Edit/index.js.map +1 -1
  89. package/package.json +5 -5
@@ -0,0 +1,69 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ import React from 'react';
6
+ import { useAuth } from '../../../providers/Auth/index.js';
7
+ import { EditDepthProvider } from '../../../providers/EditDepth/index.js';
8
+ import { useTranslation } from '../../../providers/Translation/index.js';
9
+ import { Drawer, DrawerToggler } from '../../Drawer/index.js';
10
+ import { useFormsManager } from '../FormsManager/index.js';
11
+ import './index.scss';
12
+ import { EditManyBulkUploadsDrawerContent } from './DrawerContent.js';
13
+ export const baseClass = 'edit-many-bulk-uploads';
14
+ export const EditManyBulkUploads = props => {
15
+ const $ = _c(5);
16
+ const {
17
+ collection: t0,
18
+ collection
19
+ } = props;
20
+ const {
21
+ slug
22
+ } = t0 === undefined ? {} : t0;
23
+ const {
24
+ permissions
25
+ } = useAuth();
26
+ const {
27
+ t
28
+ } = useTranslation();
29
+ const {
30
+ forms
31
+ } = useFormsManager();
32
+ const collectionPermissions = permissions?.collections?.[slug];
33
+ const hasUpdatePermission = collectionPermissions?.update;
34
+ const drawerSlug = `edit-${slug}-bulk-uploads`;
35
+ if (!hasUpdatePermission) {
36
+ return null;
37
+ }
38
+ let t1;
39
+ if ($[0] !== collection || $[1] !== drawerSlug || $[2] !== forms || $[3] !== t) {
40
+ t1 = _jsxs("div", {
41
+ className: baseClass,
42
+ children: [_jsx(DrawerToggler, {
43
+ "aria-label": t("general:editAll"),
44
+ className: `${baseClass}__toggle`,
45
+ slug: drawerSlug,
46
+ children: t("general:editAll")
47
+ }), _jsx(EditDepthProvider, {
48
+ children: _jsx(Drawer, {
49
+ Header: null,
50
+ slug: drawerSlug,
51
+ children: _jsx(EditManyBulkUploadsDrawerContent, {
52
+ collection,
53
+ drawerSlug,
54
+ forms
55
+ })
56
+ })
57
+ })]
58
+ });
59
+ $[0] = collection;
60
+ $[1] = drawerSlug;
61
+ $[2] = forms;
62
+ $[3] = t;
63
+ $[4] = t1;
64
+ } else {
65
+ t1 = $[4];
66
+ }
67
+ return t1;
68
+ };
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useAuth","EditDepthProvider","useTranslation","Drawer","DrawerToggler","useFormsManager","EditManyBulkUploadsDrawerContent","baseClass","EditManyBulkUploads","props","$","collection","t0","slug","undefined","permissions","t","forms","collectionPermissions","collections","hasUpdatePermission","update","drawerSlug","t1","_jsxs","className","children","_jsx","Header"],"sources":["../../../../src/elements/BulkUpload/EditMany/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport React from 'react'\n\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { EditDepthProvider } from '../../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Drawer, DrawerToggler } from '../../Drawer/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport './index.scss'\nimport { EditManyBulkUploadsDrawerContent } from './DrawerContent.js'\n\nexport const baseClass = 'edit-many-bulk-uploads'\n\nexport type EditManyBulkUploadsProps = {\n readonly collection: ClientCollectionConfig\n}\n\nexport const EditManyBulkUploads: React.FC<EditManyBulkUploadsProps> = (props) => {\n const { collection: { slug } = {}, collection } = props\n\n const { permissions } = useAuth()\n\n const { t } = useTranslation()\n const { forms } = useFormsManager() // Access forms managed in bulk uploads\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update\n\n const drawerSlug = `edit-${slug}-bulk-uploads`\n\n if (!hasUpdatePermission) {\n return null\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:editAll')}\n className={`${baseClass}__toggle`}\n slug={drawerSlug}\n >\n {t('general:editAll')}\n </DrawerToggler>\n <EditDepthProvider>\n <Drawer Header={null} slug={drawerSlug}>\n <EditManyBulkUploadsDrawerContent\n collection={collection}\n drawerSlug={drawerSlug}\n forms={forms}\n />\n </Drawer>\n </EditDepthProvider>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,OAAOC,KAAA,MAAW;AAElB,SAASC,OAAO,QAAQ;AACxB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,EAAEC,aAAa,QAAQ;AACtC,SAASC,eAAe,QAAQ;AAChC,OAAO;AACP,SAASC,gCAAgC,QAAQ;AAEjD,OAAO,MAAMC,SAAA,GAAY;AAMzB,OAAO,MAAMC,mBAAA,GAA0DC,KAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EACrE;IAAAa,UAAA,EAAAC,EAAA;IAAAD;EAAA,IAAkDF,KAAA;EAA9B;IAAAI;EAAA,IAAAD,EAAa,KAAAE,SAAA,QAAbF,EAAa;EAEjC;IAAAG;EAAA,IAAwBf,OAAA;EAExB;IAAAgB;EAAA,IAAcd,cAAA;EACd;IAAAe;EAAA,IAAkBZ,eAAA;EAElB,MAAAa,qBAAA,GAA8BH,WAAA,EAAAI,WAAA,GAA2BN,IAAA;EACzD,MAAAO,mBAAA,GAA4BF,qBAAA,EAAAG,MAAA;EAE5B,MAAAC,UAAA,GAAmB,QAAQT,IAAA,eAAmB;EAAA,KAEzCO,mBAAA;IAAA;EAAA;EAAA,IAAAG,EAAA;EAAA,IAAAb,CAAA,QAAAC,UAAA,IAAAD,CAAA,QAAAY,UAAA,IAAAZ,CAAA,QAAAO,KAAA,IAAAP,CAAA,QAAAM,CAAA;IAKHO,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAAlB,SAAA;MAAAmB,QAAA,GACCC,IAAA,CAAAvB,aAAA;QAAA,cACcY,CAAA,CAAE;QAAAS,SAAA,EACH,GAAAlB,SAAA,UAAsB;QAAAM,IAAA,EAC3BS,UAAA;QAAAI,QAAA,EAELV,CAAA,CAAE;MAAA,C,GAELW,IAAA,CAAA1B,iBAAA;QAAAyB,QAAA,EACEC,IAAA,CAAAxB,MAAA;UAAAyB,MAAA;UAAAf,IAAA,EAA4BS,UAAA;UAAAI,QAAA,EAC1BC,IAAA,CAAArB,gCAAA;YAAAK,UAAA;YAAAW,UAAA;YAAAL;UAAA,C;;;;;;;;;;;;SAVNM,E;CAmBJ","ignoreList":[]}
@@ -0,0 +1,201 @@
1
+ @import '../../../scss/styles.scss';
2
+
3
+ @layer payload-default {
4
+ .edit-many-bulk-uploads {
5
+ &__toggle {
6
+ font-size: 1rem;
7
+ line-height: base(1.2);
8
+ display: inline-flex;
9
+ background: var(--theme-elevation-150);
10
+ color: var(--theme-elevation-800);
11
+ border-radius: $style-radius-s;
12
+ white-space: nowrap;
13
+ overflow: hidden;
14
+ text-overflow: ellipsis;
15
+ border: 0;
16
+ padding: 0 base(0.4);
17
+ align-items: center;
18
+ cursor: pointer;
19
+ text-decoration: none;
20
+
21
+ &:active,
22
+ &:focus {
23
+ outline: none;
24
+ }
25
+
26
+ &:hover {
27
+ background: var(--theme-elevation-100);
28
+ }
29
+
30
+ &:active {
31
+ background: var(--theme-elevation-100);
32
+ }
33
+ }
34
+
35
+ &__form {
36
+ height: 100%;
37
+ }
38
+
39
+ &__main {
40
+ width: calc(100% - #{base(15)});
41
+ display: flex;
42
+ flex-direction: column;
43
+ min-height: 100%;
44
+ }
45
+
46
+ &__header {
47
+ display: flex;
48
+ margin-top: base(2.5);
49
+ margin-bottom: base(1);
50
+ width: 100%;
51
+
52
+ &__title {
53
+ margin: 0;
54
+ flex-grow: 1;
55
+ }
56
+
57
+ &__close {
58
+ border: 0;
59
+ background-color: transparent;
60
+ padding: 0;
61
+ cursor: pointer;
62
+ overflow: hidden;
63
+ width: base(1);
64
+ height: base(1);
65
+
66
+ svg {
67
+ width: base(2);
68
+ height: base(2);
69
+ position: relative;
70
+ inset-inline-start: base(-0.5);
71
+ top: base(-0.5);
72
+
73
+ .stroke {
74
+ stroke-width: 2px;
75
+ vector-effect: non-scaling-stroke;
76
+ }
77
+ }
78
+ }
79
+ }
80
+
81
+ &__edit {
82
+ padding-top: base(1);
83
+ padding-bottom: base(2);
84
+ flex-grow: 1;
85
+ }
86
+ [dir='rtl'] &__sidebar-wrap {
87
+ left: 0;
88
+ border-right: 1px solid var(--theme-elevation-100);
89
+ right: auto;
90
+ }
91
+
92
+ &__sidebar-wrap {
93
+ position: fixed;
94
+ width: base(15);
95
+ height: 100%;
96
+ top: 0;
97
+ right: 0;
98
+ overflow: visible;
99
+ border-left: 1px solid var(--theme-elevation-100);
100
+ }
101
+
102
+ &__sidebar {
103
+ width: 100%;
104
+ height: 100%;
105
+ overflow-y: auto;
106
+ }
107
+
108
+ &__sidebar-sticky-wrap {
109
+ display: flex;
110
+ flex-direction: column;
111
+ min-height: 100%;
112
+ }
113
+
114
+ &__collection-actions,
115
+ &__meta,
116
+ &__sidebar-fields {
117
+ [dir='ltr'] & {
118
+ padding-left: base(1.5);
119
+ }
120
+ [dir='rtl'] & {
121
+ padding-right: base(1.5);
122
+ }
123
+ }
124
+
125
+ &__document-actions {
126
+ padding-right: $baseline;
127
+ position: sticky;
128
+ top: 0;
129
+ z-index: var(--z-nav);
130
+
131
+ > * {
132
+ position: relative;
133
+ z-index: 1;
134
+ }
135
+
136
+ @include mid-break {
137
+ @include blur-bg;
138
+ }
139
+ }
140
+
141
+ &__document-actions {
142
+ display: flex;
143
+ flex-wrap: wrap;
144
+ padding: base(1);
145
+ gap: base(0.5);
146
+
147
+ .form-submit {
148
+ width: calc(50% - #{base(1)});
149
+
150
+ @include mid-break {
151
+ width: auto;
152
+ flex-grow: 1;
153
+ }
154
+
155
+ .btn {
156
+ width: 100%;
157
+ padding-left: base(0.5);
158
+ padding-right: base(0.5);
159
+ margin-bottom: 0;
160
+ }
161
+ }
162
+ }
163
+
164
+ @include mid-break {
165
+ &__main {
166
+ width: 100%;
167
+ min-height: initial;
168
+ }
169
+
170
+ &__sidebar-wrap {
171
+ position: static;
172
+ width: 100%;
173
+ height: initial;
174
+ }
175
+
176
+ &__form {
177
+ display: block;
178
+ }
179
+
180
+ &__edit {
181
+ padding-top: 0;
182
+ padding-bottom: 0;
183
+ }
184
+
185
+ &__document-actions {
186
+ position: fixed;
187
+ bottom: 0;
188
+ left: 0;
189
+ right: 0;
190
+ top: auto;
191
+ z-index: var(--z-nav);
192
+ }
193
+
194
+ &__document-actions,
195
+ &__sidebar-fields {
196
+ padding-left: var(--gutter-h);
197
+ padding-right: var(--gutter-h);
198
+ }
199
+ }
200
+ }
201
+ }
@@ -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;AAezB,OAAO,cAAc,CAAA;AAOrB,wBAAgB,WAAW,sBAsK1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,OAAO,cAAc,CAAA;AASrB,wBAAgB,WAAW,sBA2K1B"}
@@ -17,9 +17,9 @@ import { Pill } from '../../Pill/index.js';
17
17
  import { ShimmerEffect } from '../../ShimmerEffect/index.js';
18
18
  import { Thumbnail } from '../../Thumbnail/index.js';
19
19
  import { Actions } from '../ActionsBar/index.js';
20
+ import './index.scss';
20
21
  import { AddFilesView } from '../AddFilesView/index.js';
21
22
  import { useFormsManager } from '../FormsManager/index.js';
22
- import './index.scss';
23
23
  import { useBulkUpload } from '../index.js';
24
24
  const addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files';
25
25
  const baseClass = 'file-selections';
@@ -180,7 +180,8 @@ export function FileSidebar() {
180
180
  })]
181
181
  }), _jsxs("div", {
182
182
  className: `${baseClass}__header__actions`,
183
- children: [typeof maxFiles === "number" && totalFileCount < maxFiles ? _jsx(Pill, {
183
+ children: [(typeof maxFiles === "number" ? totalFileCount < maxFiles : true) ? _jsx(Pill, {
184
+ className: `${baseClass}__header__addFile`,
184
185
  onClick: () => openModal(addMoreFilesDrawerSlug),
185
186
  children: t("upload:addFile")
186
187
  }) : null, _jsxs(Button, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","useWindowInfo","isImage","React","ChevronIcon","XIcon","useTranslation","AnimateHeight","Button","Drawer","ErrorPill","Pill","ShimmerEffect","Thumbnail","Actions","AddFilesView","useFormsManager","useBulkUpload","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","_temp2","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","height","Array","from","map","_temp3","file_0","animationDelay","prev","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'\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 { Thumbnail } from '../../Thumbnail/index.js'\nimport { Actions } from '../ActionsBar/index.js'\nimport { AddFilesView } from '../AddFilesView/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport './index.scss'\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 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 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":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,OAAO,QAAQ;AACxB,OAAOC,KAAA,MAAW;AAElB,SAASC,WAAW,QAAQ;AAC5B,SAASC,KAAK,QAAQ;AACtB,SAASC,cAAc,QAAQ;AAC/B,SAASC,aAAa,QAAQ;AAC9B,SAASC,MAAM,QAAQ;AACvB,SAASC,MAAM,QAAQ;AACvB,SAASC,SAAS,QAAQ;AAC1B,SAASC,IAAI,QAAQ;AACrB,SAASC,aAAa,QAAQ;AAC9B,SAASC,SAAS,QAAQ;AAC1B,SAASC,OAAO,QAAQ;AACxB,SAASC,YAAY,QAAQ;AAC7B,SAASC,eAAe,QAAQ;AAChC,OAAO;AACP,SAASC,aAAa,QAAQ;AAE9B,MAAMC,sBAAA,GAAyB;AAE/B,MAAMC,SAAA,GAAY;AAElB,OAAO,SAAAC,YAAA;EAAA,MAAAC,CAAA,GAAAtB,EAAA;EACL;IAAAuB,WAAA;IAAAC,QAAA;IAAAC,KAAA;IAAAC,cAAA;IAAAC,UAAA;IAAAC,cAAA;IAAAC,aAAA;IAAAC;EAAA,IASIb,eAAA;EACJ;IAAAc,YAAA;IAAAC;EAAA,IAAmCd,aAAA;EACnC;IAAAe,IAAA;IAAAC;EAAA,IAAoB3B,cAAA;EACpB;IAAA4B,UAAA;IAAAC;EAAA,IAAkCnC,QAAA;EAClC,OAAAoC,SAAA,EAAAC,YAAA,IAAkClC,KAAA,CAAAmC,QAAA,MAAe;EACjD;IAAAC;EAAA,IAAwBtC,aAAA;EAAA,IAAAuC,EAAA;EAAA,IAAAnB,CAAA,QAAAK,UAAA;IAGtBc,EAAA,GAAAC,aAAA;MACEf,UAAA,CAAWe,aAAA;IAAA;IACbpB,CAAA,MAAAK,UAAA;IAAAL,CAAA,MAAAmB,EAAA;EAAA;IAAAA,EAAA,GAAAnB,CAAA;EAAA;EAHF,MAAAqB,gBAAA,GAAyBF,EAIX;EAAA,IAAAG,EAAA;EAAA,IAAAtB,CAAA,QAAAE,QAAA,IAAAF,CAAA,QAAAa,UAAA;IAIZS,EAAA,GAAAC,QAAA;MACOrB,QAAA,CAASqB,QAAA;MACdV,UAAA,CAAAhB,sBAAW;IAAA;IACbG,CAAA,MAAAE,QAAA;IAAAF,CAAA,MAAAa,UAAA;IAAAb,CAAA,MAAAsB,EAAA;EAAA;IAAAA,EAAA,GAAAtB,CAAA;EAAA;EAJF,MAAAwB,cAAA,GAAuBF,EAKC;EAGxB,MAAAG,WAAA,GAAAC,KAAA;EASA,MAAAC,cAAA,GAAuBvB,cAAA,GAAiBK,YAAA,CAAAmB,MAAA,GAAsBzB,KAAA,CAAAyB,MAAY;EAI/C,MAAAC,EAAA,GAAAd,SAAA,IAAa,GAAAjB,SAAA,gBAA4B;EAAA,IAAAgC,EAAA;EAAA,IAAA9B,CAAA,QAAA6B,EAAA;IAArDC,EAAA,IAAAhC,SAAA,EAAY+B,EAAyC,EAAAE,MAAA,CAAAC,OAAS;IAAAhC,CAAA,MAAA6B,EAAA;IAAA7B,CAAA,MAAA8B,EAAA;EAAA;IAAAA,EAAA,GAAA9B,CAAA;EAAA;EAA9D,MAAAiC,EAAA,GAAAH,EAA8D,CAAAI,IAAA,CAAc;EAAA,IAAAC,EAAA;EAAA,IAAAnC,CAAA,QAAAC,WAAA,IAAAD,CAAA,QAAAkB,WAAA,CAAAkB,CAAA,IAAApC,CAAA,QAAAa,UAAA,IAAAb,CAAA,SAAAG,KAAA,IAAAH,CAAA,SAAAwB,cAAA,IAAAxB,CAAA,SAAAqB,gBAAA,IAAArB,CAAA,SAAAW,IAAA,IAAAX,CAAA,SAAAS,YAAA,IAAAT,CAAA,SAAAI,cAAA,IAAAJ,CAAA,SAAAU,QAAA,IAAAV,CAAA,SAAAc,SAAA,IAAAd,CAAA,SAAAM,cAAA,IAAAN,CAAA,SAAAe,SAAA,IAAAf,CAAA,SAAAY,CAAA,IAAAZ,CAAA,SAAAiC,EAAA,IAAAjC,CAAA,SAAAO,aAAA,IAAAP,CAAA,SAAAQ,eAAA,IAAAR,CAAA,SAAA2B,cAAA;IAAA,IAAAU,EAAA;IAAA,IAAArC,CAAA,SAAAsC,MAAA,CAAAC,GAAA;MAwBtEF,EAAA,GAAAA,CAAA,KAAMrB,YAAA,CAAAwB,MAAwB;MAAAxC,CAAA,OAAAqC,EAAA;IAAA;MAAAA,EAAA,GAAArC,CAAA;IAAA;IAAA,IAAAyC,EAAA;IAAA,IAAAzC,CAAA,SAAAa,UAAA;MAe3B4B,EAAA,GAAAA,CAAA,KAAM5B,UAAA,CAAAhB,sBAAW;MAAAG,CAAA,OAAAa,UAAA;MAAAb,CAAA,OAAAyC,EAAA;IAAA;MAAAA,EAAA,GAAAzC,CAAA;IAAA;IAAA,IAAA0C,EAAA;IAAA,IAAA1C,CAAA,SAAAC,WAAA,IAAAD,CAAA,SAAAqB,gBAAA,IAAArB,CAAA,SAAAW,IAAA,IAAAX,CAAA,SAAAM,cAAA,IAAAN,CAAA,SAAAY,CAAA,IAAAZ,CAAA,SAAAO,aAAA;MAwBpBmC,EAAA,GAAAA,CAAAC,EAAA,EAAAC,OAAA;QAAC;UAAAC,UAAA;UAAAC;QAAA,IAAAH,EAAyB;QACnC,MAAAI,WAAA,GAAoBD,SAAA,CAAAE,IAAA,CAAAC,KAAA;QAAoB,OAGtCC,KAAA,CAAC;UAAAC,SAAA,EACY,CACT,GAAArD,SAAA,oBAAgC,EAChCsD,OAAA,KAAUnD,WAAA,IAAe,GAAAH,SAAA,4BAAwC,EACjE+C,UAAA,IAAcA,UAAA,IAAa,IAAK,GAAA/C,SAAA,2BAAuC,EAAAiC,MAAA,CAAAC,OAE/D,EAAAE,IAAA,CACF;UAAAmB,QAAA,GAGRH,KAAA,CAAC;YAAAC,SAAA,EACY,GAAArD,SAAA,WAAuB;YAAAwD,OAAA,EAAAA,CAAA,KACnBhD,cAAA,CAAe8C,OAAA;YAAAG,IAAA,EACzB;YAAAF,QAAA,GAELG,IAAA,CAAAhE,SAAA;cAAA2D,SAAA,EACa,GAAArD,SAAA,aAAyB;cAAA2D,OAAA,EAC3B5E,OAAA,CAAQkE,WAAA,CAAAQ,IAAgB,IAAIhD,aAAa,CAAC6C,OAAA,IAAAM;YAAS,C,GAE9DF,IAAA,CAAC;cAAAL,SAAA,EAAe,GAAArD,SAAA,eAA2B;cAAAuD,QAAA,EACzCG,IAAA,CAAC;gBAAAL,SAAA,EAAa,GAAArD,SAAA,YAAwB;gBAAA6D,KAAA,EAASZ,WAAA,CAAAa,IAAA;gBAAAP,QAAA,EAC5CN,WAAA,CAAAa;cAAA,C;gBAGLJ,IAAA,CAAC;cAAAL,SAAA,EAAa,GAAArD,SAAA,YAAwB;cAAAuD,QAAA,EAAG5B,WAAA,CAAYsB,WAAA;YAAA,C,GACrDS,IAAA,CAAC;cAAAL,SAAA,EAAe,GAAArD,SAAA,YAAAA,SAAA,oBAAqD;cAAAuD,QAAA,EACnEG,IAAA,CAAAxE,KAAA,IAAC;YAAA,C,GAGF6D,UAAA,GACCW,IAAA,CAAAnE,SAAA;cAAA8D,SAAA,EACa,GAAArD,SAAA,cAA0B;cAAA+D,KAAA,EAC9BhB,UAAA;cAAAlC;YAAA,C,QAGP;UAAA,C,GAGN6C,IAAA,CAAC;YAAA,cACa5C,CAAA,CAAE;YAAAuC,SAAA,EACH,GAAArD,SAAA,YAAAA,SAAA,mBAAoD;YAAAwD,OAAA,EAAAA,CAAA,KAChDjC,gBAAA,CAAiB+B,OAAA;YAAAG,IAAA,EAC3B;YAAAF,QAAA,EAELG,IAAA,CAAAxE,KAAA,IAAC;UAAA,C;WApCEoE,OAAA;MAAA;MAwCXpD,CAAA,OAAAC,WAAA;MAAAD,CAAA,OAAAqB,gBAAA;MAAArB,CAAA,OAAAW,IAAA;MAAAX,CAAA,OAAAM,cAAA;MAAAN,CAAA,OAAAY,CAAA;MAAAZ,CAAA,OAAAO,aAAA;MAAAP,CAAA,OAAA0C,EAAA;IAAA;MAAAA,EAAA,GAAA1C,CAAA;IAAA;IApHRmC,EAAA,GAAAe,KAAA,CAAC;MAAAC,SAAA,EACYlB,EAA4E;MAAAoB,QAAA,GAEtFnC,WAAA,CAAAkB,CAAA,IAAiBrB,SAAA,GAAYyC,IAAA,CAAC;QAAAL,SAAA,EAAe,GAAArD,SAAA;MAA0B,C,QAAO,EAC/EoD,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAArD,SAAA,UAAsB;QAAAuD,QAAA,GACpCH,KAAA,CAAC;UAAAC,SAAA,EAAe,GAAArD,SAAA,gBAA4B;UAAAuD,QAAA,GAC1CH,KAAA,CAAC;YAAAC,SAAA,EAAe,GAAArD,SAAA,gBAA4B;YAAAuD,QAAA,GAC1CG,IAAA,CAAAnE,SAAA;cAAAwE,KAAA,EAAkBrD,eAAA;cAAAG,IAAA;cAAAmD,WAAA;YAAA,C,GAClBN,IAAA,CAAC;cAAAH,QAAA,EACCH,KAAA,CAAC;gBAAAS,KAAA,EACQ,GAAGhC,cAAA,IAAkBf,CAAA,CAAEe,cAAA,IAAiB,GAAI,yBAAyB,wBAAwB;gBAAA0B,QAAA,GAEnG1B,cAAA,EAAgB,KAChBf,CAAA,CAAEe,cAAA,IAAiB,GAAI,yBAAyB;cAAA,C;;cAKvDuB,KAAA,CAAC;YAAAC,SAAA,EAAe,GAAArD,SAAA,mBAA+B;YAAAuD,QAAA,GAC5C,OAAO3C,QAAA,KAAa,YAAYiB,cAAA,GAAiBjB,QAAA,GAChD8C,IAAA,CAAAlE,IAAA;cAAAgE,OAAA,EAAAA,CAAA,KAAqBxC,SAAA,CAAAjB,sBAAU;cAAAwD,QAAA,EAA0BzC,CAAA,CAAE;YAAA,C,QACzD,EACJsC,KAAA,CAAA/D,MAAA;cAAA4E,WAAA,EACc;cAAAZ,SAAA,EACD,GAAArD,SAAA,WAAuB;cAAAwD,OAAA,EACzBjB,EAA8B;cAAAgB,QAAA,GAEvCG,IAAA,CAAC;gBAAAL,SAAA,EAAgB,GAAArD,SAAA,kBAA8B;gBAAAuD,QAAA,EAC7CH,KAAA,CAAC;kBAAAS,KAAA,EACQ,GAAGhC,cAAA,IAAkBf,CAAA,CAAEe,cAAA,IAAiB,GAAI,yBAAyB,wBAAwB;kBAAA0B,QAAA,GAEnG1B,cAAA,EAAgB,KAChBf,CAAA,CAAEe,cAAA,IAAiB,GAAI,yBAAyB;gBAAA,C;kBAGrD6B,IAAA,CAAAzE,WAAA;gBAAAiF,SAAA,EAAwBjD,SAAA,GAAY,SAAS;cAAA,C;gBAG/CyC,IAAA,CAAApE,MAAA;cAAA6E,MAAA;cAAAC,MAAA;cAAAC,IAAA,EAAAtE,sBAAA;cAAAwD,QAAA,EACEG,IAAA,CAAA9D,YAAA;gBAAA0E,QAAA,EACY3B,EAAiB;gBAAA4B,MAAA,EACnB7C;cAAA,C;;;YAMhBgC,IAAA,CAAC;UAAAL,SAAA,EAAe,GAAArD,SAAA,4BAAwC;UAAAuD,QAAA,EACtDG,IAAA,CAAA/D,OAAA,IAAC;QAAA,C;UAIL+D,IAAA,CAAC;QAAAL,SAAA,EAAe,GAAArD,SAAA,kBAA8B;QAAAuD,QAAA,EAC5CG,IAAA,CAAAtE,aAAA;UAAAoF,MAAA,EAAuB,CAACpD,WAAA,CAAAkB,CAAA,IAAiBrB,SAAA,GAAY,UAAS;UAAAsC,QAAA,EAC5DH,KAAA,CAAC;YAAAC,SAAA,EAAe,GAAArD,SAAA,kBAA8B;YAAAuD,QAAA,GAC3CjD,cAAA,IAAkBD,KAAA,CAAAyB,MAAA,MAAiB,IAAKnB,YAAA,CAAAmB,MAAA,IAAsB,GAC3D2C,KAAA,CAAAC,IAAA,CAAW/D,YAAA,EAAAgE,GAAA,CAAAC,MAIF,QAGT,EACHvE,KAAA,CAAAsE,GAAA,CAAU/B,EAoDX;UAAA,C;;;;;;;;;;;;;;;;;;;;;;;;;;SApHRP,E;;AA5CG,SAAAuC,OAAAC,MAAA,EAAAvB,KAAA;EAAA,OAqGWI,IAAA,CAAAjE,aAAA;IAAAqF,cAAA,EACkB,QAAQxB,KAAA,aAAkB;IAAAkB,MAAA,EACnC;EAAA,GACFlB,KAAA;AAAA;AAxGlB,SAAAZ,OAAAqC,IAAA;EAAA,QAqE8CA,IAAA;AAAA;AArE9C,SAAAnD,MAAAsB,IAAA;EAiCH,MAAA8B,IAAA,GAAa9B,IAAA,CAAA8B,IAAA;EACb,MAAAC,CAAA,GAAUD,IAAA,MAAS,OAAQE,IAAA,CAAAC,KAAA,CAAWD,IAAA,CAAAE,GAAA,CAASJ,IAAA,IAAQE,IAAA,CAAAE,GAAA,KAAS;EAChE,MAAAC,QAAA,GAAiBJ,CAAA,IAAI,QAAQ;EAC7B,MAAAK,aAAA,GACE,CAACN,IAAA,GAAOE,IAAA,CAAAK,GAAA,OAAeN,CAAA,CAAC,EAAAO,OAAA,CAAWH,QAAA,IAAY,OAAO,KAAK,MAAM,MAAM,MAAM,MAAMJ,CAAA,CAAE;EAAA,OAChFK,aAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","useWindowInfo","isImage","React","ChevronIcon","XIcon","useTranslation","AnimateHeight","Button","Drawer","ErrorPill","Pill","ShimmerEffect","Thumbnail","Actions","AddFilesView","useFormsManager","useBulkUpload","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","_temp2","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","height","Array","from","map","_temp3","file_0","animationDelay","prev","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'\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 { Thumbnail } from '../../Thumbnail/index.js'\nimport { Actions } from '../ActionsBar/index.js'\nimport './index.scss'\nimport { AddFilesView } from '../AddFilesView/index.js'\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 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 : true) ? (\n <Pill\n className={`${baseClass}__header__addFile`}\n onClick={() => openModal(addMoreFilesDrawerSlug)}\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, 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":[]}
@@ -185,9 +185,14 @@
185
185
 
186
186
  &__header__actions {
187
187
  display: flex;
188
+ align-items: center;
188
189
  gap: var(--base);
189
190
  }
190
191
 
192
+ &__header__addFile {
193
+ height: fit-content;
194
+ }
195
+
191
196
  &__toggler {
192
197
  display: none;
193
198
  margin: 0;
@@ -4,6 +4,7 @@ import type { State } from './reducer.js';
4
4
  type FormsManagerContext = {
5
5
  readonly activeIndex: State['activeIndex'];
6
6
  readonly addFiles: (filelist: FileList) => Promise<void>;
7
+ readonly bulkUpdateForm: (updatedFields: Record<string, unknown>, afterStateUpdate?: () => void) => Promise<void>;
7
8
  readonly collectionSlug: string;
8
9
  readonly docPermissions?: SanitizedDocumentPermissions;
9
10
  readonly documentSlots: DocumentSlots;
@@ -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,aAAa,EAAa,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAI3F,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,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,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;AA4BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAuXnE;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,aAAa,EAAa,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAI3F,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,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;AA6BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAsanE;AAED,wBAAgB,eAAe,wBAE9B"}
@@ -20,6 +20,7 @@ import { formsManagementReducer } from './reducer.js';
20
20
  const Context = /*#__PURE__*/React.createContext({
21
21
  activeIndex: 0,
22
22
  addFiles: () => Promise.resolve(),
23
+ bulkUpdateForm: () => null,
23
24
  collectionSlug: '',
24
25
  docPermissions: undefined,
25
26
  documentSlots: {},
@@ -182,7 +183,8 @@ export function FormsManagerProvider({
182
183
  locale: code,
183
184
  operation: 'create',
184
185
  renderAllFields: true,
185
- schemaPath: collectionSlug
186
+ schemaPath: collectionSlug,
187
+ skipValidation: true
186
188
  });
187
189
  initialStateRef.current = formStateWithoutFiles;
188
190
  setHasInitializedState(true);
@@ -269,39 +271,37 @@ export function FormsManagerProvider({
269
271
  newDocs.push(json_0.doc);
270
272
  }
271
273
  // should expose some sort of helper for this
272
- if (json_0?.errors?.length) {
273
- const [fieldErrors, nonFieldErrors] = json_0.errors.reduce(([fieldErrs, nonFieldErrs], err) => {
274
- const newFieldErrs = [];
275
- const newNonFieldErrs = [];
276
- if (err?.message) {
277
- newNonFieldErrs.push(err);
278
- }
279
- if (Array.isArray(err?.data?.errors)) {
280
- err.data?.errors.forEach(dataError => {
281
- if (dataError?.path) {
282
- newFieldErrs.push(dataError);
283
- } else {
284
- newNonFieldErrs.push(dataError);
285
- }
286
- });
287
- }
288
- return [[...fieldErrs, ...newFieldErrs], [...nonFieldErrs, ...newNonFieldErrs]];
289
- }, [[], []]);
274
+ const [fieldErrors, nonFieldErrors] = (json_0?.errors || []).reduce(([fieldErrs, nonFieldErrs], err) => {
275
+ const newFieldErrs = [];
276
+ const newNonFieldErrs = [];
277
+ if (err?.message) {
278
+ newNonFieldErrs.push(err);
279
+ }
280
+ if (Array.isArray(err?.data?.errors)) {
281
+ err.data?.errors.forEach(dataError => {
282
+ if (dataError?.path) {
283
+ newFieldErrs.push(dataError);
284
+ } else {
285
+ newNonFieldErrs.push(dataError);
286
+ }
287
+ });
288
+ }
289
+ return [[...fieldErrs, ...newFieldErrs], [...nonFieldErrs, ...newNonFieldErrs]];
290
+ }, [[], []]);
291
+ currentForms[i_1] = {
292
+ errorCount: fieldErrors.length,
293
+ formState: fieldReducer(currentForms[i_1].formState, {
294
+ type: 'ADD_SERVER_ERRORS',
295
+ errors: fieldErrors
296
+ })
297
+ };
298
+ if (req.status === 413) {
299
+ // file too large
290
300
  currentForms[i_1] = {
291
- errorCount: fieldErrors.length,
292
- formState: fieldReducer(currentForms[i_1].formState, {
293
- type: 'ADD_SERVER_ERRORS',
294
- errors: fieldErrors
295
- })
301
+ ...currentForms[i_1],
302
+ errorCount: currentForms[i_1].errorCount + 1
296
303
  };
297
- if (req.status === 413) {
298
- // file too large
299
- currentForms[i_1] = {
300
- ...currentForms[i_1],
301
- errorCount: currentForms[i_1].errorCount + 1
302
- };
303
- toast.error(nonFieldErrors[0]?.message);
304
- }
304
+ toast.error(nonFieldErrors[0]?.message);
305
305
  }
306
306
  } catch (_) {
307
307
  // swallow
@@ -337,6 +337,43 @@ export function FormsManagerProvider({
337
337
  }
338
338
  });
339
339
  }, [actionURL, activeIndex, forms, onSuccess, t, closeModal, drawerSlug]);
340
+ const bulkUpdateForm = React.useCallback(async (updatedFields, afterStateUpdate) => {
341
+ for (let i_2 = 0; i_2 < forms.length; i_2++) {
342
+ Object.entries(updatedFields).forEach(([path, value]) => {
343
+ if (forms[i_2].formState[path]) {
344
+ forms[i_2].formState[path].value = value;
345
+ dispatch({
346
+ type: 'UPDATE_FORM',
347
+ errorCount: forms[i_2].errorCount,
348
+ formState: forms[i_2].formState,
349
+ index: i_2
350
+ });
351
+ }
352
+ });
353
+ if (typeof afterStateUpdate === 'function') {
354
+ afterStateUpdate();
355
+ }
356
+ if (hasSubmitted) {
357
+ const {
358
+ state: state_0
359
+ } = await getFormState({
360
+ collectionSlug,
361
+ docPermissions,
362
+ docPreferences: null,
363
+ formState: forms[i_2].formState,
364
+ operation: 'create',
365
+ schemaPath: collectionSlug
366
+ });
367
+ const newFormErrorCount = Object.values(state_0).reduce((acc_0, value_0) => value_0?.valid === false ? acc_0 + 1 : acc_0, 0);
368
+ dispatch({
369
+ type: 'UPDATE_FORM',
370
+ errorCount: newFormErrorCount,
371
+ formState: state_0,
372
+ index: i_2
373
+ });
374
+ }
375
+ }
376
+ }, [collectionSlug, docPermissions, forms, getFormState, hasSubmitted]);
340
377
  React.useEffect(() => {
341
378
  if (!collectionSlug) {
342
379
  return;
@@ -364,6 +401,7 @@ export function FormsManagerProvider({
364
401
  value: {
365
402
  activeIndex: state.activeIndex,
366
403
  addFiles,
404
+ bulkUpdateForm,
367
405
  collectionSlug,
368
406
  docPermissions,
369
407
  documentSlots,