@strapi/content-manager 5.5.2 → 5.6.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 (92) hide show
  1. package/dist/_chunks/{ComponentConfigurationPage-DYq8aqos.js → ComponentConfigurationPage-BlzvDpbX.js} +3 -3
  2. package/dist/_chunks/{ComponentConfigurationPage-DYq8aqos.js.map → ComponentConfigurationPage-BlzvDpbX.js.map} +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-CzVt9QCC.mjs → ComponentConfigurationPage-DaPOlQaD.mjs} +3 -3
  4. package/dist/_chunks/{ComponentConfigurationPage-CzVt9QCC.mjs.map → ComponentConfigurationPage-DaPOlQaD.mjs.map} +1 -1
  5. package/dist/_chunks/{EditConfigurationPage-CLDwrUv5.mjs → EditConfigurationPage-BZPXItXo.mjs} +3 -3
  6. package/dist/_chunks/{EditConfigurationPage-CLDwrUv5.mjs.map → EditConfigurationPage-BZPXItXo.mjs.map} +1 -1
  7. package/dist/_chunks/{EditConfigurationPage-C9IATpr0.js → EditConfigurationPage-uy-v43AR.js} +3 -3
  8. package/dist/_chunks/{EditConfigurationPage-C9IATpr0.js.map → EditConfigurationPage-uy-v43AR.js.map} +1 -1
  9. package/dist/_chunks/{EditViewPage-Ch-uBvbv.js → EditViewPage-DT6A4ayX.js} +3 -3
  10. package/dist/_chunks/{EditViewPage-Ch-uBvbv.js.map → EditViewPage-DT6A4ayX.js.map} +1 -1
  11. package/dist/_chunks/{EditViewPage-DtKM7Jgw.mjs → EditViewPage-oOLeTySr.mjs} +3 -3
  12. package/dist/_chunks/{EditViewPage-DtKM7Jgw.mjs.map → EditViewPage-oOLeTySr.mjs.map} +1 -1
  13. package/dist/_chunks/{Field-Bn1jgMeF.mjs → Field-D7dv2aUX.mjs} +107 -55
  14. package/dist/_chunks/Field-D7dv2aUX.mjs.map +1 -0
  15. package/dist/_chunks/{Field-B9ADaInZ.js → Field-kYFVIGiP.js} +108 -55
  16. package/dist/_chunks/Field-kYFVIGiP.js.map +1 -0
  17. package/dist/_chunks/{Form-BB5i9Pxl.mjs → Form-BxR6sc29.mjs} +2 -2
  18. package/dist/_chunks/{Form-BB5i9Pxl.mjs.map → Form-BxR6sc29.mjs.map} +1 -1
  19. package/dist/_chunks/{Form-C3kjKrPw.js → Form-CCijSg3V.js} +2 -2
  20. package/dist/_chunks/{Form-C3kjKrPw.js.map → Form-CCijSg3V.js.map} +1 -1
  21. package/dist/_chunks/{History-AwrK0-SA.js → History-BMndx49M.js} +4 -4
  22. package/dist/_chunks/{History-AwrK0-SA.js.map → History-BMndx49M.js.map} +1 -1
  23. package/dist/_chunks/{History-Cw2Q7OQL.mjs → History-D8F7aYQU.mjs} +4 -4
  24. package/dist/_chunks/{History-Cw2Q7OQL.mjs.map → History-D8F7aYQU.mjs.map} +1 -1
  25. package/dist/_chunks/{ListConfigurationPage-CNTJ0DBm.js → ListConfigurationPage-DouY1EWM.js} +2 -2
  26. package/dist/_chunks/{ListConfigurationPage-CNTJ0DBm.js.map → ListConfigurationPage-DouY1EWM.js.map} +1 -1
  27. package/dist/_chunks/{ListConfigurationPage-B47JIu1e.mjs → ListConfigurationPage-DqAdSPwC.mjs} +2 -2
  28. package/dist/_chunks/{ListConfigurationPage-B47JIu1e.mjs.map → ListConfigurationPage-DqAdSPwC.mjs.map} +1 -1
  29. package/dist/_chunks/{ListViewPage-Be_UEBar.js → ListViewPage-BPVmh9pq.js} +3 -3
  30. package/dist/_chunks/{ListViewPage-Be_UEBar.js.map → ListViewPage-BPVmh9pq.js.map} +1 -1
  31. package/dist/_chunks/{ListViewPage-DuvjX6ra.mjs → ListViewPage-C73F0jPh.mjs} +3 -3
  32. package/dist/_chunks/{ListViewPage-DuvjX6ra.mjs.map → ListViewPage-C73F0jPh.mjs.map} +1 -1
  33. package/dist/_chunks/{NoContentTypePage-C6M-Q0Tv.mjs → NoContentTypePage-B5w7iJOF.mjs} +2 -2
  34. package/dist/_chunks/{NoContentTypePage-C6M-Q0Tv.mjs.map → NoContentTypePage-B5w7iJOF.mjs.map} +1 -1
  35. package/dist/_chunks/{NoContentTypePage-B1J0KUCO.js → NoContentTypePage-BwcL--4H.js} +2 -2
  36. package/dist/_chunks/{NoContentTypePage-B1J0KUCO.js.map → NoContentTypePage-BwcL--4H.js.map} +1 -1
  37. package/dist/_chunks/{NoPermissionsPage-CN34TlEE.js → NoPermissionsPage-BMFKVcwJ.js} +2 -2
  38. package/dist/_chunks/{NoPermissionsPage-CN34TlEE.js.map → NoPermissionsPage-BMFKVcwJ.js.map} +1 -1
  39. package/dist/_chunks/{NoPermissionsPage-CAi3zCAD.mjs → NoPermissionsPage-UnEgMGK4.mjs} +2 -2
  40. package/dist/_chunks/{NoPermissionsPage-CAi3zCAD.mjs.map → NoPermissionsPage-UnEgMGK4.mjs.map} +1 -1
  41. package/dist/_chunks/{Preview-DOqm5jcJ.js → Preview-B7PR3Ok_.js} +5 -4
  42. package/dist/_chunks/Preview-B7PR3Ok_.js.map +1 -0
  43. package/dist/_chunks/{Preview-BrBRcL10.mjs → Preview-DECOhK0D.mjs} +5 -4
  44. package/dist/_chunks/Preview-DECOhK0D.mjs.map +1 -0
  45. package/dist/_chunks/{Relations-_K-HYOiM.mjs → Relations-DinMQJ4B.mjs} +3 -3
  46. package/dist/_chunks/{Relations-_K-HYOiM.mjs.map → Relations-DinMQJ4B.mjs.map} +1 -1
  47. package/dist/_chunks/{Relations-xtKZHtTN.js → Relations-lndx3aQk.js} +3 -3
  48. package/dist/_chunks/{Relations-xtKZHtTN.js.map → Relations-lndx3aQk.js.map} +1 -1
  49. package/dist/_chunks/{index-tETMKK2G.mjs → index-C2SagWVW.mjs} +11 -15
  50. package/dist/_chunks/index-C2SagWVW.mjs.map +1 -0
  51. package/dist/_chunks/{index-BlX-OdHL.js → index-Cnw4gqee.js} +11 -15
  52. package/dist/_chunks/index-Cnw4gqee.js.map +1 -0
  53. package/dist/_chunks/{layout-BaQBaz56.mjs → layout-DY_D9MGA.mjs} +3 -3
  54. package/dist/_chunks/{layout-BaQBaz56.mjs.map → layout-DY_D9MGA.mjs.map} +1 -1
  55. package/dist/_chunks/{layout-D8Sz3KxF.js → layout-ivwIVPnV.js} +3 -3
  56. package/dist/_chunks/{layout-D8Sz3KxF.js.map → layout-ivwIVPnV.js.map} +1 -1
  57. package/dist/_chunks/{relations-CAbbX8Sa.js → relations-B7C7O_Pv.js} +2 -2
  58. package/dist/_chunks/{relations-CAbbX8Sa.js.map → relations-B7C7O_Pv.js.map} +1 -1
  59. package/dist/_chunks/{relations-CsfmCqOU.mjs → relations-Boc5Y9kX.mjs} +2 -2
  60. package/dist/_chunks/{relations-CsfmCqOU.mjs.map → relations-Boc5Y9kX.mjs.map} +1 -1
  61. package/dist/admin/index.js +1 -1
  62. package/dist/admin/index.mjs +1 -1
  63. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.d.ts +7 -0
  64. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/utils/prismLanguages.d.ts +49 -0
  65. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +1 -0
  66. package/dist/server/index.js +74 -66
  67. package/dist/server/index.js.map +1 -1
  68. package/dist/server/index.mjs +75 -67
  69. package/dist/server/index.mjs.map +1 -1
  70. package/dist/server/src/controllers/utils/metadata.d.ts +1 -0
  71. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  72. package/dist/server/src/index.d.ts +3 -2
  73. package/dist/server/src/index.d.ts.map +1 -1
  74. package/dist/server/src/preview/index.d.ts.map +1 -1
  75. package/dist/server/src/services/document-metadata.d.ts +4 -2
  76. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  77. package/dist/server/src/services/index.d.ts +3 -2
  78. package/dist/server/src/services/index.d.ts.map +1 -1
  79. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  80. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  81. package/dist/server/src/services/utils/populate.d.ts +2 -2
  82. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  83. package/package.json +7 -5
  84. package/dist/_chunks/Field-B9ADaInZ.js.map +0 -1
  85. package/dist/_chunks/Field-Bn1jgMeF.mjs.map +0 -1
  86. package/dist/_chunks/Preview-BrBRcL10.mjs.map +0 -1
  87. package/dist/_chunks/Preview-DOqm5jcJ.js.map +0 -1
  88. package/dist/_chunks/index-BlX-OdHL.js.map +0 -1
  89. package/dist/_chunks/index-tETMKK2G.mjs.map +0 -1
  90. package/dist/admin/src/preview/constants.d.ts +0 -1
  91. package/dist/server/src/preview/constants.d.ts +0 -2
  92. package/dist/server/src/preview/constants.d.ts.map +0 -1
@@ -0,0 +1,49 @@
1
+ import 'prismjs/components/prism-asmatmel';
2
+ import 'prismjs/components/prism-bash';
3
+ import 'prismjs/components/prism-basic';
4
+ import 'prismjs/components/prism-c';
5
+ import 'prismjs/components/prism-clojure';
6
+ import 'prismjs/components/prism-cobol';
7
+ import 'prismjs/components/prism-cpp';
8
+ import 'prismjs/components/prism-csharp';
9
+ import 'prismjs/components/prism-dart';
10
+ import 'prismjs/components/prism-docker';
11
+ import 'prismjs/components/prism-elixir';
12
+ import 'prismjs/components/prism-erlang';
13
+ import 'prismjs/components/prism-fortran';
14
+ import 'prismjs/components/prism-fsharp';
15
+ import 'prismjs/components/prism-go';
16
+ import 'prismjs/components/prism-graphql';
17
+ import 'prismjs/components/prism-groovy';
18
+ import 'prismjs/components/prism-haskell';
19
+ import 'prismjs/components/prism-haxe';
20
+ import 'prismjs/components/prism-ini';
21
+ import 'prismjs/components/prism-java';
22
+ import 'prismjs/components/prism-javascript';
23
+ import 'prismjs/components/prism-jsx';
24
+ import 'prismjs/components/prism-json';
25
+ import 'prismjs/components/prism-julia';
26
+ import 'prismjs/components/prism-kotlin';
27
+ import 'prismjs/components/prism-latex';
28
+ import 'prismjs/components/prism-lua';
29
+ import 'prismjs/components/prism-markdown';
30
+ import 'prismjs/components/prism-matlab';
31
+ import 'prismjs/components/prism-makefile';
32
+ import 'prismjs/components/prism-objectivec';
33
+ import 'prismjs/components/prism-perl';
34
+ import 'prismjs/components/prism-php';
35
+ import 'prismjs/components/prism-powershell';
36
+ import 'prismjs/components/prism-python';
37
+ import 'prismjs/components/prism-r';
38
+ import 'prismjs/components/prism-ruby';
39
+ import 'prismjs/components/prism-rust';
40
+ import 'prismjs/components/prism-sas';
41
+ import 'prismjs/components/prism-scala';
42
+ import 'prismjs/components/prism-scheme';
43
+ import 'prismjs/components/prism-sql';
44
+ import 'prismjs/components/prism-stata';
45
+ import 'prismjs/components/prism-swift';
46
+ import 'prismjs/components/prism-typescript';
47
+ import 'prismjs/components/prism-tsx';
48
+ import 'prismjs/components/prism-vbnet';
49
+ import 'prismjs/components/prism-yaml';
@@ -1,4 +1,5 @@
1
1
  export declare const codeLanguages: {
2
2
  value: string;
3
3
  label: string;
4
+ decorate?: string;
4
5
  }[];
@@ -737,7 +737,6 @@ const getFeature$1 = () => {
737
737
  };
738
738
  };
739
739
  const history = getFeature$1();
740
- const FEATURE_ID = "preview";
741
740
  const info = { pluginName: "content-manager", type: "admin" };
742
741
  const previewRouter = {
743
742
  type: "admin",
@@ -915,9 +914,6 @@ const services$1 = {
915
914
  "preview-config": createPreviewConfigService
916
915
  };
917
916
  const getFeature = () => {
918
- if (!strapi.features.future.isEnabled(FEATURE_ID)) {
919
- return {};
920
- }
921
917
  return {
922
918
  register() {
923
919
  const config = getService(strapi, "preview-config");
@@ -3933,6 +3929,12 @@ function getPopulateForRelation(attribute, model, attributeName, { countMany, co
3933
3929
  if (initialPopulate) {
3934
3930
  return initialPopulate;
3935
3931
  }
3932
+ if (attributeName === "localizations") {
3933
+ const validationPopulate = getPopulateForValidation(model.uid);
3934
+ return {
3935
+ populate: validationPopulate.populate
3936
+ };
3937
+ }
3936
3938
  if (!isVisibleAttribute$1(model, attributeName)) {
3937
3939
  return true;
3938
3940
  }
@@ -3992,6 +3994,9 @@ const getDeepPopulate = (uid2, {
3992
3994
  return {};
3993
3995
  }
3994
3996
  const model = strapi.getModel(uid2);
3997
+ if (!model) {
3998
+ return {};
3999
+ }
3995
4000
  return Object.keys(model.attributes).reduce(
3996
4001
  (populateAcc, attributeName) => fp.merge(
3997
4002
  populateAcc,
@@ -4011,40 +4016,46 @@ const getDeepPopulate = (uid2, {
4011
4016
  {}
4012
4017
  );
4013
4018
  };
4014
- const getValidatableFieldsPopulate = (uid2, {
4015
- initialPopulate = {},
4016
- countMany = false,
4017
- countOne = false,
4018
- maxLevel = Infinity
4019
- } = {}, level = 1) => {
4020
- if (level > maxLevel) {
4019
+ const getPopulateForValidation = (uid2) => {
4020
+ const model = strapi.getModel(uid2);
4021
+ if (!model) {
4021
4022
  return {};
4022
4023
  }
4023
- const model = strapi.getModel(uid2);
4024
4024
  return Object.entries(model.attributes).reduce((populateAcc, [attributeName, attribute]) => {
4025
- if (!getDoesAttributeRequireValidation(attribute)) {
4025
+ if (isScalarAttribute(attribute)) {
4026
+ if (getDoesAttributeRequireValidation(attribute)) {
4027
+ populateAcc.fields = populateAcc.fields || [];
4028
+ populateAcc.fields.push(attributeName);
4029
+ }
4026
4030
  return populateAcc;
4027
4031
  }
4028
- if (isScalarAttribute(attribute)) {
4029
- return fp.merge(populateAcc, {
4030
- [attributeName]: true
4031
- });
4032
+ if (isComponent(attribute)) {
4033
+ const component = attribute.component;
4034
+ const componentResult = getPopulateForValidation(component);
4035
+ if (Object.keys(componentResult).length > 0) {
4036
+ populateAcc.populate = populateAcc.populate || {};
4037
+ populateAcc.populate[attributeName] = componentResult;
4038
+ }
4039
+ return populateAcc;
4032
4040
  }
4033
- return fp.merge(
4034
- populateAcc,
4035
- getPopulateFor(
4036
- attributeName,
4037
- model,
4038
- {
4039
- // @ts-expect-error - improve types
4040
- initialPopulate: initialPopulate?.[attributeName],
4041
- countMany,
4042
- countOne,
4043
- maxLevel
4041
+ if (isDynamicZone(attribute)) {
4042
+ const components2 = attribute.components;
4043
+ const componentsResult = (components2 || []).reduce(
4044
+ (acc, componentUID) => {
4045
+ const componentResult = getPopulateForValidation(componentUID);
4046
+ if (Object.keys(componentResult).length > 0) {
4047
+ acc[componentUID] = componentResult;
4048
+ }
4049
+ return acc;
4044
4050
  },
4045
- level
4046
- )
4047
- );
4051
+ {}
4052
+ );
4053
+ if (Object.keys(componentsResult).length > 0) {
4054
+ populateAcc.populate = populateAcc.populate || {};
4055
+ populateAcc.populate[attributeName] = { on: componentsResult };
4056
+ }
4057
+ }
4058
+ return populateAcc;
4048
4059
  }, {});
4049
4060
  };
4050
4061
  const getDeepPopulateDraftCount = (uid2) => {
@@ -4286,7 +4297,6 @@ const AVAILABLE_LOCALES_FIELDS = [
4286
4297
  "locale",
4287
4298
  "updatedAt",
4288
4299
  "createdAt",
4289
- "status",
4290
4300
  "publishedAt",
4291
4301
  "documentId"
4292
4302
  ];
@@ -4307,36 +4317,20 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4307
4317
  /**
4308
4318
  * Returns available locales of a document for the current status
4309
4319
  */
4310
- async getAvailableLocales(uid2, version, allVersions, validatableFields = []) {
4320
+ async getAvailableLocales(uid2, version, allVersions) {
4311
4321
  const versionsByLocale = fp.groupBy("locale", allVersions);
4312
4322
  if (version.locale) {
4313
4323
  delete versionsByLocale[version.locale];
4314
4324
  }
4315
4325
  const model = strapi2.getModel(uid2);
4316
- const keysToKeep = [...AVAILABLE_LOCALES_FIELDS, ...validatableFields];
4317
- const traversalFunction = async (localeVersion) => strapiUtils.traverseEntity(
4318
- ({ key }, { remove }) => {
4319
- if (keysToKeep.includes(key)) {
4320
- return;
4321
- }
4322
- remove(key);
4323
- },
4324
- { schema: model, getModel: strapi2.getModel.bind(strapi2) },
4325
- // @ts-expect-error fix types DocumentVersion incompatible with Data
4326
- localeVersion
4327
- );
4328
4326
  const mappingResult = await strapiUtils.async.map(
4329
4327
  Object.values(versionsByLocale),
4330
4328
  async (localeVersions) => {
4331
- const mappedLocaleVersions = await strapiUtils.async.map(
4332
- localeVersions,
4333
- traversalFunction
4334
- );
4335
4329
  if (!strapiUtils.contentTypes.hasDraftAndPublish(model)) {
4336
- return mappedLocaleVersions[0];
4330
+ return localeVersions[0];
4337
4331
  }
4338
- const draftVersion = mappedLocaleVersions.find((v) => v.publishedAt === null);
4339
- const otherVersions = mappedLocaleVersions.filter((v) => v.id !== draftVersion?.id);
4332
+ const draftVersion = localeVersions.find((v) => v.publishedAt === null);
4333
+ const otherVersions = localeVersions.filter((v) => v.id !== draftVersion?.id);
4340
4334
  if (!draftVersion) {
4341
4335
  return;
4342
4336
  }
@@ -4370,15 +4364,15 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4370
4364
  async getManyAvailableStatus(uid2, documents) {
4371
4365
  if (!documents.length) return [];
4372
4366
  const status = documents[0].publishedAt !== null ? "published" : "draft";
4373
- const locale = documents[0]?.locale;
4374
- const otherStatus = status === "published" ? "draft" : "published";
4375
- return strapi2.documents(uid2).findMany({
4376
- filters: {
4377
- documentId: { $in: documents.map((d) => d.documentId).filter(Boolean) }
4367
+ const locales = documents.map((d) => d.locale).filter(Boolean);
4368
+ return strapi2.query(uid2).findMany({
4369
+ where: {
4370
+ documentId: { $in: documents.map((d) => d.documentId).filter(Boolean) },
4371
+ // NOTE: find the "opposite" status
4372
+ publishedAt: { $null: status === "published" },
4373
+ locale: { $in: locales }
4378
4374
  },
4379
- status: otherStatus,
4380
- locale,
4381
- fields: ["documentId", "locale", "updatedAt", "createdAt", "publishedAt"]
4375
+ select: ["id", "documentId", "locale", "updatedAt", "createdAt", "publishedAt"]
4382
4376
  });
4383
4377
  },
4384
4378
  getStatus(version, otherDocumentStatuses) {
@@ -4404,11 +4398,9 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4404
4398
  // We could refactor this so the locales are only loaded when they're
4405
4399
  // needed. e.g. in the bulk locale action modal.
4406
4400
  async getMetadata(uid2, version, { availableLocales = true, availableStatus = true } = {}) {
4407
- const populate = getValidatableFieldsPopulate(uid2);
4408
- const versions = await strapi2.db.query(uid2).findMany({
4409
- where: { documentId: version.documentId },
4401
+ const { populate = {}, fields = [] } = getPopulateForValidation(uid2);
4402
+ const params = {
4410
4403
  populate: {
4411
- // Populate only fields that require validation for bulk locale actions
4412
4404
  ...populate,
4413
4405
  // NOTE: creator fields are selected in this way to avoid exposing sensitive data
4414
4406
  createdBy: {
@@ -4417,9 +4409,15 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4417
4409
  updatedBy: {
4418
4410
  select: ["id", "firstname", "lastname", "email"]
4419
4411
  }
4412
+ },
4413
+ fields: fp.uniq([...AVAILABLE_LOCALES_FIELDS, ...fields]),
4414
+ filters: {
4415
+ documentId: version.documentId
4420
4416
  }
4421
- });
4422
- const availableLocalesResult = availableLocales ? await this.getAvailableLocales(uid2, version, versions, Object.keys(populate)) : [];
4417
+ };
4418
+ const dbParams = strapi2.get("query-params").transform(uid2, params);
4419
+ const versions = await strapi2.db.query(uid2).findMany(dbParams);
4420
+ const availableLocalesResult = availableLocales ? await this.getAvailableLocales(uid2, version, versions) : [];
4423
4421
  const availableStatusResult = availableStatus ? this.getAvailableStatus(version, versions) : null;
4424
4422
  return {
4425
4423
  availableLocales: availableLocalesResult,
@@ -4446,6 +4444,16 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4446
4444
  opts.availableStatus = false;
4447
4445
  }
4448
4446
  const meta = await this.getMetadata(uid2, document, opts);
4447
+ if (document.localizations) {
4448
+ const otherStatus = await this.getManyAvailableStatus(uid2, document.localizations);
4449
+ document.localizations = document.localizations.map((d) => {
4450
+ const status = otherStatus.find((s) => s.documentId === d.documentId);
4451
+ return {
4452
+ ...d,
4453
+ status: this.getStatus(d, status ? [status] : [])
4454
+ };
4455
+ });
4456
+ }
4449
4457
  return {
4450
4458
  data: {
4451
4459
  ...document,