@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
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { getFetchClient, useNotification, useAPIErrorHandler, CheckPermissions,
|
|
2
|
-
import { Cross, More, Plus, PaperPlane } from "@strapi/icons";
|
|
1
|
+
import { getFetchClient, useNotification, useAPIErrorHandler, CheckPermissions, useQueryParams, prefixPluginTranslations } from "@strapi/helper-plugin";
|
|
2
|
+
import { Cross, Pencil, More, Plus, EmptyDocuments, PaperPlane } from "@strapi/icons";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { skipToken } from "@reduxjs/toolkit/query";
|
|
6
|
-
import { IconButton, Flex, Typography, Field, FieldLabel, VisuallyHidden, FieldInput, Box, Button, ModalLayout, ModalHeader, ModalBody, SingleSelect, SingleSelectOption, ModalFooter } from "@strapi/design-system";
|
|
7
|
-
import { Menu, LinkButton } from "@strapi/design-system/v2";
|
|
6
|
+
import { IconButton, Flex, Icon, Typography, Field, FieldLabel, VisuallyHidden, FieldInput, Box, Button, ModalLayout, ModalHeader, ModalBody, SingleSelect, SingleSelectOption, ModalFooter, EmptyStateLayout } from "@strapi/design-system";
|
|
7
|
+
import { Menu, Link, LinkButton } from "@strapi/design-system/v2";
|
|
8
8
|
import { isAxiosError as isAxiosError$1 } from "axios";
|
|
9
9
|
import { Formik, Form } from "formik";
|
|
10
10
|
import { useIntl } from "react-intl";
|
|
11
|
-
import { useParams, Link } from "react-router-dom";
|
|
11
|
+
import { NavLink, useParams, Link as Link$1 } from "react-router-dom";
|
|
12
12
|
import * as yup from "yup";
|
|
13
13
|
import { createApi } from "@reduxjs/toolkit/query/react";
|
|
14
14
|
import styled from "styled-components";
|
|
15
|
+
import { useDispatch, useSelector } from "react-redux";
|
|
15
16
|
const __variableDynamicImportRuntimeHelper = (glob, path) => {
|
|
16
17
|
const v = glob[path];
|
|
17
18
|
if (v) {
|
|
@@ -206,22 +207,16 @@ const releaseApi = createApi({
|
|
|
206
207
|
providesTags: (result, error, arg) => [{ type: "Release", id: arg.id }]
|
|
207
208
|
}),
|
|
208
209
|
getReleaseActions: build.query({
|
|
209
|
-
query({ releaseId,
|
|
210
|
+
query({ releaseId, ...params }) {
|
|
210
211
|
return {
|
|
211
212
|
url: `/content-releases/${releaseId}/actions`,
|
|
212
213
|
method: "GET",
|
|
213
214
|
config: {
|
|
214
|
-
params
|
|
215
|
-
page,
|
|
216
|
-
pageSize
|
|
217
|
-
}
|
|
215
|
+
params
|
|
218
216
|
}
|
|
219
217
|
};
|
|
220
218
|
},
|
|
221
|
-
providesTags:
|
|
222
|
-
...result.data.map(({ id }) => ({ type: "ReleaseAction", id })),
|
|
223
|
-
{ type: "ReleaseAction", id: "LIST" }
|
|
224
|
-
] : [{ type: "ReleaseAction", id: "LIST" }]
|
|
219
|
+
providesTags: [{ type: "ReleaseAction", id: "LIST" }]
|
|
225
220
|
}),
|
|
226
221
|
createRelease: build.mutation({
|
|
227
222
|
query(data) {
|
|
@@ -264,9 +259,27 @@ const releaseApi = createApi({
|
|
|
264
259
|
data: body
|
|
265
260
|
};
|
|
266
261
|
},
|
|
267
|
-
invalidatesTags: (
|
|
268
|
-
|
|
269
|
-
|
|
262
|
+
invalidatesTags: () => [{ type: "ReleaseAction", id: "LIST" }],
|
|
263
|
+
async onQueryStarted({ body, params, query, actionPath }, { dispatch, queryFulfilled }) {
|
|
264
|
+
const paramsWithoutActionId = {
|
|
265
|
+
releaseId: params.releaseId,
|
|
266
|
+
...query
|
|
267
|
+
};
|
|
268
|
+
const patchResult = dispatch(
|
|
269
|
+
releaseApi.util.updateQueryData("getReleaseActions", paramsWithoutActionId, (draft) => {
|
|
270
|
+
const [key, index] = actionPath;
|
|
271
|
+
const action = draft.data[key][index];
|
|
272
|
+
if (action) {
|
|
273
|
+
action.type = body.type;
|
|
274
|
+
}
|
|
275
|
+
})
|
|
276
|
+
);
|
|
277
|
+
try {
|
|
278
|
+
await queryFulfilled;
|
|
279
|
+
} catch {
|
|
280
|
+
patchResult.undo();
|
|
281
|
+
}
|
|
282
|
+
}
|
|
270
283
|
}),
|
|
271
284
|
deleteReleaseAction: build.mutation({
|
|
272
285
|
query({ params }) {
|
|
@@ -314,29 +327,59 @@ const {
|
|
|
314
327
|
useDeleteReleaseActionMutation,
|
|
315
328
|
useDeleteReleaseMutation
|
|
316
329
|
} = releaseApi;
|
|
330
|
+
const getTimezoneOffset = (timezone, date) => {
|
|
331
|
+
try {
|
|
332
|
+
const offsetPart = new Intl.DateTimeFormat("en", {
|
|
333
|
+
timeZone: timezone,
|
|
334
|
+
timeZoneName: "longOffset"
|
|
335
|
+
}).formatToParts(date).find((part) => part.type === "timeZoneName");
|
|
336
|
+
const offset = offsetPart ? offsetPart.value : "";
|
|
337
|
+
let utcOffset = offset.replace("GMT", "UTC");
|
|
338
|
+
if (!utcOffset.includes("+") && !utcOffset.includes("-")) {
|
|
339
|
+
utcOffset = `${utcOffset}+00:00`;
|
|
340
|
+
}
|
|
341
|
+
return utcOffset;
|
|
342
|
+
} catch (error) {
|
|
343
|
+
return "";
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
const useTypedDispatch = useDispatch;
|
|
347
|
+
const useTypedSelector = useSelector;
|
|
317
348
|
const StyledMenuItem = styled(Menu.Item)`
|
|
318
349
|
&:hover {
|
|
319
|
-
background:
|
|
350
|
+
background: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}100`]};
|
|
351
|
+
|
|
352
|
+
svg {
|
|
353
|
+
path {
|
|
354
|
+
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
a {
|
|
359
|
+
color: ${({ theme }) => theme.colors.neutral800};
|
|
360
|
+
}
|
|
320
361
|
}
|
|
321
362
|
|
|
322
363
|
svg {
|
|
323
364
|
path {
|
|
324
|
-
fill: ${({ theme }) => theme.colors
|
|
365
|
+
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
325
366
|
}
|
|
326
367
|
}
|
|
327
368
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
369
|
+
a {
|
|
370
|
+
color: ${({ theme }) => theme.colors.neutral800};
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
span,
|
|
374
|
+
a {
|
|
375
|
+
width: 100%;
|
|
334
376
|
}
|
|
335
377
|
`;
|
|
336
|
-
const
|
|
337
|
-
|
|
378
|
+
const StyledIconButton = styled(IconButton)`
|
|
379
|
+
/* Setting this style inline with borderColor will not apply the style */
|
|
380
|
+
border: ${({ theme }) => `1px solid ${theme.colors.neutral200}`};
|
|
338
381
|
`;
|
|
339
|
-
const
|
|
382
|
+
const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
340
383
|
const { formatMessage } = useIntl();
|
|
341
384
|
const toggleNotification = useNotification();
|
|
342
385
|
const { formatAPIError } = useAPIErrorHandler();
|
|
@@ -369,13 +412,80 @@ const ReleaseActionMenu = ({ releaseId, actionId }) => {
|
|
|
369
412
|
}
|
|
370
413
|
}
|
|
371
414
|
};
|
|
415
|
+
return /* @__PURE__ */ jsx(CheckPermissions, { permissions: PERMISSIONS.deleteAction, children: /* @__PURE__ */ jsx(StyledMenuItem, { variant: "danger", onSelect: handleDeleteAction, children: /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
416
|
+
/* @__PURE__ */ jsx(Icon, { as: Cross, width: 3, height: 3 }),
|
|
417
|
+
/* @__PURE__ */ jsx(Typography, { textColor: "danger600", variant: "omega", children: formatMessage({
|
|
418
|
+
id: "content-releases.content-manager-edit-view.remove-from-release",
|
|
419
|
+
defaultMessage: "Remove from release"
|
|
420
|
+
}) })
|
|
421
|
+
] }) }) });
|
|
422
|
+
};
|
|
423
|
+
const ReleaseActionEntryLinkItem = ({
|
|
424
|
+
contentTypeUid,
|
|
425
|
+
entryId,
|
|
426
|
+
locale
|
|
427
|
+
}) => {
|
|
428
|
+
const { formatMessage } = useIntl();
|
|
429
|
+
const collectionTypePermissions = useTypedSelector(
|
|
430
|
+
(state) => state.rbacProvider.collectionTypesRelatedPermissions
|
|
431
|
+
);
|
|
432
|
+
const updatePermissions = contentTypeUid ? collectionTypePermissions[contentTypeUid]?.["plugin::content-manager.explorer.update"] : [];
|
|
433
|
+
const canUpdateEntryForLocale = Boolean(
|
|
434
|
+
!locale || updatePermissions?.find(
|
|
435
|
+
(permission) => permission.properties?.locales?.includes(locale)
|
|
436
|
+
)
|
|
437
|
+
);
|
|
438
|
+
return /* @__PURE__ */ jsx(
|
|
439
|
+
CheckPermissions,
|
|
440
|
+
{
|
|
441
|
+
permissions: [
|
|
442
|
+
{
|
|
443
|
+
action: "plugin::content-manager.explorer.update",
|
|
444
|
+
subject: contentTypeUid
|
|
445
|
+
}
|
|
446
|
+
],
|
|
447
|
+
children: canUpdateEntryForLocale && /* @__PURE__ */ jsx(StyledMenuItem, { children: /* @__PURE__ */ jsx(
|
|
448
|
+
Link,
|
|
449
|
+
{
|
|
450
|
+
as: NavLink,
|
|
451
|
+
to: {
|
|
452
|
+
pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
|
|
453
|
+
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
454
|
+
},
|
|
455
|
+
startIcon: /* @__PURE__ */ jsx(Icon, { as: Pencil, width: 3, height: 3 }),
|
|
456
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage({
|
|
457
|
+
id: "content-releases.content-manager-edit-view.edit-entry",
|
|
458
|
+
defaultMessage: "Edit entry"
|
|
459
|
+
}) })
|
|
460
|
+
}
|
|
461
|
+
) })
|
|
462
|
+
}
|
|
463
|
+
);
|
|
464
|
+
};
|
|
465
|
+
const EditReleaseItem = ({ releaseId }) => {
|
|
466
|
+
const { formatMessage } = useIntl();
|
|
467
|
+
return /* @__PURE__ */ jsx(StyledMenuItem, { children: /* @__PURE__ */ jsx(
|
|
468
|
+
Link,
|
|
469
|
+
{
|
|
470
|
+
as: NavLink,
|
|
471
|
+
to: `/plugins/content-releases/${releaseId}`,
|
|
472
|
+
startIcon: /* @__PURE__ */ jsx(Icon, { as: Pencil, width: 3, height: 3 }),
|
|
473
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage({
|
|
474
|
+
id: "content-releases.content-manager-edit-view.edit-release",
|
|
475
|
+
defaultMessage: "Edit release"
|
|
476
|
+
}) })
|
|
477
|
+
}
|
|
478
|
+
) });
|
|
479
|
+
};
|
|
480
|
+
const Root = ({ children, hasTriggerBorder = false }) => {
|
|
481
|
+
const { formatMessage } = useIntl();
|
|
372
482
|
return (
|
|
373
483
|
// A user can access the dropdown if they have permissions to delete a release-action OR update a release
|
|
374
484
|
/* @__PURE__ */ jsx(CheckPermissions, { permissions: [...PERMISSIONS.deleteAction, ...PERMISSIONS.update], children: /* @__PURE__ */ jsxs(Menu.Root, { children: [
|
|
375
485
|
/* @__PURE__ */ jsx(
|
|
376
486
|
Menu.Trigger,
|
|
377
487
|
{
|
|
378
|
-
as: IconButton,
|
|
488
|
+
as: hasTriggerBorder ? StyledIconButton : IconButton,
|
|
379
489
|
paddingLeft: 2,
|
|
380
490
|
paddingRight: 2,
|
|
381
491
|
"aria-label": formatMessage({
|
|
@@ -385,16 +495,16 @@ const ReleaseActionMenu = ({ releaseId, actionId }) => {
|
|
|
385
495
|
icon: /* @__PURE__ */ jsx(More, {})
|
|
386
496
|
}
|
|
387
497
|
),
|
|
388
|
-
/* @__PURE__ */ jsx(Menu.Content, { top: 1,
|
|
389
|
-
/* @__PURE__ */ jsx(StyledCross, {}),
|
|
390
|
-
/* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage({
|
|
391
|
-
id: "content-releases.content-manager-edit-view.remove-from-release",
|
|
392
|
-
defaultMessage: "Remove from release"
|
|
393
|
-
}) })
|
|
394
|
-
] }) }) }) })
|
|
498
|
+
/* @__PURE__ */ jsx(Menu.Content, { top: 1, popoverPlacement: "bottom-end", children })
|
|
395
499
|
] }) })
|
|
396
500
|
);
|
|
397
501
|
};
|
|
502
|
+
const ReleaseActionMenu = {
|
|
503
|
+
Root,
|
|
504
|
+
EditReleaseItem,
|
|
505
|
+
DeleteReleaseActionItem,
|
|
506
|
+
ReleaseActionEntryLinkItem
|
|
507
|
+
};
|
|
398
508
|
const getBorderLeftRadiusValue = (actionType) => {
|
|
399
509
|
return actionType === "publish" ? 1 : 0;
|
|
400
510
|
};
|
|
@@ -415,19 +525,40 @@ const FieldWrapper = styled(Field)`
|
|
|
415
525
|
text-transform: capitalize;
|
|
416
526
|
}
|
|
417
527
|
|
|
418
|
-
&:active,
|
|
419
528
|
&[data-checked='true'] {
|
|
420
|
-
color: ${({ theme }) => theme.colors.primary700};
|
|
421
|
-
background-color: ${({ theme }) => theme.colors.primary100};
|
|
422
|
-
border-color: ${({ theme }) => theme.colors.primary700};
|
|
529
|
+
color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
530
|
+
background-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary100 : theme.colors.danger100};
|
|
531
|
+
border-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
423
532
|
}
|
|
424
533
|
|
|
425
534
|
&[data-checked='false'] {
|
|
426
535
|
border-left: ${({ actionType }) => actionType === "unpublish" && "none"};
|
|
427
536
|
border-right: ${({ actionType }) => actionType === "publish" && "none"};
|
|
428
537
|
}
|
|
538
|
+
|
|
539
|
+
&[data-checked='false'][data-disabled='false']:hover {
|
|
540
|
+
color: ${({ theme }) => theme.colors.neutral700};
|
|
541
|
+
background-color: ${({ theme }) => theme.colors.neutral100};
|
|
542
|
+
border-color: ${({ theme }) => theme.colors.neutral200};
|
|
543
|
+
|
|
544
|
+
& > label {
|
|
545
|
+
cursor: pointer;
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
&[data-disabled='true'] {
|
|
550
|
+
color: ${({ theme }) => theme.colors.neutral600};
|
|
551
|
+
background-color: ${({ theme }) => theme.colors.neutral150};
|
|
552
|
+
border-color: ${({ theme }) => theme.colors.neutral300};
|
|
553
|
+
}
|
|
429
554
|
`;
|
|
430
|
-
const ActionOption = ({
|
|
555
|
+
const ActionOption = ({
|
|
556
|
+
selected,
|
|
557
|
+
actionType,
|
|
558
|
+
handleChange,
|
|
559
|
+
name,
|
|
560
|
+
disabled = false
|
|
561
|
+
}) => {
|
|
431
562
|
return /* @__PURE__ */ jsx(
|
|
432
563
|
FieldWrapper,
|
|
433
564
|
{
|
|
@@ -438,6 +569,7 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
438
569
|
position: "relative",
|
|
439
570
|
cursor: "pointer",
|
|
440
571
|
"data-checked": selected === actionType,
|
|
572
|
+
"data-disabled": disabled && selected !== actionType,
|
|
441
573
|
children: /* @__PURE__ */ jsxs(FieldLabel, { htmlFor: `${name}-${actionType}`, children: [
|
|
442
574
|
/* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx(
|
|
443
575
|
FieldInput,
|
|
@@ -447,7 +579,8 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
447
579
|
name,
|
|
448
580
|
checked: selected === actionType,
|
|
449
581
|
onChange: handleChange,
|
|
450
|
-
value: actionType
|
|
582
|
+
value: actionType,
|
|
583
|
+
disabled
|
|
451
584
|
}
|
|
452
585
|
) }),
|
|
453
586
|
actionType
|
|
@@ -455,7 +588,12 @@ const ActionOption = ({ selected, actionType, handleChange, name }) => {
|
|
|
455
588
|
}
|
|
456
589
|
);
|
|
457
590
|
};
|
|
458
|
-
const ReleaseActionOptions = ({
|
|
591
|
+
const ReleaseActionOptions = ({
|
|
592
|
+
selected,
|
|
593
|
+
handleChange,
|
|
594
|
+
name,
|
|
595
|
+
disabled = false
|
|
596
|
+
}) => {
|
|
459
597
|
return /* @__PURE__ */ jsxs(Flex, { children: [
|
|
460
598
|
/* @__PURE__ */ jsx(
|
|
461
599
|
ActionOption,
|
|
@@ -463,7 +601,8 @@ const ReleaseActionOptions = ({ selected, handleChange, name }) => {
|
|
|
463
601
|
actionType: "publish",
|
|
464
602
|
selected,
|
|
465
603
|
handleChange,
|
|
466
|
-
name
|
|
604
|
+
name,
|
|
605
|
+
disabled
|
|
467
606
|
}
|
|
468
607
|
),
|
|
469
608
|
/* @__PURE__ */ jsx(
|
|
@@ -472,7 +611,8 @@ const ReleaseActionOptions = ({ selected, handleChange, name }) => {
|
|
|
472
611
|
actionType: "unpublish",
|
|
473
612
|
selected,
|
|
474
613
|
handleChange,
|
|
475
|
-
name
|
|
614
|
+
name,
|
|
615
|
+
disabled
|
|
476
616
|
}
|
|
477
617
|
)
|
|
478
618
|
] });
|
|
@@ -488,19 +628,20 @@ const INITIAL_VALUES = {
|
|
|
488
628
|
const NoReleases = () => {
|
|
489
629
|
const { formatMessage } = useIntl();
|
|
490
630
|
return /* @__PURE__ */ jsx(
|
|
491
|
-
|
|
631
|
+
EmptyStateLayout,
|
|
492
632
|
{
|
|
493
|
-
|
|
633
|
+
icon: /* @__PURE__ */ jsx(EmptyDocuments, { width: "10rem" }),
|
|
634
|
+
content: formatMessage({
|
|
494
635
|
id: "content-releases.content-manager-edit-view.add-to-release.no-releases-message",
|
|
495
636
|
defaultMessage: "No available releases. Open the list of releases and create a new one from there."
|
|
496
|
-
},
|
|
637
|
+
}),
|
|
497
638
|
action: /* @__PURE__ */ jsx(
|
|
498
639
|
LinkButton,
|
|
499
640
|
{
|
|
500
641
|
to: {
|
|
501
642
|
pathname: "/plugins/content-releases"
|
|
502
643
|
},
|
|
503
|
-
as: Link,
|
|
644
|
+
as: Link$1,
|
|
504
645
|
variant: "secondary",
|
|
505
646
|
children: formatMessage({
|
|
506
647
|
id: "content-releases.content-manager-edit-view.add-to-release.redirect-button",
|
|
@@ -516,9 +657,12 @@ const AddActionToReleaseModal = ({
|
|
|
516
657
|
contentTypeUid,
|
|
517
658
|
entryId
|
|
518
659
|
}) => {
|
|
660
|
+
const releaseHeaderId = React.useId();
|
|
519
661
|
const { formatMessage } = useIntl();
|
|
520
662
|
const toggleNotification = useNotification();
|
|
521
663
|
const { formatAPIError } = useAPIErrorHandler();
|
|
664
|
+
const [{ query }] = useQueryParams();
|
|
665
|
+
const locale = query.plugins?.i18n?.locale;
|
|
522
666
|
const response = useGetReleasesForEntryQuery({
|
|
523
667
|
contentTypeUid,
|
|
524
668
|
entryId,
|
|
@@ -529,7 +673,8 @@ const AddActionToReleaseModal = ({
|
|
|
529
673
|
const handleSubmit = async (values) => {
|
|
530
674
|
const releaseActionEntry = {
|
|
531
675
|
contentType: contentTypeUid,
|
|
532
|
-
id: entryId
|
|
676
|
+
id: entryId,
|
|
677
|
+
locale
|
|
533
678
|
};
|
|
534
679
|
const response2 = await createReleaseAction({
|
|
535
680
|
body: { type: values.type, entry: releaseActionEntry },
|
|
@@ -560,8 +705,8 @@ const AddActionToReleaseModal = ({
|
|
|
560
705
|
}
|
|
561
706
|
}
|
|
562
707
|
};
|
|
563
|
-
return /* @__PURE__ */ jsxs(ModalLayout, { onClose: handleClose, labelledBy:
|
|
564
|
-
/* @__PURE__ */ jsx(ModalHeader, { children: /* @__PURE__ */ jsx(Typography, { id:
|
|
708
|
+
return /* @__PURE__ */ jsxs(ModalLayout, { onClose: handleClose, labelledBy: releaseHeaderId, children: [
|
|
709
|
+
/* @__PURE__ */ jsx(ModalHeader, { children: /* @__PURE__ */ jsx(Typography, { id: releaseHeaderId, fontWeight: "bold", textColor: "neutral800", children: formatMessage({
|
|
565
710
|
id: "content-releases.content-manager-edit-view.add-to-release",
|
|
566
711
|
defaultMessage: "Add to release"
|
|
567
712
|
}) }) }),
|
|
@@ -631,16 +776,15 @@ const AddActionToReleaseModal = ({
|
|
|
631
776
|
};
|
|
632
777
|
const CMReleasesContainer = () => {
|
|
633
778
|
const [isModalOpen, setIsModalOpen] = React.useState(false);
|
|
634
|
-
const { formatMessage } = useIntl();
|
|
635
|
-
const {
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
const
|
|
640
|
-
const canFetch = params?.id != null && contentType?.uid != null;
|
|
779
|
+
const { formatMessage, formatDate, formatTime } = useIntl();
|
|
780
|
+
const { id, slug } = useParams();
|
|
781
|
+
const isCreatingEntry = id === "create";
|
|
782
|
+
const contentTypeUid = slug;
|
|
783
|
+
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
784
|
+
const canFetch = id != null && contentTypeUid != null;
|
|
641
785
|
const fetchParams = canFetch ? {
|
|
642
|
-
contentTypeUid
|
|
643
|
-
entryId:
|
|
786
|
+
contentTypeUid,
|
|
787
|
+
entryId: id,
|
|
644
788
|
hasEntryAttached: true
|
|
645
789
|
} : skipToken;
|
|
646
790
|
const response = useGetReleasesForEntryQuery(fetchParams);
|
|
@@ -648,7 +792,7 @@ const CMReleasesContainer = () => {
|
|
|
648
792
|
if (!canFetch) {
|
|
649
793
|
return null;
|
|
650
794
|
}
|
|
651
|
-
if (isCreatingEntry
|
|
795
|
+
if (isCreatingEntry) {
|
|
652
796
|
return null;
|
|
653
797
|
}
|
|
654
798
|
const toggleModal = () => setIsModalOpen((prev) => !prev);
|
|
@@ -715,9 +859,40 @@ const CMReleasesContainer = () => {
|
|
|
715
859
|
)
|
|
716
860
|
}
|
|
717
861
|
),
|
|
718
|
-
/* @__PURE__ */ jsxs(Flex, { padding: 4, direction: "column", gap:
|
|
862
|
+
/* @__PURE__ */ jsxs(Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
|
|
719
863
|
/* @__PURE__ */ jsx(Typography, { fontSize: 2, fontWeight: "bold", variant: "omega", textColor: "neutral700", children: release.name }),
|
|
720
|
-
/* @__PURE__ */ jsx(
|
|
864
|
+
IsSchedulingEnabled && release.scheduledAt && release.timezone && /* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: formatMessage(
|
|
865
|
+
{
|
|
866
|
+
id: "content-releases.content-manager-edit-view.scheduled.date",
|
|
867
|
+
defaultMessage: "{date} at {time} ({offset})"
|
|
868
|
+
},
|
|
869
|
+
{
|
|
870
|
+
date: formatDate(new Date(release.scheduledAt), {
|
|
871
|
+
day: "2-digit",
|
|
872
|
+
month: "2-digit",
|
|
873
|
+
year: "numeric",
|
|
874
|
+
timeZone: release.timezone
|
|
875
|
+
}),
|
|
876
|
+
time: formatTime(new Date(release.scheduledAt), {
|
|
877
|
+
hourCycle: "h23",
|
|
878
|
+
timeZone: release.timezone
|
|
879
|
+
}),
|
|
880
|
+
offset: getTimezoneOffset(
|
|
881
|
+
release.timezone,
|
|
882
|
+
new Date(release.scheduledAt)
|
|
883
|
+
)
|
|
884
|
+
}
|
|
885
|
+
) }),
|
|
886
|
+
/* @__PURE__ */ jsx(CheckPermissions, { permissions: PERMISSIONS.deleteAction, children: /* @__PURE__ */ jsxs(ReleaseActionMenu.Root, { hasTriggerBorder: true, children: [
|
|
887
|
+
/* @__PURE__ */ jsx(ReleaseActionMenu.EditReleaseItem, { releaseId: release.id }),
|
|
888
|
+
/* @__PURE__ */ jsx(
|
|
889
|
+
ReleaseActionMenu.DeleteReleaseActionItem,
|
|
890
|
+
{
|
|
891
|
+
releaseId: release.id,
|
|
892
|
+
actionId: release.action.id
|
|
893
|
+
}
|
|
894
|
+
)
|
|
895
|
+
] }) })
|
|
721
896
|
] })
|
|
722
897
|
]
|
|
723
898
|
},
|
|
@@ -745,8 +920,8 @@ const CMReleasesContainer = () => {
|
|
|
745
920
|
AddActionToReleaseModal,
|
|
746
921
|
{
|
|
747
922
|
handleClose: toggleModal,
|
|
748
|
-
contentTypeUid
|
|
749
|
-
entryId:
|
|
923
|
+
contentTypeUid,
|
|
924
|
+
entryId: id
|
|
750
925
|
}
|
|
751
926
|
)
|
|
752
927
|
]
|
|
@@ -756,18 +931,15 @@ const CMReleasesContainer = () => {
|
|
|
756
931
|
const admin = {
|
|
757
932
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
758
933
|
register(app) {
|
|
759
|
-
if (window.strapi.features.isEnabled("cms-content-releases")
|
|
934
|
+
if (window.strapi.features.isEnabled("cms-content-releases")) {
|
|
760
935
|
app.addMenuLink({
|
|
761
|
-
to:
|
|
936
|
+
to: `plugins/${pluginId}`,
|
|
762
937
|
icon: PaperPlane,
|
|
763
938
|
intlLabel: {
|
|
764
939
|
id: `${pluginId}.plugin.name`,
|
|
765
940
|
defaultMessage: "Releases"
|
|
766
941
|
},
|
|
767
|
-
|
|
768
|
-
const { App } = await import("./App-a4843fda.mjs");
|
|
769
|
-
return App;
|
|
770
|
-
},
|
|
942
|
+
Component: () => import("./App-0Er6xxcq.mjs").then((mod) => ({ default: mod.App })),
|
|
771
943
|
permissions: PERMISSIONS.main
|
|
772
944
|
});
|
|
773
945
|
app.addMiddlewares([() => releaseApi.middleware]);
|
|
@@ -778,12 +950,26 @@ const admin = {
|
|
|
778
950
|
name: `${pluginId}-link`,
|
|
779
951
|
Component: CMReleasesContainer
|
|
780
952
|
});
|
|
953
|
+
} else if (!window.strapi.features.isEnabled("cms-content-releases") && window.strapi?.flags?.promoteEE) {
|
|
954
|
+
app.addMenuLink({
|
|
955
|
+
to: `/plugins/purchase-content-releases`,
|
|
956
|
+
icon: PaperPlane,
|
|
957
|
+
intlLabel: {
|
|
958
|
+
id: `${pluginId}.plugin.name`,
|
|
959
|
+
defaultMessage: "Releases"
|
|
960
|
+
},
|
|
961
|
+
async Component() {
|
|
962
|
+
const { PurchaseContentReleases } = await import("./PurchaseContentReleases-Clm0iACO.mjs");
|
|
963
|
+
return PurchaseContentReleases;
|
|
964
|
+
},
|
|
965
|
+
lockIcon: true
|
|
966
|
+
});
|
|
781
967
|
}
|
|
782
968
|
},
|
|
783
969
|
async registerTrads({ locales }) {
|
|
784
970
|
const importedTrads = await Promise.all(
|
|
785
971
|
locales.map((locale) => {
|
|
786
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-
|
|
972
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-WuuhP6Bn.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
|
|
787
973
|
return {
|
|
788
974
|
data: prefixPluginTranslations(data, "content-releases"),
|
|
789
975
|
locale
|
|
@@ -802,16 +988,20 @@ const admin = {
|
|
|
802
988
|
export {
|
|
803
989
|
PERMISSIONS as P,
|
|
804
990
|
ReleaseActionOptions as R,
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
991
|
+
useCreateReleaseMutation as a,
|
|
992
|
+
useGetReleaseQuery as b,
|
|
993
|
+
useUpdateReleaseMutation as c,
|
|
994
|
+
useDeleteReleaseMutation as d,
|
|
995
|
+
usePublishReleaseMutation as e,
|
|
996
|
+
useTypedDispatch as f,
|
|
997
|
+
getTimezoneOffset as g,
|
|
998
|
+
useGetReleaseActionsQuery as h,
|
|
813
999
|
isAxiosError as i,
|
|
1000
|
+
useUpdateReleaseActionMutation as j,
|
|
1001
|
+
ReleaseActionMenu as k,
|
|
1002
|
+
admin as l,
|
|
814
1003
|
pluginId as p,
|
|
815
|
-
|
|
1004
|
+
releaseApi as r,
|
|
1005
|
+
useGetReleasesQuery as u
|
|
816
1006
|
};
|
|
817
|
-
//# sourceMappingURL=index-
|
|
1007
|
+
//# sourceMappingURL=index-fJx1up7m.mjs.map
|