@strapi/content-manager 5.0.0-rc.9 → 5.0.0

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 (110) hide show
  1. package/dist/_chunks/{ComponentConfigurationPage-BwnO0su2.mjs → ComponentConfigurationPage-DfFSZQxe.mjs} +3 -3
  2. package/dist/_chunks/{ComponentConfigurationPage-BwnO0su2.mjs.map → ComponentConfigurationPage-DfFSZQxe.mjs.map} +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-BOKmq7mz.js → ComponentConfigurationPage-FqfsxQ1j.js} +3 -3
  4. package/dist/_chunks/{ComponentConfigurationPage-BOKmq7mz.js.map → ComponentConfigurationPage-FqfsxQ1j.js.map} +1 -1
  5. package/dist/_chunks/{EditConfigurationPage-N3OaN53v.js → EditConfigurationPage-Cn0e8t3I.js} +3 -3
  6. package/dist/_chunks/{EditConfigurationPage-N3OaN53v.js.map → EditConfigurationPage-Cn0e8t3I.js.map} +1 -1
  7. package/dist/_chunks/{EditConfigurationPage-DJDSIf3D.mjs → EditConfigurationPage-DdPNAbl3.mjs} +3 -3
  8. package/dist/_chunks/{EditConfigurationPage-DJDSIf3D.mjs.map → EditConfigurationPage-DdPNAbl3.mjs.map} +1 -1
  9. package/dist/_chunks/{EditViewPage-IZbGSeL3.mjs → EditViewPage-B82x_x1b.mjs} +15 -5
  10. package/dist/_chunks/EditViewPage-B82x_x1b.mjs.map +1 -0
  11. package/dist/_chunks/{EditViewPage-l9qOdDUI.js → EditViewPage-DlxEHhUt.js} +15 -5
  12. package/dist/_chunks/EditViewPage-DlxEHhUt.js.map +1 -0
  13. package/dist/_chunks/{Field-CWjyW47-.js → Field-COL25JiC.js} +100 -87
  14. package/dist/_chunks/Field-COL25JiC.js.map +1 -0
  15. package/dist/_chunks/{Field-D3mNj-iY.mjs → Field-DufHXW17.mjs} +97 -84
  16. package/dist/_chunks/Field-DufHXW17.mjs.map +1 -0
  17. package/dist/_chunks/{Form-DFXXFrJV.js → Form-BssUwrTO.js} +16 -8
  18. package/dist/_chunks/Form-BssUwrTO.js.map +1 -0
  19. package/dist/_chunks/{Form-Ddy3XYS-.mjs → Form-u_kAOhwB.mjs} +16 -8
  20. package/dist/_chunks/Form-u_kAOhwB.mjs.map +1 -0
  21. package/dist/_chunks/{History-pesEeFFT.js → History-C9t9UqpO.js} +23 -10
  22. package/dist/_chunks/History-C9t9UqpO.js.map +1 -0
  23. package/dist/_chunks/{History-BEFrLZfz.mjs → History-DRwA3oMM.mjs} +24 -11
  24. package/dist/_chunks/History-DRwA3oMM.mjs.map +1 -0
  25. package/dist/_chunks/{ListConfigurationPage-BIoi-Sog.js → ListConfigurationPage-BXYPohh-.js} +2 -2
  26. package/dist/_chunks/{ListConfigurationPage-BIoi-Sog.js.map → ListConfigurationPage-BXYPohh-.js.map} +1 -1
  27. package/dist/_chunks/{ListConfigurationPage-CB_lBFVX.mjs → ListConfigurationPage-BxfQJzPk.mjs} +2 -2
  28. package/dist/_chunks/{ListConfigurationPage-CB_lBFVX.mjs.map → ListConfigurationPage-BxfQJzPk.mjs.map} +1 -1
  29. package/dist/_chunks/{ListViewPage-DBbH7Esr.mjs → ListViewPage-CELx2ysp.mjs} +40 -36
  30. package/dist/_chunks/ListViewPage-CELx2ysp.mjs.map +1 -0
  31. package/dist/_chunks/{ListViewPage-C6FK36UI.js → ListViewPage-D2VD8Szg.js} +43 -39
  32. package/dist/_chunks/ListViewPage-D2VD8Szg.js.map +1 -0
  33. package/dist/_chunks/{NoContentTypePage-Dod8M_xM.js → NoContentTypePage-BV9IjJSM.js} +2 -2
  34. package/dist/_chunks/{NoContentTypePage-Dod8M_xM.js.map → NoContentTypePage-BV9IjJSM.js.map} +1 -1
  35. package/dist/_chunks/{NoContentTypePage-BU9Omzp4.mjs → NoContentTypePage-DtJ9jcfk.mjs} +2 -2
  36. package/dist/_chunks/{NoContentTypePage-BU9Omzp4.mjs.map → NoContentTypePage-DtJ9jcfk.mjs.map} +1 -1
  37. package/dist/_chunks/{NoPermissionsPage-B88W05rh.mjs → NoPermissionsPage-DWleVYK7.mjs} +2 -2
  38. package/dist/_chunks/{NoPermissionsPage-B88W05rh.mjs.map → NoPermissionsPage-DWleVYK7.mjs.map} +1 -1
  39. package/dist/_chunks/{NoPermissionsPage-CMLH3uMk.js → NoPermissionsPage-Dp8NpF9I.js} +2 -2
  40. package/dist/_chunks/{NoPermissionsPage-CMLH3uMk.js.map → NoPermissionsPage-Dp8NpF9I.js.map} +1 -1
  41. package/dist/_chunks/{Relations-BBJRxopY.mjs → Relations-BTcf5xaw.mjs} +32 -23
  42. package/dist/_chunks/Relations-BTcf5xaw.mjs.map +1 -0
  43. package/dist/_chunks/{Relations-OXbsEvNt.js → Relations-DR7EUgyC.js} +32 -23
  44. package/dist/_chunks/Relations-DR7EUgyC.js.map +1 -0
  45. package/dist/_chunks/{en-uOUIxfcQ.js → en-Bm0D0IWz.js} +13 -12
  46. package/dist/_chunks/{en-uOUIxfcQ.js.map → en-Bm0D0IWz.js.map} +1 -1
  47. package/dist/_chunks/{en-BrCTWlZv.mjs → en-DKV44jRb.mjs} +13 -12
  48. package/dist/_chunks/{en-BrCTWlZv.mjs.map → en-DKV44jRb.mjs.map} +1 -1
  49. package/dist/_chunks/{index-Bj8wwbdx.js → index-BdMf2lfT.js} +1879 -1765
  50. package/dist/_chunks/index-BdMf2lfT.js.map +1 -0
  51. package/dist/_chunks/{index-BgiNQ7Q9.mjs → index-wnqzm4Q8.mjs} +1899 -1785
  52. package/dist/_chunks/index-wnqzm4Q8.mjs.map +1 -0
  53. package/dist/_chunks/{layout-LOFMsdWo.mjs → layout-2CfjL0T9.mjs} +5 -4
  54. package/dist/_chunks/{layout-LOFMsdWo.mjs.map → layout-2CfjL0T9.mjs.map} +1 -1
  55. package/dist/_chunks/{layout-DBvOIgWG.js → layout-B2MyZU-_.js} +5 -4
  56. package/dist/_chunks/{layout-DBvOIgWG.js.map → layout-B2MyZU-_.js.map} +1 -1
  57. package/dist/_chunks/{relations-BLilXMyN.js → relations-BH7JJGGe.js} +2 -2
  58. package/dist/_chunks/{relations-BLilXMyN.js.map → relations-BH7JJGGe.js.map} +1 -1
  59. package/dist/_chunks/{relations-BTQKCDqX.mjs → relations-C0w0GcXi.mjs} +2 -2
  60. package/dist/_chunks/{relations-BTQKCDqX.mjs.map → relations-C0w0GcXi.mjs.map} +1 -1
  61. package/dist/_chunks/{usePrev-B9w_-eYc.js → useDebounce-CtcjDB3L.js} +14 -1
  62. package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -0
  63. package/dist/_chunks/useDebounce-DmuSJIF3.mjs +29 -0
  64. package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -0
  65. package/dist/admin/index.js +2 -1
  66. package/dist/admin/index.js.map +1 -1
  67. package/dist/admin/index.mjs +5 -4
  68. package/dist/admin/src/exports.d.ts +1 -1
  69. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  70. package/dist/admin/src/hooks/useDocument.d.ts +32 -1
  71. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +0 -32
  72. package/dist/admin/src/pages/EditView/components/Header.d.ts +11 -11
  73. package/dist/admin/src/services/api.d.ts +1 -1
  74. package/dist/admin/src/services/components.d.ts +2 -2
  75. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  76. package/dist/admin/src/services/documents.d.ts +19 -17
  77. package/dist/admin/src/services/init.d.ts +1 -1
  78. package/dist/admin/src/services/relations.d.ts +2 -2
  79. package/dist/admin/src/services/uid.d.ts +3 -3
  80. package/dist/server/index.js +48 -21
  81. package/dist/server/index.js.map +1 -1
  82. package/dist/server/index.mjs +48 -21
  83. package/dist/server/index.mjs.map +1 -1
  84. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  85. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  86. package/dist/server/src/history/services/history.d.ts.map +1 -1
  87. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  88. package/dist/server/src/history/services/utils.d.ts +1 -0
  89. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  90. package/dist/shared/contracts/collection-types.d.ts +3 -1
  91. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  92. package/package.json +12 -12
  93. package/dist/_chunks/EditViewPage-IZbGSeL3.mjs.map +0 -1
  94. package/dist/_chunks/EditViewPage-l9qOdDUI.js.map +0 -1
  95. package/dist/_chunks/Field-CWjyW47-.js.map +0 -1
  96. package/dist/_chunks/Field-D3mNj-iY.mjs.map +0 -1
  97. package/dist/_chunks/Form-DFXXFrJV.js.map +0 -1
  98. package/dist/_chunks/Form-Ddy3XYS-.mjs.map +0 -1
  99. package/dist/_chunks/History-BEFrLZfz.mjs.map +0 -1
  100. package/dist/_chunks/History-pesEeFFT.js.map +0 -1
  101. package/dist/_chunks/ListViewPage-C6FK36UI.js.map +0 -1
  102. package/dist/_chunks/ListViewPage-DBbH7Esr.mjs.map +0 -1
  103. package/dist/_chunks/Relations-BBJRxopY.mjs.map +0 -1
  104. package/dist/_chunks/Relations-OXbsEvNt.js.map +0 -1
  105. package/dist/_chunks/index-BgiNQ7Q9.mjs.map +0 -1
  106. package/dist/_chunks/index-Bj8wwbdx.js.map +0 -1
  107. package/dist/_chunks/usePrev-B9w_-eYc.js.map +0 -1
  108. package/dist/_chunks/usePrev-DH6iah0A.mjs +0 -16
  109. package/dist/_chunks/usePrev-DH6iah0A.mjs.map +0 -1
  110. package/strapi-server.js +0 -3
@@ -199,7 +199,9 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
199
199
  return strapi2.db.query("plugin::upload.file").findOne({ where: { id: versionRelationData.id } });
200
200
  };
201
201
  const localesService = strapi2.plugin("i18n")?.service("locales");
202
+ const i18nContentTypeService = strapi2.plugin("i18n")?.service("content-types");
202
203
  const getDefaultLocale = async () => localesService ? localesService.getDefaultLocale() : null;
204
+ const isLocalizedContentType = (model) => i18nContentTypeService ? i18nContentTypeService.isLocalizedContentType(model) : false;
203
205
  const getLocaleDictionary = async () => {
204
206
  if (!localesService)
205
207
  return {};
@@ -317,6 +319,7 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
317
319
  getRelationRestoreValue,
318
320
  getMediaRestoreValue,
319
321
  getDefaultLocale,
322
+ isLocalizedContentType,
320
323
  getLocaleDictionary,
321
324
  getRetentionDays,
322
325
  getVersionStatus,
@@ -339,7 +342,13 @@ const createHistoryService = ({ strapi: strapi2 }) => {
339
342
  });
340
343
  },
341
344
  async findVersionsPage(params) {
342
- const locale = params.query.locale || await serviceUtils.getDefaultLocale();
345
+ const model = strapi2.getModel(params.query.contentType);
346
+ const isLocalizedContentType = serviceUtils.isLocalizedContentType(model);
347
+ const defaultLocale = await serviceUtils.getDefaultLocale();
348
+ let locale = null;
349
+ if (isLocalizedContentType) {
350
+ locale = params.query.locale || defaultLocale;
351
+ }
343
352
  const [{ results, pagination }, localeDictionary] = await Promise.all([
344
353
  query.findPage({
345
354
  ...params.query,
@@ -384,7 +393,12 @@ const createHistoryService = ({ strapi: strapi2 }) => {
384
393
  if (userToPopulate == null) {
385
394
  return null;
386
395
  }
387
- return strapi2.query("admin::user").findOne({ where: { id: userToPopulate.id } });
396
+ return strapi2.query("admin::user").findOne({
397
+ where: {
398
+ ...userToPopulate.id ? { id: userToPopulate.id } : {},
399
+ ...userToPopulate.documentId ? { documentId: userToPopulate.documentId } : {}
400
+ }
401
+ });
388
402
  })
389
403
  );
390
404
  return {
@@ -555,11 +569,13 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
555
569
  }
556
570
  const uid2 = context.contentType.uid;
557
571
  const schemas = getSchemas(uid2);
572
+ const model = strapi2.getModel(uid2);
573
+ const isLocalizedContentType = serviceUtils.isLocalizedContentType(model);
558
574
  const localeEntries = await strapi2.db.query(uid2).findMany({
559
575
  where: {
560
576
  documentId,
561
- locale: { $in: locales },
562
- publishedAt: null
577
+ ...isLocalizedContentType ? { locale: { $in: locales } } : {},
578
+ ...strapiUtils.contentTypes.hasDraftAndPublish(strapi2.contentTypes[uid2]) ? { publishedAt: null } : {}
563
579
  },
564
580
  populate: serviceUtils.getDeepPopulate(
565
581
  uid2,
@@ -1704,7 +1720,7 @@ const updateDocument = async (ctx, opts) => {
1704
1720
  throw new strapiUtils.errors.ForbiddenError();
1705
1721
  }
1706
1722
  const pickPermittedFields = documentVersion ? permissionChecker2.sanitizeUpdateInput(documentVersion) : permissionChecker2.sanitizeCreateInput;
1707
- const setCreator = strapiUtils.setCreatorFields({ user, isEdition: true });
1723
+ const setCreator = documentVersion ? strapiUtils.setCreatorFields({ user, isEdition: true }) : strapiUtils.setCreatorFields({ user });
1708
1724
  const sanitizeFn = strapiUtils.async.pipe(pickPermittedFields, setCreator);
1709
1725
  const sanitizedBody = await sanitizeFn(body);
1710
1726
  return documentManager2.update(documentVersion?.documentId || id, model, {
@@ -1776,7 +1792,7 @@ const collectionTypes = {
1776
1792
  permissionChecker2,
1777
1793
  model,
1778
1794
  // @ts-expect-error TODO: fix
1779
- { id, locale, publishedAt: null },
1795
+ { documentId: id, locale, publishedAt: null },
1780
1796
  { availableLocales: true, availableStatus: false }
1781
1797
  );
1782
1798
  ctx.body = { data: {}, meta };
@@ -1913,11 +1929,17 @@ const collectionTypes = {
1913
1929
  }
1914
1930
  const isUpdate = !isCreate;
1915
1931
  if (isUpdate) {
1916
- document = await documentManager2.findOne(id, model, { populate, locale });
1917
- if (!document) {
1932
+ const documentExists = documentManager2.exists(model, id);
1933
+ if (!documentExists) {
1918
1934
  throw new strapiUtils.errors.NotFoundError("Document not found");
1919
1935
  }
1920
- if (permissionChecker2.can.update(document)) {
1936
+ document = await documentManager2.findOne(id, model, { populate, locale });
1937
+ if (!document) {
1938
+ if (permissionChecker2.cannot.create({ locale }) || permissionChecker2.cannot.publish({ locale })) {
1939
+ throw new strapiUtils.errors.ForbiddenError();
1940
+ }
1941
+ document = await updateDocument(ctx);
1942
+ } else if (permissionChecker2.can.update(document)) {
1921
1943
  await updateDocument(ctx);
1922
1944
  }
1923
1945
  }
@@ -1979,7 +2001,9 @@ const collectionTypes = {
1979
2001
  if (permissionChecker2.cannot.unpublish()) {
1980
2002
  return ctx.forbidden();
1981
2003
  }
1982
- const { locale } = await getDocumentLocaleAndStatus(body, model);
2004
+ const { locale } = await getDocumentLocaleAndStatus(body, model, {
2005
+ allowMultipleLocales: true
2006
+ });
1983
2007
  const entityPromises = documentIds.map(
1984
2008
  (documentId) => documentManager2.findLocales(documentId, model, { locale, isPublished: true })
1985
2009
  );
@@ -2369,11 +2393,8 @@ const validateLocale = (sourceUid, targetUid, locale) => {
2369
2393
  const isLocalized = strapi.plugin("i18n").service("content-types").isLocalizedContentType;
2370
2394
  const isSourceLocalized = isLocalized(sourceModel);
2371
2395
  const isTargetLocalized = isLocalized(targetModel);
2372
- let validatedLocale = locale;
2373
- if (!targetModel || !isTargetLocalized)
2374
- validatedLocale = void 0;
2375
2396
  return {
2376
- locale: validatedLocale,
2397
+ locale,
2377
2398
  isSourceLocalized,
2378
2399
  isTargetLocalized
2379
2400
  };
@@ -2476,7 +2497,7 @@ const relations = {
2476
2497
  attribute,
2477
2498
  fieldsToSelect,
2478
2499
  mainField,
2479
- source: { schema: sourceSchema },
2500
+ source: { schema: sourceSchema, isLocalized: isSourceLocalized },
2480
2501
  target: { schema: targetSchema, isLocalized: isTargetLocalized },
2481
2502
  sourceSchema,
2482
2503
  targetSchema,
@@ -2498,7 +2519,8 @@ const relations = {
2498
2519
  fieldsToSelect,
2499
2520
  mainField,
2500
2521
  source: {
2501
- schema: { uid: sourceUid, modelType: sourceModelType }
2522
+ schema: { uid: sourceUid, modelType: sourceModelType },
2523
+ isLocalized: isSourceLocalized
2502
2524
  },
2503
2525
  target: {
2504
2526
  schema: { uid: targetUid },
@@ -2536,12 +2558,16 @@ const relations = {
2536
2558
  } else {
2537
2559
  where.id = id;
2538
2560
  }
2539
- if (status) {
2540
- where[`${alias}.published_at`] = getPublishedAtClause(status, targetUid);
2561
+ const publishedAt = getPublishedAtClause(status, targetUid);
2562
+ if (!fp.isEmpty(publishedAt)) {
2563
+ where[`${alias}.published_at`] = publishedAt;
2541
2564
  }
2542
- if (filterByLocale) {
2565
+ if (isTargetLocalized && locale) {
2543
2566
  where[`${alias}.locale`] = locale;
2544
2567
  }
2568
+ if (isSourceLocalized && locale) {
2569
+ where.locale = locale;
2570
+ }
2545
2571
  if ((idsToInclude?.length ?? 0) !== 0) {
2546
2572
  where[`${alias}.id`].$notIn = idsToInclude;
2547
2573
  }
@@ -2559,7 +2585,8 @@ const relations = {
2559
2585
  id: { $notIn: fp.uniq(idsToOmit) }
2560
2586
  });
2561
2587
  }
2562
- const res = await strapi.db.query(targetUid).findPage(strapi.get("query-params").transform(targetUid, queryParams));
2588
+ const dbQuery = strapi.get("query-params").transform(targetUid, queryParams);
2589
+ const res = await strapi.db.query(targetUid).findPage(dbQuery);
2563
2590
  ctx.body = {
2564
2591
  ...res,
2565
2592
  results: await addStatusToRelations(targetUid, res.results)
@@ -2681,7 +2708,7 @@ const singleTypes = {
2681
2708
  permissionChecker2,
2682
2709
  model,
2683
2710
  // @ts-expect-error - fix types
2684
- { id: document.documentId, locale, publishedAt: null },
2711
+ { documentId: document.documentId, locale, publishedAt: null },
2685
2712
  { availableLocales: true, availableStatus: false }
2686
2713
  );
2687
2714
  ctx.body = { data: {}, meta };