@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
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
const icons = require("@strapi/icons");
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const strapiAdmin = require("@strapi/admin/strapi-admin");
|
|
5
|
-
const strapiAdmin$1 = require("@strapi/content-manager/strapi-admin");
|
|
6
5
|
const designSystem = require("@strapi/design-system");
|
|
7
|
-
const symbols = require("@strapi/icons/symbols");
|
|
8
6
|
const formik = require("formik");
|
|
9
7
|
const reactIntl = require("react-intl");
|
|
8
|
+
const strapiAdmin$1 = require("@strapi/content-manager/strapi-admin");
|
|
9
|
+
const symbols = require("@strapi/icons/symbols");
|
|
10
10
|
const reactRouterDom = require("react-router-dom");
|
|
11
11
|
const yup = require("yup");
|
|
12
12
|
const styledComponents = require("styled-components");
|
|
@@ -124,7 +124,7 @@ const extendInvalidatesTags = (endpoint, extraTags) => {
|
|
|
124
124
|
Object.assign(endpoint, { invalidatesTags: newInvalidatesTags });
|
|
125
125
|
};
|
|
126
126
|
const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
127
|
-
addTagTypes: ["Release", "ReleaseAction", "EntriesInRelease", "ReleaseSettings"],
|
|
127
|
+
addTagTypes: ["Release", "ReleaseAction", "EntriesInRelease", "ReleaseSettings", "Document"],
|
|
128
128
|
endpoints: {
|
|
129
129
|
updateDocument(endpoint) {
|
|
130
130
|
extendInvalidatesTags(endpoint, [
|
|
@@ -149,6 +149,24 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
149
149
|
{ type: "Release", id: "LIST" },
|
|
150
150
|
{ type: "ReleaseAction", id: "LIST" }
|
|
151
151
|
]);
|
|
152
|
+
},
|
|
153
|
+
createWorkflow(endpoint) {
|
|
154
|
+
extendInvalidatesTags(endpoint, [
|
|
155
|
+
{ type: "Release", id: "LIST" },
|
|
156
|
+
{ type: "ReleaseAction", id: "LIST" }
|
|
157
|
+
]);
|
|
158
|
+
},
|
|
159
|
+
updateWorkflow(endpoint) {
|
|
160
|
+
extendInvalidatesTags(endpoint, [
|
|
161
|
+
{ type: "Release", id: "LIST" },
|
|
162
|
+
{ type: "ReleaseAction", id: "LIST" }
|
|
163
|
+
]);
|
|
164
|
+
},
|
|
165
|
+
deleteWorkflow(endpoint) {
|
|
166
|
+
extendInvalidatesTags(endpoint, [
|
|
167
|
+
{ type: "Release", id: "LIST" },
|
|
168
|
+
{ type: "ReleaseAction", id: "LIST" }
|
|
169
|
+
]);
|
|
152
170
|
}
|
|
153
171
|
}
|
|
154
172
|
}).injectEndpoints({
|
|
@@ -219,7 +237,10 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
219
237
|
method: "GET"
|
|
220
238
|
};
|
|
221
239
|
},
|
|
222
|
-
providesTags: (result, error, arg) => [
|
|
240
|
+
providesTags: (result, error, arg) => [
|
|
241
|
+
{ type: "Release", id: "LIST" },
|
|
242
|
+
{ type: "Release", id: arg.id }
|
|
243
|
+
]
|
|
223
244
|
}),
|
|
224
245
|
getReleaseActions: build.query({
|
|
225
246
|
query({ releaseId, ...params }) {
|
|
@@ -288,7 +309,11 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
288
309
|
data: body
|
|
289
310
|
};
|
|
290
311
|
},
|
|
291
|
-
invalidatesTags: () => [
|
|
312
|
+
invalidatesTags: (res, error, arg) => [
|
|
313
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
314
|
+
{ type: "Release", id: "LIST" },
|
|
315
|
+
{ type: "Release", id: arg.params.releaseId }
|
|
316
|
+
],
|
|
292
317
|
async onQueryStarted({ body, params, query, actionPath }, { dispatch, queryFulfilled }) {
|
|
293
318
|
const paramsWithoutActionId = {
|
|
294
319
|
releaseId: params.releaseId,
|
|
@@ -335,7 +360,10 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
335
360
|
method: "POST"
|
|
336
361
|
};
|
|
337
362
|
},
|
|
338
|
-
invalidatesTags: (result, error, arg) => [
|
|
363
|
+
invalidatesTags: (result, error, arg) => [
|
|
364
|
+
{ type: "Release", id: arg.id },
|
|
365
|
+
{ type: "Document", id: `ALL_LIST` }
|
|
366
|
+
]
|
|
339
367
|
}),
|
|
340
368
|
deleteRelease: build.mutation({
|
|
341
369
|
query({ id }) {
|
|
@@ -373,7 +401,7 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
373
401
|
data
|
|
374
402
|
};
|
|
375
403
|
},
|
|
376
|
-
invalidatesTags:
|
|
404
|
+
invalidatesTags: [{ type: "ReleaseSettings" }]
|
|
377
405
|
})
|
|
378
406
|
};
|
|
379
407
|
}
|
|
@@ -598,6 +626,7 @@ const AddActionToReleaseModal = ({
|
|
|
598
626
|
};
|
|
599
627
|
const ReleaseActionModalForm = ({
|
|
600
628
|
documentId,
|
|
629
|
+
document,
|
|
601
630
|
model,
|
|
602
631
|
collectionType
|
|
603
632
|
}) => {
|
|
@@ -676,6 +705,8 @@ const ReleaseActionModalForm = ({
|
|
|
676
705
|
defaultMessage: "Add to release"
|
|
677
706
|
}),
|
|
678
707
|
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.PaperPlane, {}),
|
|
708
|
+
// Entry is creating so we don't want to allow adding it to a release
|
|
709
|
+
disabled: !document,
|
|
679
710
|
position: ["panel", "table-row"],
|
|
680
711
|
dialog: {
|
|
681
712
|
type: "modal",
|
|
@@ -714,6 +745,236 @@ const ReleaseActionModalForm = ({
|
|
|
714
745
|
}
|
|
715
746
|
};
|
|
716
747
|
};
|
|
748
|
+
const getContentPermissions = (subject) => {
|
|
749
|
+
const permissions = {
|
|
750
|
+
publish: [
|
|
751
|
+
{
|
|
752
|
+
action: "plugin::content-manager.explorer.publish",
|
|
753
|
+
subject,
|
|
754
|
+
id: "",
|
|
755
|
+
actionParameters: {},
|
|
756
|
+
properties: {},
|
|
757
|
+
conditions: []
|
|
758
|
+
}
|
|
759
|
+
]
|
|
760
|
+
};
|
|
761
|
+
return permissions;
|
|
762
|
+
};
|
|
763
|
+
const ReleaseAction = ({ documents, model }) => {
|
|
764
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
765
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
766
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
767
|
+
const [{ query }] = strapiAdmin.useQueryParams();
|
|
768
|
+
const contentPermissions = getContentPermissions(model);
|
|
769
|
+
const {
|
|
770
|
+
allowedActions: { canPublish }
|
|
771
|
+
} = strapiAdmin.useRBAC(contentPermissions);
|
|
772
|
+
const {
|
|
773
|
+
allowedActions: { canCreate }
|
|
774
|
+
} = strapiAdmin.useRBAC(PERMISSIONS);
|
|
775
|
+
const response = useGetReleasesQuery();
|
|
776
|
+
const releases = response.data?.data;
|
|
777
|
+
const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();
|
|
778
|
+
const documentIds = documents.map((doc) => doc.documentId);
|
|
779
|
+
const handleSubmit = async (values) => {
|
|
780
|
+
const locale = query.plugins?.i18n?.locale;
|
|
781
|
+
const releaseActionEntries = documentIds.map(
|
|
782
|
+
(entryDocumentId) => ({
|
|
783
|
+
type: values.type,
|
|
784
|
+
contentType: model,
|
|
785
|
+
entryDocumentId,
|
|
786
|
+
locale
|
|
787
|
+
})
|
|
788
|
+
);
|
|
789
|
+
const response2 = await createManyReleaseActions({
|
|
790
|
+
body: releaseActionEntries,
|
|
791
|
+
params: { releaseId: values.releaseId }
|
|
792
|
+
});
|
|
793
|
+
if ("data" in response2) {
|
|
794
|
+
const notificationMessage = formatMessage(
|
|
795
|
+
{
|
|
796
|
+
id: "content-releases.content-manager-list-view.add-to-release.notification.success.message",
|
|
797
|
+
defaultMessage: "{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release."
|
|
798
|
+
},
|
|
799
|
+
{
|
|
800
|
+
entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
|
|
801
|
+
totalEntries: response2.data.meta.totalEntries
|
|
802
|
+
}
|
|
803
|
+
);
|
|
804
|
+
const notification = {
|
|
805
|
+
type: "success",
|
|
806
|
+
title: formatMessage(
|
|
807
|
+
{
|
|
808
|
+
id: "content-releases.content-manager-list-view.add-to-release.notification.success.title",
|
|
809
|
+
defaultMessage: "Successfully added to release."
|
|
810
|
+
},
|
|
811
|
+
{
|
|
812
|
+
entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
|
|
813
|
+
totalEntries: response2.data.meta.totalEntries
|
|
814
|
+
}
|
|
815
|
+
),
|
|
816
|
+
message: response2.data.meta.entriesAlreadyInRelease ? notificationMessage : ""
|
|
817
|
+
};
|
|
818
|
+
toggleNotification(notification);
|
|
819
|
+
return true;
|
|
820
|
+
}
|
|
821
|
+
if ("error" in response2) {
|
|
822
|
+
if (strapiAdmin.isFetchError(response2.error)) {
|
|
823
|
+
toggleNotification({
|
|
824
|
+
type: "warning",
|
|
825
|
+
message: formatAPIError(response2.error)
|
|
826
|
+
});
|
|
827
|
+
} else {
|
|
828
|
+
toggleNotification({
|
|
829
|
+
type: "warning",
|
|
830
|
+
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
831
|
+
});
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
};
|
|
835
|
+
if (!canCreate || !canPublish)
|
|
836
|
+
return null;
|
|
837
|
+
return {
|
|
838
|
+
actionType: "release",
|
|
839
|
+
variant: "tertiary",
|
|
840
|
+
label: formatMessage({
|
|
841
|
+
id: "content-manager-list-view.add-to-release",
|
|
842
|
+
defaultMessage: "Add to Release"
|
|
843
|
+
}),
|
|
844
|
+
dialog: {
|
|
845
|
+
type: "modal",
|
|
846
|
+
title: formatMessage({
|
|
847
|
+
id: "content-manager-list-view.add-to-release",
|
|
848
|
+
defaultMessage: "Add to Release"
|
|
849
|
+
}),
|
|
850
|
+
content: ({ onClose }) => {
|
|
851
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
852
|
+
formik.Formik,
|
|
853
|
+
{
|
|
854
|
+
onSubmit: async (values) => {
|
|
855
|
+
const data = await handleSubmit(values);
|
|
856
|
+
if (data) {
|
|
857
|
+
return onClose();
|
|
858
|
+
}
|
|
859
|
+
},
|
|
860
|
+
validationSchema: RELEASE_ACTION_FORM_SCHEMA,
|
|
861
|
+
initialValues: INITIAL_VALUES,
|
|
862
|
+
children: ({ values, setFieldValue }) => /* @__PURE__ */ jsxRuntime.jsxs(formik.Form, { children: [
|
|
863
|
+
releases?.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(NoReleases, {}) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
|
|
864
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { required: true, children: [
|
|
865
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
|
|
866
|
+
id: "content-releases.content-manager-list-view.add-to-release.select-label",
|
|
867
|
+
defaultMessage: "Select a release"
|
|
868
|
+
}) }),
|
|
869
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
870
|
+
designSystem.SingleSelect,
|
|
871
|
+
{
|
|
872
|
+
placeholder: formatMessage({
|
|
873
|
+
id: "content-releases.content-manager-list-view.add-to-release.select-placeholder",
|
|
874
|
+
defaultMessage: "Select"
|
|
875
|
+
}),
|
|
876
|
+
onChange: (value) => setFieldValue("releaseId", value),
|
|
877
|
+
value: values.releaseId,
|
|
878
|
+
children: releases?.map((release) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: release.id, children: release.name }, release.id))
|
|
879
|
+
}
|
|
880
|
+
)
|
|
881
|
+
] }) }),
|
|
882
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
|
|
883
|
+
id: "content-releases.content-manager-list-view.add-to-release.action-type-label",
|
|
884
|
+
defaultMessage: "What do you want to do with these entries?"
|
|
885
|
+
}) }),
|
|
886
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
887
|
+
ReleaseActionOptions,
|
|
888
|
+
{
|
|
889
|
+
selected: values.type,
|
|
890
|
+
handleChange: (e) => setFieldValue("type", e.target.value),
|
|
891
|
+
name: "type"
|
|
892
|
+
}
|
|
893
|
+
)
|
|
894
|
+
] }) }),
|
|
895
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
|
|
896
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { onClick: onClose, variant: "tertiary", name: "cancel", children: formatMessage({
|
|
897
|
+
id: "content-releases.content-manager-list-view.add-to-release.cancel-button",
|
|
898
|
+
defaultMessage: "Cancel"
|
|
899
|
+
}) }),
|
|
900
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
|
|
901
|
+
id: "content-releases.content-manager-list-view.add-to-release.continue-button",
|
|
902
|
+
defaultMessage: "Continue"
|
|
903
|
+
}) })
|
|
904
|
+
] })
|
|
905
|
+
] })
|
|
906
|
+
}
|
|
907
|
+
);
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
};
|
|
911
|
+
};
|
|
912
|
+
const useReleasesList = (contentTypeUid, documentId) => {
|
|
913
|
+
const listViewData = strapiAdmin.useTable("ListView", (state) => state.rows);
|
|
914
|
+
const documentIds = listViewData.map((entry) => entry.documentId);
|
|
915
|
+
const [{ query }] = strapiAdmin.useQueryParams();
|
|
916
|
+
const locale = query?.plugins?.i18n?.locale || void 0;
|
|
917
|
+
const response = useGetMappedEntriesInReleasesQuery(
|
|
918
|
+
{ contentTypeUid, documentIds, locale },
|
|
919
|
+
{ skip: !documentIds || !contentTypeUid || documentIds.length === 0 }
|
|
920
|
+
);
|
|
921
|
+
const mappedEntriesInReleases = response.data || {};
|
|
922
|
+
return mappedEntriesInReleases?.[documentId] || [];
|
|
923
|
+
};
|
|
924
|
+
const addColumnToTableHook = ({ displayedHeaders, layout }) => {
|
|
925
|
+
const { options } = layout;
|
|
926
|
+
if (!options?.draftAndPublish) {
|
|
927
|
+
return { displayedHeaders, layout };
|
|
928
|
+
}
|
|
929
|
+
return {
|
|
930
|
+
displayedHeaders: [
|
|
931
|
+
...displayedHeaders,
|
|
932
|
+
{
|
|
933
|
+
searchable: false,
|
|
934
|
+
sortable: false,
|
|
935
|
+
name: "releases",
|
|
936
|
+
label: {
|
|
937
|
+
id: "content-releases.content-manager.list-view.releases.header",
|
|
938
|
+
defaultMessage: "To be released in"
|
|
939
|
+
},
|
|
940
|
+
cellFormatter: (props, _, { model }) => /* @__PURE__ */ jsxRuntime.jsx(ReleaseListCell, { ...props, model })
|
|
941
|
+
}
|
|
942
|
+
],
|
|
943
|
+
layout
|
|
944
|
+
};
|
|
945
|
+
};
|
|
946
|
+
const ReleaseListCell = ({ documentId, model }) => {
|
|
947
|
+
const releases = useReleasesList(model, documentId);
|
|
948
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
949
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { children: [
|
|
950
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
951
|
+
designSystem.Button,
|
|
952
|
+
{
|
|
953
|
+
variant: "ghost",
|
|
954
|
+
onClick: (e) => e.stopPropagation(),
|
|
955
|
+
endIcon: releases.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, { width: "1.2rem", height: "1.2rem" }) : null,
|
|
956
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
957
|
+
designSystem.Typography,
|
|
958
|
+
{
|
|
959
|
+
style: { maxWidth: "252px", cursor: "pointer" },
|
|
960
|
+
textColor: "neutral800",
|
|
961
|
+
fontWeight: "regular",
|
|
962
|
+
children: releases.length > 0 ? formatMessage(
|
|
963
|
+
{
|
|
964
|
+
id: "content-releases.content-manager.list-view.releases-number",
|
|
965
|
+
defaultMessage: "{number} {number, plural, one {release} other {releases}}"
|
|
966
|
+
},
|
|
967
|
+
{
|
|
968
|
+
number: releases.length
|
|
969
|
+
}
|
|
970
|
+
) : "-"
|
|
971
|
+
}
|
|
972
|
+
)
|
|
973
|
+
}
|
|
974
|
+
) }),
|
|
975
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { children: /* @__PURE__ */ jsxRuntime.jsx("ul", { children: releases.map(({ id, name }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 3, tag: "li", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Link, { href: `/admin/plugins/content-releases/${id}`, isExternal: false, children: name }) }, id)) }) })
|
|
976
|
+
] });
|
|
977
|
+
};
|
|
717
978
|
const getTimezoneOffset = (timezone, date) => {
|
|
718
979
|
try {
|
|
719
980
|
const offsetPart = new Intl.DateTimeFormat("en", {
|
|
@@ -880,7 +1141,7 @@ const Root = ({ children }) => {
|
|
|
880
1141
|
return (
|
|
881
1142
|
// A user can access the dropdown if they have permissions to delete a release-action OR update a release
|
|
882
1143
|
allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Root, { children: [
|
|
883
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1144
|
+
/* @__PURE__ */ jsxRuntime.jsx(StyledMoreButton, { variant: "tertiary", endIcon: null, paddingLeft: "7px", paddingRight: "7px", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
884
1145
|
designSystem.AccessibleIcon,
|
|
885
1146
|
{
|
|
886
1147
|
label: formatMessage({
|
|
@@ -894,13 +1155,23 @@ const Root = ({ children }) => {
|
|
|
894
1155
|
] }) : null
|
|
895
1156
|
);
|
|
896
1157
|
};
|
|
1158
|
+
const StyledMoreButton = styledComponents.styled(designSystem.Menu.Trigger)`
|
|
1159
|
+
& > span {
|
|
1160
|
+
display: flex;
|
|
1161
|
+
}
|
|
1162
|
+
`;
|
|
897
1163
|
const ReleaseActionMenu = {
|
|
898
1164
|
Root,
|
|
899
1165
|
EditReleaseItem,
|
|
900
1166
|
DeleteReleaseActionItem,
|
|
901
1167
|
ReleaseActionEntryLinkItem
|
|
902
1168
|
};
|
|
903
|
-
const Panel = ({
|
|
1169
|
+
const Panel = ({
|
|
1170
|
+
model,
|
|
1171
|
+
document,
|
|
1172
|
+
documentId,
|
|
1173
|
+
collectionType
|
|
1174
|
+
}) => {
|
|
904
1175
|
const [{ query }] = strapiAdmin.useQueryParams();
|
|
905
1176
|
const locale = query.plugins?.i18n?.locale;
|
|
906
1177
|
const {
|
|
@@ -909,12 +1180,17 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
909
1180
|
const { formatMessage, formatDate, formatTime } = reactIntl.useIntl();
|
|
910
1181
|
const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
|
|
911
1182
|
const { canRead, canDeleteAction } = allowedActions;
|
|
912
|
-
const response = useGetReleasesForEntryQuery(
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
1183
|
+
const response = useGetReleasesForEntryQuery(
|
|
1184
|
+
{
|
|
1185
|
+
contentType: model,
|
|
1186
|
+
entryDocumentId: documentId,
|
|
1187
|
+
locale,
|
|
1188
|
+
hasEntryAttached: true
|
|
1189
|
+
},
|
|
1190
|
+
{
|
|
1191
|
+
skip: !document
|
|
1192
|
+
}
|
|
1193
|
+
);
|
|
918
1194
|
const releases = response.data?.data;
|
|
919
1195
|
const getReleaseColorVariant = (actionType, shade) => {
|
|
920
1196
|
if (actionType === "unpublish") {
|
|
@@ -928,7 +1204,7 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
928
1204
|
if (collectionType === "collection-types" && (!documentId || documentId === "create")) {
|
|
929
1205
|
return null;
|
|
930
1206
|
}
|
|
931
|
-
if (releases
|
|
1207
|
+
if (!releases || releases.length === 0) {
|
|
932
1208
|
return null;
|
|
933
1209
|
}
|
|
934
1210
|
return {
|
|
@@ -1013,9 +1289,6 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
1013
1289
|
};
|
|
1014
1290
|
const pluginId = "content-releases";
|
|
1015
1291
|
const prefixPluginTranslations = (trad, pluginId2) => {
|
|
1016
|
-
if (!pluginId2) {
|
|
1017
|
-
throw new TypeError("pluginId can't be empty");
|
|
1018
|
-
}
|
|
1019
1292
|
return Object.keys(trad).reduce((acc, current) => {
|
|
1020
1293
|
acc[`${pluginId2}.${current}`] = trad[current];
|
|
1021
1294
|
return acc;
|
|
@@ -1033,7 +1306,7 @@ const admin = {
|
|
|
1033
1306
|
id: `${pluginId}.plugin.name`,
|
|
1034
1307
|
defaultMessage: "Releases"
|
|
1035
1308
|
},
|
|
1036
|
-
Component: () => Promise.resolve().then(() => require("./App-
|
|
1309
|
+
Component: () => Promise.resolve().then(() => require("./App-lx4Ucy9W.js")).then((mod) => ({ default: mod.App })),
|
|
1037
1310
|
permissions: PERMISSIONS.main,
|
|
1038
1311
|
position: 2
|
|
1039
1312
|
});
|
|
@@ -1057,10 +1330,18 @@ const admin = {
|
|
|
1057
1330
|
},
|
|
1058
1331
|
permissions: [],
|
|
1059
1332
|
async Component() {
|
|
1060
|
-
const { ProtectedReleasesSettingsPage } = await Promise.resolve().then(() => require("./ReleasesSettingsPage-
|
|
1333
|
+
const { ProtectedReleasesSettingsPage } = await Promise.resolve().then(() => require("./ReleasesSettingsPage-T5VEAV03.js"));
|
|
1061
1334
|
return { default: ProtectedReleasesSettingsPage };
|
|
1062
1335
|
}
|
|
1063
1336
|
});
|
|
1337
|
+
if ("addBulkAction" in contentManagerPluginApis && typeof contentManagerPluginApis.addBulkAction === "function") {
|
|
1338
|
+
contentManagerPluginApis.addBulkAction((actions) => {
|
|
1339
|
+
const deleteActionIndex = actions.findIndex((action) => action.type === "delete");
|
|
1340
|
+
actions.splice(deleteActionIndex, 0, ReleaseAction);
|
|
1341
|
+
return actions;
|
|
1342
|
+
});
|
|
1343
|
+
}
|
|
1344
|
+
app.registerHook("Admin/CM/pages/ListView/inject-column-in-table", addColumnToTableHook);
|
|
1064
1345
|
} else if (!window.strapi.features.isEnabled("cms-content-releases") && window.strapi?.flags?.promoteEE) {
|
|
1065
1346
|
app.addSettingsLink("global", {
|
|
1066
1347
|
id: pluginId,
|
|
@@ -1081,7 +1362,7 @@ const admin = {
|
|
|
1081
1362
|
async registerTrads({ locales }) {
|
|
1082
1363
|
const importedTrads = await Promise.all(
|
|
1083
1364
|
locales.map((locale) => {
|
|
1084
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-
|
|
1365
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-BWPPsSH-.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
|
|
1085
1366
|
return {
|
|
1086
1367
|
data: prefixPluginTranslations(data, "content-releases"),
|
|
1087
1368
|
locale
|
|
@@ -1115,4 +1396,4 @@ exports.usePublishReleaseMutation = usePublishReleaseMutation;
|
|
|
1115
1396
|
exports.useUpdateReleaseActionMutation = useUpdateReleaseActionMutation;
|
|
1116
1397
|
exports.useUpdateReleaseMutation = useUpdateReleaseMutation;
|
|
1117
1398
|
exports.useUpdateReleaseSettingsMutation = useUpdateReleaseSettingsMutation;
|
|
1118
|
-
//# sourceMappingURL=index-
|
|
1399
|
+
//# sourceMappingURL=index-Cl3tM1YW.js.map
|