@strapi/content-releases 0.0.0-experimental.d4cb32ce579e12a4436d68036f2327132fba1309 → 0.0.0-experimental.d53e940834bf72ddc725f1d2fd36dac9abec30cb
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-xAkiD42p.mjs → App-B2R2exNT.mjs} +656 -625
- package/dist/_chunks/App-B2R2exNT.mjs.map +1 -0
- package/dist/_chunks/{App-OK4Xac-O.js → App-CEwOQkKT.js} +671 -641
- package/dist/_chunks/App-CEwOQkKT.js.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-YhAPgpG9.js → PurchaseContentReleases-Be3acS2L.js} +8 -7
- package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-Clm0iACO.mjs → PurchaseContentReleases-_MxP6-Dt.mjs} +9 -8
- package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs.map +1 -0
- package/dist/_chunks/{en-veqvqeEr.mjs → en-B9Ur3VsE.mjs} +14 -5
- package/dist/_chunks/en-B9Ur3VsE.mjs.map +1 -0
- package/dist/_chunks/{en-r0otWaln.js → en-DtFJ5ViE.js} +14 -5
- package/dist/_chunks/en-DtFJ5ViE.js.map +1 -0
- package/dist/_chunks/{index-JvA2_26n.js → index-BrWv-zV4.js} +258 -244
- package/dist/_chunks/index-BrWv-zV4.js.map +1 -0
- package/dist/_chunks/{index-exoiSU3V.mjs → index-DbmynICx.mjs} +264 -248
- package/dist/_chunks/index-DbmynICx.mjs.map +1 -0
- package/dist/admin/index.js +1 -15
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +2 -16
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/CMReleasesContainer.d.ts +22 -0
- package/dist/admin/src/components/RelativeTime.d.ts +28 -0
- package/dist/admin/src/components/ReleaseAction.d.ts +3 -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/ReleaseListCell.d.ts +0 -0
- package/dist/admin/src/components/ReleaseModal.d.ts +17 -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/release.d.ts +105 -0
- package/dist/admin/src/store/hooks.d.ts +7 -0
- package/dist/admin/src/utils/api.d.ts +6 -0
- package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
- package/dist/admin/src/utils/time.d.ts +1 -0
- package/dist/server/index.js +675 -232
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +675 -232
- 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 +20 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -0
- package/dist/server/src/controllers/release-action.d.ts +10 -0
- package/dist/server/src/controllers/release-action.d.ts.map +1 -0
- package/dist/server/src/controllers/release.d.ts +12 -0
- package/dist/server/src/controllers/release.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/release-action.d.ts +8 -0
- package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/release.d.ts +2 -0
- package/dist/server/src/controllers/validation/release.d.ts.map +1 -0
- package/dist/server/src/destroy.d.ts +5 -0
- package/dist/server/src/destroy.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +2096 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/migrations/index.d.ts +13 -0
- package/dist/server/src/migrations/index.d.ts.map +1 -0
- package/dist/server/src/register.d.ts +5 -0
- package/dist/server/src/register.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts +35 -0
- package/dist/server/src/routes/index.d.ts.map +1 -0
- package/dist/server/src/routes/release-action.d.ts +18 -0
- package/dist/server/src/routes/release-action.d.ts.map +1 -0
- package/dist/server/src/routes/release.d.ts +18 -0
- package/dist/server/src/routes/release.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +1826 -0
- package/dist/server/src/services/index.d.ts.map +1 -0
- package/dist/server/src/services/release.d.ts +66 -0
- package/dist/server/src/services/release.d.ts.map +1 -0
- package/dist/server/src/services/scheduling.d.ts +18 -0
- package/dist/server/src/services/scheduling.d.ts.map +1 -0
- package/dist/server/src/services/validation.d.ts +18 -0
- package/dist/server/src/services/validation.d.ts.map +1 -0
- package/dist/server/src/utils/index.d.ts +14 -0
- package/dist/server/src/utils/index.d.ts.map +1 -0
- package/dist/shared/contracts/release-actions.d.ts +131 -0
- package/dist/shared/contracts/release-actions.d.ts.map +1 -0
- package/dist/shared/contracts/releases.d.ts +182 -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 +29 -36
- package/dist/_chunks/App-OK4Xac-O.js.map +0 -1
- package/dist/_chunks/App-xAkiD42p.mjs.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-Clm0iACO.mjs.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-YhAPgpG9.js.map +0 -1
- package/dist/_chunks/en-r0otWaln.js.map +0 -1
- package/dist/_chunks/en-veqvqeEr.mjs.map +0 -1
- package/dist/_chunks/index-JvA2_26n.js.map +0 -1
- package/dist/_chunks/index-exoiSU3V.mjs.map +0 -1
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import { getFetchClient, useNotification, useAPIErrorHandler, CheckPermissions, useCMEditViewDataManager, NoContent, prefixPluginTranslations } from "@strapi/helper-plugin";
|
|
2
1
|
import { Cross, Pencil, More, Plus, PaperPlane } from "@strapi/icons";
|
|
3
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
3
|
import * as React from "react";
|
|
5
4
|
import { skipToken } from "@reduxjs/toolkit/query";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { adminApi, useNotification, useAPIErrorHandler, useRBAC, useAuth, isFetchError, useQueryParams } from "@strapi/admin/strapi-admin";
|
|
6
|
+
import { unstable_useDocument } from "@strapi/content-manager/strapi-admin";
|
|
7
|
+
import { Menu, Flex, Typography, AccessibleIcon, Field, VisuallyHidden, Box, Button, Modal, SingleSelect, SingleSelectOption, EmptyStateLayout, LinkButton } from "@strapi/design-system";
|
|
8
|
+
import { EmptyDocuments } from "@strapi/icons/symbols";
|
|
9
9
|
import { Formik, Form } from "formik";
|
|
10
10
|
import { useIntl } from "react-intl";
|
|
11
|
-
import {
|
|
11
|
+
import { Link, useParams } from "react-router-dom";
|
|
12
12
|
import * as yup from "yup";
|
|
13
|
-
import {
|
|
14
|
-
import styled from "styled-components";
|
|
15
|
-
import { useDispatch, useSelector } from "react-redux";
|
|
13
|
+
import { styled } from "styled-components";
|
|
16
14
|
const __variableDynamicImportRuntimeHelper = (glob, path) => {
|
|
17
15
|
const v = glob[path];
|
|
18
16
|
if (v) {
|
|
@@ -94,49 +92,9 @@ const PERMISSIONS = {
|
|
|
94
92
|
}
|
|
95
93
|
]
|
|
96
94
|
};
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
method,
|
|
101
|
-
data,
|
|
102
|
-
config
|
|
103
|
-
}) => {
|
|
104
|
-
try {
|
|
105
|
-
const { get, post, del, put } = getFetchClient();
|
|
106
|
-
if (method === "POST") {
|
|
107
|
-
const result2 = await post(url, data, config);
|
|
108
|
-
return { data: result2.data };
|
|
109
|
-
}
|
|
110
|
-
if (method === "DELETE") {
|
|
111
|
-
const result2 = await del(url, config);
|
|
112
|
-
return { data: result2.data };
|
|
113
|
-
}
|
|
114
|
-
if (method === "PUT") {
|
|
115
|
-
const result2 = await put(url, data, config);
|
|
116
|
-
return { data: result2.data };
|
|
117
|
-
}
|
|
118
|
-
const result = await get(url, config);
|
|
119
|
-
return { data: result.data };
|
|
120
|
-
} catch (error) {
|
|
121
|
-
const err = error;
|
|
122
|
-
return {
|
|
123
|
-
error: {
|
|
124
|
-
status: err.response?.status,
|
|
125
|
-
code: err.code,
|
|
126
|
-
response: {
|
|
127
|
-
data: err.response?.data
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
const isAxiosError = (err) => {
|
|
134
|
-
return typeof err === "object" && err !== null && "response" in err && typeof err.response === "object" && err.response !== null && "data" in err.response;
|
|
135
|
-
};
|
|
136
|
-
const releaseApi = createApi({
|
|
137
|
-
reducerPath: pluginId,
|
|
138
|
-
baseQuery: axiosBaseQuery,
|
|
139
|
-
tagTypes: ["Release", "ReleaseAction"],
|
|
95
|
+
const releaseApi = adminApi.enhanceEndpoints({
|
|
96
|
+
addTagTypes: ["Release", "ReleaseAction", "EntriesInRelease"]
|
|
97
|
+
}).injectEndpoints({
|
|
140
98
|
endpoints: (build) => {
|
|
141
99
|
return {
|
|
142
100
|
getReleasesForEntry: build.query({
|
|
@@ -251,6 +209,20 @@ const releaseApi = createApi({
|
|
|
251
209
|
{ type: "ReleaseAction", id: "LIST" }
|
|
252
210
|
]
|
|
253
211
|
}),
|
|
212
|
+
createManyReleaseActions: build.mutation({
|
|
213
|
+
query({ body, params }) {
|
|
214
|
+
return {
|
|
215
|
+
url: `/content-releases/${params.releaseId}/actions/bulk`,
|
|
216
|
+
method: "POST",
|
|
217
|
+
data: body
|
|
218
|
+
};
|
|
219
|
+
},
|
|
220
|
+
invalidatesTags: [
|
|
221
|
+
{ type: "Release", id: "LIST" },
|
|
222
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
223
|
+
{ type: "EntriesInRelease" }
|
|
224
|
+
]
|
|
225
|
+
}),
|
|
254
226
|
updateReleaseAction: build.mutation({
|
|
255
227
|
query({ body, params }) {
|
|
256
228
|
return {
|
|
@@ -266,13 +238,17 @@ const releaseApi = createApi({
|
|
|
266
238
|
...query
|
|
267
239
|
};
|
|
268
240
|
const patchResult = dispatch(
|
|
269
|
-
releaseApi.util.updateQueryData(
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
241
|
+
releaseApi.util.updateQueryData(
|
|
242
|
+
"getReleaseActions",
|
|
243
|
+
paramsWithoutActionId,
|
|
244
|
+
(draft) => {
|
|
245
|
+
const [key, index] = actionPath;
|
|
246
|
+
const action = draft.data[key][index];
|
|
247
|
+
if (action) {
|
|
248
|
+
action.type = body.type;
|
|
249
|
+
}
|
|
274
250
|
}
|
|
275
|
-
|
|
251
|
+
)
|
|
276
252
|
);
|
|
277
253
|
try {
|
|
278
254
|
await queryFulfilled;
|
|
@@ -288,9 +264,11 @@ const releaseApi = createApi({
|
|
|
288
264
|
method: "DELETE"
|
|
289
265
|
};
|
|
290
266
|
},
|
|
291
|
-
invalidatesTags: [
|
|
267
|
+
invalidatesTags: (result, error, arg) => [
|
|
292
268
|
{ type: "Release", id: "LIST" },
|
|
293
|
-
{ type: "
|
|
269
|
+
{ type: "Release", id: arg.params.releaseId },
|
|
270
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
271
|
+
{ type: "EntriesInRelease" }
|
|
294
272
|
]
|
|
295
273
|
}),
|
|
296
274
|
publishRelease: build.mutation({
|
|
@@ -309,7 +287,22 @@ const releaseApi = createApi({
|
|
|
309
287
|
method: "DELETE"
|
|
310
288
|
};
|
|
311
289
|
},
|
|
312
|
-
invalidatesTags: (
|
|
290
|
+
invalidatesTags: () => [{ type: "Release", id: "LIST" }, { type: "EntriesInRelease" }]
|
|
291
|
+
}),
|
|
292
|
+
getMappedEntriesInReleases: build.query({
|
|
293
|
+
query(params) {
|
|
294
|
+
return {
|
|
295
|
+
url: "/content-releases/mapEntriesToReleases",
|
|
296
|
+
method: "GET",
|
|
297
|
+
config: {
|
|
298
|
+
params
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
},
|
|
302
|
+
transformResponse(response) {
|
|
303
|
+
return response.data;
|
|
304
|
+
},
|
|
305
|
+
providesTags: [{ type: "EntriesInRelease" }]
|
|
313
306
|
})
|
|
314
307
|
};
|
|
315
308
|
}
|
|
@@ -321,11 +314,13 @@ const {
|
|
|
321
314
|
useGetReleaseActionsQuery,
|
|
322
315
|
useCreateReleaseMutation,
|
|
323
316
|
useCreateReleaseActionMutation,
|
|
317
|
+
useCreateManyReleaseActionsMutation,
|
|
324
318
|
useUpdateReleaseMutation,
|
|
325
319
|
useUpdateReleaseActionMutation,
|
|
326
320
|
usePublishReleaseMutation,
|
|
327
321
|
useDeleteReleaseActionMutation,
|
|
328
|
-
useDeleteReleaseMutation
|
|
322
|
+
useDeleteReleaseMutation,
|
|
323
|
+
useGetMappedEntriesInReleasesQuery
|
|
329
324
|
} = releaseApi;
|
|
330
325
|
const getTimezoneOffset = (timezone, date) => {
|
|
331
326
|
try {
|
|
@@ -343,16 +338,12 @@ const getTimezoneOffset = (timezone, date) => {
|
|
|
343
338
|
return "";
|
|
344
339
|
}
|
|
345
340
|
};
|
|
346
|
-
const useTypedDispatch = useDispatch;
|
|
347
|
-
const useTypedSelector = useSelector;
|
|
348
341
|
const StyledMenuItem = styled(Menu.Item)`
|
|
349
342
|
&:hover {
|
|
350
|
-
background: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}100`]};
|
|
343
|
+
background: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}100`]};
|
|
351
344
|
|
|
352
345
|
svg {
|
|
353
|
-
|
|
354
|
-
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
355
|
-
}
|
|
346
|
+
fill: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}600`]};
|
|
356
347
|
}
|
|
357
348
|
|
|
358
349
|
a {
|
|
@@ -361,9 +352,7 @@ const StyledMenuItem = styled(Menu.Item)`
|
|
|
361
352
|
}
|
|
362
353
|
|
|
363
354
|
svg {
|
|
364
|
-
|
|
365
|
-
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
366
|
-
}
|
|
355
|
+
fill: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}600`]};
|
|
367
356
|
}
|
|
368
357
|
|
|
369
358
|
a {
|
|
@@ -375,15 +364,14 @@ const StyledMenuItem = styled(Menu.Item)`
|
|
|
375
364
|
width: 100%;
|
|
376
365
|
}
|
|
377
366
|
`;
|
|
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}`};
|
|
381
|
-
`;
|
|
382
367
|
const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
383
368
|
const { formatMessage } = useIntl();
|
|
384
|
-
const toggleNotification = useNotification();
|
|
369
|
+
const { toggleNotification } = useNotification();
|
|
385
370
|
const { formatAPIError } = useAPIErrorHandler();
|
|
386
371
|
const [deleteReleaseAction] = useDeleteReleaseActionMutation();
|
|
372
|
+
const {
|
|
373
|
+
allowedActions: { canDeleteAction }
|
|
374
|
+
} = useRBAC(PERMISSIONS);
|
|
387
375
|
const handleDeleteAction = async () => {
|
|
388
376
|
const response = await deleteReleaseAction({
|
|
389
377
|
params: { releaseId, actionId }
|
|
@@ -399,26 +387,29 @@ const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
|
399
387
|
return;
|
|
400
388
|
}
|
|
401
389
|
if ("error" in response) {
|
|
402
|
-
if (
|
|
390
|
+
if (isFetchError(response.error)) {
|
|
403
391
|
toggleNotification({
|
|
404
|
-
type: "
|
|
392
|
+
type: "danger",
|
|
405
393
|
message: formatAPIError(response.error)
|
|
406
394
|
});
|
|
407
395
|
} else {
|
|
408
396
|
toggleNotification({
|
|
409
|
-
type: "
|
|
397
|
+
type: "danger",
|
|
410
398
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
411
399
|
});
|
|
412
400
|
}
|
|
413
401
|
}
|
|
414
402
|
};
|
|
415
|
-
|
|
416
|
-
|
|
403
|
+
if (!canDeleteAction) {
|
|
404
|
+
return null;
|
|
405
|
+
}
|
|
406
|
+
return /* @__PURE__ */ jsx(StyledMenuItem, { $variant: "danger", onSelect: handleDeleteAction, children: /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
407
|
+
/* @__PURE__ */ jsx(Cross, { width: "1.6rem", height: "1.6rem" }),
|
|
417
408
|
/* @__PURE__ */ jsx(Typography, { textColor: "danger600", variant: "omega", children: formatMessage({
|
|
418
409
|
id: "content-releases.content-manager-edit-view.remove-from-release",
|
|
419
410
|
defaultMessage: "Remove from release"
|
|
420
411
|
}) })
|
|
421
|
-
] }) })
|
|
412
|
+
] }) });
|
|
422
413
|
};
|
|
423
414
|
const ReleaseActionEntryLinkItem = ({
|
|
424
415
|
contentTypeUid,
|
|
@@ -426,66 +417,84 @@ const ReleaseActionEntryLinkItem = ({
|
|
|
426
417
|
locale
|
|
427
418
|
}) => {
|
|
428
419
|
const { formatMessage } = useIntl();
|
|
429
|
-
const
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
!
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
420
|
+
const userPermissions = useAuth("ReleaseActionEntryLinkItem", (state) => state.permissions);
|
|
421
|
+
const canUpdateEntryForLocale = React.useMemo(() => {
|
|
422
|
+
const updatePermissions = userPermissions.find(
|
|
423
|
+
(permission) => permission.subject === contentTypeUid && permission.action === "plugin::content-manager.explorer.update"
|
|
424
|
+
);
|
|
425
|
+
if (!updatePermissions) {
|
|
426
|
+
return false;
|
|
427
|
+
}
|
|
428
|
+
return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));
|
|
429
|
+
}, [contentTypeUid, locale, userPermissions]);
|
|
430
|
+
const {
|
|
431
|
+
allowedActions: { canUpdate: canUpdateContentType }
|
|
432
|
+
} = useRBAC({
|
|
433
|
+
updateContentType: [
|
|
434
|
+
{
|
|
435
|
+
action: "plugin::content-manager.explorer.update",
|
|
436
|
+
subject: contentTypeUid
|
|
437
|
+
}
|
|
438
|
+
]
|
|
439
|
+
});
|
|
440
|
+
if (!canUpdateContentType || !canUpdateEntryForLocale) {
|
|
441
|
+
return null;
|
|
442
|
+
}
|
|
438
443
|
return /* @__PURE__ */ jsx(
|
|
439
|
-
|
|
444
|
+
StyledMenuItem,
|
|
440
445
|
{
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
children:
|
|
448
|
-
|
|
449
|
-
{
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
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
|
-
) })
|
|
446
|
+
tag: Link,
|
|
447
|
+
isLink: true,
|
|
448
|
+
to: {
|
|
449
|
+
pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
|
|
450
|
+
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
451
|
+
},
|
|
452
|
+
children: /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
453
|
+
/* @__PURE__ */ jsx(Pencil, { width: "1.6rem", height: "1.6rem" }),
|
|
454
|
+
/* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage({
|
|
455
|
+
id: "content-releases.content-manager-edit-view.edit-entry",
|
|
456
|
+
defaultMessage: "Edit entry"
|
|
457
|
+
}) })
|
|
458
|
+
] })
|
|
462
459
|
}
|
|
463
460
|
);
|
|
464
461
|
};
|
|
465
|
-
const
|
|
462
|
+
const EditReleaseItem = ({ releaseId }) => {
|
|
463
|
+
const { formatMessage } = useIntl();
|
|
464
|
+
return (
|
|
465
|
+
/* @ts-expect-error inference isn't working in DS */
|
|
466
|
+
/* @__PURE__ */ jsx(StyledMenuItem, { tag: Link, isLink: true, to: `/plugins/content-releases/${releaseId}`, children: /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
467
|
+
/* @__PURE__ */ jsx(Pencil, { width: "1.6rem", height: "1.6rem" }),
|
|
468
|
+
/* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage({
|
|
469
|
+
id: "content-releases.content-manager-edit-view.edit-release",
|
|
470
|
+
defaultMessage: "Edit release"
|
|
471
|
+
}) })
|
|
472
|
+
] }) })
|
|
473
|
+
);
|
|
474
|
+
};
|
|
475
|
+
const Root = ({ children }) => {
|
|
466
476
|
const { formatMessage } = useIntl();
|
|
477
|
+
const { allowedActions } = useRBAC(PERMISSIONS);
|
|
467
478
|
return (
|
|
468
479
|
// A user can access the dropdown if they have permissions to delete a release-action OR update a release
|
|
469
|
-
|
|
470
|
-
/* @__PURE__ */ jsx(
|
|
471
|
-
|
|
480
|
+
allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxs(Menu.Root, { children: [
|
|
481
|
+
/* @__PURE__ */ jsx(Menu.Trigger, { paddingLeft: 2, paddingRight: 2, children: /* @__PURE__ */ jsx(
|
|
482
|
+
AccessibleIcon,
|
|
472
483
|
{
|
|
473
|
-
|
|
474
|
-
paddingLeft: 2,
|
|
475
|
-
paddingRight: 2,
|
|
476
|
-
"aria-label": formatMessage({
|
|
484
|
+
label: formatMessage({
|
|
477
485
|
id: "content-releases.content-manager-edit-view.release-action-menu",
|
|
478
486
|
defaultMessage: "Release action options"
|
|
479
487
|
}),
|
|
480
|
-
|
|
488
|
+
children: /* @__PURE__ */ jsx(More, {})
|
|
481
489
|
}
|
|
482
|
-
),
|
|
490
|
+
) }),
|
|
483
491
|
/* @__PURE__ */ jsx(Menu.Content, { top: 1, popoverPlacement: "bottom-end", children })
|
|
484
|
-
] })
|
|
492
|
+
] }) : null
|
|
485
493
|
);
|
|
486
494
|
};
|
|
487
495
|
const ReleaseActionMenu = {
|
|
488
496
|
Root,
|
|
497
|
+
EditReleaseItem,
|
|
489
498
|
DeleteReleaseActionItem,
|
|
490
499
|
ReleaseActionEntryLinkItem
|
|
491
500
|
};
|
|
@@ -495,11 +504,11 @@ const getBorderLeftRadiusValue = (actionType) => {
|
|
|
495
504
|
const getBorderRightRadiusValue = (actionType) => {
|
|
496
505
|
return actionType === "publish" ? 0 : 1;
|
|
497
506
|
};
|
|
498
|
-
const FieldWrapper = styled(Field)`
|
|
499
|
-
border-top-left-radius: ${({ actionType, theme }) => theme.spaces[getBorderLeftRadiusValue(actionType)]};
|
|
500
|
-
border-bottom-left-radius: ${({ actionType, theme }) => theme.spaces[getBorderLeftRadiusValue(actionType)]};
|
|
501
|
-
border-top-right-radius: ${({ actionType, theme }) => theme.spaces[getBorderRightRadiusValue(actionType)]};
|
|
502
|
-
border-bottom-right-radius: ${({ actionType, theme }) => theme.spaces[getBorderRightRadiusValue(actionType)]};
|
|
507
|
+
const FieldWrapper = styled(Field.Root)`
|
|
508
|
+
border-top-left-radius: ${({ $actionType, theme }) => theme.spaces[getBorderLeftRadiusValue($actionType)]};
|
|
509
|
+
border-bottom-left-radius: ${({ $actionType, theme }) => theme.spaces[getBorderLeftRadiusValue($actionType)]};
|
|
510
|
+
border-top-right-radius: ${({ $actionType, theme }) => theme.spaces[getBorderRightRadiusValue($actionType)]};
|
|
511
|
+
border-bottom-right-radius: ${({ $actionType, theme }) => theme.spaces[getBorderRightRadiusValue($actionType)]};
|
|
503
512
|
|
|
504
513
|
> label {
|
|
505
514
|
color: inherit;
|
|
@@ -510,14 +519,14 @@ const FieldWrapper = styled(Field)`
|
|
|
510
519
|
}
|
|
511
520
|
|
|
512
521
|
&[data-checked='true'] {
|
|
513
|
-
color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
514
|
-
background-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary100 : theme.colors.danger100};
|
|
515
|
-
border-color: ${({ theme, actionType }) => actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
522
|
+
color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
523
|
+
background-color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary100 : theme.colors.danger100};
|
|
524
|
+
border-color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
516
525
|
}
|
|
517
526
|
|
|
518
527
|
&[data-checked='false'] {
|
|
519
|
-
border-left: ${({ actionType }) => actionType === "unpublish" && "none"};
|
|
520
|
-
border-right: ${({ actionType }) => actionType === "publish" && "none"};
|
|
528
|
+
border-left: ${({ $actionType }) => $actionType === "unpublish" && "none"};
|
|
529
|
+
border-right: ${({ $actionType }) => $actionType === "publish" && "none"};
|
|
521
530
|
}
|
|
522
531
|
|
|
523
532
|
&[data-checked='false'][data-disabled='false']:hover {
|
|
@@ -546,7 +555,7 @@ const ActionOption = ({
|
|
|
546
555
|
return /* @__PURE__ */ jsx(
|
|
547
556
|
FieldWrapper,
|
|
548
557
|
{
|
|
549
|
-
actionType,
|
|
558
|
+
$actionType: actionType,
|
|
550
559
|
background: "primary0",
|
|
551
560
|
borderColor: "neutral200",
|
|
552
561
|
color: selected === actionType ? "primary600" : "neutral600",
|
|
@@ -554,12 +563,11 @@ const ActionOption = ({
|
|
|
554
563
|
cursor: "pointer",
|
|
555
564
|
"data-checked": selected === actionType,
|
|
556
565
|
"data-disabled": disabled && selected !== actionType,
|
|
557
|
-
children: /* @__PURE__ */ jsxs(
|
|
566
|
+
children: /* @__PURE__ */ jsxs(Field.Label, { children: [
|
|
558
567
|
/* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx(
|
|
559
|
-
|
|
568
|
+
Field.Input,
|
|
560
569
|
{
|
|
561
570
|
type: "radio",
|
|
562
|
-
id: `${name}-${actionType}`,
|
|
563
571
|
name,
|
|
564
572
|
checked: selected === actionType,
|
|
565
573
|
onChange: handleChange,
|
|
@@ -612,19 +620,20 @@ const INITIAL_VALUES = {
|
|
|
612
620
|
const NoReleases = () => {
|
|
613
621
|
const { formatMessage } = useIntl();
|
|
614
622
|
return /* @__PURE__ */ jsx(
|
|
615
|
-
|
|
623
|
+
EmptyStateLayout,
|
|
616
624
|
{
|
|
617
|
-
|
|
625
|
+
icon: /* @__PURE__ */ jsx(EmptyDocuments, { width: "16rem" }),
|
|
626
|
+
content: formatMessage({
|
|
618
627
|
id: "content-releases.content-manager-edit-view.add-to-release.no-releases-message",
|
|
619
628
|
defaultMessage: "No available releases. Open the list of releases and create a new one from there."
|
|
620
|
-
},
|
|
629
|
+
}),
|
|
621
630
|
action: /* @__PURE__ */ jsx(
|
|
622
631
|
LinkButton,
|
|
623
632
|
{
|
|
624
633
|
to: {
|
|
625
634
|
pathname: "/plugins/content-releases"
|
|
626
635
|
},
|
|
627
|
-
|
|
636
|
+
tag: Link,
|
|
628
637
|
variant: "secondary",
|
|
629
638
|
children: formatMessage({
|
|
630
639
|
id: "content-releases.content-manager-edit-view.add-to-release.redirect-button",
|
|
@@ -636,15 +645,16 @@ const NoReleases = () => {
|
|
|
636
645
|
);
|
|
637
646
|
};
|
|
638
647
|
const AddActionToReleaseModal = ({
|
|
639
|
-
|
|
648
|
+
open,
|
|
649
|
+
onOpenChange,
|
|
640
650
|
contentTypeUid,
|
|
641
651
|
entryId
|
|
642
652
|
}) => {
|
|
643
|
-
const releaseHeaderId = React.useId();
|
|
644
653
|
const { formatMessage } = useIntl();
|
|
645
|
-
const toggleNotification = useNotification();
|
|
654
|
+
const { toggleNotification } = useNotification();
|
|
646
655
|
const { formatAPIError } = useAPIErrorHandler();
|
|
647
|
-
const {
|
|
656
|
+
const [{ query }] = useQueryParams();
|
|
657
|
+
const locale = query.plugins?.i18n?.locale;
|
|
648
658
|
const response = useGetReleasesForEntryQuery({
|
|
649
659
|
contentTypeUid,
|
|
650
660
|
entryId,
|
|
@@ -653,7 +663,6 @@ const AddActionToReleaseModal = ({
|
|
|
653
663
|
const releases = response.data?.data;
|
|
654
664
|
const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();
|
|
655
665
|
const handleSubmit = async (values) => {
|
|
656
|
-
const locale = modifiedData.locale;
|
|
657
666
|
const releaseActionEntry = {
|
|
658
667
|
contentType: contentTypeUid,
|
|
659
668
|
id: entryId,
|
|
@@ -671,25 +680,25 @@ const AddActionToReleaseModal = ({
|
|
|
671
680
|
defaultMessage: "Entry added to release"
|
|
672
681
|
})
|
|
673
682
|
});
|
|
674
|
-
|
|
683
|
+
onOpenChange();
|
|
675
684
|
return;
|
|
676
685
|
}
|
|
677
686
|
if ("error" in response2) {
|
|
678
|
-
if (
|
|
687
|
+
if (isFetchError(response2.error)) {
|
|
679
688
|
toggleNotification({
|
|
680
|
-
type: "
|
|
689
|
+
type: "danger",
|
|
681
690
|
message: formatAPIError(response2.error)
|
|
682
691
|
});
|
|
683
692
|
} else {
|
|
684
693
|
toggleNotification({
|
|
685
|
-
type: "
|
|
694
|
+
type: "danger",
|
|
686
695
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
687
696
|
});
|
|
688
697
|
}
|
|
689
698
|
}
|
|
690
699
|
};
|
|
691
|
-
return /* @__PURE__ */
|
|
692
|
-
/* @__PURE__ */ jsx(
|
|
700
|
+
return /* @__PURE__ */ jsx(Modal.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxs(Modal.Content, { children: [
|
|
701
|
+
/* @__PURE__ */ jsx(Modal.Header, { children: /* @__PURE__ */ jsx(Modal.Title, { fontWeight: "bold", children: formatMessage({
|
|
693
702
|
id: "content-releases.content-manager-edit-view.add-to-release",
|
|
694
703
|
defaultMessage: "Add to release"
|
|
695
704
|
}) }) }),
|
|
@@ -701,25 +710,26 @@ const AddActionToReleaseModal = ({
|
|
|
701
710
|
initialValues: INITIAL_VALUES,
|
|
702
711
|
children: ({ values, setFieldValue }) => {
|
|
703
712
|
return /* @__PURE__ */ jsxs(Form, { children: [
|
|
704
|
-
releases?.length === 0 ? /* @__PURE__ */ jsx(NoReleases, {}) : /* @__PURE__ */ jsx(
|
|
705
|
-
/* @__PURE__ */ jsx(Box, { paddingBottom: 6, children: /* @__PURE__ */
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
713
|
+
releases?.length === 0 ? /* @__PURE__ */ jsx(NoReleases, {}) : /* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
|
|
714
|
+
/* @__PURE__ */ jsx(Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxs(Field.Root, { required: true, children: [
|
|
715
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
716
|
+
id: "content-releases.content-manager-edit-view.add-to-release.select-label",
|
|
717
|
+
defaultMessage: "Select a release"
|
|
718
|
+
}) }),
|
|
719
|
+
/* @__PURE__ */ jsx(
|
|
720
|
+
SingleSelect,
|
|
721
|
+
{
|
|
722
|
+
placeholder: formatMessage({
|
|
723
|
+
id: "content-releases.content-manager-edit-view.add-to-release.select-placeholder",
|
|
724
|
+
defaultMessage: "Select"
|
|
725
|
+
}),
|
|
726
|
+
onChange: (value) => setFieldValue("releaseId", value),
|
|
727
|
+
value: values.releaseId,
|
|
728
|
+
children: releases?.map((release) => /* @__PURE__ */ jsx(SingleSelectOption, { value: release.id, children: release.name }, release.id))
|
|
729
|
+
}
|
|
730
|
+
)
|
|
731
|
+
] }) }),
|
|
732
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
723
733
|
id: "content-releases.content-manager-edit-view.add-to-release.action-type-label",
|
|
724
734
|
defaultMessage: "What do you want to do with this entry?"
|
|
725
735
|
}) }),
|
|
@@ -732,43 +742,37 @@ const AddActionToReleaseModal = ({
|
|
|
732
742
|
}
|
|
733
743
|
)
|
|
734
744
|
] }) }),
|
|
735
|
-
/* @__PURE__ */
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
* for yup.string().required(), even when the value is falsy (including empty string)
|
|
746
|
-
*/
|
|
747
|
-
/* @__PURE__ */ jsx(Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
|
|
748
|
-
id: "content-releases.content-manager-edit-view.add-to-release.continue-button",
|
|
749
|
-
defaultMessage: "Continue"
|
|
750
|
-
}) })
|
|
751
|
-
)
|
|
752
|
-
}
|
|
753
|
-
)
|
|
745
|
+
/* @__PURE__ */ jsxs(Modal.Footer, { children: [
|
|
746
|
+
/* @__PURE__ */ jsx(Modal.Close, { children: /* @__PURE__ */ jsx(Button, { variant: "tertiary", name: "cancel", children: formatMessage({
|
|
747
|
+
id: "content-releases.content-manager-edit-view.add-to-release.cancel-button",
|
|
748
|
+
defaultMessage: "Cancel"
|
|
749
|
+
}) }) }),
|
|
750
|
+
/* @__PURE__ */ jsx(Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
|
|
751
|
+
id: "content-releases.content-manager-edit-view.add-to-release.continue-button",
|
|
752
|
+
defaultMessage: "Continue"
|
|
753
|
+
}) })
|
|
754
|
+
] })
|
|
754
755
|
] });
|
|
755
756
|
}
|
|
756
757
|
}
|
|
757
758
|
)
|
|
758
|
-
] });
|
|
759
|
+
] }) });
|
|
759
760
|
};
|
|
760
761
|
const CMReleasesContainer = () => {
|
|
761
762
|
const [isModalOpen, setIsModalOpen] = React.useState(false);
|
|
762
763
|
const { formatMessage, formatDate, formatTime } = useIntl();
|
|
763
|
-
const {
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
} =
|
|
764
|
+
const { id, slug, collectionType } = useParams();
|
|
765
|
+
const isCreatingEntry = id === "create";
|
|
766
|
+
const entryId = parseInt(id, 10);
|
|
767
|
+
const { allowedActions } = useRBAC(PERMISSIONS);
|
|
768
|
+
const { canCreateAction, canRead: canMain, canDeleteAction } = allowedActions;
|
|
769
|
+
const { schema } = unstable_useDocument({
|
|
770
|
+
collectionType,
|
|
771
|
+
model: slug
|
|
772
|
+
});
|
|
773
|
+
const hasDraftAndPublish = schema?.options?.draftAndPublish;
|
|
769
774
|
const contentTypeUid = slug;
|
|
770
|
-
const
|
|
771
|
-
const canFetch = entryId != null && contentTypeUid != null;
|
|
775
|
+
const canFetch = id != null && contentTypeUid != null;
|
|
772
776
|
const fetchParams = canFetch ? {
|
|
773
777
|
contentTypeUid,
|
|
774
778
|
entryId,
|
|
@@ -789,10 +793,13 @@ const CMReleasesContainer = () => {
|
|
|
789
793
|
}
|
|
790
794
|
return `success${shade}`;
|
|
791
795
|
};
|
|
792
|
-
|
|
796
|
+
if (!canMain) {
|
|
797
|
+
return null;
|
|
798
|
+
}
|
|
799
|
+
return /* @__PURE__ */ jsxs(
|
|
793
800
|
Box,
|
|
794
801
|
{
|
|
795
|
-
|
|
802
|
+
tag: "aside",
|
|
796
803
|
"aria-label": formatMessage({
|
|
797
804
|
id: "content-releases.plugin.name",
|
|
798
805
|
defaultMessage: "Releases"
|
|
@@ -816,7 +823,7 @@ const CMReleasesContainer = () => {
|
|
|
816
823
|
alignItems: "start",
|
|
817
824
|
borderWidth: "1px",
|
|
818
825
|
borderStyle: "solid",
|
|
819
|
-
borderColor: getReleaseColorVariant(release.
|
|
826
|
+
borderColor: getReleaseColorVariant(release.actions[0].type, "200"),
|
|
820
827
|
overflow: "hidden",
|
|
821
828
|
hasRadius: true,
|
|
822
829
|
children: [
|
|
@@ -827,28 +834,28 @@ const CMReleasesContainer = () => {
|
|
|
827
834
|
paddingBottom: 3,
|
|
828
835
|
paddingLeft: 4,
|
|
829
836
|
paddingRight: 4,
|
|
830
|
-
background: getReleaseColorVariant(release.
|
|
837
|
+
background: getReleaseColorVariant(release.actions[0].type, "100"),
|
|
831
838
|
width: "100%",
|
|
832
839
|
children: /* @__PURE__ */ jsx(
|
|
833
840
|
Typography,
|
|
834
841
|
{
|
|
835
842
|
fontSize: 1,
|
|
836
843
|
variant: "pi",
|
|
837
|
-
textColor: getReleaseColorVariant(release.
|
|
844
|
+
textColor: getReleaseColorVariant(release.actions[0].type, "600"),
|
|
838
845
|
children: formatMessage(
|
|
839
846
|
{
|
|
840
847
|
id: "content-releases.content-manager-edit-view.list-releases.title",
|
|
841
848
|
defaultMessage: "{isPublish, select, true {Will be published in} other {Will be unpublished in}}"
|
|
842
849
|
},
|
|
843
|
-
{ isPublish: release.
|
|
850
|
+
{ isPublish: release.actions[0].type === "publish" }
|
|
844
851
|
)
|
|
845
852
|
}
|
|
846
853
|
)
|
|
847
854
|
}
|
|
848
855
|
),
|
|
849
|
-
/* @__PURE__ */ jsxs(Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
|
|
856
|
+
/* @__PURE__ */ jsx(Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: /* @__PURE__ */ jsxs(Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
|
|
850
857
|
/* @__PURE__ */ jsx(Typography, { fontSize: 2, fontWeight: "bold", variant: "omega", textColor: "neutral700", children: release.name }),
|
|
851
|
-
|
|
858
|
+
release.scheduledAt && release.timezone && /* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: formatMessage(
|
|
852
859
|
{
|
|
853
860
|
id: "content-releases.content-manager-edit-view.scheduled.date",
|
|
854
861
|
defaultMessage: "{date} at {time} ({offset})"
|
|
@@ -870,20 +877,23 @@ const CMReleasesContainer = () => {
|
|
|
870
877
|
)
|
|
871
878
|
}
|
|
872
879
|
) }),
|
|
873
|
-
|
|
874
|
-
ReleaseActionMenu.
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
880
|
+
canDeleteAction ? /* @__PURE__ */ jsxs(ReleaseActionMenu.Root, { hasTriggerBorder: true, children: [
|
|
881
|
+
/* @__PURE__ */ jsx(ReleaseActionMenu.EditReleaseItem, { releaseId: release.id }),
|
|
882
|
+
/* @__PURE__ */ jsx(
|
|
883
|
+
ReleaseActionMenu.DeleteReleaseActionItem,
|
|
884
|
+
{
|
|
885
|
+
releaseId: release.id,
|
|
886
|
+
actionId: release.actions[0].id
|
|
887
|
+
}
|
|
888
|
+
)
|
|
889
|
+
] }) : null
|
|
890
|
+
] }) })
|
|
881
891
|
]
|
|
882
892
|
},
|
|
883
893
|
release.id
|
|
884
894
|
);
|
|
885
895
|
}),
|
|
886
|
-
|
|
896
|
+
canCreateAction ? /* @__PURE__ */ jsx(
|
|
887
897
|
Button,
|
|
888
898
|
{
|
|
889
899
|
justifyContent: "center",
|
|
@@ -898,42 +908,48 @@ const CMReleasesContainer = () => {
|
|
|
898
908
|
defaultMessage: "Add to release"
|
|
899
909
|
})
|
|
900
910
|
}
|
|
901
|
-
)
|
|
911
|
+
) : null
|
|
902
912
|
] }),
|
|
903
|
-
|
|
913
|
+
/* @__PURE__ */ jsx(
|
|
904
914
|
AddActionToReleaseModal,
|
|
905
915
|
{
|
|
906
|
-
|
|
916
|
+
open: isModalOpen,
|
|
917
|
+
onOpenChange: toggleModal,
|
|
907
918
|
contentTypeUid,
|
|
908
919
|
entryId
|
|
909
920
|
}
|
|
910
921
|
)
|
|
911
922
|
]
|
|
912
923
|
}
|
|
913
|
-
)
|
|
924
|
+
);
|
|
925
|
+
};
|
|
926
|
+
const pluginId = "content-releases";
|
|
927
|
+
const prefixPluginTranslations = (trad, pluginId2) => {
|
|
928
|
+
if (!pluginId2) {
|
|
929
|
+
throw new TypeError("pluginId can't be empty");
|
|
930
|
+
}
|
|
931
|
+
return Object.keys(trad).reduce((acc, current) => {
|
|
932
|
+
acc[`${pluginId2}.${current}`] = trad[current];
|
|
933
|
+
return acc;
|
|
934
|
+
}, {});
|
|
914
935
|
};
|
|
915
936
|
const admin = {
|
|
916
937
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
917
938
|
register(app) {
|
|
939
|
+
app.createHook("ContentReleases/pages/ReleaseDetails/add-locale-in-releases");
|
|
918
940
|
if (window.strapi.features.isEnabled("cms-content-releases")) {
|
|
919
941
|
app.addMenuLink({
|
|
920
|
-
to:
|
|
942
|
+
to: `plugins/${pluginId}`,
|
|
921
943
|
icon: PaperPlane,
|
|
922
944
|
intlLabel: {
|
|
923
945
|
id: `${pluginId}.plugin.name`,
|
|
924
946
|
defaultMessage: "Releases"
|
|
925
947
|
},
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
},
|
|
930
|
-
permissions: PERMISSIONS.main
|
|
931
|
-
});
|
|
932
|
-
app.addMiddlewares([() => releaseApi.middleware]);
|
|
933
|
-
app.addReducers({
|
|
934
|
-
[releaseApi.reducerPath]: releaseApi.reducer
|
|
948
|
+
Component: () => import("./App-B2R2exNT.mjs").then((mod) => ({ default: mod.App })),
|
|
949
|
+
permissions: PERMISSIONS.main,
|
|
950
|
+
position: 2
|
|
935
951
|
});
|
|
936
|
-
app.
|
|
952
|
+
app.getPlugin("content-manager").injectComponent("editView", "right-links", {
|
|
937
953
|
name: `${pluginId}-link`,
|
|
938
954
|
Component: CMReleasesContainer
|
|
939
955
|
});
|
|
@@ -945,18 +961,20 @@ const admin = {
|
|
|
945
961
|
id: `${pluginId}.plugin.name`,
|
|
946
962
|
defaultMessage: "Releases"
|
|
947
963
|
},
|
|
964
|
+
permissions: [],
|
|
948
965
|
async Component() {
|
|
949
|
-
const { PurchaseContentReleases } = await import("./PurchaseContentReleases-
|
|
950
|
-
return PurchaseContentReleases;
|
|
966
|
+
const { PurchaseContentReleases } = await import("./PurchaseContentReleases-_MxP6-Dt.mjs");
|
|
967
|
+
return { default: PurchaseContentReleases };
|
|
951
968
|
},
|
|
952
|
-
|
|
969
|
+
licenseOnly: true,
|
|
970
|
+
position: 2
|
|
953
971
|
});
|
|
954
972
|
}
|
|
955
973
|
},
|
|
956
974
|
async registerTrads({ locales }) {
|
|
957
975
|
const importedTrads = await Promise.all(
|
|
958
976
|
locales.map((locale) => {
|
|
959
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-
|
|
977
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-B9Ur3VsE.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
|
|
960
978
|
return {
|
|
961
979
|
data: prefixPluginTranslations(data, "content-releases"),
|
|
962
980
|
locale
|
|
@@ -975,20 +993,18 @@ const admin = {
|
|
|
975
993
|
export {
|
|
976
994
|
PERMISSIONS as P,
|
|
977
995
|
ReleaseActionOptions as R,
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
996
|
+
useCreateReleaseMutation as a,
|
|
997
|
+
useGetReleaseQuery as b,
|
|
998
|
+
useUpdateReleaseMutation as c,
|
|
999
|
+
useDeleteReleaseMutation as d,
|
|
1000
|
+
usePublishReleaseMutation as e,
|
|
1001
|
+
useGetReleaseActionsQuery as f,
|
|
984
1002
|
getTimezoneOffset as g,
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
useCreateReleaseMutation as k,
|
|
989
|
-
admin as l,
|
|
1003
|
+
useUpdateReleaseActionMutation as h,
|
|
1004
|
+
ReleaseActionMenu as i,
|
|
1005
|
+
admin as j,
|
|
990
1006
|
pluginId as p,
|
|
991
1007
|
releaseApi as r,
|
|
992
|
-
|
|
1008
|
+
useGetReleasesQuery as u
|
|
993
1009
|
};
|
|
994
|
-
//# sourceMappingURL=index-
|
|
1010
|
+
//# sourceMappingURL=index-DbmynICx.mjs.map
|