@strapi/content-releases 0.0.0-experimental.cae3a5a17d131a6f59673b62d01cfac869ea9cc2 → 0.0.0-experimental.d362bf200f5f9359a4bbd4a549603de5ee1f04ca
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-1LckaIGY.js +1352 -0
- package/dist/_chunks/App-1LckaIGY.js.map +1 -0
- package/dist/_chunks/App-X01LBg5V.mjs +1329 -0
- package/dist/_chunks/App-X01LBg5V.mjs.map +1 -0
- package/dist/_chunks/PurchaseContentReleases-Clm0iACO.mjs +51 -0
- package/dist/_chunks/PurchaseContentReleases-Clm0iACO.mjs.map +1 -0
- package/dist/_chunks/PurchaseContentReleases-YhAPgpG9.js +51 -0
- package/dist/_chunks/PurchaseContentReleases-YhAPgpG9.js.map +1 -0
- package/dist/_chunks/{en-SOqjCdyh.mjs → en-RdapH-9X.mjs} +18 -7
- package/dist/_chunks/en-RdapH-9X.mjs.map +1 -0
- package/dist/_chunks/{en-2DuPv5k0.js → en-faJDuv3q.js} +18 -7
- package/dist/_chunks/en-faJDuv3q.js.map +1 -0
- package/dist/_chunks/{index-bsuc8ZwZ.mjs → index-OD9AlD-6.mjs} +233 -107
- package/dist/_chunks/index-OD9AlD-6.mjs.map +1 -0
- package/dist/_chunks/{index-_lT-gI3M.js → index-cYWov2wa.js} +226 -100
- package/dist/_chunks/index-cYWov2wa.js.map +1 -0
- package/dist/admin/index.js +1 -15
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -15
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/CMReleasesContainer.d.ts +1 -0
- package/dist/admin/src/components/RelativeTime.d.ts +28 -0
- package/dist/admin/src/components/ReleaseActionMenu.d.ts +26 -0
- package/dist/admin/src/components/ReleaseActionOptions.d.ts +9 -0
- package/dist/admin/src/components/ReleaseModal.d.ts +16 -0
- package/dist/admin/src/constants.d.ts +58 -0
- package/dist/admin/src/index.d.ts +3 -0
- package/dist/admin/src/pages/App.d.ts +1 -0
- package/dist/admin/src/pages/PurchaseContentReleases.d.ts +2 -0
- package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +2 -0
- package/dist/admin/src/pages/ReleasesPage.d.ts +8 -0
- package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +181 -0
- package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +39 -0
- package/dist/admin/src/pluginId.d.ts +1 -0
- package/dist/admin/src/services/axios.d.ts +29 -0
- package/dist/admin/src/services/release.d.ts +369 -0
- package/dist/admin/src/store/hooks.d.ts +7 -0
- package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
- package/dist/admin/src/utils/time.d.ts +1 -0
- package/dist/server/index.js +1014 -417
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +1014 -417
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts +5 -0
- package/dist/server/src/bootstrap.d.ts.map +1 -0
- package/dist/server/src/constants.d.ts +12 -0
- package/dist/server/src/constants.d.ts.map +1 -0
- package/dist/server/src/content-types/index.d.ts +99 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -0
- package/dist/server/src/content-types/release/index.d.ts +48 -0
- package/dist/server/src/content-types/release/index.d.ts.map +1 -0
- package/dist/server/src/content-types/release/schema.d.ts +47 -0
- package/dist/server/src/content-types/release/schema.d.ts.map +1 -0
- package/dist/server/src/content-types/release-action/index.d.ts +50 -0
- package/dist/server/src/content-types/release-action/index.d.ts.map +1 -0
- package/dist/server/src/content-types/release-action/schema.d.ts +49 -0
- package/dist/server/src/content-types/release-action/schema.d.ts.map +1 -0
- package/dist/server/src/controllers/index.d.ts +19 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -0
- package/dist/server/src/controllers/release-action.d.ts +10 -0
- package/dist/server/src/controllers/release-action.d.ts.map +1 -0
- package/dist/server/src/controllers/release.d.ts +11 -0
- package/dist/server/src/controllers/release.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/release-action.d.ts +8 -0
- package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/release.d.ts +2 -0
- package/dist/server/src/controllers/validation/release.d.ts.map +1 -0
- package/dist/server/src/destroy.d.ts +5 -0
- package/dist/server/src/destroy.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +2095 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/migrations/index.d.ts +13 -0
- package/dist/server/src/migrations/index.d.ts.map +1 -0
- package/dist/server/src/register.d.ts +5 -0
- package/dist/server/src/register.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts +35 -0
- package/dist/server/src/routes/index.d.ts.map +1 -0
- package/dist/server/src/routes/release-action.d.ts +18 -0
- package/dist/server/src/routes/release-action.d.ts.map +1 -0
- package/dist/server/src/routes/release.d.ts +18 -0
- package/dist/server/src/routes/release.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +1826 -0
- package/dist/server/src/services/index.d.ts.map +1 -0
- package/dist/server/src/services/release.d.ts +66 -0
- package/dist/server/src/services/release.d.ts.map +1 -0
- package/dist/server/src/services/scheduling.d.ts +18 -0
- package/dist/server/src/services/scheduling.d.ts.map +1 -0
- package/dist/server/src/services/validation.d.ts +18 -0
- package/dist/server/src/services/validation.d.ts.map +1 -0
- package/dist/server/src/utils/index.d.ts +14 -0
- package/dist/server/src/utils/index.d.ts.map +1 -0
- package/dist/shared/contracts/release-actions.d.ts +131 -0
- package/dist/shared/contracts/release-actions.d.ts.map +1 -0
- package/dist/shared/contracts/releases.d.ts +166 -0
- package/dist/shared/contracts/releases.d.ts.map +1 -0
- package/dist/shared/types.d.ts +24 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/validation-schemas.d.ts +2 -0
- package/dist/shared/validation-schemas.d.ts.map +1 -0
- package/package.json +25 -29
- package/dist/_chunks/App-_Jj3tWts.mjs +0 -1053
- package/dist/_chunks/App-_Jj3tWts.mjs.map +0 -1
- package/dist/_chunks/App-iqqoPnBO.js +0 -1075
- package/dist/_chunks/App-iqqoPnBO.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-_lT-gI3M.js.map +0 -1
- package/dist/_chunks/index-bsuc8ZwZ.mjs.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const helperPlugin = require("@strapi/helper-plugin");
|
|
3
2
|
const icons = require("@strapi/icons");
|
|
4
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
5
4
|
const React = require("react");
|
|
6
5
|
const query = require("@reduxjs/toolkit/query");
|
|
6
|
+
const strapiAdmin = require("@strapi/admin/strapi-admin");
|
|
7
7
|
const designSystem = require("@strapi/design-system");
|
|
8
8
|
const v2 = require("@strapi/design-system/v2");
|
|
9
9
|
const axios = require("axios");
|
|
@@ -13,7 +13,6 @@ const reactRouterDom = require("react-router-dom");
|
|
|
13
13
|
const yup = require("yup");
|
|
14
14
|
const react = require("@reduxjs/toolkit/query/react");
|
|
15
15
|
const styled = require("styled-components");
|
|
16
|
-
const reactRedux = require("react-redux");
|
|
17
16
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
18
17
|
function _interopNamespace(e) {
|
|
19
18
|
if (e && e.__esModule)
|
|
@@ -125,7 +124,7 @@ const axiosBaseQuery = async ({
|
|
|
125
124
|
config
|
|
126
125
|
}) => {
|
|
127
126
|
try {
|
|
128
|
-
const { get, post, del, put } =
|
|
127
|
+
const { get, post, del, put } = strapiAdmin.getFetchClient();
|
|
129
128
|
if (method === "POST") {
|
|
130
129
|
const result2 = await post(url, data, config);
|
|
131
130
|
return { data: result2.data };
|
|
@@ -311,8 +310,9 @@ const releaseApi = react.createApi({
|
|
|
311
310
|
method: "DELETE"
|
|
312
311
|
};
|
|
313
312
|
},
|
|
314
|
-
invalidatesTags: [
|
|
313
|
+
invalidatesTags: (result, error, arg) => [
|
|
315
314
|
{ type: "Release", id: "LIST" },
|
|
315
|
+
{ type: "Release", id: arg.params.releaseId },
|
|
316
316
|
{ type: "ReleaseAction", id: "LIST" }
|
|
317
317
|
]
|
|
318
318
|
}),
|
|
@@ -332,7 +332,7 @@ const releaseApi = react.createApi({
|
|
|
332
332
|
method: "DELETE"
|
|
333
333
|
};
|
|
334
334
|
},
|
|
335
|
-
invalidatesTags: (
|
|
335
|
+
invalidatesTags: () => [{ type: "Release", id: "LIST" }]
|
|
336
336
|
})
|
|
337
337
|
};
|
|
338
338
|
}
|
|
@@ -350,8 +350,22 @@ const {
|
|
|
350
350
|
useDeleteReleaseActionMutation,
|
|
351
351
|
useDeleteReleaseMutation
|
|
352
352
|
} = releaseApi;
|
|
353
|
-
const
|
|
354
|
-
|
|
353
|
+
const getTimezoneOffset = (timezone, date) => {
|
|
354
|
+
try {
|
|
355
|
+
const offsetPart = new Intl.DateTimeFormat("en", {
|
|
356
|
+
timeZone: timezone,
|
|
357
|
+
timeZoneName: "longOffset"
|
|
358
|
+
}).formatToParts(date).find((part) => part.type === "timeZoneName");
|
|
359
|
+
const offset = offsetPart ? offsetPart.value : "";
|
|
360
|
+
let utcOffset = offset.replace("GMT", "UTC");
|
|
361
|
+
if (!utcOffset.includes("+") && !utcOffset.includes("-")) {
|
|
362
|
+
utcOffset = `${utcOffset}+00:00`;
|
|
363
|
+
}
|
|
364
|
+
return utcOffset;
|
|
365
|
+
} catch (error) {
|
|
366
|
+
return "";
|
|
367
|
+
}
|
|
368
|
+
};
|
|
355
369
|
const StyledMenuItem = styled__default.default(v2.Menu.Item)`
|
|
356
370
|
&:hover {
|
|
357
371
|
background: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}100`]};
|
|
@@ -388,9 +402,12 @@ const StyledIconButton = styled__default.default(designSystem.IconButton)`
|
|
|
388
402
|
`;
|
|
389
403
|
const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
390
404
|
const { formatMessage } = reactIntl.useIntl();
|
|
391
|
-
const toggleNotification =
|
|
392
|
-
const { formatAPIError } =
|
|
405
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
406
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
393
407
|
const [deleteReleaseAction] = useDeleteReleaseActionMutation();
|
|
408
|
+
const {
|
|
409
|
+
allowedActions: { canDeleteAction }
|
|
410
|
+
} = strapiAdmin.useRBAC(PERMISSIONS);
|
|
394
411
|
const handleDeleteAction = async () => {
|
|
395
412
|
const response = await deleteReleaseAction({
|
|
396
413
|
params: { releaseId, actionId }
|
|
@@ -408,24 +425,27 @@ const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
|
408
425
|
if ("error" in response) {
|
|
409
426
|
if (axios.isAxiosError(response.error)) {
|
|
410
427
|
toggleNotification({
|
|
411
|
-
type: "
|
|
428
|
+
type: "danger",
|
|
412
429
|
message: formatAPIError(response.error)
|
|
413
430
|
});
|
|
414
431
|
} else {
|
|
415
432
|
toggleNotification({
|
|
416
|
-
type: "
|
|
433
|
+
type: "danger",
|
|
417
434
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
418
435
|
});
|
|
419
436
|
}
|
|
420
437
|
}
|
|
421
438
|
};
|
|
422
|
-
|
|
423
|
-
|
|
439
|
+
if (!canDeleteAction) {
|
|
440
|
+
return null;
|
|
441
|
+
}
|
|
442
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { variant: "danger", onSelect: handleDeleteAction, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
443
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Cross, width: 3, height: 3 }),
|
|
424
444
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "danger600", variant: "omega", children: formatMessage({
|
|
425
445
|
id: "content-releases.content-manager-edit-view.remove-from-release",
|
|
426
446
|
defaultMessage: "Remove from release"
|
|
427
447
|
}) })
|
|
428
|
-
] }) })
|
|
448
|
+
] }) });
|
|
429
449
|
};
|
|
430
450
|
const ReleaseActionEntryLinkItem = ({
|
|
431
451
|
contentTypeUid,
|
|
@@ -433,47 +453,66 @@ const ReleaseActionEntryLinkItem = ({
|
|
|
433
453
|
locale
|
|
434
454
|
}) => {
|
|
435
455
|
const { formatMessage } = reactIntl.useIntl();
|
|
436
|
-
const
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
!
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
456
|
+
const userPermissions = strapiAdmin.useAuth("ReleaseActionEntryLinkItem", (state) => state.permissions);
|
|
457
|
+
const canUpdateEntryForLocale = React__namespace.useMemo(() => {
|
|
458
|
+
const updatePermissions = userPermissions.find(
|
|
459
|
+
(permission) => permission.subject === contentTypeUid && permission.action === "plugin::content-manager.explorer.update"
|
|
460
|
+
);
|
|
461
|
+
if (!updatePermissions) {
|
|
462
|
+
return false;
|
|
463
|
+
}
|
|
464
|
+
return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));
|
|
465
|
+
}, [contentTypeUid, locale, userPermissions]);
|
|
466
|
+
const {
|
|
467
|
+
allowedActions: { canUpdateContentType }
|
|
468
|
+
} = strapiAdmin.useRBAC({
|
|
469
|
+
updateContentType: [
|
|
470
|
+
{
|
|
471
|
+
action: "plugin::content-manager.explorer.update",
|
|
472
|
+
subject: contentTypeUid
|
|
473
|
+
}
|
|
474
|
+
]
|
|
475
|
+
});
|
|
476
|
+
if (!canUpdateContentType || !canUpdateEntryForLocale) {
|
|
477
|
+
return null;
|
|
478
|
+
}
|
|
479
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
480
|
+
v2.Link,
|
|
447
481
|
{
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
children:
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
to: {
|
|
459
|
-
pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
|
|
460
|
-
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
461
|
-
},
|
|
462
|
-
startIcon: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Pencil, padding: 1 }),
|
|
463
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
464
|
-
id: "content-releases.content-manager-edit-view.edit-entry",
|
|
465
|
-
defaultMessage: "Edit entry"
|
|
466
|
-
}) })
|
|
467
|
-
}
|
|
468
|
-
) })
|
|
482
|
+
as: reactRouterDom.NavLink,
|
|
483
|
+
to: {
|
|
484
|
+
pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
|
|
485
|
+
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
486
|
+
},
|
|
487
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Pencil, width: 3, height: 3 }),
|
|
488
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
489
|
+
id: "content-releases.content-manager-edit-view.edit-entry",
|
|
490
|
+
defaultMessage: "Edit entry"
|
|
491
|
+
}) })
|
|
469
492
|
}
|
|
470
|
-
);
|
|
493
|
+
) });
|
|
494
|
+
};
|
|
495
|
+
const EditReleaseItem = ({ releaseId }) => {
|
|
496
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
497
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
498
|
+
v2.Link,
|
|
499
|
+
{
|
|
500
|
+
href: `/admin/plugins/content-releases/${releaseId}`,
|
|
501
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Pencil, width: 3, height: 3 }),
|
|
502
|
+
isExternal: false,
|
|
503
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
504
|
+
id: "content-releases.content-manager-edit-view.edit-release",
|
|
505
|
+
defaultMessage: "Edit release"
|
|
506
|
+
}) })
|
|
507
|
+
}
|
|
508
|
+
) });
|
|
471
509
|
};
|
|
472
510
|
const Root = ({ children, hasTriggerBorder = false }) => {
|
|
473
511
|
const { formatMessage } = reactIntl.useIntl();
|
|
512
|
+
const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
|
|
474
513
|
return (
|
|
475
514
|
// A user can access the dropdown if they have permissions to delete a release-action OR update a release
|
|
476
|
-
|
|
515
|
+
allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxRuntime.jsxs(v2.Menu.Root, { children: [
|
|
477
516
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
478
517
|
v2.Menu.Trigger,
|
|
479
518
|
{
|
|
@@ -488,11 +527,12 @@ const Root = ({ children, hasTriggerBorder = false }) => {
|
|
|
488
527
|
}
|
|
489
528
|
),
|
|
490
529
|
/* @__PURE__ */ jsxRuntime.jsx(v2.Menu.Content, { top: 1, popoverPlacement: "bottom-end", children })
|
|
491
|
-
] })
|
|
530
|
+
] }) : null
|
|
492
531
|
);
|
|
493
532
|
};
|
|
494
533
|
const ReleaseActionMenu = {
|
|
495
534
|
Root,
|
|
535
|
+
EditReleaseItem,
|
|
496
536
|
DeleteReleaseActionItem,
|
|
497
537
|
ReleaseActionEntryLinkItem
|
|
498
538
|
};
|
|
@@ -516,19 +556,40 @@ const FieldWrapper = styled__default.default(designSystem.Field)`
|
|
|
516
556
|
text-transform: capitalize;
|
|
517
557
|
}
|
|
518
558
|
|
|
519
|
-
&:active,
|
|
520
559
|
&[data-checked='true'] {
|
|
521
|
-
color: ${({ theme }) => theme.colors.primary700};
|
|
522
|
-
background-color: ${({ theme }) => theme.colors.primary100};
|
|
523
|
-
border-color: ${({ theme }) => theme.colors.primary700};
|
|
560
|
+
color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
561
|
+
background-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary100 : theme.colors.danger100};
|
|
562
|
+
border-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
524
563
|
}
|
|
525
564
|
|
|
526
565
|
&[data-checked='false'] {
|
|
527
566
|
border-left: ${({ actionType }) => actionType === "unpublish" && "none"};
|
|
528
567
|
border-right: ${({ actionType }) => actionType === "publish" && "none"};
|
|
529
568
|
}
|
|
569
|
+
|
|
570
|
+
&[data-checked='false'][data-disabled='false']:hover {
|
|
571
|
+
color: ${({ theme }) => theme.colors.neutral700};
|
|
572
|
+
background-color: ${({ theme }) => theme.colors.neutral100};
|
|
573
|
+
border-color: ${({ theme }) => theme.colors.neutral200};
|
|
574
|
+
|
|
575
|
+
& > label {
|
|
576
|
+
cursor: pointer;
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
&[data-disabled='true'] {
|
|
581
|
+
color: ${({ theme }) => theme.colors.neutral600};
|
|
582
|
+
background-color: ${({ theme }) => theme.colors.neutral150};
|
|
583
|
+
border-color: ${({ theme }) => theme.colors.neutral300};
|
|
584
|
+
}
|
|
530
585
|
`;
|
|
531
|
-
const ActionOption = ({
|
|
586
|
+
const ActionOption = ({
|
|
587
|
+
selected,
|
|
588
|
+
actionType,
|
|
589
|
+
handleChange,
|
|
590
|
+
name,
|
|
591
|
+
disabled = false
|
|
592
|
+
}) => {
|
|
532
593
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
533
594
|
FieldWrapper,
|
|
534
595
|
{
|
|
@@ -539,6 +600,7 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
539
600
|
position: "relative",
|
|
540
601
|
cursor: "pointer",
|
|
541
602
|
"data-checked": selected === actionType,
|
|
603
|
+
"data-disabled": disabled && selected !== actionType,
|
|
542
604
|
children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.FieldLabel, { htmlFor: `${name}-${actionType}`, children: [
|
|
543
605
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
544
606
|
designSystem.FieldInput,
|
|
@@ -548,7 +610,8 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
548
610
|
name,
|
|
549
611
|
checked: selected === actionType,
|
|
550
612
|
onChange: handleChange,
|
|
551
|
-
value: actionType
|
|
613
|
+
value: actionType,
|
|
614
|
+
disabled
|
|
552
615
|
}
|
|
553
616
|
) }),
|
|
554
617
|
actionType
|
|
@@ -556,7 +619,12 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
556
619
|
}
|
|
557
620
|
);
|
|
558
621
|
};
|
|
559
|
-
const ReleaseActionOptions = ({
|
|
622
|
+
const ReleaseActionOptions = ({
|
|
623
|
+
selected,
|
|
624
|
+
handleChange,
|
|
625
|
+
name,
|
|
626
|
+
disabled = false
|
|
627
|
+
}) => {
|
|
560
628
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { children: [
|
|
561
629
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
562
630
|
ActionOption,
|
|
@@ -564,7 +632,8 @@ const ReleaseActionOptions = ({ selected, handleChange, name }) => {
|
|
|
564
632
|
actionType: "publish",
|
|
565
633
|
selected,
|
|
566
634
|
handleChange,
|
|
567
|
-
name
|
|
635
|
+
name,
|
|
636
|
+
disabled
|
|
568
637
|
}
|
|
569
638
|
),
|
|
570
639
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -573,7 +642,8 @@ const ReleaseActionOptions = ({ selected, handleChange, name }) => {
|
|
|
573
642
|
actionType: "unpublish",
|
|
574
643
|
selected,
|
|
575
644
|
handleChange,
|
|
576
|
-
name
|
|
645
|
+
name,
|
|
646
|
+
disabled
|
|
577
647
|
}
|
|
578
648
|
)
|
|
579
649
|
] });
|
|
@@ -589,12 +659,13 @@ const INITIAL_VALUES = {
|
|
|
589
659
|
const NoReleases = () => {
|
|
590
660
|
const { formatMessage } = reactIntl.useIntl();
|
|
591
661
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
592
|
-
|
|
662
|
+
designSystem.EmptyStateLayout,
|
|
593
663
|
{
|
|
594
|
-
|
|
664
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.EmptyDocuments, { width: "10rem" }),
|
|
665
|
+
content: formatMessage({
|
|
595
666
|
id: "content-releases.content-manager-edit-view.add-to-release.no-releases-message",
|
|
596
667
|
defaultMessage: "No available releases. Open the list of releases and create a new one from there."
|
|
597
|
-
},
|
|
668
|
+
}),
|
|
598
669
|
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
599
670
|
v2.LinkButton,
|
|
600
671
|
{
|
|
@@ -617,10 +688,12 @@ const AddActionToReleaseModal = ({
|
|
|
617
688
|
contentTypeUid,
|
|
618
689
|
entryId
|
|
619
690
|
}) => {
|
|
691
|
+
const releaseHeaderId = React__namespace.useId();
|
|
620
692
|
const { formatMessage } = reactIntl.useIntl();
|
|
621
|
-
const toggleNotification =
|
|
622
|
-
const { formatAPIError } =
|
|
623
|
-
const {
|
|
693
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
694
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
695
|
+
const [{ query: query2 }] = strapiAdmin.useQueryParams();
|
|
696
|
+
const locale = query2.plugins?.i18n?.locale;
|
|
624
697
|
const response = useGetReleasesForEntryQuery({
|
|
625
698
|
contentTypeUid,
|
|
626
699
|
entryId,
|
|
@@ -629,7 +702,6 @@ const AddActionToReleaseModal = ({
|
|
|
629
702
|
const releases = response.data?.data;
|
|
630
703
|
const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();
|
|
631
704
|
const handleSubmit = async (values) => {
|
|
632
|
-
const locale = modifiedData.locale;
|
|
633
705
|
const releaseActionEntry = {
|
|
634
706
|
contentType: contentTypeUid,
|
|
635
707
|
id: entryId,
|
|
@@ -653,19 +725,19 @@ const AddActionToReleaseModal = ({
|
|
|
653
725
|
if ("error" in response2) {
|
|
654
726
|
if (axios.isAxiosError(response2.error)) {
|
|
655
727
|
toggleNotification({
|
|
656
|
-
type: "
|
|
728
|
+
type: "danger",
|
|
657
729
|
message: formatAPIError(response2.error)
|
|
658
730
|
});
|
|
659
731
|
} else {
|
|
660
732
|
toggleNotification({
|
|
661
|
-
type: "
|
|
733
|
+
type: "danger",
|
|
662
734
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
663
735
|
});
|
|
664
736
|
}
|
|
665
737
|
}
|
|
666
738
|
};
|
|
667
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.ModalLayout, { onClose: handleClose, labelledBy:
|
|
668
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { id:
|
|
739
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.ModalLayout, { onClose: handleClose, labelledBy: releaseHeaderId, children: [
|
|
740
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { id: releaseHeaderId, fontWeight: "bold", textColor: "neutral800", children: formatMessage({
|
|
669
741
|
id: "content-releases.content-manager-edit-view.add-to-release",
|
|
670
742
|
defaultMessage: "Add to release"
|
|
671
743
|
}) }) }),
|
|
@@ -735,16 +807,22 @@ const AddActionToReleaseModal = ({
|
|
|
735
807
|
};
|
|
736
808
|
const CMReleasesContainer = () => {
|
|
737
809
|
const [isModalOpen, setIsModalOpen] = React__namespace.useState(false);
|
|
738
|
-
const { formatMessage } = reactIntl.useIntl();
|
|
810
|
+
const { formatMessage, formatDate, formatTime } = reactIntl.useIntl();
|
|
811
|
+
const { id, slug, collectionType } = reactRouterDom.useParams();
|
|
812
|
+
const isCreatingEntry = id === "create";
|
|
739
813
|
const {
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
} =
|
|
743
|
-
|
|
744
|
-
|
|
814
|
+
allowedActions: { canCreateAction, canMain, canDeleteAction }
|
|
815
|
+
} = strapiAdmin.useRBAC(PERMISSIONS);
|
|
816
|
+
const { schema } = strapiAdmin.unstable_useDocument({
|
|
817
|
+
collectionType,
|
|
818
|
+
model: slug
|
|
819
|
+
});
|
|
820
|
+
const hasDraftAndPublish = schema?.options?.draftAndPublish;
|
|
821
|
+
const contentTypeUid = slug;
|
|
822
|
+
const canFetch = id != null && contentTypeUid != null;
|
|
745
823
|
const fetchParams = canFetch ? {
|
|
746
|
-
contentTypeUid
|
|
747
|
-
entryId:
|
|
824
|
+
contentTypeUid,
|
|
825
|
+
entryId: id,
|
|
748
826
|
hasEntryAttached: true
|
|
749
827
|
} : query.skipToken;
|
|
750
828
|
const response = useGetReleasesForEntryQuery(fetchParams);
|
|
@@ -752,7 +830,7 @@ const CMReleasesContainer = () => {
|
|
|
752
830
|
if (!canFetch) {
|
|
753
831
|
return null;
|
|
754
832
|
}
|
|
755
|
-
if (isCreatingEntry || !
|
|
833
|
+
if (isCreatingEntry || !hasDraftAndPublish) {
|
|
756
834
|
return null;
|
|
757
835
|
}
|
|
758
836
|
const toggleModal = () => setIsModalOpen((prev) => !prev);
|
|
@@ -762,7 +840,10 @@ const CMReleasesContainer = () => {
|
|
|
762
840
|
}
|
|
763
841
|
return `success${shade}`;
|
|
764
842
|
};
|
|
765
|
-
|
|
843
|
+
if (!canMain) {
|
|
844
|
+
return null;
|
|
845
|
+
}
|
|
846
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
766
847
|
designSystem.Box,
|
|
767
848
|
{
|
|
768
849
|
as: "aside",
|
|
@@ -819,22 +900,47 @@ const CMReleasesContainer = () => {
|
|
|
819
900
|
)
|
|
820
901
|
}
|
|
821
902
|
),
|
|
822
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap:
|
|
903
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
|
|
823
904
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontSize: 2, fontWeight: "bold", variant: "omega", textColor: "neutral700", children: release.name }),
|
|
824
|
-
|
|
825
|
-
ReleaseActionMenu.DeleteReleaseActionItem,
|
|
905
|
+
release.scheduledAt && release.timezone && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: formatMessage(
|
|
826
906
|
{
|
|
827
|
-
|
|
828
|
-
|
|
907
|
+
id: "content-releases.content-manager-edit-view.scheduled.date",
|
|
908
|
+
defaultMessage: "{date} at {time} ({offset})"
|
|
909
|
+
},
|
|
910
|
+
{
|
|
911
|
+
date: formatDate(new Date(release.scheduledAt), {
|
|
912
|
+
day: "2-digit",
|
|
913
|
+
month: "2-digit",
|
|
914
|
+
year: "numeric",
|
|
915
|
+
timeZone: release.timezone
|
|
916
|
+
}),
|
|
917
|
+
time: formatTime(new Date(release.scheduledAt), {
|
|
918
|
+
hourCycle: "h23",
|
|
919
|
+
timeZone: release.timezone
|
|
920
|
+
}),
|
|
921
|
+
offset: getTimezoneOffset(
|
|
922
|
+
release.timezone,
|
|
923
|
+
new Date(release.scheduledAt)
|
|
924
|
+
)
|
|
829
925
|
}
|
|
830
|
-
) })
|
|
831
|
-
|
|
926
|
+
) }),
|
|
927
|
+
canDeleteAction ? /* @__PURE__ */ jsxRuntime.jsxs(ReleaseActionMenu.Root, { hasTriggerBorder: true, children: [
|
|
928
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReleaseActionMenu.EditReleaseItem, { releaseId: release.id }),
|
|
929
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
930
|
+
ReleaseActionMenu.DeleteReleaseActionItem,
|
|
931
|
+
{
|
|
932
|
+
releaseId: release.id,
|
|
933
|
+
actionId: release.action.id
|
|
934
|
+
}
|
|
935
|
+
)
|
|
936
|
+
] }) : null
|
|
937
|
+
] }) })
|
|
832
938
|
]
|
|
833
939
|
},
|
|
834
940
|
release.id
|
|
835
941
|
);
|
|
836
942
|
}),
|
|
837
|
-
|
|
943
|
+
canCreateAction ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
838
944
|
designSystem.Button,
|
|
839
945
|
{
|
|
840
946
|
justifyContent: "center",
|
|
@@ -849,35 +955,41 @@ const CMReleasesContainer = () => {
|
|
|
849
955
|
defaultMessage: "Add to release"
|
|
850
956
|
})
|
|
851
957
|
}
|
|
852
|
-
)
|
|
958
|
+
) : null
|
|
853
959
|
] }),
|
|
854
960
|
isModalOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
855
961
|
AddActionToReleaseModal,
|
|
856
962
|
{
|
|
857
963
|
handleClose: toggleModal,
|
|
858
|
-
contentTypeUid
|
|
859
|
-
entryId:
|
|
964
|
+
contentTypeUid,
|
|
965
|
+
entryId: id
|
|
860
966
|
}
|
|
861
967
|
)
|
|
862
968
|
]
|
|
863
969
|
}
|
|
864
|
-
)
|
|
970
|
+
);
|
|
971
|
+
};
|
|
972
|
+
const prefixPluginTranslations = (trad, pluginId2) => {
|
|
973
|
+
if (!pluginId2) {
|
|
974
|
+
throw new TypeError("pluginId can't be empty");
|
|
975
|
+
}
|
|
976
|
+
return Object.keys(trad).reduce((acc, current) => {
|
|
977
|
+
acc[`${pluginId2}.${current}`] = trad[current];
|
|
978
|
+
return acc;
|
|
979
|
+
}, {});
|
|
865
980
|
};
|
|
866
981
|
const admin = {
|
|
867
982
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
868
983
|
register(app) {
|
|
869
984
|
if (window.strapi.features.isEnabled("cms-content-releases")) {
|
|
870
985
|
app.addMenuLink({
|
|
871
|
-
to:
|
|
986
|
+
to: `plugins/${pluginId}`,
|
|
872
987
|
icon: icons.PaperPlane,
|
|
873
988
|
intlLabel: {
|
|
874
989
|
id: `${pluginId}.plugin.name`,
|
|
875
990
|
defaultMessage: "Releases"
|
|
876
991
|
},
|
|
877
|
-
|
|
878
|
-
const { App } = await Promise.resolve().then(() => require("./App-iqqoPnBO.js"));
|
|
879
|
-
return App;
|
|
880
|
-
},
|
|
992
|
+
Component: () => Promise.resolve().then(() => require("./App-1LckaIGY.js")).then((mod) => ({ default: mod.App })),
|
|
881
993
|
permissions: PERMISSIONS.main
|
|
882
994
|
});
|
|
883
995
|
app.addMiddlewares([() => releaseApi.middleware]);
|
|
@@ -888,14 +1000,28 @@ const admin = {
|
|
|
888
1000
|
name: `${pluginId}-link`,
|
|
889
1001
|
Component: CMReleasesContainer
|
|
890
1002
|
});
|
|
1003
|
+
} else if (!window.strapi.features.isEnabled("cms-content-releases") && window.strapi?.flags?.promoteEE) {
|
|
1004
|
+
app.addMenuLink({
|
|
1005
|
+
to: `/plugins/purchase-content-releases`,
|
|
1006
|
+
icon: icons.PaperPlane,
|
|
1007
|
+
intlLabel: {
|
|
1008
|
+
id: `${pluginId}.plugin.name`,
|
|
1009
|
+
defaultMessage: "Releases"
|
|
1010
|
+
},
|
|
1011
|
+
async Component() {
|
|
1012
|
+
const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases-YhAPgpG9.js"));
|
|
1013
|
+
return PurchaseContentReleases;
|
|
1014
|
+
},
|
|
1015
|
+
lockIcon: true
|
|
1016
|
+
});
|
|
891
1017
|
}
|
|
892
1018
|
},
|
|
893
1019
|
async registerTrads({ locales }) {
|
|
894
1020
|
const importedTrads = await Promise.all(
|
|
895
1021
|
locales.map((locale) => {
|
|
896
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-
|
|
1022
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-faJDuv3q.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
|
|
897
1023
|
return {
|
|
898
|
-
data:
|
|
1024
|
+
data: prefixPluginTranslations(data, "content-releases"),
|
|
899
1025
|
locale
|
|
900
1026
|
};
|
|
901
1027
|
}).catch(() => {
|
|
@@ -913,6 +1039,7 @@ exports.PERMISSIONS = PERMISSIONS;
|
|
|
913
1039
|
exports.ReleaseActionMenu = ReleaseActionMenu;
|
|
914
1040
|
exports.ReleaseActionOptions = ReleaseActionOptions;
|
|
915
1041
|
exports.admin = admin;
|
|
1042
|
+
exports.getTimezoneOffset = getTimezoneOffset;
|
|
916
1043
|
exports.isAxiosError = isAxiosError;
|
|
917
1044
|
exports.pluginId = pluginId;
|
|
918
1045
|
exports.releaseApi = releaseApi;
|
|
@@ -922,7 +1049,6 @@ exports.useGetReleaseActionsQuery = useGetReleaseActionsQuery;
|
|
|
922
1049
|
exports.useGetReleaseQuery = useGetReleaseQuery;
|
|
923
1050
|
exports.useGetReleasesQuery = useGetReleasesQuery;
|
|
924
1051
|
exports.usePublishReleaseMutation = usePublishReleaseMutation;
|
|
925
|
-
exports.useTypedDispatch = useTypedDispatch;
|
|
926
1052
|
exports.useUpdateReleaseActionMutation = useUpdateReleaseActionMutation;
|
|
927
1053
|
exports.useUpdateReleaseMutation = useUpdateReleaseMutation;
|
|
928
|
-
//# sourceMappingURL=index-
|
|
1054
|
+
//# sourceMappingURL=index-cYWov2wa.js.map
|