@strapi/content-releases 5.12.1 → 5.12.3
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/admin/assets/purchase-page-illustration-dark.svg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +1 -0
- package/dist/admin/components/EntryValidationPopover.js +344 -0
- package/dist/admin/components/EntryValidationPopover.js.map +1 -0
- package/dist/admin/components/EntryValidationPopover.mjs +342 -0
- package/dist/admin/components/EntryValidationPopover.mjs.map +1 -0
- package/dist/admin/components/RelativeTime.js +76 -0
- package/dist/admin/components/RelativeTime.js.map +1 -0
- package/dist/admin/components/RelativeTime.mjs +55 -0
- package/dist/admin/components/RelativeTime.mjs.map +1 -0
- package/dist/admin/components/ReleaseAction.js +201 -0
- package/dist/admin/components/ReleaseAction.js.map +1 -0
- package/dist/admin/components/ReleaseAction.mjs +199 -0
- package/dist/admin/components/ReleaseAction.mjs.map +1 -0
- package/dist/admin/components/ReleaseActionMenu.js +243 -0
- package/dist/admin/components/ReleaseActionMenu.js.map +1 -0
- package/dist/admin/components/ReleaseActionMenu.mjs +222 -0
- package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -0
- package/dist/admin/components/ReleaseActionModal.js +268 -0
- package/dist/admin/components/ReleaseActionModal.js.map +1 -0
- package/dist/admin/components/ReleaseActionModal.mjs +244 -0
- package/dist/admin/components/ReleaseActionModal.mjs.map +1 -0
- package/dist/admin/components/ReleaseActionOptions.js +104 -0
- package/dist/admin/components/ReleaseActionOptions.js.map +1 -0
- package/dist/admin/components/ReleaseActionOptions.mjs +102 -0
- package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -0
- package/dist/admin/components/ReleaseListCell.js +103 -0
- package/dist/admin/components/ReleaseListCell.js.map +1 -0
- package/dist/admin/components/ReleaseListCell.mjs +100 -0
- package/dist/admin/components/ReleaseListCell.mjs.map +1 -0
- package/dist/admin/components/ReleaseModal.js +323 -0
- package/dist/admin/components/ReleaseModal.js.map +1 -0
- package/dist/admin/components/ReleaseModal.mjs +302 -0
- package/dist/admin/components/ReleaseModal.mjs.map +1 -0
- package/dist/admin/components/ReleasesPanel.js +138 -0
- package/dist/admin/components/ReleasesPanel.js.map +1 -0
- package/dist/admin/components/ReleasesPanel.mjs +136 -0
- package/dist/admin/components/ReleasesPanel.mjs.map +1 -0
- package/dist/admin/constants.js +77 -0
- package/dist/admin/constants.js.map +1 -0
- package/dist/admin/constants.mjs +75 -0
- package/dist/admin/constants.mjs.map +1 -0
- package/dist/admin/index.js +120 -14
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +121 -13
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/{chunks/hooks-DA5VbUAp.js → modules/hooks.js} +1 -1
- package/dist/admin/modules/hooks.js.map +1 -0
- package/dist/admin/{chunks/hooks-CFk_8Q0b.mjs → modules/hooks.mjs} +2 -2
- package/dist/admin/modules/hooks.mjs.map +1 -0
- package/dist/admin/pages/App.js +29 -0
- package/dist/admin/pages/App.js.map +1 -0
- package/dist/admin/pages/App.mjs +27 -0
- package/dist/admin/pages/App.mjs.map +1 -0
- package/dist/admin/pages/PurchaseContentReleases.js +192 -0
- package/dist/admin/pages/PurchaseContentReleases.js.map +1 -0
- package/dist/admin/pages/PurchaseContentReleases.mjs +190 -0
- package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -0
- package/dist/admin/pages/ReleaseDetailsPage.js +821 -0
- package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -0
- package/dist/admin/pages/ReleaseDetailsPage.mjs +800 -0
- package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -0
- package/dist/admin/pages/ReleasesPage.js +397 -0
- package/dist/admin/pages/ReleasesPage.js.map +1 -0
- package/dist/admin/pages/ReleasesPage.mjs +375 -0
- package/dist/admin/pages/ReleasesPage.mjs.map +1 -0
- package/dist/admin/{chunks/ReleasesSettingsPage-KRcoI1bC.js → pages/ReleasesSettingsPage.js} +9 -17
- package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -0
- package/dist/admin/{chunks/ReleasesSettingsPage-DUKdFdvx.mjs → pages/ReleasesSettingsPage.mjs} +5 -13
- package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -0
- package/dist/admin/pluginId.js +6 -0
- package/dist/admin/pluginId.js.map +1 -0
- package/dist/admin/pluginId.mjs +4 -0
- package/dist/admin/pluginId.mjs.map +1 -0
- package/dist/admin/services/release.js +464 -0
- package/dist/admin/services/release.js.map +1 -0
- package/dist/admin/services/release.mjs +447 -0
- package/dist/admin/services/release.mjs.map +1 -0
- package/dist/admin/store/hooks.js +8 -0
- package/dist/admin/store/hooks.js.map +1 -0
- package/dist/admin/store/hooks.mjs +6 -0
- package/dist/admin/store/hooks.mjs.map +1 -0
- package/dist/admin/{chunks/en-BOpqX2t_.js → translations/en.json.js} +2 -2
- package/dist/admin/translations/en.json.js.map +1 -0
- package/dist/admin/{chunks/en-aQo8Bn_U.mjs → translations/en.json.mjs} +1 -1
- package/dist/admin/translations/en.json.mjs.map +1 -0
- package/dist/admin/{chunks/uk-9T9su-bj.js → translations/uk.json.js} +2 -2
- package/dist/admin/translations/uk.json.js.map +1 -0
- package/dist/admin/{chunks/uk-Bp9HotPq.mjs → translations/uk.json.mjs} +1 -1
- package/dist/admin/translations/uk.json.mjs.map +1 -0
- package/dist/admin/utils/api.js +8 -0
- package/dist/admin/utils/api.js.map +1 -0
- package/dist/admin/utils/api.mjs +6 -0
- package/dist/admin/utils/api.mjs.map +1 -0
- package/dist/admin/utils/prefixPluginTranslations.js +11 -0
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
- package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
- package/dist/admin/utils/time.js +42 -0
- package/dist/admin/utils/time.js.map +1 -0
- package/dist/admin/utils/time.mjs +39 -0
- package/dist/admin/utils/time.mjs.map +1 -0
- package/dist/admin/{chunks/schemas-DS7NeFDN.js → validation/schemas.js} +1 -1
- package/dist/admin/validation/schemas.js.map +1 -0
- package/dist/admin/{chunks/schemas-DMt8h1z-.mjs → validation/schemas.mjs} +2 -2
- package/dist/admin/validation/schemas.mjs.map +1 -0
- package/dist/server/bootstrap.js +68 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/bootstrap.mjs +66 -0
- package/dist/server/bootstrap.mjs.map +1 -0
- package/dist/server/constants.js +74 -0
- package/dist/server/constants.js.map +1 -0
- package/dist/server/constants.mjs +69 -0
- package/dist/server/constants.mjs.map +1 -0
- package/dist/server/content-types/index.js +12 -0
- package/dist/server/content-types/index.js.map +1 -0
- package/dist/server/content-types/index.mjs +10 -0
- package/dist/server/content-types/index.mjs.map +1 -0
- package/dist/server/content-types/release/index.js +10 -0
- package/dist/server/content-types/release/index.js.map +1 -0
- package/dist/server/content-types/release/index.mjs +8 -0
- package/dist/server/content-types/release/index.mjs.map +1 -0
- package/dist/server/content-types/release/schema.js +58 -0
- package/dist/server/content-types/release/schema.js.map +1 -0
- package/dist/server/content-types/release/schema.mjs +56 -0
- package/dist/server/content-types/release/schema.mjs.map +1 -0
- package/dist/server/content-types/release-action/index.js +10 -0
- package/dist/server/content-types/release-action/index.js.map +1 -0
- package/dist/server/content-types/release-action/index.mjs +8 -0
- package/dist/server/content-types/release-action/index.mjs.map +1 -0
- package/dist/server/content-types/release-action/schema.js +55 -0
- package/dist/server/content-types/release-action/schema.js.map +1 -0
- package/dist/server/content-types/release-action/schema.mjs +53 -0
- package/dist/server/content-types/release-action/schema.mjs.map +1 -0
- package/dist/server/controllers/index.js +14 -0
- package/dist/server/controllers/index.js.map +1 -0
- package/dist/server/controllers/index.mjs +12 -0
- package/dist/server/controllers/index.mjs.map +1 -0
- package/dist/server/controllers/release-action.js +150 -0
- package/dist/server/controllers/release-action.js.map +1 -0
- package/dist/server/controllers/release-action.mjs +148 -0
- package/dist/server/controllers/release-action.mjs.map +1 -0
- package/dist/server/controllers/release.js +302 -0
- package/dist/server/controllers/release.js.map +1 -0
- package/dist/server/controllers/release.mjs +300 -0
- package/dist/server/controllers/release.mjs.map +1 -0
- package/dist/server/controllers/settings.js +37 -0
- package/dist/server/controllers/settings.js.map +1 -0
- package/dist/server/controllers/settings.mjs +35 -0
- package/dist/server/controllers/settings.mjs.map +1 -0
- package/dist/server/controllers/validation/release-action.js +34 -0
- package/dist/server/controllers/validation/release-action.js.map +1 -0
- package/dist/server/controllers/validation/release-action.mjs +30 -0
- package/dist/server/controllers/validation/release-action.mjs.map +1 -0
- package/dist/server/controllers/validation/release.js +26 -0
- package/dist/server/controllers/validation/release.js.map +1 -0
- package/dist/server/controllers/validation/release.mjs +22 -0
- package/dist/server/controllers/validation/release.mjs.map +1 -0
- package/dist/server/controllers/validation/settings.js +32 -0
- package/dist/server/controllers/validation/settings.js.map +1 -0
- package/dist/server/controllers/validation/settings.mjs +10 -0
- package/dist/server/controllers/validation/settings.mjs.map +1 -0
- package/dist/server/destroy.js +15 -0
- package/dist/server/destroy.js.map +1 -0
- package/dist/server/destroy.mjs +13 -0
- package/dist/server/destroy.mjs.map +1 -0
- package/dist/server/index.js +16 -2336
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +7 -2308
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/middlewares/documents.js +104 -0
- package/dist/server/middlewares/documents.js.map +1 -0
- package/dist/server/middlewares/documents.mjs +101 -0
- package/dist/server/middlewares/documents.mjs.map +1 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +51 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +49 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -0
- package/dist/server/migrations/index.js +205 -0
- package/dist/server/migrations/index.js.map +1 -0
- package/dist/server/migrations/index.mjs +198 -0
- package/dist/server/migrations/index.mjs.map +1 -0
- package/dist/server/register.js +23 -0
- package/dist/server/register.js.map +1 -0
- package/dist/server/register.mjs +21 -0
- package/dist/server/register.mjs.map +1 -0
- package/dist/server/routes/index.js +14 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/index.mjs +12 -0
- package/dist/server/routes/index.mjs.map +1 -0
- package/dist/server/routes/release-action.js +100 -0
- package/dist/server/routes/release-action.js.map +1 -0
- package/dist/server/routes/release-action.mjs +98 -0
- package/dist/server/routes/release-action.mjs.map +1 -0
- package/dist/server/routes/release.js +154 -0
- package/dist/server/routes/release.js.map +1 -0
- package/dist/server/routes/release.mjs +152 -0
- package/dist/server/routes/release.mjs.map +1 -0
- package/dist/server/routes/settings.js +46 -0
- package/dist/server/routes/settings.js.map +1 -0
- package/dist/server/routes/settings.mjs +44 -0
- package/dist/server/routes/settings.mjs.map +1 -0
- package/dist/server/services/index.js +18 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/index.mjs +16 -0
- package/dist/server/services/index.mjs.map +1 -0
- package/dist/server/services/release-action.js +323 -0
- package/dist/server/services/release-action.js.map +1 -0
- package/dist/server/services/release-action.mjs +321 -0
- package/dist/server/services/release-action.mjs.map +1 -0
- package/dist/server/services/release.js +324 -0
- package/dist/server/services/release.js.map +1 -0
- package/dist/server/services/release.mjs +322 -0
- package/dist/server/services/release.mjs.map +1 -0
- package/dist/server/services/scheduling.js +70 -0
- package/dist/server/services/scheduling.js.map +1 -0
- package/dist/server/services/scheduling.mjs +68 -0
- package/dist/server/services/scheduling.mjs.map +1 -0
- package/dist/server/services/settings.js +34 -0
- package/dist/server/services/settings.js.map +1 -0
- package/dist/server/services/settings.mjs +32 -0
- package/dist/server/services/settings.mjs.map +1 -0
- package/dist/server/services/validation.js +91 -0
- package/dist/server/services/validation.js.map +1 -0
- package/dist/server/services/validation.mjs +86 -0
- package/dist/server/services/validation.mjs.map +1 -0
- package/dist/server/utils/index.js +93 -0
- package/dist/server/utils/index.js.map +1 -0
- package/dist/server/utils/index.mjs +87 -0
- package/dist/server/utils/index.mjs.map +1 -0
- package/package.json +7 -7
- package/dist/admin/chunks/App-BkWgp5q_.mjs +0 -1845
- package/dist/admin/chunks/App-BkWgp5q_.mjs.map +0 -1
- package/dist/admin/chunks/App-CJiqPP7-.js +0 -1866
- package/dist/admin/chunks/App-CJiqPP7-.js.map +0 -1
- package/dist/admin/chunks/PurchaseContentReleases-CzayeVUD.mjs +0 -193
- package/dist/admin/chunks/PurchaseContentReleases-CzayeVUD.mjs.map +0 -1
- package/dist/admin/chunks/PurchaseContentReleases-Z9uEPb5b.js +0 -195
- package/dist/admin/chunks/PurchaseContentReleases-Z9uEPb5b.js.map +0 -1
- package/dist/admin/chunks/ReleasesSettingsPage-DUKdFdvx.mjs.map +0 -1
- package/dist/admin/chunks/ReleasesSettingsPage-KRcoI1bC.js.map +0 -1
- package/dist/admin/chunks/en-BOpqX2t_.js.map +0 -1
- package/dist/admin/chunks/en-aQo8Bn_U.mjs.map +0 -1
- package/dist/admin/chunks/hooks-CFk_8Q0b.mjs.map +0 -1
- package/dist/admin/chunks/hooks-DA5VbUAp.js.map +0 -1
- package/dist/admin/chunks/index-DBUaMD56.mjs +0 -1619
- package/dist/admin/chunks/index-DBUaMD56.mjs.map +0 -1
- package/dist/admin/chunks/index-vjWrvGN3.js +0 -1658
- package/dist/admin/chunks/index-vjWrvGN3.js.map +0 -1
- package/dist/admin/chunks/schemas-DMt8h1z-.mjs.map +0 -1
- package/dist/admin/chunks/schemas-DS7NeFDN.js.map +0 -1
- package/dist/admin/chunks/uk-9T9su-bj.js.map +0 -1
- package/dist/admin/chunks/uk-Bp9HotPq.mjs.map +0 -1
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var designSystem = require('@strapi/design-system');
|
|
6
|
+
var dateFns = require('date-fns');
|
|
7
|
+
var dateFnsTz = require('date-fns-tz');
|
|
8
|
+
var formik = require('formik');
|
|
9
|
+
var reactIntl = require('react-intl');
|
|
10
|
+
var reactRouterDom = require('react-router-dom');
|
|
11
|
+
var pluginId = require('../pluginId.js');
|
|
12
|
+
var time = require('../utils/time.js');
|
|
13
|
+
var schemas = require('../validation/schemas.js');
|
|
14
|
+
|
|
15
|
+
function _interopNamespaceDefault(e) {
|
|
16
|
+
var n = Object.create(null);
|
|
17
|
+
if (e) {
|
|
18
|
+
Object.keys(e).forEach(function (k) {
|
|
19
|
+
if (k !== 'default') {
|
|
20
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
21
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () { return e[k]; }
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
n.default = e;
|
|
29
|
+
return Object.freeze(n);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
33
|
+
|
|
34
|
+
const ReleaseModal = ({ handleClose, open, handleSubmit, initialValues, isLoading = false })=>{
|
|
35
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
36
|
+
const { pathname } = reactRouterDom.useLocation();
|
|
37
|
+
const isCreatingRelease = pathname === `/plugins/${pluginId.pluginId}`;
|
|
38
|
+
// Set default first timezone from the list if no system timezone detected
|
|
39
|
+
const { timezoneList, systemTimezone = {
|
|
40
|
+
value: 'UTC+00:00-Africa/Abidjan '
|
|
41
|
+
} } = time.getTimezones(initialValues.scheduledAt ? new Date(initialValues.scheduledAt) : new Date());
|
|
42
|
+
/**
|
|
43
|
+
* Generate scheduled time using selected date, time and timezone
|
|
44
|
+
*/ const getScheduledTimestamp = (values)=>{
|
|
45
|
+
const { date, time, timezone } = values;
|
|
46
|
+
if (!date || !time || !timezone) return null;
|
|
47
|
+
const timezoneWithoutOffset = timezone.split('&')[1];
|
|
48
|
+
return dateFnsTz.zonedTimeToUtc(`${date} ${time}`, timezoneWithoutOffset);
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Get timezone with offset to show the selected value in the dropdown
|
|
52
|
+
*/ const getTimezoneWithOffset = ()=>{
|
|
53
|
+
const currentTimezone = timezoneList.find((timezone)=>timezone.value.split('&')[1] === initialValues.timezone);
|
|
54
|
+
return currentTimezone?.value || systemTimezone.value;
|
|
55
|
+
};
|
|
56
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Root, {
|
|
57
|
+
open: open,
|
|
58
|
+
onOpenChange: handleClose,
|
|
59
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Modal.Content, {
|
|
60
|
+
children: [
|
|
61
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Header, {
|
|
62
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Title, {
|
|
63
|
+
children: formatMessage({
|
|
64
|
+
id: 'content-releases.modal.title',
|
|
65
|
+
defaultMessage: '{isCreatingRelease, select, true {New release} other {Edit release}}'
|
|
66
|
+
}, {
|
|
67
|
+
isCreatingRelease: isCreatingRelease
|
|
68
|
+
})
|
|
69
|
+
})
|
|
70
|
+
}),
|
|
71
|
+
/*#__PURE__*/ jsxRuntime.jsx(formik.Formik, {
|
|
72
|
+
onSubmit: (values)=>{
|
|
73
|
+
handleSubmit({
|
|
74
|
+
...values,
|
|
75
|
+
timezone: values.timezone ? values.timezone.split('&')[1] : null,
|
|
76
|
+
scheduledAt: values.isScheduled ? getScheduledTimestamp(values) : null
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
initialValues: {
|
|
80
|
+
...initialValues,
|
|
81
|
+
timezone: initialValues.timezone ? getTimezoneWithOffset() : systemTimezone.value
|
|
82
|
+
},
|
|
83
|
+
validationSchema: schemas.RELEASE_SCHEMA,
|
|
84
|
+
validateOnChange: false,
|
|
85
|
+
children: ({ values, errors, handleChange, setFieldValue })=>{
|
|
86
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(formik.Form, {
|
|
87
|
+
children: [
|
|
88
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Body, {
|
|
89
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
90
|
+
direction: "column",
|
|
91
|
+
alignItems: "stretch",
|
|
92
|
+
gap: 6,
|
|
93
|
+
children: [
|
|
94
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
|
|
95
|
+
name: "name",
|
|
96
|
+
error: errors.name && formatMessage({
|
|
97
|
+
id: errors.name,
|
|
98
|
+
defaultMessage: errors.name
|
|
99
|
+
}),
|
|
100
|
+
required: true,
|
|
101
|
+
children: [
|
|
102
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
|
|
103
|
+
children: formatMessage({
|
|
104
|
+
id: 'content-releases.modal.form.input.label.release-name',
|
|
105
|
+
defaultMessage: 'Name'
|
|
106
|
+
})
|
|
107
|
+
}),
|
|
108
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.TextInput, {
|
|
109
|
+
value: values.name,
|
|
110
|
+
onChange: handleChange
|
|
111
|
+
}),
|
|
112
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {})
|
|
113
|
+
]
|
|
114
|
+
}),
|
|
115
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
116
|
+
width: "max-content",
|
|
117
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Checkbox, {
|
|
118
|
+
name: "isScheduled",
|
|
119
|
+
checked: values.isScheduled,
|
|
120
|
+
onCheckedChange: (checked)=>{
|
|
121
|
+
setFieldValue('isScheduled', checked);
|
|
122
|
+
if (!checked) {
|
|
123
|
+
// Clear scheduling info from a release on unchecking schedule release, which reset scheduling info in DB
|
|
124
|
+
setFieldValue('date', null);
|
|
125
|
+
setFieldValue('time', '');
|
|
126
|
+
setFieldValue('timezone', null);
|
|
127
|
+
} else {
|
|
128
|
+
// On ticking back schedule release date, time and timezone should be restored to the initial state
|
|
129
|
+
setFieldValue('date', initialValues.date);
|
|
130
|
+
setFieldValue('time', initialValues.time);
|
|
131
|
+
setFieldValue('timezone', initialValues.timezone ?? systemTimezone?.value);
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
135
|
+
textColor: values.isScheduled ? 'primary600' : 'neutral800',
|
|
136
|
+
fontWeight: values.isScheduled ? 'semiBold' : 'regular',
|
|
137
|
+
children: formatMessage({
|
|
138
|
+
id: 'modal.form.input.label.schedule-release',
|
|
139
|
+
defaultMessage: 'Schedule release'
|
|
140
|
+
})
|
|
141
|
+
})
|
|
142
|
+
})
|
|
143
|
+
}),
|
|
144
|
+
values.isScheduled && /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
145
|
+
children: [
|
|
146
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
147
|
+
gap: 4,
|
|
148
|
+
alignItems: "start",
|
|
149
|
+
children: [
|
|
150
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
151
|
+
width: "100%",
|
|
152
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
|
|
153
|
+
name: "date",
|
|
154
|
+
error: errors.date && formatMessage({
|
|
155
|
+
id: errors.date,
|
|
156
|
+
defaultMessage: errors.date
|
|
157
|
+
}),
|
|
158
|
+
required: true,
|
|
159
|
+
children: [
|
|
160
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
|
|
161
|
+
children: formatMessage({
|
|
162
|
+
id: 'content-releases.modal.form.input.label.date',
|
|
163
|
+
defaultMessage: 'Date'
|
|
164
|
+
})
|
|
165
|
+
}),
|
|
166
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.DatePicker, {
|
|
167
|
+
onChange: (date)=>{
|
|
168
|
+
const isoFormatDate = date ? dateFns.formatISO(date, {
|
|
169
|
+
representation: 'date'
|
|
170
|
+
}) : null;
|
|
171
|
+
setFieldValue('date', isoFormatDate);
|
|
172
|
+
},
|
|
173
|
+
clearLabel: formatMessage({
|
|
174
|
+
id: 'content-releases.modal.form.input.clearLabel',
|
|
175
|
+
defaultMessage: 'Clear'
|
|
176
|
+
}),
|
|
177
|
+
onClear: ()=>{
|
|
178
|
+
setFieldValue('date', null);
|
|
179
|
+
},
|
|
180
|
+
value: values.date ? new Date(values.date) : new Date(),
|
|
181
|
+
minDate: dateFnsTz.utcToZonedTime(new Date(), values.timezone.split('&')[1])
|
|
182
|
+
}),
|
|
183
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {})
|
|
184
|
+
]
|
|
185
|
+
})
|
|
186
|
+
}),
|
|
187
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
188
|
+
width: "100%",
|
|
189
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
|
|
190
|
+
name: "time",
|
|
191
|
+
error: errors.time && formatMessage({
|
|
192
|
+
id: errors.time,
|
|
193
|
+
defaultMessage: errors.time
|
|
194
|
+
}),
|
|
195
|
+
required: true,
|
|
196
|
+
children: [
|
|
197
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
|
|
198
|
+
children: formatMessage({
|
|
199
|
+
id: 'content-releases.modal.form.input.label.time',
|
|
200
|
+
defaultMessage: 'Time'
|
|
201
|
+
})
|
|
202
|
+
}),
|
|
203
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.TimePicker, {
|
|
204
|
+
onChange: (time)=>{
|
|
205
|
+
setFieldValue('time', time);
|
|
206
|
+
},
|
|
207
|
+
clearLabel: formatMessage({
|
|
208
|
+
id: 'content-releases.modal.form.input.clearLabel',
|
|
209
|
+
defaultMessage: 'Clear'
|
|
210
|
+
}),
|
|
211
|
+
onClear: ()=>{
|
|
212
|
+
setFieldValue('time', '');
|
|
213
|
+
},
|
|
214
|
+
value: values.time || undefined
|
|
215
|
+
}),
|
|
216
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {})
|
|
217
|
+
]
|
|
218
|
+
})
|
|
219
|
+
})
|
|
220
|
+
]
|
|
221
|
+
}),
|
|
222
|
+
/*#__PURE__*/ jsxRuntime.jsx(TimezoneComponent, {
|
|
223
|
+
timezoneOptions: timezoneList
|
|
224
|
+
})
|
|
225
|
+
]
|
|
226
|
+
})
|
|
227
|
+
]
|
|
228
|
+
})
|
|
229
|
+
}),
|
|
230
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Modal.Footer, {
|
|
231
|
+
children: [
|
|
232
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Close, {
|
|
233
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
234
|
+
variant: "tertiary",
|
|
235
|
+
name: "cancel",
|
|
236
|
+
children: formatMessage({
|
|
237
|
+
id: 'cancel',
|
|
238
|
+
defaultMessage: 'Cancel'
|
|
239
|
+
})
|
|
240
|
+
})
|
|
241
|
+
}),
|
|
242
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
243
|
+
name: "submit",
|
|
244
|
+
loading: isLoading,
|
|
245
|
+
type: "submit",
|
|
246
|
+
children: formatMessage({
|
|
247
|
+
id: 'content-releases.modal.form.button.submit',
|
|
248
|
+
defaultMessage: '{isCreatingRelease, select, true {Continue} other {Save}}'
|
|
249
|
+
}, {
|
|
250
|
+
isCreatingRelease: isCreatingRelease
|
|
251
|
+
})
|
|
252
|
+
})
|
|
253
|
+
]
|
|
254
|
+
})
|
|
255
|
+
]
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
})
|
|
259
|
+
]
|
|
260
|
+
})
|
|
261
|
+
});
|
|
262
|
+
};
|
|
263
|
+
const TimezoneComponent = ({ timezoneOptions })=>{
|
|
264
|
+
const { values, errors, setFieldValue } = formik.useFormikContext();
|
|
265
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
266
|
+
const [timezoneList, setTimezoneList] = React__namespace.useState(timezoneOptions);
|
|
267
|
+
React__namespace.useEffect(()=>{
|
|
268
|
+
if (values.date) {
|
|
269
|
+
// Update the timezone offset which varies with DST based on the date selected
|
|
270
|
+
const { timezoneList } = time.getTimezones(new Date(values.date));
|
|
271
|
+
setTimezoneList(timezoneList);
|
|
272
|
+
const updatedTimezone = values.timezone && timezoneList.find((tz)=>tz.value.split('&')[1] === values.timezone.split('&')[1]);
|
|
273
|
+
if (updatedTimezone) {
|
|
274
|
+
setFieldValue('timezone', updatedTimezone.value);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}, [
|
|
278
|
+
setFieldValue,
|
|
279
|
+
values.date,
|
|
280
|
+
values.timezone
|
|
281
|
+
]);
|
|
282
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
|
|
283
|
+
name: "timezone",
|
|
284
|
+
error: errors.timezone && formatMessage({
|
|
285
|
+
id: errors.timezone,
|
|
286
|
+
defaultMessage: errors.timezone
|
|
287
|
+
}),
|
|
288
|
+
required: true,
|
|
289
|
+
children: [
|
|
290
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
|
|
291
|
+
children: formatMessage({
|
|
292
|
+
id: 'content-releases.modal.form.input.label.timezone',
|
|
293
|
+
defaultMessage: 'Timezone'
|
|
294
|
+
})
|
|
295
|
+
}),
|
|
296
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Combobox, {
|
|
297
|
+
autocomplete: {
|
|
298
|
+
type: 'list',
|
|
299
|
+
filter: 'contains'
|
|
300
|
+
},
|
|
301
|
+
value: values.timezone || undefined,
|
|
302
|
+
textValue: values.timezone ? values.timezone.replace(/&/, ' ') : undefined,
|
|
303
|
+
onChange: (timezone)=>{
|
|
304
|
+
setFieldValue('timezone', timezone);
|
|
305
|
+
},
|
|
306
|
+
onTextValueChange: (timezone)=>{
|
|
307
|
+
setFieldValue('timezone', timezone);
|
|
308
|
+
},
|
|
309
|
+
onClear: ()=>{
|
|
310
|
+
setFieldValue('timezone', '');
|
|
311
|
+
},
|
|
312
|
+
children: timezoneList.map((timezone)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.ComboboxOption, {
|
|
313
|
+
value: timezone.value,
|
|
314
|
+
children: timezone.value.replace(/&/, ' ')
|
|
315
|
+
}, timezone.value))
|
|
316
|
+
}),
|
|
317
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {})
|
|
318
|
+
]
|
|
319
|
+
});
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
exports.ReleaseModal = ReleaseModal;
|
|
323
|
+
//# sourceMappingURL=ReleaseModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReleaseModal.js","sources":["../../../admin/src/components/ReleaseModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Modal,\n TextInput,\n Typography,\n Checkbox,\n Flex,\n Box,\n DatePicker,\n TimePicker,\n Combobox,\n ComboboxOption,\n Field,\n} from '@strapi/design-system';\nimport { formatISO } from 'date-fns';\nimport { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';\nimport { Formik, Form, useFormikContext } from 'formik';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\n\nimport { pluginId } from '../pluginId';\nimport { getTimezones } from '../utils/time';\nimport { RELEASE_SCHEMA } from '../validation/schemas';\n\nexport interface FormValues {\n name: string;\n date?: string;\n time: string;\n timezone: string | null;\n isScheduled?: boolean;\n scheduledAt: Date | null;\n}\n\ninterface ReleaseModalProps {\n handleClose: () => void;\n handleSubmit: (values: FormValues) => void;\n isLoading?: boolean;\n initialValues: FormValues;\n open?: boolean;\n}\n\nexport const ReleaseModal = ({\n handleClose,\n open,\n handleSubmit,\n initialValues,\n isLoading = false,\n}: ReleaseModalProps) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const isCreatingRelease = pathname === `/plugins/${pluginId}`;\n // Set default first timezone from the list if no system timezone detected\n const { timezoneList, systemTimezone = { value: 'UTC+00:00-Africa/Abidjan ' } } = getTimezones(\n initialValues.scheduledAt ? new Date(initialValues.scheduledAt) : new Date()\n );\n\n /**\n * Generate scheduled time using selected date, time and timezone\n */\n const getScheduledTimestamp = (values: FormValues) => {\n const { date, time, timezone } = values;\n if (!date || !time || !timezone) return null;\n const timezoneWithoutOffset = timezone.split('&')[1];\n return zonedTimeToUtc(`${date} ${time}`, timezoneWithoutOffset);\n };\n\n /**\n * Get timezone with offset to show the selected value in the dropdown\n */\n const getTimezoneWithOffset = () => {\n const currentTimezone = timezoneList.find(\n (timezone) => timezone.value.split('&')[1] === initialValues.timezone\n );\n return currentTimezone?.value || systemTimezone.value;\n };\n\n return (\n <Modal.Root open={open} onOpenChange={handleClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n {\n id: 'content-releases.modal.title',\n defaultMessage:\n '{isCreatingRelease, select, true {New release} other {Edit release}}',\n },\n { isCreatingRelease: isCreatingRelease }\n )}\n </Modal.Title>\n </Modal.Header>\n <Formik\n onSubmit={(values) => {\n handleSubmit({\n ...values,\n timezone: values.timezone ? values.timezone.split('&')[1] : null,\n scheduledAt: values.isScheduled ? getScheduledTimestamp(values) : null,\n });\n }}\n initialValues={{\n ...initialValues,\n timezone: initialValues.timezone ? getTimezoneWithOffset() : systemTimezone.value,\n }}\n validationSchema={RELEASE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleChange, setFieldValue }) => {\n return (\n <Form>\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Field.Root\n name=\"name\"\n error={\n errors.name &&\n formatMessage({ id: errors.name, defaultMessage: errors.name })\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'content-releases.modal.form.input.label.release-name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput value={values.name} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n <Box width=\"max-content\">\n <Checkbox\n name=\"isScheduled\"\n checked={values.isScheduled}\n onCheckedChange={(checked) => {\n setFieldValue('isScheduled', checked);\n if (!checked) {\n // Clear scheduling info from a release on unchecking schedule release, which reset scheduling info in DB\n setFieldValue('date', null);\n setFieldValue('time', '');\n setFieldValue('timezone', null);\n } else {\n // On ticking back schedule release date, time and timezone should be restored to the initial state\n setFieldValue('date', initialValues.date);\n setFieldValue('time', initialValues.time);\n setFieldValue(\n 'timezone',\n initialValues.timezone ?? systemTimezone?.value\n );\n }\n }}\n >\n <Typography\n textColor={values.isScheduled ? 'primary600' : 'neutral800'}\n fontWeight={values.isScheduled ? 'semiBold' : 'regular'}\n >\n {formatMessage({\n id: 'modal.form.input.label.schedule-release',\n defaultMessage: 'Schedule release',\n })}\n </Typography>\n </Checkbox>\n </Box>\n {values.isScheduled && (\n <>\n <Flex gap={4} alignItems=\"start\">\n <Box width=\"100%\">\n <Field.Root\n name=\"date\"\n error={\n errors.date &&\n formatMessage({ id: errors.date, defaultMessage: errors.date })\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'content-releases.modal.form.input.label.date',\n defaultMessage: 'Date',\n })}\n </Field.Label>\n <DatePicker\n onChange={(date) => {\n const isoFormatDate = date\n ? formatISO(date, { representation: 'date' })\n : null;\n setFieldValue('date', isoFormatDate);\n }}\n clearLabel={formatMessage({\n id: 'content-releases.modal.form.input.clearLabel',\n defaultMessage: 'Clear',\n })}\n onClear={() => {\n setFieldValue('date', null);\n }}\n value={values.date ? new Date(values.date) : new Date()}\n minDate={utcToZonedTime(new Date(), values.timezone.split('&')[1])}\n />\n <Field.Error />\n </Field.Root>\n </Box>\n <Box width=\"100%\">\n <Field.Root\n name=\"time\"\n error={\n errors.time &&\n formatMessage({ id: errors.time, defaultMessage: errors.time })\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'content-releases.modal.form.input.label.time',\n defaultMessage: 'Time',\n })}\n </Field.Label>\n <TimePicker\n onChange={(time) => {\n setFieldValue('time', time);\n }}\n clearLabel={formatMessage({\n id: 'content-releases.modal.form.input.clearLabel',\n defaultMessage: 'Clear',\n })}\n onClear={() => {\n setFieldValue('time', '');\n }}\n value={values.time || undefined}\n />\n <Field.Error />\n </Field.Root>\n </Box>\n </Flex>\n <TimezoneComponent timezoneOptions={timezoneList} />\n </>\n )}\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button name=\"submit\" loading={isLoading} type=\"submit\">\n {formatMessage(\n {\n id: 'content-releases.modal.form.button.submit',\n defaultMessage: '{isCreatingRelease, select, true {Continue} other {Save}}',\n },\n { isCreatingRelease: isCreatingRelease }\n )}\n </Button>\n </Modal.Footer>\n </Form>\n );\n }}\n </Formik>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\n/**\n * Generates the list of timezones and user's current timezone(system timezone)\n */\ninterface ITimezoneOption {\n offset: string;\n value: string;\n}\n\nconst TimezoneComponent = ({ timezoneOptions }: { timezoneOptions: ITimezoneOption[] }) => {\n const { values, errors, setFieldValue } = useFormikContext<FormValues>();\n const { formatMessage } = useIntl();\n const [timezoneList, setTimezoneList] = React.useState<ITimezoneOption[]>(timezoneOptions);\n\n React.useEffect(() => {\n if (values.date) {\n // Update the timezone offset which varies with DST based on the date selected\n const { timezoneList } = getTimezones(new Date(values.date));\n setTimezoneList(timezoneList);\n\n const updatedTimezone =\n values.timezone &&\n timezoneList.find((tz) => tz.value.split('&')[1] === values.timezone!.split('&')[1]);\n if (updatedTimezone) {\n setFieldValue('timezone', updatedTimezone!.value);\n }\n }\n }, [setFieldValue, values.date, values.timezone]);\n\n return (\n <Field.Root\n name=\"timezone\"\n error={\n errors.timezone && formatMessage({ id: errors.timezone, defaultMessage: errors.timezone })\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'content-releases.modal.form.input.label.timezone',\n defaultMessage: 'Timezone',\n })}\n </Field.Label>\n <Combobox\n autocomplete={{ type: 'list', filter: 'contains' }}\n value={values.timezone || undefined}\n textValue={values.timezone ? values.timezone.replace(/&/, ' ') : undefined} // textValue is required to show the updated DST timezone\n onChange={(timezone) => {\n setFieldValue('timezone', timezone);\n }}\n onTextValueChange={(timezone) => {\n setFieldValue('timezone', timezone);\n }}\n onClear={() => {\n setFieldValue('timezone', '');\n }}\n >\n {timezoneList.map((timezone) => (\n <ComboboxOption key={timezone.value} value={timezone.value}>\n {timezone.value.replace(/&/, ' ')}\n </ComboboxOption>\n ))}\n </Combobox>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["ReleaseModal","handleClose","open","handleSubmit","initialValues","isLoading","formatMessage","useIntl","pathname","useLocation","isCreatingRelease","pluginId","timezoneList","systemTimezone","value","getTimezones","scheduledAt","Date","getScheduledTimestamp","values","date","time","timezone","timezoneWithoutOffset","split","zonedTimeToUtc","getTimezoneWithOffset","currentTimezone","find","_jsx","Modal","Root","onOpenChange","_jsxs","Content","Header","Title","id","defaultMessage","Formik","onSubmit","isScheduled","validationSchema","RELEASE_SCHEMA","validateOnChange","errors","handleChange","setFieldValue","Form","Body","Flex","direction","alignItems","gap","Field","name","error","required","Label","TextInput","onChange","Error","Box","width","Checkbox","checked","onCheckedChange","Typography","textColor","fontWeight","_Fragment","DatePicker","isoFormatDate","formatISO","representation","clearLabel","onClear","minDate","utcToZonedTime","TimePicker","undefined","TimezoneComponent","timezoneOptions","Footer","Close","Button","variant","loading","type","useFormikContext","setTimezoneList","React","useState","useEffect","updatedTimezone","tz","Combobox","autocomplete","filter","textValue","replace","onTextValueChange","map","ComboboxOption"],"mappings":"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"}
|