From 6874df66f035325a56578b060d6904facb6f850f Mon Sep 17 00:00:00 2001 From: Jaanus Sellin Date: Thu, 13 Apr 2023 15:33:37 +0300 Subject: [PATCH] feat: cr overview title (#3516) --- .../ChangeRequestHeader.tsx | 24 ++++++++---- ...equestTitle.tsx => ChangeRequestTitle.tsx} | 39 +++++++++++++------ .../EnvironmentChangeRequest.tsx | 21 ++++++++-- .../EnvironmentChangeRequestTitle.test.tsx | 25 ++++++++---- 4 files changed, 79 insertions(+), 30 deletions(-) rename frontend/src/component/changeRequest/ChangeRequestSidebar/EnvironmentChangeRequest/{EnvironmentChangeRequestTitle.tsx => ChangeRequestTitle.tsx} (72%) diff --git a/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestHeader/ChangeRequestHeader.tsx b/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestHeader/ChangeRequestHeader.tsx index 70d1bcfd8c..fcb84e9de9 100644 --- a/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestHeader/ChangeRequestHeader.tsx +++ b/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestHeader/ChangeRequestHeader.tsx @@ -1,32 +1,42 @@ import { Box } from '@mui/material'; -import { FC } from 'react'; +import React, { FC, useState } from 'react'; import { Typography, Tooltip } from '@mui/material'; import TimeAgo from 'react-timeago'; import { IChangeRequest } from 'component/changeRequest/changeRequest.types'; import { ChangeRequestStatusBadge } from 'component/changeRequest/ChangeRequestStatusBadge/ChangeRequestStatusBadge'; import { StyledPaper, - StyledContainer, StyledHeader, StyledInnerContainer, StyledAvatar, StyledCard, } from './ChangeRequestHeader.styles'; import { Separator } from '../../ChangeRequestSidebar/ChangeRequestSidebar'; +import { ChangeRequestTitle } from '../../ChangeRequestSidebar/EnvironmentChangeRequest/ChangeRequestTitle'; export const ChangeRequestHeader: FC<{ changeRequest: IChangeRequest }> = ({ changeRequest, }) => { + const [title, setTitle] = useState(changeRequest.title); return ( - + - Change request #{changeRequest.id} + {title} - - + - + + ({ + margin: theme.spacing('auto', 0, 'auto', 2), + })} + > Created{' '} ({ width: '100%', '& > div': { width: '100%' }, justifyContent: 'space-between', + marginBottom: theme.spacing(1), })); -export const EnvironmentChangeRequestTitle: FC<{ +export const StyledHeader = styled(Typography)(({ theme }) => ({ + display: 'flex', + alignItems: 'center', + marginRight: theme.spacing(1), + fontSize: theme.fontSizes.mainHeader, +})); + +export const ChangeRequestTitle: FC<{ environmentChangeRequest: IChangeRequest; -}> = ({ environmentChangeRequest }) => { - const [title, setTitle] = useState(environmentChangeRequest.title); + title: string; + setTitle: React.Dispatch>; +}> = ({ environmentChangeRequest, title, setTitle, children }) => { const [isDisabled, setIsDisabled] = useState(true); const { updateTitle } = useChangeRequestApi(); const { setToastData, setToastApiError } = useToast(); @@ -46,13 +55,19 @@ export const EnvironmentChangeRequestTitle: FC<{ }; return ( - setTitle(e.target.value)} - disabled={isDisabled} + setTitle(e.target.value)} + disabled={isDisabled} + /> + } /> ({ marginLeft: theme.spacing(4) })} + sx={theme => ({ marginLeft: theme.spacing(2) })} onClick={() => saveTitle()} > Save diff --git a/frontend/src/component/changeRequest/ChangeRequestSidebar/EnvironmentChangeRequest/EnvironmentChangeRequest.tsx b/frontend/src/component/changeRequest/ChangeRequestSidebar/EnvironmentChangeRequest/EnvironmentChangeRequest.tsx index a3edf1b9df..f664c2825a 100644 --- a/frontend/src/component/changeRequest/ChangeRequestSidebar/EnvironmentChangeRequest/EnvironmentChangeRequest.tsx +++ b/frontend/src/component/changeRequest/ChangeRequestSidebar/EnvironmentChangeRequest/EnvironmentChangeRequest.tsx @@ -21,7 +21,8 @@ import { import { CloudCircle } from '@mui/icons-material'; import { AddCommentField } from '../../ChangeRequestOverview/ChangeRequestComments/AddCommentField'; import { useAuthUser } from 'hooks/api/getters/useAuth/useAuthUser'; -import { EnvironmentChangeRequestTitle } from './EnvironmentChangeRequestTitle'; +import Input from 'component/common/Input/Input'; +import { ChangeRequestTitle } from './ChangeRequestTitle'; const SubmitChangeRequestButton: FC<{ onClick: () => void; count: number }> = ({ onClick, @@ -43,7 +44,7 @@ const ChangeRequestHeader = styled(Box)(({ theme }) => ({ })); const ChangeRequestContent = styled(Box)(({ theme }) => ({ - padding: theme.spacing(0, 3, 3, 3), + padding: theme.spacing(3, 3, 3, 3), border: '2px solid', mb: 5, borderColor: theme.palette.divider, @@ -62,6 +63,7 @@ export const EnvironmentChangeRequest: FC<{ const navigate = useNavigate(); const [commentText, setCommentText] = useState(''); const { user } = useAuthUser(); + const [title, setTitle] = useState(environmentChangeRequest.title); return ( @@ -94,9 +96,20 @@ export const EnvironmentChangeRequest: FC<{ - + title={title} + setTitle={setTitle} + > + {}} + disabled={true} + /> + diff --git a/frontend/src/component/changeRequest/ChangeRequestSidebar/EnvironmentChangeRequest/EnvironmentChangeRequestTitle.test.tsx b/frontend/src/component/changeRequest/ChangeRequestSidebar/EnvironmentChangeRequest/EnvironmentChangeRequestTitle.test.tsx index 6ba3518dec..4ae5bb78ae 100644 --- a/frontend/src/component/changeRequest/ChangeRequestSidebar/EnvironmentChangeRequest/EnvironmentChangeRequestTitle.test.tsx +++ b/frontend/src/component/changeRequest/ChangeRequestSidebar/EnvironmentChangeRequest/EnvironmentChangeRequestTitle.test.tsx @@ -1,6 +1,6 @@ -import React from 'react'; +import React, { FC, useState } from 'react'; import { screen } from '@testing-library/react'; -import { EnvironmentChangeRequestTitle } from './EnvironmentChangeRequestTitle'; +import { ChangeRequestTitle } from './ChangeRequestTitle'; import { ChangeRequestState } from '../../changeRequest.types'; import userEvent from '@testing-library/user-event'; import { testServerRoute, testServerSetup } from '../../../../utils/testServer'; @@ -32,14 +32,25 @@ testServerRoute( testServerRoute(server, '/api/admin/ui-config', {}); +const TestComponent: FC = () => { + const [title, setTitle] = useState(changeRequest.title); + + return ( + +

{title}

+
+ ); +}; + test('can edit and save title', async () => { const user = userEvent.setup(); - render( - + ); @@ -53,6 +64,6 @@ test('can edit and save title', async () => { const saveButton = await screen.findByText('Save'); await user.click(saveButton); - const newTitle = await screen.findByDisplayValue('New title'); + const newTitle = await screen.findByText('New title'); expect(newTitle).toBeInTheDocument(); });