@strapi/content-releases 0.0.0-experimental.d53e940834bf72ddc725f1d2fd36dac9abec30cb → 0.0.0-experimental.d834c9e658d1fb037e6da1105150593521c667cc

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.
Files changed (99) hide show
  1. package/LICENSE +17 -1
  2. package/dist/_chunks/{App-B2R2exNT.mjs → App-DMILern_.mjs} +295 -262
  3. package/dist/_chunks/App-DMILern_.mjs.map +1 -0
  4. package/dist/_chunks/{App-CEwOQkKT.js → App-fAgiijnc.js} +292 -260
  5. package/dist/_chunks/App-fAgiijnc.js.map +1 -0
  6. package/dist/_chunks/ReleasesSettingsPage-YVZJH-oN.js +178 -0
  7. package/dist/_chunks/ReleasesSettingsPage-YVZJH-oN.js.map +1 -0
  8. package/dist/_chunks/ReleasesSettingsPage-dwoRuXB-.mjs +178 -0
  9. package/dist/_chunks/ReleasesSettingsPage-dwoRuXB-.mjs.map +1 -0
  10. package/dist/_chunks/{en-DtFJ5ViE.js → en-CmYoEnA7.js} +9 -2
  11. package/dist/_chunks/en-CmYoEnA7.js.map +1 -0
  12. package/dist/_chunks/{en-B9Ur3VsE.mjs → en-D0yVZFqf.mjs} +9 -2
  13. package/dist/_chunks/en-D0yVZFqf.mjs.map +1 -0
  14. package/dist/_chunks/{index-BrWv-zV4.js → index--_NWfuDG.js} +760 -431
  15. package/dist/_chunks/index--_NWfuDG.js.map +1 -0
  16. package/dist/_chunks/{index-DbmynICx.mjs → index-CYsQToWs.mjs} +777 -448
  17. package/dist/_chunks/index-CYsQToWs.mjs.map +1 -0
  18. package/dist/_chunks/schemas-63pFihNF.mjs +44 -0
  19. package/dist/_chunks/schemas-63pFihNF.mjs.map +1 -0
  20. package/dist/_chunks/schemas-z5zp-_Gd.js +62 -0
  21. package/dist/_chunks/schemas-z5zp-_Gd.js.map +1 -0
  22. package/dist/admin/index.js +1 -1
  23. package/dist/admin/index.mjs +2 -2
  24. package/dist/admin/src/components/ReleaseActionMenu.d.ts +2 -2
  25. package/dist/admin/src/components/{CMReleasesContainer.d.ts → ReleaseActionModal.d.ts} +3 -1
  26. package/dist/admin/src/components/ReleaseListCell.d.ts +28 -0
  27. package/dist/admin/src/components/ReleasesPanel.d.ts +3 -0
  28. package/dist/admin/src/constants.d.ts +18 -0
  29. package/dist/admin/src/modules/hooks.d.ts +7 -0
  30. package/dist/admin/src/pages/ReleasesSettingsPage.d.ts +1 -0
  31. package/dist/admin/src/services/release.d.ts +43 -36
  32. package/dist/admin/src/utils/time.d.ts +9 -0
  33. package/dist/admin/src/validation/schemas.d.ts +6 -0
  34. package/dist/server/index.js +796 -623
  35. package/dist/server/index.js.map +1 -1
  36. package/dist/server/index.mjs +797 -624
  37. package/dist/server/index.mjs.map +1 -1
  38. package/dist/server/src/bootstrap.d.ts.map +1 -1
  39. package/dist/server/src/constants.d.ts +11 -2
  40. package/dist/server/src/constants.d.ts.map +1 -1
  41. package/dist/server/src/content-types/index.d.ts +3 -5
  42. package/dist/server/src/content-types/index.d.ts.map +1 -1
  43. package/dist/server/src/content-types/release-action/index.d.ts +3 -5
  44. package/dist/server/src/content-types/release-action/index.d.ts.map +1 -1
  45. package/dist/server/src/content-types/release-action/schema.d.ts +3 -5
  46. package/dist/server/src/content-types/release-action/schema.d.ts.map +1 -1
  47. package/dist/server/src/controllers/index.d.ts +6 -1
  48. package/dist/server/src/controllers/index.d.ts.map +1 -1
  49. package/dist/server/src/controllers/release-action.d.ts.map +1 -1
  50. package/dist/server/src/controllers/release.d.ts +7 -1
  51. package/dist/server/src/controllers/release.d.ts.map +1 -1
  52. package/dist/server/src/controllers/settings.d.ts +11 -0
  53. package/dist/server/src/controllers/settings.d.ts.map +1 -0
  54. package/dist/server/src/controllers/validation/release-action.d.ts +7 -1
  55. package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -1
  56. package/dist/server/src/controllers/validation/release.d.ts +2 -0
  57. package/dist/server/src/controllers/validation/release.d.ts.map +1 -1
  58. package/dist/server/src/controllers/validation/settings.d.ts +3 -0
  59. package/dist/server/src/controllers/validation/settings.d.ts.map +1 -0
  60. package/dist/server/src/index.d.ts +66 -49
  61. package/dist/server/src/index.d.ts.map +1 -1
  62. package/dist/server/src/middlewares/documents.d.ts +6 -0
  63. package/dist/server/src/middlewares/documents.d.ts.map +1 -0
  64. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts +9 -0
  65. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +1 -0
  66. package/dist/server/src/migrations/index.d.ts.map +1 -1
  67. package/dist/server/src/register.d.ts.map +1 -1
  68. package/dist/server/src/routes/index.d.ts +16 -0
  69. package/dist/server/src/routes/index.d.ts.map +1 -1
  70. package/dist/server/src/routes/release.d.ts.map +1 -1
  71. package/dist/server/src/routes/settings.d.ts +18 -0
  72. package/dist/server/src/routes/settings.d.ts.map +1 -0
  73. package/dist/server/src/services/index.d.ts +38 -38
  74. package/dist/server/src/services/index.d.ts.map +1 -1
  75. package/dist/server/src/services/release-action.d.ts +36 -0
  76. package/dist/server/src/services/release-action.d.ts.map +1 -0
  77. package/dist/server/src/services/release.d.ts +6 -41
  78. package/dist/server/src/services/release.d.ts.map +1 -1
  79. package/dist/server/src/services/settings.d.ts +13 -0
  80. package/dist/server/src/services/settings.d.ts.map +1 -0
  81. package/dist/server/src/services/validation.d.ts +1 -1
  82. package/dist/server/src/services/validation.d.ts.map +1 -1
  83. package/dist/server/src/utils/index.d.ts +29 -8
  84. package/dist/server/src/utils/index.d.ts.map +1 -1
  85. package/dist/shared/contracts/release-actions.d.ts +9 -10
  86. package/dist/shared/contracts/release-actions.d.ts.map +1 -1
  87. package/dist/shared/contracts/releases.d.ts +9 -7
  88. package/dist/shared/contracts/releases.d.ts.map +1 -1
  89. package/dist/shared/contracts/settings.d.ts +39 -0
  90. package/dist/shared/contracts/settings.d.ts.map +1 -0
  91. package/package.json +10 -9
  92. package/dist/_chunks/App-B2R2exNT.mjs.map +0 -1
  93. package/dist/_chunks/App-CEwOQkKT.js.map +0 -1
  94. package/dist/_chunks/en-B9Ur3VsE.mjs.map +0 -1
  95. package/dist/_chunks/en-DtFJ5ViE.js.map +0 -1
  96. package/dist/_chunks/index-BrWv-zV4.js.map +0 -1
  97. package/dist/_chunks/index-DbmynICx.mjs.map +0 -1
  98. package/dist/shared/validation-schemas.d.ts +0 -2
  99. package/dist/shared/validation-schemas.d.ts.map +0 -1
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const strapiAdmin = require("@strapi/admin/strapi-admin");
5
5
  const reactRouterDom = require("react-router-dom");
6
- const index = require("./index-BrWv-zV4.js");
6
+ const index = require("./index--_NWfuDG.js");
7
7
  const React = require("react");
8
8
  const strapiAdmin$1 = require("@strapi/content-manager/strapi-admin");
9
9
  const designSystem = require("@strapi/design-system");
@@ -15,7 +15,7 @@ const reactIntl = require("react-intl");
15
15
  const styledComponents = require("styled-components");
16
16
  const dateFns = require("date-fns");
17
17
  const formik = require("formik");
18
- const yup = require("yup");
18
+ const schemas = require("./schemas-z5zp-_Gd.js");
19
19
  const reactRedux = require("react-redux");
20
20
  const ee = require("@strapi/admin/strapi-admin/ee");
21
21
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
@@ -39,7 +39,6 @@ function _interopNamespace(e) {
39
39
  }
40
40
  const React__namespace = /* @__PURE__ */ _interopNamespace(React);
41
41
  const format__default = /* @__PURE__ */ _interopDefault(format);
42
- const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
43
42
  const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
44
43
  const RelativeTime$1 = React__namespace.forwardRef(
45
44
  ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {
@@ -70,26 +69,6 @@ const RelativeTime$1 = React__namespace.forwardRef(
70
69
  );
71
70
  }
72
71
  );
73
- const RELEASE_SCHEMA = yup__namespace.object().shape({
74
- name: yup__namespace.string().trim().required(),
75
- scheduledAt: yup__namespace.string().nullable(),
76
- isScheduled: yup__namespace.boolean().optional(),
77
- time: yup__namespace.string().when("isScheduled", {
78
- is: true,
79
- then: yup__namespace.string().trim().required(),
80
- otherwise: yup__namespace.string().nullable()
81
- }),
82
- timezone: yup__namespace.string().when("isScheduled", {
83
- is: true,
84
- then: yup__namespace.string().required().nullable(),
85
- otherwise: yup__namespace.string().nullable()
86
- }),
87
- date: yup__namespace.string().when("isScheduled", {
88
- is: true,
89
- then: yup__namespace.string().required().nullable(),
90
- otherwise: yup__namespace.string().nullable()
91
- })
92
- }).required().noUnknown();
93
72
  const ReleaseModal = ({
94
73
  handleClose,
95
74
  open,
@@ -100,7 +79,7 @@ const ReleaseModal = ({
100
79
  const { formatMessage } = reactIntl.useIntl();
101
80
  const { pathname } = reactRouterDom.useLocation();
102
81
  const isCreatingRelease = pathname === `/plugins/${index.pluginId}`;
103
- const { timezoneList, systemTimezone = { value: "UTC+00:00-Africa/Abidjan " } } = getTimezones(
82
+ const { timezoneList, systemTimezone = { value: "UTC+00:00-Africa/Abidjan " } } = index.getTimezones(
104
83
  initialValues.scheduledAt ? new Date(initialValues.scheduledAt) : /* @__PURE__ */ new Date()
105
84
  );
106
85
  const getScheduledTimestamp = (values) => {
@@ -138,19 +117,27 @@ const ReleaseModal = ({
138
117
  ...initialValues,
139
118
  timezone: initialValues.timezone ? getTimezoneWithOffset() : systemTimezone.value
140
119
  },
141
- validationSchema: RELEASE_SCHEMA,
120
+ validationSchema: schemas.RELEASE_SCHEMA,
142
121
  validateOnChange: false,
143
122
  children: ({ values, errors, handleChange, setFieldValue }) => {
144
123
  return /* @__PURE__ */ jsxRuntime.jsxs(formik.Form, { children: [
145
124
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children: [
146
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { name: "name", error: errors.name, required: true, children: [
147
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
148
- id: "content-releases.modal.form.input.label.release-name",
149
- defaultMessage: "Name"
150
- }) }),
151
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.TextInput, { value: values.name, onChange: handleChange }),
152
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
153
- ] }),
125
+ /* @__PURE__ */ jsxRuntime.jsxs(
126
+ designSystem.Field.Root,
127
+ {
128
+ name: "name",
129
+ error: errors.name && formatMessage({ id: errors.name, defaultMessage: errors.name }),
130
+ required: true,
131
+ children: [
132
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
133
+ id: "content-releases.modal.form.input.label.release-name",
134
+ defaultMessage: "Name"
135
+ }) }),
136
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.TextInput, { value: values.name, onChange: handleChange }),
137
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
138
+ ]
139
+ }
140
+ ),
154
141
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "max-content", children: /* @__PURE__ */ jsxRuntime.jsx(
155
142
  designSystem.Checkbox,
156
143
  {
@@ -186,54 +173,70 @@ const ReleaseModal = ({
186
173
  ) }),
187
174
  values.isScheduled && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
188
175
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 4, alignItems: "start", children: [
189
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { name: "date", error: errors.date, required: true, children: [
190
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
191
- id: "content-releases.modal.form.input.label.date",
192
- defaultMessage: "Date"
193
- }) }),
194
- /* @__PURE__ */ jsxRuntime.jsx(
195
- designSystem.DatePicker,
196
- {
197
- onChange: (date) => {
198
- const isoFormatDate = date ? dateFns.formatISO(date, { representation: "date" }) : null;
199
- setFieldValue("date", isoFormatDate);
200
- },
201
- clearLabel: formatMessage({
202
- id: "content-releases.modal.form.input.clearLabel",
203
- defaultMessage: "Clear"
204
- }),
205
- onClear: () => {
206
- setFieldValue("date", null);
207
- },
208
- value: values.date ? new Date(values.date) : /* @__PURE__ */ new Date(),
209
- minDate: dateFnsTz.utcToZonedTime(/* @__PURE__ */ new Date(), values.timezone.split("&")[1])
210
- }
211
- ),
212
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
213
- ] }) }),
214
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { name: "time", error: errors.time, required: true, children: [
215
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
216
- id: "content-releases.modal.form.input.label.time",
217
- defaultMessage: "Time"
218
- }) }),
219
- /* @__PURE__ */ jsxRuntime.jsx(
220
- designSystem.TimePicker,
221
- {
222
- onChange: (time) => {
223
- setFieldValue("time", time);
224
- },
225
- clearLabel: formatMessage({
226
- id: "content-releases.modal.form.input.clearLabel",
227
- defaultMessage: "Clear"
228
- }),
229
- onClear: () => {
230
- setFieldValue("time", "");
231
- },
232
- value: values.time || void 0
233
- }
234
- ),
235
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
236
- ] }) })
176
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(
177
+ designSystem.Field.Root,
178
+ {
179
+ name: "date",
180
+ error: errors.date && formatMessage({ id: errors.date, defaultMessage: errors.date }),
181
+ required: true,
182
+ children: [
183
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
184
+ id: "content-releases.modal.form.input.label.date",
185
+ defaultMessage: "Date"
186
+ }) }),
187
+ /* @__PURE__ */ jsxRuntime.jsx(
188
+ designSystem.DatePicker,
189
+ {
190
+ onChange: (date) => {
191
+ const isoFormatDate = date ? dateFns.formatISO(date, { representation: "date" }) : null;
192
+ setFieldValue("date", isoFormatDate);
193
+ },
194
+ clearLabel: formatMessage({
195
+ id: "content-releases.modal.form.input.clearLabel",
196
+ defaultMessage: "Clear"
197
+ }),
198
+ onClear: () => {
199
+ setFieldValue("date", null);
200
+ },
201
+ value: values.date ? new Date(values.date) : /* @__PURE__ */ new Date(),
202
+ minDate: dateFnsTz.utcToZonedTime(/* @__PURE__ */ new Date(), values.timezone.split("&")[1])
203
+ }
204
+ ),
205
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
206
+ ]
207
+ }
208
+ ) }),
209
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(
210
+ designSystem.Field.Root,
211
+ {
212
+ name: "time",
213
+ error: errors.time && formatMessage({ id: errors.time, defaultMessage: errors.time }),
214
+ required: true,
215
+ children: [
216
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
217
+ id: "content-releases.modal.form.input.label.time",
218
+ defaultMessage: "Time"
219
+ }) }),
220
+ /* @__PURE__ */ jsxRuntime.jsx(
221
+ designSystem.TimePicker,
222
+ {
223
+ onChange: (time) => {
224
+ setFieldValue("time", time);
225
+ },
226
+ clearLabel: formatMessage({
227
+ id: "content-releases.modal.form.input.clearLabel",
228
+ defaultMessage: "Clear"
229
+ }),
230
+ onClear: () => {
231
+ setFieldValue("time", "");
232
+ },
233
+ value: values.time || void 0
234
+ }
235
+ ),
236
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
237
+ ]
238
+ }
239
+ ) })
237
240
  ] }),
238
241
  /* @__PURE__ */ jsxRuntime.jsx(TimezoneComponent, { timezoneOptions: timezoneList })
239
242
  ] })
@@ -254,23 +257,13 @@ const ReleaseModal = ({
254
257
  )
255
258
  ] }) });
256
259
  };
257
- const getTimezones = (selectedDate) => {
258
- const timezoneList = Intl.supportedValuesOf("timeZone").map((timezone) => {
259
- const utcOffset = index.getTimezoneOffset(timezone, selectedDate);
260
- return { offset: utcOffset, value: `${utcOffset}&${timezone}` };
261
- });
262
- const systemTimezone = timezoneList.find(
263
- (timezone) => timezone.value.split("&")[1] === Intl.DateTimeFormat().resolvedOptions().timeZone
264
- );
265
- return { timezoneList, systemTimezone };
266
- };
267
260
  const TimezoneComponent = ({ timezoneOptions }) => {
268
261
  const { values, errors, setFieldValue } = formik.useFormikContext();
269
262
  const { formatMessage } = reactIntl.useIntl();
270
263
  const [timezoneList, setTimezoneList] = React__namespace.useState(timezoneOptions);
271
264
  React__namespace.useEffect(() => {
272
265
  if (values.date) {
273
- const { timezoneList: timezoneList2 } = getTimezones(new Date(values.date));
266
+ const { timezoneList: timezoneList2 } = index.getTimezones(new Date(values.date));
274
267
  setTimezoneList(timezoneList2);
275
268
  const updatedTimezone = values.timezone && timezoneList2.find((tz) => tz.value.split("&")[1] === values.timezone.split("&")[1]);
276
269
  if (updatedTimezone) {
@@ -278,31 +271,39 @@ const TimezoneComponent = ({ timezoneOptions }) => {
278
271
  }
279
272
  }
280
273
  }, [setFieldValue, values.date, values.timezone]);
281
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { name: "timezone", error: errors.timezone, required: true, children: [
282
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
283
- id: "content-releases.modal.form.input.label.timezone",
284
- defaultMessage: "Timezone"
285
- }) }),
286
- /* @__PURE__ */ jsxRuntime.jsx(
287
- designSystem.Combobox,
288
- {
289
- autocomplete: { type: "list", filter: "contains" },
290
- value: values.timezone || void 0,
291
- textValue: values.timezone ? values.timezone.replace(/&/, " ") : void 0,
292
- onChange: (timezone) => {
293
- setFieldValue("timezone", timezone);
294
- },
295
- onTextValueChange: (timezone) => {
296
- setFieldValue("timezone", timezone);
297
- },
298
- onClear: () => {
299
- setFieldValue("timezone", "");
300
- },
301
- children: timezoneList.map((timezone) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.ComboboxOption, { value: timezone.value, children: timezone.value.replace(/&/, " ") }, timezone.value))
302
- }
303
- ),
304
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
305
- ] });
274
+ return /* @__PURE__ */ jsxRuntime.jsxs(
275
+ designSystem.Field.Root,
276
+ {
277
+ name: "timezone",
278
+ error: errors.timezone && formatMessage({ id: errors.timezone, defaultMessage: errors.timezone }),
279
+ required: true,
280
+ children: [
281
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
282
+ id: "content-releases.modal.form.input.label.timezone",
283
+ defaultMessage: "Timezone"
284
+ }) }),
285
+ /* @__PURE__ */ jsxRuntime.jsx(
286
+ designSystem.Combobox,
287
+ {
288
+ autocomplete: { type: "list", filter: "contains" },
289
+ value: values.timezone || void 0,
290
+ textValue: values.timezone ? values.timezone.replace(/&/, " ") : void 0,
291
+ onChange: (timezone) => {
292
+ setFieldValue("timezone", timezone);
293
+ },
294
+ onTextValueChange: (timezone) => {
295
+ setFieldValue("timezone", timezone);
296
+ },
297
+ onClear: () => {
298
+ setFieldValue("timezone", "");
299
+ },
300
+ children: timezoneList.map((timezone) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.ComboboxOption, { value: timezone.value, children: timezone.value.replace(/&/, " ") }, timezone.value))
301
+ }
302
+ ),
303
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
304
+ ]
305
+ }
306
+ );
306
307
  };
307
308
  const useTypedDispatch = reactRedux.useDispatch;
308
309
  const isBaseQueryError = (error) => {
@@ -364,7 +365,7 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
364
365
  }
365
366
  );
366
367
  }
367
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: releases.map(({ id, name, scheduledAt, status }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 3, s: 6, xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(LinkCard, { tag: reactRouterDom.NavLink, to: `${id}`, isExternal: false, children: /* @__PURE__ */ jsxRuntime.jsxs(
368
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: releases.map(({ id, name, scheduledAt, status }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 3, s: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(LinkCard, { tag: reactRouterDom.NavLink, to: `${id}`, isExternal: false, children: /* @__PURE__ */ jsxRuntime.jsxs(
368
369
  designSystem.Flex,
369
370
  {
370
371
  direction: "column",
@@ -400,7 +401,7 @@ const StyledAlert = styledComponents.styled(designSystem.Alert)`
400
401
  `;
401
402
  const INITIAL_FORM_VALUES = {
402
403
  name: "",
403
- date: void 0,
404
+ date: dateFns.format(/* @__PURE__ */ new Date(), "yyyy-MM-dd"),
404
405
  time: "",
405
406
  isScheduled: true,
406
407
  scheduledAt: null,
@@ -415,6 +416,7 @@ const ReleasesPage = () => {
415
416
  const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
416
417
  const [{ query }, setQuery] = strapiAdmin.useQueryParams();
417
418
  const response = index.useGetReleasesQuery(query);
419
+ const { data, isLoading: isLoadingSettings } = index.useGetReleaseSettingsQuery();
418
420
  const [createRelease, { isLoading: isSubmittingForm }] = index.useCreateReleaseMutation();
419
421
  const { getFeature } = ee.useLicenseLimits();
420
422
  const { maximumReleases = 3 } = getFeature("cms-content-releases");
@@ -422,7 +424,7 @@ const ReleasesPage = () => {
422
424
  const {
423
425
  allowedActions: { canCreate }
424
426
  } = strapiAdmin.useRBAC(index.PERMISSIONS);
425
- const { isLoading, isSuccess, isError } = response;
427
+ const { isLoading: isLoadingReleases, isSuccess, isError } = response;
426
428
  const activeTab = response?.currentData?.meta?.activeTab || "pending";
427
429
  React__namespace.useEffect(() => {
428
430
  if (location?.state?.errors) {
@@ -443,7 +445,7 @@ const ReleasesPage = () => {
443
445
  const toggleAddReleaseModal = () => {
444
446
  setReleaseModalShown((prev) => !prev);
445
447
  };
446
- if (isLoading) {
448
+ if (isLoadingReleases || isLoadingSettings) {
447
449
  return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
448
450
  }
449
451
  const totalPendingReleases = isSuccess && response.currentData?.meta?.pendingReleasesCount || 0;
@@ -488,7 +490,7 @@ const ReleasesPage = () => {
488
490
  });
489
491
  }
490
492
  };
491
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { "aria-busy": isLoading, children: [
493
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { "aria-busy": isLoadingReleases || isLoadingSettings, children: [
492
494
  /* @__PURE__ */ jsxRuntime.jsx(
493
495
  strapiAdmin.Layouts.Header,
494
496
  {
@@ -603,7 +605,10 @@ const ReleasesPage = () => {
603
605
  handleClose: toggleAddReleaseModal,
604
606
  handleSubmit: handleAddRelease,
605
607
  isLoading: isSubmittingForm,
606
- initialValues: INITIAL_FORM_VALUES
608
+ initialValues: {
609
+ ...INITIAL_FORM_VALUES,
610
+ timezone: data?.data.defaultTimezone ? data.data.defaultTimezone.split("&")[1] : null
611
+ }
607
612
  }
608
613
  )
609
614
  ] });
@@ -614,7 +619,7 @@ const ReleaseInfoWrapper = styledComponents.styled(designSystem.Flex)`
614
619
  border-bottom-left-radius: ${({ theme }) => theme.borderRadius};
615
620
  border-top: 1px solid ${({ theme }) => theme.colors.neutral150};
616
621
  `;
617
- const StyledMenuItem = styledComponents.styled(designSystem.Menu.Item)`
622
+ const StyledMenuItem = styledComponents.styled(designSystem.MenuItem)`
618
623
  svg path {
619
624
  fill: ${({ theme, disabled }) => disabled && theme.colors.neutral500};
620
625
  }
@@ -643,42 +648,72 @@ const TrashIcon = styledComponents.styled(icons.Trash)`
643
648
  const TypographyMaxWidth = styledComponents.styled(designSystem.Typography)`
644
649
  max-width: 300px;
645
650
  `;
646
- const EntryValidationText = ({ action, schema, entry }) => {
651
+ const EntryValidationText = ({ action, schema, entry, status }) => {
647
652
  const { formatMessage } = reactIntl.useIntl();
648
- const { validate } = strapiAdmin$1.unstable_useDocument(
653
+ const { validate, isLoading } = strapiAdmin$1.unstable_useDocument(
649
654
  {
650
655
  collectionType: schema?.kind ?? "",
651
656
  model: schema?.uid ?? ""
652
657
  },
653
658
  {
654
- skip: !schema
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
655
661
  }
656
662
  );
657
- const errors = validate(entry) ?? {};
658
- if (Object.keys(errors).length > 0) {
659
- const validationErrorsMessages = Object.entries(errors).map(
660
- ([key, value]) => formatMessage(
661
- // @ts-expect-error – TODO: fix this will better checks
662
- { id: `${value.id}.withField`, defaultMessage: value.defaultMessage },
663
- { field: key }
664
- )
665
- ).join(" ");
666
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
667
- /* @__PURE__ */ jsxRuntime.jsx(icons.CrossCircle, { fill: "danger600" }),
668
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tooltip, { description: validationErrorsMessages, children: /* @__PURE__ */ jsxRuntime.jsx(TypographyMaxWidth, { textColor: "danger600", variant: "omega", fontWeight: "semiBold", ellipsis: true, children: validationErrorsMessages }) })
669
- ] });
663
+ if (isLoading) {
664
+ return null;
670
665
  }
671
- if (action == "publish") {
672
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
673
- /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }),
674
- entry.publishedAt ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "success600", fontWeight: "bold", children: formatMessage({
675
- id: "content-releases.pages.ReleaseDetails.entry-validation.already-published",
676
- defaultMessage: "Already published"
677
- }) }) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
678
- id: "content-releases.pages.ReleaseDetails.entry-validation.ready-to-publish",
679
- defaultMessage: "Ready to publish"
680
- }) })
681
- ] });
666
+ const errors = validate(entry) ?? {};
667
+ if (action === "publish") {
668
+ if (Object.keys(errors).length > 0) {
669
+ const validationErrorsMessages = Object.entries(errors).map(
670
+ ([key, value]) => formatMessage(
671
+ // @ts-expect-error – TODO: fix this will better checks
672
+ { id: `${value.id}.withField`, defaultMessage: value.defaultMessage },
673
+ { field: key }
674
+ )
675
+ ).join(" ");
676
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
677
+ /* @__PURE__ */ jsxRuntime.jsx(icons.CrossCircle, { fill: "danger600" }),
678
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tooltip, { description: validationErrorsMessages, children: /* @__PURE__ */ jsxRuntime.jsx(
679
+ TypographyMaxWidth,
680
+ {
681
+ textColor: "danger600",
682
+ variant: "omega",
683
+ fontWeight: "semiBold",
684
+ ellipsis: true,
685
+ children: validationErrorsMessages
686
+ }
687
+ ) })
688
+ ] });
689
+ }
690
+ if (status === "draft") {
691
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
692
+ /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }),
693
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
694
+ id: "content-releases.pages.ReleaseDetails.entry-validation.ready-to-publish",
695
+ defaultMessage: "Ready to publish"
696
+ }) })
697
+ ] });
698
+ }
699
+ if (status === "modified") {
700
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
701
+ /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowsCounterClockwise, { fill: "alternative600" }),
702
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
703
+ id: "content-releases.pages.ReleaseDetails.entry-validation.modified",
704
+ defaultMessage: "Ready to publish changes"
705
+ }) })
706
+ ] });
707
+ }
708
+ if (status === "published") {
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.already-published",
713
+ defaultMessage: "Already published"
714
+ }) })
715
+ ] });
716
+ }
682
717
  }
683
718
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
684
719
  /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }),
@@ -824,83 +859,71 @@ const ReleaseDetailsLayout = ({
824
859
  ] }),
825
860
  navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {}),
826
861
  primaryAction: !release.releasedAt && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
827
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Root, { children: [
828
- /* @__PURE__ */ jsxRuntime.jsx(
829
- designSystem.Menu.Trigger,
830
- {
831
- paddingLeft: 2,
832
- paddingRight: 2,
833
- "aria-label": formatMessage({
834
- id: "content-releases.header.actions.open-release-actions",
835
- defaultMessage: "Release edit and delete menu"
836
- }),
837
- variant: "tertiary",
838
- children: /* @__PURE__ */ jsxRuntime.jsx(icons.More, {})
839
- }
840
- ),
841
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Content, { top: 1, popoverPlacement: "bottom-end", maxHeight: void 0, children: [
842
- /* @__PURE__ */ jsxRuntime.jsxs(
843
- designSystem.Flex,
844
- {
845
- alignItems: "center",
846
- justifyContent: "center",
847
- direction: "column",
848
- padding: 1,
849
- width: "100%",
850
- children: [
851
- /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { disabled: !canUpdate, onSelect: toggleEditReleaseModal, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { alignItems: "center", gap: 2, hasRadius: true, width: "100%", children: [
852
- /* @__PURE__ */ jsxRuntime.jsx(PencilIcon, {}),
853
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, children: formatMessage({
854
- id: "content-releases.header.actions.edit",
855
- defaultMessage: "Edit"
862
+ /* @__PURE__ */ jsxRuntime.jsxs(
863
+ SimpleMenuButton,
864
+ {
865
+ label: /* @__PURE__ */ jsxRuntime.jsx(icons.More, {}),
866
+ variant: "tertiary",
867
+ endIcon: null,
868
+ paddingLeft: "7px",
869
+ paddingRight: "7px",
870
+ "aria-label": formatMessage({
871
+ id: "content-releases.header.actions.open-release-actions",
872
+ defaultMessage: "Release edit and delete menu"
873
+ }),
874
+ popoverPlacement: "bottom-end",
875
+ children: [
876
+ /* @__PURE__ */ jsxRuntime.jsx(StyledMenuItem, { disabled: !canUpdate, onSelect: toggleEditReleaseModal, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { alignItems: "center", gap: 2, hasRadius: true, width: "100%", children: [
877
+ /* @__PURE__ */ jsxRuntime.jsx(PencilIcon, {}),
878
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, children: formatMessage({
879
+ id: "content-releases.header.actions.edit",
880
+ defaultMessage: "Edit"
881
+ }) })
882
+ ] }) }),
883
+ /* @__PURE__ */ jsxRuntime.jsx(
884
+ StyledMenuItem,
885
+ {
886
+ disabled: !canDelete,
887
+ onSelect: toggleWarningSubmit,
888
+ $variant: "danger",
889
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { alignItems: "center", gap: 2, hasRadius: true, width: "100%", children: [
890
+ /* @__PURE__ */ jsxRuntime.jsx(TrashIcon, {}),
891
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, textColor: "danger600", children: formatMessage({
892
+ id: "content-releases.header.actions.delete",
893
+ defaultMessage: "Delete"
856
894
  }) })
857
- ] }) }),
858
- /* @__PURE__ */ jsxRuntime.jsx(
859
- StyledMenuItem,
860
- {
861
- disabled: !canDelete,
862
- onSelect: toggleWarningSubmit,
863
- $variant: "danger",
864
- children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { alignItems: "center", gap: 2, hasRadius: true, width: "100%", children: [
865
- /* @__PURE__ */ jsxRuntime.jsx(TrashIcon, {}),
866
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, textColor: "danger600", children: formatMessage({
867
- id: "content-releases.header.actions.delete",
868
- defaultMessage: "Delete"
869
- }) })
870
- ] })
871
- }
872
- )
873
- ]
874
- }
875
- ),
876
- /* @__PURE__ */ jsxRuntime.jsxs(
877
- ReleaseInfoWrapper,
878
- {
879
- direction: "column",
880
- justifyContent: "center",
881
- alignItems: "flex-start",
882
- gap: 1,
883
- padding: 5,
884
- children: [
885
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "bold", children: formatMessage({
886
- id: "content-releases.header.actions.created",
887
- defaultMessage: "Created"
888
- }) }),
889
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", color: "neutral300", children: [
890
- /* @__PURE__ */ jsxRuntime.jsx(RelativeTime$1, { timestamp: new Date(release.createdAt) }),
891
- formatMessage(
892
- {
893
- id: "content-releases.header.actions.created.description",
894
- defaultMessage: "{hasCreatedByUser, select, true { by {createdBy}} other { by deleted user}}"
895
- },
896
- { createdBy: getCreatedByUser(), hasCreatedByUser }
897
- )
898
895
  ] })
899
- ]
900
- }
901
- )
902
- ] })
903
- ] }),
896
+ }
897
+ ),
898
+ /* @__PURE__ */ jsxRuntime.jsxs(
899
+ ReleaseInfoWrapper,
900
+ {
901
+ direction: "column",
902
+ justifyContent: "center",
903
+ alignItems: "flex-start",
904
+ gap: 1,
905
+ padding: 5,
906
+ children: [
907
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "bold", children: formatMessage({
908
+ id: "content-releases.header.actions.created",
909
+ defaultMessage: "Created"
910
+ }) }),
911
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", color: "neutral300", children: [
912
+ /* @__PURE__ */ jsxRuntime.jsx(RelativeTime$1, { timestamp: new Date(release.createdAt) }),
913
+ formatMessage(
914
+ {
915
+ id: "content-releases.header.actions.created.description",
916
+ defaultMessage: "{hasCreatedByUser, select, true { by {createdBy}} other { by deleted user}}"
917
+ },
918
+ { createdBy: getCreatedByUser(), hasCreatedByUser }
919
+ )
920
+ ] })
921
+ ]
922
+ }
923
+ )
924
+ ]
925
+ }
926
+ ),
904
927
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { size: "S", variant: "tertiary", onClick: handleRefresh, children: formatMessage({
905
928
  id: "content-releases.header.actions.refresh",
906
929
  defaultMessage: "Refresh"
@@ -925,6 +948,11 @@ const ReleaseDetailsLayout = ({
925
948
  children
926
949
  ] });
927
950
  };
951
+ const SimpleMenuButton = styledComponents.styled(designSystem.SimpleMenu)`
952
+ & > span {
953
+ display: flex;
954
+ }
955
+ `;
928
956
  const GROUP_BY_OPTIONS = ["contentType", "locale", "action"];
929
957
  const GROUP_BY_OPTIONS_NO_LOCALE = ["contentType", "action"];
930
958
  const getGroupByOptionLabel = (value) => {
@@ -959,19 +987,18 @@ const ReleaseDetailsBody = ({ releaseId }) => {
959
987
  allowedActions: { canUpdate }
960
988
  } = strapiAdmin.useRBAC(index.PERMISSIONS);
961
989
  const runHookWaterfall = strapiAdmin.useStrapiApp("ReleaseDetailsPage", (state) => state.runHookWaterfall);
962
- const { hasI18nEnabled } = runHookWaterfall(
963
- "ContentReleases/pages/ReleaseDetails/add-locale-in-releases",
964
- {
965
- displayedHeaders: {
966
- label: formatMessage({
967
- id: "content-releases.page.ReleaseDetails.table.header.label.locale",
968
- defaultMessage: "locale"
969
- }),
970
- name: "locale"
971
- },
972
- hasI18nEnabled: false
973
- }
974
- );
990
+ const { displayedHeaders, hasI18nEnabled } = runHookWaterfall("ContentReleases/pages/ReleaseDetails/add-locale-in-releases", {
991
+ displayedHeaders: [
992
+ {
993
+ label: {
994
+ id: "content-releases.page.ReleaseDetails.table.header.label.name",
995
+ defaultMessage: "name"
996
+ },
997
+ name: "name"
998
+ }
999
+ ],
1000
+ hasI18nEnabled: false
1001
+ });
975
1002
  const release = releaseData?.data;
976
1003
  const selectedGroupBy = query?.groupBy || "contentType";
977
1004
  const {
@@ -1077,34 +1104,27 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1077
1104
  defaultMessage: "Group by"
1078
1105
  });
1079
1106
  const headers = [
1080
- // ...displayedHeaders,
1107
+ ...displayedHeaders,
1081
1108
  {
1082
- label: formatMessage({
1083
- id: "content-releases.page.ReleaseDetails.table.header.label.name",
1084
- defaultMessage: "name"
1085
- }),
1086
- name: "name"
1087
- },
1088
- {
1089
- label: formatMessage({
1109
+ label: {
1090
1110
  id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
1091
1111
  defaultMessage: "content-type"
1092
- }),
1112
+ },
1093
1113
  name: "content-type"
1094
1114
  },
1095
1115
  {
1096
- label: formatMessage({
1116
+ label: {
1097
1117
  id: "content-releases.page.ReleaseDetails.table.header.label.action",
1098
1118
  defaultMessage: "action"
1099
- }),
1119
+ },
1100
1120
  name: "action"
1101
1121
  },
1102
1122
  ...!release.releasedAt ? [
1103
1123
  {
1104
- label: formatMessage({
1124
+ label: {
1105
1125
  id: "content-releases.page.ReleaseDetails.table.header.label.status",
1106
1126
  defaultMessage: "status"
1107
- }),
1127
+ },
1108
1128
  name: "status"
1109
1129
  }
1110
1130
  ] : []
@@ -1142,10 +1162,10 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1142
1162
  headers,
1143
1163
  isLoading: isLoading || isFetching,
1144
1164
  children: /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Table.Content, { children: [
1145
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Head, { children: headers.map((header) => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.HeaderCell, { ...header }, header.name)) }),
1165
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Head, { children: headers.map(({ label, name }) => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.HeaderCell, { label: formatMessage(label), name }, name)) }),
1146
1166
  /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Loading, {}),
1147
1167
  /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Body, { children: releaseActions[key].map(
1148
- ({ id, contentType, locale, type, entry }, actionIndex) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
1168
+ ({ id, contentType, locale, type, entry, status }, actionIndex) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
1149
1169
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "25%", maxWidth: "200px", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, children: `${contentType.mainFieldValue || entry.id}` }) }),
1150
1170
  hasI18nEnabled && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "10%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: `${locale?.name ? locale.name : "-"}` }) }),
1151
1171
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "10%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: contentType.displayName || "" }) }),
@@ -1174,7 +1194,8 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1174
1194
  action: type,
1175
1195
  schema: contentTypes?.[contentType.uid],
1176
1196
  components,
1177
- entry
1197
+ entry,
1198
+ status
1178
1199
  }
1179
1200
  ) }),
1180
1201
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "flex-end", children: /* @__PURE__ */ jsxRuntime.jsxs(index.ReleaseActionMenu.Root, { children: [
@@ -1182,7 +1203,7 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1182
1203
  index.ReleaseActionMenu.ReleaseActionEntryLinkItem,
1183
1204
  {
1184
1205
  contentTypeUid: contentType.uid,
1185
- entryId: entry.id,
1206
+ documentId: entry.documentId,
1186
1207
  locale: locale?.code
1187
1208
  }
1188
1209
  ),
@@ -1232,13 +1253,24 @@ const ReleaseDetailsPage = () => {
1232
1253
  skip: !releaseId
1233
1254
  }
1234
1255
  );
1256
+ const { data: dataTimezone, isLoading: isLoadingTimezone } = index.useGetReleaseSettingsQuery();
1235
1257
  const [updateRelease, { isLoading: isSubmittingForm }] = index.useUpdateReleaseMutation();
1236
1258
  const [deleteRelease] = index.useDeleteReleaseMutation();
1237
1259
  const toggleEditReleaseModal = () => {
1238
1260
  setReleaseModalShown((prev) => !prev);
1239
1261
  };
1262
+ const getTimezoneValue = () => {
1263
+ if (releaseData?.timezone) {
1264
+ return releaseData.timezone;
1265
+ } else {
1266
+ if (dataTimezone?.data.defaultTimezone) {
1267
+ return dataTimezone.data.defaultTimezone;
1268
+ }
1269
+ return null;
1270
+ }
1271
+ };
1240
1272
  const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);
1241
- if (isLoadingDetails) {
1273
+ if (isLoadingDetails || isLoadingTimezone) {
1242
1274
  return /* @__PURE__ */ jsxRuntime.jsx(
1243
1275
  ReleaseDetailsLayout,
1244
1276
  {
@@ -1253,7 +1285,7 @@ const ReleaseDetailsPage = () => {
1253
1285
  }
1254
1286
  const releaseData = isSuccessDetails && data?.data || null;
1255
1287
  const title = releaseData?.name || "";
1256
- const timezone = releaseData?.timezone ?? null;
1288
+ const timezone = getTimezoneValue();
1257
1289
  const scheduledAt = releaseData?.scheduledAt && timezone ? dateFnsTz.utcToZonedTime(releaseData.scheduledAt, timezone) : null;
1258
1290
  const date = scheduledAt ? format__default.default(scheduledAt, "yyyy-MM-dd") : void 0;
1259
1291
  const time = scheduledAt ? format__default.default(scheduledAt, "HH:mm") : "";
@@ -1342,4 +1374,4 @@ const App = () => {
1342
1374
  ] }) });
1343
1375
  };
1344
1376
  exports.App = App;
1345
- //# sourceMappingURL=App-CEwOQkKT.js.map
1377
+ //# sourceMappingURL=App-fAgiijnc.js.map