@payloadcms/ui 3.84.1 → 3.85.1

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 (35) hide show
  1. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  2. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  3. package/dist/elements/BulkUpload/FormsManager/index.js +26 -10
  4. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  5. package/dist/elements/DraggableSortable/index.js.map +1 -1
  6. package/dist/elements/EditMany/index.js.map +1 -1
  7. package/dist/elements/FolderView/FolderFileTable/index.js.map +1 -1
  8. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  9. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  10. package/dist/elements/ListControls/index.d.ts.map +1 -1
  11. package/dist/elements/ListControls/index.js +17 -21
  12. package/dist/elements/ListControls/index.js.map +1 -1
  13. package/dist/exports/client/{CodeEditor-67I2RYO2.js → CodeEditor-5OM6KTW4.js} +2 -2
  14. package/dist/exports/client/{DatePicker-T2DMDMM5.js → DatePicker-IJKMHICL.js} +2 -2
  15. package/dist/exports/client/{chunk-QP5KC7MG.js → chunk-2GZJJKQF.js} +1 -1
  16. package/dist/exports/client/{chunk-QP5KC7MG.js.map → chunk-2GZJJKQF.js.map} +2 -2
  17. package/dist/exports/client/{chunk-WDZJLNNB.js → chunk-B52EQI3B.js} +1 -1
  18. package/dist/exports/client/{chunk-WDZJLNNB.js.map → chunk-B52EQI3B.js.map} +1 -1
  19. package/dist/exports/client/index.js +12 -12
  20. package/dist/exports/client/index.js.map +4 -4
  21. package/dist/fields/Checkbox/Input.js.map +1 -1
  22. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  23. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +42 -33
  24. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  25. package/dist/forms/useField/index.js.map +1 -1
  26. package/dist/providers/Config/index.js.map +1 -1
  27. package/dist/providers/TableColumns/RenderDefaultCell/index.js +1 -1
  28. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
  29. package/dist/scss/app.scss +1 -1
  30. package/dist/scss/styles.scss +6 -6
  31. package/dist/scss/toastify.scss +2 -2
  32. package/dist/views/CollectionFolder/ListSelection/index.js.map +1 -1
  33. package/package.json +8 -8
  34. /package/dist/exports/client/{CodeEditor-67I2RYO2.js.map → CodeEditor-5OM6KTW4.js.map} +0 -0
  35. /package/dist/exports/client/{DatePicker-T2DMDMM5.js.map → DatePicker-IJKMHICL.js.map} +0 -0
@@ -1 +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 { EditManyBulkUploadsDrawerContent } from './DrawerContent.js'\nimport './index.scss'\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,SAASC,gCAAgC,QAAQ;AACjD,OAAO;AAEP,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":[]}
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 { EditManyBulkUploadsDrawerContent } from './DrawerContent.js'\nimport './index.scss'\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,SAASC,gCAAgC,QAAQ;AACjD,OAAO;AAEP,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;UAAAA,QAAA,EAC1BK,IAAA,CAAArB,gCAAA;YAAAK,UAAA;YAAAW,UAAA;YAAAL;UAAA,C;;;;;;;;;;;;SAVNM,E;CAmBJ","ignoreList":[]}
@@ -1 +1 @@
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;AAKhB,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,qBA+mBnE;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;AAKhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAiBzC,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,qBAgoBnE;AAED,wBAAgB,eAAe,wBAE9B"}
@@ -16,6 +16,7 @@ import { useUploadHandlers } from '../../../providers/UploadHandlers/index.js';
16
16
  import { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js';
17
17
  import { LoadingOverlay } from '../../Loading/index.js';
18
18
  import { useLoadingOverlay } from '../../LoadingOverlay/index.js';
19
+ import { FieldErrorsToast } from '../../Toasts/fieldErrors.js';
19
20
  import { useBulkUpload } from '../index.js';
20
21
  import { createFormData } from './createFormData.js';
21
22
  import { formsManagementReducer } from './reducer.js';
@@ -323,7 +324,8 @@ export function FormsManagerProvider({
323
324
  method: 'POST'
324
325
  });
325
326
  const json_0 = await req.json();
326
- if (req.status === 201 && json_0?.doc) {
327
+ const wasSuccessful = req.status === 201 && json_0?.doc;
328
+ if (wasSuccessful) {
327
329
  newDocs.push({
328
330
  collectionSlug,
329
331
  doc: json_0.doc,
@@ -394,14 +396,28 @@ export function FormsManagerProvider({
394
396
  }
395
397
  toast.error(nonFieldErrors[0]?.message);
396
398
  } else {
399
+ let errorCount_0 = fieldErrors.length;
400
+ // Fall back to non-field errors when no field errors are present
401
+ // (e.g., APIError thrown from a hook).
402
+ if (!wasSuccessful && errorCount_0 === 0) {
403
+ errorCount_0 = nonFieldErrors.length || 1;
404
+ }
397
405
  currentForms[i_0] = {
398
- errorCount: fieldErrors.length,
406
+ errorCount: errorCount_0,
399
407
  formID: currentForms[i_0].formID,
400
408
  formState: fieldReducer(currentForms[i_0].formState, {
401
409
  type: 'ADD_SERVER_ERRORS',
402
410
  errors: fieldErrors
403
411
  })
404
412
  };
413
+ // Mimic forms/Form/index.tsx.
414
+ if (!wasSuccessful) {
415
+ nonFieldErrors.forEach(err_0 => {
416
+ toast.error(/*#__PURE__*/_jsx(FieldErrorsToast, {
417
+ errorMessage: err_0.message || t('error:unknown')
418
+ }));
419
+ });
420
+ }
405
421
  }
406
422
  } catch (_) {
407
423
  // swallow
@@ -412,23 +428,23 @@ export function FormsManagerProvider({
412
428
  setIsUploading(false);
413
429
  const remainingForms = [];
414
430
  currentForms.forEach(({
415
- errorCount: errorCount_0
431
+ errorCount: errorCount_1
416
432
  }, i_1) => {
417
- if (errorCount_0) {
433
+ if (errorCount_1) {
418
434
  remainingForms.push(currentForms[i_1]);
419
435
  }
420
436
  });
421
437
  const successCount = Math.max(0, currentForms.length - remainingForms.length);
422
- const errorCount_1 = currentForms.length - successCount;
438
+ const errorCount_2 = currentForms.length - successCount;
423
439
  if (successCount) {
424
440
  toast.success(`Successfully saved ${successCount} files`);
425
441
  setSuccessfullyUploaded(true);
426
442
  if (typeof onSuccess === 'function') {
427
- onSuccess(newDocs, errorCount_1);
443
+ onSuccess(newDocs, errorCount_2);
428
444
  }
429
445
  }
430
- if (errorCount_1) {
431
- toast.error(`Failed to save ${errorCount_1} files`);
446
+ if (errorCount_2) {
447
+ toast.error(`Failed to save ${errorCount_2} files`);
432
448
  } else {
433
449
  closeModal(drawerSlug);
434
450
  }
@@ -445,8 +461,8 @@ export function FormsManagerProvider({
445
461
  }, 0),
446
462
  forms: remainingForms,
447
463
  totalErrorCount: remainingForms.reduce((acc_1, {
448
- errorCount: errorCount_2
449
- }) => acc_1 + errorCount_2, 0)
464
+ errorCount: errorCount_3
465
+ }) => acc_1 + errorCount_3, 0)
450
466
  }
451
467
  });
452
468
  if (remainingForms.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","formatAdminURL","qs","React","toast","fieldReducer","useEffectEvent","useConfig","useLocale","useServerFunctions","useTranslation","useUploadHandlers","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","totalErrorCount","updateUploadEdits","initialState","FormsManagerProvider","children","config","routes","api","folderFieldName","folders","fieldName","code","i18n","t","getDocumentSlots","getFormState","getUploadHandler","setDocumentSlots","useState","setHasSubmitted","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","formsRef","useRef","toggleLoadingOverlay","closeModal","drawerSlug","folderID","initialFiles","initialForms","onSuccess","setInitialFiles","setInitialForms","setSuccessfullyUploaded","isUploading","setIsUploading","loadingText","setLoadingText","hasInitializedWithFiles","initialStateRef","baseAPIPath","apiRoute","path","actionURL","initializeSharedDocPermissions","useCallback","params","locale","docAccessURL","res","fetch","stringify","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","docPreferences","fields","operation","renderAllFields","schemaPath","skipValidation","customComponents","Field","_err","index","currentFormsData","type","map","form","i","errorCount","formID","formState","uploadEdits","applyFolderToState","baseState","initialValue","value","files","length","isLoading","key","Array","from","file","addFilesEffectEvent","addInitialForms","count","overrides","currentForms","activeFormID","newDocs","fileValue","total","actionURLWithParams","addQueryPrefix","req","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","isArray","data","forEach","dataError","missingFile","exceedsLimit","missingFilename","name","valid","originalFileValue","formStateForServer","File","newState","Object","values","acc","error","_","remainingForms","successCount","Math","max","success","updatedFields","afterStateUpdate","entries","newFormErrorCount","resetUploadEdits","useEffect","_jsxs","_jsx","animationDuration","overlayType","show","useFormsManager","use"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n CollectionSlug,\n Data,\n DocumentSlots,\n FormState,\n JsonObject,\n SanitizedDocumentPermissions,\n UploadEdits,\n} from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport type { State } from './reducer.js'\n\nimport { fieldReducer } from '../../../forms/Form/fieldReducer.js'\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../../providers/UploadHandlers/index.js'\nimport { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js'\nimport { LoadingOverlay } from '../../Loading/index.js'\nimport { useLoadingOverlay } from '../../LoadingOverlay/index.js'\nimport { useBulkUpload } from '../index.js'\nimport { createFormData } from './createFormData.js'\nimport { formsManagementReducer } from './reducer.js'\n\ntype FormsManagerContext = {\n readonly activeIndex: State['activeIndex']\n readonly addFiles: (filelist: FileList) => Promise<void>\n readonly bulkUpdateForm: (\n updatedFields: Record<string, unknown>,\n afterStateUpdate?: () => void,\n ) => Promise<void>\n readonly collectionSlug: string\n readonly docPermissions?: SanitizedDocumentPermissions\n readonly documentSlots: DocumentSlots\n readonly forms: State['forms']\n getFormDataRef: React.RefObject<() => Data>\n readonly hasPublishPermission: boolean\n readonly hasSavePermission: boolean\n readonly hasSubmitted: boolean\n readonly isInitializing: boolean\n readonly removeFile: (index: number) => void\n readonly resetUploadEdits?: () => void\n readonly saveAllDocs: ({ overrides }?: { overrides?: Record<string, unknown> }) => Promise<void>\n readonly setActiveIndex: (index: number) => void\n readonly setFormTotalErrorCount: ({\n errorCount,\n index,\n }: {\n errorCount: number\n index: number\n }) => void\n readonly totalErrorCount?: number\n readonly updateUploadEdits: (args: UploadEdits) => void\n}\n\nconst Context = React.createContext<FormsManagerContext>({\n activeIndex: 0,\n addFiles: () => Promise.resolve(),\n bulkUpdateForm: () => null,\n collectionSlug: '',\n docPermissions: undefined,\n documentSlots: {},\n forms: [],\n getFormDataRef: { current: () => ({}) },\n hasPublishPermission: false,\n hasSavePermission: false,\n hasSubmitted: false,\n isInitializing: false,\n removeFile: () => {},\n saveAllDocs: () => Promise.resolve(),\n setActiveIndex: () => 0,\n setFormTotalErrorCount: () => {},\n totalErrorCount: 0,\n updateUploadEdits: () => {},\n})\n\nconst initialState: State = {\n activeIndex: 0,\n forms: [],\n totalErrorCount: 0,\n}\n\nexport type InitialForms = Array<{\n file: File\n formID?: string\n initialState?: FormState | null\n}>\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\n\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config } = useConfig()\n const {\n routes: { api },\n } = config\n const folderFieldName = config.folders ? config.folders.fieldName : undefined\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const { getDocumentSlots, getFormState } = useServerFunctions()\n const { getUploadHandler } = useUploadHandlers()\n\n const [documentSlots, setDocumentSlots] = React.useState<DocumentSlots>({})\n const [hasSubmitted, setHasSubmitted] = React.useState(false)\n const [docPermissions, setDocPermissions] = React.useState<SanitizedDocumentPermissions>()\n const [hasSavePermission, setHasSavePermission] = React.useState(false)\n const [hasPublishPermission, setHasPublishPermission] = React.useState(false)\n const [hasInitializedState, setHasInitializedState] = React.useState(false)\n const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false)\n const [isInitializing, setIsInitializing] = React.useState(false)\n const [state, dispatch] = React.useReducer(formsManagementReducer, initialState)\n const { activeIndex, forms, totalErrorCount } = state\n\n const formsRef = React.useRef(forms)\n formsRef.current = forms\n\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const {\n collectionSlug,\n drawerSlug,\n folderID,\n initialFiles,\n initialForms,\n onSuccess,\n setInitialFiles,\n setInitialForms,\n setSuccessfullyUploaded,\n } = useBulkUpload()\n\n const [isUploading, setIsUploading] = React.useState(false)\n const [loadingText, setLoadingText] = React.useState('')\n\n const hasInitializedWithFiles = React.useRef(false)\n const initialStateRef = React.useRef<FormState>(null)\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n\n const baseAPIPath = formatAdminURL({\n apiRoute: api,\n path: '',\n })\n\n const actionURL = `${baseAPIPath}/${collectionSlug}`\n\n const initializeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessURL = `/${collectionSlug}/access`\n const res = await fetch(`${baseAPIPath}${docAccessURL}?${qs.stringify(params)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n const json: SanitizedDocumentPermissions = await res.json()\n const publishedAccessJSON = await fetch(\n `${baseAPIPath}${docAccessURL}?${qs.stringify(params)}`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n isEditing: false,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n setHasInitializedDocPermissions(true)\n }, [baseAPIPath, code, collectionSlug, i18n.language])\n\n const initializeSharedFormState = React.useCallback(\n async (abortController?: AbortController) => {\n if (abortController?.signal) {\n abortController.abort('aborting previous fetch for initial form state without files')\n }\n\n // FETCH AND SET THE DOCUMENT SLOTS HERE!\n const documentSlots = await getDocumentSlots({ collectionSlug })\n setDocumentSlots(documentSlots)\n\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: { fields: {} },\n locale: code,\n operation: 'create',\n renderAllFields: true,\n schemaPath: collectionSlug,\n skipValidation: true,\n })\n\n if (folderFieldName && formStateWithoutFiles?.[folderFieldName]) {\n formStateWithoutFiles[folderFieldName] = {\n ...formStateWithoutFiles[folderFieldName],\n customComponents: {\n ...formStateWithoutFiles[folderFieldName].customComponents,\n Field: undefined,\n },\n }\n }\n\n initialStateRef.current = formStateWithoutFiles\n setHasInitializedState(true)\n } catch (_err) {\n // swallow error\n }\n },\n [getDocumentSlots, collectionSlug, getFormState, docPermissions, code, folderFieldName],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: index,\n forms: forms.map((form, i) => {\n if (i === activeIndex) {\n return {\n errorCount: form.errorCount,\n formID: form.formID,\n formState: currentFormsData,\n uploadEdits: form.uploadEdits,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const applyFolderToState = React.useCallback(\n (baseState: FormState | null): FormState | null => {\n if (folderID && folderFieldName && baseState?.[folderFieldName]) {\n return {\n ...baseState,\n [folderFieldName]: {\n ...baseState[folderFieldName],\n initialValue: folderID,\n value: folderID,\n },\n }\n }\n return baseState\n },\n [folderID, folderFieldName],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n if (forms.length) {\n // save the state of the current form before adding new files\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: getFormDataRef.current(),\n index: activeIndex,\n })\n }\n\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n dispatch({\n type: 'ADD_FORMS',\n forms: Array.from(files).map((file) => ({\n file,\n initialState: applyFolderToState(initialStateRef.current),\n })),\n })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n },\n [\n initializeSharedFormState,\n hasInitializedState,\n toggleLoadingOverlay,\n activeIndex,\n forms,\n applyFolderToState,\n ],\n )\n\n const addFilesEffectEvent = useEffectEvent(addFiles)\n\n const addInitialForms = useEffectEvent(async (initialForms: InitialForms) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n\n dispatch({\n type: 'ADD_FORMS',\n forms: initialForms.map((form) => ({\n ...form,\n initialState: applyFolderToState(form?.initialState || initialStateRef.current),\n })),\n })\n\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n })\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback((index) => {\n dispatch({ type: 'REMOVE_FORM', index })\n }, [])\n\n const setFormTotalErrorCount: FormsManagerContext['setFormTotalErrorCount'] = React.useCallback(\n ({ errorCount, index }) => {\n dispatch({\n type: 'UPDATE_ERROR_COUNT',\n count: errorCount,\n index,\n })\n },\n [],\n )\n\n const saveAllDocs: FormsManagerContext['saveAllDocs'] = React.useCallback(\n async ({ overrides } = {}) => {\n const currentFormsData = getFormDataRef.current()\n const currentForms = [...forms]\n currentForms[activeIndex] = {\n errorCount: currentForms[activeIndex].errorCount,\n formID: currentForms[activeIndex].formID,\n formState: currentFormsData,\n uploadEdits: currentForms[activeIndex].uploadEdits,\n }\n const activeFormID = currentForms[activeIndex]?.formID\n const newDocs: Array<{\n collectionSlug: CollectionSlug\n doc: JsonObject\n /**\n * ID of the form that created this document\n */\n formID: string\n }> = []\n\n setIsUploading(true)\n\n for (let i = 0; i < currentForms.length; i++) {\n try {\n const form = currentForms[i]\n const fileValue = form.formState?.file?.value\n\n setLoadingText(t('general:uploadingBulk', { current: i + 1, total: currentForms.length }))\n\n const actionURLWithParams = `${actionURL}${qs.stringify(\n {\n locale: code,\n uploadEdits: form?.uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n\n const req = await fetch(actionURLWithParams, {\n body: await createFormData(\n form.formState,\n overrides,\n collectionSlug,\n getUploadHandler({ collectionSlug }),\n ),\n credentials: 'include',\n method: 'POST',\n })\n\n const json = await req.json()\n\n if (req.status === 201 && json?.doc) {\n newDocs.push({\n collectionSlug,\n doc: json.doc,\n formID: form.formID,\n })\n }\n\n // should expose some sort of helper for this\n const [fieldErrors, nonFieldErrors] = (json?.errors || []).reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs: any[] = []\n const newNonFieldErrs: any[] = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n const missingFile = !fileValue && req.status === 400\n const exceedsLimit = fileValue && req.status === 413\n const missingFilename =\n fileValue &&\n typeof fileValue === 'object' &&\n 'name' in fileValue &&\n (!fileValue.name || fileValue.name === '')\n\n if (missingFile || exceedsLimit || missingFilename) {\n currentForms[i].formState.file.valid = false\n\n // File/Blob objects cannot be serialized via the RSC flight protocol,\n // so replace with a plain object before calling the server function.\n const originalFileValue = currentForms[i].formState.file?.value\n const formStateForServer = { ...currentForms[i].formState }\n if (originalFileValue instanceof File) {\n formStateForServer.file = {\n ...formStateForServer.file,\n value: { name: originalFileValue.name },\n }\n }\n\n // Need to get the field state to extract count since field errors\n // are not returned when file is missing or exceeds limit\n const { state: newState } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: formStateForServer,\n operation: 'update',\n schemaPath: collectionSlug,\n })\n\n if (newState) {\n if (originalFileValue instanceof File && newState.file) {\n newState.file = { ...newState.file, value: originalFileValue }\n }\n\n currentForms[i] = {\n errorCount: Object.values(newState).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n ),\n formID: currentForms[i].formID,\n formState: newState,\n }\n }\n\n toast.error(nonFieldErrors[0]?.message)\n } else {\n currentForms[i] = {\n errorCount: fieldErrors.length,\n formID: currentForms[i].formID,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n }\n } catch (_) {\n // swallow\n }\n }\n\n setHasSubmitted(true)\n setLoadingText('')\n setIsUploading(false)\n\n const remainingForms = []\n\n currentForms.forEach(({ errorCount }, i) => {\n if (errorCount) {\n remainingForms.push(currentForms[i])\n }\n })\n\n const successCount = Math.max(0, currentForms.length - remainingForms.length)\n const errorCount = currentForms.length - successCount\n\n if (successCount) {\n toast.success(`Successfully saved ${successCount} files`)\n setSuccessfullyUploaded(true)\n\n if (typeof onSuccess === 'function') {\n onSuccess(newDocs, errorCount)\n }\n }\n\n if (errorCount) {\n toast.error(`Failed to save ${errorCount} files`)\n } else {\n closeModal(drawerSlug)\n }\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: remainingForms.reduce((acc, { formID }, i) => {\n if (formID === activeFormID) {\n return i\n }\n return acc\n }, 0),\n forms: remainingForms,\n totalErrorCount: remainingForms.reduce((acc, { errorCount }) => acc + errorCount, 0),\n },\n })\n\n if (remainingForms.length === 0) {\n setInitialFiles(undefined)\n setInitialForms(undefined)\n }\n },\n [\n forms,\n activeIndex,\n t,\n actionURL,\n code,\n collectionSlug,\n getUploadHandler,\n getFormState,\n docPermissions,\n setSuccessfullyUploaded,\n onSuccess,\n closeModal,\n drawerSlug,\n setInitialFiles,\n setInitialForms,\n ],\n )\n\n const bulkUpdateForm = React.useCallback(\n async (updatedFields: Record<string, unknown>, afterStateUpdate?: () => void) => {\n for (let i = 0; i < forms.length; i++) {\n Object.entries(updatedFields).forEach(([path, value]) => {\n if (forms[i].formState[path]) {\n forms[i].formState[path].value = value\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[i].errorCount,\n formState: forms[i].formState,\n index: i,\n })\n }\n })\n\n if (typeof afterStateUpdate === 'function') {\n afterStateUpdate()\n }\n\n if (hasSubmitted) {\n const { state } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: forms[i].formState,\n operation: 'create',\n schemaPath: collectionSlug,\n })\n\n const newFormErrorCount = Object.values(state).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n )\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: newFormErrorCount,\n formState: state,\n index: i,\n })\n }\n }\n },\n [collectionSlug, docPermissions, forms, getFormState, hasSubmitted],\n )\n\n const updateUploadEdits = React.useCallback<FormsManagerContext['updateUploadEdits']>(\n (uploadEdits) => {\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: forms[activeIndex].formState,\n index: activeIndex,\n uploadEdits,\n })\n },\n [activeIndex, forms],\n )\n\n const resetUploadEdits = React.useCallback<FormsManagerContext['resetUploadEdits']>(() => {\n dispatch({\n type: 'REPLACE',\n state: {\n forms: forms.map((form) => ({\n ...form,\n uploadEdits: {},\n })),\n },\n })\n }, [forms])\n\n React.useEffect(() => {\n if (!collectionSlug) {\n return\n }\n if (!hasInitializedState) {\n void initializeSharedFormState()\n }\n\n if (!hasInitializedDocPermissions) {\n void initializeSharedDocPermissions()\n }\n\n if (initialFiles || initialForms) {\n if (!hasInitializedState || !hasInitializedDocPermissions) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (\n hasInitializedState &&\n (initialForms?.length || initialFiles?.length) &&\n !hasInitializedWithFiles.current\n ) {\n if (initialForms?.length) {\n void addInitialForms(initialForms)\n }\n if (initialFiles?.length) {\n void addFilesEffectEvent(initialFiles)\n }\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n initialFiles,\n initializeSharedFormState,\n initializeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n initialForms,\n ])\n\n return (\n <Context\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n bulkUpdateForm,\n collectionSlug,\n docPermissions,\n documentSlots,\n forms,\n getFormDataRef,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n isInitializing,\n removeFile,\n resetUploadEdits,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n totalErrorCount,\n updateUploadEdits,\n }}\n >\n {isUploading && (\n <LoadingOverlay\n animationDuration=\"250ms\"\n loadingText={loadingText}\n overlayType=\"fullscreen\"\n show\n />\n )}\n {children}\n </Context>\n )\n}\n\nexport function useFormsManager() {\n return React.use(Context)\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","formatAdminURL","qs","React","toast","fieldReducer","useEffectEvent","useConfig","useLocale","useServerFunctions","useTranslation","useUploadHandlers","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","FieldErrorsToast","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","totalErrorCount","updateUploadEdits","initialState","FormsManagerProvider","children","config","routes","api","folderFieldName","folders","fieldName","code","i18n","t","getDocumentSlots","getFormState","getUploadHandler","setDocumentSlots","useState","setHasSubmitted","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","formsRef","useRef","toggleLoadingOverlay","closeModal","drawerSlug","folderID","initialFiles","initialForms","onSuccess","setInitialFiles","setInitialForms","setSuccessfullyUploaded","isUploading","setIsUploading","loadingText","setLoadingText","hasInitializedWithFiles","initialStateRef","baseAPIPath","apiRoute","path","actionURL","initializeSharedDocPermissions","useCallback","params","locale","docAccessURL","res","fetch","stringify","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","docPreferences","fields","operation","renderAllFields","schemaPath","skipValidation","customComponents","Field","_err","index","currentFormsData","type","map","form","i","errorCount","formID","formState","uploadEdits","applyFolderToState","baseState","initialValue","value","files","length","isLoading","key","Array","from","file","addFilesEffectEvent","addInitialForms","count","overrides","currentForms","activeFormID","newDocs","fileValue","total","actionURLWithParams","addQueryPrefix","req","wasSuccessful","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","isArray","data","forEach","dataError","missingFile","exceedsLimit","missingFilename","name","valid","originalFileValue","formStateForServer","File","newState","Object","values","acc","error","_jsx","errorMessage","_","remainingForms","successCount","Math","max","success","updatedFields","afterStateUpdate","entries","newFormErrorCount","resetUploadEdits","useEffect","_jsxs","animationDuration","overlayType","show","useFormsManager","use"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n CollectionSlug,\n Data,\n DocumentSlots,\n FormState,\n JsonObject,\n SanitizedDocumentPermissions,\n UploadEdits,\n} from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport type { State } from './reducer.js'\n\nimport { fieldReducer } from '../../../forms/Form/fieldReducer.js'\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../../providers/UploadHandlers/index.js'\nimport { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js'\nimport { LoadingOverlay } from '../../Loading/index.js'\nimport { useLoadingOverlay } from '../../LoadingOverlay/index.js'\nimport { FieldErrorsToast } from '../../Toasts/fieldErrors.js'\nimport { useBulkUpload } from '../index.js'\nimport { createFormData } from './createFormData.js'\nimport { formsManagementReducer } from './reducer.js'\n\ntype FormsManagerContext = {\n readonly activeIndex: State['activeIndex']\n readonly addFiles: (filelist: FileList) => Promise<void>\n readonly bulkUpdateForm: (\n updatedFields: Record<string, unknown>,\n afterStateUpdate?: () => void,\n ) => Promise<void>\n readonly collectionSlug: string\n readonly docPermissions?: SanitizedDocumentPermissions\n readonly documentSlots: DocumentSlots\n readonly forms: State['forms']\n getFormDataRef: React.RefObject<() => Data>\n readonly hasPublishPermission: boolean\n readonly hasSavePermission: boolean\n readonly hasSubmitted: boolean\n readonly isInitializing: boolean\n readonly removeFile: (index: number) => void\n readonly resetUploadEdits?: () => void\n readonly saveAllDocs: ({ overrides }?: { overrides?: Record<string, unknown> }) => Promise<void>\n readonly setActiveIndex: (index: number) => void\n readonly setFormTotalErrorCount: ({\n errorCount,\n index,\n }: {\n errorCount: number\n index: number\n }) => void\n readonly totalErrorCount?: number\n readonly updateUploadEdits: (args: UploadEdits) => void\n}\n\nconst Context = React.createContext<FormsManagerContext>({\n activeIndex: 0,\n addFiles: () => Promise.resolve(),\n bulkUpdateForm: () => null,\n collectionSlug: '',\n docPermissions: undefined,\n documentSlots: {},\n forms: [],\n getFormDataRef: { current: () => ({}) },\n hasPublishPermission: false,\n hasSavePermission: false,\n hasSubmitted: false,\n isInitializing: false,\n removeFile: () => {},\n saveAllDocs: () => Promise.resolve(),\n setActiveIndex: () => 0,\n setFormTotalErrorCount: () => {},\n totalErrorCount: 0,\n updateUploadEdits: () => {},\n})\n\nconst initialState: State = {\n activeIndex: 0,\n forms: [],\n totalErrorCount: 0,\n}\n\nexport type InitialForms = Array<{\n file: File\n formID?: string\n initialState?: FormState | null\n}>\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\n\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config } = useConfig()\n const {\n routes: { api },\n } = config\n const folderFieldName = config.folders ? config.folders.fieldName : undefined\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const { getDocumentSlots, getFormState } = useServerFunctions()\n const { getUploadHandler } = useUploadHandlers()\n\n const [documentSlots, setDocumentSlots] = React.useState<DocumentSlots>({})\n const [hasSubmitted, setHasSubmitted] = React.useState(false)\n const [docPermissions, setDocPermissions] = React.useState<SanitizedDocumentPermissions>()\n const [hasSavePermission, setHasSavePermission] = React.useState(false)\n const [hasPublishPermission, setHasPublishPermission] = React.useState(false)\n const [hasInitializedState, setHasInitializedState] = React.useState(false)\n const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false)\n const [isInitializing, setIsInitializing] = React.useState(false)\n const [state, dispatch] = React.useReducer(formsManagementReducer, initialState)\n const { activeIndex, forms, totalErrorCount } = state\n\n const formsRef = React.useRef(forms)\n formsRef.current = forms\n\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const {\n collectionSlug,\n drawerSlug,\n folderID,\n initialFiles,\n initialForms,\n onSuccess,\n setInitialFiles,\n setInitialForms,\n setSuccessfullyUploaded,\n } = useBulkUpload()\n\n const [isUploading, setIsUploading] = React.useState(false)\n const [loadingText, setLoadingText] = React.useState('')\n\n const hasInitializedWithFiles = React.useRef(false)\n const initialStateRef = React.useRef<FormState>(null)\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n\n const baseAPIPath = formatAdminURL({\n apiRoute: api,\n path: '',\n })\n\n const actionURL = `${baseAPIPath}/${collectionSlug}`\n\n const initializeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessURL = `/${collectionSlug}/access`\n const res = await fetch(`${baseAPIPath}${docAccessURL}?${qs.stringify(params)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n const json: SanitizedDocumentPermissions = await res.json()\n const publishedAccessJSON = await fetch(\n `${baseAPIPath}${docAccessURL}?${qs.stringify(params)}`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n isEditing: false,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n setHasInitializedDocPermissions(true)\n }, [baseAPIPath, code, collectionSlug, i18n.language])\n\n const initializeSharedFormState = React.useCallback(\n async (abortController?: AbortController) => {\n if (abortController?.signal) {\n abortController.abort('aborting previous fetch for initial form state without files')\n }\n\n // FETCH AND SET THE DOCUMENT SLOTS HERE!\n const documentSlots = await getDocumentSlots({ collectionSlug })\n setDocumentSlots(documentSlots)\n\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: { fields: {} },\n locale: code,\n operation: 'create',\n renderAllFields: true,\n schemaPath: collectionSlug,\n skipValidation: true,\n })\n\n if (folderFieldName && formStateWithoutFiles?.[folderFieldName]) {\n formStateWithoutFiles[folderFieldName] = {\n ...formStateWithoutFiles[folderFieldName],\n customComponents: {\n ...formStateWithoutFiles[folderFieldName].customComponents,\n Field: undefined,\n },\n }\n }\n\n initialStateRef.current = formStateWithoutFiles\n setHasInitializedState(true)\n } catch (_err) {\n // swallow error\n }\n },\n [getDocumentSlots, collectionSlug, getFormState, docPermissions, code, folderFieldName],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: index,\n forms: forms.map((form, i) => {\n if (i === activeIndex) {\n return {\n errorCount: form.errorCount,\n formID: form.formID,\n formState: currentFormsData,\n uploadEdits: form.uploadEdits,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const applyFolderToState = React.useCallback(\n (baseState: FormState | null): FormState | null => {\n if (folderID && folderFieldName && baseState?.[folderFieldName]) {\n return {\n ...baseState,\n [folderFieldName]: {\n ...baseState[folderFieldName],\n initialValue: folderID,\n value: folderID,\n },\n }\n }\n return baseState\n },\n [folderID, folderFieldName],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n if (forms.length) {\n // save the state of the current form before adding new files\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: getFormDataRef.current(),\n index: activeIndex,\n })\n }\n\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n dispatch({\n type: 'ADD_FORMS',\n forms: Array.from(files).map((file) => ({\n file,\n initialState: applyFolderToState(initialStateRef.current),\n })),\n })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n },\n [\n initializeSharedFormState,\n hasInitializedState,\n toggleLoadingOverlay,\n activeIndex,\n forms,\n applyFolderToState,\n ],\n )\n\n const addFilesEffectEvent = useEffectEvent(addFiles)\n\n const addInitialForms = useEffectEvent(async (initialForms: InitialForms) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n\n dispatch({\n type: 'ADD_FORMS',\n forms: initialForms.map((form) => ({\n ...form,\n initialState: applyFolderToState(form?.initialState || initialStateRef.current),\n })),\n })\n\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n })\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback((index) => {\n dispatch({ type: 'REMOVE_FORM', index })\n }, [])\n\n const setFormTotalErrorCount: FormsManagerContext['setFormTotalErrorCount'] = React.useCallback(\n ({ errorCount, index }) => {\n dispatch({\n type: 'UPDATE_ERROR_COUNT',\n count: errorCount,\n index,\n })\n },\n [],\n )\n\n const saveAllDocs: FormsManagerContext['saveAllDocs'] = React.useCallback(\n async ({ overrides } = {}) => {\n const currentFormsData = getFormDataRef.current()\n const currentForms = [...forms]\n currentForms[activeIndex] = {\n errorCount: currentForms[activeIndex].errorCount,\n formID: currentForms[activeIndex].formID,\n formState: currentFormsData,\n uploadEdits: currentForms[activeIndex].uploadEdits,\n }\n const activeFormID = currentForms[activeIndex]?.formID\n const newDocs: Array<{\n collectionSlug: CollectionSlug\n doc: JsonObject\n /**\n * ID of the form that created this document\n */\n formID: string\n }> = []\n\n setIsUploading(true)\n\n for (let i = 0; i < currentForms.length; i++) {\n try {\n const form = currentForms[i]\n const fileValue = form.formState?.file?.value\n\n setLoadingText(t('general:uploadingBulk', { current: i + 1, total: currentForms.length }))\n\n const actionURLWithParams = `${actionURL}${qs.stringify(\n {\n locale: code,\n uploadEdits: form?.uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n\n const req = await fetch(actionURLWithParams, {\n body: await createFormData(\n form.formState,\n overrides,\n collectionSlug,\n getUploadHandler({ collectionSlug }),\n ),\n credentials: 'include',\n method: 'POST',\n })\n\n const json = await req.json()\n\n const wasSuccessful = req.status === 201 && json?.doc\n\n if (wasSuccessful) {\n newDocs.push({\n collectionSlug,\n doc: json.doc,\n formID: form.formID,\n })\n }\n\n // should expose some sort of helper for this\n const [fieldErrors, nonFieldErrors] = (json?.errors || []).reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs: any[] = []\n const newNonFieldErrs: any[] = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n const missingFile = !fileValue && req.status === 400\n const exceedsLimit = fileValue && req.status === 413\n const missingFilename =\n fileValue &&\n typeof fileValue === 'object' &&\n 'name' in fileValue &&\n (!fileValue.name || fileValue.name === '')\n\n if (missingFile || exceedsLimit || missingFilename) {\n currentForms[i].formState.file.valid = false\n\n // File/Blob objects cannot be serialized via the RSC flight protocol,\n // so replace with a plain object before calling the server function.\n const originalFileValue = currentForms[i].formState.file?.value\n const formStateForServer = { ...currentForms[i].formState }\n if (originalFileValue instanceof File) {\n formStateForServer.file = {\n ...formStateForServer.file,\n value: { name: originalFileValue.name },\n }\n }\n\n // Need to get the field state to extract count since field errors\n // are not returned when file is missing or exceeds limit\n const { state: newState } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: formStateForServer,\n operation: 'update',\n schemaPath: collectionSlug,\n })\n\n if (newState) {\n if (originalFileValue instanceof File && newState.file) {\n newState.file = { ...newState.file, value: originalFileValue }\n }\n\n currentForms[i] = {\n errorCount: Object.values(newState).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n ),\n formID: currentForms[i].formID,\n formState: newState,\n }\n }\n\n toast.error(nonFieldErrors[0]?.message)\n } else {\n let errorCount = fieldErrors.length\n\n // Fall back to non-field errors when no field errors are present\n // (e.g., APIError thrown from a hook).\n if (!wasSuccessful && errorCount === 0) {\n errorCount = nonFieldErrors.length || 1\n }\n\n currentForms[i] = {\n errorCount,\n formID: currentForms[i].formID,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n\n // Mimic forms/Form/index.tsx.\n if (!wasSuccessful) {\n nonFieldErrors.forEach((err) => {\n toast.error(<FieldErrorsToast errorMessage={err.message || t('error:unknown')} />)\n })\n }\n }\n } catch (_) {\n // swallow\n }\n }\n\n setHasSubmitted(true)\n setLoadingText('')\n setIsUploading(false)\n\n const remainingForms = []\n\n currentForms.forEach(({ errorCount }, i) => {\n if (errorCount) {\n remainingForms.push(currentForms[i])\n }\n })\n\n const successCount = Math.max(0, currentForms.length - remainingForms.length)\n const errorCount = currentForms.length - successCount\n\n if (successCount) {\n toast.success(`Successfully saved ${successCount} files`)\n setSuccessfullyUploaded(true)\n\n if (typeof onSuccess === 'function') {\n onSuccess(newDocs, errorCount)\n }\n }\n\n if (errorCount) {\n toast.error(`Failed to save ${errorCount} files`)\n } else {\n closeModal(drawerSlug)\n }\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: remainingForms.reduce((acc, { formID }, i) => {\n if (formID === activeFormID) {\n return i\n }\n return acc\n }, 0),\n forms: remainingForms,\n totalErrorCount: remainingForms.reduce((acc, { errorCount }) => acc + errorCount, 0),\n },\n })\n\n if (remainingForms.length === 0) {\n setInitialFiles(undefined)\n setInitialForms(undefined)\n }\n },\n [\n forms,\n activeIndex,\n t,\n actionURL,\n code,\n collectionSlug,\n getUploadHandler,\n getFormState,\n docPermissions,\n setSuccessfullyUploaded,\n onSuccess,\n closeModal,\n drawerSlug,\n setInitialFiles,\n setInitialForms,\n ],\n )\n\n const bulkUpdateForm = React.useCallback(\n async (updatedFields: Record<string, unknown>, afterStateUpdate?: () => void) => {\n for (let i = 0; i < forms.length; i++) {\n Object.entries(updatedFields).forEach(([path, value]) => {\n if (forms[i].formState[path]) {\n forms[i].formState[path].value = value\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[i].errorCount,\n formState: forms[i].formState,\n index: i,\n })\n }\n })\n\n if (typeof afterStateUpdate === 'function') {\n afterStateUpdate()\n }\n\n if (hasSubmitted) {\n const { state } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: forms[i].formState,\n operation: 'create',\n schemaPath: collectionSlug,\n })\n\n const newFormErrorCount = Object.values(state).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n )\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: newFormErrorCount,\n formState: state,\n index: i,\n })\n }\n }\n },\n [collectionSlug, docPermissions, forms, getFormState, hasSubmitted],\n )\n\n const updateUploadEdits = React.useCallback<FormsManagerContext['updateUploadEdits']>(\n (uploadEdits) => {\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: forms[activeIndex].formState,\n index: activeIndex,\n uploadEdits,\n })\n },\n [activeIndex, forms],\n )\n\n const resetUploadEdits = React.useCallback<FormsManagerContext['resetUploadEdits']>(() => {\n dispatch({\n type: 'REPLACE',\n state: {\n forms: forms.map((form) => ({\n ...form,\n uploadEdits: {},\n })),\n },\n })\n }, [forms])\n\n React.useEffect(() => {\n if (!collectionSlug) {\n return\n }\n if (!hasInitializedState) {\n void initializeSharedFormState()\n }\n\n if (!hasInitializedDocPermissions) {\n void initializeSharedDocPermissions()\n }\n\n if (initialFiles || initialForms) {\n if (!hasInitializedState || !hasInitializedDocPermissions) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (\n hasInitializedState &&\n (initialForms?.length || initialFiles?.length) &&\n !hasInitializedWithFiles.current\n ) {\n if (initialForms?.length) {\n void addInitialForms(initialForms)\n }\n if (initialFiles?.length) {\n void addFilesEffectEvent(initialFiles)\n }\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n initialFiles,\n initializeSharedFormState,\n initializeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n initialForms,\n ])\n\n return (\n <Context\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n bulkUpdateForm,\n collectionSlug,\n docPermissions,\n documentSlots,\n forms,\n getFormDataRef,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n isInitializing,\n removeFile,\n resetUploadEdits,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n totalErrorCount,\n updateUploadEdits,\n }}\n >\n {isUploading && (\n <LoadingOverlay\n animationDuration=\"250ms\"\n loadingText={loadingText}\n overlayType=\"fullscreen\"\n show\n />\n )}\n {children}\n </Context>\n )\n}\n\nexport function useFormsManager() {\n return React.use(Context)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","closestCenter","DndContext","KeyboardSensor","MouseSensor","TouchSensor","useDroppable","useSensor","useSensors","SortableContext","sortableKeyboardCoordinates","React","useCallback","useId","DraggableSortable","props","$","children","className","ids","onDragEnd","onDragStart","dndContextID","sortableContextID","t0","id","setNodeRef","t1","Symbol","for","activationConstraint","distance","t2","delay","tolerance","t3","coordinateGetter","sensors","t4","event","active","over","activatorEvent","stopPropagation","moveFromIndex","findIndex","_id","moveToIndex","_id_0","handleDragEnd","t5","event_0","active_0","handleDragStart","t6","_jsx","collisionDetection","items","ref"],"sources":["../../../src/elements/DraggableSortable/index.tsx"],"sourcesContent":["'use client'\nimport type { DragEndEvent, DragStartEvent } from '@dnd-kit/core'\n\nimport {\n closestCenter,\n DndContext,\n KeyboardSensor,\n MouseSensor,\n TouchSensor,\n useDroppable,\n useSensor,\n useSensors,\n} from '@dnd-kit/core'\nimport { SortableContext, sortableKeyboardCoordinates } from '@dnd-kit/sortable'\nimport React, { useCallback, useId } from 'react'\n\nimport type { Props } from './types.js'\n\nexport { Props }\n\nexport const DraggableSortable: React.FC<Props> = (props) => {\n const { children, className, ids, onDragEnd, onDragStart } = props\n\n const dndContextID = useId()\n const sortableContextID = useId()\n\n const { setNodeRef } = useDroppable({\n id: dndContextID,\n })\n\n const sensors = useSensors(\n useSensor(MouseSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(TouchSensor, {\n activationConstraint: {\n delay: 200,\n tolerance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n\n event.activatorEvent.stopPropagation()\n\n if (!active || !over) {\n return\n }\n\n if (typeof onDragEnd === 'function') {\n onDragEnd({\n event,\n moveFromIndex: ids.findIndex((_id) => _id === active.id),\n moveToIndex: ids.findIndex((_id) => _id === over.id),\n })\n }\n },\n [onDragEnd, ids],\n )\n\n const handleDragStart = useCallback(\n (event: DragStartEvent) => {\n const { active } = event\n\n if (!active) {\n return\n }\n\n if (typeof onDragStart === 'function') {\n onDragStart({ id: active.id, event })\n }\n },\n [onDragStart],\n )\n\n return (\n <DndContext\n collisionDetection={closestCenter}\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={dndContextID}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n sensors={sensors}\n >\n <SortableContext\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={sortableContextID}\n items={ids}\n >\n <div className={className} ref={setNodeRef}>\n {children}\n </div>\n </SortableContext>\n </DndContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","closestCenter","DndContext","KeyboardSensor","MouseSensor","TouchSensor","useDroppable","useSensor","useSensors","SortableContext","sortableKeyboardCoordinates","React","useCallback","useId","DraggableSortable","props","$","children","className","ids","onDragEnd","onDragStart","dndContextID","sortableContextID","t0","id","setNodeRef","t1","Symbol","for","activationConstraint","distance","t2","delay","tolerance","t3","coordinateGetter","sensors","t4","event","active","over","activatorEvent","stopPropagation","moveFromIndex","findIndex","_id","moveToIndex","_id_0","handleDragEnd","t5","event_0","active_0","handleDragStart","t6","_jsx","collisionDetection","items","ref"],"sources":["../../../src/elements/DraggableSortable/index.tsx"],"sourcesContent":["'use client'\nimport type { DragEndEvent, DragStartEvent } from '@dnd-kit/core'\n\nimport {\n closestCenter,\n DndContext,\n KeyboardSensor,\n MouseSensor,\n TouchSensor,\n useDroppable,\n useSensor,\n useSensors,\n} from '@dnd-kit/core'\nimport { SortableContext, sortableKeyboardCoordinates } from '@dnd-kit/sortable'\nimport React, { useCallback, useId } from 'react'\n\nimport type { Props } from './types.js'\n\nexport { Props }\n\nexport const DraggableSortable: React.FC<Props> = (props) => {\n const { children, className, ids, onDragEnd, onDragStart } = props\n\n const dndContextID = useId()\n const sortableContextID = useId()\n\n const { setNodeRef } = useDroppable({\n id: dndContextID,\n })\n\n const sensors = useSensors(\n useSensor(MouseSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(TouchSensor, {\n activationConstraint: {\n delay: 200,\n tolerance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n\n event.activatorEvent.stopPropagation()\n\n if (!active || !over) {\n return\n }\n\n if (typeof onDragEnd === 'function') {\n onDragEnd({\n event,\n moveFromIndex: ids.findIndex((_id) => _id === active.id),\n moveToIndex: ids.findIndex((_id) => _id === over.id),\n })\n }\n },\n [onDragEnd, ids],\n )\n\n const handleDragStart = useCallback(\n (event: DragStartEvent) => {\n const { active } = event\n\n if (!active) {\n return\n }\n\n if (typeof onDragStart === 'function') {\n onDragStart({ id: active.id, event })\n }\n },\n [onDragStart],\n )\n\n return (\n <DndContext\n collisionDetection={closestCenter}\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={dndContextID}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n sensors={sensors}\n >\n <SortableContext\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={sortableContextID}\n items={ids}\n >\n <div className={className} ref={setNodeRef}>\n {children}\n </div>\n </SortableContext>\n </DndContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","React","useState","useAuth","EditDepthProvider","SelectAllStatus","useSelection","useTranslation","Drawer","ListSelectionButton","EditManyDrawerContent","baseClass","EditMany","props","$","count","selectAll","selectedIDs","toggleAll","t0","t1","AllAvailable","t2","_jsx","EditMany_v4","ids","onSuccess","collection","modalPrefix","where","permissions","openModal","t","Symbol","for","selectedFields","setSelectedFields","collectionPermissions","collections","slug","drawerSlug","update","filter","Boolean","t3","t4","_jsxs","className","join","children","onClick","Header"],"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useState } from 'react'\n\nimport type { FieldOption } from '../FieldSelect/reduceFieldOptions.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport { EditManyDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const baseClass = 'edit-many'\n\nexport type EditManyProps = {\n readonly collection: ClientCollectionConfig\n}\n\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { count, selectAll, selectedIDs, toggleAll } = useSelection()\n\n return (\n <EditMany_v4\n {...props}\n count={count}\n ids={selectedIDs}\n onSuccess={() => toggleAll()}\n selectAll={selectAll === SelectAllStatus.AllAvailable}\n />\n )\n}\n\nexport const EditMany_v4: React.FC<\n {\n count: number\n ids: (number | string)[]\n /**\n * When multiple EditMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n onSuccess?: () => void\n selectAll: boolean\n where?: Where\n } & Omit<EditManyProps, 'ids'>\n> = ({ collection, count, ids, modalPrefix, onSuccess, selectAll, where }) => {\n const { permissions } = useAuth()\n const { openModal } = useModal()\n\n const { t } = useTranslation()\n\n const [selectedFields, setSelectedFields] = useState<FieldOption[]>([])\n\n const collectionPermissions = permissions?.collections?.[collection.slug]\n\n const drawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}edit-${collection.slug}`\n\n if (count === 0 || !collectionPermissions?.update) {\n return null\n }\n\n return (\n <div className={[baseClass, `${baseClass}__toggle`].filter(Boolean).join(' ')}>\n <ListSelectionButton\n aria-label={t('general:edit')}\n onClick={() => {\n openModal(drawerSlug)\n setSelectedFields([])\n }}\n >\n {t('general:edit')}\n </ListSelectionButton>\n <EditDepthProvider>\n <Drawer Header={null} slug={drawerSlug}>\n <EditManyDrawerContent\n collection={collection}\n count={count}\n drawerSlug={drawerSlug}\n ids={ids}\n onSuccess={onSuccess}\n selectAll={selectAll}\n selectedFields={selectedFields}\n setSelectedFields={setSelectedFields}\n where={where}\n />\n </Drawer>\n </EditDepthProvider>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","React","useState","useAuth","EditDepthProvider","SelectAllStatus","useSelection","useTranslation","Drawer","ListSelectionButton","EditManyDrawerContent","baseClass","EditMany","props","$","count","selectAll","selectedIDs","toggleAll","t0","t1","AllAvailable","t2","_jsx","EditMany_v4","ids","onSuccess","collection","modalPrefix","where","permissions","openModal","t","Symbol","for","selectedFields","setSelectedFields","collectionPermissions","collections","slug","drawerSlug","update","filter","Boolean","t3","t4","_jsxs","className","join","children","onClick","Header"],"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useState } from 'react'\n\nimport type { FieldOption } from '../FieldSelect/reduceFieldOptions.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport { EditManyDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const baseClass = 'edit-many'\n\nexport type EditManyProps = {\n readonly collection: ClientCollectionConfig\n}\n\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { count, selectAll, selectedIDs, toggleAll } = useSelection()\n\n return (\n <EditMany_v4\n {...props}\n count={count}\n ids={selectedIDs}\n onSuccess={() => toggleAll()}\n selectAll={selectAll === SelectAllStatus.AllAvailable}\n />\n )\n}\n\nexport const EditMany_v4: React.FC<\n {\n count: number\n ids: (number | string)[]\n /**\n * When multiple EditMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n onSuccess?: () => void\n selectAll: boolean\n where?: Where\n } & Omit<EditManyProps, 'ids'>\n> = ({ collection, count, ids, modalPrefix, onSuccess, selectAll, where }) => {\n const { permissions } = useAuth()\n const { openModal } = useModal()\n\n const { t } = useTranslation()\n\n const [selectedFields, setSelectedFields] = useState<FieldOption[]>([])\n\n const collectionPermissions = permissions?.collections?.[collection.slug]\n\n const drawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}edit-${collection.slug}`\n\n if (count === 0 || !collectionPermissions?.update) {\n return null\n }\n\n return (\n <div className={[baseClass, `${baseClass}__toggle`].filter(Boolean).join(' ')}>\n <ListSelectionButton\n aria-label={t('general:edit')}\n onClick={() => {\n openModal(drawerSlug)\n setSelectedFields([])\n }}\n >\n {t('general:edit')}\n </ListSelectionButton>\n <EditDepthProvider>\n <Drawer Header={null} slug={drawerSlug}>\n <EditManyDrawerContent\n collection={collection}\n count={count}\n drawerSlug={drawerSlug}\n ids={ids}\n onSuccess={onSuccess}\n selectAll={selectAll}\n selectedFields={selectedFields}\n setSelectedFields={setSelectedFields}\n where={where}\n />\n </Drawer>\n </EditDepthProvider>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","extractID","React","DocumentIcon","useConfig","useFolder","useTranslation","formatDate","ColoredFolderIcon","DraggableTableRow","SimpleTable","TableHeader","baseClass","FolderFileTable","t0","$","showRelationCell","t1","undefined","checkIfItemIsDisabled","documents","focusedRowIndex","onItemClick","onItemKeyPress","selectedItemKeys","subfolders","config","i18n","t","t2","map","collections","forEach","collection","slug","plural","labels","singular","relationToMap","useState","t3","columnsToShow","name","label","push","columns","t4","t5","subfolder","rowIndex","itemKey","relationTo","value","subfolderID","_jsx","t6","index","name_0","cellValue","_folderOrDocumentTitle","pattern","admin","dateFormat","Array","isArray","folderType","reduce","acc","index_0","_jsxs","className","children","disabled","dragData","id","type","isDroppable","isFocused","isSelected","has","isSelecting","size","onClick","event","item","onKeyDown","event_0","length","document","unadjustedIndex","itemKey_0","relationTo_0","value_0","documentID","rowIndex_0","t7","index_1","name_1","cellValue_0","event_1","event_2","headerCells","_temp","tableRows"],"sources":["../../../../src/elements/FolderView/FolderFileTable/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { extractID } from 'payload/shared'\nimport React from 'react'\n\nimport { DocumentIcon } from '../../../icons/Document/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useFolder } from '../../../providers/Folders/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { formatDate } from '../../../utilities/formatDocTitle/formatDateTitle.js'\nimport { ColoredFolderIcon } from '../ColoredFolderIcon/index.js'\nimport { DraggableTableRow } from '../DraggableTableRow/index.js'\nimport { SimpleTable, TableHeader } from '../SimpleTable/index.js'\nimport './index.scss'\n\nconst baseClass = 'folder-file-table'\n\ntype Props = {\n showRelationCell?: boolean\n}\n\nexport function FolderFileTable({ showRelationCell = true }: Props) {\n const {\n checkIfItemIsDisabled,\n documents,\n focusedRowIndex,\n onItemClick,\n onItemKeyPress,\n selectedItemKeys,\n subfolders,\n } = useFolder()\n const { config } = useConfig()\n const { i18n, t } = useTranslation()\n\n const [relationToMap] = React.useState(() => {\n const map: Record<string, { plural: string; singular: string }> = {}\n config.collections.forEach((collection) => {\n map[collection.slug] = {\n plural: getTranslation(collection.labels?.plural, i18n),\n singular: getTranslation(collection.labels?.singular, i18n),\n }\n })\n return map\n })\n\n const [columns] = React.useState(() => {\n const columnsToShow = [\n {\n name: 'name',\n label: t('general:name'),\n },\n {\n name: 'createdAt',\n label: t('general:createdAt'),\n },\n {\n name: 'updatedAt',\n label: t('general:updatedAt'),\n },\n ]\n\n if (showRelationCell) {\n columnsToShow.push({\n name: 'type',\n label: t('version:type'),\n })\n }\n\n return columnsToShow\n })\n\n return (\n <SimpleTable\n headerCells={columns.map(({ name, label }) => (\n <TableHeader key={name}>{label}</TableHeader>\n ))}\n tableRows={[\n ...subfolders.map((subfolder, rowIndex) => {\n const { itemKey, relationTo, value } = subfolder\n const subfolderID = extractID(value)\n\n return (\n <DraggableTableRow\n columns={columns.map(({ name }, index) => {\n let cellValue: React.ReactNode = '—'\n if (name === 'name' && value._folderOrDocumentTitle !== undefined) {\n cellValue = value._folderOrDocumentTitle\n }\n\n if ((name === 'createdAt' || name === 'updatedAt') && value[name]) {\n cellValue = formatDate({\n date: value[name],\n i18n,\n pattern: config.admin.dateFormat,\n })\n }\n\n if (name === 'type') {\n cellValue = (\n <>\n {relationToMap[relationTo]?.singular || relationTo}\n {Array.isArray(subfolder.value?.folderType)\n ? subfolder.value?.folderType.reduce((acc, slug, index) => {\n if (index === 0) {\n return ` — ${relationToMap[slug]?.plural || slug}`\n }\n if (index > 0) {\n return `${acc}, ${relationToMap[slug]?.plural || slug}`\n }\n return acc\n }, '')\n : ''}\n </>\n )\n }\n\n if (index === 0) {\n return (\n <span className={`${baseClass}__cell-with-icon`} key={`${itemKey}-${name}`}>\n <ColoredFolderIcon />\n {cellValue}\n </span>\n )\n } else {\n return cellValue\n }\n })}\n disabled={checkIfItemIsDisabled(subfolder)}\n dragData={{\n id: subfolderID,\n type: 'folder',\n }}\n id={subfolderID}\n isDroppable\n isFocused={focusedRowIndex === rowIndex}\n isSelected={selectedItemKeys.has(itemKey)}\n isSelecting={selectedItemKeys.size > 0}\n itemKey={itemKey}\n key={`${rowIndex}-${itemKey}`}\n onClick={(event) => {\n void onItemClick({\n event,\n index: rowIndex,\n item: subfolder,\n })\n }}\n onKeyDown={(event) => {\n void onItemKeyPress({\n event,\n index: rowIndex,\n item: subfolder,\n })\n }}\n />\n )\n }),\n\n ...documents.map((document, unadjustedIndex) => {\n const { itemKey, relationTo, value } = document\n const documentID = extractID(value)\n const rowIndex = unadjustedIndex + subfolders.length\n\n return (\n <DraggableTableRow\n columns={columns.map(({ name }, index) => {\n let cellValue: React.ReactNode = '—'\n if (name === 'name' && value._folderOrDocumentTitle !== undefined) {\n cellValue = value._folderOrDocumentTitle\n }\n\n if ((name === 'createdAt' || name === 'updatedAt') && value[name]) {\n cellValue = formatDate({\n date: value[name],\n i18n,\n pattern: config.admin.dateFormat,\n })\n }\n\n if (name === 'type') {\n cellValue = relationToMap[relationTo]?.singular || relationTo\n }\n\n if (index === 0) {\n return (\n <span className={`${baseClass}__cell-with-icon`} key={`${itemKey}-${name}`}>\n <DocumentIcon />\n {cellValue}\n </span>\n )\n } else {\n return cellValue\n }\n })}\n disabled={checkIfItemIsDisabled(document)}\n dragData={{\n id: documentID,\n type: 'document',\n }}\n id={documentID}\n isFocused={focusedRowIndex === rowIndex}\n isSelected={selectedItemKeys.has(itemKey)}\n isSelecting={selectedItemKeys.size > 0}\n itemKey={itemKey}\n key={`${rowIndex}-${itemKey}`}\n onClick={(event) => {\n void onItemClick({\n event,\n index: rowIndex,\n item: document,\n })\n }}\n onKeyDown={(event) => {\n void onItemKeyPress({\n event,\n index: rowIndex,\n item: document,\n })\n }}\n />\n )\n }),\n ]}\n />\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,QAAQ;AAC1B,OAAOC,KAAA,MAAW;AAElB,SAASC,YAAY,QAAQ;AAC7B,SAASC,SAAS,QAAQ;AAC1B,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,UAAU,QAAQ;AAC3B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,WAAW,EAAEC,WAAW,QAAQ;AACzC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAMlB,OAAO,SAAAC,gBAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAhB,EAAA;EAAyB;IAAAiB,gBAAA,EAAAC;EAAA,IAAAH,EAAkC;EAAhC,MAAAE,gBAAA,GAAAC,EAAuB,KAAAC,SAAA,UAAvBD,EAAuB;EACvD;IAAAE,qBAAA;IAAAC,SAAA;IAAAC,eAAA;IAAAC,WAAA;IAAAC,cAAA;IAAAC,gBAAA;IAAAC;EAAA,IAQIpB,SAAA;EACJ;IAAAqB;EAAA,IAAmBtB,SAAA;EACnB;IAAAuB,IAAA;IAAAC;EAAA,IAAoBtB,cAAA;EAAA,IAAAuB,EAAA;EAAA,IAAAd,CAAA,QAAAW,MAAA,IAAAX,CAAA,QAAAY,IAAA;IAEmBE,EAAA,GAAAA,CAAA;MACrC,MAAAC,GAAA;MACAJ,MAAA,CAAAK,WAAA,CAAAC,OAAA,CAAAC,UAAA;QACEH,GAAG,CAACG,UAAA,CAAAC,IAAA;UAAAC,MAAA,EACMnC,cAAA,CAAeiC,UAAA,CAAAG,MAAA,EAAAD,MAAA,EAA2BR,IAAA;UAAAU,QAAA,EACxCrC,cAAA,CAAeiC,UAAA,CAAAG,MAAA,EAAAC,QAAA,EAA6BV,IAAA;QAAA;MAAA,CAE1D;MAAA,OACOG,GAAA;IAAA;IACTf,CAAA,MAAAW,MAAA;IAAAX,CAAA,MAAAY,IAAA;IAAAZ,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EATA,OAAAuB,aAAA,IAAwBpC,KAAA,CAAAqC,QAAA,CAAeV,EASvC;EAAA,IAAAW,EAAA;EAAA,IAAAzB,CAAA,QAAAC,gBAAA,IAAAD,CAAA,QAAAa,CAAA;IAEiCY,EAAA,GAAAA,CAAA;MAC/B,MAAAC,aAAA;QAAAC,IAAA,EAEU;QAAAC,KAAA,EACCf,CAAA,CAAE;MAAA;QAAAc,IAAA,EAGH;QAAAC,KAAA,EACCf,CAAA,CAAE;MAAA;QAAAc,IAAA,EAGH;QAAAC,KAAA,EACCf,CAAA,CAAE;MAAA;MAEZ,IAEGZ,gBAAA;QACFyB,aAAA,CAAAG,IAAA;UAAAF,IAAA,EACQ;UAAAC,KAAA,EACCf,CAAA,CAAE;QAAA,CACX;MAAA;MAAA,OAGKa,aAAA;IAAA;IACT1B,CAAA,MAAAC,gBAAA;IAAAD,CAAA,MAAAa,CAAA;IAAAb,CAAA,MAAAyB,EAAA;EAAA;IAAAA,EAAA,GAAAzB,CAAA;EAAA;EAxBA,OAAA8B,OAAA,IAAkB3C,KAAA,CAAAqC,QAAA,CAAeC,EAwBjC;EAAA,IAAAM,EAAA;EAAA,IAAA/B,CAAA,QAAAI,qBAAA,IAAAJ,CAAA,QAAA8B,OAAA,IAAA9B,CAAA,QAAAW,MAAA,IAAAX,CAAA,QAAAK,SAAA,IAAAL,CAAA,SAAAM,eAAA,IAAAN,CAAA,SAAAY,IAAA,IAAAZ,CAAA,SAAAO,WAAA,IAAAP,CAAA,SAAAQ,cAAA,IAAAR,CAAA,SAAAuB,aAAA,IAAAvB,CAAA,SAAAS,gBAAA,IAAAT,CAAA,SAAAU,UAAA;IAAA,IAAAsB,EAAA;IAAA,IAAAhC,CAAA,SAAAI,qBAAA,IAAAJ,CAAA,SAAA8B,OAAA,IAAA9B,CAAA,SAAAW,MAAA,IAAAX,CAAA,SAAAM,eAAA,IAAAN,CAAA,SAAAY,IAAA,IAAAZ,CAAA,SAAAO,WAAA,IAAAP,CAAA,SAAAQ,cAAA,IAAAR,CAAA,SAAAuB,aAAA,IAAAvB,CAAA,SAAAS,gBAAA;MAQwBuB,EAAA,GAAAA,CAAAC,SAAA,EAAAC,QAAA;QAChB;UAAAC,OAAA;UAAAC,UAAA;UAAAC;QAAA,IAAuCJ,SAAA;QACvC,MAAAK,WAAA,GAAoBpD,SAAA,CAAUmD,KAAA;QAAA,OAG5BE,IAAA,CAAA7C,iBAAA;UAAAoC,OAAA,EACWA,OAAA,CAAAf,GAAA,EAAAyB,EAAA,EAAAC,KAAA;YAAa;cAAAd,IAAA,EAAAe;YAAA,IAAAF,EAAQ;YAC5B,IAAAG,SAAA,GAAiC;YAAA,IAC7BhB,MAAA,KAAS,UAAUU,KAAA,CAAAO,sBAAA,KAAAzC,SAAiC;cACtDwC,SAAA,CAAAA,CAAA,CAAYN,KAAA,CAAAO,sBAAA;YAAZ;YAAA,IAGE,CAACjB,MAAA,KAAS,eAAeA,MAAA,KAAS,WAAU,KAAMU,KAAK,CAACV,MAAA,CAAK;cAC/DgB,SAAA,CAAAA,CAAA,CAAYA;gBAAAA,KAAA,CACJN,KAAK,CAACV,MAAA;gBAAAf,IAAA;gBAAAiC,OAAA,EAEHlC,MAAA,CAAAmC,KAAA,CAAAC;cAAA,CACX;YAJA;YAAA,IAOEpB,MAAA,KAAS;cACXgB,SAAA,CAAAA,CAAA,CACEA,gBAAA,CAAAA;gBAAAA,SAAA,CAAAA,CACGpB,aAAa,CAACa,UAAA,GAAAd,QAAA,IAAyBc,UAAA,EACvCY,KAAA,CAAAC,OAAA,CAAchB,SAAA,CAAAI,KAAA,EAAAa,UAAiB,IAC5BjB,SAAA,CAAAI,KAAA,EAAAa,UAAA,CAAAC,MAAA,EAAAC,GAAA,EAAAjC,IAAA,EAAAkC,OAAA;kBAAA,IACMZ,OAAA,MAAU;oBAAA,OACL,MAAMlB,aAAa,CAACJ,IAAA,GAAAC,MAAA,IAAiBD,IAAA,EAAM;kBAAA;kBAAA,IAEhDsB,OAAA,IAAQ;oBAAA,OACH,GAAGW,GAAA,KAAQ7B,aAAa,CAACJ,IAAA,GAAAC,MAAA,IAAiBD,IAAA,EAAM;kBAAA;kBAAA,OAElDiC,GAAA;gBAAA,GACN,MACH;cAAA,C;YAbR;YAAA,IAkBEX,KAAA,MAAU;cAAA,OAEVa,KAAA,CAAC;gBAAAC,SAAA,EAAgB,GAAA1D,SAAA,kBAA8B;gBAAA2D,QAAA,GAC7CjB,IAAA,CAAA9C,iBAAA,IAAC,GACAkD,SAAA;cAAA,GAFmD,GAAGR,OAAA,IAAWR,MAAA,EAAM;YAAA;cAAA,OAMrEgB,SAAA;YAAA;UAAA,CAEX;UAAAc,QAAA,EACUrD,qBAAA,CAAsB6B,SAAA;UAAAyB,QAAA;YAAAC,EAAA,EAE1BrB,WAAA;YAAAsB,IAAA,EACE;UAAA;UAAAD,EAAA,EAEJrB,WAAA;UAAAuB,WAAA;UAAAC,SAAA,EAEOxD,eAAA,KAAoB4B,QAAA;UAAA6B,UAAA,EACnBtD,gBAAA,CAAAuD,GAAA,CAAqB7B,OAAA;UAAA8B,WAAA,EACpBxD,gBAAA,CAAAyD,IAAA,IAAwB;UAAA/B,OAAA;UAAAgC,OAAA,EAAAC,KAAA;YAI9B7D,WAAA;cAAA6D,KAAA;cAAA3B,KAAA,EAEIP,QAAA;cAAAmC,IAAA,EACDpC;YAAA,CACR;UAAA;UAAAqC,SAAA,EAAAC,OAAA;YAGK/D,cAAA;cAAA4D,KAAA,EACHA,OAAA;cAAA3B,KAAA,EACOP,QAAA;cAAAmC,IAAA,EACDpC;YAAA,CACR;UAAA;QAAA,GAbG,GAAGC,QAAA,IAAYC,OAAA,EAAS;MAAA;MAiBnCnC,CAAA,OAAAI,qBAAA;MAAAJ,CAAA,OAAA8B,OAAA;MAAA9B,CAAA,OAAAW,MAAA;MAAAX,CAAA,OAAAM,eAAA;MAAAN,CAAA,OAAAY,IAAA;MAAAZ,CAAA,OAAAO,WAAA;MAAAP,CAAA,OAAAQ,cAAA;MAAAR,CAAA,OAAAuB,aAAA;MAAAvB,CAAA,OAAAS,gBAAA;MAAAT,CAAA,OAAAgC,EAAA;IAAA;MAAAA,EAAA,GAAAhC,CAAA;IAAA;IAAA,IAAAwC,EAAA;IAAA,IAAAxC,CAAA,SAAAI,qBAAA,IAAAJ,CAAA,SAAA8B,OAAA,IAAA9B,CAAA,SAAAW,MAAA,IAAAX,CAAA,SAAAM,eAAA,IAAAN,CAAA,SAAAY,IAAA,IAAAZ,CAAA,SAAAO,WAAA,IAAAP,CAAA,SAAAQ,cAAA,IAAAR,CAAA,SAAAuB,aAAA,IAAAvB,CAAA,SAAAS,gBAAA,IAAAT,CAAA,SAAAU,UAAA,CAAA8D,MAAA;MAEiBhC,EAAA,GAAAA,CAAAiC,QAAA,EAAAC,eAAA;QACf;UAAAvC,OAAA,EAAAwC,SAAA;UAAAvC,UAAA,EAAAwC,YAAA;UAAAvC,KAAA,EAAAwC;QAAA,IAAuCJ,QAAA;QACvC,MAAAK,UAAA,GAAmB5F,SAAA,CAAUmD,OAAA;QAC7B,MAAA0C,UAAA,GAAiBL,eAAA,GAAkBhE,UAAA,CAAA8D,MAAiB;QAAA,OAGlDjC,IAAA,CAAA7C,iBAAA;UAAAoC,OAAA,EACWA,OAAA,CAAAf,GAAA,EAAAiE,EAAA,EAAAC,OAAA;YAAa;cAAAtD,IAAA,EAAAuD;YAAA,IAAAF,EAAQ;YAC5B,IAAAG,WAAA,GAAiC;YAAA,IAC7BxD,MAAA,KAAS,UAAUU,OAAA,CAAAO,sBAAA,KAAAzC,SAAiC;cACtDwC,WAAA,CAAAA,CAAA,CAAYN,OAAA,CAAAO,sBAAA;YAAZ;YAAA,IAGE,CAACjB,MAAA,KAAS,eAAeA,MAAA,KAAS,WAAU,KAAMU,OAAK,CAACV,MAAA,CAAK;cAC/DgB,WAAA,CAAAA,CAAA,CAAYA;gBAAAA,KAAA,CACJN,OAAK,CAACV,MAAA;gBAAAf,IAAA;gBAAAiC,OAAA,EAEHlC,MAAA,CAAAmC,KAAA,CAAAC;cAAA,CACX;YAJA;YAAA,IAOEpB,MAAA,KAAS;cACXgB,WAAA,CAAAA,CAAA,CAAYpB,aAAa,CAACa,YAAA,GAAAd,QAAA,IAAyBc,YAAA;YAAnD;YAAA,IAGEK,OAAA,MAAU;cAAA,OAEVa,KAAA,CAAC;gBAAAC,SAAA,EAAgB,GAAA1D,SAAA,kBAA8B;gBAAA2D,QAAA,GAC7CjB,IAAA,CAAAnD,YAAA,IAAC,GACAuD,WAAA;cAAA,GAFmD,GAAGR,SAAA,IAAWR,MAAA,EAAM;YAAA;cAAA,OAMrEgB,WAAA;YAAA;UAAA,CAEX;UAAAc,QAAA,EACUrD,qBAAA,CAAsBqE,QAAA;UAAAf,QAAA;YAAAC,EAAA,EAE1BmB,UAAA;YAAAlB,IAAA,EACE;UAAA;UAAAD,EAAA,EAEJmB,UAAA;UAAAhB,SAAA,EACOxD,eAAA,KAAoB4B,UAAA;UAAA6B,UAAA,EACnBtD,gBAAA,CAAAuD,GAAA,CAAqB7B,SAAA;UAAA8B,WAAA,EACpBxD,gBAAA,CAAAyD,IAAA,IAAwB;UAAA/B,OAAA,EAC5BA,SAAA;UAAAgC,OAAA,EAAAiB,OAAA;YAGF7E,WAAA;cAAA6D,KAAA,EACHA,OAAA;cAAA3B,KAAA,EACOP,UAAA;cAAAmC,IAAA,EACDI;YAAA,CACR;UAAA;UAAAH,SAAA,EAAAe,OAAA;YAGK7E,cAAA;cAAA4D,KAAA,EACHA,OAAA;cAAA3B,KAAA,EACOP,UAAA;cAAAmC,IAAA,EACDI;YAAA,CACR;UAAA;QAAA,GAbG,GAAGvC,UAAA,IAAYC,SAAA,EAAS;MAAA;MAiBnCnC,CAAA,OAAAI,qBAAA;MAAAJ,CAAA,OAAA8B,OAAA;MAAA9B,CAAA,OAAAW,MAAA;MAAAX,CAAA,OAAAM,eAAA;MAAAN,CAAA,OAAAY,IAAA;MAAAZ,CAAA,OAAAO,WAAA;MAAAP,CAAA,OAAAQ,cAAA;MAAAR,CAAA,OAAAuB,aAAA;MAAAvB,CAAA,OAAAS,gBAAA;MAAAT,CAAA,OAAAU,UAAA,CAAA8D,MAAA;MAAAxE,CAAA,OAAAwC,EAAA;IAAA;MAAAA,EAAA,GAAAxC,CAAA;IAAA;IApJJ+B,EAAA,GAAAQ,IAAA,CAAA5C,WAAA;MAAA2F,WAAA,EACexD,OAAA,CAAAf,GAAA,CAAAwE,KACO;MAAAC,SAAA,MAGf9E,UAAA,CAAAK,GAAA,CAAeiB,EA8ElB,MAEG3B,SAAA,CAAAU,GAAA,CAAcyB,EA+DjB;IAAA,C;;;;;;;;;;;;;;;;SApJJT,E;;AAnDG,SAAAwD,MAAAxF,EAAA;EAoDyB;IAAA4B,IAAA;IAAAC;EAAA,IAAA7B,EAAe;EAAA,OACvCwC,IAAA,CAAA3C,WAAA;IAAA4D,QAAA,EAAyB5B;EAAA,GAAPD,IAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","extractID","React","DocumentIcon","useConfig","useFolder","useTranslation","formatDate","ColoredFolderIcon","DraggableTableRow","SimpleTable","TableHeader","baseClass","FolderFileTable","t0","$","showRelationCell","t1","undefined","checkIfItemIsDisabled","documents","focusedRowIndex","onItemClick","onItemKeyPress","selectedItemKeys","subfolders","config","i18n","t","t2","map","collections","forEach","collection","slug","plural","labels","singular","relationToMap","useState","t3","columnsToShow","name","label","push","columns","t4","t5","subfolder","rowIndex","itemKey","relationTo","value","subfolderID","_jsx","t6","index","name_0","cellValue","_folderOrDocumentTitle","pattern","admin","dateFormat","Array","isArray","folderType","reduce","acc","index_0","_jsxs","className","children","disabled","dragData","id","type","isDroppable","isFocused","isSelected","has","isSelecting","size","onClick","event","item","onKeyDown","event_0","length","document","unadjustedIndex","itemKey_0","relationTo_0","value_0","documentID","rowIndex_0","t7","index_1","name_1","cellValue_0","event_1","event_2","headerCells","_temp","tableRows"],"sources":["../../../../src/elements/FolderView/FolderFileTable/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { extractID } from 'payload/shared'\nimport React from 'react'\n\nimport { DocumentIcon } from '../../../icons/Document/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useFolder } from '../../../providers/Folders/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { formatDate } from '../../../utilities/formatDocTitle/formatDateTitle.js'\nimport { ColoredFolderIcon } from '../ColoredFolderIcon/index.js'\nimport { DraggableTableRow } from '../DraggableTableRow/index.js'\nimport { SimpleTable, TableHeader } from '../SimpleTable/index.js'\nimport './index.scss'\n\nconst baseClass = 'folder-file-table'\n\ntype Props = {\n showRelationCell?: boolean\n}\n\nexport function FolderFileTable({ showRelationCell = true }: Props) {\n const {\n checkIfItemIsDisabled,\n documents,\n focusedRowIndex,\n onItemClick,\n onItemKeyPress,\n selectedItemKeys,\n subfolders,\n } = useFolder()\n const { config } = useConfig()\n const { i18n, t } = useTranslation()\n\n const [relationToMap] = React.useState(() => {\n const map: Record<string, { plural: string; singular: string }> = {}\n config.collections.forEach((collection) => {\n map[collection.slug] = {\n plural: getTranslation(collection.labels?.plural, i18n),\n singular: getTranslation(collection.labels?.singular, i18n),\n }\n })\n return map\n })\n\n const [columns] = React.useState(() => {\n const columnsToShow = [\n {\n name: 'name',\n label: t('general:name'),\n },\n {\n name: 'createdAt',\n label: t('general:createdAt'),\n },\n {\n name: 'updatedAt',\n label: t('general:updatedAt'),\n },\n ]\n\n if (showRelationCell) {\n columnsToShow.push({\n name: 'type',\n label: t('version:type'),\n })\n }\n\n return columnsToShow\n })\n\n return (\n <SimpleTable\n headerCells={columns.map(({ name, label }) => (\n <TableHeader key={name}>{label}</TableHeader>\n ))}\n tableRows={[\n ...subfolders.map((subfolder, rowIndex) => {\n const { itemKey, relationTo, value } = subfolder\n const subfolderID = extractID(value)\n\n return (\n <DraggableTableRow\n columns={columns.map(({ name }, index) => {\n let cellValue: React.ReactNode = '—'\n if (name === 'name' && value._folderOrDocumentTitle !== undefined) {\n cellValue = value._folderOrDocumentTitle\n }\n\n if ((name === 'createdAt' || name === 'updatedAt') && value[name]) {\n cellValue = formatDate({\n date: value[name],\n i18n,\n pattern: config.admin.dateFormat,\n })\n }\n\n if (name === 'type') {\n cellValue = (\n <>\n {relationToMap[relationTo]?.singular || relationTo}\n {Array.isArray(subfolder.value?.folderType)\n ? subfolder.value?.folderType.reduce((acc, slug, index) => {\n if (index === 0) {\n return ` — ${relationToMap[slug]?.plural || slug}`\n }\n if (index > 0) {\n return `${acc}, ${relationToMap[slug]?.plural || slug}`\n }\n return acc\n }, '')\n : ''}\n </>\n )\n }\n\n if (index === 0) {\n return (\n <span className={`${baseClass}__cell-with-icon`} key={`${itemKey}-${name}`}>\n <ColoredFolderIcon />\n {cellValue}\n </span>\n )\n } else {\n return cellValue\n }\n })}\n disabled={checkIfItemIsDisabled(subfolder)}\n dragData={{\n id: subfolderID,\n type: 'folder',\n }}\n id={subfolderID}\n isDroppable\n isFocused={focusedRowIndex === rowIndex}\n isSelected={selectedItemKeys.has(itemKey)}\n isSelecting={selectedItemKeys.size > 0}\n itemKey={itemKey}\n key={`${rowIndex}-${itemKey}`}\n onClick={(event) => {\n void onItemClick({\n event,\n index: rowIndex,\n item: subfolder,\n })\n }}\n onKeyDown={(event) => {\n void onItemKeyPress({\n event,\n index: rowIndex,\n item: subfolder,\n })\n }}\n />\n )\n }),\n\n ...documents.map((document, unadjustedIndex) => {\n const { itemKey, relationTo, value } = document\n const documentID = extractID(value)\n const rowIndex = unadjustedIndex + subfolders.length\n\n return (\n <DraggableTableRow\n columns={columns.map(({ name }, index) => {\n let cellValue: React.ReactNode = '—'\n if (name === 'name' && value._folderOrDocumentTitle !== undefined) {\n cellValue = value._folderOrDocumentTitle\n }\n\n if ((name === 'createdAt' || name === 'updatedAt') && value[name]) {\n cellValue = formatDate({\n date: value[name],\n i18n,\n pattern: config.admin.dateFormat,\n })\n }\n\n if (name === 'type') {\n cellValue = relationToMap[relationTo]?.singular || relationTo\n }\n\n if (index === 0) {\n return (\n <span className={`${baseClass}__cell-with-icon`} key={`${itemKey}-${name}`}>\n <DocumentIcon />\n {cellValue}\n </span>\n )\n } else {\n return cellValue\n }\n })}\n disabled={checkIfItemIsDisabled(document)}\n dragData={{\n id: documentID,\n type: 'document',\n }}\n id={documentID}\n isFocused={focusedRowIndex === rowIndex}\n isSelected={selectedItemKeys.has(itemKey)}\n isSelecting={selectedItemKeys.size > 0}\n itemKey={itemKey}\n key={`${rowIndex}-${itemKey}`}\n onClick={(event) => {\n void onItemClick({\n event,\n index: rowIndex,\n item: document,\n })\n }}\n onKeyDown={(event) => {\n void onItemKeyPress({\n event,\n index: rowIndex,\n item: document,\n })\n }}\n />\n )\n }),\n ]}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","getTranslation","formatAdminURL","React","useId","toast","useForm","useFormFields","FolderIcon","useConfig","useDocumentInfo","useTranslation","Button","formatDrawerSlug","useDrawerDepth","MoveItemsToFolderDrawer","baseClass","MoveDocToFolder","t0","$","buttonProps","className","t1","folderCollectionSlug","folderFieldName","undefined","t","dispatchField","_temp","t2","t3","fields","currentParentFolder","fromFolderID","value","id","collectionSlug","initialData","title","setModified","fromFolderName","setFromFolderName","useState","config","modalID","t4","t5","routes","api","fetchFolderLabel","response","fetch","apiRoute","path","folderData","json","name","useEffect","t6","t7","t8","id_0","type","t9","_jsx","MoveDocToFolderButton","docData","docID","docTitle","modalSlug","onConfirm","skipConfirmModal","dispatch","getEntityConfig","i18n","closeModal","openModal","drawerDepth","drawerSlug","slug","depth","titleToRender","labels","singular","filter","Boolean","_jsxs","_Fragment","children","buttonStyle","join","icon","iconPosition","onClick","action","folderAssignedCollections","itemsToMove","itemKey","relationTo","args","success","folderName","_"],"sources":["../../../../src/elements/FolderView/MoveDocToFolder/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { type FolderOrDocument, formatAdminURL } from 'payload/shared'\nimport React, { useId } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props as ButtonProps } from '../../Button/types.js'\n\nimport { useForm, useFormFields } from '../../../forms/Form/context.js'\nimport { FolderIcon } from '../../../icons/Folder/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { formatDrawerSlug, useDrawerDepth } from '../../Drawer/index.js'\nimport './index.scss'\nimport { MoveItemsToFolderDrawer } from '../Drawers/MoveToFolder/index.js'\n\nconst baseClass = 'move-doc-to-folder'\n\n/**\n * This is the button shown on the edit document view. It uses the more generic `MoveDocToFolderButton` component.\n */\nexport function MoveDocToFolder({\n buttonProps,\n className = '',\n folderCollectionSlug,\n folderFieldName,\n}: {\n readonly buttonProps?: Partial<ButtonProps>\n readonly className?: string\n readonly folderCollectionSlug: string\n readonly folderFieldName: string\n}) {\n const { t } = useTranslation()\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n const currentParentFolder = useFormFields(\n ([fields]) => (fields && fields?.[folderFieldName]) || null,\n )\n const fromFolderID = currentParentFolder?.value\n const { id, collectionSlug, initialData, title } = useDocumentInfo()\n const { setModified } = useForm()\n const [fromFolderName, setFromFolderName] = React.useState(() => `${t('general:loading')}...`)\n\n const { config } = useConfig()\n const modalID = useId()\n\n React.useEffect(() => {\n async function fetchFolderLabel() {\n if (fromFolderID && (typeof fromFolderID === 'string' || typeof fromFolderID === 'number')) {\n const response = await fetch(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${folderCollectionSlug}/${fromFolderID}`,\n }),\n )\n const folderData = await response.json()\n setFromFolderName(folderData?.name || t('folder:noFolder'))\n } else {\n setFromFolderName(t('folder:noFolder'))\n }\n }\n\n void fetchFolderLabel()\n }, [folderCollectionSlug, config.routes.api, fromFolderID, t])\n\n return (\n <MoveDocToFolderButton\n buttonProps={buttonProps}\n className={className}\n collectionSlug={collectionSlug}\n docData={initialData as FolderOrDocument['value']}\n docID={id}\n docTitle={title}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={fromFolderID as number | string}\n fromFolderName={fromFolderName}\n modalSlug={`move-to-folder-${modalID}`}\n onConfirm={({ id }) => {\n if (currentParentFolder.value !== id) {\n dispatchField({\n type: 'UPDATE',\n path: folderFieldName,\n value: id,\n })\n setModified(true)\n }\n }}\n skipConfirmModal={!currentParentFolder?.value}\n />\n )\n}\n\ntype MoveDocToFolderButtonProps = {\n readonly buttonProps?: Partial<ButtonProps>\n readonly className?: string\n readonly collectionSlug: string\n readonly docData: FolderOrDocument['value']\n readonly docID: number | string\n readonly docTitle?: string\n readonly folderCollectionSlug: string\n readonly folderFieldName: string\n readonly fromFolderID?: number | string\n readonly fromFolderName: string\n readonly modalSlug: string\n readonly onConfirm?: (args: { id: number | string; name: string }) => Promise<void> | void\n readonly skipConfirmModal?: boolean\n}\n\n/**\n * This is a more generic button that can be used in other contexts, such as table cells and the edit view.\n */\nexport const MoveDocToFolderButton = ({\n buttonProps,\n className,\n collectionSlug,\n docData,\n docID,\n docTitle,\n folderCollectionSlug,\n folderFieldName,\n fromFolderID,\n fromFolderName,\n modalSlug,\n onConfirm,\n skipConfirmModal,\n}: MoveDocToFolderButtonProps) => {\n const { getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const drawerDepth = useDrawerDepth()\n const drawerSlug = formatDrawerSlug({ slug: modalSlug, depth: drawerDepth })\n\n const titleToRender =\n docTitle || getTranslation(getEntityConfig({ collectionSlug }).labels.singular, i18n)\n\n return (\n <>\n <Button\n buttonStyle=\"subtle\"\n className={[baseClass, className].filter(Boolean).join(' ')}\n icon={<FolderIcon />}\n iconPosition=\"left\"\n onClick={() => {\n openModal(drawerSlug)\n }}\n {...buttonProps}\n >\n {fromFolderName}\n </Button>\n\n <MoveItemsToFolderDrawer\n action=\"moveItemToFolder\"\n drawerSlug={drawerSlug}\n //todo this should inherit\n folderAssignedCollections={[collectionSlug]}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={fromFolderID}\n fromFolderName={fromFolderName}\n itemsToMove={[\n {\n itemKey: `${collectionSlug}-${docID}`,\n relationTo: collectionSlug,\n value: { ...docData, id: docID },\n },\n ]}\n onConfirm={async (args) => {\n if (fromFolderID !== args.id && typeof onConfirm === 'function') {\n try {\n await onConfirm(args)\n\n if (args.id) {\n // moved to folder\n toast.success(\n t('folder:itemHasBeenMoved', {\n folderName: `\"${args.name}\"`,\n title: titleToRender,\n }),\n )\n } else {\n // moved to root\n toast.success(\n t('folder:itemHasBeenMovedToRoot', {\n title: titleToRender,\n }),\n )\n }\n } catch (_) {\n // todo: add error toast?\n }\n }\n\n closeModal(drawerSlug)\n }}\n skipConfirmModal={skipConfirmModal}\n title={titleToRender}\n />\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","getTranslation","formatAdminURL","React","useId","toast","useForm","useFormFields","FolderIcon","useConfig","useDocumentInfo","useTranslation","Button","formatDrawerSlug","useDrawerDepth","MoveItemsToFolderDrawer","baseClass","MoveDocToFolder","t0","$","buttonProps","className","t1","folderCollectionSlug","folderFieldName","undefined","t","dispatchField","_temp","t2","t3","fields","currentParentFolder","fromFolderID","value","id","collectionSlug","initialData","title","setModified","fromFolderName","setFromFolderName","useState","config","modalID","t4","t5","routes","api","fetchFolderLabel","response","fetch","apiRoute","path","folderData","json","name","useEffect","t6","t7","t8","id_0","type","t9","_jsx","MoveDocToFolderButton","docData","docID","docTitle","modalSlug","onConfirm","skipConfirmModal","dispatch","getEntityConfig","i18n","closeModal","openModal","drawerDepth","drawerSlug","slug","depth","titleToRender","labels","singular","filter","Boolean","_jsxs","_Fragment","children","buttonStyle","join","icon","iconPosition","onClick","action","folderAssignedCollections","itemsToMove","itemKey","relationTo","args","success","folderName","_"],"sources":["../../../../src/elements/FolderView/MoveDocToFolder/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { type FolderOrDocument, formatAdminURL } from 'payload/shared'\nimport React, { useId } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props as ButtonProps } from '../../Button/types.js'\n\nimport { useForm, useFormFields } from '../../../forms/Form/context.js'\nimport { FolderIcon } from '../../../icons/Folder/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { formatDrawerSlug, useDrawerDepth } from '../../Drawer/index.js'\nimport './index.scss'\nimport { MoveItemsToFolderDrawer } from '../Drawers/MoveToFolder/index.js'\n\nconst baseClass = 'move-doc-to-folder'\n\n/**\n * This is the button shown on the edit document view. It uses the more generic `MoveDocToFolderButton` component.\n */\nexport function MoveDocToFolder({\n buttonProps,\n className = '',\n folderCollectionSlug,\n folderFieldName,\n}: {\n readonly buttonProps?: Partial<ButtonProps>\n readonly className?: string\n readonly folderCollectionSlug: string\n readonly folderFieldName: string\n}) {\n const { t } = useTranslation()\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n const currentParentFolder = useFormFields(\n ([fields]) => (fields && fields?.[folderFieldName]) || null,\n )\n const fromFolderID = currentParentFolder?.value\n const { id, collectionSlug, initialData, title } = useDocumentInfo()\n const { setModified } = useForm()\n const [fromFolderName, setFromFolderName] = React.useState(() => `${t('general:loading')}...`)\n\n const { config } = useConfig()\n const modalID = useId()\n\n React.useEffect(() => {\n async function fetchFolderLabel() {\n if (fromFolderID && (typeof fromFolderID === 'string' || typeof fromFolderID === 'number')) {\n const response = await fetch(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${folderCollectionSlug}/${fromFolderID}`,\n }),\n )\n const folderData = await response.json()\n setFromFolderName(folderData?.name || t('folder:noFolder'))\n } else {\n setFromFolderName(t('folder:noFolder'))\n }\n }\n\n void fetchFolderLabel()\n }, [folderCollectionSlug, config.routes.api, fromFolderID, t])\n\n return (\n <MoveDocToFolderButton\n buttonProps={buttonProps}\n className={className}\n collectionSlug={collectionSlug}\n docData={initialData as FolderOrDocument['value']}\n docID={id}\n docTitle={title}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={fromFolderID as number | string}\n fromFolderName={fromFolderName}\n modalSlug={`move-to-folder-${modalID}`}\n onConfirm={({ id }) => {\n if (currentParentFolder.value !== id) {\n dispatchField({\n type: 'UPDATE',\n path: folderFieldName,\n value: id,\n })\n setModified(true)\n }\n }}\n skipConfirmModal={!currentParentFolder?.value}\n />\n )\n}\n\ntype MoveDocToFolderButtonProps = {\n readonly buttonProps?: Partial<ButtonProps>\n readonly className?: string\n readonly collectionSlug: string\n readonly docData: FolderOrDocument['value']\n readonly docID: number | string\n readonly docTitle?: string\n readonly folderCollectionSlug: string\n readonly folderFieldName: string\n readonly fromFolderID?: number | string\n readonly fromFolderName: string\n readonly modalSlug: string\n readonly onConfirm?: (args: { id: number | string; name: string }) => Promise<void> | void\n readonly skipConfirmModal?: boolean\n}\n\n/**\n * This is a more generic button that can be used in other contexts, such as table cells and the edit view.\n */\nexport const MoveDocToFolderButton = ({\n buttonProps,\n className,\n collectionSlug,\n docData,\n docID,\n docTitle,\n folderCollectionSlug,\n folderFieldName,\n fromFolderID,\n fromFolderName,\n modalSlug,\n onConfirm,\n skipConfirmModal,\n}: MoveDocToFolderButtonProps) => {\n const { getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const drawerDepth = useDrawerDepth()\n const drawerSlug = formatDrawerSlug({ slug: modalSlug, depth: drawerDepth })\n\n const titleToRender =\n docTitle || getTranslation(getEntityConfig({ collectionSlug }).labels.singular, i18n)\n\n return (\n <>\n <Button\n buttonStyle=\"subtle\"\n className={[baseClass, className].filter(Boolean).join(' ')}\n icon={<FolderIcon />}\n iconPosition=\"left\"\n onClick={() => {\n openModal(drawerSlug)\n }}\n {...buttonProps}\n >\n {fromFolderName}\n </Button>\n\n <MoveItemsToFolderDrawer\n action=\"moveItemToFolder\"\n drawerSlug={drawerSlug}\n //todo this should inherit\n folderAssignedCollections={[collectionSlug]}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={fromFolderID}\n fromFolderName={fromFolderName}\n itemsToMove={[\n {\n itemKey: `${collectionSlug}-${docID}`,\n relationTo: collectionSlug,\n value: { ...docData, id: docID },\n },\n ]}\n onConfirm={async (args) => {\n if (fromFolderID !== args.id && typeof onConfirm === 'function') {\n try {\n await onConfirm(args)\n\n if (args.id) {\n // moved to folder\n toast.success(\n t('folder:itemHasBeenMoved', {\n folderName: `\"${args.name}\"`,\n title: titleToRender,\n }),\n )\n } else {\n // moved to root\n toast.success(\n t('folder:itemHasBeenMovedToRoot', {\n title: titleToRender,\n }),\n )\n }\n } catch (_) {\n // todo: add error toast?\n }\n }\n\n closeModal(drawerSlug)\n }}\n skipConfirmModal={skipConfirmModal}\n title={titleToRender}\n />\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}