@strapi/content-releases 0.0.0-experimental.d53e940834bf72ddc725f1d2fd36dac9abec30cb → 0.0.0-experimental.d65615a2b9130dd742d3c396674457d7971da928
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-CEwOQkKT.js → App-BKB1esYS.js} +314 -264
- package/dist/_chunks/App-BKB1esYS.js.map +1 -0
- package/dist/_chunks/{App-B2R2exNT.mjs → App-Cne--1Z8.mjs} +317 -266
- package/dist/_chunks/App-Cne--1Z8.mjs.map +1 -0
- package/dist/_chunks/ReleasesSettingsPage-C1WwGWIH.mjs +178 -0
- package/dist/_chunks/ReleasesSettingsPage-C1WwGWIH.mjs.map +1 -0
- package/dist/_chunks/ReleasesSettingsPage-kuXIwpWp.js +178 -0
- package/dist/_chunks/ReleasesSettingsPage-kuXIwpWp.js.map +1 -0
- package/dist/_chunks/{en-DtFJ5ViE.js → en-CmYoEnA7.js} +9 -2
- package/dist/_chunks/en-CmYoEnA7.js.map +1 -0
- package/dist/_chunks/{en-B9Ur3VsE.mjs → en-D0yVZFqf.mjs} +9 -2
- package/dist/_chunks/en-D0yVZFqf.mjs.map +1 -0
- package/dist/_chunks/{index-BrWv-zV4.js → index-5Odi61vw.js} +793 -441
- package/dist/_chunks/index-5Odi61vw.js.map +1 -0
- package/dist/_chunks/index-Cy7qwpaU.mjs +1362 -0
- package/dist/_chunks/index-Cy7qwpaU.mjs.map +1 -0
- package/dist/_chunks/schemas-BE1LxE9J.js +62 -0
- package/dist/_chunks/schemas-BE1LxE9J.js.map +1 -0
- package/dist/_chunks/schemas-DdA2ic2U.mjs +44 -0
- package/dist/_chunks/schemas-DdA2ic2U.mjs.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +2 -2
- package/dist/admin/src/components/ReleaseActionMenu.d.ts +2 -2
- package/dist/admin/src/components/{CMReleasesContainer.d.ts → ReleaseActionModal.d.ts} +3 -1
- package/dist/admin/src/components/ReleaseListCell.d.ts +28 -0
- package/dist/admin/src/components/ReleasesPanel.d.ts +3 -0
- package/dist/admin/src/constants.d.ts +18 -0
- package/dist/admin/src/modules/hooks.d.ts +7 -0
- package/dist/admin/src/pages/ReleasesSettingsPage.d.ts +1 -0
- package/dist/admin/src/services/release.d.ts +43 -36
- package/dist/admin/src/utils/time.d.ts +9 -0
- package/dist/admin/src/validation/schemas.d.ts +6 -0
- package/dist/server/index.js +782 -580
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +783 -581
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/constants.d.ts +11 -2
- package/dist/server/src/constants.d.ts.map +1 -1
- package/dist/server/src/content-types/index.d.ts +3 -5
- package/dist/server/src/content-types/index.d.ts.map +1 -1
- package/dist/server/src/content-types/release-action/index.d.ts +3 -5
- package/dist/server/src/content-types/release-action/index.d.ts.map +1 -1
- package/dist/server/src/content-types/release-action/schema.d.ts +3 -5
- package/dist/server/src/content-types/release-action/schema.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +6 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/release-action.d.ts.map +1 -1
- package/dist/server/src/controllers/release.d.ts +7 -1
- package/dist/server/src/controllers/release.d.ts.map +1 -1
- package/dist/server/src/controllers/settings.d.ts +11 -0
- package/dist/server/src/controllers/settings.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/release-action.d.ts +7 -1
- package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/release.d.ts +2 -0
- package/dist/server/src/controllers/validation/release.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/settings.d.ts +3 -0
- package/dist/server/src/controllers/validation/settings.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +68 -49
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/documents.d.ts +6 -0
- package/dist/server/src/middlewares/documents.d.ts.map +1 -0
- package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts +9 -0
- package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +1 -0
- package/dist/server/src/migrations/index.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +16 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/routes/release.d.ts.map +1 -1
- package/dist/server/src/routes/settings.d.ts +18 -0
- package/dist/server/src/routes/settings.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +40 -38
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/release-action.d.ts +38 -0
- package/dist/server/src/services/release-action.d.ts.map +1 -0
- package/dist/server/src/services/release.d.ts +6 -41
- package/dist/server/src/services/release.d.ts.map +1 -1
- package/dist/server/src/services/settings.d.ts +13 -0
- package/dist/server/src/services/settings.d.ts.map +1 -0
- package/dist/server/src/services/validation.d.ts +1 -1
- package/dist/server/src/services/validation.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts +29 -8
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/shared/contracts/release-actions.d.ts +9 -10
- package/dist/shared/contracts/release-actions.d.ts.map +1 -1
- package/dist/shared/contracts/releases.d.ts +9 -7
- package/dist/shared/contracts/releases.d.ts.map +1 -1
- package/dist/shared/contracts/settings.d.ts +39 -0
- package/dist/shared/contracts/settings.d.ts.map +1 -0
- package/package.json +15 -13
- package/dist/_chunks/App-B2R2exNT.mjs.map +0 -1
- package/dist/_chunks/App-CEwOQkKT.js.map +0 -1
- package/dist/_chunks/en-B9Ur3VsE.mjs.map +0 -1
- package/dist/_chunks/en-DtFJ5ViE.js.map +0 -1
- package/dist/_chunks/index-BrWv-zV4.js.map +0 -1
- package/dist/_chunks/index-DbmynICx.mjs +0 -1010
- package/dist/_chunks/index-DbmynICx.mjs.map +0 -1
- package/dist/shared/validation-schemas.d.ts +0 -2
- package/dist/shared/validation-schemas.d.ts.map +0 -1
- package/strapi-server.js +0 -3
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useNotification, useAPIErrorHandler, useQueryParams, useTracking, useRBAC, Page, Layouts, Pagination, isFetchError, ConfirmDialog, BackButton, useStrapiApp, Table } from "@strapi/admin/strapi-admin";
|
|
3
3
|
import { useLocation, useNavigate, NavLink, useParams, Navigate, Link as Link$1, Routes, Route } from "react-router-dom";
|
|
4
|
-
import { g as
|
|
4
|
+
import { g as getTimezones, p as pluginId, u as useGetReleasesQuery, a as useGetReleaseSettingsQuery, b as useCreateReleaseMutation, P as PERMISSIONS, c as useGetReleaseQuery, d as useUpdateReleaseMutation, e as useDeleteReleaseMutation, f as usePublishReleaseMutation, h as getTimezoneOffset, i as useGetReleaseActionsQuery, j as useUpdateReleaseActionMutation, R as ReleaseActionOptions, k as ReleaseActionMenu, r as releaseApi } from "./index-Cy7qwpaU.mjs";
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { unstable_useDocument } from "@strapi/content-manager/strapi-admin";
|
|
7
|
-
import { Modal, Flex, Field, TextInput, Box, Checkbox, Typography, DatePicker, TimePicker, Button, Combobox, ComboboxOption, Link, Alert, Main, Tabs, Divider, EmptyStateLayout, Grid, Badge,
|
|
8
|
-
import { Plus, Pencil, Trash, More, CrossCircle, CheckCircle } from "@strapi/icons";
|
|
7
|
+
import { Modal, Flex, Field, TextInput, Box, Checkbox, Typography, DatePicker, TimePicker, Button, Combobox, ComboboxOption, Link, Alert, Main, Tabs, Divider, EmptyStateLayout, Grid, Badge, MenuItem, SimpleMenu, Dialog, LinkButton, SingleSelect, SingleSelectOption, Tr, Td, Tooltip } from "@strapi/design-system";
|
|
8
|
+
import { Plus, Pencil, Trash, More, CrossCircle, CheckCircle, ArrowsCounterClockwise } from "@strapi/icons";
|
|
9
9
|
import { EmptyDocuments } from "@strapi/icons/symbols";
|
|
10
|
-
import format from "date-fns/format";
|
|
10
|
+
import format$1 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 { intervalToDuration, isPast, formatISO } from "date-fns";
|
|
14
|
+
import { intervalToDuration, isPast, formatISO, format } from "date-fns";
|
|
15
15
|
import { Formik, Form, useFormikContext } from "formik";
|
|
16
|
-
import
|
|
16
|
+
import { R as RELEASE_SCHEMA } from "./schemas-DdA2ic2U.mjs";
|
|
17
17
|
import { useDispatch } from "react-redux";
|
|
18
18
|
import { useLicenseLimits } from "@strapi/admin/strapi-admin/ee";
|
|
19
19
|
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
|
@@ -46,26 +46,6 @@ const RelativeTime$1 = React.forwardRef(
|
|
|
46
46
|
);
|
|
47
47
|
}
|
|
48
48
|
);
|
|
49
|
-
const RELEASE_SCHEMA = yup.object().shape({
|
|
50
|
-
name: yup.string().trim().required(),
|
|
51
|
-
scheduledAt: yup.string().nullable(),
|
|
52
|
-
isScheduled: yup.boolean().optional(),
|
|
53
|
-
time: yup.string().when("isScheduled", {
|
|
54
|
-
is: true,
|
|
55
|
-
then: yup.string().trim().required(),
|
|
56
|
-
otherwise: yup.string().nullable()
|
|
57
|
-
}),
|
|
58
|
-
timezone: yup.string().when("isScheduled", {
|
|
59
|
-
is: true,
|
|
60
|
-
then: yup.string().required().nullable(),
|
|
61
|
-
otherwise: yup.string().nullable()
|
|
62
|
-
}),
|
|
63
|
-
date: yup.string().when("isScheduled", {
|
|
64
|
-
is: true,
|
|
65
|
-
then: yup.string().required().nullable(),
|
|
66
|
-
otherwise: yup.string().nullable()
|
|
67
|
-
})
|
|
68
|
-
}).required().noUnknown();
|
|
69
49
|
const ReleaseModal = ({
|
|
70
50
|
handleClose,
|
|
71
51
|
open,
|
|
@@ -119,14 +99,22 @@ const ReleaseModal = ({
|
|
|
119
99
|
children: ({ values, errors, handleChange, setFieldValue }) => {
|
|
120
100
|
return /* @__PURE__ */ jsxs(Form, { children: [
|
|
121
101
|
/* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 6, children: [
|
|
122
|
-
/* @__PURE__ */ jsxs(
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
102
|
+
/* @__PURE__ */ jsxs(
|
|
103
|
+
Field.Root,
|
|
104
|
+
{
|
|
105
|
+
name: "name",
|
|
106
|
+
error: errors.name && formatMessage({ id: errors.name, defaultMessage: errors.name }),
|
|
107
|
+
required: true,
|
|
108
|
+
children: [
|
|
109
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
110
|
+
id: "content-releases.modal.form.input.label.release-name",
|
|
111
|
+
defaultMessage: "Name"
|
|
112
|
+
}) }),
|
|
113
|
+
/* @__PURE__ */ jsx(TextInput, { value: values.name, onChange: handleChange }),
|
|
114
|
+
/* @__PURE__ */ jsx(Field.Error, {})
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
),
|
|
130
118
|
/* @__PURE__ */ jsx(Box, { width: "max-content", children: /* @__PURE__ */ jsx(
|
|
131
119
|
Checkbox,
|
|
132
120
|
{
|
|
@@ -162,54 +150,70 @@ const ReleaseModal = ({
|
|
|
162
150
|
) }),
|
|
163
151
|
values.isScheduled && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
164
152
|
/* @__PURE__ */ jsxs(Flex, { gap: 4, alignItems: "start", children: [
|
|
165
|
-
/* @__PURE__ */ jsx(Box, { width: "100%", children: /* @__PURE__ */ jsxs(
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
153
|
+
/* @__PURE__ */ jsx(Box, { width: "100%", children: /* @__PURE__ */ jsxs(
|
|
154
|
+
Field.Root,
|
|
155
|
+
{
|
|
156
|
+
name: "date",
|
|
157
|
+
error: errors.date && formatMessage({ id: errors.date, defaultMessage: errors.date }),
|
|
158
|
+
required: true,
|
|
159
|
+
children: [
|
|
160
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
161
|
+
id: "content-releases.modal.form.input.label.date",
|
|
162
|
+
defaultMessage: "Date"
|
|
163
|
+
}) }),
|
|
164
|
+
/* @__PURE__ */ jsx(
|
|
165
|
+
DatePicker,
|
|
166
|
+
{
|
|
167
|
+
onChange: (date) => {
|
|
168
|
+
const isoFormatDate = date ? formatISO(date, { representation: "date" }) : null;
|
|
169
|
+
setFieldValue("date", isoFormatDate);
|
|
170
|
+
},
|
|
171
|
+
clearLabel: formatMessage({
|
|
172
|
+
id: "content-releases.modal.form.input.clearLabel",
|
|
173
|
+
defaultMessage: "Clear"
|
|
174
|
+
}),
|
|
175
|
+
onClear: () => {
|
|
176
|
+
setFieldValue("date", null);
|
|
177
|
+
},
|
|
178
|
+
value: values.date ? new Date(values.date) : /* @__PURE__ */ new Date(),
|
|
179
|
+
minDate: utcToZonedTime(/* @__PURE__ */ new Date(), values.timezone.split("&")[1])
|
|
180
|
+
}
|
|
181
|
+
),
|
|
182
|
+
/* @__PURE__ */ jsx(Field.Error, {})
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
) }),
|
|
186
|
+
/* @__PURE__ */ jsx(Box, { width: "100%", children: /* @__PURE__ */ jsxs(
|
|
187
|
+
Field.Root,
|
|
188
|
+
{
|
|
189
|
+
name: "time",
|
|
190
|
+
error: errors.time && formatMessage({ id: errors.time, defaultMessage: errors.time }),
|
|
191
|
+
required: true,
|
|
192
|
+
children: [
|
|
193
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
194
|
+
id: "content-releases.modal.form.input.label.time",
|
|
195
|
+
defaultMessage: "Time"
|
|
196
|
+
}) }),
|
|
197
|
+
/* @__PURE__ */ jsx(
|
|
198
|
+
TimePicker,
|
|
199
|
+
{
|
|
200
|
+
onChange: (time) => {
|
|
201
|
+
setFieldValue("time", time);
|
|
202
|
+
},
|
|
203
|
+
clearLabel: formatMessage({
|
|
204
|
+
id: "content-releases.modal.form.input.clearLabel",
|
|
205
|
+
defaultMessage: "Clear"
|
|
206
|
+
}),
|
|
207
|
+
onClear: () => {
|
|
208
|
+
setFieldValue("time", "");
|
|
209
|
+
},
|
|
210
|
+
value: values.time || void 0
|
|
211
|
+
}
|
|
212
|
+
),
|
|
213
|
+
/* @__PURE__ */ jsx(Field.Error, {})
|
|
214
|
+
]
|
|
215
|
+
}
|
|
216
|
+
) })
|
|
213
217
|
] }),
|
|
214
218
|
/* @__PURE__ */ jsx(TimezoneComponent, { timezoneOptions: timezoneList })
|
|
215
219
|
] })
|
|
@@ -230,16 +234,6 @@ const ReleaseModal = ({
|
|
|
230
234
|
)
|
|
231
235
|
] }) });
|
|
232
236
|
};
|
|
233
|
-
const getTimezones = (selectedDate) => {
|
|
234
|
-
const timezoneList = Intl.supportedValuesOf("timeZone").map((timezone) => {
|
|
235
|
-
const utcOffset = getTimezoneOffset(timezone, selectedDate);
|
|
236
|
-
return { offset: utcOffset, value: `${utcOffset}&${timezone}` };
|
|
237
|
-
});
|
|
238
|
-
const systemTimezone = timezoneList.find(
|
|
239
|
-
(timezone) => timezone.value.split("&")[1] === Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
240
|
-
);
|
|
241
|
-
return { timezoneList, systemTimezone };
|
|
242
|
-
};
|
|
243
237
|
const TimezoneComponent = ({ timezoneOptions }) => {
|
|
244
238
|
const { values, errors, setFieldValue } = useFormikContext();
|
|
245
239
|
const { formatMessage } = useIntl();
|
|
@@ -254,31 +248,39 @@ const TimezoneComponent = ({ timezoneOptions }) => {
|
|
|
254
248
|
}
|
|
255
249
|
}
|
|
256
250
|
}, [setFieldValue, values.date, values.timezone]);
|
|
257
|
-
return /* @__PURE__ */ jsxs(
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
251
|
+
return /* @__PURE__ */ jsxs(
|
|
252
|
+
Field.Root,
|
|
253
|
+
{
|
|
254
|
+
name: "timezone",
|
|
255
|
+
error: errors.timezone && formatMessage({ id: errors.timezone, defaultMessage: errors.timezone }),
|
|
256
|
+
required: true,
|
|
257
|
+
children: [
|
|
258
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
|
259
|
+
id: "content-releases.modal.form.input.label.timezone",
|
|
260
|
+
defaultMessage: "Timezone"
|
|
261
|
+
}) }),
|
|
262
|
+
/* @__PURE__ */ jsx(
|
|
263
|
+
Combobox,
|
|
264
|
+
{
|
|
265
|
+
autocomplete: { type: "list", filter: "contains" },
|
|
266
|
+
value: values.timezone || void 0,
|
|
267
|
+
textValue: values.timezone ? values.timezone.replace(/&/, " ") : void 0,
|
|
268
|
+
onChange: (timezone) => {
|
|
269
|
+
setFieldValue("timezone", timezone);
|
|
270
|
+
},
|
|
271
|
+
onTextValueChange: (timezone) => {
|
|
272
|
+
setFieldValue("timezone", timezone);
|
|
273
|
+
},
|
|
274
|
+
onClear: () => {
|
|
275
|
+
setFieldValue("timezone", "");
|
|
276
|
+
},
|
|
277
|
+
children: timezoneList.map((timezone) => /* @__PURE__ */ jsx(ComboboxOption, { value: timezone.value, children: timezone.value.replace(/&/, " ") }, timezone.value))
|
|
278
|
+
}
|
|
279
|
+
),
|
|
280
|
+
/* @__PURE__ */ jsx(Field.Error, {})
|
|
281
|
+
]
|
|
282
|
+
}
|
|
283
|
+
);
|
|
282
284
|
};
|
|
283
285
|
const useTypedDispatch = useDispatch;
|
|
284
286
|
const isBaseQueryError = (error) => {
|
|
@@ -340,7 +342,7 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
|
340
342
|
}
|
|
341
343
|
);
|
|
342
344
|
}
|
|
343
|
-
return /* @__PURE__ */ jsx(Grid.Root, { gap: 4, children: releases.map(({ id, name, scheduledAt, status }) => /* @__PURE__ */ jsx(Grid.Item, { col: 3, s: 6, xs: 12, children: /* @__PURE__ */ jsx(LinkCard, { tag: NavLink, to: `${id}`, isExternal: false, children: /* @__PURE__ */ jsxs(
|
|
345
|
+
return /* @__PURE__ */ jsx(Grid.Root, { gap: 4, children: releases.map(({ id, name, scheduledAt, status }) => /* @__PURE__ */ jsx(Grid.Item, { col: 3, s: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsx(LinkCard, { tag: NavLink, to: `${id}`, isExternal: false, children: /* @__PURE__ */ jsxs(
|
|
344
346
|
Flex,
|
|
345
347
|
{
|
|
346
348
|
direction: "column",
|
|
@@ -376,7 +378,7 @@ const StyledAlert = styled(Alert)`
|
|
|
376
378
|
`;
|
|
377
379
|
const INITIAL_FORM_VALUES = {
|
|
378
380
|
name: "",
|
|
379
|
-
date:
|
|
381
|
+
date: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd"),
|
|
380
382
|
time: "",
|
|
381
383
|
isScheduled: true,
|
|
382
384
|
scheduledAt: null,
|
|
@@ -391,6 +393,7 @@ const ReleasesPage = () => {
|
|
|
391
393
|
const { formatAPIError } = useAPIErrorHandler();
|
|
392
394
|
const [{ query }, setQuery] = useQueryParams();
|
|
393
395
|
const response = useGetReleasesQuery(query);
|
|
396
|
+
const { data, isLoading: isLoadingSettings } = useGetReleaseSettingsQuery();
|
|
394
397
|
const [createRelease, { isLoading: isSubmittingForm }] = useCreateReleaseMutation();
|
|
395
398
|
const { getFeature } = useLicenseLimits();
|
|
396
399
|
const { maximumReleases = 3 } = getFeature("cms-content-releases");
|
|
@@ -398,7 +401,7 @@ const ReleasesPage = () => {
|
|
|
398
401
|
const {
|
|
399
402
|
allowedActions: { canCreate }
|
|
400
403
|
} = useRBAC(PERMISSIONS);
|
|
401
|
-
const { isLoading, isSuccess, isError } = response;
|
|
404
|
+
const { isLoading: isLoadingReleases, isSuccess, isError } = response;
|
|
402
405
|
const activeTab = response?.currentData?.meta?.activeTab || "pending";
|
|
403
406
|
React.useEffect(() => {
|
|
404
407
|
if (location?.state?.errors) {
|
|
@@ -419,7 +422,7 @@ const ReleasesPage = () => {
|
|
|
419
422
|
const toggleAddReleaseModal = () => {
|
|
420
423
|
setReleaseModalShown((prev) => !prev);
|
|
421
424
|
};
|
|
422
|
-
if (
|
|
425
|
+
if (isLoadingReleases || isLoadingSettings) {
|
|
423
426
|
return /* @__PURE__ */ jsx(Page.Loading, {});
|
|
424
427
|
}
|
|
425
428
|
const totalPendingReleases = isSuccess && response.currentData?.meta?.pendingReleasesCount || 0;
|
|
@@ -464,7 +467,7 @@ const ReleasesPage = () => {
|
|
|
464
467
|
});
|
|
465
468
|
}
|
|
466
469
|
};
|
|
467
|
-
return /* @__PURE__ */ jsxs(Main, { "aria-busy":
|
|
470
|
+
return /* @__PURE__ */ jsxs(Main, { "aria-busy": isLoadingReleases || isLoadingSettings, children: [
|
|
468
471
|
/* @__PURE__ */ jsx(
|
|
469
472
|
Layouts.Header,
|
|
470
473
|
{
|
|
@@ -579,7 +582,10 @@ const ReleasesPage = () => {
|
|
|
579
582
|
handleClose: toggleAddReleaseModal,
|
|
580
583
|
handleSubmit: handleAddRelease,
|
|
581
584
|
isLoading: isSubmittingForm,
|
|
582
|
-
initialValues:
|
|
585
|
+
initialValues: {
|
|
586
|
+
...INITIAL_FORM_VALUES,
|
|
587
|
+
timezone: data?.data.defaultTimezone ? data.data.defaultTimezone.split("&")[1] : null
|
|
588
|
+
}
|
|
583
589
|
}
|
|
584
590
|
)
|
|
585
591
|
] });
|
|
@@ -590,7 +596,7 @@ const ReleaseInfoWrapper = styled(Flex)`
|
|
|
590
596
|
border-bottom-left-radius: ${({ theme }) => theme.borderRadius};
|
|
591
597
|
border-top: 1px solid ${({ theme }) => theme.colors.neutral150};
|
|
592
598
|
`;
|
|
593
|
-
const StyledMenuItem = styled(
|
|
599
|
+
const StyledMenuItem = styled(MenuItem)`
|
|
594
600
|
svg path {
|
|
595
601
|
fill: ${({ theme, disabled }) => disabled && theme.colors.neutral500};
|
|
596
602
|
}
|
|
@@ -603,15 +609,15 @@ const StyledMenuItem = styled(Menu.Item)`
|
|
|
603
609
|
}
|
|
604
610
|
`;
|
|
605
611
|
const PencilIcon = styled(Pencil)`
|
|
606
|
-
width: ${({ theme }) => theme.spaces[
|
|
607
|
-
height: ${({ theme }) => theme.spaces[
|
|
612
|
+
width: ${({ theme }) => theme.spaces[4]};
|
|
613
|
+
height: ${({ theme }) => theme.spaces[4]};
|
|
608
614
|
path {
|
|
609
615
|
fill: ${({ theme }) => theme.colors.neutral600};
|
|
610
616
|
}
|
|
611
617
|
`;
|
|
612
618
|
const TrashIcon = styled(Trash)`
|
|
613
|
-
width: ${({ theme }) => theme.spaces[
|
|
614
|
-
height: ${({ theme }) => theme.spaces[
|
|
619
|
+
width: ${({ theme }) => theme.spaces[4]};
|
|
620
|
+
height: ${({ theme }) => theme.spaces[4]};
|
|
615
621
|
path {
|
|
616
622
|
fill: ${({ theme }) => theme.colors.danger600};
|
|
617
623
|
}
|
|
@@ -619,42 +625,90 @@ const TrashIcon = styled(Trash)`
|
|
|
619
625
|
const TypographyMaxWidth = styled(Typography)`
|
|
620
626
|
max-width: 300px;
|
|
621
627
|
`;
|
|
622
|
-
const EntryValidationText = ({ action, schema, entry }) => {
|
|
628
|
+
const EntryValidationText = ({ action, schema, entry, status }) => {
|
|
623
629
|
const { formatMessage } = useIntl();
|
|
624
|
-
const { validate } = unstable_useDocument(
|
|
630
|
+
const { validate, isLoading } = unstable_useDocument(
|
|
625
631
|
{
|
|
626
632
|
collectionType: schema?.kind ?? "",
|
|
627
633
|
model: schema?.uid ?? ""
|
|
628
634
|
},
|
|
629
635
|
{
|
|
630
|
-
skip
|
|
636
|
+
// useDocument makes a request to get more data about the entry, but we only want to have the validation function so we skip the request
|
|
637
|
+
skip: true
|
|
631
638
|
}
|
|
632
639
|
);
|
|
633
|
-
const
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
640
|
+
const errorsToString = (errors2, prefix = "") => {
|
|
641
|
+
if (Object.keys(errors2).length === 0) {
|
|
642
|
+
return "";
|
|
643
|
+
}
|
|
644
|
+
return Object.entries(errors2).map(([key, value]) => {
|
|
645
|
+
if (value === void 0 || value === null) {
|
|
646
|
+
return "";
|
|
647
|
+
}
|
|
648
|
+
if (typeof value === "string") {
|
|
649
|
+
return formatMessage(
|
|
650
|
+
{ id: value, defaultMessage: value },
|
|
651
|
+
{ field: prefix ? `${prefix}.${key}` : key }
|
|
652
|
+
);
|
|
653
|
+
}
|
|
654
|
+
if (typeof value === "object" && value !== null && "id" in value && "defaultMessage" in value) {
|
|
655
|
+
return formatMessage(
|
|
656
|
+
// @ts-expect-error – TODO: default message will be a string
|
|
657
|
+
{ id: `${value.id}.withField`, defaultMessage: value.defaultMessage },
|
|
658
|
+
{ field: prefix ? `${prefix}.${key}` : key }
|
|
659
|
+
);
|
|
660
|
+
}
|
|
661
|
+
return errorsToString(value, key);
|
|
662
|
+
}).join(" ");
|
|
663
|
+
};
|
|
664
|
+
if (isLoading) {
|
|
665
|
+
return null;
|
|
646
666
|
}
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
667
|
+
const errors = validate(entry) ?? {};
|
|
668
|
+
if (action === "publish") {
|
|
669
|
+
if (Object.keys(errors).length > 0) {
|
|
670
|
+
const validationErrorsMessages = errorsToString(errors);
|
|
671
|
+
return /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
672
|
+
/* @__PURE__ */ jsx(CrossCircle, { fill: "danger600" }),
|
|
673
|
+
/* @__PURE__ */ jsx(Tooltip, { description: validationErrorsMessages, children: /* @__PURE__ */ jsx(
|
|
674
|
+
TypographyMaxWidth,
|
|
675
|
+
{
|
|
676
|
+
textColor: "danger600",
|
|
677
|
+
variant: "omega",
|
|
678
|
+
fontWeight: "semiBold",
|
|
679
|
+
ellipsis: true,
|
|
680
|
+
children: validationErrorsMessages
|
|
681
|
+
}
|
|
682
|
+
) })
|
|
683
|
+
] });
|
|
684
|
+
}
|
|
685
|
+
if (status === "draft") {
|
|
686
|
+
return /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
687
|
+
/* @__PURE__ */ jsx(CheckCircle, { fill: "success600" }),
|
|
688
|
+
/* @__PURE__ */ jsx(Typography, { children: formatMessage({
|
|
689
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.ready-to-publish",
|
|
690
|
+
defaultMessage: "Ready to publish"
|
|
691
|
+
}) })
|
|
692
|
+
] });
|
|
693
|
+
}
|
|
694
|
+
if (status === "modified") {
|
|
695
|
+
return /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
696
|
+
/* @__PURE__ */ jsx(ArrowsCounterClockwise, { fill: "alternative600" }),
|
|
697
|
+
/* @__PURE__ */ jsx(Typography, { children: formatMessage({
|
|
698
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.modified",
|
|
699
|
+
defaultMessage: "Ready to publish changes"
|
|
700
|
+
}) })
|
|
701
|
+
] });
|
|
702
|
+
}
|
|
703
|
+
if (status === "published") {
|
|
704
|
+
return /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
705
|
+
/* @__PURE__ */ jsx(CheckCircle, { fill: "success600" }),
|
|
706
|
+
/* @__PURE__ */ jsx(Typography, { children: formatMessage({
|
|
707
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.already-published",
|
|
708
|
+
defaultMessage: "Already published"
|
|
709
|
+
}) })
|
|
710
|
+
] });
|
|
711
|
+
}
|
|
658
712
|
}
|
|
659
713
|
return /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
660
714
|
/* @__PURE__ */ jsx(CheckCircle, { fill: "success600" }),
|
|
@@ -800,83 +854,71 @@ const ReleaseDetailsLayout = ({
|
|
|
800
854
|
] }),
|
|
801
855
|
navigationAction: /* @__PURE__ */ jsx(BackButton, {}),
|
|
802
856
|
primaryAction: !release.releasedAt && /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
803
|
-
/* @__PURE__ */ jsxs(
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
{
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
857
|
+
/* @__PURE__ */ jsxs(
|
|
858
|
+
SimpleMenuButton,
|
|
859
|
+
{
|
|
860
|
+
label: /* @__PURE__ */ jsx(More, {}),
|
|
861
|
+
variant: "tertiary",
|
|
862
|
+
endIcon: null,
|
|
863
|
+
paddingLeft: "7px",
|
|
864
|
+
paddingRight: "7px",
|
|
865
|
+
"aria-label": formatMessage({
|
|
866
|
+
id: "content-releases.header.actions.open-release-actions",
|
|
867
|
+
defaultMessage: "Release edit and delete menu"
|
|
868
|
+
}),
|
|
869
|
+
popoverPlacement: "bottom-end",
|
|
870
|
+
children: [
|
|
871
|
+
/* @__PURE__ */ jsx(StyledMenuItem, { disabled: !canUpdate, onSelect: toggleEditReleaseModal, children: /* @__PURE__ */ jsxs(Flex, { alignItems: "center", gap: 2, hasRadius: true, width: "100%", children: [
|
|
872
|
+
/* @__PURE__ */ jsx(PencilIcon, {}),
|
|
873
|
+
/* @__PURE__ */ jsx(Typography, { ellipsis: true, children: formatMessage({
|
|
874
|
+
id: "content-releases.header.actions.edit",
|
|
875
|
+
defaultMessage: "Edit"
|
|
876
|
+
}) })
|
|
877
|
+
] }) }),
|
|
878
|
+
/* @__PURE__ */ jsx(
|
|
879
|
+
StyledMenuItem,
|
|
880
|
+
{
|
|
881
|
+
disabled: !canDelete,
|
|
882
|
+
onSelect: toggleWarningSubmit,
|
|
883
|
+
$variant: "danger",
|
|
884
|
+
children: /* @__PURE__ */ jsxs(Flex, { alignItems: "center", gap: 2, hasRadius: true, width: "100%", children: [
|
|
885
|
+
/* @__PURE__ */ jsx(TrashIcon, {}),
|
|
886
|
+
/* @__PURE__ */ jsx(Typography, { ellipsis: true, textColor: "danger600", children: formatMessage({
|
|
887
|
+
id: "content-releases.header.actions.delete",
|
|
888
|
+
defaultMessage: "Delete"
|
|
832
889
|
}) })
|
|
833
|
-
] }) }),
|
|
834
|
-
/* @__PURE__ */ jsx(
|
|
835
|
-
StyledMenuItem,
|
|
836
|
-
{
|
|
837
|
-
disabled: !canDelete,
|
|
838
|
-
onSelect: toggleWarningSubmit,
|
|
839
|
-
$variant: "danger",
|
|
840
|
-
children: /* @__PURE__ */ jsxs(Flex, { alignItems: "center", gap: 2, hasRadius: true, width: "100%", children: [
|
|
841
|
-
/* @__PURE__ */ jsx(TrashIcon, {}),
|
|
842
|
-
/* @__PURE__ */ jsx(Typography, { ellipsis: true, textColor: "danger600", children: formatMessage({
|
|
843
|
-
id: "content-releases.header.actions.delete",
|
|
844
|
-
defaultMessage: "Delete"
|
|
845
|
-
}) })
|
|
846
|
-
] })
|
|
847
|
-
}
|
|
848
|
-
)
|
|
849
|
-
]
|
|
850
|
-
}
|
|
851
|
-
),
|
|
852
|
-
/* @__PURE__ */ jsxs(
|
|
853
|
-
ReleaseInfoWrapper,
|
|
854
|
-
{
|
|
855
|
-
direction: "column",
|
|
856
|
-
justifyContent: "center",
|
|
857
|
-
alignItems: "flex-start",
|
|
858
|
-
gap: 1,
|
|
859
|
-
padding: 5,
|
|
860
|
-
children: [
|
|
861
|
-
/* @__PURE__ */ jsx(Typography, { variant: "pi", fontWeight: "bold", children: formatMessage({
|
|
862
|
-
id: "content-releases.header.actions.created",
|
|
863
|
-
defaultMessage: "Created"
|
|
864
|
-
}) }),
|
|
865
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "pi", color: "neutral300", children: [
|
|
866
|
-
/* @__PURE__ */ jsx(RelativeTime$1, { timestamp: new Date(release.createdAt) }),
|
|
867
|
-
formatMessage(
|
|
868
|
-
{
|
|
869
|
-
id: "content-releases.header.actions.created.description",
|
|
870
|
-
defaultMessage: "{hasCreatedByUser, select, true { by {createdBy}} other { by deleted user}}"
|
|
871
|
-
},
|
|
872
|
-
{ createdBy: getCreatedByUser(), hasCreatedByUser }
|
|
873
|
-
)
|
|
874
890
|
] })
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
891
|
+
}
|
|
892
|
+
),
|
|
893
|
+
/* @__PURE__ */ jsxs(
|
|
894
|
+
ReleaseInfoWrapper,
|
|
895
|
+
{
|
|
896
|
+
direction: "column",
|
|
897
|
+
justifyContent: "center",
|
|
898
|
+
alignItems: "flex-start",
|
|
899
|
+
gap: 1,
|
|
900
|
+
padding: 4,
|
|
901
|
+
children: [
|
|
902
|
+
/* @__PURE__ */ jsx(Typography, { variant: "pi", fontWeight: "bold", children: formatMessage({
|
|
903
|
+
id: "content-releases.header.actions.created",
|
|
904
|
+
defaultMessage: "Created"
|
|
905
|
+
}) }),
|
|
906
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "pi", color: "neutral300", children: [
|
|
907
|
+
/* @__PURE__ */ jsx(RelativeTime$1, { timestamp: new Date(release.createdAt) }),
|
|
908
|
+
formatMessage(
|
|
909
|
+
{
|
|
910
|
+
id: "content-releases.header.actions.created.description",
|
|
911
|
+
defaultMessage: "{hasCreatedByUser, select, true { by {createdBy}} other { by deleted user}}"
|
|
912
|
+
},
|
|
913
|
+
{ createdBy: getCreatedByUser(), hasCreatedByUser }
|
|
914
|
+
)
|
|
915
|
+
] })
|
|
916
|
+
]
|
|
917
|
+
}
|
|
918
|
+
)
|
|
919
|
+
]
|
|
920
|
+
}
|
|
921
|
+
),
|
|
880
922
|
/* @__PURE__ */ jsx(Button, { size: "S", variant: "tertiary", onClick: handleRefresh, children: formatMessage({
|
|
881
923
|
id: "content-releases.header.actions.refresh",
|
|
882
924
|
defaultMessage: "Refresh"
|
|
@@ -901,6 +943,11 @@ const ReleaseDetailsLayout = ({
|
|
|
901
943
|
children
|
|
902
944
|
] });
|
|
903
945
|
};
|
|
946
|
+
const SimpleMenuButton = styled(SimpleMenu)`
|
|
947
|
+
& > span {
|
|
948
|
+
display: flex;
|
|
949
|
+
}
|
|
950
|
+
`;
|
|
904
951
|
const GROUP_BY_OPTIONS = ["contentType", "locale", "action"];
|
|
905
952
|
const GROUP_BY_OPTIONS_NO_LOCALE = ["contentType", "action"];
|
|
906
953
|
const getGroupByOptionLabel = (value) => {
|
|
@@ -935,19 +982,18 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
935
982
|
allowedActions: { canUpdate }
|
|
936
983
|
} = useRBAC(PERMISSIONS);
|
|
937
984
|
const runHookWaterfall = useStrapiApp("ReleaseDetailsPage", (state) => state.runHookWaterfall);
|
|
938
|
-
const { hasI18nEnabled } = runHookWaterfall(
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
);
|
|
985
|
+
const { displayedHeaders, hasI18nEnabled } = runHookWaterfall("ContentReleases/pages/ReleaseDetails/add-locale-in-releases", {
|
|
986
|
+
displayedHeaders: [
|
|
987
|
+
{
|
|
988
|
+
label: {
|
|
989
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.name",
|
|
990
|
+
defaultMessage: "name"
|
|
991
|
+
},
|
|
992
|
+
name: "name"
|
|
993
|
+
}
|
|
994
|
+
],
|
|
995
|
+
hasI18nEnabled: false
|
|
996
|
+
});
|
|
951
997
|
const release = releaseData?.data;
|
|
952
998
|
const selectedGroupBy = query?.groupBy || "contentType";
|
|
953
999
|
const {
|
|
@@ -1053,34 +1099,27 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1053
1099
|
defaultMessage: "Group by"
|
|
1054
1100
|
});
|
|
1055
1101
|
const headers = [
|
|
1056
|
-
|
|
1102
|
+
...displayedHeaders,
|
|
1057
1103
|
{
|
|
1058
|
-
label:
|
|
1059
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.name",
|
|
1060
|
-
defaultMessage: "name"
|
|
1061
|
-
}),
|
|
1062
|
-
name: "name"
|
|
1063
|
-
},
|
|
1064
|
-
{
|
|
1065
|
-
label: formatMessage({
|
|
1104
|
+
label: {
|
|
1066
1105
|
id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
|
|
1067
1106
|
defaultMessage: "content-type"
|
|
1068
|
-
}
|
|
1107
|
+
},
|
|
1069
1108
|
name: "content-type"
|
|
1070
1109
|
},
|
|
1071
1110
|
{
|
|
1072
|
-
label:
|
|
1111
|
+
label: {
|
|
1073
1112
|
id: "content-releases.page.ReleaseDetails.table.header.label.action",
|
|
1074
1113
|
defaultMessage: "action"
|
|
1075
|
-
}
|
|
1114
|
+
},
|
|
1076
1115
|
name: "action"
|
|
1077
1116
|
},
|
|
1078
1117
|
...!release.releasedAt ? [
|
|
1079
1118
|
{
|
|
1080
|
-
label:
|
|
1119
|
+
label: {
|
|
1081
1120
|
id: "content-releases.page.ReleaseDetails.table.header.label.status",
|
|
1082
1121
|
defaultMessage: "status"
|
|
1083
|
-
}
|
|
1122
|
+
},
|
|
1084
1123
|
name: "status"
|
|
1085
1124
|
}
|
|
1086
1125
|
] : []
|
|
@@ -1118,10 +1157,10 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1118
1157
|
headers,
|
|
1119
1158
|
isLoading: isLoading || isFetching,
|
|
1120
1159
|
children: /* @__PURE__ */ jsxs(Table.Content, { children: [
|
|
1121
|
-
/* @__PURE__ */ jsx(Table.Head, { children: headers.map((
|
|
1160
|
+
/* @__PURE__ */ jsx(Table.Head, { children: headers.map(({ label, name }) => /* @__PURE__ */ jsx(Table.HeaderCell, { label: formatMessage(label), name }, name)) }),
|
|
1122
1161
|
/* @__PURE__ */ jsx(Table.Loading, {}),
|
|
1123
1162
|
/* @__PURE__ */ jsx(Table.Body, { children: releaseActions[key].map(
|
|
1124
|
-
({ id, contentType, locale, type, entry }, actionIndex) => /* @__PURE__ */ jsxs(Tr, { children: [
|
|
1163
|
+
({ id, contentType, locale, type, entry, status }, actionIndex) => /* @__PURE__ */ jsxs(Tr, { children: [
|
|
1125
1164
|
/* @__PURE__ */ jsx(Td, { width: "25%", maxWidth: "200px", children: /* @__PURE__ */ jsx(Typography, { ellipsis: true, children: `${contentType.mainFieldValue || entry.id}` }) }),
|
|
1126
1165
|
hasI18nEnabled && /* @__PURE__ */ jsx(Td, { width: "10%", children: /* @__PURE__ */ jsx(Typography, { children: `${locale?.name ? locale.name : "-"}` }) }),
|
|
1127
1166
|
/* @__PURE__ */ jsx(Td, { width: "10%", children: /* @__PURE__ */ jsx(Typography, { children: contentType.displayName || "" }) }),
|
|
@@ -1150,7 +1189,8 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1150
1189
|
action: type,
|
|
1151
1190
|
schema: contentTypes?.[contentType.uid],
|
|
1152
1191
|
components,
|
|
1153
|
-
entry
|
|
1192
|
+
entry,
|
|
1193
|
+
status
|
|
1154
1194
|
}
|
|
1155
1195
|
) }),
|
|
1156
1196
|
/* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Flex, { justifyContent: "flex-end", children: /* @__PURE__ */ jsxs(ReleaseActionMenu.Root, { children: [
|
|
@@ -1158,7 +1198,7 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1158
1198
|
ReleaseActionMenu.ReleaseActionEntryLinkItem,
|
|
1159
1199
|
{
|
|
1160
1200
|
contentTypeUid: contentType.uid,
|
|
1161
|
-
|
|
1201
|
+
documentId: entry.documentId,
|
|
1162
1202
|
locale: locale?.code
|
|
1163
1203
|
}
|
|
1164
1204
|
),
|
|
@@ -1208,13 +1248,24 @@ const ReleaseDetailsPage = () => {
|
|
|
1208
1248
|
skip: !releaseId
|
|
1209
1249
|
}
|
|
1210
1250
|
);
|
|
1251
|
+
const { data: dataTimezone, isLoading: isLoadingTimezone } = useGetReleaseSettingsQuery();
|
|
1211
1252
|
const [updateRelease, { isLoading: isSubmittingForm }] = useUpdateReleaseMutation();
|
|
1212
1253
|
const [deleteRelease] = useDeleteReleaseMutation();
|
|
1213
1254
|
const toggleEditReleaseModal = () => {
|
|
1214
1255
|
setReleaseModalShown((prev) => !prev);
|
|
1215
1256
|
};
|
|
1257
|
+
const getTimezoneValue = () => {
|
|
1258
|
+
if (releaseData?.timezone) {
|
|
1259
|
+
return releaseData.timezone;
|
|
1260
|
+
} else {
|
|
1261
|
+
if (dataTimezone?.data.defaultTimezone) {
|
|
1262
|
+
return dataTimezone.data.defaultTimezone;
|
|
1263
|
+
}
|
|
1264
|
+
return null;
|
|
1265
|
+
}
|
|
1266
|
+
};
|
|
1216
1267
|
const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);
|
|
1217
|
-
if (isLoadingDetails) {
|
|
1268
|
+
if (isLoadingDetails || isLoadingTimezone) {
|
|
1218
1269
|
return /* @__PURE__ */ jsx(
|
|
1219
1270
|
ReleaseDetailsLayout,
|
|
1220
1271
|
{
|
|
@@ -1229,10 +1280,10 @@ const ReleaseDetailsPage = () => {
|
|
|
1229
1280
|
}
|
|
1230
1281
|
const releaseData = isSuccessDetails && data?.data || null;
|
|
1231
1282
|
const title = releaseData?.name || "";
|
|
1232
|
-
const timezone =
|
|
1283
|
+
const timezone = getTimezoneValue();
|
|
1233
1284
|
const scheduledAt = releaseData?.scheduledAt && timezone ? utcToZonedTime(releaseData.scheduledAt, timezone) : null;
|
|
1234
|
-
const date = scheduledAt ? format(scheduledAt, "yyyy-MM-dd") : void 0;
|
|
1235
|
-
const time = scheduledAt ? format(scheduledAt, "HH:mm") : "";
|
|
1285
|
+
const date = scheduledAt ? format$1(scheduledAt, "yyyy-MM-dd") : void 0;
|
|
1286
|
+
const time = scheduledAt ? format$1(scheduledAt, "HH:mm") : "";
|
|
1236
1287
|
const handleEditRelease = async (values) => {
|
|
1237
1288
|
const response = await updateRelease({
|
|
1238
1289
|
id: releaseId,
|
|
@@ -1320,4 +1371,4 @@ const App = () => {
|
|
|
1320
1371
|
export {
|
|
1321
1372
|
App
|
|
1322
1373
|
};
|
|
1323
|
-
//# sourceMappingURL=App-
|
|
1374
|
+
//# sourceMappingURL=App-Cne--1Z8.mjs.map
|