@strapi/content-releases 0.0.0-experimental.edc24aaa3bb5a90fa5fd4fee208167dd4e2e38d4 → 0.0.0-experimental.f0d3b2d782e972f1dcb8acf0dce31d4090d1e420
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-D-lWdVb2.js → App-BKB1esYS.js} +42 -19
- package/dist/_chunks/App-BKB1esYS.js.map +1 -0
- package/dist/_chunks/{App-UQxgTJY5.mjs → App-Cne--1Z8.mjs} +43 -20
- package/dist/_chunks/App-Cne--1Z8.mjs.map +1 -0
- package/dist/_chunks/{ReleasesSettingsPage-CuUXvABk.mjs → ReleasesSettingsPage-C1WwGWIH.mjs} +4 -4
- package/dist/_chunks/ReleasesSettingsPage-C1WwGWIH.mjs.map +1 -0
- package/dist/_chunks/{ReleasesSettingsPage-xfAoY8N3.js → ReleasesSettingsPage-kuXIwpWp.js} +4 -4
- package/dist/_chunks/ReleasesSettingsPage-kuXIwpWp.js.map +1 -0
- package/dist/_chunks/{en-BCDLTJn3.js → en-CmYoEnA7.js} +2 -1
- package/dist/_chunks/en-CmYoEnA7.js.map +1 -0
- package/dist/_chunks/{en-CGXIF4vQ.mjs → en-D0yVZFqf.mjs} +2 -1
- package/dist/_chunks/en-D0yVZFqf.mjs.map +1 -0
- package/dist/_chunks/{index-jnv9zdcE.js → index-5Odi61vw.js} +286 -23
- package/dist/_chunks/index-5Odi61vw.js.map +1 -0
- package/dist/_chunks/{index-b3Ej95H7.mjs → index-Cy7qwpaU.mjs} +289 -26
- package/dist/_chunks/index-Cy7qwpaU.mjs.map +1 -0
- package/dist/_chunks/{schemas-z5zp-_Gd.js → schemas-BE1LxE9J.js} +2 -2
- package/dist/_chunks/schemas-BE1LxE9J.js.map +1 -0
- package/dist/_chunks/{schemas-63pFihNF.mjs → schemas-DdA2ic2U.mjs} +2 -2
- package/dist/_chunks/schemas-DdA2ic2U.mjs.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/ReleaseListCell.d.ts +28 -0
- package/dist/admin/src/services/release.d.ts +34 -32
- package/dist/server/index.js +112 -79
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +112 -79
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/index.d.ts +2 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/release-action.d.ts +1 -0
- package/dist/server/src/controllers/release-action.d.ts.map +1 -1
- package/dist/server/src/controllers/release.d.ts +1 -0
- package/dist/server/src/controllers/release.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +4 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +1 -1
- package/dist/server/src/routes/release-action.d.ts.map +1 -1
- package/dist/server/src/routes/release.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +2 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/release-action.d.ts +3 -1
- package/dist/server/src/services/release-action.d.ts.map +1 -1
- package/dist/shared/contracts/release-actions.d.ts +3 -5
- package/dist/shared/contracts/release-actions.d.ts.map +1 -1
- package/dist/shared/contracts/releases.d.ts +3 -2
- package/dist/shared/contracts/releases.d.ts.map +1 -1
- package/package.json +16 -15
- package/dist/_chunks/App-D-lWdVb2.js.map +0 -1
- package/dist/_chunks/App-UQxgTJY5.mjs.map +0 -1
- package/dist/_chunks/ReleasesSettingsPage-CuUXvABk.mjs.map +0 -1
- package/dist/_chunks/ReleasesSettingsPage-xfAoY8N3.js.map +0 -1
- package/dist/_chunks/en-BCDLTJn3.js.map +0 -1
- package/dist/_chunks/en-CGXIF4vQ.mjs.map +0 -1
- package/dist/_chunks/index-b3Ej95H7.mjs.map +0 -1
- package/dist/_chunks/index-jnv9zdcE.js.map +0 -1
- package/dist/_chunks/schemas-63pFihNF.mjs.map +0 -1
- package/dist/_chunks/schemas-z5zp-_Gd.js.map +0 -1
- package/strapi-server.js +0 -3
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { PaperPlane, Cross, Pencil, More } from "@strapi/icons";
|
|
1
|
+
import { PaperPlane, CaretDown, Cross, Pencil, More } from "@strapi/icons";
|
|
2
2
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
|
-
import { adminApi, useRBAC, useNotification, useAPIErrorHandler, useQueryParams, isFetchError, useAuth } from "@strapi/admin/strapi-admin";
|
|
3
|
+
import { adminApi, useRBAC, useNotification, useAPIErrorHandler, useQueryParams, isFetchError, useTable, useAuth } from "@strapi/admin/strapi-admin";
|
|
4
|
+
import { Field, Flex, VisuallyHidden, Modal, Button, EmptyStateLayout, LinkButton, Box, SingleSelect, SingleSelectOption, Popover, Typography, Link as Link$1, Menu, AccessibleIcon } from "@strapi/design-system";
|
|
5
|
+
import { useFormik, Formik, Form } from "formik";
|
|
6
|
+
import { useIntl } from "react-intl";
|
|
4
7
|
import { unstable_useDocumentLayout } from "@strapi/content-manager/strapi-admin";
|
|
5
|
-
import { Field, Flex, VisuallyHidden, Modal, Button, Box, SingleSelect, SingleSelectOption, EmptyStateLayout, LinkButton, Menu, Typography, AccessibleIcon } from "@strapi/design-system";
|
|
6
8
|
import { EmptyDocuments } from "@strapi/icons/symbols";
|
|
7
|
-
import { useFormik } from "formik";
|
|
8
|
-
import { useIntl } from "react-intl";
|
|
9
9
|
import { Link, NavLink } from "react-router-dom";
|
|
10
10
|
import * as yup from "yup";
|
|
11
11
|
import { styled } from "styled-components";
|
|
@@ -103,7 +103,7 @@ const extendInvalidatesTags = (endpoint, extraTags) => {
|
|
|
103
103
|
Object.assign(endpoint, { invalidatesTags: newInvalidatesTags });
|
|
104
104
|
};
|
|
105
105
|
const releaseApi = adminApi.enhanceEndpoints({
|
|
106
|
-
addTagTypes: ["Release", "ReleaseAction", "EntriesInRelease", "ReleaseSettings"],
|
|
106
|
+
addTagTypes: ["Release", "ReleaseAction", "EntriesInRelease", "ReleaseSettings", "Document"],
|
|
107
107
|
endpoints: {
|
|
108
108
|
updateDocument(endpoint) {
|
|
109
109
|
extendInvalidatesTags(endpoint, [
|
|
@@ -198,7 +198,10 @@ const releaseApi = adminApi.enhanceEndpoints({
|
|
|
198
198
|
method: "GET"
|
|
199
199
|
};
|
|
200
200
|
},
|
|
201
|
-
providesTags: (result, error, arg) => [
|
|
201
|
+
providesTags: (result, error, arg) => [
|
|
202
|
+
{ type: "Release", id: "LIST" },
|
|
203
|
+
{ type: "Release", id: arg.id }
|
|
204
|
+
]
|
|
202
205
|
}),
|
|
203
206
|
getReleaseActions: build.query({
|
|
204
207
|
query({ releaseId, ...params }) {
|
|
@@ -267,7 +270,11 @@ const releaseApi = adminApi.enhanceEndpoints({
|
|
|
267
270
|
data: body
|
|
268
271
|
};
|
|
269
272
|
},
|
|
270
|
-
invalidatesTags: () => [
|
|
273
|
+
invalidatesTags: (res, error, arg) => [
|
|
274
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
275
|
+
{ type: "Release", id: "LIST" },
|
|
276
|
+
{ type: "Release", id: arg.params.releaseId }
|
|
277
|
+
],
|
|
271
278
|
async onQueryStarted({ body, params, query, actionPath }, { dispatch, queryFulfilled }) {
|
|
272
279
|
const paramsWithoutActionId = {
|
|
273
280
|
releaseId: params.releaseId,
|
|
@@ -314,7 +321,10 @@ const releaseApi = adminApi.enhanceEndpoints({
|
|
|
314
321
|
method: "POST"
|
|
315
322
|
};
|
|
316
323
|
},
|
|
317
|
-
invalidatesTags: (result, error, arg) => [
|
|
324
|
+
invalidatesTags: (result, error, arg) => [
|
|
325
|
+
{ type: "Release", id: arg.id },
|
|
326
|
+
{ type: "Document", id: `ALL_LIST` }
|
|
327
|
+
]
|
|
318
328
|
}),
|
|
319
329
|
deleteRelease: build.mutation({
|
|
320
330
|
query({ id }) {
|
|
@@ -352,7 +362,7 @@ const releaseApi = adminApi.enhanceEndpoints({
|
|
|
352
362
|
data
|
|
353
363
|
};
|
|
354
364
|
},
|
|
355
|
-
invalidatesTags:
|
|
365
|
+
invalidatesTags: [{ type: "ReleaseSettings" }]
|
|
356
366
|
})
|
|
357
367
|
};
|
|
358
368
|
}
|
|
@@ -577,6 +587,7 @@ const AddActionToReleaseModal = ({
|
|
|
577
587
|
};
|
|
578
588
|
const ReleaseActionModalForm = ({
|
|
579
589
|
documentId,
|
|
590
|
+
document,
|
|
580
591
|
model,
|
|
581
592
|
collectionType
|
|
582
593
|
}) => {
|
|
@@ -655,6 +666,8 @@ const ReleaseActionModalForm = ({
|
|
|
655
666
|
defaultMessage: "Add to release"
|
|
656
667
|
}),
|
|
657
668
|
icon: /* @__PURE__ */ jsx(PaperPlane, {}),
|
|
669
|
+
// Entry is creating so we don't want to allow adding it to a release
|
|
670
|
+
disabled: !document,
|
|
658
671
|
position: ["panel", "table-row"],
|
|
659
672
|
dialog: {
|
|
660
673
|
type: "modal",
|
|
@@ -693,6 +706,236 @@ const ReleaseActionModalForm = ({
|
|
|
693
706
|
}
|
|
694
707
|
};
|
|
695
708
|
};
|
|
709
|
+
const getContentPermissions = (subject) => {
|
|
710
|
+
const permissions = {
|
|
711
|
+
publish: [
|
|
712
|
+
{
|
|
713
|
+
action: "plugin::content-manager.explorer.publish",
|
|
714
|
+
subject,
|
|
715
|
+
id: "",
|
|
716
|
+
actionParameters: {},
|
|
717
|
+
properties: {},
|
|
718
|
+
conditions: []
|
|
719
|
+
}
|
|
720
|
+
]
|
|
721
|
+
};
|
|
722
|
+
return permissions;
|
|
723
|
+
};
|
|
724
|
+
const ReleaseAction = ({ documents, model }) => {
|
|
725
|
+
const { formatMessage } = useIntl();
|
|
726
|
+
const { toggleNotification } = useNotification();
|
|
727
|
+
const { formatAPIError } = useAPIErrorHandler();
|
|
728
|
+
const [{ query }] = useQueryParams();
|
|
729
|
+
const contentPermissions = getContentPermissions(model);
|
|
730
|
+
const {
|
|
731
|
+
allowedActions: { canPublish }
|
|
732
|
+
} = useRBAC(contentPermissions);
|
|
733
|
+
const {
|
|
734
|
+
allowedActions: { canCreate }
|
|
735
|
+
} = useRBAC(PERMISSIONS);
|
|
736
|
+
const response = useGetReleasesQuery();
|
|
737
|
+
const releases = response.data?.data;
|
|
738
|
+
const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();
|
|
739
|
+
const documentIds = documents.map((doc) => doc.documentId);
|
|
740
|
+
const handleSubmit = async (values) => {
|
|
741
|
+
const locale = query.plugins?.i18n?.locale;
|
|
742
|
+
const releaseActionEntries = documentIds.map(
|
|
743
|
+
(entryDocumentId) => ({
|
|
744
|
+
type: values.type,
|
|
745
|
+
contentType: model,
|
|
746
|
+
entryDocumentId,
|
|
747
|
+
locale
|
|
748
|
+
})
|
|
749
|
+
);
|
|
750
|
+
const response2 = await createManyReleaseActions({
|
|
751
|
+
body: releaseActionEntries,
|
|
752
|
+
params: { releaseId: values.releaseId }
|
|
753
|
+
});
|
|
754
|
+
if ("data" in response2) {
|
|
755
|
+
const notificationMessage = formatMessage(
|
|
756
|
+
{
|
|
757
|
+
id: "content-releases.content-manager-list-view.add-to-release.notification.success.message",
|
|
758
|
+
defaultMessage: "{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release."
|
|
759
|
+
},
|
|
760
|
+
{
|
|
761
|
+
entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
|
|
762
|
+
totalEntries: response2.data.meta.totalEntries
|
|
763
|
+
}
|
|
764
|
+
);
|
|
765
|
+
const notification = {
|
|
766
|
+
type: "success",
|
|
767
|
+
title: formatMessage(
|
|
768
|
+
{
|
|
769
|
+
id: "content-releases.content-manager-list-view.add-to-release.notification.success.title",
|
|
770
|
+
defaultMessage: "Successfully added to release."
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
|
|
774
|
+
totalEntries: response2.data.meta.totalEntries
|
|
775
|
+
}
|
|
776
|
+
),
|
|
777
|
+
message: response2.data.meta.entriesAlreadyInRelease ? notificationMessage : ""
|
|
778
|
+
};
|
|
779
|
+
toggleNotification(notification);
|
|
780
|
+
return true;
|
|
781
|
+
}
|
|
782
|
+
if ("error" in response2) {
|
|
783
|
+
if (isFetchError(response2.error)) {
|
|
784
|
+
toggleNotification({
|
|
785
|
+
type: "warning",
|
|
786
|
+
message: formatAPIError(response2.error)
|
|
787
|
+
});
|
|
788
|
+
} else {
|
|
789
|
+
toggleNotification({
|
|
790
|
+
type: "warning",
|
|
791
|
+
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
792
|
+
});
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
};
|
|
796
|
+
if (!canCreate || !canPublish)
|
|
797
|
+
return null;
|
|
798
|
+
return {
|
|
799
|
+
actionType: "release",
|
|
800
|
+
variant: "tertiary",
|
|
801
|
+
label: formatMessage({
|
|
802
|
+
id: "content-manager-list-view.add-to-release",
|
|
803
|
+
defaultMessage: "Add to Release"
|
|
804
|
+
}),
|
|
805
|
+
dialog: {
|
|
806
|
+
type: "modal",
|
|
807
|
+
title: formatMessage({
|
|
808
|
+
id: "content-manager-list-view.add-to-release",
|
|
809
|
+
defaultMessage: "Add to Release"
|
|
810
|
+
}),
|
|
811
|
+
content: ({ onClose }) => {
|
|
812
|
+
return /* @__PURE__ */ jsx(
|
|
813
|
+
Formik,
|
|
814
|
+
{
|
|
815
|
+
onSubmit: async (values) => {
|
|
816
|
+
const data = await handleSubmit(values);
|
|
817
|
+
if (data) {
|
|
818
|
+
return onClose();
|
|
819
|
+
}
|
|
820
|
+
},
|
|
821
|
+
validationSchema: RELEASE_ACTION_FORM_SCHEMA,
|
|
822
|
+
initialValues: INITIAL_VALUES,
|
|
823
|
+
children: ({ values, setFieldValue }) => /* @__PURE__ */ jsxs(Form, { children: [
|
|
824
|
+
releases?.length === 0 ? /* @__PURE__ */ jsx(NoReleases, {}) : /* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
|
|
825
|
+
/* @__PURE__ */ jsx(Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxs(Field.Root, { required: true, children: [
|
|
826
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
827
|
+
id: "content-releases.content-manager-list-view.add-to-release.select-label",
|
|
828
|
+
defaultMessage: "Select a release"
|
|
829
|
+
}) }),
|
|
830
|
+
/* @__PURE__ */ jsx(
|
|
831
|
+
SingleSelect,
|
|
832
|
+
{
|
|
833
|
+
placeholder: formatMessage({
|
|
834
|
+
id: "content-releases.content-manager-list-view.add-to-release.select-placeholder",
|
|
835
|
+
defaultMessage: "Select"
|
|
836
|
+
}),
|
|
837
|
+
onChange: (value) => setFieldValue("releaseId", value),
|
|
838
|
+
value: values.releaseId,
|
|
839
|
+
children: releases?.map((release) => /* @__PURE__ */ jsx(SingleSelectOption, { value: release.id, children: release.name }, release.id))
|
|
840
|
+
}
|
|
841
|
+
)
|
|
842
|
+
] }) }),
|
|
843
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
844
|
+
id: "content-releases.content-manager-list-view.add-to-release.action-type-label",
|
|
845
|
+
defaultMessage: "What do you want to do with these entries?"
|
|
846
|
+
}) }),
|
|
847
|
+
/* @__PURE__ */ jsx(
|
|
848
|
+
ReleaseActionOptions,
|
|
849
|
+
{
|
|
850
|
+
selected: values.type,
|
|
851
|
+
handleChange: (e) => setFieldValue("type", e.target.value),
|
|
852
|
+
name: "type"
|
|
853
|
+
}
|
|
854
|
+
)
|
|
855
|
+
] }) }),
|
|
856
|
+
/* @__PURE__ */ jsxs(Modal.Footer, { children: [
|
|
857
|
+
/* @__PURE__ */ jsx(Button, { onClick: onClose, variant: "tertiary", name: "cancel", children: formatMessage({
|
|
858
|
+
id: "content-releases.content-manager-list-view.add-to-release.cancel-button",
|
|
859
|
+
defaultMessage: "Cancel"
|
|
860
|
+
}) }),
|
|
861
|
+
/* @__PURE__ */ jsx(Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
|
|
862
|
+
id: "content-releases.content-manager-list-view.add-to-release.continue-button",
|
|
863
|
+
defaultMessage: "Continue"
|
|
864
|
+
}) })
|
|
865
|
+
] })
|
|
866
|
+
] })
|
|
867
|
+
}
|
|
868
|
+
);
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
};
|
|
872
|
+
};
|
|
873
|
+
const useReleasesList = (contentTypeUid, documentId) => {
|
|
874
|
+
const listViewData = useTable("ListView", (state) => state.rows);
|
|
875
|
+
const documentIds = listViewData.map((entry) => entry.documentId);
|
|
876
|
+
const [{ query }] = useQueryParams();
|
|
877
|
+
const locale = query?.plugins?.i18n?.locale || void 0;
|
|
878
|
+
const response = useGetMappedEntriesInReleasesQuery(
|
|
879
|
+
{ contentTypeUid, documentIds, locale },
|
|
880
|
+
{ skip: !documentIds || !contentTypeUid || documentIds.length === 0 }
|
|
881
|
+
);
|
|
882
|
+
const mappedEntriesInReleases = response.data || {};
|
|
883
|
+
return mappedEntriesInReleases?.[documentId] || [];
|
|
884
|
+
};
|
|
885
|
+
const addColumnToTableHook = ({ displayedHeaders, layout }) => {
|
|
886
|
+
const { options } = layout;
|
|
887
|
+
if (!options?.draftAndPublish) {
|
|
888
|
+
return { displayedHeaders, layout };
|
|
889
|
+
}
|
|
890
|
+
return {
|
|
891
|
+
displayedHeaders: [
|
|
892
|
+
...displayedHeaders,
|
|
893
|
+
{
|
|
894
|
+
searchable: false,
|
|
895
|
+
sortable: false,
|
|
896
|
+
name: "releases",
|
|
897
|
+
label: {
|
|
898
|
+
id: "content-releases.content-manager.list-view.releases.header",
|
|
899
|
+
defaultMessage: "To be released in"
|
|
900
|
+
},
|
|
901
|
+
cellFormatter: (props, _, { model }) => /* @__PURE__ */ jsx(ReleaseListCell, { ...props, model })
|
|
902
|
+
}
|
|
903
|
+
],
|
|
904
|
+
layout
|
|
905
|
+
};
|
|
906
|
+
};
|
|
907
|
+
const ReleaseListCell = ({ documentId, model }) => {
|
|
908
|
+
const releases = useReleasesList(model, documentId);
|
|
909
|
+
const { formatMessage } = useIntl();
|
|
910
|
+
return /* @__PURE__ */ jsxs(Popover.Root, { children: [
|
|
911
|
+
/* @__PURE__ */ jsx(Popover.Trigger, { children: /* @__PURE__ */ jsx(
|
|
912
|
+
Button,
|
|
913
|
+
{
|
|
914
|
+
variant: "ghost",
|
|
915
|
+
onClick: (e) => e.stopPropagation(),
|
|
916
|
+
endIcon: releases.length > 0 ? /* @__PURE__ */ jsx(CaretDown, { width: "1.2rem", height: "1.2rem" }) : null,
|
|
917
|
+
children: /* @__PURE__ */ jsx(
|
|
918
|
+
Typography,
|
|
919
|
+
{
|
|
920
|
+
style: { maxWidth: "252px", cursor: "pointer" },
|
|
921
|
+
textColor: "neutral800",
|
|
922
|
+
fontWeight: "regular",
|
|
923
|
+
children: releases.length > 0 ? formatMessage(
|
|
924
|
+
{
|
|
925
|
+
id: "content-releases.content-manager.list-view.releases-number",
|
|
926
|
+
defaultMessage: "{number} {number, plural, one {release} other {releases}}"
|
|
927
|
+
},
|
|
928
|
+
{
|
|
929
|
+
number: releases.length
|
|
930
|
+
}
|
|
931
|
+
) : "-"
|
|
932
|
+
}
|
|
933
|
+
)
|
|
934
|
+
}
|
|
935
|
+
) }),
|
|
936
|
+
/* @__PURE__ */ jsx(Popover.Content, { children: /* @__PURE__ */ jsx("ul", { children: releases.map(({ id, name }) => /* @__PURE__ */ jsx(Box, { padding: 3, tag: "li", children: /* @__PURE__ */ jsx(Link$1, { href: `/admin/plugins/content-releases/${id}`, isExternal: false, children: name }) }, id)) }) })
|
|
937
|
+
] });
|
|
938
|
+
};
|
|
696
939
|
const getTimezoneOffset = (timezone, date) => {
|
|
697
940
|
try {
|
|
698
941
|
const offsetPart = new Intl.DateTimeFormat("en", {
|
|
@@ -859,7 +1102,7 @@ const Root = ({ children }) => {
|
|
|
859
1102
|
return (
|
|
860
1103
|
// A user can access the dropdown if they have permissions to delete a release-action OR update a release
|
|
861
1104
|
allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxs(Menu.Root, { children: [
|
|
862
|
-
/* @__PURE__ */ jsx(
|
|
1105
|
+
/* @__PURE__ */ jsx(StyledMoreButton, { variant: "tertiary", endIcon: null, paddingLeft: "7px", paddingRight: "7px", children: /* @__PURE__ */ jsx(
|
|
863
1106
|
AccessibleIcon,
|
|
864
1107
|
{
|
|
865
1108
|
label: formatMessage({
|
|
@@ -873,13 +1116,23 @@ const Root = ({ children }) => {
|
|
|
873
1116
|
] }) : null
|
|
874
1117
|
);
|
|
875
1118
|
};
|
|
1119
|
+
const StyledMoreButton = styled(Menu.Trigger)`
|
|
1120
|
+
& > span {
|
|
1121
|
+
display: flex;
|
|
1122
|
+
}
|
|
1123
|
+
`;
|
|
876
1124
|
const ReleaseActionMenu = {
|
|
877
1125
|
Root,
|
|
878
1126
|
EditReleaseItem,
|
|
879
1127
|
DeleteReleaseActionItem,
|
|
880
1128
|
ReleaseActionEntryLinkItem
|
|
881
1129
|
};
|
|
882
|
-
const Panel = ({
|
|
1130
|
+
const Panel = ({
|
|
1131
|
+
model,
|
|
1132
|
+
document,
|
|
1133
|
+
documentId,
|
|
1134
|
+
collectionType
|
|
1135
|
+
}) => {
|
|
883
1136
|
const [{ query }] = useQueryParams();
|
|
884
1137
|
const locale = query.plugins?.i18n?.locale;
|
|
885
1138
|
const {
|
|
@@ -888,12 +1141,17 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
888
1141
|
const { formatMessage, formatDate, formatTime } = useIntl();
|
|
889
1142
|
const { allowedActions } = useRBAC(PERMISSIONS);
|
|
890
1143
|
const { canRead, canDeleteAction } = allowedActions;
|
|
891
|
-
const response = useGetReleasesForEntryQuery(
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
1144
|
+
const response = useGetReleasesForEntryQuery(
|
|
1145
|
+
{
|
|
1146
|
+
contentType: model,
|
|
1147
|
+
entryDocumentId: documentId,
|
|
1148
|
+
locale,
|
|
1149
|
+
hasEntryAttached: true
|
|
1150
|
+
},
|
|
1151
|
+
{
|
|
1152
|
+
skip: !document
|
|
1153
|
+
}
|
|
1154
|
+
);
|
|
897
1155
|
const releases = response.data?.data;
|
|
898
1156
|
const getReleaseColorVariant = (actionType, shade) => {
|
|
899
1157
|
if (actionType === "unpublish") {
|
|
@@ -907,7 +1165,7 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
907
1165
|
if (collectionType === "collection-types" && (!documentId || documentId === "create")) {
|
|
908
1166
|
return null;
|
|
909
1167
|
}
|
|
910
|
-
if (releases
|
|
1168
|
+
if (!releases || releases.length === 0) {
|
|
911
1169
|
return null;
|
|
912
1170
|
}
|
|
913
1171
|
return {
|
|
@@ -992,9 +1250,6 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
992
1250
|
};
|
|
993
1251
|
const pluginId = "content-releases";
|
|
994
1252
|
const prefixPluginTranslations = (trad, pluginId2) => {
|
|
995
|
-
if (!pluginId2) {
|
|
996
|
-
throw new TypeError("pluginId can't be empty");
|
|
997
|
-
}
|
|
998
1253
|
return Object.keys(trad).reduce((acc, current) => {
|
|
999
1254
|
acc[`${pluginId2}.${current}`] = trad[current];
|
|
1000
1255
|
return acc;
|
|
@@ -1012,7 +1267,7 @@ const admin = {
|
|
|
1012
1267
|
id: `${pluginId}.plugin.name`,
|
|
1013
1268
|
defaultMessage: "Releases"
|
|
1014
1269
|
},
|
|
1015
|
-
Component: () => import("./App-
|
|
1270
|
+
Component: () => import("./App-Cne--1Z8.mjs").then((mod) => ({ default: mod.App })),
|
|
1016
1271
|
permissions: PERMISSIONS.main,
|
|
1017
1272
|
position: 2
|
|
1018
1273
|
});
|
|
@@ -1036,10 +1291,18 @@ const admin = {
|
|
|
1036
1291
|
},
|
|
1037
1292
|
permissions: [],
|
|
1038
1293
|
async Component() {
|
|
1039
|
-
const { ProtectedReleasesSettingsPage } = await import("./ReleasesSettingsPage-
|
|
1294
|
+
const { ProtectedReleasesSettingsPage } = await import("./ReleasesSettingsPage-C1WwGWIH.mjs");
|
|
1040
1295
|
return { default: ProtectedReleasesSettingsPage };
|
|
1041
1296
|
}
|
|
1042
1297
|
});
|
|
1298
|
+
if ("addBulkAction" in contentManagerPluginApis && typeof contentManagerPluginApis.addBulkAction === "function") {
|
|
1299
|
+
contentManagerPluginApis.addBulkAction((actions) => {
|
|
1300
|
+
const deleteActionIndex = actions.findIndex((action) => action.type === "delete");
|
|
1301
|
+
actions.splice(deleteActionIndex, 0, ReleaseAction);
|
|
1302
|
+
return actions;
|
|
1303
|
+
});
|
|
1304
|
+
}
|
|
1305
|
+
app.registerHook("Admin/CM/pages/ListView/inject-column-in-table", addColumnToTableHook);
|
|
1043
1306
|
} else if (!window.strapi.features.isEnabled("cms-content-releases") && window.strapi?.flags?.promoteEE) {
|
|
1044
1307
|
app.addSettingsLink("global", {
|
|
1045
1308
|
id: pluginId,
|
|
@@ -1060,7 +1323,7 @@ const admin = {
|
|
|
1060
1323
|
async registerTrads({ locales }) {
|
|
1061
1324
|
const importedTrads = await Promise.all(
|
|
1062
1325
|
locales.map((locale) => {
|
|
1063
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-
|
|
1326
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-D0yVZFqf.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
|
|
1064
1327
|
return {
|
|
1065
1328
|
data: prefixPluginTranslations(data, "content-releases"),
|
|
1066
1329
|
locale
|
|
@@ -1096,4 +1359,4 @@ export {
|
|
|
1096
1359
|
releaseApi as r,
|
|
1097
1360
|
useGetReleasesQuery as u
|
|
1098
1361
|
};
|
|
1099
|
-
//# sourceMappingURL=index-
|
|
1362
|
+
//# sourceMappingURL=index-Cy7qwpaU.mjs.map
|