@progress/kendo-react-layout 13.2.1-develop.1 → 13.3.0-develop.1

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 (166) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +1 -1
  3. package/actionsheet/ActionSheet.js +1 -1
  4. package/actionsheet/ActionSheet.mjs +1 -1
  5. package/actionsheet/ActionSheetContent.js +1 -1
  6. package/actionsheet/ActionSheetContent.mjs +1 -1
  7. package/actionsheet/ActionSheetFooter.js +1 -1
  8. package/actionsheet/ActionSheetFooter.mjs +1 -1
  9. package/actionsheet/ActionSheetHeader.js +1 -1
  10. package/actionsheet/ActionSheetHeader.mjs +1 -1
  11. package/actionsheet/ActionSheetItem.js +1 -1
  12. package/actionsheet/ActionSheetItem.mjs +1 -1
  13. package/actionsheet/ActionSheetView.js +1 -1
  14. package/actionsheet/ActionSheetView.mjs +1 -1
  15. package/appbar/AppBar.js +1 -1
  16. package/appbar/AppBar.mjs +1 -1
  17. package/appbar/AppBarSection.js +1 -1
  18. package/appbar/AppBarSection.mjs +1 -1
  19. package/appbar/AppBarSpacer.js +1 -1
  20. package/appbar/AppBarSpacer.mjs +1 -1
  21. package/bottomnavigation/BottomNavigation.js +1 -1
  22. package/bottomnavigation/BottomNavigation.mjs +1 -1
  23. package/bottomnavigation/BottomNavigationItem.js +1 -1
  24. package/bottomnavigation/BottomNavigationItem.mjs +1 -1
  25. package/bottomnavigation/models/utils.js +1 -1
  26. package/bottomnavigation/models/utils.mjs +1 -1
  27. package/breadcrumb/Breadcrumb.js +1 -1
  28. package/breadcrumb/Breadcrumb.mjs +1 -1
  29. package/breadcrumb/BreadcrumbDelimiter.js +1 -1
  30. package/breadcrumb/BreadcrumbDelimiter.mjs +1 -1
  31. package/breadcrumb/BreadcrumbLink.js +1 -1
  32. package/breadcrumb/BreadcrumbLink.mjs +1 -1
  33. package/breadcrumb/BreadcrumbListItem.js +1 -1
  34. package/breadcrumb/BreadcrumbListItem.mjs +1 -1
  35. package/breadcrumb/BreadcrumbOrderedList.js +1 -1
  36. package/breadcrumb/BreadcrumbOrderedList.mjs +1 -1
  37. package/card/Avatar.js +1 -1
  38. package/card/Avatar.mjs +1 -1
  39. package/card/Card.js +1 -1
  40. package/card/Card.mjs +1 -1
  41. package/card/CardActions.js +1 -1
  42. package/card/CardActions.mjs +1 -1
  43. package/card/CardBody.js +1 -1
  44. package/card/CardBody.mjs +1 -1
  45. package/card/CardFooter.js +1 -1
  46. package/card/CardFooter.mjs +1 -1
  47. package/card/CardHeader.js +1 -1
  48. package/card/CardHeader.mjs +1 -1
  49. package/card/CardImage.js +1 -1
  50. package/card/CardImage.mjs +1 -1
  51. package/card/CardSubtitle.js +1 -1
  52. package/card/CardSubtitle.mjs +1 -1
  53. package/card/CardTitle.js +1 -1
  54. package/card/CardTitle.mjs +1 -1
  55. package/card/interfaces/Enums.js +1 -1
  56. package/card/interfaces/Enums.mjs +1 -1
  57. package/contextmenu/ContextMenu.js +2 -2
  58. package/contextmenu/ContextMenu.mjs +21 -17
  59. package/dist/cdn/js/kendo-react-layout.js +3 -3
  60. package/drawer/Drawer.js +1 -1
  61. package/drawer/Drawer.mjs +1 -1
  62. package/drawer/DrawerContent.js +1 -1
  63. package/drawer/DrawerContent.mjs +1 -1
  64. package/drawer/DrawerItem.js +1 -1
  65. package/drawer/DrawerItem.mjs +1 -1
  66. package/drawer/DrawerNavigation.js +1 -1
  67. package/drawer/DrawerNavigation.mjs +1 -1
  68. package/drawer/context/DrawerContext.js +1 -1
  69. package/drawer/context/DrawerContext.mjs +1 -1
  70. package/expansionpanel/ExpansionPanel.js +1 -1
  71. package/expansionpanel/ExpansionPanel.mjs +1 -1
  72. package/expansionpanel/ExpansionPanelContent.js +1 -1
  73. package/expansionpanel/ExpansionPanelContent.mjs +1 -1
  74. package/gridlayout/GridLayout.js +1 -1
  75. package/gridlayout/GridLayout.mjs +1 -1
  76. package/gridlayout/GridLayoutItem.js +1 -1
  77. package/gridlayout/GridLayoutItem.mjs +1 -1
  78. package/index.d.mts +36 -5
  79. package/index.d.ts +36 -5
  80. package/index.js +1 -1
  81. package/index.mjs +1 -1
  82. package/menu/components/Menu.js +2 -2
  83. package/menu/components/Menu.mjs +71 -49
  84. package/menu/components/MenuItem.js +1 -1
  85. package/menu/components/MenuItem.mjs +1 -1
  86. package/menu/components/MenuItemArrow.js +1 -1
  87. package/menu/components/MenuItemArrow.mjs +1 -1
  88. package/menu/components/MenuItemInternal.js +2 -2
  89. package/menu/components/MenuItemInternal.mjs +25 -20
  90. package/menu/components/MenuItemLink.js +1 -1
  91. package/menu/components/MenuItemLink.mjs +1 -1
  92. package/menu/consts.js +1 -1
  93. package/menu/consts.mjs +1 -1
  94. package/menu/utils/DirectionHolder.js +1 -1
  95. package/menu/utils/DirectionHolder.mjs +1 -1
  96. package/menu/utils/MouseOverHandler.js +1 -1
  97. package/menu/utils/MouseOverHandler.mjs +1 -1
  98. package/menu/utils/getNewItemIdUponKeyboardNavigation.js +1 -1
  99. package/menu/utils/getNewItemIdUponKeyboardNavigation.mjs +1 -1
  100. package/menu/utils/hoverDelay.js +1 -1
  101. package/menu/utils/hoverDelay.mjs +1 -1
  102. package/menu/utils/itemsIdsUtils.js +1 -1
  103. package/menu/utils/itemsIdsUtils.mjs +1 -1
  104. package/menu/utils/misc.js +1 -1
  105. package/menu/utils/misc.mjs +1 -1
  106. package/menu/utils/prepareInputItemsForInternalWork.js +1 -1
  107. package/menu/utils/prepareInputItemsForInternalWork.mjs +1 -1
  108. package/package-metadata.js +2 -2
  109. package/package-metadata.mjs +3 -3
  110. package/package.json +8 -8
  111. package/panelbar/PanelBar.js +1 -1
  112. package/panelbar/PanelBar.mjs +1 -1
  113. package/panelbar/PanelBarItem.js +1 -1
  114. package/panelbar/PanelBarItem.mjs +1 -1
  115. package/panelbar/interfaces/NavigationAction.js +1 -1
  116. package/panelbar/interfaces/NavigationAction.mjs +1 -1
  117. package/panelbar/util.js +1 -1
  118. package/panelbar/util.mjs +1 -1
  119. package/splitter/Splitter.js +1 -1
  120. package/splitter/Splitter.mjs +1 -1
  121. package/splitter/SplitterBar.js +1 -1
  122. package/splitter/SplitterBar.mjs +1 -1
  123. package/splitter/SplitterPane.js +1 -1
  124. package/splitter/SplitterPane.mjs +1 -1
  125. package/splitter/messages/index.js +1 -1
  126. package/splitter/messages/index.mjs +1 -1
  127. package/stacklayout/StackLayout.js +1 -1
  128. package/stacklayout/StackLayout.mjs +1 -1
  129. package/stepper/Step.js +1 -1
  130. package/stepper/Step.mjs +1 -1
  131. package/stepper/Stepper.js +1 -1
  132. package/stepper/Stepper.mjs +1 -1
  133. package/stepper/contants.js +1 -1
  134. package/stepper/contants.mjs +1 -1
  135. package/stepper/context/StepperContext.js +1 -1
  136. package/stepper/context/StepperContext.mjs +1 -1
  137. package/stepper/messages/index.js +1 -1
  138. package/stepper/messages/index.mjs +1 -1
  139. package/tabstrip/TabStrip.js +1 -1
  140. package/tabstrip/TabStrip.mjs +1 -1
  141. package/tabstrip/TabStripContent.js +1 -1
  142. package/tabstrip/TabStripContent.mjs +1 -1
  143. package/tabstrip/TabStripNavigation.js +1 -1
  144. package/tabstrip/TabStripNavigation.mjs +1 -1
  145. package/tabstrip/TabStripNavigationItem.js +1 -1
  146. package/tabstrip/TabStripNavigationItem.mjs +1 -1
  147. package/tabstrip/TabStripTab.js +1 -1
  148. package/tabstrip/TabStripTab.mjs +1 -1
  149. package/tabstrip/messages/index.js +1 -1
  150. package/tabstrip/messages/index.mjs +1 -1
  151. package/tilelayout/InternalTile.js +1 -1
  152. package/tilelayout/InternalTile.mjs +1 -1
  153. package/tilelayout/ResizeHandlers.js +1 -1
  154. package/tilelayout/ResizeHandlers.mjs +1 -1
  155. package/tilelayout/TileLayout.js +1 -1
  156. package/tilelayout/TileLayout.mjs +1 -1
  157. package/timeline/Timeline.js +1 -1
  158. package/timeline/Timeline.mjs +1 -1
  159. package/timeline/TimelineCard.js +1 -1
  160. package/timeline/TimelineCard.mjs +1 -1
  161. package/timeline/TimelineHorizontal.js +1 -1
  162. package/timeline/TimelineHorizontal.mjs +1 -1
  163. package/timeline/TimelineVertical.js +1 -1
  164. package/timeline/TimelineVertical.mjs +1 -1
  165. package/timeline/utils.js +1 -1
  166. package/timeline/utils.mjs +1 -1
package/drawer/Drawer.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
package/drawer/Drawer.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
package/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -15,6 +15,7 @@ import { KendoReactComponentBaseProps } from '@progress/kendo-react-common';
15
15
  import { Navigation } from '@progress/kendo-react-common';
16
16
  import { Offset } from '@progress/kendo-react-popup';
17
17
  import { PopupAnimation } from '@progress/kendo-react-popup';
18
+ import { PopupCloseEvent } from '@progress/kendo-react-popup';
18
19
  import * as React_2 from 'react';
19
20
  import { RefAttributes } from 'react';
20
21
  import { SVGIcon } from '@progress/kendo-react-common';
@@ -950,6 +951,7 @@ declare interface BaseMenuItemInternalProps {
950
951
  onClick: any;
951
952
  onBlur: any;
952
953
  onOriginalItemNeeded: any;
954
+ onPopupClose: (itemId: string, popupCloseEvent: PopupCloseEvent) => void;
953
955
  }
954
956
 
955
957
  /**
@@ -2308,10 +2310,10 @@ export declare interface ContextMenuProps extends Omit<MenuProps, 'onClose' | 'o
2308
2310
  *
2309
2311
  * Example:
2310
2312
  * ```jsx
2311
- * <ContextMenu onClose={(e) => console.log('ContextMenu closed')} />
2313
+ * <ContextMenu onClose={(e) => setShow(false)} />
2312
2314
  * ```
2313
2315
  */
2314
- onClose: (event: React_2.SyntheticEvent<HTMLElement>) => void;
2316
+ onClose: (event: MenuCloseEvent) => void;
2315
2317
  }
2316
2318
 
2317
2319
  /**
@@ -3412,6 +3414,7 @@ export declare class MenuClassComponent extends React_2.Component<MenuProps, Men
3412
3414
  linkRender: default_2.Requireable<any>;
3413
3415
  customCloseItemIds: default_2.Requireable<(string | null | undefined)[]>;
3414
3416
  onSelect: default_2.Requireable<(...args: any[]) => any>;
3417
+ onClose: default_2.Requireable<(...args: any[]) => any>;
3415
3418
  role: default_2.Requireable<string>;
3416
3419
  };
3417
3420
  /**
@@ -3465,6 +3468,7 @@ export declare class MenuClassComponent extends React_2.Component<MenuProps, Men
3465
3468
  private onItemMouseDown;
3466
3469
  private onItemFocus;
3467
3470
  private onItemClick;
3471
+ private onPopupClose;
3468
3472
  private onItemBlur;
3469
3473
  private getInputItem;
3470
3474
  private setFocusedItemId;
@@ -3477,6 +3481,28 @@ export declare class MenuClassComponent extends React_2.Component<MenuProps, Men
3477
3481
  private dispatchSelectEventIfWired;
3478
3482
  }
3479
3483
 
3484
+ /**
3485
+ * The arguments for the `itemClose` event of the Menu.
3486
+ */
3487
+ export declare interface MenuCloseEvent {
3488
+ /**
3489
+ * The Menu component instance.
3490
+ */
3491
+ target: MenuClassComponent;
3492
+ /**
3493
+ * The id of the item whose popup was closed. The ids are hierarchical and zero-based. The first root item has a `0` id. If the first root item has children, the first child acquires a `0_0` id and the second acquires a `0_1` id.
3494
+ */
3495
+ itemId: string;
3496
+ /**
3497
+ * The closed item.
3498
+ */
3499
+ item: MenuItemModel;
3500
+ /**
3501
+ * The popup close event if the close was triggered by a popup closing .
3502
+ */
3503
+ popupCloseEvent?: PopupCloseEvent;
3504
+ }
3505
+
3480
3506
  /**
3481
3507
  * Represent the `ref` of the Menu component.
3482
3508
  */
@@ -3797,9 +3823,14 @@ export declare interface MenuProps {
3797
3823
  */
3798
3824
  onSelect?: (event: MenuSelectEvent) => void;
3799
3825
  /**
3800
- * @hidden
3826
+ * Fires when a Menu item is closed.
3827
+ *
3828
+ * @example
3829
+ * ```jsx
3830
+ * <Menu onClose={(event) => console.log('Item closed:', event.item.text)} />
3831
+ * ```
3801
3832
  */
3802
- onClose?: (event: React.SyntheticEvent<HTMLElement>) => void;
3833
+ onClose?: (event: MenuCloseEvent) => void;
3803
3834
  }
3804
3835
 
3805
3836
  /**
package/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -15,6 +15,7 @@ import { KendoReactComponentBaseProps } from '@progress/kendo-react-common';
15
15
  import { Navigation } from '@progress/kendo-react-common';
16
16
  import { Offset } from '@progress/kendo-react-popup';
17
17
  import { PopupAnimation } from '@progress/kendo-react-popup';
18
+ import { PopupCloseEvent } from '@progress/kendo-react-popup';
18
19
  import * as React_2 from 'react';
19
20
  import { RefAttributes } from 'react';
20
21
  import { SVGIcon } from '@progress/kendo-react-common';
@@ -950,6 +951,7 @@ declare interface BaseMenuItemInternalProps {
950
951
  onClick: any;
951
952
  onBlur: any;
952
953
  onOriginalItemNeeded: any;
954
+ onPopupClose: (itemId: string, popupCloseEvent: PopupCloseEvent) => void;
953
955
  }
954
956
 
955
957
  /**
@@ -2308,10 +2310,10 @@ export declare interface ContextMenuProps extends Omit<MenuProps, 'onClose' | 'o
2308
2310
  *
2309
2311
  * Example:
2310
2312
  * ```jsx
2311
- * <ContextMenu onClose={(e) => console.log('ContextMenu closed')} />
2313
+ * <ContextMenu onClose={(e) => setShow(false)} />
2312
2314
  * ```
2313
2315
  */
2314
- onClose: (event: React_2.SyntheticEvent<HTMLElement>) => void;
2316
+ onClose: (event: MenuCloseEvent) => void;
2315
2317
  }
2316
2318
 
2317
2319
  /**
@@ -3412,6 +3414,7 @@ export declare class MenuClassComponent extends React_2.Component<MenuProps, Men
3412
3414
  linkRender: default_2.Requireable<any>;
3413
3415
  customCloseItemIds: default_2.Requireable<(string | null | undefined)[]>;
3414
3416
  onSelect: default_2.Requireable<(...args: any[]) => any>;
3417
+ onClose: default_2.Requireable<(...args: any[]) => any>;
3415
3418
  role: default_2.Requireable<string>;
3416
3419
  };
3417
3420
  /**
@@ -3465,6 +3468,7 @@ export declare class MenuClassComponent extends React_2.Component<MenuProps, Men
3465
3468
  private onItemMouseDown;
3466
3469
  private onItemFocus;
3467
3470
  private onItemClick;
3471
+ private onPopupClose;
3468
3472
  private onItemBlur;
3469
3473
  private getInputItem;
3470
3474
  private setFocusedItemId;
@@ -3477,6 +3481,28 @@ export declare class MenuClassComponent extends React_2.Component<MenuProps, Men
3477
3481
  private dispatchSelectEventIfWired;
3478
3482
  }
3479
3483
 
3484
+ /**
3485
+ * The arguments for the `itemClose` event of the Menu.
3486
+ */
3487
+ export declare interface MenuCloseEvent {
3488
+ /**
3489
+ * The Menu component instance.
3490
+ */
3491
+ target: MenuClassComponent;
3492
+ /**
3493
+ * The id of the item whose popup was closed. The ids are hierarchical and zero-based. The first root item has a `0` id. If the first root item has children, the first child acquires a `0_0` id and the second acquires a `0_1` id.
3494
+ */
3495
+ itemId: string;
3496
+ /**
3497
+ * The closed item.
3498
+ */
3499
+ item: MenuItemModel;
3500
+ /**
3501
+ * The popup close event if the close was triggered by a popup closing .
3502
+ */
3503
+ popupCloseEvent?: PopupCloseEvent;
3504
+ }
3505
+
3480
3506
  /**
3481
3507
  * Represent the `ref` of the Menu component.
3482
3508
  */
@@ -3797,9 +3823,14 @@ export declare interface MenuProps {
3797
3823
  */
3798
3824
  onSelect?: (event: MenuSelectEvent) => void;
3799
3825
  /**
3800
- * @hidden
3826
+ * Fires when a Menu item is closed.
3827
+ *
3828
+ * @example
3829
+ * ```jsx
3830
+ * <Menu onClose={(event) => console.log('Item closed:', event.item.text)} />
3831
+ * ```
3801
3832
  */
3802
- onClose?: (event: React.SyntheticEvent<HTMLElement>) => void;
3833
+ onClose?: (event: MenuCloseEvent) => void;
3803
3834
  }
3804
3835
 
3805
3836
  /**
package/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
package/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  *-------------------------------------------------------------------------------------------
4
- * Copyright © 2025 Progress Software Corporation. All rights reserved.
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react"),o=require("prop-types"),a=require("@progress/kendo-react-common"),i=require("../utils/itemsIdsUtils.js"),v=require("../utils/prepareInputItemsForInternalWork.js"),h=require("../utils/getNewItemIdUponKeyboardNavigation.js"),u=require("../utils/hoverDelay.js"),f=require("./MenuItemInternal.js"),b=require("../utils/DirectionHolder.js"),g=require("../utils/MouseOverHandler.js");function D(n){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(t,e,s.get?s:{enumerable:!0,get:()=>n[e]})}}return t.default=n,Object.freeze(t)}const d=D(p),c={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 b.DirectionHolder,this.inputItems=[],this.items=[],this.reset=()=>{this.clearItemHoverAndLeaveRequestsIfApplicable(),this.setState(c)},this.onKeyDown=e=>{if(this.state.focusedItemId!==i.EMPTY_ID){const s=i.getItemById(this.state.focusedItemId,this.items);let r=h.getNewItemIdUponKeyboardNavigation(this.items,s.id,e.keyCode,e.key,this.props.vertical,this.directionHolder.getIsDirectionRightToLeft());const I=i.getItemById(r,this.items);I&&I.separator&&(r=h.getNewItemIdUponKeyboardNavigation(this.items,r,e.keyCode,e.key,this.props.vertical,this.directionHolder.getIsDirectionRightToLeft())),s.id!==r&&(e.preventDefault(),this.setFocusedItemId(r)),(e.keyCode===a.Keys.enter||e.keyCode===a.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===a.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},u.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},u.getHoverCloseDelay(this.props)))},this.onItemMouseDown=()=>{this.mouseOverHandler.handleItemMouseDown()},this.onItemFocus=e=>{this.setFocusedItemId(e),this.mouseOverHandler.handleItemFocus()},this.onItemClick=(e,s)=>{const r=i.getItemById(s,this.items);r.disabled||(this.setFocusedItemId(s),this.mouseOverHandler.handleItemClick(s,this.isItemWithDefaultClose(s)),this.dispatchSelectEventIfWired(e,s),!e.isDefaultPrevented()&&r.url&&window.location.assign(r.url))},this.onItemBlur=(e,s)=>{if(this.isItemWithDefaultClose(e)&&this.setFocusedItemId(i.EMPTY_ID),s.relatedTarget&&s.relatedTarget.nodeName==="LI"){const r=s.relatedTarget.getAttribute("id");if(r&&r.includes(this.menuItemId))return}this.props.onClose&&this.props.onClose.call(void 0,s)},this.getInputItem=e=>i.getItemById(e,this.inputItems),this.mouseOverHandler=new g.MouseOverHandler(this.props.openOnClick,this.reset,this.onItemMouseOver),this.state=Object.assign({},c,{isFirstRender:!0})}get menuItemId(){return this.props.id}get element(){return this.menuWrapperEl}get animate(){return this.props.animate!==void 0?this.props.animate:l.defaultProps.animate}render(){this.prepareItems(),this.state.isFirstRender||this.directionHolder.setIsDirectionRightToLeft(this.checkIsDirectionRightToLeft());const 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(f.MenuItemInternalsList,{className:this.getMenuClassName(),"aria-orientation":this.props.vertical?"vertical":void 0,items:this.items,animate:this.animate,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 a.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}=v.prepareInputItemsForInternalWork(this.props.items,this.props.children);this.items=t,this.inputItems=e}dispatchSelectEventIfWired(t,e){a.dispatchEvent(this.props.onSelect,t,this,{item:this.getInputItem(e),itemId:e})}};l.propTypes={vertical:o.bool,items:o.arrayOf(o.object),style:o.object,animate:o.oneOfType([o.bool,o.shape({openDuration:o.number,closeDuration:o.number})]),dir:o.string,hoverOpenDelay:o.number,hoverCloseDelay:o.number,openOnClick:o.bool,itemRender:o.any,linkRender:o.any,customCloseItemIds:o.arrayOf(o.string),onSelect:o.func,role:o.string},l.defaultProps={vertical:!1,animate:!0};let m=l;exports.Menu=m;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react"),o=require("prop-types"),a=require("@progress/kendo-react-common"),i=require("../utils/itemsIdsUtils.js"),f=require("../utils/prepareInputItemsForInternalWork.js"),h=require("../utils/getNewItemIdUponKeyboardNavigation.js"),u=require("../utils/hoverDelay.js"),g=require("./MenuItemInternal.js"),b=require("../utils/DirectionHolder.js"),D=require("../utils/MouseOverHandler.js");function y(n){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const t=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(s,e,t.get?t:{enumerable:!0,get:()=>n[e]})}}return s.default=n,Object.freeze(s)}const d=y(v),c={focusedItemId:i.EMPTY_ID,hoveredItemId:i.EMPTY_ID,tabbableItemId:i.ZERO_LEVEL_ZERO_ITEM_ID},l=class l extends d.Component{constructor(s){super(s),this.menuWrapperEl=null,this.directionHolder=new b.DirectionHolder,this.inputItems=[],this.items=[],this.reset=()=>{this.clearItemHoverAndLeaveRequestsIfApplicable(),this.setState(c)},this.onKeyDown=e=>{if(this.state.focusedItemId!==i.EMPTY_ID){const t=i.getItemById(this.state.focusedItemId,this.items);let r=h.getNewItemIdUponKeyboardNavigation(this.items,t.id,e.keyCode,e.key,this.props.vertical,this.directionHolder.getIsDirectionRightToLeft());const I=i.getItemById(r,this.items);if(I&&I.separator&&(r=h.getNewItemIdUponKeyboardNavigation(this.items,r,e.keyCode,e.key,this.props.vertical,this.directionHolder.getIsDirectionRightToLeft())),t.id!==r&&(e.preventDefault(),this.setFocusedItemId(r)),(e.keyCode===a.Keys.enter||e.keyCode===a.Keys.space)&&!t.disabled&&(this.mouseOverHandler.handleItemSelectedViaKeyboard(),this.dispatchSelectEventIfWired(e,t.id),!e.isDefaultPrevented()&&t.items.length===0&&t.url&&window.location.assign(t.url)),e.keyCode===a.Keys.esc&&i.isIdZeroLevel(t.id)&&this.props.onClose){const p=this.getInputItem(t.id);this.props.onClose({target:this,item:p,itemId:t.id})}}},this.onItemMouseOver=e=>{this.mouseOverHandler.IsMouseOverEnabled&&(this.clearItemHoverAndLeaveRequestsIfApplicable(),this.itemHoverRequest=window.setTimeout(()=>{this.setHoveredItemId(e),this.itemHoverRequest=null},u.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},u.getHoverCloseDelay(this.props)))},this.onItemMouseDown=()=>{this.mouseOverHandler.handleItemMouseDown()},this.onItemFocus=e=>{this.setFocusedItemId(e),this.mouseOverHandler.handleItemFocus()},this.onItemClick=(e,t)=>{const r=i.getItemById(t,this.items);r.disabled||(this.setFocusedItemId(t),this.mouseOverHandler.handleItemClick(t,this.isItemWithDefaultClose(t)),this.dispatchSelectEventIfWired(e,t),!e.isDefaultPrevented()&&r.url&&window.location.assign(r.url))},this.onPopupClose=(e,t)=>{this.props.onClose&&this.props.onClose({target:this,item:this.getInputItem(e),itemId:e,popupCloseEvent:t})},this.onItemBlur=(e,t)=>{if(this.isItemWithDefaultClose(e)&&this.setFocusedItemId(i.EMPTY_ID),t.relatedTarget&&t.relatedTarget.nodeName==="LI"){const r=t.relatedTarget.getAttribute("id");if(r&&r.includes(this.menuItemId))return}if(i.isIdZeroLevel(e)&&this.props.onClose){const r=this.getInputItem(e);this.props.onClose({target:this,item:r,itemId:e})}},this.getInputItem=e=>i.getItemById(e,this.inputItems),this.mouseOverHandler=new D.MouseOverHandler(this.props.openOnClick,this.reset,this.onItemMouseOver),this.state=Object.assign({},c,{isFirstRender:!0})}get menuItemId(){return this.props.id}get element(){return this.menuWrapperEl}get animate(){return this.props.animate!==void 0?this.props.animate:l.defaultProps.animate}render(){this.prepareItems(),this.state.isFirstRender||this.directionHolder.setIsDirectionRightToLeft(this.checkIsDirectionRightToLeft());const s=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(g.MenuItemInternalsList,{className:this.getMenuClassName(),"aria-orientation":this.props.vertical?"vertical":void 0,items:this.items,animate:this.animate,isMenuVertical:this.props.vertical,isDirectionRightToLeft:this.directionHolder.getIsDirectionRightToLeft(),focusedItemId:this.state.focusedItemId,lastItemIdToBeOpened:s,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,onPopupClose:this.onPopupClose,role:this.props.role}))}componentDidMount(){this.setState({isFirstRender:!1})}componentDidUpdate(s){(!!s.vertical!=!!this.props.vertical||this.directionHolder.hasDirectionChanged())&&this.reset(),this.mouseOverHandler.OpenOnClick=this.props.openOnClick}componentWillUnmount(){this.clearItemHoverAndLeaveRequestsIfApplicable()}setFocusedItemId(s){this.setState(e=>{const t=s===i.EMPTY_ID?e.tabbableItemId:i.getRootParentId(s);return{hoveredItemId:s===i.EMPTY_ID||i.isIdEmptyOrZeroLevel(e.hoveredItemId)&&i.isIdEmptyOrZeroLevel(s)?e.hoveredItemId:i.EMPTY_ID,focusedItemId:s,tabbableItemId:t}})}setHoveredItemId(s){this.setState(e=>i.isIdEmptyOrZeroLevel(s)&&i.isIdEmptyOrZeroLevel(e.focusedItemId)?{hoveredItemId:s,focusedItemId:e.focusedItemId,tabbableItemId:e.tabbableItemId}:{hoveredItemId:s,focusedItemId:i.EMPTY_ID,tabbableItemId:i.ZERO_LEVEL_ZERO_ITEM_ID})}getMenuClassName(){return a.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(s){return!this.props.customCloseItemIds||this.props.customCloseItemIds.indexOf(s)===-1}checkIsDirectionRightToLeft(){return!!(this.props.dir!==void 0?this.props.dir==="rtl":this.menuWrapperEl&&getComputedStyle(this.menuWrapperEl).direction==="rtl")}prepareItems(){const{items:s,inputItems:e}=f.prepareInputItemsForInternalWork(this.props.items,this.props.children);this.items=s,this.inputItems=e}dispatchSelectEventIfWired(s,e){a.dispatchEvent(this.props.onSelect,s,this,{item:this.getInputItem(e),itemId:e})}};l.propTypes={vertical:o.bool,items:o.arrayOf(o.object),style:o.object,animate:o.oneOfType([o.bool,o.shape({openDuration:o.number,closeDuration:o.number})]),dir:o.string,hoverOpenDelay:o.number,hoverCloseDelay:o.number,openOnClick:o.bool,itemRender:o.any,linkRender:o.any,customCloseItemIds:o.arrayOf(o.string),onSelect:o.func,onClose:o.func,role:o.string},l.defaultProps={vertical:!1,animate:!0};let m=l;exports.Menu=m;