/** * Copyright (c) Paymium. * * This source code is licensed under the MIT license found in the * LICENSE file in the root of this projects source tree. */ import { forwardRef, type ComponentType, useEffect, useRef } from 'react'; import type { RequiredAccessibilityProps } from '../types'; import { useContext } from './context'; import { composeEventHandlers, composeRefs } from '@crossed/core'; export const createSelectTrigger = (StyledRoot: ComponentType

) => // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore forwardRef>((props, ref) => { const { id, open, setOpen } = useContext(); const refInter = useRef(null); const openRef = useRef(open); useEffect(() => { if (!open && openRef.current) { refInter.current?.focus?.(); } }, [open]); useEffect(() => { openRef.current = open; }, [open]); return ( { setOpen(!open); })} onKeyDown={composeEventHandlers((props as any).onKeyDown, (e: any) => { e.preventDefault(); switch (e.code) { case 'ArrowDown': case 'ArrowUp': case 'Space': case 'Enter': setOpen(true); break; } })} ref={composeRefs(ref, refInter)} /> ); });