@strapi/content-manager 0.0.0-experimental.65ad956ae83ac65d866b9bb3e8c022c34b85468f → 0.0.0-experimental.71ed910bd859c7e558bd1c1042eaadb7d26fd22a

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 (82) hide show
  1. package/dist/_chunks/{ComponentConfigurationPage-CpBFh6_r.mjs → ComponentConfigurationPage-7-qB29e7.mjs} +3 -3
  2. package/dist/_chunks/{ComponentConfigurationPage-CpBFh6_r.mjs.map → ComponentConfigurationPage-7-qB29e7.mjs.map} +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-_zF8p6CY.js → ComponentConfigurationPage-DP7AC0UU.js} +3 -3
  4. package/dist/_chunks/{ComponentConfigurationPage-_zF8p6CY.js.map → ComponentConfigurationPage-DP7AC0UU.js.map} +1 -1
  5. package/dist/_chunks/{EditConfigurationPage-CE_yavTi.mjs → EditConfigurationPage-CI4XoymK.mjs} +3 -3
  6. package/dist/_chunks/{EditConfigurationPage-CE_yavTi.mjs.map → EditConfigurationPage-CI4XoymK.mjs.map} +1 -1
  7. package/dist/_chunks/{EditConfigurationPage-_aG2DJSU.js → EditConfigurationPage-DITVliEI.js} +3 -3
  8. package/dist/_chunks/{EditConfigurationPage-_aG2DJSU.js.map → EditConfigurationPage-DITVliEI.js.map} +1 -1
  9. package/dist/_chunks/{EditViewPage-G9uNzwYL.js → EditViewPage-CUS2EAhB.js} +8 -4
  10. package/dist/_chunks/EditViewPage-CUS2EAhB.js.map +1 -0
  11. package/dist/_chunks/{EditViewPage-DeTn7rAF.mjs → EditViewPage-Dzpno8xI.mjs} +8 -4
  12. package/dist/_chunks/EditViewPage-Dzpno8xI.mjs.map +1 -0
  13. package/dist/_chunks/{Field-CnCKhI1R.mjs → Field-B_jG_EV9.mjs} +31 -19
  14. package/dist/_chunks/{Field-CnCKhI1R.mjs.map → Field-B_jG_EV9.mjs.map} +1 -1
  15. package/dist/_chunks/{Field-DDHUWEfV.js → Field-CtUU1Fg8.js} +31 -19
  16. package/dist/_chunks/{Field-DDHUWEfV.js.map → Field-CtUU1Fg8.js.map} +1 -1
  17. package/dist/_chunks/{Form-IvVVwqRL.mjs → Form-BXHao2mZ.mjs} +2 -2
  18. package/dist/_chunks/{Form-IvVVwqRL.mjs.map → Form-BXHao2mZ.mjs.map} +1 -1
  19. package/dist/_chunks/{Form-DYETaKUX.js → Form-DTqO0ymI.js} +2 -2
  20. package/dist/_chunks/{Form-DYETaKUX.js.map → Form-DTqO0ymI.js.map} +1 -1
  21. package/dist/_chunks/{History-BMunT-do.mjs → History-2Ah2CQ4T.mjs} +4 -4
  22. package/dist/_chunks/{History-BMunT-do.mjs.map → History-2Ah2CQ4T.mjs.map} +1 -1
  23. package/dist/_chunks/{History-CnZDctSO.js → History-C_uSGzO5.js} +4 -4
  24. package/dist/_chunks/{History-CnZDctSO.js.map → History-C_uSGzO5.js.map} +1 -1
  25. package/dist/_chunks/{ListConfigurationPage-CDqkCxgV.mjs → ListConfigurationPage-BjSJlaoC.mjs} +2 -2
  26. package/dist/_chunks/{ListConfigurationPage-CDqkCxgV.mjs.map → ListConfigurationPage-BjSJlaoC.mjs.map} +1 -1
  27. package/dist/_chunks/{ListConfigurationPage-BynalOp8.js → ListConfigurationPage-nyuP7OSy.js} +2 -2
  28. package/dist/_chunks/{ListConfigurationPage-BynalOp8.js.map → ListConfigurationPage-nyuP7OSy.js.map} +1 -1
  29. package/dist/_chunks/{ListViewPage-_5gS-DOF.mjs → ListViewPage-B75x3nz2.mjs} +10 -6
  30. package/dist/_chunks/ListViewPage-B75x3nz2.mjs.map +1 -0
  31. package/dist/_chunks/{ListViewPage-I88Ouzoq.js → ListViewPage-DHgHD8Xg.js} +10 -6
  32. package/dist/_chunks/ListViewPage-DHgHD8Xg.js.map +1 -0
  33. package/dist/_chunks/{NoContentTypePage-BaWQ7HsA.js → NoContentTypePage-CDUKdZ7d.js} +2 -2
  34. package/dist/_chunks/{NoContentTypePage-BaWQ7HsA.js.map → NoContentTypePage-CDUKdZ7d.js.map} +1 -1
  35. package/dist/_chunks/{NoContentTypePage-Dht-55hr.mjs → NoContentTypePage-DUacQSyF.mjs} +2 -2
  36. package/dist/_chunks/{NoContentTypePage-Dht-55hr.mjs.map → NoContentTypePage-DUacQSyF.mjs.map} +1 -1
  37. package/dist/_chunks/{NoPermissionsPage-Bs8D5W_v.mjs → NoPermissionsPage-SFllMekk.mjs} +2 -2
  38. package/dist/_chunks/{NoPermissionsPage-Bs8D5W_v.mjs.map → NoPermissionsPage-SFllMekk.mjs.map} +1 -1
  39. package/dist/_chunks/{NoPermissionsPage-DCVUh5at.js → NoPermissionsPage-zwIZydDI.js} +2 -2
  40. package/dist/_chunks/{NoPermissionsPage-DCVUh5at.js.map → NoPermissionsPage-zwIZydDI.js.map} +1 -1
  41. package/dist/_chunks/{Relations-Chdt5qWc.mjs → Relations-D2NRW8fC.mjs} +13 -9
  42. package/dist/_chunks/Relations-D2NRW8fC.mjs.map +1 -0
  43. package/dist/_chunks/{Relations-BPgFQeGj.js → Relations-NFLaRNPr.js} +13 -9
  44. package/dist/_chunks/Relations-NFLaRNPr.js.map +1 -0
  45. package/dist/_chunks/{en-BVzUkPxZ.js → en-BlhnxQfj.js} +2 -2
  46. package/dist/_chunks/{en-BVzUkPxZ.js.map → en-BlhnxQfj.js.map} +1 -1
  47. package/dist/_chunks/{en-CPTj6CjC.mjs → en-C8YBvRrK.mjs} +2 -2
  48. package/dist/_chunks/{en-CPTj6CjC.mjs.map → en-C8YBvRrK.mjs.map} +1 -1
  49. package/dist/_chunks/{index-D4UGPFZC.mjs → index-C9HxCo5R.mjs} +874 -821
  50. package/dist/_chunks/index-C9HxCo5R.mjs.map +1 -0
  51. package/dist/_chunks/{index-BhbLFX4l.js → index-ovJRE1FM.js} +872 -819
  52. package/dist/_chunks/index-ovJRE1FM.js.map +1 -0
  53. package/dist/_chunks/{layout-D4HI4_PS.mjs → layout-DaUjDiWQ.mjs} +3 -3
  54. package/dist/_chunks/{layout-D4HI4_PS.mjs.map → layout-DaUjDiWQ.mjs.map} +1 -1
  55. package/dist/_chunks/{layout-CYA7s0qO.js → layout-UNWstw_s.js} +3 -3
  56. package/dist/_chunks/{layout-CYA7s0qO.js.map → layout-UNWstw_s.js.map} +1 -1
  57. package/dist/_chunks/{relations-1pXaYpBK.mjs → relations-D8iFAeRu.mjs} +2 -2
  58. package/dist/_chunks/{relations-1pXaYpBK.mjs.map → relations-D8iFAeRu.mjs.map} +1 -1
  59. package/dist/_chunks/{relations-DDZ9OxNo.js → relations-NN3coOG5.js} +2 -2
  60. package/dist/_chunks/{relations-DDZ9OxNo.js.map → relations-NN3coOG5.js.map} +1 -1
  61. package/dist/admin/index.js +2 -1
  62. package/dist/admin/index.js.map +1 -1
  63. package/dist/admin/index.mjs +3 -2
  64. package/dist/admin/src/exports.d.ts +1 -1
  65. package/dist/admin/src/hooks/useDocument.d.ts +32 -1
  66. package/dist/admin/src/pages/EditView/components/Header.d.ts +1 -0
  67. package/dist/server/index.js +23 -14
  68. package/dist/server/index.js.map +1 -1
  69. package/dist/server/index.mjs +23 -14
  70. package/dist/server/index.mjs.map +1 -1
  71. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  72. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  73. package/package.json +10 -10
  74. package/dist/_chunks/EditViewPage-DeTn7rAF.mjs.map +0 -1
  75. package/dist/_chunks/EditViewPage-G9uNzwYL.js.map +0 -1
  76. package/dist/_chunks/ListViewPage-I88Ouzoq.js.map +0 -1
  77. package/dist/_chunks/ListViewPage-_5gS-DOF.mjs.map +0 -1
  78. package/dist/_chunks/Relations-BPgFQeGj.js.map +0 -1
  79. package/dist/_chunks/Relations-Chdt5qWc.mjs.map +0 -1
  80. package/dist/_chunks/index-BhbLFX4l.js.map +0 -1
  81. package/dist/_chunks/index-D4UGPFZC.mjs.map +0 -1
  82. package/strapi-server.js +0 -3
@@ -31,7 +31,9 @@ type UseDocument = (args: UseDocumentArgs, opts?: UseDocumentOpts) => {
31
31
  * This is the schema of the content type, it is not the same as the layout.
32
32
  */
33
33
  schema?: Schema;
34
+ schemas?: Schema[];
34
35
  validate: (document: Document) => null | FormErrors;
36
+ hasError?: boolean;
35
37
  };
36
38
  /**
37
39
  * @alpha
@@ -78,10 +80,39 @@ declare const useDoc: () => {
78
80
  * This is the schema of the content type, it is not the same as the layout.
79
81
  */
80
82
  schema?: ContentType | undefined;
83
+ schemas?: ContentType[] | undefined;
81
84
  validate: (document: Document) => null | FormErrors;
85
+ hasError?: boolean | undefined;
82
86
  collectionType: string;
83
87
  model: string;
84
88
  id: string | undefined;
85
89
  };
86
- export { useDocument, useDoc };
90
+ /**
91
+ * @public
92
+ * @experimental
93
+ * Content manager context hooks for plugin development.
94
+ * Make sure to use this hook inside the content manager.
95
+ */
96
+ declare const useContentManagerContext: () => {
97
+ error: import("@reduxjs/toolkit").SerializedError | import("../utils/api").BaseQueryError | undefined;
98
+ isLoading: boolean;
99
+ model: string;
100
+ collectionType: string;
101
+ id: string | undefined;
102
+ slug: string;
103
+ isCreatingEntry: boolean;
104
+ isSingleType: boolean;
105
+ hasDraftAndPublish: boolean;
106
+ components: ComponentsDictionary;
107
+ contentType: ContentType | undefined;
108
+ contentTypes: ContentType[] | undefined;
109
+ form: import("@strapi/admin/strapi-admin").FormContextValue<import("@strapi/admin/strapi-admin").FormValues>;
110
+ layout: {
111
+ error?: import("@reduxjs/toolkit").SerializedError | import("../utils/api").BaseQueryError | undefined;
112
+ isLoading: boolean;
113
+ edit: import("./useDocumentLayout").EditLayout;
114
+ list: import("./useDocumentLayout").ListLayout;
115
+ };
116
+ };
117
+ export { useDocument, useDoc, useContentManagerContext };
87
118
  export type { UseDocument, UseDocumentArgs, Document, Schema, ComponentsDictionary };
@@ -28,6 +28,7 @@ interface HeaderActionDescription {
28
28
  }>;
29
29
  onSelect?: (value: string) => void;
30
30
  value?: string;
31
+ customizeContent?: (value: string) => React.ReactNode;
31
32
  }
32
33
  declare const DEFAULT_HEADER_ACTIONS: DocumentActionComponent[];
33
34
  export { Header, DEFAULT_HEADER_ACTIONS };
@@ -1924,11 +1924,17 @@ const collectionTypes = {
1924
1924
  }
1925
1925
  const isUpdate = !isCreate;
1926
1926
  if (isUpdate) {
1927
- document = await documentManager2.findOne(id, model, { populate, locale });
1928
- if (!document) {
1927
+ const documentExists = documentManager2.exists(model, id);
1928
+ if (!documentExists) {
1929
1929
  throw new strapiUtils.errors.NotFoundError("Document not found");
1930
1930
  }
1931
- if (permissionChecker2.can.update(document)) {
1931
+ document = await documentManager2.findOne(id, model, { populate, locale });
1932
+ if (!document) {
1933
+ if (permissionChecker2.cannot.create({ locale }) || permissionChecker2.cannot.publish({ locale })) {
1934
+ throw new strapiUtils.errors.ForbiddenError();
1935
+ }
1936
+ document = await updateDocument(ctx);
1937
+ } else if (permissionChecker2.can.update(document)) {
1932
1938
  await updateDocument(ctx);
1933
1939
  }
1934
1940
  }
@@ -2382,11 +2388,8 @@ const validateLocale = (sourceUid, targetUid, locale) => {
2382
2388
  const isLocalized = strapi.plugin("i18n").service("content-types").isLocalizedContentType;
2383
2389
  const isSourceLocalized = isLocalized(sourceModel);
2384
2390
  const isTargetLocalized = isLocalized(targetModel);
2385
- let validatedLocale = locale;
2386
- if (!targetModel || !isTargetLocalized)
2387
- validatedLocale = void 0;
2388
2391
  return {
2389
- locale: validatedLocale,
2392
+ locale,
2390
2393
  isSourceLocalized,
2391
2394
  isTargetLocalized
2392
2395
  };
@@ -2489,7 +2492,7 @@ const relations = {
2489
2492
  attribute,
2490
2493
  fieldsToSelect,
2491
2494
  mainField,
2492
- source: { schema: sourceSchema },
2495
+ source: { schema: sourceSchema, isLocalized: isSourceLocalized },
2493
2496
  target: { schema: targetSchema, isLocalized: isTargetLocalized },
2494
2497
  sourceSchema,
2495
2498
  targetSchema,
@@ -2511,7 +2514,8 @@ const relations = {
2511
2514
  fieldsToSelect,
2512
2515
  mainField,
2513
2516
  source: {
2514
- schema: { uid: sourceUid, modelType: sourceModelType }
2517
+ schema: { uid: sourceUid, modelType: sourceModelType },
2518
+ isLocalized: isSourceLocalized
2515
2519
  },
2516
2520
  target: {
2517
2521
  schema: { uid: targetUid },
@@ -2549,12 +2553,16 @@ const relations = {
2549
2553
  } else {
2550
2554
  where.id = id;
2551
2555
  }
2552
- if (status) {
2553
- where[`${alias}.published_at`] = getPublishedAtClause(status, targetUid);
2556
+ const publishedAt = getPublishedAtClause(status, targetUid);
2557
+ if (!fp.isEmpty(publishedAt)) {
2558
+ where[`${alias}.published_at`] = publishedAt;
2554
2559
  }
2555
- if (filterByLocale) {
2560
+ if (isTargetLocalized && locale) {
2556
2561
  where[`${alias}.locale`] = locale;
2557
2562
  }
2563
+ if (isSourceLocalized && locale) {
2564
+ where.locale = locale;
2565
+ }
2558
2566
  if ((idsToInclude?.length ?? 0) !== 0) {
2559
2567
  where[`${alias}.id`].$notIn = idsToInclude;
2560
2568
  }
@@ -2572,7 +2580,8 @@ const relations = {
2572
2580
  id: { $notIn: fp.uniq(idsToOmit) }
2573
2581
  });
2574
2582
  }
2575
- const res = await strapi.db.query(targetUid).findPage(strapi.get("query-params").transform(targetUid, queryParams));
2583
+ const dbQuery = strapi.get("query-params").transform(targetUid, queryParams);
2584
+ const res = await strapi.db.query(targetUid).findPage(dbQuery);
2576
2585
  ctx.body = {
2577
2586
  ...res,
2578
2587
  results: await addStatusToRelations(targetUid, res.results)
@@ -2694,7 +2703,7 @@ const singleTypes = {
2694
2703
  permissionChecker2,
2695
2704
  model,
2696
2705
  // @ts-expect-error - fix types
2697
- { id: document.documentId, locale, publishedAt: null },
2706
+ { documentId: document.documentId, locale, publishedAt: null },
2698
2707
  { availableLocales: true, availableStatus: false }
2699
2708
  );
2700
2709
  ctx.body = { data: {}, meta };