@strapi/content-releases 0.0.0-experimental.edc24aaa3bb5a90fa5fd4fee208167dd4e2e38d4 → 0.0.0-experimental.ee7402bacc4656d268ab76aa9c334a7b7a951201
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-CiZCkScI.mjs} +314 -107
- package/dist/_chunks/App-CiZCkScI.mjs.map +1 -0
- package/dist/_chunks/{App-D-lWdVb2.js → App-SGjO5UPV.js} +354 -148
- package/dist/_chunks/App-SGjO5UPV.js.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-Be3acS2L.js → PurchaseContentReleases--qQepXpP.js} +2 -2
- package/dist/_chunks/PurchaseContentReleases--qQepXpP.js.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-_MxP6-Dt.mjs → PurchaseContentReleases-D-n-w-st.mjs} +2 -2
- package/dist/_chunks/{PurchaseContentReleases-_MxP6-Dt.mjs.map → PurchaseContentReleases-D-n-w-st.mjs.map} +1 -1
- package/dist/_chunks/{ReleasesSettingsPage-xfAoY8N3.js → ReleasesSettingsPage-Cto_NLUd.js} +4 -4
- package/dist/_chunks/ReleasesSettingsPage-Cto_NLUd.js.map +1 -0
- package/dist/_chunks/{ReleasesSettingsPage-CuUXvABk.mjs → ReleasesSettingsPage-DQT8N3A-.mjs} +4 -4
- package/dist/_chunks/ReleasesSettingsPage-DQT8N3A-.mjs.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-BjvFfTtA.mjs} +316 -29
- package/dist/_chunks/index-BjvFfTtA.mjs.map +1 -0
- package/dist/_chunks/{index-jnv9zdcE.js → index-CyU534vL.js} +314 -28
- package/dist/_chunks/index-CyU534vL.js.map +1 -0
- package/dist/_chunks/{schemas-z5zp-_Gd.js → schemas-DBYv9gK8.js} +3 -4
- package/dist/_chunks/schemas-DBYv9gK8.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 +192 -90
- 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 +18 -16
- package/dist/_chunks/App-D-lWdVb2.js.map +0 -1
- package/dist/_chunks/App-UQxgTJY5.mjs.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js.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,18 +2,17 @@
|
|
|
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");
|
|
13
13
|
const React = require("react");
|
|
14
14
|
function _interopNamespace(e) {
|
|
15
|
-
if (e && e.__esModule)
|
|
16
|
-
return e;
|
|
15
|
+
if (e && e.__esModule) return e;
|
|
17
16
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
18
17
|
if (e) {
|
|
19
18
|
for (const k in e) {
|
|
@@ -31,13 +30,20 @@ function _interopNamespace(e) {
|
|
|
31
30
|
}
|
|
32
31
|
const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
|
|
33
32
|
const React__namespace = /* @__PURE__ */ _interopNamespace(React);
|
|
34
|
-
const __variableDynamicImportRuntimeHelper = (glob, path) => {
|
|
33
|
+
const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
|
|
35
34
|
const v = glob[path];
|
|
36
35
|
if (v) {
|
|
37
36
|
return typeof v === "function" ? v() : Promise.resolve(v);
|
|
38
37
|
}
|
|
39
38
|
return new Promise((_, reject) => {
|
|
40
|
-
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
|
39
|
+
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
|
40
|
+
reject.bind(
|
|
41
|
+
null,
|
|
42
|
+
new Error(
|
|
43
|
+
"Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
|
|
44
|
+
)
|
|
45
|
+
)
|
|
46
|
+
);
|
|
41
47
|
});
|
|
42
48
|
};
|
|
43
49
|
const PERMISSIONS = {
|
|
@@ -124,7 +130,7 @@ const extendInvalidatesTags = (endpoint, extraTags) => {
|
|
|
124
130
|
Object.assign(endpoint, { invalidatesTags: newInvalidatesTags });
|
|
125
131
|
};
|
|
126
132
|
const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
127
|
-
addTagTypes: ["Release", "ReleaseAction", "EntriesInRelease", "ReleaseSettings"],
|
|
133
|
+
addTagTypes: ["Release", "ReleaseAction", "EntriesInRelease", "ReleaseSettings", "Document"],
|
|
128
134
|
endpoints: {
|
|
129
135
|
updateDocument(endpoint) {
|
|
130
136
|
extendInvalidatesTags(endpoint, [
|
|
@@ -149,6 +155,24 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
149
155
|
{ type: "Release", id: "LIST" },
|
|
150
156
|
{ type: "ReleaseAction", id: "LIST" }
|
|
151
157
|
]);
|
|
158
|
+
},
|
|
159
|
+
createWorkflow(endpoint) {
|
|
160
|
+
extendInvalidatesTags(endpoint, [
|
|
161
|
+
{ type: "Release", id: "LIST" },
|
|
162
|
+
{ type: "ReleaseAction", id: "LIST" }
|
|
163
|
+
]);
|
|
164
|
+
},
|
|
165
|
+
updateWorkflow(endpoint) {
|
|
166
|
+
extendInvalidatesTags(endpoint, [
|
|
167
|
+
{ type: "Release", id: "LIST" },
|
|
168
|
+
{ type: "ReleaseAction", id: "LIST" }
|
|
169
|
+
]);
|
|
170
|
+
},
|
|
171
|
+
deleteWorkflow(endpoint) {
|
|
172
|
+
extendInvalidatesTags(endpoint, [
|
|
173
|
+
{ type: "Release", id: "LIST" },
|
|
174
|
+
{ type: "ReleaseAction", id: "LIST" }
|
|
175
|
+
]);
|
|
152
176
|
}
|
|
153
177
|
}
|
|
154
178
|
}).injectEndpoints({
|
|
@@ -219,7 +243,10 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
219
243
|
method: "GET"
|
|
220
244
|
};
|
|
221
245
|
},
|
|
222
|
-
providesTags: (result, error, arg) => [
|
|
246
|
+
providesTags: (result, error, arg) => [
|
|
247
|
+
{ type: "Release", id: "LIST" },
|
|
248
|
+
{ type: "Release", id: arg.id }
|
|
249
|
+
]
|
|
223
250
|
}),
|
|
224
251
|
getReleaseActions: build.query({
|
|
225
252
|
query({ releaseId, ...params }) {
|
|
@@ -288,7 +315,11 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
288
315
|
data: body
|
|
289
316
|
};
|
|
290
317
|
},
|
|
291
|
-
invalidatesTags: () => [
|
|
318
|
+
invalidatesTags: (res, error, arg) => [
|
|
319
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
320
|
+
{ type: "Release", id: "LIST" },
|
|
321
|
+
{ type: "Release", id: arg.params.releaseId }
|
|
322
|
+
],
|
|
292
323
|
async onQueryStarted({ body, params, query, actionPath }, { dispatch, queryFulfilled }) {
|
|
293
324
|
const paramsWithoutActionId = {
|
|
294
325
|
releaseId: params.releaseId,
|
|
@@ -335,7 +366,10 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
335
366
|
method: "POST"
|
|
336
367
|
};
|
|
337
368
|
},
|
|
338
|
-
invalidatesTags: (result, error, arg) => [
|
|
369
|
+
invalidatesTags: (result, error, arg) => [
|
|
370
|
+
{ type: "Release", id: arg.id },
|
|
371
|
+
{ type: "Document", id: `ALL_LIST` }
|
|
372
|
+
]
|
|
339
373
|
}),
|
|
340
374
|
deleteRelease: build.mutation({
|
|
341
375
|
query({ id }) {
|
|
@@ -373,7 +407,7 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
373
407
|
data
|
|
374
408
|
};
|
|
375
409
|
},
|
|
376
|
-
invalidatesTags:
|
|
410
|
+
invalidatesTags: [{ type: "ReleaseSettings" }]
|
|
377
411
|
})
|
|
378
412
|
};
|
|
379
413
|
}
|
|
@@ -598,6 +632,7 @@ const AddActionToReleaseModal = ({
|
|
|
598
632
|
};
|
|
599
633
|
const ReleaseActionModalForm = ({
|
|
600
634
|
documentId,
|
|
635
|
+
document,
|
|
601
636
|
model,
|
|
602
637
|
collectionType
|
|
603
638
|
}) => {
|
|
@@ -676,6 +711,8 @@ const ReleaseActionModalForm = ({
|
|
|
676
711
|
defaultMessage: "Add to release"
|
|
677
712
|
}),
|
|
678
713
|
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.PaperPlane, {}),
|
|
714
|
+
// Entry is creating so we don't want to allow adding it to a release
|
|
715
|
+
disabled: !document,
|
|
679
716
|
position: ["panel", "table-row"],
|
|
680
717
|
dialog: {
|
|
681
718
|
type: "modal",
|
|
@@ -714,6 +751,235 @@ const ReleaseActionModalForm = ({
|
|
|
714
751
|
}
|
|
715
752
|
};
|
|
716
753
|
};
|
|
754
|
+
const getContentPermissions = (subject) => {
|
|
755
|
+
const permissions = {
|
|
756
|
+
publish: [
|
|
757
|
+
{
|
|
758
|
+
action: "plugin::content-manager.explorer.publish",
|
|
759
|
+
subject,
|
|
760
|
+
id: "",
|
|
761
|
+
actionParameters: {},
|
|
762
|
+
properties: {},
|
|
763
|
+
conditions: []
|
|
764
|
+
}
|
|
765
|
+
]
|
|
766
|
+
};
|
|
767
|
+
return permissions;
|
|
768
|
+
};
|
|
769
|
+
const ReleaseAction = ({ documents, model }) => {
|
|
770
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
771
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
772
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
773
|
+
const [{ query }] = strapiAdmin.useQueryParams();
|
|
774
|
+
const contentPermissions = getContentPermissions(model);
|
|
775
|
+
const {
|
|
776
|
+
allowedActions: { canPublish }
|
|
777
|
+
} = strapiAdmin.useRBAC(contentPermissions);
|
|
778
|
+
const {
|
|
779
|
+
allowedActions: { canCreate }
|
|
780
|
+
} = strapiAdmin.useRBAC(PERMISSIONS);
|
|
781
|
+
const response = useGetReleasesQuery();
|
|
782
|
+
const releases = response.data?.data;
|
|
783
|
+
const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();
|
|
784
|
+
const documentIds = documents.map((doc) => doc.documentId);
|
|
785
|
+
const handleSubmit = async (values) => {
|
|
786
|
+
const locale = query.plugins?.i18n?.locale;
|
|
787
|
+
const releaseActionEntries = documentIds.map(
|
|
788
|
+
(entryDocumentId) => ({
|
|
789
|
+
type: values.type,
|
|
790
|
+
contentType: model,
|
|
791
|
+
entryDocumentId,
|
|
792
|
+
locale
|
|
793
|
+
})
|
|
794
|
+
);
|
|
795
|
+
const response2 = await createManyReleaseActions({
|
|
796
|
+
body: releaseActionEntries,
|
|
797
|
+
params: { releaseId: values.releaseId }
|
|
798
|
+
});
|
|
799
|
+
if ("data" in response2) {
|
|
800
|
+
const notificationMessage = formatMessage(
|
|
801
|
+
{
|
|
802
|
+
id: "content-releases.content-manager-list-view.add-to-release.notification.success.message",
|
|
803
|
+
defaultMessage: "{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release."
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
|
|
807
|
+
totalEntries: response2.data.meta.totalEntries
|
|
808
|
+
}
|
|
809
|
+
);
|
|
810
|
+
const notification = {
|
|
811
|
+
type: "success",
|
|
812
|
+
title: formatMessage(
|
|
813
|
+
{
|
|
814
|
+
id: "content-releases.content-manager-list-view.add-to-release.notification.success.title",
|
|
815
|
+
defaultMessage: "Successfully added to release."
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
|
|
819
|
+
totalEntries: response2.data.meta.totalEntries
|
|
820
|
+
}
|
|
821
|
+
),
|
|
822
|
+
message: response2.data.meta.entriesAlreadyInRelease ? notificationMessage : ""
|
|
823
|
+
};
|
|
824
|
+
toggleNotification(notification);
|
|
825
|
+
return true;
|
|
826
|
+
}
|
|
827
|
+
if ("error" in response2) {
|
|
828
|
+
if (strapiAdmin.isFetchError(response2.error)) {
|
|
829
|
+
toggleNotification({
|
|
830
|
+
type: "warning",
|
|
831
|
+
message: formatAPIError(response2.error)
|
|
832
|
+
});
|
|
833
|
+
} else {
|
|
834
|
+
toggleNotification({
|
|
835
|
+
type: "warning",
|
|
836
|
+
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
837
|
+
});
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
};
|
|
841
|
+
if (!canCreate || !canPublish) return null;
|
|
842
|
+
return {
|
|
843
|
+
actionType: "release",
|
|
844
|
+
variant: "tertiary",
|
|
845
|
+
label: formatMessage({
|
|
846
|
+
id: "content-manager-list-view.add-to-release",
|
|
847
|
+
defaultMessage: "Add to Release"
|
|
848
|
+
}),
|
|
849
|
+
dialog: {
|
|
850
|
+
type: "modal",
|
|
851
|
+
title: formatMessage({
|
|
852
|
+
id: "content-manager-list-view.add-to-release",
|
|
853
|
+
defaultMessage: "Add to Release"
|
|
854
|
+
}),
|
|
855
|
+
content: ({ onClose }) => {
|
|
856
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
857
|
+
formik.Formik,
|
|
858
|
+
{
|
|
859
|
+
onSubmit: async (values) => {
|
|
860
|
+
const data = await handleSubmit(values);
|
|
861
|
+
if (data) {
|
|
862
|
+
return onClose();
|
|
863
|
+
}
|
|
864
|
+
},
|
|
865
|
+
validationSchema: RELEASE_ACTION_FORM_SCHEMA,
|
|
866
|
+
initialValues: INITIAL_VALUES,
|
|
867
|
+
children: ({ values, setFieldValue }) => /* @__PURE__ */ jsxRuntime.jsxs(formik.Form, { children: [
|
|
868
|
+
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: [
|
|
869
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { required: true, children: [
|
|
870
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
|
|
871
|
+
id: "content-releases.content-manager-list-view.add-to-release.select-label",
|
|
872
|
+
defaultMessage: "Select a release"
|
|
873
|
+
}) }),
|
|
874
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
875
|
+
designSystem.SingleSelect,
|
|
876
|
+
{
|
|
877
|
+
placeholder: formatMessage({
|
|
878
|
+
id: "content-releases.content-manager-list-view.add-to-release.select-placeholder",
|
|
879
|
+
defaultMessage: "Select"
|
|
880
|
+
}),
|
|
881
|
+
onChange: (value) => setFieldValue("releaseId", value),
|
|
882
|
+
value: values.releaseId,
|
|
883
|
+
children: releases?.map((release) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: release.id, children: release.name }, release.id))
|
|
884
|
+
}
|
|
885
|
+
)
|
|
886
|
+
] }) }),
|
|
887
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
|
|
888
|
+
id: "content-releases.content-manager-list-view.add-to-release.action-type-label",
|
|
889
|
+
defaultMessage: "What do you want to do with these entries?"
|
|
890
|
+
}) }),
|
|
891
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
892
|
+
ReleaseActionOptions,
|
|
893
|
+
{
|
|
894
|
+
selected: values.type,
|
|
895
|
+
handleChange: (e) => setFieldValue("type", e.target.value),
|
|
896
|
+
name: "type"
|
|
897
|
+
}
|
|
898
|
+
)
|
|
899
|
+
] }) }),
|
|
900
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
|
|
901
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { onClick: onClose, variant: "tertiary", name: "cancel", children: formatMessage({
|
|
902
|
+
id: "content-releases.content-manager-list-view.add-to-release.cancel-button",
|
|
903
|
+
defaultMessage: "Cancel"
|
|
904
|
+
}) }),
|
|
905
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
|
|
906
|
+
id: "content-releases.content-manager-list-view.add-to-release.continue-button",
|
|
907
|
+
defaultMessage: "Continue"
|
|
908
|
+
}) })
|
|
909
|
+
] })
|
|
910
|
+
] })
|
|
911
|
+
}
|
|
912
|
+
);
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
};
|
|
916
|
+
};
|
|
917
|
+
const useReleasesList = (contentTypeUid, documentId) => {
|
|
918
|
+
const listViewData = strapiAdmin.useTable("ListView", (state) => state.rows);
|
|
919
|
+
const documentIds = listViewData.map((entry) => entry.documentId);
|
|
920
|
+
const [{ query }] = strapiAdmin.useQueryParams();
|
|
921
|
+
const locale = query?.plugins?.i18n?.locale || void 0;
|
|
922
|
+
const response = useGetMappedEntriesInReleasesQuery(
|
|
923
|
+
{ contentTypeUid, documentIds, locale },
|
|
924
|
+
{ skip: !documentIds || !contentTypeUid || documentIds.length === 0 }
|
|
925
|
+
);
|
|
926
|
+
const mappedEntriesInReleases = response.data || {};
|
|
927
|
+
return mappedEntriesInReleases?.[documentId] || [];
|
|
928
|
+
};
|
|
929
|
+
const addColumnToTableHook = ({ displayedHeaders, layout }) => {
|
|
930
|
+
const { options } = layout;
|
|
931
|
+
if (!options?.draftAndPublish) {
|
|
932
|
+
return { displayedHeaders, layout };
|
|
933
|
+
}
|
|
934
|
+
return {
|
|
935
|
+
displayedHeaders: [
|
|
936
|
+
...displayedHeaders,
|
|
937
|
+
{
|
|
938
|
+
searchable: false,
|
|
939
|
+
sortable: false,
|
|
940
|
+
name: "releases",
|
|
941
|
+
label: {
|
|
942
|
+
id: "content-releases.content-manager.list-view.releases.header",
|
|
943
|
+
defaultMessage: "To be released in"
|
|
944
|
+
},
|
|
945
|
+
cellFormatter: (props, _, { model }) => /* @__PURE__ */ jsxRuntime.jsx(ReleaseListCell, { ...props, model })
|
|
946
|
+
}
|
|
947
|
+
],
|
|
948
|
+
layout
|
|
949
|
+
};
|
|
950
|
+
};
|
|
951
|
+
const ReleaseListCell = ({ documentId, model }) => {
|
|
952
|
+
const releases = useReleasesList(model, documentId);
|
|
953
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
954
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { children: [
|
|
955
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
956
|
+
designSystem.Button,
|
|
957
|
+
{
|
|
958
|
+
variant: "ghost",
|
|
959
|
+
onClick: (e) => e.stopPropagation(),
|
|
960
|
+
endIcon: releases.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, { width: "1.2rem", height: "1.2rem" }) : null,
|
|
961
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
962
|
+
designSystem.Typography,
|
|
963
|
+
{
|
|
964
|
+
style: { maxWidth: "252px", cursor: "pointer" },
|
|
965
|
+
textColor: "neutral800",
|
|
966
|
+
fontWeight: "regular",
|
|
967
|
+
children: releases.length > 0 ? formatMessage(
|
|
968
|
+
{
|
|
969
|
+
id: "content-releases.content-manager.list-view.releases-number",
|
|
970
|
+
defaultMessage: "{number} {number, plural, one {release} other {releases}}"
|
|
971
|
+
},
|
|
972
|
+
{
|
|
973
|
+
number: releases.length
|
|
974
|
+
}
|
|
975
|
+
) : "-"
|
|
976
|
+
}
|
|
977
|
+
)
|
|
978
|
+
}
|
|
979
|
+
) }),
|
|
980
|
+
/* @__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)) }) })
|
|
981
|
+
] });
|
|
982
|
+
};
|
|
717
983
|
const getTimezoneOffset = (timezone, date) => {
|
|
718
984
|
try {
|
|
719
985
|
const offsetPart = new Intl.DateTimeFormat("en", {
|
|
@@ -880,7 +1146,7 @@ const Root = ({ children }) => {
|
|
|
880
1146
|
return (
|
|
881
1147
|
// A user can access the dropdown if they have permissions to delete a release-action OR update a release
|
|
882
1148
|
allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Root, { children: [
|
|
883
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1149
|
+
/* @__PURE__ */ jsxRuntime.jsx(StyledMoreButton, { variant: "tertiary", endIcon: null, paddingLeft: "7px", paddingRight: "7px", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
884
1150
|
designSystem.AccessibleIcon,
|
|
885
1151
|
{
|
|
886
1152
|
label: formatMessage({
|
|
@@ -894,13 +1160,23 @@ const Root = ({ children }) => {
|
|
|
894
1160
|
] }) : null
|
|
895
1161
|
);
|
|
896
1162
|
};
|
|
1163
|
+
const StyledMoreButton = styledComponents.styled(designSystem.Menu.Trigger)`
|
|
1164
|
+
& > span {
|
|
1165
|
+
display: flex;
|
|
1166
|
+
}
|
|
1167
|
+
`;
|
|
897
1168
|
const ReleaseActionMenu = {
|
|
898
1169
|
Root,
|
|
899
1170
|
EditReleaseItem,
|
|
900
1171
|
DeleteReleaseActionItem,
|
|
901
1172
|
ReleaseActionEntryLinkItem
|
|
902
1173
|
};
|
|
903
|
-
const Panel = ({
|
|
1174
|
+
const Panel = ({
|
|
1175
|
+
model,
|
|
1176
|
+
document,
|
|
1177
|
+
documentId,
|
|
1178
|
+
collectionType
|
|
1179
|
+
}) => {
|
|
904
1180
|
const [{ query }] = strapiAdmin.useQueryParams();
|
|
905
1181
|
const locale = query.plugins?.i18n?.locale;
|
|
906
1182
|
const {
|
|
@@ -909,12 +1185,17 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
909
1185
|
const { formatMessage, formatDate, formatTime } = reactIntl.useIntl();
|
|
910
1186
|
const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
|
|
911
1187
|
const { canRead, canDeleteAction } = allowedActions;
|
|
912
|
-
const response = useGetReleasesForEntryQuery(
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
1188
|
+
const response = useGetReleasesForEntryQuery(
|
|
1189
|
+
{
|
|
1190
|
+
contentType: model,
|
|
1191
|
+
entryDocumentId: documentId,
|
|
1192
|
+
locale,
|
|
1193
|
+
hasEntryAttached: true
|
|
1194
|
+
},
|
|
1195
|
+
{
|
|
1196
|
+
skip: !document
|
|
1197
|
+
}
|
|
1198
|
+
);
|
|
918
1199
|
const releases = response.data?.data;
|
|
919
1200
|
const getReleaseColorVariant = (actionType, shade) => {
|
|
920
1201
|
if (actionType === "unpublish") {
|
|
@@ -928,7 +1209,7 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
928
1209
|
if (collectionType === "collection-types" && (!documentId || documentId === "create")) {
|
|
929
1210
|
return null;
|
|
930
1211
|
}
|
|
931
|
-
if (releases
|
|
1212
|
+
if (!releases || releases.length === 0) {
|
|
932
1213
|
return null;
|
|
933
1214
|
}
|
|
934
1215
|
return {
|
|
@@ -1013,9 +1294,6 @@ const Panel = ({ model, documentId, collectionType }) => {
|
|
|
1013
1294
|
};
|
|
1014
1295
|
const pluginId = "content-releases";
|
|
1015
1296
|
const prefixPluginTranslations = (trad, pluginId2) => {
|
|
1016
|
-
if (!pluginId2) {
|
|
1017
|
-
throw new TypeError("pluginId can't be empty");
|
|
1018
|
-
}
|
|
1019
1297
|
return Object.keys(trad).reduce((acc, current) => {
|
|
1020
1298
|
acc[`${pluginId2}.${current}`] = trad[current];
|
|
1021
1299
|
return acc;
|
|
@@ -1033,7 +1311,7 @@ const admin = {
|
|
|
1033
1311
|
id: `${pluginId}.plugin.name`,
|
|
1034
1312
|
defaultMessage: "Releases"
|
|
1035
1313
|
},
|
|
1036
|
-
Component: () => Promise.resolve().then(() => require("./App-
|
|
1314
|
+
Component: () => Promise.resolve().then(() => require("./App-SGjO5UPV.js")).then((mod) => ({ default: mod.App })),
|
|
1037
1315
|
permissions: PERMISSIONS.main,
|
|
1038
1316
|
position: 2
|
|
1039
1317
|
});
|
|
@@ -1057,10 +1335,18 @@ const admin = {
|
|
|
1057
1335
|
},
|
|
1058
1336
|
permissions: [],
|
|
1059
1337
|
async Component() {
|
|
1060
|
-
const { ProtectedReleasesSettingsPage } = await Promise.resolve().then(() => require("./ReleasesSettingsPage-
|
|
1338
|
+
const { ProtectedReleasesSettingsPage } = await Promise.resolve().then(() => require("./ReleasesSettingsPage-Cto_NLUd.js"));
|
|
1061
1339
|
return { default: ProtectedReleasesSettingsPage };
|
|
1062
1340
|
}
|
|
1063
1341
|
});
|
|
1342
|
+
if ("addBulkAction" in contentManagerPluginApis && typeof contentManagerPluginApis.addBulkAction === "function") {
|
|
1343
|
+
contentManagerPluginApis.addBulkAction((actions) => {
|
|
1344
|
+
const deleteActionIndex = actions.findIndex((action) => action.type === "delete");
|
|
1345
|
+
actions.splice(deleteActionIndex, 0, ReleaseAction);
|
|
1346
|
+
return actions;
|
|
1347
|
+
});
|
|
1348
|
+
}
|
|
1349
|
+
app.registerHook("Admin/CM/pages/ListView/inject-column-in-table", addColumnToTableHook);
|
|
1064
1350
|
} else if (!window.strapi.features.isEnabled("cms-content-releases") && window.strapi?.flags?.promoteEE) {
|
|
1065
1351
|
app.addSettingsLink("global", {
|
|
1066
1352
|
id: pluginId,
|
|
@@ -1071,7 +1357,7 @@ const admin = {
|
|
|
1071
1357
|
},
|
|
1072
1358
|
permissions: [],
|
|
1073
1359
|
async Component() {
|
|
1074
|
-
const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases
|
|
1360
|
+
const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases--qQepXpP.js"));
|
|
1075
1361
|
return { default: PurchaseContentReleases };
|
|
1076
1362
|
},
|
|
1077
1363
|
licenseOnly: true
|
|
@@ -1081,7 +1367,7 @@ const admin = {
|
|
|
1081
1367
|
async registerTrads({ locales }) {
|
|
1082
1368
|
const importedTrads = await Promise.all(
|
|
1083
1369
|
locales.map((locale) => {
|
|
1084
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-
|
|
1370
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-BWPPsSH-.js")) }), `./translations/${locale}.json`, 3).then(({ default: data }) => {
|
|
1085
1371
|
return {
|
|
1086
1372
|
data: prefixPluginTranslations(data, "content-releases"),
|
|
1087
1373
|
locale
|
|
@@ -1115,4 +1401,4 @@ exports.usePublishReleaseMutation = usePublishReleaseMutation;
|
|
|
1115
1401
|
exports.useUpdateReleaseActionMutation = useUpdateReleaseActionMutation;
|
|
1116
1402
|
exports.useUpdateReleaseMutation = useUpdateReleaseMutation;
|
|
1117
1403
|
exports.useUpdateReleaseSettingsMutation = useUpdateReleaseSettingsMutation;
|
|
1118
|
-
//# sourceMappingURL=index-
|
|
1404
|
+
//# sourceMappingURL=index-CyU534vL.js.map
|