@strapi/content-releases 4.20.5 → 5.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{App-p8aKBitd.js → App-vS3MaAL8.js} +277 -279
- package/dist/_chunks/App-vS3MaAL8.js.map +1 -0
- package/dist/_chunks/{App-bpzO2Ljh.mjs → App-wYLtVioz.mjs} +271 -273
- package/dist/_chunks/App-wYLtVioz.mjs.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-fP3qoWZ4.js → index-EoKpj3V5.js} +70 -61
- package/dist/_chunks/index-EoKpj3V5.js.map +1 -0
- package/dist/_chunks/{index-AECgcaDa.mjs → index-RhLsjv0x.mjs} +72 -63
- package/dist/_chunks/index-RhLsjv0x.mjs.map +1 -0
- package/dist/admin/index.js +1 -14
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -14
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/CMReleasesContainer.d.ts +1 -0
- package/dist/admin/src/components/RelativeTime.d.ts +28 -0
- package/dist/admin/src/components/ReleaseActionMenu.d.ts +26 -0
- package/dist/admin/src/components/ReleaseActionOptions.d.ts +9 -0
- package/dist/admin/src/components/ReleaseModal.d.ts +16 -0
- package/dist/admin/src/constants.d.ts +58 -0
- package/dist/admin/src/index.d.ts +3 -0
- package/dist/admin/src/pages/App.d.ts +1 -0
- package/dist/admin/src/pages/PurchaseContentReleases.d.ts +2 -0
- package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +2 -0
- package/dist/admin/src/pages/ReleasesPage.d.ts +8 -0
- package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +181 -0
- package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +39 -0
- package/dist/admin/src/pluginId.d.ts +1 -0
- package/dist/admin/src/services/axios.d.ts +29 -0
- package/dist/admin/src/services/release.d.ts +369 -0
- package/dist/admin/src/store/hooks.d.ts +7 -0
- package/dist/admin/src/utils/time.d.ts +1 -0
- package/dist/server/index.js +277 -232
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +278 -232
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts +5 -0
- package/dist/server/src/bootstrap.d.ts.map +1 -0
- package/dist/server/src/constants.d.ts +12 -0
- package/dist/server/src/constants.d.ts.map +1 -0
- package/dist/server/src/content-types/index.d.ts +99 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -0
- package/dist/server/src/content-types/release/index.d.ts +48 -0
- package/dist/server/src/content-types/release/index.d.ts.map +1 -0
- package/dist/server/src/content-types/release/schema.d.ts +47 -0
- package/dist/server/src/content-types/release/schema.d.ts.map +1 -0
- package/dist/server/src/content-types/release-action/index.d.ts +50 -0
- package/dist/server/src/content-types/release-action/index.d.ts.map +1 -0
- package/dist/server/src/content-types/release-action/schema.d.ts +49 -0
- package/dist/server/src/content-types/release-action/schema.d.ts.map +1 -0
- package/dist/server/src/controllers/index.d.ts +19 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -0
- package/dist/server/src/controllers/release-action.d.ts +10 -0
- package/dist/server/src/controllers/release-action.d.ts.map +1 -0
- package/dist/server/src/controllers/release.d.ts +11 -0
- package/dist/server/src/controllers/release.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/release-action.d.ts +8 -0
- package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/release.d.ts +2 -0
- package/dist/server/src/controllers/validation/release.d.ts.map +1 -0
- package/dist/server/src/destroy.d.ts +5 -0
- package/dist/server/src/destroy.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +2095 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/migrations/index.d.ts +12 -0
- package/dist/server/src/migrations/index.d.ts.map +1 -0
- package/dist/server/src/register.d.ts +5 -0
- package/dist/server/src/register.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts +35 -0
- package/dist/server/src/routes/index.d.ts.map +1 -0
- package/dist/server/src/routes/release-action.d.ts +18 -0
- package/dist/server/src/routes/release-action.d.ts.map +1 -0
- package/dist/server/src/routes/release.d.ts +18 -0
- package/dist/server/src/routes/release.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +1826 -0
- package/dist/server/src/services/index.d.ts.map +1 -0
- package/dist/server/src/services/release.d.ts +66 -0
- package/dist/server/src/services/release.d.ts.map +1 -0
- package/dist/server/src/services/scheduling.d.ts +18 -0
- package/dist/server/src/services/scheduling.d.ts.map +1 -0
- package/dist/server/src/services/validation.d.ts +18 -0
- package/dist/server/src/services/validation.d.ts.map +1 -0
- package/dist/server/src/utils/index.d.ts +14 -0
- package/dist/server/src/utils/index.d.ts.map +1 -0
- package/dist/shared/contracts/release-actions.d.ts +131 -0
- package/dist/shared/contracts/release-actions.d.ts.map +1 -0
- package/dist/shared/contracts/releases.d.ts +166 -0
- package/dist/shared/contracts/releases.d.ts.map +1 -0
- package/dist/shared/types.d.ts +24 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/validation-schemas.d.ts +2 -0
- package/dist/shared/validation-schemas.d.ts.map +1 -0
- package/package.json +22 -28
- package/dist/_chunks/App-bpzO2Ljh.mjs.map +0 -1
- package/dist/_chunks/App-p8aKBitd.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,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const
|
|
4
|
+
const strapiAdmin = require("@strapi/admin/strapi-admin");
|
|
5
5
|
const reactRouterDom = require("react-router-dom");
|
|
6
|
-
const index = require("./index-
|
|
6
|
+
const index = require("./index-EoKpj3V5.js");
|
|
7
7
|
const React = require("react");
|
|
8
|
-
const strapiAdmin = require("@strapi/admin/strapi-admin");
|
|
9
8
|
const designSystem = require("@strapi/design-system");
|
|
10
9
|
const v2 = require("@strapi/design-system/v2");
|
|
10
|
+
const helperPlugin = require("@strapi/helper-plugin");
|
|
11
11
|
const icons = require("@strapi/icons");
|
|
12
12
|
const format = require("date-fns/format");
|
|
13
13
|
const dateFnsTz = require("date-fns-tz");
|
|
@@ -16,10 +16,6 @@ const styled = require("styled-components");
|
|
|
16
16
|
const dateFns = require("date-fns");
|
|
17
17
|
const formik = require("formik");
|
|
18
18
|
const yup = require("yup");
|
|
19
|
-
require("@reduxjs/toolkit/query");
|
|
20
|
-
require("axios");
|
|
21
|
-
require("@reduxjs/toolkit/query/react");
|
|
22
|
-
require("react-redux");
|
|
23
19
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
24
20
|
function _interopNamespace(e) {
|
|
25
21
|
if (e && e.__esModule)
|
|
@@ -43,6 +39,36 @@ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
|
|
|
43
39
|
const format__default = /* @__PURE__ */ _interopDefault(format);
|
|
44
40
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
45
41
|
const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
|
|
42
|
+
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
|
43
|
+
const RelativeTime = React__namespace.forwardRef(
|
|
44
|
+
({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {
|
|
45
|
+
const { formatRelativeTime, formatDate, formatTime } = reactIntl.useIntl();
|
|
46
|
+
const interval = dateFns.intervalToDuration({
|
|
47
|
+
start: timestamp,
|
|
48
|
+
end: Date.now()
|
|
49
|
+
// see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.
|
|
50
|
+
});
|
|
51
|
+
const unit = intervals.find((intervalUnit) => {
|
|
52
|
+
return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
|
|
53
|
+
});
|
|
54
|
+
const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
|
|
55
|
+
const customInterval = customIntervals.find(
|
|
56
|
+
(custom) => interval[custom.unit] < custom.threshold
|
|
57
|
+
);
|
|
58
|
+
const displayText = customInterval ? customInterval.text : formatRelativeTime(relativeTime, unit, { numeric: "auto" });
|
|
59
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
60
|
+
"time",
|
|
61
|
+
{
|
|
62
|
+
ref: forwardedRef,
|
|
63
|
+
dateTime: timestamp.toISOString(),
|
|
64
|
+
role: "time",
|
|
65
|
+
title: `${formatDate(timestamp)} ${formatTime(timestamp)}`,
|
|
66
|
+
...restProps,
|
|
67
|
+
children: displayText
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
);
|
|
46
72
|
const RELEASE_SCHEMA = yup__namespace.object().shape({
|
|
47
73
|
name: yup__namespace.string().trim().required(),
|
|
48
74
|
scheduledAt: yup__namespace.string().nullable(),
|
|
@@ -72,7 +98,6 @@ const ReleaseModal = ({
|
|
|
72
98
|
const { formatMessage } = reactIntl.useIntl();
|
|
73
99
|
const { pathname } = reactRouterDom.useLocation();
|
|
74
100
|
const isCreatingRelease = pathname === `/plugins/${index.pluginId}`;
|
|
75
|
-
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
76
101
|
const { timezoneList, systemTimezone = { value: "UTC+00:00-Africa/Abidjan " } } = getTimezones(
|
|
77
102
|
initialValues.scheduledAt ? new Date(initialValues.scheduledAt) : /* @__PURE__ */ new Date()
|
|
78
103
|
);
|
|
@@ -130,93 +155,88 @@ const ReleaseModal = ({
|
|
|
130
155
|
required: true
|
|
131
156
|
}
|
|
132
157
|
),
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
158
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "max-content", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
159
|
+
designSystem.Checkbox,
|
|
160
|
+
{
|
|
161
|
+
name: "isScheduled",
|
|
162
|
+
value: values.isScheduled,
|
|
163
|
+
onChange: (event) => {
|
|
164
|
+
setFieldValue("isScheduled", event.target.checked);
|
|
165
|
+
if (!event.target.checked) {
|
|
166
|
+
setFieldValue("date", null);
|
|
167
|
+
setFieldValue("time", "");
|
|
168
|
+
setFieldValue("timezone", null);
|
|
169
|
+
} else {
|
|
170
|
+
setFieldValue("date", initialValues.date);
|
|
171
|
+
setFieldValue("time", initialValues.time);
|
|
172
|
+
setFieldValue("timezone", initialValues.timezone ?? systemTimezone?.value);
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
176
|
+
designSystem.Typography,
|
|
177
|
+
{
|
|
178
|
+
textColor: values.isScheduled ? "primary600" : "neutral800",
|
|
179
|
+
fontWeight: values.isScheduled ? "semiBold" : "regular",
|
|
180
|
+
children: formatMessage({
|
|
181
|
+
id: "modal.form.input.label.schedule-release",
|
|
182
|
+
defaultMessage: "Schedule release"
|
|
183
|
+
})
|
|
184
|
+
}
|
|
185
|
+
)
|
|
186
|
+
}
|
|
187
|
+
) }),
|
|
188
|
+
values.isScheduled && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
189
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 4, alignItems: "start", children: [
|
|
190
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
191
|
+
designSystem.DatePicker,
|
|
192
|
+
{
|
|
193
|
+
label: formatMessage({
|
|
194
|
+
id: "content-releases.modal.form.input.label.date",
|
|
195
|
+
defaultMessage: "Date"
|
|
196
|
+
}),
|
|
197
|
+
name: "date",
|
|
198
|
+
error: errors.date,
|
|
199
|
+
onChange: (date) => {
|
|
200
|
+
const isoFormatDate = date ? dateFns.formatISO(date, { representation: "date" }) : null;
|
|
201
|
+
setFieldValue("date", isoFormatDate);
|
|
202
|
+
},
|
|
203
|
+
clearLabel: formatMessage({
|
|
204
|
+
id: "content-releases.modal.form.input.clearLabel",
|
|
205
|
+
defaultMessage: "Clear"
|
|
206
|
+
}),
|
|
207
|
+
onClear: () => {
|
|
142
208
|
setFieldValue("date", null);
|
|
209
|
+
},
|
|
210
|
+
selectedDate: values.date || void 0,
|
|
211
|
+
required: true,
|
|
212
|
+
minDate: dateFnsTz.utcToZonedTime(/* @__PURE__ */ new Date(), values.timezone.split("&")[1])
|
|
213
|
+
}
|
|
214
|
+
) }),
|
|
215
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
216
|
+
designSystem.TimePicker,
|
|
217
|
+
{
|
|
218
|
+
label: formatMessage({
|
|
219
|
+
id: "content-releases.modal.form.input.label.time",
|
|
220
|
+
defaultMessage: "Time"
|
|
221
|
+
}),
|
|
222
|
+
name: "time",
|
|
223
|
+
error: errors.time,
|
|
224
|
+
onChange: (time) => {
|
|
225
|
+
setFieldValue("time", time);
|
|
226
|
+
},
|
|
227
|
+
clearLabel: formatMessage({
|
|
228
|
+
id: "content-releases.modal.form.input.clearLabel",
|
|
229
|
+
defaultMessage: "Clear"
|
|
230
|
+
}),
|
|
231
|
+
onClear: () => {
|
|
143
232
|
setFieldValue("time", "");
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
155
|
-
designSystem.Typography,
|
|
156
|
-
{
|
|
157
|
-
textColor: values.isScheduled ? "primary600" : "neutral800",
|
|
158
|
-
fontWeight: values.isScheduled ? "semiBold" : "regular",
|
|
159
|
-
children: formatMessage({
|
|
160
|
-
id: "modal.form.input.label.schedule-release",
|
|
161
|
-
defaultMessage: "Schedule release"
|
|
162
|
-
})
|
|
163
|
-
}
|
|
164
|
-
)
|
|
165
|
-
}
|
|
166
|
-
) }),
|
|
167
|
-
values.isScheduled && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
168
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 4, alignItems: "start", children: [
|
|
169
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
170
|
-
designSystem.DatePicker,
|
|
171
|
-
{
|
|
172
|
-
label: formatMessage({
|
|
173
|
-
id: "content-releases.modal.form.input.label.date",
|
|
174
|
-
defaultMessage: "Date"
|
|
175
|
-
}),
|
|
176
|
-
name: "date",
|
|
177
|
-
error: errors.date,
|
|
178
|
-
onChange: (date) => {
|
|
179
|
-
const isoFormatDate = date ? dateFns.formatISO(date, { representation: "date" }) : null;
|
|
180
|
-
setFieldValue("date", isoFormatDate);
|
|
181
|
-
},
|
|
182
|
-
clearLabel: formatMessage({
|
|
183
|
-
id: "content-releases.modal.form.input.clearLabel",
|
|
184
|
-
defaultMessage: "Clear"
|
|
185
|
-
}),
|
|
186
|
-
onClear: () => {
|
|
187
|
-
setFieldValue("date", null);
|
|
188
|
-
},
|
|
189
|
-
selectedDate: values.date || void 0,
|
|
190
|
-
required: true,
|
|
191
|
-
minDate: dateFnsTz.utcToZonedTime(/* @__PURE__ */ new Date(), values.timezone.split("&")[1])
|
|
192
|
-
}
|
|
193
|
-
) }),
|
|
194
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
195
|
-
designSystem.TimePicker,
|
|
196
|
-
{
|
|
197
|
-
label: formatMessage({
|
|
198
|
-
id: "content-releases.modal.form.input.label.time",
|
|
199
|
-
defaultMessage: "Time"
|
|
200
|
-
}),
|
|
201
|
-
name: "time",
|
|
202
|
-
error: errors.time,
|
|
203
|
-
onChange: (time) => {
|
|
204
|
-
setFieldValue("time", time);
|
|
205
|
-
},
|
|
206
|
-
clearLabel: formatMessage({
|
|
207
|
-
id: "content-releases.modal.form.input.clearLabel",
|
|
208
|
-
defaultMessage: "Clear"
|
|
209
|
-
}),
|
|
210
|
-
onClear: () => {
|
|
211
|
-
setFieldValue("time", "");
|
|
212
|
-
},
|
|
213
|
-
value: values.time || void 0,
|
|
214
|
-
required: true
|
|
215
|
-
}
|
|
216
|
-
) })
|
|
217
|
-
] }),
|
|
218
|
-
/* @__PURE__ */ jsxRuntime.jsx(TimezoneComponent, { timezoneOptions: timezoneList })
|
|
219
|
-
] })
|
|
233
|
+
},
|
|
234
|
+
value: values.time || void 0,
|
|
235
|
+
required: true
|
|
236
|
+
}
|
|
237
|
+
) })
|
|
238
|
+
] }),
|
|
239
|
+
/* @__PURE__ */ jsxRuntime.jsx(TimezoneComponent, { timezoneOptions: timezoneList })
|
|
220
240
|
] })
|
|
221
241
|
] }) }),
|
|
222
242
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -290,7 +310,7 @@ const TimezoneComponent = ({ timezoneOptions }) => {
|
|
|
290
310
|
const LinkCard = styled__default.default(v2.Link)`
|
|
291
311
|
display: block;
|
|
292
312
|
`;
|
|
293
|
-
const CapitalizeRelativeTime = styled__default.default(
|
|
313
|
+
const CapitalizeRelativeTime = styled__default.default(RelativeTime)`
|
|
294
314
|
text-transform: capitalize;
|
|
295
315
|
`;
|
|
296
316
|
const getBadgeProps = (status) => {
|
|
@@ -320,9 +340,8 @@ const getBadgeProps = (status) => {
|
|
|
320
340
|
};
|
|
321
341
|
const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
322
342
|
const { formatMessage } = reactIntl.useIntl();
|
|
323
|
-
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
324
343
|
if (isError) {
|
|
325
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
344
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
|
|
326
345
|
}
|
|
327
346
|
if (releases?.length === 0) {
|
|
328
347
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -341,7 +360,7 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
|
341
360
|
}
|
|
342
361
|
);
|
|
343
362
|
}
|
|
344
|
-
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 4, children: releases.map(({ id, name,
|
|
363
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 4, children: releases.map(({ id, name, scheduledAt, status }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 3, s: 6, xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(LinkCard, { href: `content-releases/${id}`, isExternal: false, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
345
364
|
designSystem.Flex,
|
|
346
365
|
{
|
|
347
366
|
direction: "column",
|
|
@@ -357,16 +376,10 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
|
357
376
|
children: [
|
|
358
377
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "start", gap: 1, children: [
|
|
359
378
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { as: "h3", variant: "delta", fontWeight: "bold", children: name }),
|
|
360
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children:
|
|
379
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: scheduledAt ? /* @__PURE__ */ jsxRuntime.jsx(CapitalizeRelativeTime, { timestamp: new Date(scheduledAt) }) : formatMessage({
|
|
361
380
|
id: "content-releases.pages.Releases.not-scheduled",
|
|
362
381
|
defaultMessage: "Not scheduled"
|
|
363
|
-
})
|
|
364
|
-
{
|
|
365
|
-
id: "content-releases.page.Releases.release-item.entries",
|
|
366
|
-
defaultMessage: "{number, plural, =0 {No entries} one {# entry} other {# entries}}"
|
|
367
|
-
},
|
|
368
|
-
{ number: actions.meta.count }
|
|
369
|
-
) })
|
|
382
|
+
}) })
|
|
370
383
|
] }),
|
|
371
384
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { ...getBadgeProps(status), children: status })
|
|
372
385
|
]
|
|
@@ -385,8 +398,7 @@ const INITIAL_FORM_VALUES = {
|
|
|
385
398
|
name: "",
|
|
386
399
|
date: null,
|
|
387
400
|
time: "",
|
|
388
|
-
|
|
389
|
-
isScheduled: window.strapi.future.isEnabled("contentReleasesScheduling"),
|
|
401
|
+
isScheduled: true,
|
|
390
402
|
scheduledAt: null,
|
|
391
403
|
timezone: null
|
|
392
404
|
};
|
|
@@ -396,14 +408,17 @@ const ReleasesPage = () => {
|
|
|
396
408
|
const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
|
|
397
409
|
const toggleNotification = helperPlugin.useNotification();
|
|
398
410
|
const { formatMessage } = reactIntl.useIntl();
|
|
399
|
-
const
|
|
400
|
-
const { formatAPIError } =
|
|
411
|
+
const navigate = reactRouterDom.useNavigate();
|
|
412
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
401
413
|
const [{ query }, setQuery] = helperPlugin.useQueryParams();
|
|
402
414
|
const response = index.useGetReleasesQuery(query);
|
|
403
415
|
const [createRelease, { isLoading: isSubmittingForm }] = index.useCreateReleaseMutation();
|
|
404
416
|
const { getFeature } = strapiAdmin.useLicenseLimits();
|
|
405
417
|
const { maximumReleases = 3 } = getFeature("cms-content-releases");
|
|
406
|
-
const { trackUsage } =
|
|
418
|
+
const { trackUsage } = strapiAdmin.useTracking();
|
|
419
|
+
const {
|
|
420
|
+
allowedActions: { canCreate }
|
|
421
|
+
} = helperPlugin.useRBAC(index.PERMISSIONS);
|
|
407
422
|
const { isLoading, isSuccess, isError } = response;
|
|
408
423
|
const activeTab = response?.currentData?.meta?.activeTab || "pending";
|
|
409
424
|
const activeTabIndex = ["pending", "done"].indexOf(activeTab);
|
|
@@ -420,9 +435,9 @@ const ReleasesPage = () => {
|
|
|
420
435
|
defaultMessage: "Please try again or open another release."
|
|
421
436
|
})
|
|
422
437
|
});
|
|
423
|
-
|
|
438
|
+
navigate("", { replace: true, state: null });
|
|
424
439
|
}
|
|
425
|
-
}, [formatMessage, location?.state?.errors,
|
|
440
|
+
}, [formatMessage, location?.state?.errors, navigate, toggleNotification]);
|
|
426
441
|
React__namespace.useEffect(() => {
|
|
427
442
|
if (tabRef.current) {
|
|
428
443
|
tabRef.current._handlers.setSelectedTabIndex(activeTabIndex);
|
|
@@ -432,7 +447,7 @@ const ReleasesPage = () => {
|
|
|
432
447
|
setReleaseModalShown((prev) => !prev);
|
|
433
448
|
};
|
|
434
449
|
if (isLoading) {
|
|
435
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
450
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
436
451
|
}
|
|
437
452
|
const totalPendingReleases = isSuccess && response.currentData?.meta?.pendingReleasesCount || 0;
|
|
438
453
|
const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;
|
|
@@ -463,7 +478,7 @@ const ReleasesPage = () => {
|
|
|
463
478
|
})
|
|
464
479
|
});
|
|
465
480
|
trackUsage("didCreateRelease");
|
|
466
|
-
|
|
481
|
+
navigate(response2.data.data.id.toString());
|
|
467
482
|
} else if (index.isAxiosError(response2.error)) {
|
|
468
483
|
toggleNotification({
|
|
469
484
|
type: "warning",
|
|
@@ -488,7 +503,7 @@ const ReleasesPage = () => {
|
|
|
488
503
|
id: "content-releases.pages.Releases.header-subtitle",
|
|
489
504
|
defaultMessage: "Create and manage content updates"
|
|
490
505
|
}),
|
|
491
|
-
primaryAction:
|
|
506
|
+
primaryAction: canCreate ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
492
507
|
designSystem.Button,
|
|
493
508
|
{
|
|
494
509
|
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Plus, {}),
|
|
@@ -499,7 +514,7 @@ const ReleasesPage = () => {
|
|
|
499
514
|
defaultMessage: "New release"
|
|
500
515
|
})
|
|
501
516
|
}
|
|
502
|
-
)
|
|
517
|
+
) : null
|
|
503
518
|
}
|
|
504
519
|
),
|
|
505
520
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -578,23 +593,17 @@ const ReleasesPage = () => {
|
|
|
578
593
|
]
|
|
579
594
|
}
|
|
580
595
|
),
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
pagination: {
|
|
593
|
-
pageCount: response?.currentData?.meta?.pagination?.pageCount || 0
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
)
|
|
597
|
-
] }) : null
|
|
596
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
597
|
+
strapiAdmin.Pagination.Root,
|
|
598
|
+
{
|
|
599
|
+
...response?.currentData?.meta?.pagination,
|
|
600
|
+
defaultPageSize: response?.currentData?.meta?.pagination?.pageSize,
|
|
601
|
+
children: [
|
|
602
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, { options: ["8", "16", "32", "64"] }),
|
|
603
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
|
|
604
|
+
]
|
|
605
|
+
}
|
|
606
|
+
)
|
|
598
607
|
] }) }),
|
|
599
608
|
releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
|
|
600
609
|
ReleaseModal,
|
|
@@ -642,14 +651,18 @@ const TrashIcon = styled__default.default(icons.Trash)`
|
|
|
642
651
|
const TypographyMaxWidth = styled__default.default(designSystem.Typography)`
|
|
643
652
|
max-width: 300px;
|
|
644
653
|
`;
|
|
645
|
-
const EntryValidationText = ({ action, schema,
|
|
654
|
+
const EntryValidationText = ({ action, schema, entry }) => {
|
|
646
655
|
const { formatMessage } = reactIntl.useIntl();
|
|
647
|
-
const { validate } = strapiAdmin.unstable_useDocument(
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
656
|
+
const { validate } = strapiAdmin.unstable_useDocument(
|
|
657
|
+
{
|
|
658
|
+
collectionType: schema?.kind ?? "",
|
|
659
|
+
model: schema?.uid ?? ""
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
skip: !schema
|
|
663
|
+
}
|
|
664
|
+
);
|
|
665
|
+
const errors = validate(entry) ?? {};
|
|
653
666
|
if (Object.keys(errors).length > 0) {
|
|
654
667
|
const validationErrorsMessages = Object.entries(errors).map(
|
|
655
668
|
([key, value]) => formatMessage(
|
|
@@ -697,18 +710,22 @@ const ReleaseDetailsLayout = ({
|
|
|
697
710
|
isLoading: isLoadingDetails,
|
|
698
711
|
isError,
|
|
699
712
|
error
|
|
700
|
-
} = index.useGetReleaseQuery(
|
|
713
|
+
} = index.useGetReleaseQuery(
|
|
714
|
+
{ id: releaseId },
|
|
715
|
+
{
|
|
716
|
+
skip: !releaseId
|
|
717
|
+
}
|
|
718
|
+
);
|
|
701
719
|
const [publishRelease, { isLoading: isPublishing }] = index.usePublishReleaseMutation();
|
|
702
720
|
const toggleNotification = helperPlugin.useNotification();
|
|
703
|
-
const { formatAPIError } =
|
|
704
|
-
const {
|
|
705
|
-
|
|
706
|
-
} = helperPlugin.useRBAC(index.PERMISSIONS);
|
|
721
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
722
|
+
const { allowedActions } = helperPlugin.useRBAC(index.PERMISSIONS);
|
|
723
|
+
const { canUpdate, canDelete, canPublish } = allowedActions;
|
|
707
724
|
const dispatch = index.useTypedDispatch();
|
|
708
|
-
const { trackUsage } =
|
|
725
|
+
const { trackUsage } = strapiAdmin.useTracking();
|
|
709
726
|
const release = data?.data;
|
|
710
|
-
const handlePublishRelease = async () => {
|
|
711
|
-
const response = await publishRelease({ id
|
|
727
|
+
const handlePublishRelease = (id) => async () => {
|
|
728
|
+
const response = await publishRelease({ id });
|
|
712
729
|
if ("data" in response) {
|
|
713
730
|
toggleNotification({
|
|
714
731
|
type: "success",
|
|
@@ -751,28 +768,25 @@ const ReleaseDetailsLayout = ({
|
|
|
751
768
|
return release.createdBy.email;
|
|
752
769
|
};
|
|
753
770
|
if (isLoadingDetails) {
|
|
754
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
771
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
755
772
|
}
|
|
756
773
|
if (isError || !release) {
|
|
757
774
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
758
|
-
reactRouterDom.
|
|
775
|
+
reactRouterDom.Navigate,
|
|
759
776
|
{
|
|
760
|
-
to:
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
]
|
|
768
|
-
}
|
|
777
|
+
to: "..",
|
|
778
|
+
state: {
|
|
779
|
+
errors: [
|
|
780
|
+
{
|
|
781
|
+
code: error?.code
|
|
782
|
+
}
|
|
783
|
+
]
|
|
769
784
|
}
|
|
770
785
|
}
|
|
771
786
|
);
|
|
772
787
|
}
|
|
773
788
|
const totalEntries = release.actions.meta.count || 0;
|
|
774
789
|
const hasCreatedByUser = Boolean(getCreatedByUser());
|
|
775
|
-
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
776
790
|
const isScheduled = release.scheduledAt && release.timezone;
|
|
777
791
|
const numberOfEntriesText = formatMessage(
|
|
778
792
|
{
|
|
@@ -807,13 +821,10 @@ const ReleaseDetailsLayout = ({
|
|
|
807
821
|
{
|
|
808
822
|
title: release.name,
|
|
809
823
|
subtitle: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, lineHeight: 6, children: [
|
|
810
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (
|
|
824
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : "") }),
|
|
811
825
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { ...getBadgeProps(release.status), children: release.status })
|
|
812
826
|
] }),
|
|
813
|
-
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(
|
|
814
|
-
id: "global.back",
|
|
815
|
-
defaultMessage: "Back"
|
|
816
|
-
}) }),
|
|
827
|
+
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {}),
|
|
817
828
|
primaryAction: !release.releasedAt && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
818
829
|
/* @__PURE__ */ jsxRuntime.jsxs(v2.Menu.Root, { children: [
|
|
819
830
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -879,7 +890,7 @@ const ReleaseDetailsLayout = ({
|
|
|
879
890
|
defaultMessage: "Created"
|
|
880
891
|
}) }),
|
|
881
892
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", color: "neutral300", children: [
|
|
882
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
893
|
+
/* @__PURE__ */ jsxRuntime.jsx(RelativeTime, { timestamp: new Date(release.createdAt) }),
|
|
883
894
|
formatMessage(
|
|
884
895
|
{
|
|
885
896
|
id: "content-releases.header.actions.created.description",
|
|
@@ -897,12 +908,12 @@ const ReleaseDetailsLayout = ({
|
|
|
897
908
|
id: "content-releases.header.actions.refresh",
|
|
898
909
|
defaultMessage: "Refresh"
|
|
899
910
|
}) }),
|
|
900
|
-
|
|
911
|
+
canPublish ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
901
912
|
designSystem.Button,
|
|
902
913
|
{
|
|
903
914
|
size: "S",
|
|
904
915
|
variant: "default",
|
|
905
|
-
onClick: handlePublishRelease,
|
|
916
|
+
onClick: handlePublishRelease(release.id.toString()),
|
|
906
917
|
loading: isPublishing,
|
|
907
918
|
disabled: release.actions.meta.count === 0,
|
|
908
919
|
children: formatMessage({
|
|
@@ -910,7 +921,7 @@ const ReleaseDetailsLayout = ({
|
|
|
910
921
|
defaultMessage: "Publish"
|
|
911
922
|
})
|
|
912
923
|
}
|
|
913
|
-
)
|
|
924
|
+
) : null
|
|
914
925
|
] })
|
|
915
926
|
}
|
|
916
927
|
),
|
|
@@ -936,12 +947,11 @@ const getGroupByOptionLabel = (value) => {
|
|
|
936
947
|
defaultMessage: "Content-Types"
|
|
937
948
|
};
|
|
938
949
|
};
|
|
939
|
-
const ReleaseDetailsBody = () => {
|
|
950
|
+
const ReleaseDetailsBody = ({ releaseId }) => {
|
|
940
951
|
const { formatMessage } = reactIntl.useIntl();
|
|
941
|
-
const { releaseId } = reactRouterDom.useParams();
|
|
942
952
|
const [{ query }, setQuery] = helperPlugin.useQueryParams();
|
|
943
953
|
const toggleNotification = helperPlugin.useNotification();
|
|
944
|
-
const { formatAPIError } =
|
|
954
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
945
955
|
const {
|
|
946
956
|
data: releaseData,
|
|
947
957
|
isLoading: isReleaseLoading,
|
|
@@ -993,7 +1003,7 @@ const ReleaseDetailsBody = () => {
|
|
|
993
1003
|
}
|
|
994
1004
|
};
|
|
995
1005
|
if (isLoading || isReleaseLoading) {
|
|
996
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1006
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
997
1007
|
}
|
|
998
1008
|
const releaseActions = data?.data;
|
|
999
1009
|
const releaseMeta = data?.meta;
|
|
@@ -1012,28 +1022,22 @@ const ReleaseDetailsBody = () => {
|
|
|
1012
1022
|
});
|
|
1013
1023
|
}
|
|
1014
1024
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1015
|
-
reactRouterDom.
|
|
1025
|
+
reactRouterDom.Navigate,
|
|
1016
1026
|
{
|
|
1017
|
-
to:
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
errors: errorsArray
|
|
1021
|
-
}
|
|
1027
|
+
to: "..",
|
|
1028
|
+
state: {
|
|
1029
|
+
errors: errorsArray
|
|
1022
1030
|
}
|
|
1023
1031
|
}
|
|
1024
1032
|
);
|
|
1025
1033
|
}
|
|
1026
1034
|
if (isError || !releaseActions) {
|
|
1027
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1035
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
|
|
1028
1036
|
}
|
|
1029
1037
|
if (Object.keys(releaseActions).length === 0) {
|
|
1030
1038
|
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1031
|
-
|
|
1039
|
+
designSystem.EmptyStateLayout,
|
|
1032
1040
|
{
|
|
1033
|
-
content: {
|
|
1034
|
-
id: "content-releases.pages.Details.tab.emptyEntries",
|
|
1035
|
-
defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
|
|
1036
|
-
},
|
|
1037
1041
|
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1038
1042
|
v2.LinkButton,
|
|
1039
1043
|
{
|
|
@@ -1048,10 +1052,54 @@ const ReleaseDetailsBody = () => {
|
|
|
1048
1052
|
defaultMessage: "Open the Content Manager"
|
|
1049
1053
|
})
|
|
1050
1054
|
}
|
|
1051
|
-
)
|
|
1055
|
+
),
|
|
1056
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.EmptyDocuments, { width: "10rem" }),
|
|
1057
|
+
content: formatMessage({
|
|
1058
|
+
id: "content-releases.pages.Details.tab.emptyEntries",
|
|
1059
|
+
defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
|
|
1060
|
+
})
|
|
1052
1061
|
}
|
|
1053
1062
|
) });
|
|
1054
1063
|
}
|
|
1064
|
+
const headers = [
|
|
1065
|
+
{
|
|
1066
|
+
label: formatMessage({
|
|
1067
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.name",
|
|
1068
|
+
defaultMessage: "name"
|
|
1069
|
+
}),
|
|
1070
|
+
name: "name"
|
|
1071
|
+
},
|
|
1072
|
+
{
|
|
1073
|
+
label: formatMessage({
|
|
1074
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.locale",
|
|
1075
|
+
defaultMessage: "locale"
|
|
1076
|
+
}),
|
|
1077
|
+
name: "locale"
|
|
1078
|
+
},
|
|
1079
|
+
{
|
|
1080
|
+
label: formatMessage({
|
|
1081
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
|
|
1082
|
+
defaultMessage: "content-type"
|
|
1083
|
+
}),
|
|
1084
|
+
name: "content-type"
|
|
1085
|
+
},
|
|
1086
|
+
{
|
|
1087
|
+
label: formatMessage({
|
|
1088
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.action",
|
|
1089
|
+
defaultMessage: "action"
|
|
1090
|
+
}),
|
|
1091
|
+
name: "action"
|
|
1092
|
+
},
|
|
1093
|
+
...!release.releasedAt ? [
|
|
1094
|
+
{
|
|
1095
|
+
label: formatMessage({
|
|
1096
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.status",
|
|
1097
|
+
defaultMessage: "status"
|
|
1098
|
+
}),
|
|
1099
|
+
name: "status"
|
|
1100
|
+
}
|
|
1101
|
+
] : []
|
|
1102
|
+
];
|
|
1055
1103
|
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, direction: "column", alignItems: "stretch", children: [
|
|
1056
1104
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1057
1105
|
designSystem.SingleSelect,
|
|
@@ -1077,75 +1125,18 @@ const ReleaseDetailsBody = () => {
|
|
|
1077
1125
|
Object.keys(releaseActions).map((key) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 4, direction: "column", alignItems: "stretch", children: [
|
|
1078
1126
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { role: "separator", "aria-label": key, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { children: key }) }),
|
|
1079
1127
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1080
|
-
|
|
1128
|
+
strapiAdmin.Table.Root,
|
|
1081
1129
|
{
|
|
1082
1130
|
rows: releaseActions[key].map((item) => ({
|
|
1083
1131
|
...item,
|
|
1084
1132
|
id: Number(item.entry.id)
|
|
1085
1133
|
})),
|
|
1086
|
-
|
|
1087
|
-
isLoading,
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1091
|
-
|
|
1092
|
-
helperPlugin.Table.HeaderCell,
|
|
1093
|
-
{
|
|
1094
|
-
fieldSchemaType: "string",
|
|
1095
|
-
label: formatMessage({
|
|
1096
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.name",
|
|
1097
|
-
defaultMessage: "name"
|
|
1098
|
-
}),
|
|
1099
|
-
name: "name"
|
|
1100
|
-
}
|
|
1101
|
-
),
|
|
1102
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1103
|
-
helperPlugin.Table.HeaderCell,
|
|
1104
|
-
{
|
|
1105
|
-
fieldSchemaType: "string",
|
|
1106
|
-
label: formatMessage({
|
|
1107
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.locale",
|
|
1108
|
-
defaultMessage: "locale"
|
|
1109
|
-
}),
|
|
1110
|
-
name: "locale"
|
|
1111
|
-
}
|
|
1112
|
-
),
|
|
1113
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1114
|
-
helperPlugin.Table.HeaderCell,
|
|
1115
|
-
{
|
|
1116
|
-
fieldSchemaType: "string",
|
|
1117
|
-
label: formatMessage({
|
|
1118
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
|
|
1119
|
-
defaultMessage: "content-type"
|
|
1120
|
-
}),
|
|
1121
|
-
name: "content-type"
|
|
1122
|
-
}
|
|
1123
|
-
),
|
|
1124
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1125
|
-
helperPlugin.Table.HeaderCell,
|
|
1126
|
-
{
|
|
1127
|
-
fieldSchemaType: "string",
|
|
1128
|
-
label: formatMessage({
|
|
1129
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.action",
|
|
1130
|
-
defaultMessage: "action"
|
|
1131
|
-
}),
|
|
1132
|
-
name: "action"
|
|
1133
|
-
}
|
|
1134
|
-
),
|
|
1135
|
-
!release.releasedAt && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1136
|
-
helperPlugin.Table.HeaderCell,
|
|
1137
|
-
{
|
|
1138
|
-
fieldSchemaType: "string",
|
|
1139
|
-
label: formatMessage({
|
|
1140
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.status",
|
|
1141
|
-
defaultMessage: "status"
|
|
1142
|
-
}),
|
|
1143
|
-
name: "status"
|
|
1144
|
-
}
|
|
1145
|
-
)
|
|
1146
|
-
] }),
|
|
1147
|
-
/* @__PURE__ */ jsxRuntime.jsx(helperPlugin.Table.LoadingBody, {}),
|
|
1148
|
-
/* @__PURE__ */ jsxRuntime.jsx(helperPlugin.Table.Body, { children: releaseActions[key].map(
|
|
1134
|
+
headers,
|
|
1135
|
+
isLoading: isLoading || isFetching,
|
|
1136
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Table.Content, { children: [
|
|
1137
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Head, { children: headers.map((header) => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.HeaderCell, { ...header }, header.name)) }),
|
|
1138
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Loading, {}),
|
|
1139
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Body, { children: releaseActions[key].map(
|
|
1149
1140
|
({ id, contentType, locale, type, entry }, actionIndex) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
|
|
1150
1141
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "25%", maxWidth: "200px", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, children: `${contentType.mainFieldValue || entry.id}` }) }),
|
|
1151
1142
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "10%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: `${locale?.name ? locale.name : "-"}` }) }),
|
|
@@ -1202,34 +1193,39 @@ const ReleaseDetailsBody = () => {
|
|
|
1202
1193
|
}
|
|
1203
1194
|
)
|
|
1204
1195
|
] }, `releases-group-${key}`)),
|
|
1205
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
}
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1196
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1197
|
+
strapiAdmin.Pagination.Root,
|
|
1198
|
+
{
|
|
1199
|
+
...releaseMeta?.pagination,
|
|
1200
|
+
defaultPageSize: releaseMeta?.pagination?.pageSize,
|
|
1201
|
+
children: [
|
|
1202
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, {}),
|
|
1203
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
|
|
1204
|
+
]
|
|
1205
|
+
}
|
|
1206
|
+
)
|
|
1216
1207
|
] }) });
|
|
1217
1208
|
};
|
|
1218
1209
|
const ReleaseDetailsPage = () => {
|
|
1219
1210
|
const { formatMessage } = reactIntl.useIntl();
|
|
1220
1211
|
const { releaseId } = reactRouterDom.useParams();
|
|
1221
1212
|
const toggleNotification = helperPlugin.useNotification();
|
|
1222
|
-
const { formatAPIError } =
|
|
1223
|
-
const
|
|
1213
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
1214
|
+
const navigate = reactRouterDom.useNavigate();
|
|
1224
1215
|
const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
|
|
1225
1216
|
const [showWarningSubmit, setWarningSubmit] = React__namespace.useState(false);
|
|
1226
1217
|
const {
|
|
1227
1218
|
isLoading: isLoadingDetails,
|
|
1228
1219
|
data,
|
|
1229
1220
|
isSuccess: isSuccessDetails
|
|
1230
|
-
} = index.useGetReleaseQuery(
|
|
1221
|
+
} = index.useGetReleaseQuery(
|
|
1222
|
+
{ id: releaseId },
|
|
1223
|
+
{
|
|
1224
|
+
skip: !releaseId
|
|
1225
|
+
}
|
|
1226
|
+
);
|
|
1231
1227
|
const [updateRelease, { isLoading: isSubmittingForm }] = index.useUpdateReleaseMutation();
|
|
1232
|
-
const [deleteRelease
|
|
1228
|
+
const [deleteRelease] = index.useDeleteReleaseMutation();
|
|
1233
1229
|
const toggleEditReleaseModal = () => {
|
|
1234
1230
|
setReleaseModalShown((prev) => !prev);
|
|
1235
1231
|
};
|
|
@@ -1240,10 +1236,13 @@ const ReleaseDetailsPage = () => {
|
|
|
1240
1236
|
{
|
|
1241
1237
|
toggleEditReleaseModal,
|
|
1242
1238
|
toggleWarningSubmit,
|
|
1243
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1239
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {})
|
|
1244
1240
|
}
|
|
1245
1241
|
);
|
|
1246
1242
|
}
|
|
1243
|
+
if (!releaseId) {
|
|
1244
|
+
return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: ".." });
|
|
1245
|
+
}
|
|
1247
1246
|
const releaseData = isSuccessDetails && data?.data || null;
|
|
1248
1247
|
const title = releaseData?.name || "";
|
|
1249
1248
|
const timezone = releaseData?.timezone ?? null;
|
|
@@ -1283,7 +1282,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1283
1282
|
id: releaseId
|
|
1284
1283
|
});
|
|
1285
1284
|
if ("data" in response) {
|
|
1286
|
-
|
|
1285
|
+
navigate("..");
|
|
1287
1286
|
} else if (index.isAxiosError(response.error)) {
|
|
1288
1287
|
toggleNotification({
|
|
1289
1288
|
type: "warning",
|
|
@@ -1302,7 +1301,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1302
1301
|
toggleEditReleaseModal,
|
|
1303
1302
|
toggleWarningSubmit,
|
|
1304
1303
|
children: [
|
|
1305
|
-
/* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, {}),
|
|
1304
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, { releaseId }),
|
|
1306
1305
|
releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1307
1306
|
ReleaseModal,
|
|
1308
1307
|
{
|
|
@@ -1320,16 +1319,15 @@ const ReleaseDetailsPage = () => {
|
|
|
1320
1319
|
}
|
|
1321
1320
|
),
|
|
1322
1321
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1323
|
-
|
|
1322
|
+
strapiAdmin.ConfirmDialog,
|
|
1324
1323
|
{
|
|
1325
|
-
|
|
1324
|
+
isOpen: showWarningSubmit,
|
|
1325
|
+
onClose: toggleWarningSubmit,
|
|
1326
|
+
onConfirm: handleDeleteRelease,
|
|
1327
|
+
children: formatMessage({
|
|
1326
1328
|
id: "content-releases.dialog.confirmation-message",
|
|
1327
1329
|
defaultMessage: "Are you sure you want to delete this release?"
|
|
1328
|
-
}
|
|
1329
|
-
isOpen: showWarningSubmit,
|
|
1330
|
-
isConfirmButtonLoading: isDeletingRelease,
|
|
1331
|
-
onToggleDialog: toggleWarningSubmit,
|
|
1332
|
-
onConfirm: handleDeleteRelease
|
|
1330
|
+
})
|
|
1333
1331
|
}
|
|
1334
1332
|
)
|
|
1335
1333
|
]
|
|
@@ -1337,10 +1335,10 @@ const ReleaseDetailsPage = () => {
|
|
|
1337
1335
|
);
|
|
1338
1336
|
};
|
|
1339
1337
|
const App = () => {
|
|
1340
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1341
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, {
|
|
1342
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, {
|
|
1338
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions: index.PERMISSIONS.main, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Routes, { children: [
|
|
1339
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { index: true, element: /* @__PURE__ */ jsxRuntime.jsx(ReleasesPage, {}) }),
|
|
1340
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: ":releaseId", element: /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsPage, {}) })
|
|
1343
1341
|
] }) });
|
|
1344
1342
|
};
|
|
1345
1343
|
exports.App = App;
|
|
1346
|
-
//# sourceMappingURL=App-
|
|
1344
|
+
//# sourceMappingURL=App-vS3MaAL8.js.map
|