diff --git a/src/frontend/apps/desk/src/features/menu/Menu.tsx b/src/frontend/apps/desk/src/features/menu/Menu.tsx index 18a36da..79f1eda 100644 --- a/src/frontend/apps/desk/src/features/menu/Menu.tsx +++ b/src/frontend/apps/desk/src/features/menu/Menu.tsx @@ -23,7 +23,7 @@ export const Menu = () => { $height="100%" $justify="space-between" > - + diff --git a/src/frontend/apps/desk/src/features/teams/__tests__/PanelTeams.test.tsx b/src/frontend/apps/desk/src/features/teams/__tests__/PanelTeams.test.tsx index 9294c73..585ac30 100644 --- a/src/frontend/apps/desk/src/features/teams/__tests__/PanelTeams.test.tsx +++ b/src/frontend/apps/desk/src/features/teams/__tests__/PanelTeams.test.tsx @@ -1,7 +1,9 @@ import '@testing-library/jest-dom'; import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import fetchMock from 'fetch-mock'; +import { Panel } from '@/features/teams'; import { AppWrapper } from '@/tests/utils'; import { TeamList } from '../components/Panel/TeamList'; @@ -127,4 +129,46 @@ describe('PanelTeams', () => { ), ).toBeInTheDocument(); }); + + it('renders with team panel open', async () => { + fetchMock.mock(`/api/teams/?page=1&ordering=-created_at`, { + count: 1, + results: [], + }); + + render(, { wrapper: AppWrapper }); + + expect( + screen.getByRole('button', { name: 'Close the teams panel' }), + ).toBeVisible(); + + expect(await screen.findByText('Recents')).toBeVisible(); + }); + + it('closes and opens the team panel', async () => { + fetchMock.mock(`/api/teams/?page=1&ordering=-created_at`, { + count: 1, + results: [], + }); + + render(, { wrapper: AppWrapper }); + + expect(await screen.findByText('Recents')).toBeVisible(); + + await userEvent.click( + screen.getByRole('button', { + name: 'Close the teams panel', + }), + ); + + expect(await screen.findByText('Recents')).not.toBeVisible(); + + await userEvent.click( + screen.getByRole('button', { + name: 'Open the teams panel', + }), + ); + + expect(await screen.findByText('Recents')).toBeVisible(); + }); }); diff --git a/src/frontend/apps/desk/src/features/teams/assets/icon-open-close.svg b/src/frontend/apps/desk/src/features/teams/assets/icon-open-close.svg new file mode 100644 index 0000000..c87764a --- /dev/null +++ b/src/frontend/apps/desk/src/features/teams/assets/icon-open-close.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/frontend/apps/desk/src/features/teams/components/Panel/Panel.tsx b/src/frontend/apps/desk/src/features/teams/components/Panel/Panel.tsx index 99117a0..f519cfe 100644 --- a/src/frontend/apps/desk/src/features/teams/components/Panel/Panel.tsx +++ b/src/frontend/apps/desk/src/features/teams/components/Panel/Panel.tsx @@ -1,8 +1,9 @@ -import React from 'react'; +import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { Box, Text } from '@/components'; +import { Box, BoxButton, Text } from '@/components'; import { useCunninghamTheme } from '@/cunningham'; +import IconOpenClose from '@/features/teams/assets/icon-open-close.svg'; import { PanelActions } from './PanelActions'; import { TeamList } from './TeamList'; @@ -11,32 +12,69 @@ export const Panel = () => { const { t } = useTranslation(); const { colorsTokens } = useCunninghamTheme(); + const [isOpen, setIsOpen] = useState(true); + + const closedOverridingStyles = !isOpen && { + $width: '0', + $maxWidth: '0', + $minWidth: '0', + }; + + const transition = 'all 0.5s ease-in-out'; + return ( - setIsOpen(!isOpen)} + > + + + - - {t('Recents')} - - + + + {t('Recents')} + + + + - ); }; diff --git a/src/frontend/apps/desk/src/features/teams/components/Panel/TeamItem.tsx b/src/frontend/apps/desk/src/features/teams/components/Panel/TeamItem.tsx index b922208..81c3dfc 100644 --- a/src/frontend/apps/desk/src/features/teams/components/Panel/TeamItem.tsx +++ b/src/frontend/apps/desk/src/features/teams/components/Panel/TeamItem.tsx @@ -88,6 +88,9 @@ export const TeamItem = ({ team }: TeamProps) => { {team.name} diff --git a/src/frontend/apps/desk/src/features/teams/components/Panel/TeamList.tsx b/src/frontend/apps/desk/src/features/teams/components/Panel/TeamList.tsx index fd14b2e..c042b08 100644 --- a/src/frontend/apps/desk/src/features/teams/components/Panel/TeamList.tsx +++ b/src/frontend/apps/desk/src/features/teams/components/Panel/TeamList.tsx @@ -73,7 +73,7 @@ export const TeamList = () => { }, [data?.pages]); return ( - +