feat(core-dialogs): CB-2097 add menu state ref

This commit is contained in:
Wroud
2022-06-15 01:50:46 +03:00
parent 1193891cf1
commit 27c424712e
2 changed files with 10 additions and 1 deletions
@@ -24,12 +24,15 @@ import type {
import { MenuPanelItem } from './MenuPanelItem';
import { menuPanelStyles } from './menuPanelStyles';
export type MenuState = MenuStateReturn;
/**
* MenuTrigger
*/
interface IMenuTriggerBaseProps extends Omit<ButtonHTMLAttributes<any>, 'style'> {
style?: ComponentStyle;
menuRef?: React.RefObject<MenuState | undefined>;
disclosure?: boolean;
placement?: MenuInitialState['placement'];
modal?: boolean;
@@ -50,6 +53,7 @@ interface IMenuTriggerProps extends IMenuTriggerBaseProps {
export const MenuTrigger = React.forwardRef<ButtonHTMLAttributes<any>, IMenuTriggerProps | IMenuTriggerLazyProps>(function MenuTrigger({
panel,
menuRef,
getPanel,
disclosure,
children,
@@ -65,6 +69,11 @@ export const MenuTrigger = React.forwardRef<ButtonHTMLAttributes<any>, IMenuTrig
const menu = useMenuState({ modal, placement, visible, rtl });
const styles = useStyles(menuPanelStyles, style);
if (menuRef) {
//@ts-expect-error ref mutation
menuRef.current = menu;
}
const handleItemClose = useCallback(() => {
menu.hide();
}, [menu.hide]);
+1 -1
View File
@@ -6,7 +6,7 @@ export * from './CommonDialog/RenameDialog';
export * from './CommonDialog/DialogsPortal';
export * from './Menu/IMenuPanel';
export { MenuTrigger } from './Menu/MenuPanel/MenuTrigger';
export { MenuTrigger, type MenuState } from './Menu/MenuPanel/MenuTrigger';
export * from './Menu/StaticMenu/StaticMenu';
export * from './Menu/models/ComputedContextMenuModel';