@strapi/content-releases 0.0.0-experimental.edc24aaa3bb5a90fa5fd4fee208167dd4e2e38d4 → 0.0.0-experimental.f0a0bc26f5ef0693aaea2a616bc6b816cfee54b6
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-UQxgTJY5.mjs → App-FQyYFBJT.mjs} +313 -105
- package/dist/_chunks/App-FQyYFBJT.mjs.map +1 -0
- package/dist/_chunks/{App-D-lWdVb2.js → App-lx4Ucy9W.js} +352 -144
- package/dist/_chunks/App-lx4Ucy9W.js.map +1 -0
- package/dist/_chunks/{ReleasesSettingsPage-CuUXvABk.mjs → ReleasesSettingsPage-DqBxvJ9i.mjs} +4 -4
- package/dist/_chunks/ReleasesSettingsPage-DqBxvJ9i.mjs.map +1 -0
- package/dist/_chunks/{ReleasesSettingsPage-xfAoY8N3.js → ReleasesSettingsPage-T5VEAV03.js} +4 -4
- package/dist/_chunks/ReleasesSettingsPage-T5VEAV03.js.map +1 -0
- package/dist/_chunks/{en-BCDLTJn3.js → en-BWPPsSH-.js} +12 -2
- package/dist/_chunks/en-BWPPsSH-.js.map +1 -0
- package/dist/_chunks/{en-CGXIF4vQ.mjs → en-D9Q4YW03.mjs} +12 -2
- package/dist/_chunks/en-D9Q4YW03.mjs.map +1 -0
- package/dist/_chunks/{index-b3Ej95H7.mjs → index-CK9G80CL.mjs} +307 -26
- package/dist/_chunks/index-CK9G80CL.mjs.map +1 -0
- package/dist/_chunks/{index-jnv9zdcE.js → index-Cl3tM1YW.js} +304 -23
- package/dist/_chunks/index-Cl3tM1YW.js.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/EntryValidationPopover.d.ts +13 -0
- 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 +191 -88
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +191 -88
- 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 +6 -6
- package/dist/server/src/middlewares/documents.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 +4 -6
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/release-action.d.ts +6 -8
- package/dist/server/src/services/release-action.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/shared/contracts/release-actions.d.ts +11 -6
- 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 +17 -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, [
|
|
@@ -128,6 +128,24 @@ const releaseApi = adminApi.enhanceEndpoints({
|
|
|
128
128
|
{ type: "Release", id: "LIST" },
|
|
129
129
|
{ type: "ReleaseAction", id: "LIST" }
|
|
130
130
|
]);
|
|
131
|
+
},
|
|
132
|
+
createWorkflow(endpoint) {
|
|
133
|
+
extendInvalidatesTags(endpoint, [
|
|
134
|
+
{ type: "Release", id: "LIST" },
|
|
135
|
+
{ type: "ReleaseAction", id: "LIST" }
|
|
136
|
+
]);
|
|
137
|
+
},
|
|
138
|
+
updateWorkflow(endpoint) {
|
|
139
|
+
extendInvalidatesTags(endpoint, [
|
|
140
|
+
{ type: "Release", id: "LIST" },
|
|
141
|
+
{ type: "ReleaseAction", id: "LIST" }
|
|
142
|
+
]);
|
|
143
|
+
},
|
|
144
|
+
deleteWorkflow(endpoint) {
|
|
145
|
+
extendInvalidatesTags(endpoint, [
|
|
146
|
+
{ type: "Release", id: "LIST" },
|
|
147
|
+
{ type: "ReleaseAction", id: "LIST" }
|
|
148
|
+
]);
|
|
131
149
|
}
|
|
132
150
|
}
|
|
133
151
|
}).injectEndpoints({
|
|
@@ -198,7 +216,10 @@ const releaseApi = adminApi.enhanceEndpoints({
|
|
|
198
216
|
method: "GET"
|
|
199
217
|
};
|
|
200
218
|
},
|
|
201
|
-
providesTags: (result, error, arg) => [
|
|
219
|
+
providesTags: (result, error, arg) => [
|
|
220
|
+
{ type: "Release", id: "LIST" },
|
|
221
|
+
{ type: "Release", id: arg.id }
|
|
222
|
+
]
|
|
202
223
|
}),
|
|
203
224
|
getReleaseActions: build.query({
|
|
204
225
|
query({ releaseId, ...params }) {
|
|
@@ -267,7 +288,11 @@ const releaseApi = adminApi.enhanceEndpoints({
|
|
|
267
288
|
data: body
|
|
268
289
|
};
|
|
269
290
|
},
|
|
270
|
-
invalidatesTags: () => [
|
|
291
|
+
invalidatesTags: (res, error, arg) => [
|
|
292
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
293
|
+
{ type: "Release", id: "LIST" },
|
|
294
|
+
{ type: "Release", id: arg.params.releaseId }
|
|
295
|
+
],
|
|
271
296
|
async onQueryStarted({ body, params, query, actionPath }, { dispatch, queryFulfilled }) {
|
|
272
297
|
const paramsWithoutActionId = {
|
|
273
298
|
releaseId: params.releaseId,
|
|
@@ -314,7 +339,10 @@ const releaseApi = adminApi.enhanceEndpoints({
|
|
|
314
339
|
method: "POST"
|
|
315
340
|
};
|
|
316
341
|
},
|
|
317
|
-
invalidatesTags: (result, error, arg) => [
|
|
342
|
+
invalidatesTags: (result, error, arg) => [
|
|
343
|
+
{ type: "Release", id: arg.id },
|
|
344
|
+
{ type: "Document", id: `ALL_LIST` }
|
|
345
|
+
]
|
|
318
346
|
}),
|
|
319
347
|
deleteRelease: build.mutation({
|
|
320
348
|
query({ id }) {
|
|
@@ -352,7 +380,7 @@ const releaseApi = adminApi.enhanceEndpoints({
|
|
|
352
380
|
data
|
|
353
381
|
};
|
|
354
382
|
},
|
|
355
|
-
invalidatesTags:
|
|
383
|
+
invalidatesTags: [{ type: "ReleaseSettings" }]
|
|
356
384
|
})
|
|
357
385
|
};
|
|
358
386
|
}
|
|
@@ -577,6 +605,7 @@ const AddActionToReleaseModal = ({
|
|
|
577
605
|
};
|
|
578
606
|
const ReleaseActionModalForm = ({
|
|
579
607
|
documentId,
|
|
608
|
+
document,
|
|
580
609
|
model,
|
|
581
610
|
collectionType
|
|
582
611
|
}) => {
|
|
@@ -655,6 +684,8 @@ const ReleaseActionModalForm = ({
|
|
|
655
684
|
defaultMessage: "Add to release"
|
|
656
685
|
}),
|
|
657
686
|
icon: /* @__PURE__ */ jsx(PaperPlane, {}),
|
|
687
|
+
// Entry is creating so we don't want to allow adding it to a release
|
|
688
|
+
disabled: !document,
|
|
658
689
|
position: ["panel", "table-row"],
|
|
659
690
|
dialog: {
|
|
660
691
|
type: "modal",
|
|
@@ -693,6 +724,236 @@ const ReleaseActionModalForm = ({
|
|
|
693
724
|
}
|
|
694
725
|
};
|
|
695
726
|
};
|
|
727
|
+
const getContentPermissions = (subject) => {
|
|
728
|
+
const permissions = {
|
|
729
|
+
publish: [
|
|
730
|
+
{
|
|
731
|
+
action: "plugin::content-manager.explorer.publish",
|
|
732
|
+
subject,
|
|
733
|
+
id: "",
|
|
734
|
+
actionParameters: {},
|
|
735
|
+
properties: {},
|
|
736
|
+
conditions: []
|
|
737
|
+
}
|
|
738
|
+
]
|
|
739
|
+
};
|
|
740
|
+
return permissions;
|
|
741
|
+
};
|
|
742
|
+
const ReleaseAction = ({ documents, model }) => {
|
|
743
|
+
const { formatMessage } = useIntl();
|
|
744
|
+
const { toggleNotification } = useNotification();
|
|
745
|
+
const { formatAPIError } = useAPIErrorHandler();
|
|
746
|
+
const [{ query }] = useQueryParams();
|
|
747
|
+
const contentPermissions = getContentPermissions(model);
|
|
748
|
+
const {
|
|
749
|
+
allowedActions: { canPublish }
|
|
750
|
+
} = useRBAC(contentPermissions);
|
|
751
|
+
const {
|
|
752
|
+
allowedActions: { canCreate }
|
|
753
|
+
} = useRBAC(PERMISSIONS);
|
|
754
|
+
const response = useGetReleasesQuery();
|
|
755
|
+
const releases = response.data?.data;
|
|
756
|
+
const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();
|
|
757
|
+
const documentIds = documents.map((doc) => doc.documentId);
|
|
758
|
+
const handleSubmit = async (values) => {
|
|
759
|
+
const locale = query.plugins?.i18n?.locale;
|
|
760
|
+
const releaseActionEntries = documentIds.map(
|
|
761
|
+
(entryDocumentId) => ({
|
|
762
|
+
type: values.type,
|
|
763
|
+
contentType: model,
|
|
764
|
+
entryDocumentId,
|
|
765
|
+
locale
|
|
766
|
+
})
|
|
767
|
+
);
|
|
768
|
+
const response2 = await createManyReleaseActions({
|
|
769
|
+
body: releaseActionEntries,
|
|
770
|
+
params: { releaseId: values.releaseId }
|
|
771
|
+
});
|
|
772
|
+
if ("data" in response2) {
|
|
773
|
+
const notificationMessage = formatMessage(
|
|
774
|
+
{
|
|
775
|
+
id: "content-releases.content-manager-list-view.add-to-release.notification.success.message",
|
|
776
|
+
defaultMessage: "{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release."
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
|
|
780
|
+
totalEntries: response2.data.meta.totalEntries
|
|
781
|
+
}
|
|
782
|
+
);
|
|
783
|
+
const notification = {
|
|
784
|
+
type: "success",
|
|
785
|
+
title: formatMessage(
|
|
786
|
+
{
|
|
787
|
+
id: "content-releases.content-manager-list-view.add-to-release.notification.success.title",
|
|
788
|
+
defaultMessage: "Successfully added to release."
|
|
789
|
+
},
|
|
790
|
+
{
|
|
791
|
+
entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
|
|
792
|
+
totalEntries: response2.data.meta.totalEntries
|
|
793
|
+
}
|
|
794
|
+
),
|
|
795
|
+
message: response2.data.meta.entriesAlreadyInRelease ? notificationMessage : ""
|
|
796
|
+
};
|
|
797
|
+
toggleNotification(notification);
|
|
798
|
+
return true;
|
|
799
|
+
}
|
|
800
|
+
if ("error" in response2) {
|
|
801
|
+
if (isFetchError(response2.error)) {
|
|
802
|
+
toggleNotification({
|
|
803
|
+
type: "warning",
|
|
804
|
+
message: formatAPIError(response2.error)
|
|
805
|
+
});
|
|
806
|
+
} else {
|
|
807
|
+
toggleNotification({
|
|
808
|
+
type: "warning",
|
|
809
|
+
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
};
|
|
814
|
+
if (!canCreate || !canPublish)
|
|
815
|
+
return null;
|
|
816
|
+
return {
|
|
817
|
+
actionType: "release",
|
|
818
|
+
variant: "tertiary",
|
|
819
|
+
label: formatMessage({
|
|
820
|
+
id: "content-manager-list-view.add-to-release",
|
|
821
|
+
defaultMessage: "Add to Release"
|
|
822
|
+
}),
|
|
823
|
+
dialog: {
|
|
824
|
+
type: "modal",
|
|
825
|
+
title: formatMessage({
|
|
826
|
+
id: "content-manager-list-view.add-to-release",
|
|
827
|
+
defaultMessage: "Add to Release"
|
|
828
|
+
}),
|
|
829
|
+
content: ({ onClose }) => {
|
|
830
|
+
return /* @__PURE__ */ jsx(
|
|
831
|
+
Formik,
|
|
832
|
+
{
|
|
833
|
+
onSubmit: async (values) => {
|
|
834
|
+
const data = await handleSubmit(values);
|
|
835
|
+
if (data) {
|
|
836
|
+
return onClose();
|
|
837
|
+
}
|
|
838
|
+
},
|
|
839
|
+
validationSchema: RELEASE_ACTION_FORM_SCHEMA,
|
|
840
|
+
initialValues: INITIAL_VALUES,
|
|
841
|
+
children: ({ values, setFieldValue }) => /* @__PURE__ */ jsxs(Form, { children: [
|
|
842
|
+
releases?.length === 0 ? /* @__PURE__ */ jsx(NoReleases, {}) : /* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
|
|
843
|
+
/* @__PURE__ */ jsx(Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxs(Field.Root, { required: true, children: [
|
|
844
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
845
|
+
id: "content-releases.content-manager-list-view.add-to-release.select-label",
|
|
846
|
+
defaultMessage: "Select a release"
|
|
847
|
+
}) }),
|
|
848
|
+
/* @__PURE__ */ jsx(
|
|
849
|
+
SingleSelect,
|
|
850
|
+
{
|
|
851
|
+
placeholder: formatMessage({
|
|
852
|
+
id: "content-releases.content-manager-list-view.add-to-release.select-placeholder",
|
|
853
|
+
defaultMessage: "Select"
|
|
854
|
+
}),
|
|
855
|
+
onChange: (value) => setFieldValue("releaseId", value),
|
|
856
|
+
value: values.releaseId,
|
|
857
|
+
children: releases?.map((release) => /* @__PURE__ */ jsx(SingleSelectOption, { value: release.id, children: release.name }, release.id))
|
|
858
|
+
}
|
|
859
|
+
)
|
|
860
|
+
] }) }),
|
|
861
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
862
|
+
id: "content-releases.content-manager-list-view.add-to-release.action-type-label",
|
|
863
|
+
defaultMessage: "What do you want to do with these entries?"
|
|
864
|
+
}) }),
|
|
865
|
+
/* @__PURE__ */ jsx(
|
|
866
|
+
ReleaseActionOptions,
|
|
867
|
+
{
|
|
868
|
+
selected: values.type,
|
|
869
|
+
handleChange: (e) => setFieldValue("type", e.target.value),
|
|
870
|
+
name: "type"
|
|
871
|
+
}
|
|
872
|
+
)
|
|
873
|
+
] }) }),
|
|
874
|
+
/* @__PURE__ */ jsxs(Modal.Footer, { children: [
|
|
875
|
+
/* @__PURE__ */ jsx(Button, { onClick: onClose, variant: "tertiary", name: "cancel", children: formatMessage({
|
|
876
|
+
id: "content-releases.content-manager-list-view.add-to-release.cancel-button",
|
|
877
|
+
defaultMessage: "Cancel"
|
|
878
|
+
}) }),
|
|
879
|
+
/* @__PURE__ */ jsx(Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
|
|
880
|
+
id: "content-releases.content-manager-list-view.add-to-release.continue-button",
|
|
881
|
+
defaultMessage: "Continue"
|
|
882
|
+
}) })
|
|
883
|
+
] })
|
|
884
|
+
] })
|
|
885
|
+
}
|
|
886
|
+
);
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
};
|
|
890
|
+
};
|
|
891
|
+
const useReleasesList = (contentTypeUid, documentId) => {
|
|
892
|
+
const listViewData = useTable("ListView", (state) => state.rows);
|
|
893
|
+
const documentIds = listViewData.map((entry) => entry.documentId);
|
|
894
|
+
const [{ query }] = useQueryParams();
|
|
895
|
+
const locale = query?.plugins?.i18n?.locale || void 0;
|
|
896
|
+
const response = useGetMappedEntriesInReleasesQuery(
|
|
897
|
+
{ contentTypeUid, documentIds, locale },
|
|
898
|
+
{ skip: !documentIds || !contentTypeUid || documentIds.length === 0 }
|
|
899
|
+
);
|
|
900
|
+
const mappedEntriesInReleases = response.data || {};
|
|
901
|
+
return mappedEntriesInReleases?.[documentId] || [];
|
|
902
|
+
};
|
|
903
|
+
const addColumnToTableHook = ({ displayedHeaders, layout }) => {
|
|
904
|
+
const { options } = layout;
|
|
905
|
+
if (!options?.draftAndPublish) {
|
|
906
|
+
return { displayedHeaders, layout };
|
|
907
|
+
}
|
|
908
|
+
return {
|
|
909
|
+
displayedHeaders: [
|
|
910
|
+
...displayedHeaders,
|
|
911
|
+
{
|
|
912
|
+
searchable: false,
|
|
913
|
+
sortable: false,
|
|
914
|
+
name: "releases",
|
|
915
|
+
label: {
|
|
916
|
+
id: "content-releases.content-manager.list-view.releases.header",
|
|
917
|
+
defaultMessage: "To be released in"
|
|
918
|
+
},
|
|
919
|
+
cellFormatter: (props, _, { model }) => /* @__PURE__ */ jsx(ReleaseListCell, { ...props, model })
|
|
920
|
+
}
|
|
921
|
+
],
|
|
922
|
+
layout
|
|
923
|
+
};
|
|
924
|
+
};
|
|
925
|
+
const ReleaseListCell = ({ documentId, model }) => {
|
|
926
|
+
const releases = useReleasesList(model, documentId);
|
|
927
|
+
const { formatMessage } = useIntl();
|
|
928
|
+
return /* @__PURE__ */ jsxs(Popover.Root, { children: [
|
|
929
|
+
/* @__PURE__ */ jsx(Popover.Trigger, { children: /* @__PURE__ */ jsx(
|
|
930
|
+
Button,
|
|
931
|
+
{
|
|
932
|
+
variant: "ghost",
|
|
933
|
+
onClick: (e) => e.stopPropagation(),
|
|
934
|
+
endIcon: releases.length > 0 ? /* @__PURE__ */ jsx(CaretDown, { width: "1.2rem", height: "1.2rem" }) : null,
|
|
935
|
+
children: /* @__PURE__ */ jsx(
|
|
936
|
+
Typography,
|
|
937
|
+
{
|
|
938
|
+
style: { maxWidth: "252px", cursor: "pointer" },
|
|
939
|
+
textColor: "neutral800",
|
|
940
|
+
fontWeight: "regular",
|
|
941
|
+
children: releases.length > 0 ? formatMessage(
|
|
942
|
+
{
|
|
943
|
+
id: "content-releases.content-manager.list-view.releases-number",
|
|
944
|
+
defaultMessage: "{number} {number, plural, one {release} other {releases}}"
|
|
945
|
+
},
|
|
946
|
+
{
|
|
947
|
+
number: releases.length
|
|
948
|
+
}
|
|
949
|
+
) : "-"
|
|
950
|
+
}
|
|
951
|
+
)
|
|
952
|
+
}
|
|
953
|
+
) }),
|
|
954
|
+
/* @__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)) }) })
|
|
955
|
+
] });
|
|
956
|
+
};
|
|
696
957
|
const getTimezoneOffset = (timezone, date) => {
|
|
697
958
|
try {
|
|
698
959
|
const offsetPart = new Intl.DateTimeFormat("en", {
|
|
@@ -859,7 +1120,7 @@ const Root = ({ children }) => {
|
|
|
859
1120
|
return (
|
|
860
1121
|
// A user can access the dropdown if they have permissions to delete a release-action OR update a release
|
|
861
1122
|
allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxs(Menu.Root, { children: [
|
|
862
|
-
/* @__PURE__ */ jsx(
|
|
1123
|
+
/* @__PURE__ */ jsx(StyledMoreButton, { variant: "tertiary", endIcon: null, paddingLeft: "7px", paddingRight: "7px", children: /* @__PURE__ */ jsx(
|
|
863
1124
|
AccessibleIcon,
|
|
864
1125
|
{
|
|
865
1126
|
label: formatMessage({
|
|
@@ -873,13 +1134,23 @@ const Root = ({ children }) => {
|
|
|
873
1134
|
] }) : null
|
|
874
1135
|
);
|
|
875
1136
|
};
|
|
1137
|
+
const StyledMoreButton = styled(Menu.Trigger)`
|
|
1138
|
+
& > span {
|
|
1139
|
+
display: flex;
|
|
1140
|
+
}
|
|
1141
|
+
`;
|
|
876
1142
|
const ReleaseActionMenu = {
|
|
877
1143
|
Root,
|
|
878
1144
|
EditReleaseItem,
|
|
879
1145
|
DeleteReleaseActionItem,
|
|
880
1146
|
ReleaseActionEntryLinkItem
|
|
881
1147
|
};
|
|
882
|
-
const Panel = ({
|
|
1148
|
+
const Panel = ({
|
|
1149
|
+
model,
|
|
1150
|
+
document,
|
|
1151
|
+
documentId,
|
|
1152
|
+
collectionType
|
|
1153
|
+
}) => {
|
|
883
1154
|
const [{ query }] = useQueryParams();
|
|
884
1155
|
const locale = query.plugins?.i18n?.locale;
|
|
885
1156
|
const {
|
|
@@ -888,12 +1159,17 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
888
1159
|
const { formatMessage, formatDate, formatTime } = useIntl();
|
|
889
1160
|
const { allowedActions } = useRBAC(PERMISSIONS);
|
|
890
1161
|
const { canRead, canDeleteAction } = allowedActions;
|
|
891
|
-
const response = useGetReleasesForEntryQuery(
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
1162
|
+
const response = useGetReleasesForEntryQuery(
|
|
1163
|
+
{
|
|
1164
|
+
contentType: model,
|
|
1165
|
+
entryDocumentId: documentId,
|
|
1166
|
+
locale,
|
|
1167
|
+
hasEntryAttached: true
|
|
1168
|
+
},
|
|
1169
|
+
{
|
|
1170
|
+
skip: !document
|
|
1171
|
+
}
|
|
1172
|
+
);
|
|
897
1173
|
const releases = response.data?.data;
|
|
898
1174
|
const getReleaseColorVariant = (actionType, shade) => {
|
|
899
1175
|
if (actionType === "unpublish") {
|
|
@@ -907,7 +1183,7 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
907
1183
|
if (collectionType === "collection-types" && (!documentId || documentId === "create")) {
|
|
908
1184
|
return null;
|
|
909
1185
|
}
|
|
910
|
-
if (releases
|
|
1186
|
+
if (!releases || releases.length === 0) {
|
|
911
1187
|
return null;
|
|
912
1188
|
}
|
|
913
1189
|
return {
|
|
@@ -992,9 +1268,6 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
992
1268
|
};
|
|
993
1269
|
const pluginId = "content-releases";
|
|
994
1270
|
const prefixPluginTranslations = (trad, pluginId2) => {
|
|
995
|
-
if (!pluginId2) {
|
|
996
|
-
throw new TypeError("pluginId can't be empty");
|
|
997
|
-
}
|
|
998
1271
|
return Object.keys(trad).reduce((acc, current) => {
|
|
999
1272
|
acc[`${pluginId2}.${current}`] = trad[current];
|
|
1000
1273
|
return acc;
|
|
@@ -1012,7 +1285,7 @@ const admin = {
|
|
|
1012
1285
|
id: `${pluginId}.plugin.name`,
|
|
1013
1286
|
defaultMessage: "Releases"
|
|
1014
1287
|
},
|
|
1015
|
-
Component: () => import("./App-
|
|
1288
|
+
Component: () => import("./App-FQyYFBJT.mjs").then((mod) => ({ default: mod.App })),
|
|
1016
1289
|
permissions: PERMISSIONS.main,
|
|
1017
1290
|
position: 2
|
|
1018
1291
|
});
|
|
@@ -1036,10 +1309,18 @@ const admin = {
|
|
|
1036
1309
|
},
|
|
1037
1310
|
permissions: [],
|
|
1038
1311
|
async Component() {
|
|
1039
|
-
const { ProtectedReleasesSettingsPage } = await import("./ReleasesSettingsPage-
|
|
1312
|
+
const { ProtectedReleasesSettingsPage } = await import("./ReleasesSettingsPage-DqBxvJ9i.mjs");
|
|
1040
1313
|
return { default: ProtectedReleasesSettingsPage };
|
|
1041
1314
|
}
|
|
1042
1315
|
});
|
|
1316
|
+
if ("addBulkAction" in contentManagerPluginApis && typeof contentManagerPluginApis.addBulkAction === "function") {
|
|
1317
|
+
contentManagerPluginApis.addBulkAction((actions) => {
|
|
1318
|
+
const deleteActionIndex = actions.findIndex((action) => action.type === "delete");
|
|
1319
|
+
actions.splice(deleteActionIndex, 0, ReleaseAction);
|
|
1320
|
+
return actions;
|
|
1321
|
+
});
|
|
1322
|
+
}
|
|
1323
|
+
app.registerHook("Admin/CM/pages/ListView/inject-column-in-table", addColumnToTableHook);
|
|
1043
1324
|
} else if (!window.strapi.features.isEnabled("cms-content-releases") && window.strapi?.flags?.promoteEE) {
|
|
1044
1325
|
app.addSettingsLink("global", {
|
|
1045
1326
|
id: pluginId,
|
|
@@ -1060,7 +1341,7 @@ const admin = {
|
|
|
1060
1341
|
async registerTrads({ locales }) {
|
|
1061
1342
|
const importedTrads = await Promise.all(
|
|
1062
1343
|
locales.map((locale) => {
|
|
1063
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-
|
|
1344
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-D9Q4YW03.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
|
|
1064
1345
|
return {
|
|
1065
1346
|
data: prefixPluginTranslations(data, "content-releases"),
|
|
1066
1347
|
locale
|
|
@@ -1096,4 +1377,4 @@ export {
|
|
|
1096
1377
|
releaseApi as r,
|
|
1097
1378
|
useGetReleasesQuery as u
|
|
1098
1379
|
};
|
|
1099
|
-
//# sourceMappingURL=index-
|
|
1380
|
+
//# sourceMappingURL=index-CK9G80CL.mjs.map
|