@strapi/content-releases 0.0.0-next.f5312617ca16b870c2bf1adcea2c69b676979e29 → 0.0.0-next.f5d21551ed005f524bfc4760b274f1be154e26a8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/assets/purchase-page-illustration-dark.svg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +1 -0
- package/dist/admin/components/EntryValidationPopover.js +310 -0
- package/dist/admin/components/EntryValidationPopover.js.map +1 -0
- package/dist/admin/components/EntryValidationPopover.mjs +308 -0
- package/dist/admin/components/EntryValidationPopover.mjs.map +1 -0
- package/dist/admin/components/RelativeTime.js +76 -0
- package/dist/admin/components/RelativeTime.js.map +1 -0
- package/dist/admin/components/RelativeTime.mjs +55 -0
- package/dist/admin/components/RelativeTime.mjs.map +1 -0
- package/dist/admin/components/ReleaseAction.js +203 -0
- package/dist/admin/components/ReleaseAction.js.map +1 -0
- package/dist/admin/components/ReleaseAction.mjs +201 -0
- package/dist/admin/components/ReleaseAction.mjs.map +1 -0
- package/dist/admin/components/ReleaseActionMenu.js +194 -0
- package/dist/admin/components/ReleaseActionMenu.js.map +1 -0
- package/dist/admin/components/ReleaseActionMenu.mjs +173 -0
- package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -0
- package/dist/admin/components/ReleaseActionModal.js +268 -0
- package/dist/admin/components/ReleaseActionModal.js.map +1 -0
- package/dist/admin/components/ReleaseActionModal.mjs +244 -0
- package/dist/admin/components/ReleaseActionModal.mjs.map +1 -0
- package/dist/admin/components/ReleaseActionOptions.js +104 -0
- package/dist/admin/components/ReleaseActionOptions.js.map +1 -0
- package/dist/admin/components/ReleaseActionOptions.mjs +102 -0
- package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -0
- package/dist/admin/components/ReleaseListCell.js +103 -0
- package/dist/admin/components/ReleaseListCell.js.map +1 -0
- package/dist/admin/components/ReleaseListCell.mjs +100 -0
- package/dist/admin/components/ReleaseListCell.mjs.map +1 -0
- package/dist/admin/components/ReleaseModal.js +323 -0
- package/dist/admin/components/ReleaseModal.js.map +1 -0
- package/dist/admin/components/ReleaseModal.mjs +302 -0
- package/dist/admin/components/ReleaseModal.mjs.map +1 -0
- package/dist/admin/components/ReleasesPanel.js +138 -0
- package/dist/admin/components/ReleasesPanel.js.map +1 -0
- package/dist/admin/components/ReleasesPanel.mjs +136 -0
- package/dist/admin/components/ReleasesPanel.mjs.map +1 -0
- package/dist/admin/components/Widgets.js +122 -0
- package/dist/admin/components/Widgets.js.map +1 -0
- package/dist/admin/components/Widgets.mjs +120 -0
- package/dist/admin/components/Widgets.mjs.map +1 -0
- package/dist/admin/constants.js +79 -0
- package/dist/admin/constants.js.map +1 -0
- package/dist/admin/constants.mjs +76 -0
- package/dist/admin/constants.mjs.map +1 -0
- package/dist/admin/index.js +148 -4
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +143 -4
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/modules/hooks.js +8 -0
- package/dist/admin/modules/hooks.js.map +1 -0
- package/dist/admin/modules/hooks.mjs +6 -0
- package/dist/admin/modules/hooks.mjs.map +1 -0
- package/dist/admin/pages/App.js +29 -0
- package/dist/admin/pages/App.js.map +1 -0
- package/dist/admin/pages/App.mjs +27 -0
- package/dist/admin/pages/App.mjs.map +1 -0
- package/dist/admin/pages/PurchaseContentReleases.js +192 -0
- package/dist/admin/pages/PurchaseContentReleases.js.map +1 -0
- package/dist/admin/pages/PurchaseContentReleases.mjs +190 -0
- package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -0
- package/dist/admin/pages/ReleaseDetailsPage.js +772 -0
- package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -0
- package/dist/admin/pages/ReleaseDetailsPage.mjs +751 -0
- package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -0
- package/dist/admin/pages/ReleasesPage.js +403 -0
- package/dist/admin/pages/ReleasesPage.js.map +1 -0
- package/dist/admin/pages/ReleasesPage.mjs +381 -0
- package/dist/admin/pages/ReleasesPage.mjs.map +1 -0
- package/dist/admin/pages/ReleasesSettingsPage.js +225 -0
- package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -0
- package/dist/admin/pages/ReleasesSettingsPage.mjs +223 -0
- package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -0
- package/dist/admin/pluginId.js +6 -0
- package/dist/admin/pluginId.js.map +1 -0
- package/dist/admin/pluginId.mjs +4 -0
- package/dist/admin/pluginId.mjs.map +1 -0
- package/dist/admin/services/homepage.js +24 -0
- package/dist/admin/services/homepage.js.map +1 -0
- package/dist/admin/services/homepage.mjs +22 -0
- package/dist/admin/services/homepage.mjs.map +1 -0
- package/dist/admin/services/release.js +474 -0
- package/dist/admin/services/release.js.map +1 -0
- package/dist/admin/services/release.mjs +457 -0
- package/dist/admin/services/release.mjs.map +1 -0
- package/dist/admin/src/components/EntryValidationPopover.d.ts +13 -0
- package/dist/admin/src/components/ReleaseListCell.d.ts +1 -1
- package/dist/admin/src/components/Widgets.d.ts +2 -0
- package/dist/admin/src/constants.d.ts +1 -0
- package/dist/admin/src/services/homepage.d.ts +9 -0
- package/dist/admin/src/services/release.d.ts +28 -28
- package/dist/admin/store/hooks.js +8 -0
- package/dist/admin/store/hooks.js.map +1 -0
- package/dist/admin/store/hooks.mjs +6 -0
- package/dist/admin/store/hooks.mjs.map +1 -0
- package/dist/admin/translations/en.json.js +111 -0
- package/dist/admin/translations/en.json.js.map +1 -0
- package/dist/admin/translations/en.json.mjs +109 -0
- package/dist/admin/translations/en.json.mjs.map +1 -0
- package/dist/admin/translations/uk.json.js +103 -0
- package/dist/admin/translations/uk.json.js.map +1 -0
- package/dist/admin/translations/uk.json.mjs +101 -0
- package/dist/admin/translations/uk.json.mjs.map +1 -0
- package/dist/admin/utils/api.js +8 -0
- package/dist/admin/utils/api.js.map +1 -0
- package/dist/admin/utils/api.mjs +6 -0
- package/dist/admin/utils/api.mjs.map +1 -0
- package/dist/admin/utils/prefixPluginTranslations.js +11 -0
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
- package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
- package/dist/admin/utils/time.js +42 -0
- package/dist/admin/utils/time.js.map +1 -0
- package/dist/admin/utils/time.mjs +39 -0
- package/dist/admin/utils/time.mjs.map +1 -0
- package/dist/admin/validation/schemas.js +65 -0
- package/dist/admin/validation/schemas.js.map +1 -0
- package/dist/admin/validation/schemas.mjs +43 -0
- package/dist/admin/validation/schemas.mjs.map +1 -0
- package/dist/server/bootstrap.js +68 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/bootstrap.mjs +66 -0
- package/dist/server/bootstrap.mjs.map +1 -0
- package/dist/server/constants.js +74 -0
- package/dist/server/constants.js.map +1 -0
- package/dist/server/constants.mjs +69 -0
- package/dist/server/constants.mjs.map +1 -0
- package/dist/server/content-types/index.js +12 -0
- package/dist/server/content-types/index.js.map +1 -0
- package/dist/server/content-types/index.mjs +10 -0
- package/dist/server/content-types/index.mjs.map +1 -0
- package/dist/server/content-types/release/index.js +10 -0
- package/dist/server/content-types/release/index.js.map +1 -0
- package/dist/server/content-types/release/index.mjs +8 -0
- package/dist/server/content-types/release/index.mjs.map +1 -0
- package/dist/server/content-types/release/schema.js +58 -0
- package/dist/server/content-types/release/schema.js.map +1 -0
- package/dist/server/content-types/release/schema.mjs +56 -0
- package/dist/server/content-types/release/schema.mjs.map +1 -0
- package/dist/server/content-types/release-action/index.js +10 -0
- package/dist/server/content-types/release-action/index.js.map +1 -0
- package/dist/server/content-types/release-action/index.mjs +8 -0
- package/dist/server/content-types/release-action/index.mjs.map +1 -0
- package/dist/server/content-types/release-action/schema.js +55 -0
- package/dist/server/content-types/release-action/schema.js.map +1 -0
- package/dist/server/content-types/release-action/schema.mjs +53 -0
- package/dist/server/content-types/release-action/schema.mjs.map +1 -0
- package/dist/server/controllers/homepage.js +15 -0
- package/dist/server/controllers/homepage.js.map +1 -0
- package/dist/server/controllers/homepage.mjs +13 -0
- package/dist/server/controllers/homepage.mjs.map +1 -0
- package/dist/server/controllers/index.js +16 -0
- package/dist/server/controllers/index.js.map +1 -0
- package/dist/server/controllers/index.mjs +14 -0
- package/dist/server/controllers/index.mjs.map +1 -0
- package/dist/server/controllers/release-action.js +150 -0
- package/dist/server/controllers/release-action.js.map +1 -0
- package/dist/server/controllers/release-action.mjs +148 -0
- package/dist/server/controllers/release-action.mjs.map +1 -0
- package/dist/server/controllers/release.js +302 -0
- package/dist/server/controllers/release.js.map +1 -0
- package/dist/server/controllers/release.mjs +300 -0
- package/dist/server/controllers/release.mjs.map +1 -0
- package/dist/server/controllers/settings.js +37 -0
- package/dist/server/controllers/settings.js.map +1 -0
- package/dist/server/controllers/settings.mjs +35 -0
- package/dist/server/controllers/settings.mjs.map +1 -0
- package/dist/server/controllers/validation/release-action.js +34 -0
- package/dist/server/controllers/validation/release-action.js.map +1 -0
- package/dist/server/controllers/validation/release-action.mjs +30 -0
- package/dist/server/controllers/validation/release-action.mjs.map +1 -0
- package/dist/server/controllers/validation/release.js +26 -0
- package/dist/server/controllers/validation/release.js.map +1 -0
- package/dist/server/controllers/validation/release.mjs +22 -0
- package/dist/server/controllers/validation/release.mjs.map +1 -0
- package/dist/server/controllers/validation/settings.js +32 -0
- package/dist/server/controllers/validation/settings.js.map +1 -0
- package/dist/server/controllers/validation/settings.mjs +10 -0
- package/dist/server/controllers/validation/settings.mjs.map +1 -0
- package/dist/server/destroy.js +15 -0
- package/dist/server/destroy.js.map +1 -0
- package/dist/server/destroy.mjs +13 -0
- package/dist/server/destroy.mjs.map +1 -0
- package/dist/server/index.js +25 -1984
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +24 -1964
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/middlewares/documents.js +104 -0
- package/dist/server/middlewares/documents.js.map +1 -0
- package/dist/server/middlewares/documents.mjs +101 -0
- package/dist/server/middlewares/documents.mjs.map +1 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +51 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +49 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -0
- package/dist/server/migrations/index.js +205 -0
- package/dist/server/migrations/index.js.map +1 -0
- package/dist/server/migrations/index.mjs +198 -0
- package/dist/server/migrations/index.mjs.map +1 -0
- package/dist/server/register.js +23 -0
- package/dist/server/register.js.map +1 -0
- package/dist/server/register.mjs +21 -0
- package/dist/server/register.mjs.map +1 -0
- package/dist/server/routes/homepage.js +25 -0
- package/dist/server/routes/homepage.js.map +1 -0
- package/dist/server/routes/homepage.mjs +23 -0
- package/dist/server/routes/homepage.mjs.map +1 -0
- package/dist/server/routes/index.js +16 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/index.mjs +14 -0
- package/dist/server/routes/index.mjs.map +1 -0
- package/dist/server/routes/release-action.js +100 -0
- package/dist/server/routes/release-action.js.map +1 -0
- package/dist/server/routes/release-action.mjs +98 -0
- package/dist/server/routes/release-action.mjs.map +1 -0
- package/dist/server/routes/release.js +154 -0
- package/dist/server/routes/release.js.map +1 -0
- package/dist/server/routes/release.mjs +152 -0
- package/dist/server/routes/release.mjs.map +1 -0
- package/dist/server/routes/settings.js +46 -0
- package/dist/server/routes/settings.js.map +1 -0
- package/dist/server/routes/settings.mjs +44 -0
- package/dist/server/routes/settings.mjs.map +1 -0
- package/dist/server/services/homepage.js +26 -0
- package/dist/server/services/homepage.js.map +1 -0
- package/dist/server/services/homepage.mjs +24 -0
- package/dist/server/services/homepage.mjs.map +1 -0
- package/dist/server/services/index.js +20 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/index.mjs +18 -0
- package/dist/server/services/index.mjs.map +1 -0
- package/dist/server/services/release-action.js +324 -0
- package/dist/server/services/release-action.js.map +1 -0
- package/dist/server/services/release-action.mjs +322 -0
- package/dist/server/services/release-action.mjs.map +1 -0
- package/dist/server/services/release.js +324 -0
- package/dist/server/services/release.js.map +1 -0
- package/dist/server/services/release.mjs +322 -0
- package/dist/server/services/release.mjs.map +1 -0
- package/dist/server/services/scheduling.js +74 -0
- package/dist/server/services/scheduling.js.map +1 -0
- package/dist/server/services/scheduling.mjs +72 -0
- package/dist/server/services/scheduling.mjs.map +1 -0
- package/dist/server/services/settings.js +34 -0
- package/dist/server/services/settings.js.map +1 -0
- package/dist/server/services/settings.mjs +32 -0
- package/dist/server/services/settings.mjs.map +1 -0
- package/dist/server/services/validation.js +91 -0
- package/dist/server/services/validation.js.map +1 -0
- package/dist/server/services/validation.mjs +86 -0
- package/dist/server/services/validation.mjs.map +1 -0
- package/dist/server/src/controllers/homepage.d.ts +6 -0
- package/dist/server/src/controllers/homepage.d.ts.map +1 -0
- package/dist/server/src/controllers/index.d.ts +3 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/destroy.d.ts +1 -1
- package/dist/server/src/destroy.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +15 -10
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/documents.d.ts +1 -1
- package/dist/server/src/middlewares/documents.d.ts.map +1 -1
- package/dist/server/src/routes/homepage.d.ts +4 -0
- package/dist/server/src/routes/homepage.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/homepage.d.ts +9 -0
- package/dist/server/src/services/homepage.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +11 -10
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/release-action.d.ts +3 -7
- package/dist/server/src/services/release-action.d.ts.map +1 -1
- package/dist/server/src/services/scheduling.d.ts +5 -6
- package/dist/server/src/services/scheduling.d.ts.map +1 -1
- package/dist/server/src/services/validation.d.ts +1 -1
- package/dist/server/src/services/validation.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/utils/index.js +94 -0
- package/dist/server/utils/index.js.map +1 -0
- package/dist/server/utils/index.mjs +88 -0
- package/dist/server/utils/index.mjs.map +1 -0
- package/dist/shared/contracts/homepage.d.ts +11 -0
- package/dist/shared/contracts/homepage.d.ts.map +1 -0
- package/dist/shared/contracts/release-actions.d.ts +8 -2
- package/dist/shared/contracts/release-actions.d.ts.map +1 -1
- package/dist/shared/contracts/releases.d.ts +0 -1
- package/dist/shared/contracts/settings.d.ts +1 -2
- package/dist/shared/contracts/settings.d.ts.map +1 -1
- package/dist/shared/types.d.ts +1 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +19 -17
- package/dist/_chunks/App-BKB1esYS.js +0 -1395
- package/dist/_chunks/App-BKB1esYS.js.map +0 -1
- package/dist/_chunks/App-Cne--1Z8.mjs +0 -1374
- package/dist/_chunks/App-Cne--1Z8.mjs.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js +0 -52
- package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs +0 -52
- package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs.map +0 -1
- package/dist/_chunks/ReleasesSettingsPage-C1WwGWIH.mjs +0 -178
- package/dist/_chunks/ReleasesSettingsPage-C1WwGWIH.mjs.map +0 -1
- package/dist/_chunks/ReleasesSettingsPage-kuXIwpWp.js +0 -178
- package/dist/_chunks/ReleasesSettingsPage-kuXIwpWp.js.map +0 -1
- package/dist/_chunks/en-CmYoEnA7.js +0 -93
- package/dist/_chunks/en-CmYoEnA7.js.map +0 -1
- package/dist/_chunks/en-D0yVZFqf.mjs +0 -93
- package/dist/_chunks/en-D0yVZFqf.mjs.map +0 -1
- package/dist/_chunks/index-5Odi61vw.js +0 -1381
- package/dist/_chunks/index-5Odi61vw.js.map +0 -1
- package/dist/_chunks/index-Cy7qwpaU.mjs +0 -1362
- package/dist/_chunks/index-Cy7qwpaU.mjs.map +0 -1
- package/dist/_chunks/schemas-BE1LxE9J.js +0 -62
- package/dist/_chunks/schemas-BE1LxE9J.js.map +0 -1
- package/dist/_chunks/schemas-DdA2ic2U.mjs +0 -44
- package/dist/_chunks/schemas-DdA2ic2U.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReleaseDetailsPage.mjs","sources":["../../../admin/src/pages/ReleaseDetailsPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n Table,\n BackButton,\n ConfirmDialog,\n useTracking,\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n useStrapiApp,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n Main,\n Tr,\n Td,\n Typography,\n Badge,\n SingleSelect,\n SingleSelectOption,\n EmptyStateLayout,\n LinkButton,\n Dialog,\n SimpleMenu,\n Menu,\n} from '@strapi/design-system';\nimport { More, Pencil, Trash } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport format from 'date-fns/format';\nimport { utcToZonedTime } from 'date-fns-tz';\nimport { useIntl } from 'react-intl';\nimport { useParams, useNavigate, Link as ReactRouterLink, Navigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { EntryValidationPopover } from '../components/EntryValidationPopover';\nimport { RelativeTime } from '../components/RelativeTime';\nimport { ReleaseActionMenu } from '../components/ReleaseActionMenu';\nimport { ReleaseActionOptions } from '../components/ReleaseActionOptions';\nimport { ReleaseModal, FormValues } from '../components/ReleaseModal';\nimport { PERMISSIONS } from '../constants';\nimport {\n GetReleaseActionsQueryParams,\n useGetReleaseActionsQuery,\n useGetReleaseQuery,\n useGetReleaseSettingsQuery,\n useUpdateReleaseMutation,\n useUpdateReleaseActionMutation,\n usePublishReleaseMutation,\n useDeleteReleaseMutation,\n releaseApi,\n} from '../services/release';\nimport { useTypedDispatch } from '../store/hooks';\nimport { isBaseQueryError } from '../utils/api';\nimport { getTimezoneOffset } from '../utils/time';\n\nimport { getBadgeProps } from './ReleasesPage';\n\nimport type {\n ReleaseAction,\n ReleaseActionGroupBy,\n} from '../../../shared/contracts/release-actions';\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsLayout\n * -----------------------------------------------------------------------------------------------*/\nconst ReleaseInfoWrapper = styled(Flex)`\n align-self: stretch;\n border-bottom-right-radius: ${({ theme }) => theme.borderRadius};\n border-bottom-left-radius: ${({ theme }) => theme.borderRadius};\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface ReleaseDetailsLayoutProps {\n toggleEditReleaseModal: () => void;\n toggleWarningSubmit: () => void;\n children: React.ReactNode;\n}\n\nconst ReleaseDetailsLayout = ({\n toggleEditReleaseModal,\n toggleWarningSubmit,\n children,\n}: ReleaseDetailsLayoutProps) => {\n const { formatMessage, formatDate, formatTime } = useIntl();\n const { releaseId } = useParams<{ releaseId: string }>();\n const {\n data,\n isLoading: isLoadingDetails,\n error,\n } = useGetReleaseQuery(\n { id: releaseId! },\n {\n skip: !releaseId,\n }\n );\n const [publishRelease, { isLoading: isPublishing }] = usePublishReleaseMutation();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const { allowedActions } = useRBAC(PERMISSIONS);\n const { canUpdate, canDelete, canPublish } = allowedActions;\n const dispatch = useTypedDispatch();\n const { trackUsage } = useTracking();\n\n const release = data?.data;\n\n const handlePublishRelease = (id: string) => async () => {\n const response = await publishRelease({ id });\n\n if ('data' in response) {\n // When the response returns an object with 'data', handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.pages.ReleaseDetails.publish-notification-success',\n defaultMessage: 'Release was published successfully.',\n }),\n });\n\n const { totalEntries, totalPublishedEntries, totalUnpublishedEntries } = response.data.meta;\n\n trackUsage('didPublishRelease', {\n totalEntries,\n totalPublishedEntries,\n totalUnpublishedEntries,\n });\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleRefresh = () => {\n dispatch(\n releaseApi.util.invalidateTags([\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'Release', id: releaseId },\n ])\n );\n };\n\n const getCreatedByUser = () => {\n if (!release?.createdBy) {\n return null;\n }\n\n // Favor the username\n if (release.createdBy.username) {\n return release.createdBy.username;\n }\n\n // Firstname may not exist if created with SSO\n if (release.createdBy.firstname) {\n return `${release.createdBy.firstname} ${release.createdBy.lastname || ''}`.trim();\n }\n\n // All users must have at least an email\n return release.createdBy.email;\n };\n\n if (isLoadingDetails) {\n return <Page.Loading />;\n }\n\n if ((isBaseQueryError(error) && 'code' in error) || !release) {\n return (\n <Navigate\n to=\"..\"\n state={{\n errors: [\n {\n // @ts-expect-error – TODO: fix this weird error flow\n code: error?.code,\n },\n ],\n }}\n />\n );\n }\n\n const totalEntries = release.actions.meta.count || 0;\n const hasCreatedByUser = Boolean(getCreatedByUser());\n\n const isScheduled = release.scheduledAt && release.timezone;\n const numberOfEntriesText = formatMessage(\n {\n id: 'content-releases.pages.Details.header-subtitle',\n defaultMessage: '{number, plural, =0 {No entries} one {# entry} other {# entries}}',\n },\n { number: totalEntries }\n );\n const scheduledText = isScheduled\n ? formatMessage(\n {\n id: 'content-releases.pages.ReleaseDetails.header-subtitle.scheduled',\n defaultMessage: 'Scheduled for {date} at {time} ({offset})',\n },\n {\n date: formatDate(new Date(release.scheduledAt!), {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n timeZone: release.timezone!,\n }),\n time: formatTime(new Date(release.scheduledAt!), {\n timeZone: release.timezone!,\n hourCycle: 'h23',\n }),\n offset: getTimezoneOffset(release.timezone!, new Date(release.scheduledAt!)),\n }\n )\n : '';\n\n return (\n <Main aria-busy={isLoadingDetails}>\n <Layouts.Header\n title={release.name}\n subtitle={\n <Flex gap={2} lineHeight={6}>\n <Typography textColor=\"neutral600\" variant=\"epsilon\">\n {numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : '')}\n </Typography>\n <Badge {...getBadgeProps(release.status)}>{release.status}</Badge>\n </Flex>\n }\n navigationAction={<BackButton fallback=\"..\" />}\n primaryAction={\n !release.releasedAt && (\n <Flex gap={2}>\n <SimpleMenuButton\n label={<More />}\n variant=\"tertiary\"\n endIcon={null}\n paddingLeft=\"7px\"\n paddingRight=\"7px\"\n aria-label={formatMessage({\n id: 'content-releases.header.actions.open-release-actions',\n defaultMessage: 'Release edit and delete menu',\n })}\n popoverPlacement=\"bottom-end\"\n >\n <Menu.Item\n disabled={!canUpdate}\n onSelect={toggleEditReleaseModal}\n startIcon={<Pencil />}\n >\n {formatMessage({\n id: 'content-releases.header.actions.edit',\n defaultMessage: 'Edit',\n })}\n </Menu.Item>\n <Menu.Item\n disabled={!canDelete}\n onSelect={toggleWarningSubmit}\n variant=\"danger\"\n startIcon={<Trash />}\n >\n {formatMessage({\n id: 'content-releases.header.actions.delete',\n defaultMessage: 'Delete',\n })}\n </Menu.Item>\n <ReleaseInfoWrapper\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"flex-start\"\n gap={1}\n padding={4}\n >\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-releases.header.actions.created',\n defaultMessage: 'Created',\n })}\n </Typography>\n <Typography variant=\"pi\" color=\"neutral300\">\n <RelativeTime timestamp={new Date(release.createdAt)} />\n {formatMessage(\n {\n id: 'content-releases.header.actions.created.description',\n defaultMessage:\n '{hasCreatedByUser, select, true { by {createdBy}} other { by deleted user}}',\n },\n { createdBy: getCreatedByUser(), hasCreatedByUser }\n )}\n </Typography>\n </ReleaseInfoWrapper>\n </SimpleMenuButton>\n <Button size=\"S\" variant=\"tertiary\" onClick={handleRefresh}>\n {formatMessage({\n id: 'content-releases.header.actions.refresh',\n defaultMessage: 'Refresh',\n })}\n </Button>\n {canPublish ? (\n <Button\n size=\"S\"\n variant=\"default\"\n onClick={handlePublishRelease(release.id.toString())}\n loading={isPublishing}\n disabled={release.actions.meta.count === 0}\n >\n {formatMessage({\n id: 'content-releases.header.actions.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n ) : null}\n </Flex>\n )\n }\n />\n {children}\n </Main>\n );\n};\n\nconst SimpleMenuButton = styled(SimpleMenu)`\n & > span {\n display: flex;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsBody\n * -----------------------------------------------------------------------------------------------*/\nconst GROUP_BY_OPTIONS = ['contentType', 'locale', 'action'] as const;\nconst GROUP_BY_OPTIONS_NO_LOCALE = ['contentType', 'action'] as const;\nconst getGroupByOptionLabel = (value: (typeof GROUP_BY_OPTIONS)[number]) => {\n if (value === 'locale') {\n return {\n id: 'content-releases.pages.ReleaseDetails.groupBy.option.locales',\n defaultMessage: 'Locales',\n };\n }\n\n if (value === 'action') {\n return {\n id: 'content-releases.pages.ReleaseDetails.groupBy.option.actions',\n defaultMessage: 'Actions',\n };\n }\n\n return {\n id: 'content-releases.pages.ReleaseDetails.groupBy.option.content-type',\n defaultMessage: 'Content-Types',\n };\n};\n\ninterface ReleaseDetailsBodyProps {\n releaseId: string;\n}\n\nconst ReleaseDetailsBody = ({ releaseId }: ReleaseDetailsBodyProps) => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<GetReleaseActionsQueryParams>();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const {\n data: releaseData,\n isLoading: isReleaseLoading,\n error: releaseError,\n } = useGetReleaseQuery({ id: releaseId });\n const {\n allowedActions: { canUpdate },\n } = useRBAC(PERMISSIONS);\n const runHookWaterfall = useStrapiApp('ReleaseDetailsPage', (state) => state.runHookWaterfall);\n\n // TODO: Migrated displayedHeader to v5\n const { displayedHeaders, hasI18nEnabled }: { displayedHeaders: any; hasI18nEnabled: boolean } =\n runHookWaterfall('ContentReleases/pages/ReleaseDetails/add-locale-in-releases', {\n displayedHeaders: [\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.name',\n defaultMessage: 'name',\n },\n name: 'name',\n },\n ],\n hasI18nEnabled: false,\n });\n\n const release = releaseData?.data;\n const selectedGroupBy = query?.groupBy || 'contentType';\n\n const {\n isLoading,\n isFetching,\n isError,\n data,\n error: releaseActionsError,\n } = useGetReleaseActionsQuery({\n ...query,\n releaseId,\n });\n\n const [updateReleaseAction] = useUpdateReleaseActionMutation();\n\n const handleChangeType = async (\n e: React.ChangeEvent<HTMLInputElement>,\n actionId: ReleaseAction['id'],\n actionPath: [string, number]\n ) => {\n const response = await updateReleaseAction({\n params: {\n releaseId,\n actionId,\n },\n body: {\n type: e.target.value as ReleaseAction['type'],\n },\n query, // We are passing the query params to make optimistic updates\n actionPath, // We are passing the action path to found the position in the cache of the action for optimistic updates\n });\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (isLoading || isReleaseLoading) {\n return <Page.Loading />;\n }\n\n const releaseActions = data?.data;\n const releaseMeta = data?.meta;\n const contentTypes = releaseMeta?.contentTypes || {};\n const components = releaseMeta?.components || {};\n\n if (isBaseQueryError(releaseError) || !release) {\n const errorsArray = [];\n if (releaseError && 'code' in releaseError) {\n errorsArray.push({\n code: releaseError.code,\n });\n }\n if (releaseActionsError && 'code' in releaseActionsError) {\n errorsArray.push({\n code: releaseActionsError.code,\n });\n }\n return (\n <Navigate\n to=\"..\"\n state={{\n errors: errorsArray,\n }}\n />\n );\n }\n\n if (isError || !releaseActions) {\n return <Page.Error />;\n }\n\n if (Object.keys(releaseActions).length === 0) {\n return (\n <Layouts.Content>\n <EmptyStateLayout\n action={\n <LinkButton\n tag={ReactRouterLink}\n to={{\n pathname: '/content-manager',\n }}\n style={{ textDecoration: 'none' }}\n variant=\"secondary\"\n >\n {formatMessage({\n id: 'content-releases.page.Details.button.openContentManager',\n defaultMessage: 'Open the Content Manager',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'content-releases.pages.Details.tab.emptyEntries',\n defaultMessage:\n 'This release is empty. Open the Content Manager, select an entry and add it to the release.',\n })}\n />\n </Layouts.Content>\n );\n }\n\n const groupByLabel = formatMessage({\n id: 'content-releases.pages.ReleaseDetails.groupBy.aria-label',\n defaultMessage: 'Group by',\n });\n const headers = [\n ...displayedHeaders,\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.content-type',\n defaultMessage: 'content-type',\n },\n name: 'content-type',\n },\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.action',\n defaultMessage: 'action',\n },\n name: 'action',\n },\n ...(!release.releasedAt\n ? [\n {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.status',\n defaultMessage: 'status',\n },\n name: 'status',\n },\n ]\n : []),\n ];\n\n const options = hasI18nEnabled ? GROUP_BY_OPTIONS : GROUP_BY_OPTIONS_NO_LOCALE;\n\n return (\n <Layouts.Content>\n <Flex gap={8} direction=\"column\" alignItems=\"stretch\">\n <Flex>\n <SingleSelect\n placeholder={groupByLabel}\n aria-label={groupByLabel}\n customizeContent={(value) =>\n formatMessage(\n {\n id: `content-releases.pages.ReleaseDetails.groupBy.label`,\n defaultMessage: `Group by {groupBy}`,\n },\n {\n groupBy: value,\n }\n )\n }\n value={formatMessage(getGroupByOptionLabel(selectedGroupBy))}\n onChange={(value) => setQuery({ groupBy: value as ReleaseActionGroupBy })}\n >\n {options.map((option) => (\n <SingleSelectOption key={option} value={option}>\n {formatMessage(getGroupByOptionLabel(option))}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Flex>\n {Object.keys(releaseActions).map((key) => (\n <Flex key={`releases-group-${key}`} gap={4} direction=\"column\" alignItems=\"stretch\">\n <Flex role=\"separator\" aria-label={key}>\n <Badge>{key}</Badge>\n </Flex>\n <Table.Root\n rows={releaseActions[key].map((item) => ({\n ...item,\n id: Number(item.entry.id),\n }))}\n headers={headers}\n isLoading={isLoading || isFetching}\n >\n <Table.Content>\n <Table.Head>\n {headers.map(({ label, name }) => (\n <Table.HeaderCell key={name} label={formatMessage(label)} name={name} />\n ))}\n </Table.Head>\n <Table.Loading />\n <Table.Body>\n {releaseActions[key].map(\n ({ id, contentType, locale, type, entry, status }, actionIndex) => (\n <Tr key={id}>\n <Td width=\"25%\" maxWidth=\"200px\">\n <Typography ellipsis>{`${\n contentType.mainFieldValue || entry.id\n }`}</Typography>\n </Td>\n {hasI18nEnabled && (\n <Td width=\"10%\">\n <Typography>{`${locale?.name ? locale.name : '-'}`}</Typography>\n </Td>\n )}\n\n <Td width=\"10%\">\n <Typography>{contentType.displayName || ''}</Typography>\n </Td>\n <Td width=\"20%\">\n {release.releasedAt ? (\n <Typography>\n {formatMessage(\n {\n id: 'content-releases.page.ReleaseDetails.table.action-published',\n defaultMessage:\n 'This entry was <b>{isPublish, select, true {published} other {unpublished}}</b>.',\n },\n {\n isPublish: type === 'publish',\n b: (children: React.ReactNode) => (\n <Typography fontWeight=\"bold\">{children}</Typography>\n ),\n }\n )}\n </Typography>\n ) : (\n <ReleaseActionOptions\n selected={type}\n handleChange={(e) => handleChangeType(e, id, [key, actionIndex])}\n name={`release-action-${id}-type`}\n disabled={!canUpdate}\n />\n )}\n </Td>\n {!release.releasedAt && (\n <>\n <Td width=\"20%\" minWidth=\"200px\">\n <EntryValidationPopover\n action={type}\n schema={contentTypes?.[contentType.uid]}\n entry={entry}\n status={status}\n />\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\">\n <ReleaseActionMenu.Root>\n <ReleaseActionMenu.ReleaseActionEntryLinkItem\n contentTypeUid={contentType.uid}\n documentId={entry.documentId}\n locale={locale?.code}\n />\n <ReleaseActionMenu.DeleteReleaseActionItem\n releaseId={release.id}\n actionId={id}\n />\n </ReleaseActionMenu.Root>\n </Flex>\n </Td>\n </>\n )}\n </Tr>\n )\n )}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n </Flex>\n ))}\n <Pagination.Root\n {...releaseMeta?.pagination}\n defaultPageSize={releaseMeta?.pagination?.pageSize}\n >\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Flex>\n </Layouts.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsPage\n * -----------------------------------------------------------------------------------------------*/\nconst ReleaseDetailsPage = () => {\n const { formatMessage } = useIntl();\n const { releaseId } = useParams<{ releaseId: string }>();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n const [releaseModalShown, setReleaseModalShown] = React.useState(false);\n const [showWarningSubmit, setWarningSubmit] = React.useState(false);\n\n const {\n isLoading: isLoadingDetails,\n data,\n isSuccess: isSuccessDetails,\n } = useGetReleaseQuery(\n { id: releaseId! },\n {\n skip: !releaseId,\n }\n );\n const { data: dataTimezone, isLoading: isLoadingTimezone } = useGetReleaseSettingsQuery();\n const [updateRelease, { isLoading: isSubmittingForm }] = useUpdateReleaseMutation();\n const [deleteRelease] = useDeleteReleaseMutation();\n\n const toggleEditReleaseModal = () => {\n setReleaseModalShown((prev) => !prev);\n };\n\n const getTimezoneValue = () => {\n if (releaseData?.timezone) {\n return releaseData.timezone;\n } else {\n if (dataTimezone?.data.defaultTimezone) {\n return dataTimezone.data.defaultTimezone;\n }\n return null;\n }\n };\n\n const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n if (isLoadingDetails || isLoadingTimezone) {\n return (\n <ReleaseDetailsLayout\n toggleEditReleaseModal={toggleEditReleaseModal}\n toggleWarningSubmit={toggleWarningSubmit}\n >\n <Page.Loading />\n </ReleaseDetailsLayout>\n );\n }\n\n if (!releaseId) {\n return <Navigate to=\"..\" />;\n }\n\n const releaseData = (isSuccessDetails && data?.data) || null;\n\n const title = releaseData?.name || '';\n const timezone = getTimezoneValue();\n const scheduledAt =\n releaseData?.scheduledAt && timezone ? utcToZonedTime(releaseData.scheduledAt, timezone) : null;\n // Just get the date and time to display without considering updated timezone time\n const date = scheduledAt ? format(scheduledAt, 'yyyy-MM-dd') : undefined;\n const time = scheduledAt ? format(scheduledAt, 'HH:mm') : '';\n\n const handleEditRelease = async (values: FormValues) => {\n const response = await updateRelease({\n id: releaseId,\n name: values.name,\n scheduledAt: values.scheduledAt,\n timezone: values.timezone,\n });\n\n if ('data' in response) {\n // When the response returns an object with 'data', handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.modal.release-updated-notification-success',\n defaultMessage: 'Release updated.',\n }),\n });\n toggleEditReleaseModal();\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleDeleteRelease = async () => {\n const response = await deleteRelease({\n id: releaseId,\n });\n\n if ('data' in response) {\n navigate('..');\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <ReleaseDetailsLayout\n toggleEditReleaseModal={toggleEditReleaseModal}\n toggleWarningSubmit={toggleWarningSubmit}\n >\n <ReleaseDetailsBody releaseId={releaseId} />\n <ReleaseModal\n open={releaseModalShown}\n handleClose={toggleEditReleaseModal}\n handleSubmit={handleEditRelease}\n isLoading={isLoadingDetails || isSubmittingForm}\n initialValues={{\n name: title || '',\n scheduledAt,\n date,\n time,\n isScheduled: Boolean(scheduledAt),\n timezone,\n }}\n />\n <Dialog.Root open={showWarningSubmit} onOpenChange={toggleWarningSubmit}>\n <ConfirmDialog onConfirm={handleDeleteRelease}>\n {formatMessage({\n id: 'content-releases.dialog.confirmation-message',\n defaultMessage: 'Are you sure you want to delete this release?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </ReleaseDetailsLayout>\n );\n};\n\nexport { ReleaseDetailsPage };\n"],"names":["ReleaseInfoWrapper","styled","Flex","theme","borderRadius","colors","neutral150","ReleaseDetailsLayout","toggleEditReleaseModal","toggleWarningSubmit","children","formatMessage","formatDate","formatTime","useIntl","releaseId","useParams","data","isLoading","isLoadingDetails","error","useGetReleaseQuery","id","skip","publishRelease","isPublishing","usePublishReleaseMutation","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","allowedActions","useRBAC","PERMISSIONS","canUpdate","canDelete","canPublish","dispatch","useTypedDispatch","trackUsage","useTracking","release","handlePublishRelease","response","type","message","defaultMessage","totalEntries","totalPublishedEntries","totalUnpublishedEntries","meta","isFetchError","handleRefresh","releaseApi","util","invalidateTags","getCreatedByUser","createdBy","username","firstname","lastname","trim","email","_jsx","Page","Loading","Navigate","to","state","errors","code","actions","count","hasCreatedByUser","Boolean","isScheduled","scheduledAt","timezone","numberOfEntriesText","number","scheduledText","date","Date","weekday","day","month","year","timeZone","time","hourCycle","offset","getTimezoneOffset","_jsxs","Main","aria-busy","Layouts","Header","title","name","subtitle","gap","lineHeight","Typography","textColor","variant","Badge","getBadgeProps","status","navigationAction","BackButton","fallback","primaryAction","releasedAt","SimpleMenuButton","label","More","endIcon","paddingLeft","paddingRight","aria-label","popoverPlacement","Menu","Item","disabled","onSelect","startIcon","Pencil","Trash","direction","justifyContent","alignItems","padding","fontWeight","color","RelativeTime","timestamp","createdAt","Button","size","onClick","toString","loading","SimpleMenu","GROUP_BY_OPTIONS","GROUP_BY_OPTIONS_NO_LOCALE","getGroupByOptionLabel","value","ReleaseDetailsBody","query","setQuery","useQueryParams","releaseData","isReleaseLoading","releaseError","runHookWaterfall","useStrapiApp","displayedHeaders","hasI18nEnabled","selectedGroupBy","groupBy","isFetching","isError","releaseActionsError","useGetReleaseActionsQuery","updateReleaseAction","useUpdateReleaseActionMutation","handleChangeType","e","actionId","actionPath","params","body","target","releaseActions","releaseMeta","contentTypes","components","isBaseQueryError","errorsArray","push","Error","Object","keys","length","Content","EmptyStateLayout","action","LinkButton","tag","ReactRouterLink","pathname","style","textDecoration","icon","EmptyDocuments","width","content","groupByLabel","headers","options","SingleSelect","placeholder","customizeContent","onChange","map","option","SingleSelectOption","key","role","Table","Root","rows","item","Number","entry","Head","HeaderCell","Body","contentType","locale","actionIndex","Tr","Td","maxWidth","ellipsis","mainFieldValue","displayName","isPublish","b","ReleaseActionOptions","selected","handleChange","_Fragment","minWidth","EntryValidationPopover","schema","uid","ReleaseActionMenu","ReleaseActionEntryLinkItem","contentTypeUid","documentId","DeleteReleaseActionItem","Pagination","pagination","defaultPageSize","pageSize","PageSize","Links","ReleaseDetailsPage","navigate","useNavigate","releaseModalShown","setReleaseModalShown","React","useState","showWarningSubmit","setWarningSubmit","isSuccess","isSuccessDetails","dataTimezone","isLoadingTimezone","useGetReleaseSettingsQuery","updateRelease","isSubmittingForm","useUpdateReleaseMutation","deleteRelease","useDeleteReleaseMutation","prev","getTimezoneValue","defaultTimezone","prevState","utcToZonedTime","format","undefined","handleEditRelease","values","handleDeleteRelease","ReleaseModal","open","handleClose","handleSubmit","initialValues","Dialog","onOpenChange","ConfirmDialog","onConfirm"],"mappings":"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"}
|
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
6
|
+
var ee = require('@strapi/admin/strapi-admin/ee');
|
|
7
|
+
var designSystem = require('@strapi/design-system');
|
|
8
|
+
var icons = require('@strapi/icons');
|
|
9
|
+
var symbols = require('@strapi/icons/symbols');
|
|
10
|
+
var dateFns = require('date-fns');
|
|
11
|
+
var reactIntl = require('react-intl');
|
|
12
|
+
var reactRouterDom = require('react-router-dom');
|
|
13
|
+
var styledComponents = require('styled-components');
|
|
14
|
+
var RelativeTime$1 = require('../components/RelativeTime.js');
|
|
15
|
+
var ReleaseModal = require('../components/ReleaseModal.js');
|
|
16
|
+
var constants = require('../constants.js');
|
|
17
|
+
var release = require('../services/release.js');
|
|
18
|
+
|
|
19
|
+
function _interopNamespaceDefault(e) {
|
|
20
|
+
var n = Object.create(null);
|
|
21
|
+
if (e) {
|
|
22
|
+
Object.keys(e).forEach(function (k) {
|
|
23
|
+
if (k !== 'default') {
|
|
24
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
25
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () { return e[k]; }
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
n.default = e;
|
|
33
|
+
return Object.freeze(n);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
37
|
+
|
|
38
|
+
const LinkCard = styledComponents.styled(designSystem.Link)`
|
|
39
|
+
display: block;
|
|
40
|
+
`;
|
|
41
|
+
const RelativeTime = styledComponents.styled(RelativeTime$1.RelativeTime)`
|
|
42
|
+
display: inline-block;
|
|
43
|
+
&::first-letter {
|
|
44
|
+
text-transform: uppercase;
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
const getBadgeProps = (status)=>{
|
|
48
|
+
let color;
|
|
49
|
+
switch(status){
|
|
50
|
+
case 'ready':
|
|
51
|
+
color = 'success';
|
|
52
|
+
break;
|
|
53
|
+
case 'blocked':
|
|
54
|
+
color = 'warning';
|
|
55
|
+
break;
|
|
56
|
+
case 'failed':
|
|
57
|
+
color = 'danger';
|
|
58
|
+
break;
|
|
59
|
+
case 'done':
|
|
60
|
+
color = 'primary';
|
|
61
|
+
break;
|
|
62
|
+
case 'empty':
|
|
63
|
+
default:
|
|
64
|
+
color = 'neutral';
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
textColor: `${color}600`,
|
|
68
|
+
backgroundColor: `${color}100`,
|
|
69
|
+
borderColor: `${color}200`
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
const ReleasesGrid = ({ sectionTitle, releases = [], isError = false })=>{
|
|
73
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
74
|
+
if (isError) {
|
|
75
|
+
return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
|
|
76
|
+
}
|
|
77
|
+
if (releases?.length === 0) {
|
|
78
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.EmptyStateLayout, {
|
|
79
|
+
content: formatMessage({
|
|
80
|
+
id: 'content-releases.page.Releases.tab.emptyEntries',
|
|
81
|
+
defaultMessage: 'No releases'
|
|
82
|
+
}, {
|
|
83
|
+
target: sectionTitle
|
|
84
|
+
}),
|
|
85
|
+
icon: /*#__PURE__*/ jsxRuntime.jsx(symbols.EmptyDocuments, {
|
|
86
|
+
width: "16rem"
|
|
87
|
+
})
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
|
|
91
|
+
gap: 4,
|
|
92
|
+
children: releases.map(({ id, name, scheduledAt, status })=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
|
|
93
|
+
col: 3,
|
|
94
|
+
s: 6,
|
|
95
|
+
xs: 12,
|
|
96
|
+
direction: "column",
|
|
97
|
+
alignItems: "stretch",
|
|
98
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(LinkCard, {
|
|
99
|
+
tag: reactRouterDom.NavLink,
|
|
100
|
+
to: `${id}`,
|
|
101
|
+
isExternal: false,
|
|
102
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
103
|
+
direction: "column",
|
|
104
|
+
justifyContent: "space-between",
|
|
105
|
+
padding: 4,
|
|
106
|
+
hasRadius: true,
|
|
107
|
+
background: "neutral0",
|
|
108
|
+
shadow: "tableShadow",
|
|
109
|
+
height: "100%",
|
|
110
|
+
width: "100%",
|
|
111
|
+
alignItems: "start",
|
|
112
|
+
gap: 4,
|
|
113
|
+
children: [
|
|
114
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
115
|
+
direction: "column",
|
|
116
|
+
alignItems: "start",
|
|
117
|
+
gap: 1,
|
|
118
|
+
children: [
|
|
119
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
120
|
+
textColor: "neutral800",
|
|
121
|
+
tag: "h3",
|
|
122
|
+
variant: "delta",
|
|
123
|
+
fontWeight: "bold",
|
|
124
|
+
children: name
|
|
125
|
+
}),
|
|
126
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
127
|
+
variant: "pi",
|
|
128
|
+
textColor: "neutral600",
|
|
129
|
+
children: scheduledAt ? /*#__PURE__*/ jsxRuntime.jsx(RelativeTime, {
|
|
130
|
+
timestamp: new Date(scheduledAt)
|
|
131
|
+
}) : formatMessage({
|
|
132
|
+
id: 'content-releases.pages.Releases.not-scheduled',
|
|
133
|
+
defaultMessage: 'Not scheduled'
|
|
134
|
+
})
|
|
135
|
+
})
|
|
136
|
+
]
|
|
137
|
+
}),
|
|
138
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Badge, {
|
|
139
|
+
...getBadgeProps(status),
|
|
140
|
+
children: status
|
|
141
|
+
})
|
|
142
|
+
]
|
|
143
|
+
})
|
|
144
|
+
})
|
|
145
|
+
}, id))
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
/* -------------------------------------------------------------------------------------------------
|
|
149
|
+
* ReleasesPage
|
|
150
|
+
* -----------------------------------------------------------------------------------------------*/ const StyledAlert = styledComponents.styled(designSystem.Alert)`
|
|
151
|
+
button {
|
|
152
|
+
display: none;
|
|
153
|
+
}
|
|
154
|
+
p + div {
|
|
155
|
+
margin-left: auto;
|
|
156
|
+
}
|
|
157
|
+
`;
|
|
158
|
+
const INITIAL_FORM_VALUES = {
|
|
159
|
+
name: '',
|
|
160
|
+
date: dateFns.format(new Date(), 'yyyy-MM-dd'),
|
|
161
|
+
time: '',
|
|
162
|
+
isScheduled: true,
|
|
163
|
+
scheduledAt: null,
|
|
164
|
+
timezone: null
|
|
165
|
+
};
|
|
166
|
+
const ReleasesPage = ()=>{
|
|
167
|
+
const location = reactRouterDom.useLocation();
|
|
168
|
+
const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
|
|
169
|
+
const { toggleNotification } = strapiAdmin.useNotification();
|
|
170
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
171
|
+
const navigate = reactRouterDom.useNavigate();
|
|
172
|
+
const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
173
|
+
const [{ query }, setQuery] = strapiAdmin.useQueryParams();
|
|
174
|
+
const response = release.useGetReleasesQuery(query);
|
|
175
|
+
const { data, isLoading: isLoadingSettings } = release.useGetReleaseSettingsQuery();
|
|
176
|
+
const [createRelease, { isLoading: isSubmittingForm }] = release.useCreateReleaseMutation();
|
|
177
|
+
const { getFeature } = ee.useLicenseLimits();
|
|
178
|
+
const { maximumReleases = 3 } = getFeature('cms-content-releases');
|
|
179
|
+
const { trackUsage } = strapiAdmin.useTracking();
|
|
180
|
+
const { allowedActions: { canCreate } } = strapiAdmin.useRBAC(constants.PERMISSIONS);
|
|
181
|
+
const { isLoading: isLoadingReleases, isSuccess, isError } = response;
|
|
182
|
+
const activeTab = response?.currentData?.meta?.activeTab || 'pending';
|
|
183
|
+
// Check if we have some errors and show a notification to the user to explain the error
|
|
184
|
+
React__namespace.useEffect(()=>{
|
|
185
|
+
if (location?.state?.errors) {
|
|
186
|
+
toggleNotification({
|
|
187
|
+
type: 'danger',
|
|
188
|
+
title: formatMessage({
|
|
189
|
+
id: 'content-releases.pages.Releases.notification.error.title',
|
|
190
|
+
defaultMessage: 'Your request could not be processed.'
|
|
191
|
+
}),
|
|
192
|
+
message: formatMessage({
|
|
193
|
+
id: 'content-releases.pages.Releases.notification.error.message',
|
|
194
|
+
defaultMessage: 'Please try again or open another release.'
|
|
195
|
+
})
|
|
196
|
+
});
|
|
197
|
+
navigate('', {
|
|
198
|
+
replace: true,
|
|
199
|
+
state: null
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}, [
|
|
203
|
+
formatMessage,
|
|
204
|
+
location?.state?.errors,
|
|
205
|
+
navigate,
|
|
206
|
+
toggleNotification
|
|
207
|
+
]);
|
|
208
|
+
const toggleAddReleaseModal = ()=>{
|
|
209
|
+
setReleaseModalShown((prev)=>!prev);
|
|
210
|
+
};
|
|
211
|
+
if (isLoadingReleases || isLoadingSettings) {
|
|
212
|
+
return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
213
|
+
}
|
|
214
|
+
const totalPendingReleases = isSuccess && response.currentData?.meta?.pendingReleasesCount || 0;
|
|
215
|
+
const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;
|
|
216
|
+
const handleTabChange = (tabValue)=>{
|
|
217
|
+
setQuery({
|
|
218
|
+
...query,
|
|
219
|
+
page: 1,
|
|
220
|
+
pageSize: response?.currentData?.meta?.pagination?.pageSize || 16,
|
|
221
|
+
filters: {
|
|
222
|
+
releasedAt: {
|
|
223
|
+
$notNull: tabValue !== 'pending'
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
};
|
|
228
|
+
const handleAddRelease = async ({ name, scheduledAt, timezone })=>{
|
|
229
|
+
const response = await createRelease({
|
|
230
|
+
name,
|
|
231
|
+
scheduledAt,
|
|
232
|
+
timezone
|
|
233
|
+
});
|
|
234
|
+
if ('data' in response) {
|
|
235
|
+
// When the response returns an object with 'data', handle success
|
|
236
|
+
toggleNotification({
|
|
237
|
+
type: 'success',
|
|
238
|
+
message: formatMessage({
|
|
239
|
+
id: 'content-releases.modal.release-created-notification-success',
|
|
240
|
+
defaultMessage: 'Release created.'
|
|
241
|
+
})
|
|
242
|
+
});
|
|
243
|
+
trackUsage('didCreateRelease');
|
|
244
|
+
navigate(response.data.data.id.toString());
|
|
245
|
+
} else if (strapiAdmin.isFetchError(response.error)) {
|
|
246
|
+
// When the response returns an object with 'error', handle fetch error
|
|
247
|
+
toggleNotification({
|
|
248
|
+
type: 'danger',
|
|
249
|
+
message: formatAPIError(response.error)
|
|
250
|
+
});
|
|
251
|
+
} else {
|
|
252
|
+
// Otherwise, the response returns an object with 'error', handle a generic error
|
|
253
|
+
toggleNotification({
|
|
254
|
+
type: 'danger',
|
|
255
|
+
message: formatMessage({
|
|
256
|
+
id: 'notification.error',
|
|
257
|
+
defaultMessage: 'An error occurred'
|
|
258
|
+
})
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Main, {
|
|
263
|
+
"aria-busy": isLoadingReleases || isLoadingSettings,
|
|
264
|
+
children: [
|
|
265
|
+
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Header, {
|
|
266
|
+
title: formatMessage({
|
|
267
|
+
id: 'content-releases.pages.Releases.title',
|
|
268
|
+
defaultMessage: 'Releases'
|
|
269
|
+
}),
|
|
270
|
+
secondaryAction: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.GradientBadge, {
|
|
271
|
+
label: formatMessage({
|
|
272
|
+
id: 'components.premiumFeature.title',
|
|
273
|
+
defaultMessage: 'Premium feature'
|
|
274
|
+
})
|
|
275
|
+
}),
|
|
276
|
+
subtitle: formatMessage({
|
|
277
|
+
id: 'content-releases.pages.Releases.header-subtitle',
|
|
278
|
+
defaultMessage: 'Create and manage content updates'
|
|
279
|
+
}),
|
|
280
|
+
primaryAction: canCreate ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
281
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}),
|
|
282
|
+
onClick: toggleAddReleaseModal,
|
|
283
|
+
disabled: hasReachedMaximumPendingReleases,
|
|
284
|
+
children: formatMessage({
|
|
285
|
+
id: 'content-releases.header.actions.add-release',
|
|
286
|
+
defaultMessage: 'New release'
|
|
287
|
+
})
|
|
288
|
+
}) : null
|
|
289
|
+
}),
|
|
290
|
+
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Content, {
|
|
291
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
292
|
+
children: [
|
|
293
|
+
hasReachedMaximumPendingReleases && /*#__PURE__*/ jsxRuntime.jsx(StyledAlert, {
|
|
294
|
+
marginBottom: 6,
|
|
295
|
+
action: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Link, {
|
|
296
|
+
href: "https://strapi.io/pricing-cloud",
|
|
297
|
+
isExternal: true,
|
|
298
|
+
children: formatMessage({
|
|
299
|
+
id: 'content-releases.pages.Releases.max-limit-reached.action',
|
|
300
|
+
defaultMessage: 'Explore plans'
|
|
301
|
+
})
|
|
302
|
+
}),
|
|
303
|
+
title: formatMessage({
|
|
304
|
+
id: 'content-releases.pages.Releases.max-limit-reached.title',
|
|
305
|
+
defaultMessage: 'You have reached the {number} pending {number, plural, one {release} other {releases}} limit.'
|
|
306
|
+
}, {
|
|
307
|
+
number: maximumReleases
|
|
308
|
+
}),
|
|
309
|
+
onClose: ()=>{},
|
|
310
|
+
closeLabel: "",
|
|
311
|
+
children: formatMessage({
|
|
312
|
+
id: 'content-releases.pages.Releases.max-limit-reached.message',
|
|
313
|
+
defaultMessage: 'Upgrade to manage an unlimited number of releases.'
|
|
314
|
+
})
|
|
315
|
+
}),
|
|
316
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tabs.Root, {
|
|
317
|
+
variant: "simple",
|
|
318
|
+
onValueChange: handleTabChange,
|
|
319
|
+
value: activeTab,
|
|
320
|
+
children: [
|
|
321
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
|
|
322
|
+
paddingBottom: 8,
|
|
323
|
+
children: [
|
|
324
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tabs.List, {
|
|
325
|
+
"aria-label": formatMessage({
|
|
326
|
+
id: 'content-releases.pages.Releases.tab-group.label',
|
|
327
|
+
defaultMessage: 'Releases list'
|
|
328
|
+
}),
|
|
329
|
+
children: [
|
|
330
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Tabs.Trigger, {
|
|
331
|
+
value: "pending",
|
|
332
|
+
children: formatMessage({
|
|
333
|
+
id: 'content-releases.pages.Releases.tab.pending',
|
|
334
|
+
defaultMessage: 'Pending ({count})'
|
|
335
|
+
}, {
|
|
336
|
+
count: totalPendingReleases
|
|
337
|
+
})
|
|
338
|
+
}),
|
|
339
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Tabs.Trigger, {
|
|
340
|
+
value: "done",
|
|
341
|
+
children: formatMessage({
|
|
342
|
+
id: 'content-releases.pages.Releases.tab.done',
|
|
343
|
+
defaultMessage: 'Done'
|
|
344
|
+
})
|
|
345
|
+
})
|
|
346
|
+
]
|
|
347
|
+
}),
|
|
348
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Divider, {})
|
|
349
|
+
]
|
|
350
|
+
}),
|
|
351
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Tabs.Content, {
|
|
352
|
+
value: "pending",
|
|
353
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(ReleasesGrid, {
|
|
354
|
+
sectionTitle: "pending",
|
|
355
|
+
releases: response?.currentData?.data,
|
|
356
|
+
isError: isError
|
|
357
|
+
})
|
|
358
|
+
}),
|
|
359
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Tabs.Content, {
|
|
360
|
+
value: "done",
|
|
361
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(ReleasesGrid, {
|
|
362
|
+
sectionTitle: "done",
|
|
363
|
+
releases: response?.currentData?.data,
|
|
364
|
+
isError: isError
|
|
365
|
+
})
|
|
366
|
+
})
|
|
367
|
+
]
|
|
368
|
+
}),
|
|
369
|
+
/*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.Pagination.Root, {
|
|
370
|
+
...response?.currentData?.meta?.pagination,
|
|
371
|
+
defaultPageSize: response?.currentData?.meta?.pagination?.pageSize,
|
|
372
|
+
children: [
|
|
373
|
+
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, {
|
|
374
|
+
options: [
|
|
375
|
+
'8',
|
|
376
|
+
'16',
|
|
377
|
+
'32',
|
|
378
|
+
'64'
|
|
379
|
+
]
|
|
380
|
+
}),
|
|
381
|
+
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
|
|
382
|
+
]
|
|
383
|
+
})
|
|
384
|
+
]
|
|
385
|
+
})
|
|
386
|
+
}),
|
|
387
|
+
/*#__PURE__*/ jsxRuntime.jsx(ReleaseModal.ReleaseModal, {
|
|
388
|
+
open: releaseModalShown,
|
|
389
|
+
handleClose: toggleAddReleaseModal,
|
|
390
|
+
handleSubmit: handleAddRelease,
|
|
391
|
+
isLoading: isSubmittingForm,
|
|
392
|
+
initialValues: {
|
|
393
|
+
...INITIAL_FORM_VALUES,
|
|
394
|
+
timezone: data?.data.defaultTimezone ? data.data.defaultTimezone.split('&')[1] : null
|
|
395
|
+
}
|
|
396
|
+
})
|
|
397
|
+
]
|
|
398
|
+
});
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
exports.ReleasesPage = ReleasesPage;
|
|
402
|
+
exports.getBadgeProps = getBadgeProps;
|
|
403
|
+
//# sourceMappingURL=ReleasesPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReleasesPage.js","sources":["../../../admin/src/pages/ReleasesPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n useTracking,\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport {\n Alert,\n Badge,\n Box,\n Button,\n Divider,\n EmptyStateLayout,\n Flex,\n Grid,\n Main,\n Tabs,\n Typography,\n Link,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { format } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useLocation, NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { GetReleases, type Release } from '../../../shared/contracts/releases';\nimport { RelativeTime as BaseRelativeTime } from '../components/RelativeTime';\nimport { ReleaseModal, FormValues } from '../components/ReleaseModal';\nimport { PERMISSIONS } from '../constants';\nimport {\n useGetReleasesQuery,\n useGetReleaseSettingsQuery,\n GetReleasesQueryParams,\n useCreateReleaseMutation,\n} from '../services/release';\n\n/* -------------------------------------------------------------------------------------------------\n * ReleasesGrid\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleasesGridProps {\n sectionTitle: 'pending' | 'done';\n releases?: GetReleases.Response['data'];\n isError?: boolean;\n}\n\nconst LinkCard = styled(Link)`\n display: block;\n`;\n\nconst RelativeTime = styled(BaseRelativeTime)`\n display: inline-block;\n &::first-letter {\n text-transform: uppercase;\n }\n`;\n\nconst getBadgeProps = (status: Release['status']) => {\n let color;\n switch (status) {\n case 'ready':\n color = 'success';\n break;\n case 'blocked':\n color = 'warning';\n break;\n case 'failed':\n color = 'danger';\n break;\n case 'done':\n color = 'primary';\n break;\n case 'empty':\n default:\n color = 'neutral';\n }\n\n return {\n textColor: `${color}600`,\n backgroundColor: `${color}100`,\n borderColor: `${color}200`,\n };\n};\n\nconst ReleasesGrid = ({ sectionTitle, releases = [], isError = false }: ReleasesGridProps) => {\n const { formatMessage } = useIntl();\n\n if (isError) {\n return <Page.Error />;\n }\n\n if (releases?.length === 0) {\n return (\n <EmptyStateLayout\n content={formatMessage(\n {\n id: 'content-releases.page.Releases.tab.emptyEntries',\n defaultMessage: 'No releases',\n },\n {\n target: sectionTitle,\n }\n )}\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <Grid.Root gap={4}>\n {releases.map(({ id, name, scheduledAt, status }) => (\n <Grid.Item col={3} s={6} xs={12} key={id} direction=\"column\" alignItems=\"stretch\">\n <LinkCard tag={NavLink} to={`${id}`} isExternal={false}>\n <Flex\n direction=\"column\"\n justifyContent=\"space-between\"\n padding={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n height=\"100%\"\n width=\"100%\"\n alignItems=\"start\"\n gap={4}\n >\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography textColor=\"neutral800\" tag=\"h3\" variant=\"delta\" fontWeight=\"bold\">\n {name}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {scheduledAt ? (\n <RelativeTime timestamp={new Date(scheduledAt)} />\n ) : (\n formatMessage({\n id: 'content-releases.pages.Releases.not-scheduled',\n defaultMessage: 'Not scheduled',\n })\n )}\n </Typography>\n </Flex>\n <Badge {...getBadgeProps(status)}>{status}</Badge>\n </Flex>\n </LinkCard>\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleasesPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledAlert = styled(Alert)`\n button {\n display: none;\n }\n p + div {\n margin-left: auto;\n }\n`;\n\nconst INITIAL_FORM_VALUES = {\n name: '',\n date: format(new Date(), 'yyyy-MM-dd'),\n time: '',\n isScheduled: true,\n scheduledAt: null,\n timezone: null,\n} satisfies FormValues;\n\nconst ReleasesPage = () => {\n const location = useLocation();\n const [releaseModalShown, setReleaseModalShown] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }, setQuery] = useQueryParams<GetReleasesQueryParams>();\n const response = useGetReleasesQuery(query);\n const { data, isLoading: isLoadingSettings } = useGetReleaseSettingsQuery();\n const [createRelease, { isLoading: isSubmittingForm }] = useCreateReleaseMutation();\n const { getFeature } = useLicenseLimits();\n const { maximumReleases = 3 } = getFeature('cms-content-releases') as {\n maximumReleases: number;\n };\n const { trackUsage } = useTracking();\n const {\n allowedActions: { canCreate },\n } = useRBAC(PERMISSIONS);\n\n const { isLoading: isLoadingReleases, isSuccess, isError } = response;\n const activeTab = response?.currentData?.meta?.activeTab || 'pending';\n\n // Check if we have some errors and show a notification to the user to explain the error\n React.useEffect(() => {\n if (location?.state?.errors) {\n toggleNotification({\n type: 'danger',\n title: formatMessage({\n id: 'content-releases.pages.Releases.notification.error.title',\n defaultMessage: 'Your request could not be processed.',\n }),\n message: formatMessage({\n id: 'content-releases.pages.Releases.notification.error.message',\n defaultMessage: 'Please try again or open another release.',\n }),\n });\n navigate('', { replace: true, state: null });\n }\n }, [formatMessage, location?.state?.errors, navigate, toggleNotification]);\n\n const toggleAddReleaseModal = () => {\n setReleaseModalShown((prev) => !prev);\n };\n\n if (isLoadingReleases || isLoadingSettings) {\n return <Page.Loading />;\n }\n\n const totalPendingReleases = (isSuccess && response.currentData?.meta?.pendingReleasesCount) || 0;\n const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;\n\n const handleTabChange = (tabValue: string) => {\n setQuery({\n ...query,\n page: 1,\n pageSize: response?.currentData?.meta?.pagination?.pageSize || 16,\n filters: {\n releasedAt: {\n $notNull: tabValue !== 'pending',\n },\n },\n });\n };\n\n const handleAddRelease = async ({ name, scheduledAt, timezone }: FormValues) => {\n const response = await createRelease({\n name,\n scheduledAt,\n timezone,\n });\n if ('data' in response) {\n // When the response returns an object with 'data', handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.modal.release-created-notification-success',\n defaultMessage: 'Release created.',\n }),\n });\n\n trackUsage('didCreateRelease');\n navigate(response.data.data.id.toString());\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Main aria-busy={isLoadingReleases || isLoadingSettings}>\n <Layouts.Header\n title={formatMessage({\n id: 'content-releases.pages.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.Releases.header-subtitle',\n defaultMessage: 'Create and manage content updates',\n })}\n primaryAction={\n canCreate ? (\n <Button\n startIcon={<Plus />}\n onClick={toggleAddReleaseModal}\n disabled={hasReachedMaximumPendingReleases}\n >\n {formatMessage({\n id: 'content-releases.header.actions.add-release',\n defaultMessage: 'New release',\n })}\n </Button>\n ) : null\n }\n />\n <Layouts.Content>\n <>\n {hasReachedMaximumPendingReleases && (\n <StyledAlert\n marginBottom={6}\n action={\n <Link href=\"https://strapi.io/pricing-cloud\" isExternal>\n {formatMessage({\n id: 'content-releases.pages.Releases.max-limit-reached.action',\n defaultMessage: 'Explore plans',\n })}\n </Link>\n }\n title={formatMessage(\n {\n id: 'content-releases.pages.Releases.max-limit-reached.title',\n defaultMessage:\n 'You have reached the {number} pending {number, plural, one {release} other {releases}} limit.',\n },\n { number: maximumReleases }\n )}\n onClose={() => {}}\n closeLabel=\"\"\n >\n {formatMessage({\n id: 'content-releases.pages.Releases.max-limit-reached.message',\n defaultMessage: 'Upgrade to manage an unlimited number of releases.',\n })}\n </StyledAlert>\n )}\n <Tabs.Root variant=\"simple\" onValueChange={handleTabChange} value={activeTab}>\n <Box paddingBottom={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'content-releases.pages.Releases.tab-group.label',\n defaultMessage: 'Releases list',\n })}\n >\n <Tabs.Trigger value=\"pending\">\n {formatMessage(\n {\n id: 'content-releases.pages.Releases.tab.pending',\n defaultMessage: 'Pending ({count})',\n },\n {\n count: totalPendingReleases,\n }\n )}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"done\">\n {formatMessage({\n id: 'content-releases.pages.Releases.tab.done',\n defaultMessage: 'Done',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n <Divider />\n </Box>\n {/* Pending releases */}\n <Tabs.Content value=\"pending\">\n <ReleasesGrid\n sectionTitle=\"pending\"\n releases={response?.currentData?.data}\n isError={isError}\n />\n </Tabs.Content>\n {/* Done releases */}\n <Tabs.Content value=\"done\">\n <ReleasesGrid\n sectionTitle=\"done\"\n releases={response?.currentData?.data}\n isError={isError}\n />\n </Tabs.Content>\n </Tabs.Root>\n <Pagination.Root\n {...response?.currentData?.meta?.pagination}\n defaultPageSize={response?.currentData?.meta?.pagination?.pageSize}\n >\n <Pagination.PageSize options={['8', '16', '32', '64']} />\n <Pagination.Links />\n </Pagination.Root>\n </>\n </Layouts.Content>\n <ReleaseModal\n open={releaseModalShown}\n handleClose={toggleAddReleaseModal}\n handleSubmit={handleAddRelease}\n isLoading={isSubmittingForm}\n initialValues={{\n ...INITIAL_FORM_VALUES,\n timezone: data?.data.defaultTimezone ? data.data.defaultTimezone.split('&')[1] : null,\n }}\n />\n </Main>\n );\n};\n\nexport { ReleasesPage, getBadgeProps };\n"],"names":["LinkCard","styled","Link","RelativeTime","BaseRelativeTime","getBadgeProps","status","color","textColor","backgroundColor","borderColor","ReleasesGrid","sectionTitle","releases","isError","formatMessage","useIntl","_jsx","Page","Error","length","EmptyStateLayout","content","id","defaultMessage","target","icon","EmptyDocuments","width","Grid","Root","gap","map","name","scheduledAt","Item","col","s","xs","direction","alignItems","tag","NavLink","to","isExternal","_jsxs","Flex","justifyContent","padding","hasRadius","background","shadow","height","Typography","variant","fontWeight","timestamp","Date","Badge","StyledAlert","Alert","INITIAL_FORM_VALUES","date","format","time","isScheduled","timezone","ReleasesPage","location","useLocation","releaseModalShown","setReleaseModalShown","React","useState","toggleNotification","useNotification","navigate","useNavigate","formatAPIError","useAPIErrorHandler","query","setQuery","useQueryParams","response","useGetReleasesQuery","data","isLoading","isLoadingSettings","useGetReleaseSettingsQuery","createRelease","isSubmittingForm","useCreateReleaseMutation","getFeature","useLicenseLimits","maximumReleases","trackUsage","useTracking","allowedActions","canCreate","useRBAC","PERMISSIONS","isLoadingReleases","isSuccess","activeTab","currentData","meta","useEffect","state","errors","type","title","message","replace","toggleAddReleaseModal","prev","Loading","totalPendingReleases","pendingReleasesCount","hasReachedMaximumPendingReleases","handleTabChange","tabValue","page","pageSize","pagination","filters","releasedAt","$notNull","handleAddRelease","toString","isFetchError","error","Main","aria-busy","Layouts","Header","secondaryAction","GradientBadge","label","subtitle","primaryAction","Button","startIcon","Plus","onClick","disabled","Content","_Fragment","marginBottom","action","href","number","onClose","closeLabel","Tabs","onValueChange","value","Box","paddingBottom","List","aria-label","Trigger","count","Divider","Pagination","defaultPageSize","PageSize","options","Links","ReleaseModal","open","handleClose","handleSubmit","initialValues","defaultTimezone","split"],"mappings":"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"}
|