Skip to content

Commit df34e2c

Browse files
committed
fix(mobile): close menu when detail page navigate away (#8027)
1 parent 592997b commit df34e2c

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

packages/frontend/component/src/ui/menu/mobile/root.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useI18n } from '@affine/i18n';
12
import { ArrowLeftSmallIcon } from '@blocksuite/icons/rc';
23
import { Slot } from '@radix-ui/react-slot';
34
import clsx from 'clsx';
@@ -48,10 +49,13 @@ export const MobileMenu = ({
4849
[onPointerDownOutside, rootOptions]
4950
);
5051

51-
const onItemClick = useCallback((e: any) => {
52-
e.preventDefault();
53-
setOpen(prev => !prev);
54-
}, []);
52+
const onItemClick = useCallback(
53+
(e: any) => {
54+
e.preventDefault();
55+
onOpenChange(!open);
56+
},
57+
[onOpenChange, open]
58+
);
5559

5660
// dynamic height for slider
5761
useEffect(() => {
@@ -78,6 +82,8 @@ export const MobileMenu = ({
7882
};
7983
}, [activeIndex, finalOpen]);
8084

85+
const t = useI18n();
86+
8187
/**
8288
* For cascading menu usage
8389
* ```tsx
@@ -139,7 +145,7 @@ export const MobileMenu = ({
139145
onClick={() => setSubMenus(prev => prev.slice(0, index))}
140146
prefixStyle={{ width: 20, height: 20 }}
141147
>
142-
Back
148+
{t['com.affine.backButton']()}
143149
</Button>
144150

145151
{sub.items}

packages/frontend/mobile/src/pages/workspace/detail/page-header-more-button.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { useFavorite } from '@affine/core/components/blocksuite/block-suite-head
88
import { IsFavoriteIcon } from '@affine/core/components/pure/icons';
99
import { track } from '@affine/core/mixpanel';
1010
import { EditorService } from '@affine/core/modules/editor';
11+
import { ViewService } from '@affine/core/modules/workbench/services/view';
1112
import { EditorOutlinePanel } from '@affine/core/pages/workspace/detail-page/tabs/outline';
1213
import { preventDefault } from '@affine/core/utils';
1314
import { useI18n } from '@affine/i18n';
@@ -19,7 +20,7 @@ import {
1920
TocIcon,
2021
} from '@blocksuite/icons/rc';
2122
import { useLiveData, useService } from '@toeverything/infra';
22-
import { useCallback } from 'react';
23+
import { useCallback, useEffect, useState } from 'react';
2324

2425
import * as styles from './page-header-more-button.css';
2526
import { DocInfoSheet } from './sheets/doc-info';
@@ -34,6 +35,9 @@ export const PageHeaderMenuButton = ({ docId }: PageMenuProps) => {
3435
const editorService = useService(EditorService);
3536
const editorContainer = useLiveData(editorService.editor.editorContainer$);
3637

38+
const [open, setOpen] = useState(false);
39+
const location = useLiveData(useService(ViewService).view.location$);
40+
3741
const isInTrash = useLiveData(
3842
editorService.editor.doc.meta$.map(meta => meta.trash)
3943
);
@@ -57,8 +61,14 @@ export const PageHeaderMenuButton = ({ docId }: PageMenuProps) => {
5761
if (open) {
5862
track.$.header.docOptions.open();
5963
}
64+
setOpen(open);
6065
}, []);
6166

67+
useEffect(() => {
68+
// when the location is changed, close the menu
69+
handleMenuOpenChange(false);
70+
}, [handleMenuOpenChange, location.pathname]);
71+
6272
const handleToggleFavorite = useCallback(() => {
6373
track.$.header.docOptions.toggleFavorite();
6474
toggleFavorite();
@@ -117,6 +127,7 @@ export const PageHeaderMenuButton = ({ docId }: PageMenuProps) => {
117127
align: 'center',
118128
}}
119129
rootOptions={{
130+
open,
120131
onOpenChange: handleMenuOpenChange,
121132
}}
122133
>

0 commit comments

Comments
 (0)