@@ -8,6 +8,7 @@ import { useFavorite } from '@affine/core/components/blocksuite/block-suite-head
88import { IsFavoriteIcon } from '@affine/core/components/pure/icons' ;
99import { track } from '@affine/core/mixpanel' ;
1010import { EditorService } from '@affine/core/modules/editor' ;
11+ import { ViewService } from '@affine/core/modules/workbench/services/view' ;
1112import { EditorOutlinePanel } from '@affine/core/pages/workspace/detail-page/tabs/outline' ;
1213import { preventDefault } from '@affine/core/utils' ;
1314import { useI18n } from '@affine/i18n' ;
@@ -19,7 +20,7 @@ import {
1920 TocIcon ,
2021} from '@blocksuite/icons/rc' ;
2122import { useLiveData , useService } from '@toeverything/infra' ;
22- import { useCallback } from 'react' ;
23+ import { useCallback , useEffect , useState } from 'react' ;
2324
2425import * as styles from './page-header-more-button.css' ;
2526import { 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