@linzjs/step-ag-grid
Version:
[](https://github.com/semantic-release/semantic-release) > Reusable [ag-grid](https://www.ag-grid.com/) component for LINZ / Toitū te whenua.
19 lines (14 loc) • 705 B
text/typescript
import { useState } from 'react';
import { ControlledMenuProps, FocusPosition, MenuStateOptions } from '../types';
import { useMenuState } from './useMenuState';
export const useMenuStateAndFocus = (
options: MenuStateOptions,
): [any, (open?: boolean) => void, (position?: FocusPosition, alwaysUpdate?: boolean) => void] => {
const [menuProps, toggleMenu] = useMenuState(options);
const [menuItemFocus, setMenuItemFocus] = useState<ControlledMenuProps['menuItemFocus']>();
const openMenu = (position?: FocusPosition, alwaysUpdate?: boolean) => {
setMenuItemFocus({ position, alwaysUpdate });
toggleMenu(true);
};
return [{ menuItemFocus, ...menuProps }, toggleMenu, openMenu];
};