fix(content-releases): CM add Release add content when there are no releases (#19096)

* add the message when there are not releases in the Add to releases modal with a button to the releases list page

* fix review comments

* apply review comments
This commit is contained in:
Simone 2023-12-22 11:09:40 +01:00 committed by GitHub
parent b3e0f9335c
commit 1832540151
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 72 additions and 36 deletions

View File

@ -14,8 +14,10 @@ import {
Typography,
ModalFooter,
} from '@strapi/design-system';
import { LinkButton } from '@strapi/design-system/v2';
import {
CheckPermissions,
NoContent,
useAPIErrorHandler,
useCMEditViewDataManager,
useNotification,
@ -24,7 +26,7 @@ import { Plus } from '@strapi/icons';
import { isAxiosError } from 'axios';
import { Formik, Form } from 'formik';
import { useIntl } from 'react-intl';
import { useParams } from 'react-router-dom';
import { useParams, Link as ReactRouterLink } from 'react-router-dom';
import * as yup from 'yup';
import { CreateReleaseAction } from '../../../shared/contracts/release-actions';
@ -60,6 +62,34 @@ interface AddActionToReleaseModalProps {
entryId: GetContentTypeEntryReleases.Request['query']['entryId'];
}
const NoReleases = () => {
const { formatMessage } = useIntl();
return (
<NoContent
content={{
id: 'content-releases.content-manager-edit-view.add-to-release.no-releases-message',
defaultMessage:
'No available releases. Open the list of releases and create a new one from there.',
}}
action={
<LinkButton
// @ts-expect-error - types are not inferred correctly through the as prop.
to={{
pathname: '/plugins/content-releases',
}}
as={ReactRouterLink}
variant="secondary"
>
{formatMessage({
id: 'content-releases.content-manager-edit-view.add-to-release.redirect-button',
defaultMessage: 'Open the list of releases',
})}
</LinkButton>
}
/>
);
};
const AddActionToReleaseModal = ({
handleClose,
contentTypeUid,
@ -138,42 +168,46 @@ const AddActionToReleaseModal = ({
{({ values, setFieldValue }) => {
return (
<Form>
<ModalBody>
<Flex direction="column" alignItems="stretch" gap={2}>
<Box paddingBottom={6}>
<SingleSelect
required
label={formatMessage({
id: 'content-releases.content-manager-edit-view.add-to-release.select-label',
defaultMessage: 'Select a release',
{releases?.length === 0 ? (
<NoReleases />
) : (
<ModalBody>
<Flex direction="column" alignItems="stretch" gap={2}>
<Box paddingBottom={6}>
<SingleSelect
required
label={formatMessage({
id: 'content-releases.content-manager-edit-view.add-to-release.select-label',
defaultMessage: 'Select a release',
})}
placeholder={formatMessage({
id: 'content-releases.content-manager-edit-view.add-to-release.select-placeholder',
defaultMessage: 'Select',
})}
onChange={(value) => setFieldValue('releaseId', value)}
value={values.releaseId}
>
{releases?.map((release) => (
<SingleSelectOption key={release.id} value={release.id}>
{release.name}
</SingleSelectOption>
))}
</SingleSelect>
</Box>
<FieldLabel>
{formatMessage({
id: 'content-releases.content-manager-edit-view.add-to-release.action-type-label',
defaultMessage: 'What do you want to do with this entry?',
})}
placeholder={formatMessage({
id: 'content-releases.content-manager-edit-view.add-to-release.select-placeholder',
defaultMessage: 'Select',
})}
onChange={(value) => setFieldValue('releaseId', value)}
value={values.releaseId}
>
{releases?.map((release) => (
<SingleSelectOption key={release.id} value={release.id}>
{release.name}
</SingleSelectOption>
))}
</SingleSelect>
</Box>
<FieldLabel>
{formatMessage({
id: 'content-releases.content-manager-edit-view.add-to-release.action-type-label',
defaultMessage: 'What do you want to do with this entry?',
})}
</FieldLabel>
<ReleaseActionOptions
selected={values.type}
handleChange={(e) => setFieldValue('type', e.target.value)}
name="type"
/>
</Flex>
</ModalBody>
</FieldLabel>
<ReleaseActionOptions
selected={values.type}
handleChange={(e) => setFieldValue('type', e.target.value)}
name="type"
/>
</Flex>
</ModalBody>
)}
<ModalFooter
startActions={
<Button onClick={handleClose} variant="tertiary" name="cancel">

View File

@ -6,6 +6,8 @@
"content-manager-edit-view.add-to-release.continue-button": "Continue",
"content-manager-edit-view.add-to-release": "Add to release",
"content-manager-edit-view.add-to-release.notification.success": "Entry added to release",
"content-manager-edit-view.add-to-release.no-releases-message": "No available releases. Open the list of releases and create a new one from there.",
"content-manager-edit-view.add-to-release.redirect-button": "Open the list of releases",
"content-manager-edit-view.list-releases.title": "{isPublish, select, true {Will be published in} other {Will be unpublished in}}",
"content-manager-edit-view.remove-from-release": "Remove from release",
"content-manager-edit-view.remove-from-release.notification.success": "Entry removed from release",