@strapi/content-releases 0.0.0-experimental.d8a676a242377cee820b59b21a05d47290d9ac73 → 0.0.0-experimental.e3e48deb89bd0a1b6cc69b698696566fa7854a95
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-bpzO2Ljh.mjs → App-PQlYzNfb.mjs} +181 -167
- package/dist/_chunks/App-PQlYzNfb.mjs.map +1 -0
- package/dist/_chunks/{App-p8aKBitd.js → App-lzeJz92X.js} +179 -165
- package/dist/_chunks/App-lzeJz92X.js.map +1 -0
- package/dist/_chunks/{index-AECgcaDa.mjs → index--4AgLDzb.mjs} +20 -26
- package/dist/_chunks/index--4AgLDzb.mjs.map +1 -0
- package/dist/_chunks/{index-fP3qoWZ4.js → index-Nf1JfI-m.js} +16 -22
- package/dist/_chunks/index-Nf1JfI-m.js.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +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 +92 -171
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +93 -171
- 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 +18 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -0
- package/dist/server/src/controllers/release-action.d.ts +9 -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 +3 -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 +2092 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/migrations/index.d.ts +10 -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 +14 -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 +105 -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 +14 -21
- package/dist/_chunks/App-bpzO2Ljh.mjs.map +0 -1
- package/dist/_chunks/App-p8aKBitd.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-Nf1JfI-m.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");
|
|
@@ -43,6 +43,36 @@ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
|
|
|
43
43
|
const format__default = /* @__PURE__ */ _interopDefault(format);
|
|
44
44
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
45
45
|
const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
|
|
46
|
+
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
|
47
|
+
const RelativeTime = React__namespace.forwardRef(
|
|
48
|
+
({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {
|
|
49
|
+
const { formatRelativeTime, formatDate, formatTime } = reactIntl.useIntl();
|
|
50
|
+
const interval = dateFns.intervalToDuration({
|
|
51
|
+
start: timestamp,
|
|
52
|
+
end: Date.now()
|
|
53
|
+
// see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.
|
|
54
|
+
});
|
|
55
|
+
const unit = intervals.find((intervalUnit) => {
|
|
56
|
+
return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
|
|
57
|
+
});
|
|
58
|
+
const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
|
|
59
|
+
const customInterval = customIntervals.find(
|
|
60
|
+
(custom) => interval[custom.unit] < custom.threshold
|
|
61
|
+
);
|
|
62
|
+
const displayText = customInterval ? customInterval.text : formatRelativeTime(relativeTime, unit, { numeric: "auto" });
|
|
63
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
64
|
+
"time",
|
|
65
|
+
{
|
|
66
|
+
ref: forwardedRef,
|
|
67
|
+
dateTime: timestamp.toISOString(),
|
|
68
|
+
role: "time",
|
|
69
|
+
title: `${formatDate(timestamp)} ${formatTime(timestamp)}`,
|
|
70
|
+
...restProps,
|
|
71
|
+
children: displayText
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
);
|
|
46
76
|
const RELEASE_SCHEMA = yup__namespace.object().shape({
|
|
47
77
|
name: yup__namespace.string().trim().required(),
|
|
48
78
|
scheduledAt: yup__namespace.string().nullable(),
|
|
@@ -81,12 +111,12 @@ const ReleaseModal = ({
|
|
|
81
111
|
if (!date || !time || !timezone)
|
|
82
112
|
return null;
|
|
83
113
|
const formattedDate = dateFns.parse(time, "HH:mm", new Date(date));
|
|
84
|
-
const timezoneWithoutOffset = timezone.split("
|
|
114
|
+
const timezoneWithoutOffset = timezone.split("_")[1];
|
|
85
115
|
return dateFnsTz.zonedTimeToUtc(formattedDate, timezoneWithoutOffset);
|
|
86
116
|
};
|
|
87
117
|
const getTimezoneWithOffset = () => {
|
|
88
118
|
const currentTimezone = timezoneList.find(
|
|
89
|
-
(timezone) => timezone.value.split("
|
|
119
|
+
(timezone) => timezone.value.split("_")[1] === initialValues.timezone
|
|
90
120
|
);
|
|
91
121
|
return currentTimezone?.value || systemTimezone.value;
|
|
92
122
|
};
|
|
@@ -104,7 +134,7 @@ const ReleaseModal = ({
|
|
|
104
134
|
onSubmit: (values) => {
|
|
105
135
|
handleSubmit({
|
|
106
136
|
...values,
|
|
107
|
-
timezone: values.timezone ? values.timezone.split("
|
|
137
|
+
timezone: values.timezone ? values.timezone.split("_")[1] : null,
|
|
108
138
|
scheduledAt: values.isScheduled ? getScheduledTimestamp(values) : null
|
|
109
139
|
});
|
|
110
140
|
},
|
|
@@ -187,8 +217,7 @@ const ReleaseModal = ({
|
|
|
187
217
|
setFieldValue("date", null);
|
|
188
218
|
},
|
|
189
219
|
selectedDate: values.date || void 0,
|
|
190
|
-
required: true
|
|
191
|
-
minDate: dateFnsTz.utcToZonedTime(/* @__PURE__ */ new Date(), values.timezone.split("&")[1])
|
|
220
|
+
required: true
|
|
192
221
|
}
|
|
193
222
|
) }),
|
|
194
223
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -240,10 +269,10 @@ const ReleaseModal = ({
|
|
|
240
269
|
const getTimezones = (selectedDate) => {
|
|
241
270
|
const timezoneList = Intl.supportedValuesOf("timeZone").map((timezone) => {
|
|
242
271
|
const utcOffset = index.getTimezoneOffset(timezone, selectedDate);
|
|
243
|
-
return { offset: utcOffset, value: `${utcOffset}
|
|
272
|
+
return { offset: utcOffset, value: `${utcOffset}_${timezone}` };
|
|
244
273
|
});
|
|
245
274
|
const systemTimezone = timezoneList.find(
|
|
246
|
-
(timezone) => timezone.value.split("
|
|
275
|
+
(timezone) => timezone.value.split("_")[1] === Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
247
276
|
);
|
|
248
277
|
return { timezoneList, systemTimezone };
|
|
249
278
|
};
|
|
@@ -255,7 +284,7 @@ const TimezoneComponent = ({ timezoneOptions }) => {
|
|
|
255
284
|
if (values.date) {
|
|
256
285
|
const { timezoneList: timezoneList2 } = getTimezones(new Date(values.date));
|
|
257
286
|
setTimezoneList(timezoneList2);
|
|
258
|
-
const updatedTimezone = values.timezone && timezoneList2.find((tz) => tz.value.split("
|
|
287
|
+
const updatedTimezone = values.timezone && timezoneList2.find((tz) => tz.value.split("_")[1] === values.timezone.split("_")[1]);
|
|
259
288
|
if (updatedTimezone) {
|
|
260
289
|
setFieldValue("timezone", updatedTimezone.value);
|
|
261
290
|
}
|
|
@@ -268,10 +297,9 @@ const TimezoneComponent = ({ timezoneOptions }) => {
|
|
|
268
297
|
id: "content-releases.modal.form.input.label.timezone",
|
|
269
298
|
defaultMessage: "Timezone"
|
|
270
299
|
}),
|
|
271
|
-
autocomplete: { type: "list", filter: "contains" },
|
|
272
300
|
name: "timezone",
|
|
273
301
|
value: values.timezone || void 0,
|
|
274
|
-
textValue: values.timezone ? values.timezone.replace(
|
|
302
|
+
textValue: values.timezone ? values.timezone.replace("_", " ") : void 0,
|
|
275
303
|
onChange: (timezone) => {
|
|
276
304
|
setFieldValue("timezone", timezone);
|
|
277
305
|
},
|
|
@@ -283,14 +311,14 @@ const TimezoneComponent = ({ timezoneOptions }) => {
|
|
|
283
311
|
},
|
|
284
312
|
error: errors.timezone,
|
|
285
313
|
required: true,
|
|
286
|
-
children: timezoneList.map((timezone) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.ComboboxOption, { value: timezone.value, children: timezone.value.replace(
|
|
314
|
+
children: timezoneList.map((timezone) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.ComboboxOption, { value: timezone.value, children: timezone.value.replace("_", " ") }, timezone.value))
|
|
287
315
|
}
|
|
288
316
|
);
|
|
289
317
|
};
|
|
290
318
|
const LinkCard = styled__default.default(v2.Link)`
|
|
291
319
|
display: block;
|
|
292
320
|
`;
|
|
293
|
-
const CapitalizeRelativeTime = styled__default.default(
|
|
321
|
+
const CapitalizeRelativeTime = styled__default.default(RelativeTime)`
|
|
294
322
|
text-transform: capitalize;
|
|
295
323
|
`;
|
|
296
324
|
const getBadgeProps = (status) => {
|
|
@@ -322,7 +350,7 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
|
322
350
|
const { formatMessage } = reactIntl.useIntl();
|
|
323
351
|
const IsSchedulingEnabled = window.strapi.future.isEnabled("contentReleasesScheduling");
|
|
324
352
|
if (isError) {
|
|
325
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
353
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
|
|
326
354
|
}
|
|
327
355
|
if (releases?.length === 0) {
|
|
328
356
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -396,7 +424,7 @@ const ReleasesPage = () => {
|
|
|
396
424
|
const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
|
|
397
425
|
const toggleNotification = helperPlugin.useNotification();
|
|
398
426
|
const { formatMessage } = reactIntl.useIntl();
|
|
399
|
-
const
|
|
427
|
+
const navigate = reactRouterDom.useNavigate();
|
|
400
428
|
const { formatAPIError } = helperPlugin.useAPIErrorHandler();
|
|
401
429
|
const [{ query }, setQuery] = helperPlugin.useQueryParams();
|
|
402
430
|
const response = index.useGetReleasesQuery(query);
|
|
@@ -420,9 +448,9 @@ const ReleasesPage = () => {
|
|
|
420
448
|
defaultMessage: "Please try again or open another release."
|
|
421
449
|
})
|
|
422
450
|
});
|
|
423
|
-
|
|
451
|
+
navigate("", { replace: true, state: null });
|
|
424
452
|
}
|
|
425
|
-
}, [formatMessage, location?.state?.errors,
|
|
453
|
+
}, [formatMessage, location?.state?.errors, navigate, toggleNotification]);
|
|
426
454
|
React__namespace.useEffect(() => {
|
|
427
455
|
if (tabRef.current) {
|
|
428
456
|
tabRef.current._handlers.setSelectedTabIndex(activeTabIndex);
|
|
@@ -432,7 +460,7 @@ const ReleasesPage = () => {
|
|
|
432
460
|
setReleaseModalShown((prev) => !prev);
|
|
433
461
|
};
|
|
434
462
|
if (isLoading) {
|
|
435
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
463
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
436
464
|
}
|
|
437
465
|
const totalPendingReleases = isSuccess && response.currentData?.meta?.pendingReleasesCount || 0;
|
|
438
466
|
const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;
|
|
@@ -463,7 +491,7 @@ const ReleasesPage = () => {
|
|
|
463
491
|
})
|
|
464
492
|
});
|
|
465
493
|
trackUsage("didCreateRelease");
|
|
466
|
-
|
|
494
|
+
navigate(response2.data.data.id.toString());
|
|
467
495
|
} else if (index.isAxiosError(response2.error)) {
|
|
468
496
|
toggleNotification({
|
|
469
497
|
type: "warning",
|
|
@@ -578,23 +606,17 @@ const ReleasesPage = () => {
|
|
|
578
606
|
]
|
|
579
607
|
}
|
|
580
608
|
),
|
|
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
|
|
609
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
610
|
+
strapiAdmin.Pagination.Root,
|
|
611
|
+
{
|
|
612
|
+
...response?.currentData?.meta?.pagination,
|
|
613
|
+
defaultPageSize: response?.currentData?.meta?.pagination?.pageSize,
|
|
614
|
+
children: [
|
|
615
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, { options: ["8", "16", "32", "64"] }),
|
|
616
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
|
|
617
|
+
]
|
|
618
|
+
}
|
|
619
|
+
)
|
|
598
620
|
] }) }),
|
|
599
621
|
releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
|
|
600
622
|
ReleaseModal,
|
|
@@ -642,14 +664,18 @@ const TrashIcon = styled__default.default(icons.Trash)`
|
|
|
642
664
|
const TypographyMaxWidth = styled__default.default(designSystem.Typography)`
|
|
643
665
|
max-width: 300px;
|
|
644
666
|
`;
|
|
645
|
-
const EntryValidationText = ({ action, schema,
|
|
667
|
+
const EntryValidationText = ({ action, schema, entry }) => {
|
|
646
668
|
const { formatMessage } = reactIntl.useIntl();
|
|
647
|
-
const { validate } = strapiAdmin.unstable_useDocument(
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
669
|
+
const { validate } = strapiAdmin.unstable_useDocument(
|
|
670
|
+
{
|
|
671
|
+
collectionType: schema?.kind ?? "",
|
|
672
|
+
model: schema?.uid ?? ""
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
skip: !schema
|
|
676
|
+
}
|
|
677
|
+
);
|
|
678
|
+
const errors = validate(entry) ?? {};
|
|
653
679
|
if (Object.keys(errors).length > 0) {
|
|
654
680
|
const validationErrorsMessages = Object.entries(errors).map(
|
|
655
681
|
([key, value]) => formatMessage(
|
|
@@ -697,7 +723,12 @@ const ReleaseDetailsLayout = ({
|
|
|
697
723
|
isLoading: isLoadingDetails,
|
|
698
724
|
isError,
|
|
699
725
|
error
|
|
700
|
-
} = index.useGetReleaseQuery(
|
|
726
|
+
} = index.useGetReleaseQuery(
|
|
727
|
+
{ id: releaseId },
|
|
728
|
+
{
|
|
729
|
+
skip: !releaseId
|
|
730
|
+
}
|
|
731
|
+
);
|
|
701
732
|
const [publishRelease, { isLoading: isPublishing }] = index.usePublishReleaseMutation();
|
|
702
733
|
const toggleNotification = helperPlugin.useNotification();
|
|
703
734
|
const { formatAPIError } = helperPlugin.useAPIErrorHandler();
|
|
@@ -707,8 +738,8 @@ const ReleaseDetailsLayout = ({
|
|
|
707
738
|
const dispatch = index.useTypedDispatch();
|
|
708
739
|
const { trackUsage } = helperPlugin.useTracking();
|
|
709
740
|
const release = data?.data;
|
|
710
|
-
const handlePublishRelease = async () => {
|
|
711
|
-
const response = await publishRelease({ id
|
|
741
|
+
const handlePublishRelease = (id) => async () => {
|
|
742
|
+
const response = await publishRelease({ id });
|
|
712
743
|
if ("data" in response) {
|
|
713
744
|
toggleNotification({
|
|
714
745
|
type: "success",
|
|
@@ -751,21 +782,19 @@ const ReleaseDetailsLayout = ({
|
|
|
751
782
|
return release.createdBy.email;
|
|
752
783
|
};
|
|
753
784
|
if (isLoadingDetails) {
|
|
754
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
785
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
755
786
|
}
|
|
756
787
|
if (isError || !release) {
|
|
757
788
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
758
|
-
reactRouterDom.
|
|
789
|
+
reactRouterDom.Navigate,
|
|
759
790
|
{
|
|
760
|
-
to:
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
]
|
|
768
|
-
}
|
|
791
|
+
to: "..",
|
|
792
|
+
state: {
|
|
793
|
+
errors: [
|
|
794
|
+
{
|
|
795
|
+
code: error?.code
|
|
796
|
+
}
|
|
797
|
+
]
|
|
769
798
|
}
|
|
770
799
|
}
|
|
771
800
|
);
|
|
@@ -810,10 +839,7 @@ const ReleaseDetailsLayout = ({
|
|
|
810
839
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (IsSchedulingEnabled && isScheduled ? ` - ${scheduledText}` : "") }),
|
|
811
840
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { ...getBadgeProps(release.status), children: release.status })
|
|
812
841
|
] }),
|
|
813
|
-
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(
|
|
814
|
-
id: "global.back",
|
|
815
|
-
defaultMessage: "Back"
|
|
816
|
-
}) }),
|
|
842
|
+
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {}),
|
|
817
843
|
primaryAction: !release.releasedAt && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
818
844
|
/* @__PURE__ */ jsxRuntime.jsxs(v2.Menu.Root, { children: [
|
|
819
845
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -879,7 +905,7 @@ const ReleaseDetailsLayout = ({
|
|
|
879
905
|
defaultMessage: "Created"
|
|
880
906
|
}) }),
|
|
881
907
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", color: "neutral300", children: [
|
|
882
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
908
|
+
/* @__PURE__ */ jsxRuntime.jsx(RelativeTime, { timestamp: new Date(release.createdAt) }),
|
|
883
909
|
formatMessage(
|
|
884
910
|
{
|
|
885
911
|
id: "content-releases.header.actions.created.description",
|
|
@@ -902,7 +928,7 @@ const ReleaseDetailsLayout = ({
|
|
|
902
928
|
{
|
|
903
929
|
size: "S",
|
|
904
930
|
variant: "default",
|
|
905
|
-
onClick: handlePublishRelease,
|
|
931
|
+
onClick: handlePublishRelease(release.id.toString()),
|
|
906
932
|
loading: isPublishing,
|
|
907
933
|
disabled: release.actions.meta.count === 0,
|
|
908
934
|
children: formatMessage({
|
|
@@ -936,9 +962,8 @@ const getGroupByOptionLabel = (value) => {
|
|
|
936
962
|
defaultMessage: "Content-Types"
|
|
937
963
|
};
|
|
938
964
|
};
|
|
939
|
-
const ReleaseDetailsBody = () => {
|
|
965
|
+
const ReleaseDetailsBody = ({ releaseId }) => {
|
|
940
966
|
const { formatMessage } = reactIntl.useIntl();
|
|
941
|
-
const { releaseId } = reactRouterDom.useParams();
|
|
942
967
|
const [{ query }, setQuery] = helperPlugin.useQueryParams();
|
|
943
968
|
const toggleNotification = helperPlugin.useNotification();
|
|
944
969
|
const { formatAPIError } = helperPlugin.useAPIErrorHandler();
|
|
@@ -993,7 +1018,7 @@ const ReleaseDetailsBody = () => {
|
|
|
993
1018
|
}
|
|
994
1019
|
};
|
|
995
1020
|
if (isLoading || isReleaseLoading) {
|
|
996
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1021
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
997
1022
|
}
|
|
998
1023
|
const releaseActions = data?.data;
|
|
999
1024
|
const releaseMeta = data?.meta;
|
|
@@ -1012,28 +1037,22 @@ const ReleaseDetailsBody = () => {
|
|
|
1012
1037
|
});
|
|
1013
1038
|
}
|
|
1014
1039
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1015
|
-
reactRouterDom.
|
|
1040
|
+
reactRouterDom.Navigate,
|
|
1016
1041
|
{
|
|
1017
|
-
to:
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
errors: errorsArray
|
|
1021
|
-
}
|
|
1042
|
+
to: "..",
|
|
1043
|
+
state: {
|
|
1044
|
+
errors: errorsArray
|
|
1022
1045
|
}
|
|
1023
1046
|
}
|
|
1024
1047
|
);
|
|
1025
1048
|
}
|
|
1026
1049
|
if (isError || !releaseActions) {
|
|
1027
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1050
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
|
|
1028
1051
|
}
|
|
1029
1052
|
if (Object.keys(releaseActions).length === 0) {
|
|
1030
1053
|
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1031
|
-
|
|
1054
|
+
designSystem.EmptyStateLayout,
|
|
1032
1055
|
{
|
|
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
1056
|
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1038
1057
|
v2.LinkButton,
|
|
1039
1058
|
{
|
|
@@ -1048,10 +1067,54 @@ const ReleaseDetailsBody = () => {
|
|
|
1048
1067
|
defaultMessage: "Open the Content Manager"
|
|
1049
1068
|
})
|
|
1050
1069
|
}
|
|
1051
|
-
)
|
|
1070
|
+
),
|
|
1071
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.EmptyDocuments, { width: "10rem" }),
|
|
1072
|
+
content: formatMessage({
|
|
1073
|
+
id: "content-releases.pages.Details.tab.emptyEntries",
|
|
1074
|
+
defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
|
|
1075
|
+
})
|
|
1052
1076
|
}
|
|
1053
1077
|
) });
|
|
1054
1078
|
}
|
|
1079
|
+
const headers = [
|
|
1080
|
+
{
|
|
1081
|
+
label: formatMessage({
|
|
1082
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.name",
|
|
1083
|
+
defaultMessage: "name"
|
|
1084
|
+
}),
|
|
1085
|
+
name: "name"
|
|
1086
|
+
},
|
|
1087
|
+
{
|
|
1088
|
+
label: formatMessage({
|
|
1089
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.locale",
|
|
1090
|
+
defaultMessage: "locale"
|
|
1091
|
+
}),
|
|
1092
|
+
name: "locale"
|
|
1093
|
+
},
|
|
1094
|
+
{
|
|
1095
|
+
label: formatMessage({
|
|
1096
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
|
|
1097
|
+
defaultMessage: "content-type"
|
|
1098
|
+
}),
|
|
1099
|
+
name: "content-type"
|
|
1100
|
+
},
|
|
1101
|
+
{
|
|
1102
|
+
label: formatMessage({
|
|
1103
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.action",
|
|
1104
|
+
defaultMessage: "action"
|
|
1105
|
+
}),
|
|
1106
|
+
name: "action"
|
|
1107
|
+
},
|
|
1108
|
+
...!release.releasedAt ? [
|
|
1109
|
+
{
|
|
1110
|
+
label: formatMessage({
|
|
1111
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.status",
|
|
1112
|
+
defaultMessage: "status"
|
|
1113
|
+
}),
|
|
1114
|
+
name: "status"
|
|
1115
|
+
}
|
|
1116
|
+
] : []
|
|
1117
|
+
];
|
|
1055
1118
|
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, direction: "column", alignItems: "stretch", children: [
|
|
1056
1119
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1057
1120
|
designSystem.SingleSelect,
|
|
@@ -1077,75 +1140,18 @@ const ReleaseDetailsBody = () => {
|
|
|
1077
1140
|
Object.keys(releaseActions).map((key) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 4, direction: "column", alignItems: "stretch", children: [
|
|
1078
1141
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { role: "separator", "aria-label": key, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { children: key }) }),
|
|
1079
1142
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1080
|
-
|
|
1143
|
+
strapiAdmin.Table.Root,
|
|
1081
1144
|
{
|
|
1082
1145
|
rows: releaseActions[key].map((item) => ({
|
|
1083
1146
|
...item,
|
|
1084
1147
|
id: Number(item.entry.id)
|
|
1085
1148
|
})),
|
|
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(
|
|
1149
|
+
headers,
|
|
1150
|
+
isLoading: isLoading || isFetching,
|
|
1151
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Table.Content, { children: [
|
|
1152
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Head, { children: headers.map((header) => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.HeaderCell, { ...header }, header.name)) }),
|
|
1153
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Loading, {}),
|
|
1154
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Body, { children: releaseActions[key].map(
|
|
1149
1155
|
({ id, contentType, locale, type, entry }, actionIndex) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
|
|
1150
1156
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "25%", maxWidth: "200px", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, children: `${contentType.mainFieldValue || entry.id}` }) }),
|
|
1151
1157
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "10%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: `${locale?.name ? locale.name : "-"}` }) }),
|
|
@@ -1202,17 +1208,17 @@ const ReleaseDetailsBody = () => {
|
|
|
1202
1208
|
}
|
|
1203
1209
|
)
|
|
1204
1210
|
] }, `releases-group-${key}`)),
|
|
1205
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
}
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1211
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1212
|
+
strapiAdmin.Pagination.Root,
|
|
1213
|
+
{
|
|
1214
|
+
...releaseMeta?.pagination,
|
|
1215
|
+
defaultPageSize: releaseMeta?.pagination?.pageSize,
|
|
1216
|
+
children: [
|
|
1217
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, {}),
|
|
1218
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
|
|
1219
|
+
]
|
|
1220
|
+
}
|
|
1221
|
+
)
|
|
1216
1222
|
] }) });
|
|
1217
1223
|
};
|
|
1218
1224
|
const ReleaseDetailsPage = () => {
|
|
@@ -1220,14 +1226,19 @@ const ReleaseDetailsPage = () => {
|
|
|
1220
1226
|
const { releaseId } = reactRouterDom.useParams();
|
|
1221
1227
|
const toggleNotification = helperPlugin.useNotification();
|
|
1222
1228
|
const { formatAPIError } = helperPlugin.useAPIErrorHandler();
|
|
1223
|
-
const
|
|
1229
|
+
const navigate = reactRouterDom.useNavigate();
|
|
1224
1230
|
const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
|
|
1225
1231
|
const [showWarningSubmit, setWarningSubmit] = React__namespace.useState(false);
|
|
1226
1232
|
const {
|
|
1227
1233
|
isLoading: isLoadingDetails,
|
|
1228
1234
|
data,
|
|
1229
1235
|
isSuccess: isSuccessDetails
|
|
1230
|
-
} = index.useGetReleaseQuery(
|
|
1236
|
+
} = index.useGetReleaseQuery(
|
|
1237
|
+
{ id: releaseId },
|
|
1238
|
+
{
|
|
1239
|
+
skip: !releaseId
|
|
1240
|
+
}
|
|
1241
|
+
);
|
|
1231
1242
|
const [updateRelease, { isLoading: isSubmittingForm }] = index.useUpdateReleaseMutation();
|
|
1232
1243
|
const [deleteRelease, { isLoading: isDeletingRelease }] = index.useDeleteReleaseMutation();
|
|
1233
1244
|
const toggleEditReleaseModal = () => {
|
|
@@ -1240,10 +1251,13 @@ const ReleaseDetailsPage = () => {
|
|
|
1240
1251
|
{
|
|
1241
1252
|
toggleEditReleaseModal,
|
|
1242
1253
|
toggleWarningSubmit,
|
|
1243
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1254
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {})
|
|
1244
1255
|
}
|
|
1245
1256
|
);
|
|
1246
1257
|
}
|
|
1258
|
+
if (!releaseId) {
|
|
1259
|
+
return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: ".." });
|
|
1260
|
+
}
|
|
1247
1261
|
const releaseData = isSuccessDetails && data?.data || null;
|
|
1248
1262
|
const title = releaseData?.name || "";
|
|
1249
1263
|
const timezone = releaseData?.timezone ?? null;
|
|
@@ -1283,7 +1297,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1283
1297
|
id: releaseId
|
|
1284
1298
|
});
|
|
1285
1299
|
if ("data" in response) {
|
|
1286
|
-
|
|
1300
|
+
navigate("..");
|
|
1287
1301
|
} else if (index.isAxiosError(response.error)) {
|
|
1288
1302
|
toggleNotification({
|
|
1289
1303
|
type: "warning",
|
|
@@ -1302,7 +1316,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1302
1316
|
toggleEditReleaseModal,
|
|
1303
1317
|
toggleWarningSubmit,
|
|
1304
1318
|
children: [
|
|
1305
|
-
/* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, {}),
|
|
1319
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, { releaseId }),
|
|
1306
1320
|
releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1307
1321
|
ReleaseModal,
|
|
1308
1322
|
{
|
|
@@ -1337,10 +1351,10 @@ const ReleaseDetailsPage = () => {
|
|
|
1337
1351
|
);
|
|
1338
1352
|
};
|
|
1339
1353
|
const App = () => {
|
|
1340
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1341
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, {
|
|
1342
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, {
|
|
1354
|
+
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions: index.PERMISSIONS.main, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Routes, { children: [
|
|
1355
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { index: true, element: /* @__PURE__ */ jsxRuntime.jsx(ReleasesPage, {}) }),
|
|
1356
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: ":releaseId", element: /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsPage, {}) })
|
|
1343
1357
|
] }) });
|
|
1344
1358
|
};
|
|
1345
1359
|
exports.App = App;
|
|
1346
|
-
//# sourceMappingURL=App-
|
|
1360
|
+
//# sourceMappingURL=App-lzeJz92X.js.map
|