@strapi/content-releases 5.51.1 → 5.51.2

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.
@@ -66,7 +66,7 @@ const ReleasesSettingsPage = ()=>{
66
66
  })
67
67
  });
68
68
  }
69
- } catch (error) {
69
+ } catch {
70
70
  toggleNotification({
71
71
  type: 'danger',
72
72
  message: formatMessage({
@@ -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 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 <>\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 fullWidth\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} xs={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 </>\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<UpdateDefaultTimezone['defaultTimezone']>('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","_Fragment","Title","name","Main","aria-busy","tabIndex","Form","method","initialValues","onSubmit","validationSchema","SETTINGS_SCHEMA","modified","isSubmitting","Layouts","Header","primaryAction","Button","disabled","loading","startIcon","Check","fullWidth","secondaryAction","GradientBadge","label","title","subtitle","Content","Flex","direction","background","alignItems","padding","gap","shadow","hasRadius","Typography","variant","tag","Grid","Root","Item","col","xs","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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"}
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 {\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 <>\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 fullWidth\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} xs={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 </>\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<UpdateDefaultTimezone['defaultTimezone']>('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","_Fragment","Title","name","Main","aria-busy","tabIndex","Form","method","initialValues","onSubmit","validationSchema","SETTINGS_SCHEMA","modified","isSubmitting","Layouts","Header","primaryAction","Button","disabled","loading","startIcon","Check","fullWidth","secondaryAction","GradientBadge","label","title","subtitle","Content","Flex","direction","background","alignItems","padding","gap","shadow","hasRadius","Typography","variant","tag","Grid","Root","Item","col","xs","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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"}
@@ -64,7 +64,7 @@ const ReleasesSettingsPage = ()=>{
64
64
  })
65
65
  });
66
66
  }
67
- } catch (error) {
67
+ } catch {
68
68
  toggleNotification({
69
69
  type: 'danger',
70
70
  message: formatMessage({
@@ -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 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 <>\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 fullWidth\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} xs={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 </>\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<UpdateDefaultTimezone['defaultTimezone']>('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","_Fragment","Title","name","Main","aria-busy","tabIndex","Form","method","initialValues","onSubmit","validationSchema","SETTINGS_SCHEMA","modified","isSubmitting","Layouts","Header","primaryAction","Button","disabled","loading","startIcon","Check","fullWidth","secondaryAction","GradientBadge","label","title","subtitle","Content","Flex","direction","background","alignItems","padding","gap","shadow","hasRadius","Typography","variant","tag","Grid","Root","Item","col","xs","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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"}
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 {\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 <>\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 fullWidth\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} xs={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 </>\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<UpdateDefaultTimezone['defaultTimezone']>('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","_Fragment","Title","name","Main","aria-busy","tabIndex","Form","method","initialValues","onSubmit","validationSchema","SETTINGS_SCHEMA","modified","isSubmitting","Layouts","Header","primaryAction","Button","disabled","loading","startIcon","Check","fullWidth","secondaryAction","GradientBadge","label","title","subtitle","Content","Flex","direction","background","alignItems","padding","gap","shadow","hasRadius","Typography","variant","tag","Grid","Root","Item","col","xs","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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"}
@@ -14,7 +14,7 @@ const getTimezoneOffset = (timezone, date)=>{
14
14
  utcOffset = `${utcOffset}+00:00`;
15
15
  }
16
16
  return utcOffset;
17
- } catch (error) {
17
+ } catch {
18
18
  // When timezone is invalid we catch the error and return empty to don't break the app
19
19
  return '';
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","sources":["../../../admin/src/utils/time.ts"],"sourcesContent":["export const getTimezoneOffset = (timezone: string, date: Date) => {\n try {\n const offsetPart = new Intl.DateTimeFormat('en', {\n timeZone: timezone,\n timeZoneName: 'longOffset',\n })\n .formatToParts(date)\n .find((part) => part.type === 'timeZoneName');\n\n const offset = offsetPart ? offsetPart.value : '';\n\n // We want to show time based on UTC, not GMT so we swap that.\n let utcOffset = offset.replace('GMT', 'UTC');\n\n // For perfect UTC (UTC+0:00) we only get the string UTC, So we need to append the 0's.\n if (!utcOffset.includes('+') && !utcOffset.includes('-')) {\n utcOffset = `${utcOffset}+00:00`;\n }\n\n return utcOffset;\n } catch (error) {\n // When timezone is invalid we catch the error and return empty to don't break the app\n return '';\n }\n};\n\ninterface ITimezoneOption {\n offset: string;\n value: string;\n}\n\nexport const getTimezones = (selectedDate: Date) => {\n const timezoneList: ITimezoneOption[] = Intl.supportedValuesOf('timeZone').map((timezone) => {\n // Timezone will be in the format GMT${OFFSET} where offset could be nothing,\n // a four digit string e.g. +05:00 or -08:00\n const utcOffset = getTimezoneOffset(timezone, selectedDate);\n\n // Offset and timezone are concatenated with '&', so to split and save the required timezone in DB\n return { offset: utcOffset, value: `${utcOffset}&${timezone}` } satisfies ITimezoneOption;\n });\n\n const systemTimezone = timezoneList.find(\n (timezone) => timezone.value.split('&')[1] === Intl.DateTimeFormat().resolvedOptions().timeZone\n );\n\n return { timezoneList, systemTimezone };\n};\n"],"names":["getTimezoneOffset","timezone","date","offsetPart","Intl","DateTimeFormat","timeZone","timeZoneName","formatToParts","find","part","type","offset","value","utcOffset","replace","includes","error","getTimezones","selectedDate","timezoneList","supportedValuesOf","map","systemTimezone","split","resolvedOptions"],"mappings":";;AAAO,MAAMA,iBAAAA,GAAoB,CAACC,QAAAA,EAAkBC,IAAAA,GAAAA;IAClD,IAAI;AACF,QAAA,MAAMC,UAAAA,GAAa,IAAIC,IAAAA,CAAKC,cAAc,CAAC,IAAA,EAAM;YAC/CC,QAAAA,EAAUL,QAAAA;YACVM,YAAAA,EAAc;SAChB,CAAA,CACGC,aAAa,CAACN,IAAAA,CAAAA,CACdO,IAAI,CAAC,CAACC,IAAAA,GAASA,IAAAA,CAAKC,IAAI,KAAK,cAAA,CAAA;AAEhC,QAAA,MAAMC,MAAAA,GAAST,UAAAA,GAAaA,UAAAA,CAAWU,KAAK,GAAG,EAAA;;AAG/C,QAAA,IAAIC,SAAAA,GAAYF,MAAAA,CAAOG,OAAO,CAAC,KAAA,EAAO,KAAA,CAAA;;QAGtC,IAAI,CAACD,UAAUE,QAAQ,CAAC,QAAQ,CAACF,SAAAA,CAAUE,QAAQ,CAAC,GAAA,CAAA,EAAM;YACxDF,SAAAA,GAAY,CAAA,EAAGA,SAAAA,CAAU,MAAM,CAAC;AAClC,QAAA;QAEA,OAAOA,SAAAA;AACT,IAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;;QAEd,OAAO,EAAA;AACT,IAAA;AACF;AAOO,MAAMC,eAAe,CAACC,YAAAA,GAAAA;AAC3B,IAAA,MAAMC,eAAkChB,IAAAA,CAAKiB,iBAAiB,CAAC,UAAA,CAAA,CAAYC,GAAG,CAAC,CAACrB,QAAAA,GAAAA;;;QAG9E,MAAMa,SAAAA,GAAYd,kBAAkBC,QAAAA,EAAUkB,YAAAA,CAAAA;;QAG9C,OAAO;YAAEP,MAAAA,EAAQE,SAAAA;AAAWD,YAAAA,KAAAA,EAAO,CAAA,EAAGC,SAAAA,CAAU,CAAC,EAAEb,QAAAA,CAAAA;AAAW,SAAA;AAChE,IAAA,CAAA,CAAA;IAEA,MAAMsB,cAAAA,GAAiBH,aAAaX,IAAI,CACtC,CAACR,QAAAA,GAAaA,QAAAA,CAASY,KAAK,CAACW,KAAK,CAAC,GAAA,CAAI,CAAC,EAAE,KAAKpB,IAAAA,CAAKC,cAAc,EAAA,CAAGoB,eAAe,GAAGnB,QAAQ,CAAA;IAGjG,OAAO;AAAEc,QAAAA,YAAAA;AAAcG,QAAAA;AAAe,KAAA;AACxC;;;;;"}
1
+ {"version":3,"file":"time.js","sources":["../../../admin/src/utils/time.ts"],"sourcesContent":["export const getTimezoneOffset = (timezone: string, date: Date) => {\n try {\n const offsetPart = new Intl.DateTimeFormat('en', {\n timeZone: timezone,\n timeZoneName: 'longOffset',\n })\n .formatToParts(date)\n .find((part) => part.type === 'timeZoneName');\n\n const offset = offsetPart ? offsetPart.value : '';\n\n // We want to show time based on UTC, not GMT so we swap that.\n let utcOffset = offset.replace('GMT', 'UTC');\n\n // For perfect UTC (UTC+0:00) we only get the string UTC, So we need to append the 0's.\n if (!utcOffset.includes('+') && !utcOffset.includes('-')) {\n utcOffset = `${utcOffset}+00:00`;\n }\n\n return utcOffset;\n } catch {\n // When timezone is invalid we catch the error and return empty to don't break the app\n return '';\n }\n};\n\ninterface ITimezoneOption {\n offset: string;\n value: string;\n}\n\nexport const getTimezones = (selectedDate: Date) => {\n const timezoneList: ITimezoneOption[] = Intl.supportedValuesOf('timeZone').map((timezone) => {\n // Timezone will be in the format GMT${OFFSET} where offset could be nothing,\n // a four digit string e.g. +05:00 or -08:00\n const utcOffset = getTimezoneOffset(timezone, selectedDate);\n\n // Offset and timezone are concatenated with '&', so to split and save the required timezone in DB\n return { offset: utcOffset, value: `${utcOffset}&${timezone}` } satisfies ITimezoneOption;\n });\n\n const systemTimezone = timezoneList.find(\n (timezone) => timezone.value.split('&')[1] === Intl.DateTimeFormat().resolvedOptions().timeZone\n );\n\n return { timezoneList, systemTimezone };\n};\n"],"names":["getTimezoneOffset","timezone","date","offsetPart","Intl","DateTimeFormat","timeZone","timeZoneName","formatToParts","find","part","type","offset","value","utcOffset","replace","includes","getTimezones","selectedDate","timezoneList","supportedValuesOf","map","systemTimezone","split","resolvedOptions"],"mappings":";;AAAO,MAAMA,iBAAAA,GAAoB,CAACC,QAAAA,EAAkBC,IAAAA,GAAAA;IAClD,IAAI;AACF,QAAA,MAAMC,UAAAA,GAAa,IAAIC,IAAAA,CAAKC,cAAc,CAAC,IAAA,EAAM;YAC/CC,QAAAA,EAAUL,QAAAA;YACVM,YAAAA,EAAc;SAChB,CAAA,CACGC,aAAa,CAACN,IAAAA,CAAAA,CACdO,IAAI,CAAC,CAACC,IAAAA,GAASA,IAAAA,CAAKC,IAAI,KAAK,cAAA,CAAA;AAEhC,QAAA,MAAMC,MAAAA,GAAST,UAAAA,GAAaA,UAAAA,CAAWU,KAAK,GAAG,EAAA;;AAG/C,QAAA,IAAIC,SAAAA,GAAYF,MAAAA,CAAOG,OAAO,CAAC,KAAA,EAAO,KAAA,CAAA;;QAGtC,IAAI,CAACD,UAAUE,QAAQ,CAAC,QAAQ,CAACF,SAAAA,CAAUE,QAAQ,CAAC,GAAA,CAAA,EAAM;YACxDF,SAAAA,GAAY,CAAA,EAAGA,SAAAA,CAAU,MAAM,CAAC;AAClC,QAAA;QAEA,OAAOA,SAAAA;AACT,IAAA,CAAA,CAAE,OAAM;;QAEN,OAAO,EAAA;AACT,IAAA;AACF;AAOO,MAAMG,eAAe,CAACC,YAAAA,GAAAA;AAC3B,IAAA,MAAMC,eAAkCf,IAAAA,CAAKgB,iBAAiB,CAAC,UAAA,CAAA,CAAYC,GAAG,CAAC,CAACpB,QAAAA,GAAAA;;;QAG9E,MAAMa,SAAAA,GAAYd,kBAAkBC,QAAAA,EAAUiB,YAAAA,CAAAA;;QAG9C,OAAO;YAAEN,MAAAA,EAAQE,SAAAA;AAAWD,YAAAA,KAAAA,EAAO,CAAA,EAAGC,SAAAA,CAAU,CAAC,EAAEb,QAAAA,CAAAA;AAAW,SAAA;AAChE,IAAA,CAAA,CAAA;IAEA,MAAMqB,cAAAA,GAAiBH,aAAaV,IAAI,CACtC,CAACR,QAAAA,GAAaA,QAAAA,CAASY,KAAK,CAACU,KAAK,CAAC,GAAA,CAAI,CAAC,EAAE,KAAKnB,IAAAA,CAAKC,cAAc,EAAA,CAAGmB,eAAe,GAAGlB,QAAQ,CAAA;IAGjG,OAAO;AAAEa,QAAAA,YAAAA;AAAcG,QAAAA;AAAe,KAAA;AACxC;;;;;"}
@@ -12,7 +12,7 @@ const getTimezoneOffset = (timezone, date)=>{
12
12
  utcOffset = `${utcOffset}+00:00`;
13
13
  }
14
14
  return utcOffset;
15
- } catch (error) {
15
+ } catch {
16
16
  // When timezone is invalid we catch the error and return empty to don't break the app
17
17
  return '';
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"time.mjs","sources":["../../../admin/src/utils/time.ts"],"sourcesContent":["export const getTimezoneOffset = (timezone: string, date: Date) => {\n try {\n const offsetPart = new Intl.DateTimeFormat('en', {\n timeZone: timezone,\n timeZoneName: 'longOffset',\n })\n .formatToParts(date)\n .find((part) => part.type === 'timeZoneName');\n\n const offset = offsetPart ? offsetPart.value : '';\n\n // We want to show time based on UTC, not GMT so we swap that.\n let utcOffset = offset.replace('GMT', 'UTC');\n\n // For perfect UTC (UTC+0:00) we only get the string UTC, So we need to append the 0's.\n if (!utcOffset.includes('+') && !utcOffset.includes('-')) {\n utcOffset = `${utcOffset}+00:00`;\n }\n\n return utcOffset;\n } catch (error) {\n // When timezone is invalid we catch the error and return empty to don't break the app\n return '';\n }\n};\n\ninterface ITimezoneOption {\n offset: string;\n value: string;\n}\n\nexport const getTimezones = (selectedDate: Date) => {\n const timezoneList: ITimezoneOption[] = Intl.supportedValuesOf('timeZone').map((timezone) => {\n // Timezone will be in the format GMT${OFFSET} where offset could be nothing,\n // a four digit string e.g. +05:00 or -08:00\n const utcOffset = getTimezoneOffset(timezone, selectedDate);\n\n // Offset and timezone are concatenated with '&', so to split and save the required timezone in DB\n return { offset: utcOffset, value: `${utcOffset}&${timezone}` } satisfies ITimezoneOption;\n });\n\n const systemTimezone = timezoneList.find(\n (timezone) => timezone.value.split('&')[1] === Intl.DateTimeFormat().resolvedOptions().timeZone\n );\n\n return { timezoneList, systemTimezone };\n};\n"],"names":["getTimezoneOffset","timezone","date","offsetPart","Intl","DateTimeFormat","timeZone","timeZoneName","formatToParts","find","part","type","offset","value","utcOffset","replace","includes","error","getTimezones","selectedDate","timezoneList","supportedValuesOf","map","systemTimezone","split","resolvedOptions"],"mappings":"AAAO,MAAMA,iBAAAA,GAAoB,CAACC,QAAAA,EAAkBC,IAAAA,GAAAA;IAClD,IAAI;AACF,QAAA,MAAMC,UAAAA,GAAa,IAAIC,IAAAA,CAAKC,cAAc,CAAC,IAAA,EAAM;YAC/CC,QAAAA,EAAUL,QAAAA;YACVM,YAAAA,EAAc;SAChB,CAAA,CACGC,aAAa,CAACN,IAAAA,CAAAA,CACdO,IAAI,CAAC,CAACC,IAAAA,GAASA,IAAAA,CAAKC,IAAI,KAAK,cAAA,CAAA;AAEhC,QAAA,MAAMC,MAAAA,GAAST,UAAAA,GAAaA,UAAAA,CAAWU,KAAK,GAAG,EAAA;;AAG/C,QAAA,IAAIC,SAAAA,GAAYF,MAAAA,CAAOG,OAAO,CAAC,KAAA,EAAO,KAAA,CAAA;;QAGtC,IAAI,CAACD,UAAUE,QAAQ,CAAC,QAAQ,CAACF,SAAAA,CAAUE,QAAQ,CAAC,GAAA,CAAA,EAAM;YACxDF,SAAAA,GAAY,CAAA,EAAGA,SAAAA,CAAU,MAAM,CAAC;AAClC,QAAA;QAEA,OAAOA,SAAAA;AACT,IAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;;QAEd,OAAO,EAAA;AACT,IAAA;AACF;AAOO,MAAMC,eAAe,CAACC,YAAAA,GAAAA;AAC3B,IAAA,MAAMC,eAAkChB,IAAAA,CAAKiB,iBAAiB,CAAC,UAAA,CAAA,CAAYC,GAAG,CAAC,CAACrB,QAAAA,GAAAA;;;QAG9E,MAAMa,SAAAA,GAAYd,kBAAkBC,QAAAA,EAAUkB,YAAAA,CAAAA;;QAG9C,OAAO;YAAEP,MAAAA,EAAQE,SAAAA;AAAWD,YAAAA,KAAAA,EAAO,CAAA,EAAGC,SAAAA,CAAU,CAAC,EAAEb,QAAAA,CAAAA;AAAW,SAAA;AAChE,IAAA,CAAA,CAAA;IAEA,MAAMsB,cAAAA,GAAiBH,aAAaX,IAAI,CACtC,CAACR,QAAAA,GAAaA,QAAAA,CAASY,KAAK,CAACW,KAAK,CAAC,GAAA,CAAI,CAAC,EAAE,KAAKpB,IAAAA,CAAKC,cAAc,EAAA,CAAGoB,eAAe,GAAGnB,QAAQ,CAAA;IAGjG,OAAO;AAAEc,QAAAA,YAAAA;AAAcG,QAAAA;AAAe,KAAA;AACxC;;;;"}
1
+ {"version":3,"file":"time.mjs","sources":["../../../admin/src/utils/time.ts"],"sourcesContent":["export const getTimezoneOffset = (timezone: string, date: Date) => {\n try {\n const offsetPart = new Intl.DateTimeFormat('en', {\n timeZone: timezone,\n timeZoneName: 'longOffset',\n })\n .formatToParts(date)\n .find((part) => part.type === 'timeZoneName');\n\n const offset = offsetPart ? offsetPart.value : '';\n\n // We want to show time based on UTC, not GMT so we swap that.\n let utcOffset = offset.replace('GMT', 'UTC');\n\n // For perfect UTC (UTC+0:00) we only get the string UTC, So we need to append the 0's.\n if (!utcOffset.includes('+') && !utcOffset.includes('-')) {\n utcOffset = `${utcOffset}+00:00`;\n }\n\n return utcOffset;\n } catch {\n // When timezone is invalid we catch the error and return empty to don't break the app\n return '';\n }\n};\n\ninterface ITimezoneOption {\n offset: string;\n value: string;\n}\n\nexport const getTimezones = (selectedDate: Date) => {\n const timezoneList: ITimezoneOption[] = Intl.supportedValuesOf('timeZone').map((timezone) => {\n // Timezone will be in the format GMT${OFFSET} where offset could be nothing,\n // a four digit string e.g. +05:00 or -08:00\n const utcOffset = getTimezoneOffset(timezone, selectedDate);\n\n // Offset and timezone are concatenated with '&', so to split and save the required timezone in DB\n return { offset: utcOffset, value: `${utcOffset}&${timezone}` } satisfies ITimezoneOption;\n });\n\n const systemTimezone = timezoneList.find(\n (timezone) => timezone.value.split('&')[1] === Intl.DateTimeFormat().resolvedOptions().timeZone\n );\n\n return { timezoneList, systemTimezone };\n};\n"],"names":["getTimezoneOffset","timezone","date","offsetPart","Intl","DateTimeFormat","timeZone","timeZoneName","formatToParts","find","part","type","offset","value","utcOffset","replace","includes","getTimezones","selectedDate","timezoneList","supportedValuesOf","map","systemTimezone","split","resolvedOptions"],"mappings":"AAAO,MAAMA,iBAAAA,GAAoB,CAACC,QAAAA,EAAkBC,IAAAA,GAAAA;IAClD,IAAI;AACF,QAAA,MAAMC,UAAAA,GAAa,IAAIC,IAAAA,CAAKC,cAAc,CAAC,IAAA,EAAM;YAC/CC,QAAAA,EAAUL,QAAAA;YACVM,YAAAA,EAAc;SAChB,CAAA,CACGC,aAAa,CAACN,IAAAA,CAAAA,CACdO,IAAI,CAAC,CAACC,IAAAA,GAASA,IAAAA,CAAKC,IAAI,KAAK,cAAA,CAAA;AAEhC,QAAA,MAAMC,MAAAA,GAAST,UAAAA,GAAaA,UAAAA,CAAWU,KAAK,GAAG,EAAA;;AAG/C,QAAA,IAAIC,SAAAA,GAAYF,MAAAA,CAAOG,OAAO,CAAC,KAAA,EAAO,KAAA,CAAA;;QAGtC,IAAI,CAACD,UAAUE,QAAQ,CAAC,QAAQ,CAACF,SAAAA,CAAUE,QAAQ,CAAC,GAAA,CAAA,EAAM;YACxDF,SAAAA,GAAY,CAAA,EAAGA,SAAAA,CAAU,MAAM,CAAC;AAClC,QAAA;QAEA,OAAOA,SAAAA;AACT,IAAA,CAAA,CAAE,OAAM;;QAEN,OAAO,EAAA;AACT,IAAA;AACF;AAOO,MAAMG,eAAe,CAACC,YAAAA,GAAAA;AAC3B,IAAA,MAAMC,eAAkCf,IAAAA,CAAKgB,iBAAiB,CAAC,UAAA,CAAA,CAAYC,GAAG,CAAC,CAACpB,QAAAA,GAAAA;;;QAG9E,MAAMa,SAAAA,GAAYd,kBAAkBC,QAAAA,EAAUiB,YAAAA,CAAAA;;QAG9C,OAAO;YAAEN,MAAAA,EAAQE,SAAAA;AAAWD,YAAAA,KAAAA,EAAO,CAAA,EAAGC,SAAAA,CAAU,CAAC,EAAEb,QAAAA,CAAAA;AAAW,SAAA;AAChE,IAAA,CAAA,CAAA;IAEA,MAAMqB,cAAAA,GAAiBH,aAAaV,IAAI,CACtC,CAACR,QAAAA,GAAaA,QAAAA,CAASY,KAAK,CAACU,KAAK,CAAC,GAAA,CAAI,CAAC,EAAE,KAAKnB,IAAAA,CAAKC,cAAc,EAAA,CAAGmB,eAAe,GAAGlB,QAAQ,CAAA;IAGjG,OAAO;AAAEa,QAAAA,YAAAA;AAAcG,QAAAA;AAAe,KAAA;AACxC;;;;"}
@@ -24,7 +24,7 @@ const createSettingsService = ({ strapi })=>{
24
24
  });
25
25
  return {
26
26
  ...DEFAULT_SETTINGS,
27
- ...settings || {}
27
+ ...settings
28
28
  };
29
29
  }
30
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sources":["../../../server/src/services/settings.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { Settings } from '../../../shared/contracts/settings';\n\nconst DEFAULT_SETTINGS = {\n defaultTimezone: null,\n} satisfies Settings;\n\nconst createSettingsService = ({ strapi }: { strapi: Core.Strapi }) => {\n const getStore = async () => strapi.store({ type: 'core', name: 'content-releases' });\n\n return {\n async update({ settings }: { settings: Settings }): Promise<Settings> {\n const store = await getStore();\n store.set({ key: 'settings', value: settings });\n return settings;\n },\n async find(): Promise<Settings> {\n const store = await getStore();\n const settings = (await store.get({ key: 'settings' })) as Settings | undefined;\n\n return {\n ...DEFAULT_SETTINGS,\n ...(settings || {}),\n };\n },\n };\n};\n\nexport type SettingsService = ReturnType<typeof createSettingsService>;\n\nexport default createSettingsService;\n"],"names":["DEFAULT_SETTINGS","defaultTimezone","createSettingsService","strapi","getStore","store","type","name","update","settings","set","key","value","find","get"],"mappings":";;AAIA,MAAMA,gBAAAA,GAAmB;IACvBC,eAAAA,EAAiB;AACnB,CAAA;AAEA,MAAMC,qBAAAA,GAAwB,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAChE,IAAA,MAAMC,QAAAA,GAAW,UAAYD,MAAAA,CAAOE,KAAK,CAAC;YAAEC,IAAAA,EAAM,MAAA;YAAQC,IAAAA,EAAM;AAAmB,SAAA,CAAA;IAEnF,OAAO;QACL,MAAMC,MAAAA,CAAAA,CAAO,EAAEC,QAAQ,EAA0B,EAAA;AAC/C,YAAA,MAAMJ,QAAQ,MAAMD,QAAAA,EAAAA;AACpBC,YAAAA,KAAAA,CAAMK,GAAG,CAAC;gBAAEC,GAAAA,EAAK,UAAA;gBAAYC,KAAAA,EAAOH;AAAS,aAAA,CAAA;YAC7C,OAAOA,QAAAA;AACT,QAAA,CAAA;QACA,MAAMI,IAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMR,QAAQ,MAAMD,QAAAA,EAAAA;AACpB,YAAA,MAAMK,QAAAA,GAAY,MAAMJ,KAAAA,CAAMS,GAAG,CAAC;gBAAEH,GAAAA,EAAK;AAAW,aAAA,CAAA;YAEpD,OAAO;AACL,gBAAA,GAAGX,gBAAgB;gBACnB,GAAIS,QAAAA,IAAY;AAClB,aAAA;AACF,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"settings.js","sources":["../../../server/src/services/settings.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { Settings } from '../../../shared/contracts/settings';\n\nconst DEFAULT_SETTINGS = {\n defaultTimezone: null,\n} satisfies Settings;\n\nconst createSettingsService = ({ strapi }: { strapi: Core.Strapi }) => {\n const getStore = async () => strapi.store({ type: 'core', name: 'content-releases' });\n\n return {\n async update({ settings }: { settings: Settings }): Promise<Settings> {\n const store = await getStore();\n store.set({ key: 'settings', value: settings });\n return settings;\n },\n async find(): Promise<Settings> {\n const store = await getStore();\n const settings = (await store.get({ key: 'settings' })) as Settings | undefined;\n\n return {\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n },\n };\n};\n\nexport type SettingsService = ReturnType<typeof createSettingsService>;\n\nexport default createSettingsService;\n"],"names":["DEFAULT_SETTINGS","defaultTimezone","createSettingsService","strapi","getStore","store","type","name","update","settings","set","key","value","find","get"],"mappings":";;AAIA,MAAMA,gBAAAA,GAAmB;IACvBC,eAAAA,EAAiB;AACnB,CAAA;AAEA,MAAMC,qBAAAA,GAAwB,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAChE,IAAA,MAAMC,QAAAA,GAAW,UAAYD,MAAAA,CAAOE,KAAK,CAAC;YAAEC,IAAAA,EAAM,MAAA;YAAQC,IAAAA,EAAM;AAAmB,SAAA,CAAA;IAEnF,OAAO;QACL,MAAMC,MAAAA,CAAAA,CAAO,EAAEC,QAAQ,EAA0B,EAAA;AAC/C,YAAA,MAAMJ,QAAQ,MAAMD,QAAAA,EAAAA;AACpBC,YAAAA,KAAAA,CAAMK,GAAG,CAAC;gBAAEC,GAAAA,EAAK,UAAA;gBAAYC,KAAAA,EAAOH;AAAS,aAAA,CAAA;YAC7C,OAAOA,QAAAA;AACT,QAAA,CAAA;QACA,MAAMI,IAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMR,QAAQ,MAAMD,QAAAA,EAAAA;AACpB,YAAA,MAAMK,QAAAA,GAAY,MAAMJ,KAAAA,CAAMS,GAAG,CAAC;gBAAEH,GAAAA,EAAK;AAAW,aAAA,CAAA;YAEpD,OAAO;AACL,gBAAA,GAAGX,gBAAgB;AACnB,gBAAA,GAAGS;AACL,aAAA;AACF,QAAA;AACF,KAAA;AACF;;;;"}
@@ -22,7 +22,7 @@ const createSettingsService = ({ strapi })=>{
22
22
  });
23
23
  return {
24
24
  ...DEFAULT_SETTINGS,
25
- ...settings || {}
25
+ ...settings
26
26
  };
27
27
  }
28
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"settings.mjs","sources":["../../../server/src/services/settings.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { Settings } from '../../../shared/contracts/settings';\n\nconst DEFAULT_SETTINGS = {\n defaultTimezone: null,\n} satisfies Settings;\n\nconst createSettingsService = ({ strapi }: { strapi: Core.Strapi }) => {\n const getStore = async () => strapi.store({ type: 'core', name: 'content-releases' });\n\n return {\n async update({ settings }: { settings: Settings }): Promise<Settings> {\n const store = await getStore();\n store.set({ key: 'settings', value: settings });\n return settings;\n },\n async find(): Promise<Settings> {\n const store = await getStore();\n const settings = (await store.get({ key: 'settings' })) as Settings | undefined;\n\n return {\n ...DEFAULT_SETTINGS,\n ...(settings || {}),\n };\n },\n };\n};\n\nexport type SettingsService = ReturnType<typeof createSettingsService>;\n\nexport default createSettingsService;\n"],"names":["DEFAULT_SETTINGS","defaultTimezone","createSettingsService","strapi","getStore","store","type","name","update","settings","set","key","value","find","get"],"mappings":"AAIA,MAAMA,gBAAAA,GAAmB;IACvBC,eAAAA,EAAiB;AACnB,CAAA;AAEA,MAAMC,qBAAAA,GAAwB,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAChE,IAAA,MAAMC,QAAAA,GAAW,UAAYD,MAAAA,CAAOE,KAAK,CAAC;YAAEC,IAAAA,EAAM,MAAA;YAAQC,IAAAA,EAAM;AAAmB,SAAA,CAAA;IAEnF,OAAO;QACL,MAAMC,MAAAA,CAAAA,CAAO,EAAEC,QAAQ,EAA0B,EAAA;AAC/C,YAAA,MAAMJ,QAAQ,MAAMD,QAAAA,EAAAA;AACpBC,YAAAA,KAAAA,CAAMK,GAAG,CAAC;gBAAEC,GAAAA,EAAK,UAAA;gBAAYC,KAAAA,EAAOH;AAAS,aAAA,CAAA;YAC7C,OAAOA,QAAAA;AACT,QAAA,CAAA;QACA,MAAMI,IAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMR,QAAQ,MAAMD,QAAAA,EAAAA;AACpB,YAAA,MAAMK,QAAAA,GAAY,MAAMJ,KAAAA,CAAMS,GAAG,CAAC;gBAAEH,GAAAA,EAAK;AAAW,aAAA,CAAA;YAEpD,OAAO;AACL,gBAAA,GAAGX,gBAAgB;gBACnB,GAAIS,QAAAA,IAAY;AAClB,aAAA;AACF,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"settings.mjs","sources":["../../../server/src/services/settings.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { Settings } from '../../../shared/contracts/settings';\n\nconst DEFAULT_SETTINGS = {\n defaultTimezone: null,\n} satisfies Settings;\n\nconst createSettingsService = ({ strapi }: { strapi: Core.Strapi }) => {\n const getStore = async () => strapi.store({ type: 'core', name: 'content-releases' });\n\n return {\n async update({ settings }: { settings: Settings }): Promise<Settings> {\n const store = await getStore();\n store.set({ key: 'settings', value: settings });\n return settings;\n },\n async find(): Promise<Settings> {\n const store = await getStore();\n const settings = (await store.get({ key: 'settings' })) as Settings | undefined;\n\n return {\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n },\n };\n};\n\nexport type SettingsService = ReturnType<typeof createSettingsService>;\n\nexport default createSettingsService;\n"],"names":["DEFAULT_SETTINGS","defaultTimezone","createSettingsService","strapi","getStore","store","type","name","update","settings","set","key","value","find","get"],"mappings":"AAIA,MAAMA,gBAAAA,GAAmB;IACvBC,eAAAA,EAAiB;AACnB,CAAA;AAEA,MAAMC,qBAAAA,GAAwB,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAChE,IAAA,MAAMC,QAAAA,GAAW,UAAYD,MAAAA,CAAOE,KAAK,CAAC;YAAEC,IAAAA,EAAM,MAAA;YAAQC,IAAAA,EAAM;AAAmB,SAAA,CAAA;IAEnF,OAAO;QACL,MAAMC,MAAAA,CAAAA,CAAO,EAAEC,QAAQ,EAA0B,EAAA;AAC/C,YAAA,MAAMJ,QAAQ,MAAMD,QAAAA,EAAAA;AACpBC,YAAAA,KAAAA,CAAMK,GAAG,CAAC;gBAAEC,GAAAA,EAAK,UAAA;gBAAYC,KAAAA,EAAOH;AAAS,aAAA,CAAA;YAC7C,OAAOA,QAAAA;AACT,QAAA,CAAA;QACA,MAAMI,IAAAA,CAAAA,GAAAA;AACJ,YAAA,MAAMR,QAAQ,MAAMD,QAAAA,EAAAA;AACpB,YAAA,MAAMK,QAAAA,GAAY,MAAMJ,KAAAA,CAAMS,GAAG,CAAC;gBAAEH,GAAAA,EAAK;AAAW,aAAA,CAAA;YAEpD,OAAO;AACL,gBAAA,GAAGX,gBAAgB;AACnB,gBAAA,GAAGS;AACL,aAAA;AACF,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1,7 +1,8 @@
1
1
  import type { Schema, Modules, UID, Struct } from '@strapi/types';
2
+ import type { errors } from '@strapi/utils';
2
3
  import type { Release, Pagination } from './releases';
3
4
  import type { Entity } from '../types';
4
- import type { errors } from '@strapi/utils';
5
+ export type ReleaseActionEntryType = 'single-types' | 'collection-types';
5
6
  export type ReleaseActionEntry = Modules.Documents.AnyDocument & {
6
7
  [key: string]: Schema.Attribute.AnyAttribute;
7
8
  } & {
@@ -1 +1 @@
1
- {"version":3,"file":"release-actions.d.ts","sourceRoot":"","sources":["../../../shared/contracts/release-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"release-actions.d.ts","sourceRoot":"","sources":["../../../shared/contracts/release-actions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/content-releases",
3
- "version": "5.51.1",
3
+ "version": "5.51.2",
4
4
  "description": "Strapi plugin for organizing and releasing content",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -64,11 +64,11 @@
64
64
  },
65
65
  "dependencies": {
66
66
  "@reduxjs/toolkit": "1.9.7",
67
- "@strapi/database": "5.51.1",
67
+ "@strapi/database": "5.51.2",
68
68
  "@strapi/design-system": "2.2.3",
69
69
  "@strapi/icons": "2.2.3",
70
- "@strapi/types": "5.51.1",
71
- "@strapi/utils": "5.51.1",
70
+ "@strapi/types": "5.51.2",
71
+ "@strapi/utils": "5.51.2",
72
72
  "date-fns": "2.30.0",
73
73
  "date-fns-tz": "2.0.1",
74
74
  "formik": "2.4.9",
@@ -79,9 +79,9 @@
79
79
  "yup": "0.32.9"
80
80
  },
81
81
  "devDependencies": {
82
- "@strapi/admin": "5.51.1",
83
- "@strapi/admin-test-utils": "5.51.1",
84
- "@strapi/content-manager": "5.51.1",
82
+ "@strapi/admin": "5.51.2",
83
+ "@strapi/admin-test-utils": "5.51.2",
84
+ "@strapi/content-manager": "5.51.2",
85
85
  "@testing-library/dom": "10.4.1",
86
86
  "@testing-library/jest-dom": "6.9.1",
87
87
  "@testing-library/react": "16.3.2",
@@ -95,7 +95,7 @@
95
95
  "react": "18.3.1",
96
96
  "react-dom": "18.3.1",
97
97
  "react-query": "3.39.3",
98
- "react-router-dom": "6.30.3",
98
+ "react-router-dom": "6.30.4",
99
99
  "styled-components": "6.4.1",
100
100
  "typescript": "5.9.3"
101
101
  },