@strapi/content-releases 0.0.0-experimental.e1ede8c55a0e1e22ce20137bf238fc374bd5dd51 → 0.0.0-experimental.e3e48deb89bd0a1b6cc69b698696566fa7854a95
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-PQlYzNfb.mjs +1337 -0
- package/dist/_chunks/App-PQlYzNfb.mjs.map +1 -0
- package/dist/_chunks/App-lzeJz92X.js +1360 -0
- package/dist/_chunks/App-lzeJz92X.js.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-ngTk74JV.mjs → en-WuuhP6Bn.mjs} +22 -6
- package/dist/_chunks/en-WuuhP6Bn.mjs.map +1 -0
- package/dist/_chunks/{en-haKSQIo8.js → en-gcJJ5htG.js} +22 -6
- package/dist/_chunks/en-gcJJ5htG.js.map +1 -0
- package/dist/_chunks/{index-XAQOX_IB.mjs → index--4AgLDzb.mjs} +262 -83
- package/dist/_chunks/index--4AgLDzb.mjs.map +1 -0
- package/dist/_chunks/{index-EdBmRHRU.js → index-Nf1JfI-m.js} +246 -67
- package/dist/_chunks/index-Nf1JfI-m.js.map +1 -0
- package/dist/admin/index.js +2 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +3 -2
- 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/time.d.ts +1 -0
- package/dist/server/index.js +999 -309
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +999 -310
- 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 +18 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -0
- package/dist/server/src/controllers/release-action.d.ts +9 -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 +3 -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 +2092 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/migrations/index.d.ts +10 -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 +14 -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 +105 -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 +19 -22
- package/dist/_chunks/App-g2P5kbSm.mjs +0 -945
- package/dist/_chunks/App-g2P5kbSm.mjs.map +0 -1
- package/dist/_chunks/App-o5_WfqR-.js +0 -967
- package/dist/_chunks/App-o5_WfqR-.js.map +0 -1
- package/dist/_chunks/en-haKSQIo8.js.map +0 -1
- package/dist/_chunks/en-ngTk74JV.mjs.map +0 -1
- package/dist/_chunks/index-EdBmRHRU.js.map +0 -1
- package/dist/_chunks/index-XAQOX_IB.mjs.map +0 -1
|
@@ -13,6 +13,7 @@ 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");
|
|
16
17
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
17
18
|
function _interopNamespace(e) {
|
|
18
19
|
if (e && e.__esModule)
|
|
@@ -281,7 +282,27 @@ const releaseApi = react.createApi({
|
|
|
281
282
|
data: body
|
|
282
283
|
};
|
|
283
284
|
},
|
|
284
|
-
invalidatesTags: () => [{ type: "ReleaseAction", id: "LIST" }]
|
|
285
|
+
invalidatesTags: () => [{ type: "ReleaseAction", id: "LIST" }],
|
|
286
|
+
async onQueryStarted({ body, params, query: query2, actionPath }, { dispatch, queryFulfilled }) {
|
|
287
|
+
const paramsWithoutActionId = {
|
|
288
|
+
releaseId: params.releaseId,
|
|
289
|
+
...query2
|
|
290
|
+
};
|
|
291
|
+
const patchResult = dispatch(
|
|
292
|
+
releaseApi.util.updateQueryData("getReleaseActions", paramsWithoutActionId, (draft) => {
|
|
293
|
+
const [key, index] = actionPath;
|
|
294
|
+
const action = draft.data[key][index];
|
|
295
|
+
if (action) {
|
|
296
|
+
action.type = body.type;
|
|
297
|
+
}
|
|
298
|
+
})
|
|
299
|
+
);
|
|
300
|
+
try {
|
|
301
|
+
await queryFulfilled;
|
|
302
|
+
} catch {
|
|
303
|
+
patchResult.undo();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
285
306
|
}),
|
|
286
307
|
deleteReleaseAction: build.mutation({
|
|
287
308
|
query({ params }) {
|
|
@@ -329,37 +350,59 @@ const {
|
|
|
329
350
|
useDeleteReleaseActionMutation,
|
|
330
351
|
useDeleteReleaseMutation
|
|
331
352
|
} = releaseApi;
|
|
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
|
+
};
|
|
369
|
+
const useTypedDispatch = reactRedux.useDispatch;
|
|
370
|
+
const useTypedSelector = reactRedux.useSelector;
|
|
332
371
|
const StyledMenuItem = styled__default.default(v2.Menu.Item)`
|
|
333
372
|
&:hover {
|
|
334
|
-
background: ${({ theme }) => theme.colors
|
|
373
|
+
background: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}100`]};
|
|
374
|
+
|
|
375
|
+
svg {
|
|
376
|
+
path {
|
|
377
|
+
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
a {
|
|
382
|
+
color: ${({ theme }) => theme.colors.neutral800};
|
|
383
|
+
}
|
|
335
384
|
}
|
|
336
385
|
|
|
337
386
|
svg {
|
|
338
387
|
path {
|
|
339
|
-
fill: ${({ theme }) => theme.colors
|
|
388
|
+
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
340
389
|
}
|
|
341
390
|
}
|
|
342
391
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
392
|
+
a {
|
|
393
|
+
color: ${({ theme }) => theme.colors.neutral800};
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
span,
|
|
397
|
+
a {
|
|
398
|
+
width: 100%;
|
|
349
399
|
}
|
|
350
|
-
`;
|
|
351
|
-
const StyledCross = styled__default.default(icons.Cross)`
|
|
352
|
-
padding: ${({ theme }) => theme.spaces[1]};
|
|
353
400
|
`;
|
|
354
401
|
const StyledIconButton = styled__default.default(designSystem.IconButton)`
|
|
355
402
|
/* Setting this style inline with borderColor will not apply the style */
|
|
356
403
|
border: ${({ theme }) => `1px solid ${theme.colors.neutral200}`};
|
|
357
404
|
`;
|
|
358
|
-
const
|
|
359
|
-
releaseId,
|
|
360
|
-
actionId,
|
|
361
|
-
hasTriggerBorder = false
|
|
362
|
-
}) => {
|
|
405
|
+
const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
363
406
|
const { formatMessage } = reactIntl.useIntl();
|
|
364
407
|
const toggleNotification = helperPlugin.useNotification();
|
|
365
408
|
const { formatAPIError } = helperPlugin.useAPIErrorHandler();
|
|
@@ -392,6 +435,73 @@ const ReleaseActionMenu = ({
|
|
|
392
435
|
}
|
|
393
436
|
}
|
|
394
437
|
};
|
|
438
|
+
return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: PERMISSIONS.deleteAction, children: /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { variant: "danger", onSelect: handleDeleteAction, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
439
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Cross, width: 3, height: 3 }),
|
|
440
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "danger600", variant: "omega", children: formatMessage({
|
|
441
|
+
id: "content-releases.content-manager-edit-view.remove-from-release",
|
|
442
|
+
defaultMessage: "Remove from release"
|
|
443
|
+
}) })
|
|
444
|
+
] }) }) });
|
|
445
|
+
};
|
|
446
|
+
const ReleaseActionEntryLinkItem = ({
|
|
447
|
+
contentTypeUid,
|
|
448
|
+
entryId,
|
|
449
|
+
locale
|
|
450
|
+
}) => {
|
|
451
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
452
|
+
const collectionTypePermissions = useTypedSelector(
|
|
453
|
+
(state) => state.rbacProvider.collectionTypesRelatedPermissions
|
|
454
|
+
);
|
|
455
|
+
const updatePermissions = contentTypeUid ? collectionTypePermissions[contentTypeUid]?.["plugin::content-manager.explorer.update"] : [];
|
|
456
|
+
const canUpdateEntryForLocale = Boolean(
|
|
457
|
+
!locale || updatePermissions?.find(
|
|
458
|
+
(permission) => permission.properties?.locales?.includes(locale)
|
|
459
|
+
)
|
|
460
|
+
);
|
|
461
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
462
|
+
helperPlugin.CheckPermissions,
|
|
463
|
+
{
|
|
464
|
+
permissions: [
|
|
465
|
+
{
|
|
466
|
+
action: "plugin::content-manager.explorer.update",
|
|
467
|
+
subject: contentTypeUid
|
|
468
|
+
}
|
|
469
|
+
],
|
|
470
|
+
children: canUpdateEntryForLocale && /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
471
|
+
v2.Link,
|
|
472
|
+
{
|
|
473
|
+
as: reactRouterDom.NavLink,
|
|
474
|
+
to: {
|
|
475
|
+
pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
|
|
476
|
+
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
477
|
+
},
|
|
478
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Pencil, width: 3, height: 3 }),
|
|
479
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
480
|
+
id: "content-releases.content-manager-edit-view.edit-entry",
|
|
481
|
+
defaultMessage: "Edit entry"
|
|
482
|
+
}) })
|
|
483
|
+
}
|
|
484
|
+
) })
|
|
485
|
+
}
|
|
486
|
+
);
|
|
487
|
+
};
|
|
488
|
+
const EditReleaseItem = ({ releaseId }) => {
|
|
489
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
490
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
491
|
+
v2.Link,
|
|
492
|
+
{
|
|
493
|
+
as: reactRouterDom.NavLink,
|
|
494
|
+
to: `/plugins/content-releases/${releaseId}`,
|
|
495
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { as: icons.Pencil, width: 3, height: 3 }),
|
|
496
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
497
|
+
id: "content-releases.content-manager-edit-view.edit-release",
|
|
498
|
+
defaultMessage: "Edit release"
|
|
499
|
+
}) })
|
|
500
|
+
}
|
|
501
|
+
) });
|
|
502
|
+
};
|
|
503
|
+
const Root = ({ children, hasTriggerBorder = false }) => {
|
|
504
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
395
505
|
return (
|
|
396
506
|
// A user can access the dropdown if they have permissions to delete a release-action OR update a release
|
|
397
507
|
/* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: [...PERMISSIONS.deleteAction, ...PERMISSIONS.update], children: /* @__PURE__ */ jsxRuntime.jsxs(v2.Menu.Root, { children: [
|
|
@@ -408,16 +518,16 @@ const ReleaseActionMenu = ({
|
|
|
408
518
|
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.More, {})
|
|
409
519
|
}
|
|
410
520
|
),
|
|
411
|
-
/* @__PURE__ */ jsxRuntime.jsx(v2.Menu.Content, { top: 1, popoverPlacement: "bottom-end", children
|
|
412
|
-
/* @__PURE__ */ jsxRuntime.jsx(StyledCross, {}),
|
|
413
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "danger600", variant: "omega", children: formatMessage({
|
|
414
|
-
id: "content-releases.content-manager-edit-view.remove-from-release",
|
|
415
|
-
defaultMessage: "Remove from release"
|
|
416
|
-
}) })
|
|
417
|
-
] }) }) }) })
|
|
521
|
+
/* @__PURE__ */ jsxRuntime.jsx(v2.Menu.Content, { top: 1, popoverPlacement: "bottom-end", children })
|
|
418
522
|
] }) })
|
|
419
523
|
);
|
|
420
524
|
};
|
|
525
|
+
const ReleaseActionMenu = {
|
|
526
|
+
Root,
|
|
527
|
+
EditReleaseItem,
|
|
528
|
+
DeleteReleaseActionItem,
|
|
529
|
+
ReleaseActionEntryLinkItem
|
|
530
|
+
};
|
|
421
531
|
const getBorderLeftRadiusValue = (actionType) => {
|
|
422
532
|
return actionType === "publish" ? 1 : 0;
|
|
423
533
|
};
|
|
@@ -438,19 +548,40 @@ const FieldWrapper = styled__default.default(designSystem.Field)`
|
|
|
438
548
|
text-transform: capitalize;
|
|
439
549
|
}
|
|
440
550
|
|
|
441
|
-
&:active,
|
|
442
551
|
&[data-checked='true'] {
|
|
443
|
-
color: ${({ theme }) => theme.colors.primary700};
|
|
444
|
-
background-color: ${({ theme }) => theme.colors.primary100};
|
|
445
|
-
border-color: ${({ theme }) => theme.colors.primary700};
|
|
552
|
+
color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
553
|
+
background-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary100 : theme.colors.danger100};
|
|
554
|
+
border-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
446
555
|
}
|
|
447
556
|
|
|
448
557
|
&[data-checked='false'] {
|
|
449
558
|
border-left: ${({ actionType }) => actionType === "unpublish" && "none"};
|
|
450
559
|
border-right: ${({ actionType }) => actionType === "publish" && "none"};
|
|
451
560
|
}
|
|
561
|
+
|
|
562
|
+
&[data-checked='false'][data-disabled='false']:hover {
|
|
563
|
+
color: ${({ theme }) => theme.colors.neutral700};
|
|
564
|
+
background-color: ${({ theme }) => theme.colors.neutral100};
|
|
565
|
+
border-color: ${({ theme }) => theme.colors.neutral200};
|
|
566
|
+
|
|
567
|
+
& > label {
|
|
568
|
+
cursor: pointer;
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
&[data-disabled='true'] {
|
|
573
|
+
color: ${({ theme }) => theme.colors.neutral600};
|
|
574
|
+
background-color: ${({ theme }) => theme.colors.neutral150};
|
|
575
|
+
border-color: ${({ theme }) => theme.colors.neutral300};
|
|
576
|
+
}
|
|
452
577
|
`;
|
|
453
|
-
const ActionOption = ({
|
|
578
|
+
const ActionOption = ({
|
|
579
|
+
selected,
|
|
580
|
+
actionType,
|
|
581
|
+
handleChange,
|
|
582
|
+
name,
|
|
583
|
+
disabled = false
|
|
584
|
+
}) => {
|
|
454
585
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
455
586
|
FieldWrapper,
|
|
456
587
|
{
|
|
@@ -461,6 +592,7 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
461
592
|
position: "relative",
|
|
462
593
|
cursor: "pointer",
|
|
463
594
|
"data-checked": selected === actionType,
|
|
595
|
+
"data-disabled": disabled && selected !== actionType,
|
|
464
596
|
children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.FieldLabel, { htmlFor: `${name}-${actionType}`, children: [
|
|
465
597
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
466
598
|
designSystem.FieldInput,
|
|
@@ -470,7 +602,8 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
470
602
|
name,
|
|
471
603
|
checked: selected === actionType,
|
|
472
604
|
onChange: handleChange,
|
|
473
|
-
value: actionType
|
|
605
|
+
value: actionType,
|
|
606
|
+
disabled
|
|
474
607
|
}
|
|
475
608
|
) }),
|
|
476
609
|
actionType
|
|
@@ -478,7 +611,12 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
478
611
|
}
|
|
479
612
|
);
|
|
480
613
|
};
|
|
481
|
-
const ReleaseActionOptions = ({
|
|
614
|
+
const ReleaseActionOptions = ({
|
|
615
|
+
selected,
|
|
616
|
+
handleChange,
|
|
617
|
+
name,
|
|
618
|
+
disabled = false
|
|
619
|
+
}) => {
|
|
482
620
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { children: [
|
|
483
621
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
484
622
|
ActionOption,
|
|
@@ -486,7 +624,8 @@ const ReleaseActionOptions = ({ selected, handleChange, name }) => {
|
|
|
486
624
|
actionType: "publish",
|
|
487
625
|
selected,
|
|
488
626
|
handleChange,
|
|
489
|
-
name
|
|
627
|
+
name,
|
|
628
|
+
disabled
|
|
490
629
|
}
|
|
491
630
|
),
|
|
492
631
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -495,7 +634,8 @@ const ReleaseActionOptions = ({ selected, handleChange, name }) => {
|
|
|
495
634
|
actionType: "unpublish",
|
|
496
635
|
selected,
|
|
497
636
|
handleChange,
|
|
498
|
-
name
|
|
637
|
+
name,
|
|
638
|
+
disabled
|
|
499
639
|
}
|
|
500
640
|
)
|
|
501
641
|
] });
|
|
@@ -511,12 +651,13 @@ const INITIAL_VALUES = {
|
|
|
511
651
|
const NoReleases = () => {
|
|
512
652
|
const { formatMessage } = reactIntl.useIntl();
|
|
513
653
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
514
|
-
|
|
654
|
+
designSystem.EmptyStateLayout,
|
|
515
655
|
{
|
|
516
|
-
|
|
656
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.EmptyDocuments, { width: "10rem" }),
|
|
657
|
+
content: formatMessage({
|
|
517
658
|
id: "content-releases.content-manager-edit-view.add-to-release.no-releases-message",
|
|
518
659
|
defaultMessage: "No available releases. Open the list of releases and create a new one from there."
|
|
519
|
-
},
|
|
660
|
+
}),
|
|
520
661
|
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
521
662
|
v2.LinkButton,
|
|
522
663
|
{
|
|
@@ -539,10 +680,12 @@ const AddActionToReleaseModal = ({
|
|
|
539
680
|
contentTypeUid,
|
|
540
681
|
entryId
|
|
541
682
|
}) => {
|
|
683
|
+
const releaseHeaderId = React__namespace.useId();
|
|
542
684
|
const { formatMessage } = reactIntl.useIntl();
|
|
543
685
|
const toggleNotification = helperPlugin.useNotification();
|
|
544
686
|
const { formatAPIError } = helperPlugin.useAPIErrorHandler();
|
|
545
|
-
const {
|
|
687
|
+
const [{ query: query2 }] = helperPlugin.useQueryParams();
|
|
688
|
+
const locale = query2.plugins?.i18n?.locale;
|
|
546
689
|
const response = useGetReleasesForEntryQuery({
|
|
547
690
|
contentTypeUid,
|
|
548
691
|
entryId,
|
|
@@ -551,7 +694,6 @@ const AddActionToReleaseModal = ({
|
|
|
551
694
|
const releases = response.data?.data;
|
|
552
695
|
const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();
|
|
553
696
|
const handleSubmit = async (values) => {
|
|
554
|
-
const locale = modifiedData.locale;
|
|
555
697
|
const releaseActionEntry = {
|
|
556
698
|
contentType: contentTypeUid,
|
|
557
699
|
id: entryId,
|
|
@@ -586,8 +728,8 @@ const AddActionToReleaseModal = ({
|
|
|
586
728
|
}
|
|
587
729
|
}
|
|
588
730
|
};
|
|
589
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.ModalLayout, { onClose: handleClose, labelledBy:
|
|
590
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { id:
|
|
731
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.ModalLayout, { onClose: handleClose, labelledBy: releaseHeaderId, children: [
|
|
732
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { id: releaseHeaderId, fontWeight: "bold", textColor: "neutral800", children: formatMessage({
|
|
591
733
|
id: "content-releases.content-manager-edit-view.add-to-release",
|
|
592
734
|
defaultMessage: "Add to release"
|
|
593
735
|
}) }) }),
|
|
@@ -657,16 +799,15 @@ const AddActionToReleaseModal = ({
|
|
|
657
799
|
};
|
|
658
800
|
const CMReleasesContainer = () => {
|
|
659
801
|
const [isModalOpen, setIsModalOpen] = React__namespace.useState(false);
|
|
660
|
-
const { formatMessage } = reactIntl.useIntl();
|
|
661
|
-
const {
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
const
|
|
666
|
-
const canFetch = params?.id != null && contentType?.uid != null;
|
|
802
|
+
const { formatMessage, formatDate, formatTime } = reactIntl.useIntl();
|
|
803
|
+
const { id, slug } = reactRouterDom.useParams();
|
|
804
|
+
const isCreatingEntry = id === "create";
|
|
805
|
+
const contentTypeUid = slug;
|
|
806
|
+
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
807
|
+
const canFetch = id != null && contentTypeUid != null;
|
|
667
808
|
const fetchParams = canFetch ? {
|
|
668
|
-
contentTypeUid
|
|
669
|
-
entryId:
|
|
809
|
+
contentTypeUid,
|
|
810
|
+
entryId: id,
|
|
670
811
|
hasEntryAttached: true
|
|
671
812
|
} : query.skipToken;
|
|
672
813
|
const response = useGetReleasesForEntryQuery(fetchParams);
|
|
@@ -674,7 +815,7 @@ const CMReleasesContainer = () => {
|
|
|
674
815
|
if (!canFetch) {
|
|
675
816
|
return null;
|
|
676
817
|
}
|
|
677
|
-
if (isCreatingEntry
|
|
818
|
+
if (isCreatingEntry) {
|
|
678
819
|
return null;
|
|
679
820
|
}
|
|
680
821
|
const toggleModal = () => setIsModalOpen((prev) => !prev);
|
|
@@ -741,16 +882,40 @@ const CMReleasesContainer = () => {
|
|
|
741
882
|
)
|
|
742
883
|
}
|
|
743
884
|
),
|
|
744
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap:
|
|
885
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
|
|
745
886
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontSize: 2, fontWeight: "bold", variant: "omega", textColor: "neutral700", children: release.name }),
|
|
746
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
747
|
-
|
|
887
|
+
IsSchedulingEnabled && release.scheduledAt && release.timezone && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: formatMessage(
|
|
888
|
+
{
|
|
889
|
+
id: "content-releases.content-manager-edit-view.scheduled.date",
|
|
890
|
+
defaultMessage: "{date} at {time} ({offset})"
|
|
891
|
+
},
|
|
748
892
|
{
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
893
|
+
date: formatDate(new Date(release.scheduledAt), {
|
|
894
|
+
day: "2-digit",
|
|
895
|
+
month: "2-digit",
|
|
896
|
+
year: "numeric",
|
|
897
|
+
timeZone: release.timezone
|
|
898
|
+
}),
|
|
899
|
+
time: formatTime(new Date(release.scheduledAt), {
|
|
900
|
+
hourCycle: "h23",
|
|
901
|
+
timeZone: release.timezone
|
|
902
|
+
}),
|
|
903
|
+
offset: getTimezoneOffset(
|
|
904
|
+
release.timezone,
|
|
905
|
+
new Date(release.scheduledAt)
|
|
906
|
+
)
|
|
752
907
|
}
|
|
753
|
-
)
|
|
908
|
+
) }),
|
|
909
|
+
/* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: PERMISSIONS.deleteAction, children: /* @__PURE__ */ jsxRuntime.jsxs(ReleaseActionMenu.Root, { hasTriggerBorder: true, children: [
|
|
910
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReleaseActionMenu.EditReleaseItem, { releaseId: release.id }),
|
|
911
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
912
|
+
ReleaseActionMenu.DeleteReleaseActionItem,
|
|
913
|
+
{
|
|
914
|
+
releaseId: release.id,
|
|
915
|
+
actionId: release.action.id
|
|
916
|
+
}
|
|
917
|
+
)
|
|
918
|
+
] }) })
|
|
754
919
|
] })
|
|
755
920
|
]
|
|
756
921
|
},
|
|
@@ -778,8 +943,8 @@ const CMReleasesContainer = () => {
|
|
|
778
943
|
AddActionToReleaseModal,
|
|
779
944
|
{
|
|
780
945
|
handleClose: toggleModal,
|
|
781
|
-
contentTypeUid
|
|
782
|
-
entryId:
|
|
946
|
+
contentTypeUid,
|
|
947
|
+
entryId: id
|
|
783
948
|
}
|
|
784
949
|
)
|
|
785
950
|
]
|
|
@@ -789,18 +954,15 @@ const CMReleasesContainer = () => {
|
|
|
789
954
|
const admin = {
|
|
790
955
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
791
956
|
register(app) {
|
|
792
|
-
if (window.strapi.features.isEnabled("cms-content-releases")
|
|
957
|
+
if (window.strapi.features.isEnabled("cms-content-releases")) {
|
|
793
958
|
app.addMenuLink({
|
|
794
|
-
to:
|
|
959
|
+
to: `plugins/${pluginId}`,
|
|
795
960
|
icon: icons.PaperPlane,
|
|
796
961
|
intlLabel: {
|
|
797
962
|
id: `${pluginId}.plugin.name`,
|
|
798
963
|
defaultMessage: "Releases"
|
|
799
964
|
},
|
|
800
|
-
|
|
801
|
-
const { App } = await Promise.resolve().then(() => require("./App-o5_WfqR-.js"));
|
|
802
|
-
return App;
|
|
803
|
-
},
|
|
965
|
+
Component: () => Promise.resolve().then(() => require("./App-lzeJz92X.js")).then((mod) => ({ default: mod.App })),
|
|
804
966
|
permissions: PERMISSIONS.main
|
|
805
967
|
});
|
|
806
968
|
app.addMiddlewares([() => releaseApi.middleware]);
|
|
@@ -811,12 +973,26 @@ const admin = {
|
|
|
811
973
|
name: `${pluginId}-link`,
|
|
812
974
|
Component: CMReleasesContainer
|
|
813
975
|
});
|
|
976
|
+
} else if (!window.strapi.features.isEnabled("cms-content-releases") && window.strapi?.flags?.promoteEE) {
|
|
977
|
+
app.addMenuLink({
|
|
978
|
+
to: `/plugins/purchase-content-releases`,
|
|
979
|
+
icon: icons.PaperPlane,
|
|
980
|
+
intlLabel: {
|
|
981
|
+
id: `${pluginId}.plugin.name`,
|
|
982
|
+
defaultMessage: "Releases"
|
|
983
|
+
},
|
|
984
|
+
async Component() {
|
|
985
|
+
const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases-YhAPgpG9.js"));
|
|
986
|
+
return PurchaseContentReleases;
|
|
987
|
+
},
|
|
988
|
+
lockIcon: true
|
|
989
|
+
});
|
|
814
990
|
}
|
|
815
991
|
},
|
|
816
992
|
async registerTrads({ locales }) {
|
|
817
993
|
const importedTrads = await Promise.all(
|
|
818
994
|
locales.map((locale) => {
|
|
819
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-
|
|
995
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-gcJJ5htG.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
|
|
820
996
|
return {
|
|
821
997
|
data: helperPlugin.prefixPluginTranslations(data, "content-releases"),
|
|
822
998
|
locale
|
|
@@ -836,14 +1012,17 @@ exports.PERMISSIONS = PERMISSIONS;
|
|
|
836
1012
|
exports.ReleaseActionMenu = ReleaseActionMenu;
|
|
837
1013
|
exports.ReleaseActionOptions = ReleaseActionOptions;
|
|
838
1014
|
exports.admin = admin;
|
|
1015
|
+
exports.getTimezoneOffset = getTimezoneOffset;
|
|
839
1016
|
exports.isAxiosError = isAxiosError;
|
|
840
1017
|
exports.pluginId = pluginId;
|
|
1018
|
+
exports.releaseApi = releaseApi;
|
|
841
1019
|
exports.useCreateReleaseMutation = useCreateReleaseMutation;
|
|
842
1020
|
exports.useDeleteReleaseMutation = useDeleteReleaseMutation;
|
|
843
1021
|
exports.useGetReleaseActionsQuery = useGetReleaseActionsQuery;
|
|
844
1022
|
exports.useGetReleaseQuery = useGetReleaseQuery;
|
|
845
1023
|
exports.useGetReleasesQuery = useGetReleasesQuery;
|
|
846
1024
|
exports.usePublishReleaseMutation = usePublishReleaseMutation;
|
|
1025
|
+
exports.useTypedDispatch = useTypedDispatch;
|
|
847
1026
|
exports.useUpdateReleaseActionMutation = useUpdateReleaseActionMutation;
|
|
848
1027
|
exports.useUpdateReleaseMutation = useUpdateReleaseMutation;
|
|
849
|
-
//# sourceMappingURL=index-
|
|
1028
|
+
//# sourceMappingURL=index-Nf1JfI-m.js.map
|