@strapi/content-releases 0.0.0-experimental.d5b46d578a5c055b8dcc66939e1b5d540976fafb → 0.0.0-experimental.defd8568ae03ef8d52f86e1f3541979f953c3941
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.
- package/dist/_chunks/{App-OP70yd5M.js → App-C0DlH0im.js} +245 -217
- package/dist/_chunks/App-C0DlH0im.js.map +1 -0
- package/dist/_chunks/{App-x6Tjj3HN.mjs → App-O0ZO-S35.mjs} +228 -200
- package/dist/_chunks/App-O0ZO-S35.mjs.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-bpIYXOfu.js → PurchaseContentReleases-DAHdUpAA.js} +4 -4
- package/dist/_chunks/PurchaseContentReleases-DAHdUpAA.js.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-3tRbmbY3.mjs → PurchaseContentReleases-Ex09YpKR.mjs} +5 -5
- package/dist/_chunks/PurchaseContentReleases-Ex09YpKR.mjs.map +1 -0
- package/dist/_chunks/{en-bpHsnU0n.mjs → en-B9Ur3VsE.mjs} +2 -1
- package/dist/_chunks/en-B9Ur3VsE.mjs.map +1 -0
- package/dist/_chunks/{en-3SGjiVyR.js → en-DtFJ5ViE.js} +2 -1
- package/dist/_chunks/en-DtFJ5ViE.js.map +1 -0
- package/dist/_chunks/{index-1ejXLtzt.mjs → index-DjDPK8kb.mjs} +155 -117
- package/dist/_chunks/index-DjDPK8kb.mjs.map +1 -0
- package/dist/_chunks/{index-ydocdaZ0.js → index-DoZNNtsb.js} +161 -123
- package/dist/_chunks/index-DoZNNtsb.js.map +1 -0
- package/dist/admin/index.js +1 -15
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +2 -16
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/CMReleasesContainer.d.ts +22 -0
- package/dist/admin/src/components/RelativeTime.d.ts +28 -0
- package/dist/admin/src/components/ReleaseAction.d.ts +3 -0
- package/dist/admin/src/components/ReleaseActionMenu.d.ts +26 -0
- package/dist/admin/src/components/ReleaseActionOptions.d.ts +9 -0
- package/dist/admin/src/components/ReleaseListCell.d.ts +0 -0
- package/dist/admin/src/components/ReleaseModal.d.ts +16 -0
- package/dist/admin/src/constants.d.ts +58 -0
- package/dist/admin/src/index.d.ts +3 -0
- package/dist/admin/src/pages/App.d.ts +1 -0
- package/dist/admin/src/pages/PurchaseContentReleases.d.ts +2 -0
- package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +2 -0
- package/dist/admin/src/pages/ReleasesPage.d.ts +8 -0
- package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +181 -0
- package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +39 -0
- package/dist/admin/src/pluginId.d.ts +1 -0
- package/dist/admin/src/services/axios.d.ts +29 -0
- package/dist/admin/src/services/release.d.ts +429 -0
- package/dist/admin/src/store/hooks.d.ts +7 -0
- package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
- package/dist/admin/src/utils/time.d.ts +1 -0
- package/dist/server/index.js +152 -93
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +153 -93
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts +5 -0
- package/dist/server/src/bootstrap.d.ts.map +1 -0
- package/dist/server/src/constants.d.ts +12 -0
- package/dist/server/src/constants.d.ts.map +1 -0
- package/dist/server/src/content-types/index.d.ts +99 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -0
- package/dist/server/src/content-types/release/index.d.ts +48 -0
- package/dist/server/src/content-types/release/index.d.ts.map +1 -0
- package/dist/server/src/content-types/release/schema.d.ts +47 -0
- package/dist/server/src/content-types/release/schema.d.ts.map +1 -0
- package/dist/server/src/content-types/release-action/index.d.ts +50 -0
- package/dist/server/src/content-types/release-action/index.d.ts.map +1 -0
- package/dist/server/src/content-types/release-action/schema.d.ts +49 -0
- package/dist/server/src/content-types/release-action/schema.d.ts.map +1 -0
- package/dist/server/src/controllers/index.d.ts +20 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -0
- package/dist/server/src/controllers/release-action.d.ts +10 -0
- package/dist/server/src/controllers/release-action.d.ts.map +1 -0
- package/dist/server/src/controllers/release.d.ts +12 -0
- package/dist/server/src/controllers/release.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/release-action.d.ts +8 -0
- package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/release.d.ts +2 -0
- package/dist/server/src/controllers/validation/release.d.ts.map +1 -0
- package/dist/server/src/destroy.d.ts +5 -0
- package/dist/server/src/destroy.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +2096 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/migrations/index.d.ts +13 -0
- package/dist/server/src/migrations/index.d.ts.map +1 -0
- package/dist/server/src/register.d.ts +5 -0
- package/dist/server/src/register.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts +35 -0
- package/dist/server/src/routes/index.d.ts.map +1 -0
- package/dist/server/src/routes/release-action.d.ts +18 -0
- package/dist/server/src/routes/release-action.d.ts.map +1 -0
- package/dist/server/src/routes/release.d.ts +18 -0
- package/dist/server/src/routes/release.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +1826 -0
- package/dist/server/src/services/index.d.ts.map +1 -0
- package/dist/server/src/services/release.d.ts +66 -0
- package/dist/server/src/services/release.d.ts.map +1 -0
- package/dist/server/src/services/scheduling.d.ts +18 -0
- package/dist/server/src/services/scheduling.d.ts.map +1 -0
- package/dist/server/src/services/validation.d.ts +18 -0
- package/dist/server/src/services/validation.d.ts.map +1 -0
- package/dist/server/src/utils/index.d.ts +14 -0
- package/dist/server/src/utils/index.d.ts.map +1 -0
- package/dist/shared/contracts/release-actions.d.ts +131 -0
- package/dist/shared/contracts/release-actions.d.ts.map +1 -0
- package/dist/shared/contracts/releases.d.ts +182 -0
- package/dist/shared/contracts/releases.d.ts.map +1 -0
- package/dist/shared/types.d.ts +24 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/validation-schemas.d.ts +2 -0
- package/dist/shared/validation-schemas.d.ts.map +1 -0
- package/package.json +26 -31
- package/dist/_chunks/App-OP70yd5M.js.map +0 -1
- package/dist/_chunks/App-x6Tjj3HN.mjs.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js.map +0 -1
- package/dist/_chunks/en-3SGjiVyR.js.map +0 -1
- package/dist/_chunks/en-bpHsnU0n.mjs.map +0 -1
- package/dist/_chunks/index-1ejXLtzt.mjs.map +0 -1
- package/dist/_chunks/index-ydocdaZ0.js.map +0 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const helperPlugin = require("@strapi/helper-plugin");
|
|
3
2
|
const icons = require("@strapi/icons");
|
|
4
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
5
4
|
const React = require("react");
|
|
6
5
|
const query = require("@reduxjs/toolkit/query");
|
|
6
|
+
const strapiAdmin = require("@strapi/admin/strapi-admin");
|
|
7
7
|
const designSystem = require("@strapi/design-system");
|
|
8
|
-
const
|
|
8
|
+
const symbols = require("@strapi/icons/symbols");
|
|
9
|
+
const strapiAdmin$1 = require("@strapi/plugin-content-manager/strapi-admin");
|
|
9
10
|
const axios = require("axios");
|
|
10
11
|
const formik = require("formik");
|
|
11
12
|
const reactIntl = require("react-intl");
|
|
@@ -13,7 +14,6 @@ const reactRouterDom = require("react-router-dom");
|
|
|
13
14
|
const yup = require("yup");
|
|
14
15
|
const react = require("@reduxjs/toolkit/query/react");
|
|
15
16
|
const styled = require("styled-components");
|
|
16
|
-
const reactRedux = require("react-redux");
|
|
17
17
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
18
18
|
function _interopNamespace(e) {
|
|
19
19
|
if (e && e.__esModule)
|
|
@@ -125,7 +125,7 @@ const axiosBaseQuery = async ({
|
|
|
125
125
|
config
|
|
126
126
|
}) => {
|
|
127
127
|
try {
|
|
128
|
-
const { get, post, del, put } =
|
|
128
|
+
const { get, post, del, put } = strapiAdmin.getFetchClient();
|
|
129
129
|
if (method === "POST") {
|
|
130
130
|
const result2 = await post(url, data, config);
|
|
131
131
|
return { data: result2.data };
|
|
@@ -159,7 +159,7 @@ const isAxiosError = (err) => {
|
|
|
159
159
|
const releaseApi = react.createApi({
|
|
160
160
|
reducerPath: pluginId,
|
|
161
161
|
baseQuery: axiosBaseQuery,
|
|
162
|
-
tagTypes: ["Release", "ReleaseAction"],
|
|
162
|
+
tagTypes: ["Release", "ReleaseAction", "EntriesInRelease"],
|
|
163
163
|
endpoints: (build) => {
|
|
164
164
|
return {
|
|
165
165
|
getReleasesForEntry: build.query({
|
|
@@ -284,7 +284,8 @@ const releaseApi = react.createApi({
|
|
|
284
284
|
},
|
|
285
285
|
invalidatesTags: [
|
|
286
286
|
{ type: "Release", id: "LIST" },
|
|
287
|
-
{ type: "ReleaseAction", id: "LIST" }
|
|
287
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
288
|
+
{ type: "EntriesInRelease" }
|
|
288
289
|
]
|
|
289
290
|
}),
|
|
290
291
|
updateReleaseAction: build.mutation({
|
|
@@ -327,7 +328,8 @@ const releaseApi = react.createApi({
|
|
|
327
328
|
invalidatesTags: (result, error, arg) => [
|
|
328
329
|
{ type: "Release", id: "LIST" },
|
|
329
330
|
{ type: "Release", id: arg.params.releaseId },
|
|
330
|
-
{ type: "ReleaseAction", id: "LIST" }
|
|
331
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
332
|
+
{ type: "EntriesInRelease" }
|
|
331
333
|
]
|
|
332
334
|
}),
|
|
333
335
|
publishRelease: build.mutation({
|
|
@@ -346,7 +348,22 @@ const releaseApi = react.createApi({
|
|
|
346
348
|
method: "DELETE"
|
|
347
349
|
};
|
|
348
350
|
},
|
|
349
|
-
invalidatesTags: () => [{ type: "Release", id: "LIST" }]
|
|
351
|
+
invalidatesTags: () => [{ type: "Release", id: "LIST" }, { type: "EntriesInRelease" }]
|
|
352
|
+
}),
|
|
353
|
+
getMappedEntriesInReleases: build.query({
|
|
354
|
+
query(params) {
|
|
355
|
+
return {
|
|
356
|
+
url: "/content-releases/mapEntriesToReleases",
|
|
357
|
+
method: "GET",
|
|
358
|
+
config: {
|
|
359
|
+
params
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
},
|
|
363
|
+
transformResponse(response) {
|
|
364
|
+
return response.data;
|
|
365
|
+
},
|
|
366
|
+
providesTags: [{ type: "EntriesInRelease" }]
|
|
350
367
|
})
|
|
351
368
|
};
|
|
352
369
|
}
|
|
@@ -363,7 +380,8 @@ const {
|
|
|
363
380
|
useUpdateReleaseActionMutation,
|
|
364
381
|
usePublishReleaseMutation,
|
|
365
382
|
useDeleteReleaseActionMutation,
|
|
366
|
-
useDeleteReleaseMutation
|
|
383
|
+
useDeleteReleaseMutation,
|
|
384
|
+
useGetMappedEntriesInReleasesQuery
|
|
367
385
|
} = releaseApi;
|
|
368
386
|
const getTimezoneOffset = (timezone, date) => {
|
|
369
387
|
try {
|
|
@@ -381,16 +399,12 @@ const getTimezoneOffset = (timezone, date) => {
|
|
|
381
399
|
return "";
|
|
382
400
|
}
|
|
383
401
|
};
|
|
384
|
-
const
|
|
385
|
-
const useTypedSelector = reactRedux.useSelector;
|
|
386
|
-
const StyledMenuItem = styled__default.default(v2.Menu.Item)`
|
|
402
|
+
const StyledMenuItem = styled__default.default(designSystem.Menu.Item)`
|
|
387
403
|
&:hover {
|
|
388
404
|
background: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}100`]};
|
|
389
405
|
|
|
390
406
|
svg {
|
|
391
|
-
|
|
392
|
-
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
393
|
-
}
|
|
407
|
+
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
394
408
|
}
|
|
395
409
|
|
|
396
410
|
a {
|
|
@@ -399,9 +413,7 @@ const StyledMenuItem = styled__default.default(v2.Menu.Item)`
|
|
|
399
413
|
}
|
|
400
414
|
|
|
401
415
|
svg {
|
|
402
|
-
|
|
403
|
-
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
404
|
-
}
|
|
416
|
+
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
405
417
|
}
|
|
406
418
|
|
|
407
419
|
a {
|
|
@@ -419,9 +431,12 @@ const StyledIconButton = styled__default.default(designSystem.IconButton)`
|
|
|
419
431
|
`;
|
|
420
432
|
const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
421
433
|
const { formatMessage } = reactIntl.useIntl();
|
|
422
|
-
const toggleNotification =
|
|
423
|
-
const { formatAPIError } =
|
|
434
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
435
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
424
436
|
const [deleteReleaseAction] = useDeleteReleaseActionMutation();
|
|
437
|
+
const {
|
|
438
|
+
allowedActions: { canDeleteAction }
|
|
439
|
+
} = strapiAdmin.useRBAC(PERMISSIONS);
|
|
425
440
|
const handleDeleteAction = async () => {
|
|
426
441
|
const response = await deleteReleaseAction({
|
|
427
442
|
params: { releaseId, actionId }
|
|
@@ -439,24 +454,27 @@ const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
|
439
454
|
if ("error" in response) {
|
|
440
455
|
if (axios.isAxiosError(response.error)) {
|
|
441
456
|
toggleNotification({
|
|
442
|
-
type: "
|
|
457
|
+
type: "danger",
|
|
443
458
|
message: formatAPIError(response.error)
|
|
444
459
|
});
|
|
445
460
|
} else {
|
|
446
461
|
toggleNotification({
|
|
447
|
-
type: "
|
|
462
|
+
type: "danger",
|
|
448
463
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
449
464
|
});
|
|
450
465
|
}
|
|
451
466
|
}
|
|
452
467
|
};
|
|
453
|
-
|
|
454
|
-
|
|
468
|
+
if (!canDeleteAction) {
|
|
469
|
+
return null;
|
|
470
|
+
}
|
|
471
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { variant: "danger", onSelect: handleDeleteAction, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
472
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.Cross, { width: "1.2rem", height: "1.2rem" }),
|
|
455
473
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "danger600", variant: "omega", children: formatMessage({
|
|
456
474
|
id: "content-releases.content-manager-edit-view.remove-from-release",
|
|
457
475
|
defaultMessage: "Remove from release"
|
|
458
476
|
}) })
|
|
459
|
-
] }) })
|
|
477
|
+
] }) });
|
|
460
478
|
};
|
|
461
479
|
const ReleaseActionEntryLinkItem = ({
|
|
462
480
|
contentTypeUid,
|
|
@@ -464,49 +482,52 @@ const ReleaseActionEntryLinkItem = ({
|
|
|
464
482
|
locale
|
|
465
483
|
}) => {
|
|
466
484
|
const { formatMessage } = reactIntl.useIntl();
|
|
467
|
-
const
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
!
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
485
|
+
const userPermissions = strapiAdmin.useAuth("ReleaseActionEntryLinkItem", (state) => state.permissions);
|
|
486
|
+
const canUpdateEntryForLocale = React__namespace.useMemo(() => {
|
|
487
|
+
const updatePermissions = userPermissions.find(
|
|
488
|
+
(permission) => permission.subject === contentTypeUid && permission.action === "plugin::content-manager.explorer.update"
|
|
489
|
+
);
|
|
490
|
+
if (!updatePermissions) {
|
|
491
|
+
return false;
|
|
492
|
+
}
|
|
493
|
+
return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));
|
|
494
|
+
}, [contentTypeUid, locale, userPermissions]);
|
|
495
|
+
const {
|
|
496
|
+
allowedActions: { canUpdate: canUpdateContentType }
|
|
497
|
+
} = strapiAdmin.useRBAC({
|
|
498
|
+
updateContentType: [
|
|
499
|
+
{
|
|
500
|
+
action: "plugin::content-manager.explorer.update",
|
|
501
|
+
subject: contentTypeUid
|
|
502
|
+
}
|
|
503
|
+
]
|
|
504
|
+
});
|
|
505
|
+
if (!canUpdateContentType || !canUpdateEntryForLocale) {
|
|
506
|
+
return null;
|
|
507
|
+
}
|
|
508
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
509
|
+
designSystem.Link,
|
|
478
510
|
{
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
children:
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
to: {
|
|
490
|
-
pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
|
|
491
|
-
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
492
|
-
},
|
|
493
|
-
startIcon: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Pencil, width: 3, height: 3 }),
|
|
494
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
495
|
-
id: "content-releases.content-manager-edit-view.edit-entry",
|
|
496
|
-
defaultMessage: "Edit entry"
|
|
497
|
-
}) })
|
|
498
|
-
}
|
|
499
|
-
) })
|
|
511
|
+
as: reactRouterDom.NavLink,
|
|
512
|
+
to: {
|
|
513
|
+
pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
|
|
514
|
+
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
515
|
+
},
|
|
516
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, { width: "1.2rem", height: "1.2rem" }),
|
|
517
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
518
|
+
id: "content-releases.content-manager-edit-view.edit-entry",
|
|
519
|
+
defaultMessage: "Edit entry"
|
|
520
|
+
}) })
|
|
500
521
|
}
|
|
501
|
-
);
|
|
522
|
+
) });
|
|
502
523
|
};
|
|
503
524
|
const EditReleaseItem = ({ releaseId }) => {
|
|
504
525
|
const { formatMessage } = reactIntl.useIntl();
|
|
505
526
|
return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
506
|
-
|
|
527
|
+
designSystem.Link,
|
|
507
528
|
{
|
|
508
529
|
href: `/admin/plugins/content-releases/${releaseId}`,
|
|
509
|
-
startIcon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
530
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, { width: "1.2rem", height: "1.2rem" }),
|
|
510
531
|
isExternal: false,
|
|
511
532
|
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
512
533
|
id: "content-releases.content-manager-edit-view.edit-release",
|
|
@@ -517,11 +538,12 @@ const EditReleaseItem = ({ releaseId }) => {
|
|
|
517
538
|
};
|
|
518
539
|
const Root = ({ children, hasTriggerBorder = false }) => {
|
|
519
540
|
const { formatMessage } = reactIntl.useIntl();
|
|
541
|
+
const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
|
|
520
542
|
return (
|
|
521
543
|
// A user can access the dropdown if they have permissions to delete a release-action OR update a release
|
|
522
|
-
|
|
544
|
+
allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Root, { children: [
|
|
523
545
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
524
|
-
|
|
546
|
+
designSystem.Menu.Trigger,
|
|
525
547
|
{
|
|
526
548
|
as: hasTriggerBorder ? StyledIconButton : designSystem.IconButton,
|
|
527
549
|
paddingLeft: 2,
|
|
@@ -533,8 +555,8 @@ const Root = ({ children, hasTriggerBorder = false }) => {
|
|
|
533
555
|
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.More, {})
|
|
534
556
|
}
|
|
535
557
|
),
|
|
536
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
537
|
-
] })
|
|
558
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Menu.Content, { top: 1, popoverPlacement: "bottom-end", children })
|
|
559
|
+
] }) : null
|
|
538
560
|
);
|
|
539
561
|
};
|
|
540
562
|
const ReleaseActionMenu = {
|
|
@@ -666,14 +688,15 @@ const INITIAL_VALUES = {
|
|
|
666
688
|
const NoReleases = () => {
|
|
667
689
|
const { formatMessage } = reactIntl.useIntl();
|
|
668
690
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
669
|
-
|
|
691
|
+
designSystem.EmptyStateLayout,
|
|
670
692
|
{
|
|
671
|
-
|
|
693
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(symbols.EmptyDocuments, { width: "16rem" }),
|
|
694
|
+
content: formatMessage({
|
|
672
695
|
id: "content-releases.content-manager-edit-view.add-to-release.no-releases-message",
|
|
673
696
|
defaultMessage: "No available releases. Open the list of releases and create a new one from there."
|
|
674
|
-
},
|
|
697
|
+
}),
|
|
675
698
|
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
676
|
-
|
|
699
|
+
designSystem.LinkButton,
|
|
677
700
|
{
|
|
678
701
|
to: {
|
|
679
702
|
pathname: "/plugins/content-releases"
|
|
@@ -696,9 +719,10 @@ const AddActionToReleaseModal = ({
|
|
|
696
719
|
}) => {
|
|
697
720
|
const releaseHeaderId = React__namespace.useId();
|
|
698
721
|
const { formatMessage } = reactIntl.useIntl();
|
|
699
|
-
const toggleNotification =
|
|
700
|
-
const { formatAPIError } =
|
|
701
|
-
const {
|
|
722
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
723
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
724
|
+
const [{ query: query2 }] = strapiAdmin.useQueryParams();
|
|
725
|
+
const locale = query2.plugins?.i18n?.locale;
|
|
702
726
|
const response = useGetReleasesForEntryQuery({
|
|
703
727
|
contentTypeUid,
|
|
704
728
|
entryId,
|
|
@@ -707,7 +731,6 @@ const AddActionToReleaseModal = ({
|
|
|
707
731
|
const releases = response.data?.data;
|
|
708
732
|
const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();
|
|
709
733
|
const handleSubmit = async (values) => {
|
|
710
|
-
const locale = modifiedData.locale;
|
|
711
734
|
const releaseActionEntry = {
|
|
712
735
|
contentType: contentTypeUid,
|
|
713
736
|
id: entryId,
|
|
@@ -731,12 +754,12 @@ const AddActionToReleaseModal = ({
|
|
|
731
754
|
if ("error" in response2) {
|
|
732
755
|
if (axios.isAxiosError(response2.error)) {
|
|
733
756
|
toggleNotification({
|
|
734
|
-
type: "
|
|
757
|
+
type: "danger",
|
|
735
758
|
message: formatAPIError(response2.error)
|
|
736
759
|
});
|
|
737
760
|
} else {
|
|
738
761
|
toggleNotification({
|
|
739
|
-
type: "
|
|
762
|
+
type: "danger",
|
|
740
763
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
741
764
|
});
|
|
742
765
|
}
|
|
@@ -814,17 +837,20 @@ const AddActionToReleaseModal = ({
|
|
|
814
837
|
const CMReleasesContainer = () => {
|
|
815
838
|
const [isModalOpen, setIsModalOpen] = React__namespace.useState(false);
|
|
816
839
|
const { formatMessage, formatDate, formatTime } = reactIntl.useIntl();
|
|
817
|
-
const {
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
840
|
+
const { id, slug, collectionType } = reactRouterDom.useParams();
|
|
841
|
+
const isCreatingEntry = id === "create";
|
|
842
|
+
const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
|
|
843
|
+
const { canCreateAction, canRead: canMain, canDeleteAction } = allowedActions;
|
|
844
|
+
const { schema } = strapiAdmin$1.unstable_useDocument({
|
|
845
|
+
collectionType,
|
|
846
|
+
model: slug
|
|
847
|
+
});
|
|
848
|
+
const hasDraftAndPublish = schema?.options?.draftAndPublish;
|
|
823
849
|
const contentTypeUid = slug;
|
|
824
|
-
const canFetch =
|
|
850
|
+
const canFetch = id != null && contentTypeUid != null;
|
|
825
851
|
const fetchParams = canFetch ? {
|
|
826
852
|
contentTypeUid,
|
|
827
|
-
entryId,
|
|
853
|
+
entryId: id,
|
|
828
854
|
hasEntryAttached: true
|
|
829
855
|
} : query.skipToken;
|
|
830
856
|
const response = useGetReleasesForEntryQuery(fetchParams);
|
|
@@ -842,7 +868,10 @@ const CMReleasesContainer = () => {
|
|
|
842
868
|
}
|
|
843
869
|
return `success${shade}`;
|
|
844
870
|
};
|
|
845
|
-
|
|
871
|
+
if (!canMain) {
|
|
872
|
+
return null;
|
|
873
|
+
}
|
|
874
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
846
875
|
designSystem.Box,
|
|
847
876
|
{
|
|
848
877
|
as: "aside",
|
|
@@ -869,7 +898,7 @@ const CMReleasesContainer = () => {
|
|
|
869
898
|
alignItems: "start",
|
|
870
899
|
borderWidth: "1px",
|
|
871
900
|
borderStyle: "solid",
|
|
872
|
-
borderColor: getReleaseColorVariant(release.
|
|
901
|
+
borderColor: getReleaseColorVariant(release.actions[0].type, "200"),
|
|
873
902
|
overflow: "hidden",
|
|
874
903
|
hasRadius: true,
|
|
875
904
|
children: [
|
|
@@ -880,26 +909,26 @@ const CMReleasesContainer = () => {
|
|
|
880
909
|
paddingBottom: 3,
|
|
881
910
|
paddingLeft: 4,
|
|
882
911
|
paddingRight: 4,
|
|
883
|
-
background: getReleaseColorVariant(release.
|
|
912
|
+
background: getReleaseColorVariant(release.actions[0].type, "100"),
|
|
884
913
|
width: "100%",
|
|
885
914
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
886
915
|
designSystem.Typography,
|
|
887
916
|
{
|
|
888
917
|
fontSize: 1,
|
|
889
918
|
variant: "pi",
|
|
890
|
-
textColor: getReleaseColorVariant(release.
|
|
919
|
+
textColor: getReleaseColorVariant(release.actions[0].type, "600"),
|
|
891
920
|
children: formatMessage(
|
|
892
921
|
{
|
|
893
922
|
id: "content-releases.content-manager-edit-view.list-releases.title",
|
|
894
923
|
defaultMessage: "{isPublish, select, true {Will be published in} other {Will be unpublished in}}"
|
|
895
924
|
},
|
|
896
|
-
{ isPublish: release.
|
|
925
|
+
{ isPublish: release.actions[0].type === "publish" }
|
|
897
926
|
)
|
|
898
927
|
}
|
|
899
928
|
)
|
|
900
929
|
}
|
|
901
930
|
),
|
|
902
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
|
|
931
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
|
|
903
932
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontSize: 2, fontWeight: "bold", variant: "omega", textColor: "neutral700", children: release.name }),
|
|
904
933
|
release.scheduledAt && release.timezone && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: formatMessage(
|
|
905
934
|
{
|
|
@@ -923,23 +952,23 @@ const CMReleasesContainer = () => {
|
|
|
923
952
|
)
|
|
924
953
|
}
|
|
925
954
|
) }),
|
|
926
|
-
|
|
955
|
+
canDeleteAction ? /* @__PURE__ */ jsxRuntime.jsxs(ReleaseActionMenu.Root, { hasTriggerBorder: true, children: [
|
|
927
956
|
/* @__PURE__ */ jsxRuntime.jsx(ReleaseActionMenu.EditReleaseItem, { releaseId: release.id }),
|
|
928
957
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
929
958
|
ReleaseActionMenu.DeleteReleaseActionItem,
|
|
930
959
|
{
|
|
931
960
|
releaseId: release.id,
|
|
932
|
-
actionId: release.
|
|
961
|
+
actionId: release.actions[0].id
|
|
933
962
|
}
|
|
934
963
|
)
|
|
935
|
-
] })
|
|
936
|
-
] })
|
|
964
|
+
] }) : null
|
|
965
|
+
] }) })
|
|
937
966
|
]
|
|
938
967
|
},
|
|
939
968
|
release.id
|
|
940
969
|
);
|
|
941
970
|
}),
|
|
942
|
-
|
|
971
|
+
canCreateAction ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
943
972
|
designSystem.Button,
|
|
944
973
|
{
|
|
945
974
|
justifyContent: "center",
|
|
@@ -954,19 +983,19 @@ const CMReleasesContainer = () => {
|
|
|
954
983
|
defaultMessage: "Add to release"
|
|
955
984
|
})
|
|
956
985
|
}
|
|
957
|
-
)
|
|
986
|
+
) : null
|
|
958
987
|
] }),
|
|
959
988
|
isModalOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
960
989
|
AddActionToReleaseModal,
|
|
961
990
|
{
|
|
962
991
|
handleClose: toggleModal,
|
|
963
992
|
contentTypeUid,
|
|
964
|
-
entryId
|
|
993
|
+
entryId: id
|
|
965
994
|
}
|
|
966
995
|
)
|
|
967
996
|
]
|
|
968
997
|
}
|
|
969
|
-
)
|
|
998
|
+
);
|
|
970
999
|
};
|
|
971
1000
|
const getContentPermissions = (subject) => {
|
|
972
1001
|
const permissions = {
|
|
@@ -983,31 +1012,33 @@ const getContentPermissions = (subject) => {
|
|
|
983
1012
|
};
|
|
984
1013
|
return permissions;
|
|
985
1014
|
};
|
|
986
|
-
const ReleaseAction = ({
|
|
1015
|
+
const ReleaseAction = ({ documentIds, model }) => {
|
|
987
1016
|
const { formatMessage } = reactIntl.useIntl();
|
|
988
|
-
const toggleNotification =
|
|
989
|
-
const { formatAPIError } =
|
|
990
|
-
const {
|
|
1017
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
1018
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
1019
|
+
const [{ query: query2 }] = strapiAdmin.useQueryParams();
|
|
991
1020
|
const contentPermissions = getContentPermissions(model);
|
|
992
1021
|
const {
|
|
993
1022
|
allowedActions: { canPublish }
|
|
994
|
-
} =
|
|
1023
|
+
} = strapiAdmin.useRBAC(contentPermissions);
|
|
995
1024
|
const {
|
|
996
1025
|
allowedActions: { canCreate }
|
|
997
|
-
} =
|
|
1026
|
+
} = strapiAdmin.useRBAC(PERMISSIONS);
|
|
998
1027
|
const response = useGetReleasesQuery();
|
|
999
1028
|
const releases = response.data?.data;
|
|
1000
1029
|
const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();
|
|
1001
1030
|
const handleSubmit = async (values) => {
|
|
1002
|
-
const locale =
|
|
1003
|
-
const releaseActionEntries =
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1031
|
+
const locale = query2.plugins?.i18n?.locale;
|
|
1032
|
+
const releaseActionEntries = documentIds.map(
|
|
1033
|
+
(id) => ({
|
|
1034
|
+
type: values.type,
|
|
1035
|
+
entry: {
|
|
1036
|
+
contentType: model,
|
|
1037
|
+
id,
|
|
1038
|
+
locale
|
|
1039
|
+
}
|
|
1040
|
+
})
|
|
1041
|
+
);
|
|
1011
1042
|
const response2 = await createManyReleaseActions({
|
|
1012
1043
|
body: releaseActionEntries,
|
|
1013
1044
|
params: { releaseId: values.releaseId }
|
|
@@ -1139,28 +1170,35 @@ const ReleaseAction = ({ ids, model }) => {
|
|
|
1139
1170
|
}
|
|
1140
1171
|
};
|
|
1141
1172
|
};
|
|
1173
|
+
const prefixPluginTranslations = (trad, pluginId2) => {
|
|
1174
|
+
if (!pluginId2) {
|
|
1175
|
+
throw new TypeError("pluginId can't be empty");
|
|
1176
|
+
}
|
|
1177
|
+
return Object.keys(trad).reduce((acc, current) => {
|
|
1178
|
+
acc[`${pluginId2}.${current}`] = trad[current];
|
|
1179
|
+
return acc;
|
|
1180
|
+
}, {});
|
|
1181
|
+
};
|
|
1142
1182
|
const admin = {
|
|
1143
1183
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1144
1184
|
register(app) {
|
|
1185
|
+
app.createHook("ContentReleases/pages/ReleaseDetails/add-locale-in-releases");
|
|
1145
1186
|
if (window.strapi.features.isEnabled("cms-content-releases")) {
|
|
1146
1187
|
app.addMenuLink({
|
|
1147
|
-
to:
|
|
1188
|
+
to: `plugins/${pluginId}`,
|
|
1148
1189
|
icon: icons.PaperPlane,
|
|
1149
1190
|
intlLabel: {
|
|
1150
1191
|
id: `${pluginId}.plugin.name`,
|
|
1151
1192
|
defaultMessage: "Releases"
|
|
1152
1193
|
},
|
|
1153
|
-
|
|
1154
|
-
const { App } = await Promise.resolve().then(() => require("./App-OP70yd5M.js"));
|
|
1155
|
-
return App;
|
|
1156
|
-
},
|
|
1194
|
+
Component: () => Promise.resolve().then(() => require("./App-C0DlH0im.js")).then((mod) => ({ default: mod.App })),
|
|
1157
1195
|
permissions: PERMISSIONS.main
|
|
1158
1196
|
});
|
|
1159
1197
|
app.addMiddlewares([() => releaseApi.middleware]);
|
|
1160
1198
|
app.addReducers({
|
|
1161
1199
|
[releaseApi.reducerPath]: releaseApi.reducer
|
|
1162
1200
|
});
|
|
1163
|
-
app.
|
|
1201
|
+
app.getPlugin("content-manager").injectComponent("editView", "right-links", {
|
|
1164
1202
|
name: `${pluginId}-link`,
|
|
1165
1203
|
Component: CMReleasesContainer
|
|
1166
1204
|
});
|
|
@@ -1177,9 +1215,10 @@ const admin = {
|
|
|
1177
1215
|
id: `${pluginId}.plugin.name`,
|
|
1178
1216
|
defaultMessage: "Releases"
|
|
1179
1217
|
},
|
|
1218
|
+
permissions: [],
|
|
1180
1219
|
async Component() {
|
|
1181
|
-
const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases-
|
|
1182
|
-
return PurchaseContentReleases;
|
|
1220
|
+
const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases-DAHdUpAA.js"));
|
|
1221
|
+
return { default: PurchaseContentReleases };
|
|
1183
1222
|
},
|
|
1184
1223
|
lockIcon: true
|
|
1185
1224
|
});
|
|
@@ -1188,9 +1227,9 @@ const admin = {
|
|
|
1188
1227
|
async registerTrads({ locales }) {
|
|
1189
1228
|
const importedTrads = await Promise.all(
|
|
1190
1229
|
locales.map((locale) => {
|
|
1191
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-
|
|
1230
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-DtFJ5ViE.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
|
|
1192
1231
|
return {
|
|
1193
|
-
data:
|
|
1232
|
+
data: prefixPluginTranslations(data, "content-releases"),
|
|
1194
1233
|
locale
|
|
1195
1234
|
};
|
|
1196
1235
|
}).catch(() => {
|
|
@@ -1218,7 +1257,6 @@ exports.useGetReleaseActionsQuery = useGetReleaseActionsQuery;
|
|
|
1218
1257
|
exports.useGetReleaseQuery = useGetReleaseQuery;
|
|
1219
1258
|
exports.useGetReleasesQuery = useGetReleasesQuery;
|
|
1220
1259
|
exports.usePublishReleaseMutation = usePublishReleaseMutation;
|
|
1221
|
-
exports.useTypedDispatch = useTypedDispatch;
|
|
1222
1260
|
exports.useUpdateReleaseActionMutation = useUpdateReleaseActionMutation;
|
|
1223
1261
|
exports.useUpdateReleaseMutation = useUpdateReleaseMutation;
|
|
1224
|
-
//# sourceMappingURL=index-
|
|
1262
|
+
//# sourceMappingURL=index-DoZNNtsb.js.map
|