@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.
Files changed (66) hide show
  1. package/dist/_chunks/{App-UQxgTJY5.mjs → App-CiZCkScI.mjs} +314 -107
  2. package/dist/_chunks/App-CiZCkScI.mjs.map +1 -0
  3. package/dist/_chunks/{App-D-lWdVb2.js → App-SGjO5UPV.js} +354 -148
  4. package/dist/_chunks/App-SGjO5UPV.js.map +1 -0
  5. package/dist/_chunks/{PurchaseContentReleases-Be3acS2L.js → PurchaseContentReleases--qQepXpP.js} +2 -2
  6. package/dist/_chunks/PurchaseContentReleases--qQepXpP.js.map +1 -0
  7. package/dist/_chunks/{PurchaseContentReleases-_MxP6-Dt.mjs → PurchaseContentReleases-D-n-w-st.mjs} +2 -2
  8. package/dist/_chunks/{PurchaseContentReleases-_MxP6-Dt.mjs.map → PurchaseContentReleases-D-n-w-st.mjs.map} +1 -1
  9. package/dist/_chunks/{ReleasesSettingsPage-xfAoY8N3.js → ReleasesSettingsPage-Cto_NLUd.js} +4 -4
  10. package/dist/_chunks/ReleasesSettingsPage-Cto_NLUd.js.map +1 -0
  11. package/dist/_chunks/{ReleasesSettingsPage-CuUXvABk.mjs → ReleasesSettingsPage-DQT8N3A-.mjs} +4 -4
  12. package/dist/_chunks/ReleasesSettingsPage-DQT8N3A-.mjs.map +1 -0
  13. package/dist/_chunks/{en-BCDLTJn3.js → en-BWPPsSH-.js} +12 -2
  14. package/dist/_chunks/en-BWPPsSH-.js.map +1 -0
  15. package/dist/_chunks/{en-CGXIF4vQ.mjs → en-D9Q4YW03.mjs} +12 -2
  16. package/dist/_chunks/en-D9Q4YW03.mjs.map +1 -0
  17. package/dist/_chunks/{index-b3Ej95H7.mjs → index-BjvFfTtA.mjs} +316 -29
  18. package/dist/_chunks/index-BjvFfTtA.mjs.map +1 -0
  19. package/dist/_chunks/{index-jnv9zdcE.js → index-CyU534vL.js} +314 -28
  20. package/dist/_chunks/index-CyU534vL.js.map +1 -0
  21. package/dist/_chunks/{schemas-z5zp-_Gd.js → schemas-DBYv9gK8.js} +3 -4
  22. package/dist/_chunks/schemas-DBYv9gK8.js.map +1 -0
  23. package/dist/_chunks/{schemas-63pFihNF.mjs → schemas-DdA2ic2U.mjs} +2 -2
  24. package/dist/_chunks/schemas-DdA2ic2U.mjs.map +1 -0
  25. package/dist/admin/index.js +1 -1
  26. package/dist/admin/index.mjs +1 -1
  27. package/dist/admin/src/components/EntryValidationPopover.d.ts +13 -0
  28. package/dist/admin/src/components/ReleaseListCell.d.ts +28 -0
  29. package/dist/admin/src/services/release.d.ts +34 -32
  30. package/dist/server/index.js +192 -90
  31. package/dist/server/index.js.map +1 -1
  32. package/dist/server/index.mjs +191 -88
  33. package/dist/server/index.mjs.map +1 -1
  34. package/dist/server/src/controllers/index.d.ts +2 -0
  35. package/dist/server/src/controllers/index.d.ts.map +1 -1
  36. package/dist/server/src/controllers/release-action.d.ts +1 -0
  37. package/dist/server/src/controllers/release-action.d.ts.map +1 -1
  38. package/dist/server/src/controllers/release.d.ts +1 -0
  39. package/dist/server/src/controllers/release.d.ts.map +1 -1
  40. package/dist/server/src/index.d.ts +6 -6
  41. package/dist/server/src/middlewares/documents.d.ts.map +1 -1
  42. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +1 -1
  43. package/dist/server/src/routes/release-action.d.ts.map +1 -1
  44. package/dist/server/src/routes/release.d.ts.map +1 -1
  45. package/dist/server/src/services/index.d.ts +4 -6
  46. package/dist/server/src/services/index.d.ts.map +1 -1
  47. package/dist/server/src/services/release-action.d.ts +6 -8
  48. package/dist/server/src/services/release-action.d.ts.map +1 -1
  49. package/dist/server/src/utils/index.d.ts.map +1 -1
  50. package/dist/shared/contracts/release-actions.d.ts +11 -6
  51. package/dist/shared/contracts/release-actions.d.ts.map +1 -1
  52. package/dist/shared/contracts/releases.d.ts +3 -2
  53. package/dist/shared/contracts/releases.d.ts.map +1 -1
  54. package/package.json +18 -16
  55. package/dist/_chunks/App-D-lWdVb2.js.map +0 -1
  56. package/dist/_chunks/App-UQxgTJY5.mjs.map +0 -1
  57. package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js.map +0 -1
  58. package/dist/_chunks/ReleasesSettingsPage-CuUXvABk.mjs.map +0 -1
  59. package/dist/_chunks/ReleasesSettingsPage-xfAoY8N3.js.map +0 -1
  60. package/dist/_chunks/en-BCDLTJn3.js.map +0 -1
  61. package/dist/_chunks/en-CGXIF4vQ.mjs.map +0 -1
  62. package/dist/_chunks/index-b3Ej95H7.mjs.map +0 -1
  63. package/dist/_chunks/index-jnv9zdcE.js.map +0 -1
  64. package/dist/_chunks/schemas-63pFihNF.mjs.map +0 -1
  65. package/dist/_chunks/schemas-z5zp-_Gd.js.map +0 -1
  66. 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)(reject.bind(null, new Error("Unknown variable dynamic import: " + path)));
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) => [{ type: "Release", id: arg.id }]
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: () => [{ type: "ReleaseAction", id: "LIST" }],
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) => [{ type: "Release", id: arg.id }]
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: (result, error, arg) => [{ type: "ReleaseSettings" }]
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(designSystem.Menu.Trigger, { variant: "tertiary", endIcon: null, paddingLeft: 2, paddingRight: 2, children: /* @__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 = ({ model, documentId, collectionType }) => {
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
- contentType: model,
914
- entryDocumentId: documentId,
915
- locale,
916
- hasEntryAttached: true
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 && releases.length === 0) {
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-D-lWdVb2.js")).then((mod) => ({ default: mod.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-xfAoY8N3.js"));
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-Be3acS2L.js"));
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-BCDLTJn3.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
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-jnv9zdcE.js.map
1404
+ //# sourceMappingURL=index-CyU534vL.js.map