@strapi/content-releases 0.0.0-experimental.d00dc50c81bce037c4321a90cc2f790eb3c51acb → 0.0.0-experimental.d23c1d5b0e45dd06ef09977f526c85468be05403
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-gu1aiP6i.mjs → App-Cmn2Mkn7.mjs} +213 -200
- package/dist/_chunks/App-Cmn2Mkn7.mjs.map +1 -0
- package/dist/_chunks/{App-HjWtUYmc.js → App-FVorrIzF.js} +224 -211
- package/dist/_chunks/App-FVorrIzF.js.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-3tRbmbY3.mjs → PurchaseContentReleases-C8djn9fP.mjs} +1 -1
- package/dist/_chunks/{PurchaseContentReleases-3tRbmbY3.mjs.map → PurchaseContentReleases-C8djn9fP.mjs.map} +1 -1
- package/dist/_chunks/{PurchaseContentReleases-bpIYXOfu.js → PurchaseContentReleases-sD6ADHk2.js} +1 -1
- package/dist/_chunks/{PurchaseContentReleases-bpIYXOfu.js.map → PurchaseContentReleases-sD6ADHk2.js.map} +1 -1
- package/dist/_chunks/{en-ltT1TlKQ.mjs → en-B9Ur3VsE.mjs} +1 -1
- package/dist/_chunks/en-B9Ur3VsE.mjs.map +1 -0
- package/dist/_chunks/{en-HrREghh3.js → en-DtFJ5ViE.js} +1 -1
- package/dist/_chunks/en-DtFJ5ViE.js.map +1 -0
- package/dist/_chunks/{index-ZNwxYN8H.js → index-BfJLth9Z.js} +120 -189
- package/dist/_chunks/index-BfJLth9Z.js.map +1 -0
- package/dist/_chunks/{index-mvj9PSKd.mjs → index-DDohgTaQ.mjs} +125 -194
- package/dist/_chunks/index-DDohgTaQ.mjs.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 +83 -86
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +84 -86
- 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-HjWtUYmc.js.map +0 -1
- package/dist/_chunks/App-gu1aiP6i.mjs.map +0 -1
- package/dist/_chunks/en-HrREghh3.js.map +0 -1
- package/dist/_chunks/en-ltT1TlKQ.mjs.map +0 -1
- package/dist/_chunks/index-ZNwxYN8H.js.map +0 -1
- package/dist/_chunks/index-mvj9PSKd.mjs.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
8
|
const v2 = require("@strapi/design-system/v2");
|
|
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 };
|
|
@@ -399,8 +399,6 @@ const getTimezoneOffset = (timezone, date) => {
|
|
|
399
399
|
return "";
|
|
400
400
|
}
|
|
401
401
|
};
|
|
402
|
-
const useTypedDispatch = reactRedux.useDispatch;
|
|
403
|
-
const useTypedSelector = reactRedux.useSelector;
|
|
404
402
|
const StyledMenuItem = styled__default.default(v2.Menu.Item)`
|
|
405
403
|
&:hover {
|
|
406
404
|
background: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}100`]};
|
|
@@ -437,9 +435,12 @@ const StyledIconButton = styled__default.default(designSystem.IconButton)`
|
|
|
437
435
|
`;
|
|
438
436
|
const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
439
437
|
const { formatMessage } = reactIntl.useIntl();
|
|
440
|
-
const toggleNotification =
|
|
441
|
-
const { formatAPIError } =
|
|
438
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
439
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
442
440
|
const [deleteReleaseAction] = useDeleteReleaseActionMutation();
|
|
441
|
+
const {
|
|
442
|
+
allowedActions: { canDeleteAction }
|
|
443
|
+
} = strapiAdmin.useRBAC(PERMISSIONS);
|
|
443
444
|
const handleDeleteAction = async () => {
|
|
444
445
|
const response = await deleteReleaseAction({
|
|
445
446
|
params: { releaseId, actionId }
|
|
@@ -457,24 +458,27 @@ const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
|
457
458
|
if ("error" in response) {
|
|
458
459
|
if (axios.isAxiosError(response.error)) {
|
|
459
460
|
toggleNotification({
|
|
460
|
-
type: "
|
|
461
|
+
type: "danger",
|
|
461
462
|
message: formatAPIError(response.error)
|
|
462
463
|
});
|
|
463
464
|
} else {
|
|
464
465
|
toggleNotification({
|
|
465
|
-
type: "
|
|
466
|
+
type: "danger",
|
|
466
467
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
467
468
|
});
|
|
468
469
|
}
|
|
469
470
|
}
|
|
470
471
|
};
|
|
471
|
-
|
|
472
|
+
if (!canDeleteAction) {
|
|
473
|
+
return null;
|
|
474
|
+
}
|
|
475
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { variant: "danger", onSelect: handleDeleteAction, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
472
476
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Cross, width: 3, height: 3 }),
|
|
473
477
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "danger600", variant: "omega", children: formatMessage({
|
|
474
478
|
id: "content-releases.content-manager-edit-view.remove-from-release",
|
|
475
479
|
defaultMessage: "Remove from release"
|
|
476
480
|
}) })
|
|
477
|
-
] }) })
|
|
481
|
+
] }) });
|
|
478
482
|
};
|
|
479
483
|
const ReleaseActionEntryLinkItem = ({
|
|
480
484
|
contentTypeUid,
|
|
@@ -482,41 +486,44 @@ const ReleaseActionEntryLinkItem = ({
|
|
|
482
486
|
locale
|
|
483
487
|
}) => {
|
|
484
488
|
const { formatMessage } = reactIntl.useIntl();
|
|
485
|
-
const
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
!
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
489
|
+
const userPermissions = strapiAdmin.useAuth("ReleaseActionEntryLinkItem", (state) => state.permissions);
|
|
490
|
+
const canUpdateEntryForLocale = React__namespace.useMemo(() => {
|
|
491
|
+
const updatePermissions = userPermissions.find(
|
|
492
|
+
(permission) => permission.subject === contentTypeUid && permission.action === "plugin::content-manager.explorer.update"
|
|
493
|
+
);
|
|
494
|
+
if (!updatePermissions) {
|
|
495
|
+
return false;
|
|
496
|
+
}
|
|
497
|
+
return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));
|
|
498
|
+
}, [contentTypeUid, locale, userPermissions]);
|
|
499
|
+
const {
|
|
500
|
+
allowedActions: { canUpdate: canUpdateContentType }
|
|
501
|
+
} = strapiAdmin.useRBAC({
|
|
502
|
+
updateContentType: [
|
|
503
|
+
{
|
|
504
|
+
action: "plugin::content-manager.explorer.update",
|
|
505
|
+
subject: contentTypeUid
|
|
506
|
+
}
|
|
507
|
+
]
|
|
508
|
+
});
|
|
509
|
+
if (!canUpdateContentType || !canUpdateEntryForLocale) {
|
|
510
|
+
return null;
|
|
511
|
+
}
|
|
512
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
513
|
+
v2.Link,
|
|
496
514
|
{
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
children:
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
to: {
|
|
508
|
-
pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
|
|
509
|
-
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
510
|
-
},
|
|
511
|
-
startIcon: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Pencil, width: 3, height: 3 }),
|
|
512
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
513
|
-
id: "content-releases.content-manager-edit-view.edit-entry",
|
|
514
|
-
defaultMessage: "Edit entry"
|
|
515
|
-
}) })
|
|
516
|
-
}
|
|
517
|
-
) })
|
|
515
|
+
as: reactRouterDom.NavLink,
|
|
516
|
+
to: {
|
|
517
|
+
pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
|
|
518
|
+
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
519
|
+
},
|
|
520
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Pencil, width: 3, height: 3 }),
|
|
521
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
522
|
+
id: "content-releases.content-manager-edit-view.edit-entry",
|
|
523
|
+
defaultMessage: "Edit entry"
|
|
524
|
+
}) })
|
|
518
525
|
}
|
|
519
|
-
);
|
|
526
|
+
) });
|
|
520
527
|
};
|
|
521
528
|
const EditReleaseItem = ({ releaseId }) => {
|
|
522
529
|
const { formatMessage } = reactIntl.useIntl();
|
|
@@ -535,9 +542,10 @@ const EditReleaseItem = ({ releaseId }) => {
|
|
|
535
542
|
};
|
|
536
543
|
const Root = ({ children, hasTriggerBorder = false }) => {
|
|
537
544
|
const { formatMessage } = reactIntl.useIntl();
|
|
545
|
+
const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
|
|
538
546
|
return (
|
|
539
547
|
// A user can access the dropdown if they have permissions to delete a release-action OR update a release
|
|
540
|
-
|
|
548
|
+
allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxRuntime.jsxs(v2.Menu.Root, { children: [
|
|
541
549
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
542
550
|
v2.Menu.Trigger,
|
|
543
551
|
{
|
|
@@ -552,7 +560,7 @@ const Root = ({ children, hasTriggerBorder = false }) => {
|
|
|
552
560
|
}
|
|
553
561
|
),
|
|
554
562
|
/* @__PURE__ */ jsxRuntime.jsx(v2.Menu.Content, { top: 1, popoverPlacement: "bottom-end", children })
|
|
555
|
-
] })
|
|
563
|
+
] }) : null
|
|
556
564
|
);
|
|
557
565
|
};
|
|
558
566
|
const ReleaseActionMenu = {
|
|
@@ -684,12 +692,13 @@ const INITIAL_VALUES = {
|
|
|
684
692
|
const NoReleases = () => {
|
|
685
693
|
const { formatMessage } = reactIntl.useIntl();
|
|
686
694
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
687
|
-
|
|
695
|
+
designSystem.EmptyStateLayout,
|
|
688
696
|
{
|
|
689
|
-
|
|
697
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.EmptyDocuments, { width: "10rem" }),
|
|
698
|
+
content: formatMessage({
|
|
690
699
|
id: "content-releases.content-manager-edit-view.add-to-release.no-releases-message",
|
|
691
700
|
defaultMessage: "No available releases. Open the list of releases and create a new one from there."
|
|
692
|
-
},
|
|
701
|
+
}),
|
|
693
702
|
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
694
703
|
v2.LinkButton,
|
|
695
704
|
{
|
|
@@ -714,9 +723,10 @@ const AddActionToReleaseModal = ({
|
|
|
714
723
|
}) => {
|
|
715
724
|
const releaseHeaderId = React__namespace.useId();
|
|
716
725
|
const { formatMessage } = reactIntl.useIntl();
|
|
717
|
-
const toggleNotification =
|
|
718
|
-
const { formatAPIError } =
|
|
719
|
-
const {
|
|
726
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
727
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
728
|
+
const [{ query: query2 }] = strapiAdmin.useQueryParams();
|
|
729
|
+
const locale = query2.plugins?.i18n?.locale;
|
|
720
730
|
const response = useGetReleasesForEntryQuery({
|
|
721
731
|
contentTypeUid,
|
|
722
732
|
entryId,
|
|
@@ -725,7 +735,6 @@ const AddActionToReleaseModal = ({
|
|
|
725
735
|
const releases = response.data?.data;
|
|
726
736
|
const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();
|
|
727
737
|
const handleSubmit = async (values) => {
|
|
728
|
-
const locale = modifiedData.locale;
|
|
729
738
|
const releaseActionEntry = {
|
|
730
739
|
contentType: contentTypeUid,
|
|
731
740
|
id: entryId,
|
|
@@ -749,12 +758,12 @@ const AddActionToReleaseModal = ({
|
|
|
749
758
|
if ("error" in response2) {
|
|
750
759
|
if (axios.isAxiosError(response2.error)) {
|
|
751
760
|
toggleNotification({
|
|
752
|
-
type: "
|
|
761
|
+
type: "danger",
|
|
753
762
|
message: formatAPIError(response2.error)
|
|
754
763
|
});
|
|
755
764
|
} else {
|
|
756
765
|
toggleNotification({
|
|
757
|
-
type: "
|
|
766
|
+
type: "danger",
|
|
758
767
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
759
768
|
});
|
|
760
769
|
}
|
|
@@ -832,17 +841,20 @@ const AddActionToReleaseModal = ({
|
|
|
832
841
|
const CMReleasesContainer = () => {
|
|
833
842
|
const [isModalOpen, setIsModalOpen] = React__namespace.useState(false);
|
|
834
843
|
const { formatMessage, formatDate, formatTime } = reactIntl.useIntl();
|
|
835
|
-
const {
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
844
|
+
const { id, slug, collectionType } = reactRouterDom.useParams();
|
|
845
|
+
const isCreatingEntry = id === "create";
|
|
846
|
+
const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
|
|
847
|
+
const { canCreateAction, canRead: canMain, canDeleteAction } = allowedActions;
|
|
848
|
+
const { schema } = strapiAdmin$1.unstable_useDocument({
|
|
849
|
+
collectionType,
|
|
850
|
+
model: slug
|
|
851
|
+
});
|
|
852
|
+
const hasDraftAndPublish = schema?.options?.draftAndPublish;
|
|
841
853
|
const contentTypeUid = slug;
|
|
842
|
-
const canFetch =
|
|
854
|
+
const canFetch = id != null && contentTypeUid != null;
|
|
843
855
|
const fetchParams = canFetch ? {
|
|
844
856
|
contentTypeUid,
|
|
845
|
-
entryId,
|
|
857
|
+
entryId: id,
|
|
846
858
|
hasEntryAttached: true
|
|
847
859
|
} : query.skipToken;
|
|
848
860
|
const response = useGetReleasesForEntryQuery(fetchParams);
|
|
@@ -860,7 +872,10 @@ const CMReleasesContainer = () => {
|
|
|
860
872
|
}
|
|
861
873
|
return `success${shade}`;
|
|
862
874
|
};
|
|
863
|
-
|
|
875
|
+
if (!canMain) {
|
|
876
|
+
return null;
|
|
877
|
+
}
|
|
878
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
864
879
|
designSystem.Box,
|
|
865
880
|
{
|
|
866
881
|
as: "aside",
|
|
@@ -917,7 +932,7 @@ const CMReleasesContainer = () => {
|
|
|
917
932
|
)
|
|
918
933
|
}
|
|
919
934
|
),
|
|
920
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
|
|
935
|
+
/* @__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: [
|
|
921
936
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontSize: 2, fontWeight: "bold", variant: "omega", textColor: "neutral700", children: release.name }),
|
|
922
937
|
release.scheduledAt && release.timezone && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: formatMessage(
|
|
923
938
|
{
|
|
@@ -941,7 +956,7 @@ const CMReleasesContainer = () => {
|
|
|
941
956
|
)
|
|
942
957
|
}
|
|
943
958
|
) }),
|
|
944
|
-
|
|
959
|
+
canDeleteAction ? /* @__PURE__ */ jsxRuntime.jsxs(ReleaseActionMenu.Root, { hasTriggerBorder: true, children: [
|
|
945
960
|
/* @__PURE__ */ jsxRuntime.jsx(ReleaseActionMenu.EditReleaseItem, { releaseId: release.id }),
|
|
946
961
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
947
962
|
ReleaseActionMenu.DeleteReleaseActionItem,
|
|
@@ -950,14 +965,14 @@ const CMReleasesContainer = () => {
|
|
|
950
965
|
actionId: release.actions[0].id
|
|
951
966
|
}
|
|
952
967
|
)
|
|
953
|
-
] })
|
|
954
|
-
] })
|
|
968
|
+
] }) : null
|
|
969
|
+
] }) })
|
|
955
970
|
]
|
|
956
971
|
},
|
|
957
972
|
release.id
|
|
958
973
|
);
|
|
959
974
|
}),
|
|
960
|
-
|
|
975
|
+
canCreateAction ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
961
976
|
designSystem.Button,
|
|
962
977
|
{
|
|
963
978
|
justifyContent: "center",
|
|
@@ -972,19 +987,19 @@ const CMReleasesContainer = () => {
|
|
|
972
987
|
defaultMessage: "Add to release"
|
|
973
988
|
})
|
|
974
989
|
}
|
|
975
|
-
)
|
|
990
|
+
) : null
|
|
976
991
|
] }),
|
|
977
992
|
isModalOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
978
993
|
AddActionToReleaseModal,
|
|
979
994
|
{
|
|
980
995
|
handleClose: toggleModal,
|
|
981
996
|
contentTypeUid,
|
|
982
|
-
entryId
|
|
997
|
+
entryId: id
|
|
983
998
|
}
|
|
984
999
|
)
|
|
985
1000
|
]
|
|
986
1001
|
}
|
|
987
|
-
)
|
|
1002
|
+
);
|
|
988
1003
|
};
|
|
989
1004
|
const getContentPermissions = (subject) => {
|
|
990
1005
|
const permissions = {
|
|
@@ -1001,31 +1016,33 @@ const getContentPermissions = (subject) => {
|
|
|
1001
1016
|
};
|
|
1002
1017
|
return permissions;
|
|
1003
1018
|
};
|
|
1004
|
-
const ReleaseAction = ({
|
|
1019
|
+
const ReleaseAction = ({ documentIds, model }) => {
|
|
1005
1020
|
const { formatMessage } = reactIntl.useIntl();
|
|
1006
|
-
const toggleNotification =
|
|
1007
|
-
const { formatAPIError } =
|
|
1008
|
-
const {
|
|
1021
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
1022
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
1023
|
+
const [{ query: query2 }] = strapiAdmin.useQueryParams();
|
|
1009
1024
|
const contentPermissions = getContentPermissions(model);
|
|
1010
1025
|
const {
|
|
1011
1026
|
allowedActions: { canPublish }
|
|
1012
|
-
} =
|
|
1027
|
+
} = strapiAdmin.useRBAC(contentPermissions);
|
|
1013
1028
|
const {
|
|
1014
1029
|
allowedActions: { canCreate }
|
|
1015
|
-
} =
|
|
1030
|
+
} = strapiAdmin.useRBAC(PERMISSIONS);
|
|
1016
1031
|
const response = useGetReleasesQuery();
|
|
1017
1032
|
const releases = response.data?.data;
|
|
1018
1033
|
const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();
|
|
1019
1034
|
const handleSubmit = async (values) => {
|
|
1020
|
-
const locale =
|
|
1021
|
-
const releaseActionEntries =
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1035
|
+
const locale = query2.plugins?.i18n?.locale;
|
|
1036
|
+
const releaseActionEntries = documentIds.map(
|
|
1037
|
+
(id) => ({
|
|
1038
|
+
type: values.type,
|
|
1039
|
+
entry: {
|
|
1040
|
+
contentType: model,
|
|
1041
|
+
id,
|
|
1042
|
+
locale
|
|
1043
|
+
}
|
|
1044
|
+
})
|
|
1045
|
+
);
|
|
1029
1046
|
const response2 = await createManyReleaseActions({
|
|
1030
1047
|
body: releaseActionEntries,
|
|
1031
1048
|
params: { releaseId: values.releaseId }
|
|
@@ -1157,96 +1174,14 @@ const ReleaseAction = ({ ids, model }) => {
|
|
|
1157
1174
|
}
|
|
1158
1175
|
};
|
|
1159
1176
|
};
|
|
1160
|
-
const
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
path {
|
|
1164
|
-
fill: ${({ theme }) => theme.colors.neutral500};
|
|
1165
|
-
}
|
|
1166
|
-
}
|
|
1167
|
-
&:hover {
|
|
1168
|
-
svg {
|
|
1169
|
-
> g,
|
|
1170
|
-
path {
|
|
1171
|
-
fill: ${({ theme }) => theme.colors.neutral600};
|
|
1172
|
-
}
|
|
1173
|
-
}
|
|
1174
|
-
}
|
|
1175
|
-
&:active {
|
|
1176
|
-
svg {
|
|
1177
|
-
> g,
|
|
1178
|
-
path {
|
|
1179
|
-
fill: ${({ theme }) => theme.colors.neutral400};
|
|
1180
|
-
}
|
|
1181
|
-
}
|
|
1182
|
-
}
|
|
1183
|
-
`;
|
|
1184
|
-
const ActionWrapper = styled__default.default(designSystem.Flex)`
|
|
1185
|
-
svg {
|
|
1186
|
-
height: ${4 / 16}rem;
|
|
1187
|
-
}
|
|
1188
|
-
`;
|
|
1189
|
-
const useReleasesList = (entryId) => {
|
|
1190
|
-
const { uid: contentTypeUid } = useTypedSelector(
|
|
1191
|
-
(state) => state["content-manager_listView"].contentType
|
|
1192
|
-
);
|
|
1193
|
-
const listViewData = useTypedSelector((state) => state["content-manager_listView"].data);
|
|
1194
|
-
const entriesIds = listViewData.map((entry) => entry.id);
|
|
1195
|
-
const response = useGetMappedEntriesInReleasesQuery(
|
|
1196
|
-
{ contentTypeUid, entriesIds },
|
|
1197
|
-
{ skip: !entriesIds || !contentTypeUid || entriesIds.length === 0 }
|
|
1198
|
-
);
|
|
1199
|
-
const mappedEntriesInReleases = response.data || {};
|
|
1200
|
-
return mappedEntriesInReleases?.[entryId] || [];
|
|
1201
|
-
};
|
|
1202
|
-
const addColumnToTableHook = ({ displayedHeaders, layout }) => {
|
|
1203
|
-
const { contentType } = layout;
|
|
1204
|
-
if (!contentType.options?.draftAndPublish) {
|
|
1205
|
-
return { displayedHeaders, layout };
|
|
1177
|
+
const prefixPluginTranslations = (trad, pluginId2) => {
|
|
1178
|
+
if (!pluginId2) {
|
|
1179
|
+
throw new TypeError("pluginId can't be empty");
|
|
1206
1180
|
}
|
|
1207
|
-
return {
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
key: "__release_key__",
|
|
1212
|
-
fieldSchema: { type: "string" },
|
|
1213
|
-
metadatas: { label: "To be released in", searchable: true, sortable: false },
|
|
1214
|
-
name: "releasedAt",
|
|
1215
|
-
cellFormatter: (props) => /* @__PURE__ */ jsxRuntime.jsx(ReleaseListCell, { ...props })
|
|
1216
|
-
}
|
|
1217
|
-
],
|
|
1218
|
-
layout
|
|
1219
|
-
};
|
|
1220
|
-
};
|
|
1221
|
-
const ReleaseListCell = ({ id }) => {
|
|
1222
|
-
const releases = useReleasesList(id);
|
|
1223
|
-
const [visible, setVisible] = React__namespace.useState(false);
|
|
1224
|
-
const buttonRef = React__namespace.useRef(null);
|
|
1225
|
-
const { formatMessage } = reactIntl.useIntl();
|
|
1226
|
-
const handleTogglePopover = () => setVisible((prev) => !prev);
|
|
1227
|
-
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsxRuntime.jsx(Button, { type: "button", onClick: handleTogglePopover, ref: buttonRef, children: /* @__PURE__ */ jsxRuntime.jsxs(ActionWrapper, { height: "2rem", width: "2rem", children: [
|
|
1228
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { style: { maxWidth: "252px", cursor: "pointer" }, textColor: "neutral800", children: releases.length > 0 ? formatMessage(
|
|
1229
|
-
{
|
|
1230
|
-
id: "content-releases.content-manager.list-view.releases-number",
|
|
1231
|
-
defaultMessage: "{number} {number, plural, one {release} other {releases}}"
|
|
1232
|
-
},
|
|
1233
|
-
{
|
|
1234
|
-
number: releases.length
|
|
1235
|
-
}
|
|
1236
|
-
) : "-" }),
|
|
1237
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { children: [
|
|
1238
|
-
releases.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.SortIcon, {}),
|
|
1239
|
-
visible && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1240
|
-
designSystem.Popover,
|
|
1241
|
-
{
|
|
1242
|
-
onDismiss: handleTogglePopover,
|
|
1243
|
-
source: buttonRef,
|
|
1244
|
-
spacing: 16,
|
|
1245
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("ul", { children: releases.map(({ id: id2, name }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 3, as: "li", children: /* @__PURE__ */ jsxRuntime.jsx(v2.Link, { href: `/admin/plugins/content-releases/${id2}`, isExternal: false, children: name }) }, id2)) })
|
|
1246
|
-
}
|
|
1247
|
-
)
|
|
1248
|
-
] })
|
|
1249
|
-
] }) }) });
|
|
1181
|
+
return Object.keys(trad).reduce((acc, current) => {
|
|
1182
|
+
acc[`${pluginId2}.${current}`] = trad[current];
|
|
1183
|
+
return acc;
|
|
1184
|
+
}, {});
|
|
1250
1185
|
};
|
|
1251
1186
|
const admin = {
|
|
1252
1187
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -1254,23 +1189,20 @@ const admin = {
|
|
|
1254
1189
|
app.createHook("ContentReleases/pages/ReleaseDetails/add-locale-in-releases");
|
|
1255
1190
|
if (window.strapi.features.isEnabled("cms-content-releases")) {
|
|
1256
1191
|
app.addMenuLink({
|
|
1257
|
-
to:
|
|
1192
|
+
to: `plugins/${pluginId}`,
|
|
1258
1193
|
icon: icons.PaperPlane,
|
|
1259
1194
|
intlLabel: {
|
|
1260
1195
|
id: `${pluginId}.plugin.name`,
|
|
1261
1196
|
defaultMessage: "Releases"
|
|
1262
1197
|
},
|
|
1263
|
-
|
|
1264
|
-
const { App } = await Promise.resolve().then(() => require("./App-HjWtUYmc.js"));
|
|
1265
|
-
return App;
|
|
1266
|
-
},
|
|
1198
|
+
Component: () => Promise.resolve().then(() => require("./App-FVorrIzF.js")).then((mod) => ({ default: mod.App })),
|
|
1267
1199
|
permissions: PERMISSIONS.main
|
|
1268
1200
|
});
|
|
1269
1201
|
app.addMiddlewares([() => releaseApi.middleware]);
|
|
1270
1202
|
app.addReducers({
|
|
1271
1203
|
[releaseApi.reducerPath]: releaseApi.reducer
|
|
1272
1204
|
});
|
|
1273
|
-
app.
|
|
1205
|
+
app.getPlugin("content-manager").injectComponent("editView", "right-links", {
|
|
1274
1206
|
name: `${pluginId}-link`,
|
|
1275
1207
|
Component: CMReleasesContainer
|
|
1276
1208
|
});
|
|
@@ -1279,7 +1211,6 @@ const admin = {
|
|
|
1279
1211
|
actions.splice(deleteActionIndex, 0, ReleaseAction);
|
|
1280
1212
|
return actions;
|
|
1281
1213
|
});
|
|
1282
|
-
app.registerHook("Admin/CM/pages/ListView/inject-column-in-table", addColumnToTableHook);
|
|
1283
1214
|
} else if (!window.strapi.features.isEnabled("cms-content-releases") && window.strapi?.flags?.promoteEE) {
|
|
1284
1215
|
app.addMenuLink({
|
|
1285
1216
|
to: `/plugins/purchase-content-releases`,
|
|
@@ -1288,9 +1219,10 @@ const admin = {
|
|
|
1288
1219
|
id: `${pluginId}.plugin.name`,
|
|
1289
1220
|
defaultMessage: "Releases"
|
|
1290
1221
|
},
|
|
1222
|
+
permissions: [],
|
|
1291
1223
|
async Component() {
|
|
1292
|
-
const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases-
|
|
1293
|
-
return PurchaseContentReleases;
|
|
1224
|
+
const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases-sD6ADHk2.js"));
|
|
1225
|
+
return { default: PurchaseContentReleases };
|
|
1294
1226
|
},
|
|
1295
1227
|
lockIcon: true
|
|
1296
1228
|
});
|
|
@@ -1299,9 +1231,9 @@ const admin = {
|
|
|
1299
1231
|
async registerTrads({ locales }) {
|
|
1300
1232
|
const importedTrads = await Promise.all(
|
|
1301
1233
|
locales.map((locale) => {
|
|
1302
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-
|
|
1234
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-DtFJ5ViE.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
|
|
1303
1235
|
return {
|
|
1304
|
-
data:
|
|
1236
|
+
data: prefixPluginTranslations(data, "content-releases"),
|
|
1305
1237
|
locale
|
|
1306
1238
|
};
|
|
1307
1239
|
}).catch(() => {
|
|
@@ -1329,7 +1261,6 @@ exports.useGetReleaseActionsQuery = useGetReleaseActionsQuery;
|
|
|
1329
1261
|
exports.useGetReleaseQuery = useGetReleaseQuery;
|
|
1330
1262
|
exports.useGetReleasesQuery = useGetReleasesQuery;
|
|
1331
1263
|
exports.usePublishReleaseMutation = usePublishReleaseMutation;
|
|
1332
|
-
exports.useTypedDispatch = useTypedDispatch;
|
|
1333
1264
|
exports.useUpdateReleaseActionMutation = useUpdateReleaseActionMutation;
|
|
1334
1265
|
exports.useUpdateReleaseMutation = useUpdateReleaseMutation;
|
|
1335
|
-
//# sourceMappingURL=index-
|
|
1266
|
+
//# sourceMappingURL=index-BfJLth9Z.js.map
|