@strapi/content-releases 0.0.0-experimental.edc24aaa3bb5a90fa5fd4fee208167dd4e2e38d4 → 0.0.0-experimental.f0d3b2d782e972f1dcb8acf0dce31d4090d1e420

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/_chunks/{App-D-lWdVb2.js → App-BKB1esYS.js} +42 -19
  2. package/dist/_chunks/App-BKB1esYS.js.map +1 -0
  3. package/dist/_chunks/{App-UQxgTJY5.mjs → App-Cne--1Z8.mjs} +43 -20
  4. package/dist/_chunks/App-Cne--1Z8.mjs.map +1 -0
  5. package/dist/_chunks/{ReleasesSettingsPage-CuUXvABk.mjs → ReleasesSettingsPage-C1WwGWIH.mjs} +4 -4
  6. package/dist/_chunks/ReleasesSettingsPage-C1WwGWIH.mjs.map +1 -0
  7. package/dist/_chunks/{ReleasesSettingsPage-xfAoY8N3.js → ReleasesSettingsPage-kuXIwpWp.js} +4 -4
  8. package/dist/_chunks/ReleasesSettingsPage-kuXIwpWp.js.map +1 -0
  9. package/dist/_chunks/{en-BCDLTJn3.js → en-CmYoEnA7.js} +2 -1
  10. package/dist/_chunks/en-CmYoEnA7.js.map +1 -0
  11. package/dist/_chunks/{en-CGXIF4vQ.mjs → en-D0yVZFqf.mjs} +2 -1
  12. package/dist/_chunks/en-D0yVZFqf.mjs.map +1 -0
  13. package/dist/_chunks/{index-jnv9zdcE.js → index-5Odi61vw.js} +286 -23
  14. package/dist/_chunks/index-5Odi61vw.js.map +1 -0
  15. package/dist/_chunks/{index-b3Ej95H7.mjs → index-Cy7qwpaU.mjs} +289 -26
  16. package/dist/_chunks/index-Cy7qwpaU.mjs.map +1 -0
  17. package/dist/_chunks/{schemas-z5zp-_Gd.js → schemas-BE1LxE9J.js} +2 -2
  18. package/dist/_chunks/schemas-BE1LxE9J.js.map +1 -0
  19. package/dist/_chunks/{schemas-63pFihNF.mjs → schemas-DdA2ic2U.mjs} +2 -2
  20. package/dist/_chunks/schemas-DdA2ic2U.mjs.map +1 -0
  21. package/dist/admin/index.js +1 -1
  22. package/dist/admin/index.mjs +1 -1
  23. package/dist/admin/src/components/ReleaseListCell.d.ts +28 -0
  24. package/dist/admin/src/services/release.d.ts +34 -32
  25. package/dist/server/index.js +112 -79
  26. package/dist/server/index.js.map +1 -1
  27. package/dist/server/index.mjs +112 -79
  28. package/dist/server/index.mjs.map +1 -1
  29. package/dist/server/src/controllers/index.d.ts +2 -0
  30. package/dist/server/src/controllers/index.d.ts.map +1 -1
  31. package/dist/server/src/controllers/release-action.d.ts +1 -0
  32. package/dist/server/src/controllers/release-action.d.ts.map +1 -1
  33. package/dist/server/src/controllers/release.d.ts +1 -0
  34. package/dist/server/src/controllers/release.d.ts.map +1 -1
  35. package/dist/server/src/index.d.ts +4 -0
  36. package/dist/server/src/index.d.ts.map +1 -1
  37. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +1 -1
  38. package/dist/server/src/routes/release-action.d.ts.map +1 -1
  39. package/dist/server/src/routes/release.d.ts.map +1 -1
  40. package/dist/server/src/services/index.d.ts +2 -0
  41. package/dist/server/src/services/index.d.ts.map +1 -1
  42. package/dist/server/src/services/release-action.d.ts +3 -1
  43. package/dist/server/src/services/release-action.d.ts.map +1 -1
  44. package/dist/shared/contracts/release-actions.d.ts +3 -5
  45. package/dist/shared/contracts/release-actions.d.ts.map +1 -1
  46. package/dist/shared/contracts/releases.d.ts +3 -2
  47. package/dist/shared/contracts/releases.d.ts.map +1 -1
  48. package/package.json +16 -15
  49. package/dist/_chunks/App-D-lWdVb2.js.map +0 -1
  50. package/dist/_chunks/App-UQxgTJY5.mjs.map +0 -1
  51. package/dist/_chunks/ReleasesSettingsPage-CuUXvABk.mjs.map +0 -1
  52. package/dist/_chunks/ReleasesSettingsPage-xfAoY8N3.js.map +0 -1
  53. package/dist/_chunks/en-BCDLTJn3.js.map +0 -1
  54. package/dist/_chunks/en-CGXIF4vQ.mjs.map +0 -1
  55. package/dist/_chunks/index-b3Ej95H7.mjs.map +0 -1
  56. package/dist/_chunks/index-jnv9zdcE.js.map +0 -1
  57. package/dist/_chunks/schemas-63pFihNF.mjs.map +0 -1
  58. package/dist/_chunks/schemas-z5zp-_Gd.js.map +0 -1
  59. 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, [
@@ -219,7 +219,10 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
219
219
  method: "GET"
220
220
  };
221
221
  },
222
- providesTags: (result, error, arg) => [{ type: "Release", id: arg.id }]
222
+ providesTags: (result, error, arg) => [
223
+ { type: "Release", id: "LIST" },
224
+ { type: "Release", id: arg.id }
225
+ ]
223
226
  }),
224
227
  getReleaseActions: build.query({
225
228
  query({ releaseId, ...params }) {
@@ -288,7 +291,11 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
288
291
  data: body
289
292
  };
290
293
  },
291
- invalidatesTags: () => [{ type: "ReleaseAction", id: "LIST" }],
294
+ invalidatesTags: (res, error, arg) => [
295
+ { type: "ReleaseAction", id: "LIST" },
296
+ { type: "Release", id: "LIST" },
297
+ { type: "Release", id: arg.params.releaseId }
298
+ ],
292
299
  async onQueryStarted({ body, params, query, actionPath }, { dispatch, queryFulfilled }) {
293
300
  const paramsWithoutActionId = {
294
301
  releaseId: params.releaseId,
@@ -335,7 +342,10 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
335
342
  method: "POST"
336
343
  };
337
344
  },
338
- invalidatesTags: (result, error, arg) => [{ type: "Release", id: arg.id }]
345
+ invalidatesTags: (result, error, arg) => [
346
+ { type: "Release", id: arg.id },
347
+ { type: "Document", id: `ALL_LIST` }
348
+ ]
339
349
  }),
340
350
  deleteRelease: build.mutation({
341
351
  query({ id }) {
@@ -373,7 +383,7 @@ const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
373
383
  data
374
384
  };
375
385
  },
376
- invalidatesTags: (result, error, arg) => [{ type: "ReleaseSettings" }]
386
+ invalidatesTags: [{ type: "ReleaseSettings" }]
377
387
  })
378
388
  };
379
389
  }
@@ -598,6 +608,7 @@ const AddActionToReleaseModal = ({
598
608
  };
599
609
  const ReleaseActionModalForm = ({
600
610
  documentId,
611
+ document,
601
612
  model,
602
613
  collectionType
603
614
  }) => {
@@ -676,6 +687,8 @@ const ReleaseActionModalForm = ({
676
687
  defaultMessage: "Add to release"
677
688
  }),
678
689
  icon: /* @__PURE__ */ jsxRuntime.jsx(icons.PaperPlane, {}),
690
+ // Entry is creating so we don't want to allow adding it to a release
691
+ disabled: !document,
679
692
  position: ["panel", "table-row"],
680
693
  dialog: {
681
694
  type: "modal",
@@ -714,6 +727,236 @@ const ReleaseActionModalForm = ({
714
727
  }
715
728
  };
716
729
  };
730
+ const getContentPermissions = (subject) => {
731
+ const permissions = {
732
+ publish: [
733
+ {
734
+ action: "plugin::content-manager.explorer.publish",
735
+ subject,
736
+ id: "",
737
+ actionParameters: {},
738
+ properties: {},
739
+ conditions: []
740
+ }
741
+ ]
742
+ };
743
+ return permissions;
744
+ };
745
+ const ReleaseAction = ({ documents, model }) => {
746
+ const { formatMessage } = reactIntl.useIntl();
747
+ const { toggleNotification } = strapiAdmin.useNotification();
748
+ const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
749
+ const [{ query }] = strapiAdmin.useQueryParams();
750
+ const contentPermissions = getContentPermissions(model);
751
+ const {
752
+ allowedActions: { canPublish }
753
+ } = strapiAdmin.useRBAC(contentPermissions);
754
+ const {
755
+ allowedActions: { canCreate }
756
+ } = strapiAdmin.useRBAC(PERMISSIONS);
757
+ const response = useGetReleasesQuery();
758
+ const releases = response.data?.data;
759
+ const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();
760
+ const documentIds = documents.map((doc) => doc.documentId);
761
+ const handleSubmit = async (values) => {
762
+ const locale = query.plugins?.i18n?.locale;
763
+ const releaseActionEntries = documentIds.map(
764
+ (entryDocumentId) => ({
765
+ type: values.type,
766
+ contentType: model,
767
+ entryDocumentId,
768
+ locale
769
+ })
770
+ );
771
+ const response2 = await createManyReleaseActions({
772
+ body: releaseActionEntries,
773
+ params: { releaseId: values.releaseId }
774
+ });
775
+ if ("data" in response2) {
776
+ const notificationMessage = formatMessage(
777
+ {
778
+ id: "content-releases.content-manager-list-view.add-to-release.notification.success.message",
779
+ defaultMessage: "{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release."
780
+ },
781
+ {
782
+ entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
783
+ totalEntries: response2.data.meta.totalEntries
784
+ }
785
+ );
786
+ const notification = {
787
+ type: "success",
788
+ title: formatMessage(
789
+ {
790
+ id: "content-releases.content-manager-list-view.add-to-release.notification.success.title",
791
+ defaultMessage: "Successfully added to release."
792
+ },
793
+ {
794
+ entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
795
+ totalEntries: response2.data.meta.totalEntries
796
+ }
797
+ ),
798
+ message: response2.data.meta.entriesAlreadyInRelease ? notificationMessage : ""
799
+ };
800
+ toggleNotification(notification);
801
+ return true;
802
+ }
803
+ if ("error" in response2) {
804
+ if (strapiAdmin.isFetchError(response2.error)) {
805
+ toggleNotification({
806
+ type: "warning",
807
+ message: formatAPIError(response2.error)
808
+ });
809
+ } else {
810
+ toggleNotification({
811
+ type: "warning",
812
+ message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
813
+ });
814
+ }
815
+ }
816
+ };
817
+ if (!canCreate || !canPublish)
818
+ return null;
819
+ return {
820
+ actionType: "release",
821
+ variant: "tertiary",
822
+ label: formatMessage({
823
+ id: "content-manager-list-view.add-to-release",
824
+ defaultMessage: "Add to Release"
825
+ }),
826
+ dialog: {
827
+ type: "modal",
828
+ title: formatMessage({
829
+ id: "content-manager-list-view.add-to-release",
830
+ defaultMessage: "Add to Release"
831
+ }),
832
+ content: ({ onClose }) => {
833
+ return /* @__PURE__ */ jsxRuntime.jsx(
834
+ formik.Formik,
835
+ {
836
+ onSubmit: async (values) => {
837
+ const data = await handleSubmit(values);
838
+ if (data) {
839
+ return onClose();
840
+ }
841
+ },
842
+ validationSchema: RELEASE_ACTION_FORM_SCHEMA,
843
+ initialValues: INITIAL_VALUES,
844
+ children: ({ values, setFieldValue }) => /* @__PURE__ */ jsxRuntime.jsxs(formik.Form, { children: [
845
+ 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: [
846
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { required: true, children: [
847
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
848
+ id: "content-releases.content-manager-list-view.add-to-release.select-label",
849
+ defaultMessage: "Select a release"
850
+ }) }),
851
+ /* @__PURE__ */ jsxRuntime.jsx(
852
+ designSystem.SingleSelect,
853
+ {
854
+ placeholder: formatMessage({
855
+ id: "content-releases.content-manager-list-view.add-to-release.select-placeholder",
856
+ defaultMessage: "Select"
857
+ }),
858
+ onChange: (value) => setFieldValue("releaseId", value),
859
+ value: values.releaseId,
860
+ children: releases?.map((release) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: release.id, children: release.name }, release.id))
861
+ }
862
+ )
863
+ ] }) }),
864
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
865
+ id: "content-releases.content-manager-list-view.add-to-release.action-type-label",
866
+ defaultMessage: "What do you want to do with these entries?"
867
+ }) }),
868
+ /* @__PURE__ */ jsxRuntime.jsx(
869
+ ReleaseActionOptions,
870
+ {
871
+ selected: values.type,
872
+ handleChange: (e) => setFieldValue("type", e.target.value),
873
+ name: "type"
874
+ }
875
+ )
876
+ ] }) }),
877
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
878
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { onClick: onClose, variant: "tertiary", name: "cancel", children: formatMessage({
879
+ id: "content-releases.content-manager-list-view.add-to-release.cancel-button",
880
+ defaultMessage: "Cancel"
881
+ }) }),
882
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
883
+ id: "content-releases.content-manager-list-view.add-to-release.continue-button",
884
+ defaultMessage: "Continue"
885
+ }) })
886
+ ] })
887
+ ] })
888
+ }
889
+ );
890
+ }
891
+ }
892
+ };
893
+ };
894
+ const useReleasesList = (contentTypeUid, documentId) => {
895
+ const listViewData = strapiAdmin.useTable("ListView", (state) => state.rows);
896
+ const documentIds = listViewData.map((entry) => entry.documentId);
897
+ const [{ query }] = strapiAdmin.useQueryParams();
898
+ const locale = query?.plugins?.i18n?.locale || void 0;
899
+ const response = useGetMappedEntriesInReleasesQuery(
900
+ { contentTypeUid, documentIds, locale },
901
+ { skip: !documentIds || !contentTypeUid || documentIds.length === 0 }
902
+ );
903
+ const mappedEntriesInReleases = response.data || {};
904
+ return mappedEntriesInReleases?.[documentId] || [];
905
+ };
906
+ const addColumnToTableHook = ({ displayedHeaders, layout }) => {
907
+ const { options } = layout;
908
+ if (!options?.draftAndPublish) {
909
+ return { displayedHeaders, layout };
910
+ }
911
+ return {
912
+ displayedHeaders: [
913
+ ...displayedHeaders,
914
+ {
915
+ searchable: false,
916
+ sortable: false,
917
+ name: "releases",
918
+ label: {
919
+ id: "content-releases.content-manager.list-view.releases.header",
920
+ defaultMessage: "To be released in"
921
+ },
922
+ cellFormatter: (props, _, { model }) => /* @__PURE__ */ jsxRuntime.jsx(ReleaseListCell, { ...props, model })
923
+ }
924
+ ],
925
+ layout
926
+ };
927
+ };
928
+ const ReleaseListCell = ({ documentId, model }) => {
929
+ const releases = useReleasesList(model, documentId);
930
+ const { formatMessage } = reactIntl.useIntl();
931
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { children: [
932
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
933
+ designSystem.Button,
934
+ {
935
+ variant: "ghost",
936
+ onClick: (e) => e.stopPropagation(),
937
+ endIcon: releases.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, { width: "1.2rem", height: "1.2rem" }) : null,
938
+ children: /* @__PURE__ */ jsxRuntime.jsx(
939
+ designSystem.Typography,
940
+ {
941
+ style: { maxWidth: "252px", cursor: "pointer" },
942
+ textColor: "neutral800",
943
+ fontWeight: "regular",
944
+ children: releases.length > 0 ? formatMessage(
945
+ {
946
+ id: "content-releases.content-manager.list-view.releases-number",
947
+ defaultMessage: "{number} {number, plural, one {release} other {releases}}"
948
+ },
949
+ {
950
+ number: releases.length
951
+ }
952
+ ) : "-"
953
+ }
954
+ )
955
+ }
956
+ ) }),
957
+ /* @__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)) }) })
958
+ ] });
959
+ };
717
960
  const getTimezoneOffset = (timezone, date) => {
718
961
  try {
719
962
  const offsetPart = new Intl.DateTimeFormat("en", {
@@ -880,7 +1123,7 @@ const Root = ({ children }) => {
880
1123
  return (
881
1124
  // A user can access the dropdown if they have permissions to delete a release-action OR update a release
882
1125
  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(
1126
+ /* @__PURE__ */ jsxRuntime.jsx(StyledMoreButton, { variant: "tertiary", endIcon: null, paddingLeft: "7px", paddingRight: "7px", children: /* @__PURE__ */ jsxRuntime.jsx(
884
1127
  designSystem.AccessibleIcon,
885
1128
  {
886
1129
  label: formatMessage({
@@ -894,13 +1137,23 @@ const Root = ({ children }) => {
894
1137
  ] }) : null
895
1138
  );
896
1139
  };
1140
+ const StyledMoreButton = styledComponents.styled(designSystem.Menu.Trigger)`
1141
+ & > span {
1142
+ display: flex;
1143
+ }
1144
+ `;
897
1145
  const ReleaseActionMenu = {
898
1146
  Root,
899
1147
  EditReleaseItem,
900
1148
  DeleteReleaseActionItem,
901
1149
  ReleaseActionEntryLinkItem
902
1150
  };
903
- const Panel = ({ model, documentId, collectionType }) => {
1151
+ const Panel = ({
1152
+ model,
1153
+ document,
1154
+ documentId,
1155
+ collectionType
1156
+ }) => {
904
1157
  const [{ query }] = strapiAdmin.useQueryParams();
905
1158
  const locale = query.plugins?.i18n?.locale;
906
1159
  const {
@@ -909,12 +1162,17 @@ const Panel = ({ model, documentId, collectionType }) => {
909
1162
  const { formatMessage, formatDate, formatTime } = reactIntl.useIntl();
910
1163
  const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
911
1164
  const { canRead, canDeleteAction } = allowedActions;
912
- const response = useGetReleasesForEntryQuery({
913
- contentType: model,
914
- entryDocumentId: documentId,
915
- locale,
916
- hasEntryAttached: true
917
- });
1165
+ const response = useGetReleasesForEntryQuery(
1166
+ {
1167
+ contentType: model,
1168
+ entryDocumentId: documentId,
1169
+ locale,
1170
+ hasEntryAttached: true
1171
+ },
1172
+ {
1173
+ skip: !document
1174
+ }
1175
+ );
918
1176
  const releases = response.data?.data;
919
1177
  const getReleaseColorVariant = (actionType, shade) => {
920
1178
  if (actionType === "unpublish") {
@@ -928,7 +1186,7 @@ const Panel = ({ model, documentId, collectionType }) => {
928
1186
  if (collectionType === "collection-types" && (!documentId || documentId === "create")) {
929
1187
  return null;
930
1188
  }
931
- if (releases && releases.length === 0) {
1189
+ if (!releases || releases.length === 0) {
932
1190
  return null;
933
1191
  }
934
1192
  return {
@@ -1013,9 +1271,6 @@ const Panel = ({ model, documentId, collectionType }) => {
1013
1271
  };
1014
1272
  const pluginId = "content-releases";
1015
1273
  const prefixPluginTranslations = (trad, pluginId2) => {
1016
- if (!pluginId2) {
1017
- throw new TypeError("pluginId can't be empty");
1018
- }
1019
1274
  return Object.keys(trad).reduce((acc, current) => {
1020
1275
  acc[`${pluginId2}.${current}`] = trad[current];
1021
1276
  return acc;
@@ -1033,7 +1288,7 @@ const admin = {
1033
1288
  id: `${pluginId}.plugin.name`,
1034
1289
  defaultMessage: "Releases"
1035
1290
  },
1036
- Component: () => Promise.resolve().then(() => require("./App-D-lWdVb2.js")).then((mod) => ({ default: mod.App })),
1291
+ Component: () => Promise.resolve().then(() => require("./App-BKB1esYS.js")).then((mod) => ({ default: mod.App })),
1037
1292
  permissions: PERMISSIONS.main,
1038
1293
  position: 2
1039
1294
  });
@@ -1057,10 +1312,18 @@ const admin = {
1057
1312
  },
1058
1313
  permissions: [],
1059
1314
  async Component() {
1060
- const { ProtectedReleasesSettingsPage } = await Promise.resolve().then(() => require("./ReleasesSettingsPage-xfAoY8N3.js"));
1315
+ const { ProtectedReleasesSettingsPage } = await Promise.resolve().then(() => require("./ReleasesSettingsPage-kuXIwpWp.js"));
1061
1316
  return { default: ProtectedReleasesSettingsPage };
1062
1317
  }
1063
1318
  });
1319
+ if ("addBulkAction" in contentManagerPluginApis && typeof contentManagerPluginApis.addBulkAction === "function") {
1320
+ contentManagerPluginApis.addBulkAction((actions) => {
1321
+ const deleteActionIndex = actions.findIndex((action) => action.type === "delete");
1322
+ actions.splice(deleteActionIndex, 0, ReleaseAction);
1323
+ return actions;
1324
+ });
1325
+ }
1326
+ app.registerHook("Admin/CM/pages/ListView/inject-column-in-table", addColumnToTableHook);
1064
1327
  } else if (!window.strapi.features.isEnabled("cms-content-releases") && window.strapi?.flags?.promoteEE) {
1065
1328
  app.addSettingsLink("global", {
1066
1329
  id: pluginId,
@@ -1081,7 +1344,7 @@ const admin = {
1081
1344
  async registerTrads({ locales }) {
1082
1345
  const importedTrads = await Promise.all(
1083
1346
  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 }) => {
1347
+ return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-CmYoEnA7.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
1085
1348
  return {
1086
1349
  data: prefixPluginTranslations(data, "content-releases"),
1087
1350
  locale
@@ -1115,4 +1378,4 @@ exports.usePublishReleaseMutation = usePublishReleaseMutation;
1115
1378
  exports.useUpdateReleaseActionMutation = useUpdateReleaseActionMutation;
1116
1379
  exports.useUpdateReleaseMutation = useUpdateReleaseMutation;
1117
1380
  exports.useUpdateReleaseSettingsMutation = useUpdateReleaseSettingsMutation;
1118
- //# sourceMappingURL=index-jnv9zdcE.js.map
1381
+ //# sourceMappingURL=index-5Odi61vw.js.map