@strapi/content-releases 0.0.0-next.c5f067b5650921187770124e9b6c8186e805e242 → 0.0.0-next.cb00a1799402728de4ecec6d52a815e33fcedaf3
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-5PsAyVt2.js → App--3HPsVgM.js} +728 -459
- package/dist/_chunks/App--3HPsVgM.js.map +1 -0
- package/dist/_chunks/{App-3ycH2d3s.mjs → App-CRNZU_DZ.mjs} +738 -470
- package/dist/_chunks/App-CRNZU_DZ.mjs.map +1 -0
- package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs +51 -0
- package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs.map +1 -0
- package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js +51 -0
- package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js.map +1 -0
- package/dist/_chunks/{en-2DuPv5k0.js → en-3SGjiVyR.js} +26 -7
- package/dist/_chunks/en-3SGjiVyR.js.map +1 -0
- package/dist/_chunks/{en-SOqjCdyh.mjs → en-bpHsnU0n.mjs} +26 -7
- package/dist/_chunks/en-bpHsnU0n.mjs.map +1 -0
- package/dist/_chunks/{index-4gUWuCQV.mjs → index-_wu9g0yG.mjs} +332 -37
- package/dist/_chunks/index-_wu9g0yG.mjs.map +1 -0
- package/dist/_chunks/{index-D57Rztnc.js → index-xV3jXcZj.js} +320 -25
- package/dist/_chunks/index-xV3jXcZj.js.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +2 -2
- package/dist/server/index.js +962 -408
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +961 -408
- package/dist/server/index.mjs.map +1 -1
- package/package.json +15 -12
- package/dist/_chunks/App-3ycH2d3s.mjs.map +0 -1
- package/dist/_chunks/App-5PsAyVt2.js.map +0 -1
- package/dist/_chunks/en-2DuPv5k0.js.map +0 -1
- package/dist/_chunks/en-SOqjCdyh.mjs.map +0 -1
- package/dist/_chunks/index-4gUWuCQV.mjs.map +0 -1
- package/dist/_chunks/index-D57Rztnc.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getFetchClient, useNotification, useAPIErrorHandler, CheckPermissions, useCMEditViewDataManager, NoContent, prefixPluginTranslations } from "@strapi/helper-plugin";
|
|
1
|
+
import { getFetchClient, useNotification, useAPIErrorHandler, CheckPermissions, useCMEditViewDataManager, NoContent, useRBAC, prefixPluginTranslations } from "@strapi/helper-plugin";
|
|
2
2
|
import { Cross, Pencil, More, Plus, PaperPlane } from "@strapi/icons";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import * as React from "react";
|
|
@@ -251,6 +251,19 @@ const releaseApi = createApi({
|
|
|
251
251
|
{ type: "ReleaseAction", id: "LIST" }
|
|
252
252
|
]
|
|
253
253
|
}),
|
|
254
|
+
createManyReleaseActions: build.mutation({
|
|
255
|
+
query({ body, params }) {
|
|
256
|
+
return {
|
|
257
|
+
url: `/content-releases/${params.releaseId}/actions/bulk`,
|
|
258
|
+
method: "POST",
|
|
259
|
+
data: body
|
|
260
|
+
};
|
|
261
|
+
},
|
|
262
|
+
invalidatesTags: [
|
|
263
|
+
{ type: "Release", id: "LIST" },
|
|
264
|
+
{ type: "ReleaseAction", id: "LIST" }
|
|
265
|
+
]
|
|
266
|
+
}),
|
|
254
267
|
updateReleaseAction: build.mutation({
|
|
255
268
|
query({ body, params }) {
|
|
256
269
|
return {
|
|
@@ -288,8 +301,9 @@ const releaseApi = createApi({
|
|
|
288
301
|
method: "DELETE"
|
|
289
302
|
};
|
|
290
303
|
},
|
|
291
|
-
invalidatesTags: [
|
|
304
|
+
invalidatesTags: (result, error, arg) => [
|
|
292
305
|
{ type: "Release", id: "LIST" },
|
|
306
|
+
{ type: "Release", id: arg.params.releaseId },
|
|
293
307
|
{ type: "ReleaseAction", id: "LIST" }
|
|
294
308
|
]
|
|
295
309
|
}),
|
|
@@ -309,7 +323,7 @@ const releaseApi = createApi({
|
|
|
309
323
|
method: "DELETE"
|
|
310
324
|
};
|
|
311
325
|
},
|
|
312
|
-
invalidatesTags: (
|
|
326
|
+
invalidatesTags: () => [{ type: "Release", id: "LIST" }]
|
|
313
327
|
})
|
|
314
328
|
};
|
|
315
329
|
}
|
|
@@ -321,12 +335,29 @@ const {
|
|
|
321
335
|
useGetReleaseActionsQuery,
|
|
322
336
|
useCreateReleaseMutation,
|
|
323
337
|
useCreateReleaseActionMutation,
|
|
338
|
+
useCreateManyReleaseActionsMutation,
|
|
324
339
|
useUpdateReleaseMutation,
|
|
325
340
|
useUpdateReleaseActionMutation,
|
|
326
341
|
usePublishReleaseMutation,
|
|
327
342
|
useDeleteReleaseActionMutation,
|
|
328
343
|
useDeleteReleaseMutation
|
|
329
344
|
} = releaseApi;
|
|
345
|
+
const getTimezoneOffset = (timezone, date) => {
|
|
346
|
+
try {
|
|
347
|
+
const offsetPart = new Intl.DateTimeFormat("en", {
|
|
348
|
+
timeZone: timezone,
|
|
349
|
+
timeZoneName: "longOffset"
|
|
350
|
+
}).formatToParts(date).find((part) => part.type === "timeZoneName");
|
|
351
|
+
const offset = offsetPart ? offsetPart.value : "";
|
|
352
|
+
let utcOffset = offset.replace("GMT", "UTC");
|
|
353
|
+
if (!utcOffset.includes("+") && !utcOffset.includes("-")) {
|
|
354
|
+
utcOffset = `${utcOffset}+00:00`;
|
|
355
|
+
}
|
|
356
|
+
return utcOffset;
|
|
357
|
+
} catch (error) {
|
|
358
|
+
return "";
|
|
359
|
+
}
|
|
360
|
+
};
|
|
330
361
|
const useTypedDispatch = useDispatch;
|
|
331
362
|
const useTypedSelector = useSelector;
|
|
332
363
|
const StyledMenuItem = styled(Menu.Item)`
|
|
@@ -397,7 +428,7 @@ const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
|
397
428
|
}
|
|
398
429
|
};
|
|
399
430
|
return /* @__PURE__ */ jsx(CheckPermissions, { permissions: PERMISSIONS.deleteAction, children: /* @__PURE__ */ jsx(StyledMenuItem, { variant: "danger", onSelect: handleDeleteAction, children: /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
400
|
-
/* @__PURE__ */ jsx(Icon, { as: Cross,
|
|
431
|
+
/* @__PURE__ */ jsx(Icon, { as: Cross, width: 3, height: 3 }),
|
|
401
432
|
/* @__PURE__ */ jsx(Typography, { textColor: "danger600", variant: "omega", children: formatMessage({
|
|
402
433
|
id: "content-releases.content-manager-edit-view.remove-from-release",
|
|
403
434
|
defaultMessage: "Remove from release"
|
|
@@ -436,7 +467,7 @@ const ReleaseActionEntryLinkItem = ({
|
|
|
436
467
|
pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
|
|
437
468
|
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
438
469
|
},
|
|
439
|
-
startIcon: /* @__PURE__ */ jsx(Icon, { as: Pencil,
|
|
470
|
+
startIcon: /* @__PURE__ */ jsx(Icon, { as: Pencil, width: 3, height: 3 }),
|
|
440
471
|
children: /* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage({
|
|
441
472
|
id: "content-releases.content-manager-edit-view.edit-entry",
|
|
442
473
|
defaultMessage: "Edit entry"
|
|
@@ -446,6 +477,21 @@ const ReleaseActionEntryLinkItem = ({
|
|
|
446
477
|
}
|
|
447
478
|
);
|
|
448
479
|
};
|
|
480
|
+
const EditReleaseItem = ({ releaseId }) => {
|
|
481
|
+
const { formatMessage } = useIntl();
|
|
482
|
+
return /* @__PURE__ */ jsx(StyledMenuItem, { children: /* @__PURE__ */ jsx(
|
|
483
|
+
Link,
|
|
484
|
+
{
|
|
485
|
+
href: `/admin/plugins/content-releases/${releaseId}`,
|
|
486
|
+
startIcon: /* @__PURE__ */ jsx(Icon, { as: Pencil, width: 3, height: 3 }),
|
|
487
|
+
isExternal: false,
|
|
488
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage({
|
|
489
|
+
id: "content-releases.content-manager-edit-view.edit-release",
|
|
490
|
+
defaultMessage: "Edit release"
|
|
491
|
+
}) })
|
|
492
|
+
}
|
|
493
|
+
) });
|
|
494
|
+
};
|
|
449
495
|
const Root = ({ children, hasTriggerBorder = false }) => {
|
|
450
496
|
const { formatMessage } = useIntl();
|
|
451
497
|
return (
|
|
@@ -470,6 +516,7 @@ const Root = ({ children, hasTriggerBorder = false }) => {
|
|
|
470
516
|
};
|
|
471
517
|
const ReleaseActionMenu = {
|
|
472
518
|
Root,
|
|
519
|
+
EditReleaseItem,
|
|
473
520
|
DeleteReleaseActionItem,
|
|
474
521
|
ReleaseActionEntryLinkItem
|
|
475
522
|
};
|
|
@@ -493,19 +540,40 @@ const FieldWrapper = styled(Field)`
|
|
|
493
540
|
text-transform: capitalize;
|
|
494
541
|
}
|
|
495
542
|
|
|
496
|
-
&:active,
|
|
497
543
|
&[data-checked='true'] {
|
|
498
|
-
color: ${({ theme }) => theme.colors.primary700};
|
|
499
|
-
background-color: ${({ theme }) => theme.colors.primary100};
|
|
500
|
-
border-color: ${({ theme }) => theme.colors.primary700};
|
|
544
|
+
color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
545
|
+
background-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary100 : theme.colors.danger100};
|
|
546
|
+
border-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
501
547
|
}
|
|
502
548
|
|
|
503
549
|
&[data-checked='false'] {
|
|
504
550
|
border-left: ${({ actionType }) => actionType === "unpublish" && "none"};
|
|
505
551
|
border-right: ${({ actionType }) => actionType === "publish" && "none"};
|
|
506
552
|
}
|
|
553
|
+
|
|
554
|
+
&[data-checked='false'][data-disabled='false']:hover {
|
|
555
|
+
color: ${({ theme }) => theme.colors.neutral700};
|
|
556
|
+
background-color: ${({ theme }) => theme.colors.neutral100};
|
|
557
|
+
border-color: ${({ theme }) => theme.colors.neutral200};
|
|
558
|
+
|
|
559
|
+
& > label {
|
|
560
|
+
cursor: pointer;
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
&[data-disabled='true'] {
|
|
565
|
+
color: ${({ theme }) => theme.colors.neutral600};
|
|
566
|
+
background-color: ${({ theme }) => theme.colors.neutral150};
|
|
567
|
+
border-color: ${({ theme }) => theme.colors.neutral300};
|
|
568
|
+
}
|
|
507
569
|
`;
|
|
508
|
-
const ActionOption = ({
|
|
570
|
+
const ActionOption = ({
|
|
571
|
+
selected,
|
|
572
|
+
actionType,
|
|
573
|
+
handleChange,
|
|
574
|
+
name,
|
|
575
|
+
disabled = false
|
|
576
|
+
}) => {
|
|
509
577
|
return /* @__PURE__ */ jsx(
|
|
510
578
|
FieldWrapper,
|
|
511
579
|
{
|
|
@@ -516,6 +584,7 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
516
584
|
position: "relative",
|
|
517
585
|
cursor: "pointer",
|
|
518
586
|
"data-checked": selected === actionType,
|
|
587
|
+
"data-disabled": disabled && selected !== actionType,
|
|
519
588
|
children: /* @__PURE__ */ jsxs(FieldLabel, { htmlFor: `${name}-${actionType}`, children: [
|
|
520
589
|
/* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx(
|
|
521
590
|
FieldInput,
|
|
@@ -525,7 +594,8 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
525
594
|
name,
|
|
526
595
|
checked: selected === actionType,
|
|
527
596
|
onChange: handleChange,
|
|
528
|
-
value: actionType
|
|
597
|
+
value: actionType,
|
|
598
|
+
disabled
|
|
529
599
|
}
|
|
530
600
|
) }),
|
|
531
601
|
actionType
|
|
@@ -533,7 +603,12 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
533
603
|
}
|
|
534
604
|
);
|
|
535
605
|
};
|
|
536
|
-
const ReleaseActionOptions = ({
|
|
606
|
+
const ReleaseActionOptions = ({
|
|
607
|
+
selected,
|
|
608
|
+
handleChange,
|
|
609
|
+
name,
|
|
610
|
+
disabled = false
|
|
611
|
+
}) => {
|
|
537
612
|
return /* @__PURE__ */ jsxs(Flex, { children: [
|
|
538
613
|
/* @__PURE__ */ jsx(
|
|
539
614
|
ActionOption,
|
|
@@ -541,7 +616,8 @@ const ReleaseActionOptions = ({ selected, handleChange, name }) => {
|
|
|
541
616
|
actionType: "publish",
|
|
542
617
|
selected,
|
|
543
618
|
handleChange,
|
|
544
|
-
name
|
|
619
|
+
name,
|
|
620
|
+
disabled
|
|
545
621
|
}
|
|
546
622
|
),
|
|
547
623
|
/* @__PURE__ */ jsx(
|
|
@@ -550,7 +626,8 @@ const ReleaseActionOptions = ({ selected, handleChange, name }) => {
|
|
|
550
626
|
actionType: "unpublish",
|
|
551
627
|
selected,
|
|
552
628
|
handleChange,
|
|
553
|
-
name
|
|
629
|
+
name,
|
|
630
|
+
disabled
|
|
554
631
|
}
|
|
555
632
|
)
|
|
556
633
|
] });
|
|
@@ -594,6 +671,7 @@ const AddActionToReleaseModal = ({
|
|
|
594
671
|
contentTypeUid,
|
|
595
672
|
entryId
|
|
596
673
|
}) => {
|
|
674
|
+
const releaseHeaderId = React.useId();
|
|
597
675
|
const { formatMessage } = useIntl();
|
|
598
676
|
const toggleNotification = useNotification();
|
|
599
677
|
const { formatAPIError } = useAPIErrorHandler();
|
|
@@ -641,8 +719,8 @@ const AddActionToReleaseModal = ({
|
|
|
641
719
|
}
|
|
642
720
|
}
|
|
643
721
|
};
|
|
644
|
-
return /* @__PURE__ */ jsxs(ModalLayout, { onClose: handleClose, labelledBy:
|
|
645
|
-
/* @__PURE__ */ jsx(ModalHeader, { children: /* @__PURE__ */ jsx(Typography, { id:
|
|
722
|
+
return /* @__PURE__ */ jsxs(ModalLayout, { onClose: handleClose, labelledBy: releaseHeaderId, children: [
|
|
723
|
+
/* @__PURE__ */ jsx(ModalHeader, { children: /* @__PURE__ */ jsx(Typography, { id: releaseHeaderId, fontWeight: "bold", textColor: "neutral800", children: formatMessage({
|
|
646
724
|
id: "content-releases.content-manager-edit-view.add-to-release",
|
|
647
725
|
defaultMessage: "Add to release"
|
|
648
726
|
}) }) }),
|
|
@@ -712,7 +790,7 @@ const AddActionToReleaseModal = ({
|
|
|
712
790
|
};
|
|
713
791
|
const CMReleasesContainer = () => {
|
|
714
792
|
const [isModalOpen, setIsModalOpen] = React.useState(false);
|
|
715
|
-
const { formatMessage } = useIntl();
|
|
793
|
+
const { formatMessage, formatDate, formatTime } = useIntl();
|
|
716
794
|
const {
|
|
717
795
|
isCreatingEntry,
|
|
718
796
|
hasDraftAndPublish,
|
|
@@ -798,15 +876,40 @@ const CMReleasesContainer = () => {
|
|
|
798
876
|
)
|
|
799
877
|
}
|
|
800
878
|
),
|
|
801
|
-
/* @__PURE__ */ jsxs(Flex, { padding: 4, direction: "column", gap:
|
|
879
|
+
/* @__PURE__ */ jsxs(Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
|
|
802
880
|
/* @__PURE__ */ jsx(Typography, { fontSize: 2, fontWeight: "bold", variant: "omega", textColor: "neutral700", children: release.name }),
|
|
803
|
-
|
|
804
|
-
|
|
881
|
+
release.scheduledAt && release.timezone && /* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: formatMessage(
|
|
882
|
+
{
|
|
883
|
+
id: "content-releases.content-manager-edit-view.scheduled.date",
|
|
884
|
+
defaultMessage: "{date} at {time} ({offset})"
|
|
885
|
+
},
|
|
805
886
|
{
|
|
806
|
-
|
|
807
|
-
|
|
887
|
+
date: formatDate(new Date(release.scheduledAt), {
|
|
888
|
+
day: "2-digit",
|
|
889
|
+
month: "2-digit",
|
|
890
|
+
year: "numeric",
|
|
891
|
+
timeZone: release.timezone
|
|
892
|
+
}),
|
|
893
|
+
time: formatTime(new Date(release.scheduledAt), {
|
|
894
|
+
hourCycle: "h23",
|
|
895
|
+
timeZone: release.timezone
|
|
896
|
+
}),
|
|
897
|
+
offset: getTimezoneOffset(
|
|
898
|
+
release.timezone,
|
|
899
|
+
new Date(release.scheduledAt)
|
|
900
|
+
)
|
|
808
901
|
}
|
|
809
|
-
) })
|
|
902
|
+
) }),
|
|
903
|
+
/* @__PURE__ */ jsx(CheckPermissions, { permissions: PERMISSIONS.deleteAction, children: /* @__PURE__ */ jsxs(ReleaseActionMenu.Root, { hasTriggerBorder: true, children: [
|
|
904
|
+
/* @__PURE__ */ jsx(ReleaseActionMenu.EditReleaseItem, { releaseId: release.id }),
|
|
905
|
+
/* @__PURE__ */ jsx(
|
|
906
|
+
ReleaseActionMenu.DeleteReleaseActionItem,
|
|
907
|
+
{
|
|
908
|
+
releaseId: release.id,
|
|
909
|
+
actionId: release.action.id
|
|
910
|
+
}
|
|
911
|
+
)
|
|
912
|
+
] }) })
|
|
810
913
|
] })
|
|
811
914
|
]
|
|
812
915
|
},
|
|
@@ -842,9 +945,181 @@ const CMReleasesContainer = () => {
|
|
|
842
945
|
}
|
|
843
946
|
) });
|
|
844
947
|
};
|
|
948
|
+
const getContentPermissions = (subject) => {
|
|
949
|
+
const permissions = {
|
|
950
|
+
publish: [
|
|
951
|
+
{
|
|
952
|
+
action: "plugin::content-manager.explorer.publish",
|
|
953
|
+
subject,
|
|
954
|
+
id: "",
|
|
955
|
+
actionParameters: {},
|
|
956
|
+
properties: {},
|
|
957
|
+
conditions: []
|
|
958
|
+
}
|
|
959
|
+
]
|
|
960
|
+
};
|
|
961
|
+
return permissions;
|
|
962
|
+
};
|
|
963
|
+
const ReleaseAction = ({ ids, model }) => {
|
|
964
|
+
const { formatMessage } = useIntl();
|
|
965
|
+
const toggleNotification = useNotification();
|
|
966
|
+
const { formatAPIError } = useAPIErrorHandler();
|
|
967
|
+
const { modifiedData } = useCMEditViewDataManager();
|
|
968
|
+
const contentPermissions = getContentPermissions(model);
|
|
969
|
+
const {
|
|
970
|
+
allowedActions: { canPublish }
|
|
971
|
+
} = useRBAC(contentPermissions);
|
|
972
|
+
const {
|
|
973
|
+
allowedActions: { canCreate }
|
|
974
|
+
} = useRBAC(PERMISSIONS);
|
|
975
|
+
const response = useGetReleasesQuery();
|
|
976
|
+
const releases = response.data?.data;
|
|
977
|
+
const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();
|
|
978
|
+
const handleSubmit = async (values) => {
|
|
979
|
+
const locale = modifiedData.locale;
|
|
980
|
+
const releaseActionEntries = ids.map((id) => ({
|
|
981
|
+
type: values.type,
|
|
982
|
+
entry: {
|
|
983
|
+
contentType: model,
|
|
984
|
+
id,
|
|
985
|
+
locale
|
|
986
|
+
}
|
|
987
|
+
}));
|
|
988
|
+
const response2 = await createManyReleaseActions({
|
|
989
|
+
body: releaseActionEntries,
|
|
990
|
+
params: { releaseId: values.releaseId }
|
|
991
|
+
});
|
|
992
|
+
if ("data" in response2) {
|
|
993
|
+
const notificationMessage = formatMessage(
|
|
994
|
+
{
|
|
995
|
+
id: "content-releases.content-manager-list-view.add-to-release.notification.success.message",
|
|
996
|
+
defaultMessage: "{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release."
|
|
997
|
+
},
|
|
998
|
+
{
|
|
999
|
+
entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
|
|
1000
|
+
totalEntries: response2.data.meta.totalEntries
|
|
1001
|
+
}
|
|
1002
|
+
);
|
|
1003
|
+
const notification = {
|
|
1004
|
+
type: "success",
|
|
1005
|
+
title: formatMessage(
|
|
1006
|
+
{
|
|
1007
|
+
id: "content-releases.content-manager-list-view.add-to-release.notification.success.title",
|
|
1008
|
+
defaultMessage: "Successfully added to release."
|
|
1009
|
+
},
|
|
1010
|
+
{
|
|
1011
|
+
entriesAlreadyInRelease: response2.data.meta.entriesAlreadyInRelease,
|
|
1012
|
+
totalEntries: response2.data.meta.totalEntries
|
|
1013
|
+
}
|
|
1014
|
+
),
|
|
1015
|
+
message: response2.data.meta.entriesAlreadyInRelease ? notificationMessage : ""
|
|
1016
|
+
};
|
|
1017
|
+
toggleNotification(notification);
|
|
1018
|
+
return true;
|
|
1019
|
+
}
|
|
1020
|
+
if ("error" in response2) {
|
|
1021
|
+
if (isAxiosError$1(response2.error)) {
|
|
1022
|
+
toggleNotification({
|
|
1023
|
+
type: "warning",
|
|
1024
|
+
message: formatAPIError(response2.error)
|
|
1025
|
+
});
|
|
1026
|
+
} else {
|
|
1027
|
+
toggleNotification({
|
|
1028
|
+
type: "warning",
|
|
1029
|
+
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
1030
|
+
});
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
};
|
|
1034
|
+
if (!canCreate || !canPublish)
|
|
1035
|
+
return null;
|
|
1036
|
+
return {
|
|
1037
|
+
actionType: "release",
|
|
1038
|
+
variant: "tertiary",
|
|
1039
|
+
label: formatMessage({
|
|
1040
|
+
id: "content-manager-list-view.add-to-release",
|
|
1041
|
+
defaultMessage: "Add to Release"
|
|
1042
|
+
}),
|
|
1043
|
+
dialog: {
|
|
1044
|
+
type: "modal",
|
|
1045
|
+
title: formatMessage({
|
|
1046
|
+
id: "content-manager-list-view.add-to-release",
|
|
1047
|
+
defaultMessage: "Add to Release"
|
|
1048
|
+
}),
|
|
1049
|
+
content: ({ onClose }) => {
|
|
1050
|
+
return /* @__PURE__ */ jsx(
|
|
1051
|
+
Formik,
|
|
1052
|
+
{
|
|
1053
|
+
onSubmit: async (values) => {
|
|
1054
|
+
const data = await handleSubmit(values);
|
|
1055
|
+
if (data) {
|
|
1056
|
+
return onClose();
|
|
1057
|
+
}
|
|
1058
|
+
},
|
|
1059
|
+
validationSchema: RELEASE_ACTION_FORM_SCHEMA,
|
|
1060
|
+
initialValues: INITIAL_VALUES,
|
|
1061
|
+
children: ({ values, setFieldValue }) => /* @__PURE__ */ jsxs(Form, { children: [
|
|
1062
|
+
releases?.length === 0 ? /* @__PURE__ */ jsx(NoReleases, {}) : /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
|
|
1063
|
+
/* @__PURE__ */ jsx(Box, { paddingBottom: 6, children: /* @__PURE__ */ jsx(
|
|
1064
|
+
SingleSelect,
|
|
1065
|
+
{
|
|
1066
|
+
required: true,
|
|
1067
|
+
label: formatMessage({
|
|
1068
|
+
id: "content-releases.content-manager-list-view.add-to-release.select-label",
|
|
1069
|
+
defaultMessage: "Select a release"
|
|
1070
|
+
}),
|
|
1071
|
+
placeholder: formatMessage({
|
|
1072
|
+
id: "content-releases.content-manager-list-view.add-to-release.select-placeholder",
|
|
1073
|
+
defaultMessage: "Select"
|
|
1074
|
+
}),
|
|
1075
|
+
onChange: (value) => setFieldValue("releaseId", value),
|
|
1076
|
+
value: values.releaseId,
|
|
1077
|
+
children: releases?.map((release) => /* @__PURE__ */ jsx(SingleSelectOption, { value: release.id, children: release.name }, release.id))
|
|
1078
|
+
}
|
|
1079
|
+
) }),
|
|
1080
|
+
/* @__PURE__ */ jsx(FieldLabel, { children: formatMessage({
|
|
1081
|
+
id: "content-releases.content-manager-list-view.add-to-release.action-type-label",
|
|
1082
|
+
defaultMessage: "What do you want to do with these entries?"
|
|
1083
|
+
}) }),
|
|
1084
|
+
/* @__PURE__ */ jsx(
|
|
1085
|
+
ReleaseActionOptions,
|
|
1086
|
+
{
|
|
1087
|
+
selected: values.type,
|
|
1088
|
+
handleChange: (e) => setFieldValue("type", e.target.value),
|
|
1089
|
+
name: "type"
|
|
1090
|
+
}
|
|
1091
|
+
)
|
|
1092
|
+
] }) }),
|
|
1093
|
+
/* @__PURE__ */ jsx(
|
|
1094
|
+
ModalFooter,
|
|
1095
|
+
{
|
|
1096
|
+
startActions: /* @__PURE__ */ jsx(Button, { onClick: onClose, variant: "tertiary", name: "cancel", children: formatMessage({
|
|
1097
|
+
id: "content-releases.content-manager-list-view.add-to-release.cancel-button",
|
|
1098
|
+
defaultMessage: "Cancel"
|
|
1099
|
+
}) }),
|
|
1100
|
+
endActions: (
|
|
1101
|
+
/**
|
|
1102
|
+
* TODO: Ideally we would use isValid from Formik to disable the button, however currently it always returns true
|
|
1103
|
+
* for yup.string().required(), even when the value is falsy (including empty string)
|
|
1104
|
+
*/
|
|
1105
|
+
/* @__PURE__ */ jsx(Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
|
|
1106
|
+
id: "content-releases.content-manager-list-view.add-to-release.continue-button",
|
|
1107
|
+
defaultMessage: "Continue"
|
|
1108
|
+
}) })
|
|
1109
|
+
)
|
|
1110
|
+
}
|
|
1111
|
+
)
|
|
1112
|
+
] })
|
|
1113
|
+
}
|
|
1114
|
+
);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
};
|
|
1118
|
+
};
|
|
845
1119
|
const admin = {
|
|
846
1120
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
847
1121
|
register(app) {
|
|
1122
|
+
app.createHook("ContentReleases/pages/ReleaseDetails/add-locale-in-releases");
|
|
848
1123
|
if (window.strapi.features.isEnabled("cms-content-releases")) {
|
|
849
1124
|
app.addMenuLink({
|
|
850
1125
|
to: `/plugins/${pluginId}`,
|
|
@@ -854,7 +1129,7 @@ const admin = {
|
|
|
854
1129
|
defaultMessage: "Releases"
|
|
855
1130
|
},
|
|
856
1131
|
async Component() {
|
|
857
|
-
const { App } = await import("./App-
|
|
1132
|
+
const { App } = await import("./App-CRNZU_DZ.mjs");
|
|
858
1133
|
return App;
|
|
859
1134
|
},
|
|
860
1135
|
permissions: PERMISSIONS.main
|
|
@@ -867,12 +1142,31 @@ const admin = {
|
|
|
867
1142
|
name: `${pluginId}-link`,
|
|
868
1143
|
Component: CMReleasesContainer
|
|
869
1144
|
});
|
|
1145
|
+
app.plugins["content-manager"].apis.addBulkAction((actions) => {
|
|
1146
|
+
const deleteActionIndex = actions.findIndex((action) => action.name === "DeleteAction");
|
|
1147
|
+
actions.splice(deleteActionIndex, 0, ReleaseAction);
|
|
1148
|
+
return actions;
|
|
1149
|
+
});
|
|
1150
|
+
} else if (!window.strapi.features.isEnabled("cms-content-releases") && window.strapi?.flags?.promoteEE) {
|
|
1151
|
+
app.addMenuLink({
|
|
1152
|
+
to: `/plugins/purchase-content-releases`,
|
|
1153
|
+
icon: PaperPlane,
|
|
1154
|
+
intlLabel: {
|
|
1155
|
+
id: `${pluginId}.plugin.name`,
|
|
1156
|
+
defaultMessage: "Releases"
|
|
1157
|
+
},
|
|
1158
|
+
async Component() {
|
|
1159
|
+
const { PurchaseContentReleases } = await import("./PurchaseContentReleases-3tRbmbY3.mjs");
|
|
1160
|
+
return PurchaseContentReleases;
|
|
1161
|
+
},
|
|
1162
|
+
lockIcon: true
|
|
1163
|
+
});
|
|
870
1164
|
}
|
|
871
1165
|
},
|
|
872
1166
|
async registerTrads({ locales }) {
|
|
873
1167
|
const importedTrads = await Promise.all(
|
|
874
1168
|
locales.map((locale) => {
|
|
875
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-
|
|
1169
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-bpHsnU0n.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
|
|
876
1170
|
return {
|
|
877
1171
|
data: prefixPluginTranslations(data, "content-releases"),
|
|
878
1172
|
locale
|
|
@@ -891,19 +1185,20 @@ const admin = {
|
|
|
891
1185
|
export {
|
|
892
1186
|
PERMISSIONS as P,
|
|
893
1187
|
ReleaseActionOptions as R,
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
1188
|
+
useCreateReleaseMutation as a,
|
|
1189
|
+
useGetReleaseQuery as b,
|
|
1190
|
+
useUpdateReleaseMutation as c,
|
|
1191
|
+
useDeleteReleaseMutation as d,
|
|
1192
|
+
usePublishReleaseMutation as e,
|
|
1193
|
+
useTypedDispatch as f,
|
|
1194
|
+
getTimezoneOffset as g,
|
|
1195
|
+
useGetReleaseActionsQuery as h,
|
|
902
1196
|
isAxiosError as i,
|
|
903
|
-
|
|
904
|
-
|
|
1197
|
+
useUpdateReleaseActionMutation as j,
|
|
1198
|
+
ReleaseActionMenu as k,
|
|
1199
|
+
admin as l,
|
|
905
1200
|
pluginId as p,
|
|
906
1201
|
releaseApi as r,
|
|
907
|
-
|
|
1202
|
+
useGetReleasesQuery as u
|
|
908
1203
|
};
|
|
909
|
-
//# sourceMappingURL=index-
|
|
1204
|
+
//# sourceMappingURL=index-_wu9g0yG.mjs.map
|