@payloadcms/ui 3.45.0-canary.5 → 3.45.0-canary.6

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 (49) hide show
  1. package/dist/elements/Autosave/index.d.ts.map +1 -1
  2. package/dist/elements/Autosave/index.js +20 -30
  3. package/dist/elements/Autosave/index.js.map +1 -1
  4. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  5. package/dist/elements/BulkUpload/EditForm/index.js +36 -63
  6. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  7. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts +1 -1
  8. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  9. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +20 -16
  10. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  12. package/dist/elements/BulkUpload/FormsManager/index.js +6 -5
  13. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  14. package/dist/elements/BulkUpload/index.d.ts +3 -4
  15. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  16. package/dist/elements/BulkUpload/index.js +22 -32
  17. package/dist/elements/BulkUpload/index.js.map +1 -1
  18. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  19. package/dist/elements/DocumentDrawer/DrawerContent.js +9 -7
  20. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  21. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  22. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +11 -14
  23. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  24. package/dist/exports/client/index.js +22 -22
  25. package/dist/exports/client/index.js.map +4 -4
  26. package/dist/fields/Upload/Input.d.ts.map +1 -1
  27. package/dist/fields/Upload/Input.js +2 -4
  28. package/dist/fields/Upload/Input.js.map +1 -1
  29. package/dist/fields/Upload/index.d.ts.map +1 -1
  30. package/dist/fields/Upload/index.js +31 -27
  31. package/dist/fields/Upload/index.js.map +1 -1
  32. package/dist/forms/useField/index.d.ts.map +1 -1
  33. package/dist/forms/useField/index.js +68 -75
  34. package/dist/forms/useField/index.js.map +1 -1
  35. package/dist/hooks/useControllableState.d.ts +6 -0
  36. package/dist/hooks/useControllableState.d.ts.map +1 -0
  37. package/dist/hooks/useControllableState.js +21 -0
  38. package/dist/hooks/useControllableState.js.map +1 -0
  39. package/dist/hooks/useQueues.d.ts +1 -1
  40. package/dist/hooks/useQueues.d.ts.map +1 -1
  41. package/dist/hooks/useQueues.js.map +1 -1
  42. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  43. package/dist/providers/DocumentInfo/index.js +12 -11
  44. package/dist/providers/DocumentInfo/index.js.map +1 -1
  45. package/dist/styles.css +1 -1
  46. package/dist/views/List/index.d.ts.map +1 -1
  47. package/dist/views/List/index.js +12 -15
  48. package/dist/views/List/index.js.map +1 -1
  49. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/fields/Upload/Input.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EAEnB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,WAAW,IAAI,eAAe,EAE/B,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAIjD,OAAO,KAA0C,MAAM,OAAO,CAAA;AAqB9D,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,WAAW,CAAA;AAIjC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAA;IAC5C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAA;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAA;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAA,KAAK,IAAI,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAA;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;CACzD,CAAA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,qBA0hBlD"}
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/fields/Upload/Input.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EAEnB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,WAAW,IAAI,eAAe,EAE/B,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAIjD,OAAO,KAA0C,MAAM,OAAO,CAAA;AAqB9D,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,WAAW,CAAA;AAIjC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAA;IAC5C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAA;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAA;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAA,KAAK,IAAI,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAA;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;CACzD,CAAA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,qBAihBlD"}
@@ -58,7 +58,6 @@ export function UploadInput(props) {
58
58
  const {
59
59
  drawerSlug,
60
60
  setCollectionSlug,
61
- setCurrentActivePath,
62
61
  setInitialFiles,
63
62
  setMaxFiles,
64
63
  setOnSuccess
@@ -195,9 +194,8 @@ export function UploadInput(props) {
195
194
  if (typeof maxRows === 'number') {
196
195
  setMaxFiles(maxRows);
197
196
  }
198
- setCurrentActivePath(path);
199
197
  openModal(drawerSlug);
200
- }, [drawerSlug, hasMany, openModal, relationTo, setCollectionSlug, setInitialFiles, maxRows, setMaxFiles, path, setCurrentActivePath]);
198
+ }, [drawerSlug, hasMany, openModal, relationTo, setCollectionSlug, setInitialFiles, maxRows, setMaxFiles]);
201
199
  // only hasMany can bulk select
202
200
  const onListBulkSelect = React.useCallback(async docs => {
203
201
  const selectedDocIDs = [];
@@ -313,7 +311,7 @@ export function UploadInput(props) {
313
311
  }
314
312
  }, [populateDocs, activeRelationTo, value]);
315
313
  useEffect(() => {
316
- setOnSuccess(path, onUploadSuccess);
314
+ setOnSuccess(onUploadSuccess);
317
315
  }, [value, path, onUploadSuccess, setOnSuccess]);
318
316
  const showDropzone = !value || hasMany && Array.isArray(value) && (typeof maxRows !== 'number' || value.length < maxRows) || !hasMany && populatedDocs?.[0] && typeof populatedDocs[0].value === 'undefined';
319
317
  return /*#__PURE__*/_jsxs("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","names":["useModal","qs","React","useCallback","useEffect","useMemo","useBulkUpload","Button","useDocumentDrawer","Dropzone","useListDrawer","RenderCustomComponent","ShimmerEffect","FieldDescription","FieldError","FieldLabel","useAuth","useLocale","useTranslation","fieldBaseClass","UploadComponentHasMany","UploadComponentHasOne","baseClass","UploadInput","props","AfterInput","allowCreate","api","BeforeInput","className","Description","description","displayPreview","Error","filterOptions","filterOptionsFromProps","hasMany","isSortable","Label","label","localized","maxRows","onChange","onChangeFromProps","path","readOnly","relationTo","required","serverURL","showError","style","value","populatedDocs","setPopulatedDocs","useState","activeRelationTo","setActiveRelationTo","Array","isArray","openModal","drawerSlug","setCollectionSlug","setCurrentActivePath","setInitialFiles","setMaxFiles","setOnSuccess","permissions","code","i18n","t","id","not_in","concat","ListDrawer","closeDrawer","closeListDrawer","openDrawer","openListDrawer","collectionSlugs","CreateDocDrawer","closeCreateDocDrawer","openCreateDocDrawer","collectionSlug","loadedValueDocsRef","useRef","canCreate","collections","create","newValue","populateDocs","ids","relatedCollectionSlug","length","query","depth","draft","limit","locale","where","and","in","response","fetch","body","stringify","credentials","headers","language","method","ok","json","sortedDocs","map","docs","find","doc","String","includes","undefined","index","filename","isPlaceholder","onUploadSuccess","newDocs","mergedValue","currentDocs","firstDoc","onLocalFileSelection","fileList","fileListToUse","dataTransfer","DataTransfer","items","add","files","onListBulkSelect","selectedDocIDs","isSelected","push","loadedDocs","onDocCreate","data","onListSelect","selectedDoc","reloadDoc","docID","updatedDocsToPropogate","existingDocIndex","findIndex","hasExisting","updatedDocs","onReorder","newValueIDs","onRemove","loadInitialDocs","current","showDropzone","_jsxs","filter","Boolean","join","replace","_jsx","CustomComponent","Fallback","_Fragment","fileDocs","readonly","height","fileDoc","disabled","multipleFiles","buttonStyle","onClick","size","onSave","enableRowSelections","onBulkSelect","onSelect"],"sources":["../../../src/fields/Upload/Input.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientCollectionConfig,\n FieldLabelClientProps,\n FilterOptionsResult,\n JsonObject,\n StaticDescription,\n StaticLabel,\n UploadFieldClient,\n UploadField as UploadFieldType,\n Where,\n} from 'payload'\nimport type { MarkOptional } from 'ts-essentials'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo } from 'react'\n\nimport type { ListDrawerProps } from '../../elements/ListDrawer/types.js'\nimport type { PopulateDocs, ReloadDoc } from './types.js'\n\nimport { useBulkUpload } from '../../elements/BulkUpload/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js'\nimport { Dropzone } from '../../elements/Dropzone/index.js'\nimport { useListDrawer } from '../../elements/ListDrawer/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { UploadComponentHasMany } from './HasMany/index.js'\nimport { UploadComponentHasOne } from './HasOne/index.js'\nimport './index.scss'\n\nexport const baseClass = 'upload'\n\ntype PopulatedDocs = { relationTo: string; value: JsonObject }[]\n\nexport type UploadInputProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n /**\n * Controls the visibility of the \"Create new collection\" button\n */\n readonly api?: string\n readonly BeforeInput?: React.ReactNode\n readonly className?: string\n readonly collection?: ClientCollectionConfig\n readonly customUploadActions?: React.ReactNode[]\n readonly Description?: React.ReactNode\n readonly description?: StaticDescription\n readonly displayPreview?: boolean\n readonly Error?: React.ReactNode\n readonly filterOptions?: FilterOptionsResult\n readonly hasMany?: boolean\n readonly hideRemoveFile?: boolean\n readonly isSortable?: boolean\n readonly Label?: React.ReactNode\n readonly label?: StaticLabel\n readonly labelProps?: FieldLabelClientProps<MarkOptional<UploadFieldClient, 'type'>>\n readonly localized?: boolean\n readonly maxRows?: number\n readonly onChange?: (e) => void\n readonly path: string\n readonly readOnly?: boolean\n readonly relationTo: UploadFieldType['relationTo']\n readonly required?: boolean\n readonly serverURL?: string\n readonly showError?: boolean\n readonly style?: React.CSSProperties\n readonly value?: (number | string)[] | (number | string)\n}\n\nexport function UploadInput(props: UploadInputProps) {\n const {\n AfterInput,\n allowCreate,\n api,\n BeforeInput,\n className,\n Description,\n description,\n displayPreview,\n Error,\n filterOptions: filterOptionsFromProps,\n hasMany,\n isSortable,\n Label,\n label,\n localized,\n maxRows,\n onChange: onChangeFromProps,\n path,\n readOnly,\n relationTo,\n required,\n serverURL,\n showError,\n style,\n value,\n } = props\n\n const [populatedDocs, setPopulatedDocs] = React.useState<\n {\n relationTo: string\n value: JsonObject\n }[]\n >()\n\n const [activeRelationTo, setActiveRelationTo] = React.useState<string>(\n Array.isArray(relationTo) ? relationTo[0] : relationTo,\n )\n\n const { openModal } = useModal()\n const {\n drawerSlug,\n setCollectionSlug,\n setCurrentActivePath,\n setInitialFiles,\n setMaxFiles,\n setOnSuccess,\n } = useBulkUpload()\n const { permissions } = useAuth()\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const filterOptions: FilterOptionsResult = useMemo(() => {\n return {\n ...filterOptionsFromProps,\n [activeRelationTo]: {\n ...((filterOptionsFromProps?.[activeRelationTo] as any) || {}),\n id: {\n ...((filterOptionsFromProps?.[activeRelationTo] as any)?.id || {}),\n not_in: ((filterOptionsFromProps?.[activeRelationTo] as any)?.id?.not_in || []).concat(\n ...(Array.isArray(value) || value ? [value] : []),\n ),\n },\n },\n }\n }, [value, activeRelationTo, filterOptionsFromProps])\n\n const [ListDrawer, , { closeDrawer: closeListDrawer, openDrawer: openListDrawer }] =\n useListDrawer({\n collectionSlugs: typeof relationTo === 'string' ? [relationTo] : relationTo,\n filterOptions,\n })\n\n const [\n CreateDocDrawer,\n ,\n { closeDrawer: closeCreateDocDrawer, openDrawer: openCreateDocDrawer },\n ] = useDocumentDrawer({\n collectionSlug: activeRelationTo,\n })\n\n /**\n * Prevent initial retrieval of documents from running more than once\n */\n const loadedValueDocsRef = React.useRef<boolean>(false)\n\n const canCreate = useMemo(() => {\n if (!allowCreate) {\n return false\n }\n\n if (typeof activeRelationTo === 'string') {\n if (permissions?.collections && permissions.collections?.[activeRelationTo]?.create) {\n return true\n }\n }\n\n return false\n }, [activeRelationTo, permissions, allowCreate])\n\n const onChange = React.useCallback(\n (newValue) => {\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newValue)\n }\n },\n [onChangeFromProps],\n )\n\n const populateDocs = React.useCallback<PopulateDocs>(\n async (ids, relatedCollectionSlug) => {\n if (!ids.length) {\n return\n }\n\n const query: {\n [key: string]: unknown\n where: Where\n } = {\n depth: 0,\n draft: true,\n limit: ids.length,\n locale: code,\n where: {\n and: [\n {\n id: {\n in: ids,\n },\n },\n ],\n },\n }\n\n const response = await fetch(`${serverURL}${api}/${relatedCollectionSlug}`, {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Payload-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n })\n if (response.ok) {\n const json = await response.json()\n let sortedDocs = ids.map((id) =>\n json.docs.find((doc) => {\n return String(doc.id) === String(id)\n }),\n )\n\n if (sortedDocs.includes(undefined) && hasMany) {\n sortedDocs = sortedDocs.map((doc, index) =>\n doc\n ? doc\n : {\n id: ids[index],\n filename: `${t('general:untitled')} - ID: ${ids[index]}`,\n isPlaceholder: true,\n },\n )\n }\n\n return { ...json, docs: sortedDocs }\n }\n\n return null\n },\n [code, serverURL, api, i18n.language, t, hasMany],\n )\n\n const onUploadSuccess = useCallback(\n (newDocs: JsonObject[]) => {\n if (hasMany) {\n const mergedValue = [\n ...(Array.isArray(value) ? value : []),\n ...newDocs.map((doc) => doc.id),\n ]\n onChange(mergedValue)\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n ...newDocs.map((doc) => ({\n relationTo: activeRelationTo,\n value: doc,\n })),\n ])\n } else {\n const firstDoc = newDocs[0]\n onChange(firstDoc.id)\n setPopulatedDocs([\n {\n relationTo: activeRelationTo,\n value: firstDoc,\n },\n ])\n }\n },\n [value, onChange, activeRelationTo, hasMany],\n )\n\n const onLocalFileSelection = React.useCallback(\n (fileList?: FileList) => {\n let fileListToUse = fileList\n if (!hasMany && fileList && fileList.length > 1) {\n const dataTransfer = new DataTransfer()\n dataTransfer.items.add(fileList[0])\n fileListToUse = dataTransfer.files\n }\n if (fileListToUse) {\n setInitialFiles(fileListToUse)\n }\n setCollectionSlug(relationTo)\n if (typeof maxRows === 'number') {\n setMaxFiles(maxRows)\n }\n setCurrentActivePath(path)\n openModal(drawerSlug)\n },\n [\n drawerSlug,\n hasMany,\n openModal,\n relationTo,\n setCollectionSlug,\n setInitialFiles,\n maxRows,\n setMaxFiles,\n path,\n setCurrentActivePath,\n ],\n )\n\n // only hasMany can bulk select\n const onListBulkSelect = React.useCallback<NonNullable<ListDrawerProps['onBulkSelect']>>(\n async (docs) => {\n const selectedDocIDs = []\n\n for (const [id, isSelected] of docs) {\n if (isSelected) {\n selectedDocIDs.push(id)\n }\n }\n\n const loadedDocs = await populateDocs(selectedDocIDs, activeRelationTo)\n if (loadedDocs) {\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n ...loadedDocs.docs.map((doc) => ({\n relationTo: activeRelationTo,\n value: doc,\n })),\n ])\n }\n onChange([...(Array.isArray(value) ? value : []), ...selectedDocIDs])\n closeListDrawer()\n },\n [activeRelationTo, closeListDrawer, onChange, populateDocs, value],\n )\n\n const onDocCreate = React.useCallback(\n (data) => {\n if (data.doc) {\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n {\n relationTo: activeRelationTo,\n value: data.doc,\n },\n ])\n\n onChange(data.doc.id)\n }\n closeCreateDocDrawer()\n },\n [closeCreateDocDrawer, activeRelationTo, onChange],\n )\n\n const onListSelect = useCallback<NonNullable<ListDrawerProps['onSelect']>>(\n async ({ collectionSlug, doc }) => {\n const loadedDocs = await populateDocs([doc.id], collectionSlug)\n const selectedDoc = loadedDocs ? loadedDocs.docs?.[0] : null\n setPopulatedDocs((currentDocs) => {\n if (selectedDoc) {\n if (hasMany) {\n return [\n ...(currentDocs || []),\n {\n relationTo: activeRelationTo,\n value: selectedDoc,\n },\n ]\n }\n return [\n {\n relationTo: activeRelationTo,\n value: selectedDoc,\n },\n ]\n }\n return currentDocs\n })\n if (hasMany) {\n onChange([...(Array.isArray(value) ? value : []), doc.id])\n } else {\n onChange(doc.id)\n }\n closeListDrawer()\n },\n [closeListDrawer, hasMany, populateDocs, onChange, value, activeRelationTo],\n )\n\n const reloadDoc = React.useCallback<ReloadDoc>(\n async (docID, collectionSlug) => {\n const { docs } = await populateDocs([docID], collectionSlug)\n\n if (docs[0]) {\n let updatedDocsToPropogate = []\n setPopulatedDocs((currentDocs) => {\n const existingDocIndex = currentDocs?.findIndex((doc) => {\n const hasExisting = doc.value?.id === docs[0].id || doc.value?.isPlaceholder\n return hasExisting && doc.relationTo === collectionSlug\n })\n if (existingDocIndex > -1) {\n const updatedDocs = [...currentDocs]\n updatedDocs[existingDocIndex] = {\n relationTo: collectionSlug,\n value: docs[0],\n }\n updatedDocsToPropogate = updatedDocs\n return updatedDocs\n }\n })\n\n if (updatedDocsToPropogate.length && hasMany) {\n onChange(updatedDocsToPropogate.map((doc) => doc.value?.id))\n }\n }\n },\n [populateDocs, onChange, hasMany],\n )\n\n // only hasMany can reorder\n const onReorder = React.useCallback(\n (newValue) => {\n const newValueIDs = newValue.map(({ value }) => value.id)\n onChange(newValueIDs)\n setPopulatedDocs(newValue)\n },\n [onChange],\n )\n\n const onRemove = React.useCallback(\n (newValue?: PopulatedDocs) => {\n const newValueIDs = newValue ? newValue.map(({ value }) => value.id) : null\n onChange(hasMany ? newValueIDs : newValueIDs ? newValueIDs[0] : null)\n setPopulatedDocs(newValue ? newValue : [])\n },\n [onChange, hasMany],\n )\n\n useEffect(() => {\n async function loadInitialDocs() {\n if (value) {\n loadedValueDocsRef.current = true\n const loadedDocs = await populateDocs(\n Array.isArray(value) ? value : [value],\n activeRelationTo,\n )\n if (loadedDocs) {\n setPopulatedDocs(\n loadedDocs.docs.map((doc) => ({ relationTo: activeRelationTo, value: doc })),\n )\n }\n }\n }\n\n if (!loadedValueDocsRef.current) {\n void loadInitialDocs()\n }\n }, [populateDocs, activeRelationTo, value])\n\n useEffect(() => {\n setOnSuccess(path, onUploadSuccess)\n }, [value, path, onUploadSuccess, setOnSuccess])\n\n const showDropzone =\n !value ||\n (hasMany && Array.isArray(value) && (typeof maxRows !== 'number' || value.length < maxRows)) ||\n (!hasMany && populatedDocs?.[0] && typeof populatedDocs[0].value === 'undefined')\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n style={style}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${baseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n </div>\n {BeforeInput}\n <div className={`${baseClass}__dropzoneAndUpload`}>\n {hasMany && Array.isArray(value) && value.length > 0 ? (\n <>\n {populatedDocs && populatedDocs?.length > 0 ? (\n <UploadComponentHasMany\n displayPreview={displayPreview}\n fileDocs={populatedDocs}\n isSortable={isSortable && !readOnly}\n onRemove={onRemove}\n onReorder={onReorder}\n readonly={readOnly}\n reloadDoc={reloadDoc}\n serverURL={serverURL}\n />\n ) : (\n <div className={`${baseClass}__loadingRows`}>\n {value.map((id) => (\n <ShimmerEffect height=\"40px\" key={id} />\n ))}\n </div>\n )}\n </>\n ) : null}\n {!hasMany && value ? (\n <>\n {populatedDocs && populatedDocs?.length > 0 && populatedDocs[0].value ? (\n <UploadComponentHasOne\n displayPreview={displayPreview}\n fileDoc={populatedDocs[0]}\n onRemove={onRemove}\n readonly={readOnly}\n reloadDoc={reloadDoc}\n serverURL={serverURL}\n />\n ) : populatedDocs && value && !populatedDocs?.[0]?.value ? (\n <>\n {t('general:untitled')} - ID: {value}\n </>\n ) : (\n <ShimmerEffect height=\"62px\" />\n )}\n </>\n ) : null}\n {showDropzone ? (\n <Dropzone\n disabled={readOnly || !canCreate}\n multipleFiles={hasMany}\n onChange={onLocalFileSelection}\n >\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneContent__buttons`}>\n {canCreate && (\n <>\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__createNewToggler`}\n disabled={readOnly || !canCreate}\n onClick={() => {\n if (!readOnly) {\n if (hasMany) {\n onLocalFileSelection()\n } else {\n openCreateDocDrawer()\n }\n }\n }}\n size=\"small\"\n >\n {t('general:createNew')}\n </Button>\n <span className={`${baseClass}__dropzoneContent__orText`}>\n {t('general:or')}\n </span>\n </>\n )}\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__listToggler`}\n disabled={readOnly}\n onClick={openListDrawer}\n size=\"small\"\n >\n {t('fields:chooseFromExisting')}\n </Button>\n <CreateDocDrawer onSave={onDocCreate} />\n <ListDrawer\n allowCreate={canCreate}\n enableRowSelections={hasMany}\n onBulkSelect={onListBulkSelect}\n onSelect={onListSelect}\n />\n </div>\n\n {canCreate && !readOnly && (\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n )}\n </div>\n </Dropzone>\n ) : (\n <>\n {!readOnly &&\n !populatedDocs &&\n (!value ||\n typeof maxRows !== 'number' ||\n (Array.isArray(value) && value.length < maxRows)) ? (\n <ShimmerEffect height=\"40px\" />\n ) : null}\n </>\n )}\n </div>\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Input.js","names":["useModal","qs","React","useCallback","useEffect","useMemo","useBulkUpload","Button","useDocumentDrawer","Dropzone","useListDrawer","RenderCustomComponent","ShimmerEffect","FieldDescription","FieldError","FieldLabel","useAuth","useLocale","useTranslation","fieldBaseClass","UploadComponentHasMany","UploadComponentHasOne","baseClass","UploadInput","props","AfterInput","allowCreate","api","BeforeInput","className","Description","description","displayPreview","Error","filterOptions","filterOptionsFromProps","hasMany","isSortable","Label","label","localized","maxRows","onChange","onChangeFromProps","path","readOnly","relationTo","required","serverURL","showError","style","value","populatedDocs","setPopulatedDocs","useState","activeRelationTo","setActiveRelationTo","Array","isArray","openModal","drawerSlug","setCollectionSlug","setInitialFiles","setMaxFiles","setOnSuccess","permissions","code","i18n","t","id","not_in","concat","ListDrawer","closeDrawer","closeListDrawer","openDrawer","openListDrawer","collectionSlugs","CreateDocDrawer","closeCreateDocDrawer","openCreateDocDrawer","collectionSlug","loadedValueDocsRef","useRef","canCreate","collections","create","newValue","populateDocs","ids","relatedCollectionSlug","length","query","depth","draft","limit","locale","where","and","in","response","fetch","body","stringify","credentials","headers","language","method","ok","json","sortedDocs","map","docs","find","doc","String","includes","undefined","index","filename","isPlaceholder","onUploadSuccess","newDocs","mergedValue","currentDocs","firstDoc","onLocalFileSelection","fileList","fileListToUse","dataTransfer","DataTransfer","items","add","files","onListBulkSelect","selectedDocIDs","isSelected","push","loadedDocs","onDocCreate","data","onListSelect","selectedDoc","reloadDoc","docID","updatedDocsToPropogate","existingDocIndex","findIndex","hasExisting","updatedDocs","onReorder","newValueIDs","onRemove","loadInitialDocs","current","showDropzone","_jsxs","filter","Boolean","join","replace","_jsx","CustomComponent","Fallback","_Fragment","fileDocs","readonly","height","fileDoc","disabled","multipleFiles","buttonStyle","onClick","size","onSave","enableRowSelections","onBulkSelect","onSelect"],"sources":["../../../src/fields/Upload/Input.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientCollectionConfig,\n FieldLabelClientProps,\n FilterOptionsResult,\n JsonObject,\n StaticDescription,\n StaticLabel,\n UploadFieldClient,\n UploadField as UploadFieldType,\n Where,\n} from 'payload'\nimport type { MarkOptional } from 'ts-essentials'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo } from 'react'\n\nimport type { ListDrawerProps } from '../../elements/ListDrawer/types.js'\nimport type { PopulateDocs, ReloadDoc } from './types.js'\n\nimport { useBulkUpload } from '../../elements/BulkUpload/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js'\nimport { Dropzone } from '../../elements/Dropzone/index.js'\nimport { useListDrawer } from '../../elements/ListDrawer/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { UploadComponentHasMany } from './HasMany/index.js'\nimport { UploadComponentHasOne } from './HasOne/index.js'\nimport './index.scss'\n\nexport const baseClass = 'upload'\n\ntype PopulatedDocs = { relationTo: string; value: JsonObject }[]\n\nexport type UploadInputProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n /**\n * Controls the visibility of the \"Create new collection\" button\n */\n readonly api?: string\n readonly BeforeInput?: React.ReactNode\n readonly className?: string\n readonly collection?: ClientCollectionConfig\n readonly customUploadActions?: React.ReactNode[]\n readonly Description?: React.ReactNode\n readonly description?: StaticDescription\n readonly displayPreview?: boolean\n readonly Error?: React.ReactNode\n readonly filterOptions?: FilterOptionsResult\n readonly hasMany?: boolean\n readonly hideRemoveFile?: boolean\n readonly isSortable?: boolean\n readonly Label?: React.ReactNode\n readonly label?: StaticLabel\n readonly labelProps?: FieldLabelClientProps<MarkOptional<UploadFieldClient, 'type'>>\n readonly localized?: boolean\n readonly maxRows?: number\n readonly onChange?: (e) => void\n readonly path: string\n readonly readOnly?: boolean\n readonly relationTo: UploadFieldType['relationTo']\n readonly required?: boolean\n readonly serverURL?: string\n readonly showError?: boolean\n readonly style?: React.CSSProperties\n readonly value?: (number | string)[] | (number | string)\n}\n\nexport function UploadInput(props: UploadInputProps) {\n const {\n AfterInput,\n allowCreate,\n api,\n BeforeInput,\n className,\n Description,\n description,\n displayPreview,\n Error,\n filterOptions: filterOptionsFromProps,\n hasMany,\n isSortable,\n Label,\n label,\n localized,\n maxRows,\n onChange: onChangeFromProps,\n path,\n readOnly,\n relationTo,\n required,\n serverURL,\n showError,\n style,\n value,\n } = props\n\n const [populatedDocs, setPopulatedDocs] = React.useState<\n {\n relationTo: string\n value: JsonObject\n }[]\n >()\n\n const [activeRelationTo, setActiveRelationTo] = React.useState<string>(\n Array.isArray(relationTo) ? relationTo[0] : relationTo,\n )\n\n const { openModal } = useModal()\n const { drawerSlug, setCollectionSlug, setInitialFiles, setMaxFiles, setOnSuccess } =\n useBulkUpload()\n const { permissions } = useAuth()\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const filterOptions: FilterOptionsResult = useMemo(() => {\n return {\n ...filterOptionsFromProps,\n [activeRelationTo]: {\n ...((filterOptionsFromProps?.[activeRelationTo] as any) || {}),\n id: {\n ...((filterOptionsFromProps?.[activeRelationTo] as any)?.id || {}),\n not_in: ((filterOptionsFromProps?.[activeRelationTo] as any)?.id?.not_in || []).concat(\n ...(Array.isArray(value) || value ? [value] : []),\n ),\n },\n },\n }\n }, [value, activeRelationTo, filterOptionsFromProps])\n\n const [ListDrawer, , { closeDrawer: closeListDrawer, openDrawer: openListDrawer }] =\n useListDrawer({\n collectionSlugs: typeof relationTo === 'string' ? [relationTo] : relationTo,\n filterOptions,\n })\n\n const [\n CreateDocDrawer,\n ,\n { closeDrawer: closeCreateDocDrawer, openDrawer: openCreateDocDrawer },\n ] = useDocumentDrawer({\n collectionSlug: activeRelationTo,\n })\n\n /**\n * Prevent initial retrieval of documents from running more than once\n */\n const loadedValueDocsRef = React.useRef<boolean>(false)\n\n const canCreate = useMemo(() => {\n if (!allowCreate) {\n return false\n }\n\n if (typeof activeRelationTo === 'string') {\n if (permissions?.collections && permissions.collections?.[activeRelationTo]?.create) {\n return true\n }\n }\n\n return false\n }, [activeRelationTo, permissions, allowCreate])\n\n const onChange = React.useCallback(\n (newValue) => {\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newValue)\n }\n },\n [onChangeFromProps],\n )\n\n const populateDocs = React.useCallback<PopulateDocs>(\n async (ids, relatedCollectionSlug) => {\n if (!ids.length) {\n return\n }\n\n const query: {\n [key: string]: unknown\n where: Where\n } = {\n depth: 0,\n draft: true,\n limit: ids.length,\n locale: code,\n where: {\n and: [\n {\n id: {\n in: ids,\n },\n },\n ],\n },\n }\n\n const response = await fetch(`${serverURL}${api}/${relatedCollectionSlug}`, {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Payload-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n })\n if (response.ok) {\n const json = await response.json()\n let sortedDocs = ids.map((id) =>\n json.docs.find((doc) => {\n return String(doc.id) === String(id)\n }),\n )\n\n if (sortedDocs.includes(undefined) && hasMany) {\n sortedDocs = sortedDocs.map((doc, index) =>\n doc\n ? doc\n : {\n id: ids[index],\n filename: `${t('general:untitled')} - ID: ${ids[index]}`,\n isPlaceholder: true,\n },\n )\n }\n\n return { ...json, docs: sortedDocs }\n }\n\n return null\n },\n [code, serverURL, api, i18n.language, t, hasMany],\n )\n\n const onUploadSuccess = useCallback(\n (newDocs: JsonObject[]) => {\n if (hasMany) {\n const mergedValue = [\n ...(Array.isArray(value) ? value : []),\n ...newDocs.map((doc) => doc.id),\n ]\n onChange(mergedValue)\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n ...newDocs.map((doc) => ({\n relationTo: activeRelationTo,\n value: doc,\n })),\n ])\n } else {\n const firstDoc = newDocs[0]\n onChange(firstDoc.id)\n setPopulatedDocs([\n {\n relationTo: activeRelationTo,\n value: firstDoc,\n },\n ])\n }\n },\n [value, onChange, activeRelationTo, hasMany],\n )\n\n const onLocalFileSelection = React.useCallback(\n (fileList?: FileList) => {\n let fileListToUse = fileList\n if (!hasMany && fileList && fileList.length > 1) {\n const dataTransfer = new DataTransfer()\n dataTransfer.items.add(fileList[0])\n fileListToUse = dataTransfer.files\n }\n if (fileListToUse) {\n setInitialFiles(fileListToUse)\n }\n setCollectionSlug(relationTo)\n if (typeof maxRows === 'number') {\n setMaxFiles(maxRows)\n }\n openModal(drawerSlug)\n },\n [\n drawerSlug,\n hasMany,\n openModal,\n relationTo,\n setCollectionSlug,\n setInitialFiles,\n maxRows,\n setMaxFiles,\n ],\n )\n\n // only hasMany can bulk select\n const onListBulkSelect = React.useCallback<NonNullable<ListDrawerProps['onBulkSelect']>>(\n async (docs) => {\n const selectedDocIDs = []\n\n for (const [id, isSelected] of docs) {\n if (isSelected) {\n selectedDocIDs.push(id)\n }\n }\n\n const loadedDocs = await populateDocs(selectedDocIDs, activeRelationTo)\n if (loadedDocs) {\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n ...loadedDocs.docs.map((doc) => ({\n relationTo: activeRelationTo,\n value: doc,\n })),\n ])\n }\n onChange([...(Array.isArray(value) ? value : []), ...selectedDocIDs])\n closeListDrawer()\n },\n [activeRelationTo, closeListDrawer, onChange, populateDocs, value],\n )\n\n const onDocCreate = React.useCallback(\n (data) => {\n if (data.doc) {\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n {\n relationTo: activeRelationTo,\n value: data.doc,\n },\n ])\n\n onChange(data.doc.id)\n }\n closeCreateDocDrawer()\n },\n [closeCreateDocDrawer, activeRelationTo, onChange],\n )\n\n const onListSelect = useCallback<NonNullable<ListDrawerProps['onSelect']>>(\n async ({ collectionSlug, doc }) => {\n const loadedDocs = await populateDocs([doc.id], collectionSlug)\n const selectedDoc = loadedDocs ? loadedDocs.docs?.[0] : null\n setPopulatedDocs((currentDocs) => {\n if (selectedDoc) {\n if (hasMany) {\n return [\n ...(currentDocs || []),\n {\n relationTo: activeRelationTo,\n value: selectedDoc,\n },\n ]\n }\n return [\n {\n relationTo: activeRelationTo,\n value: selectedDoc,\n },\n ]\n }\n return currentDocs\n })\n if (hasMany) {\n onChange([...(Array.isArray(value) ? value : []), doc.id])\n } else {\n onChange(doc.id)\n }\n closeListDrawer()\n },\n [closeListDrawer, hasMany, populateDocs, onChange, value, activeRelationTo],\n )\n\n const reloadDoc = React.useCallback<ReloadDoc>(\n async (docID, collectionSlug) => {\n const { docs } = await populateDocs([docID], collectionSlug)\n\n if (docs[0]) {\n let updatedDocsToPropogate = []\n setPopulatedDocs((currentDocs) => {\n const existingDocIndex = currentDocs?.findIndex((doc) => {\n const hasExisting = doc.value?.id === docs[0].id || doc.value?.isPlaceholder\n return hasExisting && doc.relationTo === collectionSlug\n })\n if (existingDocIndex > -1) {\n const updatedDocs = [...currentDocs]\n updatedDocs[existingDocIndex] = {\n relationTo: collectionSlug,\n value: docs[0],\n }\n updatedDocsToPropogate = updatedDocs\n return updatedDocs\n }\n })\n\n if (updatedDocsToPropogate.length && hasMany) {\n onChange(updatedDocsToPropogate.map((doc) => doc.value?.id))\n }\n }\n },\n [populateDocs, onChange, hasMany],\n )\n\n // only hasMany can reorder\n const onReorder = React.useCallback(\n (newValue) => {\n const newValueIDs = newValue.map(({ value }) => value.id)\n onChange(newValueIDs)\n setPopulatedDocs(newValue)\n },\n [onChange],\n )\n\n const onRemove = React.useCallback(\n (newValue?: PopulatedDocs) => {\n const newValueIDs = newValue ? newValue.map(({ value }) => value.id) : null\n onChange(hasMany ? newValueIDs : newValueIDs ? newValueIDs[0] : null)\n setPopulatedDocs(newValue ? newValue : [])\n },\n [onChange, hasMany],\n )\n\n useEffect(() => {\n async function loadInitialDocs() {\n if (value) {\n loadedValueDocsRef.current = true\n const loadedDocs = await populateDocs(\n Array.isArray(value) ? value : [value],\n activeRelationTo,\n )\n if (loadedDocs) {\n setPopulatedDocs(\n loadedDocs.docs.map((doc) => ({ relationTo: activeRelationTo, value: doc })),\n )\n }\n }\n }\n\n if (!loadedValueDocsRef.current) {\n void loadInitialDocs()\n }\n }, [populateDocs, activeRelationTo, value])\n\n useEffect(() => {\n setOnSuccess(onUploadSuccess)\n }, [value, path, onUploadSuccess, setOnSuccess])\n\n const showDropzone =\n !value ||\n (hasMany && Array.isArray(value) && (typeof maxRows !== 'number' || value.length < maxRows)) ||\n (!hasMany && populatedDocs?.[0] && typeof populatedDocs[0].value === 'undefined')\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n style={style}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${baseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n </div>\n {BeforeInput}\n <div className={`${baseClass}__dropzoneAndUpload`}>\n {hasMany && Array.isArray(value) && value.length > 0 ? (\n <>\n {populatedDocs && populatedDocs?.length > 0 ? (\n <UploadComponentHasMany\n displayPreview={displayPreview}\n fileDocs={populatedDocs}\n isSortable={isSortable && !readOnly}\n onRemove={onRemove}\n onReorder={onReorder}\n readonly={readOnly}\n reloadDoc={reloadDoc}\n serverURL={serverURL}\n />\n ) : (\n <div className={`${baseClass}__loadingRows`}>\n {value.map((id) => (\n <ShimmerEffect height=\"40px\" key={id} />\n ))}\n </div>\n )}\n </>\n ) : null}\n {!hasMany && value ? (\n <>\n {populatedDocs && populatedDocs?.length > 0 && populatedDocs[0].value ? (\n <UploadComponentHasOne\n displayPreview={displayPreview}\n fileDoc={populatedDocs[0]}\n onRemove={onRemove}\n readonly={readOnly}\n reloadDoc={reloadDoc}\n serverURL={serverURL}\n />\n ) : populatedDocs && value && !populatedDocs?.[0]?.value ? (\n <>\n {t('general:untitled')} - ID: {value}\n </>\n ) : (\n <ShimmerEffect height=\"62px\" />\n )}\n </>\n ) : null}\n {showDropzone ? (\n <Dropzone\n disabled={readOnly || !canCreate}\n multipleFiles={hasMany}\n onChange={onLocalFileSelection}\n >\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneContent__buttons`}>\n {canCreate && (\n <>\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__createNewToggler`}\n disabled={readOnly || !canCreate}\n onClick={() => {\n if (!readOnly) {\n if (hasMany) {\n onLocalFileSelection()\n } else {\n openCreateDocDrawer()\n }\n }\n }}\n size=\"small\"\n >\n {t('general:createNew')}\n </Button>\n <span className={`${baseClass}__dropzoneContent__orText`}>\n {t('general:or')}\n </span>\n </>\n )}\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__listToggler`}\n disabled={readOnly}\n onClick={openListDrawer}\n size=\"small\"\n >\n {t('fields:chooseFromExisting')}\n </Button>\n <CreateDocDrawer onSave={onDocCreate} />\n <ListDrawer\n allowCreate={canCreate}\n enableRowSelections={hasMany}\n onBulkSelect={onListBulkSelect}\n onSelect={onListSelect}\n />\n </div>\n\n {canCreate && !readOnly && (\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n )}\n </div>\n </Dropzone>\n ) : (\n <>\n {!readOnly &&\n !populatedDocs &&\n (!value ||\n typeof maxRows !== 'number' ||\n (Array.isArray(value) && value.length < maxRows)) ? (\n <ShimmerEffect height=\"40px\" />\n ) : null}\n </>\n )}\n </div>\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Upload/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAErD,OAAO,KAAkB,MAAM,OAAO,CAAA;AAKtC,OAAO,cAAc,CAAA;AAIrB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,eAAO,MAAM,SAAS,WAAW,CAAA;AAEjC,wBAAgB,eAAe,CAAC,KAAK,EAAE,sBAAsB,qBA0E5D;AAED,eAAO,MAAM,WAAW,kCAAiC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Upload/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAErD,OAAO,KAAkB,MAAM,OAAO,CAAA;AAQtC,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,eAAO,MAAM,SAAS,WAAW,CAAA;AAEjC,wBAAgB,eAAe,CAAC,KAAK,EAAE,sBAAsB,qBA4E5D;AAED,eAAO,MAAM,WAAW,kCAAiC,CAAA"}
@@ -2,12 +2,13 @@
2
2
 
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import React, { useMemo } from 'react';
5
+ import { BulkUploadProvider } from '../../elements/BulkUpload/index.js';
5
6
  import { useField } from '../../forms/useField/index.js';
6
7
  import { withCondition } from '../../forms/withCondition/index.js';
7
8
  import { useConfig } from '../../providers/Config/index.js';
8
- import './index.scss';
9
9
  import { mergeFieldStyles } from '../mergeFieldStyles.js';
10
10
  import { UploadInput } from './Input.js';
11
+ import './index.scss';
11
12
  export { UploadInput } from './Input.js';
12
13
  export const baseClass = 'upload';
13
14
  export function UploadComponent(props) {
@@ -62,32 +63,35 @@ export function UploadComponent(props) {
62
63
  validate: memoizedValidate
63
64
  });
64
65
  const styles = useMemo(() => mergeFieldStyles(field), [field]);
65
- return /*#__PURE__*/_jsx(UploadInput, {
66
- AfterInput: AfterInput,
67
- allowCreate: allowCreate !== false,
68
- api: config.routes.api,
69
- BeforeInput: BeforeInput,
70
- className: className,
71
- Description: Description,
72
- description: description,
73
- displayPreview: displayPreview,
74
- Error: Error,
75
- filterOptions: filterOptions,
76
- hasMany: hasMany,
77
- isSortable: isSortable,
78
- label: label,
79
- Label: Label,
80
- localized: localized,
81
- maxRows: maxRows,
82
- onChange: setValue,
83
- path: path,
84
- readOnly: readOnly || disabled,
85
- relationTo: relationTo,
86
- required: required,
87
- serverURL: config.serverURL,
88
- showError: showError,
89
- style: styles,
90
- value: value_0
66
+ return /*#__PURE__*/_jsx(BulkUploadProvider, {
67
+ drawerSlugPrefix: pathFromProps,
68
+ children: /*#__PURE__*/_jsx(UploadInput, {
69
+ AfterInput: AfterInput,
70
+ allowCreate: allowCreate !== false,
71
+ api: config.routes.api,
72
+ BeforeInput: BeforeInput,
73
+ className: className,
74
+ Description: Description,
75
+ description: description,
76
+ displayPreview: displayPreview,
77
+ Error: Error,
78
+ filterOptions: filterOptions,
79
+ hasMany: hasMany,
80
+ isSortable: isSortable,
81
+ label: label,
82
+ Label: Label,
83
+ localized: localized,
84
+ maxRows: maxRows,
85
+ onChange: setValue,
86
+ path: path,
87
+ readOnly: readOnly || disabled,
88
+ relationTo: relationTo,
89
+ required: required,
90
+ serverURL: config.serverURL,
91
+ showError: showError,
92
+ style: styles,
93
+ value: value_0
94
+ })
91
95
  });
92
96
  }
93
97
  export const UploadField = withCondition(UploadComponent);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useMemo","useField","withCondition","useConfig","mergeFieldStyles","UploadInput","baseClass","UploadComponent","props","field","admin","allowCreate","className","description","isSortable","hasMany","label","localized","maxRows","relationTo","required","path","pathFromProps","readOnly","validate","config","displayPreview","memoizedValidate","useCallback","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","filterOptions","setValue","showError","potentiallyStalePath","styles","_jsx","api","routes","onChange","serverURL","style","UploadField"],"sources":["../../../src/fields/Upload/index.tsx"],"sourcesContent":["'use client'\n\nimport type { UploadFieldClientProps } from 'payload'\n\nimport React, { useMemo } from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport './index.scss'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { UploadInput } from './Input.js'\n\nexport { UploadInput } from './Input.js'\nexport type { UploadInputProps } from './Input.js'\n\nexport const baseClass = 'upload'\n\nexport function UploadComponent(props: UploadFieldClientProps) {\n const {\n field,\n field: {\n admin: { allowCreate, className, description, isSortable } = {},\n hasMany,\n label,\n localized,\n maxRows,\n relationTo,\n required,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { config } = useConfig()\n\n const displayPreview = field.displayPreview\n\n const memoizedValidate = React.useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n filterOptions,\n path,\n setValue,\n showError,\n value,\n } = useField<string | string[]>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <UploadInput\n AfterInput={AfterInput}\n allowCreate={allowCreate !== false}\n api={config.routes.api}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n displayPreview={displayPreview}\n Error={Error}\n filterOptions={filterOptions}\n hasMany={hasMany}\n isSortable={isSortable}\n label={label}\n Label={Label}\n localized={localized}\n maxRows={maxRows}\n onChange={setValue}\n path={path}\n readOnly={readOnly || disabled}\n relationTo={relationTo}\n required={required}\n serverURL={config.serverURL}\n showError={showError}\n style={styles}\n value={value}\n />\n )\n}\n\nexport const UploadField = withCondition(UploadComponent)\n"],"mappings":"AAAA;;;AAIA,OAAOA,KAAA,IAASC,OAAO,QAAQ;AAE/B,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,SAAS,QAAQ;AAC1B,OAAO;AACP,SAASC,gBAAgB,QAAQ;AACjC,SAASC,WAAW,QAAQ;AAE5B,SAASA,WAAW,QAAQ;AAG5B,OAAO,MAAMC,SAAA,GAAY;AAEzB,OAAO,SAASC,gBAAgBC,KAA6B;EAC3D,MAAM;IACJC,KAAK;IACLA,KAAA,EAAO;MACLC,KAAA,EAAO;QAAEC,WAAW;QAAEC,SAAS;QAAEC,WAAW;QAAEC;MAAU,CAAE,GAAG,CAAC,CAAC;MAC/DC,OAAO;MACPC,KAAK;MACLC,SAAS;MACTC,OAAO;MACPC,UAAU;MACVC;IAAQ,CACT;IACDC,IAAA,EAAMC,aAAa;IACnBC,QAAQ;IACRC;EAAQ,CACT,GAAGhB,KAAA;EAEJ,MAAM;IAAEiB;EAAM,CAAE,GAAGtB,SAAA;EAEnB,MAAMuB,cAAA,GAAiBjB,KAAA,CAAMiB,cAAc;EAE3C,MAAMC,gBAAA,GAAmB5B,KAAA,CAAM6B,WAAW,CACxC,CAACC,KAAA,EAAOC,OAAA;IACN,IAAI,OAAON,QAAA,KAAa,YAAY;MAClC,OAAOA,QAAA,CAASK,KAAA,EAAO;QAAE,GAAGC,OAAO;QAAEV;MAAS;IAChD;EACF,GACA,CAACI,QAAA,EAAUJ,QAAA,CAAS;EAGtB,MAAM;IACJW,gBAAA,EAAkB;MAAEC,UAAU;MAAEC,WAAW;MAAEC,WAAW;MAAEC,KAAK;MAAEC;IAAK,CAAE,GAAG,CAAC,CAAC;IAC7EC,QAAQ;IACRC,aAAa;IACbjB,IAAI;IACJkB,QAAQ;IACRC,SAAS;IACTX,KAAK,EAALA;EAAK,CACN,GAAG5B,QAAA,CAA4B;IAC9BwC,oBAAA,EAAsBnB,aAAA;IACtBE,QAAA,EAAUG;EACZ;EAEA,MAAMe,MAAA,GAAS1C,OAAA,CAAQ,MAAMI,gBAAA,CAAiBK,KAAA,GAAQ,CAACA,KAAA,CAAM;EAE7D,oBACEkC,IAAA,CAACtC,WAAA;IACC2B,UAAA,EAAYA,UAAA;IACZrB,WAAA,EAAaA,WAAA,KAAgB;IAC7BiC,GAAA,EAAKnB,MAAA,CAAOoB,MAAM,CAACD,GAAG;IACtBX,WAAA,EAAaA,WAAA;IACbrB,SAAA,EAAWA,SAAA;IACXsB,WAAA,EAAaA,WAAA;IACbrB,WAAA,EAAaA,WAAA;IACba,cAAA,EAAgBA,cAAA;IAChBS,KAAA,EAAOA,KAAA;IACPG,aAAA,EAAeA,aAAA;IACfvB,OAAA,EAASA,OAAA;IACTD,UAAA,EAAYA,UAAA;IACZE,KAAA,EAAOA,KAAA;IACPoB,KAAA,EAAOA,KAAA;IACPnB,SAAA,EAAWA,SAAA;IACXC,OAAA,EAASA,OAAA;IACT4B,QAAA,EAAUP,QAAA;IACVlB,IAAA,EAAMA,IAAA;IACNE,QAAA,EAAUA,QAAA,IAAYc,QAAA;IACtBlB,UAAA,EAAYA,UAAA;IACZC,QAAA,EAAUA,QAAA;IACV2B,SAAA,EAAWtB,MAAA,CAAOsB,SAAS;IAC3BP,SAAA,EAAWA,SAAA;IACXQ,KAAA,EAAON,MAAA;IACPb,KAAA,EAAOA;;AAGb;AAEA,OAAO,MAAMoB,WAAA,GAAc/C,aAAA,CAAcK,eAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useMemo","BulkUploadProvider","useField","withCondition","useConfig","mergeFieldStyles","UploadInput","baseClass","UploadComponent","props","field","admin","allowCreate","className","description","isSortable","hasMany","label","localized","maxRows","relationTo","required","path","pathFromProps","readOnly","validate","config","displayPreview","memoizedValidate","useCallback","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","filterOptions","setValue","showError","potentiallyStalePath","styles","_jsx","drawerSlugPrefix","api","routes","onChange","serverURL","style","UploadField"],"sources":["../../../src/fields/Upload/index.tsx"],"sourcesContent":["'use client'\n\nimport type { UploadFieldClientProps } from 'payload'\n\nimport React, { useMemo } from 'react'\n\nimport { BulkUploadProvider } from '../../elements/BulkUpload/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { UploadInput } from './Input.js'\nimport './index.scss'\n\nexport { UploadInput } from './Input.js'\nexport type { UploadInputProps } from './Input.js'\n\nexport const baseClass = 'upload'\n\nexport function UploadComponent(props: UploadFieldClientProps) {\n const {\n field,\n field: {\n admin: { allowCreate, className, description, isSortable } = {},\n hasMany,\n label,\n localized,\n maxRows,\n relationTo,\n required,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { config } = useConfig()\n\n const displayPreview = field.displayPreview\n\n const memoizedValidate = React.useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n filterOptions,\n path,\n setValue,\n showError,\n value,\n } = useField<string | string[]>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <BulkUploadProvider drawerSlugPrefix={pathFromProps}>\n <UploadInput\n AfterInput={AfterInput}\n allowCreate={allowCreate !== false}\n api={config.routes.api}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n displayPreview={displayPreview}\n Error={Error}\n filterOptions={filterOptions}\n hasMany={hasMany}\n isSortable={isSortable}\n label={label}\n Label={Label}\n localized={localized}\n maxRows={maxRows}\n onChange={setValue}\n path={path}\n readOnly={readOnly || disabled}\n relationTo={relationTo}\n required={required}\n serverURL={config.serverURL}\n showError={showError}\n style={styles}\n value={value}\n />\n </BulkUploadProvider>\n )\n}\n\nexport const UploadField = withCondition(UploadComponent)\n"],"mappings":"AAAA;;;AAIA,OAAOA,KAAA,IAASC,OAAO,QAAQ;AAE/B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,SAAS,QAAQ;AAC1B,SAASC,gBAAgB,QAAQ;AACjC,SAASC,WAAW,QAAQ;AAC5B,OAAO;AAEP,SAASA,WAAW,QAAQ;AAG5B,OAAO,MAAMC,SAAA,GAAY;AAEzB,OAAO,SAASC,gBAAgBC,KAA6B;EAC3D,MAAM;IACJC,KAAK;IACLA,KAAA,EAAO;MACLC,KAAA,EAAO;QAAEC,WAAW;QAAEC,SAAS;QAAEC,WAAW;QAAEC;MAAU,CAAE,GAAG,CAAC,CAAC;MAC/DC,OAAO;MACPC,KAAK;MACLC,SAAS;MACTC,OAAO;MACPC,UAAU;MACVC;IAAQ,CACT;IACDC,IAAA,EAAMC,aAAa;IACnBC,QAAQ;IACRC;EAAQ,CACT,GAAGhB,KAAA;EAEJ,MAAM;IAAEiB;EAAM,CAAE,GAAGtB,SAAA;EAEnB,MAAMuB,cAAA,GAAiBjB,KAAA,CAAMiB,cAAc;EAE3C,MAAMC,gBAAA,GAAmB7B,KAAA,CAAM8B,WAAW,CACxC,CAACC,KAAA,EAAOC,OAAA;IACN,IAAI,OAAON,QAAA,KAAa,YAAY;MAClC,OAAOA,QAAA,CAASK,KAAA,EAAO;QAAE,GAAGC,OAAO;QAAEV;MAAS;IAChD;EACF,GACA,CAACI,QAAA,EAAUJ,QAAA,CAAS;EAGtB,MAAM;IACJW,gBAAA,EAAkB;MAAEC,UAAU;MAAEC,WAAW;MAAEC,WAAW;MAAEC,KAAK;MAAEC;IAAK,CAAE,GAAG,CAAC,CAAC;IAC7EC,QAAQ;IACRC,aAAa;IACbjB,IAAI;IACJkB,QAAQ;IACRC,SAAS;IACTX,KAAK,EAALA;EAAK,CACN,GAAG5B,QAAA,CAA4B;IAC9BwC,oBAAA,EAAsBnB,aAAA;IACtBE,QAAA,EAAUG;EACZ;EAEA,MAAMe,MAAA,GAAS3C,OAAA,CAAQ,MAAMK,gBAAA,CAAiBK,KAAA,GAAQ,CAACA,KAAA,CAAM;EAE7D,oBACEkC,IAAA,CAAC3C,kBAAA;IAAmB4C,gBAAA,EAAkBtB,aAAA;cACpC,aAAAqB,IAAA,CAACtC,WAAA;MACC2B,UAAA,EAAYA,UAAA;MACZrB,WAAA,EAAaA,WAAA,KAAgB;MAC7BkC,GAAA,EAAKpB,MAAA,CAAOqB,MAAM,CAACD,GAAG;MACtBZ,WAAA,EAAaA,WAAA;MACbrB,SAAA,EAAWA,SAAA;MACXsB,WAAA,EAAaA,WAAA;MACbrB,WAAA,EAAaA,WAAA;MACba,cAAA,EAAgBA,cAAA;MAChBS,KAAA,EAAOA,KAAA;MACPG,aAAA,EAAeA,aAAA;MACfvB,OAAA,EAASA,OAAA;MACTD,UAAA,EAAYA,UAAA;MACZE,KAAA,EAAOA,KAAA;MACPoB,KAAA,EAAOA,KAAA;MACPnB,SAAA,EAAWA,SAAA;MACXC,OAAA,EAASA,OAAA;MACT6B,QAAA,EAAUR,QAAA;MACVlB,IAAA,EAAMA,IAAA;MACNE,QAAA,EAAUA,QAAA,IAAYc,QAAA;MACtBlB,UAAA,EAAYA,UAAA;MACZC,QAAA,EAAUA,QAAA;MACV4B,SAAA,EAAWvB,MAAA,CAAOuB,SAAS;MAC3BR,SAAA,EAAWA,SAAA;MACXS,KAAA,EAAOP,MAAA;MACPb,KAAA,EAAOA;;;AAIf;AAEA,OAAO,MAAMqB,WAAA,GAAchD,aAAA,CAAcK,eAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/useField/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAmBlC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,YAAa,OAAO,KAAG,SAAS,CAAC,MAAM,CA6NrE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/useField/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAmBlC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,YAAa,OAAO,KAAG,SAAS,CAAC,MAAM,CAwMrE,CAAA"}
@@ -16,7 +16,7 @@ import { useFieldPath } from '../RenderFields/context.js';
16
16
  * @see https://payloadcms.com/docs/admin/react-hooks#usefield
17
17
  */
18
18
  export const useField = options => {
19
- const $ = _c(65);
19
+ const $ = _c(64);
20
20
  let t0;
21
21
  if ($[0] !== options) {
22
22
  t0 = options || {};
@@ -72,7 +72,7 @@ export const useField = options => {
72
72
  setModified
73
73
  } = useForm();
74
74
  const documentForm = useDocumentForm();
75
- const modified = useFormModified();
75
+ useFormModified();
76
76
  const filterOptions = field?.filterOptions;
77
77
  const value = field?.value;
78
78
  const initialValue = field?.initialValue;
@@ -90,7 +90,7 @@ export const useField = options => {
90
90
  }
91
91
  const pathSegments = t3;
92
92
  let t4;
93
- if ($[6] !== disableFormData || $[7] !== dispatchField || $[8] !== hasRows || $[9] !== modified || $[10] !== path || $[11] !== setModified) {
93
+ if ($[6] !== disableFormData || $[7] !== dispatchField || $[8] !== hasRows || $[9] !== path || $[10] !== setModified) {
94
94
  t4 = (e, t5) => {
95
95
  const disableModifyingForm = t5 === undefined ? false : t5;
96
96
  const isEvent = e && typeof e === "object" && typeof e.preventDefault === "function" && typeof e.stopPropagation === "function";
@@ -102,24 +102,17 @@ export const useField = options => {
102
102
  value: val
103
103
  });
104
104
  if (!disableModifyingForm) {
105
- if (typeof setModified === "function") {
106
- if (modified === false) {
107
- setTimeout(() => {
108
- setModified(true);
109
- }, 10);
110
- }
111
- }
105
+ setModified(true);
112
106
  }
113
107
  };
114
108
  $[6] = disableFormData;
115
109
  $[7] = dispatchField;
116
110
  $[8] = hasRows;
117
- $[9] = modified;
118
- $[10] = path;
119
- $[11] = setModified;
120
- $[12] = t4;
111
+ $[9] = path;
112
+ $[10] = setModified;
113
+ $[11] = t4;
121
114
  } else {
122
- t4 = $[12];
115
+ t4 = $[11];
123
116
  }
124
117
  const setValue = t4;
125
118
  let t5;
@@ -127,18 +120,18 @@ export const useField = options => {
127
120
  const t7 = processing || initializing;
128
121
  const t8 = field?.errorMessage;
129
122
  let t9;
130
- if ($[13] !== field?.errorPaths) {
123
+ if ($[12] !== field?.errorPaths) {
131
124
  t9 = field?.errorPaths || [];
132
- $[13] = field?.errorPaths;
133
- $[14] = t9;
125
+ $[12] = field?.errorPaths;
126
+ $[13] = t9;
134
127
  } else {
135
- t9 = $[14];
128
+ t9 = $[13];
136
129
  }
137
130
  const t10 = field?.rows;
138
131
  const t11 = field?.selectFilterOptions;
139
132
  const t12 = field?.valid;
140
133
  let t13;
141
- if ($[15] !== filterOptions || $[16] !== initialValue || $[17] !== initializing || $[18] !== path || $[19] !== processing || $[20] !== setValue || $[21] !== showError || $[22] !== submitted || $[23] !== t10 || $[24] !== t11 || $[25] !== t12 || $[26] !== t6 || $[27] !== t7 || $[28] !== t8 || $[29] !== t9 || $[30] !== value) {
134
+ if ($[14] !== filterOptions || $[15] !== initialValue || $[16] !== initializing || $[17] !== path || $[18] !== processing || $[19] !== setValue || $[20] !== showError || $[21] !== submitted || $[22] !== t10 || $[23] !== t11 || $[24] !== t12 || $[25] !== t6 || $[26] !== t7 || $[27] !== t8 || $[28] !== t9 || $[29] !== value) {
142
135
  t13 = {
143
136
  customComponents: t6,
144
137
  disabled: t7,
@@ -157,30 +150,30 @@ export const useField = options => {
157
150
  valid: t12,
158
151
  value
159
152
  };
160
- $[15] = filterOptions;
161
- $[16] = initialValue;
162
- $[17] = initializing;
163
- $[18] = path;
164
- $[19] = processing;
165
- $[20] = setValue;
166
- $[21] = showError;
167
- $[22] = submitted;
168
- $[23] = t10;
169
- $[24] = t11;
170
- $[25] = t12;
171
- $[26] = t6;
172
- $[27] = t7;
173
- $[28] = t8;
174
- $[29] = t9;
175
- $[30] = value;
176
- $[31] = t13;
153
+ $[14] = filterOptions;
154
+ $[15] = initialValue;
155
+ $[16] = initializing;
156
+ $[17] = path;
157
+ $[18] = processing;
158
+ $[19] = setValue;
159
+ $[20] = showError;
160
+ $[21] = submitted;
161
+ $[22] = t10;
162
+ $[23] = t11;
163
+ $[24] = t12;
164
+ $[25] = t6;
165
+ $[26] = t7;
166
+ $[27] = t8;
167
+ $[28] = t9;
168
+ $[29] = value;
169
+ $[30] = t13;
177
170
  } else {
178
- t13 = $[31];
171
+ t13 = $[30];
179
172
  }
180
173
  t5 = t13;
181
174
  const result = t5;
182
175
  let t14;
183
- if ($[32] !== collectionSlug || $[33] !== config || $[34] !== disableFormData || $[35] !== dispatchField || $[36] !== documentForm || $[37] !== field || $[38] !== getData || $[39] !== getDataByPath || $[40] !== getSiblingData || $[41] !== hasRows || $[42] !== id || $[43] !== operation || $[44] !== path || $[45] !== pathSegments || $[46] !== t || $[47] !== user || $[48] !== validate || $[49] !== value) {
176
+ if ($[31] !== collectionSlug || $[32] !== config || $[33] !== disableFormData || $[34] !== dispatchField || $[35] !== documentForm || $[36] !== field || $[37] !== getData || $[38] !== getDataByPath || $[39] !== getSiblingData || $[40] !== hasRows || $[41] !== id || $[42] !== operation || $[43] !== path || $[44] !== pathSegments || $[45] !== t || $[46] !== user || $[47] !== validate || $[48] !== value) {
184
177
  t14 = () => {
185
178
  const validateField = async () => {
186
179
  let valueToValidate = value;
@@ -239,48 +232,48 @@ export const useField = options => {
239
232
  };
240
233
  validateField();
241
234
  };
242
- $[32] = collectionSlug;
243
- $[33] = config;
244
- $[34] = disableFormData;
245
- $[35] = dispatchField;
246
- $[36] = documentForm;
247
- $[37] = field;
248
- $[38] = getData;
249
- $[39] = getDataByPath;
250
- $[40] = getSiblingData;
251
- $[41] = hasRows;
252
- $[42] = id;
253
- $[43] = operation;
254
- $[44] = path;
255
- $[45] = pathSegments;
256
- $[46] = t;
257
- $[47] = user;
258
- $[48] = validate;
259
- $[49] = value;
260
- $[50] = t14;
235
+ $[31] = collectionSlug;
236
+ $[32] = config;
237
+ $[33] = disableFormData;
238
+ $[34] = dispatchField;
239
+ $[35] = documentForm;
240
+ $[36] = field;
241
+ $[37] = getData;
242
+ $[38] = getDataByPath;
243
+ $[39] = getSiblingData;
244
+ $[40] = hasRows;
245
+ $[41] = id;
246
+ $[42] = operation;
247
+ $[43] = path;
248
+ $[44] = pathSegments;
249
+ $[45] = t;
250
+ $[46] = user;
251
+ $[47] = validate;
252
+ $[48] = value;
253
+ $[49] = t14;
261
254
  } else {
262
- t14 = $[50];
255
+ t14 = $[49];
263
256
  }
264
257
  const t15 = field?.rows;
265
258
  let t16;
266
- if ($[51] !== collectionSlug || $[52] !== disableFormData || $[53] !== dispatchField || $[54] !== getData || $[55] !== getDataByPath || $[56] !== getSiblingData || $[57] !== id || $[58] !== operation || $[59] !== path || $[60] !== t15 || $[61] !== user || $[62] !== validate || $[63] !== value) {
259
+ if ($[50] !== collectionSlug || $[51] !== disableFormData || $[52] !== dispatchField || $[53] !== getData || $[54] !== getDataByPath || $[55] !== getSiblingData || $[56] !== id || $[57] !== operation || $[58] !== path || $[59] !== t15 || $[60] !== user || $[61] !== validate || $[62] !== value) {
267
260
  t16 = [value, disableFormData, dispatchField, getData, getSiblingData, getDataByPath, id, operation, path, user, validate, t15, collectionSlug];
268
- $[51] = collectionSlug;
269
- $[52] = disableFormData;
270
- $[53] = dispatchField;
271
- $[54] = getData;
272
- $[55] = getDataByPath;
273
- $[56] = getSiblingData;
274
- $[57] = id;
275
- $[58] = operation;
276
- $[59] = path;
277
- $[60] = t15;
278
- $[61] = user;
279
- $[62] = validate;
280
- $[63] = value;
281
- $[64] = t16;
261
+ $[50] = collectionSlug;
262
+ $[51] = disableFormData;
263
+ $[52] = dispatchField;
264
+ $[53] = getData;
265
+ $[54] = getDataByPath;
266
+ $[55] = getSiblingData;
267
+ $[56] = id;
268
+ $[57] = operation;
269
+ $[58] = path;
270
+ $[59] = t15;
271
+ $[60] = user;
272
+ $[61] = validate;
273
+ $[62] = value;
274
+ $[63] = t16;
282
275
  } else {
283
- t16 = $[64];
276
+ t16 = $[63];
284
277
  }
285
278
  useThrottledEffect(t14, 150, t16);
286
279
  return result;