@strapi/content-releases 0.0.0-next.a9d79bec775daaf0da4e506b2aebafdb4ca95b06 → 0.0.0-next.ae38a9dcdeddea4b4c0978686fb024413e5c54f5
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/LICENSE +17 -1
- package/dist/_chunks/{App-p8aKBitd.js → App-dLXY5ei3.js} +138 -131
- package/dist/_chunks/App-dLXY5ei3.js.map +1 -0
- package/dist/_chunks/{App-bpzO2Ljh.mjs → App-jrh58sXY.mjs} +141 -134
- package/dist/_chunks/App-jrh58sXY.mjs.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-Clm0iACO.mjs → PurchaseContentReleases-3tRbmbY3.mjs} +2 -2
- package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-YhAPgpG9.js → PurchaseContentReleases-bpIYXOfu.js} +2 -2
- package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js.map +1 -0
- package/dist/_chunks/{en-gcJJ5htG.js → en-HrREghh3.js} +11 -3
- package/dist/_chunks/en-HrREghh3.js.map +1 -0
- package/dist/_chunks/{en-WuuhP6Bn.mjs → en-ltT1TlKQ.mjs} +11 -3
- package/dist/_chunks/en-ltT1TlKQ.mjs.map +1 -0
- package/dist/_chunks/{index-fP3qoWZ4.js → index-CVO0Rqdm.js} +320 -18
- package/dist/_chunks/index-CVO0Rqdm.js.map +1 -0
- package/dist/_chunks/{index-AECgcaDa.mjs → index-PiOGBETy.mjs} +325 -23
- package/dist/_chunks/index-PiOGBETy.mjs.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +282 -158
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +282 -158
- package/dist/server/index.mjs.map +1 -1
- package/package.json +13 -13
- 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,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { RelativeTime, useNotification, useAPIErrorHandler, useQueryParams, useTracking, LoadingIndicatorPage, CheckPermissions, PageSizeURLQuery, PaginationURLQuery, AnErrorOccurred, ConfirmDialog, useRBAC, NoContent, Table, CheckPagePermissions } from "@strapi/helper-plugin";
|
|
2
|
+
import { RelativeTime as RelativeTime$1, useNotification, useAPIErrorHandler, useQueryParams, useTracking, LoadingIndicatorPage, CheckPermissions, PageSizeURLQuery, PaginationURLQuery, AnErrorOccurred, ConfirmDialog, useRBAC, useStrapiApp, NoContent, Table, CheckPagePermissions } from "@strapi/helper-plugin";
|
|
3
3
|
import { useLocation, useHistory, useParams, Redirect, Link as Link$2, Switch, Route } from "react-router-dom";
|
|
4
|
-
import { g as getTimezoneOffset, p as pluginId, u as useGetReleasesQuery, a as useCreateReleaseMutation, P as PERMISSIONS, i as isAxiosError, b as useGetReleaseQuery, c as useUpdateReleaseMutation, d as useDeleteReleaseMutation, e as usePublishReleaseMutation, f as useTypedDispatch, h as useGetReleaseActionsQuery, j as useUpdateReleaseActionMutation, R as ReleaseActionOptions, k as ReleaseActionMenu, r as releaseApi } from "./index-
|
|
4
|
+
import { g as getTimezoneOffset, p as pluginId, u as useGetReleasesQuery, a as useCreateReleaseMutation, P as PERMISSIONS, i as isAxiosError, b as useGetReleaseQuery, c as useUpdateReleaseMutation, d as useDeleteReleaseMutation, e as usePublishReleaseMutation, f as useTypedDispatch, h as useGetReleaseActionsQuery, j as useUpdateReleaseActionMutation, R as ReleaseActionOptions, k as ReleaseActionMenu, r as releaseApi } from "./index-PiOGBETy.mjs";
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { useLicenseLimits, unstable_useDocument } from "@strapi/admin/strapi-admin";
|
|
7
7
|
import { ModalLayout, ModalHeader, Typography, ModalBody, Flex, TextInput, Box, Checkbox, DatePicker, TimePicker, ModalFooter, Button, Combobox, ComboboxOption, Alert, Main, HeaderLayout, ContentLayout, TabGroup, Tabs, Tab, Divider, TabPanels, TabPanel, EmptyStateLayout, Grid, GridItem, Badge, Link as Link$1, IconButton, SingleSelect, SingleSelectOption, Tr, Td, Icon, Tooltip } from "@strapi/design-system";
|
|
@@ -11,7 +11,7 @@ import format from "date-fns/format";
|
|
|
11
11
|
import { utcToZonedTime, zonedTimeToUtc } from "date-fns-tz";
|
|
12
12
|
import { useIntl } from "react-intl";
|
|
13
13
|
import styled from "styled-components";
|
|
14
|
-
import { formatISO
|
|
14
|
+
import { formatISO } from "date-fns";
|
|
15
15
|
import { Formik, Form, useFormikContext } from "formik";
|
|
16
16
|
import * as yup from "yup";
|
|
17
17
|
import "@reduxjs/toolkit/query";
|
|
@@ -47,7 +47,6 @@ const ReleaseModal = ({
|
|
|
47
47
|
const { formatMessage } = useIntl();
|
|
48
48
|
const { pathname } = useLocation();
|
|
49
49
|
const isCreatingRelease = pathname === `/plugins/${pluginId}`;
|
|
50
|
-
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
51
50
|
const { timezoneList, systemTimezone = { value: "UTC+00:00-Africa/Abidjan " } } = getTimezones(
|
|
52
51
|
initialValues.scheduledAt ? new Date(initialValues.scheduledAt) : /* @__PURE__ */ new Date()
|
|
53
52
|
);
|
|
@@ -55,9 +54,8 @@ const ReleaseModal = ({
|
|
|
55
54
|
const { date, time, timezone } = values;
|
|
56
55
|
if (!date || !time || !timezone)
|
|
57
56
|
return null;
|
|
58
|
-
const formattedDate = parse(time, "HH:mm", new Date(date));
|
|
59
57
|
const timezoneWithoutOffset = timezone.split("&")[1];
|
|
60
|
-
return zonedTimeToUtc(
|
|
58
|
+
return zonedTimeToUtc(`${date} ${time}`, timezoneWithoutOffset);
|
|
61
59
|
};
|
|
62
60
|
const getTimezoneWithOffset = () => {
|
|
63
61
|
const currentTimezone = timezoneList.find(
|
|
@@ -105,93 +103,88 @@ const ReleaseModal = ({
|
|
|
105
103
|
required: true
|
|
106
104
|
}
|
|
107
105
|
),
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
106
|
+
/* @__PURE__ */ jsx(Box, { width: "max-content", children: /* @__PURE__ */ jsx(
|
|
107
|
+
Checkbox,
|
|
108
|
+
{
|
|
109
|
+
name: "isScheduled",
|
|
110
|
+
value: values.isScheduled,
|
|
111
|
+
onChange: (event) => {
|
|
112
|
+
setFieldValue("isScheduled", event.target.checked);
|
|
113
|
+
if (!event.target.checked) {
|
|
114
|
+
setFieldValue("date", null);
|
|
115
|
+
setFieldValue("time", "");
|
|
116
|
+
setFieldValue("timezone", null);
|
|
117
|
+
} else {
|
|
118
|
+
setFieldValue("date", initialValues.date);
|
|
119
|
+
setFieldValue("time", initialValues.time);
|
|
120
|
+
setFieldValue("timezone", initialValues.timezone ?? systemTimezone?.value);
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
children: /* @__PURE__ */ jsx(
|
|
124
|
+
Typography,
|
|
125
|
+
{
|
|
126
|
+
textColor: values.isScheduled ? "primary600" : "neutral800",
|
|
127
|
+
fontWeight: values.isScheduled ? "semiBold" : "regular",
|
|
128
|
+
children: formatMessage({
|
|
129
|
+
id: "modal.form.input.label.schedule-release",
|
|
130
|
+
defaultMessage: "Schedule release"
|
|
131
|
+
})
|
|
132
|
+
}
|
|
133
|
+
)
|
|
134
|
+
}
|
|
135
|
+
) }),
|
|
136
|
+
values.isScheduled && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
137
|
+
/* @__PURE__ */ jsxs(Flex, { gap: 4, alignItems: "start", children: [
|
|
138
|
+
/* @__PURE__ */ jsx(Box, { width: "100%", children: /* @__PURE__ */ jsx(
|
|
139
|
+
DatePicker,
|
|
140
|
+
{
|
|
141
|
+
label: formatMessage({
|
|
142
|
+
id: "content-releases.modal.form.input.label.date",
|
|
143
|
+
defaultMessage: "Date"
|
|
144
|
+
}),
|
|
145
|
+
name: "date",
|
|
146
|
+
error: errors.date,
|
|
147
|
+
onChange: (date) => {
|
|
148
|
+
const isoFormatDate = date ? formatISO(date, { representation: "date" }) : null;
|
|
149
|
+
setFieldValue("date", isoFormatDate);
|
|
150
|
+
},
|
|
151
|
+
clearLabel: formatMessage({
|
|
152
|
+
id: "content-releases.modal.form.input.clearLabel",
|
|
153
|
+
defaultMessage: "Clear"
|
|
154
|
+
}),
|
|
155
|
+
onClear: () => {
|
|
117
156
|
setFieldValue("date", null);
|
|
157
|
+
},
|
|
158
|
+
selectedDate: values.date || void 0,
|
|
159
|
+
required: true,
|
|
160
|
+
minDate: utcToZonedTime(/* @__PURE__ */ new Date(), values.timezone.split("&")[1])
|
|
161
|
+
}
|
|
162
|
+
) }),
|
|
163
|
+
/* @__PURE__ */ jsx(Box, { width: "100%", children: /* @__PURE__ */ jsx(
|
|
164
|
+
TimePicker,
|
|
165
|
+
{
|
|
166
|
+
label: formatMessage({
|
|
167
|
+
id: "content-releases.modal.form.input.label.time",
|
|
168
|
+
defaultMessage: "Time"
|
|
169
|
+
}),
|
|
170
|
+
name: "time",
|
|
171
|
+
error: errors.time,
|
|
172
|
+
onChange: (time) => {
|
|
173
|
+
setFieldValue("time", time);
|
|
174
|
+
},
|
|
175
|
+
clearLabel: formatMessage({
|
|
176
|
+
id: "content-releases.modal.form.input.clearLabel",
|
|
177
|
+
defaultMessage: "Clear"
|
|
178
|
+
}),
|
|
179
|
+
onClear: () => {
|
|
118
180
|
setFieldValue("time", "");
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
);
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
children: /* @__PURE__ */ jsx(
|
|
130
|
-
Typography,
|
|
131
|
-
{
|
|
132
|
-
textColor: values.isScheduled ? "primary600" : "neutral800",
|
|
133
|
-
fontWeight: values.isScheduled ? "semiBold" : "regular",
|
|
134
|
-
children: formatMessage({
|
|
135
|
-
id: "modal.form.input.label.schedule-release",
|
|
136
|
-
defaultMessage: "Schedule release"
|
|
137
|
-
})
|
|
138
|
-
}
|
|
139
|
-
)
|
|
140
|
-
}
|
|
141
|
-
) }),
|
|
142
|
-
values.isScheduled && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
143
|
-
/* @__PURE__ */ jsxs(Flex, { gap: 4, alignItems: "start", children: [
|
|
144
|
-
/* @__PURE__ */ jsx(Box, { width: "100%", children: /* @__PURE__ */ jsx(
|
|
145
|
-
DatePicker,
|
|
146
|
-
{
|
|
147
|
-
label: formatMessage({
|
|
148
|
-
id: "content-releases.modal.form.input.label.date",
|
|
149
|
-
defaultMessage: "Date"
|
|
150
|
-
}),
|
|
151
|
-
name: "date",
|
|
152
|
-
error: errors.date,
|
|
153
|
-
onChange: (date) => {
|
|
154
|
-
const isoFormatDate = date ? formatISO(date, { representation: "date" }) : null;
|
|
155
|
-
setFieldValue("date", isoFormatDate);
|
|
156
|
-
},
|
|
157
|
-
clearLabel: formatMessage({
|
|
158
|
-
id: "content-releases.modal.form.input.clearLabel",
|
|
159
|
-
defaultMessage: "Clear"
|
|
160
|
-
}),
|
|
161
|
-
onClear: () => {
|
|
162
|
-
setFieldValue("date", null);
|
|
163
|
-
},
|
|
164
|
-
selectedDate: values.date || void 0,
|
|
165
|
-
required: true,
|
|
166
|
-
minDate: utcToZonedTime(/* @__PURE__ */ new Date(), values.timezone.split("&")[1])
|
|
167
|
-
}
|
|
168
|
-
) }),
|
|
169
|
-
/* @__PURE__ */ jsx(Box, { width: "100%", children: /* @__PURE__ */ jsx(
|
|
170
|
-
TimePicker,
|
|
171
|
-
{
|
|
172
|
-
label: formatMessage({
|
|
173
|
-
id: "content-releases.modal.form.input.label.time",
|
|
174
|
-
defaultMessage: "Time"
|
|
175
|
-
}),
|
|
176
|
-
name: "time",
|
|
177
|
-
error: errors.time,
|
|
178
|
-
onChange: (time) => {
|
|
179
|
-
setFieldValue("time", time);
|
|
180
|
-
},
|
|
181
|
-
clearLabel: formatMessage({
|
|
182
|
-
id: "content-releases.modal.form.input.clearLabel",
|
|
183
|
-
defaultMessage: "Clear"
|
|
184
|
-
}),
|
|
185
|
-
onClear: () => {
|
|
186
|
-
setFieldValue("time", "");
|
|
187
|
-
},
|
|
188
|
-
value: values.time || void 0,
|
|
189
|
-
required: true
|
|
190
|
-
}
|
|
191
|
-
) })
|
|
192
|
-
] }),
|
|
193
|
-
/* @__PURE__ */ jsx(TimezoneComponent, { timezoneOptions: timezoneList })
|
|
194
|
-
] })
|
|
181
|
+
},
|
|
182
|
+
value: values.time || void 0,
|
|
183
|
+
required: true
|
|
184
|
+
}
|
|
185
|
+
) })
|
|
186
|
+
] }),
|
|
187
|
+
/* @__PURE__ */ jsx(TimezoneComponent, { timezoneOptions: timezoneList })
|
|
195
188
|
] })
|
|
196
189
|
] }) }),
|
|
197
190
|
/* @__PURE__ */ jsx(
|
|
@@ -265,8 +258,11 @@ const TimezoneComponent = ({ timezoneOptions }) => {
|
|
|
265
258
|
const LinkCard = styled(Link)`
|
|
266
259
|
display: block;
|
|
267
260
|
`;
|
|
268
|
-
const
|
|
269
|
-
|
|
261
|
+
const RelativeTime = styled(RelativeTime$1)`
|
|
262
|
+
display: inline-block;
|
|
263
|
+
&::first-letter {
|
|
264
|
+
text-transform: uppercase;
|
|
265
|
+
}
|
|
270
266
|
`;
|
|
271
267
|
const getBadgeProps = (status) => {
|
|
272
268
|
let color;
|
|
@@ -295,7 +291,6 @@ const getBadgeProps = (status) => {
|
|
|
295
291
|
};
|
|
296
292
|
const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
297
293
|
const { formatMessage } = useIntl();
|
|
298
|
-
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
299
294
|
if (isError) {
|
|
300
295
|
return /* @__PURE__ */ jsx(AnErrorOccurred, {});
|
|
301
296
|
}
|
|
@@ -316,7 +311,7 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
|
316
311
|
}
|
|
317
312
|
);
|
|
318
313
|
}
|
|
319
|
-
return /* @__PURE__ */ jsx(Grid, { gap: 4, children: releases.map(({ id, name,
|
|
314
|
+
return /* @__PURE__ */ jsx(Grid, { gap: 4, children: releases.map(({ id, name, scheduledAt, status }) => /* @__PURE__ */ jsx(GridItem, { col: 3, s: 6, xs: 12, children: /* @__PURE__ */ jsx(LinkCard, { href: `content-releases/${id}`, isExternal: false, children: /* @__PURE__ */ jsxs(
|
|
320
315
|
Flex,
|
|
321
316
|
{
|
|
322
317
|
direction: "column",
|
|
@@ -332,16 +327,10 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
|
332
327
|
children: [
|
|
333
328
|
/* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "start", gap: 1, children: [
|
|
334
329
|
/* @__PURE__ */ jsx(Typography, { as: "h3", variant: "delta", fontWeight: "bold", children: name }),
|
|
335
|
-
/* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children:
|
|
330
|
+
/* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: scheduledAt ? /* @__PURE__ */ jsx(RelativeTime, { timestamp: new Date(scheduledAt) }) : formatMessage({
|
|
336
331
|
id: "content-releases.pages.Releases.not-scheduled",
|
|
337
332
|
defaultMessage: "Not scheduled"
|
|
338
|
-
})
|
|
339
|
-
{
|
|
340
|
-
id: "content-releases.page.Releases.release-item.entries",
|
|
341
|
-
defaultMessage: "{number, plural, =0 {No entries} one {# entry} other {# entries}}"
|
|
342
|
-
},
|
|
343
|
-
{ number: actions.meta.count }
|
|
344
|
-
) })
|
|
333
|
+
}) })
|
|
345
334
|
] }),
|
|
346
335
|
/* @__PURE__ */ jsx(Badge, { ...getBadgeProps(status), children: status })
|
|
347
336
|
]
|
|
@@ -360,8 +349,7 @@ const INITIAL_FORM_VALUES = {
|
|
|
360
349
|
name: "",
|
|
361
350
|
date: null,
|
|
362
351
|
time: "",
|
|
363
|
-
|
|
364
|
-
isScheduled: window.strapi.future.isEnabled("contentReleasesScheduling"),
|
|
352
|
+
isScheduled: true,
|
|
365
353
|
scheduledAt: null,
|
|
366
354
|
timezone: null
|
|
367
355
|
};
|
|
@@ -711,7 +699,12 @@ const ReleaseDetailsLayout = ({
|
|
|
711
699
|
}
|
|
712
700
|
};
|
|
713
701
|
const handleRefresh = () => {
|
|
714
|
-
dispatch(
|
|
702
|
+
dispatch(
|
|
703
|
+
releaseApi.util.invalidateTags([
|
|
704
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
705
|
+
{ type: "Release", id: releaseId }
|
|
706
|
+
])
|
|
707
|
+
);
|
|
715
708
|
};
|
|
716
709
|
const getCreatedByUser = () => {
|
|
717
710
|
if (!release?.createdBy) {
|
|
@@ -747,7 +740,6 @@ const ReleaseDetailsLayout = ({
|
|
|
747
740
|
}
|
|
748
741
|
const totalEntries = release.actions.meta.count || 0;
|
|
749
742
|
const hasCreatedByUser = Boolean(getCreatedByUser());
|
|
750
|
-
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
751
743
|
const isScheduled = release.scheduledAt && release.timezone;
|
|
752
744
|
const numberOfEntriesText = formatMessage(
|
|
753
745
|
{
|
|
@@ -782,7 +774,7 @@ const ReleaseDetailsLayout = ({
|
|
|
782
774
|
{
|
|
783
775
|
title: release.name,
|
|
784
776
|
subtitle: /* @__PURE__ */ jsxs(Flex, { gap: 2, lineHeight: 6, children: [
|
|
785
|
-
/* @__PURE__ */ jsx(Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (
|
|
777
|
+
/* @__PURE__ */ jsx(Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : "") }),
|
|
786
778
|
/* @__PURE__ */ jsx(Badge, { ...getBadgeProps(release.status), children: release.status })
|
|
787
779
|
] }),
|
|
788
780
|
navigationAction: /* @__PURE__ */ jsx(Link$1, { startIcon: /* @__PURE__ */ jsx(ArrowLeft, {}), to: "/plugins/content-releases", children: formatMessage({
|
|
@@ -854,7 +846,7 @@ const ReleaseDetailsLayout = ({
|
|
|
854
846
|
defaultMessage: "Created"
|
|
855
847
|
}) }),
|
|
856
848
|
/* @__PURE__ */ jsxs(Typography, { variant: "pi", color: "neutral300", children: [
|
|
857
|
-
/* @__PURE__ */ jsx(RelativeTime, { timestamp: new Date(release.createdAt) }),
|
|
849
|
+
/* @__PURE__ */ jsx(RelativeTime$1, { timestamp: new Date(release.createdAt) }),
|
|
858
850
|
formatMessage(
|
|
859
851
|
{
|
|
860
852
|
id: "content-releases.header.actions.created.description",
|
|
@@ -893,6 +885,7 @@ const ReleaseDetailsLayout = ({
|
|
|
893
885
|
] });
|
|
894
886
|
};
|
|
895
887
|
const GROUP_BY_OPTIONS = ["contentType", "locale", "action"];
|
|
888
|
+
const GROUP_BY_OPTIONS_NO_LOCALE = ["contentType", "action"];
|
|
896
889
|
const getGroupByOptionLabel = (value) => {
|
|
897
890
|
if (value === "locale") {
|
|
898
891
|
return {
|
|
@@ -911,6 +904,21 @@ const getGroupByOptionLabel = (value) => {
|
|
|
911
904
|
defaultMessage: "Content-Types"
|
|
912
905
|
};
|
|
913
906
|
};
|
|
907
|
+
const DEFAULT_RELEASE_DETAILS_HEADER = [
|
|
908
|
+
{
|
|
909
|
+
key: "__name__",
|
|
910
|
+
fieldSchema: { type: "string" },
|
|
911
|
+
metadatas: {
|
|
912
|
+
label: {
|
|
913
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.name",
|
|
914
|
+
defaultMessage: "name"
|
|
915
|
+
},
|
|
916
|
+
searchable: false,
|
|
917
|
+
sortable: false
|
|
918
|
+
},
|
|
919
|
+
name: "name"
|
|
920
|
+
}
|
|
921
|
+
];
|
|
914
922
|
const ReleaseDetailsBody = () => {
|
|
915
923
|
const { formatMessage } = useIntl();
|
|
916
924
|
const { releaseId } = useParams();
|
|
@@ -926,6 +934,17 @@ const ReleaseDetailsBody = () => {
|
|
|
926
934
|
const {
|
|
927
935
|
allowedActions: { canUpdate }
|
|
928
936
|
} = useRBAC(PERMISSIONS);
|
|
937
|
+
const { runHookWaterfall } = useStrapiApp();
|
|
938
|
+
const {
|
|
939
|
+
displayedHeaders,
|
|
940
|
+
hasI18nEnabled
|
|
941
|
+
} = runHookWaterfall(
|
|
942
|
+
"ContentReleases/pages/ReleaseDetails/add-locale-in-releases",
|
|
943
|
+
{
|
|
944
|
+
displayedHeaders: DEFAULT_RELEASE_DETAILS_HEADER,
|
|
945
|
+
hasI18nEnabled: false
|
|
946
|
+
}
|
|
947
|
+
);
|
|
929
948
|
const release = releaseData?.data;
|
|
930
949
|
const selectedGroupBy = query?.groupBy || "contentType";
|
|
931
950
|
const {
|
|
@@ -1027,6 +1046,7 @@ const ReleaseDetailsBody = () => {
|
|
|
1027
1046
|
}
|
|
1028
1047
|
) });
|
|
1029
1048
|
}
|
|
1049
|
+
const options = hasI18nEnabled ? GROUP_BY_OPTIONS : GROUP_BY_OPTIONS_NO_LOCALE;
|
|
1030
1050
|
return /* @__PURE__ */ jsx(ContentLayout, { children: /* @__PURE__ */ jsxs(Flex, { gap: 8, direction: "column", alignItems: "stretch", children: [
|
|
1031
1051
|
/* @__PURE__ */ jsx(Flex, { children: /* @__PURE__ */ jsx(
|
|
1032
1052
|
SingleSelect,
|
|
@@ -1046,7 +1066,7 @@ const ReleaseDetailsBody = () => {
|
|
|
1046
1066
|
),
|
|
1047
1067
|
value: formatMessage(getGroupByOptionLabel(selectedGroupBy)),
|
|
1048
1068
|
onChange: (value) => setQuery({ groupBy: value }),
|
|
1049
|
-
children:
|
|
1069
|
+
children: options.map((option) => /* @__PURE__ */ jsx(SingleSelectOption, { value: option, children: formatMessage(getGroupByOptionLabel(option)) }, option))
|
|
1050
1070
|
}
|
|
1051
1071
|
) }),
|
|
1052
1072
|
Object.keys(releaseActions).map((key) => /* @__PURE__ */ jsxs(Flex, { gap: 4, direction: "column", alignItems: "stretch", children: [
|
|
@@ -1063,28 +1083,15 @@ const ReleaseDetailsBody = () => {
|
|
|
1063
1083
|
isFetching,
|
|
1064
1084
|
children: /* @__PURE__ */ jsxs(Table.Content, { children: [
|
|
1065
1085
|
/* @__PURE__ */ jsxs(Table.Head, { children: [
|
|
1066
|
-
/* @__PURE__ */ jsx(
|
|
1086
|
+
displayedHeaders.map(({ key: key2, fieldSchema, metadatas, name }) => /* @__PURE__ */ jsx(
|
|
1067
1087
|
Table.HeaderCell,
|
|
1068
1088
|
{
|
|
1069
|
-
fieldSchemaType:
|
|
1070
|
-
label: formatMessage(
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
}
|
|
1076
|
-
),
|
|
1077
|
-
/* @__PURE__ */ jsx(
|
|
1078
|
-
Table.HeaderCell,
|
|
1079
|
-
{
|
|
1080
|
-
fieldSchemaType: "string",
|
|
1081
|
-
label: formatMessage({
|
|
1082
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.locale",
|
|
1083
|
-
defaultMessage: "locale"
|
|
1084
|
-
}),
|
|
1085
|
-
name: "locale"
|
|
1086
|
-
}
|
|
1087
|
-
),
|
|
1089
|
+
fieldSchemaType: fieldSchema.type,
|
|
1090
|
+
label: formatMessage(metadatas.label),
|
|
1091
|
+
name
|
|
1092
|
+
},
|
|
1093
|
+
key2
|
|
1094
|
+
)),
|
|
1088
1095
|
/* @__PURE__ */ jsx(
|
|
1089
1096
|
Table.HeaderCell,
|
|
1090
1097
|
{
|
|
@@ -1123,7 +1130,7 @@ const ReleaseDetailsBody = () => {
|
|
|
1123
1130
|
/* @__PURE__ */ jsx(Table.Body, { children: releaseActions[key].map(
|
|
1124
1131
|
({ id, contentType, locale, type, entry }, actionIndex) => /* @__PURE__ */ jsxs(Tr, { children: [
|
|
1125
1132
|
/* @__PURE__ */ jsx(Td, { width: "25%", maxWidth: "200px", children: /* @__PURE__ */ jsx(Typography, { ellipsis: true, children: `${contentType.mainFieldValue || entry.id}` }) }),
|
|
1126
|
-
/* @__PURE__ */ jsx(Td, { width: "10%", children: /* @__PURE__ */ jsx(Typography, { children: `${locale?.name ? locale.name : "-"}` }) }),
|
|
1133
|
+
hasI18nEnabled && /* @__PURE__ */ jsx(Td, { width: "10%", children: /* @__PURE__ */ jsx(Typography, { children: `${locale?.name ? locale.name : "-"}` }) }),
|
|
1127
1134
|
/* @__PURE__ */ jsx(Td, { width: "10%", children: /* @__PURE__ */ jsx(Typography, { children: contentType.displayName || "" }) }),
|
|
1128
1135
|
/* @__PURE__ */ jsx(Td, { width: "20%", children: release.releasedAt ? /* @__PURE__ */ jsx(Typography, { children: formatMessage(
|
|
1129
1136
|
{
|
|
@@ -1223,7 +1230,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1223
1230
|
const title = releaseData?.name || "";
|
|
1224
1231
|
const timezone = releaseData?.timezone ?? null;
|
|
1225
1232
|
const scheduledAt = releaseData?.scheduledAt && timezone ? utcToZonedTime(releaseData.scheduledAt, timezone) : null;
|
|
1226
|
-
const date = scheduledAt ?
|
|
1233
|
+
const date = scheduledAt ? format(scheduledAt, "yyyy-MM-dd") : null;
|
|
1227
1234
|
const time = scheduledAt ? format(scheduledAt, "HH:mm") : "";
|
|
1228
1235
|
const handleEditRelease = async (values) => {
|
|
1229
1236
|
const response = await updateRelease({
|
|
@@ -1240,6 +1247,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1240
1247
|
defaultMessage: "Release updated."
|
|
1241
1248
|
})
|
|
1242
1249
|
});
|
|
1250
|
+
toggleEditReleaseModal();
|
|
1243
1251
|
} else if (isAxiosError(response.error)) {
|
|
1244
1252
|
toggleNotification({
|
|
1245
1253
|
type: "warning",
|
|
@@ -1251,7 +1259,6 @@ const ReleaseDetailsPage = () => {
|
|
|
1251
1259
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
1252
1260
|
});
|
|
1253
1261
|
}
|
|
1254
|
-
toggleEditReleaseModal();
|
|
1255
1262
|
};
|
|
1256
1263
|
const handleDeleteRelease = async () => {
|
|
1257
1264
|
const response = await deleteRelease({
|
|
@@ -1320,4 +1327,4 @@ const App = () => {
|
|
|
1320
1327
|
export {
|
|
1321
1328
|
App
|
|
1322
1329
|
};
|
|
1323
|
-
//# sourceMappingURL=App-
|
|
1330
|
+
//# sourceMappingURL=App-jrh58sXY.mjs.map
|