Skip to content

Commit ddd93ab

Browse files
committed
🐛(frontend) close panel when unmount
When the panel is unmounted, the summary and version panel should be closed.
1 parent 85044fd commit ddd93ab

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

src/frontend/apps/e2e/__tests__/app-impress/doc-version.spec.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,13 @@ test.describe('Doc Version', () => {
4545
await expect(page.getByText('Hello World')).toBeHidden();
4646
await expect(page.getByText('It will create a version')).toBeVisible();
4747

48+
await page.getByLabel('Open the document options').click();
49+
await page
50+
.getByRole('button', {
51+
name: 'Version history',
52+
})
53+
.click();
54+
4855
await expect(panel.getByText('Current version')).toBeVisible();
4956
expect(await panel.locator('li').count()).toBe(2);
5057

src/frontend/apps/impress/src/features/docs/doc-summary/components/Summary.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import React, { useCallback, useState } from 'react';
1+
import React, { useCallback, useEffect, useState } from 'react';
22
import { useTranslation } from 'react-i18next';
33

44
import { Box, BoxButton, Text } from '@/components';
55

66
import { useDocStore } from '../../doc-editor';
77
import { Doc } from '../../doc-management';
8+
import { useDocSummaryStore } from '../stores';
89

910
interface SummaryProps {
1011
doc: Doc;
@@ -14,13 +15,20 @@ export const Summary = ({ doc }: SummaryProps) => {
1415
const { docsStore } = useDocStore();
1516
const { t } = useTranslation();
1617

17-
const editor = docsStore?.[doc.id].editor;
18+
const editor = docsStore?.[doc.id]?.editor;
1819
const headingFiltering = useCallback(
1920
() => editor?.document.filter((block) => block.type === 'heading'),
2021
[editor?.document],
2122
);
2223

2324
const [headings, setHeadings] = useState(headingFiltering());
25+
const { setIsPanelSummaryOpen } = useDocSummaryStore();
26+
27+
useEffect(() => {
28+
return () => {
29+
setIsPanelSummaryOpen(false);
30+
};
31+
}, [setIsPanelSummaryOpen]);
2432

2533
if (!editor) {
2634
return null;
@@ -64,7 +72,7 @@ export const Summary = ({ doc }: SummaryProps) => {
6472
<BoxButton
6573
onClick={() => {
6674
editor.focus();
67-
document.querySelector(`[data-id="initialBlockId"]`)?.scrollIntoView({
75+
document.querySelector(`.bn-editor`)?.scrollIntoView({
6876
behavior: 'smooth',
6977
block: 'start',
7078
});

src/frontend/apps/impress/src/features/docs/doc-versioning/components/VersionList.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Loader } from '@openfun/cunningham-react';
22
import { useRouter } from 'next/router';
3-
import React, { useMemo, useRef } from 'react';
3+
import React, { useEffect, useMemo, useRef } from 'react';
44
import { useTranslation } from 'react-i18next';
55

66
import { APIError } from '@/api';
@@ -9,6 +9,7 @@ import { Doc } from '@/features/docs/doc-management';
99
import { useDate } from '@/hook';
1010

1111
import { useDocVersionsInfiniteQuery } from '../api/useDocVersions';
12+
import { useDocVersionStore } from '../stores';
1213
import { Versions } from '../types';
1314

1415
import { VersionItem } from './VersionItem';
@@ -104,6 +105,13 @@ export const VersionList = ({ doc }: VersionListProps) => {
104105
return acc.concat(page.results);
105106
}, [] as Versions[]);
106107
}, [data?.pages]);
108+
const { setIsPanelVersionOpen } = useDocVersionStore();
109+
110+
useEffect(() => {
111+
return () => {
112+
setIsPanelVersionOpen(false);
113+
};
114+
}, [setIsPanelVersionOpen]);
107115

108116
return (
109117
<Box $css="overflow-y: auto; overflow-x: hidden;" ref={containerRef}>

0 commit comments

Comments
 (0)