@progress/kendo-react-layout 7.2.4-develop.2 → 7.2.4-develop.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/actionsheet/ActionSheet.js +8 -0
  2. package/actionsheet/ActionSheet.mjs +184 -0
  3. package/actionsheet/ActionSheetContent.js +8 -0
  4. package/actionsheet/ActionSheetContent.mjs +32 -0
  5. package/actionsheet/ActionSheetFooter.js +8 -0
  6. package/actionsheet/ActionSheetFooter.mjs +32 -0
  7. package/actionsheet/ActionSheetHeader.js +8 -0
  8. package/actionsheet/ActionSheetHeader.mjs +32 -0
  9. package/actionsheet/ActionSheetItem.js +8 -0
  10. package/actionsheet/ActionSheetItem.mjs +52 -0
  11. package/appbar/AppBar.js +8 -0
  12. package/appbar/AppBar.mjs +86 -0
  13. package/appbar/AppBarSection.js +8 -0
  14. package/appbar/AppBarSection.mjs +47 -0
  15. package/appbar/AppBarSpacer.js +8 -0
  16. package/appbar/AppBarSpacer.mjs +55 -0
  17. package/bottomnavigation/BottomNavigation.js +8 -0
  18. package/bottomnavigation/BottomNavigation.mjs +160 -0
  19. package/bottomnavigation/BottomNavigationItem.js +8 -0
  20. package/bottomnavigation/BottomNavigationItem.mjs +93 -0
  21. package/bottomnavigation/models/utils.js +8 -0
  22. package/bottomnavigation/models/utils.mjs +19 -0
  23. package/breadcrumb/Breadcrumb.js +8 -0
  24. package/breadcrumb/Breadcrumb.mjs +158 -0
  25. package/breadcrumb/BreadcrumbDelimiter.js +8 -0
  26. package/breadcrumb/BreadcrumbDelimiter.mjs +48 -0
  27. package/breadcrumb/BreadcrumbLink.js +8 -0
  28. package/breadcrumb/BreadcrumbLink.mjs +82 -0
  29. package/breadcrumb/BreadcrumbListItem.js +8 -0
  30. package/breadcrumb/BreadcrumbListItem.mjs +52 -0
  31. package/breadcrumb/BreadcrumbOrderedList.js +8 -0
  32. package/breadcrumb/BreadcrumbOrderedList.mjs +67 -0
  33. package/card/Avatar.js +8 -0
  34. package/card/Avatar.mjs +53 -0
  35. package/card/Card.js +8 -0
  36. package/card/Card.mjs +52 -0
  37. package/card/CardActions.js +8 -0
  38. package/card/CardActions.mjs +40 -0
  39. package/card/CardBody.js +8 -0
  40. package/card/CardBody.mjs +28 -0
  41. package/card/CardFooter.js +8 -0
  42. package/card/CardFooter.mjs +28 -0
  43. package/card/CardHeader.js +8 -0
  44. package/card/CardHeader.mjs +28 -0
  45. package/card/CardImage.js +8 -0
  46. package/card/CardImage.mjs +36 -0
  47. package/card/CardSubtitle.js +8 -0
  48. package/card/CardSubtitle.mjs +28 -0
  49. package/card/CardTitle.js +8 -0
  50. package/card/CardTitle.mjs +28 -0
  51. package/card/interfaces/Enums.js +8 -0
  52. package/card/interfaces/Enums.mjs +15 -0
  53. package/contextmenu/ContextMenu.js +8 -0
  54. package/contextmenu/ContextMenu.mjs +48 -0
  55. package/dist/cdn/js/kendo-react-layout.js +8 -5
  56. package/drawer/Drawer.js +8 -0
  57. package/drawer/Drawer.mjs +130 -0
  58. package/drawer/DrawerContent.js +8 -0
  59. package/drawer/DrawerContent.mjs +33 -0
  60. package/drawer/DrawerItem.js +8 -0
  61. package/drawer/DrawerItem.mjs +89 -0
  62. package/drawer/DrawerNavigation.js +8 -0
  63. package/drawer/DrawerNavigation.mjs +132 -0
  64. package/drawer/context/DrawerContext.js +8 -0
  65. package/drawer/context/DrawerContext.mjs +22 -0
  66. package/expansionpanel/ExpansionPanel.js +8 -0
  67. package/expansionpanel/ExpansionPanel.mjs +116 -0
  68. package/expansionpanel/ExpansionPanelContent.js +8 -0
  69. package/expansionpanel/ExpansionPanelContent.mjs +23 -0
  70. package/gridlayout/GridLayout.js +8 -0
  71. package/gridlayout/GridLayout.mjs +83 -0
  72. package/gridlayout/GridLayoutItem.js +8 -0
  73. package/gridlayout/GridLayoutItem.mjs +46 -0
  74. package/index.d.mts +4593 -5
  75. package/index.d.ts +4593 -103
  76. package/index.js +8 -5
  77. package/index.mjs +139 -5037
  78. package/menu/components/Menu.js +8 -0
  79. package/menu/components/Menu.mjs +193 -0
  80. package/menu/components/MenuItem.js +8 -0
  81. package/menu/components/MenuItem.mjs +34 -0
  82. package/menu/components/MenuItemArrow.js +8 -0
  83. package/menu/components/MenuItemArrow.mjs +49 -0
  84. package/menu/components/MenuItemInternal.js +8 -0
  85. package/menu/components/MenuItemInternal.mjs +222 -0
  86. package/menu/components/MenuItemLink.js +8 -0
  87. package/menu/components/MenuItemLink.mjs +54 -0
  88. package/menu/consts.js +8 -0
  89. package/menu/consts.mjs +59 -0
  90. package/menu/utils/DirectionHolder.js +8 -0
  91. package/menu/utils/DirectionHolder.mjs +25 -0
  92. package/menu/utils/MouseOverHandler.js +8 -0
  93. package/menu/utils/MouseOverHandler.mjs +34 -0
  94. package/menu/utils/getNewItemIdUponKeyboardNavigation.js +8 -0
  95. package/menu/utils/getNewItemIdUponKeyboardNavigation.mjs +124 -0
  96. package/menu/utils/hoverDelay.js +8 -0
  97. package/menu/utils/hoverDelay.mjs +18 -0
  98. package/menu/utils/itemsIdsUtils.js +8 -0
  99. package/menu/utils/itemsIdsUtils.mjs +81 -0
  100. package/menu/utils/misc.js +8 -0
  101. package/menu/utils/misc.mjs +29 -0
  102. package/menu/utils/prepareInputItemsForInternalWork.js +8 -0
  103. package/menu/utils/prepareInputItemsForInternalWork.mjs +59 -0
  104. package/package-metadata.js +8 -0
  105. package/package-metadata.mjs +19 -0
  106. package/package.json +6 -6
  107. package/panelbar/PanelBar.js +8 -0
  108. package/panelbar/PanelBar.mjs +195 -0
  109. package/panelbar/PanelBarItem.js +8 -0
  110. package/panelbar/PanelBarItem.mjs +148 -0
  111. package/panelbar/interfaces/NavigationAction.js +8 -0
  112. package/panelbar/interfaces/NavigationAction.mjs +12 -0
  113. package/panelbar/util.js +8 -0
  114. package/panelbar/util.mjs +122 -0
  115. package/splitter/Splitter.js +8 -0
  116. package/splitter/Splitter.mjs +238 -0
  117. package/splitter/SplitterBar.js +8 -0
  118. package/splitter/SplitterBar.mjs +129 -0
  119. package/splitter/SplitterPane.js +8 -0
  120. package/splitter/SplitterPane.mjs +50 -0
  121. package/splitter/messages/index.js +8 -0
  122. package/splitter/messages/index.mjs +15 -0
  123. package/stacklayout/StackLayout.js +8 -0
  124. package/stacklayout/StackLayout.mjs +84 -0
  125. package/stepper/Step.js +8 -0
  126. package/stepper/Step.mjs +177 -0
  127. package/stepper/Stepper.js +8 -0
  128. package/stepper/Stepper.mjs +252 -0
  129. package/stepper/contants.js +8 -0
  130. package/stepper/contants.mjs +13 -0
  131. package/stepper/context/StepperContext.js +8 -0
  132. package/stepper/context/StepperContext.mjs +17 -0
  133. package/stepper/messages/index.js +8 -0
  134. package/stepper/messages/index.mjs +17 -0
  135. package/tabstrip/TabStrip.js +8 -0
  136. package/tabstrip/TabStrip.mjs +163 -0
  137. package/tabstrip/TabStripContent.js +8 -0
  138. package/tabstrip/TabStripContent.mjs +81 -0
  139. package/tabstrip/TabStripNavigation.js +8 -0
  140. package/tabstrip/TabStripNavigation.mjs +171 -0
  141. package/tabstrip/TabStripNavigationItem.js +8 -0
  142. package/tabstrip/TabStripNavigationItem.mjs +55 -0
  143. package/tabstrip/TabStripTab.js +8 -0
  144. package/tabstrip/TabStripTab.mjs +35 -0
  145. package/tilelayout/InternalTile.js +8 -0
  146. package/tilelayout/InternalTile.mjs +203 -0
  147. package/tilelayout/ResizeHandlers.js +8 -0
  148. package/tilelayout/ResizeHandlers.mjs +53 -0
  149. package/tilelayout/TileLayout.js +8 -0
  150. package/tilelayout/TileLayout.mjs +122 -0
  151. package/timeline/Timeline.js +8 -0
  152. package/timeline/Timeline.mjs +79 -0
  153. package/timeline/TimelineCard.js +8 -0
  154. package/timeline/TimelineCard.mjs +109 -0
  155. package/timeline/TimelineHorizontal.js +8 -0
  156. package/timeline/TimelineHorizontal.mjs +239 -0
  157. package/timeline/TimelineVertical.js +8 -0
  158. package/timeline/TimelineVertical.mjs +78 -0
  159. package/timeline/utils.js +8 -0
  160. package/timeline/utils.mjs +16 -0
  161. package/actionsheet/ActionSheet.d.ts +0 -138
  162. package/actionsheet/ActionSheetContent.d.ts +0 -14
  163. package/actionsheet/ActionSheetFooter.d.ts +0 -14
  164. package/actionsheet/ActionSheetHeader.d.ts +0 -14
  165. package/actionsheet/ActionSheetItem.d.ts +0 -10
  166. package/actionsheet/interfaces/ActionSheetChildrenProps.d.ts +0 -17
  167. package/actionsheet/interfaces/ActionSheetItemProps.d.ts +0 -70
  168. package/appbar/AppBar.d.ts +0 -54
  169. package/appbar/AppBarSection.d.ts +0 -53
  170. package/appbar/AppBarSpacer.d.ts +0 -54
  171. package/appbar/interfaces/AppBarProps.d.ts +0 -83
  172. package/appbar/interfaces/AppBarSectionProps.d.ts +0 -22
  173. package/appbar/interfaces/AppBarSpacerProps.d.ts +0 -23
  174. package/bottomnavigation/BottomNavigation.d.ts +0 -42
  175. package/bottomnavigation/BottomNavigationItem.d.ts +0 -16
  176. package/bottomnavigation/BottomNavigationItemProps.d.ts +0 -64
  177. package/bottomnavigation/BottomNavigationProps.d.ts +0 -157
  178. package/bottomnavigation/models/events.d.ts +0 -24
  179. package/bottomnavigation/models/utils.d.ts +0 -40
  180. package/breadcrumb/Breadcrumb.d.ts +0 -163
  181. package/breadcrumb/BreadcrumbDelimiter.d.ts +0 -47
  182. package/breadcrumb/BreadcrumbLink.d.ts +0 -135
  183. package/breadcrumb/BreadcrumbListItem.d.ts +0 -55
  184. package/breadcrumb/BreadcrumbOrderedList.d.ts +0 -59
  185. package/card/Avatar.d.ts +0 -7
  186. package/card/Card.d.ts +0 -8
  187. package/card/CardActions.d.ts +0 -7
  188. package/card/CardBody.d.ts +0 -7
  189. package/card/CardFooter.d.ts +0 -7
  190. package/card/CardHeader.d.ts +0 -7
  191. package/card/CardImage.d.ts +0 -7
  192. package/card/CardSubtitle.d.ts +0 -7
  193. package/card/CardTitle.d.ts +0 -7
  194. package/card/interfaces/AvatarProps.d.ts +0 -88
  195. package/card/interfaces/CardActionsProps.d.ts +0 -38
  196. package/card/interfaces/CardBodyProps.d.ts +0 -18
  197. package/card/interfaces/CardFooterProps.d.ts +0 -18
  198. package/card/interfaces/CardHandle.d.ts +0 -18
  199. package/card/interfaces/CardHeaderProps.d.ts +0 -18
  200. package/card/interfaces/CardImageProps.d.ts +0 -22
  201. package/card/interfaces/CardProps.d.ts +0 -48
  202. package/card/interfaces/CardSubtitleProps.d.ts +0 -18
  203. package/card/interfaces/CardTitleProps.d.ts +0 -18
  204. package/card/interfaces/Enums.d.ts +0 -27
  205. package/contextmenu/ContextMenu.d.ts +0 -31
  206. package/drawer/Drawer.d.ts +0 -44
  207. package/drawer/DrawerContent.d.ts +0 -43
  208. package/drawer/DrawerItem.d.ts +0 -36
  209. package/drawer/DrawerNavigation.d.ts +0 -47
  210. package/drawer/context/DrawerContext.d.ts +0 -24
  211. package/drawer/interfaces/DrawerAnimation.d.ts +0 -18
  212. package/drawer/interfaces/DrawerContentProps.d.ts +0 -21
  213. package/drawer/interfaces/DrawerItemHandle.d.ts +0 -21
  214. package/drawer/interfaces/DrawerItemProps.d.ts +0 -64
  215. package/drawer/interfaces/DrawerNavigationProps.d.ts +0 -21
  216. package/drawer/interfaces/DrawerProps.d.ts +0 -86
  217. package/drawer/interfaces/DrawerSelectEvent.d.ts +0 -19
  218. package/expansionpanel/ExpansionPanel.d.ts +0 -10
  219. package/expansionpanel/ExpansionPanelContent.d.ts +0 -9
  220. package/expansionpanel/index.d.ts +0 -7
  221. package/expansionpanel/interfaces.d.ts +0 -92
  222. package/gridlayout/GridLayout.d.ts +0 -43
  223. package/gridlayout/GridLayoutItem.d.ts +0 -42
  224. package/gridlayout/interfaces/GridLayoutColumnProps.d.ts +0 -13
  225. package/gridlayout/interfaces/GridLayoutItemProps.d.ts +0 -44
  226. package/gridlayout/interfaces/GridLayoutProps.d.ts +0 -99
  227. package/gridlayout/interfaces/GridLayoutRowProps.d.ts +0 -13
  228. package/menu/BaseMenuItemInternalProps.d.ts +0 -24
  229. package/menu/MenuProps.d.ts +0 -75
  230. package/menu/components/Menu.d.ts +0 -118
  231. package/menu/components/MenuItem.d.ts +0 -33
  232. package/menu/components/MenuItemArrow.d.ts +0 -50
  233. package/menu/components/MenuItemInternal.d.ts +0 -63
  234. package/menu/components/MenuItemLink.d.ts +0 -34
  235. package/menu/consts.d.ts +0 -58
  236. package/menu/events.d.ts +0 -20
  237. package/menu/models/BaseMenuItem.d.ts +0 -58
  238. package/menu/models/MenuItemModel.d.ts +0 -23
  239. package/menu/utils/DirectionHolder.d.ts +0 -15
  240. package/menu/utils/MouseOverHandler.d.ts +0 -21
  241. package/menu/utils/getNewItemIdUponKeyboardNavigation.d.ts +0 -11
  242. package/menu/utils/hoverDelay.d.ts +0 -13
  243. package/menu/utils/itemsIdsUtils.d.ts +0 -68
  244. package/menu/utils/misc.d.ts +0 -20
  245. package/menu/utils/prepareInputItemsForInternalWork.d.ts +0 -10
  246. package/package-metadata.d.ts +0 -9
  247. package/panelbar/PanelBar.d.ts +0 -81
  248. package/panelbar/PanelBarItem.d.ts +0 -52
  249. package/panelbar/interfaces/NavigationAction.d.ts +0 -12
  250. package/panelbar/interfaces/PanelBarItemClickEventArguments.d.ts +0 -12
  251. package/panelbar/interfaces/PanelBarItemProps.d.ts +0 -98
  252. package/panelbar/interfaces/PanelBarProps.d.ts +0 -66
  253. package/panelbar/interfaces/PanelBarSelectEventArguments.d.ts +0 -18
  254. package/panelbar/interfaces/RenderPanelBarItem.d.ts +0 -19
  255. package/panelbar/util.d.ts +0 -56
  256. package/splitter/Splitter.d.ts +0 -136
  257. package/splitter/SplitterBar.d.ts +0 -44
  258. package/splitter/SplitterPane.d.ts +0 -57
  259. package/splitter/messages/index.d.ts +0 -14
  260. package/stacklayout/StackLayout.d.ts +0 -41
  261. package/stacklayout/StackLayoutProps.d.ts +0 -92
  262. package/stepper/Step.d.ts +0 -27
  263. package/stepper/Stepper.d.ts +0 -27
  264. package/stepper/contants.d.ts +0 -12
  265. package/stepper/context/StepperContext.d.ts +0 -27
  266. package/stepper/interfaces/StepChangeEvent.d.ts +0 -15
  267. package/stepper/interfaces/StepFocusEvent.d.ts +0 -11
  268. package/stepper/interfaces/StepHandle.d.ts +0 -17
  269. package/stepper/interfaces/StepProps.d.ts +0 -83
  270. package/stepper/interfaces/StepperChangeEvent.d.ts +0 -15
  271. package/stepper/interfaces/StepperFocusEvent.d.ts +0 -11
  272. package/stepper/interfaces/StepperHandle.d.ts +0 -17
  273. package/stepper/interfaces/StepperProps.d.ts +0 -98
  274. package/stepper/messages/index.d.ts +0 -19
  275. package/tabstrip/TabStrip.d.ts +0 -158
  276. package/tabstrip/TabStripContent.d.ts +0 -62
  277. package/tabstrip/TabStripNavigation.d.ts +0 -110
  278. package/tabstrip/TabStripNavigationItem.d.ts +0 -75
  279. package/tabstrip/TabStripTab.d.ts +0 -42
  280. package/tilelayout/InternalTile.d.ts +0 -94
  281. package/tilelayout/ResizeHandlers.d.ts +0 -24
  282. package/tilelayout/TileLayout.d.ts +0 -153
  283. package/tilelayout/interfaces/index.d.ts +0 -145
  284. package/timeline/Timeline.d.ts +0 -102
  285. package/timeline/TimelineCard.d.ts +0 -38
  286. package/timeline/TimelineHorizontal.d.ts +0 -7
  287. package/timeline/TimelineVertical.d.ts +0 -16
  288. package/timeline/utils.d.ts +0 -19
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),r=require("prop-types"),n=require("@progress/kendo-react-common"),i=require("../utils/itemsIdsUtils.js"),c=require("../utils/prepareInputItemsForInternalWork.js"),p=require("../utils/getNewItemIdUponKeyboardNavigation.js"),m=require("../utils/hoverDelay.js"),v=require("./MenuItemInternal.js"),f=require("../utils/DirectionHolder.js"),b=require("../utils/MouseOverHandler.js"),g=require("../../package-metadata.js");function D(a){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const e in a)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(a,e);Object.defineProperty(t,e,s.get?s:{enumerable:!0,get:()=>a[e]})}}return t.default=a,Object.freeze(t)}const d=D(u),h={focusedItemId:i.EMPTY_ID,hoveredItemId:i.EMPTY_ID,tabbableItemId:i.ZERO_LEVEL_ZERO_ITEM_ID},l=class l extends d.Component{constructor(t){super(t),this.menuWrapperEl=null,this.directionHolder=new f.DirectionHolder,this.inputItems=[],this.items=[],this.reset=()=>{this.clearItemHoverAndLeaveRequestsIfApplicable(),this.setState(h)},this.onKeyDown=e=>{if(this.state.focusedItemId!==i.EMPTY_ID){const s=i.getItemById(this.state.focusedItemId,this.items),o=p.getNewItemIdUponKeyboardNavigation(this.items,s.id,e.keyCode,e.key,this.props.vertical,this.directionHolder.getIsDirectionRightToLeft());s.id!==o&&(e.preventDefault(),this.setFocusedItemId(o)),(e.keyCode===n.Keys.enter||e.keyCode===n.Keys.space)&&!s.disabled&&(this.mouseOverHandler.handleItemSelectedViaKeyboard(),this.dispatchSelectEventIfWired(e,s.id),!e.isDefaultPrevented()&&s.items.length===0&&s.url&&window.location.assign(s.url))}e.keyCode===n.Keys.esc&&this.props.onClose&&this.props.onClose.call(void 0,e)},this.onItemMouseOver=e=>{this.mouseOverHandler.IsMouseOverEnabled&&(this.clearItemHoverAndLeaveRequestsIfApplicable(),this.itemHoverRequest=window.setTimeout(()=>{this.setHoveredItemId(e),this.itemHoverRequest=null},m.getHoverOpenDelay(this.props)))},this.onItemMouseLeave=e=>{this.mouseOverHandler.IsMouseOverEnabled&&this.isItemWithDefaultClose(e)&&(this.clearItemHoverAndLeaveRequestsIfApplicable(),this.itemLeaveRequest=window.setTimeout(()=>{this.setHoveredItemId(i.EMPTY_ID),this.itemLeaveRequest=null},m.getHoverCloseDelay(this.props)))},this.onItemMouseDown=()=>{this.mouseOverHandler.handleItemMouseDown()},this.onItemFocus=e=>{this.setFocusedItemId(e),this.mouseOverHandler.handleItemFocus()},this.onItemClick=(e,s)=>{const o=i.getItemById(s,this.items);o.disabled||(this.setFocusedItemId(s),this.mouseOverHandler.handleItemClick(s,this.isItemWithDefaultClose(s)),this.dispatchSelectEventIfWired(e,s),!e.isDefaultPrevented()&&o.url&&window.location.assign(o.url))},this.onItemBlur=(e,s)=>{if(this.isItemWithDefaultClose(e)&&this.setFocusedItemId(i.EMPTY_ID),s.relatedTarget&&s.relatedTarget.nodeName==="LI"){const o=s.relatedTarget.getAttribute("id");if(o&&o.includes(this.menuItemId))return}this.props.onClose&&this.props.onClose.call(void 0,s)},this.getInputItem=e=>i.getItemById(e,this.inputItems),n.validatePackage(g.packageMetadata),this.mouseOverHandler=new b.MouseOverHandler(this.props.openOnClick,this.reset,this.onItemMouseOver),this.state=Object.assign({},h,{isFirstRender:!0})}get menuItemId(){return this.props.id}get element(){return this.menuWrapperEl}render(){this.prepareItems(),this.state.isFirstRender||this.directionHolder.setIsDirectionRightToLeft(this.checkIsDirectionRightToLeft());let t=this.state.hoveredItemId?this.state.hoveredItemId:this.state.focusedItemId?i.getDirectParentId(this.state.focusedItemId):i.EMPTY_ID;return d.createElement("div",{id:this.props.id,onKeyDown:this.onKeyDown,style:this.props.style,className:this.directionHolder.getIsDirectionRightToLeft()?"k-rtl":void 0,ref:e=>this.menuWrapperEl=e},d.createElement(v.MenuItemInternalsList,{className:this.getMenuClassName(),"aria-orientation":this.props.vertical?"vertical":void 0,items:this.items,isMenuVertical:this.props.vertical,isDirectionRightToLeft:this.directionHolder.getIsDirectionRightToLeft(),focusedItemId:this.state.focusedItemId,lastItemIdToBeOpened:t,tabbableItemId:this.state.tabbableItemId,itemRender:this.props.itemRender,linkRender:this.props.linkRender,menuGuid:this.menuItemId,onMouseLeave:this.onItemMouseLeave,onMouseOver:this.onItemMouseOver,onMouseDown:this.onItemMouseDown,onFocus:this.onItemFocus,onClick:this.onItemClick,onBlur:this.onItemBlur,onOriginalItemNeeded:this.getInputItem,role:this.props.role}))}componentDidMount(){this.setState({isFirstRender:!1})}componentDidUpdate(t){(!!t.vertical!=!!this.props.vertical||this.directionHolder.hasDirectionChanged())&&this.reset(),this.mouseOverHandler.OpenOnClick=this.props.openOnClick}componentWillUnmount(){this.clearItemHoverAndLeaveRequestsIfApplicable()}setFocusedItemId(t){this.setState(e=>{const s=t===i.EMPTY_ID?e.tabbableItemId:i.getRootParentId(t);return{hoveredItemId:t===i.EMPTY_ID||i.isIdEmptyOrZeroLevel(e.hoveredItemId)&&i.isIdEmptyOrZeroLevel(t)?e.hoveredItemId:i.EMPTY_ID,focusedItemId:t,tabbableItemId:s}})}setHoveredItemId(t){this.setState(e=>i.isIdEmptyOrZeroLevel(t)&&i.isIdEmptyOrZeroLevel(e.focusedItemId)?{hoveredItemId:t,focusedItemId:e.focusedItemId,tabbableItemId:e.tabbableItemId}:{hoveredItemId:t,focusedItemId:i.EMPTY_ID,tabbableItemId:i.ZERO_LEVEL_ZERO_ITEM_ID})}getMenuClassName(){return n.classNames("k-reset","k-header","k-menu",{"k-menu-horizontal":!this.props.vertical},{"k-menu-vertical":this.props.vertical},this.props.className)}clearItemHoverAndLeaveRequestsIfApplicable(){this.itemHoverRequest&&(clearTimeout(this.itemHoverRequest),this.itemHoverRequest=null),this.itemLeaveRequest&&(clearTimeout(this.itemLeaveRequest),this.itemLeaveRequest=null)}isItemWithDefaultClose(t){return!this.props.customCloseItemIds||this.props.customCloseItemIds.indexOf(t)===-1}checkIsDirectionRightToLeft(){return!!(this.props.dir!==void 0?this.props.dir==="rtl":this.menuWrapperEl&&getComputedStyle(this.menuWrapperEl).direction==="rtl")}prepareItems(){const{items:t,inputItems:e}=c.prepareInputItemsForInternalWork(this.props.items,this.props.children);this.items=t,this.inputItems=e}dispatchSelectEventIfWired(t,e){n.dispatchEvent(this.props.onSelect,t,this,{item:this.getInputItem(e),itemId:e})}};l.propTypes={vertical:r.bool,items:r.arrayOf(r.object),style:r.object,dir:r.string,hoverOpenDelay:r.number,hoverCloseDelay:r.number,openOnClick:r.bool,itemRender:r.any,linkRender:r.any,customCloseItemIds:r.arrayOf(r.string),onSelect:r.func,role:r.string},l.defaultProps={vertical:!1};let I=l;exports.Menu=I;
@@ -0,0 +1,193 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";
9
+ import * as l from "react";
10
+ import i from "prop-types";
11
+ import { Keys as m, validatePackage as u, classNames as c, dispatchEvent as f } from "@progress/kendo-react-common";
12
+ import { EMPTY_ID as r, getItemById as d, getDirectParentId as v, getRootParentId as b, isIdEmptyOrZeroLevel as n, ZERO_LEVEL_ZERO_ITEM_ID as p } from "../utils/itemsIdsUtils.mjs";
13
+ import { prepareInputItemsForInternalWork as g } from "../utils/prepareInputItemsForInternalWork.mjs";
14
+ import { getNewItemIdUponKeyboardNavigation as R } from "../utils/getNewItemIdUponKeyboardNavigation.mjs";
15
+ import { getHoverOpenDelay as D, getHoverCloseDelay as H } from "../utils/hoverDelay.mjs";
16
+ import { MenuItemInternalsList as O } from "./MenuItemInternal.mjs";
17
+ import { DirectionHolder as C } from "../utils/DirectionHolder.mjs";
18
+ import { MouseOverHandler as k } from "../utils/MouseOverHandler.mjs";
19
+ import { packageMetadata as y } from "../../package-metadata.mjs";
20
+ const h = {
21
+ focusedItemId: r,
22
+ hoveredItemId: r,
23
+ tabbableItemId: p
24
+ }, a = class a extends l.Component {
25
+ constructor(t) {
26
+ super(t), this.menuWrapperEl = null, this.directionHolder = new C(), this.inputItems = [], this.items = [], this.reset = () => {
27
+ this.clearItemHoverAndLeaveRequestsIfApplicable(), this.setState(h);
28
+ }, this.onKeyDown = (e) => {
29
+ if (this.state.focusedItemId !== r) {
30
+ const s = d(this.state.focusedItemId, this.items), o = R(
31
+ this.items,
32
+ s.id,
33
+ e.keyCode,
34
+ e.key,
35
+ this.props.vertical,
36
+ this.directionHolder.getIsDirectionRightToLeft()
37
+ );
38
+ s.id !== o && (e.preventDefault(), this.setFocusedItemId(o)), (e.keyCode === m.enter || e.keyCode === m.space) && !s.disabled && (this.mouseOverHandler.handleItemSelectedViaKeyboard(), this.dispatchSelectEventIfWired(e, s.id), !e.isDefaultPrevented() && s.items.length === 0 && s.url && window.location.assign(s.url));
39
+ }
40
+ e.keyCode === m.esc && this.props.onClose && this.props.onClose.call(void 0, e);
41
+ }, this.onItemMouseOver = (e) => {
42
+ this.mouseOverHandler.IsMouseOverEnabled && (this.clearItemHoverAndLeaveRequestsIfApplicable(), this.itemHoverRequest = window.setTimeout(
43
+ () => {
44
+ this.setHoveredItemId(e), this.itemHoverRequest = null;
45
+ },
46
+ D(this.props)
47
+ ));
48
+ }, this.onItemMouseLeave = (e) => {
49
+ this.mouseOverHandler.IsMouseOverEnabled && this.isItemWithDefaultClose(e) && (this.clearItemHoverAndLeaveRequestsIfApplicable(), this.itemLeaveRequest = window.setTimeout(
50
+ () => {
51
+ this.setHoveredItemId(r), this.itemLeaveRequest = null;
52
+ },
53
+ H(this.props)
54
+ ));
55
+ }, this.onItemMouseDown = () => {
56
+ this.mouseOverHandler.handleItemMouseDown();
57
+ }, this.onItemFocus = (e) => {
58
+ this.setFocusedItemId(e), this.mouseOverHandler.handleItemFocus();
59
+ }, this.onItemClick = (e, s) => {
60
+ const o = d(s, this.items);
61
+ o.disabled || (this.setFocusedItemId(s), this.mouseOverHandler.handleItemClick(s, this.isItemWithDefaultClose(s)), this.dispatchSelectEventIfWired(e, s), !e.isDefaultPrevented() && o.url && window.location.assign(o.url));
62
+ }, this.onItemBlur = (e, s) => {
63
+ if (this.isItemWithDefaultClose(e) && this.setFocusedItemId(r), s.relatedTarget && s.relatedTarget.nodeName === "LI") {
64
+ const o = s.relatedTarget.getAttribute("id");
65
+ if (o && o.includes(this.menuItemId))
66
+ return;
67
+ }
68
+ this.props.onClose && this.props.onClose.call(void 0, s);
69
+ }, this.getInputItem = (e) => d(e, this.inputItems), u(y), this.mouseOverHandler = new k(this.props.openOnClick, this.reset, this.onItemMouseOver), this.state = Object.assign({}, h, { isFirstRender: !0 });
70
+ }
71
+ get menuItemId() {
72
+ return this.props.id;
73
+ }
74
+ get element() {
75
+ return this.menuWrapperEl;
76
+ }
77
+ /**
78
+ * @hidden
79
+ */
80
+ render() {
81
+ this.prepareItems(), this.state.isFirstRender || this.directionHolder.setIsDirectionRightToLeft(this.checkIsDirectionRightToLeft());
82
+ let t = this.state.hoveredItemId ? this.state.hoveredItemId : this.state.focusedItemId ? v(this.state.focusedItemId) : r;
83
+ return /* @__PURE__ */ l.createElement(
84
+ "div",
85
+ {
86
+ id: this.props.id,
87
+ onKeyDown: this.onKeyDown,
88
+ style: this.props.style,
89
+ className: this.directionHolder.getIsDirectionRightToLeft() ? "k-rtl" : void 0,
90
+ ref: (e) => this.menuWrapperEl = e
91
+ },
92
+ /* @__PURE__ */ l.createElement(
93
+ O,
94
+ {
95
+ className: this.getMenuClassName(),
96
+ "aria-orientation": this.props.vertical ? "vertical" : void 0,
97
+ items: this.items,
98
+ isMenuVertical: this.props.vertical,
99
+ isDirectionRightToLeft: this.directionHolder.getIsDirectionRightToLeft(),
100
+ focusedItemId: this.state.focusedItemId,
101
+ lastItemIdToBeOpened: t,
102
+ tabbableItemId: this.state.tabbableItemId,
103
+ itemRender: this.props.itemRender,
104
+ linkRender: this.props.linkRender,
105
+ menuGuid: this.menuItemId,
106
+ onMouseLeave: this.onItemMouseLeave,
107
+ onMouseOver: this.onItemMouseOver,
108
+ onMouseDown: this.onItemMouseDown,
109
+ onFocus: this.onItemFocus,
110
+ onClick: this.onItemClick,
111
+ onBlur: this.onItemBlur,
112
+ onOriginalItemNeeded: this.getInputItem,
113
+ role: this.props.role
114
+ }
115
+ )
116
+ );
117
+ }
118
+ /**
119
+ * @hidden
120
+ */
121
+ componentDidMount() {
122
+ this.setState({ isFirstRender: !1 });
123
+ }
124
+ /**
125
+ * @hidden
126
+ */
127
+ componentDidUpdate(t) {
128
+ (!!t.vertical != !!this.props.vertical || this.directionHolder.hasDirectionChanged()) && this.reset(), this.mouseOverHandler.OpenOnClick = this.props.openOnClick;
129
+ }
130
+ /**
131
+ * @hidden
132
+ */
133
+ componentWillUnmount() {
134
+ this.clearItemHoverAndLeaveRequestsIfApplicable();
135
+ }
136
+ setFocusedItemId(t) {
137
+ this.setState((e) => {
138
+ const s = t === r ? e.tabbableItemId : b(t);
139
+ return { hoveredItemId: t === r || n(e.hoveredItemId) && n(t) ? e.hoveredItemId : r, focusedItemId: t, tabbableItemId: s };
140
+ });
141
+ }
142
+ setHoveredItemId(t) {
143
+ this.setState((e) => n(t) && n(e.focusedItemId) ? {
144
+ hoveredItemId: t,
145
+ focusedItemId: e.focusedItemId,
146
+ tabbableItemId: e.tabbableItemId
147
+ } : { hoveredItemId: t, focusedItemId: r, tabbableItemId: p });
148
+ }
149
+ getMenuClassName() {
150
+ return c(
151
+ "k-reset",
152
+ "k-header",
153
+ "k-menu",
154
+ { "k-menu-horizontal": !this.props.vertical },
155
+ { "k-menu-vertical": this.props.vertical },
156
+ this.props.className
157
+ );
158
+ }
159
+ clearItemHoverAndLeaveRequestsIfApplicable() {
160
+ this.itemHoverRequest && (clearTimeout(this.itemHoverRequest), this.itemHoverRequest = null), this.itemLeaveRequest && (clearTimeout(this.itemLeaveRequest), this.itemLeaveRequest = null);
161
+ }
162
+ isItemWithDefaultClose(t) {
163
+ return !this.props.customCloseItemIds || this.props.customCloseItemIds.indexOf(t) === -1;
164
+ }
165
+ checkIsDirectionRightToLeft() {
166
+ return !!(this.props.dir !== void 0 ? this.props.dir === "rtl" : this.menuWrapperEl && getComputedStyle(this.menuWrapperEl).direction === "rtl");
167
+ }
168
+ prepareItems() {
169
+ const { items: t, inputItems: e } = g(this.props.items, this.props.children);
170
+ this.items = t, this.inputItems = e;
171
+ }
172
+ dispatchSelectEventIfWired(t, e) {
173
+ f(this.props.onSelect, t, this, { item: this.getInputItem(e), itemId: e });
174
+ }
175
+ };
176
+ a.propTypes = {
177
+ vertical: i.bool,
178
+ items: i.arrayOf(i.object),
179
+ style: i.object,
180
+ dir: i.string,
181
+ hoverOpenDelay: i.number,
182
+ hoverCloseDelay: i.number,
183
+ openOnClick: i.bool,
184
+ itemRender: i.any,
185
+ linkRender: i.any,
186
+ customCloseItemIds: i.arrayOf(i.string),
187
+ onSelect: i.func,
188
+ role: i.string
189
+ }, a.defaultProps = { vertical: !1 };
190
+ let I = a;
191
+ export {
192
+ I as Menu
193
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react"),e=require("prop-types");function i(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const c=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(r,n,c.get?c:{enumerable:!0,get:()=>t[n]})}}return r.default=t,Object.freeze(r)}const l=i(a),o=class o extends l.Component{render(){return null}};o.propTypes={text:e.string,url:e.string,icon:e.string,disabled:e.bool,cssClass:e.string,cssStyle:e.object,render:e.any,linkRender:e.any,contentRender:e.any,data:e.any};let s=o;exports.MenuItem=s;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";
9
+ import * as t from "react";
10
+ import n from "prop-types";
11
+ const r = class r extends t.Component {
12
+ /**
13
+ * @hidden
14
+ */
15
+ render() {
16
+ return null;
17
+ }
18
+ };
19
+ r.propTypes = {
20
+ text: n.string,
21
+ url: n.string,
22
+ icon: n.string,
23
+ disabled: n.bool,
24
+ cssClass: n.string,
25
+ cssStyle: n.object,
26
+ render: n.any,
27
+ linkRender: n.any,
28
+ contentRender: n.any,
29
+ data: n.any
30
+ };
31
+ let s = r;
32
+ export {
33
+ s as MenuItem
34
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("react"),n=require("prop-types"),p=require("@progress/kendo-react-common"),o=require("@progress/kendo-svg-icons"),g=require("../utils/misc.js");function f(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const s=f(m),l="caret-alt-down",d="caret-alt-right",u="caret-alt-left",i=class i extends s.Component{render(){return s.createElement(p.IconWrap,{"aria-hidden":!0,...this.getIcon()})}getIcon(){switch(g.getChildrenPosition(this.props.itemId,this.props.verticalMenu===!0,this.props.dir==="rtl")){case"downward":return{name:l,icon:o.caretAltDownIcon};case"rightward":return{name:d,icon:o.caretAltRightIcon};case"leftward":return{name:u,icon:o.caretAltLeftIcon};default:return{}}}};i.propTypes={itemId:n.string,dir:n.string,verticalMenu:n.bool};let c=i;exports.MenuItemArrow=c;exports.downArrowName=l;exports.leftArrowName=u;exports.rightArrowName=d;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";
9
+ import * as e from "react";
10
+ import t from "prop-types";
11
+ import { IconWrap as n } from "@progress/kendo-react-common";
12
+ import { caretAltLeftIcon as i, caretAltRightIcon as a, caretAltDownIcon as c } from "@progress/kendo-svg-icons";
13
+ import { getChildrenPosition as s } from "../utils/misc.mjs";
14
+ const l = "caret-alt-down", p = "caret-alt-right", d = "caret-alt-left", r = class r extends e.Component {
15
+ /**
16
+ * @hidden
17
+ */
18
+ render() {
19
+ return /* @__PURE__ */ e.createElement(n, { "aria-hidden": !0, ...this.getIcon() });
20
+ }
21
+ getIcon() {
22
+ switch (s(
23
+ this.props.itemId,
24
+ this.props.verticalMenu === !0,
25
+ this.props.dir === "rtl"
26
+ )) {
27
+ case "downward":
28
+ return { name: l, icon: c };
29
+ case "rightward":
30
+ return { name: p, icon: a };
31
+ case "leftward":
32
+ return { name: d, icon: i };
33
+ default:
34
+ return {};
35
+ }
36
+ }
37
+ };
38
+ r.propTypes = {
39
+ itemId: t.string,
40
+ dir: t.string,
41
+ verticalMenu: t.bool
42
+ };
43
+ let o = r;
44
+ export {
45
+ o as MenuItemArrow,
46
+ l as downArrowName,
47
+ d as leftArrowName,
48
+ p as rightArrowName
49
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),p=require("@progress/kendo-react-common"),l=require("@progress/kendo-react-popup"),d=require("../utils/itemsIdsUtils.js"),r=require("../utils/misc.js"),c=require("./MenuItemLink.js"),h=require("./MenuItemArrow.js");function I(o){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const t in o)if(t!=="default"){const i=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:()=>o[t]})}}return e.default=o,Object.freeze(e)}const s=I(u);class m extends s.Component{constructor(){super(...arguments),this.onMouseOver=e=>{this.props.onMouseOver(this.props.parentItemId),e.stopPropagation()},this.onMouseLeave=e=>{this.props.onMouseLeave(this.props.parentItemId),e.stopPropagation()}}render(){const e=this.props.parentItemId;return s.createElement("ul",{className:this.props.className,role:this.props.role?this.props.role:e!==void 0?"menu":"menubar",id:e!==void 0?r.getDOMElementId(this.props.menuGuid,e):void 0,onMouseOver:e!==void 0?this.onMouseOver:void 0,onMouseLeave:e!==void 0?this.onMouseLeave:void 0,"aria-orientation":this.props["aria-orientation"]},this.renderChildItems())}renderChildItems(){return this.props.items.length>0?this.props.items.map((e,t)=>s.createElement(a,{item:e,isMenuVertical:this.props.isMenuVertical,isDirectionRightToLeft:this.props.isDirectionRightToLeft,focusedItemId:this.props.focusedItemId,lastItemIdToBeOpened:this.props.lastItemIdToBeOpened,tabbableItemId:this.props.tabbableItemId,itemRender:this.props.itemRender,linkRender:this.props.linkRender,menuGuid:this.props.menuGuid,onMouseOver:this.props.onMouseOver,onMouseLeave:this.props.onMouseLeave,onMouseDown:this.props.onMouseDown,onBlur:this.props.onBlur,onFocus:this.props.onFocus,onClick:this.props.onClick,onOriginalItemNeeded:this.props.onOriginalItemNeeded,key:t})):null}}class a extends s.Component{constructor(e){super(e),this.isFirstRender=!0,this.onMouseOver=t=>{this.props.onMouseOver(this.props.item.id),t.stopPropagation()},this.onMouseLeave=t=>{this.props.onMouseLeave(this.props.item.id),t.stopPropagation()},this.state={opened:!1}}componentDidMount(){const e=this.props.focusedItemId,t=this.props.item.id;e&&e===t&&this.itemElement.focus(),this.isFirstRender=!1}componentDidUpdate(e){const t=this.props.focusedItemId,i=this.props.item.id;if(t){const n=p.getActiveElement(document);e.focusedItemId!==t&&t===i&&!this.itemElement.contains(n)&&this.itemElement.focus()}}render(){const e=this.props.item,t=e.id,i=r.getDOMElementId(this.props.menuGuid,t);return s.createElement(s.Fragment,null,s.createElement("li",{id:r.getDOMElementId(this.props.menuGuid,t),className:this.getMenuItemClassName(e),style:e.cssStyle,tabIndex:t===this.props.tabbableItemId?0:-1,onMouseOver:this.onMouseOver,onMouseLeave:this.onMouseLeave,onMouseDown:n=>this.props.onMouseDown(n),onBlur:n=>this.props.onBlur(t,n),onFocus:()=>this.props.onFocus(t),onClick:n=>this.props.onClick(n,t),role:"menuitem","aria-disabled":e.disabled?!0:void 0,"aria-haspopup":e.items.length>0?!0:void 0,"aria-expanded":e.items.length>0?this.Opened:void 0,"aria-label":e.text,"aria-owns":this.Opened?i:void 0,ref:n=>this.itemElement=n,key:"0"},this.contentRender?this.renderContent():this.renderMenuItemLink()),this.renderPopupIfOpened())}renderContent(){const e=this.props.item.contentParentItemId;return s.createElement("div",{className:"k-content",role:"presentation"},s.createElement(this.contentRender,{item:this.props.onOriginalItemNeeded(e),itemId:e}))}renderMenuItemLink(){const e=this.props.item;if(this.linkRender)return s.createElement(this.linkRender,{item:this.props.onOriginalItemNeeded(e.id),itemId:e.id,opened:this.Opened,dir:r.convertBoolDirectionToString(this.props.isDirectionRightToLeft)});{const t=this.itemRender?s.createElement(this.itemRender,{item:this.props.onOriginalItemNeeded(e.id),itemId:e.id,key:"1"}):s.createElement("span",{className:"k-menu-link-text"},e.text);return s.createElement(c.MenuItemLink,{url:e.url,opened:this.Opened},this.renderMenuIconIfApplicable(),t,this.renderArrowIfApplicable())}}renderPopupIfOpened(){if(this.Opened){const e=this.props.item.id,{anchorAlign:t,popupAlign:i,collision:n}=r.getPopupSettings(e,this.props.isMenuVertical,this.props.isDirectionRightToLeft);return s.createElement(l.Popup,{anchor:this.itemElement,show:!0,popupClass:this.getPopupClassName(),anchorAlign:t,popupAlign:i,collision:n,animate:!1,key:"1"},s.createElement(m,{parentItemId:e,items:this.props.item.items,menuGuid:this.props.menuGuid,focusedItemId:this.props.focusedItemId,lastItemIdToBeOpened:this.props.lastItemIdToBeOpened,tabbableItemId:this.props.tabbableItemId,itemRender:this.props.itemRender,linkRender:this.props.linkRender,isMenuVertical:this.props.isMenuVertical,isDirectionRightToLeft:this.props.isDirectionRightToLeft,className:"k-group k-menu-group k-reset k-menu-group-md",onMouseOver:this.props.onMouseOver,onMouseLeave:this.props.onMouseLeave,onMouseDown:this.props.onMouseDown,onBlur:this.props.onBlur,onFocus:this.props.onFocus,onClick:this.props.onClick,onOriginalItemNeeded:this.props.onOriginalItemNeeded}))}else return null}renderMenuIconIfApplicable(){const{icon:e,svgIcon:t}=this.props.item;return e||t?s.createElement(p.IconWrap,{name:e,icon:t,key:"0"}):null}renderArrowIfApplicable(){return this.props.item.items.length>0?s.createElement("span",{className:"k-menu-expand-arrow","aria-hidden":!0},s.createElement(h.MenuItemArrow,{itemId:this.props.item.id,verticalMenu:this.props.isMenuVertical,dir:r.convertBoolDirectionToString(this.props.isDirectionRightToLeft),key:"2"})):null}get itemRender(){return this.props.item.render||this.props.itemRender}get linkRender(){return this.props.item.linkRender||this.props.linkRender}get contentRender(){return this.props.item.contentParentItemId?this.props.item.contentRender:null}get Opened(){const e=this.props;return e.item.items.length>0&&d.shouldOpenItem(e.item.id,e.lastItemIdToBeOpened)&&!this.isFirstRender}getPopupClassName(){return p.classNames("k-menu-popup",{"k-rtl":this.props.isDirectionRightToLeft})}getMenuItemClassName(e){return p.classNames("k-item","k-menu-item",{"k-first":d.isFirstItemFromSiblings(e.id),"k-last":e.isLastFromSiblings,"k-disabled":e.disabled},e.cssClass)}}exports.MenuItemInternal=a;exports.MenuItemInternalsList=m;
@@ -0,0 +1,222 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";
9
+ import * as s from "react";
10
+ import { getActiveElement as d, IconWrap as a, classNames as r } from "@progress/kendo-react-common";
11
+ import { Popup as u } from "@progress/kendo-react-popup";
12
+ import { shouldOpenItem as l, isFirstItemFromSiblings as h } from "../utils/itemsIdsUtils.mjs";
13
+ import { getDOMElementId as n, convertBoolDirectionToString as p, getPopupSettings as c } from "../utils/misc.mjs";
14
+ import { MenuItemLink as I } from "./MenuItemLink.mjs";
15
+ import { MenuItemArrow as M } from "./MenuItemArrow.mjs";
16
+ class g extends s.Component {
17
+ constructor() {
18
+ super(...arguments), this.onMouseOver = (e) => {
19
+ this.props.onMouseOver(this.props.parentItemId), e.stopPropagation();
20
+ }, this.onMouseLeave = (e) => {
21
+ this.props.onMouseLeave(this.props.parentItemId), e.stopPropagation();
22
+ };
23
+ }
24
+ render() {
25
+ const e = this.props.parentItemId;
26
+ return /* @__PURE__ */ s.createElement(
27
+ "ul",
28
+ {
29
+ className: this.props.className,
30
+ role: this.props.role ? this.props.role : e !== void 0 ? "menu" : "menubar",
31
+ id: e !== void 0 ? n(this.props.menuGuid, e) : void 0,
32
+ onMouseOver: e !== void 0 ? this.onMouseOver : void 0,
33
+ onMouseLeave: e !== void 0 ? this.onMouseLeave : void 0,
34
+ "aria-orientation": this.props["aria-orientation"]
35
+ },
36
+ this.renderChildItems()
37
+ );
38
+ }
39
+ renderChildItems() {
40
+ return this.props.items.length > 0 ? this.props.items.map((e, t) => /* @__PURE__ */ s.createElement(
41
+ f,
42
+ {
43
+ item: e,
44
+ isMenuVertical: this.props.isMenuVertical,
45
+ isDirectionRightToLeft: this.props.isDirectionRightToLeft,
46
+ focusedItemId: this.props.focusedItemId,
47
+ lastItemIdToBeOpened: this.props.lastItemIdToBeOpened,
48
+ tabbableItemId: this.props.tabbableItemId,
49
+ itemRender: this.props.itemRender,
50
+ linkRender: this.props.linkRender,
51
+ menuGuid: this.props.menuGuid,
52
+ onMouseOver: this.props.onMouseOver,
53
+ onMouseLeave: this.props.onMouseLeave,
54
+ onMouseDown: this.props.onMouseDown,
55
+ onBlur: this.props.onBlur,
56
+ onFocus: this.props.onFocus,
57
+ onClick: this.props.onClick,
58
+ onOriginalItemNeeded: this.props.onOriginalItemNeeded,
59
+ key: t
60
+ }
61
+ )) : null;
62
+ }
63
+ }
64
+ class f extends s.Component {
65
+ constructor(e) {
66
+ super(e), this.isFirstRender = !0, this.onMouseOver = (t) => {
67
+ this.props.onMouseOver(this.props.item.id), t.stopPropagation();
68
+ }, this.onMouseLeave = (t) => {
69
+ this.props.onMouseLeave(this.props.item.id), t.stopPropagation();
70
+ }, this.state = { opened: !1 };
71
+ }
72
+ componentDidMount() {
73
+ const e = this.props.focusedItemId, t = this.props.item.id;
74
+ e && e === t && this.itemElement.focus(), this.isFirstRender = !1;
75
+ }
76
+ componentDidUpdate(e) {
77
+ const t = this.props.focusedItemId, o = this.props.item.id;
78
+ if (t) {
79
+ const i = d(document);
80
+ e.focusedItemId !== t && t === o && !this.itemElement.contains(i) && this.itemElement.focus();
81
+ }
82
+ }
83
+ render() {
84
+ const e = this.props.item, t = e.id, o = n(this.props.menuGuid, t);
85
+ return /* @__PURE__ */ s.createElement(s.Fragment, null, /* @__PURE__ */ s.createElement(
86
+ "li",
87
+ {
88
+ id: n(this.props.menuGuid, t),
89
+ className: this.getMenuItemClassName(e),
90
+ style: e.cssStyle,
91
+ tabIndex: t === this.props.tabbableItemId ? 0 : -1,
92
+ onMouseOver: this.onMouseOver,
93
+ onMouseLeave: this.onMouseLeave,
94
+ onMouseDown: (i) => this.props.onMouseDown(i),
95
+ onBlur: (i) => this.props.onBlur(t, i),
96
+ onFocus: () => this.props.onFocus(t),
97
+ onClick: (i) => this.props.onClick(i, t),
98
+ role: "menuitem",
99
+ "aria-disabled": e.disabled ? !0 : void 0,
100
+ "aria-haspopup": e.items.length > 0 ? !0 : void 0,
101
+ "aria-expanded": e.items.length > 0 ? this.Opened : void 0,
102
+ "aria-label": e.text,
103
+ "aria-owns": this.Opened ? o : void 0,
104
+ ref: (i) => this.itemElement = i,
105
+ key: "0"
106
+ },
107
+ this.contentRender ? this.renderContent() : this.renderMenuItemLink()
108
+ ), this.renderPopupIfOpened());
109
+ }
110
+ renderContent() {
111
+ const e = this.props.item.contentParentItemId;
112
+ return /* @__PURE__ */ s.createElement("div", { className: "k-content", role: "presentation" }, /* @__PURE__ */ s.createElement(this.contentRender, { item: this.props.onOriginalItemNeeded(e), itemId: e }));
113
+ }
114
+ renderMenuItemLink() {
115
+ const e = this.props.item;
116
+ if (this.linkRender)
117
+ return /* @__PURE__ */ s.createElement(
118
+ this.linkRender,
119
+ {
120
+ item: this.props.onOriginalItemNeeded(e.id),
121
+ itemId: e.id,
122
+ opened: this.Opened,
123
+ dir: p(this.props.isDirectionRightToLeft)
124
+ }
125
+ );
126
+ {
127
+ const t = this.itemRender ? /* @__PURE__ */ s.createElement(this.itemRender, { item: this.props.onOriginalItemNeeded(e.id), itemId: e.id, key: "1" }) : /* @__PURE__ */ s.createElement("span", { className: "k-menu-link-text" }, e.text);
128
+ return /* @__PURE__ */ s.createElement(I, { url: e.url, opened: this.Opened }, this.renderMenuIconIfApplicable(), t, this.renderArrowIfApplicable());
129
+ }
130
+ }
131
+ renderPopupIfOpened() {
132
+ if (this.Opened) {
133
+ const e = this.props.item.id, { anchorAlign: t, popupAlign: o, collision: i } = c(e, this.props.isMenuVertical, this.props.isDirectionRightToLeft);
134
+ return /* @__PURE__ */ s.createElement(
135
+ u,
136
+ {
137
+ anchor: this.itemElement,
138
+ show: !0,
139
+ popupClass: this.getPopupClassName(),
140
+ anchorAlign: t,
141
+ popupAlign: o,
142
+ collision: i,
143
+ animate: !1,
144
+ key: "1"
145
+ },
146
+ /* @__PURE__ */ s.createElement(
147
+ g,
148
+ {
149
+ parentItemId: e,
150
+ items: this.props.item.items,
151
+ menuGuid: this.props.menuGuid,
152
+ focusedItemId: this.props.focusedItemId,
153
+ lastItemIdToBeOpened: this.props.lastItemIdToBeOpened,
154
+ tabbableItemId: this.props.tabbableItemId,
155
+ itemRender: this.props.itemRender,
156
+ linkRender: this.props.linkRender,
157
+ isMenuVertical: this.props.isMenuVertical,
158
+ isDirectionRightToLeft: this.props.isDirectionRightToLeft,
159
+ className: "k-group k-menu-group k-reset k-menu-group-md",
160
+ onMouseOver: this.props.onMouseOver,
161
+ onMouseLeave: this.props.onMouseLeave,
162
+ onMouseDown: this.props.onMouseDown,
163
+ onBlur: this.props.onBlur,
164
+ onFocus: this.props.onFocus,
165
+ onClick: this.props.onClick,
166
+ onOriginalItemNeeded: this.props.onOriginalItemNeeded
167
+ }
168
+ )
169
+ );
170
+ } else
171
+ return null;
172
+ }
173
+ renderMenuIconIfApplicable() {
174
+ const { icon: e, svgIcon: t } = this.props.item;
175
+ return e || t ? /* @__PURE__ */ s.createElement(a, { name: e, icon: t, key: "0" }) : null;
176
+ }
177
+ renderArrowIfApplicable() {
178
+ return this.props.item.items.length > 0 ? /* @__PURE__ */ s.createElement("span", { className: "k-menu-expand-arrow", "aria-hidden": !0 }, /* @__PURE__ */ s.createElement(
179
+ M,
180
+ {
181
+ itemId: this.props.item.id,
182
+ verticalMenu: this.props.isMenuVertical,
183
+ dir: p(this.props.isDirectionRightToLeft),
184
+ key: "2"
185
+ }
186
+ )) : null;
187
+ }
188
+ get itemRender() {
189
+ return this.props.item.render || this.props.itemRender;
190
+ }
191
+ get linkRender() {
192
+ return this.props.item.linkRender || this.props.linkRender;
193
+ }
194
+ get contentRender() {
195
+ return this.props.item.contentParentItemId ? this.props.item.contentRender : null;
196
+ }
197
+ get Opened() {
198
+ const e = this.props;
199
+ return e.item.items.length > 0 && l(e.item.id, e.lastItemIdToBeOpened) && // HACK: Wait for the second render because otherwise the scenario of
200
+ // popup inside popup throws an error (for example, hover of item with id '0_0').
201
+ !this.isFirstRender;
202
+ }
203
+ getPopupClassName() {
204
+ return r("k-menu-popup", { "k-rtl": this.props.isDirectionRightToLeft });
205
+ }
206
+ getMenuItemClassName(e) {
207
+ return r(
208
+ "k-item",
209
+ "k-menu-item",
210
+ {
211
+ "k-first": h(e.id),
212
+ "k-last": e.isLastFromSiblings,
213
+ "k-disabled": e.disabled
214
+ },
215
+ e.cssClass
216
+ );
217
+ }
218
+ }
219
+ export {
220
+ f as MenuItemInternal,
221
+ g as MenuItemInternalsList
222
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),i=require("prop-types"),l=require("@progress/kendo-react-common");function p(e){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(s,t,a.get?a:{enumerable:!0,get:()=>e[t]})}}return s.default=e,Object.freeze(s)}const r=p(c),o=class o extends r.Component{render(){return this.props.url?r.createElement("a",{className:this.getMenuItemClassName(),role:"presentation",href:this.props.url,tabIndex:-1},this.props.children):r.createElement("span",{id:this.props.id,className:l.classNames(this.getMenuItemClassName(),this.props.className),style:this.props.style,role:"presentation"},this.props.children)}getMenuItemClassName(){return l.classNames("k-link","k-menu-link",{"k-active":this.props.opened})}};o.propTypes={opened:i.bool,url:i.string};let n=o;exports.MenuItemLink=n;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";
9
+ import * as e from "react";
10
+ import t from "prop-types";
11
+ import { classNames as r } from "@progress/kendo-react-common";
12
+ const s = class s extends e.Component {
13
+ /**
14
+ * @hidden
15
+ */
16
+ render() {
17
+ return this.props.url ? /* @__PURE__ */ e.createElement(
18
+ "a",
19
+ {
20
+ className: this.getMenuItemClassName(),
21
+ role: "presentation",
22
+ href: this.props.url,
23
+ tabIndex: -1
24
+ },
25
+ this.props.children
26
+ ) : /* @__PURE__ */ e.createElement(
27
+ "span",
28
+ {
29
+ id: this.props.id,
30
+ className: r(this.getMenuItemClassName(), this.props.className),
31
+ style: this.props.style,
32
+ role: "presentation"
33
+ },
34
+ this.props.children
35
+ );
36
+ }
37
+ getMenuItemClassName() {
38
+ return r(
39
+ "k-link",
40
+ "k-menu-link",
41
+ {
42
+ "k-active": this.props.opened
43
+ }
44
+ );
45
+ }
46
+ };
47
+ s.propTypes = {
48
+ opened: t.bool,
49
+ url: t.string
50
+ };
51
+ let p = s;
52
+ export {
53
+ p as MenuItemLink
54
+ };
package/menu/consts.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o={vertical:"top",horizontal:"left"},t={vertical:"top",horizontal:"right"},i={vertical:"flip",horizontal:"fit"},l={vertical:"fit",horizontal:"flip"},n={downward:{anchorAlign:{vertical:"bottom",horizontal:"right"},popupAlign:t,collision:i},leftward:{anchorAlign:{vertical:"top",horizontal:"left"},popupAlign:t,collision:l}},r={downward:{anchorAlign:{vertical:"bottom",horizontal:"left"},popupAlign:o,collision:i},rightward:{anchorAlign:{vertical:"top",horizontal:"right"},popupAlign:o,collision:l}};exports.POPUP_SETTINGS=r;exports.POPUP_SETTINGS_RTL=n;