@strapi/content-releases 0.0.0-experimental.e3e48deb89bd0a1b6cc69b698696566fa7854a95 → 0.0.0-experimental.e5740babedd53cf5b6af99d74920b6b9ef1e4c11
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-PQlYzNfb.mjs → App-HVXzE3i3.mjs} +256 -280
- package/dist/_chunks/App-HVXzE3i3.mjs.map +1 -0
- package/dist/_chunks/{App-lzeJz92X.js → App-l62gIUTX.js} +254 -278
- package/dist/_chunks/App-l62gIUTX.js.map +1 -0
- package/dist/_chunks/{en-WuuhP6Bn.mjs → en-RdapH-9X.mjs} +1 -2
- package/dist/_chunks/en-RdapH-9X.mjs.map +1 -0
- package/dist/_chunks/{en-gcJJ5htG.js → en-faJDuv3q.js} +1 -2
- package/dist/_chunks/en-faJDuv3q.js.map +1 -0
- package/dist/_chunks/{index-Nf1JfI-m.js → index-ML_b3php.js} +28 -22
- package/dist/_chunks/index-ML_b3php.js.map +1 -0
- package/dist/_chunks/{index--4AgLDzb.mjs → index-Ys87ROOe.mjs} +32 -26
- package/dist/_chunks/index-Ys87ROOe.mjs.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +344 -203
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +344 -204
- package/dist/server/index.mjs.map +1 -1
- package/package.json +21 -14
- package/dist/_chunks/App-PQlYzNfb.mjs.map +0 -1
- package/dist/_chunks/App-lzeJz92X.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--4AgLDzb.mjs.map +0 -1
- package/dist/_chunks/index-Nf1JfI-m.js.map +0 -1
- package/dist/admin/src/components/CMReleasesContainer.d.ts +0 -1
- package/dist/admin/src/components/RelativeTime.d.ts +0 -28
- package/dist/admin/src/components/ReleaseActionMenu.d.ts +0 -26
- package/dist/admin/src/components/ReleaseActionOptions.d.ts +0 -9
- package/dist/admin/src/components/ReleaseModal.d.ts +0 -16
- package/dist/admin/src/constants.d.ts +0 -58
- package/dist/admin/src/index.d.ts +0 -3
- package/dist/admin/src/pages/App.d.ts +0 -1
- package/dist/admin/src/pages/PurchaseContentReleases.d.ts +0 -2
- package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +0 -2
- package/dist/admin/src/pages/ReleasesPage.d.ts +0 -8
- package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +0 -181
- package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +0 -39
- package/dist/admin/src/pluginId.d.ts +0 -1
- package/dist/admin/src/services/axios.d.ts +0 -29
- package/dist/admin/src/services/release.d.ts +0 -369
- package/dist/admin/src/store/hooks.d.ts +0 -7
- package/dist/admin/src/utils/time.d.ts +0 -1
- package/dist/server/src/bootstrap.d.ts +0 -5
- package/dist/server/src/bootstrap.d.ts.map +0 -1
- package/dist/server/src/constants.d.ts +0 -12
- package/dist/server/src/constants.d.ts.map +0 -1
- package/dist/server/src/content-types/index.d.ts +0 -99
- package/dist/server/src/content-types/index.d.ts.map +0 -1
- package/dist/server/src/content-types/release/index.d.ts +0 -48
- package/dist/server/src/content-types/release/index.d.ts.map +0 -1
- package/dist/server/src/content-types/release/schema.d.ts +0 -47
- package/dist/server/src/content-types/release/schema.d.ts.map +0 -1
- package/dist/server/src/content-types/release-action/index.d.ts +0 -50
- package/dist/server/src/content-types/release-action/index.d.ts.map +0 -1
- package/dist/server/src/content-types/release-action/schema.d.ts +0 -49
- package/dist/server/src/content-types/release-action/schema.d.ts.map +0 -1
- package/dist/server/src/controllers/index.d.ts +0 -18
- package/dist/server/src/controllers/index.d.ts.map +0 -1
- package/dist/server/src/controllers/release-action.d.ts +0 -9
- package/dist/server/src/controllers/release-action.d.ts.map +0 -1
- package/dist/server/src/controllers/release.d.ts +0 -11
- package/dist/server/src/controllers/release.d.ts.map +0 -1
- package/dist/server/src/controllers/validation/release-action.d.ts +0 -3
- package/dist/server/src/controllers/validation/release-action.d.ts.map +0 -1
- package/dist/server/src/controllers/validation/release.d.ts +0 -2
- package/dist/server/src/controllers/validation/release.d.ts.map +0 -1
- package/dist/server/src/destroy.d.ts +0 -5
- package/dist/server/src/destroy.d.ts.map +0 -1
- package/dist/server/src/index.d.ts +0 -2092
- package/dist/server/src/index.d.ts.map +0 -1
- package/dist/server/src/migrations/index.d.ts +0 -10
- package/dist/server/src/migrations/index.d.ts.map +0 -1
- package/dist/server/src/register.d.ts +0 -5
- package/dist/server/src/register.d.ts.map +0 -1
- package/dist/server/src/routes/index.d.ts +0 -35
- package/dist/server/src/routes/index.d.ts.map +0 -1
- package/dist/server/src/routes/release-action.d.ts +0 -18
- package/dist/server/src/routes/release-action.d.ts.map +0 -1
- package/dist/server/src/routes/release.d.ts +0 -18
- package/dist/server/src/routes/release.d.ts.map +0 -1
- package/dist/server/src/services/index.d.ts +0 -1826
- package/dist/server/src/services/index.d.ts.map +0 -1
- package/dist/server/src/services/release.d.ts +0 -66
- package/dist/server/src/services/release.d.ts.map +0 -1
- package/dist/server/src/services/scheduling.d.ts +0 -18
- package/dist/server/src/services/scheduling.d.ts.map +0 -1
- package/dist/server/src/services/validation.d.ts +0 -14
- package/dist/server/src/services/validation.d.ts.map +0 -1
- package/dist/server/src/utils/index.d.ts +0 -14
- package/dist/server/src/utils/index.d.ts.map +0 -1
- package/dist/shared/contracts/release-actions.d.ts +0 -105
- package/dist/shared/contracts/release-actions.d.ts.map +0 -1
- package/dist/shared/contracts/releases.d.ts +0 -166
- package/dist/shared/contracts/releases.d.ts.map +0 -1
- package/dist/shared/types.d.ts +0 -24
- package/dist/shared/types.d.ts.map +0 -1
- package/dist/shared/validation-schemas.d.ts +0 -2
- package/dist/shared/validation-schemas.d.ts.map +0 -1
|
@@ -1,53 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { useLocation,
|
|
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
|
|
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";
|
|
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-Ys87ROOe.mjs";
|
|
5
5
|
import * as React from "react";
|
|
6
|
-
import {
|
|
6
|
+
import { useLicenseLimits, unstable_useDocument } from "@strapi/admin/strapi-admin";
|
|
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";
|
|
7
8
|
import { Link, Menu, LinkButton } from "@strapi/design-system/v2";
|
|
8
|
-
import {
|
|
9
|
-
import { Plus, EmptyDocuments, Pencil, Trash, More, CrossCircle, CheckCircle } from "@strapi/icons";
|
|
9
|
+
import { Plus, EmptyDocuments, Pencil, Trash, ArrowLeft, More, CrossCircle, CheckCircle } from "@strapi/icons";
|
|
10
10
|
import format from "date-fns/format";
|
|
11
|
-
import {
|
|
11
|
+
import { utcToZonedTime, zonedTimeToUtc } from "date-fns-tz";
|
|
12
12
|
import { useIntl } from "react-intl";
|
|
13
13
|
import styled from "styled-components";
|
|
14
|
-
import {
|
|
14
|
+
import { formatISO, parse } from "date-fns";
|
|
15
15
|
import { Formik, Form, useFormikContext } from "formik";
|
|
16
16
|
import * as yup from "yup";
|
|
17
17
|
import "@reduxjs/toolkit/query";
|
|
18
18
|
import "axios";
|
|
19
19
|
import "@reduxjs/toolkit/query/react";
|
|
20
20
|
import "react-redux";
|
|
21
|
-
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
|
22
|
-
const RelativeTime = React.forwardRef(
|
|
23
|
-
({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {
|
|
24
|
-
const { formatRelativeTime, formatDate, formatTime } = useIntl();
|
|
25
|
-
const interval = intervalToDuration({
|
|
26
|
-
start: timestamp,
|
|
27
|
-
end: Date.now()
|
|
28
|
-
// see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.
|
|
29
|
-
});
|
|
30
|
-
const unit = intervals.find((intervalUnit) => {
|
|
31
|
-
return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
|
|
32
|
-
});
|
|
33
|
-
const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];
|
|
34
|
-
const customInterval = customIntervals.find(
|
|
35
|
-
(custom) => interval[custom.unit] < custom.threshold
|
|
36
|
-
);
|
|
37
|
-
const displayText = customInterval ? customInterval.text : formatRelativeTime(relativeTime, unit, { numeric: "auto" });
|
|
38
|
-
return /* @__PURE__ */ jsx(
|
|
39
|
-
"time",
|
|
40
|
-
{
|
|
41
|
-
ref: forwardedRef,
|
|
42
|
-
dateTime: timestamp.toISOString(),
|
|
43
|
-
role: "time",
|
|
44
|
-
title: `${formatDate(timestamp)} ${formatTime(timestamp)}`,
|
|
45
|
-
...restProps,
|
|
46
|
-
children: displayText
|
|
47
|
-
}
|
|
48
|
-
);
|
|
49
|
-
}
|
|
50
|
-
);
|
|
51
21
|
const RELEASE_SCHEMA = yup.object().shape({
|
|
52
22
|
name: yup.string().trim().required(),
|
|
53
23
|
scheduledAt: yup.string().nullable(),
|
|
@@ -77,7 +47,6 @@ const ReleaseModal = ({
|
|
|
77
47
|
const { formatMessage } = useIntl();
|
|
78
48
|
const { pathname } = useLocation();
|
|
79
49
|
const isCreatingRelease = pathname === `/plugins/${pluginId}`;
|
|
80
|
-
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
81
50
|
const { timezoneList, systemTimezone = { value: "UTC+00:00-Africa/Abidjan " } } = getTimezones(
|
|
82
51
|
initialValues.scheduledAt ? new Date(initialValues.scheduledAt) : /* @__PURE__ */ new Date()
|
|
83
52
|
);
|
|
@@ -86,12 +55,12 @@ const ReleaseModal = ({
|
|
|
86
55
|
if (!date || !time || !timezone)
|
|
87
56
|
return null;
|
|
88
57
|
const formattedDate = parse(time, "HH:mm", new Date(date));
|
|
89
|
-
const timezoneWithoutOffset = timezone.split("
|
|
58
|
+
const timezoneWithoutOffset = timezone.split("&")[1];
|
|
90
59
|
return zonedTimeToUtc(formattedDate, timezoneWithoutOffset);
|
|
91
60
|
};
|
|
92
61
|
const getTimezoneWithOffset = () => {
|
|
93
62
|
const currentTimezone = timezoneList.find(
|
|
94
|
-
(timezone) => timezone.value.split("
|
|
63
|
+
(timezone) => timezone.value.split("&")[1] === initialValues.timezone
|
|
95
64
|
);
|
|
96
65
|
return currentTimezone?.value || systemTimezone.value;
|
|
97
66
|
};
|
|
@@ -109,7 +78,7 @@ const ReleaseModal = ({
|
|
|
109
78
|
onSubmit: (values) => {
|
|
110
79
|
handleSubmit({
|
|
111
80
|
...values,
|
|
112
|
-
timezone: values.timezone ? values.timezone.split("
|
|
81
|
+
timezone: values.timezone ? values.timezone.split("&")[1] : null,
|
|
113
82
|
scheduledAt: values.isScheduled ? getScheduledTimestamp(values) : null
|
|
114
83
|
});
|
|
115
84
|
},
|
|
@@ -135,92 +104,88 @@ const ReleaseModal = ({
|
|
|
135
104
|
required: true
|
|
136
105
|
}
|
|
137
106
|
),
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
107
|
+
/* @__PURE__ */ jsx(Box, { width: "max-content", children: /* @__PURE__ */ jsx(
|
|
108
|
+
Checkbox,
|
|
109
|
+
{
|
|
110
|
+
name: "isScheduled",
|
|
111
|
+
value: values.isScheduled,
|
|
112
|
+
onChange: (event) => {
|
|
113
|
+
setFieldValue("isScheduled", event.target.checked);
|
|
114
|
+
if (!event.target.checked) {
|
|
115
|
+
setFieldValue("date", null);
|
|
116
|
+
setFieldValue("time", "");
|
|
117
|
+
setFieldValue("timezone", null);
|
|
118
|
+
} else {
|
|
119
|
+
setFieldValue("date", initialValues.date);
|
|
120
|
+
setFieldValue("time", initialValues.time);
|
|
121
|
+
setFieldValue("timezone", initialValues.timezone ?? systemTimezone?.value);
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
children: /* @__PURE__ */ jsx(
|
|
125
|
+
Typography,
|
|
126
|
+
{
|
|
127
|
+
textColor: values.isScheduled ? "primary600" : "neutral800",
|
|
128
|
+
fontWeight: values.isScheduled ? "semiBold" : "regular",
|
|
129
|
+
children: formatMessage({
|
|
130
|
+
id: "modal.form.input.label.schedule-release",
|
|
131
|
+
defaultMessage: "Schedule release"
|
|
132
|
+
})
|
|
133
|
+
}
|
|
134
|
+
)
|
|
135
|
+
}
|
|
136
|
+
) }),
|
|
137
|
+
values.isScheduled && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
138
|
+
/* @__PURE__ */ jsxs(Flex, { gap: 4, alignItems: "start", children: [
|
|
139
|
+
/* @__PURE__ */ jsx(Box, { width: "100%", children: /* @__PURE__ */ jsx(
|
|
140
|
+
DatePicker,
|
|
141
|
+
{
|
|
142
|
+
label: formatMessage({
|
|
143
|
+
id: "content-releases.modal.form.input.label.date",
|
|
144
|
+
defaultMessage: "Date"
|
|
145
|
+
}),
|
|
146
|
+
name: "date",
|
|
147
|
+
error: errors.date,
|
|
148
|
+
onChange: (date) => {
|
|
149
|
+
const isoFormatDate = date ? formatISO(date, { representation: "date" }) : null;
|
|
150
|
+
setFieldValue("date", isoFormatDate);
|
|
151
|
+
},
|
|
152
|
+
clearLabel: formatMessage({
|
|
153
|
+
id: "content-releases.modal.form.input.clearLabel",
|
|
154
|
+
defaultMessage: "Clear"
|
|
155
|
+
}),
|
|
156
|
+
onClear: () => {
|
|
147
157
|
setFieldValue("date", null);
|
|
158
|
+
},
|
|
159
|
+
selectedDate: values.date || void 0,
|
|
160
|
+
required: true,
|
|
161
|
+
minDate: utcToZonedTime(/* @__PURE__ */ new Date(), values.timezone.split("&")[1])
|
|
162
|
+
}
|
|
163
|
+
) }),
|
|
164
|
+
/* @__PURE__ */ jsx(Box, { width: "100%", children: /* @__PURE__ */ jsx(
|
|
165
|
+
TimePicker,
|
|
166
|
+
{
|
|
167
|
+
label: formatMessage({
|
|
168
|
+
id: "content-releases.modal.form.input.label.time",
|
|
169
|
+
defaultMessage: "Time"
|
|
170
|
+
}),
|
|
171
|
+
name: "time",
|
|
172
|
+
error: errors.time,
|
|
173
|
+
onChange: (time) => {
|
|
174
|
+
setFieldValue("time", time);
|
|
175
|
+
},
|
|
176
|
+
clearLabel: formatMessage({
|
|
177
|
+
id: "content-releases.modal.form.input.clearLabel",
|
|
178
|
+
defaultMessage: "Clear"
|
|
179
|
+
}),
|
|
180
|
+
onClear: () => {
|
|
148
181
|
setFieldValue("time", "");
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
);
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
children: /* @__PURE__ */ jsx(
|
|
160
|
-
Typography,
|
|
161
|
-
{
|
|
162
|
-
textColor: values.isScheduled ? "primary600" : "neutral800",
|
|
163
|
-
fontWeight: values.isScheduled ? "semiBold" : "regular",
|
|
164
|
-
children: formatMessage({
|
|
165
|
-
id: "modal.form.input.label.schedule-release",
|
|
166
|
-
defaultMessage: "Schedule release"
|
|
167
|
-
})
|
|
168
|
-
}
|
|
169
|
-
)
|
|
170
|
-
}
|
|
171
|
-
) }),
|
|
172
|
-
values.isScheduled && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
173
|
-
/* @__PURE__ */ jsxs(Flex, { gap: 4, alignItems: "start", children: [
|
|
174
|
-
/* @__PURE__ */ jsx(Box, { width: "100%", children: /* @__PURE__ */ jsx(
|
|
175
|
-
DatePicker,
|
|
176
|
-
{
|
|
177
|
-
label: formatMessage({
|
|
178
|
-
id: "content-releases.modal.form.input.label.date",
|
|
179
|
-
defaultMessage: "Date"
|
|
180
|
-
}),
|
|
181
|
-
name: "date",
|
|
182
|
-
error: errors.date,
|
|
183
|
-
onChange: (date) => {
|
|
184
|
-
const isoFormatDate = date ? formatISO(date, { representation: "date" }) : null;
|
|
185
|
-
setFieldValue("date", isoFormatDate);
|
|
186
|
-
},
|
|
187
|
-
clearLabel: formatMessage({
|
|
188
|
-
id: "content-releases.modal.form.input.clearLabel",
|
|
189
|
-
defaultMessage: "Clear"
|
|
190
|
-
}),
|
|
191
|
-
onClear: () => {
|
|
192
|
-
setFieldValue("date", null);
|
|
193
|
-
},
|
|
194
|
-
selectedDate: values.date || void 0,
|
|
195
|
-
required: true
|
|
196
|
-
}
|
|
197
|
-
) }),
|
|
198
|
-
/* @__PURE__ */ jsx(Box, { width: "100%", children: /* @__PURE__ */ jsx(
|
|
199
|
-
TimePicker,
|
|
200
|
-
{
|
|
201
|
-
label: formatMessage({
|
|
202
|
-
id: "content-releases.modal.form.input.label.time",
|
|
203
|
-
defaultMessage: "Time"
|
|
204
|
-
}),
|
|
205
|
-
name: "time",
|
|
206
|
-
error: errors.time,
|
|
207
|
-
onChange: (time) => {
|
|
208
|
-
setFieldValue("time", time);
|
|
209
|
-
},
|
|
210
|
-
clearLabel: formatMessage({
|
|
211
|
-
id: "content-releases.modal.form.input.clearLabel",
|
|
212
|
-
defaultMessage: "Clear"
|
|
213
|
-
}),
|
|
214
|
-
onClear: () => {
|
|
215
|
-
setFieldValue("time", "");
|
|
216
|
-
},
|
|
217
|
-
value: values.time || void 0,
|
|
218
|
-
required: true
|
|
219
|
-
}
|
|
220
|
-
) })
|
|
221
|
-
] }),
|
|
222
|
-
/* @__PURE__ */ jsx(TimezoneComponent, { timezoneOptions: timezoneList })
|
|
223
|
-
] })
|
|
182
|
+
},
|
|
183
|
+
value: values.time || void 0,
|
|
184
|
+
required: true
|
|
185
|
+
}
|
|
186
|
+
) })
|
|
187
|
+
] }),
|
|
188
|
+
/* @__PURE__ */ jsx(TimezoneComponent, { timezoneOptions: timezoneList })
|
|
224
189
|
] })
|
|
225
190
|
] }) }),
|
|
226
191
|
/* @__PURE__ */ jsx(
|
|
@@ -244,10 +209,10 @@ const ReleaseModal = ({
|
|
|
244
209
|
const getTimezones = (selectedDate) => {
|
|
245
210
|
const timezoneList = Intl.supportedValuesOf("timeZone").map((timezone) => {
|
|
246
211
|
const utcOffset = getTimezoneOffset(timezone, selectedDate);
|
|
247
|
-
return { offset: utcOffset, value: `${utcOffset}
|
|
212
|
+
return { offset: utcOffset, value: `${utcOffset}&${timezone}` };
|
|
248
213
|
});
|
|
249
214
|
const systemTimezone = timezoneList.find(
|
|
250
|
-
(timezone) => timezone.value.split("
|
|
215
|
+
(timezone) => timezone.value.split("&")[1] === Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
251
216
|
);
|
|
252
217
|
return { timezoneList, systemTimezone };
|
|
253
218
|
};
|
|
@@ -259,7 +224,7 @@ const TimezoneComponent = ({ timezoneOptions }) => {
|
|
|
259
224
|
if (values.date) {
|
|
260
225
|
const { timezoneList: timezoneList2 } = getTimezones(new Date(values.date));
|
|
261
226
|
setTimezoneList(timezoneList2);
|
|
262
|
-
const updatedTimezone = values.timezone && timezoneList2.find((tz) => tz.value.split("
|
|
227
|
+
const updatedTimezone = values.timezone && timezoneList2.find((tz) => tz.value.split("&")[1] === values.timezone.split("&")[1]);
|
|
263
228
|
if (updatedTimezone) {
|
|
264
229
|
setFieldValue("timezone", updatedTimezone.value);
|
|
265
230
|
}
|
|
@@ -272,9 +237,10 @@ const TimezoneComponent = ({ timezoneOptions }) => {
|
|
|
272
237
|
id: "content-releases.modal.form.input.label.timezone",
|
|
273
238
|
defaultMessage: "Timezone"
|
|
274
239
|
}),
|
|
240
|
+
autocomplete: { type: "list", filter: "contains" },
|
|
275
241
|
name: "timezone",
|
|
276
242
|
value: values.timezone || void 0,
|
|
277
|
-
textValue: values.timezone ? values.timezone.replace(
|
|
243
|
+
textValue: values.timezone ? values.timezone.replace(/&/, " ") : void 0,
|
|
278
244
|
onChange: (timezone) => {
|
|
279
245
|
setFieldValue("timezone", timezone);
|
|
280
246
|
},
|
|
@@ -286,7 +252,7 @@ const TimezoneComponent = ({ timezoneOptions }) => {
|
|
|
286
252
|
},
|
|
287
253
|
error: errors.timezone,
|
|
288
254
|
required: true,
|
|
289
|
-
children: timezoneList.map((timezone) => /* @__PURE__ */ jsx(ComboboxOption, { value: timezone.value, children: timezone.value.replace(
|
|
255
|
+
children: timezoneList.map((timezone) => /* @__PURE__ */ jsx(ComboboxOption, { value: timezone.value, children: timezone.value.replace(/&/, " ") }, timezone.value))
|
|
290
256
|
}
|
|
291
257
|
);
|
|
292
258
|
};
|
|
@@ -323,9 +289,8 @@ const getBadgeProps = (status) => {
|
|
|
323
289
|
};
|
|
324
290
|
const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
325
291
|
const { formatMessage } = useIntl();
|
|
326
|
-
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
327
292
|
if (isError) {
|
|
328
|
-
return /* @__PURE__ */ jsx(
|
|
293
|
+
return /* @__PURE__ */ jsx(AnErrorOccurred, {});
|
|
329
294
|
}
|
|
330
295
|
if (releases?.length === 0) {
|
|
331
296
|
return /* @__PURE__ */ jsx(
|
|
@@ -344,7 +309,7 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
|
344
309
|
}
|
|
345
310
|
);
|
|
346
311
|
}
|
|
347
|
-
return /* @__PURE__ */ jsx(Grid, { gap: 4, children: releases.map(({ id, name,
|
|
312
|
+
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(
|
|
348
313
|
Flex,
|
|
349
314
|
{
|
|
350
315
|
direction: "column",
|
|
@@ -360,16 +325,10 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
|
360
325
|
children: [
|
|
361
326
|
/* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "start", gap: 1, children: [
|
|
362
327
|
/* @__PURE__ */ jsx(Typography, { as: "h3", variant: "delta", fontWeight: "bold", children: name }),
|
|
363
|
-
/* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children:
|
|
328
|
+
/* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: scheduledAt ? /* @__PURE__ */ jsx(CapitalizeRelativeTime, { timestamp: new Date(scheduledAt) }) : formatMessage({
|
|
364
329
|
id: "content-releases.pages.Releases.not-scheduled",
|
|
365
330
|
defaultMessage: "Not scheduled"
|
|
366
|
-
})
|
|
367
|
-
{
|
|
368
|
-
id: "content-releases.page.Releases.release-item.entries",
|
|
369
|
-
defaultMessage: "{number, plural, =0 {No entries} one {# entry} other {# entries}}"
|
|
370
|
-
},
|
|
371
|
-
{ number: actions.meta.count }
|
|
372
|
-
) })
|
|
331
|
+
}) })
|
|
373
332
|
] }),
|
|
374
333
|
/* @__PURE__ */ jsx(Badge, { ...getBadgeProps(status), children: status })
|
|
375
334
|
]
|
|
@@ -388,8 +347,7 @@ const INITIAL_FORM_VALUES = {
|
|
|
388
347
|
name: "",
|
|
389
348
|
date: null,
|
|
390
349
|
time: "",
|
|
391
|
-
|
|
392
|
-
isScheduled: window.strapi.future.isEnabled("contentReleasesScheduling"),
|
|
350
|
+
isScheduled: true,
|
|
393
351
|
scheduledAt: null,
|
|
394
352
|
timezone: null
|
|
395
353
|
};
|
|
@@ -399,7 +357,7 @@ const ReleasesPage = () => {
|
|
|
399
357
|
const [releaseModalShown, setReleaseModalShown] = React.useState(false);
|
|
400
358
|
const toggleNotification = useNotification();
|
|
401
359
|
const { formatMessage } = useIntl();
|
|
402
|
-
const
|
|
360
|
+
const { push, replace } = useHistory();
|
|
403
361
|
const { formatAPIError } = useAPIErrorHandler();
|
|
404
362
|
const [{ query }, setQuery] = useQueryParams();
|
|
405
363
|
const response = useGetReleasesQuery(query);
|
|
@@ -423,9 +381,9 @@ const ReleasesPage = () => {
|
|
|
423
381
|
defaultMessage: "Please try again or open another release."
|
|
424
382
|
})
|
|
425
383
|
});
|
|
426
|
-
|
|
384
|
+
replace({ state: null });
|
|
427
385
|
}
|
|
428
|
-
}, [formatMessage, location?.state?.errors,
|
|
386
|
+
}, [formatMessage, location?.state?.errors, replace, toggleNotification]);
|
|
429
387
|
React.useEffect(() => {
|
|
430
388
|
if (tabRef.current) {
|
|
431
389
|
tabRef.current._handlers.setSelectedTabIndex(activeTabIndex);
|
|
@@ -435,7 +393,7 @@ const ReleasesPage = () => {
|
|
|
435
393
|
setReleaseModalShown((prev) => !prev);
|
|
436
394
|
};
|
|
437
395
|
if (isLoading) {
|
|
438
|
-
return /* @__PURE__ */ jsx(
|
|
396
|
+
return /* @__PURE__ */ jsx(Main, { "aria-busy": isLoading, children: /* @__PURE__ */ jsx(LoadingIndicatorPage, {}) });
|
|
439
397
|
}
|
|
440
398
|
const totalPendingReleases = isSuccess && response.currentData?.meta?.pendingReleasesCount || 0;
|
|
441
399
|
const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;
|
|
@@ -466,7 +424,7 @@ const ReleasesPage = () => {
|
|
|
466
424
|
})
|
|
467
425
|
});
|
|
468
426
|
trackUsage("didCreateRelease");
|
|
469
|
-
|
|
427
|
+
push(`/plugins/content-releases/${response2.data.data.id}`);
|
|
470
428
|
} else if (isAxiosError(response2.error)) {
|
|
471
429
|
toggleNotification({
|
|
472
430
|
type: "warning",
|
|
@@ -581,17 +539,23 @@ const ReleasesPage = () => {
|
|
|
581
539
|
]
|
|
582
540
|
}
|
|
583
541
|
),
|
|
584
|
-
/* @__PURE__ */ jsxs(
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
542
|
+
response.currentData?.meta?.pagination?.total ? /* @__PURE__ */ jsxs(Flex, { paddingTop: 4, alignItems: "flex-end", justifyContent: "space-between", children: [
|
|
543
|
+
/* @__PURE__ */ jsx(
|
|
544
|
+
PageSizeURLQuery,
|
|
545
|
+
{
|
|
546
|
+
options: ["8", "16", "32", "64"],
|
|
547
|
+
defaultValue: response?.currentData?.meta?.pagination?.pageSize.toString()
|
|
548
|
+
}
|
|
549
|
+
),
|
|
550
|
+
/* @__PURE__ */ jsx(
|
|
551
|
+
PaginationURLQuery,
|
|
552
|
+
{
|
|
553
|
+
pagination: {
|
|
554
|
+
pageCount: response?.currentData?.meta?.pagination?.pageCount || 0
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
)
|
|
558
|
+
] }) : null
|
|
595
559
|
] }) }),
|
|
596
560
|
releaseModalShown && /* @__PURE__ */ jsx(
|
|
597
561
|
ReleaseModal,
|
|
@@ -639,18 +603,14 @@ const TrashIcon = styled(Trash)`
|
|
|
639
603
|
const TypographyMaxWidth = styled(Typography)`
|
|
640
604
|
max-width: 300px;
|
|
641
605
|
`;
|
|
642
|
-
const EntryValidationText = ({ action, schema, entry }) => {
|
|
606
|
+
const EntryValidationText = ({ action, schema, components, entry }) => {
|
|
643
607
|
const { formatMessage } = useIntl();
|
|
644
|
-
const { validate } = unstable_useDocument(
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
skip: !schema
|
|
651
|
-
}
|
|
652
|
-
);
|
|
653
|
-
const errors = validate(entry) ?? {};
|
|
608
|
+
const { validate } = unstable_useDocument();
|
|
609
|
+
const { errors } = validate(entry, {
|
|
610
|
+
contentType: schema,
|
|
611
|
+
components,
|
|
612
|
+
isCreatingEntry: false
|
|
613
|
+
});
|
|
654
614
|
if (Object.keys(errors).length > 0) {
|
|
655
615
|
const validationErrorsMessages = Object.entries(errors).map(
|
|
656
616
|
([key, value]) => formatMessage(
|
|
@@ -698,12 +658,7 @@ const ReleaseDetailsLayout = ({
|
|
|
698
658
|
isLoading: isLoadingDetails,
|
|
699
659
|
isError,
|
|
700
660
|
error
|
|
701
|
-
} = useGetReleaseQuery(
|
|
702
|
-
{ id: releaseId },
|
|
703
|
-
{
|
|
704
|
-
skip: !releaseId
|
|
705
|
-
}
|
|
706
|
-
);
|
|
661
|
+
} = useGetReleaseQuery({ id: releaseId });
|
|
707
662
|
const [publishRelease, { isLoading: isPublishing }] = usePublishReleaseMutation();
|
|
708
663
|
const toggleNotification = useNotification();
|
|
709
664
|
const { formatAPIError } = useAPIErrorHandler();
|
|
@@ -713,8 +668,8 @@ const ReleaseDetailsLayout = ({
|
|
|
713
668
|
const dispatch = useTypedDispatch();
|
|
714
669
|
const { trackUsage } = useTracking();
|
|
715
670
|
const release = data?.data;
|
|
716
|
-
const handlePublishRelease =
|
|
717
|
-
const response = await publishRelease({ id });
|
|
671
|
+
const handlePublishRelease = async () => {
|
|
672
|
+
const response = await publishRelease({ id: releaseId });
|
|
718
673
|
if ("data" in response) {
|
|
719
674
|
toggleNotification({
|
|
720
675
|
type: "success",
|
|
@@ -742,7 +697,12 @@ const ReleaseDetailsLayout = ({
|
|
|
742
697
|
}
|
|
743
698
|
};
|
|
744
699
|
const handleRefresh = () => {
|
|
745
|
-
dispatch(
|
|
700
|
+
dispatch(
|
|
701
|
+
releaseApi.util.invalidateTags([
|
|
702
|
+
{ type: "ReleaseAction", id: "LIST" },
|
|
703
|
+
{ type: "Release", id: releaseId }
|
|
704
|
+
])
|
|
705
|
+
);
|
|
746
706
|
};
|
|
747
707
|
const getCreatedByUser = () => {
|
|
748
708
|
if (!release?.createdBy) {
|
|
@@ -757,26 +717,27 @@ const ReleaseDetailsLayout = ({
|
|
|
757
717
|
return release.createdBy.email;
|
|
758
718
|
};
|
|
759
719
|
if (isLoadingDetails) {
|
|
760
|
-
return /* @__PURE__ */ jsx(
|
|
720
|
+
return /* @__PURE__ */ jsx(Main, { "aria-busy": isLoadingDetails, children: /* @__PURE__ */ jsx(LoadingIndicatorPage, {}) });
|
|
761
721
|
}
|
|
762
722
|
if (isError || !release) {
|
|
763
723
|
return /* @__PURE__ */ jsx(
|
|
764
|
-
|
|
724
|
+
Redirect,
|
|
765
725
|
{
|
|
766
|
-
to:
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
726
|
+
to: {
|
|
727
|
+
pathname: "/plugins/content-releases",
|
|
728
|
+
state: {
|
|
729
|
+
errors: [
|
|
730
|
+
{
|
|
731
|
+
code: error?.code
|
|
732
|
+
}
|
|
733
|
+
]
|
|
734
|
+
}
|
|
773
735
|
}
|
|
774
736
|
}
|
|
775
737
|
);
|
|
776
738
|
}
|
|
777
739
|
const totalEntries = release.actions.meta.count || 0;
|
|
778
740
|
const hasCreatedByUser = Boolean(getCreatedByUser());
|
|
779
|
-
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
780
741
|
const isScheduled = release.scheduledAt && release.timezone;
|
|
781
742
|
const numberOfEntriesText = formatMessage(
|
|
782
743
|
{
|
|
@@ -811,10 +772,13 @@ const ReleaseDetailsLayout = ({
|
|
|
811
772
|
{
|
|
812
773
|
title: release.name,
|
|
813
774
|
subtitle: /* @__PURE__ */ jsxs(Flex, { gap: 2, lineHeight: 6, children: [
|
|
814
|
-
/* @__PURE__ */ jsx(Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (
|
|
775
|
+
/* @__PURE__ */ jsx(Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : "") }),
|
|
815
776
|
/* @__PURE__ */ jsx(Badge, { ...getBadgeProps(release.status), children: release.status })
|
|
816
777
|
] }),
|
|
817
|
-
navigationAction: /* @__PURE__ */ jsx(
|
|
778
|
+
navigationAction: /* @__PURE__ */ jsx(Link$1, { startIcon: /* @__PURE__ */ jsx(ArrowLeft, {}), to: "/plugins/content-releases", children: formatMessage({
|
|
779
|
+
id: "global.back",
|
|
780
|
+
defaultMessage: "Back"
|
|
781
|
+
}) }),
|
|
818
782
|
primaryAction: !release.releasedAt && /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
819
783
|
/* @__PURE__ */ jsxs(Menu.Root, { children: [
|
|
820
784
|
/* @__PURE__ */ jsx(
|
|
@@ -903,7 +867,7 @@ const ReleaseDetailsLayout = ({
|
|
|
903
867
|
{
|
|
904
868
|
size: "S",
|
|
905
869
|
variant: "default",
|
|
906
|
-
onClick: handlePublishRelease
|
|
870
|
+
onClick: handlePublishRelease,
|
|
907
871
|
loading: isPublishing,
|
|
908
872
|
disabled: release.actions.meta.count === 0,
|
|
909
873
|
children: formatMessage({
|
|
@@ -937,8 +901,9 @@ const getGroupByOptionLabel = (value) => {
|
|
|
937
901
|
defaultMessage: "Content-Types"
|
|
938
902
|
};
|
|
939
903
|
};
|
|
940
|
-
const ReleaseDetailsBody = (
|
|
904
|
+
const ReleaseDetailsBody = () => {
|
|
941
905
|
const { formatMessage } = useIntl();
|
|
906
|
+
const { releaseId } = useParams();
|
|
942
907
|
const [{ query }, setQuery] = useQueryParams();
|
|
943
908
|
const toggleNotification = useNotification();
|
|
944
909
|
const { formatAPIError } = useAPIErrorHandler();
|
|
@@ -993,7 +958,7 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
993
958
|
}
|
|
994
959
|
};
|
|
995
960
|
if (isLoading || isReleaseLoading) {
|
|
996
|
-
return /* @__PURE__ */ jsx(
|
|
961
|
+
return /* @__PURE__ */ jsx(ContentLayout, { children: /* @__PURE__ */ jsx(LoadingIndicatorPage, {}) });
|
|
997
962
|
}
|
|
998
963
|
const releaseActions = data?.data;
|
|
999
964
|
const releaseMeta = data?.meta;
|
|
@@ -1012,26 +977,32 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1012
977
|
});
|
|
1013
978
|
}
|
|
1014
979
|
return /* @__PURE__ */ jsx(
|
|
1015
|
-
|
|
980
|
+
Redirect,
|
|
1016
981
|
{
|
|
1017
|
-
to:
|
|
1018
|
-
|
|
1019
|
-
|
|
982
|
+
to: {
|
|
983
|
+
pathname: "/plugins/content-releases",
|
|
984
|
+
state: {
|
|
985
|
+
errors: errorsArray
|
|
986
|
+
}
|
|
1020
987
|
}
|
|
1021
988
|
}
|
|
1022
989
|
);
|
|
1023
990
|
}
|
|
1024
991
|
if (isError || !releaseActions) {
|
|
1025
|
-
return /* @__PURE__ */ jsx(
|
|
992
|
+
return /* @__PURE__ */ jsx(ContentLayout, { children: /* @__PURE__ */ jsx(AnErrorOccurred, {}) });
|
|
1026
993
|
}
|
|
1027
994
|
if (Object.keys(releaseActions).length === 0) {
|
|
1028
995
|
return /* @__PURE__ */ jsx(ContentLayout, { children: /* @__PURE__ */ jsx(
|
|
1029
|
-
|
|
996
|
+
NoContent,
|
|
1030
997
|
{
|
|
998
|
+
content: {
|
|
999
|
+
id: "content-releases.pages.Details.tab.emptyEntries",
|
|
1000
|
+
defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
|
|
1001
|
+
},
|
|
1031
1002
|
action: /* @__PURE__ */ jsx(
|
|
1032
1003
|
LinkButton,
|
|
1033
1004
|
{
|
|
1034
|
-
as: Link$
|
|
1005
|
+
as: Link$2,
|
|
1035
1006
|
to: {
|
|
1036
1007
|
pathname: "/content-manager"
|
|
1037
1008
|
},
|
|
@@ -1042,54 +1013,10 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1042
1013
|
defaultMessage: "Open the Content Manager"
|
|
1043
1014
|
})
|
|
1044
1015
|
}
|
|
1045
|
-
)
|
|
1046
|
-
icon: /* @__PURE__ */ jsx(EmptyDocuments, { width: "10rem" }),
|
|
1047
|
-
content: formatMessage({
|
|
1048
|
-
id: "content-releases.pages.Details.tab.emptyEntries",
|
|
1049
|
-
defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
|
|
1050
|
-
})
|
|
1016
|
+
)
|
|
1051
1017
|
}
|
|
1052
1018
|
) });
|
|
1053
1019
|
}
|
|
1054
|
-
const headers = [
|
|
1055
|
-
{
|
|
1056
|
-
label: formatMessage({
|
|
1057
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.name",
|
|
1058
|
-
defaultMessage: "name"
|
|
1059
|
-
}),
|
|
1060
|
-
name: "name"
|
|
1061
|
-
},
|
|
1062
|
-
{
|
|
1063
|
-
label: formatMessage({
|
|
1064
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.locale",
|
|
1065
|
-
defaultMessage: "locale"
|
|
1066
|
-
}),
|
|
1067
|
-
name: "locale"
|
|
1068
|
-
},
|
|
1069
|
-
{
|
|
1070
|
-
label: formatMessage({
|
|
1071
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
|
|
1072
|
-
defaultMessage: "content-type"
|
|
1073
|
-
}),
|
|
1074
|
-
name: "content-type"
|
|
1075
|
-
},
|
|
1076
|
-
{
|
|
1077
|
-
label: formatMessage({
|
|
1078
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.action",
|
|
1079
|
-
defaultMessage: "action"
|
|
1080
|
-
}),
|
|
1081
|
-
name: "action"
|
|
1082
|
-
},
|
|
1083
|
-
...!release.releasedAt ? [
|
|
1084
|
-
{
|
|
1085
|
-
label: formatMessage({
|
|
1086
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.status",
|
|
1087
|
-
defaultMessage: "status"
|
|
1088
|
-
}),
|
|
1089
|
-
name: "status"
|
|
1090
|
-
}
|
|
1091
|
-
] : []
|
|
1092
|
-
];
|
|
1093
1020
|
return /* @__PURE__ */ jsx(ContentLayout, { children: /* @__PURE__ */ jsxs(Flex, { gap: 8, direction: "column", alignItems: "stretch", children: [
|
|
1094
1021
|
/* @__PURE__ */ jsx(Flex, { children: /* @__PURE__ */ jsx(
|
|
1095
1022
|
SingleSelect,
|
|
@@ -1121,11 +1048,68 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1121
1048
|
...item,
|
|
1122
1049
|
id: Number(item.entry.id)
|
|
1123
1050
|
})),
|
|
1124
|
-
|
|
1125
|
-
isLoading
|
|
1051
|
+
colCount: releaseActions[key].length,
|
|
1052
|
+
isLoading,
|
|
1053
|
+
isFetching,
|
|
1126
1054
|
children: /* @__PURE__ */ jsxs(Table.Content, { children: [
|
|
1127
|
-
/* @__PURE__ */
|
|
1128
|
-
|
|
1055
|
+
/* @__PURE__ */ jsxs(Table.Head, { children: [
|
|
1056
|
+
/* @__PURE__ */ jsx(
|
|
1057
|
+
Table.HeaderCell,
|
|
1058
|
+
{
|
|
1059
|
+
fieldSchemaType: "string",
|
|
1060
|
+
label: formatMessage({
|
|
1061
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.name",
|
|
1062
|
+
defaultMessage: "name"
|
|
1063
|
+
}),
|
|
1064
|
+
name: "name"
|
|
1065
|
+
}
|
|
1066
|
+
),
|
|
1067
|
+
/* @__PURE__ */ jsx(
|
|
1068
|
+
Table.HeaderCell,
|
|
1069
|
+
{
|
|
1070
|
+
fieldSchemaType: "string",
|
|
1071
|
+
label: formatMessage({
|
|
1072
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.locale",
|
|
1073
|
+
defaultMessage: "locale"
|
|
1074
|
+
}),
|
|
1075
|
+
name: "locale"
|
|
1076
|
+
}
|
|
1077
|
+
),
|
|
1078
|
+
/* @__PURE__ */ jsx(
|
|
1079
|
+
Table.HeaderCell,
|
|
1080
|
+
{
|
|
1081
|
+
fieldSchemaType: "string",
|
|
1082
|
+
label: formatMessage({
|
|
1083
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
|
|
1084
|
+
defaultMessage: "content-type"
|
|
1085
|
+
}),
|
|
1086
|
+
name: "content-type"
|
|
1087
|
+
}
|
|
1088
|
+
),
|
|
1089
|
+
/* @__PURE__ */ jsx(
|
|
1090
|
+
Table.HeaderCell,
|
|
1091
|
+
{
|
|
1092
|
+
fieldSchemaType: "string",
|
|
1093
|
+
label: formatMessage({
|
|
1094
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.action",
|
|
1095
|
+
defaultMessage: "action"
|
|
1096
|
+
}),
|
|
1097
|
+
name: "action"
|
|
1098
|
+
}
|
|
1099
|
+
),
|
|
1100
|
+
!release.releasedAt && /* @__PURE__ */ jsx(
|
|
1101
|
+
Table.HeaderCell,
|
|
1102
|
+
{
|
|
1103
|
+
fieldSchemaType: "string",
|
|
1104
|
+
label: formatMessage({
|
|
1105
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.status",
|
|
1106
|
+
defaultMessage: "status"
|
|
1107
|
+
}),
|
|
1108
|
+
name: "status"
|
|
1109
|
+
}
|
|
1110
|
+
)
|
|
1111
|
+
] }),
|
|
1112
|
+
/* @__PURE__ */ jsx(Table.LoadingBody, {}),
|
|
1129
1113
|
/* @__PURE__ */ jsx(Table.Body, { children: releaseActions[key].map(
|
|
1130
1114
|
({ id, contentType, locale, type, entry }, actionIndex) => /* @__PURE__ */ jsxs(Tr, { children: [
|
|
1131
1115
|
/* @__PURE__ */ jsx(Td, { width: "25%", maxWidth: "200px", children: /* @__PURE__ */ jsx(Typography, { ellipsis: true, children: `${contentType.mainFieldValue || entry.id}` }) }),
|
|
@@ -1183,17 +1167,17 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1183
1167
|
}
|
|
1184
1168
|
)
|
|
1185
1169
|
] }, `releases-group-${key}`)),
|
|
1186
|
-
/* @__PURE__ */ jsxs(
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
)
|
|
1170
|
+
/* @__PURE__ */ jsxs(Flex, { paddingTop: 4, alignItems: "flex-end", justifyContent: "space-between", children: [
|
|
1171
|
+
/* @__PURE__ */ jsx(PageSizeURLQuery, { defaultValue: releaseMeta?.pagination?.pageSize.toString() }),
|
|
1172
|
+
/* @__PURE__ */ jsx(
|
|
1173
|
+
PaginationURLQuery,
|
|
1174
|
+
{
|
|
1175
|
+
pagination: {
|
|
1176
|
+
pageCount: releaseMeta?.pagination?.pageCount || 0
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1179
|
+
)
|
|
1180
|
+
] })
|
|
1197
1181
|
] }) });
|
|
1198
1182
|
};
|
|
1199
1183
|
const ReleaseDetailsPage = () => {
|
|
@@ -1201,19 +1185,14 @@ const ReleaseDetailsPage = () => {
|
|
|
1201
1185
|
const { releaseId } = useParams();
|
|
1202
1186
|
const toggleNotification = useNotification();
|
|
1203
1187
|
const { formatAPIError } = useAPIErrorHandler();
|
|
1204
|
-
const
|
|
1188
|
+
const { replace } = useHistory();
|
|
1205
1189
|
const [releaseModalShown, setReleaseModalShown] = React.useState(false);
|
|
1206
1190
|
const [showWarningSubmit, setWarningSubmit] = React.useState(false);
|
|
1207
1191
|
const {
|
|
1208
1192
|
isLoading: isLoadingDetails,
|
|
1209
1193
|
data,
|
|
1210
1194
|
isSuccess: isSuccessDetails
|
|
1211
|
-
} = useGetReleaseQuery(
|
|
1212
|
-
{ id: releaseId },
|
|
1213
|
-
{
|
|
1214
|
-
skip: !releaseId
|
|
1215
|
-
}
|
|
1216
|
-
);
|
|
1195
|
+
} = useGetReleaseQuery({ id: releaseId });
|
|
1217
1196
|
const [updateRelease, { isLoading: isSubmittingForm }] = useUpdateReleaseMutation();
|
|
1218
1197
|
const [deleteRelease, { isLoading: isDeletingRelease }] = useDeleteReleaseMutation();
|
|
1219
1198
|
const toggleEditReleaseModal = () => {
|
|
@@ -1226,13 +1205,10 @@ const ReleaseDetailsPage = () => {
|
|
|
1226
1205
|
{
|
|
1227
1206
|
toggleEditReleaseModal,
|
|
1228
1207
|
toggleWarningSubmit,
|
|
1229
|
-
children: /* @__PURE__ */ jsx(
|
|
1208
|
+
children: /* @__PURE__ */ jsx(ContentLayout, { children: /* @__PURE__ */ jsx(LoadingIndicatorPage, {}) })
|
|
1230
1209
|
}
|
|
1231
1210
|
);
|
|
1232
1211
|
}
|
|
1233
|
-
if (!releaseId) {
|
|
1234
|
-
return /* @__PURE__ */ jsx(Navigate, { to: ".." });
|
|
1235
|
-
}
|
|
1236
1212
|
const releaseData = isSuccessDetails && data?.data || null;
|
|
1237
1213
|
const title = releaseData?.name || "";
|
|
1238
1214
|
const timezone = releaseData?.timezone ?? null;
|
|
@@ -1272,7 +1248,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1272
1248
|
id: releaseId
|
|
1273
1249
|
});
|
|
1274
1250
|
if ("data" in response) {
|
|
1275
|
-
|
|
1251
|
+
replace("/plugins/content-releases");
|
|
1276
1252
|
} else if (isAxiosError(response.error)) {
|
|
1277
1253
|
toggleNotification({
|
|
1278
1254
|
type: "warning",
|
|
@@ -1291,7 +1267,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1291
1267
|
toggleEditReleaseModal,
|
|
1292
1268
|
toggleWarningSubmit,
|
|
1293
1269
|
children: [
|
|
1294
|
-
/* @__PURE__ */ jsx(ReleaseDetailsBody, {
|
|
1270
|
+
/* @__PURE__ */ jsx(ReleaseDetailsBody, {}),
|
|
1295
1271
|
releaseModalShown && /* @__PURE__ */ jsx(
|
|
1296
1272
|
ReleaseModal,
|
|
1297
1273
|
{
|
|
@@ -1326,12 +1302,12 @@ const ReleaseDetailsPage = () => {
|
|
|
1326
1302
|
);
|
|
1327
1303
|
};
|
|
1328
1304
|
const App = () => {
|
|
1329
|
-
return /* @__PURE__ */ jsx(
|
|
1330
|
-
/* @__PURE__ */ jsx(Route, {
|
|
1331
|
-
/* @__PURE__ */ jsx(Route, {
|
|
1305
|
+
return /* @__PURE__ */ jsx(CheckPagePermissions, { permissions: PERMISSIONS.main, children: /* @__PURE__ */ jsxs(Switch, { children: [
|
|
1306
|
+
/* @__PURE__ */ jsx(Route, { exact: true, path: `/plugins/${pluginId}`, component: ReleasesPage }),
|
|
1307
|
+
/* @__PURE__ */ jsx(Route, { exact: true, path: `/plugins/${pluginId}/:releaseId`, component: ReleaseDetailsPage })
|
|
1332
1308
|
] }) });
|
|
1333
1309
|
};
|
|
1334
1310
|
export {
|
|
1335
1311
|
App
|
|
1336
1312
|
};
|
|
1337
|
-
//# sourceMappingURL=App-
|
|
1313
|
+
//# sourceMappingURL=App-HVXzE3i3.mjs.map
|