fix: can not close menu in all page (#4232)

Co-authored-by: Alex Yang <himself65@outlook.com>
This commit is contained in:
Qi
2023-09-07 12:26:16 +08:00
committed by GitHub
parent 1d1fb6ca31
commit 798238df4d
2 changed files with 33 additions and 21 deletions
@@ -52,3 +52,7 @@ export const dropdownBtn = style({
}, },
}, },
}); });
export const menuContent = style({
backgroundColor: 'var(--affine-background-overlay-panel-color)',
});
@@ -1,11 +1,11 @@
import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { useAFFiNEI18N } from '@affine/i18n/hooks';
import { EdgelessIcon, ImportIcon, PageIcon } from '@blocksuite/icons'; import { EdgelessIcon, ImportIcon, PageIcon } from '@blocksuite/icons';
import { Menu } from '@toeverything/components/menu'; import { Menu } from '@toeverything/components/menu';
import { useState } from 'react'; import { useCallback, useState } from 'react';
// import { Menu } from '../../../ui/menu/menu';
import { BlockCard } from '../../card/block-card'; import { BlockCard } from '../../card/block-card';
import { DropdownButton } from './dropdown'; import { DropdownButton } from './dropdown';
import { menuContent } from './dropdown.css';
type NewPageButtonProps = { type NewPageButtonProps = {
createNewPage: () => void; createNewPage: () => void;
@@ -63,32 +63,40 @@ export const NewPageButton = ({
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
return ( return (
<Menu <Menu
items={
<CreateNewPagePopup
createNewPage={useCallback(() => {
createNewPage();
setOpen(false);
}, [createNewPage])}
createNewEdgeless={useCallback(() => {
createNewEdgeless();
setOpen(false);
}, [createNewEdgeless])}
importFile={useCallback(() => {
importFile();
setOpen(false);
}, [importFile])}
/>
}
rootOptions={{ rootOptions={{
open, open,
}} }}
items={ contentOptions={{
<CreateNewPagePopup className: menuContent,
createNewPage={() => { align: 'end',
createNewPage(); hideWhenDetached: true,
setOpen(false); onInteractOutside: useCallback(() => {
}} setOpen(false);
createNewEdgeless={() => { }, []),
createNewEdgeless(); }}
setOpen(false);
}}
importFile={() => {
importFile();
setOpen(false);
}}
/>
}
> >
<DropdownButton <DropdownButton
onClick={() => { onClick={useCallback(() => {
createNewPage(); createNewPage();
setOpen(false); setOpen(false);
}} }, [createNewPage])}
onClickDropDown={() => setOpen(!open)} onClickDropDown={useCallback(() => setOpen(open => !open), [])}
> >
{t['New Page']()} {t['New Page']()}
</DropdownButton> </DropdownButton>