@strapi/content-releases 0.0.0-next.f5312617ca16b870c2bf1adcea2c69b676979e29 → 0.0.0-next.f698d55751345c4ca87477ef683475c1a68f310a
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-Cne--1Z8.mjs → App-Cx72FM22.mjs} +299 -115
- package/dist/_chunks/App-Cx72FM22.mjs.map +1 -0
- package/dist/_chunks/{App-BKB1esYS.js → App-DyjVixKE.js} +340 -157
- package/dist/_chunks/App-DyjVixKE.js.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-Be3acS2L.js → PurchaseContentReleases-BJlgTIuR.js} +2 -2
- package/dist/_chunks/PurchaseContentReleases-BJlgTIuR.js.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-_MxP6-Dt.mjs → PurchaseContentReleases-CIiBmOhI.mjs} +2 -2
- package/dist/_chunks/{PurchaseContentReleases-_MxP6-Dt.mjs.map → PurchaseContentReleases-CIiBmOhI.mjs.map} +1 -1
- package/dist/_chunks/{ReleasesSettingsPage-C1WwGWIH.mjs → ReleasesSettingsPage-9si_53C5.mjs} +2 -2
- package/dist/_chunks/{ReleasesSettingsPage-C1WwGWIH.mjs.map → ReleasesSettingsPage-9si_53C5.mjs.map} +1 -1
- package/dist/_chunks/{ReleasesSettingsPage-kuXIwpWp.js → ReleasesSettingsPage-FsXF_FuJ.js} +3 -3
- package/dist/_chunks/{ReleasesSettingsPage-kuXIwpWp.js.map → ReleasesSettingsPage-FsXF_FuJ.js.map} +1 -1
- package/dist/_chunks/{en-CmYoEnA7.js → en-BWPPsSH-.js} +11 -2
- package/dist/_chunks/en-BWPPsSH-.js.map +1 -0
- package/dist/_chunks/{en-D0yVZFqf.mjs → en-D9Q4YW03.mjs} +11 -2
- package/dist/_chunks/en-D9Q4YW03.mjs.map +1 -0
- package/dist/_chunks/{index-Cy7qwpaU.mjs → index-CVj5EFQC.mjs} +33 -9
- package/dist/_chunks/index-CVj5EFQC.mjs.map +1 -0
- package/dist/_chunks/{index-5Odi61vw.js → index-CpTN5TdF.js} +34 -11
- package/dist/_chunks/index-CpTN5TdF.js.map +1 -0
- package/dist/_chunks/{schemas-BE1LxE9J.js → schemas-DBYv9gK8.js} +2 -3
- package/dist/_chunks/{schemas-BE1LxE9J.js.map → schemas-DBYv9gK8.js.map} +1 -1
- package/dist/_chunks/schemas-DdA2ic2U.mjs.map +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/EntryValidationPopover.d.ts +13 -0
- package/dist/server/index.js +73 -8
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +72 -6
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/index.d.ts +2 -6
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/documents.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +2 -6
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/release-action.d.ts +3 -7
- package/dist/server/src/services/release-action.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/shared/contracts/release-actions.d.ts +8 -1
- package/dist/shared/contracts/release-actions.d.ts.map +1 -1
- package/package.json +12 -11
- package/dist/_chunks/App-BKB1esYS.js.map +0 -1
- package/dist/_chunks/App-Cne--1Z8.mjs.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js.map +0 -1
- package/dist/_chunks/en-CmYoEnA7.js.map +0 -1
- package/dist/_chunks/en-D0yVZFqf.mjs.map +0 -1
- package/dist/_chunks/index-5Odi61vw.js.map +0 -1
- package/dist/_chunks/index-Cy7qwpaU.mjs.map +0 -1
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const strapiAdmin = require("@strapi/admin/strapi-admin");
|
|
4
|
+
const strapiAdmin$1 = require("@strapi/admin/strapi-admin");
|
|
5
5
|
const reactRouterDom = require("react-router-dom");
|
|
6
|
-
const index = require("./index-
|
|
6
|
+
const index = require("./index-CpTN5TdF.js");
|
|
7
7
|
const React = require("react");
|
|
8
|
-
const strapiAdmin$1 = require("@strapi/content-manager/strapi-admin");
|
|
9
8
|
const designSystem = require("@strapi/design-system");
|
|
10
9
|
const icons = require("@strapi/icons");
|
|
11
10
|
const symbols = require("@strapi/icons/symbols");
|
|
@@ -13,15 +12,16 @@ const format = require("date-fns/format");
|
|
|
13
12
|
const dateFnsTz = require("date-fns-tz");
|
|
14
13
|
const reactIntl = require("react-intl");
|
|
15
14
|
const styledComponents = require("styled-components");
|
|
15
|
+
const strapiAdmin = require("@strapi/content-manager/strapi-admin");
|
|
16
|
+
const qs = require("qs");
|
|
16
17
|
const dateFns = require("date-fns");
|
|
17
18
|
const formik = require("formik");
|
|
18
|
-
const schemas = require("./schemas-
|
|
19
|
+
const schemas = require("./schemas-DBYv9gK8.js");
|
|
19
20
|
const reactRedux = require("react-redux");
|
|
20
21
|
const ee = require("@strapi/admin/strapi-admin/ee");
|
|
21
22
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
22
23
|
function _interopNamespace(e) {
|
|
23
|
-
if (e && e.__esModule)
|
|
24
|
-
return e;
|
|
24
|
+
if (e && e.__esModule) return e;
|
|
25
25
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
26
26
|
if (e) {
|
|
27
27
|
for (const k in e) {
|
|
@@ -39,6 +39,290 @@ function _interopNamespace(e) {
|
|
|
39
39
|
}
|
|
40
40
|
const React__namespace = /* @__PURE__ */ _interopNamespace(React);
|
|
41
41
|
const format__default = /* @__PURE__ */ _interopDefault(format);
|
|
42
|
+
const StyledPopoverFlex = styledComponents.styled(designSystem.Flex)`
|
|
43
|
+
width: 100%;
|
|
44
|
+
max-width: 256px;
|
|
45
|
+
|
|
46
|
+
& > * {
|
|
47
|
+
border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
& > *:last-child {
|
|
51
|
+
border-bottom: none;
|
|
52
|
+
}
|
|
53
|
+
`;
|
|
54
|
+
const EntryStatusTrigger = ({
|
|
55
|
+
action,
|
|
56
|
+
status,
|
|
57
|
+
hasErrors,
|
|
58
|
+
requiredStage,
|
|
59
|
+
entryStage
|
|
60
|
+
}) => {
|
|
61
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
62
|
+
if (action === "publish") {
|
|
63
|
+
if (hasErrors || requiredStage && requiredStage.id !== entryStage?.id) {
|
|
64
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
65
|
+
designSystem.Button,
|
|
66
|
+
{
|
|
67
|
+
variant: "ghost",
|
|
68
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.CrossCircle, { fill: "danger600" }),
|
|
69
|
+
endIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, {}),
|
|
70
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "danger600", variant: "omega", fontWeight: "bold", children: formatMessage({
|
|
71
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.not-ready",
|
|
72
|
+
defaultMessage: "Not ready to publish"
|
|
73
|
+
}) })
|
|
74
|
+
}
|
|
75
|
+
) });
|
|
76
|
+
}
|
|
77
|
+
if (status === "draft") {
|
|
78
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
79
|
+
designSystem.Button,
|
|
80
|
+
{
|
|
81
|
+
variant: "ghost",
|
|
82
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }),
|
|
83
|
+
endIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, {}),
|
|
84
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "success600", variant: "omega", fontWeight: "bold", children: formatMessage({
|
|
85
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.ready-to-publish",
|
|
86
|
+
defaultMessage: "Ready to publish"
|
|
87
|
+
}) })
|
|
88
|
+
}
|
|
89
|
+
) });
|
|
90
|
+
}
|
|
91
|
+
if (status === "modified") {
|
|
92
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
93
|
+
designSystem.Button,
|
|
94
|
+
{
|
|
95
|
+
variant: "ghost",
|
|
96
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowsCounterClockwise, { fill: "alternative600" }),
|
|
97
|
+
endIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, {}),
|
|
98
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "bold", textColor: "alternative600", children: formatMessage({
|
|
99
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.modified",
|
|
100
|
+
defaultMessage: "Ready to publish changes"
|
|
101
|
+
}) })
|
|
102
|
+
}
|
|
103
|
+
) });
|
|
104
|
+
}
|
|
105
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
106
|
+
designSystem.Button,
|
|
107
|
+
{
|
|
108
|
+
variant: "ghost",
|
|
109
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }),
|
|
110
|
+
endIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, {}),
|
|
111
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "success600", variant: "omega", fontWeight: "bold", children: formatMessage({
|
|
112
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.already-published",
|
|
113
|
+
defaultMessage: "Already published"
|
|
114
|
+
}) })
|
|
115
|
+
}
|
|
116
|
+
) });
|
|
117
|
+
}
|
|
118
|
+
if (status === "published") {
|
|
119
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
120
|
+
designSystem.Button,
|
|
121
|
+
{
|
|
122
|
+
variant: "ghost",
|
|
123
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }),
|
|
124
|
+
endIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, {}),
|
|
125
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "success600", variant: "omega", fontWeight: "bold", children: formatMessage({
|
|
126
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.ready-to-unpublish",
|
|
127
|
+
defaultMessage: "Ready to unpublish"
|
|
128
|
+
}) })
|
|
129
|
+
}
|
|
130
|
+
) });
|
|
131
|
+
}
|
|
132
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "ghost", startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }), endIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, {}), children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "success600", variant: "omega", fontWeight: "bold", children: formatMessage({
|
|
133
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.already-unpublished",
|
|
134
|
+
defaultMessage: "Already unpublished"
|
|
135
|
+
}) }) }) });
|
|
136
|
+
};
|
|
137
|
+
const FieldsValidation = ({
|
|
138
|
+
hasErrors,
|
|
139
|
+
errors,
|
|
140
|
+
kind,
|
|
141
|
+
contentTypeUid,
|
|
142
|
+
documentId,
|
|
143
|
+
locale
|
|
144
|
+
}) => {
|
|
145
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
146
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 1, width: "100%", padding: 5, children: [
|
|
147
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, width: "100%", children: [
|
|
148
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "bold", children: formatMessage({
|
|
149
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.fields",
|
|
150
|
+
defaultMessage: "Fields"
|
|
151
|
+
}) }),
|
|
152
|
+
hasErrors ? /* @__PURE__ */ jsxRuntime.jsx(icons.CrossCircle, { fill: "danger600" }) : /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" })
|
|
153
|
+
] }),
|
|
154
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { width: "100%", textColor: "neutral600", children: hasErrors ? formatMessage(
|
|
155
|
+
{
|
|
156
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.fields.error",
|
|
157
|
+
defaultMessage: "{errors} errors on fields."
|
|
158
|
+
},
|
|
159
|
+
{ errors: errors ? Object.keys(errors).length : 0 }
|
|
160
|
+
) : formatMessage({
|
|
161
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.fields.success",
|
|
162
|
+
defaultMessage: "All fields are filled correctly."
|
|
163
|
+
}) }),
|
|
164
|
+
hasErrors && /* @__PURE__ */ jsxRuntime.jsx(
|
|
165
|
+
designSystem.LinkButton,
|
|
166
|
+
{
|
|
167
|
+
tag: reactRouterDom.Link,
|
|
168
|
+
to: {
|
|
169
|
+
pathname: `/content-manager/${kind === "collectionType" ? "collection-types" : "single-types"}/${contentTypeUid}/${documentId}`,
|
|
170
|
+
search: locale ? qs.stringify({
|
|
171
|
+
plugins: {
|
|
172
|
+
i18n: {
|
|
173
|
+
locale
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}) : ""
|
|
177
|
+
},
|
|
178
|
+
variant: "secondary",
|
|
179
|
+
fullWidth: true,
|
|
180
|
+
state: { forceValidation: true },
|
|
181
|
+
children: formatMessage({
|
|
182
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.fields.see-errors",
|
|
183
|
+
defaultMessage: "See errors"
|
|
184
|
+
})
|
|
185
|
+
}
|
|
186
|
+
)
|
|
187
|
+
] });
|
|
188
|
+
};
|
|
189
|
+
const getReviewStageIcon = ({
|
|
190
|
+
contentTypeHasReviewWorkflow,
|
|
191
|
+
requiredStage,
|
|
192
|
+
entryStage
|
|
193
|
+
}) => {
|
|
194
|
+
if (!contentTypeHasReviewWorkflow) {
|
|
195
|
+
return /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "neutral200" });
|
|
196
|
+
}
|
|
197
|
+
if (requiredStage && requiredStage.id !== entryStage?.id) {
|
|
198
|
+
return /* @__PURE__ */ jsxRuntime.jsx(icons.CrossCircle, { fill: "danger600" });
|
|
199
|
+
}
|
|
200
|
+
return /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" });
|
|
201
|
+
};
|
|
202
|
+
const getReviewStageMessage = ({
|
|
203
|
+
contentTypeHasReviewWorkflow,
|
|
204
|
+
requiredStage,
|
|
205
|
+
entryStage,
|
|
206
|
+
formatMessage
|
|
207
|
+
}) => {
|
|
208
|
+
if (!contentTypeHasReviewWorkflow) {
|
|
209
|
+
return formatMessage({
|
|
210
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.review-stage.not-enabled",
|
|
211
|
+
defaultMessage: "This entry is not associated to any workflow."
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
if (requiredStage && requiredStage.id !== entryStage?.id) {
|
|
215
|
+
return formatMessage(
|
|
216
|
+
{
|
|
217
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.review-stage.not-ready",
|
|
218
|
+
defaultMessage: "This entry is not at the required stage for publishing. ({stageName})"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
stageName: requiredStage?.name ?? ""
|
|
222
|
+
}
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
if (requiredStage && requiredStage.id === entryStage?.id) {
|
|
226
|
+
return formatMessage(
|
|
227
|
+
{
|
|
228
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.review-stage.ready",
|
|
229
|
+
defaultMessage: "This entry is at the required stage for publishing. ({stageName})"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
stageName: requiredStage?.name ?? ""
|
|
233
|
+
}
|
|
234
|
+
);
|
|
235
|
+
}
|
|
236
|
+
return formatMessage({
|
|
237
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.review-stage.stage-not-required",
|
|
238
|
+
defaultMessage: "No required stage for publication"
|
|
239
|
+
});
|
|
240
|
+
};
|
|
241
|
+
const ReviewStageValidation = ({
|
|
242
|
+
contentTypeHasReviewWorkflow,
|
|
243
|
+
requiredStage,
|
|
244
|
+
entryStage
|
|
245
|
+
}) => {
|
|
246
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
247
|
+
const Icon = getReviewStageIcon({
|
|
248
|
+
contentTypeHasReviewWorkflow,
|
|
249
|
+
requiredStage,
|
|
250
|
+
entryStage
|
|
251
|
+
});
|
|
252
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 1, width: "100%", padding: 5, children: [
|
|
253
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, width: "100%", children: [
|
|
254
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "bold", children: formatMessage({
|
|
255
|
+
id: "content-releases.pages.ReleaseDetails.entry-validation.review-stage",
|
|
256
|
+
defaultMessage: "Review stage"
|
|
257
|
+
}) }),
|
|
258
|
+
Icon
|
|
259
|
+
] }),
|
|
260
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral600", children: getReviewStageMessage({
|
|
261
|
+
contentTypeHasReviewWorkflow,
|
|
262
|
+
requiredStage,
|
|
263
|
+
entryStage,
|
|
264
|
+
formatMessage
|
|
265
|
+
}) })
|
|
266
|
+
] });
|
|
267
|
+
};
|
|
268
|
+
const EntryValidationPopover = ({
|
|
269
|
+
schema,
|
|
270
|
+
entry,
|
|
271
|
+
status,
|
|
272
|
+
action
|
|
273
|
+
}) => {
|
|
274
|
+
const { validate, isLoading } = strapiAdmin.unstable_useDocument(
|
|
275
|
+
{
|
|
276
|
+
collectionType: schema?.kind ?? "",
|
|
277
|
+
model: schema?.uid ?? ""
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
// 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
|
|
281
|
+
skip: true
|
|
282
|
+
}
|
|
283
|
+
);
|
|
284
|
+
const errors = isLoading ? null : validate(entry);
|
|
285
|
+
const hasErrors = errors ? Object.keys(errors).length > 0 : false;
|
|
286
|
+
const contentTypeHasReviewWorkflow = schema?.hasReviewWorkflow ?? false;
|
|
287
|
+
const requiredStage = schema?.stageRequiredToPublish;
|
|
288
|
+
const entryStage = entry.strapi_stage;
|
|
289
|
+
if (isLoading) {
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { children: [
|
|
293
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
294
|
+
EntryStatusTrigger,
|
|
295
|
+
{
|
|
296
|
+
action,
|
|
297
|
+
status,
|
|
298
|
+
hasErrors,
|
|
299
|
+
requiredStage,
|
|
300
|
+
entryStage
|
|
301
|
+
}
|
|
302
|
+
),
|
|
303
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(StyledPopoverFlex, { direction: "column", children: [
|
|
304
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
305
|
+
FieldsValidation,
|
|
306
|
+
{
|
|
307
|
+
hasErrors,
|
|
308
|
+
errors,
|
|
309
|
+
contentTypeUid: schema?.uid,
|
|
310
|
+
kind: schema?.kind,
|
|
311
|
+
documentId: entry.documentId,
|
|
312
|
+
locale: entry.locale
|
|
313
|
+
}
|
|
314
|
+
),
|
|
315
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
316
|
+
ReviewStageValidation,
|
|
317
|
+
{
|
|
318
|
+
contentTypeHasReviewWorkflow,
|
|
319
|
+
requiredStage,
|
|
320
|
+
entryStage
|
|
321
|
+
}
|
|
322
|
+
)
|
|
323
|
+
] }) })
|
|
324
|
+
] });
|
|
325
|
+
};
|
|
42
326
|
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
|
43
327
|
const RelativeTime$1 = React__namespace.forwardRef(
|
|
44
328
|
({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {
|
|
@@ -84,8 +368,7 @@ const ReleaseModal = ({
|
|
|
84
368
|
);
|
|
85
369
|
const getScheduledTimestamp = (values) => {
|
|
86
370
|
const { date, time, timezone } = values;
|
|
87
|
-
if (!date || !time || !timezone)
|
|
88
|
-
return null;
|
|
371
|
+
if (!date || !time || !timezone) return null;
|
|
89
372
|
const timezoneWithoutOffset = timezone.split("&")[1];
|
|
90
373
|
return dateFnsTz.zonedTimeToUtc(`${date} ${time}`, timezoneWithoutOffset);
|
|
91
374
|
};
|
|
@@ -346,7 +629,7 @@ const getBadgeProps = (status) => {
|
|
|
346
629
|
const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
347
630
|
const { formatMessage } = reactIntl.useIntl();
|
|
348
631
|
if (isError) {
|
|
349
|
-
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
|
|
632
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Page.Error, {});
|
|
350
633
|
}
|
|
351
634
|
if (releases?.length === 0) {
|
|
352
635
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -410,20 +693,20 @@ const INITIAL_FORM_VALUES = {
|
|
|
410
693
|
const ReleasesPage = () => {
|
|
411
694
|
const location = reactRouterDom.useLocation();
|
|
412
695
|
const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
|
|
413
|
-
const { toggleNotification } = strapiAdmin.useNotification();
|
|
696
|
+
const { toggleNotification } = strapiAdmin$1.useNotification();
|
|
414
697
|
const { formatMessage } = reactIntl.useIntl();
|
|
415
698
|
const navigate = reactRouterDom.useNavigate();
|
|
416
|
-
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
417
|
-
const [{ query }, setQuery] = strapiAdmin.useQueryParams();
|
|
699
|
+
const { formatAPIError } = strapiAdmin$1.useAPIErrorHandler();
|
|
700
|
+
const [{ query }, setQuery] = strapiAdmin$1.useQueryParams();
|
|
418
701
|
const response = index.useGetReleasesQuery(query);
|
|
419
702
|
const { data, isLoading: isLoadingSettings } = index.useGetReleaseSettingsQuery();
|
|
420
703
|
const [createRelease, { isLoading: isSubmittingForm }] = index.useCreateReleaseMutation();
|
|
421
704
|
const { getFeature } = ee.useLicenseLimits();
|
|
422
705
|
const { maximumReleases = 3 } = getFeature("cms-content-releases");
|
|
423
|
-
const { trackUsage } = strapiAdmin.useTracking();
|
|
706
|
+
const { trackUsage } = strapiAdmin$1.useTracking();
|
|
424
707
|
const {
|
|
425
708
|
allowedActions: { canCreate }
|
|
426
|
-
} = strapiAdmin.useRBAC(index.PERMISSIONS);
|
|
709
|
+
} = strapiAdmin$1.useRBAC(index.PERMISSIONS);
|
|
427
710
|
const { isLoading: isLoadingReleases, isSuccess, isError } = response;
|
|
428
711
|
const activeTab = response?.currentData?.meta?.activeTab || "pending";
|
|
429
712
|
React__namespace.useEffect(() => {
|
|
@@ -446,7 +729,7 @@ const ReleasesPage = () => {
|
|
|
446
729
|
setReleaseModalShown((prev) => !prev);
|
|
447
730
|
};
|
|
448
731
|
if (isLoadingReleases || isLoadingSettings) {
|
|
449
|
-
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
732
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Page.Loading, {});
|
|
450
733
|
}
|
|
451
734
|
const totalPendingReleases = isSuccess && response.currentData?.meta?.pendingReleasesCount || 0;
|
|
452
735
|
const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;
|
|
@@ -478,7 +761,7 @@ const ReleasesPage = () => {
|
|
|
478
761
|
});
|
|
479
762
|
trackUsage("didCreateRelease");
|
|
480
763
|
navigate(response2.data.data.id.toString());
|
|
481
|
-
} else if (strapiAdmin.isFetchError(response2.error)) {
|
|
764
|
+
} else if (strapiAdmin$1.isFetchError(response2.error)) {
|
|
482
765
|
toggleNotification({
|
|
483
766
|
type: "danger",
|
|
484
767
|
message: formatAPIError(response2.error)
|
|
@@ -492,7 +775,7 @@ const ReleasesPage = () => {
|
|
|
492
775
|
};
|
|
493
776
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { "aria-busy": isLoadingReleases || isLoadingSettings, children: [
|
|
494
777
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
495
|
-
strapiAdmin.Layouts.Header,
|
|
778
|
+
strapiAdmin$1.Layouts.Header,
|
|
496
779
|
{
|
|
497
780
|
title: formatMessage({
|
|
498
781
|
id: "content-releases.pages.Releases.title",
|
|
@@ -516,7 +799,7 @@ const ReleasesPage = () => {
|
|
|
516
799
|
) : null
|
|
517
800
|
}
|
|
518
801
|
),
|
|
519
|
-
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
802
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
520
803
|
hasReachedMaximumPendingReleases && /* @__PURE__ */ jsxRuntime.jsx(
|
|
521
804
|
StyledAlert,
|
|
522
805
|
{
|
|
@@ -587,13 +870,13 @@ const ReleasesPage = () => {
|
|
|
587
870
|
) })
|
|
588
871
|
] }),
|
|
589
872
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
590
|
-
strapiAdmin.Pagination.Root,
|
|
873
|
+
strapiAdmin$1.Pagination.Root,
|
|
591
874
|
{
|
|
592
875
|
...response?.currentData?.meta?.pagination,
|
|
593
876
|
defaultPageSize: response?.currentData?.meta?.pagination?.pageSize,
|
|
594
877
|
children: [
|
|
595
|
-
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, { options: ["8", "16", "32", "64"] }),
|
|
596
|
-
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
|
|
878
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Pagination.PageSize, { options: ["8", "16", "32", "64"] }),
|
|
879
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Pagination.Links, {})
|
|
597
880
|
]
|
|
598
881
|
}
|
|
599
882
|
)
|
|
@@ -645,105 +928,6 @@ const TrashIcon = styledComponents.styled(icons.Trash)`
|
|
|
645
928
|
fill: ${({ theme }) => theme.colors.danger600};
|
|
646
929
|
}
|
|
647
930
|
`;
|
|
648
|
-
const TypographyMaxWidth = styledComponents.styled(designSystem.Typography)`
|
|
649
|
-
max-width: 300px;
|
|
650
|
-
`;
|
|
651
|
-
const EntryValidationText = ({ action, schema, entry, status }) => {
|
|
652
|
-
const { formatMessage } = reactIntl.useIntl();
|
|
653
|
-
const { validate, isLoading } = strapiAdmin$1.unstable_useDocument(
|
|
654
|
-
{
|
|
655
|
-
collectionType: schema?.kind ?? "",
|
|
656
|
-
model: schema?.uid ?? ""
|
|
657
|
-
},
|
|
658
|
-
{
|
|
659
|
-
// 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
|
|
660
|
-
skip: true
|
|
661
|
-
}
|
|
662
|
-
);
|
|
663
|
-
const errorsToString = (errors2, prefix = "") => {
|
|
664
|
-
if (Object.keys(errors2).length === 0) {
|
|
665
|
-
return "";
|
|
666
|
-
}
|
|
667
|
-
return Object.entries(errors2).map(([key, value]) => {
|
|
668
|
-
if (value === void 0 || value === null) {
|
|
669
|
-
return "";
|
|
670
|
-
}
|
|
671
|
-
if (typeof value === "string") {
|
|
672
|
-
return formatMessage(
|
|
673
|
-
{ id: value, defaultMessage: value },
|
|
674
|
-
{ field: prefix ? `${prefix}.${key}` : key }
|
|
675
|
-
);
|
|
676
|
-
}
|
|
677
|
-
if (typeof value === "object" && value !== null && "id" in value && "defaultMessage" in value) {
|
|
678
|
-
return formatMessage(
|
|
679
|
-
// @ts-expect-error – TODO: default message will be a string
|
|
680
|
-
{ id: `${value.id}.withField`, defaultMessage: value.defaultMessage },
|
|
681
|
-
{ field: prefix ? `${prefix}.${key}` : key }
|
|
682
|
-
);
|
|
683
|
-
}
|
|
684
|
-
return errorsToString(value, key);
|
|
685
|
-
}).join(" ");
|
|
686
|
-
};
|
|
687
|
-
if (isLoading) {
|
|
688
|
-
return null;
|
|
689
|
-
}
|
|
690
|
-
const errors = validate(entry) ?? {};
|
|
691
|
-
if (action === "publish") {
|
|
692
|
-
if (Object.keys(errors).length > 0) {
|
|
693
|
-
const validationErrorsMessages = errorsToString(errors);
|
|
694
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
695
|
-
/* @__PURE__ */ jsxRuntime.jsx(icons.CrossCircle, { fill: "danger600" }),
|
|
696
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Tooltip, { description: validationErrorsMessages, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
697
|
-
TypographyMaxWidth,
|
|
698
|
-
{
|
|
699
|
-
textColor: "danger600",
|
|
700
|
-
variant: "omega",
|
|
701
|
-
fontWeight: "semiBold",
|
|
702
|
-
ellipsis: true,
|
|
703
|
-
children: validationErrorsMessages
|
|
704
|
-
}
|
|
705
|
-
) })
|
|
706
|
-
] });
|
|
707
|
-
}
|
|
708
|
-
if (status === "draft") {
|
|
709
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
710
|
-
/* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }),
|
|
711
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
|
|
712
|
-
id: "content-releases.pages.ReleaseDetails.entry-validation.ready-to-publish",
|
|
713
|
-
defaultMessage: "Ready to publish"
|
|
714
|
-
}) })
|
|
715
|
-
] });
|
|
716
|
-
}
|
|
717
|
-
if (status === "modified") {
|
|
718
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
719
|
-
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowsCounterClockwise, { fill: "alternative600" }),
|
|
720
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
|
|
721
|
-
id: "content-releases.pages.ReleaseDetails.entry-validation.modified",
|
|
722
|
-
defaultMessage: "Ready to publish changes"
|
|
723
|
-
}) })
|
|
724
|
-
] });
|
|
725
|
-
}
|
|
726
|
-
if (status === "published") {
|
|
727
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
728
|
-
/* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }),
|
|
729
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
|
|
730
|
-
id: "content-releases.pages.ReleaseDetails.entry-validation.already-published",
|
|
731
|
-
defaultMessage: "Already published"
|
|
732
|
-
}) })
|
|
733
|
-
] });
|
|
734
|
-
}
|
|
735
|
-
}
|
|
736
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
737
|
-
/* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }),
|
|
738
|
-
!entry.publishedAt ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "success600", fontWeight: "bold", children: formatMessage({
|
|
739
|
-
id: "content-releases.pages.ReleaseDetails.entry-validation.already-unpublished",
|
|
740
|
-
defaultMessage: "Already unpublished"
|
|
741
|
-
}) }) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
|
|
742
|
-
id: "content-releases.pages.ReleaseDetails.entry-validation.ready-to-unpublish",
|
|
743
|
-
defaultMessage: "Ready to unpublish"
|
|
744
|
-
}) })
|
|
745
|
-
] });
|
|
746
|
-
};
|
|
747
931
|
const ReleaseDetailsLayout = ({
|
|
748
932
|
toggleEditReleaseModal,
|
|
749
933
|
toggleWarningSubmit,
|
|
@@ -762,12 +946,12 @@ const ReleaseDetailsLayout = ({
|
|
|
762
946
|
}
|
|
763
947
|
);
|
|
764
948
|
const [publishRelease, { isLoading: isPublishing }] = index.usePublishReleaseMutation();
|
|
765
|
-
const { toggleNotification } = strapiAdmin.useNotification();
|
|
766
|
-
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
767
|
-
const { allowedActions } = strapiAdmin.useRBAC(index.PERMISSIONS);
|
|
949
|
+
const { toggleNotification } = strapiAdmin$1.useNotification();
|
|
950
|
+
const { formatAPIError } = strapiAdmin$1.useAPIErrorHandler();
|
|
951
|
+
const { allowedActions } = strapiAdmin$1.useRBAC(index.PERMISSIONS);
|
|
768
952
|
const { canUpdate, canDelete, canPublish } = allowedActions;
|
|
769
953
|
const dispatch = useTypedDispatch();
|
|
770
|
-
const { trackUsage } = strapiAdmin.useTracking();
|
|
954
|
+
const { trackUsage } = strapiAdmin$1.useTracking();
|
|
771
955
|
const release = data?.data;
|
|
772
956
|
const handlePublishRelease = (id) => async () => {
|
|
773
957
|
const response = await publishRelease({ id });
|
|
@@ -785,7 +969,7 @@ const ReleaseDetailsLayout = ({
|
|
|
785
969
|
totalPublishedEntries,
|
|
786
970
|
totalUnpublishedEntries
|
|
787
971
|
});
|
|
788
|
-
} else if (strapiAdmin.isFetchError(response.error)) {
|
|
972
|
+
} else if (strapiAdmin$1.isFetchError(response.error)) {
|
|
789
973
|
toggleNotification({
|
|
790
974
|
type: "danger",
|
|
791
975
|
message: formatAPIError(response.error)
|
|
@@ -818,7 +1002,7 @@ const ReleaseDetailsLayout = ({
|
|
|
818
1002
|
return release.createdBy.email;
|
|
819
1003
|
};
|
|
820
1004
|
if (isLoadingDetails) {
|
|
821
|
-
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
1005
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Page.Loading, {});
|
|
822
1006
|
}
|
|
823
1007
|
if (isBaseQueryError(error) && "code" in error || !release) {
|
|
824
1008
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -868,14 +1052,14 @@ const ReleaseDetailsLayout = ({
|
|
|
868
1052
|
) : "";
|
|
869
1053
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { "aria-busy": isLoadingDetails, children: [
|
|
870
1054
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
871
|
-
strapiAdmin.Layouts.Header,
|
|
1055
|
+
strapiAdmin$1.Layouts.Header,
|
|
872
1056
|
{
|
|
873
1057
|
title: release.name,
|
|
874
1058
|
subtitle: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, lineHeight: 6, children: [
|
|
875
1059
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : "") }),
|
|
876
1060
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { ...getBadgeProps(release.status), children: release.status })
|
|
877
1061
|
] }),
|
|
878
|
-
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {}),
|
|
1062
|
+
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.BackButton, { fallback: ".." }),
|
|
879
1063
|
primaryAction: !release.releasedAt && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
880
1064
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
881
1065
|
SimpleMenuButton,
|
|
@@ -993,9 +1177,9 @@ const getGroupByOptionLabel = (value) => {
|
|
|
993
1177
|
};
|
|
994
1178
|
const ReleaseDetailsBody = ({ releaseId }) => {
|
|
995
1179
|
const { formatMessage } = reactIntl.useIntl();
|
|
996
|
-
const [{ query }, setQuery] = strapiAdmin.useQueryParams();
|
|
997
|
-
const { toggleNotification } = strapiAdmin.useNotification();
|
|
998
|
-
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
1180
|
+
const [{ query }, setQuery] = strapiAdmin$1.useQueryParams();
|
|
1181
|
+
const { toggleNotification } = strapiAdmin$1.useNotification();
|
|
1182
|
+
const { formatAPIError } = strapiAdmin$1.useAPIErrorHandler();
|
|
999
1183
|
const {
|
|
1000
1184
|
data: releaseData,
|
|
1001
1185
|
isLoading: isReleaseLoading,
|
|
@@ -1003,8 +1187,8 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1003
1187
|
} = index.useGetReleaseQuery({ id: releaseId });
|
|
1004
1188
|
const {
|
|
1005
1189
|
allowedActions: { canUpdate }
|
|
1006
|
-
} = strapiAdmin.useRBAC(index.PERMISSIONS);
|
|
1007
|
-
const runHookWaterfall = strapiAdmin.useStrapiApp("ReleaseDetailsPage", (state) => state.runHookWaterfall);
|
|
1190
|
+
} = strapiAdmin$1.useRBAC(index.PERMISSIONS);
|
|
1191
|
+
const runHookWaterfall = strapiAdmin$1.useStrapiApp("ReleaseDetailsPage", (state) => state.runHookWaterfall);
|
|
1008
1192
|
const { displayedHeaders, hasI18nEnabled } = runHookWaterfall("ContentReleases/pages/ReleaseDetails/add-locale-in-releases", {
|
|
1009
1193
|
displayedHeaders: [
|
|
1010
1194
|
{
|
|
@@ -1045,7 +1229,7 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1045
1229
|
// We are passing the action path to found the position in the cache of the action for optimistic updates
|
|
1046
1230
|
});
|
|
1047
1231
|
if ("error" in response) {
|
|
1048
|
-
if (strapiAdmin.isFetchError(response.error)) {
|
|
1232
|
+
if (strapiAdmin$1.isFetchError(response.error)) {
|
|
1049
1233
|
toggleNotification({
|
|
1050
1234
|
type: "danger",
|
|
1051
1235
|
message: formatAPIError(response.error)
|
|
@@ -1059,12 +1243,12 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1059
1243
|
}
|
|
1060
1244
|
};
|
|
1061
1245
|
if (isLoading || isReleaseLoading) {
|
|
1062
|
-
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
1246
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Page.Loading, {});
|
|
1063
1247
|
}
|
|
1064
1248
|
const releaseActions = data?.data;
|
|
1065
1249
|
const releaseMeta = data?.meta;
|
|
1066
1250
|
const contentTypes = releaseMeta?.contentTypes || {};
|
|
1067
|
-
|
|
1251
|
+
releaseMeta?.components || {};
|
|
1068
1252
|
if (isBaseQueryError(releaseError) || !release) {
|
|
1069
1253
|
const errorsArray = [];
|
|
1070
1254
|
if (releaseError && "code" in releaseError) {
|
|
@@ -1088,10 +1272,10 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1088
1272
|
);
|
|
1089
1273
|
}
|
|
1090
1274
|
if (isError || !releaseActions) {
|
|
1091
|
-
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
|
|
1275
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Page.Error, {});
|
|
1092
1276
|
}
|
|
1093
1277
|
if (Object.keys(releaseActions).length === 0) {
|
|
1094
|
-
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1278
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1095
1279
|
designSystem.EmptyStateLayout,
|
|
1096
1280
|
{
|
|
1097
1281
|
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1148,7 +1332,7 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1148
1332
|
] : []
|
|
1149
1333
|
];
|
|
1150
1334
|
const options = hasI18nEnabled ? GROUP_BY_OPTIONS : GROUP_BY_OPTIONS_NO_LOCALE;
|
|
1151
|
-
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, direction: "column", alignItems: "stretch", children: [
|
|
1335
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, direction: "column", alignItems: "stretch", children: [
|
|
1152
1336
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1153
1337
|
designSystem.SingleSelect,
|
|
1154
1338
|
{
|
|
@@ -1171,7 +1355,7 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1171
1355
|
Object.keys(releaseActions).map((key) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 4, direction: "column", alignItems: "stretch", children: [
|
|
1172
1356
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { role: "separator", "aria-label": key, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { children: key }) }),
|
|
1173
1357
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1174
|
-
strapiAdmin.Table.Root,
|
|
1358
|
+
strapiAdmin$1.Table.Root,
|
|
1175
1359
|
{
|
|
1176
1360
|
rows: releaseActions[key].map((item) => ({
|
|
1177
1361
|
...item,
|
|
@@ -1179,10 +1363,10 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1179
1363
|
})),
|
|
1180
1364
|
headers,
|
|
1181
1365
|
isLoading: isLoading || isFetching,
|
|
1182
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Table.Content, { children: [
|
|
1183
|
-
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Head, { children: headers.map(({ label, name }) => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.HeaderCell, { label: formatMessage(label), name }, name)) }),
|
|
1184
|
-
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Loading, {}),
|
|
1185
|
-
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Body, { children: releaseActions[key].map(
|
|
1366
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin$1.Table.Content, { children: [
|
|
1367
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Table.Head, { children: headers.map(({ label, name }) => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Table.HeaderCell, { label: formatMessage(label), name }, name)) }),
|
|
1368
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Table.Loading, {}),
|
|
1369
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Table.Body, { children: releaseActions[key].map(
|
|
1186
1370
|
({ id, contentType, locale, type, entry, status }, actionIndex) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
|
|
1187
1371
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "25%", maxWidth: "200px", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, children: `${contentType.mainFieldValue || entry.id}` }) }),
|
|
1188
1372
|
hasI18nEnabled && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "10%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: `${locale?.name ? locale.name : "-"}` }) }),
|
|
@@ -1207,11 +1391,10 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1207
1391
|
) }),
|
|
1208
1392
|
!release.releasedAt && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1209
1393
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "20%", minWidth: "200px", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1210
|
-
|
|
1394
|
+
EntryValidationPopover,
|
|
1211
1395
|
{
|
|
1212
1396
|
action: type,
|
|
1213
1397
|
schema: contentTypes?.[contentType.uid],
|
|
1214
|
-
components,
|
|
1215
1398
|
entry,
|
|
1216
1399
|
status
|
|
1217
1400
|
}
|
|
@@ -1241,13 +1424,13 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1241
1424
|
)
|
|
1242
1425
|
] }, `releases-group-${key}`)),
|
|
1243
1426
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1244
|
-
strapiAdmin.Pagination.Root,
|
|
1427
|
+
strapiAdmin$1.Pagination.Root,
|
|
1245
1428
|
{
|
|
1246
1429
|
...releaseMeta?.pagination,
|
|
1247
1430
|
defaultPageSize: releaseMeta?.pagination?.pageSize,
|
|
1248
1431
|
children: [
|
|
1249
|
-
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, {}),
|
|
1250
|
-
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
|
|
1432
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Pagination.PageSize, {}),
|
|
1433
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Pagination.Links, {})
|
|
1251
1434
|
]
|
|
1252
1435
|
}
|
|
1253
1436
|
)
|
|
@@ -1256,8 +1439,8 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1256
1439
|
const ReleaseDetailsPage = () => {
|
|
1257
1440
|
const { formatMessage } = reactIntl.useIntl();
|
|
1258
1441
|
const { releaseId } = reactRouterDom.useParams();
|
|
1259
|
-
const { toggleNotification } = strapiAdmin.useNotification();
|
|
1260
|
-
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
1442
|
+
const { toggleNotification } = strapiAdmin$1.useNotification();
|
|
1443
|
+
const { formatAPIError } = strapiAdmin$1.useAPIErrorHandler();
|
|
1261
1444
|
const navigate = reactRouterDom.useNavigate();
|
|
1262
1445
|
const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
|
|
1263
1446
|
const [showWarningSubmit, setWarningSubmit] = React__namespace.useState(false);
|
|
@@ -1294,7 +1477,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1294
1477
|
{
|
|
1295
1478
|
toggleEditReleaseModal,
|
|
1296
1479
|
toggleWarningSubmit,
|
|
1297
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {})
|
|
1480
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Page.Loading, {})
|
|
1298
1481
|
}
|
|
1299
1482
|
);
|
|
1300
1483
|
}
|
|
@@ -1323,7 +1506,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1323
1506
|
})
|
|
1324
1507
|
});
|
|
1325
1508
|
toggleEditReleaseModal();
|
|
1326
|
-
} else if (strapiAdmin.isFetchError(response.error)) {
|
|
1509
|
+
} else if (strapiAdmin$1.isFetchError(response.error)) {
|
|
1327
1510
|
toggleNotification({
|
|
1328
1511
|
type: "danger",
|
|
1329
1512
|
message: formatAPIError(response.error)
|
|
@@ -1341,7 +1524,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1341
1524
|
});
|
|
1342
1525
|
if ("data" in response) {
|
|
1343
1526
|
navigate("..");
|
|
1344
|
-
} else if (strapiAdmin.isFetchError(response.error)) {
|
|
1527
|
+
} else if (strapiAdmin$1.isFetchError(response.error)) {
|
|
1345
1528
|
toggleNotification({
|
|
1346
1529
|
type: "danger",
|
|
1347
1530
|
message: formatAPIError(response.error)
|
|
@@ -1377,7 +1560,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1377
1560
|
}
|
|
1378
1561
|
}
|
|
1379
1562
|
),
|
|
1380
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Dialog.Root, { open: showWarningSubmit, onOpenChange: toggleWarningSubmit, children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.ConfirmDialog, { onConfirm: handleDeleteRelease, children: formatMessage({
|
|
1563
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Dialog.Root, { open: showWarningSubmit, onOpenChange: toggleWarningSubmit, children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.ConfirmDialog, { onConfirm: handleDeleteRelease, children: formatMessage({
|
|
1381
1564
|
id: "content-releases.dialog.confirmation-message",
|
|
1382
1565
|
defaultMessage: "Are you sure you want to delete this release?"
|
|
1383
1566
|
}) }) })
|
|
@@ -1386,10 +1569,10 @@ const ReleaseDetailsPage = () => {
|
|
|
1386
1569
|
);
|
|
1387
1570
|
};
|
|
1388
1571
|
const App = () => {
|
|
1389
|
-
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions: index.PERMISSIONS.main, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Routes, { children: [
|
|
1572
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin$1.Page.Protect, { permissions: index.PERMISSIONS.main, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Routes, { children: [
|
|
1390
1573
|
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { index: true, element: /* @__PURE__ */ jsxRuntime.jsx(ReleasesPage, {}) }),
|
|
1391
1574
|
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: ":releaseId", element: /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsPage, {}) })
|
|
1392
1575
|
] }) });
|
|
1393
1576
|
};
|
|
1394
1577
|
exports.App = App;
|
|
1395
|
-
//# sourceMappingURL=App-
|
|
1578
|
+
//# sourceMappingURL=App-DyjVixKE.js.map
|