@strapi/content-releases 5.15.0 → 5.15.1

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.
@@ -19,13 +19,28 @@ const ReleasesSettingsPage = ()=>{
19
19
  const permissions = hooks.useTypedSelector((state)=>state.admin_app.permissions['settings']?.['releases']);
20
20
  const { allowedActions: { canUpdate } } = strapiAdmin.useRBAC(permissions);
21
21
  const { timezoneList } = time.getTimezones(new Date());
22
- const handleSubmit = async (body)=>{
22
+ const handleSubmit = async (body, { setErrors })=>{
23
23
  const { defaultTimezone } = body;
24
- const isBodyTimezoneValid = timezoneList.some((timezone)=>timezone.value === defaultTimezone);
24
+ const formattedDefaultTimezone = defaultTimezone;
25
+ const isBodyTimezoneValid = timezoneList.some((timezone)=>timezone.value === formattedDefaultTimezone);
26
+ if (!isBodyTimezoneValid && defaultTimezone) {
27
+ const errorMessage = formatMessage({
28
+ id: 'components.Input.error.validation.combobox.invalid',
29
+ defaultMessage: 'The value provided is not valid'
30
+ });
31
+ setErrors({
32
+ defaultTimezone: errorMessage
33
+ });
34
+ toggleNotification({
35
+ type: 'danger',
36
+ message: errorMessage
37
+ });
38
+ return;
39
+ }
25
40
  const newBody = !defaultTimezone || !isBodyTimezoneValid ? {
26
41
  defaultTimezone: null
27
42
  } : {
28
- ...body
43
+ defaultTimezone: formattedDefaultTimezone
29
44
  };
30
45
  try {
31
46
  const response = await updateReleaseSettings(newBody);
@@ -64,6 +79,10 @@ const ReleasesSettingsPage = ()=>{
64
79
  if (isLoadingSettings) {
65
80
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
66
81
  }
82
+ const releasePageTitle = formatMessage({
83
+ id: 'content-releases.pages.Releases.title',
84
+ defaultMessage: 'Releases'
85
+ });
67
86
  return /*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.Layouts.Root, {
68
87
  children: [
69
88
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Title, {
@@ -71,7 +90,7 @@ const ReleasesSettingsPage = ()=>{
71
90
  id: 'Settings.PageTitle',
72
91
  defaultMessage: 'Settings - {name}'
73
92
  }, {
74
- name: 'Releases'
93
+ name: releasePageTitle
75
94
  })
76
95
  }),
77
96
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Main, {
@@ -98,16 +117,13 @@ const ReleasesSettingsPage = ()=>{
98
117
  defaultMessage: 'Save'
99
118
  })
100
119
  }) : null,
101
- title: formatMessage({
102
- id: 'content-releases.pages.Settings.releases.title',
103
- defaultMessage: 'Releases'
104
- }),
105
120
  secondaryAction: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.GradientBadge, {
106
121
  label: formatMessage({
107
122
  id: 'components.premiumFeature.title',
108
123
  defaultMessage: 'Premium feature'
109
124
  })
110
125
  }),
126
+ title: releasePageTitle,
111
127
  subtitle: formatMessage({
112
128
  id: 'content-releases.pages.Settings.releases.description',
113
129
  defaultMessage: 'Create and manage content updates'
@@ -161,7 +177,7 @@ const TimezoneDropdown = ()=>{
161
177
  name: "defaultTimezone",
162
178
  hint: formatMessage({
163
179
  id: 'content-releases.pages.Settings.releases.timezone.hint',
164
- defaultMessage: 'The timezone of every release can still be changed individually. '
180
+ defaultMessage: 'The timezone of every release can still be changed individually.'
165
181
  }),
166
182
  error: field.error,
167
183
  children: [
@@ -176,8 +192,12 @@ const TimezoneDropdown = ()=>{
176
192
  type: 'list',
177
193
  filter: 'contains'
178
194
  },
179
- onChange: (value)=>field.onChange('defaultTimezone', value),
180
195
  onTextValueChange: (value)=>field.onChange('defaultTimezone', value),
196
+ onChange: (value)=>{
197
+ if (field.value && value || !field.value) {
198
+ field.onChange('defaultTimezone', value);
199
+ }
200
+ },
181
201
  onClear: ()=>field.onChange('defaultTimezone', ''),
182
202
  value: field.value,
183
203
  disabled: !canUpdate,
@@ -1 +1 @@
1
- {"version":3,"file":"ReleasesSettingsPage.js","sources":["../../../admin/src/pages/ReleasesSettingsPage.tsx"],"sourcesContent":["import {\n Form,\n Layouts,\n Page,\n useAPIErrorHandler,\n isFetchError,\n GradientBadge,\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 secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\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":["ReleasesSettingsPage","formatMessage","useIntl","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","data","isLoading","isLoadingSettings","useGetReleaseSettingsQuery","updateReleaseSettings","isSubmittingForm","useUpdateReleaseSettingsMutation","permissions","useTypedSelector","state","admin_app","allowedActions","canUpdate","useRBAC","timezoneList","getTimezones","Date","handleSubmit","body","defaultTimezone","isBodyTimezoneValid","some","timezone","value","newBody","response","type","message","id","defaultMessage","isFetchError","error","_jsx","Page","Loading","_jsxs","Layouts","Root","Title","name","Main","aria-busy","tabIndex","Form","method","initialValues","onSubmit","validationSchema","SETTINGS_SCHEMA","modified","isSubmitting","_Fragment","Header","primaryAction","Button","disabled","loading","startIcon","Check","title","secondaryAction","GradientBadge","label","subtitle","Content","Flex","direction","background","alignItems","padding","gap","shadow","hasRadius","Typography","variant","tag","Grid","Item","col","s","TimezoneDropdown","field","useField","Field","hint","Label","Combobox","autocomplete","filter","onChange","onTextValueChange","onClear","map","ComboboxOption","replace","Hint","Error","ProtectedReleasesSettingsPage","read","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"ReleasesSettingsPage.js","sources":["../../../admin/src/pages/ReleasesSettingsPage.tsx"],"sourcesContent":["import {\n Form,\n Layouts,\n Page,\n useAPIErrorHandler,\n isFetchError,\n GradientBadge,\n useNotification,\n useField,\n useRBAC,\n FormHelpers,\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\ninterface UpdateDefaultTimezone {\n defaultTimezone: string;\n}\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 (\n body: UpdateSettings.Request['body'],\n { setErrors }: FormHelpers<UpdateDefaultTimezone>\n ) => {\n const { defaultTimezone } = body;\n const formattedDefaultTimezone = defaultTimezone;\n const isBodyTimezoneValid = timezoneList.some(\n (timezone) => timezone.value === formattedDefaultTimezone\n );\n\n if (!isBodyTimezoneValid && defaultTimezone) {\n const errorMessage = formatMessage({\n id: 'components.Input.error.validation.combobox.invalid',\n defaultMessage: 'The value provided is not valid',\n });\n setErrors({\n defaultTimezone: errorMessage,\n });\n toggleNotification({\n type: 'danger',\n message: errorMessage,\n });\n return;\n }\n\n const newBody =\n !defaultTimezone || !isBodyTimezoneValid\n ? { defaultTimezone: null }\n : { defaultTimezone: formattedDefaultTimezone };\n\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({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n if (isLoadingSettings) {\n return <Page.Loading />;\n }\n\n const releasePageTitle = formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n });\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: releasePageTitle,\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 secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n title={releasePageTitle}\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 onTextValueChange={(value) => field.onChange('defaultTimezone', value)}\n onChange={(value) => {\n if ((field.value && value) || !field.value) {\n field.onChange('defaultTimezone', value);\n }\n }}\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":["ReleasesSettingsPage","formatMessage","useIntl","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","data","isLoading","isLoadingSettings","useGetReleaseSettingsQuery","updateReleaseSettings","isSubmittingForm","useUpdateReleaseSettingsMutation","permissions","useTypedSelector","state","admin_app","allowedActions","canUpdate","useRBAC","timezoneList","getTimezones","Date","handleSubmit","body","setErrors","defaultTimezone","formattedDefaultTimezone","isBodyTimezoneValid","some","timezone","value","errorMessage","id","defaultMessage","type","message","newBody","response","isFetchError","error","_jsx","Page","Loading","releasePageTitle","_jsxs","Layouts","Root","Title","name","Main","aria-busy","tabIndex","Form","method","initialValues","onSubmit","validationSchema","SETTINGS_SCHEMA","modified","isSubmitting","_Fragment","Header","primaryAction","Button","disabled","loading","startIcon","Check","secondaryAction","GradientBadge","label","title","subtitle","Content","Flex","direction","background","alignItems","padding","gap","shadow","hasRadius","Typography","variant","tag","Grid","Item","col","s","TimezoneDropdown","field","useField","Field","hint","Label","Combobox","autocomplete","filter","onTextValueChange","onChange","onClear","map","ComboboxOption","replace","Hint","Error","ProtectedReleasesSettingsPage","read","Protect"],"mappings":"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"}
@@ -17,13 +17,28 @@ const ReleasesSettingsPage = ()=>{
17
17
  const permissions = useTypedSelector((state)=>state.admin_app.permissions['settings']?.['releases']);
18
18
  const { allowedActions: { canUpdate } } = useRBAC(permissions);
19
19
  const { timezoneList } = getTimezones(new Date());
20
- const handleSubmit = async (body)=>{
20
+ const handleSubmit = async (body, { setErrors })=>{
21
21
  const { defaultTimezone } = body;
22
- const isBodyTimezoneValid = timezoneList.some((timezone)=>timezone.value === defaultTimezone);
22
+ const formattedDefaultTimezone = defaultTimezone;
23
+ const isBodyTimezoneValid = timezoneList.some((timezone)=>timezone.value === formattedDefaultTimezone);
24
+ if (!isBodyTimezoneValid && defaultTimezone) {
25
+ const errorMessage = formatMessage({
26
+ id: 'components.Input.error.validation.combobox.invalid',
27
+ defaultMessage: 'The value provided is not valid'
28
+ });
29
+ setErrors({
30
+ defaultTimezone: errorMessage
31
+ });
32
+ toggleNotification({
33
+ type: 'danger',
34
+ message: errorMessage
35
+ });
36
+ return;
37
+ }
23
38
  const newBody = !defaultTimezone || !isBodyTimezoneValid ? {
24
39
  defaultTimezone: null
25
40
  } : {
26
- ...body
41
+ defaultTimezone: formattedDefaultTimezone
27
42
  };
28
43
  try {
29
44
  const response = await updateReleaseSettings(newBody);
@@ -62,6 +77,10 @@ const ReleasesSettingsPage = ()=>{
62
77
  if (isLoadingSettings) {
63
78
  return /*#__PURE__*/ jsx(Page.Loading, {});
64
79
  }
80
+ const releasePageTitle = formatMessage({
81
+ id: 'content-releases.pages.Releases.title',
82
+ defaultMessage: 'Releases'
83
+ });
65
84
  return /*#__PURE__*/ jsxs(Layouts.Root, {
66
85
  children: [
67
86
  /*#__PURE__*/ jsx(Page.Title, {
@@ -69,7 +88,7 @@ const ReleasesSettingsPage = ()=>{
69
88
  id: 'Settings.PageTitle',
70
89
  defaultMessage: 'Settings - {name}'
71
90
  }, {
72
- name: 'Releases'
91
+ name: releasePageTitle
73
92
  })
74
93
  }),
75
94
  /*#__PURE__*/ jsx(Page.Main, {
@@ -96,16 +115,13 @@ const ReleasesSettingsPage = ()=>{
96
115
  defaultMessage: 'Save'
97
116
  })
98
117
  }) : null,
99
- title: formatMessage({
100
- id: 'content-releases.pages.Settings.releases.title',
101
- defaultMessage: 'Releases'
102
- }),
103
118
  secondaryAction: /*#__PURE__*/ jsx(GradientBadge, {
104
119
  label: formatMessage({
105
120
  id: 'components.premiumFeature.title',
106
121
  defaultMessage: 'Premium feature'
107
122
  })
108
123
  }),
124
+ title: releasePageTitle,
109
125
  subtitle: formatMessage({
110
126
  id: 'content-releases.pages.Settings.releases.description',
111
127
  defaultMessage: 'Create and manage content updates'
@@ -159,7 +175,7 @@ const TimezoneDropdown = ()=>{
159
175
  name: "defaultTimezone",
160
176
  hint: formatMessage({
161
177
  id: 'content-releases.pages.Settings.releases.timezone.hint',
162
- defaultMessage: 'The timezone of every release can still be changed individually. '
178
+ defaultMessage: 'The timezone of every release can still be changed individually.'
163
179
  }),
164
180
  error: field.error,
165
181
  children: [
@@ -174,8 +190,12 @@ const TimezoneDropdown = ()=>{
174
190
  type: 'list',
175
191
  filter: 'contains'
176
192
  },
177
- onChange: (value)=>field.onChange('defaultTimezone', value),
178
193
  onTextValueChange: (value)=>field.onChange('defaultTimezone', value),
194
+ onChange: (value)=>{
195
+ if (field.value && value || !field.value) {
196
+ field.onChange('defaultTimezone', value);
197
+ }
198
+ },
179
199
  onClear: ()=>field.onChange('defaultTimezone', ''),
180
200
  value: field.value,
181
201
  disabled: !canUpdate,
@@ -1 +1 @@
1
- {"version":3,"file":"ReleasesSettingsPage.mjs","sources":["../../../admin/src/pages/ReleasesSettingsPage.tsx"],"sourcesContent":["import {\n Form,\n Layouts,\n Page,\n useAPIErrorHandler,\n isFetchError,\n GradientBadge,\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 secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\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":["ReleasesSettingsPage","formatMessage","useIntl","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","data","isLoading","isLoadingSettings","useGetReleaseSettingsQuery","updateReleaseSettings","isSubmittingForm","useUpdateReleaseSettingsMutation","permissions","useTypedSelector","state","admin_app","allowedActions","canUpdate","useRBAC","timezoneList","getTimezones","Date","handleSubmit","body","defaultTimezone","isBodyTimezoneValid","some","timezone","value","newBody","response","type","message","id","defaultMessage","isFetchError","error","_jsx","Page","Loading","_jsxs","Layouts","Root","Title","name","Main","aria-busy","tabIndex","Form","method","initialValues","onSubmit","validationSchema","SETTINGS_SCHEMA","modified","isSubmitting","_Fragment","Header","primaryAction","Button","disabled","loading","startIcon","Check","title","secondaryAction","GradientBadge","label","subtitle","Content","Flex","direction","background","alignItems","padding","gap","shadow","hasRadius","Typography","variant","tag","Grid","Item","col","s","TimezoneDropdown","field","useField","Field","hint","Label","Combobox","autocomplete","filter","onChange","onTextValueChange","onClear","map","ComboboxOption","replace","Hint","Error","ProtectedReleasesSettingsPage","read","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"ReleasesSettingsPage.mjs","sources":["../../../admin/src/pages/ReleasesSettingsPage.tsx"],"sourcesContent":["import {\n Form,\n Layouts,\n Page,\n useAPIErrorHandler,\n isFetchError,\n GradientBadge,\n useNotification,\n useField,\n useRBAC,\n FormHelpers,\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\ninterface UpdateDefaultTimezone {\n defaultTimezone: string;\n}\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 (\n body: UpdateSettings.Request['body'],\n { setErrors }: FormHelpers<UpdateDefaultTimezone>\n ) => {\n const { defaultTimezone } = body;\n const formattedDefaultTimezone = defaultTimezone;\n const isBodyTimezoneValid = timezoneList.some(\n (timezone) => timezone.value === formattedDefaultTimezone\n );\n\n if (!isBodyTimezoneValid && defaultTimezone) {\n const errorMessage = formatMessage({\n id: 'components.Input.error.validation.combobox.invalid',\n defaultMessage: 'The value provided is not valid',\n });\n setErrors({\n defaultTimezone: errorMessage,\n });\n toggleNotification({\n type: 'danger',\n message: errorMessage,\n });\n return;\n }\n\n const newBody =\n !defaultTimezone || !isBodyTimezoneValid\n ? { defaultTimezone: null }\n : { defaultTimezone: formattedDefaultTimezone };\n\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({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n if (isLoadingSettings) {\n return <Page.Loading />;\n }\n\n const releasePageTitle = formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n });\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: releasePageTitle,\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 secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n title={releasePageTitle}\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 onTextValueChange={(value) => field.onChange('defaultTimezone', value)}\n onChange={(value) => {\n if ((field.value && value) || !field.value) {\n field.onChange('defaultTimezone', value);\n }\n }}\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":["ReleasesSettingsPage","formatMessage","useIntl","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","data","isLoading","isLoadingSettings","useGetReleaseSettingsQuery","updateReleaseSettings","isSubmittingForm","useUpdateReleaseSettingsMutation","permissions","useTypedSelector","state","admin_app","allowedActions","canUpdate","useRBAC","timezoneList","getTimezones","Date","handleSubmit","body","setErrors","defaultTimezone","formattedDefaultTimezone","isBodyTimezoneValid","some","timezone","value","errorMessage","id","defaultMessage","type","message","newBody","response","isFetchError","error","_jsx","Page","Loading","releasePageTitle","_jsxs","Layouts","Root","Title","name","Main","aria-busy","tabIndex","Form","method","initialValues","onSubmit","validationSchema","SETTINGS_SCHEMA","modified","isSubmitting","_Fragment","Header","primaryAction","Button","disabled","loading","startIcon","Check","secondaryAction","GradientBadge","label","title","subtitle","Content","Flex","direction","background","alignItems","padding","gap","shadow","hasRadius","Typography","variant","tag","Grid","Item","col","s","TimezoneDropdown","field","useField","Field","hint","Label","Combobox","autocomplete","filter","onTextValueChange","onChange","onClear","map","ComboboxOption","replace","Hint","Error","ProtectedReleasesSettingsPage","read","Protect"],"mappings":"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"}
@@ -15,7 +15,6 @@ var en = {
15
15
  "content-manager-edit-view.scheduled.date": "{date} at {time} ({offset})",
16
16
  "content-manager-edit-view.edit-release": "Edit release",
17
17
  "content-releases.content-manager-edit-view.edit-entry": "Edit entry",
18
- "content-releases.pages.Releases.title": "Releases",
19
18
  "content-manager-edit-view.remove-from-release.notification.success": "Entry removed from release",
20
19
  "content-manager-edit-view.release-action-menu": "Release action options",
21
20
  "content-manager.list-view.releases.header": "To be released in",
@@ -91,9 +90,10 @@ var en = {
91
90
  "pages.ReleaseDetails.groupBy.option.actions": "Actions",
92
91
  "pages.ReleaseDetails.header-subtitle.scheduled": "Scheduled for {date} at {time} ({offset})",
93
92
  "pages.ReleaseDetails.entry-validation.fields": "Fields",
94
- "pages.Settings.releases.title": "Releases",
95
93
  "pages.Settings.releases.description": "Create and manage content updates",
94
+ "pages.Settings.releases.preferences.title": "Preferences",
96
95
  "pages.Settings.releases.timezone.label": "Default timezone",
96
+ "pages.Settings.releases.timezone.hint": "The timezone of every release can still be changed individually.",
97
97
  "pages.Settings.releases.setting.default-timezone-notification-success": "Default timezone updated.",
98
98
  "pages.ReleaseDetails.entry-validation.fields.error": "{errors} errors on fields.",
99
99
  "pages.ReleaseDetails.entry-validation.fields.success": "All fields are filled correctly.",
@@ -13,7 +13,6 @@ var en = {
13
13
  "content-manager-edit-view.scheduled.date": "{date} at {time} ({offset})",
14
14
  "content-manager-edit-view.edit-release": "Edit release",
15
15
  "content-releases.content-manager-edit-view.edit-entry": "Edit entry",
16
- "content-releases.pages.Releases.title": "Releases",
17
16
  "content-manager-edit-view.remove-from-release.notification.success": "Entry removed from release",
18
17
  "content-manager-edit-view.release-action-menu": "Release action options",
19
18
  "content-manager.list-view.releases.header": "To be released in",
@@ -89,9 +88,10 @@ var en = {
89
88
  "pages.ReleaseDetails.groupBy.option.actions": "Actions",
90
89
  "pages.ReleaseDetails.header-subtitle.scheduled": "Scheduled for {date} at {time} ({offset})",
91
90
  "pages.ReleaseDetails.entry-validation.fields": "Fields",
92
- "pages.Settings.releases.title": "Releases",
93
91
  "pages.Settings.releases.description": "Create and manage content updates",
92
+ "pages.Settings.releases.preferences.title": "Preferences",
94
93
  "pages.Settings.releases.timezone.label": "Default timezone",
94
+ "pages.Settings.releases.timezone.hint": "The timezone of every release can still be changed individually.",
95
95
  "pages.Settings.releases.setting.default-timezone-notification-success": "Default timezone updated.",
96
96
  "pages.ReleaseDetails.entry-validation.fields.error": "{errors} errors on fields.",
97
97
  "pages.ReleaseDetails.entry-validation.fields.success": "All fields are filled correctly.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/content-releases",
3
- "version": "5.15.0",
3
+ "version": "5.15.1",
4
4
  "description": "Strapi plugin for organizing and releasing content",
5
5
  "repository": {
6
6
  "type": "git",
@@ -59,11 +59,11 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@reduxjs/toolkit": "1.9.7",
62
- "@strapi/database": "5.15.0",
63
- "@strapi/design-system": "2.0.0-rc.24",
64
- "@strapi/icons": "2.0.0-rc.24",
65
- "@strapi/types": "5.15.0",
66
- "@strapi/utils": "5.15.0",
62
+ "@strapi/database": "5.15.1",
63
+ "@strapi/design-system": "2.0.0-rc.25",
64
+ "@strapi/icons": "2.0.0-rc.25",
65
+ "@strapi/types": "5.15.1",
66
+ "@strapi/utils": "5.15.1",
67
67
  "date-fns": "2.30.0",
68
68
  "date-fns-tz": "2.0.1",
69
69
  "formik": "2.4.5",
@@ -75,9 +75,9 @@
75
75
  "yup": "0.32.9"
76
76
  },
77
77
  "devDependencies": {
78
- "@strapi/admin": "5.15.0",
79
- "@strapi/admin-test-utils": "5.15.0",
80
- "@strapi/content-manager": "5.15.0",
78
+ "@strapi/admin": "5.15.1",
79
+ "@strapi/admin-test-utils": "5.15.1",
80
+ "@strapi/content-manager": "5.15.1",
81
81
  "@testing-library/dom": "10.1.0",
82
82
  "@testing-library/react": "15.0.7",
83
83
  "@testing-library/user-event": "14.5.2",