UNPKG

@progress/kendo-react-layout

Version:

React Layout components enable you to create a perceptive and intuitive layout of web projects. KendoReact Layout package

9 lines (8 loc) 5.41 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2026 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("react"),k=require("@progress/kendo-react-common"),S=require("@progress/kendo-react-popup"),M=require("../utils/itemsIdsUtils.js"),f=require("../utils/misc.js"),q=require("./MenuItemLink.js"),x=require("./MenuItemArrow.js");function w(e){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const l=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(o,r,l.get?l:{enumerable:!0,get:()=>e[r]})}}return o.default=e,Object.freeze(o)}const i=w(F),b=e=>{const{parentItemId:o}=e,r=o!==void 0?a=>{e.onMouseOver(o),a.stopPropagation()}:void 0,l=o!==void 0?a=>{e.onMouseLeave(o),a.stopPropagation()}:void 0;let t;return e.role?t=e.role:o!==void 0?t="menu":t="menubar",i.createElement("ul",{className:e.className,role:t,id:o!==void 0?f.getDOMElementId(e.menuGuid,o):void 0,onMouseOver:r,onMouseLeave:l,"aria-orientation":e["aria-orientation"]},e.items.length>0?e.items.map((a,u)=>i.createElement(O,{item:a,animate:e.animate,isMenuVertical:e.isMenuVertical,isDirectionRightToLeft:e.isDirectionRightToLeft,focusedItemId:e.focusedItemId,lastItemIdToBeOpened:e.lastItemIdToBeOpened,tabbableItemId:e.tabbableItemId,itemRender:e.itemRender,linkRender:e.linkRender,menuGuid:e.menuGuid,onMouseOver:e.onMouseOver,onMouseLeave:e.onMouseLeave,onBlur:e.onBlur,onFocus:e.onFocus,onClick:e.onClick,onOriginalItemNeeded:e.onOriginalItemNeeded,onPopupClose:e.onPopupClose,key:u})):null)},O=e=>{const o=i.useRef(null),r=i.useRef(!0),l=i.useRef(void 0),t=e.item,a=t.id,u=f.getDOMElementId(e.menuGuid,a),L=t.separator,E=t.render||e.itemRender,v=t.linkRender||e.linkRender,R=t.contentParentItemId?t.contentRender:null,m=t.items.length>0&&M.shouldOpenItem(a,e.lastItemIdToBeOpened)&&!r.current;i.useEffect(()=>{var g,I,d;const n=e.focusedItemId,c=e.item.id,s=l.current;if(r.current)n&&n===c&&((g=o.current)==null||g.focus({preventScroll:!0})),r.current=!1;else if(n){const B=k.getActiveElement(document);s!==n&&n===c&&!((I=o.current)!=null&&I.contains(B))&&((d=o.current)==null||d.focus({preventScroll:!0}))}l.current=n});const D=n=>{e.onMouseOver(a),n.stopPropagation()},h=n=>{e.onMouseLeave(a),n.stopPropagation()},P=n=>{e.onPopupClose(a,n)},C=()=>{const n=t.contentParentItemId,c=R;return i.createElement("div",{className:"k-content",role:"presentation"},i.createElement(c,{item:e.onOriginalItemNeeded(n),itemId:n}))},N=()=>{if(v){const s=v;return i.createElement(s,{item:e.onOriginalItemNeeded(t.id),itemId:t.id,opened:m,dir:f.convertBoolDirectionToString(e.isDirectionRightToLeft)})}const n=E,c=n?i.createElement(n,{item:e.onOriginalItemNeeded(t.id),itemId:t.id,key:"1"}):i.createElement("span",{className:"k-menu-link-text"},t.text);return i.createElement(q.MenuItemLink,{url:t.url,opened:m},t.icon||t.svgIcon?i.createElement(k.IconWrap,{name:t.icon,icon:t.svgIcon,key:"0"}):null,c,t.items.length>0?i.createElement("span",{className:"k-menu-expand-arrow","aria-hidden":!0},i.createElement(x.MenuItemArrow,{itemId:t.id,verticalMenu:e.isMenuVertical,dir:f.convertBoolDirectionToString(e.isDirectionRightToLeft),key:"2"})):null)},T=()=>{const n=e.animate,{anchorAlign:c,popupAlign:s,collision:g,animationDirection:I}=f.getPopupSettings(a,e.isMenuVertical,e.isDirectionRightToLeft);let d;return n===!0?d={openDuration:300,closeDuration:300,direction:I}:n===!1?d=!1:d={openDuration:(n==null?void 0:n.openDuration)||300,closeDuration:(n==null?void 0:n.closeDuration)||300,direction:(n==null?void 0:n.direction)||I},i.createElement(S.Popup,{anchor:o.current,show:m,popupClass:k.classNames("k-menu-popup",{"k-rtl":e.isDirectionRightToLeft}),anchorAlign:c,popupAlign:s,collision:g,animate:d,onClose:P,key:"1"},i.createElement(b,{parentItemId:a,animate:e.animate,items:t.items,menuGuid:e.menuGuid,focusedItemId:e.focusedItemId,lastItemIdToBeOpened:e.lastItemIdToBeOpened,tabbableItemId:e.tabbableItemId,itemRender:e.itemRender,linkRender:e.linkRender,isMenuVertical:e.isMenuVertical,isDirectionRightToLeft:e.isDirectionRightToLeft,className:"k-group k-menu-group k-reset k-menu-group-md",onMouseOver:e.onMouseOver,onMouseLeave:e.onMouseLeave,onBlur:e.onBlur,onFocus:e.onFocus,onClick:e.onClick,onOriginalItemNeeded:e.onOriginalItemNeeded,onPopupClose:e.onPopupClose}))},y=k.classNames("k-item","k-menu-item",{"k-first":M.isFirstItemFromSiblings(a),"k-last":t.isLastFromSiblings,"k-disabled":t.disabled},t.cssClass);return i.createElement(i.Fragment,null,L?i.createElement("li",{className:"k-separator k-item","aria-hidden":!0,key:u,id:u,ref:o}):i.createElement("li",{id:u,className:y,style:t.cssStyle,tabIndex:a===e.tabbableItemId?0:-1,onMouseOver:D,onMouseLeave:h,onBlur:n=>e.onBlur(a,n),onFocus:()=>e.onFocus(a),onClick:n=>e.onClick(n,a),role:"menuitem","aria-disabled":t.disabled?!0:void 0,"aria-haspopup":t.items.length>0?!0:void 0,"aria-expanded":t.items.length>0?m:void 0,"aria-label":t.text,"aria-owns":m?u:void 0,ref:o,key:u},R?C():N()),T())};exports.MenuItemInternal=O;exports.MenuItemInternalsList=b;