@strapi/content-releases 0.0.0-experimental.d8a676a242377cee820b59b21a05d47290d9ac73 → 0.0.0-experimental.d954d57341a6623992a0d211daaec8e245c3517d
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-p8aKBitd.js → App-CqbuK4M6.js} +426 -427
- package/dist/_chunks/App-CqbuK4M6.js.map +1 -0
- package/dist/_chunks/{App-bpzO2Ljh.mjs → App-Do-Rnv0A.mjs} +406 -406
- package/dist/_chunks/App-Do-Rnv0A.mjs.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-WuuhP6Bn.mjs → en-B9Ur3VsE.mjs} +11 -3
- package/dist/_chunks/en-B9Ur3VsE.mjs.map +1 -0
- package/dist/_chunks/{en-gcJJ5htG.js → en-DtFJ5ViE.js} +11 -3
- package/dist/_chunks/en-DtFJ5ViE.js.map +1 -0
- package/dist/_chunks/{index-AECgcaDa.mjs → index-D_pgdqQL.mjs} +244 -247
- package/dist/_chunks/index-D_pgdqQL.mjs.map +1 -0
- package/dist/_chunks/{index-fP3qoWZ4.js → index-Tedsw4GC.js} +244 -249
- package/dist/_chunks/index-Tedsw4GC.js.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 +358 -237
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +359 -237
- 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-bpzO2Ljh.mjs.map +0 -1
- package/dist/_chunks/App-p8aKBitd.js.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-WuuhP6Bn.mjs.map +0 -1
- package/dist/_chunks/en-gcJJ5htG.js.map +0 -1
- package/dist/_chunks/index-AECgcaDa.mjs.map +0 -1
- package/dist/_chunks/index-fP3qoWZ4.js.map +0 -1
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const helperPlugin = require("@strapi/helper-plugin");
|
|
3
2
|
const icons = require("@strapi/icons");
|
|
4
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
5
4
|
const React = require("react");
|
|
6
5
|
const query = require("@reduxjs/toolkit/query");
|
|
6
|
+
const strapiAdmin = require("@strapi/admin/strapi-admin");
|
|
7
|
+
const strapiAdmin$1 = require("@strapi/content-manager/strapi-admin");
|
|
7
8
|
const designSystem = require("@strapi/design-system");
|
|
8
|
-
const
|
|
9
|
-
const axios = require("axios");
|
|
9
|
+
const symbols = require("@strapi/icons/symbols");
|
|
10
10
|
const formik = require("formik");
|
|
11
11
|
const reactIntl = require("react-intl");
|
|
12
12
|
const reactRouterDom = require("react-router-dom");
|
|
13
13
|
const yup = require("yup");
|
|
14
|
-
const
|
|
15
|
-
const styled = require("styled-components");
|
|
16
|
-
const reactRedux = require("react-redux");
|
|
17
|
-
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
14
|
+
const styledComponents = require("styled-components");
|
|
18
15
|
function _interopNamespace(e) {
|
|
19
16
|
if (e && e.__esModule)
|
|
20
17
|
return e;
|
|
@@ -35,7 +32,6 @@ function _interopNamespace(e) {
|
|
|
35
32
|
}
|
|
36
33
|
const React__namespace = /* @__PURE__ */ _interopNamespace(React);
|
|
37
34
|
const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
|
|
38
|
-
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
39
35
|
const __variableDynamicImportRuntimeHelper = (glob, path) => {
|
|
40
36
|
const v = glob[path];
|
|
41
37
|
if (v) {
|
|
@@ -117,49 +113,9 @@ const PERMISSIONS = {
|
|
|
117
113
|
}
|
|
118
114
|
]
|
|
119
115
|
};
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
method,
|
|
124
|
-
data,
|
|
125
|
-
config
|
|
126
|
-
}) => {
|
|
127
|
-
try {
|
|
128
|
-
const { get, post, del, put } = helperPlugin.getFetchClient();
|
|
129
|
-
if (method === "POST") {
|
|
130
|
-
const result2 = await post(url, data, config);
|
|
131
|
-
return { data: result2.data };
|
|
132
|
-
}
|
|
133
|
-
if (method === "DELETE") {
|
|
134
|
-
const result2 = await del(url, config);
|
|
135
|
-
return { data: result2.data };
|
|
136
|
-
}
|
|
137
|
-
if (method === "PUT") {
|
|
138
|
-
const result2 = await put(url, data, config);
|
|
139
|
-
return { data: result2.data };
|
|
140
|
-
}
|
|
141
|
-
const result = await get(url, config);
|
|
142
|
-
return { data: result.data };
|
|
143
|
-
} catch (error) {
|
|
144
|
-
const err = error;
|
|
145
|
-
return {
|
|
146
|
-
error: {
|
|
147
|
-
status: err.response?.status,
|
|
148
|
-
code: err.code,
|
|
149
|
-
response: {
|
|
150
|
-
data: err.response?.data
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
const isAxiosError = (err) => {
|
|
157
|
-
return typeof err === "object" && err !== null && "response" in err && typeof err.response === "object" && err.response !== null && "data" in err.response;
|
|
158
|
-
};
|
|
159
|
-
const releaseApi = react.createApi({
|
|
160
|
-
reducerPath: pluginId,
|
|
161
|
-
baseQuery: axiosBaseQuery,
|
|
162
|
-
tagTypes: ["Release", "ReleaseAction"],
|
|
116
|
+
const releaseApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
117
|
+
addTagTypes: ["Release", "ReleaseAction", "EntriesInRelease"]
|
|
118
|
+
}).injectEndpoints({
|
|
163
119
|
endpoints: (build) => {
|
|
164
120
|
return {
|
|
165
121
|
getReleasesForEntry: build.query({
|
|
@@ -274,6 +230,20 @@ const releaseApi = react.createApi({
|
|
|
274
230
|
{ type: "ReleaseAction", id: "LIST" }
|
|
275
231
|
]
|
|
276
232
|
}),
|
|
233
|
+
createManyReleaseActions: build.mutation({
|
|
234
|
+
query({ body, params }) {
|
|
235
|
+
return {
|
|
236
|
+
url: `/content-releases/${params.releaseId}/actions/bulk`,
|
|
237
|
+
method: "POST",
|
|
238
|
+
data: body
|
|
239
|
+
};
|
|
240
|
+
},
|
|
241
|
+
invalidatesTags: [
|
|
242
|
+
{ type: "Release", id: "LIST" },
|
|
243
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
244
|
+
{ type: "EntriesInRelease" }
|
|
245
|
+
]
|
|
246
|
+
}),
|
|
277
247
|
updateReleaseAction: build.mutation({
|
|
278
248
|
query({ body, params }) {
|
|
279
249
|
return {
|
|
@@ -289,13 +259,17 @@ const releaseApi = react.createApi({
|
|
|
289
259
|
...query2
|
|
290
260
|
};
|
|
291
261
|
const patchResult = dispatch(
|
|
292
|
-
releaseApi.util.updateQueryData(
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
262
|
+
releaseApi.util.updateQueryData(
|
|
263
|
+
"getReleaseActions",
|
|
264
|
+
paramsWithoutActionId,
|
|
265
|
+
(draft) => {
|
|
266
|
+
const [key, index] = actionPath;
|
|
267
|
+
const action = draft.data[key][index];
|
|
268
|
+
if (action) {
|
|
269
|
+
action.type = body.type;
|
|
270
|
+
}
|
|
297
271
|
}
|
|
298
|
-
|
|
272
|
+
)
|
|
299
273
|
);
|
|
300
274
|
try {
|
|
301
275
|
await queryFulfilled;
|
|
@@ -311,9 +285,11 @@ const releaseApi = react.createApi({
|
|
|
311
285
|
method: "DELETE"
|
|
312
286
|
};
|
|
313
287
|
},
|
|
314
|
-
invalidatesTags: [
|
|
288
|
+
invalidatesTags: (result, error, arg) => [
|
|
315
289
|
{ type: "Release", id: "LIST" },
|
|
316
|
-
{ type: "
|
|
290
|
+
{ type: "Release", id: arg.params.releaseId },
|
|
291
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
292
|
+
{ type: "EntriesInRelease" }
|
|
317
293
|
]
|
|
318
294
|
}),
|
|
319
295
|
publishRelease: build.mutation({
|
|
@@ -332,7 +308,22 @@ const releaseApi = react.createApi({
|
|
|
332
308
|
method: "DELETE"
|
|
333
309
|
};
|
|
334
310
|
},
|
|
335
|
-
invalidatesTags: () => [{ type: "Release", id: "LIST" }]
|
|
311
|
+
invalidatesTags: () => [{ type: "Release", id: "LIST" }, { type: "EntriesInRelease" }]
|
|
312
|
+
}),
|
|
313
|
+
getMappedEntriesInReleases: build.query({
|
|
314
|
+
query(params) {
|
|
315
|
+
return {
|
|
316
|
+
url: "/content-releases/mapEntriesToReleases",
|
|
317
|
+
method: "GET",
|
|
318
|
+
config: {
|
|
319
|
+
params
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
},
|
|
323
|
+
transformResponse(response) {
|
|
324
|
+
return response.data;
|
|
325
|
+
},
|
|
326
|
+
providesTags: [{ type: "EntriesInRelease" }]
|
|
336
327
|
})
|
|
337
328
|
};
|
|
338
329
|
}
|
|
@@ -344,11 +335,13 @@ const {
|
|
|
344
335
|
useGetReleaseActionsQuery,
|
|
345
336
|
useCreateReleaseMutation,
|
|
346
337
|
useCreateReleaseActionMutation,
|
|
338
|
+
useCreateManyReleaseActionsMutation,
|
|
347
339
|
useUpdateReleaseMutation,
|
|
348
340
|
useUpdateReleaseActionMutation,
|
|
349
341
|
usePublishReleaseMutation,
|
|
350
342
|
useDeleteReleaseActionMutation,
|
|
351
|
-
useDeleteReleaseMutation
|
|
343
|
+
useDeleteReleaseMutation,
|
|
344
|
+
useGetMappedEntriesInReleasesQuery
|
|
352
345
|
} = releaseApi;
|
|
353
346
|
const getTimezoneOffset = (timezone, date) => {
|
|
354
347
|
try {
|
|
@@ -366,16 +359,12 @@ const getTimezoneOffset = (timezone, date) => {
|
|
|
366
359
|
return "";
|
|
367
360
|
}
|
|
368
361
|
};
|
|
369
|
-
const
|
|
370
|
-
const useTypedSelector = reactRedux.useSelector;
|
|
371
|
-
const StyledMenuItem = styled__default.default(v2.Menu.Item)`
|
|
362
|
+
const StyledMenuItem = styledComponents.styled(designSystem.Menu.Item)`
|
|
372
363
|
&:hover {
|
|
373
|
-
background: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}100`]};
|
|
364
|
+
background: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}100`]};
|
|
374
365
|
|
|
375
366
|
svg {
|
|
376
|
-
|
|
377
|
-
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
378
|
-
}
|
|
367
|
+
fill: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}600`]};
|
|
379
368
|
}
|
|
380
369
|
|
|
381
370
|
a {
|
|
@@ -384,9 +373,7 @@ const StyledMenuItem = styled__default.default(v2.Menu.Item)`
|
|
|
384
373
|
}
|
|
385
374
|
|
|
386
375
|
svg {
|
|
387
|
-
|
|
388
|
-
fill: ${({ theme, variant = "neutral" }) => theme.colors[`${variant}600`]};
|
|
389
|
-
}
|
|
376
|
+
fill: ${({ theme, $variant = "neutral" }) => theme.colors[`${$variant}600`]};
|
|
390
377
|
}
|
|
391
378
|
|
|
392
379
|
a {
|
|
@@ -398,15 +385,14 @@ const StyledMenuItem = styled__default.default(v2.Menu.Item)`
|
|
|
398
385
|
width: 100%;
|
|
399
386
|
}
|
|
400
387
|
`;
|
|
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}`};
|
|
404
|
-
`;
|
|
405
388
|
const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
406
389
|
const { formatMessage } = reactIntl.useIntl();
|
|
407
|
-
const toggleNotification =
|
|
408
|
-
const { formatAPIError } =
|
|
390
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
391
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
409
392
|
const [deleteReleaseAction] = useDeleteReleaseActionMutation();
|
|
393
|
+
const {
|
|
394
|
+
allowedActions: { canDeleteAction }
|
|
395
|
+
} = strapiAdmin.useRBAC(PERMISSIONS);
|
|
410
396
|
const handleDeleteAction = async () => {
|
|
411
397
|
const response = await deleteReleaseAction({
|
|
412
398
|
params: { releaseId, actionId }
|
|
@@ -422,26 +408,29 @@ const DeleteReleaseActionItem = ({ releaseId, actionId }) => {
|
|
|
422
408
|
return;
|
|
423
409
|
}
|
|
424
410
|
if ("error" in response) {
|
|
425
|
-
if (
|
|
411
|
+
if (strapiAdmin.isFetchError(response.error)) {
|
|
426
412
|
toggleNotification({
|
|
427
|
-
type: "
|
|
413
|
+
type: "danger",
|
|
428
414
|
message: formatAPIError(response.error)
|
|
429
415
|
});
|
|
430
416
|
} else {
|
|
431
417
|
toggleNotification({
|
|
432
|
-
type: "
|
|
418
|
+
type: "danger",
|
|
433
419
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
434
420
|
});
|
|
435
421
|
}
|
|
436
422
|
}
|
|
437
423
|
};
|
|
438
|
-
|
|
439
|
-
|
|
424
|
+
if (!canDeleteAction) {
|
|
425
|
+
return null;
|
|
426
|
+
}
|
|
427
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { $variant: "danger", onSelect: handleDeleteAction, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
428
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.Cross, { width: "1.6rem", height: "1.6rem" }),
|
|
440
429
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "danger600", variant: "omega", children: formatMessage({
|
|
441
430
|
id: "content-releases.content-manager-edit-view.remove-from-release",
|
|
442
431
|
defaultMessage: "Remove from release"
|
|
443
432
|
}) })
|
|
444
|
-
] }) })
|
|
433
|
+
] }) });
|
|
445
434
|
};
|
|
446
435
|
const ReleaseActionEntryLinkItem = ({
|
|
447
436
|
contentTypeUid,
|
|
@@ -449,77 +438,79 @@ const ReleaseActionEntryLinkItem = ({
|
|
|
449
438
|
locale
|
|
450
439
|
}) => {
|
|
451
440
|
const { formatMessage } = reactIntl.useIntl();
|
|
452
|
-
const
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
!
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
441
|
+
const userPermissions = strapiAdmin.useAuth("ReleaseActionEntryLinkItem", (state) => state.permissions);
|
|
442
|
+
const canUpdateEntryForLocale = React__namespace.useMemo(() => {
|
|
443
|
+
const updatePermissions = userPermissions.find(
|
|
444
|
+
(permission) => permission.subject === contentTypeUid && permission.action === "plugin::content-manager.explorer.update"
|
|
445
|
+
);
|
|
446
|
+
if (!updatePermissions) {
|
|
447
|
+
return false;
|
|
448
|
+
}
|
|
449
|
+
return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));
|
|
450
|
+
}, [contentTypeUid, locale, userPermissions]);
|
|
451
|
+
const {
|
|
452
|
+
allowedActions: { canUpdate: canUpdateContentType }
|
|
453
|
+
} = strapiAdmin.useRBAC({
|
|
454
|
+
updateContentType: [
|
|
455
|
+
{
|
|
456
|
+
action: "plugin::content-manager.explorer.update",
|
|
457
|
+
subject: contentTypeUid
|
|
458
|
+
}
|
|
459
|
+
]
|
|
460
|
+
});
|
|
461
|
+
if (!canUpdateContentType || !canUpdateEntryForLocale) {
|
|
462
|
+
return null;
|
|
463
|
+
}
|
|
461
464
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
462
|
-
|
|
465
|
+
StyledMenuItem,
|
|
463
466
|
{
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
children:
|
|
471
|
-
|
|
472
|
-
{
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
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
|
-
) })
|
|
467
|
+
tag: reactRouterDom.Link,
|
|
468
|
+
isLink: true,
|
|
469
|
+
to: {
|
|
470
|
+
pathname: `/content-manager/collection-types/${contentTypeUid}/${entryId}`,
|
|
471
|
+
search: locale && `?plugins[i18n][locale]=${locale}`
|
|
472
|
+
},
|
|
473
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
474
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, { width: "1.6rem", height: "1.6rem" }),
|
|
475
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
476
|
+
id: "content-releases.content-manager-edit-view.edit-entry",
|
|
477
|
+
defaultMessage: "Edit entry"
|
|
478
|
+
}) })
|
|
479
|
+
] })
|
|
485
480
|
}
|
|
486
481
|
);
|
|
487
482
|
};
|
|
488
483
|
const EditReleaseItem = ({ releaseId }) => {
|
|
489
484
|
const { formatMessage } = reactIntl.useIntl();
|
|
490
|
-
return
|
|
491
|
-
|
|
492
|
-
{
|
|
493
|
-
|
|
494
|
-
|
|
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({
|
|
485
|
+
return (
|
|
486
|
+
/* @ts-expect-error inference isn't working in DS */
|
|
487
|
+
/* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { tag: reactRouterDom.Link, isLink: true, to: `/plugins/content-releases/${releaseId}`, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
488
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, { width: "1.6rem", height: "1.6rem" }),
|
|
489
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage({
|
|
497
490
|
id: "content-releases.content-manager-edit-view.edit-release",
|
|
498
491
|
defaultMessage: "Edit release"
|
|
499
492
|
}) })
|
|
500
|
-
}
|
|
501
|
-
)
|
|
493
|
+
] }) })
|
|
494
|
+
);
|
|
502
495
|
};
|
|
503
|
-
const Root = ({ children
|
|
496
|
+
const Root = ({ children }) => {
|
|
504
497
|
const { formatMessage } = reactIntl.useIntl();
|
|
498
|
+
const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
|
|
505
499
|
return (
|
|
506
500
|
// A user can access the dropdown if they have permissions to delete a release-action OR update a release
|
|
507
|
-
|
|
508
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
509
|
-
|
|
501
|
+
allowedActions.canDeleteAction || allowedActions.canUpdate ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Root, { children: [
|
|
502
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Menu.Trigger, { paddingLeft: 2, paddingRight: 2, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
503
|
+
designSystem.AccessibleIcon,
|
|
510
504
|
{
|
|
511
|
-
|
|
512
|
-
paddingLeft: 2,
|
|
513
|
-
paddingRight: 2,
|
|
514
|
-
"aria-label": formatMessage({
|
|
505
|
+
label: formatMessage({
|
|
515
506
|
id: "content-releases.content-manager-edit-view.release-action-menu",
|
|
516
507
|
defaultMessage: "Release action options"
|
|
517
508
|
}),
|
|
518
|
-
|
|
509
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(icons.More, {})
|
|
519
510
|
}
|
|
520
|
-
),
|
|
521
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
522
|
-
] })
|
|
511
|
+
) }),
|
|
512
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Menu.Content, { top: 1, popoverPlacement: "bottom-end", children })
|
|
513
|
+
] }) : null
|
|
523
514
|
);
|
|
524
515
|
};
|
|
525
516
|
const ReleaseActionMenu = {
|
|
@@ -534,11 +525,11 @@ const getBorderLeftRadiusValue = (actionType) => {
|
|
|
534
525
|
const getBorderRightRadiusValue = (actionType) => {
|
|
535
526
|
return actionType === "publish" ? 0 : 1;
|
|
536
527
|
};
|
|
537
|
-
const FieldWrapper =
|
|
538
|
-
border-top-left-radius: ${({ actionType, theme }) => theme.spaces[getBorderLeftRadiusValue(actionType)]};
|
|
539
|
-
border-bottom-left-radius: ${({ actionType, theme }) => theme.spaces[getBorderLeftRadiusValue(actionType)]};
|
|
540
|
-
border-top-right-radius: ${({ actionType, theme }) => theme.spaces[getBorderRightRadiusValue(actionType)]};
|
|
541
|
-
border-bottom-right-radius: ${({ actionType, theme }) => theme.spaces[getBorderRightRadiusValue(actionType)]};
|
|
528
|
+
const FieldWrapper = styledComponents.styled(designSystem.Field.Root)`
|
|
529
|
+
border-top-left-radius: ${({ $actionType, theme }) => theme.spaces[getBorderLeftRadiusValue($actionType)]};
|
|
530
|
+
border-bottom-left-radius: ${({ $actionType, theme }) => theme.spaces[getBorderLeftRadiusValue($actionType)]};
|
|
531
|
+
border-top-right-radius: ${({ $actionType, theme }) => theme.spaces[getBorderRightRadiusValue($actionType)]};
|
|
532
|
+
border-bottom-right-radius: ${({ $actionType, theme }) => theme.spaces[getBorderRightRadiusValue($actionType)]};
|
|
542
533
|
|
|
543
534
|
> label {
|
|
544
535
|
color: inherit;
|
|
@@ -549,14 +540,14 @@ const FieldWrapper = styled__default.default(designSystem.Field)`
|
|
|
549
540
|
}
|
|
550
541
|
|
|
551
542
|
&[data-checked='true'] {
|
|
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};
|
|
543
|
+
color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
544
|
+
background-color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary100 : theme.colors.danger100};
|
|
545
|
+
border-color: ${({ theme, $actionType }) => $actionType === "publish" ? theme.colors.primary700 : theme.colors.danger600};
|
|
555
546
|
}
|
|
556
547
|
|
|
557
548
|
&[data-checked='false'] {
|
|
558
|
-
border-left: ${({ actionType }) => actionType === "unpublish" && "none"};
|
|
559
|
-
border-right: ${({ actionType }) => actionType === "publish" && "none"};
|
|
549
|
+
border-left: ${({ $actionType }) => $actionType === "unpublish" && "none"};
|
|
550
|
+
border-right: ${({ $actionType }) => $actionType === "publish" && "none"};
|
|
560
551
|
}
|
|
561
552
|
|
|
562
553
|
&[data-checked='false'][data-disabled='false']:hover {
|
|
@@ -585,7 +576,7 @@ const ActionOption = ({
|
|
|
585
576
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
586
577
|
FieldWrapper,
|
|
587
578
|
{
|
|
588
|
-
actionType,
|
|
579
|
+
$actionType: actionType,
|
|
589
580
|
background: "primary0",
|
|
590
581
|
borderColor: "neutral200",
|
|
591
582
|
color: selected === actionType ? "primary600" : "neutral600",
|
|
@@ -593,12 +584,11 @@ const ActionOption = ({
|
|
|
593
584
|
cursor: "pointer",
|
|
594
585
|
"data-checked": selected === actionType,
|
|
595
586
|
"data-disabled": disabled && selected !== actionType,
|
|
596
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.
|
|
587
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Label, { children: [
|
|
597
588
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
598
|
-
designSystem.
|
|
589
|
+
designSystem.Field.Input,
|
|
599
590
|
{
|
|
600
591
|
type: "radio",
|
|
601
|
-
id: `${name}-${actionType}`,
|
|
602
592
|
name,
|
|
603
593
|
checked: selected === actionType,
|
|
604
594
|
onChange: handleChange,
|
|
@@ -651,19 +641,20 @@ const INITIAL_VALUES = {
|
|
|
651
641
|
const NoReleases = () => {
|
|
652
642
|
const { formatMessage } = reactIntl.useIntl();
|
|
653
643
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
654
|
-
|
|
644
|
+
designSystem.EmptyStateLayout,
|
|
655
645
|
{
|
|
656
|
-
|
|
646
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(symbols.EmptyDocuments, { width: "16rem" }),
|
|
647
|
+
content: formatMessage({
|
|
657
648
|
id: "content-releases.content-manager-edit-view.add-to-release.no-releases-message",
|
|
658
649
|
defaultMessage: "No available releases. Open the list of releases and create a new one from there."
|
|
659
|
-
},
|
|
650
|
+
}),
|
|
660
651
|
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
661
|
-
|
|
652
|
+
designSystem.LinkButton,
|
|
662
653
|
{
|
|
663
654
|
to: {
|
|
664
655
|
pathname: "/plugins/content-releases"
|
|
665
656
|
},
|
|
666
|
-
|
|
657
|
+
tag: reactRouterDom.Link,
|
|
667
658
|
variant: "secondary",
|
|
668
659
|
children: formatMessage({
|
|
669
660
|
id: "content-releases.content-manager-edit-view.add-to-release.redirect-button",
|
|
@@ -675,15 +666,16 @@ const NoReleases = () => {
|
|
|
675
666
|
);
|
|
676
667
|
};
|
|
677
668
|
const AddActionToReleaseModal = ({
|
|
678
|
-
|
|
669
|
+
open,
|
|
670
|
+
onOpenChange,
|
|
679
671
|
contentTypeUid,
|
|
680
672
|
entryId
|
|
681
673
|
}) => {
|
|
682
|
-
const releaseHeaderId = React__namespace.useId();
|
|
683
674
|
const { formatMessage } = reactIntl.useIntl();
|
|
684
|
-
const toggleNotification =
|
|
685
|
-
const { formatAPIError } =
|
|
686
|
-
const {
|
|
675
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
676
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
677
|
+
const [{ query: query2 }] = strapiAdmin.useQueryParams();
|
|
678
|
+
const locale = query2.plugins?.i18n?.locale;
|
|
687
679
|
const response = useGetReleasesForEntryQuery({
|
|
688
680
|
contentTypeUid,
|
|
689
681
|
entryId,
|
|
@@ -692,7 +684,6 @@ const AddActionToReleaseModal = ({
|
|
|
692
684
|
const releases = response.data?.data;
|
|
693
685
|
const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();
|
|
694
686
|
const handleSubmit = async (values) => {
|
|
695
|
-
const locale = modifiedData.locale;
|
|
696
687
|
const releaseActionEntry = {
|
|
697
688
|
contentType: contentTypeUid,
|
|
698
689
|
id: entryId,
|
|
@@ -710,25 +701,25 @@ const AddActionToReleaseModal = ({
|
|
|
710
701
|
defaultMessage: "Entry added to release"
|
|
711
702
|
})
|
|
712
703
|
});
|
|
713
|
-
|
|
704
|
+
onOpenChange();
|
|
714
705
|
return;
|
|
715
706
|
}
|
|
716
707
|
if ("error" in response2) {
|
|
717
|
-
if (
|
|
708
|
+
if (strapiAdmin.isFetchError(response2.error)) {
|
|
718
709
|
toggleNotification({
|
|
719
|
-
type: "
|
|
710
|
+
type: "danger",
|
|
720
711
|
message: formatAPIError(response2.error)
|
|
721
712
|
});
|
|
722
713
|
} else {
|
|
723
714
|
toggleNotification({
|
|
724
|
-
type: "
|
|
715
|
+
type: "danger",
|
|
725
716
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
726
717
|
});
|
|
727
718
|
}
|
|
728
719
|
}
|
|
729
720
|
};
|
|
730
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
731
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.
|
|
721
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Content, { children: [
|
|
722
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Title, { fontWeight: "bold", children: formatMessage({
|
|
732
723
|
id: "content-releases.content-manager-edit-view.add-to-release",
|
|
733
724
|
defaultMessage: "Add to release"
|
|
734
725
|
}) }) }),
|
|
@@ -740,25 +731,26 @@ const AddActionToReleaseModal = ({
|
|
|
740
731
|
initialValues: INITIAL_VALUES,
|
|
741
732
|
children: ({ values, setFieldValue }) => {
|
|
742
733
|
return /* @__PURE__ */ jsxRuntime.jsxs(formik.Form, { children: [
|
|
743
|
-
releases?.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(NoReleases, {}) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.
|
|
744
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxRuntime.
|
|
745
|
-
designSystem.
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
734
|
+
releases?.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(NoReleases, {}) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
|
|
735
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { required: true, children: [
|
|
736
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
|
|
737
|
+
id: "content-releases.content-manager-edit-view.add-to-release.select-label",
|
|
738
|
+
defaultMessage: "Select a release"
|
|
739
|
+
}) }),
|
|
740
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
741
|
+
designSystem.SingleSelect,
|
|
742
|
+
{
|
|
743
|
+
placeholder: formatMessage({
|
|
744
|
+
id: "content-releases.content-manager-edit-view.add-to-release.select-placeholder",
|
|
745
|
+
defaultMessage: "Select"
|
|
746
|
+
}),
|
|
747
|
+
onChange: (value) => setFieldValue("releaseId", value),
|
|
748
|
+
value: values.releaseId,
|
|
749
|
+
children: releases?.map((release) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: release.id, children: release.name }, release.id))
|
|
750
|
+
}
|
|
751
|
+
)
|
|
752
|
+
] }) }),
|
|
753
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
|
|
762
754
|
id: "content-releases.content-manager-edit-view.add-to-release.action-type-label",
|
|
763
755
|
defaultMessage: "What do you want to do with this entry?"
|
|
764
756
|
}) }),
|
|
@@ -771,43 +763,37 @@ const AddActionToReleaseModal = ({
|
|
|
771
763
|
}
|
|
772
764
|
)
|
|
773
765
|
] }) }),
|
|
774
|
-
/* @__PURE__ */ jsxRuntime.
|
|
775
|
-
designSystem.
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
* for yup.string().required(), even when the value is falsy (including empty string)
|
|
785
|
-
*/
|
|
786
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
|
|
787
|
-
id: "content-releases.content-manager-edit-view.add-to-release.continue-button",
|
|
788
|
-
defaultMessage: "Continue"
|
|
789
|
-
}) })
|
|
790
|
-
)
|
|
791
|
-
}
|
|
792
|
-
)
|
|
766
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
|
|
767
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Close, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", name: "cancel", children: formatMessage({
|
|
768
|
+
id: "content-releases.content-manager-edit-view.add-to-release.cancel-button",
|
|
769
|
+
defaultMessage: "Cancel"
|
|
770
|
+
}) }) }),
|
|
771
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", disabled: !values.releaseId, loading: isLoading, children: formatMessage({
|
|
772
|
+
id: "content-releases.content-manager-edit-view.add-to-release.continue-button",
|
|
773
|
+
defaultMessage: "Continue"
|
|
774
|
+
}) })
|
|
775
|
+
] })
|
|
793
776
|
] });
|
|
794
777
|
}
|
|
795
778
|
}
|
|
796
779
|
)
|
|
797
|
-
] });
|
|
780
|
+
] }) });
|
|
798
781
|
};
|
|
799
782
|
const CMReleasesContainer = () => {
|
|
800
783
|
const [isModalOpen, setIsModalOpen] = React__namespace.useState(false);
|
|
801
784
|
const { formatMessage, formatDate, formatTime } = reactIntl.useIntl();
|
|
802
|
-
const {
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
} =
|
|
785
|
+
const { id, slug, collectionType } = reactRouterDom.useParams();
|
|
786
|
+
const isCreatingEntry = id === "create";
|
|
787
|
+
const entryId = parseInt(id, 10);
|
|
788
|
+
const { allowedActions } = strapiAdmin.useRBAC(PERMISSIONS);
|
|
789
|
+
const { canCreateAction, canRead: canMain, canDeleteAction } = allowedActions;
|
|
790
|
+
const { schema } = strapiAdmin$1.unstable_useDocument({
|
|
791
|
+
collectionType,
|
|
792
|
+
model: slug
|
|
793
|
+
});
|
|
794
|
+
const hasDraftAndPublish = schema?.options?.draftAndPublish;
|
|
808
795
|
const contentTypeUid = slug;
|
|
809
|
-
const
|
|
810
|
-
const canFetch = entryId != null && contentTypeUid != null;
|
|
796
|
+
const canFetch = id != null && contentTypeUid != null;
|
|
811
797
|
const fetchParams = canFetch ? {
|
|
812
798
|
contentTypeUid,
|
|
813
799
|
entryId,
|
|
@@ -828,10 +814,13 @@ const CMReleasesContainer = () => {
|
|
|
828
814
|
}
|
|
829
815
|
return `success${shade}`;
|
|
830
816
|
};
|
|
831
|
-
|
|
817
|
+
if (!canMain) {
|
|
818
|
+
return null;
|
|
819
|
+
}
|
|
820
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
832
821
|
designSystem.Box,
|
|
833
822
|
{
|
|
834
|
-
|
|
823
|
+
tag: "aside",
|
|
835
824
|
"aria-label": formatMessage({
|
|
836
825
|
id: "content-releases.plugin.name",
|
|
837
826
|
defaultMessage: "Releases"
|
|
@@ -855,7 +844,7 @@ const CMReleasesContainer = () => {
|
|
|
855
844
|
alignItems: "start",
|
|
856
845
|
borderWidth: "1px",
|
|
857
846
|
borderStyle: "solid",
|
|
858
|
-
borderColor: getReleaseColorVariant(release.
|
|
847
|
+
borderColor: getReleaseColorVariant(release.actions[0].type, "200"),
|
|
859
848
|
overflow: "hidden",
|
|
860
849
|
hasRadius: true,
|
|
861
850
|
children: [
|
|
@@ -866,28 +855,28 @@ const CMReleasesContainer = () => {
|
|
|
866
855
|
paddingBottom: 3,
|
|
867
856
|
paddingLeft: 4,
|
|
868
857
|
paddingRight: 4,
|
|
869
|
-
background: getReleaseColorVariant(release.
|
|
858
|
+
background: getReleaseColorVariant(release.actions[0].type, "100"),
|
|
870
859
|
width: "100%",
|
|
871
860
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
872
861
|
designSystem.Typography,
|
|
873
862
|
{
|
|
874
863
|
fontSize: 1,
|
|
875
864
|
variant: "pi",
|
|
876
|
-
textColor: getReleaseColorVariant(release.
|
|
865
|
+
textColor: getReleaseColorVariant(release.actions[0].type, "600"),
|
|
877
866
|
children: formatMessage(
|
|
878
867
|
{
|
|
879
868
|
id: "content-releases.content-manager-edit-view.list-releases.title",
|
|
880
869
|
defaultMessage: "{isPublish, select, true {Will be published in} other {Will be unpublished in}}"
|
|
881
870
|
},
|
|
882
|
-
{ isPublish: release.
|
|
871
|
+
{ isPublish: release.actions[0].type === "publish" }
|
|
883
872
|
)
|
|
884
873
|
}
|
|
885
874
|
)
|
|
886
875
|
}
|
|
887
876
|
),
|
|
888
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
|
|
877
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap: 2, width: "100%", alignItems: "flex-start", children: [
|
|
889
878
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontSize: 2, fontWeight: "bold", variant: "omega", textColor: "neutral700", children: release.name }),
|
|
890
|
-
|
|
879
|
+
release.scheduledAt && release.timezone && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: formatMessage(
|
|
891
880
|
{
|
|
892
881
|
id: "content-releases.content-manager-edit-view.scheduled.date",
|
|
893
882
|
defaultMessage: "{date} at {time} ({offset})"
|
|
@@ -909,23 +898,23 @@ const CMReleasesContainer = () => {
|
|
|
909
898
|
)
|
|
910
899
|
}
|
|
911
900
|
) }),
|
|
912
|
-
|
|
901
|
+
canDeleteAction ? /* @__PURE__ */ jsxRuntime.jsxs(ReleaseActionMenu.Root, { hasTriggerBorder: true, children: [
|
|
913
902
|
/* @__PURE__ */ jsxRuntime.jsx(ReleaseActionMenu.EditReleaseItem, { releaseId: release.id }),
|
|
914
903
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
915
904
|
ReleaseActionMenu.DeleteReleaseActionItem,
|
|
916
905
|
{
|
|
917
906
|
releaseId: release.id,
|
|
918
|
-
actionId: release.
|
|
907
|
+
actionId: release.actions[0].id
|
|
919
908
|
}
|
|
920
909
|
)
|
|
921
|
-
] })
|
|
922
|
-
] })
|
|
910
|
+
] }) : null
|
|
911
|
+
] }) })
|
|
923
912
|
]
|
|
924
913
|
},
|
|
925
914
|
release.id
|
|
926
915
|
);
|
|
927
916
|
}),
|
|
928
|
-
|
|
917
|
+
canCreateAction ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
929
918
|
designSystem.Button,
|
|
930
919
|
{
|
|
931
920
|
justifyContent: "center",
|
|
@@ -940,42 +929,48 @@ const CMReleasesContainer = () => {
|
|
|
940
929
|
defaultMessage: "Add to release"
|
|
941
930
|
})
|
|
942
931
|
}
|
|
943
|
-
)
|
|
932
|
+
) : null
|
|
944
933
|
] }),
|
|
945
|
-
|
|
934
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
946
935
|
AddActionToReleaseModal,
|
|
947
936
|
{
|
|
948
|
-
|
|
937
|
+
open: isModalOpen,
|
|
938
|
+
onOpenChange: toggleModal,
|
|
949
939
|
contentTypeUid,
|
|
950
940
|
entryId
|
|
951
941
|
}
|
|
952
942
|
)
|
|
953
943
|
]
|
|
954
944
|
}
|
|
955
|
-
)
|
|
945
|
+
);
|
|
946
|
+
};
|
|
947
|
+
const pluginId = "content-releases";
|
|
948
|
+
const prefixPluginTranslations = (trad, pluginId2) => {
|
|
949
|
+
if (!pluginId2) {
|
|
950
|
+
throw new TypeError("pluginId can't be empty");
|
|
951
|
+
}
|
|
952
|
+
return Object.keys(trad).reduce((acc, current) => {
|
|
953
|
+
acc[`${pluginId2}.${current}`] = trad[current];
|
|
954
|
+
return acc;
|
|
955
|
+
}, {});
|
|
956
956
|
};
|
|
957
957
|
const admin = {
|
|
958
958
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
959
959
|
register(app) {
|
|
960
|
+
app.createHook("ContentReleases/pages/ReleaseDetails/add-locale-in-releases");
|
|
960
961
|
if (window.strapi.features.isEnabled("cms-content-releases")) {
|
|
961
962
|
app.addMenuLink({
|
|
962
|
-
to:
|
|
963
|
+
to: `plugins/${pluginId}`,
|
|
963
964
|
icon: icons.PaperPlane,
|
|
964
965
|
intlLabel: {
|
|
965
966
|
id: `${pluginId}.plugin.name`,
|
|
966
967
|
defaultMessage: "Releases"
|
|
967
968
|
},
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
},
|
|
972
|
-
permissions: PERMISSIONS.main
|
|
973
|
-
});
|
|
974
|
-
app.addMiddlewares([() => releaseApi.middleware]);
|
|
975
|
-
app.addReducers({
|
|
976
|
-
[releaseApi.reducerPath]: releaseApi.reducer
|
|
969
|
+
Component: () => Promise.resolve().then(() => require("./App-CqbuK4M6.js")).then((mod) => ({ default: mod.App })),
|
|
970
|
+
permissions: PERMISSIONS.main,
|
|
971
|
+
position: 2
|
|
977
972
|
});
|
|
978
|
-
app.
|
|
973
|
+
app.getPlugin("content-manager").injectComponent("editView", "right-links", {
|
|
979
974
|
name: `${pluginId}-link`,
|
|
980
975
|
Component: CMReleasesContainer
|
|
981
976
|
});
|
|
@@ -987,20 +982,22 @@ const admin = {
|
|
|
987
982
|
id: `${pluginId}.plugin.name`,
|
|
988
983
|
defaultMessage: "Releases"
|
|
989
984
|
},
|
|
985
|
+
permissions: [],
|
|
990
986
|
async Component() {
|
|
991
|
-
const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases-
|
|
992
|
-
return PurchaseContentReleases;
|
|
987
|
+
const { PurchaseContentReleases } = await Promise.resolve().then(() => require("./PurchaseContentReleases-Be3acS2L.js"));
|
|
988
|
+
return { default: PurchaseContentReleases };
|
|
993
989
|
},
|
|
994
|
-
lockIcon: true
|
|
990
|
+
lockIcon: true,
|
|
991
|
+
position: 2
|
|
995
992
|
});
|
|
996
993
|
}
|
|
997
994
|
},
|
|
998
995
|
async registerTrads({ locales }) {
|
|
999
996
|
const importedTrads = await Promise.all(
|
|
1000
997
|
locales.map((locale) => {
|
|
1001
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-
|
|
998
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-DtFJ5ViE.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
|
|
1002
999
|
return {
|
|
1003
|
-
data:
|
|
1000
|
+
data: prefixPluginTranslations(data, "content-releases"),
|
|
1004
1001
|
locale
|
|
1005
1002
|
};
|
|
1006
1003
|
}).catch(() => {
|
|
@@ -1019,7 +1016,6 @@ exports.ReleaseActionMenu = ReleaseActionMenu;
|
|
|
1019
1016
|
exports.ReleaseActionOptions = ReleaseActionOptions;
|
|
1020
1017
|
exports.admin = admin;
|
|
1021
1018
|
exports.getTimezoneOffset = getTimezoneOffset;
|
|
1022
|
-
exports.isAxiosError = isAxiosError;
|
|
1023
1019
|
exports.pluginId = pluginId;
|
|
1024
1020
|
exports.releaseApi = releaseApi;
|
|
1025
1021
|
exports.useCreateReleaseMutation = useCreateReleaseMutation;
|
|
@@ -1028,7 +1024,6 @@ exports.useGetReleaseActionsQuery = useGetReleaseActionsQuery;
|
|
|
1028
1024
|
exports.useGetReleaseQuery = useGetReleaseQuery;
|
|
1029
1025
|
exports.useGetReleasesQuery = useGetReleasesQuery;
|
|
1030
1026
|
exports.usePublishReleaseMutation = usePublishReleaseMutation;
|
|
1031
|
-
exports.useTypedDispatch = useTypedDispatch;
|
|
1032
1027
|
exports.useUpdateReleaseActionMutation = useUpdateReleaseActionMutation;
|
|
1033
1028
|
exports.useUpdateReleaseMutation = useUpdateReleaseMutation;
|
|
1034
|
-
//# sourceMappingURL=index-
|
|
1029
|
+
//# sourceMappingURL=index-Tedsw4GC.js.map
|