import * as React from 'react'; import {SecondaryButton} from '@workday/canvas-kit-react/button'; import { composeHooks, createElemPropsHook, createSubcomponent, } from '@workday/canvas-kit-react/common'; import {usePopupTarget, usePopupTargetContext} from '@workday/canvas-kit-react/popup'; import {useMenuModel} from './useMenuModel'; export interface MenuTargetProps { children?: React.ReactNode; } const useMenuTargetBase = createElemPropsHook(useMenuModel)(model => { return { id: model.state.id, 'aria-haspopup': 'true', 'aria-expanded': model.state.visibility === 'visible', onKeyDown(event: React.KeyboardEvent) { // eslint-disable-next-line default-case switch (event.key) { case 'ArrowDown': case 'ArrowUp': // this follow the keys for modern browsers https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values#navigation_keys model.events.show(event); } }, } as const; }); export const useMenuTarget = composeHooks(useMenuTargetBase, usePopupTarget); export const useMenuTargetContext = composeHooks(useMenuTargetBase, usePopupTargetContext); export const MenuTarget = createSubcomponent(SecondaryButton)({ displayName: 'Menu.Target', modelHook: useMenuModel, elemPropsHook: useMenuTarget, })(({children, ...elemProps}, Element) => { return {children}; });