@payloadcms/ui 3.3.0 → 3.4.1-canary.2a8fa30

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/CodeEditor/CodeEditor.js +39 -32
  2. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  3. package/dist/elements/CodeEditor/types.d.ts +4 -0
  4. package/dist/elements/CodeEditor/types.d.ts.map +1 -1
  5. package/dist/elements/CodeEditor/types.js.map +1 -1
  6. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  7. package/dist/elements/CopyLocaleData/index.js +4 -3
  8. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  9. package/dist/elements/FieldSelect/index.js +2 -2
  10. package/dist/elements/FieldSelect/index.js.map +1 -1
  11. package/dist/elements/PublishButton/index.js +15 -18
  12. package/dist/elements/PublishButton/index.js.map +1 -1
  13. package/dist/elements/RelationshipTable/index.d.ts +2 -0
  14. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  15. package/dist/elements/RelationshipTable/index.js +35 -31
  16. package/dist/elements/RelationshipTable/index.js.map +1 -1
  17. package/dist/elements/Table/DefaultCell/index.js +2 -2
  18. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  19. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
  20. package/dist/elements/TableColumns/buildColumnState.js +5 -2
  21. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  22. package/dist/elements/WhereBuilder/reduceClientFields.d.ts.map +1 -1
  23. package/dist/elements/WhereBuilder/reduceClientFields.js +2 -2
  24. package/dist/elements/WhereBuilder/reduceClientFields.js.map +1 -1
  25. package/dist/exports/client/{CodeEditor-RZ32B2QF.js → CodeEditor-QIIK6FKF.js} +2 -2
  26. package/dist/exports/client/{chunk-CKHKQPOO.js → chunk-MFQ5YTBK.js} +6 -6
  27. package/dist/exports/client/chunk-MFQ5YTBK.js.map +8 -0
  28. package/dist/exports/client/index.d.ts +4 -0
  29. package/dist/exports/client/index.d.ts.map +1 -1
  30. package/dist/exports/client/index.js +10 -10
  31. package/dist/exports/client/index.js.map +4 -4
  32. package/dist/exports/shared/index.js +2 -2
  33. package/dist/exports/shared/index.js.map +3 -3
  34. package/dist/fields/Group/index.d.ts.map +1 -1
  35. package/dist/fields/Group/index.js +2 -1
  36. package/dist/fields/Group/index.js.map +1 -1
  37. package/dist/fields/Join/index.d.ts.map +1 -1
  38. package/dist/fields/Join/index.js +15 -3
  39. package/dist/fields/Join/index.js.map +1 -1
  40. package/dist/fields/Relationship/index.d.ts.map +1 -1
  41. package/dist/fields/Relationship/index.js +1 -1
  42. package/dist/fields/Relationship/index.js.map +1 -1
  43. package/dist/fields/Select/Input.d.ts +1 -0
  44. package/dist/fields/Select/Input.d.ts.map +1 -1
  45. package/dist/fields/Select/Input.js +41 -38
  46. package/dist/fields/Select/Input.js.map +1 -1
  47. package/dist/fields/Tabs/index.d.ts +15 -0
  48. package/dist/fields/Tabs/index.d.ts.map +1 -1
  49. package/dist/fields/Tabs/index.js +2 -2
  50. package/dist/fields/Tabs/index.js.map +1 -1
  51. package/dist/forms/Form/index.d.ts.map +1 -1
  52. package/dist/forms/Form/index.js +2 -1
  53. package/dist/forms/Form/index.js.map +1 -1
  54. package/dist/forms/RenderFields/index.js +2 -2
  55. package/dist/forms/RenderFields/index.js.map +1 -1
  56. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  57. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +5 -8
  58. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  59. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  60. package/dist/forms/fieldSchemasToFormState/renderField.js +4 -0
  61. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  62. package/dist/providers/Locale/index.d.ts +15 -1
  63. package/dist/providers/Locale/index.d.ts.map +1 -1
  64. package/dist/providers/Locale/index.js +50 -119
  65. package/dist/providers/Locale/index.js.map +1 -1
  66. package/dist/providers/SearchParams/index.d.ts.map +1 -1
  67. package/dist/providers/SearchParams/index.js +25 -68
  68. package/dist/providers/SearchParams/index.js.map +1 -1
  69. package/dist/styles.css +1 -1
  70. package/dist/utilities/buildTableState.d.ts.map +1 -1
  71. package/dist/utilities/buildTableState.js.map +1 -1
  72. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  73. package/dist/utilities/copyDataFromLocale.js +11 -4
  74. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  75. package/dist/utilities/formatFields.d.ts.map +1 -1
  76. package/dist/utilities/formatFields.js +2 -2
  77. package/dist/utilities/formatFields.js.map +1 -1
  78. package/dist/utilities/groupNavItems.d.ts.map +1 -1
  79. package/dist/utilities/groupNavItems.js +6 -6
  80. package/dist/utilities/groupNavItems.js.map +1 -1
  81. package/dist/utilities/renderTable.d.ts.map +1 -1
  82. package/dist/utilities/renderTable.js +4 -0
  83. package/dist/utilities/renderTable.js.map +1 -1
  84. package/dist/views/Edit/index.js +1 -1
  85. package/dist/views/Edit/index.js.map +1 -1
  86. package/package.json +4 -4
  87. package/dist/exports/client/chunk-CKHKQPOO.js.map +0 -8
  88. /package/dist/exports/client/{CodeEditor-RZ32B2QF.js.map → CodeEditor-QIIK6FKF.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"buildTableState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildTableState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EACZ,WAAW,EACX,aAAa,EAEd,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AAKxE,KAAK,4BAA4B,GAAG;IAClC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,WAAW,EAAE,eAAe,CAAA;IAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,4BAA4B,CAAA;AAE7F,eAAO,MAAM,sBAAsB,SAC3B,mBAAmB,KACxB,OAAO,CAAC,qBAAqB,CAqB/B,CAAA;AAED,eAAO,MAAM,eAAe,SACpB,mBAAmB,KACxB,OAAO,CAAC,4BAA4B,CA6KtC,CAAA"}
1
+ {"version":3,"file":"buildTableState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildTableState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EACZ,WAAW,EACX,aAAa,EAEd,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AAKxE,KAAK,4BAA4B,GAAG;IAClC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,WAAW,EAAE,eAAe,CAAA;IAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,4BAA4B,CAAA;AAE7F,eAAO,MAAM,sBAAsB,SAC3B,mBAAmB,KACxB,OAAO,CAAC,qBAAqB,CAqB/B,CAAA;AAED,eAAO,MAAM,eAAe,SACpB,mBAAmB,KACxB,OAAO,CAAC,4BAA4B,CA8KtC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildTableState.js","names":["dequal","formatErrors","getClientConfig","renderFilters","renderTable","buildTableStateHandler","args","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","docs","docsFromArgs","enableRowSelections","query","renderRowTypes","i18n","config","user","tableAppearance","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","length","clientConfig","importMap","collectionConfig","clientCollectionConfig","slug","preferencesKey","preferencesResult","where","and","key","equals","id","then","value","newPrefs","preferencesArgs","data","update","create","fields","parseInt","undefined","page","sort","columnState","Table","columnPreferences","useAsTitle","renderedFilters","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n ErrorResult,\n PaginatedDocs,\n SanitizedCollectionConfig,\n} from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { formatErrors } from 'payload'\n\nimport type { Column } from '../elements/Table/index.js'\nimport type { ListPreferences } from '../elements/TableColumns/index.js'\n\nimport { getClientConfig } from './getClientConfig.js'\nimport { renderFilters, renderTable } from './renderTable.js'\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: ListPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateResult> => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns,\n docs: docsFromArgs,\n enableRowSelections,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n\n // get prefs, then set update them using the columns that we just received\n const preferencesKey = `${collectionSlug}-list`\n\n const preferencesResult = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n pagination: false,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0] ?? { id: null, value: {} })\n\n let newPrefs = preferencesResult.value\n\n if (!preferencesResult.id || !dequal(columns, preferencesResult?.columns)) {\n const preferencesArgs = {\n collection: 'payload-preferences',\n data: {\n key: preferencesKey,\n user: {\n collection: user.collection,\n value: user.id,\n },\n value: {\n ...(preferencesResult?.value || {}),\n columns,\n },\n },\n depth: 0,\n req,\n }\n\n if (preferencesResult.id) {\n newPrefs = await payload\n .update({\n ...preferencesArgs,\n id: preferencesResult.id,\n })\n ?.then((res) => res.value as ListPreferences)\n } else {\n newPrefs = await payload.create(preferencesArgs)?.then((res) => res.value as ListPreferences)\n }\n }\n\n const fields = collectionConfig.fields\n\n let docs = docsFromArgs\n let data: PaginatedDocs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!docs || query) {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: query?.limit ? parseInt(query.limit, 10) : undefined,\n page: query?.page ? parseInt(query.page, 10) : undefined,\n sort: query?.sort,\n where: query?.where,\n })\n\n docs = data.docs\n }\n\n const { columnState, Table } = renderTable({\n collectionConfig: clientCollectionConfig,\n columnPreferences: undefined, // TODO, might not be needed\n columns,\n docs,\n enableRowSelections,\n fields,\n i18n: req.i18n,\n payload,\n renderRowTypes,\n tableAppearance,\n useAsTitle: collectionConfig.admin.useAsTitle,\n })\n\n const renderedFilters = renderFilters(fields, req.payload.importMap)\n\n return {\n data,\n preferences: newPrefs,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildTableState.js","names":["dequal","formatErrors","getClientConfig","renderFilters","renderTable","buildTableStateHandler","args","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","docs","docsFromArgs","enableRowSelections","query","renderRowTypes","i18n","config","user","tableAppearance","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","length","clientConfig","importMap","collectionConfig","clientCollectionConfig","slug","preferencesKey","preferencesResult","where","and","key","equals","id","then","value","newPrefs","preferencesArgs","data","update","create","fields","parseInt","undefined","page","sort","columnState","Table","columnPreferences","useAsTitle","renderedFilters","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n ErrorResult,\n PaginatedDocs,\n SanitizedCollectionConfig,\n} from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { formatErrors } from 'payload'\n\nimport type { Column } from '../elements/Table/index.js'\nimport type { ListPreferences } from '../elements/TableColumns/index.js'\n\nimport { getClientConfig } from './getClientConfig.js'\nimport { renderFilters, renderTable } from './renderTable.js'\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: ListPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateResult> => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns,\n docs: docsFromArgs,\n enableRowSelections,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n\n // get prefs, then set update them using the columns that we just received\n const preferencesKey = `${collectionSlug}-list`\n\n const preferencesResult = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n pagination: false,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0] ?? { id: null, value: {} })\n\n let newPrefs = preferencesResult.value\n\n if (!preferencesResult.id || !dequal(columns, preferencesResult?.columns)) {\n const preferencesArgs = {\n collection: 'payload-preferences',\n data: {\n key: preferencesKey,\n user: {\n collection: user.collection,\n value: user.id,\n },\n value: {\n ...(preferencesResult?.value || {}),\n columns,\n },\n },\n depth: 0,\n req,\n }\n\n if (preferencesResult.id) {\n newPrefs = await payload\n .update({\n ...preferencesArgs,\n id: preferencesResult.id,\n })\n ?.then((res) => res.value as ListPreferences)\n } else {\n newPrefs = await payload.create(preferencesArgs)?.then((res) => res.value as ListPreferences)\n }\n }\n\n const fields = collectionConfig.fields\n\n let docs = docsFromArgs\n let data: PaginatedDocs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!docs || query) {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: query?.limit ? parseInt(query.limit, 10) : undefined,\n page: query?.page ? parseInt(query.page, 10) : undefined,\n sort: query?.sort,\n where: query?.where,\n })\n\n docs = data.docs\n }\n\n const { columnState, Table } = renderTable({\n collectionConfig: clientCollectionConfig,\n columnPreferences: undefined, // TODO, might not be needed\n columns,\n docs,\n enableRowSelections,\n fields,\n i18n: req.i18n,\n payload,\n renderRowTypes,\n tableAppearance,\n useAsTitle: collectionConfig.admin.useAsTitle,\n })\n\n const renderedFilters = renderFilters(fields, req.payload.importMap)\n\n return {\n data,\n preferences: newPrefs,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"AASA,SAASA,MAAM,QAAQ;AACvB,SAASC,YAAY,QAAQ;AAK7B,SAASC,eAAe,QAAQ;AAChC,SAASC,aAAa,EAAEC,WAAW,QAAQ;AA0B3C,OAAO,MAAMC,sBAAA,GAAyB,MACpCC,IAAA;EAEA,MAAM;IAAEC;EAAG,CAAE,GAAGD,IAAA;EAEhB,IAAI;IACF,MAAME,GAAA,GAAM,MAAMC,eAAA,CAAgBH,IAAA;IAClC,OAAOE,GAAA;EACT,EAAE,OAAOE,GAAA,EAAK;IACZH,GAAA,CAAII,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;MAAEH,GAAA;MAAKI,GAAA,EAAK;IAAyC;IAE9E,IAAIJ,GAAA,CAAIK,OAAO,KAAK,8CAA8C;MAChE,OAAO;QACLA,OAAA,EAASL,GAAA,CAAIK;MACf;IACF;IAEA,IAAIL,GAAA,CAAIK,OAAO,KAAK,gBAAgB;MAClC,OAAO;IACT;IAEA,OAAOd,YAAA,CAAaS,GAAA;EACtB;AACF;AAEA,OAAO,MAAMD,eAAA,GAAkB,MAC7BH,IAAA;EAEA,MAAM;IACJU,cAAc;IACdC,OAAO;IACPC,IAAA,EAAMC,YAAY;IAClBC,mBAAmB;IACnBC,KAAK;IACLC,cAAc;IACdf,GAAG;IACHA,GAAA,EAAK;MACHgB,IAAI;MACJZ,OAAO;MACPA,OAAA,EAAS;QAAEa;MAAM,CAAE;MACnBC;IAAI,CACL;IACDC;EAAe,CAChB,GAAGpB,IAAA;EAEJ,MAAMqB,gBAAA,GAAmBF,IAAA,EAAMG,UAAA;EAE/B,MAAMC,aAAA,GAAgBL,MAAA,CAAOM,KAAK,CAACL,IAAI;EAEvC;EACA,IAAIE,gBAAA,EAAkB;IACpB,MAAMI,mBAAA,GAAsBpB,OAAA,CAAQqB,WAAW,CAACL,gBAAA,CAAiB,CAACH,MAAM,CAACS,MAAM,EAAEH,KAAA;IAEjF;IACA,IAAIC,mBAAA,EAAqB;MACvB,MAAMG,cAAA,GAAiB,MAAMH,mBAAA,CAAoB;QAAExB;MAAI;MAEvD,IAAI,CAAC2B,cAAA,EAAgB;QACnB,MAAM,IAAIC,KAAA,CAAM;MAClB;MAEA;IACF,OAAO,IAAIN,aAAA,KAAkBF,gBAAA,EAAkB;MAC7C,MAAM,IAAIQ,KAAA,CAAM;IAClB;EACF,OAAO;IACL,MAAMC,QAAA,GAAW,MAAMzB,OAAA,CAAQ0B,IAAI,CAAC;MAClCT,UAAA,EAAYC,aAAA;MACZS,KAAA,EAAO;MACPC,KAAA,EAAO;MACPC,UAAA,EAAY;IACd;IAEA;IACA,IAAIJ,QAAA,CAASlB,IAAI,CAACuB,MAAM,EAAE;MACxB,MAAM,IAAIN,KAAA,CAAM;IAClB;EACF;EAEA,MAAMO,YAAA,GAAexC,eAAA,CAAgB;IACnCsB,MAAA;IACAD,IAAA;IACAoB,SAAA,EAAWhC,OAAA,CAAQgC;EACrB;EAEA,IAAIC,gBAAA;EACJ,IAAIC,sBAAA;EAEJ,IAAItC,GAAA,CAAII,OAAO,CAACqB,WAAW,CAAChB,cAAA,CAAe,EAAE;IAC3C4B,gBAAA,GAAmBrC,GAAA,CAAII,OAAO,CAACqB,WAAW,CAAChB,cAAA,CAAe,CAACQ,MAAM;IACjEqB,sBAAA,GAAyBH,YAAA,CAAaV,WAAW,CAACK,IAAI,CACnDT,UAAA,IAAeA,UAAA,CAAWkB,IAAI,KAAK9B,cAAA;EAExC;EAEA;EACA,MAAM+B,cAAA,GAAiB,GAAG/B,cAAA,OAAqB;EAE/C,MAAMgC,iBAAA,GAAoB,MAAMrC,OAAA,CAC7B0B,IAAI,CAAC;IACJT,UAAA,EAAY;IACZU,KAAA,EAAO;IACPC,KAAA,EAAO;IACPC,UAAA,EAAY;IACZS,KAAA,EAAO;MACLC,GAAA,EAAK,CACH;QACEC,GAAA,EAAK;UACHC,MAAA,EAAQL;QACV;MACF,GACA;QACE,mBAAmB;UACjBK,MAAA,EAAQ3B,IAAA,CAAKG;QACf;MACF,GACA;QACE,cAAc;UACZwB,MAAA,EAAQ3B,IAAA,CAAK4B;QACf;MACF;IAEJ;EACF,GACCC,IAAI,CAAE9C,GAAA,IAAQA,GAAA,CAAIU,IAAI,CAAC,EAAE,IAAI;IAAEmC,EAAA,EAAI;IAAME,KAAA,EAAO,CAAC;EAAE;EAEtD,IAAIC,QAAA,GAAWR,iBAAA,CAAkBO,KAAK;EAEtC,IAAI,CAACP,iBAAA,CAAkBK,EAAE,IAAI,CAACrD,MAAA,CAAOiB,OAAA,EAAS+B,iBAAA,EAAmB/B,OAAA,GAAU;IACzE,MAAMwC,eAAA,GAAkB;MACtB7B,UAAA,EAAY;MACZ8B,IAAA,EAAM;QACJP,GAAA,EAAKJ,cAAA;QACLtB,IAAA,EAAM;UACJG,UAAA,EAAYH,IAAA,CAAKG,UAAU;UAC3B2B,KAAA,EAAO9B,IAAA,CAAK4B;QACd;QACAE,KAAA,EAAO;UACL,IAAIP,iBAAA,EAAmBO,KAAA,IAAS,CAAC,CAAC;UAClCtC;QACF;MACF;MACAqB,KAAA,EAAO;MACP/B;IACF;IAEA,IAAIyC,iBAAA,CAAkBK,EAAE,EAAE;MACxBG,QAAA,GAAW,MAAM7C,OAAA,CACdgD,MAAM,CAAC;QACN,GAAGF,eAAe;QAClBJ,EAAA,EAAIL,iBAAA,CAAkBK;MACxB,IACEC,IAAA,CAAM9C,GAAA,IAAQA,GAAA,CAAI+C,KAAK;IAC7B,OAAO;MACLC,QAAA,GAAW,MAAM7C,OAAA,CAAQiD,MAAM,CAACH,eAAA,GAAkBH,IAAA,CAAM9C,GAAA,IAAQA,GAAA,CAAI+C,KAAK;IAC3E;EACF;EAEA,MAAMM,MAAA,GAASjB,gBAAA,CAAiBiB,MAAM;EAEtC,IAAI3C,IAAA,GAAOC,YAAA;EACX,IAAIuC,IAAA;EAEJ;EAEA,IAAI,CAACxC,IAAA,IAAQG,KAAA,EAAO;IAClBqC,IAAA,GAAO,MAAM/C,OAAA,CAAQ0B,IAAI,CAAC;MACxBT,UAAA,EAAYZ,cAAA;MACZsB,KAAA,EAAO;MACPC,KAAA,EAAOlB,KAAA,EAAOkB,KAAA,GAAQuB,QAAA,CAASzC,KAAA,CAAMkB,KAAK,EAAE,MAAMwB,SAAA;MAClDC,IAAA,EAAM3C,KAAA,EAAO2C,IAAA,GAAOF,QAAA,CAASzC,KAAA,CAAM2C,IAAI,EAAE,MAAMD,SAAA;MAC/CE,IAAA,EAAM5C,KAAA,EAAO4C,IAAA;MACbhB,KAAA,EAAO5B,KAAA,EAAO4B;IAChB;IAEA/B,IAAA,GAAOwC,IAAA,CAAKxC,IAAI;EAClB;EAEA,MAAM;IAAEgD,WAAW;IAAEC;EAAK,CAAE,GAAG/D,WAAA,CAAY;IACzCwC,gBAAA,EAAkBC,sBAAA;IAClBuB,iBAAA,EAAmBL,SAAA;IACnB9C,OAAA;IACAC,IAAA;IACAE,mBAAA;IACAyC,MAAA;IACAtC,IAAA,EAAMhB,GAAA,CAAIgB,IAAI;IACdZ,OAAA;IACAW,cAAA;IACAI,eAAA;IACA2C,UAAA,EAAYzB,gBAAA,CAAiBd,KAAK,CAACuC;EACrC;EAEA,MAAMC,eAAA,GAAkBnE,aAAA,CAAc0D,MAAA,EAAQtD,GAAA,CAAII,OAAO,CAACgC,SAAS;EAEnE,OAAO;IACLe,IAAA;IACAa,WAAA,EAAaf,QAAA;IACbc,eAAA;IACAE,KAAA,EAAON,WAAA;IACPC;EACF;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"copyDataFromLocale.d.ts","sourceRoot":"","sources":["../../src/utilities/copyDataFromLocale.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAInB,KAAK,cAAc,EACpB,MAAM,SAAS,CAAA;AAGhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,cAAc,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAkHD,eAAO,MAAM,yBAAyB,SAAgB,sBAAsB,0EAkB3E,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAgB,sBAAsB,0CAyGpE,CAAA"}
1
+ {"version":3,"file":"copyDataFromLocale.d.ts","sourceRoot":"","sources":["../../src/utilities/copyDataFromLocale.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAInB,KAAK,cAAc,EACpB,MAAM,SAAS,CAAA;AAGhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,cAAc,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAkHD,eAAO,MAAM,yBAAyB,SAAgB,sBAAsB,0EAiB3E,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAgB,sBAAsB,0CAgHpE,CAAA"}
@@ -99,8 +99,7 @@ export const copyDataFromLocaleHandler = async args => {
99
99
  req
100
100
  } = args;
101
101
  try {
102
- const res = await copyDataFromLocale(args);
103
- return res;
102
+ return await copyDataFromLocale(args);
104
103
  } catch (err) {
105
104
  req.payload.logger.error({
106
105
  err,
@@ -127,6 +126,7 @@ export const copyDataFromLocale = async args => {
127
126
  },
128
127
  user
129
128
  },
129
+ req,
130
130
  toLocale
131
131
  } = args;
132
132
  const incomingUserSlug = user?.collection;
@@ -149,23 +149,29 @@ export const copyDataFromLocale = async args => {
149
149
  }
150
150
  const [fromLocaleData, toLocaleData] = await Promise.allSettled([globalSlug ? payload.findGlobal({
151
151
  slug: globalSlug,
152
+ depth: 0,
152
153
  locale: fromLocale,
153
154
  overrideAccess: false,
154
155
  user
155
156
  }) : payload.findByID({
156
157
  id: docID,
157
158
  collection: collectionSlug,
159
+ depth: 0,
160
+ joins: false,
158
161
  locale: fromLocale,
159
162
  overrideAccess: false,
160
163
  user
161
164
  }), globalSlug ? payload.findGlobal({
162
165
  slug: globalSlug,
166
+ depth: 0,
163
167
  locale: toLocale,
164
168
  overrideAccess: false,
165
169
  user
166
170
  }) : payload.findByID({
167
171
  id: docID,
168
172
  collection: collectionSlug,
173
+ depth: 0,
174
+ joins: false,
169
175
  locale: toLocale,
170
176
  overrideAccess: false,
171
177
  user
@@ -176,11 +182,12 @@ export const copyDataFromLocale = async args => {
176
182
  if (toLocaleData.status === 'rejected') {
177
183
  throw new Error(`Error fetching data from locale "${toLocale}"`);
178
184
  }
179
- const newToLocaleData = globalSlug ? await payload.updateGlobal({
185
+ return globalSlug ? await payload.updateGlobal({
180
186
  slug: globalSlug,
181
187
  data: overrideData ? fromLocaleData.value : mergeData(fromLocaleData.value, toLocaleData.value, globals[globalSlug].config.fields),
182
188
  locale: toLocale,
183
189
  overrideAccess: false,
190
+ req,
184
191
  user
185
192
  }) : await payload.update({
186
193
  id: docID,
@@ -188,8 +195,8 @@ export const copyDataFromLocale = async args => {
188
195
  data: overrideData ? fromLocaleData.value : mergeData(fromLocaleData.value, toLocaleData.value, collections[collectionSlug].config.fields),
189
196
  locale: toLocale,
190
197
  overrideAccess: false,
198
+ req,
191
199
  user
192
200
  });
193
- return newToLocaleData;
194
201
  };
195
202
  //# sourceMappingURL=copyDataFromLocale.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"copyDataFromLocale.js","names":["formatErrors","fieldAffectsData","tabHasName","iterateFields","fields","fromLocaleData","toLocaleData","map","field","type","name","undefined","includes","localized","item","index","blockData","blockFields","blocks","find","slug","blockType","length","tabs","tab","mergeData","copyDataFromLocaleHandler","args","req","res","copyDataFromLocale","err","payload","logger","error","msg","fromLocale","toLocale","message","collectionSlug","docID","globalSlug","overrideData","collections","globals","user","incomingUserSlug","collection","adminUserSlug","config","admin","adminAccessFunction","access","canAccessAdmin","Error","Promise","allSettled","findGlobal","locale","overrideAccess","findByID","id","status","newToLocaleData","updateGlobal","data","value","update"],"sources":["../../src/utilities/copyDataFromLocale.ts"],"sourcesContent":["import {\n type CollectionSlug,\n type Data,\n type Field,\n formatErrors,\n type PayloadRequest,\n} from 'payload'\nimport { fieldAffectsData, tabHasName } from 'payload/shared'\n\nexport type CopyDataFromLocaleArgs = {\n collectionSlug?: CollectionSlug\n docID?: number | string\n fromLocale: string\n globalSlug?: string\n overrideData?: boolean\n req: PayloadRequest\n toLocale: string\n}\n\nfunction iterateFields(fields: Field[], fromLocaleData: Data, toLocaleData: Data): void {\n fields.map((field) => {\n if (fieldAffectsData(field)) {\n switch (field.type) {\n case 'array':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value but is not localized, loop over the data from target\n if (!field.localized && field.name in toLocaleData) {\n toLocaleData[field.name].map((item: Data, index: number) => {\n if (fromLocaleData[field.name]?.[index]) {\n iterateFields(field.fields, fromLocaleData[field.name][index], item)\n }\n })\n }\n break\n\n case 'blocks':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value but is not localized, loop over the data from target\n if (!field.localized && field.name in toLocaleData) {\n toLocaleData[field.name].map((blockData: Data, index: number) => {\n const blockFields = field.blocks.find(\n ({ slug }) => slug === blockData.blockType,\n )?.fields\n\n if (blockFields?.length) {\n iterateFields(blockFields, fromLocaleData[field.name][index], blockData)\n }\n })\n }\n break\n\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload':\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n }\n break\n\n case 'group': {\n if (field.name in toLocaleData && fromLocaleData?.[field.name] !== undefined) {\n iterateFields(field.fields, fromLocaleData[field.name], toLocaleData[field.name])\n }\n break\n }\n }\n } else {\n switch (field.type) {\n case 'collapsible':\n case 'row':\n iterateFields(field.fields, fromLocaleData, toLocaleData)\n break\n\n case 'tabs':\n field.tabs.map((tab) => {\n if (tabHasName(tab)) {\n if (tab.name in toLocaleData && fromLocaleData?.[tab.name] !== undefined) {\n iterateFields(tab.fields, fromLocaleData[tab.name], toLocaleData[tab.name])\n }\n } else {\n iterateFields(tab.fields, fromLocaleData, toLocaleData)\n }\n })\n break\n }\n }\n })\n}\n\nfunction mergeData(fromLocaleData: Data, toLocaleData: Data, fields: Field[]): Data {\n iterateFields(fields, fromLocaleData, toLocaleData)\n\n return toLocaleData\n}\n\nexport const copyDataFromLocaleHandler = async (args: CopyDataFromLocaleArgs) => {\n const { req } = args\n\n try {\n const res = await copyDataFromLocale(args)\n return res\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `There was an error copying data from \"${args.fromLocale}\" to \"${args.toLocale}\"`,\n })\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const copyDataFromLocale = async (args: CopyDataFromLocaleArgs) => {\n const {\n collectionSlug,\n docID,\n fromLocale,\n globalSlug,\n overrideData = false,\n req: {\n payload,\n payload: { collections, globals },\n user,\n },\n toLocale,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = payload.config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req: args.req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n }\n\n const [fromLocaleData, toLocaleData] = await Promise.allSettled([\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n ])\n\n if (fromLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${fromLocale}\"`)\n }\n\n if (toLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${toLocale}\"`)\n }\n\n const newToLocaleData = globalSlug\n ? await payload.updateGlobal({\n slug: globalSlug,\n data: overrideData\n ? fromLocaleData.value\n : mergeData(fromLocaleData.value, toLocaleData.value, globals[globalSlug].config.fields),\n locale: toLocale,\n overrideAccess: false,\n user,\n })\n : await payload.update({\n id: docID,\n collection: collectionSlug,\n data: overrideData\n ? fromLocaleData.value\n : mergeData(\n fromLocaleData.value,\n toLocaleData.value,\n collections[collectionSlug].config.fields,\n ),\n locale: toLocale,\n overrideAccess: false,\n user,\n })\n\n return newToLocaleData\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"copyDataFromLocale.js","names":["formatErrors","fieldAffectsData","tabHasName","iterateFields","fields","fromLocaleData","toLocaleData","map","field","type","name","undefined","includes","localized","item","index","blockData","blockFields","blocks","find","slug","blockType","length","tabs","tab","mergeData","copyDataFromLocaleHandler","args","req","copyDataFromLocale","err","payload","logger","error","msg","fromLocale","toLocale","message","collectionSlug","docID","globalSlug","overrideData","collections","globals","user","incomingUserSlug","collection","adminUserSlug","config","admin","adminAccessFunction","access","canAccessAdmin","Error","Promise","allSettled","findGlobal","depth","locale","overrideAccess","findByID","id","joins","status","updateGlobal","data","value","update"],"sources":["../../src/utilities/copyDataFromLocale.ts"],"sourcesContent":["import {\n type CollectionSlug,\n type Data,\n type Field,\n formatErrors,\n type PayloadRequest,\n} from 'payload'\nimport { fieldAffectsData, tabHasName } from 'payload/shared'\n\nexport type CopyDataFromLocaleArgs = {\n collectionSlug?: CollectionSlug\n docID?: number | string\n fromLocale: string\n globalSlug?: string\n overrideData?: boolean\n req: PayloadRequest\n toLocale: string\n}\n\nfunction iterateFields(fields: Field[], fromLocaleData: Data, toLocaleData: Data): void {\n fields.map((field) => {\n if (fieldAffectsData(field)) {\n switch (field.type) {\n case 'array':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value but is not localized, loop over the data from target\n if (!field.localized && field.name in toLocaleData) {\n toLocaleData[field.name].map((item: Data, index: number) => {\n if (fromLocaleData[field.name]?.[index]) {\n iterateFields(field.fields, fromLocaleData[field.name][index], item)\n }\n })\n }\n break\n\n case 'blocks':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value but is not localized, loop over the data from target\n if (!field.localized && field.name in toLocaleData) {\n toLocaleData[field.name].map((blockData: Data, index: number) => {\n const blockFields = field.blocks.find(\n ({ slug }) => slug === blockData.blockType,\n )?.fields\n\n if (blockFields?.length) {\n iterateFields(blockFields, fromLocaleData[field.name][index], blockData)\n }\n })\n }\n break\n\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload':\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n }\n break\n\n case 'group': {\n if (field.name in toLocaleData && fromLocaleData?.[field.name] !== undefined) {\n iterateFields(field.fields, fromLocaleData[field.name], toLocaleData[field.name])\n }\n break\n }\n }\n } else {\n switch (field.type) {\n case 'collapsible':\n case 'row':\n iterateFields(field.fields, fromLocaleData, toLocaleData)\n break\n\n case 'tabs':\n field.tabs.map((tab) => {\n if (tabHasName(tab)) {\n if (tab.name in toLocaleData && fromLocaleData?.[tab.name] !== undefined) {\n iterateFields(tab.fields, fromLocaleData[tab.name], toLocaleData[tab.name])\n }\n } else {\n iterateFields(tab.fields, fromLocaleData, toLocaleData)\n }\n })\n break\n }\n }\n })\n}\n\nfunction mergeData(fromLocaleData: Data, toLocaleData: Data, fields: Field[]): Data {\n iterateFields(fields, fromLocaleData, toLocaleData)\n\n return toLocaleData\n}\n\nexport const copyDataFromLocaleHandler = async (args: CopyDataFromLocaleArgs) => {\n const { req } = args\n\n try {\n return await copyDataFromLocale(args)\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `There was an error copying data from \"${args.fromLocale}\" to \"${args.toLocale}\"`,\n })\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const copyDataFromLocale = async (args: CopyDataFromLocaleArgs) => {\n const {\n collectionSlug,\n docID,\n fromLocale,\n globalSlug,\n overrideData = false,\n req: {\n payload,\n payload: { collections, globals },\n user,\n },\n req,\n toLocale,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = payload.config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req: args.req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n }\n\n const [fromLocaleData, toLocaleData] = await Promise.allSettled([\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n depth: 0,\n joins: false,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n depth: 0,\n joins: false,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n ])\n\n if (fromLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${fromLocale}\"`)\n }\n\n if (toLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${toLocale}\"`)\n }\n\n return globalSlug\n ? await payload.updateGlobal({\n slug: globalSlug,\n data: overrideData\n ? fromLocaleData.value\n : mergeData(fromLocaleData.value, toLocaleData.value, globals[globalSlug].config.fields),\n locale: toLocale,\n overrideAccess: false,\n req,\n user,\n })\n : await payload.update({\n id: docID,\n collection: collectionSlug,\n data: overrideData\n ? fromLocaleData.value\n : mergeData(\n fromLocaleData.value,\n toLocaleData.value,\n collections[collectionSlug].config.fields,\n ),\n locale: toLocale,\n overrideAccess: false,\n req,\n user,\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"formatFields.d.ts","sourceRoot":"","sources":["../../src/utilities/formatFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIpC,eAAO,MAAM,YAAY,WAAY,KAAK,EAAE,cAAc,OAAO,KAAG,KAAK,EACuB,CAAA"}
1
+ {"version":3,"file":"formatFields.d.ts","sourceRoot":"","sources":["../../src/utilities/formatFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIpC,eAAO,MAAM,YAAY,WAAY,KAAK,EAAE,cAAc,OAAO,KAAG,KAAK,EACqB,CAAA"}
@@ -1,3 +1,3 @@
1
- import { fieldAffectsData } from 'payload/shared';
2
- export const formatFields = (fields, isEditing) => isEditing ? fields.filter(field => !fieldAffectsData(field) || field.name !== 'id') : fields;
1
+ import { fieldAffectsData, fieldIsID } from 'payload/shared';
2
+ export const formatFields = (fields, isEditing) => isEditing ? fields.filter(field => !fieldAffectsData(field) || !fieldIsID(field)) : fields;
3
3
  //# sourceMappingURL=formatFields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatFields.js","names":["fieldAffectsData","formatFields","fields","isEditing","filter","field","name"],"sources":["../../src/utilities/formatFields.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport { fieldAffectsData } from 'payload/shared'\n\nexport const formatFields = (fields: Field[], isEditing?: boolean): Field[] =>\n isEditing ? fields.filter((field) => !fieldAffectsData(field) || field.name !== 'id') : fields\n"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ;AAEjC,OAAO,MAAMC,YAAA,GAAeA,CAACC,MAAA,EAAiBC,SAAA,KAC5CA,SAAA,GAAYD,MAAA,CAAOE,MAAM,CAAEC,KAAA,IAAU,CAACL,gBAAA,CAAiBK,KAAA,KAAUA,KAAA,CAAMC,IAAI,KAAK,QAAQJ,MAAA","ignoreList":[]}
1
+ {"version":3,"file":"formatFields.js","names":["fieldAffectsData","fieldIsID","formatFields","fields","isEditing","filter","field"],"sources":["../../src/utilities/formatFields.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport { fieldAffectsData, fieldIsID } from 'payload/shared'\n\nexport const formatFields = (fields: Field[], isEditing?: boolean): Field[] =>\n isEditing ? fields.filter((field) => !fieldAffectsData(field) || !fieldIsID(field)) : fields\n"],"mappings":"AAEA,SAASA,gBAAgB,EAAEC,SAAS,QAAQ;AAE5C,OAAO,MAAMC,YAAA,GAAeA,CAACC,MAAA,EAAiBC,SAAA,KAC5CA,SAAA,GAAYD,MAAA,CAAOE,MAAM,CAAEC,KAAA,IAAU,CAACN,gBAAA,CAAiBM,KAAA,KAAU,CAACL,SAAA,CAAUK,KAAA,KAAUH,MAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"groupNavItems.d.ts","sourceRoot":"","sources":["../../src/utilities/groupNavItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,oBAAY,UAAU;IACpB,UAAU,gBAAgB;IAC1B,MAAM,YAAY;CACnB;AAED,MAAM,MAAM,aAAa,GACrB;IACE,MAAM,EAAE,yBAAyB,CAAA;IACjC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAA;CAC5B,GACD;IACE,MAAM,EAAE,qBAAqB,CAAA;IAC7B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAA;CACxB,CAAA;AAEL,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE;QACR,KAAK,EAAE,WAAW,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,UAAU,CAAA;KACjB,EAAE,CAAA;IACH,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,oBAAoB,EACjC,IAAI,EAAE,UAAU,GACf,YAAY,EAAE,CA4DhB"}
1
+ {"version":3,"file":"groupNavItems.d.ts","sourceRoot":"","sources":["../../src/utilities/groupNavItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,oBAAY,UAAU;IACpB,UAAU,gBAAgB;IAC1B,MAAM,YAAY;CACnB;AAED,MAAM,MAAM,aAAa,GACrB;IACE,MAAM,EAAE,yBAAyB,CAAA;IACjC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAA;CAC5B,GACD;IACE,MAAM,EAAE,qBAAqB,CAAA;IAC7B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAA;CACxB,CAAA;AAEL,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE;QACR,KAAK,EAAE,WAAW,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,UAAU,CAAA;KACjB,EAAE,CAAA;IACH,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,oBAAoB,EACjC,IAAI,EAAE,UAAU,GACf,YAAY,EAAE,CA0DhB"}
@@ -8,6 +8,10 @@ export function groupNavItems(entities, permissions, i18n) {
8
8
  const result = entities.reduce((groups, entityToGroup) => {
9
9
  if (permissions?.[entityToGroup.type.toLowerCase()]?.[entityToGroup.entity.slug]?.read) {
10
10
  const translatedGroup = getTranslation(entityToGroup.entity.admin.group, i18n);
11
+ const labelOrFunction = 'labels' in entityToGroup.entity ? entityToGroup.entity.labels.plural : entityToGroup.entity.label;
12
+ const label = typeof labelOrFunction === 'function' ? labelOrFunction({
13
+ t: i18n.t
14
+ }) : labelOrFunction;
11
15
  if (entityToGroup.entity.admin.group) {
12
16
  const existingGroup = groups.find(group => getTranslation(group.label, i18n) === translatedGroup);
13
17
  let matchedGroup = existingGroup;
@@ -21,9 +25,7 @@ export function groupNavItems(entities, permissions, i18n) {
21
25
  matchedGroup.entities.push({
22
26
  slug: entityToGroup.entity.slug,
23
27
  type: entityToGroup.type,
24
- label: 'labels' in entityToGroup.entity ? typeof entityToGroup.entity.labels.plural === 'function' ? entityToGroup.entity.labels.plural({
25
- t: i18n.t
26
- }) : entityToGroup.entity.labels.plural : entityToGroup.entity.label
28
+ label
27
29
  });
28
30
  } else {
29
31
  const defaultGroup = groups.find(group => {
@@ -32,9 +34,7 @@ export function groupNavItems(entities, permissions, i18n) {
32
34
  defaultGroup.entities.push({
33
35
  slug: entityToGroup.entity.slug,
34
36
  type: entityToGroup.type,
35
- label: 'labels' in entityToGroup.entity ? typeof entityToGroup.entity.labels.plural === 'function' ? entityToGroup.entity.labels.plural({
36
- t: i18n.t
37
- }) : entityToGroup.entity.labels.plural : entityToGroup.entity.label
37
+ label
38
38
  });
39
39
  }
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"groupNavItems.js","names":["getTranslation","EntityType","groupNavItems","entities","permissions","i18n","result","reduce","groups","entityToGroup","type","toLowerCase","entity","slug","read","translatedGroup","admin","group","existingGroup","find","label","matchedGroup","push","labels","plural","t","defaultGroup","filter","length"],"sources":["../../src/utilities/groupNavItems.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n SanitizedPermissions,\n StaticLabel,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nexport enum EntityType {\n collection = 'collections',\n global = 'globals',\n}\n\nexport type EntityToGroup =\n | {\n entity: SanitizedCollectionConfig\n type: EntityType.collection\n }\n | {\n entity: SanitizedGlobalConfig\n type: EntityType.global\n }\n\nexport type NavGroupType = {\n entities: {\n label: StaticLabel\n slug: string\n type: EntityType\n }[]\n label: string\n}\n\nexport function groupNavItems(\n entities: EntityToGroup[],\n permissions: SanitizedPermissions,\n i18n: I18nClient,\n): NavGroupType[] {\n const result = entities.reduce(\n (groups, entityToGroup) => {\n if (permissions?.[entityToGroup.type.toLowerCase()]?.[entityToGroup.entity.slug]?.read) {\n const translatedGroup = getTranslation(entityToGroup.entity.admin.group, i18n)\n\n if (entityToGroup.entity.admin.group) {\n const existingGroup = groups.find(\n (group) => getTranslation(group.label, i18n) === translatedGroup,\n ) as NavGroupType\n\n let matchedGroup: NavGroupType = existingGroup\n\n if (!existingGroup) {\n matchedGroup = { entities: [], label: translatedGroup }\n groups.push(matchedGroup)\n }\n\n matchedGroup.entities.push({\n slug: entityToGroup.entity.slug,\n type: entityToGroup.type,\n label:\n 'labels' in entityToGroup.entity\n ? typeof entityToGroup.entity.labels.plural === 'function'\n ? entityToGroup.entity.labels.plural({ t: i18n.t })\n : entityToGroup.entity.labels.plural\n : entityToGroup.entity.label,\n })\n } else {\n const defaultGroup = groups.find((group) => {\n return getTranslation(group.label, i18n) === i18n.t(`general:${entityToGroup.type}`)\n }) as NavGroupType\n defaultGroup.entities.push({\n slug: entityToGroup.entity.slug,\n type: entityToGroup.type,\n label:\n 'labels' in entityToGroup.entity\n ? typeof entityToGroup.entity.labels.plural === 'function'\n ? entityToGroup.entity.labels.plural({ t: i18n.t })\n : entityToGroup.entity.labels.plural\n : entityToGroup.entity.label,\n })\n }\n }\n\n return groups\n },\n [\n {\n entities: [],\n label: i18n.t('general:collections'),\n },\n {\n entities: [],\n label: i18n.t('general:globals'),\n },\n ],\n )\n\n return result.filter((group) => group.entities.length > 0)\n}\n"],"mappings":"AAQA,SAASA,cAAc,QAAQ;AAE/B,OAAO,IAAAC,UAAK,0BAAAA,UAAA;;;SAAAA,UAAA;;AAwBZ,OAAO,SAASC,cACdC,QAAyB,EACzBC,WAAiC,EACjCC,IAAgB;EAEhB,MAAMC,MAAA,GAASH,QAAA,CAASI,MAAM,CAC5B,CAACC,MAAA,EAAQC,aAAA;IACP,IAAIL,WAAA,GAAcK,aAAA,CAAcC,IAAI,CAACC,WAAW,GAAG,GAAGF,aAAA,CAAcG,MAAM,CAACC,IAAI,CAAC,EAAEC,IAAA,EAAM;MACtF,MAAMC,eAAA,GAAkBf,cAAA,CAAeS,aAAA,CAAcG,MAAM,CAACI,KAAK,CAACC,KAAK,EAAEZ,IAAA;MAEzE,IAAII,aAAA,CAAcG,MAAM,CAACI,KAAK,CAACC,KAAK,EAAE;QACpC,MAAMC,aAAA,GAAgBV,MAAA,CAAOW,IAAI,CAC9BF,KAAA,IAAUjB,cAAA,CAAeiB,KAAA,CAAMG,KAAK,EAAEf,IAAA,MAAUU,eAAA;QAGnD,IAAIM,YAAA,GAA6BH,aAAA;QAEjC,IAAI,CAACA,aAAA,EAAe;UAClBG,YAAA,GAAe;YAAElB,QAAA,EAAU,EAAE;YAAEiB,KAAA,EAAOL;UAAgB;UACtDP,MAAA,CAAOc,IAAI,CAACD,YAAA;QACd;QAEAA,YAAA,CAAalB,QAAQ,CAACmB,IAAI,CAAC;UACzBT,IAAA,EAAMJ,aAAA,CAAcG,MAAM,CAACC,IAAI;UAC/BH,IAAA,EAAMD,aAAA,CAAcC,IAAI;UACxBU,KAAA,EACE,YAAYX,aAAA,CAAcG,MAAM,GAC5B,OAAOH,aAAA,CAAcG,MAAM,CAACW,MAAM,CAACC,MAAM,KAAK,aAC5Cf,aAAA,CAAcG,MAAM,CAACW,MAAM,CAACC,MAAM,CAAC;YAAEC,CAAA,EAAGpB,IAAA,CAAKoB;UAAE,KAC/ChB,aAAA,CAAcG,MAAM,CAACW,MAAM,CAACC,MAAM,GACpCf,aAAA,CAAcG,MAAM,CAACQ;QAC7B;MACF,OAAO;QACL,MAAMM,YAAA,GAAelB,MAAA,CAAOW,IAAI,CAAEF,KAAA;UAChC,OAAOjB,cAAA,CAAeiB,KAAA,CAAMG,KAAK,EAAEf,IAAA,MAAUA,IAAA,CAAKoB,CAAC,CAAC,WAAWhB,aAAA,CAAcC,IAAI,EAAE;QACrF;QACAgB,YAAA,CAAavB,QAAQ,CAACmB,IAAI,CAAC;UACzBT,IAAA,EAAMJ,aAAA,CAAcG,MAAM,CAACC,IAAI;UAC/BH,IAAA,EAAMD,aAAA,CAAcC,IAAI;UACxBU,KAAA,EACE,YAAYX,aAAA,CAAcG,MAAM,GAC5B,OAAOH,aAAA,CAAcG,MAAM,CAACW,MAAM,CAACC,MAAM,KAAK,aAC5Cf,aAAA,CAAcG,MAAM,CAACW,MAAM,CAACC,MAAM,CAAC;YAAEC,CAAA,EAAGpB,IAAA,CAAKoB;UAAE,KAC/ChB,aAAA,CAAcG,MAAM,CAACW,MAAM,CAACC,MAAM,GACpCf,aAAA,CAAcG,MAAM,CAACQ;QAC7B;MACF;IACF;IAEA,OAAOZ,MAAA;EACT,GACA,CACE;IACEL,QAAA,EAAU,EAAE;IACZiB,KAAA,EAAOf,IAAA,CAAKoB,CAAC,CAAC;EAChB,GACA;IACEtB,QAAA,EAAU,EAAE;IACZiB,KAAA,EAAOf,IAAA,CAAKoB,CAAC,CAAC;EAChB,EACD;EAGH,OAAOnB,MAAA,CAAOqB,MAAM,CAAEV,KAAA,IAAUA,KAAA,CAAMd,QAAQ,CAACyB,MAAM,GAAG;AAC1D","ignoreList":[]}
1
+ {"version":3,"file":"groupNavItems.js","names":["getTranslation","EntityType","groupNavItems","entities","permissions","i18n","result","reduce","groups","entityToGroup","type","toLowerCase","entity","slug","read","translatedGroup","admin","group","labelOrFunction","labels","plural","label","t","existingGroup","find","matchedGroup","push","defaultGroup","filter","length"],"sources":["../../src/utilities/groupNavItems.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n SanitizedPermissions,\n StaticLabel,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nexport enum EntityType {\n collection = 'collections',\n global = 'globals',\n}\n\nexport type EntityToGroup =\n | {\n entity: SanitizedCollectionConfig\n type: EntityType.collection\n }\n | {\n entity: SanitizedGlobalConfig\n type: EntityType.global\n }\n\nexport type NavGroupType = {\n entities: {\n label: StaticLabel\n slug: string\n type: EntityType\n }[]\n label: string\n}\n\nexport function groupNavItems(\n entities: EntityToGroup[],\n permissions: SanitizedPermissions,\n i18n: I18nClient,\n): NavGroupType[] {\n const result = entities.reduce(\n (groups, entityToGroup) => {\n if (permissions?.[entityToGroup.type.toLowerCase()]?.[entityToGroup.entity.slug]?.read) {\n const translatedGroup = getTranslation(entityToGroup.entity.admin.group, i18n)\n\n const labelOrFunction =\n 'labels' in entityToGroup.entity\n ? entityToGroup.entity.labels.plural\n : entityToGroup.entity.label\n\n const label =\n typeof labelOrFunction === 'function' ? labelOrFunction({ t: i18n.t }) : labelOrFunction\n\n if (entityToGroup.entity.admin.group) {\n const existingGroup = groups.find(\n (group) => getTranslation(group.label, i18n) === translatedGroup,\n ) as NavGroupType\n\n let matchedGroup: NavGroupType = existingGroup\n\n if (!existingGroup) {\n matchedGroup = { entities: [], label: translatedGroup }\n groups.push(matchedGroup)\n }\n\n matchedGroup.entities.push({\n slug: entityToGroup.entity.slug,\n type: entityToGroup.type,\n label,\n })\n } else {\n const defaultGroup = groups.find((group) => {\n return getTranslation(group.label, i18n) === i18n.t(`general:${entityToGroup.type}`)\n }) as NavGroupType\n defaultGroup.entities.push({\n slug: entityToGroup.entity.slug,\n type: entityToGroup.type,\n label,\n })\n }\n }\n\n return groups\n },\n [\n {\n entities: [],\n label: i18n.t('general:collections'),\n },\n {\n entities: [],\n label: i18n.t('general:globals'),\n },\n ],\n )\n\n return result.filter((group) => group.entities.length > 0)\n}\n"],"mappings":"AAQA,SAASA,cAAc,QAAQ;AAE/B,OAAO,IAAAC,UAAK,0BAAAA,UAAA;;;SAAAA,UAAA;;AAwBZ,OAAO,SAASC,cACdC,QAAyB,EACzBC,WAAiC,EACjCC,IAAgB;EAEhB,MAAMC,MAAA,GAASH,QAAA,CAASI,MAAM,CAC5B,CAACC,MAAA,EAAQC,aAAA;IACP,IAAIL,WAAA,GAAcK,aAAA,CAAcC,IAAI,CAACC,WAAW,GAAG,GAAGF,aAAA,CAAcG,MAAM,CAACC,IAAI,CAAC,EAAEC,IAAA,EAAM;MACtF,MAAMC,eAAA,GAAkBf,cAAA,CAAeS,aAAA,CAAcG,MAAM,CAACI,KAAK,CAACC,KAAK,EAAEZ,IAAA;MAEzE,MAAMa,eAAA,GACJ,YAAYT,aAAA,CAAcG,MAAM,GAC5BH,aAAA,CAAcG,MAAM,CAACO,MAAM,CAACC,MAAM,GAClCX,aAAA,CAAcG,MAAM,CAACS,KAAK;MAEhC,MAAMA,KAAA,GACJ,OAAOH,eAAA,KAAoB,aAAaA,eAAA,CAAgB;QAAEI,CAAA,EAAGjB,IAAA,CAAKiB;MAAE,KAAKJ,eAAA;MAE3E,IAAIT,aAAA,CAAcG,MAAM,CAACI,KAAK,CAACC,KAAK,EAAE;QACpC,MAAMM,aAAA,GAAgBf,MAAA,CAAOgB,IAAI,CAC9BP,KAAA,IAAUjB,cAAA,CAAeiB,KAAA,CAAMI,KAAK,EAAEhB,IAAA,MAAUU,eAAA;QAGnD,IAAIU,YAAA,GAA6BF,aAAA;QAEjC,IAAI,CAACA,aAAA,EAAe;UAClBE,YAAA,GAAe;YAAEtB,QAAA,EAAU,EAAE;YAAEkB,KAAA,EAAON;UAAgB;UACtDP,MAAA,CAAOkB,IAAI,CAACD,YAAA;QACd;QAEAA,YAAA,CAAatB,QAAQ,CAACuB,IAAI,CAAC;UACzBb,IAAA,EAAMJ,aAAA,CAAcG,MAAM,CAACC,IAAI;UAC/BH,IAAA,EAAMD,aAAA,CAAcC,IAAI;UACxBW;QACF;MACF,OAAO;QACL,MAAMM,YAAA,GAAenB,MAAA,CAAOgB,IAAI,CAAEP,KAAA;UAChC,OAAOjB,cAAA,CAAeiB,KAAA,CAAMI,KAAK,EAAEhB,IAAA,MAAUA,IAAA,CAAKiB,CAAC,CAAC,WAAWb,aAAA,CAAcC,IAAI,EAAE;QACrF;QACAiB,YAAA,CAAaxB,QAAQ,CAACuB,IAAI,CAAC;UACzBb,IAAA,EAAMJ,aAAA,CAAcG,MAAM,CAACC,IAAI;UAC/BH,IAAA,EAAMD,aAAA,CAAcC,IAAI;UACxBW;QACF;MACF;IACF;IAEA,OAAOb,MAAA;EACT,GACA,CACE;IACEL,QAAA,EAAU,EAAE;IACZkB,KAAA,EAAOhB,IAAA,CAAKiB,CAAC,CAAC;EAChB,GACA;IACEnB,QAAA,EAAU,EAAE;IACZkB,KAAA,EAAOhB,IAAA,CAAKiB,CAAC,CAAC;EAChB,EACD;EAGH,OAAOhB,MAAA,CAAOsB,MAAM,CAAEX,KAAA,IAAUA,KAAA,CAAMd,QAAQ,CAAC0B,MAAM,GAAG;AAC1D","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"renderTable.d.ts","sourceRoot":"","sources":["../../src/utilities/renderTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,EACL,SAAS,EACT,aAAa,EACb,OAAO,EACR,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AASxE,eAAO,MAAM,aAAa,WAChB,KAAK,EAAE,aACJ,SAAS,KACnB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAgB3B,CAAA;AAEH,eAAO,MAAM,WAAW,uLAarB;IACD,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IACzC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CACpD,KAAG;IACF,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CAqCvB,CAAA"}
1
+ {"version":3,"file":"renderTable.d.ts","sourceRoot":"","sources":["../../src/utilities/renderTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,EACL,SAAS,EACT,aAAa,EACb,OAAO,EACR,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAI1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAUxE,eAAO,MAAM,aAAa,WAChB,KAAK,EAAE,aACJ,SAAS,KACnB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAoB3B,CAAA;AAEH,eAAO,MAAM,WAAW,uLAarB;IACD,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IACzC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CACpD,KAAG;IACF,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CAqCvB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { getTranslation } from '@payloadcms/translations';
3
+ import { fieldIsHiddenOrDisabled } from 'payload/shared';
3
4
  import { RenderServerComponent } from '../elements/RenderServerComponent/index.js';
4
5
  import { buildColumnState } from '../elements/TableColumns/buildColumnState.js';
5
6
  import { filterFields } from '../elements/TableColumns/filterFields.js';
@@ -7,6 +8,9 @@ import { getInitialColumns } from '../elements/TableColumns/getInitialColumns.js
7
8
  // eslint-disable-next-line payload/no-imports-from-exports-dir
8
9
  import { Pill, Table } from '../exports/client/index.js';
9
10
  export const renderFilters = (fields, importMap) => fields.reduce((acc, field) => {
11
+ if (fieldIsHiddenOrDisabled(field)) {
12
+ return acc;
13
+ }
10
14
  if ('name' in field && field.admin?.components?.Filter) {
11
15
  acc.set(field.name, RenderServerComponent({
12
16
  Component: field.admin.components?.Filter,
@@ -1 +1 @@
1
- {"version":3,"file":"renderTable.js","names":["getTranslation","RenderServerComponent","buildColumnState","filterFields","getInitialColumns","Pill","Table","renderFilters","fields","importMap","reduce","acc","field","admin","components","Filter","set","name","Component","Map","renderTable","collectionConfig","columnPreferences","columns","columnsFromArgs","customCellProps","docs","enableRowSelections","i18n","payload","renderRowTypes","tableAppearance","useAsTitle","defaultColumns","columnState","beforeRows","accessor","active","Heading","t","renderedCells","map","_","i","_jsx","labels","singular","undefined","appearance","data"],"sources":["../../src/utilities/renderTable.tsx"],"sourcesContent":["import type {\n ClientCollectionConfig,\n CollectionConfig,\n Field,\n ImportMap,\n PaginatedDocs,\n Payload,\n} from 'payload'\n\nimport { getTranslation, type I18nClient } from '@payloadcms/translations'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport type { Column } from '../exports/client/index.js'\nimport type { ColumnPreferences } from '../providers/ListQuery/index.js'\n\nimport { RenderServerComponent } from '../elements/RenderServerComponent/index.js'\nimport { buildColumnState } from '../elements/TableColumns/buildColumnState.js'\nimport { filterFields } from '../elements/TableColumns/filterFields.js'\nimport { getInitialColumns } from '../elements/TableColumns/getInitialColumns.js'\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { Pill, Table } from '../exports/client/index.js'\n\nexport const renderFilters = (\n fields: Field[],\n importMap: ImportMap,\n): Map<string, React.ReactNode> =>\n fields.reduce(\n (acc, field) => {\n if ('name' in field && field.admin?.components?.Filter) {\n acc.set(\n field.name,\n RenderServerComponent({\n Component: field.admin.components?.Filter,\n importMap,\n }),\n )\n }\n\n return acc\n },\n new Map() as Map<string, React.ReactNode>,\n )\n\nexport const renderTable = ({\n collectionConfig,\n columnPreferences,\n columns: columnsFromArgs,\n customCellProps,\n docs,\n enableRowSelections,\n fields,\n i18n,\n payload,\n renderRowTypes,\n tableAppearance,\n useAsTitle,\n}: {\n collectionConfig: ClientCollectionConfig\n columnPreferences: ColumnPreferences\n columns?: ColumnPreferences\n customCellProps?: Record<string, any>\n docs: PaginatedDocs['docs']\n drawerSlug?: string\n enableRowSelections: boolean\n fields: Field[]\n i18n: I18nClient\n payload: Payload\n renderRowTypes?: boolean\n tableAppearance?: 'condensed' | 'default'\n useAsTitle: CollectionConfig['admin']['useAsTitle']\n}): {\n columnState: Column[]\n Table: React.ReactNode\n} => {\n const columns =\n columnsFromArgs ||\n getInitialColumns(filterFields(fields), useAsTitle, collectionConfig?.admin?.defaultColumns)\n\n const columnState = buildColumnState({\n beforeRows: renderRowTypes\n ? [\n {\n accessor: 'collection',\n active: true,\n field: null,\n Heading: i18n.t('version:type'),\n renderedCells: docs.map((_, i) => (\n <Pill key={i}>{getTranslation(collectionConfig.labels.singular, i18n)}</Pill>\n )),\n },\n ]\n : undefined,\n collectionConfig,\n columnPreferences,\n columns,\n enableRowSelections,\n fields,\n i18n,\n // sortColumnProps,\n customCellProps,\n docs,\n payload,\n useAsTitle,\n })\n\n return {\n columnState,\n Table: <Table appearance={tableAppearance} columns={columnState} data={docs} />,\n }\n}\n"],"mappings":";AASA,SAASA,cAAc,QAAyB;AAMhD,SAASC,qBAAqB,QAAQ;AACtC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,YAAY,QAAQ;AAC7B,SAASC,iBAAiB,QAAQ;AAClC;AACA,SAASC,IAAI,EAAEC,KAAK,QAAQ;AAE5B,OAAO,MAAMC,aAAA,GAAgBA,CAC3BC,MAAA,EACAC,SAAA,KAEAD,MAAA,CAAOE,MAAM,CACX,CAACC,GAAA,EAAKC,KAAA;EACJ,IAAI,UAAUA,KAAA,IAASA,KAAA,CAAMC,KAAK,EAAEC,UAAA,EAAYC,MAAA,EAAQ;IACtDJ,GAAA,CAAIK,GAAG,CACLJ,KAAA,CAAMK,IAAI,EACVhB,qBAAA,CAAsB;MACpBiB,SAAA,EAAWN,KAAA,CAAMC,KAAK,CAACC,UAAU,EAAEC,MAAA;MACnCN;IACF;EAEJ;EAEA,OAAOE,GAAA;AACT,GACA,IAAIQ,GAAA;AAGR,OAAO,MAAMC,WAAA,GAAcA,CAAC;EAC1BC,gBAAgB;EAChBC,iBAAiB;EACjBC,OAAA,EAASC,eAAe;EACxBC,eAAe;EACfC,IAAI;EACJC,mBAAmB;EACnBnB,MAAM;EACNoB,IAAI;EACJC,OAAO;EACPC,cAAc;EACdC,eAAe;EACfC;AAAU,CAeX;EAIC,MAAMT,OAAA,GACJC,eAAA,IACApB,iBAAA,CAAkBD,YAAA,CAAaK,MAAA,GAASwB,UAAA,EAAYX,gBAAA,EAAkBR,KAAA,EAAOoB,cAAA;EAE/E,MAAMC,WAAA,GAAchC,gBAAA,CAAiB;IACnCiC,UAAA,EAAYL,cAAA,GACR,CACE;MACEM,QAAA,EAAU;MACVC,MAAA,EAAQ;MACRzB,KAAA,EAAO;MACP0B,OAAA,EAASV,IAAA,CAAKW,CAAC,CAAC;MAChBC,aAAA,EAAed,IAAA,CAAKe,GAAG,CAAC,CAACC,CAAA,EAAGC,CAAA,kBAC1BC,IAAA,CAACvC,IAAA;kBAAcL,cAAA,CAAeqB,gBAAA,CAAiBwB,MAAM,CAACC,QAAQ,EAAElB,IAAA;SAArDe,CAAA;IAEf,EACD,GACDI,SAAA;IACJ1B,gBAAA;IACAC,iBAAA;IACAC,OAAA;IACAI,mBAAA;IACAnB,MAAA;IACAoB,IAAA;IACA;IACAH,eAAA;IACAC,IAAA;IACAG,OAAA;IACAG;EACF;EAEA,OAAO;IACLE,WAAA;IACA5B,KAAA,eAAOsC,IAAA,CAACtC,KAAA;MAAM0C,UAAA,EAAYjB,eAAA;MAAiBR,OAAA,EAASW,WAAA;MAAae,IAAA,EAAMvB;;EACzE;AACF","ignoreList":[]}
1
+ {"version":3,"file":"renderTable.js","names":["getTranslation","fieldIsHiddenOrDisabled","RenderServerComponent","buildColumnState","filterFields","getInitialColumns","Pill","Table","renderFilters","fields","importMap","reduce","acc","field","admin","components","Filter","set","name","Component","Map","renderTable","collectionConfig","columnPreferences","columns","columnsFromArgs","customCellProps","docs","enableRowSelections","i18n","payload","renderRowTypes","tableAppearance","useAsTitle","defaultColumns","columnState","beforeRows","accessor","active","Heading","t","renderedCells","map","_","i","_jsx","labels","singular","undefined","appearance","data"],"sources":["../../src/utilities/renderTable.tsx"],"sourcesContent":["import type {\n ClientCollectionConfig,\n CollectionConfig,\n Field,\n ImportMap,\n PaginatedDocs,\n Payload,\n} from 'payload'\n\nimport { getTranslation, type I18nClient } from '@payloadcms/translations'\nimport { fieldIsHiddenOrDisabled, fieldIsID } from 'payload/shared'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport type { Column } from '../exports/client/index.js'\nimport type { ColumnPreferences } from '../providers/ListQuery/index.js'\n\nimport { RenderServerComponent } from '../elements/RenderServerComponent/index.js'\nimport { buildColumnState } from '../elements/TableColumns/buildColumnState.js'\nimport { filterFields } from '../elements/TableColumns/filterFields.js'\nimport { getInitialColumns } from '../elements/TableColumns/getInitialColumns.js'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { Pill, Table } from '../exports/client/index.js'\n\nexport const renderFilters = (\n fields: Field[],\n importMap: ImportMap,\n): Map<string, React.ReactNode> =>\n fields.reduce(\n (acc, field) => {\n if (fieldIsHiddenOrDisabled(field)) {\n return acc\n }\n\n if ('name' in field && field.admin?.components?.Filter) {\n acc.set(\n field.name,\n RenderServerComponent({\n Component: field.admin.components?.Filter,\n importMap,\n }),\n )\n }\n\n return acc\n },\n new Map() as Map<string, React.ReactNode>,\n )\n\nexport const renderTable = ({\n collectionConfig,\n columnPreferences,\n columns: columnsFromArgs,\n customCellProps,\n docs,\n enableRowSelections,\n fields,\n i18n,\n payload,\n renderRowTypes,\n tableAppearance,\n useAsTitle,\n}: {\n collectionConfig: ClientCollectionConfig\n columnPreferences: ColumnPreferences\n columns?: ColumnPreferences\n customCellProps?: Record<string, any>\n docs: PaginatedDocs['docs']\n drawerSlug?: string\n enableRowSelections: boolean\n fields: Field[]\n i18n: I18nClient\n payload: Payload\n renderRowTypes?: boolean\n tableAppearance?: 'condensed' | 'default'\n useAsTitle: CollectionConfig['admin']['useAsTitle']\n}): {\n columnState: Column[]\n Table: React.ReactNode\n} => {\n const columns =\n columnsFromArgs ||\n getInitialColumns(filterFields(fields), useAsTitle, collectionConfig?.admin?.defaultColumns)\n\n const columnState = buildColumnState({\n beforeRows: renderRowTypes\n ? [\n {\n accessor: 'collection',\n active: true,\n field: null,\n Heading: i18n.t('version:type'),\n renderedCells: docs.map((_, i) => (\n <Pill key={i}>{getTranslation(collectionConfig.labels.singular, i18n)}</Pill>\n )),\n },\n ]\n : undefined,\n collectionConfig,\n columnPreferences,\n columns,\n enableRowSelections,\n fields,\n i18n,\n // sortColumnProps,\n customCellProps,\n docs,\n payload,\n useAsTitle,\n })\n\n return {\n columnState,\n Table: <Table appearance={tableAppearance} columns={columnState} data={docs} />,\n }\n}\n"],"mappings":";AASA,SAASA,cAAc,QAAyB;AAChD,SAASC,uBAAuB,QAAmB;AAMnD,SAASC,qBAAqB,QAAQ;AACtC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,YAAY,QAAQ;AAC7B,SAASC,iBAAiB,QAAQ;AAElC;AACA,SAASC,IAAI,EAAEC,KAAK,QAAQ;AAE5B,OAAO,MAAMC,aAAA,GAAgBA,CAC3BC,MAAA,EACAC,SAAA,KAEAD,MAAA,CAAOE,MAAM,CACX,CAACC,GAAA,EAAKC,KAAA;EACJ,IAAIZ,uBAAA,CAAwBY,KAAA,GAAQ;IAClC,OAAOD,GAAA;EACT;EAEA,IAAI,UAAUC,KAAA,IAASA,KAAA,CAAMC,KAAK,EAAEC,UAAA,EAAYC,MAAA,EAAQ;IACtDJ,GAAA,CAAIK,GAAG,CACLJ,KAAA,CAAMK,IAAI,EACVhB,qBAAA,CAAsB;MACpBiB,SAAA,EAAWN,KAAA,CAAMC,KAAK,CAACC,UAAU,EAAEC,MAAA;MACnCN;IACF;EAEJ;EAEA,OAAOE,GAAA;AACT,GACA,IAAIQ,GAAA;AAGR,OAAO,MAAMC,WAAA,GAAcA,CAAC;EAC1BC,gBAAgB;EAChBC,iBAAiB;EACjBC,OAAA,EAASC,eAAe;EACxBC,eAAe;EACfC,IAAI;EACJC,mBAAmB;EACnBnB,MAAM;EACNoB,IAAI;EACJC,OAAO;EACPC,cAAc;EACdC,eAAe;EACfC;AAAU,CAeX;EAIC,MAAMT,OAAA,GACJC,eAAA,IACApB,iBAAA,CAAkBD,YAAA,CAAaK,MAAA,GAASwB,UAAA,EAAYX,gBAAA,EAAkBR,KAAA,EAAOoB,cAAA;EAE/E,MAAMC,WAAA,GAAchC,gBAAA,CAAiB;IACnCiC,UAAA,EAAYL,cAAA,GACR,CACE;MACEM,QAAA,EAAU;MACVC,MAAA,EAAQ;MACRzB,KAAA,EAAO;MACP0B,OAAA,EAASV,IAAA,CAAKW,CAAC,CAAC;MAChBC,aAAA,EAAed,IAAA,CAAKe,GAAG,CAAC,CAACC,CAAA,EAAGC,CAAA,kBAC1BC,IAAA,CAACvC,IAAA;kBAAcN,cAAA,CAAesB,gBAAA,CAAiBwB,MAAM,CAACC,QAAQ,EAAElB,IAAA;SAArDe,CAAA;IAEf,EACD,GACDI,SAAA;IACJ1B,gBAAA;IACAC,iBAAA;IACAC,OAAA;IACAI,mBAAA;IACAnB,MAAA;IACAoB,IAAA;IACA;IACAH,eAAA;IACAC,IAAA;IACAG,OAAA;IACAG;EACF;EAEA,OAAO;IACLE,WAAA;IACA5B,KAAA,eAAOsC,IAAA,CAACtC,KAAA;MAAM0C,UAAA,EAAYjB,eAAA;MAAiBR,OAAA,EAASW,WAAA;MAAae,IAAA,EAAMvB;;EACzE;AACF","ignoreList":[]}
@@ -188,7 +188,7 @@ export const DefaultEditView = ({
188
188
  setCurrentEditor(lockedState.user);
189
189
  }
190
190
  }
191
- }, [setCurrentEditor, setDocumentIsLocked, user.id]);
191
+ }, [setCurrentEditor, setDocumentIsLocked, user?.id]);
192
192
  const onSave = useCallback(async json => {
193
193
  reportUpdate({
194
194
  id,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useRouter","useSearchParams","React","Fragment","useCallback","useEffect","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","OperationProvider","useServerFunctions","useUploadEdits","abortAndIgnore","formatAdminURL","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","Description","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","lastUpdateTime","redirectAfterDelete","redirectAfterDuplicate","savedDocumentData","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","updateSavedDocumentData","clearDoc","drawerSlug","onDelete","onDuplicate","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","onChangeAbortControllerRef","onSaveAbortControllerRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","preventLeaveWithoutSaving","autosaveEnabled","versions","drafts","autosave","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","classes","push","schemaPathSegments","setSchemaPathSegments","disableLocalStrategy","validateBeforeSubmit","setValidateBeforeSubmit","handleDocumentLocking","lockedState","previousOwnerId","current","lockedUserID","json","updatedAt","result","toISOString","doc","redirectRoute","path","controller","AbortController","docPreferences","state","data","renderAllFields","returnLockStatus","schemaPath","join","signal","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","shouldUnlockDocument","some","window","location","pathname","includes","shouldShowDocumentLockedModal","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","method","onSuccess","isActive","onReadOnly","onTakeOver","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n ClientSideEditViewProps,\n ClientUser,\n FormState,\n} from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore } from '../../utilities/abortAndIgnore.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport const DefaultEditView: React.FC<ClientSideEditViewProps> = ({\n Description,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n redirectAfterDelete,\n redirectAfterDuplicate,\n savedDocumentData,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n\n const onChangeAbortControllerRef = useRef<AbortController>(null)\n const onSaveAbortControllerRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n let preventLeaveWithoutSaving = true\n let autosaveEnabled = false\n\n if (collectionConfig) {\n autosaveEnabled = Boolean(\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave,\n )\n preventLeaveWithoutSaving = !autosaveEnabled\n } else if (globalConfig) {\n autosaveEnabled = Boolean(\n globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave,\n )\n preventLeaveWithoutSaving = !autosaveEnabled\n } else if (typeof disableLeaveWithoutSaving !== 'undefined') {\n preventLeaveWithoutSaving = !disableLeaveWithoutSaving\n }\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const classes = [baseClass, (id || globalSlug) && `${baseClass}--is-editing`]\n\n if (globalSlug) {\n classes.push(`global-edit--${globalSlug}`)\n }\n\n if (collectionSlug) {\n classes.push(`collection-edit--${collectionSlug}`)\n }\n\n const [schemaPathSegments, setSchemaPathSegments] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return [`_${entitySlug}`, 'auth']\n }\n\n return [entitySlug]\n })\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\n const previousOwnerId =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockStateRef.current || lockedUserID !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n },\n [setCurrentEditor, setDocumentIsLocked, user.id],\n )\n\n const onSave = useCallback(\n async (json): Promise<FormState> => {\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n incrementVersionCount()\n\n if (typeof updateSavedDocumentData === 'function') {\n void updateSavedDocumentData(json?.doc || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n\n if ((id || globalSlug) && !autosaveEnabled) {\n abortAndIgnore(onSaveAbortControllerRef.current)\n const controller = new AbortController()\n onSaveAbortControllerRef.current = controller\n\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: json?.doc || json?.result,\n docPermissions,\n docPreferences,\n globalSlug,\n operation,\n renderAllFields: true,\n returnLockStatus: false,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n })\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n return state\n }\n },\n [\n adminRoute,\n collectionSlug,\n depth,\n docPermissions,\n entitySlug,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n globalSlug,\n id,\n incrementVersionCount,\n isEditing,\n isLockingEnabled,\n locale,\n onSaveFromContext,\n operation,\n refreshCookieAsync,\n reportUpdate,\n resetUploadEdits,\n router,\n schemaPathSegments,\n setDocumentIsLocked,\n updateSavedDocumentData,\n user,\n userSlug,\n autosaveEnabled,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n // Performance optimization: Setting it to false ensure that only fields that have explicit requireRender set in the form state will be rendered (e.g. new array rows).\n // We only want to render ALL fields on initial render, not in onChange.\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n updateLastEdited,\n })\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n return state\n },\n [\n id,\n collectionSlug,\n getDocPreferences,\n getFormState,\n globalSlug,\n handleDocumentLocking,\n isLockingEnabled,\n operation,\n schemaPathSegments,\n docPermissions,\n editSessionStartTime,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Only retain the lock if the user is still viewing the document\n const shouldUnlockDocument = !['preview', 'api', 'versions'].some((path) =>\n window.location.pathname.includes(path),\n )\n if (shouldUnlockDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n abortAndIgnore(onSaveAbortControllerRef.current)\n }\n }, [])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <main className={classes.filter(Boolean).join(' ')}>\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && <DocumentDrawerHeader drawerSlug={drawerSlug} />}\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={savedDocumentData}\n disableActions={disableActions}\n disableCreate={disableCreate}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={savedDocumentData?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setSchemaPathSegments={setSchemaPathSegments}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={savedDocumentData?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n />\n )}\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useRouter","useSearchParams","React","Fragment","useCallback","useEffect","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","OperationProvider","useServerFunctions","useUploadEdits","abortAndIgnore","formatAdminURL","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","Description","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","lastUpdateTime","redirectAfterDelete","redirectAfterDuplicate","savedDocumentData","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","updateSavedDocumentData","clearDoc","drawerSlug","onDelete","onDuplicate","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","onChangeAbortControllerRef","onSaveAbortControllerRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","preventLeaveWithoutSaving","autosaveEnabled","versions","drafts","autosave","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","classes","push","schemaPathSegments","setSchemaPathSegments","disableLocalStrategy","validateBeforeSubmit","setValidateBeforeSubmit","handleDocumentLocking","lockedState","previousOwnerId","current","lockedUserID","json","updatedAt","result","toISOString","doc","redirectRoute","path","controller","AbortController","docPreferences","state","data","renderAllFields","returnLockStatus","schemaPath","join","signal","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","shouldUnlockDocument","some","window","location","pathname","includes","shouldShowDocumentLockedModal","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","method","onSuccess","isActive","onReadOnly","onTakeOver","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n ClientSideEditViewProps,\n ClientUser,\n FormState,\n} from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore } from '../../utilities/abortAndIgnore.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport const DefaultEditView: React.FC<ClientSideEditViewProps> = ({\n Description,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n redirectAfterDelete,\n redirectAfterDuplicate,\n savedDocumentData,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n\n const onChangeAbortControllerRef = useRef<AbortController>(null)\n const onSaveAbortControllerRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n let preventLeaveWithoutSaving = true\n let autosaveEnabled = false\n\n if (collectionConfig) {\n autosaveEnabled = Boolean(\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave,\n )\n preventLeaveWithoutSaving = !autosaveEnabled\n } else if (globalConfig) {\n autosaveEnabled = Boolean(\n globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave,\n )\n preventLeaveWithoutSaving = !autosaveEnabled\n } else if (typeof disableLeaveWithoutSaving !== 'undefined') {\n preventLeaveWithoutSaving = !disableLeaveWithoutSaving\n }\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const classes = [baseClass, (id || globalSlug) && `${baseClass}--is-editing`]\n\n if (globalSlug) {\n classes.push(`global-edit--${globalSlug}`)\n }\n\n if (collectionSlug) {\n classes.push(`collection-edit--${collectionSlug}`)\n }\n\n const [schemaPathSegments, setSchemaPathSegments] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return [`_${entitySlug}`, 'auth']\n }\n\n return [entitySlug]\n })\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\n const previousOwnerId =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockStateRef.current || lockedUserID !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n },\n [setCurrentEditor, setDocumentIsLocked, user?.id],\n )\n\n const onSave = useCallback(\n async (json): Promise<FormState> => {\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n incrementVersionCount()\n\n if (typeof updateSavedDocumentData === 'function') {\n void updateSavedDocumentData(json?.doc || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n\n if ((id || globalSlug) && !autosaveEnabled) {\n abortAndIgnore(onSaveAbortControllerRef.current)\n const controller = new AbortController()\n onSaveAbortControllerRef.current = controller\n\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: json?.doc || json?.result,\n docPermissions,\n docPreferences,\n globalSlug,\n operation,\n renderAllFields: true,\n returnLockStatus: false,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n })\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n return state\n }\n },\n [\n adminRoute,\n collectionSlug,\n depth,\n docPermissions,\n entitySlug,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n globalSlug,\n id,\n incrementVersionCount,\n isEditing,\n isLockingEnabled,\n locale,\n onSaveFromContext,\n operation,\n refreshCookieAsync,\n reportUpdate,\n resetUploadEdits,\n router,\n schemaPathSegments,\n setDocumentIsLocked,\n updateSavedDocumentData,\n user,\n userSlug,\n autosaveEnabled,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n // Performance optimization: Setting it to false ensure that only fields that have explicit requireRender set in the form state will be rendered (e.g. new array rows).\n // We only want to render ALL fields on initial render, not in onChange.\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n updateLastEdited,\n })\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n return state\n },\n [\n id,\n collectionSlug,\n getDocPreferences,\n getFormState,\n globalSlug,\n handleDocumentLocking,\n isLockingEnabled,\n operation,\n schemaPathSegments,\n docPermissions,\n editSessionStartTime,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Only retain the lock if the user is still viewing the document\n const shouldUnlockDocument = !['preview', 'api', 'versions'].some((path) =>\n window.location.pathname.includes(path),\n )\n if (shouldUnlockDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n abortAndIgnore(onSaveAbortControllerRef.current)\n }\n }, [])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <main className={classes.filter(Boolean).join(' ')}>\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && <DocumentDrawerHeader drawerSlug={drawerSlug} />}\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={savedDocumentData}\n disableActions={disableActions}\n disableCreate={disableCreate}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={savedDocumentData?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setSchemaPathSegments={setSchemaPathSegments}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={savedDocumentData?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n />\n )}\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/ui",
3
- "version": "3.3.0",
3
+ "version": "3.4.1-canary.2a8fa30",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -132,7 +132,7 @@
132
132
  "ts-essentials": "10.0.3",
133
133
  "use-context-selector": "2.0.0",
134
134
  "uuid": "10.0.0",
135
- "@payloadcms/translations": "3.3.0"
135
+ "@payloadcms/translations": "3.4.1-canary.2a8fa30"
136
136
  },
137
137
  "devDependencies": {
138
138
  "@babel/cli": "7.25.9",
@@ -149,14 +149,14 @@
149
149
  "esbuild": "0.24.0",
150
150
  "esbuild-sass-plugin": "3.3.1",
151
151
  "eslint-plugin-react-compiler": "19.0.0-beta-df7b47d-20241124",
152
- "payload": "3.3.0",
152
+ "payload": "3.4.1-canary.2a8fa30",
153
153
  "@payloadcms/eslint-config": "3.0.0"
154
154
  },
155
155
  "peerDependencies": {
156
156
  "next": "^15.0.0",
157
157
  "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
158
158
  "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
159
- "payload": "3.3.0"
159
+ "payload": "3.4.1-canary.2a8fa30"
160
160
  },
161
161
  "engines": {
162
162
  "node": "^18.20.2 || >=20.9.0"