@strapi/content-releases 5.12.0-beta.1 → 5.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. package/dist/admin/chunks/{App-BEyv0kMo.mjs → App-BkWgp5q_.mjs} +2 -2
  2. package/dist/admin/chunks/{App-BEyv0kMo.mjs.map → App-BkWgp5q_.mjs.map} +1 -1
  3. package/dist/admin/chunks/{App-BG-3LItb.js → App-CJiqPP7-.js} +2 -2
  4. package/dist/admin/chunks/{App-BG-3LItb.js.map → App-CJiqPP7-.js.map} +1 -1
  5. package/dist/admin/chunks/{PurchaseContentReleases-U5sGMPgR.mjs → PurchaseContentReleases-CzayeVUD.mjs} +70 -50
  6. package/dist/admin/chunks/PurchaseContentReleases-CzayeVUD.mjs.map +1 -0
  7. package/dist/admin/chunks/{PurchaseContentReleases-hRg6ejD7.js → PurchaseContentReleases-Z9uEPb5b.js} +70 -50
  8. package/dist/admin/chunks/PurchaseContentReleases-Z9uEPb5b.js.map +1 -0
  9. package/dist/admin/chunks/{ReleasesSettingsPage-lky_0-wG.mjs → ReleasesSettingsPage-DUKdFdvx.mjs} +2 -2
  10. package/dist/admin/chunks/{ReleasesSettingsPage-lky_0-wG.mjs.map → ReleasesSettingsPage-DUKdFdvx.mjs.map} +1 -1
  11. package/dist/admin/chunks/{ReleasesSettingsPage-DV_y1NJZ.js → ReleasesSettingsPage-KRcoI1bC.js} +2 -2
  12. package/dist/admin/chunks/{ReleasesSettingsPage-DV_y1NJZ.js.map → ReleasesSettingsPage-KRcoI1bC.js.map} +1 -1
  13. package/dist/admin/chunks/{index-DEy-8PzZ.mjs → index-DBUaMD56.mjs} +4 -4
  14. package/dist/admin/chunks/{index-DEy-8PzZ.mjs.map → index-DBUaMD56.mjs.map} +1 -1
  15. package/dist/admin/chunks/{index-BZaFIG8z.js → index-vjWrvGN3.js} +4 -4
  16. package/dist/admin/chunks/{index-BZaFIG8z.js.map → index-vjWrvGN3.js.map} +1 -1
  17. package/dist/admin/index.js +1 -1
  18. package/dist/admin/index.mjs +1 -1
  19. package/package.json +7 -7
  20. package/dist/admin/chunks/PurchaseContentReleases-U5sGMPgR.mjs.map +0 -1
  21. package/dist/admin/chunks/PurchaseContentReleases-hRg6ejD7.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index-BZaFIG8z.js","sources":["../../../admin/src/constants.ts","../../../admin/src/services/release.ts","../../../admin/src/components/ReleaseActionOptions.tsx","../../../admin/src/components/ReleaseActionModal.tsx","../../../admin/src/components/ReleaseAction.tsx","../../../admin/src/components/ReleaseListCell.tsx","../../../admin/src/utils/time.ts","../../../admin/src/components/ReleaseActionMenu.tsx","../../../admin/src/components/ReleasesPanel.tsx","../../../admin/src/pluginId.ts","../../../admin/src/utils/prefixPluginTranslations.ts","../../../admin/src/index.ts"],"sourcesContent":["import type { Permission as StrapiPermission } from '@strapi/admin/strapi-admin';\n\nexport const PERMISSIONS = {\n main: [\n {\n action: 'plugin::content-releases.read',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n create: [\n {\n action: 'plugin::content-releases.create',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n update: [\n {\n action: 'plugin::content-releases.update',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n delete: [\n {\n action: 'plugin::content-releases.delete',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n createAction: [\n {\n action: 'plugin::content-releases.create-action',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n deleteAction: [\n {\n action: 'plugin::content-releases.delete-action',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n publish: [\n {\n action: 'plugin::content-releases.publish',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n} satisfies Record<string, StrapiPermission[]>;\n\nexport const PERMISSIONS_SETTINGS = {\n read: [\n {\n action: 'plugin::content-releases.settings.read',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n update: [\n {\n action: 'plugin::content-releases.settings.update',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n} satisfies Record<string, StrapiPermission[]>;\n","import { adminApi } from '@strapi/admin/strapi-admin';\n\nimport {\n CreateReleaseAction,\n CreateManyReleaseActions,\n DeleteReleaseAction,\n} from '../../../shared/contracts/release-actions';\n\nimport type {\n GetReleaseActions,\n UpdateReleaseAction,\n ReleaseActionGroupBy,\n} from '../../../shared/contracts/release-actions';\nimport type {\n CreateRelease,\n DeleteRelease,\n GetReleases,\n GetReleasesByDocumentAttached,\n UpdateRelease,\n GetRelease,\n PublishRelease,\n MapEntriesToReleases,\n} from '../../../shared/contracts/releases';\nimport type { GetSettings, UpdateSettings } from '../../../shared/contracts/settings';\nimport type { EndpointDefinition } from '@reduxjs/toolkit/query';\n\nexport interface GetReleasesQueryParams {\n page?: number;\n pageSize?: number;\n filters?: {\n releasedAt?: {\n // TODO: this should be a boolean, find a way to avoid strings\n $notNull?: boolean | 'true' | 'false';\n };\n };\n}\n\nexport interface GetReleaseActionsQueryParams {\n page?: number;\n pageSize?: number;\n groupBy?: ReleaseActionGroupBy;\n}\n\ntype GetReleasesTabResponse = GetReleases.Response & {\n meta: {\n activeTab: 'pending' | 'done';\n };\n};\n\ntype AnyEndpointDefinition = EndpointDefinition<any, any, any, any>;\n\n// TODO: move this into the admin code & expose an improved version of enhanceEndpoints or a new function\nconst extendInvalidatesTags = (\n endpoint: AnyEndpointDefinition,\n extraTags: string[] | { type: string; id: string }[]\n) => {\n if (!endpoint) {\n return;\n }\n\n const originalInvalidatesTags = endpoint.invalidatesTags;\n\n const newInvalidatesTags: AnyEndpointDefinition['invalidatesTags'] = (\n result,\n err,\n args,\n meta\n ) => {\n const originalTags =\n typeof originalInvalidatesTags === 'function'\n ? originalInvalidatesTags(result, err, args, meta)\n : originalInvalidatesTags;\n\n return [...(originalTags ?? []), ...extraTags];\n };\n\n Object.assign(endpoint, { invalidatesTags: newInvalidatesTags });\n};\n\nconst releaseApi = adminApi\n .enhanceEndpoints({\n addTagTypes: ['Release', 'ReleaseAction', 'EntriesInRelease', 'ReleaseSettings', 'Document'],\n endpoints: {\n updateDocument(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n deleteDocument(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n deleteManyDocuments(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n discardDocument(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n createWorkflow(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n updateWorkflow(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n deleteWorkflow(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n },\n })\n .injectEndpoints({\n endpoints: (build) => {\n return {\n getReleasesForEntry: build.query<\n GetReleasesByDocumentAttached.Response,\n Partial<GetReleasesByDocumentAttached.Request['query']>\n >({\n query(params) {\n return {\n url: '/content-releases/getByDocumentAttached',\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: (result) =>\n result\n ? [\n ...result.data.map(({ id }) => ({ type: 'Release' as const, id })),\n { type: 'Release', id: 'LIST' },\n ]\n : [],\n }),\n getReleases: build.query<GetReleasesTabResponse, GetReleasesQueryParams | void>({\n query(\n { page, pageSize, filters } = {\n page: 1,\n pageSize: 16,\n filters: {\n releasedAt: {\n $notNull: false,\n },\n },\n }\n ) {\n return {\n url: '/content-releases',\n method: 'GET',\n config: {\n params: {\n page: page || 1,\n pageSize: pageSize || 16,\n filters: filters || {\n releasedAt: {\n $notNull: false,\n },\n },\n },\n },\n };\n },\n transformResponse(response: GetReleasesTabResponse, meta, arg) {\n const releasedAtValue = arg?.filters?.releasedAt?.$notNull;\n const isActiveDoneTab = releasedAtValue === 'true';\n const newResponse: GetReleasesTabResponse = {\n ...response,\n meta: {\n ...response.meta,\n activeTab: isActiveDoneTab ? 'done' : 'pending',\n },\n };\n\n return newResponse;\n },\n providesTags: (result) =>\n result\n ? [\n ...result.data.map(({ id }) => ({ type: 'Release' as const, id })),\n { type: 'Release', id: 'LIST' },\n ]\n : [{ type: 'Release', id: 'LIST' }],\n }),\n getRelease: build.query<GetRelease.Response, GetRelease.Request['params']>({\n query({ id }) {\n return {\n url: `/content-releases/${id}`,\n method: 'GET',\n };\n },\n providesTags: (result, error, arg) => [\n { type: 'Release', id: 'LIST' },\n { type: 'Release' as const, id: arg.id },\n ],\n }),\n getReleaseActions: build.query<\n GetReleaseActions.Response,\n GetReleaseActions.Request['params'] & GetReleaseActions.Request['query']\n >({\n query({ releaseId, ...params }) {\n return {\n url: `/content-releases/${releaseId}/actions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: [{ type: 'ReleaseAction', id: 'LIST' }],\n }),\n createRelease: build.mutation<CreateRelease.Response, CreateRelease.Request['body']>({\n query(data) {\n return {\n url: '/content-releases',\n method: 'POST',\n data,\n };\n },\n invalidatesTags: [{ type: 'Release', id: 'LIST' }],\n }),\n updateRelease: build.mutation<\n void,\n UpdateRelease.Request['params'] & UpdateRelease.Request['body']\n >({\n query({ id, ...data }) {\n return {\n url: `/content-releases/${id}`,\n method: 'PUT',\n data,\n };\n },\n invalidatesTags: (result, error, arg) => [{ type: 'Release', id: arg.id }],\n }),\n createReleaseAction: build.mutation<\n CreateReleaseAction.Response,\n CreateReleaseAction.Request\n >({\n query({ body, params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions`,\n method: 'POST',\n data: body,\n };\n },\n invalidatesTags: [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ],\n }),\n createManyReleaseActions: build.mutation<\n CreateManyReleaseActions.Response,\n CreateManyReleaseActions.Request\n >({\n query({ body, params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions/bulk`,\n method: 'POST',\n data: body,\n };\n },\n invalidatesTags: [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'EntriesInRelease' },\n ],\n }),\n updateReleaseAction: build.mutation<\n UpdateReleaseAction.Response,\n UpdateReleaseAction.Request & { query: GetReleaseActions.Request['query'] } & {\n actionPath: [string, number];\n }\n >({\n query({ body, params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions/${params.actionId}`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (res, error, arg) => [\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'Release', id: 'LIST' },\n { type: 'Release', id: arg.params.releaseId },\n ],\n async onQueryStarted({ body, params, query, actionPath }, { dispatch, queryFulfilled }) {\n // We need to mimic the same params received by the getReleaseActions query\n const paramsWithoutActionId = {\n releaseId: params.releaseId,\n ...query,\n };\n\n const patchResult = dispatch(\n releaseApi.util.updateQueryData(\n 'getReleaseActions',\n paramsWithoutActionId,\n (draft) => {\n const [key, index] = actionPath;\n const action = draft.data[key][index];\n\n if (action) {\n action.type = body.type;\n }\n }\n )\n );\n\n try {\n await queryFulfilled;\n } catch {\n patchResult.undo();\n }\n },\n }),\n deleteReleaseAction: build.mutation<\n DeleteReleaseAction.Response,\n DeleteReleaseAction.Request\n >({\n query({ params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions/${params.actionId}`,\n method: 'DELETE',\n };\n },\n invalidatesTags: (result, error, arg) => [\n { type: 'Release', id: 'LIST' },\n { type: 'Release', id: arg.params.releaseId },\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'EntriesInRelease' },\n ],\n }),\n publishRelease: build.mutation<PublishRelease.Response, PublishRelease.Request['params']>({\n query({ id }) {\n return {\n url: `/content-releases/${id}/publish`,\n method: 'POST',\n };\n },\n invalidatesTags: (result, error, arg) => [\n { type: 'Release', id: arg.id },\n { type: 'Document', id: `ALL_LIST` },\n ],\n }),\n deleteRelease: build.mutation<DeleteRelease.Response, DeleteRelease.Request['params']>({\n query({ id }) {\n return {\n url: `/content-releases/${id}`,\n method: 'DELETE',\n };\n },\n invalidatesTags: () => [{ type: 'Release', id: 'LIST' }, { type: 'EntriesInRelease' }],\n }),\n getMappedEntriesInReleases: build.query<\n MapEntriesToReleases.Response['data'],\n MapEntriesToReleases.Request['query']\n >({\n query(params) {\n return {\n url: '/content-releases/mapEntriesToReleases',\n method: 'GET',\n config: {\n params,\n },\n };\n },\n transformResponse(response: MapEntriesToReleases.Response) {\n return response.data;\n },\n providesTags: [{ type: 'EntriesInRelease' }],\n }),\n getReleaseSettings: build.query<GetSettings.Response, GetSettings.Request | void>({\n query: () => '/content-releases/settings',\n providesTags: [{ type: 'ReleaseSettings' }],\n }),\n updateReleaseSettings: build.mutation<void, UpdateSettings.Request['body']>({\n query(data) {\n return {\n url: '/content-releases/settings',\n method: 'PUT',\n data,\n };\n },\n invalidatesTags: [{ type: 'ReleaseSettings' }],\n }),\n };\n },\n });\n\nconst {\n useGetReleasesQuery,\n useGetReleasesForEntryQuery,\n useGetReleaseQuery,\n useGetReleaseActionsQuery,\n useCreateReleaseMutation,\n useCreateReleaseActionMutation,\n useCreateManyReleaseActionsMutation,\n useUpdateReleaseMutation,\n useUpdateReleaseActionMutation,\n usePublishReleaseMutation,\n useDeleteReleaseActionMutation,\n useDeleteReleaseMutation,\n useGetMappedEntriesInReleasesQuery,\n useGetReleaseSettingsQuery,\n useUpdateReleaseSettingsMutation,\n} = releaseApi;\n\nexport {\n useGetReleasesQuery,\n useGetReleasesForEntryQuery,\n useGetReleaseQuery,\n useGetReleaseActionsQuery,\n useCreateReleaseMutation,\n useCreateReleaseActionMutation,\n useCreateManyReleaseActionsMutation,\n useUpdateReleaseMutation,\n useUpdateReleaseActionMutation,\n usePublishReleaseMutation,\n useDeleteReleaseActionMutation,\n useDeleteReleaseMutation,\n useGetMappedEntriesInReleasesQuery,\n useGetReleaseSettingsQuery,\n useUpdateReleaseSettingsMutation,\n releaseApi,\n};\n","import * as React from 'react';\n\nimport { VisuallyHidden, Field, Flex } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface FieldWrapperProps extends Field.Props {\n actionType: 'publish' | 'unpublish';\n}\n\nconst getBorderLeftRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 1 : 0;\n};\n\nconst getBorderRightRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 0 : 1;\n};\n\nconst FieldWrapper = styled(Field.Root)<{\n $actionType: 'publish' | 'unpublish';\n}>`\n border-top-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-bottom-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-top-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n border-bottom-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n\n > label {\n color: inherit;\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[3]}`};\n text-align: center;\n vertical-align: middle;\n text-transform: capitalize;\n }\n\n &[data-checked='true'] {\n color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n background-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary100 : theme.colors.danger100};\n border-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n }\n\n &[data-checked='false'] {\n border-left: ${({ $actionType }) => $actionType === 'unpublish' && 'none'};\n border-right: ${({ $actionType }) => $actionType === 'publish' && 'none'};\n }\n\n &[data-checked='false'][data-disabled='false']:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n background-color: ${({ theme }) => theme.colors.neutral100};\n border-color: ${({ theme }) => theme.colors.neutral200};\n\n & > label {\n cursor: pointer;\n }\n }\n\n &[data-disabled='true'] {\n color: ${({ theme }) => theme.colors.neutral600};\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-color: ${({ theme }) => theme.colors.neutral300};\n }\n`;\n\ninterface ActionOptionProps {\n selected: 'publish' | 'unpublish';\n handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n name: string;\n disabled?: boolean;\n}\n\ninterface OptionProps extends ActionOptionProps {\n actionType: 'publish' | 'unpublish';\n}\n\nconst ActionOption = ({\n selected,\n actionType,\n handleChange,\n name,\n disabled = false,\n}: OptionProps) => {\n return (\n <FieldWrapper\n $actionType={actionType}\n background=\"primary0\"\n borderColor=\"neutral200\"\n color={selected === actionType ? 'primary600' : 'neutral600'}\n position=\"relative\"\n cursor=\"pointer\"\n data-checked={selected === actionType}\n data-disabled={disabled && selected !== actionType}\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n name={name}\n checked={selected === actionType}\n onChange={handleChange}\n value={actionType}\n disabled={disabled}\n />\n </VisuallyHidden>\n {actionType}\n </Field.Label>\n </FieldWrapper>\n );\n};\n\nexport const ReleaseActionOptions = ({\n selected,\n handleChange,\n name,\n disabled = false,\n}: ActionOptionProps) => {\n return (\n <Flex>\n <ActionOption\n actionType=\"publish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n <ActionOption\n actionType=\"unpublish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n </Flex>\n );\n};\n","import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport { unstable_useDocumentLayout as useDocumentLayout } from '@strapi/content-manager/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n SingleSelect,\n SingleSelectOption,\n EmptyStateLayout,\n LinkButton,\n Field,\n Modal,\n} from '@strapi/design-system';\nimport { PaperPlane } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useFormik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { CreateReleaseAction } from '../../../shared/contracts/release-actions';\nimport { PERMISSIONS } from '../constants';\nimport { useCreateReleaseActionMutation, useGetReleasesForEntryQuery } from '../services/release';\n\nimport { ReleaseActionOptions } from './ReleaseActionOptions';\n\nimport type {\n DocumentActionComponent,\n DocumentActionProps,\n} from '@strapi/content-manager/strapi-admin';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * AddActionToReleaseModal\n * -----------------------------------------------------------------------------------------------*/\nexport const RELEASE_ACTION_FORM_SCHEMA = yup.object().shape({\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n releaseId: yup.string().required(),\n});\n\nexport interface FormValues {\n type: CreateReleaseAction.Request['body']['type'];\n releaseId: CreateReleaseAction.Request['params']['releaseId'];\n}\n\nexport const INITIAL_VALUES = {\n type: 'publish',\n releaseId: '',\n} satisfies FormValues;\n\ninterface AddActionToReleaseModalProps {\n contentType: string;\n documentId?: string;\n onInputChange: (field: keyof FormValues, value: string | number) => void;\n values: FormValues;\n}\n\nexport const NoReleases = () => {\n const { formatMessage } = useIntl();\n return (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.no-releases-message',\n defaultMessage:\n 'No available releases. Open the list of releases and create a new one from there.',\n })}\n action={\n <LinkButton\n to={{\n pathname: '/plugins/content-releases',\n }}\n tag={ReactRouterLink}\n variant=\"secondary\"\n >\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.redirect-button',\n defaultMessage: 'Open the list of releases',\n })}\n </LinkButton>\n }\n shadow=\"none\"\n />\n );\n};\n\nconst AddActionToReleaseModal = ({\n contentType,\n documentId,\n onInputChange,\n values,\n}: AddActionToReleaseModalProps) => {\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n const locale = query.plugins?.i18n?.locale;\n\n // Get all 'pending' releases that do not have the entry attached\n const response = useGetReleasesForEntryQuery({\n contentType,\n entryDocumentId: documentId,\n hasEntryAttached: false,\n locale,\n });\n\n const releases = response.data?.data;\n\n if (releases?.length === 0) {\n return <NoReleases />;\n }\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box paddingBottom={6}>\n <Field.Root required>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.select-label',\n defaultMessage: 'Select a release',\n })}\n </Field.Label>\n <SingleSelect\n required\n placeholder={formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.select-placeholder',\n defaultMessage: 'Select',\n })}\n name=\"releaseId\"\n onChange={(value) => onInputChange('releaseId', value)}\n value={values.releaseId}\n >\n {releases?.map((release) => (\n <SingleSelectOption key={release.id} value={release.id}>\n {release.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Box>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.action-type-label',\n defaultMessage: 'What do you want to do with this entry?',\n })}\n </Field.Label>\n <ReleaseActionOptions\n selected={values.type}\n handleChange={(e) => onInputChange('type', e.target.value)}\n name=\"type\"\n />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseActionModalForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ReleaseActionModalForm: DocumentActionComponent = ({\n documentId,\n document,\n model,\n collectionType,\n}: DocumentActionProps) => {\n const { formatMessage } = useIntl();\n const { allowedActions } = useRBAC(PERMISSIONS);\n const { canCreateAction } = allowedActions;\n const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n const locale = query.plugins?.i18n?.locale;\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>, onClose: () => void) => {\n try {\n await formik.handleSubmit(e);\n onClose();\n } catch (error) {\n if (isFetchError(error)) {\n // Handle axios error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n }\n };\n\n const formik = useFormik({\n initialValues: INITIAL_VALUES,\n validationSchema: RELEASE_ACTION_FORM_SCHEMA,\n onSubmit: async (values: FormValues) => {\n if (collectionType === 'collection-types' && !documentId) {\n throw new Error('Document id is required');\n }\n\n const response = await createReleaseAction({\n body: {\n type: values.type,\n contentType: model as UID.ContentType,\n entryDocumentId: documentId,\n locale,\n },\n params: { releaseId: values.releaseId },\n });\n\n if ('data' in response) {\n // Handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.notification.success',\n defaultMessage: 'Entry added to release',\n }),\n });\n\n return;\n }\n\n if ('error' in response) {\n throw response.error;\n }\n },\n });\n\n const {\n edit: { options },\n } = useDocumentLayout(model);\n\n // Project is not EE or contentType does not have draftAndPublish enabled\n if (!window.strapi.isEE || !options?.draftAndPublish || !canCreateAction) {\n return null;\n }\n\n if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {\n return null;\n }\n\n return {\n label: formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release',\n defaultMessage: 'Add to release',\n }),\n icon: <PaperPlane />,\n // Entry is creating so we don't want to allow adding it to a release\n disabled: !document,\n position: ['panel', 'table-row'],\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release',\n defaultMessage: 'Add to release',\n }),\n content: (\n <AddActionToReleaseModal\n contentType={model}\n documentId={documentId}\n onInputChange={formik.setFieldValue}\n values={formik.values}\n />\n ),\n footer: ({ onClose }) => (\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\" name=\"cancel\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.cancel-button',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button\n type=\"submit\"\n // @ts-expect-error - formik ReactEvent types don't match button onClick types as they expect a MouseEvent\n onClick={(e) => handleSubmit(e, onClose)}\n disabled={!formik.values.releaseId}\n loading={isLoading}\n >\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.continue-button',\n defaultMessage: 'Continue',\n })}\n </Button>\n </Modal.Footer>\n ),\n },\n };\n};\n\nexport { ReleaseActionModalForm };\n","import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n SingleSelect,\n SingleSelectOption,\n Modal,\n Field,\n} from '@strapi/design-system';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { CreateManyReleaseActions } from '../../../shared/contracts/release-actions';\nimport { PERMISSIONS as releasePermissions } from '../constants';\nimport { useCreateManyReleaseActionsMutation, useGetReleasesQuery } from '../services/release';\n\nimport {\n type FormValues,\n INITIAL_VALUES,\n RELEASE_ACTION_FORM_SCHEMA,\n NoReleases,\n} from './ReleaseActionModal';\nimport { ReleaseActionOptions } from './ReleaseActionOptions';\n\nimport type { BulkActionComponent } from '@strapi/content-manager/strapi-admin';\nimport type { UID } from '@strapi/types';\n\nconst getContentPermissions = (subject: string) => {\n const permissions = {\n publish: [\n {\n action: 'plugin::content-manager.explorer.publish',\n subject,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n };\n\n return permissions;\n};\n\nconst ReleaseAction: BulkActionComponent = ({ documents, model }) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n const contentPermissions = getContentPermissions(model);\n const {\n allowedActions: { canPublish },\n } = useRBAC(contentPermissions);\n const {\n allowedActions: { canCreate },\n } = useRBAC(releasePermissions);\n\n // Get all the releases not published\n const response = useGetReleasesQuery();\n const releases = response.data?.data;\n const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();\n const documentIds = documents.map((doc) => doc.documentId);\n\n const handleSubmit = async (values: FormValues) => {\n const locale = query.plugins?.i18n?.locale;\n\n const releaseActionEntries: CreateManyReleaseActions.Request['body'] = documentIds.map(\n (entryDocumentId) => ({\n type: values.type,\n contentType: model as UID.ContentType,\n entryDocumentId,\n locale,\n })\n );\n\n const response = await createManyReleaseActions({\n body: releaseActionEntries,\n params: { releaseId: values.releaseId },\n });\n\n if ('data' in response) {\n // Handle success\n\n const notificationMessage = formatMessage(\n {\n id: 'content-releases.content-manager-list-view.add-to-release.notification.success.message',\n defaultMessage:\n '{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release.',\n },\n {\n entriesAlreadyInRelease: response.data.meta.entriesAlreadyInRelease,\n totalEntries: response.data.meta.totalEntries,\n }\n );\n\n const notification = {\n type: 'success' as const,\n title: formatMessage(\n {\n id: 'content-releases.content-manager-list-view.add-to-release.notification.success.title',\n defaultMessage: 'Successfully added to release.',\n },\n {\n entriesAlreadyInRelease: response.data.meta.entriesAlreadyInRelease,\n totalEntries: response.data.meta.totalEntries,\n }\n ),\n message: response.data.meta.entriesAlreadyInRelease ? notificationMessage : '',\n };\n\n toggleNotification(notification);\n\n return true;\n }\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // Handle fetch error\n toggleNotification({\n type: 'warning',\n message: formatAPIError(response.error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'warning',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (!canCreate || !canPublish) return null;\n\n return {\n actionType: 'release',\n variant: 'tertiary',\n label: formatMessage({\n id: 'content-manager-list-view.add-to-release',\n defaultMessage: 'Add to Release',\n }),\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-manager-list-view.add-to-release',\n defaultMessage: 'Add to Release',\n }),\n content: ({ onClose }) => {\n return (\n <Formik\n onSubmit={async (values) => {\n const data = await handleSubmit(values);\n if (data) {\n return onClose();\n }\n }}\n validationSchema={RELEASE_ACTION_FORM_SCHEMA}\n initialValues={INITIAL_VALUES}\n >\n {({ values, setFieldValue }) => (\n <Form>\n {releases?.length === 0 ? (\n <NoReleases />\n ) : (\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box paddingBottom={6}>\n <Field.Root required>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.select-label',\n defaultMessage: 'Select a release',\n })}\n </Field.Label>\n <SingleSelect\n placeholder={formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.select-placeholder',\n defaultMessage: 'Select',\n })}\n onChange={(value) => setFieldValue('releaseId', value)}\n value={values.releaseId}\n >\n {releases?.map((release) => (\n <SingleSelectOption key={release.id} value={release.id}>\n {release.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Box>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.action-type-label',\n defaultMessage: 'What do you want to do with these entries?',\n })}\n </Field.Label>\n <ReleaseActionOptions\n selected={values.type}\n handleChange={(e) => setFieldValue('type', e.target.value)}\n name=\"type\"\n />\n </Flex>\n </Modal.Body>\n )}\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\" name=\"cancel\">\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.cancel-button',\n defaultMessage: 'Cancel',\n })}\n </Button>\n {/** * TODO: Ideally we would use isValid from Formik to disable the button,\n however currently it always returns true * for yup.string().required(), even when\n the value is falsy (including empty string) */}\n <Button type=\"submit\" disabled={!values.releaseId} loading={isLoading}>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.continue-button',\n defaultMessage: 'Continue',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n },\n },\n };\n};\n\nexport { ReleaseAction };\n","import * as React from 'react';\n\nimport { useTable, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { ListFieldLayout, ListLayout } from '@strapi/content-manager/strapi-admin';\nimport { Box, Popover, Typography, Button, Link } from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useGetMappedEntriesInReleasesQuery } from '../services/release';\n\nimport type { Modules, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useReleasesList\n * -----------------------------------------------------------------------------------------------*/\ninterface QueryParams {\n plugins?: {\n i18n?: {\n locale: string;\n };\n };\n}\n\nconst useReleasesList = (contentTypeUid: UID.ContentType, documentId: Modules.Documents.ID) => {\n const listViewData = useTable('ListView', (state) => state.rows);\n const documentIds = listViewData.map((entry) => entry.documentId);\n const [{ query }] = useQueryParams();\n const locale = (query as QueryParams)?.plugins?.i18n?.locale || undefined;\n\n const response = useGetMappedEntriesInReleasesQuery(\n { contentTypeUid, documentIds, locale },\n { skip: !documentIds || !contentTypeUid || documentIds.length === 0 }\n );\n\n const mappedEntriesInReleases = response.data || {};\n\n return mappedEntriesInReleases?.[documentId] || [];\n};\n\n/* -------------------------------------------------------------------------------------------------\n * addColumnToTableHook\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AddColumnToTableHookArgs {\n layout: ListLayout;\n displayedHeaders: ListFieldLayout[];\n}\n\nconst addColumnToTableHook = ({ displayedHeaders, layout }: AddColumnToTableHookArgs) => {\n const { options } = layout;\n\n if (!options?.draftAndPublish) {\n return { displayedHeaders, layout };\n }\n\n return {\n displayedHeaders: [\n ...displayedHeaders,\n {\n searchable: false,\n sortable: false,\n name: 'releases',\n label: {\n id: 'content-releases.content-manager.list-view.releases.header',\n defaultMessage: 'To be released in',\n },\n cellFormatter: (\n props: Modules.Documents.AnyDocument,\n _: any,\n { model }: { model: UID.ContentType }\n ) => <ReleaseListCell {...props} model={model} />,\n },\n ],\n layout,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseListCell\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ReleaseListCellProps extends Modules.Documents.AnyDocument {\n documentId: Modules.Documents.ID;\n model: UID.ContentType;\n}\n\nconst ReleaseListCell = ({ documentId, model }: ReleaseListCellProps) => {\n const releases = useReleasesList(model, documentId);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button\n variant=\"ghost\"\n onClick={(e: React.MouseEvent<HTMLElement>) => e.stopPropagation()}\n // TODO: find a way in the DS to define the widht and height of the icon\n endIcon={releases.length > 0 ? <CaretDown width=\"1.2rem\" height=\"1.2rem\" /> : null}\n >\n <Typography\n style={{ maxWidth: '252px', cursor: 'pointer' }}\n textColor=\"neutral800\"\n fontWeight=\"regular\"\n >\n {releases.length > 0\n ? formatMessage(\n {\n id: 'content-releases.content-manager.list-view.releases-number',\n defaultMessage: '{number} {number, plural, one {release} other {releases}}',\n },\n {\n number: releases.length,\n }\n )\n : '-'}\n </Typography>\n </Button>\n </Popover.Trigger>\n <Popover.Content>\n <ul>\n {releases.map(({ id, name }) => (\n <Box key={id} padding={3} tag=\"li\">\n <Link href={`/admin/plugins/content-releases/${id}`} isExternal={false}>\n {name}\n </Link>\n </Box>\n ))}\n </ul>\n </Popover.Content>\n </Popover.Root>\n );\n};\n\nexport { ReleaseListCell, addColumnToTableHook };\nexport type { ReleaseListCellProps };\n","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","import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useAuth,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography, Menu, AccessibleIcon } from '@strapi/design-system';\nimport { Cross, More, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DeleteReleaseAction, ReleaseAction } from '../../../shared/contracts/release-actions';\nimport { Release } from '../../../shared/contracts/releases';\nimport { PERMISSIONS } from '../constants';\nimport { useDeleteReleaseActionMutation } from '../services/release';\n\nconst StyledMenuItem = styled(Menu.Item)<{ $variant?: 'neutral' | 'danger' }>`\n &:hover {\n background: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}100`]};\n\n svg {\n fill: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}600`]};\n }\n\n a {\n color: ${({ theme }) => theme.colors.neutral800};\n }\n }\n\n svg {\n color: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}500`]};\n }\n\n span {\n color: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}800`]};\n }\n\n span,\n a {\n width: 100%;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteReleaseActionItemProps\n * -----------------------------------------------------------------------------------------------*/\ninterface DeleteReleaseActionItemProps {\n releaseId: DeleteReleaseAction.Request['params']['releaseId'];\n actionId: DeleteReleaseAction.Request['params']['actionId'];\n}\n\nconst DeleteReleaseActionItem = ({ releaseId, actionId }: DeleteReleaseActionItemProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [deleteReleaseAction] = useDeleteReleaseActionMutation();\n const {\n allowedActions: { canDeleteAction },\n } = useRBAC(PERMISSIONS);\n\n const handleDeleteAction = async () => {\n const response = await deleteReleaseAction({\n params: { releaseId, actionId },\n });\n\n if ('data' in response) {\n // Handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release.notification.success',\n defaultMessage: 'Entry removed from release',\n }),\n });\n\n return;\n }\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // Handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (!canDeleteAction) {\n return null;\n }\n\n return (\n <StyledMenuItem $variant=\"danger\" onSelect={handleDeleteAction}>\n <Flex gap={2}>\n <Cross width=\"1.6rem\" height=\"1.6rem\" />\n <Typography textColor=\"danger600\" variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release',\n defaultMessage: 'Remove from release',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseActionEntryLinkItem\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleaseActionEntryLinkItemProps {\n contentTypeUid: ReleaseAction['contentType'];\n documentId: ReleaseAction['entry']['documentId'];\n locale: ReleaseAction['locale'];\n}\n\nconst ReleaseActionEntryLinkItem = ({\n contentTypeUid,\n documentId,\n locale,\n}: ReleaseActionEntryLinkItemProps) => {\n const { formatMessage } = useIntl();\n const userPermissions = useAuth('ReleaseActionEntryLinkItem', (state) => state.permissions);\n\n // Confirm user has permissions to access the entry for the given locale\n const canUpdateEntryForLocale = React.useMemo(() => {\n const updatePermissions = userPermissions.find(\n (permission) =>\n permission.subject === contentTypeUid &&\n permission.action === 'plugin::content-manager.explorer.update'\n );\n\n if (!updatePermissions) {\n return false;\n }\n\n return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));\n }, [contentTypeUid, locale, userPermissions]);\n\n const {\n allowedActions: { canUpdate: canUpdateContentType },\n } = useRBAC({\n updateContentType: [\n {\n action: 'plugin::content-manager.explorer.update',\n subject: contentTypeUid,\n },\n ],\n });\n\n if (!canUpdateContentType || !canUpdateEntryForLocale) {\n return null;\n }\n\n return (\n <StyledMenuItem\n /* @ts-expect-error inference isn't working in DS */\n tag={NavLink}\n isLink\n to={{\n pathname: `/content-manager/collection-types/${contentTypeUid}/${documentId}`,\n search: locale && `?plugins[i18n][locale]=${locale}`,\n }}\n >\n <Flex gap={2}>\n <Pencil width=\"1.6rem\" height=\"1.6rem\" />\n <Typography variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-entry',\n defaultMessage: 'Edit entry',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditReleaseItem\n * -----------------------------------------------------------------------------------------------*/\ninterface EditReleaseItemProps {\n releaseId: Release['id'];\n}\n\nconst EditReleaseItem = ({ releaseId }: EditReleaseItemProps) => {\n const { formatMessage } = useIntl();\n\n return (\n /* @ts-expect-error inference isn't working in DS */\n <StyledMenuItem tag={NavLink} isLink to={`/plugins/content-releases/${releaseId}`}>\n <Flex gap={2}>\n <Pencil width=\"1.6rem\" height=\"1.6rem\" />\n <Typography textColor=\"neutral800\" variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-release',\n defaultMessage: 'Edit release',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RootProps {\n children: React.ReactNode;\n hasTriggerBorder?: boolean;\n}\n\nconst Root = ({ children }: RootProps) => {\n const { formatMessage } = useIntl();\n\n const { allowedActions } = useRBAC(PERMISSIONS);\n\n return (\n // A user can access the dropdown if they have permissions to delete a release-action OR update a release\n allowedActions.canDeleteAction || allowedActions.canUpdate ? (\n <Menu.Root>\n <StyledMoreButton variant=\"tertiary\" endIcon={null} paddingLeft=\"7px\" paddingRight=\"7px\">\n <AccessibleIcon\n label={formatMessage({\n id: 'content-releases.content-manager-edit-view.release-action-menu',\n defaultMessage: 'Release action options',\n })}\n >\n <More />\n </AccessibleIcon>\n </StyledMoreButton>\n <Menu.Content top={1} popoverPlacement=\"bottom-end\">\n {children}\n </Menu.Content>\n </Menu.Root>\n ) : null\n );\n};\n\nconst StyledMoreButton = styled(Menu.Trigger)`\n & > span {\n display: flex;\n }\n`;\n\nexport const ReleaseActionMenu = {\n Root,\n EditReleaseItem,\n DeleteReleaseActionItem,\n ReleaseActionEntryLinkItem,\n};\n","import { useRBAC, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { unstable_useDocumentLayout as useDocumentLayout } from '@strapi/content-manager/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { PERMISSIONS } from '../constants';\nimport { useGetReleasesForEntryQuery } from '../services/release';\nimport { getTimezoneOffset } from '../utils/time';\n\nimport { ReleaseActionMenu } from './ReleaseActionMenu';\n\nimport type { PanelComponent, PanelComponentProps } from '@strapi/content-manager/strapi-admin';\n\nconst Panel: PanelComponent = ({\n model,\n document,\n documentId,\n collectionType,\n}: PanelComponentProps) => {\n const [{ query }] = useQueryParams<{ plugins: { i18n: { locale: string } } }>();\n const locale = query.plugins?.i18n?.locale;\n\n const {\n edit: { options },\n } = useDocumentLayout(model);\n const { formatMessage, formatDate, formatTime } = useIntl();\n\n const { allowedActions } = useRBAC(PERMISSIONS);\n const { canRead, canDeleteAction } = allowedActions;\n\n const response = useGetReleasesForEntryQuery(\n {\n contentType: model,\n entryDocumentId: documentId,\n locale,\n hasEntryAttached: true,\n },\n {\n skip: !document,\n }\n );\n const releases = response.data?.data;\n\n const getReleaseColorVariant = (\n actionType: 'publish' | 'unpublish',\n shade: '100' | '200' | '600'\n ) => {\n if (actionType === 'unpublish') {\n return `secondary${shade}`;\n }\n\n return `success${shade}`;\n };\n\n // Project is not EE or contentType does not have draftAndPublish enabled\n if (!window.strapi.isEE || !options?.draftAndPublish || !canRead) {\n return null;\n }\n\n if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {\n return null;\n }\n\n if (!releases || releases.length === 0) {\n return null;\n }\n\n return {\n title: formatMessage({\n id: 'content-releases.plugin.name',\n defaultMessage: 'Releases',\n }),\n content: (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3} width=\"100%\">\n {releases?.map((release) => (\n <Flex\n key={release.id}\n direction=\"column\"\n alignItems=\"start\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor={getReleaseColorVariant(release.actions[0].type, '200')}\n overflow=\"hidden\"\n hasRadius\n >\n <Box\n paddingTop={3}\n paddingBottom={3}\n paddingLeft={4}\n paddingRight={4}\n background={getReleaseColorVariant(release.actions[0].type, '100')}\n width=\"100%\"\n >\n <Typography\n fontSize={1}\n variant=\"pi\"\n textColor={getReleaseColorVariant(release.actions[0].type, '600')}\n >\n {formatMessage(\n {\n id: 'content-releases.content-manager-edit-view.list-releases.title',\n defaultMessage:\n '{isPublish, select, true {Will be published in} other {Will be unpublished in}}',\n },\n { isPublish: release.actions[0].type === 'publish' }\n )}\n </Typography>\n </Box>\n <Flex padding={4} direction=\"column\" gap={2} width=\"100%\" alignItems=\"flex-start\">\n <Typography fontSize={2} fontWeight=\"bold\" variant=\"omega\" textColor=\"neutral700\">\n {release.name}\n </Typography>\n {release.scheduledAt && release.timezone && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-releases.content-manager-edit-view.scheduled.date',\n defaultMessage: '{date} at {time} ({offset})',\n },\n {\n date: formatDate(new Date(release.scheduledAt), {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n timeZone: release.timezone,\n }),\n time: formatTime(new Date(release.scheduledAt), {\n hourCycle: 'h23',\n timeZone: release.timezone,\n }),\n offset: getTimezoneOffset(release.timezone, new Date(release.scheduledAt)),\n }\n )}\n </Typography>\n )}\n {canDeleteAction ? (\n <ReleaseActionMenu.Root hasTriggerBorder>\n <ReleaseActionMenu.EditReleaseItem releaseId={release.id} />\n <ReleaseActionMenu.DeleteReleaseActionItem\n releaseId={release.id}\n actionId={release.actions[0].id}\n />\n </ReleaseActionMenu.Root>\n ) : null}\n </Flex>\n </Flex>\n ))}\n </Flex>\n ),\n };\n};\n\nexport { Panel };\n","export const pluginId = 'content-releases';\n","type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n","import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n DocumentActionComponent,\n BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: StrapiApp) {\n /**\n * Hook that adds the locale column in the Release Details table\n * @constant\n * @type {string}\n */\n app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n if (window.strapi.features.isEnabled('cms-content-releases')) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: PaperPlane,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n permissions: PERMISSIONS.main,\n position: 2,\n });\n\n // Insert the releases container into the CM's sidebar on the Edit View\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n }\n\n // Insert the \"add to release\" action into the CM's Edit View\n if (\n 'addDocumentAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addDocumentAction === 'function'\n ) {\n contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n return actions;\n });\n }\n\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n async Component() {\n const { ProtectedReleasesSettingsPage } = await import('./pages/ReleasesSettingsPage');\n return { default: ProtectedReleasesSettingsPage };\n },\n });\n\n if (\n 'addBulkAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addBulkAction === 'function'\n ) {\n contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n // We want to add this action to just before the delete action all the time\n const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n actions.splice(deleteActionIndex, 0, ReleaseAction);\n return actions;\n });\n }\n\n // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n } else if (\n !window.strapi.features.isEnabled('cms-content-releases') &&\n window.strapi?.flags?.promoteEE\n ) {\n app.addSettingsLink('global', {\n id: pluginId,\n to: '/plugins/purchase-content-releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n async Component() {\n const { PurchaseContentReleases } = await import('./pages/PurchaseContentReleases');\n return { default: PurchaseContentReleases };\n },\n licenseOnly: true,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'content-releases'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["PERMISSIONS","main","action","subject","id","actionParameters","properties","conditions","create","update","delete","createAction","deleteAction","publish","extendInvalidatesTags","endpoint","extraTags","originalInvalidatesTags","invalidatesTags","newInvalidatesTags","result","err","args","meta","originalTags","Object","assign","releaseApi","adminApi","enhanceEndpoints","addTagTypes","endpoints","updateDocument","type","deleteDocument","deleteManyDocuments","discardDocument","createWorkflow","updateWorkflow","deleteWorkflow","injectEndpoints","build","getReleasesForEntry","query","params","url","method","config","providesTags","data","map","getReleases","page","pageSize","filters","releasedAt","$notNull","transformResponse","response","arg","releasedAtValue","isActiveDoneTab","newResponse","activeTab","getRelease","error","getReleaseActions","releaseId","createRelease","mutation","updateRelease","createReleaseAction","body","createManyReleaseActions","updateReleaseAction","actionId","res","onQueryStarted","actionPath","dispatch","queryFulfilled","paramsWithoutActionId","patchResult","util","updateQueryData","draft","key","index","undo","deleteReleaseAction","publishRelease","deleteRelease","getMappedEntriesInReleases","getReleaseSettings","updateReleaseSettings","useGetReleasesQuery","useGetReleasesForEntryQuery","useGetReleaseQuery","useGetReleaseActionsQuery","useCreateReleaseMutation","useCreateReleaseActionMutation","useCreateManyReleaseActionsMutation","useUpdateReleaseMutation","useUpdateReleaseActionMutation","usePublishReleaseMutation","useDeleteReleaseActionMutation","useDeleteReleaseMutation","useGetMappedEntriesInReleasesQuery","useGetReleaseSettingsQuery","useUpdateReleaseSettingsMutation","getBorderLeftRadiusValue","actionType","getBorderRightRadiusValue","FieldWrapper","styled","Field","Root","$actionType","theme","spaces","colors","primary700","danger600","primary100","danger100","neutral700","neutral100","neutral200","neutral600","neutral150","neutral300","ActionOption","selected","handleChange","name","disabled","_jsx","background","borderColor","color","position","cursor","data-checked","data-disabled","_jsxs","Label","VisuallyHidden","Input","checked","onChange","value","ReleaseActionOptions","Flex","RELEASE_ACTION_FORM_SCHEMA","yup","object","shape","string","oneOf","required","INITIAL_VALUES","NoReleases","formatMessage","useIntl","EmptyStateLayout","icon","EmptyDocuments","width","content","defaultMessage","LinkButton","to","pathname","tag","ReactRouterLink","variant","shadow","AddActionToReleaseModal","contentType","documentId","onInputChange","values","useQueryParams","locale","plugins","i18n","entryDocumentId","hasEntryAttached","releases","length","direction","alignItems","gap","Box","paddingBottom","SingleSelect","placeholder","release","SingleSelectOption","e","target","ReleaseActionModalForm","document","model","collectionType","allowedActions","useRBAC","canCreateAction","isLoading","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","handleSubmit","onClose","formik","isFetchError","message","useFormik","initialValues","validationSchema","onSubmit","Error","edit","options","useDocumentLayout","window","strapi","isEE","draftAndPublish","label","PaperPlane","dialog","title","setFieldValue","footer","Modal","Footer","Button","onClick","loading","getContentPermissions","permissions","ReleaseAction","documents","contentPermissions","canPublish","canCreate","releasePermissions","documentIds","doc","releaseActionEntries","notificationMessage","entriesAlreadyInRelease","totalEntries","notification","Formik","Form","Body","useReleasesList","contentTypeUid","listViewData","useTable","state","rows","entry","undefined","skip","mappedEntriesInReleases","addColumnToTableHook","displayedHeaders","layout","searchable","sortable","cellFormatter","props","_","ReleaseListCell","Popover","Trigger","stopPropagation","endIcon","CaretDown","height","Typography","style","maxWidth","textColor","fontWeight","number","Content","ul","padding","Link","href","isExternal","getTimezoneOffset","timezone","date","offsetPart","Intl","DateTimeFormat","timeZone","timeZoneName","formatToParts","find","part","offset","utcOffset","replace","includes","getTimezones","selectedDate","timezoneList","supportedValuesOf","systemTimezone","split","resolvedOptions","StyledMenuItem","Menu","Item","$variant","neutral800","DeleteReleaseActionItem","canDeleteAction","handleDeleteAction","onSelect","Cross","ReleaseActionEntryLinkItem","userPermissions","useAuth","canUpdateEntryForLocale","React","useMemo","updatePermissions","permission","Boolean","locales","canUpdate","canUpdateContentType","updateContentType","NavLink","isLink","search","Pencil","EditReleaseItem","children","StyledMoreButton","paddingLeft","paddingRight","AccessibleIcon","More","top","popoverPlacement","ReleaseActionMenu","Panel","formatDate","formatTime","canRead","getReleaseColorVariant","shade","borderWidth","borderStyle","actions","overflow","hasRadius","paddingTop","fontSize","isPublish","scheduledAt","Date","day","month","year","time","hourCycle","hasTriggerBorder","pluginId","prefixPluginTranslations","trad","keys","reduce","acc","current","admin","register","app","createHook","features","isEnabled","addMenuLink","intlLabel","Component","then","mod","default","App","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","indexOfDeleteAction","findIndex","splice","addSettingsLink","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","registerHook","flags","promoteEE","PurchaseContentReleases","licenseOnly","registerTrads","importedTrads","Promise","all","catch","resolve"],"mappings":"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"}
1
+ {"version":3,"file":"index-vjWrvGN3.js","sources":["../../../admin/src/constants.ts","../../../admin/src/services/release.ts","../../../admin/src/components/ReleaseActionOptions.tsx","../../../admin/src/components/ReleaseActionModal.tsx","../../../admin/src/components/ReleaseAction.tsx","../../../admin/src/components/ReleaseListCell.tsx","../../../admin/src/utils/time.ts","../../../admin/src/components/ReleaseActionMenu.tsx","../../../admin/src/components/ReleasesPanel.tsx","../../../admin/src/pluginId.ts","../../../admin/src/utils/prefixPluginTranslations.ts","../../../admin/src/index.ts"],"sourcesContent":["import type { Permission as StrapiPermission } from '@strapi/admin/strapi-admin';\n\nexport const PERMISSIONS = {\n main: [\n {\n action: 'plugin::content-releases.read',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n create: [\n {\n action: 'plugin::content-releases.create',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n update: [\n {\n action: 'plugin::content-releases.update',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n delete: [\n {\n action: 'plugin::content-releases.delete',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n createAction: [\n {\n action: 'plugin::content-releases.create-action',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n deleteAction: [\n {\n action: 'plugin::content-releases.delete-action',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n publish: [\n {\n action: 'plugin::content-releases.publish',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n} satisfies Record<string, StrapiPermission[]>;\n\nexport const PERMISSIONS_SETTINGS = {\n read: [\n {\n action: 'plugin::content-releases.settings.read',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n update: [\n {\n action: 'plugin::content-releases.settings.update',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n} satisfies Record<string, StrapiPermission[]>;\n","import { adminApi } from '@strapi/admin/strapi-admin';\n\nimport {\n CreateReleaseAction,\n CreateManyReleaseActions,\n DeleteReleaseAction,\n} from '../../../shared/contracts/release-actions';\n\nimport type {\n GetReleaseActions,\n UpdateReleaseAction,\n ReleaseActionGroupBy,\n} from '../../../shared/contracts/release-actions';\nimport type {\n CreateRelease,\n DeleteRelease,\n GetReleases,\n GetReleasesByDocumentAttached,\n UpdateRelease,\n GetRelease,\n PublishRelease,\n MapEntriesToReleases,\n} from '../../../shared/contracts/releases';\nimport type { GetSettings, UpdateSettings } from '../../../shared/contracts/settings';\nimport type { EndpointDefinition } from '@reduxjs/toolkit/query';\n\nexport interface GetReleasesQueryParams {\n page?: number;\n pageSize?: number;\n filters?: {\n releasedAt?: {\n // TODO: this should be a boolean, find a way to avoid strings\n $notNull?: boolean | 'true' | 'false';\n };\n };\n}\n\nexport interface GetReleaseActionsQueryParams {\n page?: number;\n pageSize?: number;\n groupBy?: ReleaseActionGroupBy;\n}\n\ntype GetReleasesTabResponse = GetReleases.Response & {\n meta: {\n activeTab: 'pending' | 'done';\n };\n};\n\ntype AnyEndpointDefinition = EndpointDefinition<any, any, any, any>;\n\n// TODO: move this into the admin code & expose an improved version of enhanceEndpoints or a new function\nconst extendInvalidatesTags = (\n endpoint: AnyEndpointDefinition,\n extraTags: string[] | { type: string; id: string }[]\n) => {\n if (!endpoint) {\n return;\n }\n\n const originalInvalidatesTags = endpoint.invalidatesTags;\n\n const newInvalidatesTags: AnyEndpointDefinition['invalidatesTags'] = (\n result,\n err,\n args,\n meta\n ) => {\n const originalTags =\n typeof originalInvalidatesTags === 'function'\n ? originalInvalidatesTags(result, err, args, meta)\n : originalInvalidatesTags;\n\n return [...(originalTags ?? []), ...extraTags];\n };\n\n Object.assign(endpoint, { invalidatesTags: newInvalidatesTags });\n};\n\nconst releaseApi = adminApi\n .enhanceEndpoints({\n addTagTypes: ['Release', 'ReleaseAction', 'EntriesInRelease', 'ReleaseSettings', 'Document'],\n endpoints: {\n updateDocument(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n deleteDocument(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n deleteManyDocuments(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n discardDocument(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n createWorkflow(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n updateWorkflow(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n deleteWorkflow(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n },\n })\n .injectEndpoints({\n endpoints: (build) => {\n return {\n getReleasesForEntry: build.query<\n GetReleasesByDocumentAttached.Response,\n Partial<GetReleasesByDocumentAttached.Request['query']>\n >({\n query(params) {\n return {\n url: '/content-releases/getByDocumentAttached',\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: (result) =>\n result\n ? [\n ...result.data.map(({ id }) => ({ type: 'Release' as const, id })),\n { type: 'Release', id: 'LIST' },\n ]\n : [],\n }),\n getReleases: build.query<GetReleasesTabResponse, GetReleasesQueryParams | void>({\n query(\n { page, pageSize, filters } = {\n page: 1,\n pageSize: 16,\n filters: {\n releasedAt: {\n $notNull: false,\n },\n },\n }\n ) {\n return {\n url: '/content-releases',\n method: 'GET',\n config: {\n params: {\n page: page || 1,\n pageSize: pageSize || 16,\n filters: filters || {\n releasedAt: {\n $notNull: false,\n },\n },\n },\n },\n };\n },\n transformResponse(response: GetReleasesTabResponse, meta, arg) {\n const releasedAtValue = arg?.filters?.releasedAt?.$notNull;\n const isActiveDoneTab = releasedAtValue === 'true';\n const newResponse: GetReleasesTabResponse = {\n ...response,\n meta: {\n ...response.meta,\n activeTab: isActiveDoneTab ? 'done' : 'pending',\n },\n };\n\n return newResponse;\n },\n providesTags: (result) =>\n result\n ? [\n ...result.data.map(({ id }) => ({ type: 'Release' as const, id })),\n { type: 'Release', id: 'LIST' },\n ]\n : [{ type: 'Release', id: 'LIST' }],\n }),\n getRelease: build.query<GetRelease.Response, GetRelease.Request['params']>({\n query({ id }) {\n return {\n url: `/content-releases/${id}`,\n method: 'GET',\n };\n },\n providesTags: (result, error, arg) => [\n { type: 'Release', id: 'LIST' },\n { type: 'Release' as const, id: arg.id },\n ],\n }),\n getReleaseActions: build.query<\n GetReleaseActions.Response,\n GetReleaseActions.Request['params'] & GetReleaseActions.Request['query']\n >({\n query({ releaseId, ...params }) {\n return {\n url: `/content-releases/${releaseId}/actions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: [{ type: 'ReleaseAction', id: 'LIST' }],\n }),\n createRelease: build.mutation<CreateRelease.Response, CreateRelease.Request['body']>({\n query(data) {\n return {\n url: '/content-releases',\n method: 'POST',\n data,\n };\n },\n invalidatesTags: [{ type: 'Release', id: 'LIST' }],\n }),\n updateRelease: build.mutation<\n void,\n UpdateRelease.Request['params'] & UpdateRelease.Request['body']\n >({\n query({ id, ...data }) {\n return {\n url: `/content-releases/${id}`,\n method: 'PUT',\n data,\n };\n },\n invalidatesTags: (result, error, arg) => [{ type: 'Release', id: arg.id }],\n }),\n createReleaseAction: build.mutation<\n CreateReleaseAction.Response,\n CreateReleaseAction.Request\n >({\n query({ body, params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions`,\n method: 'POST',\n data: body,\n };\n },\n invalidatesTags: [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ],\n }),\n createManyReleaseActions: build.mutation<\n CreateManyReleaseActions.Response,\n CreateManyReleaseActions.Request\n >({\n query({ body, params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions/bulk`,\n method: 'POST',\n data: body,\n };\n },\n invalidatesTags: [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'EntriesInRelease' },\n ],\n }),\n updateReleaseAction: build.mutation<\n UpdateReleaseAction.Response,\n UpdateReleaseAction.Request & { query: GetReleaseActions.Request['query'] } & {\n actionPath: [string, number];\n }\n >({\n query({ body, params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions/${params.actionId}`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (res, error, arg) => [\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'Release', id: 'LIST' },\n { type: 'Release', id: arg.params.releaseId },\n ],\n async onQueryStarted({ body, params, query, actionPath }, { dispatch, queryFulfilled }) {\n // We need to mimic the same params received by the getReleaseActions query\n const paramsWithoutActionId = {\n releaseId: params.releaseId,\n ...query,\n };\n\n const patchResult = dispatch(\n releaseApi.util.updateQueryData(\n 'getReleaseActions',\n paramsWithoutActionId,\n (draft) => {\n const [key, index] = actionPath;\n const action = draft.data[key][index];\n\n if (action) {\n action.type = body.type;\n }\n }\n )\n );\n\n try {\n await queryFulfilled;\n } catch {\n patchResult.undo();\n }\n },\n }),\n deleteReleaseAction: build.mutation<\n DeleteReleaseAction.Response,\n DeleteReleaseAction.Request\n >({\n query({ params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions/${params.actionId}`,\n method: 'DELETE',\n };\n },\n invalidatesTags: (result, error, arg) => [\n { type: 'Release', id: 'LIST' },\n { type: 'Release', id: arg.params.releaseId },\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'EntriesInRelease' },\n ],\n }),\n publishRelease: build.mutation<PublishRelease.Response, PublishRelease.Request['params']>({\n query({ id }) {\n return {\n url: `/content-releases/${id}/publish`,\n method: 'POST',\n };\n },\n invalidatesTags: (result, error, arg) => [\n { type: 'Release', id: arg.id },\n { type: 'Document', id: `ALL_LIST` },\n ],\n }),\n deleteRelease: build.mutation<DeleteRelease.Response, DeleteRelease.Request['params']>({\n query({ id }) {\n return {\n url: `/content-releases/${id}`,\n method: 'DELETE',\n };\n },\n invalidatesTags: () => [{ type: 'Release', id: 'LIST' }, { type: 'EntriesInRelease' }],\n }),\n getMappedEntriesInReleases: build.query<\n MapEntriesToReleases.Response['data'],\n MapEntriesToReleases.Request['query']\n >({\n query(params) {\n return {\n url: '/content-releases/mapEntriesToReleases',\n method: 'GET',\n config: {\n params,\n },\n };\n },\n transformResponse(response: MapEntriesToReleases.Response) {\n return response.data;\n },\n providesTags: [{ type: 'EntriesInRelease' }],\n }),\n getReleaseSettings: build.query<GetSettings.Response, GetSettings.Request | void>({\n query: () => '/content-releases/settings',\n providesTags: [{ type: 'ReleaseSettings' }],\n }),\n updateReleaseSettings: build.mutation<void, UpdateSettings.Request['body']>({\n query(data) {\n return {\n url: '/content-releases/settings',\n method: 'PUT',\n data,\n };\n },\n invalidatesTags: [{ type: 'ReleaseSettings' }],\n }),\n };\n },\n });\n\nconst {\n useGetReleasesQuery,\n useGetReleasesForEntryQuery,\n useGetReleaseQuery,\n useGetReleaseActionsQuery,\n useCreateReleaseMutation,\n useCreateReleaseActionMutation,\n useCreateManyReleaseActionsMutation,\n useUpdateReleaseMutation,\n useUpdateReleaseActionMutation,\n usePublishReleaseMutation,\n useDeleteReleaseActionMutation,\n useDeleteReleaseMutation,\n useGetMappedEntriesInReleasesQuery,\n useGetReleaseSettingsQuery,\n useUpdateReleaseSettingsMutation,\n} = releaseApi;\n\nexport {\n useGetReleasesQuery,\n useGetReleasesForEntryQuery,\n useGetReleaseQuery,\n useGetReleaseActionsQuery,\n useCreateReleaseMutation,\n useCreateReleaseActionMutation,\n useCreateManyReleaseActionsMutation,\n useUpdateReleaseMutation,\n useUpdateReleaseActionMutation,\n usePublishReleaseMutation,\n useDeleteReleaseActionMutation,\n useDeleteReleaseMutation,\n useGetMappedEntriesInReleasesQuery,\n useGetReleaseSettingsQuery,\n useUpdateReleaseSettingsMutation,\n releaseApi,\n};\n","import * as React from 'react';\n\nimport { VisuallyHidden, Field, Flex } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface FieldWrapperProps extends Field.Props {\n actionType: 'publish' | 'unpublish';\n}\n\nconst getBorderLeftRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 1 : 0;\n};\n\nconst getBorderRightRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 0 : 1;\n};\n\nconst FieldWrapper = styled(Field.Root)<{\n $actionType: 'publish' | 'unpublish';\n}>`\n border-top-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-bottom-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-top-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n border-bottom-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n\n > label {\n color: inherit;\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[3]}`};\n text-align: center;\n vertical-align: middle;\n text-transform: capitalize;\n }\n\n &[data-checked='true'] {\n color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n background-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary100 : theme.colors.danger100};\n border-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n }\n\n &[data-checked='false'] {\n border-left: ${({ $actionType }) => $actionType === 'unpublish' && 'none'};\n border-right: ${({ $actionType }) => $actionType === 'publish' && 'none'};\n }\n\n &[data-checked='false'][data-disabled='false']:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n background-color: ${({ theme }) => theme.colors.neutral100};\n border-color: ${({ theme }) => theme.colors.neutral200};\n\n & > label {\n cursor: pointer;\n }\n }\n\n &[data-disabled='true'] {\n color: ${({ theme }) => theme.colors.neutral600};\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-color: ${({ theme }) => theme.colors.neutral300};\n }\n`;\n\ninterface ActionOptionProps {\n selected: 'publish' | 'unpublish';\n handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n name: string;\n disabled?: boolean;\n}\n\ninterface OptionProps extends ActionOptionProps {\n actionType: 'publish' | 'unpublish';\n}\n\nconst ActionOption = ({\n selected,\n actionType,\n handleChange,\n name,\n disabled = false,\n}: OptionProps) => {\n return (\n <FieldWrapper\n $actionType={actionType}\n background=\"primary0\"\n borderColor=\"neutral200\"\n color={selected === actionType ? 'primary600' : 'neutral600'}\n position=\"relative\"\n cursor=\"pointer\"\n data-checked={selected === actionType}\n data-disabled={disabled && selected !== actionType}\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n name={name}\n checked={selected === actionType}\n onChange={handleChange}\n value={actionType}\n disabled={disabled}\n />\n </VisuallyHidden>\n {actionType}\n </Field.Label>\n </FieldWrapper>\n );\n};\n\nexport const ReleaseActionOptions = ({\n selected,\n handleChange,\n name,\n disabled = false,\n}: ActionOptionProps) => {\n return (\n <Flex>\n <ActionOption\n actionType=\"publish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n <ActionOption\n actionType=\"unpublish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n </Flex>\n );\n};\n","import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport { unstable_useDocumentLayout as useDocumentLayout } from '@strapi/content-manager/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n SingleSelect,\n SingleSelectOption,\n EmptyStateLayout,\n LinkButton,\n Field,\n Modal,\n} from '@strapi/design-system';\nimport { PaperPlane } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useFormik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { CreateReleaseAction } from '../../../shared/contracts/release-actions';\nimport { PERMISSIONS } from '../constants';\nimport { useCreateReleaseActionMutation, useGetReleasesForEntryQuery } from '../services/release';\n\nimport { ReleaseActionOptions } from './ReleaseActionOptions';\n\nimport type {\n DocumentActionComponent,\n DocumentActionProps,\n} from '@strapi/content-manager/strapi-admin';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * AddActionToReleaseModal\n * -----------------------------------------------------------------------------------------------*/\nexport const RELEASE_ACTION_FORM_SCHEMA = yup.object().shape({\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n releaseId: yup.string().required(),\n});\n\nexport interface FormValues {\n type: CreateReleaseAction.Request['body']['type'];\n releaseId: CreateReleaseAction.Request['params']['releaseId'];\n}\n\nexport const INITIAL_VALUES = {\n type: 'publish',\n releaseId: '',\n} satisfies FormValues;\n\ninterface AddActionToReleaseModalProps {\n contentType: string;\n documentId?: string;\n onInputChange: (field: keyof FormValues, value: string | number) => void;\n values: FormValues;\n}\n\nexport const NoReleases = () => {\n const { formatMessage } = useIntl();\n return (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.no-releases-message',\n defaultMessage:\n 'No available releases. Open the list of releases and create a new one from there.',\n })}\n action={\n <LinkButton\n to={{\n pathname: '/plugins/content-releases',\n }}\n tag={ReactRouterLink}\n variant=\"secondary\"\n >\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.redirect-button',\n defaultMessage: 'Open the list of releases',\n })}\n </LinkButton>\n }\n shadow=\"none\"\n />\n );\n};\n\nconst AddActionToReleaseModal = ({\n contentType,\n documentId,\n onInputChange,\n values,\n}: AddActionToReleaseModalProps) => {\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n const locale = query.plugins?.i18n?.locale;\n\n // Get all 'pending' releases that do not have the entry attached\n const response = useGetReleasesForEntryQuery({\n contentType,\n entryDocumentId: documentId,\n hasEntryAttached: false,\n locale,\n });\n\n const releases = response.data?.data;\n\n if (releases?.length === 0) {\n return <NoReleases />;\n }\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box paddingBottom={6}>\n <Field.Root required>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.select-label',\n defaultMessage: 'Select a release',\n })}\n </Field.Label>\n <SingleSelect\n required\n placeholder={formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.select-placeholder',\n defaultMessage: 'Select',\n })}\n name=\"releaseId\"\n onChange={(value) => onInputChange('releaseId', value)}\n value={values.releaseId}\n >\n {releases?.map((release) => (\n <SingleSelectOption key={release.id} value={release.id}>\n {release.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Box>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.action-type-label',\n defaultMessage: 'What do you want to do with this entry?',\n })}\n </Field.Label>\n <ReleaseActionOptions\n selected={values.type}\n handleChange={(e) => onInputChange('type', e.target.value)}\n name=\"type\"\n />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseActionModalForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ReleaseActionModalForm: DocumentActionComponent = ({\n documentId,\n document,\n model,\n collectionType,\n}: DocumentActionProps) => {\n const { formatMessage } = useIntl();\n const { allowedActions } = useRBAC(PERMISSIONS);\n const { canCreateAction } = allowedActions;\n const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n const locale = query.plugins?.i18n?.locale;\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>, onClose: () => void) => {\n try {\n await formik.handleSubmit(e);\n onClose();\n } catch (error) {\n if (isFetchError(error)) {\n // Handle axios error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n }\n };\n\n const formik = useFormik({\n initialValues: INITIAL_VALUES,\n validationSchema: RELEASE_ACTION_FORM_SCHEMA,\n onSubmit: async (values: FormValues) => {\n if (collectionType === 'collection-types' && !documentId) {\n throw new Error('Document id is required');\n }\n\n const response = await createReleaseAction({\n body: {\n type: values.type,\n contentType: model as UID.ContentType,\n entryDocumentId: documentId,\n locale,\n },\n params: { releaseId: values.releaseId },\n });\n\n if ('data' in response) {\n // Handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.notification.success',\n defaultMessage: 'Entry added to release',\n }),\n });\n\n return;\n }\n\n if ('error' in response) {\n throw response.error;\n }\n },\n });\n\n const {\n edit: { options },\n } = useDocumentLayout(model);\n\n // Project is not EE or contentType does not have draftAndPublish enabled\n if (!window.strapi.isEE || !options?.draftAndPublish || !canCreateAction) {\n return null;\n }\n\n if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {\n return null;\n }\n\n return {\n label: formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release',\n defaultMessage: 'Add to release',\n }),\n icon: <PaperPlane />,\n // Entry is creating so we don't want to allow adding it to a release\n disabled: !document,\n position: ['panel', 'table-row'],\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release',\n defaultMessage: 'Add to release',\n }),\n content: (\n <AddActionToReleaseModal\n contentType={model}\n documentId={documentId}\n onInputChange={formik.setFieldValue}\n values={formik.values}\n />\n ),\n footer: ({ onClose }) => (\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\" name=\"cancel\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.cancel-button',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button\n type=\"submit\"\n // @ts-expect-error - formik ReactEvent types don't match button onClick types as they expect a MouseEvent\n onClick={(e) => handleSubmit(e, onClose)}\n disabled={!formik.values.releaseId}\n loading={isLoading}\n >\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.continue-button',\n defaultMessage: 'Continue',\n })}\n </Button>\n </Modal.Footer>\n ),\n },\n };\n};\n\nexport { ReleaseActionModalForm };\n","import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n SingleSelect,\n SingleSelectOption,\n Modal,\n Field,\n} from '@strapi/design-system';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { CreateManyReleaseActions } from '../../../shared/contracts/release-actions';\nimport { PERMISSIONS as releasePermissions } from '../constants';\nimport { useCreateManyReleaseActionsMutation, useGetReleasesQuery } from '../services/release';\n\nimport {\n type FormValues,\n INITIAL_VALUES,\n RELEASE_ACTION_FORM_SCHEMA,\n NoReleases,\n} from './ReleaseActionModal';\nimport { ReleaseActionOptions } from './ReleaseActionOptions';\n\nimport type { BulkActionComponent } from '@strapi/content-manager/strapi-admin';\nimport type { UID } from '@strapi/types';\n\nconst getContentPermissions = (subject: string) => {\n const permissions = {\n publish: [\n {\n action: 'plugin::content-manager.explorer.publish',\n subject,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n };\n\n return permissions;\n};\n\nconst ReleaseAction: BulkActionComponent = ({ documents, model }) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n const contentPermissions = getContentPermissions(model);\n const {\n allowedActions: { canPublish },\n } = useRBAC(contentPermissions);\n const {\n allowedActions: { canCreate },\n } = useRBAC(releasePermissions);\n\n // Get all the releases not published\n const response = useGetReleasesQuery();\n const releases = response.data?.data;\n const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();\n const documentIds = documents.map((doc) => doc.documentId);\n\n const handleSubmit = async (values: FormValues) => {\n const locale = query.plugins?.i18n?.locale;\n\n const releaseActionEntries: CreateManyReleaseActions.Request['body'] = documentIds.map(\n (entryDocumentId) => ({\n type: values.type,\n contentType: model as UID.ContentType,\n entryDocumentId,\n locale,\n })\n );\n\n const response = await createManyReleaseActions({\n body: releaseActionEntries,\n params: { releaseId: values.releaseId },\n });\n\n if ('data' in response) {\n // Handle success\n\n const notificationMessage = formatMessage(\n {\n id: 'content-releases.content-manager-list-view.add-to-release.notification.success.message',\n defaultMessage:\n '{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release.',\n },\n {\n entriesAlreadyInRelease: response.data.meta.entriesAlreadyInRelease,\n totalEntries: response.data.meta.totalEntries,\n }\n );\n\n const notification = {\n type: 'success' as const,\n title: formatMessage(\n {\n id: 'content-releases.content-manager-list-view.add-to-release.notification.success.title',\n defaultMessage: 'Successfully added to release.',\n },\n {\n entriesAlreadyInRelease: response.data.meta.entriesAlreadyInRelease,\n totalEntries: response.data.meta.totalEntries,\n }\n ),\n message: response.data.meta.entriesAlreadyInRelease ? notificationMessage : '',\n };\n\n toggleNotification(notification);\n\n return true;\n }\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // Handle fetch error\n toggleNotification({\n type: 'warning',\n message: formatAPIError(response.error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'warning',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (!canCreate || !canPublish) return null;\n\n return {\n actionType: 'release',\n variant: 'tertiary',\n label: formatMessage({\n id: 'content-manager-list-view.add-to-release',\n defaultMessage: 'Add to Release',\n }),\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-manager-list-view.add-to-release',\n defaultMessage: 'Add to Release',\n }),\n content: ({ onClose }) => {\n return (\n <Formik\n onSubmit={async (values) => {\n const data = await handleSubmit(values);\n if (data) {\n return onClose();\n }\n }}\n validationSchema={RELEASE_ACTION_FORM_SCHEMA}\n initialValues={INITIAL_VALUES}\n >\n {({ values, setFieldValue }) => (\n <Form>\n {releases?.length === 0 ? (\n <NoReleases />\n ) : (\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box paddingBottom={6}>\n <Field.Root required>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.select-label',\n defaultMessage: 'Select a release',\n })}\n </Field.Label>\n <SingleSelect\n placeholder={formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.select-placeholder',\n defaultMessage: 'Select',\n })}\n onChange={(value) => setFieldValue('releaseId', value)}\n value={values.releaseId}\n >\n {releases?.map((release) => (\n <SingleSelectOption key={release.id} value={release.id}>\n {release.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Box>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.action-type-label',\n defaultMessage: 'What do you want to do with these entries?',\n })}\n </Field.Label>\n <ReleaseActionOptions\n selected={values.type}\n handleChange={(e) => setFieldValue('type', e.target.value)}\n name=\"type\"\n />\n </Flex>\n </Modal.Body>\n )}\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\" name=\"cancel\">\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.cancel-button',\n defaultMessage: 'Cancel',\n })}\n </Button>\n {/** * TODO: Ideally we would use isValid from Formik to disable the button,\n however currently it always returns true * for yup.string().required(), even when\n the value is falsy (including empty string) */}\n <Button type=\"submit\" disabled={!values.releaseId} loading={isLoading}>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.continue-button',\n defaultMessage: 'Continue',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n },\n },\n };\n};\n\nexport { ReleaseAction };\n","import * as React from 'react';\n\nimport { useTable, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { ListFieldLayout, ListLayout } from '@strapi/content-manager/strapi-admin';\nimport { Box, Popover, Typography, Button, Link } from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useGetMappedEntriesInReleasesQuery } from '../services/release';\n\nimport type { Modules, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useReleasesList\n * -----------------------------------------------------------------------------------------------*/\ninterface QueryParams {\n plugins?: {\n i18n?: {\n locale: string;\n };\n };\n}\n\nconst useReleasesList = (contentTypeUid: UID.ContentType, documentId: Modules.Documents.ID) => {\n const listViewData = useTable('ListView', (state) => state.rows);\n const documentIds = listViewData.map((entry) => entry.documentId);\n const [{ query }] = useQueryParams();\n const locale = (query as QueryParams)?.plugins?.i18n?.locale || undefined;\n\n const response = useGetMappedEntriesInReleasesQuery(\n { contentTypeUid, documentIds, locale },\n { skip: !documentIds || !contentTypeUid || documentIds.length === 0 }\n );\n\n const mappedEntriesInReleases = response.data || {};\n\n return mappedEntriesInReleases?.[documentId] || [];\n};\n\n/* -------------------------------------------------------------------------------------------------\n * addColumnToTableHook\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AddColumnToTableHookArgs {\n layout: ListLayout;\n displayedHeaders: ListFieldLayout[];\n}\n\nconst addColumnToTableHook = ({ displayedHeaders, layout }: AddColumnToTableHookArgs) => {\n const { options } = layout;\n\n if (!options?.draftAndPublish) {\n return { displayedHeaders, layout };\n }\n\n return {\n displayedHeaders: [\n ...displayedHeaders,\n {\n searchable: false,\n sortable: false,\n name: 'releases',\n label: {\n id: 'content-releases.content-manager.list-view.releases.header',\n defaultMessage: 'To be released in',\n },\n cellFormatter: (\n props: Modules.Documents.AnyDocument,\n _: any,\n { model }: { model: UID.ContentType }\n ) => <ReleaseListCell {...props} model={model} />,\n },\n ],\n layout,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseListCell\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ReleaseListCellProps extends Modules.Documents.AnyDocument {\n documentId: Modules.Documents.ID;\n model: UID.ContentType;\n}\n\nconst ReleaseListCell = ({ documentId, model }: ReleaseListCellProps) => {\n const releases = useReleasesList(model, documentId);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button\n variant=\"ghost\"\n onClick={(e: React.MouseEvent<HTMLElement>) => e.stopPropagation()}\n // TODO: find a way in the DS to define the widht and height of the icon\n endIcon={releases.length > 0 ? <CaretDown width=\"1.2rem\" height=\"1.2rem\" /> : null}\n >\n <Typography\n style={{ maxWidth: '252px', cursor: 'pointer' }}\n textColor=\"neutral800\"\n fontWeight=\"regular\"\n >\n {releases.length > 0\n ? formatMessage(\n {\n id: 'content-releases.content-manager.list-view.releases-number',\n defaultMessage: '{number} {number, plural, one {release} other {releases}}',\n },\n {\n number: releases.length,\n }\n )\n : '-'}\n </Typography>\n </Button>\n </Popover.Trigger>\n <Popover.Content>\n <ul>\n {releases.map(({ id, name }) => (\n <Box key={id} padding={3} tag=\"li\">\n <Link href={`/admin/plugins/content-releases/${id}`} isExternal={false}>\n {name}\n </Link>\n </Box>\n ))}\n </ul>\n </Popover.Content>\n </Popover.Root>\n );\n};\n\nexport { ReleaseListCell, addColumnToTableHook };\nexport type { ReleaseListCellProps };\n","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","import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useAuth,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography, Menu, AccessibleIcon } from '@strapi/design-system';\nimport { Cross, More, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DeleteReleaseAction, ReleaseAction } from '../../../shared/contracts/release-actions';\nimport { Release } from '../../../shared/contracts/releases';\nimport { PERMISSIONS } from '../constants';\nimport { useDeleteReleaseActionMutation } from '../services/release';\n\nconst StyledMenuItem = styled(Menu.Item)<{ $variant?: 'neutral' | 'danger' }>`\n &:hover {\n background: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}100`]};\n\n svg {\n fill: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}600`]};\n }\n\n a {\n color: ${({ theme }) => theme.colors.neutral800};\n }\n }\n\n svg {\n color: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}500`]};\n }\n\n span {\n color: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}800`]};\n }\n\n span,\n a {\n width: 100%;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteReleaseActionItemProps\n * -----------------------------------------------------------------------------------------------*/\ninterface DeleteReleaseActionItemProps {\n releaseId: DeleteReleaseAction.Request['params']['releaseId'];\n actionId: DeleteReleaseAction.Request['params']['actionId'];\n}\n\nconst DeleteReleaseActionItem = ({ releaseId, actionId }: DeleteReleaseActionItemProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [deleteReleaseAction] = useDeleteReleaseActionMutation();\n const {\n allowedActions: { canDeleteAction },\n } = useRBAC(PERMISSIONS);\n\n const handleDeleteAction = async () => {\n const response = await deleteReleaseAction({\n params: { releaseId, actionId },\n });\n\n if ('data' in response) {\n // Handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release.notification.success',\n defaultMessage: 'Entry removed from release',\n }),\n });\n\n return;\n }\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // Handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (!canDeleteAction) {\n return null;\n }\n\n return (\n <StyledMenuItem $variant=\"danger\" onSelect={handleDeleteAction}>\n <Flex gap={2}>\n <Cross width=\"1.6rem\" height=\"1.6rem\" />\n <Typography textColor=\"danger600\" variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release',\n defaultMessage: 'Remove from release',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseActionEntryLinkItem\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleaseActionEntryLinkItemProps {\n contentTypeUid: ReleaseAction['contentType'];\n documentId: ReleaseAction['entry']['documentId'];\n locale: ReleaseAction['locale'];\n}\n\nconst ReleaseActionEntryLinkItem = ({\n contentTypeUid,\n documentId,\n locale,\n}: ReleaseActionEntryLinkItemProps) => {\n const { formatMessage } = useIntl();\n const userPermissions = useAuth('ReleaseActionEntryLinkItem', (state) => state.permissions);\n\n // Confirm user has permissions to access the entry for the given locale\n const canUpdateEntryForLocale = React.useMemo(() => {\n const updatePermissions = userPermissions.find(\n (permission) =>\n permission.subject === contentTypeUid &&\n permission.action === 'plugin::content-manager.explorer.update'\n );\n\n if (!updatePermissions) {\n return false;\n }\n\n return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));\n }, [contentTypeUid, locale, userPermissions]);\n\n const {\n allowedActions: { canUpdate: canUpdateContentType },\n } = useRBAC({\n updateContentType: [\n {\n action: 'plugin::content-manager.explorer.update',\n subject: contentTypeUid,\n },\n ],\n });\n\n if (!canUpdateContentType || !canUpdateEntryForLocale) {\n return null;\n }\n\n return (\n <StyledMenuItem\n /* @ts-expect-error inference isn't working in DS */\n tag={NavLink}\n isLink\n to={{\n pathname: `/content-manager/collection-types/${contentTypeUid}/${documentId}`,\n search: locale && `?plugins[i18n][locale]=${locale}`,\n }}\n >\n <Flex gap={2}>\n <Pencil width=\"1.6rem\" height=\"1.6rem\" />\n <Typography variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-entry',\n defaultMessage: 'Edit entry',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditReleaseItem\n * -----------------------------------------------------------------------------------------------*/\ninterface EditReleaseItemProps {\n releaseId: Release['id'];\n}\n\nconst EditReleaseItem = ({ releaseId }: EditReleaseItemProps) => {\n const { formatMessage } = useIntl();\n\n return (\n /* @ts-expect-error inference isn't working in DS */\n <StyledMenuItem tag={NavLink} isLink to={`/plugins/content-releases/${releaseId}`}>\n <Flex gap={2}>\n <Pencil width=\"1.6rem\" height=\"1.6rem\" />\n <Typography textColor=\"neutral800\" variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-release',\n defaultMessage: 'Edit release',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RootProps {\n children: React.ReactNode;\n hasTriggerBorder?: boolean;\n}\n\nconst Root = ({ children }: RootProps) => {\n const { formatMessage } = useIntl();\n\n const { allowedActions } = useRBAC(PERMISSIONS);\n\n return (\n // A user can access the dropdown if they have permissions to delete a release-action OR update a release\n allowedActions.canDeleteAction || allowedActions.canUpdate ? (\n <Menu.Root>\n <StyledMoreButton variant=\"tertiary\" endIcon={null} paddingLeft=\"7px\" paddingRight=\"7px\">\n <AccessibleIcon\n label={formatMessage({\n id: 'content-releases.content-manager-edit-view.release-action-menu',\n defaultMessage: 'Release action options',\n })}\n >\n <More />\n </AccessibleIcon>\n </StyledMoreButton>\n <Menu.Content top={1} popoverPlacement=\"bottom-end\">\n {children}\n </Menu.Content>\n </Menu.Root>\n ) : null\n );\n};\n\nconst StyledMoreButton = styled(Menu.Trigger)`\n & > span {\n display: flex;\n }\n`;\n\nexport const ReleaseActionMenu = {\n Root,\n EditReleaseItem,\n DeleteReleaseActionItem,\n ReleaseActionEntryLinkItem,\n};\n","import { useRBAC, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { unstable_useDocumentLayout as useDocumentLayout } from '@strapi/content-manager/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { PERMISSIONS } from '../constants';\nimport { useGetReleasesForEntryQuery } from '../services/release';\nimport { getTimezoneOffset } from '../utils/time';\n\nimport { ReleaseActionMenu } from './ReleaseActionMenu';\n\nimport type { PanelComponent, PanelComponentProps } from '@strapi/content-manager/strapi-admin';\n\nconst Panel: PanelComponent = ({\n model,\n document,\n documentId,\n collectionType,\n}: PanelComponentProps) => {\n const [{ query }] = useQueryParams<{ plugins: { i18n: { locale: string } } }>();\n const locale = query.plugins?.i18n?.locale;\n\n const {\n edit: { options },\n } = useDocumentLayout(model);\n const { formatMessage, formatDate, formatTime } = useIntl();\n\n const { allowedActions } = useRBAC(PERMISSIONS);\n const { canRead, canDeleteAction } = allowedActions;\n\n const response = useGetReleasesForEntryQuery(\n {\n contentType: model,\n entryDocumentId: documentId,\n locale,\n hasEntryAttached: true,\n },\n {\n skip: !document,\n }\n );\n const releases = response.data?.data;\n\n const getReleaseColorVariant = (\n actionType: 'publish' | 'unpublish',\n shade: '100' | '200' | '600'\n ) => {\n if (actionType === 'unpublish') {\n return `secondary${shade}`;\n }\n\n return `success${shade}`;\n };\n\n // Project is not EE or contentType does not have draftAndPublish enabled\n if (!window.strapi.isEE || !options?.draftAndPublish || !canRead) {\n return null;\n }\n\n if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {\n return null;\n }\n\n if (!releases || releases.length === 0) {\n return null;\n }\n\n return {\n title: formatMessage({\n id: 'content-releases.plugin.name',\n defaultMessage: 'Releases',\n }),\n content: (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3} width=\"100%\">\n {releases?.map((release) => (\n <Flex\n key={release.id}\n direction=\"column\"\n alignItems=\"start\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor={getReleaseColorVariant(release.actions[0].type, '200')}\n overflow=\"hidden\"\n hasRadius\n >\n <Box\n paddingTop={3}\n paddingBottom={3}\n paddingLeft={4}\n paddingRight={4}\n background={getReleaseColorVariant(release.actions[0].type, '100')}\n width=\"100%\"\n >\n <Typography\n fontSize={1}\n variant=\"pi\"\n textColor={getReleaseColorVariant(release.actions[0].type, '600')}\n >\n {formatMessage(\n {\n id: 'content-releases.content-manager-edit-view.list-releases.title',\n defaultMessage:\n '{isPublish, select, true {Will be published in} other {Will be unpublished in}}',\n },\n { isPublish: release.actions[0].type === 'publish' }\n )}\n </Typography>\n </Box>\n <Flex padding={4} direction=\"column\" gap={2} width=\"100%\" alignItems=\"flex-start\">\n <Typography fontSize={2} fontWeight=\"bold\" variant=\"omega\" textColor=\"neutral700\">\n {release.name}\n </Typography>\n {release.scheduledAt && release.timezone && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-releases.content-manager-edit-view.scheduled.date',\n defaultMessage: '{date} at {time} ({offset})',\n },\n {\n date: formatDate(new Date(release.scheduledAt), {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n timeZone: release.timezone,\n }),\n time: formatTime(new Date(release.scheduledAt), {\n hourCycle: 'h23',\n timeZone: release.timezone,\n }),\n offset: getTimezoneOffset(release.timezone, new Date(release.scheduledAt)),\n }\n )}\n </Typography>\n )}\n {canDeleteAction ? (\n <ReleaseActionMenu.Root hasTriggerBorder>\n <ReleaseActionMenu.EditReleaseItem releaseId={release.id} />\n <ReleaseActionMenu.DeleteReleaseActionItem\n releaseId={release.id}\n actionId={release.actions[0].id}\n />\n </ReleaseActionMenu.Root>\n ) : null}\n </Flex>\n </Flex>\n ))}\n </Flex>\n ),\n };\n};\n\nexport { Panel };\n","export const pluginId = 'content-releases';\n","type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n","import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n DocumentActionComponent,\n BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: StrapiApp) {\n /**\n * Hook that adds the locale column in the Release Details table\n * @constant\n * @type {string}\n */\n app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n if (window.strapi.features.isEnabled('cms-content-releases')) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: PaperPlane,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n permissions: PERMISSIONS.main,\n position: 2,\n });\n\n // Insert the releases container into the CM's sidebar on the Edit View\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n }\n\n // Insert the \"add to release\" action into the CM's Edit View\n if (\n 'addDocumentAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addDocumentAction === 'function'\n ) {\n contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n return actions;\n });\n }\n\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n async Component() {\n const { ProtectedReleasesSettingsPage } = await import('./pages/ReleasesSettingsPage');\n return { default: ProtectedReleasesSettingsPage };\n },\n });\n\n if (\n 'addBulkAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addBulkAction === 'function'\n ) {\n contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n // We want to add this action to just before the delete action all the time\n const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n actions.splice(deleteActionIndex, 0, ReleaseAction);\n return actions;\n });\n }\n\n // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n } else if (\n !window.strapi.features.isEnabled('cms-content-releases') &&\n window.strapi?.flags?.promoteEE\n ) {\n app.addSettingsLink('global', {\n id: pluginId,\n to: '/plugins/purchase-content-releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n async Component() {\n const { PurchaseContentReleases } = await import('./pages/PurchaseContentReleases');\n return { default: PurchaseContentReleases };\n },\n licenseOnly: true,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'content-releases'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["PERMISSIONS","main","action","subject","id","actionParameters","properties","conditions","create","update","delete","createAction","deleteAction","publish","extendInvalidatesTags","endpoint","extraTags","originalInvalidatesTags","invalidatesTags","newInvalidatesTags","result","err","args","meta","originalTags","Object","assign","releaseApi","adminApi","enhanceEndpoints","addTagTypes","endpoints","updateDocument","type","deleteDocument","deleteManyDocuments","discardDocument","createWorkflow","updateWorkflow","deleteWorkflow","injectEndpoints","build","getReleasesForEntry","query","params","url","method","config","providesTags","data","map","getReleases","page","pageSize","filters","releasedAt","$notNull","transformResponse","response","arg","releasedAtValue","isActiveDoneTab","newResponse","activeTab","getRelease","error","getReleaseActions","releaseId","createRelease","mutation","updateRelease","createReleaseAction","body","createManyReleaseActions","updateReleaseAction","actionId","res","onQueryStarted","actionPath","dispatch","queryFulfilled","paramsWithoutActionId","patchResult","util","updateQueryData","draft","key","index","undo","deleteReleaseAction","publishRelease","deleteRelease","getMappedEntriesInReleases","getReleaseSettings","updateReleaseSettings","useGetReleasesQuery","useGetReleasesForEntryQuery","useGetReleaseQuery","useGetReleaseActionsQuery","useCreateReleaseMutation","useCreateReleaseActionMutation","useCreateManyReleaseActionsMutation","useUpdateReleaseMutation","useUpdateReleaseActionMutation","usePublishReleaseMutation","useDeleteReleaseActionMutation","useDeleteReleaseMutation","useGetMappedEntriesInReleasesQuery","useGetReleaseSettingsQuery","useUpdateReleaseSettingsMutation","getBorderLeftRadiusValue","actionType","getBorderRightRadiusValue","FieldWrapper","styled","Field","Root","$actionType","theme","spaces","colors","primary700","danger600","primary100","danger100","neutral700","neutral100","neutral200","neutral600","neutral150","neutral300","ActionOption","selected","handleChange","name","disabled","_jsx","background","borderColor","color","position","cursor","data-checked","data-disabled","_jsxs","Label","VisuallyHidden","Input","checked","onChange","value","ReleaseActionOptions","Flex","RELEASE_ACTION_FORM_SCHEMA","yup","object","shape","string","oneOf","required","INITIAL_VALUES","NoReleases","formatMessage","useIntl","EmptyStateLayout","icon","EmptyDocuments","width","content","defaultMessage","LinkButton","to","pathname","tag","ReactRouterLink","variant","shadow","AddActionToReleaseModal","contentType","documentId","onInputChange","values","useQueryParams","locale","plugins","i18n","entryDocumentId","hasEntryAttached","releases","length","direction","alignItems","gap","Box","paddingBottom","SingleSelect","placeholder","release","SingleSelectOption","e","target","ReleaseActionModalForm","document","model","collectionType","allowedActions","useRBAC","canCreateAction","isLoading","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","handleSubmit","onClose","formik","isFetchError","message","useFormik","initialValues","validationSchema","onSubmit","Error","edit","options","useDocumentLayout","window","strapi","isEE","draftAndPublish","label","PaperPlane","dialog","title","setFieldValue","footer","Modal","Footer","Button","onClick","loading","getContentPermissions","permissions","ReleaseAction","documents","contentPermissions","canPublish","canCreate","releasePermissions","documentIds","doc","releaseActionEntries","notificationMessage","entriesAlreadyInRelease","totalEntries","notification","Formik","Form","Body","useReleasesList","contentTypeUid","listViewData","useTable","state","rows","entry","undefined","skip","mappedEntriesInReleases","addColumnToTableHook","displayedHeaders","layout","searchable","sortable","cellFormatter","props","_","ReleaseListCell","Popover","Trigger","stopPropagation","endIcon","CaretDown","height","Typography","style","maxWidth","textColor","fontWeight","number","Content","ul","padding","Link","href","isExternal","getTimezoneOffset","timezone","date","offsetPart","Intl","DateTimeFormat","timeZone","timeZoneName","formatToParts","find","part","offset","utcOffset","replace","includes","getTimezones","selectedDate","timezoneList","supportedValuesOf","systemTimezone","split","resolvedOptions","StyledMenuItem","Menu","Item","$variant","neutral800","DeleteReleaseActionItem","canDeleteAction","handleDeleteAction","onSelect","Cross","ReleaseActionEntryLinkItem","userPermissions","useAuth","canUpdateEntryForLocale","React","useMemo","updatePermissions","permission","Boolean","locales","canUpdate","canUpdateContentType","updateContentType","NavLink","isLink","search","Pencil","EditReleaseItem","children","StyledMoreButton","paddingLeft","paddingRight","AccessibleIcon","More","top","popoverPlacement","ReleaseActionMenu","Panel","formatDate","formatTime","canRead","getReleaseColorVariant","shade","borderWidth","borderStyle","actions","overflow","hasRadius","paddingTop","fontSize","isPublish","scheduledAt","Date","day","month","year","time","hourCycle","hasTriggerBorder","pluginId","prefixPluginTranslations","trad","keys","reduce","acc","current","admin","register","app","createHook","features","isEnabled","addMenuLink","intlLabel","Component","then","mod","default","App","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","indexOfDeleteAction","findIndex","splice","addSettingsLink","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","registerHook","flags","promoteEE","PurchaseContentReleases","licenseOnly","registerTrads","importedTrads","Promise","all","catch","resolve"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  require('@strapi/icons');
4
- var index = require('./chunks/index-BZaFIG8z.js');
4
+ var index = require('./chunks/index-vjWrvGN3.js');
5
5
  require('react/jsx-runtime');
6
6
  require('react');
7
7
  require('@strapi/admin/strapi-admin');
@@ -1,5 +1,5 @@
1
1
  import '@strapi/icons';
2
- export { m as default } from './chunks/index-DEy-8PzZ.mjs';
2
+ export { m as default } from './chunks/index-DBUaMD56.mjs';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
5
5
  import '@strapi/admin/strapi-admin';