@strapi/content-releases 0.0.0-next.e6eaa3d0563c85f80fd88b258df70a55c057096e → 0.0.0-next.ea6e3b80ab37f554da4f8bde08dbfe9b57400d31

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 (143) hide show
  1. package/LICENSE +17 -1
  2. package/dist/_chunks/App-BX6_LcmS.mjs +1559 -0
  3. package/dist/_chunks/App-BX6_LcmS.mjs.map +1 -0
  4. package/dist/_chunks/App-DITZWWqI.js +1580 -0
  5. package/dist/_chunks/App-DITZWWqI.js.map +1 -0
  6. package/dist/_chunks/{PurchaseContentReleases-YhAPgpG9.js → PurchaseContentReleases-Be3acS2L.js} +8 -7
  7. package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js.map +1 -0
  8. package/dist/_chunks/{PurchaseContentReleases-Clm0iACO.mjs → PurchaseContentReleases-_MxP6-Dt.mjs} +9 -8
  9. package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs.map +1 -0
  10. package/dist/_chunks/ReleasesSettingsPage-BMgLwqci.mjs +178 -0
  11. package/dist/_chunks/ReleasesSettingsPage-BMgLwqci.mjs.map +1 -0
  12. package/dist/_chunks/ReleasesSettingsPage-DZcRvN_O.js +178 -0
  13. package/dist/_chunks/ReleasesSettingsPage-DZcRvN_O.js.map +1 -0
  14. package/dist/_chunks/{en-faJDuv3q.js → en-BWPPsSH-.js} +28 -3
  15. package/dist/_chunks/en-BWPPsSH-.js.map +1 -0
  16. package/dist/_chunks/{en-RdapH-9X.mjs → en-D9Q4YW03.mjs} +28 -3
  17. package/dist/_chunks/en-D9Q4YW03.mjs.map +1 -0
  18. package/dist/_chunks/index-CBsSVKTv.mjs +1380 -0
  19. package/dist/_chunks/index-CBsSVKTv.mjs.map +1 -0
  20. package/dist/_chunks/index-TfMp19WL.js +1399 -0
  21. package/dist/_chunks/index-TfMp19WL.js.map +1 -0
  22. package/dist/_chunks/schemas-BE1LxE9J.js +62 -0
  23. package/dist/_chunks/schemas-BE1LxE9J.js.map +1 -0
  24. package/dist/_chunks/schemas-DdA2ic2U.mjs +44 -0
  25. package/dist/_chunks/schemas-DdA2ic2U.mjs.map +1 -0
  26. package/dist/admin/index.js +1 -15
  27. package/dist/admin/index.js.map +1 -1
  28. package/dist/admin/index.mjs +2 -16
  29. package/dist/admin/index.mjs.map +1 -1
  30. package/dist/admin/src/components/EntryValidationPopover.d.ts +13 -0
  31. package/dist/admin/src/components/RelativeTime.d.ts +28 -0
  32. package/dist/admin/src/components/ReleaseAction.d.ts +3 -0
  33. package/dist/admin/src/components/ReleaseActionMenu.d.ts +26 -0
  34. package/dist/admin/src/components/ReleaseActionModal.d.ts +24 -0
  35. package/dist/admin/src/components/ReleaseActionOptions.d.ts +9 -0
  36. package/dist/admin/src/components/ReleaseListCell.d.ts +28 -0
  37. package/dist/admin/src/components/ReleaseModal.d.ts +17 -0
  38. package/dist/admin/src/components/ReleasesPanel.d.ts +3 -0
  39. package/dist/admin/src/constants.d.ts +76 -0
  40. package/dist/admin/src/index.d.ts +3 -0
  41. package/dist/admin/src/modules/hooks.d.ts +7 -0
  42. package/dist/admin/src/pages/App.d.ts +1 -0
  43. package/dist/admin/src/pages/PurchaseContentReleases.d.ts +2 -0
  44. package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +2 -0
  45. package/dist/admin/src/pages/ReleasesPage.d.ts +8 -0
  46. package/dist/admin/src/pages/ReleasesSettingsPage.d.ts +1 -0
  47. package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +181 -0
  48. package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +39 -0
  49. package/dist/admin/src/pluginId.d.ts +1 -0
  50. package/dist/admin/src/services/release.d.ts +112 -0
  51. package/dist/admin/src/store/hooks.d.ts +7 -0
  52. package/dist/admin/src/utils/api.d.ts +6 -0
  53. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
  54. package/dist/admin/src/utils/time.d.ts +10 -0
  55. package/dist/admin/src/validation/schemas.d.ts +6 -0
  56. package/dist/server/index.js +951 -616
  57. package/dist/server/index.js.map +1 -1
  58. package/dist/server/index.mjs +952 -616
  59. package/dist/server/index.mjs.map +1 -1
  60. package/dist/server/src/bootstrap.d.ts +5 -0
  61. package/dist/server/src/bootstrap.d.ts.map +1 -0
  62. package/dist/server/src/constants.d.ts +21 -0
  63. package/dist/server/src/constants.d.ts.map +1 -0
  64. package/dist/server/src/content-types/index.d.ts +97 -0
  65. package/dist/server/src/content-types/index.d.ts.map +1 -0
  66. package/dist/server/src/content-types/release/index.d.ts +48 -0
  67. package/dist/server/src/content-types/release/index.d.ts.map +1 -0
  68. package/dist/server/src/content-types/release/schema.d.ts +47 -0
  69. package/dist/server/src/content-types/release/schema.d.ts.map +1 -0
  70. package/dist/server/src/content-types/release-action/index.d.ts +48 -0
  71. package/dist/server/src/content-types/release-action/index.d.ts.map +1 -0
  72. package/dist/server/src/content-types/release-action/schema.d.ts +47 -0
  73. package/dist/server/src/content-types/release-action/schema.d.ts.map +1 -0
  74. package/dist/server/src/controllers/index.d.ts +25 -0
  75. package/dist/server/src/controllers/index.d.ts.map +1 -0
  76. package/dist/server/src/controllers/release-action.d.ts +10 -0
  77. package/dist/server/src/controllers/release-action.d.ts.map +1 -0
  78. package/dist/server/src/controllers/release.d.ts +18 -0
  79. package/dist/server/src/controllers/release.d.ts.map +1 -0
  80. package/dist/server/src/controllers/settings.d.ts +11 -0
  81. package/dist/server/src/controllers/settings.d.ts.map +1 -0
  82. package/dist/server/src/controllers/validation/release-action.d.ts +14 -0
  83. package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -0
  84. package/dist/server/src/controllers/validation/release.d.ts +4 -0
  85. package/dist/server/src/controllers/validation/release.d.ts.map +1 -0
  86. package/dist/server/src/controllers/validation/settings.d.ts +3 -0
  87. package/dist/server/src/controllers/validation/settings.d.ts.map +1 -0
  88. package/dist/server/src/destroy.d.ts +5 -0
  89. package/dist/server/src/destroy.d.ts.map +1 -0
  90. package/dist/server/src/index.d.ts +2111 -0
  91. package/dist/server/src/index.d.ts.map +1 -0
  92. package/dist/server/src/middlewares/documents.d.ts +6 -0
  93. package/dist/server/src/middlewares/documents.d.ts.map +1 -0
  94. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts +9 -0
  95. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +1 -0
  96. package/dist/server/src/migrations/index.d.ts +13 -0
  97. package/dist/server/src/migrations/index.d.ts.map +1 -0
  98. package/dist/server/src/register.d.ts +5 -0
  99. package/dist/server/src/register.d.ts.map +1 -0
  100. package/dist/server/src/routes/index.d.ts +51 -0
  101. package/dist/server/src/routes/index.d.ts.map +1 -0
  102. package/dist/server/src/routes/release-action.d.ts +18 -0
  103. package/dist/server/src/routes/release-action.d.ts.map +1 -0
  104. package/dist/server/src/routes/release.d.ts +18 -0
  105. package/dist/server/src/routes/release.d.ts.map +1 -0
  106. package/dist/server/src/routes/settings.d.ts +18 -0
  107. package/dist/server/src/routes/settings.d.ts.map +1 -0
  108. package/dist/server/src/services/index.d.ts +1824 -0
  109. package/dist/server/src/services/index.d.ts.map +1 -0
  110. package/dist/server/src/services/release-action.d.ts +34 -0
  111. package/dist/server/src/services/release-action.d.ts.map +1 -0
  112. package/dist/server/src/services/release.d.ts +31 -0
  113. package/dist/server/src/services/release.d.ts.map +1 -0
  114. package/dist/server/src/services/scheduling.d.ts +18 -0
  115. package/dist/server/src/services/scheduling.d.ts.map +1 -0
  116. package/dist/server/src/services/settings.d.ts +13 -0
  117. package/dist/server/src/services/settings.d.ts.map +1 -0
  118. package/dist/server/src/services/validation.d.ts +18 -0
  119. package/dist/server/src/services/validation.d.ts.map +1 -0
  120. package/dist/server/src/utils/index.d.ts +35 -0
  121. package/dist/server/src/utils/index.d.ts.map +1 -0
  122. package/dist/shared/contracts/release-actions.d.ts +137 -0
  123. package/dist/shared/contracts/release-actions.d.ts.map +1 -0
  124. package/dist/shared/contracts/releases.d.ts +184 -0
  125. package/dist/shared/contracts/releases.d.ts.map +1 -0
  126. package/dist/shared/contracts/settings.d.ts +39 -0
  127. package/dist/shared/contracts/settings.d.ts.map +1 -0
  128. package/dist/shared/types.d.ts +24 -0
  129. package/dist/shared/types.d.ts.map +1 -0
  130. package/package.json +35 -39
  131. package/dist/_chunks/App-R-kksTW7.mjs +0 -1308
  132. package/dist/_chunks/App-R-kksTW7.mjs.map +0 -1
  133. package/dist/_chunks/App-WZHc_d3m.js +0 -1331
  134. package/dist/_chunks/App-WZHc_d3m.js.map +0 -1
  135. package/dist/_chunks/PurchaseContentReleases-Clm0iACO.mjs.map +0 -1
  136. package/dist/_chunks/PurchaseContentReleases-YhAPgpG9.js.map +0 -1
  137. package/dist/_chunks/en-RdapH-9X.mjs.map +0 -1
  138. package/dist/_chunks/en-faJDuv3q.js.map +0 -1
  139. package/dist/_chunks/index-k6fw6RYi.js +0 -1033
  140. package/dist/_chunks/index-k6fw6RYi.js.map +0 -1
  141. package/dist/_chunks/index-vpSczx8v.mjs +0 -1012
  142. package/dist/_chunks/index-vpSczx8v.mjs.map +0 -1
  143. package/strapi-server.js +0 -3
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const strapiAdmin = require("@strapi/admin/strapi-admin");
5
+ const designSystem = require("@strapi/design-system");
6
+ const icons = require("@strapi/icons");
7
+ const reactIntl = require("react-intl");
8
+ const reactRedux = require("react-redux");
9
+ const index = require("./index-TfMp19WL.js");
10
+ const schemas = require("./schemas-BE1LxE9J.js");
11
+ const useTypedSelector = reactRedux.useSelector;
12
+ const ReleasesSettingsPage = () => {
13
+ const { formatMessage } = reactIntl.useIntl();
14
+ const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
15
+ const { toggleNotification } = strapiAdmin.useNotification();
16
+ const { data, isLoading: isLoadingSettings } = index.useGetReleaseSettingsQuery();
17
+ const [updateReleaseSettings, { isLoading: isSubmittingForm }] = index.useUpdateReleaseSettingsMutation();
18
+ const permissions = useTypedSelector(
19
+ (state) => state.admin_app.permissions["settings"]?.["releases"]
20
+ );
21
+ const {
22
+ allowedActions: { canUpdate }
23
+ } = strapiAdmin.useRBAC(permissions);
24
+ const { timezoneList } = index.getTimezones(/* @__PURE__ */ new Date());
25
+ const handleSubmit = async (body) => {
26
+ const { defaultTimezone } = body;
27
+ const isBodyTimezoneValid = timezoneList.some((timezone) => timezone.value === defaultTimezone);
28
+ const newBody = !defaultTimezone || !isBodyTimezoneValid ? { defaultTimezone: null } : { ...body };
29
+ try {
30
+ const response = await updateReleaseSettings(newBody);
31
+ if ("data" in response) {
32
+ toggleNotification({
33
+ type: "success",
34
+ message: formatMessage({
35
+ id: "content-releases.pages.Settings.releases.setting.default-timezone-notification-success",
36
+ defaultMessage: "Default timezone updated."
37
+ })
38
+ });
39
+ } else if (strapiAdmin.isFetchError(response.error)) {
40
+ toggleNotification({
41
+ type: "danger",
42
+ message: formatAPIError(response.error)
43
+ });
44
+ } else {
45
+ toggleNotification({
46
+ type: "danger",
47
+ message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
48
+ });
49
+ }
50
+ } catch (error) {
51
+ toggleNotification({
52
+ type: "danger",
53
+ message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
54
+ });
55
+ }
56
+ };
57
+ if (isLoadingSettings) {
58
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
59
+ }
60
+ return /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Layouts.Root, { children: [
61
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Title, { children: formatMessage(
62
+ { id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
63
+ {
64
+ name: "Releases"
65
+ }
66
+ ) }),
67
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Main, { "aria-busy": isLoadingSettings, tabIndex: -1, children: /* @__PURE__ */ jsxRuntime.jsx(
68
+ strapiAdmin.Form,
69
+ {
70
+ method: "PUT",
71
+ initialValues: {
72
+ defaultTimezone: data?.data.defaultTimezone
73
+ },
74
+ onSubmit: handleSubmit,
75
+ validationSchema: schemas.SETTINGS_SCHEMA,
76
+ children: ({ modified, isSubmitting }) => {
77
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
78
+ /* @__PURE__ */ jsxRuntime.jsx(
79
+ strapiAdmin.Layouts.Header,
80
+ {
81
+ primaryAction: canUpdate ? /* @__PURE__ */ jsxRuntime.jsx(
82
+ designSystem.Button,
83
+ {
84
+ disabled: !modified || isSubmittingForm,
85
+ loading: isSubmitting,
86
+ startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}),
87
+ type: "submit",
88
+ children: formatMessage({
89
+ id: "global.save",
90
+ defaultMessage: "Save"
91
+ })
92
+ }
93
+ ) : null,
94
+ title: formatMessage({
95
+ id: "content-releases.pages.Settings.releases.title",
96
+ defaultMessage: "Releases"
97
+ }),
98
+ subtitle: formatMessage({
99
+ id: "content-releases.pages.Settings.releases.description",
100
+ defaultMessage: "Create and manage content updates"
101
+ })
102
+ }
103
+ ),
104
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(
105
+ designSystem.Flex,
106
+ {
107
+ direction: "column",
108
+ background: "neutral0",
109
+ alignItems: "stretch",
110
+ padding: 6,
111
+ gap: 6,
112
+ shadow: "filterShadow",
113
+ hasRadius: true,
114
+ children: [
115
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: formatMessage({
116
+ id: "content-releases.pages.Settings.releases.preferences.title",
117
+ defaultMessage: "Preferences"
118
+ }) }),
119
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(TimezoneDropdown, {}) }) })
120
+ ]
121
+ }
122
+ ) })
123
+ ] });
124
+ }
125
+ }
126
+ ) })
127
+ ] });
128
+ };
129
+ const TimezoneDropdown = () => {
130
+ const permissions = useTypedSelector(
131
+ (state) => state.admin_app.permissions["settings"]?.["releases"]
132
+ );
133
+ const {
134
+ allowedActions: { canUpdate }
135
+ } = strapiAdmin.useRBAC(permissions);
136
+ const { formatMessage } = reactIntl.useIntl();
137
+ const { timezoneList } = index.getTimezones(/* @__PURE__ */ new Date());
138
+ const field = strapiAdmin.useField("defaultTimezone");
139
+ return /* @__PURE__ */ jsxRuntime.jsxs(
140
+ designSystem.Field.Root,
141
+ {
142
+ name: "defaultTimezone",
143
+ hint: formatMessage({
144
+ id: "content-releases.pages.Settings.releases.timezone.hint",
145
+ defaultMessage: "The timezone of every release can still be changed individually. "
146
+ }),
147
+ error: field.error,
148
+ children: [
149
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
150
+ id: "content-releases.pages.Settings.releases.timezone.label",
151
+ defaultMessage: "Default timezone"
152
+ }) }),
153
+ /* @__PURE__ */ jsxRuntime.jsx(
154
+ designSystem.Combobox,
155
+ {
156
+ autocomplete: { type: "list", filter: "contains" },
157
+ onChange: (value) => field.onChange("defaultTimezone", value),
158
+ onTextValueChange: (value) => field.onChange("defaultTimezone", value),
159
+ onClear: () => field.onChange("defaultTimezone", ""),
160
+ value: field.value,
161
+ disabled: !canUpdate,
162
+ children: timezoneList.map((timezone) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.ComboboxOption, { value: timezone.value, children: timezone.value.replace(/&/, " ") }, timezone.value))
163
+ }
164
+ ),
165
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
166
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
167
+ ]
168
+ }
169
+ );
170
+ };
171
+ const ProtectedReleasesSettingsPage = () => {
172
+ const permissions = useTypedSelector(
173
+ (state) => state.admin_app.permissions["settings"]?.["releases"]?.read
174
+ );
175
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions, children: /* @__PURE__ */ jsxRuntime.jsx(ReleasesSettingsPage, {}) });
176
+ };
177
+ exports.ProtectedReleasesSettingsPage = ProtectedReleasesSettingsPage;
178
+ //# sourceMappingURL=ReleasesSettingsPage-DZcRvN_O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReleasesSettingsPage-DZcRvN_O.js","sources":["../../admin/src/modules/hooks.ts","../../admin/src/pages/ReleasesSettingsPage.tsx"],"sourcesContent":["import { Dispatch } from '@reduxjs/toolkit';\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\n\nimport type { Store } from '@strapi/admin/strapi-admin';\n\ntype RootState = ReturnType<Store['getState']>;\n\nconst useTypedDispatch: () => Dispatch = useDispatch;\nconst useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;\n\nexport { useTypedSelector, useTypedDispatch };\n","import {\n Form,\n Layouts,\n Page,\n useAPIErrorHandler,\n isFetchError,\n useNotification,\n useField,\n useRBAC,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Combobox,\n ComboboxOption,\n Field,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useTypedSelector } from '../modules/hooks';\nimport { useGetReleaseSettingsQuery, useUpdateReleaseSettingsMutation } from '../services/release';\nimport { getTimezones } from '../utils/time';\nimport { SETTINGS_SCHEMA } from '../validation/schemas';\n\nimport type { UpdateSettings } from '../../../shared/contracts/settings';\n\nconst ReleasesSettingsPage = () => {\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const { data, isLoading: isLoadingSettings } = useGetReleaseSettingsQuery();\n const [updateReleaseSettings, { isLoading: isSubmittingForm }] =\n useUpdateReleaseSettingsMutation();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions['settings']?.['releases']\n );\n const {\n allowedActions: { canUpdate },\n } = useRBAC(permissions);\n\n const { timezoneList } = getTimezones(new Date());\n\n const handleSubmit = async (body: UpdateSettings.Request['body']) => {\n const { defaultTimezone } = body;\n const isBodyTimezoneValid = timezoneList.some((timezone) => timezone.value === defaultTimezone);\n const newBody =\n !defaultTimezone || !isBodyTimezoneValid ? { defaultTimezone: null } : { ...body };\n try {\n const response = await updateReleaseSettings(newBody);\n\n if ('data' in response) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.pages.Settings.releases.setting.default-timezone-notification-success',\n defaultMessage: 'Default timezone updated.',\n }),\n });\n } else if (isFetchError(response.error)) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoadingSettings) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Releases',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isLoadingSettings} tabIndex={-1}>\n <Form\n method=\"PUT\"\n initialValues={{\n defaultTimezone: data?.data.defaultTimezone,\n }}\n onSubmit={handleSubmit}\n validationSchema={SETTINGS_SCHEMA}\n >\n {({ modified, isSubmitting }: { modified: boolean; isSubmitting: boolean }) => {\n return (\n <>\n <Layouts.Header\n primaryAction={\n canUpdate ? (\n <Button\n disabled={!modified || isSubmittingForm}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'content-releases.pages.Settings.releases.title',\n defaultMessage: 'Releases',\n })}\n subtitle={formatMessage({\n id: 'content-releases.pages.Settings.releases.description',\n defaultMessage: 'Create and manage content updates',\n })}\n />\n <Layouts.Content>\n <Flex\n direction=\"column\"\n background=\"neutral0\"\n alignItems=\"stretch\"\n padding={6}\n gap={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'content-releases.pages.Settings.releases.preferences.title',\n defaultMessage: 'Preferences',\n })}\n </Typography>\n <Grid.Root>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <TimezoneDropdown />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\nconst TimezoneDropdown = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions['settings']?.['releases']\n );\n const {\n allowedActions: { canUpdate },\n } = useRBAC(permissions);\n const { formatMessage } = useIntl();\n const { timezoneList } = getTimezones(new Date());\n const field = useField('defaultTimezone');\n return (\n <Field.Root\n name=\"defaultTimezone\"\n hint={formatMessage({\n id: 'content-releases.pages.Settings.releases.timezone.hint',\n defaultMessage: 'The timezone of every release can still be changed individually. ',\n })}\n error={field.error}\n >\n <Field.Label>\n {formatMessage({\n id: 'content-releases.pages.Settings.releases.timezone.label',\n defaultMessage: 'Default timezone',\n })}\n </Field.Label>\n <Combobox\n autocomplete={{ type: 'list', filter: 'contains' }}\n onChange={(value) => field.onChange('defaultTimezone', value)}\n onTextValueChange={(value) => field.onChange('defaultTimezone', value)}\n onClear={() => field.onChange('defaultTimezone', '')}\n value={field.value}\n disabled={!canUpdate}\n >\n {timezoneList.map((timezone) => (\n <ComboboxOption key={timezone.value} value={timezone.value}>\n {timezone.value.replace(/&/, ' ')}\n </ComboboxOption>\n ))}\n </Combobox>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedSettingsPage\n * -----------------------------------------------------------------------------------------------*/\n\nexport const ProtectedReleasesSettingsPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions['settings']?.['releases']?.read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ReleasesSettingsPage />\n </Page.Protect>\n );\n};\n"],"names":["useSelector","useIntl","useAPIErrorHandler","useNotification","useGetReleaseSettingsQuery","useUpdateReleaseSettingsMutation","useRBAC","getTimezones","isFetchError","jsx","Page","jsxs","Layouts","Form","SETTINGS_SCHEMA","Fragment","Button","Check","Flex","Typography","Grid","useField","Field","Combobox","ComboboxOption"],"mappings":"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"}
@@ -17,7 +17,17 @@ const en = {
17
17
  "content-releases.content-manager-edit-view.edit-entry": "Edit entry",
18
18
  "content-manager-edit-view.remove-from-release.notification.success": "Entry removed from release",
19
19
  "content-manager-edit-view.release-action-menu": "Release action options",
20
+ "content-manager.list-view.releases.header": "To be released in",
21
+ "content-manager-list-view.add-to-release": "Add to release",
22
+ "content-manager-list-view.add-to-release.cancel-button": "Cancel",
23
+ "content-manager-list-view.add-to-release.continue-button": "Continue",
24
+ "content-manager-list-view.add-to-release.select-label": "Select a release",
25
+ "content-manager-list-view.add-to-release.select-placeholder": "Select",
26
+ "content-manager-list-view.add-to-release.action-type-label": "What do you want to do with these entries?",
27
+ "content-manager-list-view.add-to-release.notification.success.title": "Successfully added to release.",
28
+ "content-manager-list-view.add-to-release.notification.success.message": "{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release.",
20
29
  "content-manager.notification.entry-error": "Failed to get entry data",
30
+ "content-manager.list-view.releases-number": "{number} {number, plural, one {release} other {releases}}",
21
31
  "plugin.name": "Releases",
22
32
  "pages.Releases.title": "Releases",
23
33
  "pages.Releases.header-subtitle": "Create and manage content updates",
@@ -25,7 +35,7 @@ const en = {
25
35
  "pages.Releases.max-limit-reached.message": "Upgrade to manage an unlimited number of releases.",
26
36
  "pages.Releases.max-limit-reached.action": "Explore plans",
27
37
  "pages.PurchaseRelease.subTitle": "Manage content updates and releases.",
28
- "pages.PurchaseRelease.not-available": "Releases is only available as part of the Enterprise Edition. Upgrade to create and manage releases.",
38
+ "pages.PurchaseRelease.not-available": "Releases is only available as part of a paid plan. Upgrade to create and manage releases.",
29
39
  "header.actions.add-release": "New Release",
30
40
  "header.actions.refresh": "Refresh",
31
41
  "header.actions.publish": "Publish",
@@ -44,6 +54,7 @@ const en = {
44
54
  "modal.form.input.label.timezone": "Timezone",
45
55
  "modal.form.input.clearLabel": "Clear",
46
56
  "modal.form.button.submit": "{isCreatingRelease, select, true {Continue} other {Save}}",
57
+ "modal.form.time.has-passed": "Selected time has already passed.",
47
58
  "pages.Details.header-subtitle": "{number, plural, =0 {No entries} one {# entry} other {# entries}}",
48
59
  "pages.Releases.tab-group.label": "Releases list",
49
60
  "pages.Releases.tab.pending": "Pending ({count})",
@@ -66,12 +77,26 @@ const en = {
66
77
  "pages.ReleaseDetails.groupBy.aria-label": "Group by",
67
78
  "pages.ReleaseDetails.entry-validation.already-published": "Already published",
68
79
  "pages.ReleaseDetails.entry-validation.ready-to-publish": "Ready to publish",
80
+ "pages.ReleaseDetails.entry-validation.modified": "Ready to publish changes",
69
81
  "pages.ReleaseDetails.entry-validation.already-unpublished": "Already unpublished",
70
82
  "pages.ReleaseDetails.entry-validation.ready-to-unpublish": "Ready to unpublish",
83
+ "pages.ReleaseDetails.entry-validation.not-ready": "Not ready to publish",
71
84
  "pages.ReleaseDetails.groupBy.option.content-type": "Content-Types",
72
85
  "pages.ReleaseDetails.groupBy.option.locales": "Locales",
73
86
  "pages.ReleaseDetails.groupBy.option.actions": "Actions",
74
- "pages.ReleaseDetails.header-subtitle.scheduled": "Scheduled for {date} at {time} ({offset})"
87
+ "pages.ReleaseDetails.header-subtitle.scheduled": "Scheduled for {date} at {time} ({offset})",
88
+ "pages.ReleaseDetails.entry-validation.fields": "Fields",
89
+ "pages.Settings.releases.title": "Releases",
90
+ "pages.Settings.releases.description": "Create and manage content updates",
91
+ "pages.Settings.releases.timezone.label": "Default timezone",
92
+ "pages.Settings.releases.setting.default-timezone-notification-success": "Default timezone updated.",
93
+ "pages.ReleaseDetails.entry-validation.fields.error": "{errors} errors on fields.",
94
+ "pages.ReleaseDetails.entry-validation.fields.success": "All fields are filled correctly.",
95
+ "pages.ReleaseDetails.entry-validation.fields.see-errors": "See errors",
96
+ "pages.ReleaseDetails.entry-validation.review-stage.not-enabled": "This entry is not associated to any workflow.",
97
+ "pages.ReleaseDetails.entry-validation.review-stage.not-ready": "This entry is not at the required stage for publishing. ({stageName})",
98
+ "pages.ReleaseDetails.entry-validation.review-stage.ready": "This entry is at the required stage for publishing. ({stageName})",
99
+ "pages.ReleaseDetails.entry-validation.review-stage.stage-not-required": "No required stage for publication."
75
100
  };
76
101
  exports.default = en;
77
- //# sourceMappingURL=en-faJDuv3q.js.map
102
+ //# sourceMappingURL=en-BWPPsSH-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-BWPPsSH-.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -15,7 +15,17 @@ const en = {
15
15
  "content-releases.content-manager-edit-view.edit-entry": "Edit entry",
16
16
  "content-manager-edit-view.remove-from-release.notification.success": "Entry removed from release",
17
17
  "content-manager-edit-view.release-action-menu": "Release action options",
18
+ "content-manager.list-view.releases.header": "To be released in",
19
+ "content-manager-list-view.add-to-release": "Add to release",
20
+ "content-manager-list-view.add-to-release.cancel-button": "Cancel",
21
+ "content-manager-list-view.add-to-release.continue-button": "Continue",
22
+ "content-manager-list-view.add-to-release.select-label": "Select a release",
23
+ "content-manager-list-view.add-to-release.select-placeholder": "Select",
24
+ "content-manager-list-view.add-to-release.action-type-label": "What do you want to do with these entries?",
25
+ "content-manager-list-view.add-to-release.notification.success.title": "Successfully added to release.",
26
+ "content-manager-list-view.add-to-release.notification.success.message": "{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release.",
18
27
  "content-manager.notification.entry-error": "Failed to get entry data",
28
+ "content-manager.list-view.releases-number": "{number} {number, plural, one {release} other {releases}}",
19
29
  "plugin.name": "Releases",
20
30
  "pages.Releases.title": "Releases",
21
31
  "pages.Releases.header-subtitle": "Create and manage content updates",
@@ -23,7 +33,7 @@ const en = {
23
33
  "pages.Releases.max-limit-reached.message": "Upgrade to manage an unlimited number of releases.",
24
34
  "pages.Releases.max-limit-reached.action": "Explore plans",
25
35
  "pages.PurchaseRelease.subTitle": "Manage content updates and releases.",
26
- "pages.PurchaseRelease.not-available": "Releases is only available as part of the Enterprise Edition. Upgrade to create and manage releases.",
36
+ "pages.PurchaseRelease.not-available": "Releases is only available as part of a paid plan. Upgrade to create and manage releases.",
27
37
  "header.actions.add-release": "New Release",
28
38
  "header.actions.refresh": "Refresh",
29
39
  "header.actions.publish": "Publish",
@@ -42,6 +52,7 @@ const en = {
42
52
  "modal.form.input.label.timezone": "Timezone",
43
53
  "modal.form.input.clearLabel": "Clear",
44
54
  "modal.form.button.submit": "{isCreatingRelease, select, true {Continue} other {Save}}",
55
+ "modal.form.time.has-passed": "Selected time has already passed.",
45
56
  "pages.Details.header-subtitle": "{number, plural, =0 {No entries} one {# entry} other {# entries}}",
46
57
  "pages.Releases.tab-group.label": "Releases list",
47
58
  "pages.Releases.tab.pending": "Pending ({count})",
@@ -64,14 +75,28 @@ const en = {
64
75
  "pages.ReleaseDetails.groupBy.aria-label": "Group by",
65
76
  "pages.ReleaseDetails.entry-validation.already-published": "Already published",
66
77
  "pages.ReleaseDetails.entry-validation.ready-to-publish": "Ready to publish",
78
+ "pages.ReleaseDetails.entry-validation.modified": "Ready to publish changes",
67
79
  "pages.ReleaseDetails.entry-validation.already-unpublished": "Already unpublished",
68
80
  "pages.ReleaseDetails.entry-validation.ready-to-unpublish": "Ready to unpublish",
81
+ "pages.ReleaseDetails.entry-validation.not-ready": "Not ready to publish",
69
82
  "pages.ReleaseDetails.groupBy.option.content-type": "Content-Types",
70
83
  "pages.ReleaseDetails.groupBy.option.locales": "Locales",
71
84
  "pages.ReleaseDetails.groupBy.option.actions": "Actions",
72
- "pages.ReleaseDetails.header-subtitle.scheduled": "Scheduled for {date} at {time} ({offset})"
85
+ "pages.ReleaseDetails.header-subtitle.scheduled": "Scheduled for {date} at {time} ({offset})",
86
+ "pages.ReleaseDetails.entry-validation.fields": "Fields",
87
+ "pages.Settings.releases.title": "Releases",
88
+ "pages.Settings.releases.description": "Create and manage content updates",
89
+ "pages.Settings.releases.timezone.label": "Default timezone",
90
+ "pages.Settings.releases.setting.default-timezone-notification-success": "Default timezone updated.",
91
+ "pages.ReleaseDetails.entry-validation.fields.error": "{errors} errors on fields.",
92
+ "pages.ReleaseDetails.entry-validation.fields.success": "All fields are filled correctly.",
93
+ "pages.ReleaseDetails.entry-validation.fields.see-errors": "See errors",
94
+ "pages.ReleaseDetails.entry-validation.review-stage.not-enabled": "This entry is not associated to any workflow.",
95
+ "pages.ReleaseDetails.entry-validation.review-stage.not-ready": "This entry is not at the required stage for publishing. ({stageName})",
96
+ "pages.ReleaseDetails.entry-validation.review-stage.ready": "This entry is at the required stage for publishing. ({stageName})",
97
+ "pages.ReleaseDetails.entry-validation.review-stage.stage-not-required": "No required stage for publication."
73
98
  };
74
99
  export {
75
100
  en as default
76
101
  };
77
- //# sourceMappingURL=en-RdapH-9X.mjs.map
102
+ //# sourceMappingURL=en-D9Q4YW03.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-D9Q4YW03.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}