@strapi/content-releases 5.0.0-beta.0 → 5.0.0-beta.10

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 (71) hide show
  1. package/dist/_chunks/{App-IkyOz9wq.mjs → App-B2R2exNT.mjs} +257 -256
  2. package/dist/_chunks/App-B2R2exNT.mjs.map +1 -0
  3. package/dist/_chunks/{App-FuRaphre.js → App-CEwOQkKT.js} +265 -265
  4. package/dist/_chunks/App-CEwOQkKT.js.map +1 -0
  5. package/dist/_chunks/{PurchaseContentReleases-YhAPgpG9.js → PurchaseContentReleases-Be3acS2L.js} +8 -7
  6. package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js.map +1 -0
  7. package/dist/_chunks/{PurchaseContentReleases-Clm0iACO.mjs → PurchaseContentReleases-_MxP6-Dt.mjs} +9 -8
  8. package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs.map +1 -0
  9. package/dist/_chunks/{en-RdapH-9X.mjs → en-B9Ur3VsE.mjs} +11 -2
  10. package/dist/_chunks/en-B9Ur3VsE.mjs.map +1 -0
  11. package/dist/_chunks/{en-faJDuv3q.js → en-DtFJ5ViE.js} +11 -2
  12. package/dist/_chunks/en-DtFJ5ViE.js.map +1 -0
  13. package/dist/_chunks/{index-Sb3Nal8H.js → index-BrWv-zV4.js} +169 -193
  14. package/dist/_chunks/index-BrWv-zV4.js.map +1 -0
  15. package/dist/_chunks/{index-qP3rNiDS.mjs → index-DbmynICx.mjs} +170 -192
  16. package/dist/_chunks/index-DbmynICx.mjs.map +1 -0
  17. package/dist/admin/index.js +1 -1
  18. package/dist/admin/index.mjs +2 -2
  19. package/dist/admin/src/components/CMReleasesContainer.d.ts +21 -0
  20. package/dist/admin/src/components/ReleaseAction.d.ts +3 -0
  21. package/dist/admin/src/components/ReleaseActionMenu.d.ts +1 -1
  22. package/dist/admin/src/components/ReleaseListCell.d.ts +0 -0
  23. package/dist/admin/src/components/ReleaseModal.d.ts +3 -2
  24. package/dist/admin/src/services/release.d.ts +56 -320
  25. package/dist/admin/src/utils/api.d.ts +6 -0
  26. package/dist/server/index.js +101 -52
  27. package/dist/server/index.js.map +1 -1
  28. package/dist/server/index.mjs +102 -53
  29. package/dist/server/index.mjs.map +1 -1
  30. package/dist/server/src/bootstrap.d.ts +2 -2
  31. package/dist/server/src/bootstrap.d.ts.map +1 -1
  32. package/dist/server/src/controllers/index.d.ts +1 -0
  33. package/dist/server/src/controllers/index.d.ts.map +1 -1
  34. package/dist/server/src/controllers/release-action.d.ts.map +1 -1
  35. package/dist/server/src/controllers/release.d.ts +1 -0
  36. package/dist/server/src/controllers/release.d.ts.map +1 -1
  37. package/dist/server/src/controllers/validation/release-action.d.ts +7 -2
  38. package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -1
  39. package/dist/server/src/destroy.d.ts +2 -2
  40. package/dist/server/src/destroy.d.ts.map +1 -1
  41. package/dist/server/src/index.d.ts +1412 -1411
  42. package/dist/server/src/index.d.ts.map +1 -1
  43. package/dist/server/src/migrations/index.d.ts.map +1 -1
  44. package/dist/server/src/register.d.ts +2 -2
  45. package/dist/server/src/register.d.ts.map +1 -1
  46. package/dist/server/src/routes/release.d.ts.map +1 -1
  47. package/dist/server/src/services/index.d.ts +1407 -1407
  48. package/dist/server/src/services/release.d.ts +9 -9
  49. package/dist/server/src/services/release.d.ts.map +1 -1
  50. package/dist/server/src/services/scheduling.d.ts +6 -6
  51. package/dist/server/src/services/scheduling.d.ts.map +1 -1
  52. package/dist/server/src/services/validation.d.ts +2 -2
  53. package/dist/server/src/services/validation.d.ts.map +1 -1
  54. package/dist/server/src/utils/index.d.ts +10 -10
  55. package/dist/server/src/utils/index.d.ts.map +1 -1
  56. package/dist/shared/contracts/release-actions.d.ts +9 -9
  57. package/dist/shared/contracts/release-actions.d.ts.map +1 -1
  58. package/dist/shared/contracts/releases.d.ts +17 -1
  59. package/dist/shared/contracts/releases.d.ts.map +1 -1
  60. package/dist/shared/types.d.ts +2 -2
  61. package/dist/shared/types.d.ts.map +1 -1
  62. package/package.json +19 -19
  63. package/dist/_chunks/App-FuRaphre.js.map +0 -1
  64. package/dist/_chunks/App-IkyOz9wq.mjs.map +0 -1
  65. package/dist/_chunks/PurchaseContentReleases-Clm0iACO.mjs.map +0 -1
  66. package/dist/_chunks/PurchaseContentReleases-YhAPgpG9.js.map +0 -1
  67. package/dist/_chunks/en-RdapH-9X.mjs.map +0 -1
  68. package/dist/_chunks/en-faJDuv3q.js.map +0 -1
  69. package/dist/_chunks/index-Sb3Nal8H.js.map +0 -1
  70. package/dist/_chunks/index-qP3rNiDS.mjs.map +0 -1
  71. package/dist/admin/src/services/axios.d.ts +0 -29
@@ -4,16 +4,14 @@ const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
5
  const query = require("@reduxjs/toolkit/query");
6
6
  const strapiAdmin = require("@strapi/admin/strapi-admin");
7
+ const strapiAdmin$1 = require("@strapi/content-manager/strapi-admin");
7
8
  const designSystem = require("@strapi/design-system");
8
- const v2 = require("@strapi/design-system/v2");
9
- const axios = require("axios");
9
+ const symbols = require("@strapi/icons/symbols");
10
10
  const formik = require("formik");
11
11
  const reactIntl = require("react-intl");
12
12
  const reactRouterDom = require("react-router-dom");
13
13
  const yup = require("yup");
14
- const react = require("@reduxjs/toolkit/query/react");
15
- const styled = require("styled-components");
16
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
14
+ const styledComponents = require("styled-components");
17
15
  function _interopNamespace(e) {
18
16
  if (e && e.__esModule)
19
17
  return e;
@@ -34,7 +32,6 @@ function _interopNamespace(e) {
34
32
  }
35
33
  const React__namespace = /* @__PURE__ */ _interopNamespace(React);
36
34
  const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
37
- const styled__default = /* @__PURE__ */ _interopDefault(styled);
38
35
  const __variableDynamicImportRuntimeHelper = (glob, path) => {
39
36
  const v = glob[path];
40
37
  if (v) {
@@ -116,49 +113,9 @@ const PERMISSIONS = {
116
113
  }
117
114
  ]
118
115
  };
119
- const pluginId = "content-releases";
120
- const axiosBaseQuery = async ({
121
- url,
122
- method,
123
- data,
124
- config
125
- }) => {
126
- try {
127
- const { get, post, del, put } = strapiAdmin.getFetchClient();
128
- if (method === "POST") {
129
- const result2 = await post(url, data, config);
130
- return { data: result2.data };
131
- }
132
- if (method === "DELETE") {
133
- const result2 = await del(url, config);
134
- return { data: result2.data };
135
- }
136
- if (method === "PUT") {
137
- const result2 = await put(url, data, config);
138
- return { data: result2.data };
139
- }
140
- const result = await get(url, config);
141
- return { data: result.data };
142
- } catch (error) {
143
- const err = error;
144
- return {
145
- error: {
146
- status: err.response?.status,
147
- code: err.code,
148
- response: {
149
- data: err.response?.data
150
- }
151
- }
152
- };
153
- }
154
- };
155
- const isAxiosError = (err) => {
156
- return typeof err === "object" && err !== null && "response" in err && typeof err.response === "object" && err.response !== null && "data" in err.response;
157
- };
158
- const releaseApi = react.createApi({
159
- reducerPath: pluginId,
160
- baseQuery: axiosBaseQuery,
161
- tagTypes: ["Release", "ReleaseAction"],
116
+ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
117
+ addTagTypes: ["Release", "ReleaseAction", "EntriesInRelease"]
118
+ }).injectEndpoints({
162
119
  endpoints: (build) => {
163
120
  return {
164
121
  getReleasesForEntry: build.query({
@@ -273,6 +230,20 @@ const releaseApi = react.createApi({
273
230
  { type: "ReleaseAction", id: "LIST" }
274
231
  ]
275
232
  }),
233
+ createManyReleaseActions: build.mutation({
234
+ query({ body, params }) {
235
+ return {
236
+ url: `/content-releases/${params.releaseId}/actions/bulk`,
237
+ method: "POST",
238
+ data: body
239
+ };
240
+ },
241
+ invalidatesTags: [
242
+ { type: "Release", id: "LIST" },
243
+ { type: "ReleaseAction", id: "LIST" },
244
+ { type: "EntriesInRelease" }
245
+ ]
246
+ }),
276
247
  updateReleaseAction: build.mutation({
277
248
  query({ body, params }) {
278
249
  return {
@@ -288,13 +259,17 @@ const releaseApi = react.createApi({
288
259
  ...query2
289
260
  };
290
261
  const patchResult = dispatch(
291
- releaseApi.util.updateQueryData("getReleaseActions", paramsWithoutActionId, (draft) => {
292
- const [key, index] = actionPath;
293
- const action = draft.data[key][index];
294
- if (action) {
295
- action.type = body.type;
262
+ releaseApi.util.updateQueryData(
263
+ "getReleaseActions",
264
+ paramsWithoutActionId,
265
+ (draft) => {
266
+ const [key, index] = actionPath;
267
+ const action = draft.data[key][index];
268
+ if (action) {
269
+ action.type = body.type;
270
+ }
296
271
  }
297
- })
272
+ )
298
273
  );
299
274
  try {
300
275
  await queryFulfilled;
@@ -310,9 +285,11 @@ const releaseApi = react.createApi({
310
285
  method: "DELETE"
311
286
  };
312
287
  },
313
- invalidatesTags: [
288
+ invalidatesTags: (result, error, arg) => [
314
289
  { type: "Release", id: "LIST" },
315
- { type: "ReleaseAction", id: "LIST" }
290
+ { type: "Release", id: arg.params.releaseId },
291
+ { type: "ReleaseAction", id: "LIST" },
292
+ { type: "EntriesInRelease" }
316
293
  ]
317
294
  }),
318
295
  publishRelease: build.mutation({
@@ -331,7 +308,22 @@ const releaseApi = react.createApi({
331
308
  method: "DELETE"
332
309
  };
333
310
  },
334
- invalidatesTags: () => [{ type: "Release", id: "LIST" }]
311
+ invalidatesTags: () => [{ type: "Release", id: "LIST" }, { type: "EntriesInRelease" }]
312
+ }),
313
+ getMappedEntriesInReleases: build.query({
314
+ query(params) {
315
+ return {
316
+ url: "/content-releases/mapEntriesToReleases",
317
+ method: "GET",
318
+ config: {
319
+ params
320
+ }
321
+ };
322
+ },
323
+ transformResponse(response) {
324
+ return response.data;
325
+ },
326
+ providesTags: [{ type: "EntriesInRelease" }]
335
327
  })
336
328
  };
337
329
  }
@@ -343,11 +335,13 @@ const {
343
335
  useGetReleaseActionsQuery,
344
336
  useCreateReleaseMutation,
345
337
  useCreateReleaseActionMutation,
338
+ useCreateManyReleaseActionsMutation,
346
339
  useUpdateReleaseMutation,
347
340
  useUpdateReleaseActionMutation,
348
341
  usePublishReleaseMutation,
349
342
  useDeleteReleaseActionMutation,
350
- useDeleteReleaseMutation
343
+ useDeleteReleaseMutation,
344
+ useGetMappedEntriesInReleasesQuery
351
345
  } = releaseApi;
352
346
  const getTimezoneOffset = (timezone, date) => {
353
347
  try {
@@ -365,14 +359,12 @@ const getTimezoneOffset = (timezone, date) => {
365
359
  return "";
366
360
  }
367
361
  };
368
- const StyledMenuItem = styled__default.default(v2.Menu.Item)`
362
+ const StyledMenuItem = styledComponents.styled(designSystem.Menu.Item)`
369
363
  &:hover {
370
- background: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}100`]};
364
+ background: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}100`]};
371
365
 
372
366
  svg {
373
- path {
374
- fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
375
- }
367
+ fill: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}600`]};
376
368
  }
377
369
 
378
370
  a {
@@ -381,9 +373,7 @@ const StyledMenuItem = styled__default.default(v2.Menu.Item)`
381
373
  }
382
374
 
383
375
  svg {
384
- path {
385
- fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
386
- }
376
+ fill: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}600`]};
387
377
  }
388
378
 
389
379
  a {
@@ -395,10 +385,6 @@ const StyledMenuItem = styled__default.default(v2.Menu.Item)`
395
385
  width: 100%;
396
386
  }
397
387
  `;
398
- const StyledIconButton = styled__default.default(designSystem.IconButton)`
399
- /* Setting this style inline with borderColor will not apply the style */
400
- border: ${({ theme }) => `1px solid ${theme.colors.neutral200}`};
401
- `;
402
388
  const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
403
389
  const { formatMessage } = reactIntl.useIntl();
404
390
  const { toggleNotification } = strapiAdmin.useNotification();
@@ -422,7 +408,7 @@ const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
422
408
  return;
423
409
  }
424
410
  if ("error" in response) {
425
- if (axios.isAxiosError(response.error)) {
411
+ if (strapiAdmin.isFetchError(response.error)) {
426
412
  toggleNotification({
427
413
  type: "danger",
428
414
  message: formatAPIError(response.error)
@@ -438,8 +424,8 @@ const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
438
424
  if (!canDeleteAction) {
439
425
  return null;
440
426
  }
441
- return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { variant: "danger", onSelect: handleDeleteAction, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
442
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Cross, width: 3, height: 3 }),
427
+ return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { $variant: "danger", onSelect: handleDeleteAction, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
428
+ /* @__PURE__ */ jsxRuntime.jsx(icons.Cross, { width: "1.6rem", height: "1.6rem" }),
443
429
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "danger600", variant: "omega", children: formatMessage({
444
430
  id: "content-releases.content-manager-edit-view.remove-from-release",
445
431
  defaultMessage: "Remove from release"
@@ -463,7 +449,7 @@ const ReleaseActionEntryLinkItem = ({
463
449
  return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));
464
450
  }, [contentTypeUid, locale, userPermissions]);
465
451
  const {
466
- allowedActions: { canUpdateContentType }
452
+ allowedActions: { canUpdate: canUpdateContentType }
467
453
  } = strapiAdmin.useRBAC({
468
454
  updateContentType: [
469
455
  {
@@ -475,57 +461,55 @@ const ReleaseActionEntryLinkItem = ({
475
461
  if (!canUpdateContentType || !canUpdateEntryForLocale) {
476
462
  return null;
477
463
  }
478
- return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
479
- v2.Link,
464
+ return /* @__PURE__ */ jsxRuntime.jsx(
465
+ StyledMenuItem,
480
466
  {
481
- as: reactRouterDom.NavLink,
467
+ tag: reactRouterDom.Link,
468
+ isLink: true,
482
469
  to: {
483
470
  pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
484
471
  search: locale && `?plugins[i18n][locale]=${locale}`
485
472
  },
486
- startIcon: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Pencil, width: 3, height: 3 }),
487
- children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
488
- id: "content-releases.content-manager-edit-view.edit-entry",
489
- defaultMessage: "Edit entry"
490
- }) })
473
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
474
+ /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, { width: "1.6rem", height: "1.6rem" }),
475
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
476
+ id: "content-releases.content-manager-edit-view.edit-entry",
477
+ defaultMessage: "Edit entry"
478
+ }) })
479
+ ] })
491
480
  }
492
- ) });
481
+ );
493
482
  };
494
483
  const EditReleaseItem = ({ releaseId }) => {
495
484
  const { formatMessage } = reactIntl.useIntl();
496
- return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
497
- v2.Link,
498
- {
499
- as: reactRouterDom.NavLink,
500
- to: `/plugins/content-releases/${releaseId}`,
501
- startIcon: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Pencil, width: 3, height: 3 }),
502
- children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
485
+ return (
486
+ /* @ts-expect-error inference isn't working in DS */
487
+ /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { tag: reactRouterDom.Link, isLink: true, to: `/plugins/content-releases/${releaseId}`, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
488
+ /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, { width: "1.6rem", height: "1.6rem" }),
489
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
503
490
  id: "content-releases.content-manager-edit-view.edit-release",
504
491
  defaultMessage: "Edit release"
505
492
  }) })
506
- }
507
- ) });
493
+ ] }) })
494
+ );
508
495
  };
509
- const Root = ({ children, hasTriggerBorder = false }) => {
496
+ const Root = ({ children }) => {
510
497
  const { formatMessage } = reactIntl.useIntl();
511
498
  const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
512
499
  return (
513
500
  // A user can access the dropdown if they have permissions to delete a release-action OR update a release
514
- allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxRuntime.jsxs(v2.Menu.Root, { children: [
515
- /* @__PURE__ */ jsxRuntime.jsx(
516
- v2.Menu.Trigger,
501
+ allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Root, { children: [
502
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Menu.Trigger, { paddingLeft: 2, paddingRight: 2, children: /* @__PURE__ */ jsxRuntime.jsx(
503
+ designSystem.AccessibleIcon,
517
504
  {
518
- as: hasTriggerBorder ? StyledIconButton : designSystem.IconButton,
519
- paddingLeft: 2,
520
- paddingRight: 2,
521
- "aria-label": formatMessage({
505
+ label: formatMessage({
522
506
  id: "content-releases.content-manager-edit-view.release-action-menu",
523
507
  defaultMessage: "Release action options"
524
508
  }),
525
- icon: /* @__PURE__ */ jsxRuntime.jsx(icons.More, {})
509
+ children: /* @__PURE__ */ jsxRuntime.jsx(icons.More, {})
526
510
  }
527
- ),
528
- /* @__PURE__ */ jsxRuntime.jsx(v2.Menu.Content, { top: 1, popoverPlacement: "bottom-end", children })
511
+ ) }),
512
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Menu.Content, { top: 1, popoverPlacement: "bottom-end", children })
529
513
  ] }) : null
530
514
  );
531
515
  };
@@ -541,11 +525,11 @@ const getBorderLeftRadiusValue = (actionType) => {
541
525
  const getBorderRightRadiusValue = (actionType) => {
542
526
  return actionType === "publish" ? 0 : 1;
543
527
  };
544
- const FieldWrapper = styled__default.default(designSystem.Field)`
545
- border-top-left-radius: ${({ actionType, theme }) => theme.spaces[getBorderLeftRadiusValue(actionType)]};
546
- border-bottom-left-radius: ${({ actionType, theme }) => theme.spaces[getBorderLeftRadiusValue(actionType)]};
547
- border-top-right-radius: ${({ actionType, theme }) => theme.spaces[getBorderRightRadiusValue(actionType)]};
548
- border-bottom-right-radius: ${({ actionType, theme }) => theme.spaces[getBorderRightRadiusValue(actionType)]};
528
+ const FieldWrapper = styledComponents.styled(designSystem.Field.Root)`
529
+ border-top-left-radius: ${({ $actionType, theme }) => theme.spaces[getBorderLeftRadiusValue($actionType)]};
530
+ border-bottom-left-radius: ${({ $actionType, theme }) => theme.spaces[getBorderLeftRadiusValue($actionType)]};
531
+ border-top-right-radius: ${({ $actionType, theme }) => theme.spaces[getBorderRightRadiusValue($actionType)]};
532
+ border-bottom-right-radius: ${({ $actionType, theme }) => theme.spaces[getBorderRightRadiusValue($actionType)]};
549
533
 
550
534
  > label {
551
535
  color: inherit;
@@ -556,14 +540,14 @@ const FieldWrapper = styled__default.default(designSystem.Field)`
556
540
  }
557
541
 
558
542
  &[data-checked='true'] {
559
- color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
560
- background-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary100 : theme.colors.danger100};
561
- border-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
543
+ color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
544
+ background-color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary100 : theme.colors.danger100};
545
+ border-color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
562
546
  }
563
547
 
564
548
  &[data-checked='false'] {
565
- border-left: ${({ actionType }) => actionType === "unpublish" && "none"};
566
- border-right: ${({ actionType }) => actionType === "publish" && "none"};
549
+ border-left: ${({ $actionType }) => $actionType === "unpublish" && "none"};
550
+ border-right: ${({ $actionType }) => $actionType === "publish" && "none"};
567
551
  }
568
552
 
569
553
  &[data-checked='false'][data-disabled='false']:hover {
@@ -592,7 +576,7 @@ const ActionOption = ({
592
576
  return /* @__PURE__ */ jsxRuntime.jsx(
593
577
  FieldWrapper,
594
578
  {
595
- actionType,
579
+ $actionType: actionType,
596
580
  background: "primary0",
597
581
  borderColor: "neutral200",
598
582
  color: selected === actionType ? "primary600" : "neutral600",
@@ -600,12 +584,11 @@ const ActionOption = ({
600
584
  cursor: "pointer",
601
585
  "data-checked": selected === actionType,
602
586
  "data-disabled": disabled && selected !== actionType,
603
- children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.FieldLabel, { htmlFor: `${name}-${actionType}`, children: [
587
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Label, { children: [
604
588
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { children: /* @__PURE__ */ jsxRuntime.jsx(
605
- designSystem.FieldInput,
589
+ designSystem.Field.Input,
606
590
  {
607
591
  type: "radio",
608
- id: `${name}-${actionType}`,
609
592
  name,
610
593
  checked: selected === actionType,
611
594
  onChange: handleChange,
@@ -660,18 +643,18 @@ const NoReleases = () => {
660
643
  return /* @__PURE__ */ jsxRuntime.jsx(
661
644
  designSystem.EmptyStateLayout,
662
645
  {
663
- icon: /* @__PURE__ */ jsxRuntime.jsx(icons.EmptyDocuments, { width: "10rem" }),
646
+ icon: /* @__PURE__ */ jsxRuntime.jsx(symbols.EmptyDocuments, { width: "16rem" }),
664
647
  content: formatMessage({
665
648
  id: "content-releases.content-manager-edit-view.add-to-release.no-releases-message",
666
649
  defaultMessage: "No available releases. Open the list of releases and create a new one from there."
667
650
  }),
668
651
  action: /* @__PURE__ */ jsxRuntime.jsx(
669
- v2.LinkButton,
652
+ designSystem.LinkButton,
670
653
  {
671
654
  to: {
672
655
  pathname: "/plugins/content-releases"
673
656
  },
674
- as: reactRouterDom.Link,
657
+ tag: reactRouterDom.Link,
675
658
  variant: "secondary",
676
659
  children: formatMessage({
677
660
  id: "content-releases.content-manager-edit-view.add-to-release.redirect-button",
@@ -683,11 +666,11 @@ const NoReleases = () => {
683
666
  );
684
667
  };
685
668
  const AddActionToReleaseModal = ({
686
- handleClose,
669
+ open,
670
+ onOpenChange,
687
671
  contentTypeUid,
688
672
  entryId
689
673
  }) => {
690
- const releaseHeaderId = React__namespace.useId();
691
674
  const { formatMessage } = reactIntl.useIntl();
692
675
  const { toggleNotification } = strapiAdmin.useNotification();
693
676
  const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
@@ -718,11 +701,11 @@ const AddActionToReleaseModal = ({
718
701
  defaultMessage: "Entry added to release"
719
702
  })
720
703
  });
721
- handleClose();
704
+ onOpenChange();
722
705
  return;
723
706
  }
724
707
  if ("error" in response2) {
725
- if (axios.isAxiosError(response2.error)) {
708
+ if (strapiAdmin.isFetchError(response2.error)) {
726
709
  toggleNotification({
727
710
  type: "danger",
728
711
  message: formatAPIError(response2.error)
@@ -735,8 +718,8 @@ const AddActionToReleaseModal = ({
735
718
  }
736
719
  }
737
720
  };
738
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.ModalLayout, { onClose: handleClose, labelledBy: releaseHeaderId, children: [
739
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { id: releaseHeaderId, fontWeight: "bold", textColor: "neutral800", children: formatMessage({
721
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Content, { children: [
722
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Title, { fontWeight: "bold", children: formatMessage({
740
723
  id: "content-releases.content-manager-edit-view.add-to-release",
741
724
  defaultMessage: "Add to release"
742
725
  }) }) }),
@@ -748,25 +731,26 @@ const AddActionToReleaseModal = ({
748
731
  initialValues: INITIAL_VALUES,
749
732
  children: ({ values, setFieldValue }) => {
750
733
  return /* @__PURE__ */ jsxRuntime.jsxs(formik.Form, { children: [
751
- releases?.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(NoReleases, {}) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalBody, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
752
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxRuntime.jsx(
753
- designSystem.SingleSelect,
754
- {
755
- required: true,
756
- label: formatMessage({
757
- id: "content-releases.content-manager-edit-view.add-to-release.select-label",
758
- defaultMessage: "Select a release"
759
- }),
760
- placeholder: formatMessage({
761
- id: "content-releases.content-manager-edit-view.add-to-release.select-placeholder",
762
- defaultMessage: "Select"
763
- }),
764
- onChange: (value) => setFieldValue("releaseId", value),
765
- value: values.releaseId,
766
- children: releases?.map((release) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: release.id, children: release.name }, release.id))
767
- }
768
- ) }),
769
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.FieldLabel, { children: formatMessage({
734
+ releases?.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(NoReleases, {}) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
735
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { required: true, children: [
736
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
737
+ id: "content-releases.content-manager-edit-view.add-to-release.select-label",
738
+ defaultMessage: "Select a release"
739
+ }) }),
740
+ /* @__PURE__ */ jsxRuntime.jsx(
741
+ designSystem.SingleSelect,
742
+ {
743
+ placeholder: formatMessage({
744
+ id: "content-releases.content-manager-edit-view.add-to-release.select-placeholder",
745
+ defaultMessage: "Select"
746
+ }),
747
+ onChange: (value) => setFieldValue("releaseId", value),
748
+ value: values.releaseId,
749
+ children: releases?.map((release) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: release.id, children: release.name }, release.id))
750
+ }
751
+ )
752
+ ] }) }),
753
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
770
754
  id: "content-releases.content-manager-edit-view.add-to-release.action-type-label",
771
755
  defaultMessage: "What do you want to do with this entry?"
772
756
  }) }),
@@ -779,40 +763,31 @@ const AddActionToReleaseModal = ({
779
763
  }
780
764
  )
781
765
  ] }) }),
782
- /* @__PURE__ */ jsxRuntime.jsx(
783
- designSystem.ModalFooter,
784
- {
785
- startActions: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { onClick: handleClose, variant: "tertiary", name: "cancel", children: formatMessage({
786
- id: "content-releases.content-manager-edit-view.add-to-release.cancel-button",
787
- defaultMessage: "Cancel"
788
- }) }),
789
- endActions: (
790
- /**
791
- * TODO: Ideally we would use isValid from Formik to disable the button, however currently it always returns true
792
- * for yup.string().required(), even when the value is falsy (including empty string)
793
- */
794
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
795
- id: "content-releases.content-manager-edit-view.add-to-release.continue-button",
796
- defaultMessage: "Continue"
797
- }) })
798
- )
799
- }
800
- )
766
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
767
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Close, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", name: "cancel", children: formatMessage({
768
+ id: "content-releases.content-manager-edit-view.add-to-release.cancel-button",
769
+ defaultMessage: "Cancel"
770
+ }) }) }),
771
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
772
+ id: "content-releases.content-manager-edit-view.add-to-release.continue-button",
773
+ defaultMessage: "Continue"
774
+ }) })
775
+ ] })
801
776
  ] });
802
777
  }
803
778
  }
804
779
  )
805
- ] });
780
+ ] }) });
806
781
  };
807
782
  const CMReleasesContainer = () => {
808
783
  const [isModalOpen, setIsModalOpen] = React__namespace.useState(false);
809
784
  const { formatMessage, formatDate, formatTime } = reactIntl.useIntl();
810
785
  const { id, slug, collectionType } = reactRouterDom.useParams();
811
786
  const isCreatingEntry = id === "create";
812
- const {
813
- allowedActions: { canCreateAction, canMain, canDeleteAction }
814
- } = strapiAdmin.useRBAC(PERMISSIONS);
815
- const { schema } = strapiAdmin.unstable_useDocument({
787
+ const entryId = parseInt(id, 10);
788
+ const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
789
+ const { canCreateAction, canRead: canMain, canDeleteAction } = allowedActions;
790
+ const { schema } = strapiAdmin$1.unstable_useDocument({
816
791
  collectionType,
817
792
  model: slug
818
793
  });
@@ -821,7 +796,7 @@ const CMReleasesContainer = () => {
821
796
  const canFetch = id != null && contentTypeUid != null;
822
797
  const fetchParams = canFetch ? {
823
798
  contentTypeUid,
824
- entryId: id,
799
+ entryId,
825
800
  hasEntryAttached: true
826
801
  } : query.skipToken;
827
802
  const response = useGetReleasesForEntryQuery(fetchParams);
@@ -845,7 +820,7 @@ const CMReleasesContainer = () => {
845
820
  return /* @__PURE__ */ jsxRuntime.jsxs(
846
821
  designSystem.Box,
847
822
  {
848
- as: "aside",
823
+ tag: "aside",
849
824
  "aria-label": formatMessage({
850
825
  id: "content-releases.plugin.name",
851
826
  defaultMessage: "Releases"
@@ -869,7 +844,7 @@ const CMReleasesContainer = () => {
869
844
  alignItems: "start",
870
845
  borderWidth: "1px",
871
846
  borderStyle: "solid",
872
- borderColor: getReleaseColorVariant(release.action.type, "200"),
847
+ borderColor: getReleaseColorVariant(release.actions[0].type, "200"),
873
848
  overflow: "hidden",
874
849
  hasRadius: true,
875
850
  children: [
@@ -880,20 +855,20 @@ const CMReleasesContainer = () => {
880
855
  paddingBottom: 3,
881
856
  paddingLeft: 4,
882
857
  paddingRight: 4,
883
- background: getReleaseColorVariant(release.action.type, "100"),
858
+ background: getReleaseColorVariant(release.actions[0].type, "100"),
884
859
  width: "100%",
885
860
  children: /* @__PURE__ */ jsxRuntime.jsx(
886
861
  designSystem.Typography,
887
862
  {
888
863
  fontSize: 1,
889
864
  variant: "pi",
890
- textColor: getReleaseColorVariant(release.action.type, "600"),
865
+ textColor: getReleaseColorVariant(release.actions[0].type, "600"),
891
866
  children: formatMessage(
892
867
  {
893
868
  id: "content-releases.content-manager-edit-view.list-releases.title",
894
869
  defaultMessage: "{isPublish, select, true {Will be published in} other {Will be unpublished in}}"
895
870
  },
896
- { isPublish: release.action.type === "publish" }
871
+ { isPublish: release.actions[0].type === "publish" }
897
872
  )
898
873
  }
899
874
  )
@@ -929,7 +904,7 @@ const CMReleasesContainer = () => {
929
904
  ReleaseActionMenu.DeleteReleaseActionItem,
930
905
  {
931
906
  releaseId: release.id,
932
- actionId: release.action.id
907
+ actionId: release.actions[0].id
933
908
  }
934
909
  )
935
910
  ] }) : null
@@ -956,18 +931,20 @@ const CMReleasesContainer = () => {
956
931
  }
957
932
  ) : null
958
933
  ] }),
959
- isModalOpen && /* @__PURE__ */ jsxRuntime.jsx(
934
+ /* @__PURE__ */ jsxRuntime.jsx(
960
935
  AddActionToReleaseModal,
961
936
  {
962
- handleClose: toggleModal,
937
+ open: isModalOpen,
938
+ onOpenChange: toggleModal,
963
939
  contentTypeUid,
964
- entryId: id
940
+ entryId
965
941
  }
966
942
  )
967
943
  ]
968
944
  }
969
945
  );
970
946
  };
947
+ const pluginId = "content-releases";
971
948
  const prefixPluginTranslations = (trad, pluginId2) => {
972
949
  if (!pluginId2) {
973
950
  throw new TypeError("pluginId can't be empty");
@@ -980,6 +957,7 @@ const prefixPluginTranslations = (trad, pluginId2) => {
980
957
  const admin = {
981
958
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
982
959
  register(app) {
960
+ app.createHook("ContentReleases/pages/ReleaseDetails/add-locale-in-releases");
983
961
  if (window.strapi.features.isEnabled("cms-content-releases")) {
984
962
  app.addMenuLink({
985
963
  to: `plugins/${pluginId}`,
@@ -988,14 +966,11 @@ const admin = {
988
966
  id: `${pluginId}.plugin.name`,
989
967
  defaultMessage: "Releases"
990
968
  },
991
- Component: () => Promise.resolve().then(() => require("./App-FuRaphre.js")).then((mod) => ({ default: mod.App })),
992
- permissions: PERMISSIONS.main
993
- });
994
- app.addMiddlewares([() => releaseApi.middleware]);
995
- app.addReducers({
996
- [releaseApi.reducerPath]: releaseApi.reducer
969
+ Component: () => Promise.resolve().then(() => require("./App-CEwOQkKT.js")).then((mod) => ({ default: mod.App })),
970
+ permissions: PERMISSIONS.main,
971
+ position: 2
997
972
  });
998
- app.injectContentManagerComponent("editView", "right-links", {
973
+ app.getPlugin("content-manager").injectComponent("editView", "right-links", {
999
974
  name: `${pluginId}-link`,
1000
975
  Component: CMReleasesContainer
1001
976
  });
@@ -1007,18 +982,20 @@ const admin = {
1007
982
  id: `${pluginId}.plugin.name`,
1008
983
  defaultMessage: "Releases"
1009
984
  },
985
+ permissions: [],
1010
986
  async Component() {
1011
- const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases-YhAPgpG9.js"));
1012
- return PurchaseContentReleases;
987
+ const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases-Be3acS2L.js"));
988
+ return { default: PurchaseContentReleases };
1013
989
  },
1014
- lockIcon: true
990
+ licenseOnly: true,
991
+ position: 2
1015
992
  });
1016
993
  }
1017
994
  },
1018
995
  async registerTrads({ locales }) {
1019
996
  const importedTrads = await Promise.all(
1020
997
  locales.map((locale) => {
1021
- return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-faJDuv3q.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
998
+ return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-DtFJ5ViE.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
1022
999
  return {
1023
1000
  data: prefixPluginTranslations(data, "content-releases"),
1024
1001
  locale
@@ -1039,7 +1016,6 @@ exports.ReleaseActionMenu = ReleaseActionMenu;
1039
1016
  exports.ReleaseActionOptions = ReleaseActionOptions;
1040
1017
  exports.admin = admin;
1041
1018
  exports.getTimezoneOffset = getTimezoneOffset;
1042
- exports.isAxiosError = isAxiosError;
1043
1019
  exports.pluginId = pluginId;
1044
1020
  exports.releaseApi = releaseApi;
1045
1021
  exports.useCreateReleaseMutation = useCreateReleaseMutation;
@@ -1050,4 +1026,4 @@ exports.useGetReleasesQuery = useGetReleasesQuery;
1050
1026
  exports.usePublishReleaseMutation = usePublishReleaseMutation;
1051
1027
  exports.useUpdateReleaseActionMutation = useUpdateReleaseActionMutation;
1052
1028
  exports.useUpdateReleaseMutation = useUpdateReleaseMutation;
1053
- //# sourceMappingURL=index-Sb3Nal8H.js.map
1029
+ //# sourceMappingURL=index-BrWv-zV4.js.map