monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
3 lines (2 loc) • 1.77 kB
JavaScript
import e,{forwardRef as t,useRef as i,useCallback as n}from"react";import s from"../../../hooks/useMergeRef.js";import{GridKeyboardNavigationContext as o}from"../../GridKeyboardNavigationContext/GridKeyboardNavigationContext.js";import{useMenuGridItemNavContext as r}from"./useMenuGridItemNavContext.js";import{useFocusGridItemByActiveStatus as a}from"./useFocusGridItemByActiveStatus.js";import{useFocusWithin as d}from"../../../hooks/useFocusWithin.js";import{getTestId as l,ComponentDefaultTestId as c}from"../../../tests/testIds.js";var u=t((function(t,u){var m=t.className,v=t.id,I=t.children,x=t.index,f=t.activeItemIndex,b=void 0===f?-1:f,p=t.closeMenu,g=t.getNextSelectableIndex,h=t.getPreviousSelectableIndex,M=t.setActiveItemIndex,j=t.setSubMenuIsOpenByIndex,S=t.isUnderSubMenu,N=void 0!==S&&S,E=t.disabled,y=void 0!==E&&E,C=t.useDocumentEventListeners,G=void 0!==C&&C,O=t["data-testid"],R=i(null),P=s(u,R),A=i(),D=I&&e.Children.only(I);D||console.error("MenuGridItem can accept only a single element as first level child, this element is not valid: ",D);var F=n((function(e){j(x,e),e&&M(x)}),[x,M,j]),U=d({onFocusWithinChange:F}).focusWithinProps;a({wrapperRef:R,childRef:A,activeItemIndex:b,index:x,useDocumentEventListeners:G});var W=r({wrapperRef:R,setActiveItemIndex:M,getPreviousSelectableIndex:h,getNextSelectableIndex:g,activeItemIndex:b,isUnderSubMenu:N,closeMenu:p});return e.createElement("section",Object.assign({ref:P,className:m,id:v,"data-testid":O||l(c.MENU_GRID_ITEM,v),tabIndex:-1,role:"grid"},U),e.createElement(o.Provider,{value:W},e.cloneElement(D,Object.assign(Object.assign({},null==D?void 0:D.props),{disabled:y,ref:A}))))}));Object.assign(u,{isMenuChild:!0,isSelectable:!0});export{u as default};
//# sourceMappingURL=MenuGridItem.js.map