@payloadcms/ui 3.44.0-canary.1 → 3.44.0-canary.10

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 (88) hide show
  1. package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
  2. package/dist/elements/AddNewRelation/index.js +4 -3
  3. package/dist/elements/AddNewRelation/index.js.map +1 -1
  4. package/dist/elements/Autosave/index.d.ts.map +1 -1
  5. package/dist/elements/Autosave/index.js +12 -1
  6. package/dist/elements/Autosave/index.js.map +1 -1
  7. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  8. package/dist/elements/BulkUpload/FileSidebar/index.js +74 -29
  9. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  10. package/dist/elements/BulkUpload/FileSidebar/index.scss +5 -4
  11. package/dist/elements/BulkUpload/FormsManager/index.d.ts +0 -1
  12. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  13. package/dist/elements/BulkUpload/FormsManager/index.js +37 -64
  14. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  15. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts +1 -0
  16. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts.map +1 -1
  17. package/dist/elements/BulkUpload/FormsManager/reducer.js +1 -0
  18. package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
  19. package/dist/elements/EditMany/DrawerContent.d.ts +5 -1
  20. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  21. package/dist/elements/EditMany/DrawerContent.js +5 -1
  22. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  23. package/dist/elements/EditMany/index.d.ts +1 -0
  24. package/dist/elements/EditMany/index.d.ts.map +1 -1
  25. package/dist/elements/EditMany/index.js +32 -18
  26. package/dist/elements/EditMany/index.js.map +1 -1
  27. package/dist/elements/EmailAndUsername/index.d.ts +1 -0
  28. package/dist/elements/EmailAndUsername/index.d.ts.map +1 -1
  29. package/dist/elements/EmailAndUsername/index.js +64 -30
  30. package/dist/elements/EmailAndUsername/index.js.map +1 -1
  31. package/dist/elements/EmailAndUsername/index.scss +9 -0
  32. package/dist/elements/PublishMany/DrawerContent.d.ts +1 -0
  33. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  34. package/dist/elements/PublishMany/DrawerContent.js +5 -1
  35. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  36. package/dist/elements/PublishMany/index.d.ts +1 -0
  37. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  38. package/dist/elements/PublishMany/index.js +31 -17
  39. package/dist/elements/PublishMany/index.js.map +1 -1
  40. package/dist/elements/ShimmerEffect/index.d.ts +2 -0
  41. package/dist/elements/ShimmerEffect/index.d.ts.map +1 -1
  42. package/dist/elements/ShimmerEffect/index.js +5 -3
  43. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  44. package/dist/elements/Thumbnail/createThumbnail.d.ts.map +1 -1
  45. package/dist/elements/Thumbnail/createThumbnail.js +8 -2
  46. package/dist/elements/Thumbnail/createThumbnail.js.map +1 -1
  47. package/dist/elements/UnpublishMany/DrawerContent.d.ts +1 -0
  48. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  49. package/dist/elements/UnpublishMany/DrawerContent.js +5 -1
  50. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  51. package/dist/elements/UnpublishMany/index.d.ts +1 -0
  52. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  53. package/dist/elements/UnpublishMany/index.js +31 -17
  54. package/dist/elements/UnpublishMany/index.js.map +1 -1
  55. package/dist/exports/client/{CodeEditor-Z3ZZJH7C.js → CodeEditor-YP63NRLU.js} +2 -2
  56. package/dist/exports/client/{chunk-CNCOIY3Y.js → chunk-5EP6VERX.js} +4 -4
  57. package/dist/exports/client/{chunk-CNCOIY3Y.js.map → chunk-5EP6VERX.js.map} +3 -3
  58. package/dist/exports/client/index.d.ts +2 -0
  59. package/dist/exports/client/index.d.ts.map +1 -1
  60. package/dist/exports/client/index.js +16 -16
  61. package/dist/exports/client/index.js.map +4 -4
  62. package/dist/fields/Checkbox/index.d.ts.map +1 -1
  63. package/dist/fields/Checkbox/index.js +9 -0
  64. package/dist/fields/Checkbox/index.js.map +1 -1
  65. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  66. package/dist/forms/Form/fieldReducer.js +5 -0
  67. package/dist/forms/Form/fieldReducer.js.map +1 -1
  68. package/dist/forms/useField/index.d.ts.map +1 -1
  69. package/dist/forms/useField/index.js +2 -1
  70. package/dist/forms/useField/index.js.map +1 -1
  71. package/dist/styles.css +1 -1
  72. package/dist/utilities/getFolderResultsComponentAndData.d.ts.map +1 -1
  73. package/dist/utilities/getFolderResultsComponentAndData.js +1 -2
  74. package/dist/utilities/getFolderResultsComponentAndData.js.map +1 -1
  75. package/dist/views/CollectionFolder/index.js +1 -1
  76. package/dist/views/CollectionFolder/index.js.map +1 -1
  77. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  78. package/dist/views/Edit/Auth/index.js +163 -136
  79. package/dist/views/Edit/Auth/index.js.map +1 -1
  80. package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
  81. package/dist/views/Edit/SetDocumentTitle/index.js +24 -21
  82. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  83. package/dist/views/List/ListSelection/index.d.ts.map +1 -1
  84. package/dist/views/List/ListSelection/index.js +31 -18
  85. package/dist/views/List/ListSelection/index.js.map +1 -1
  86. package/package.json +4 -4
  87. package/dist/elements/BulkUpload/index.scss +0 -0
  88. /package/dist/exports/client/{CodeEditor-Z3ZZJH7C.js.map → CodeEditor-YP63NRLU.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/AddNewRelation/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqD,MAAM,OAAO,CAAA;AAGzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAUvC,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4M1C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/AddNewRelation/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqD,MAAM,OAAO,CAAA;AAGzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAUvC,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkN1C,CAAA"}
@@ -66,13 +66,14 @@ export const AddNewRelation = t0 => {
66
66
  toggleDrawer
67
67
  } = t4;
68
68
  let t5;
69
- if ($[5] !== collectionConfig?.slug || $[6] !== hasMany || $[7] !== onChange || $[8] !== relatedCollections[0] || $[9] !== value) {
69
+ if ($[5] !== collectionConfig || $[6] !== hasMany || $[7] !== onChange || $[8] !== relatedCollections[0] || $[9] !== value) {
70
70
  t5 = t6 => {
71
71
  const {
72
72
  doc,
73
73
  operation
74
74
  } = t6;
75
- if (operation === "create") {
75
+ const isAutosaveEnabled = typeof collectionConfig?.versions?.drafts === "object" ? collectionConfig.versions.drafts.autosave : false;
76
+ if (operation === "create" || operation === "update" && isAutosaveEnabled) {
76
77
  let isNewValue;
77
78
  if (!value) {
78
79
  isNewValue = true;
@@ -95,7 +96,7 @@ export const AddNewRelation = t0 => {
95
96
  setSelectedCollection(undefined);
96
97
  }
97
98
  };
98
- $[5] = collectionConfig?.slug;
99
+ $[5] = collectionConfig;
99
100
  $[6] = hasMany;
100
101
  $[7] = onChange;
101
102
  $[8] = relatedCollections[0];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useCallback","useEffect","useState","PlusIcon","useAuth","useTranslation","Button","useDocumentDrawer","Popup","PopupList","Tooltip","useRelatedCollections","baseClass","AddNewRelation","t0","$","ButtonFromProps","hasMany","onChange","path","relationTo","unstyled","value","relatedCollections","permissions","show","setShow","selectedCollection","setSelectedCollection","relatedToMany","length","t1","undefined","collectionConfig","setCollectionConfig","popupOpen","setPopupOpen","i18n","t","showTooltip","setShowTooltip","t2","slug","t3","collectionSlug","DocumentDrawer","DocumentDrawerToggler","t4","isDrawerOpen","toggleDrawer","t5","t6","doc","operation","isNewValue","some","v","id","Array","isArray","onSave","Symbol","for","state","onPopupToggle","t7","t8","collections","create","collection","t10","t9","find","collection_0","t11","t12","t13","t14","t15","labels","singular","t16","label","_jsxs","className","children","_jsx","filter","Boolean","join","onClick","onMouseEnter","onMouseLeave","button","buttonStyle","tooltip","horizontalAlign","onToggleOpen","render","t17","close","closePopup","ButtonGroup","map","relatedCollection"],"sources":["../../../src/elements/AddNewRelation/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\nimport type { Props } from './types.js'\n\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { Popup } from '../Popup/index.js'\nimport * as PopupList from '../Popup/PopupButtonList/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.scss'\nimport { useRelatedCollections } from './useRelatedCollections.js'\n\nconst baseClass = 'relationship-add-new'\n\nexport const AddNewRelation: React.FC<Props> = ({\n Button: ButtonFromProps,\n hasMany,\n onChange,\n path,\n relationTo,\n unstyled,\n value,\n}) => {\n const relatedCollections = useRelatedCollections(relationTo)\n const { permissions } = useAuth()\n const [show, setShow] = useState(false)\n const [selectedCollection, setSelectedCollection] = useState<string>()\n\n const relatedToMany = relatedCollections.length > 1\n\n const [collectionConfig, setCollectionConfig] = useState<ClientCollectionConfig>(() =>\n !relatedToMany ? relatedCollections[0] : undefined,\n )\n\n const [popupOpen, setPopupOpen] = useState(false)\n const { i18n, t } = useTranslation()\n const [showTooltip, setShowTooltip] = useState(false)\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen, toggleDrawer }] = useDocumentDrawer(\n {\n collectionSlug: collectionConfig?.slug,\n },\n )\n\n const onSave: DocumentDrawerContextType['onSave'] = useCallback(\n ({ doc, operation }) => {\n if (operation === 'create') {\n // ensure the value is not already in the array\n let isNewValue = false\n if (!value) {\n isNewValue = true\n } else {\n isNewValue = Array.isArray(value)\n ? !value.some((v) => v && v.value === doc.id)\n : value.value !== doc.id\n }\n\n if (isNewValue) {\n // dispatchOptions({\n // collection: collectionConfig,\n // // TODO: fix this\n // // @ts-expect-error-next-line\n // type: 'ADD',\n // config,\n // docs: [doc],\n // i18n,\n // sort: true,\n // })\n\n if (hasMany === true) {\n onChange([\n ...(Array.isArray(value) ? value : []),\n {\n relationTo: collectionConfig?.slug,\n value: doc.id,\n },\n ])\n } else {\n onChange({\n relationTo: relatedCollections[0].slug,\n value: doc.id,\n })\n }\n }\n\n setSelectedCollection(undefined)\n }\n },\n [collectionConfig, hasMany, onChange, value, relatedCollections],\n )\n\n const onPopupToggle = useCallback((state) => {\n setPopupOpen(state)\n }, [])\n\n useEffect(() => {\n if (permissions) {\n if (relatedCollections.length === 1) {\n setShow(permissions.collections[relatedCollections[0]?.slug]?.create)\n } else {\n setShow(\n relatedCollections.some(\n (collection) => permissions.collections[collection?.slug]?.create,\n ),\n )\n }\n }\n }, [permissions, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && selectedCollection) {\n setCollectionConfig(\n relatedCollections.find((collection) => collection?.slug === selectedCollection),\n )\n }\n }, [selectedCollection, relatedToMany, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && collectionConfig) {\n // the drawer must be rendered on the page before before opening it\n // this is why 'selectedCollection' is different from 'collectionConfig'\n toggleDrawer()\n setSelectedCollection(undefined)\n }\n }, [toggleDrawer, relatedToMany, collectionConfig])\n\n useEffect(() => {\n if (relatedToMany && !isDrawerOpen) {\n setCollectionConfig(undefined)\n }\n }, [isDrawerOpen, relatedToMany])\n\n const label = t('fields:addNewLabel', {\n label: getTranslation(relatedCollections[0]?.labels.singular, i18n),\n })\n\n if (show) {\n return (\n <div className={baseClass} id={`${path}-add-new`}>\n {relatedCollections.length === 1 && (\n <Fragment>\n <DocumentDrawerToggler\n className={[\n `${baseClass}__add-button`,\n unstyled && `${baseClass}__add-button--unstyled`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setShowTooltip(false)}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n {ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Fragment>\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {label}\n </Tooltip>\n <PlusIcon />\n </Fragment>\n )}\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={onSave} />\n </Fragment>\n )}\n {relatedCollections.length > 1 && (\n <Fragment>\n <Popup\n button={\n ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__add-button`}\n tooltip={popupOpen ? undefined : t('fields:addNew')}\n >\n <PlusIcon />\n </Button>\n )\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n onToggleOpen={onPopupToggle}\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relatedCollections.map((relatedCollection) => {\n if (permissions.collections[relatedCollection?.slug].create) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection?.slug}`}\n key={relatedCollection?.slug}\n onClick={() => {\n closePopup()\n setSelectedCollection(relatedCollection?.slug)\n }}\n >\n {getTranslation(relatedCollection?.labels?.singular, i18n)}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n {collectionConfig && permissions.collections[collectionConfig?.slug]?.create && (\n <DocumentDrawer onSave={onSave} />\n )}\n </Fragment>\n )}\n </div>\n )\n }\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useCallback","useEffect","useState","PlusIcon","useAuth","useTranslation","Button","useDocumentDrawer","Popup","PopupList","Tooltip","useRelatedCollections","baseClass","AddNewRelation","t0","$","ButtonFromProps","hasMany","onChange","path","relationTo","unstyled","value","relatedCollections","permissions","show","setShow","selectedCollection","setSelectedCollection","relatedToMany","length","t1","undefined","collectionConfig","setCollectionConfig","popupOpen","setPopupOpen","i18n","t","showTooltip","setShowTooltip","t2","slug","t3","collectionSlug","DocumentDrawer","DocumentDrawerToggler","t4","isDrawerOpen","toggleDrawer","t5","t6","doc","operation","isAutosaveEnabled","versions","drafts","autosave","isNewValue","some","v","id","Array","isArray","onSave","Symbol","for","state","onPopupToggle","t7","t8","collections","create","collection","t10","t9","find","collection_0","t11","t12","t13","t14","t15","labels","singular","t16","label","_jsxs","className","children","_jsx","filter","Boolean","join","onClick","onMouseEnter","onMouseLeave","button","buttonStyle","tooltip","horizontalAlign","onToggleOpen","render","t17","close","closePopup","ButtonGroup","map","relatedCollection"],"sources":["../../../src/elements/AddNewRelation/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\nimport type { Props } from './types.js'\n\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { Popup } from '../Popup/index.js'\nimport * as PopupList from '../Popup/PopupButtonList/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.scss'\nimport { useRelatedCollections } from './useRelatedCollections.js'\n\nconst baseClass = 'relationship-add-new'\n\nexport const AddNewRelation: React.FC<Props> = ({\n Button: ButtonFromProps,\n hasMany,\n onChange,\n path,\n relationTo,\n unstyled,\n value,\n}) => {\n const relatedCollections = useRelatedCollections(relationTo)\n const { permissions } = useAuth()\n const [show, setShow] = useState(false)\n const [selectedCollection, setSelectedCollection] = useState<string>()\n\n const relatedToMany = relatedCollections.length > 1\n\n const [collectionConfig, setCollectionConfig] = useState<ClientCollectionConfig>(() =>\n !relatedToMany ? relatedCollections[0] : undefined,\n )\n\n const [popupOpen, setPopupOpen] = useState(false)\n const { i18n, t } = useTranslation()\n const [showTooltip, setShowTooltip] = useState(false)\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen, toggleDrawer }] = useDocumentDrawer(\n {\n collectionSlug: collectionConfig?.slug,\n },\n )\n\n const onSave: DocumentDrawerContextType['onSave'] = useCallback(\n ({ doc, operation }) => {\n // if autosave is enabled, the operation will be 'update'\n const isAutosaveEnabled =\n typeof collectionConfig?.versions?.drafts === 'object'\n ? collectionConfig.versions.drafts.autosave\n : false\n\n if (operation === 'create' || (operation === 'update' && isAutosaveEnabled)) {\n // ensure the value is not already in the array\n let isNewValue = false\n if (!value) {\n isNewValue = true\n } else {\n isNewValue = Array.isArray(value)\n ? !value.some((v) => v && v.value === doc.id)\n : value.value !== doc.id\n }\n\n if (isNewValue) {\n // dispatchOptions({\n // collection: collectionConfig,\n // // TODO: fix this\n // // @ts-expect-error-next-line\n // type: 'ADD',\n // config,\n // docs: [doc],\n // i18n,\n // sort: true,\n // })\n\n if (hasMany === true) {\n onChange([\n ...(Array.isArray(value) ? value : []),\n {\n relationTo: collectionConfig?.slug,\n value: doc.id,\n },\n ])\n } else {\n onChange({\n relationTo: relatedCollections[0].slug,\n value: doc.id,\n })\n }\n }\n\n setSelectedCollection(undefined)\n }\n },\n [collectionConfig, hasMany, onChange, value, relatedCollections],\n )\n\n const onPopupToggle = useCallback((state) => {\n setPopupOpen(state)\n }, [])\n\n useEffect(() => {\n if (permissions) {\n if (relatedCollections.length === 1) {\n setShow(permissions.collections[relatedCollections[0]?.slug]?.create)\n } else {\n setShow(\n relatedCollections.some(\n (collection) => permissions.collections[collection?.slug]?.create,\n ),\n )\n }\n }\n }, [permissions, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && selectedCollection) {\n setCollectionConfig(\n relatedCollections.find((collection) => collection?.slug === selectedCollection),\n )\n }\n }, [selectedCollection, relatedToMany, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && collectionConfig) {\n // the drawer must be rendered on the page before before opening it\n // this is why 'selectedCollection' is different from 'collectionConfig'\n toggleDrawer()\n setSelectedCollection(undefined)\n }\n }, [toggleDrawer, relatedToMany, collectionConfig])\n\n useEffect(() => {\n if (relatedToMany && !isDrawerOpen) {\n setCollectionConfig(undefined)\n }\n }, [isDrawerOpen, relatedToMany])\n\n const label = t('fields:addNewLabel', {\n label: getTranslation(relatedCollections[0]?.labels.singular, i18n),\n })\n\n if (show) {\n return (\n <div className={baseClass} id={`${path}-add-new`}>\n {relatedCollections.length === 1 && (\n <Fragment>\n <DocumentDrawerToggler\n className={[\n `${baseClass}__add-button`,\n unstyled && `${baseClass}__add-button--unstyled`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setShowTooltip(false)}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n {ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Fragment>\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {label}\n </Tooltip>\n <PlusIcon />\n </Fragment>\n )}\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={onSave} />\n </Fragment>\n )}\n {relatedCollections.length > 1 && (\n <Fragment>\n <Popup\n button={\n ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__add-button`}\n tooltip={popupOpen ? undefined : t('fields:addNew')}\n >\n <PlusIcon />\n </Button>\n )\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n onToggleOpen={onPopupToggle}\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relatedCollections.map((relatedCollection) => {\n if (permissions.collections[relatedCollection?.slug].create) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection?.slug}`}\n key={relatedCollection?.slug}\n onClick={() => {\n closePopup()\n setSelectedCollection(relatedCollection?.slug)\n }}\n >\n {getTranslation(relatedCollection?.labels?.singular, i18n)}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n {collectionConfig && permissions.collections[collectionConfig?.slug]?.create && (\n <DocumentDrawer onSave={onSave} />\n )}\n </Fragment>\n )}\n </div>\n )\n }\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Autosave/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAIzE,OAAO,KAAwD,MAAM,OAAO,CAAA;AAoB5E,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA2SpC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Autosave/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAIzE,OAAO,KAAwD,MAAM,OAAO,CAAA;AAqB5E,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAsTpC,CAAA"}
@@ -16,6 +16,7 @@ import { useLocale } from '../../providers/Locale/index.js';
16
16
  import { useTranslation } from '../../providers/Translation/index.js';
17
17
  import { formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js';
18
18
  import { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js';
19
+ import { useDocumentDrawerContext } from '../DocumentDrawer/Provider.js';
19
20
  import { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js';
20
21
  import './index.scss';
21
22
  const baseClass = 'autosave';
@@ -44,6 +45,9 @@ export const Autosave = ({
44
45
  setUnpublishedVersionCount,
45
46
  updateSavedDocumentData
46
47
  } = useDocumentInfo();
48
+ const {
49
+ onSave: onSaveFromDocumentDrawer
50
+ } = useDocumentDrawerContext();
47
51
  const {
48
52
  reportUpdate
49
53
  } = useDocumentEvents();
@@ -157,6 +161,7 @@ export const Autosave = ({
157
161
  const newDate = new Date();
158
162
  // We need to log the time in order to figure out if we need to trigger the state off later
159
163
  endTimestamp = newDate.getTime();
164
+ const json = await res.json();
160
165
  if (res.status === 200) {
161
166
  setLastUpdateTime(newDate.getTime());
162
167
  reportUpdate({
@@ -164,13 +169,19 @@ export const Autosave = ({
164
169
  entitySlug,
165
170
  updatedAt: newDate.toISOString()
166
171
  });
172
+ // if onSaveFromDocumentDrawer is defined, call it
173
+ if (typeof onSaveFromDocumentDrawer === 'function') {
174
+ void onSaveFromDocumentDrawer({
175
+ ...json,
176
+ operation: 'update'
177
+ });
178
+ }
167
179
  if (!mostRecentVersionIsAutosaved) {
168
180
  incrementVersionCount();
169
181
  setMostRecentVersionIsAutosaved(true);
170
182
  setUnpublishedVersionCount(prev => prev + 1);
171
183
  }
172
184
  }
173
- const json = await res.json();
174
185
  if (versionsConfig?.drafts && versionsConfig?.drafts?.validate && json?.errors) {
175
186
  if (Array.isArray(json.errors)) {
176
187
  const [fieldErrors, nonFieldErrors] = json.errors.reduce(([fieldErrs, nonFieldErrs], err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dequal","reduceFieldsToValues","versionDefaults","React","useDeferredValue","useEffect","useRef","useState","toast","useAllFormFields","useForm","useFormModified","useFormSubmitted","useDebounce","useEffectEvent","useQueues","useConfig","useDocumentEvents","useDocumentInfo","useLocale","useTranslation","formatTimeToNow","reduceFieldsToValuesWithValidation","LeaveWithoutSaving","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","config","routes","api","serverURL","docConfig","incrementVersionCount","lastUpdateTime","mostRecentVersionIsAutosaved","setLastUpdateTime","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","updateSavedDocumentData","reportUpdate","dispatchFields","isValid","setBackgroundProcessing","setIsValid","setSubmitted","fields","modified","submitted","code","locale","i18n","t","versionsConfig","versions","interval","autosaveInterval","drafts","autosave","validateOnDraft","Boolean","validate","_saving","setSaving","saving","debouncedFields","fieldRef","modifiedRef","localeRef","isValidRef","current","queueTask","autosaveTimeoutRef","handleAutosave","undefined","startTimestamp","endTimestamp","hideIndicator","setTimeout","stopAutoSaveIndicator","Date","getTime","url","method","entitySlug","slug","data","valid","_status","skipSubmission","res","fetch","body","JSON","stringify","credentials","headers","language","_err","newDate","status","updatedAt","toISOString","prev","json","errors","Array","isArray","fieldErrors","nonFieldErrors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","push","forEach","dataError","field","type","error","document","doc","result","afterProcess","beforeProcess","didMount","previousDebouncedFieldValues","debouncedFieldValues","clearTimeout","_jsxs","className","_jsx","Fragment","distance","date"],"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { reduceFieldsToValues, versionDefaults } from 'payload/shared'\nimport React, { useDeferredValue, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueues } from '../../hooks/useQueues.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js'\nimport './index.scss'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({ id, collection, global: globalDoc }) => {\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const {\n docConfig,\n incrementVersionCount,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const { reportUpdate } = useDocumentEvents()\n const { dispatchFields, isValid, setBackgroundProcessing, setIsValid, setSubmitted } = useForm()\n\n const [fields] = useAllFormFields()\n const modified = useFormModified()\n const submitted = useFormSubmitted()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const versionsConfig = docConfig?.versions\n let interval = versionDefaults.autosaveInterval\n\n if (versionsConfig.drafts && versionsConfig.drafts.autosave) {\n interval = versionsConfig.drafts.autosave.interval\n }\n\n const validateOnDraft = Boolean(\n docConfig?.versions?.drafts && docConfig?.versions?.drafts.validate,\n )\n\n const [_saving, setSaving] = useState(false)\n const saving = useDeferredValue(_saving)\n const debouncedFields = useDebounce(fields, interval)\n const fieldRef = useRef(fields)\n const modifiedRef = useRef(modified)\n const localeRef = useRef(locale)\n /**\n * Track the validation internally so Autosave can determine when to run queue processing again\n * Helps us prevent infinite loops when the queue is processing and the form is invalid\n */\n const isValidRef = useRef(isValid)\n\n // Store fields in ref so the autosave func\n // can always retrieve the most to date copies\n // after the timeout has executed\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n fieldRef.current = fields\n\n // Store modified in ref so the autosave func\n // can bail out if modified becomes false while\n // timing out during autosave\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n modifiedRef.current = modified\n\n // Store locale in ref so the autosave func\n // can always retrieve the most to date locale\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n localeRef.current = locale\n\n const { queueTask } = useQueues()\n\n const autosaveTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const handleAutosave = useEffectEvent(() => {\n autosaveTimeoutRef.current = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const hideIndicator = () => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeoutRef.current = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n stopAutoSaveIndicator()\n }\n }\n\n queueTask(\n async () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n\n if (collection && id) {\n entitySlug = collection.slug\n url = `${serverURL}${api}/${entitySlug}/${id}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = `${serverURL}${api}/globals/${entitySlug}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'POST'\n }\n\n if (url) {\n if (modifiedRef.current) {\n const { data, valid } = reduceFieldsToValuesWithValidation(fieldRef.current, true)\n\n data._status = 'draft'\n\n const skipSubmission =\n submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate\n\n if (!skipSubmission && isValidRef.current) {\n let res\n\n try {\n res = await fetch(url, {\n body: JSON.stringify(data),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method,\n })\n } catch (_err) {\n // Swallow Error\n }\n\n const newDate = new Date()\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n if (res.status === 200) {\n setLastUpdateTime(newDate.getTime())\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: newDate.toISOString(),\n })\n\n if (!mostRecentVersionIsAutosaved) {\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(true)\n setUnpublishedVersionCount((prev) => prev + 1)\n }\n }\n const json = await res.json()\n\n if (versionsConfig?.drafts && versionsConfig?.drafts?.validate && json?.errors) {\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data)) {\n err.data.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n toast.error(err.message || i18n.t('error:unknown'))\n })\n\n // Set valid to false internally so the queue doesn't process\n isValidRef.current = false\n setIsValid(false)\n setSubmitted(true)\n hideIndicator()\n return\n }\n } else {\n // If it's not an error then we can update the document data inside the context\n const document = json?.doc || json?.result\n\n // Manually update the data since this function doesn't fire the `submit` function from useForm\n if (document) {\n setIsValid(true)\n\n // Reset internal state allowing the queue to process\n isValidRef.current = true\n updateSavedDocumentData(document)\n }\n }\n\n hideIndicator()\n }\n }\n }\n }\n },\n {\n afterProcess: () => {\n setBackgroundProcessing(false)\n },\n beforeProcess: () => {\n if (!isValidRef.current) {\n isValidRef.current = true\n return false\n }\n\n setBackgroundProcessing(true)\n },\n },\n )\n })\n\n const didMount = useRef(false)\n const previousDebouncedFieldValues = useRef(reduceFieldsToValues(debouncedFields))\n // When debounced fields change, autosave\n useEffect(() => {\n /**\n * Ensure autosave doesn't run on mount\n */\n if (!didMount.current) {\n didMount.current = true\n return\n }\n\n /**\n * Ensure autosave only runs if the form data changes, not every time the entire form state changes\n */\n const debouncedFieldValues = reduceFieldsToValues(debouncedFields)\n if (dequal(debouncedFieldValues, previousDebouncedFieldValues)) {\n return\n }\n\n previousDebouncedFieldValues.current = debouncedFieldValues\n\n handleAutosave()\n }, [debouncedFields])\n\n /**\n * If component unmounts, clear the autosave timeout\n */\n useEffect(() => {\n return () => {\n stopAutoSaveIndicator()\n }\n }, [])\n\n const stopAutoSaveIndicator = useEffectEvent(() => {\n if (autosaveTimeoutRef.current) {\n clearTimeout(autosaveTimeoutRef.current)\n }\n\n setSaving(false)\n })\n\n return (\n <div className={baseClass}>\n {validateOnDraft && !isValid && <LeaveWithoutSaving />}\n {saving && t('general:saving')}\n {!saving && Boolean(lastUpdateTime) && (\n <React.Fragment>\n {t('version:lastSavedAgo', {\n distance: formatTimeToNow({ date: lastUpdateTime, i18n }),\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["dequal","reduceFieldsToValues","versionDefaults","React","useDeferredValue","useEffect","useRef","useState","toast","useAllFormFields","useForm","useFormModified","useFormSubmitted","useDebounce","useEffectEvent","useQueues","useConfig","useDocumentEvents","useDocumentInfo","useLocale","useTranslation","formatTimeToNow","reduceFieldsToValuesWithValidation","useDocumentDrawerContext","LeaveWithoutSaving","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","config","routes","api","serverURL","docConfig","incrementVersionCount","lastUpdateTime","mostRecentVersionIsAutosaved","setLastUpdateTime","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","updateSavedDocumentData","onSave","onSaveFromDocumentDrawer","reportUpdate","dispatchFields","isValid","setBackgroundProcessing","setIsValid","setSubmitted","fields","modified","submitted","code","locale","i18n","t","versionsConfig","versions","interval","autosaveInterval","drafts","autosave","validateOnDraft","Boolean","validate","_saving","setSaving","saving","debouncedFields","fieldRef","modifiedRef","localeRef","isValidRef","current","queueTask","autosaveTimeoutRef","handleAutosave","undefined","startTimestamp","endTimestamp","hideIndicator","setTimeout","stopAutoSaveIndicator","Date","getTime","url","method","entitySlug","slug","data","valid","_status","skipSubmission","res","fetch","body","JSON","stringify","credentials","headers","language","_err","newDate","json","status","updatedAt","toISOString","operation","prev","errors","Array","isArray","fieldErrors","nonFieldErrors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","push","forEach","dataError","field","type","error","document","doc","result","afterProcess","beforeProcess","didMount","previousDebouncedFieldValues","debouncedFieldValues","clearTimeout","_jsxs","className","_jsx","Fragment","distance","date"],"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { reduceFieldsToValues, versionDefaults } from 'payload/shared'\nimport React, { useDeferredValue, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueues } from '../../hooks/useQueues.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport { useDocumentDrawerContext } from '../DocumentDrawer/Provider.js'\nimport { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js'\nimport './index.scss'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({ id, collection, global: globalDoc }) => {\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const {\n docConfig,\n incrementVersionCount,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const { onSave: onSaveFromDocumentDrawer } = useDocumentDrawerContext()\n\n const { reportUpdate } = useDocumentEvents()\n const { dispatchFields, isValid, setBackgroundProcessing, setIsValid, setSubmitted } = useForm()\n\n const [fields] = useAllFormFields()\n const modified = useFormModified()\n const submitted = useFormSubmitted()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const versionsConfig = docConfig?.versions\n let interval = versionDefaults.autosaveInterval\n\n if (versionsConfig.drafts && versionsConfig.drafts.autosave) {\n interval = versionsConfig.drafts.autosave.interval\n }\n\n const validateOnDraft = Boolean(\n docConfig?.versions?.drafts && docConfig?.versions?.drafts.validate,\n )\n\n const [_saving, setSaving] = useState(false)\n const saving = useDeferredValue(_saving)\n const debouncedFields = useDebounce(fields, interval)\n const fieldRef = useRef(fields)\n const modifiedRef = useRef(modified)\n const localeRef = useRef(locale)\n /**\n * Track the validation internally so Autosave can determine when to run queue processing again\n * Helps us prevent infinite loops when the queue is processing and the form is invalid\n */\n const isValidRef = useRef(isValid)\n\n // Store fields in ref so the autosave func\n // can always retrieve the most to date copies\n // after the timeout has executed\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n fieldRef.current = fields\n\n // Store modified in ref so the autosave func\n // can bail out if modified becomes false while\n // timing out during autosave\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n modifiedRef.current = modified\n\n // Store locale in ref so the autosave func\n // can always retrieve the most to date locale\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n localeRef.current = locale\n\n const { queueTask } = useQueues()\n\n const autosaveTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const handleAutosave = useEffectEvent(() => {\n autosaveTimeoutRef.current = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const hideIndicator = () => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeoutRef.current = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n stopAutoSaveIndicator()\n }\n }\n\n queueTask(\n async () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n\n if (collection && id) {\n entitySlug = collection.slug\n url = `${serverURL}${api}/${entitySlug}/${id}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = `${serverURL}${api}/globals/${entitySlug}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'POST'\n }\n\n if (url) {\n if (modifiedRef.current) {\n const { data, valid } = reduceFieldsToValuesWithValidation(fieldRef.current, true)\n\n data._status = 'draft'\n\n const skipSubmission =\n submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate\n\n if (!skipSubmission && isValidRef.current) {\n let res\n\n try {\n res = await fetch(url, {\n body: JSON.stringify(data),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method,\n })\n } catch (_err) {\n // Swallow Error\n }\n\n const newDate = new Date()\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n const json = await res.json()\n\n if (res.status === 200) {\n setLastUpdateTime(newDate.getTime())\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: newDate.toISOString(),\n })\n\n // if onSaveFromDocumentDrawer is defined, call it\n if (typeof onSaveFromDocumentDrawer === 'function') {\n void onSaveFromDocumentDrawer({\n ...json,\n operation: 'update',\n })\n }\n\n if (!mostRecentVersionIsAutosaved) {\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(true)\n setUnpublishedVersionCount((prev) => prev + 1)\n }\n }\n\n if (versionsConfig?.drafts && versionsConfig?.drafts?.validate && json?.errors) {\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data)) {\n err.data.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n toast.error(err.message || i18n.t('error:unknown'))\n })\n\n // Set valid to false internally so the queue doesn't process\n isValidRef.current = false\n setIsValid(false)\n setSubmitted(true)\n hideIndicator()\n return\n }\n } else {\n // If it's not an error then we can update the document data inside the context\n const document = json?.doc || json?.result\n\n // Manually update the data since this function doesn't fire the `submit` function from useForm\n if (document) {\n setIsValid(true)\n\n // Reset internal state allowing the queue to process\n isValidRef.current = true\n updateSavedDocumentData(document)\n }\n }\n\n hideIndicator()\n }\n }\n }\n }\n },\n {\n afterProcess: () => {\n setBackgroundProcessing(false)\n },\n beforeProcess: () => {\n if (!isValidRef.current) {\n isValidRef.current = true\n return false\n }\n\n setBackgroundProcessing(true)\n },\n },\n )\n })\n\n const didMount = useRef(false)\n const previousDebouncedFieldValues = useRef(reduceFieldsToValues(debouncedFields))\n // When debounced fields change, autosave\n useEffect(() => {\n /**\n * Ensure autosave doesn't run on mount\n */\n if (!didMount.current) {\n didMount.current = true\n return\n }\n\n /**\n * Ensure autosave only runs if the form data changes, not every time the entire form state changes\n */\n const debouncedFieldValues = reduceFieldsToValues(debouncedFields)\n if (dequal(debouncedFieldValues, previousDebouncedFieldValues)) {\n return\n }\n\n previousDebouncedFieldValues.current = debouncedFieldValues\n\n handleAutosave()\n }, [debouncedFields])\n\n /**\n * If component unmounts, clear the autosave timeout\n */\n useEffect(() => {\n return () => {\n stopAutoSaveIndicator()\n }\n }, [])\n\n const stopAutoSaveIndicator = useEffectEvent(() => {\n if (autosaveTimeoutRef.current) {\n clearTimeout(autosaveTimeoutRef.current)\n }\n\n setSaving(false)\n })\n\n return (\n <div className={baseClass}>\n {validateOnDraft && !isValid && <LeaveWithoutSaving />}\n {saving && t('general:saving')}\n {!saving && Boolean(lastUpdateTime) && (\n <React.Fragment>\n {t('version:lastSavedAgo', {\n distance: formatTimeToNow({ date: lastUpdateTime, i18n }),\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,OAAO,cAAc,CAAA;AASrB,wBAAgB,WAAW,sBA8K1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAiBzB,OAAO,cAAc,CAAA;AAMrB,wBAAgB,WAAW,sBA0K1B"}
@@ -15,16 +15,17 @@ import { Drawer } from '../../Drawer/index.js';
15
15
  import { ErrorPill } from '../../ErrorPill/index.js';
16
16
  import { Pill } from '../../Pill/index.js';
17
17
  import { ShimmerEffect } from '../../ShimmerEffect/index.js';
18
+ import { createThumbnail } from '../../Thumbnail/createThumbnail.js';
18
19
  import { Thumbnail } from '../../Thumbnail/index.js';
19
20
  import { Actions } from '../ActionsBar/index.js';
20
- import './index.scss';
21
21
  import { AddFilesView } from '../AddFilesView/index.js';
22
22
  import { useFormsManager } from '../FormsManager/index.js';
23
23
  import { useBulkUpload } from '../index.js';
24
+ import './index.scss';
24
25
  const addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files';
25
26
  const baseClass = 'file-selections';
26
27
  export function FileSidebar() {
27
- const $ = _c(36);
28
+ const $ = _c(34);
28
29
  const {
29
30
  activeIndex,
30
31
  addFiles,
@@ -32,7 +33,6 @@ export function FileSidebar() {
32
33
  isInitializing,
33
34
  removeFile,
34
35
  setActiveIndex,
35
- thumbnailUrls,
36
36
  totalErrorCount
37
37
  } = useFormsManager();
38
38
  const {
@@ -88,27 +88,28 @@ export function FileSidebar() {
88
88
  }
89
89
  const t4 = t3.join(" ");
90
90
  let t5;
91
- if ($[7] !== activeIndex || $[8] !== breakpoints.m || $[9] !== closeModal || $[10] !== forms || $[11] !== handleAddFiles || $[12] !== handleRemoveFile || $[13] !== i18n || $[14] !== initialFiles || $[15] !== isInitializing || $[16] !== maxFiles || $[17] !== openModal || $[18] !== setActiveIndex || $[19] !== showFiles || $[20] !== t || $[21] !== t4 || $[22] !== thumbnailUrls || $[23] !== totalErrorCount || $[24] !== totalFileCount) {
91
+ if ($[7] !== activeIndex || $[8] !== breakpoints.m || $[9] !== closeModal || $[10] !== forms || $[11] !== handleAddFiles || $[12] !== handleRemoveFile || $[13] !== i18n || $[14] !== initialFiles || $[15] !== isInitializing || $[16] !== maxFiles || $[17] !== openModal || $[18] !== setActiveIndex || $[19] !== showFiles || $[20] !== t || $[21] !== t4 || $[22] !== totalErrorCount || $[23] !== totalFileCount) {
92
92
  let t6;
93
- if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
93
+ if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
94
94
  t6 = () => setShowFiles(_temp2);
95
- $[26] = t6;
95
+ $[25] = t6;
96
96
  } else {
97
- t6 = $[26];
97
+ t6 = $[25];
98
98
  }
99
99
  let t7;
100
- if ($[27] !== closeModal) {
100
+ if ($[26] !== closeModal) {
101
101
  t7 = () => closeModal(addMoreFilesDrawerSlug);
102
- $[27] = closeModal;
103
- $[28] = t7;
102
+ $[26] = closeModal;
103
+ $[27] = t7;
104
104
  } else {
105
- t7 = $[28];
105
+ t7 = $[27];
106
106
  }
107
107
  let t8;
108
- if ($[29] !== activeIndex || $[30] !== handleRemoveFile || $[31] !== i18n || $[32] !== setActiveIndex || $[33] !== t || $[34] !== thumbnailUrls) {
108
+ if ($[28] !== activeIndex || $[29] !== handleRemoveFile || $[30] !== i18n || $[31] !== setActiveIndex || $[32] !== t) {
109
109
  t8 = (t9, index_0) => {
110
110
  const {
111
111
  errorCount,
112
+ formID,
112
113
  formState
113
114
  } = t9;
114
115
  const currentFile = formState?.file?.value || {};
@@ -118,9 +119,9 @@ export function FileSidebar() {
118
119
  className: `${baseClass}__fileRow`,
119
120
  onClick: () => setActiveIndex(index_0),
120
121
  type: "button",
121
- children: [_jsx(Thumbnail, {
122
- className: `${baseClass}__thumbnail`,
123
- fileSrc: isImage(currentFile.type) ? thumbnailUrls[index_0] : null
122
+ children: [_jsx(SidebarThumbnail, {
123
+ file: currentFile,
124
+ formID
124
125
  }), _jsx("div", {
125
126
  className: `${baseClass}__fileDetails`,
126
127
  children: _jsx("p", {
@@ -146,17 +147,16 @@ export function FileSidebar() {
146
147
  type: "button",
147
148
  children: _jsx(XIcon, {})
148
149
  })]
149
- }, index_0);
150
+ }, formID);
150
151
  };
151
- $[29] = activeIndex;
152
- $[30] = handleRemoveFile;
153
- $[31] = i18n;
154
- $[32] = setActiveIndex;
155
- $[33] = t;
156
- $[34] = thumbnailUrls;
157
- $[35] = t8;
152
+ $[28] = activeIndex;
153
+ $[29] = handleRemoveFile;
154
+ $[30] = i18n;
155
+ $[31] = setActiveIndex;
156
+ $[32] = t;
157
+ $[33] = t8;
158
158
  } else {
159
- t8 = $[35];
159
+ t8 = $[33];
160
160
  }
161
161
  t5 = _jsxs("div", {
162
162
  className: t4,
@@ -238,12 +238,11 @@ export function FileSidebar() {
238
238
  $[19] = showFiles;
239
239
  $[20] = t;
240
240
  $[21] = t4;
241
- $[22] = thumbnailUrls;
242
- $[23] = totalErrorCount;
243
- $[24] = totalFileCount;
244
- $[25] = t5;
241
+ $[22] = totalErrorCount;
242
+ $[23] = totalFileCount;
243
+ $[24] = t5;
245
244
  } else {
246
- t5 = $[25];
245
+ t5 = $[24];
247
246
  }
248
247
  return t5;
249
248
  }
@@ -263,4 +262,50 @@ function _temp(file) {
263
262
  const formattedSize = (size / Math.pow(1024, i)).toFixed(decimals) + " " + ["B", "kB", "MB", "GB", "TB"][i];
264
263
  return formattedSize;
265
264
  }
265
+ function SidebarThumbnail({
266
+ file,
267
+ formID
268
+ }) {
269
+ const [thumbnailURL, setThumbnailURL] = React.useState(null);
270
+ const [isLoading, setIsLoading] = React.useState(true);
271
+ React.useEffect(() => {
272
+ let isCancelled = false;
273
+ async function generateThumbnail() {
274
+ setIsLoading(true);
275
+ setThumbnailURL(null);
276
+ try {
277
+ if (isImage(file.type)) {
278
+ const url = await createThumbnail(file);
279
+ if (!isCancelled) {
280
+ setThumbnailURL(url);
281
+ }
282
+ } else {
283
+ setThumbnailURL(null);
284
+ }
285
+ } catch (_) {
286
+ if (!isCancelled) {
287
+ setThumbnailURL(null);
288
+ }
289
+ } finally {
290
+ if (!isCancelled) {
291
+ setIsLoading(false);
292
+ }
293
+ }
294
+ }
295
+ void generateThumbnail();
296
+ return () => {
297
+ isCancelled = true;
298
+ };
299
+ }, [file]);
300
+ if (isLoading) {
301
+ return /*#__PURE__*/_jsx(ShimmerEffect, {
302
+ className: `${baseClass}__thumbnail-shimmer`,
303
+ disableInlineStyles: true
304
+ });
305
+ }
306
+ return /*#__PURE__*/_jsx(Thumbnail, {
307
+ className: `${baseClass}__thumbnail`,
308
+ fileSrc: thumbnailURL
309
+ }, `${formID}-${thumbnailURL || 'placeholder'}`);
310
+ }
266
311
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","useWindowInfo","isImage","React","ChevronIcon","XIcon","useTranslation","AnimateHeight","Button","Drawer","ErrorPill","Pill","ShimmerEffect","Thumbnail","Actions","AddFilesView","useFormsManager","useBulkUpload","addMoreFilesDrawerSlug","baseClass","FileSidebar","$","activeIndex","addFiles","forms","isInitializing","removeFile","setActiveIndex","thumbnailUrls","totalErrorCount","initialFiles","maxFiles","i18n","t","closeModal","openModal","showFiles","setShowFiles","useState","breakpoints","t0","indexToRemove","handleRemoveFile","t1","filelist","handleAddFiles","getFileSize","_temp","totalFileCount","length","t2","t3","filter","Boolean","t4","join","t5","m","t6","Symbol","for","_temp2","t7","t8","t9","index_0","errorCount","formState","currentFile","file","value","_jsxs","className","index","children","onClick","type","_jsx","fileSrc","title","name","File","count","withMessage","size","buttonStyle","direction","gutter","Header","slug","onCancel","onDrop","height","Array","from","map","_temp3","file_0","animationDelay","prev","i","Math","floor","log","decimals","formattedSize","pow","toFixed"],"sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { isImage } from 'payload/shared'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { AnimateHeight } from '../../AnimateHeight/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Drawer } from '../../Drawer/index.js'\nimport { ErrorPill } from '../../ErrorPill/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { Actions } from '../ActionsBar/index.js'\nimport './index.scss'\nimport { AddFilesView } from '../AddFilesView/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { useBulkUpload } from '../index.js'\n\nconst addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files'\n\nconst baseClass = 'file-selections'\n\nexport function FileSidebar() {\n const {\n activeIndex,\n addFiles,\n forms,\n isInitializing,\n removeFile,\n setActiveIndex,\n thumbnailUrls,\n totalErrorCount,\n } = useFormsManager()\n const { initialFiles, maxFiles } = useBulkUpload()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const [showFiles, setShowFiles] = React.useState(false)\n const { breakpoints } = useWindowInfo()\n\n const handleRemoveFile = React.useCallback(\n (indexToRemove: number) => {\n removeFile(indexToRemove)\n },\n [removeFile],\n )\n\n const handleAddFiles = React.useCallback(\n (filelist: FileList) => {\n void addFiles(filelist)\n closeModal(addMoreFilesDrawerSlug)\n },\n [addFiles, closeModal],\n )\n\n const getFileSize = React.useCallback((file: File) => {\n const size = file.size\n const i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024))\n const decimals = i > 1 ? 1 : 0\n const formattedSize =\n (size / Math.pow(1024, i)).toFixed(decimals) + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]\n return formattedSize\n }, [])\n\n const totalFileCount = isInitializing ? initialFiles.length : forms.length\n\n return (\n <div\n className={[baseClass, showFiles && `${baseClass}__showingFiles`].filter(Boolean).join(' ')}\n >\n {breakpoints.m && showFiles ? <div className={`${baseClass}__mobileBlur`} /> : null}\n <div className={`${baseClass}__header`}>\n <div className={`${baseClass}__headerTopRow`}>\n <div className={`${baseClass}__header__text`}>\n <ErrorPill count={totalErrorCount} i18n={i18n} withMessage />\n <p>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </p>\n </div>\n\n <div className={`${baseClass}__header__actions`}>\n {(typeof maxFiles === 'number' ? totalFileCount < maxFiles : true) ? (\n <Pill\n className={`${baseClass}__header__addFile`}\n onClick={() => openModal(addMoreFilesDrawerSlug)}\n size=\"small\"\n >\n {t('upload:addFile')}\n </Pill>\n ) : null}\n <Button\n buttonStyle=\"transparent\"\n className={`${baseClass}__toggler`}\n onClick={() => setShowFiles((prev) => !prev)}\n >\n <span className={`${baseClass}__toggler__label`}>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </span>\n <ChevronIcon direction={showFiles ? 'down' : 'up'} />\n </Button>\n\n <Drawer gutter={false} Header={null} slug={addMoreFilesDrawerSlug}>\n <AddFilesView\n onCancel={() => closeModal(addMoreFilesDrawerSlug)}\n onDrop={handleAddFiles}\n />\n </Drawer>\n </div>\n </div>\n\n <div className={`${baseClass}__header__mobileDocActions`}>\n <Actions />\n </div>\n </div>\n\n <div className={`${baseClass}__animateWrapper`}>\n <AnimateHeight height={!breakpoints.m || showFiles ? 'auto' : 0}>\n <div className={`${baseClass}__filesContainer`}>\n {isInitializing && forms.length === 0 && initialFiles.length > 0\n ? Array.from(initialFiles).map((file, index) => (\n <ShimmerEffect\n animationDelay={`calc(${index} * ${60}ms)`}\n height=\"35px\"\n key={index}\n />\n ))\n : null}\n {forms.map(({ errorCount, formState }, index) => {\n const currentFile = (formState?.file?.value as File) || ({} as File)\n\n return (\n <div\n className={[\n `${baseClass}__fileRowContainer`,\n index === activeIndex && `${baseClass}__fileRowContainer--active`,\n errorCount && errorCount > 0 && `${baseClass}__fileRowContainer--error`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={index}\n >\n <button\n className={`${baseClass}__fileRow`}\n onClick={() => setActiveIndex(index)}\n type=\"button\"\n >\n <Thumbnail\n className={`${baseClass}__thumbnail`}\n fileSrc={isImage(currentFile.type) ? thumbnailUrls[index] : null}\n />\n <div className={`${baseClass}__fileDetails`}>\n <p className={`${baseClass}__fileName`} title={currentFile.name}>\n {currentFile.name || t('upload:noFile')}\n </p>\n </div>\n {currentFile instanceof File ? (\n <p className={`${baseClass}__fileSize`}>{getFileSize(currentFile)}</p>\n ) : null}\n <div className={`${baseClass}__remove ${baseClass}__remove--underlay`}>\n <XIcon />\n </div>\n\n {errorCount ? (\n <ErrorPill\n className={`${baseClass}__errorCount`}\n count={errorCount}\n i18n={i18n}\n />\n ) : null}\n </button>\n\n <button\n aria-label={t('general:remove')}\n className={`${baseClass}__remove ${baseClass}__remove--overlay`}\n onClick={() => handleRemoveFile(index)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n )\n })}\n </div>\n </AnimateHeight>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","useWindowInfo","isImage","React","ChevronIcon","XIcon","useTranslation","AnimateHeight","Button","Drawer","ErrorPill","Pill","ShimmerEffect","createThumbnail","Thumbnail","Actions","AddFilesView","useFormsManager","useBulkUpload","addMoreFilesDrawerSlug","baseClass","FileSidebar","$","activeIndex","addFiles","forms","isInitializing","removeFile","setActiveIndex","totalErrorCount","initialFiles","maxFiles","i18n","t","closeModal","openModal","showFiles","setShowFiles","useState","breakpoints","t0","indexToRemove","handleRemoveFile","t1","filelist","handleAddFiles","getFileSize","_temp","totalFileCount","length","t2","t3","filter","Boolean","t4","join","t5","m","t6","Symbol","for","_temp2","t7","t8","t9","index_0","errorCount","formID","formState","currentFile","file","value","_jsxs","className","index","children","onClick","type","_jsx","SidebarThumbnail","title","name","File","count","withMessage","size","buttonStyle","direction","gutter","Header","slug","onCancel","onDrop","height","Array","from","map","_temp3","file_0","animationDelay","prev","i","Math","floor","log","decimals","formattedSize","pow","toFixed","thumbnailURL","setThumbnailURL","isLoading","setIsLoading","useEffect","isCancelled","generateThumbnail","url","_","disableInlineStyles","fileSrc"],"sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { isImage } from 'payload/shared'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { AnimateHeight } from '../../AnimateHeight/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Drawer } from '../../Drawer/index.js'\nimport { ErrorPill } from '../../ErrorPill/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { createThumbnail } from '../../Thumbnail/createThumbnail.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { Actions } from '../ActionsBar/index.js'\nimport { AddFilesView } from '../AddFilesView/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { useBulkUpload } from '../index.js'\nimport './index.scss'\n\nconst addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files'\n\nconst baseClass = 'file-selections'\n\nexport function FileSidebar() {\n const {\n activeIndex,\n addFiles,\n forms,\n isInitializing,\n removeFile,\n setActiveIndex,\n totalErrorCount,\n } = useFormsManager()\n const { initialFiles, maxFiles } = useBulkUpload()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const [showFiles, setShowFiles] = React.useState(false)\n const { breakpoints } = useWindowInfo()\n\n const handleRemoveFile = React.useCallback(\n (indexToRemove: number) => {\n removeFile(indexToRemove)\n },\n [removeFile],\n )\n\n const handleAddFiles = React.useCallback(\n (filelist: FileList) => {\n void addFiles(filelist)\n closeModal(addMoreFilesDrawerSlug)\n },\n [addFiles, closeModal],\n )\n\n const getFileSize = React.useCallback((file: File) => {\n const size = file.size\n const i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024))\n const decimals = i > 1 ? 1 : 0\n const formattedSize =\n (size / Math.pow(1024, i)).toFixed(decimals) + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]\n return formattedSize\n }, [])\n\n const totalFileCount = isInitializing ? initialFiles.length : forms.length\n\n return (\n <div\n className={[baseClass, showFiles && `${baseClass}__showingFiles`].filter(Boolean).join(' ')}\n >\n {breakpoints.m && showFiles ? <div className={`${baseClass}__mobileBlur`} /> : null}\n <div className={`${baseClass}__header`}>\n <div className={`${baseClass}__headerTopRow`}>\n <div className={`${baseClass}__header__text`}>\n <ErrorPill count={totalErrorCount} i18n={i18n} withMessage />\n <p>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </p>\n </div>\n\n <div className={`${baseClass}__header__actions`}>\n {(typeof maxFiles === 'number' ? totalFileCount < maxFiles : true) ? (\n <Pill\n className={`${baseClass}__header__addFile`}\n onClick={() => openModal(addMoreFilesDrawerSlug)}\n size=\"small\"\n >\n {t('upload:addFile')}\n </Pill>\n ) : null}\n <Button\n buttonStyle=\"transparent\"\n className={`${baseClass}__toggler`}\n onClick={() => setShowFiles((prev) => !prev)}\n >\n <span className={`${baseClass}__toggler__label`}>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </span>\n <ChevronIcon direction={showFiles ? 'down' : 'up'} />\n </Button>\n\n <Drawer gutter={false} Header={null} slug={addMoreFilesDrawerSlug}>\n <AddFilesView\n onCancel={() => closeModal(addMoreFilesDrawerSlug)}\n onDrop={handleAddFiles}\n />\n </Drawer>\n </div>\n </div>\n\n <div className={`${baseClass}__header__mobileDocActions`}>\n <Actions />\n </div>\n </div>\n\n <div className={`${baseClass}__animateWrapper`}>\n <AnimateHeight height={!breakpoints.m || showFiles ? 'auto' : 0}>\n <div className={`${baseClass}__filesContainer`}>\n {isInitializing && forms.length === 0 && initialFiles.length > 0\n ? Array.from(initialFiles).map((file, index) => (\n <ShimmerEffect\n animationDelay={`calc(${index} * ${60}ms)`}\n height=\"35px\"\n key={index}\n />\n ))\n : null}\n {forms.map(({ errorCount, formID, formState }, index) => {\n const currentFile = (formState?.file?.value as File) || ({} as File)\n\n return (\n <div\n className={[\n `${baseClass}__fileRowContainer`,\n index === activeIndex && `${baseClass}__fileRowContainer--active`,\n errorCount && errorCount > 0 && `${baseClass}__fileRowContainer--error`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={formID}\n >\n <button\n className={`${baseClass}__fileRow`}\n onClick={() => setActiveIndex(index)}\n type=\"button\"\n >\n <SidebarThumbnail file={currentFile} formID={formID} />\n <div className={`${baseClass}__fileDetails`}>\n <p className={`${baseClass}__fileName`} title={currentFile.name}>\n {currentFile.name || t('upload:noFile')}\n </p>\n </div>\n {currentFile instanceof File ? (\n <p className={`${baseClass}__fileSize`}>{getFileSize(currentFile)}</p>\n ) : null}\n <div className={`${baseClass}__remove ${baseClass}__remove--underlay`}>\n <XIcon />\n </div>\n\n {errorCount ? (\n <ErrorPill\n className={`${baseClass}__errorCount`}\n count={errorCount}\n i18n={i18n}\n />\n ) : null}\n </button>\n\n <button\n aria-label={t('general:remove')}\n className={`${baseClass}__remove ${baseClass}__remove--overlay`}\n onClick={() => handleRemoveFile(index)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n )\n })}\n </div>\n </AnimateHeight>\n </div>\n </div>\n )\n}\n\nfunction SidebarThumbnail({ file, formID }: { file: File; formID: string }) {\n const [thumbnailURL, setThumbnailURL] = React.useState<null | string>(null)\n const [isLoading, setIsLoading] = React.useState(true)\n\n React.useEffect(() => {\n let isCancelled = false\n\n async function generateThumbnail() {\n setIsLoading(true)\n setThumbnailURL(null)\n\n try {\n if (isImage(file.type)) {\n const url = await createThumbnail(file)\n if (!isCancelled) {\n setThumbnailURL(url)\n }\n } else {\n setThumbnailURL(null)\n }\n } catch (_) {\n if (!isCancelled) {\n setThumbnailURL(null)\n }\n } finally {\n if (!isCancelled) {\n setIsLoading(false)\n }\n }\n }\n\n void generateThumbnail()\n\n return () => {\n isCancelled = true\n }\n }, [file])\n\n if (isLoading) {\n return <ShimmerEffect className={`${baseClass}__thumbnail-shimmer`} disableInlineStyles />\n }\n\n return (\n <Thumbnail\n className={`${baseClass}__thumbnail`}\n fileSrc={thumbnailURL}\n key={`${formID}-${thumbnailURL || 'placeholder'}`}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -83,12 +83,13 @@
83
83
  background-color: var(--theme-elevation-100);
84
84
  }
85
85
 
86
- .thumbnail {
87
- width: base(1.2);
88
- height: base(1.2);
86
+ .file-selections__thumbnail,
87
+ .file-selections__thumbnail-shimmer {
88
+ width: calc(var(--base) * 1.2);
89
+ height: calc(var(--base) * 1.2);
90
+ border-radius: var(--style-radius-s);
89
91
  flex-shrink: 0;
90
92
  object-fit: cover;
91
- border-radius: var(--style-radius-s);
92
93
  }
93
94
 
94
95
  p {
@@ -24,7 +24,6 @@ type FormsManagerContext = {
24
24
  errorCount: number;
25
25
  index: number;
26
26
  }) => void;
27
- readonly thumbnailUrls: string[];
28
27
  readonly totalErrorCount?: number;
29
28
  readonly updateUploadEdits: (args: UploadEdits) => void;
30
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EAEb,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;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,aAAa,EAAE,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CACxD,CAAA;AA8BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAofnE;AAED,wBAAgB,eAAe,wBAE9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EAEb,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAezC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,cAAc,EAAE,CACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,gBAAgB,CAAC,EAAE,MAAM,IAAI,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAA;IACtD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,EAChC,UAAU,EACV,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CACxD,CAAA;AA6BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAmdnE;AAED,wBAAgB,eAAe,wBAE9B"}