@base-ui-components/react
Version:
Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.
45 lines (44 loc) • 1.08 kB
JavaScript
'use client';
import * as React from 'react';
import { useMenuItem } from '../item/useMenuItem.js';
import { useForkRef } from '../../utils/useForkRef.js';
export function useMenuSubmenuTrigger(parameters) {
const {
id,
highlighted,
disabled,
ref: externalRef,
menuEvents,
setTriggerElement,
allowMouseUpTriggerRef,
typingRef
} = parameters;
const {
getRootProps: getMenuItemProps,
rootRef: menuItemRef
} = useMenuItem({
closeOnClick: false,
disabled,
highlighted,
id,
menuEvents,
ref: externalRef,
allowMouseUpTriggerRef,
typingRef
});
const menuTriggerRef = useForkRef(menuItemRef, setTriggerElement);
const getRootProps = React.useCallback(externalProps => {
return {
...getMenuItemProps({
'aria-haspopup': 'menu',
...externalProps
}),
ref: menuTriggerRef
};
}, [getMenuItemProps, menuTriggerRef]);
return React.useMemo(() => ({
getRootProps,
rootRef: menuTriggerRef
}), [getRootProps, menuTriggerRef]);
}
export let useSubmenuTrigger;