@strapi/content-releases 0.0.0-experimental.f7b9b47085e387e97f990d8695971b51d7f7149a → 0.0.0-experimental.fc1ac2acd58c8a5a858679956b6d102ac5ee4011
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-0Er6xxcq.mjs +1358 -0
- package/dist/_chunks/App-0Er6xxcq.mjs.map +1 -0
- package/dist/_chunks/App-C768ulk4.js +1381 -0
- package/dist/_chunks/App-C768ulk4.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-e98d8b57.mjs → en-WuuhP6Bn.mjs} +33 -8
- package/dist/_chunks/en-WuuhP6Bn.mjs.map +1 -0
- package/dist/_chunks/{en-13576ce2.js → en-gcJJ5htG.js} +33 -8
- package/dist/_chunks/en-gcJJ5htG.js.map +1 -0
- package/dist/_chunks/{index-66d129ac.js → index-BLSMpbpZ.js} +258 -68
- package/dist/_chunks/index-BLSMpbpZ.js.map +1 -0
- package/dist/_chunks/{index-937f8179.mjs → index-fJx1up7m.mjs} +273 -83
- package/dist/_chunks/index-fJx1up7m.mjs.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 +1008 -298
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +1006 -299
- 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 +3838 -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 +3572 -0
- package/dist/server/src/services/index.d.ts.map +1 -0
- package/dist/server/src/services/release.d.ts +1812 -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 +18 -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 +20 -22
- package/dist/_chunks/App-a4843fda.mjs +0 -855
- package/dist/_chunks/App-a4843fda.mjs.map +0 -1
- package/dist/_chunks/App-f2cafd81.js +0 -877
- package/dist/_chunks/App-f2cafd81.js.map +0 -1
- package/dist/_chunks/en-13576ce2.js.map +0 -1
- package/dist/_chunks/en-e98d8b57.mjs.map +0 -1
- package/dist/_chunks/index-66d129ac.js.map +0 -1
- package/dist/_chunks/index-937f8179.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)
|
|
@@ -229,22 +230,16 @@ const releaseApi = react.createApi({
|
|
|
229
230
|
providesTags: (result, error, arg) => [{ type: "Release", id: arg.id }]
|
|
230
231
|
}),
|
|
231
232
|
getReleaseActions: build.query({
|
|
232
|
-
query({ releaseId,
|
|
233
|
+
query({ releaseId, ...params }) {
|
|
233
234
|
return {
|
|
234
235
|
url: `/content-releases/${releaseId}/actions`,
|
|
235
236
|
method: "GET",
|
|
236
237
|
config: {
|
|
237
|
-
params
|
|
238
|
-
page,
|
|
239
|
-
pageSize
|
|
240
|
-
}
|
|
238
|
+
params
|
|
241
239
|
}
|
|
242
240
|
};
|
|
243
241
|
},
|
|
244
|
-
providesTags:
|
|
245
|
-
...result.data.map(({ id }) => ({ type: "ReleaseAction", id })),
|
|
246
|
-
{ type: "ReleaseAction", id: "LIST" }
|
|
247
|
-
] : [{ type: "ReleaseAction", id: "LIST" }]
|
|
242
|
+
providesTags: [{ type: "ReleaseAction", id: "LIST" }]
|
|
248
243
|
}),
|
|
249
244
|
createRelease: build.mutation({
|
|
250
245
|
query(data) {
|
|
@@ -287,9 +282,27 @@ const releaseApi = react.createApi({
|
|
|
287
282
|
data: body
|
|
288
283
|
};
|
|
289
284
|
},
|
|
290
|
-
invalidatesTags: (
|
|
291
|
-
|
|
292
|
-
|
|
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
|
+
}
|
|
293
306
|
}),
|
|
294
307
|
deleteReleaseAction: build.mutation({
|
|
295
308
|
query({ params }) {
|
|
@@ -337,29 +350,59 @@ const {
|
|
|
337
350
|
useDeleteReleaseActionMutation,
|
|
338
351
|
useDeleteReleaseMutation
|
|
339
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;
|
|
340
371
|
const StyledMenuItem = styled__default.default(v2.Menu.Item)`
|
|
341
372
|
&:hover {
|
|
342
|
-
background:
|
|
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
|
+
}
|
|
343
384
|
}
|
|
344
385
|
|
|
345
386
|
svg {
|
|
346
387
|
path {
|
|
347
|
-
fill: ${({ theme }) => theme.colors
|
|
388
|
+
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
348
389
|
}
|
|
349
390
|
}
|
|
350
391
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
392
|
+
a {
|
|
393
|
+
color: ${({ theme }) => theme.colors.neutral800};
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
span,
|
|
397
|
+
a {
|
|
398
|
+
width: 100%;
|
|
357
399
|
}
|
|
358
400
|
`;
|
|
359
|
-
const
|
|
360
|
-
|
|
401
|
+
const StyledIconButton = styled__default.default(designSystem.IconButton)`
|
|
402
|
+
/* Setting this style inline with borderColor will not apply the style */
|
|
403
|
+
border: ${({ theme }) => `1px solid ${theme.colors.neutral200}`};
|
|
361
404
|
`;
|
|
362
|
-
const
|
|
405
|
+
const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
363
406
|
const { formatMessage } = reactIntl.useIntl();
|
|
364
407
|
const toggleNotification = helperPlugin.useNotification();
|
|
365
408
|
const { formatAPIError } = helperPlugin.useAPIErrorHandler();
|
|
@@ -392,13 +435,80 @@ const ReleaseActionMenu = ({ releaseId, actionId }) => {
|
|
|
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: [
|
|
398
508
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
399
509
|
v2.Menu.Trigger,
|
|
400
510
|
{
|
|
401
|
-
as: designSystem.IconButton,
|
|
511
|
+
as: hasTriggerBorder ? StyledIconButton : designSystem.IconButton,
|
|
402
512
|
paddingLeft: 2,
|
|
403
513
|
paddingRight: 2,
|
|
404
514
|
"aria-label": formatMessage({
|
|
@@ -408,16 +518,16 @@ const ReleaseActionMenu = ({ releaseId, actionId }) => {
|
|
|
408
518
|
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.More, {})
|
|
409
519
|
}
|
|
410
520
|
),
|
|
411
|
-
/* @__PURE__ */ jsxRuntime.jsx(v2.Menu.Content, { top: 1,
|
|
412
|
-
/* @__PURE__ */ jsxRuntime.jsx(StyledCross, {}),
|
|
413
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { 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,9 +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();
|
|
687
|
+
const [{ query: query2 }] = helperPlugin.useQueryParams();
|
|
688
|
+
const locale = query2.plugins?.i18n?.locale;
|
|
545
689
|
const response = useGetReleasesForEntryQuery({
|
|
546
690
|
contentTypeUid,
|
|
547
691
|
entryId,
|
|
@@ -552,7 +696,8 @@ const AddActionToReleaseModal = ({
|
|
|
552
696
|
const handleSubmit = async (values) => {
|
|
553
697
|
const releaseActionEntry = {
|
|
554
698
|
contentType: contentTypeUid,
|
|
555
|
-
id: entryId
|
|
699
|
+
id: entryId,
|
|
700
|
+
locale
|
|
556
701
|
};
|
|
557
702
|
const response2 = await createReleaseAction({
|
|
558
703
|
body: { type: values.type, entry: releaseActionEntry },
|
|
@@ -583,8 +728,8 @@ const AddActionToReleaseModal = ({
|
|
|
583
728
|
}
|
|
584
729
|
}
|
|
585
730
|
};
|
|
586
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.ModalLayout, { onClose: handleClose, labelledBy:
|
|
587
|
-
/* @__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({
|
|
588
733
|
id: "content-releases.content-manager-edit-view.add-to-release",
|
|
589
734
|
defaultMessage: "Add to release"
|
|
590
735
|
}) }) }),
|
|
@@ -654,16 +799,15 @@ const AddActionToReleaseModal = ({
|
|
|
654
799
|
};
|
|
655
800
|
const CMReleasesContainer = () => {
|
|
656
801
|
const [isModalOpen, setIsModalOpen] = React__namespace.useState(false);
|
|
657
|
-
const { formatMessage } = reactIntl.useIntl();
|
|
658
|
-
const {
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
const
|
|
663
|
-
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;
|
|
664
808
|
const fetchParams = canFetch ? {
|
|
665
|
-
contentTypeUid
|
|
666
|
-
entryId:
|
|
809
|
+
contentTypeUid,
|
|
810
|
+
entryId: id,
|
|
667
811
|
hasEntryAttached: true
|
|
668
812
|
} : query.skipToken;
|
|
669
813
|
const response = useGetReleasesForEntryQuery(fetchParams);
|
|
@@ -671,7 +815,7 @@ const CMReleasesContainer = () => {
|
|
|
671
815
|
if (!canFetch) {
|
|
672
816
|
return null;
|
|
673
817
|
}
|
|
674
|
-
if (isCreatingEntry
|
|
818
|
+
if (isCreatingEntry) {
|
|
675
819
|
return null;
|
|
676
820
|
}
|
|
677
821
|
const toggleModal = () => setIsModalOpen((prev) => !prev);
|
|
@@ -738,9 +882,40 @@ const CMReleasesContainer = () => {
|
|
|
738
882
|
)
|
|
739
883
|
}
|
|
740
884
|
),
|
|
741
|
-
/* @__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: [
|
|
742
886
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontSize: 2, fontWeight: "bold", variant: "omega", textColor: "neutral700", children: release.name }),
|
|
743
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
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
|
+
},
|
|
892
|
+
{
|
|
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
|
+
)
|
|
907
|
+
}
|
|
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
|
+
] }) })
|
|
744
919
|
] })
|
|
745
920
|
]
|
|
746
921
|
},
|
|
@@ -768,8 +943,8 @@ const CMReleasesContainer = () => {
|
|
|
768
943
|
AddActionToReleaseModal,
|
|
769
944
|
{
|
|
770
945
|
handleClose: toggleModal,
|
|
771
|
-
contentTypeUid
|
|
772
|
-
entryId:
|
|
946
|
+
contentTypeUid,
|
|
947
|
+
entryId: id
|
|
773
948
|
}
|
|
774
949
|
)
|
|
775
950
|
]
|
|
@@ -779,18 +954,15 @@ const CMReleasesContainer = () => {
|
|
|
779
954
|
const admin = {
|
|
780
955
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
781
956
|
register(app) {
|
|
782
|
-
if (window.strapi.features.isEnabled("cms-content-releases")
|
|
957
|
+
if (window.strapi.features.isEnabled("cms-content-releases")) {
|
|
783
958
|
app.addMenuLink({
|
|
784
|
-
to:
|
|
959
|
+
to: `plugins/${pluginId}`,
|
|
785
960
|
icon: icons.PaperPlane,
|
|
786
961
|
intlLabel: {
|
|
787
962
|
id: `${pluginId}.plugin.name`,
|
|
788
963
|
defaultMessage: "Releases"
|
|
789
964
|
},
|
|
790
|
-
|
|
791
|
-
const { App } = await Promise.resolve().then(() => require("./App-f2cafd81.js"));
|
|
792
|
-
return App;
|
|
793
|
-
},
|
|
965
|
+
Component: () => Promise.resolve().then(() => require("./App-C768ulk4.js")).then((mod) => ({ default: mod.App })),
|
|
794
966
|
permissions: PERMISSIONS.main
|
|
795
967
|
});
|
|
796
968
|
app.addMiddlewares([() => releaseApi.middleware]);
|
|
@@ -801,12 +973,26 @@ const admin = {
|
|
|
801
973
|
name: `${pluginId}-link`,
|
|
802
974
|
Component: CMReleasesContainer
|
|
803
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
|
+
});
|
|
804
990
|
}
|
|
805
991
|
},
|
|
806
992
|
async registerTrads({ locales }) {
|
|
807
993
|
const importedTrads = await Promise.all(
|
|
808
994
|
locales.map((locale) => {
|
|
809
|
-
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 }) => {
|
|
810
996
|
return {
|
|
811
997
|
data: helperPlugin.prefixPluginTranslations(data, "content-releases"),
|
|
812
998
|
locale
|
|
@@ -823,16 +1009,20 @@ const admin = {
|
|
|
823
1009
|
}
|
|
824
1010
|
};
|
|
825
1011
|
exports.PERMISSIONS = PERMISSIONS;
|
|
1012
|
+
exports.ReleaseActionMenu = ReleaseActionMenu;
|
|
826
1013
|
exports.ReleaseActionOptions = ReleaseActionOptions;
|
|
827
1014
|
exports.admin = admin;
|
|
1015
|
+
exports.getTimezoneOffset = getTimezoneOffset;
|
|
828
1016
|
exports.isAxiosError = isAxiosError;
|
|
829
1017
|
exports.pluginId = pluginId;
|
|
1018
|
+
exports.releaseApi = releaseApi;
|
|
830
1019
|
exports.useCreateReleaseMutation = useCreateReleaseMutation;
|
|
831
1020
|
exports.useDeleteReleaseMutation = useDeleteReleaseMutation;
|
|
832
1021
|
exports.useGetReleaseActionsQuery = useGetReleaseActionsQuery;
|
|
833
1022
|
exports.useGetReleaseQuery = useGetReleaseQuery;
|
|
834
1023
|
exports.useGetReleasesQuery = useGetReleasesQuery;
|
|
835
1024
|
exports.usePublishReleaseMutation = usePublishReleaseMutation;
|
|
1025
|
+
exports.useTypedDispatch = useTypedDispatch;
|
|
836
1026
|
exports.useUpdateReleaseActionMutation = useUpdateReleaseActionMutation;
|
|
837
1027
|
exports.useUpdateReleaseMutation = useUpdateReleaseMutation;
|
|
838
|
-
//# sourceMappingURL=index-
|
|
1028
|
+
//# sourceMappingURL=index-BLSMpbpZ.js.map
|