@progress/kendo-react-layout 14.4.1-develop.9 → 14.5.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 (75) hide show
  1. package/actionsheet/ActionSheet.d.ts +1 -1
  2. package/actionsheet/ActionSheetContent.d.ts +1 -1
  3. package/actionsheet/ActionSheetFooter.d.ts +1 -1
  4. package/actionsheet/ActionSheetHeader.d.ts +1 -1
  5. package/actionsheet/ActionSheetItem.d.ts +1 -1
  6. package/appbar/AppBar.d.ts +1 -1
  7. package/appbar/AppBarSection.d.ts +1 -1
  8. package/appbar/AppBarSpacer.d.ts +1 -1
  9. package/bottomnavigation/BottomNavigation.d.ts +1 -1
  10. package/bottomnavigation/BottomNavigationProps.d.ts +2 -2
  11. package/card/Avatar.d.ts +1 -1
  12. package/card/Card.d.ts +2 -2
  13. package/card/CardActions.d.ts +1 -1
  14. package/card/CardBody.d.ts +1 -1
  15. package/card/CardFooter.d.ts +1 -1
  16. package/card/CardHeader.d.ts +1 -1
  17. package/card/CardImage.d.ts +1 -1
  18. package/card/CardSubtitle.d.ts +1 -1
  19. package/card/CardTitle.d.ts +1 -1
  20. package/card/interfaces/CardHandle.d.ts +1 -1
  21. package/contextmenu/ContextMenu.d.ts +2 -2
  22. package/dist/cdn/js/kendo-react-layout.js +1 -1
  23. package/drawer/Drawer.d.ts +1 -1
  24. package/drawer/DrawerContent.d.ts +1 -1
  25. package/drawer/DrawerItem.d.ts +2 -2
  26. package/drawer/DrawerNavigation.d.ts +1 -1
  27. package/drawer/context/DrawerContext.d.ts +2 -2
  28. package/drawer/interfaces/DrawerProps.d.ts +3 -3
  29. package/expansionpanel/ExpansionPanel.d.ts +1 -1
  30. package/expansionpanel/index.d.ts +1 -1
  31. package/gridlayout/GridLayout.d.ts +1 -1
  32. package/gridlayout/GridLayoutItem.d.ts +1 -1
  33. package/gridlayout/interfaces/GridLayoutProps.d.ts +2 -2
  34. package/index.d.mts +39 -39
  35. package/index.d.ts +39 -39
  36. package/menu/MenuProps.d.ts +2 -2
  37. package/menu/components/Menu.d.ts +15 -94
  38. package/menu/components/Menu.js +1 -1
  39. package/menu/components/Menu.mjs +223 -212
  40. package/menu/components/MenuItem.d.ts +5 -25
  41. package/menu/components/MenuItem.js +1 -1
  42. package/menu/components/MenuItem.mjs +16 -24
  43. package/menu/components/MenuItemArrow.d.ts +1 -16
  44. package/menu/components/MenuItemArrow.js +1 -1
  45. package/menu/components/MenuItemArrow.mjs +26 -35
  46. package/menu/components/MenuItemInternal.d.ts +4 -37
  47. package/menu/components/MenuItemInternal.js +1 -1
  48. package/menu/components/MenuItemInternal.mjs +174 -219
  49. package/menu/components/MenuItemLink.d.ts +1 -15
  50. package/menu/components/MenuItemLink.js +1 -1
  51. package/menu/components/MenuItemLink.mjs +17 -30
  52. package/menu/events.d.ts +5 -5
  53. package/menu/models/MenuItemModel.d.ts +1 -1
  54. package/menu/utils/DirectionHolder.js +1 -1
  55. package/menu/utils/DirectionHolder.mjs +1 -1
  56. package/menu/utils/getNewItemIdUponKeyboardNavigation.d.ts +1 -1
  57. package/menu/utils/hoverDelay.d.ts +1 -1
  58. package/menu/utils/prepareInputItemsForInternalWork.d.ts +1 -1
  59. package/package-metadata.js +1 -1
  60. package/package-metadata.mjs +2 -2
  61. package/package.json +8 -8
  62. package/panelbar/PanelBarItem.d.ts +1 -1
  63. package/panelbar/interfaces/PanelBarItemHandle.d.ts +1 -1
  64. package/panelbar/interfaces/PanelBarSelectEventArguments.d.ts +1 -1
  65. package/panelbar/util.d.ts +2 -2
  66. package/stacklayout/StackLayout.d.ts +1 -1
  67. package/stepper/Step.d.ts +2 -2
  68. package/stepper/Stepper.d.ts +2 -2
  69. package/stepper/context/StepperContext.d.ts +3 -3
  70. package/stepper/interfaces/StepChangeEvent.d.ts +1 -1
  71. package/stepper/interfaces/StepFocusEvent.d.ts +1 -1
  72. package/stepper/interfaces/StepperChangeEvent.d.ts +1 -1
  73. package/stepper/interfaces/StepperFocusEvent.d.ts +1 -1
  74. package/stepper/interfaces/StepperOnNavigateEvent.d.ts +1 -1
  75. package/stepper/interfaces/StepperProps.d.ts +3 -3
@@ -6,43 +6,34 @@
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
8
  import * as e from "react";
9
- import t from "prop-types";
10
- import { IconWrap as n } from "@progress/kendo-react-common";
11
- import { caretAltLeftIcon as i, caretAltRightIcon as a, caretAltDownIcon as c } from "@progress/kendo-svg-icons";
12
- import { getChildrenPosition as s } from "../utils/misc.mjs";
13
- const l = "caret-alt-down", p = "caret-alt-right", d = "caret-alt-left", r = class r extends e.Component {
14
- /**
15
- * @hidden
16
- */
17
- render() {
18
- return /* @__PURE__ */ e.createElement(n, { "aria-hidden": !0, ...this.getIcon() });
9
+ import r from "prop-types";
10
+ import { IconWrap as o } from "@progress/kendo-react-common";
11
+ import { caretAltLeftIcon as n, caretAltRightIcon as i, caretAltDownIcon as a } from "@progress/kendo-svg-icons";
12
+ import { getChildrenPosition as c } from "../utils/misc.mjs";
13
+ const m = "caret-alt-down", l = "caret-alt-right", d = "caret-alt-left", s = (t) => {
14
+ switch (c(
15
+ t.itemId,
16
+ t.verticalMenu === !0,
17
+ t.dir === "rtl"
18
+ )) {
19
+ case "downward":
20
+ return { name: m, icon: a };
21
+ case "rightward":
22
+ return { name: l, icon: i };
23
+ case "leftward":
24
+ return { name: d, icon: n };
25
+ default:
26
+ return {};
19
27
  }
20
- getIcon() {
21
- switch (s(
22
- this.props.itemId,
23
- this.props.verticalMenu === !0,
24
- this.props.dir === "rtl"
25
- )) {
26
- case "downward":
27
- return { name: l, icon: c };
28
- case "rightward":
29
- return { name: p, icon: a };
30
- case "leftward":
31
- return { name: d, icon: i };
32
- default:
33
- return {};
34
- }
35
- }
36
- };
37
- r.propTypes = {
38
- itemId: t.string,
39
- dir: t.string,
40
- verticalMenu: t.bool
28
+ }, w = (t) => /* @__PURE__ */ e.createElement(o, { "aria-hidden": !0, ...s(t) });
29
+ w.propTypes = {
30
+ itemId: r.string,
31
+ dir: r.string,
32
+ verticalMenu: r.bool
41
33
  };
42
- let o = r;
43
34
  export {
44
- o as MenuItemArrow,
45
- l as downArrowName,
35
+ w as MenuItemArrow,
36
+ m as downArrowName,
46
37
  d as leftArrowName,
47
- p as rightArrowName
38
+ l as rightArrowName
48
39
  };
@@ -5,9 +5,9 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import { MenuItemInternalModel } from '../models/MenuItemModel.js';
8
+ import { MenuItemInternalModel } from '../models/MenuItemModel';
9
9
  import { PopupAnimation } from '@progress/kendo-react-popup';
10
- import { BaseMenuItemInternalProps } from './../BaseMenuItemInternalProps.js';
10
+ import { BaseMenuItemInternalProps } from './../BaseMenuItemInternalProps';
11
11
  import * as React from 'react';
12
12
  /**
13
13
  * @hidden
@@ -23,12 +23,7 @@ export interface MenuItemInternalsListProps extends BaseMenuItemInternalProps {
23
23
  /**
24
24
  * @hidden
25
25
  */
26
- export declare class MenuItemInternalsList extends React.Component<MenuItemInternalsListProps, {}> {
27
- render(): React.JSX.Element;
28
- private renderChildItems;
29
- private onMouseOver;
30
- private onMouseLeave;
31
- }
26
+ export declare const MenuItemInternalsList: (props: MenuItemInternalsListProps) => React.JSX.Element;
32
27
  /**
33
28
  * @hidden
34
29
  */
@@ -39,32 +34,4 @@ export interface MenuItemInternalProps extends BaseMenuItemInternalProps {
39
34
  /**
40
35
  * @hidden
41
36
  */
42
- export interface MenuItemInternalState {
43
- opened: boolean;
44
- }
45
- /**
46
- * @hidden
47
- */
48
- export declare class MenuItemInternal extends React.Component<MenuItemInternalProps, MenuItemInternalState> {
49
- readonly state: MenuItemInternalState;
50
- private itemElement;
51
- private isFirstRender;
52
- constructor(props: MenuItemInternalProps);
53
- componentDidMount(): void;
54
- componentDidUpdate(prevProps: MenuItemInternalProps): void;
55
- render(): React.JSX.Element;
56
- private renderContent;
57
- private renderMenuItemLink;
58
- private renderPopupIfOpened;
59
- private renderMenuIconIfApplicable;
60
- private renderArrowIfApplicable;
61
- private onMouseOver;
62
- private onMouseLeave;
63
- private get itemRender();
64
- private onPopupClose;
65
- private get linkRender();
66
- private get contentRender();
67
- private get Opened();
68
- private getPopupClassName;
69
- private getMenuItemClassName;
70
- }
37
+ export declare const MenuItemInternal: (props: MenuItemInternalProps) => React.JSX.Element;
@@ -5,4 +5,4 @@
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 h=require("react"),a=require("@progress/kendo-react-common"),I=require("@progress/kendo-react-popup"),m=require("../utils/itemsIdsUtils.js"),p=require("../utils/misc.js"),g=require("./MenuItemLink.js"),M=require("./MenuItemArrow.js");function f(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const i=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const s=f(h);class l 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?p.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(u,{item:e,animate:this.props.animate,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,onBlur:this.props.onBlur,onFocus:this.props.onFocus,onClick:this.props.onClick,onOriginalItemNeeded:this.props.onOriginalItemNeeded,onPopupClose:this.props.onPopupClose,key:t})):null}}class u 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.onPopupClose=t=>{this.props.onPopupClose(this.props.item.id,t)},this.state={opened:!1}}componentDidMount(){const e=this.props.focusedItemId,t=this.props.item.id;e&&e===t&&this.itemElement.focus({preventScroll:!0}),this.isFirstRender=!1}componentDidUpdate(e){const t=this.props.focusedItemId,i=this.props.item.id;if(t){const r=a.getActiveElement(document);e.focusedItemId!==t&&t===i&&!this.itemElement.contains(r)&&this.itemElement.focus({preventScroll:!0})}}render(){const e=this.props.item,t=e.id,i=p.getDOMElementId(this.props.menuGuid,t),r=e.separator;return s.createElement(s.Fragment,null,r?s.createElement("li",{className:"k-separator k-item","aria-hidden":!0,key:i,id:i,ref:o=>{this.itemElement=o}}):s.createElement("li",{id:i,className:this.getMenuItemClassName(e),style:e.cssStyle,tabIndex:t===this.props.tabbableItemId?0:-1,onMouseOver:this.onMouseOver,onMouseLeave:this.onMouseLeave,onBlur:o=>this.props.onBlur(t,o),onFocus:()=>this.props.onFocus(t),onClick:o=>this.props.onClick(o,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:o=>{this.itemElement=o},key:i},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:p.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(g.MenuItemLink,{url:e.url,opened:this.Opened},this.renderMenuIconIfApplicable(),t,this.renderArrowIfApplicable())}renderPopupIfOpened(){const e=this.props.item.id,t=this.props.animate,{anchorAlign:i,popupAlign:r,collision:o,animationDirection:d}=p.getPopupSettings(e,this.props.isMenuVertical,this.props.isDirectionRightToLeft),c=t===!0?{openDuration:300,closeDuration:300,direction:d}:t===!1?!1:{openDuration:(t==null?void 0:t.openDuration)||300,closeDuration:(t==null?void 0:t.closeDuration)||300,direction:(t==null?void 0:t.direction)||d};return s.createElement(I.Popup,{anchor:this.itemElement,show:this.Opened,popupClass:this.getPopupClassName(),anchorAlign:i,popupAlign:r,collision:o,animate:c,onClose:this.onPopupClose,key:"1"},s.createElement(l,{parentItemId:e,animate:this.props.animate,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,onBlur:this.props.onBlur,onFocus:this.props.onFocus,onClick:this.props.onClick,onOriginalItemNeeded:this.props.onOriginalItemNeeded,onPopupClose:this.props.onPopupClose}))}renderMenuIconIfApplicable(){const{icon:e,svgIcon:t}=this.props.item;return e||t?s.createElement(a.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(M.MenuItemArrow,{itemId:this.props.item.id,verticalMenu:this.props.isMenuVertical,dir:p.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&&m.shouldOpenItem(e.item.id,e.lastItemIdToBeOpened)&&!this.isFirstRender}getPopupClassName(){return a.classNames("k-menu-popup",{"k-rtl":this.props.isDirectionRightToLeft})}getMenuItemClassName(e){return a.classNames("k-item","k-menu-item",{"k-first":m.isFirstItemFromSiblings(e.id),"k-last":e.isLastFromSiblings,"k-disabled":e.disabled},e.cssClass)}}exports.MenuItemInternal=u;exports.MenuItemInternalsList=l;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("react"),k=require("@progress/kendo-react-common"),S=require("@progress/kendo-react-popup"),M=require("../utils/itemsIdsUtils.js"),f=require("../utils/misc.js"),q=require("./MenuItemLink.js"),x=require("./MenuItemArrow.js");function w(e){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const l=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(o,r,l.get?l:{enumerable:!0,get:()=>e[r]})}}return o.default=e,Object.freeze(o)}const i=w(F),b=e=>{const{parentItemId:o}=e,r=o!==void 0?a=>{e.onMouseOver(o),a.stopPropagation()}:void 0,l=o!==void 0?a=>{e.onMouseLeave(o),a.stopPropagation()}:void 0;let t;return e.role?t=e.role:o!==void 0?t="menu":t="menubar",i.createElement("ul",{className:e.className,role:t,id:o!==void 0?f.getDOMElementId(e.menuGuid,o):void 0,onMouseOver:r,onMouseLeave:l,"aria-orientation":e["aria-orientation"]},e.items.length>0?e.items.map((a,u)=>i.createElement(O,{item:a,animate:e.animate,isMenuVertical:e.isMenuVertical,isDirectionRightToLeft:e.isDirectionRightToLeft,focusedItemId:e.focusedItemId,lastItemIdToBeOpened:e.lastItemIdToBeOpened,tabbableItemId:e.tabbableItemId,itemRender:e.itemRender,linkRender:e.linkRender,menuGuid:e.menuGuid,onMouseOver:e.onMouseOver,onMouseLeave:e.onMouseLeave,onBlur:e.onBlur,onFocus:e.onFocus,onClick:e.onClick,onOriginalItemNeeded:e.onOriginalItemNeeded,onPopupClose:e.onPopupClose,key:u})):null)},O=e=>{const o=i.useRef(null),r=i.useRef(!0),l=i.useRef(void 0),t=e.item,a=t.id,u=f.getDOMElementId(e.menuGuid,a),L=t.separator,E=t.render||e.itemRender,v=t.linkRender||e.linkRender,R=t.contentParentItemId?t.contentRender:null,m=t.items.length>0&&M.shouldOpenItem(a,e.lastItemIdToBeOpened)&&!r.current;i.useEffect(()=>{var g,I,d;const n=e.focusedItemId,c=e.item.id,s=l.current;if(r.current)n&&n===c&&((g=o.current)==null||g.focus({preventScroll:!0})),r.current=!1;else if(n){const B=k.getActiveElement(document);s!==n&&n===c&&!((I=o.current)!=null&&I.contains(B))&&((d=o.current)==null||d.focus({preventScroll:!0}))}l.current=n});const D=n=>{e.onMouseOver(a),n.stopPropagation()},h=n=>{e.onMouseLeave(a),n.stopPropagation()},P=n=>{e.onPopupClose(a,n)},C=()=>{const n=t.contentParentItemId,c=R;return i.createElement("div",{className:"k-content",role:"presentation"},i.createElement(c,{item:e.onOriginalItemNeeded(n),itemId:n}))},N=()=>{if(v){const s=v;return i.createElement(s,{item:e.onOriginalItemNeeded(t.id),itemId:t.id,opened:m,dir:f.convertBoolDirectionToString(e.isDirectionRightToLeft)})}const n=E,c=n?i.createElement(n,{item:e.onOriginalItemNeeded(t.id),itemId:t.id,key:"1"}):i.createElement("span",{className:"k-menu-link-text"},t.text);return i.createElement(q.MenuItemLink,{url:t.url,opened:m},t.icon||t.svgIcon?i.createElement(k.IconWrap,{name:t.icon,icon:t.svgIcon,key:"0"}):null,c,t.items.length>0?i.createElement("span",{className:"k-menu-expand-arrow","aria-hidden":!0},i.createElement(x.MenuItemArrow,{itemId:t.id,verticalMenu:e.isMenuVertical,dir:f.convertBoolDirectionToString(e.isDirectionRightToLeft),key:"2"})):null)},T=()=>{const n=e.animate,{anchorAlign:c,popupAlign:s,collision:g,animationDirection:I}=f.getPopupSettings(a,e.isMenuVertical,e.isDirectionRightToLeft);let d;return n===!0?d={openDuration:300,closeDuration:300,direction:I}:n===!1?d=!1:d={openDuration:(n==null?void 0:n.openDuration)||300,closeDuration:(n==null?void 0:n.closeDuration)||300,direction:(n==null?void 0:n.direction)||I},i.createElement(S.Popup,{anchor:o.current,show:m,popupClass:k.classNames("k-menu-popup",{"k-rtl":e.isDirectionRightToLeft}),anchorAlign:c,popupAlign:s,collision:g,animate:d,onClose:P,key:"1"},i.createElement(b,{parentItemId:a,animate:e.animate,items:t.items,menuGuid:e.menuGuid,focusedItemId:e.focusedItemId,lastItemIdToBeOpened:e.lastItemIdToBeOpened,tabbableItemId:e.tabbableItemId,itemRender:e.itemRender,linkRender:e.linkRender,isMenuVertical:e.isMenuVertical,isDirectionRightToLeft:e.isDirectionRightToLeft,className:"k-group k-menu-group k-reset k-menu-group-md",onMouseOver:e.onMouseOver,onMouseLeave:e.onMouseLeave,onBlur:e.onBlur,onFocus:e.onFocus,onClick:e.onClick,onOriginalItemNeeded:e.onOriginalItemNeeded,onPopupClose:e.onPopupClose}))},y=k.classNames("k-item","k-menu-item",{"k-first":M.isFirstItemFromSiblings(a),"k-last":t.isLastFromSiblings,"k-disabled":t.disabled},t.cssClass);return i.createElement(i.Fragment,null,L?i.createElement("li",{className:"k-separator k-item","aria-hidden":!0,key:u,id:u,ref:o}):i.createElement("li",{id:u,className:y,style:t.cssStyle,tabIndex:a===e.tabbableItemId?0:-1,onMouseOver:D,onMouseLeave:h,onBlur:n=>e.onBlur(a,n),onFocus:()=>e.onFocus(a),onClick:n=>e.onClick(n,a),role:"menuitem","aria-disabled":t.disabled?!0:void 0,"aria-haspopup":t.items.length>0?!0:void 0,"aria-expanded":t.items.length>0?m:void 0,"aria-label":t.text,"aria-owns":m?u:void 0,ref:o,key:u},R?C():N()),T())};exports.MenuItemInternal=O;exports.MenuItemInternalsList=b;
@@ -5,240 +5,195 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import * as s from "react";
9
- import { getActiveElement as u, IconWrap as h, classNames as p } from "@progress/kendo-react-common";
10
- import { Popup as c } from "@progress/kendo-react-popup";
11
- import { shouldOpenItem as I, isFirstItemFromSiblings as g } from "../utils/itemsIdsUtils.mjs";
12
- import { getDOMElementId as d, convertBoolDirectionToString as m, getPopupSettings as f } from "../utils/misc.mjs";
13
- import { MenuItemLink as v } from "./MenuItemLink.mjs";
14
- import { MenuItemArrow as M } from "./MenuItemArrow.mjs";
15
- class k extends s.Component {
16
- constructor() {
17
- super(...arguments), this.onMouseOver = (e) => {
18
- this.props.onMouseOver(this.props.parentItemId), e.stopPropagation();
19
- }, this.onMouseLeave = (e) => {
20
- this.props.onMouseLeave(this.props.parentItemId), e.stopPropagation();
21
- };
22
- }
23
- render() {
24
- const e = this.props.parentItemId;
25
- return /* @__PURE__ */ s.createElement(
26
- "ul",
8
+ import * as i from "react";
9
+ import { getActiveElement as F, classNames as v, IconWrap as B } from "@progress/kendo-react-common";
10
+ import { Popup as y } from "@progress/kendo-react-popup";
11
+ import { shouldOpenItem as x, isFirstItemFromSiblings as S } from "../utils/itemsIdsUtils.mjs";
12
+ import { getDOMElementId as M, convertBoolDirectionToString as R, getPopupSettings as G } from "../utils/misc.mjs";
13
+ import { MenuItemLink as V } from "./MenuItemLink.mjs";
14
+ import { MenuItemArrow as w } from "./MenuItemArrow.mjs";
15
+ const A = (e) => {
16
+ const { parentItemId: a } = e, c = a !== void 0 ? (o) => {
17
+ e.onMouseOver(a), o.stopPropagation();
18
+ } : void 0, I = a !== void 0 ? (o) => {
19
+ e.onMouseLeave(a), o.stopPropagation();
20
+ } : void 0;
21
+ let t;
22
+ return e.role ? t = e.role : a !== void 0 ? t = "menu" : t = "menubar", /* @__PURE__ */ i.createElement(
23
+ "ul",
24
+ {
25
+ className: e.className,
26
+ role: t,
27
+ id: a !== void 0 ? M(e.menuGuid, a) : void 0,
28
+ onMouseOver: c,
29
+ onMouseLeave: I,
30
+ "aria-orientation": e["aria-orientation"]
31
+ },
32
+ e.items.length > 0 ? e.items.map((o, l) => /* @__PURE__ */ i.createElement(
33
+ W,
27
34
  {
28
- className: this.props.className,
29
- role: this.props.role ? this.props.role : e !== void 0 ? "menu" : "menubar",
30
- id: e !== void 0 ? d(this.props.menuGuid, e) : void 0,
31
- onMouseOver: e !== void 0 ? this.onMouseOver : void 0,
32
- onMouseLeave: e !== void 0 ? this.onMouseLeave : void 0,
33
- "aria-orientation": this.props["aria-orientation"]
34
- },
35
- this.renderChildItems()
36
- );
37
- }
38
- renderChildItems() {
39
- return this.props.items.length > 0 ? this.props.items.map((e, t) => /* @__PURE__ */ s.createElement(
40
- O,
41
- {
42
- item: e,
43
- animate: this.props.animate,
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
- onBlur: this.props.onBlur,
55
- onFocus: this.props.onFocus,
56
- onClick: this.props.onClick,
57
- onOriginalItemNeeded: this.props.onOriginalItemNeeded,
58
- onPopupClose: this.props.onPopupClose,
59
- key: t
35
+ item: o,
36
+ animate: e.animate,
37
+ isMenuVertical: e.isMenuVertical,
38
+ isDirectionRightToLeft: e.isDirectionRightToLeft,
39
+ focusedItemId: e.focusedItemId,
40
+ lastItemIdToBeOpened: e.lastItemIdToBeOpened,
41
+ tabbableItemId: e.tabbableItemId,
42
+ itemRender: e.itemRender,
43
+ linkRender: e.linkRender,
44
+ menuGuid: e.menuGuid,
45
+ onMouseOver: e.onMouseOver,
46
+ onMouseLeave: e.onMouseLeave,
47
+ onBlur: e.onBlur,
48
+ onFocus: e.onFocus,
49
+ onClick: e.onClick,
50
+ onOriginalItemNeeded: e.onOriginalItemNeeded,
51
+ onPopupClose: e.onPopupClose,
52
+ key: l
60
53
  }
61
- )) : null;
62
- }
63
- }
64
- class O 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.onPopupClose = (t) => {
71
- this.props.onPopupClose(this.props.item.id, t);
72
- }, this.state = { opened: !1 };
73
- }
74
- componentDidMount() {
75
- const e = this.props.focusedItemId, t = this.props.item.id;
76
- e && e === t && this.itemElement.focus({ preventScroll: !0 }), this.isFirstRender = !1;
77
- }
78
- componentDidUpdate(e) {
79
- const t = this.props.focusedItemId, i = this.props.item.id;
80
- if (t) {
81
- const n = u(document);
82
- e.focusedItemId !== t && t === i && // https://github.com/telerik/kendo-react/issues/216 :
54
+ )) : null
55
+ );
56
+ }, W = (e) => {
57
+ const a = i.useRef(null), c = i.useRef(!0), I = i.useRef(void 0), t = e.item, o = t.id, l = M(e.menuGuid, o), b = t.separator, O = t.render || e.itemRender, k = t.linkRender || e.linkRender, g = t.contentParentItemId ? t.contentRender : null, d = t.items.length > 0 && x(o, e.lastItemIdToBeOpened) && !c.current;
58
+ i.useEffect(() => {
59
+ var f, s, m;
60
+ const n = e.focusedItemId, r = e.item.id, u = I.current;
61
+ if (c.current)
62
+ n && n === r && ((f = a.current) == null || f.focus({ preventScroll: !0 })), c.current = !1;
63
+ else if (n) {
64
+ const T = F(document);
65
+ u !== n && n === r && // https://github.com/telerik/kendo-react/issues/216 :
83
66
  // No need to focus the wrapping menu item DOM element
84
67
  // when a child DOM element was clicked.
85
- !this.itemElement.contains(n) && this.itemElement.focus({ preventScroll: !0 });
68
+ !((s = a.current) != null && s.contains(T)) && ((m = a.current) == null || m.focus({ preventScroll: !0 }));
86
69
  }
87
- }
88
- render() {
89
- const e = this.props.item, t = e.id, i = d(this.props.menuGuid, t), n = e.separator;
90
- return /* @__PURE__ */ s.createElement(s.Fragment, null, n ? /* @__PURE__ */ s.createElement(
91
- "li",
92
- {
93
- className: "k-separator k-item",
94
- "aria-hidden": !0,
95
- key: i,
96
- id: i,
97
- ref: (o) => {
98
- this.itemElement = o;
99
- }
100
- }
101
- ) : /* @__PURE__ */ s.createElement(
102
- "li",
103
- {
104
- id: i,
105
- className: this.getMenuItemClassName(e),
106
- style: e.cssStyle,
107
- tabIndex: t === this.props.tabbableItemId ? 0 : -1,
108
- onMouseOver: this.onMouseOver,
109
- onMouseLeave: this.onMouseLeave,
110
- onBlur: (o) => this.props.onBlur(t, o),
111
- onFocus: () => this.props.onFocus(t),
112
- onClick: (o) => this.props.onClick(o, t),
113
- role: "menuitem",
114
- "aria-disabled": e.disabled ? !0 : void 0,
115
- "aria-haspopup": e.items.length > 0 ? !0 : void 0,
116
- "aria-expanded": e.items.length > 0 ? this.Opened : void 0,
117
- "aria-label": e.text,
118
- "aria-owns": this.Opened ? i : void 0,
119
- ref: (o) => {
120
- this.itemElement = o;
121
- },
122
- key: i
123
- },
124
- this.contentRender ? this.renderContent() : this.renderMenuItemLink()
125
- ), this.renderPopupIfOpened());
126
- }
127
- renderContent() {
128
- const e = this.props.item.contentParentItemId;
129
- return /* @__PURE__ */ s.createElement("div", { className: "k-content", role: "presentation" }, /* @__PURE__ */ s.createElement(this.contentRender, { item: this.props.onOriginalItemNeeded(e), itemId: e }));
130
- }
131
- renderMenuItemLink() {
132
- const e = this.props.item;
133
- if (this.linkRender)
134
- return /* @__PURE__ */ s.createElement(
135
- this.linkRender,
70
+ I.current = n;
71
+ });
72
+ const E = (n) => {
73
+ e.onMouseOver(o), n.stopPropagation();
74
+ }, L = (n) => {
75
+ e.onMouseLeave(o), n.stopPropagation();
76
+ }, h = (n) => {
77
+ e.onPopupClose(o, n);
78
+ }, C = () => {
79
+ const n = t.contentParentItemId, r = g;
80
+ return /* @__PURE__ */ i.createElement("div", { className: "k-content", role: "presentation" }, /* @__PURE__ */ i.createElement(r, { item: e.onOriginalItemNeeded(n), itemId: n }));
81
+ }, D = () => {
82
+ if (k) {
83
+ const u = k;
84
+ return /* @__PURE__ */ i.createElement(
85
+ u,
136
86
  {
137
- item: this.props.onOriginalItemNeeded(e.id),
138
- itemId: e.id,
139
- opened: this.Opened,
140
- dir: m(this.props.isDirectionRightToLeft)
87
+ item: e.onOriginalItemNeeded(t.id),
88
+ itemId: t.id,
89
+ opened: d,
90
+ dir: R(e.isDirectionRightToLeft)
141
91
  }
142
92
  );
143
- 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);
144
- return /* @__PURE__ */ s.createElement(v, { url: e.url, opened: this.Opened }, this.renderMenuIconIfApplicable(), t, this.renderArrowIfApplicable());
145
- }
146
- renderPopupIfOpened() {
147
- const e = this.props.item.id, t = this.props.animate, { anchorAlign: i, popupAlign: n, collision: o, animationDirection: r } = f(
148
- e,
149
- this.props.isMenuVertical,
150
- this.props.isDirectionRightToLeft
151
- ), l = t === !0 ? { openDuration: 300, closeDuration: 300, direction: r } : t === !1 ? !1 : {
152
- openDuration: (t == null ? void 0 : t.openDuration) || 300,
153
- closeDuration: (t == null ? void 0 : t.closeDuration) || 300,
154
- direction: (t == null ? void 0 : t.direction) || r
155
- };
156
- return /* @__PURE__ */ s.createElement(
157
- c,
93
+ }
94
+ const n = O, r = n ? /* @__PURE__ */ i.createElement(n, { item: e.onOriginalItemNeeded(t.id), itemId: t.id, key: "1" }) : /* @__PURE__ */ i.createElement("span", { className: "k-menu-link-text" }, t.text);
95
+ return /* @__PURE__ */ i.createElement(V, { url: t.url, opened: d }, t.icon || t.svgIcon ? /* @__PURE__ */ i.createElement(B, { name: t.icon, icon: t.svgIcon, key: "0" }) : null, r, t.items.length > 0 ? /* @__PURE__ */ i.createElement("span", { className: "k-menu-expand-arrow", "aria-hidden": !0 }, /* @__PURE__ */ i.createElement(
96
+ w,
158
97
  {
159
- anchor: this.itemElement,
160
- show: this.Opened,
161
- popupClass: this.getPopupClassName(),
162
- anchorAlign: i,
163
- popupAlign: n,
164
- collision: o,
165
- animate: l,
166
- onClose: this.onPopupClose,
98
+ itemId: t.id,
99
+ verticalMenu: e.isMenuVertical,
100
+ dir: R(e.isDirectionRightToLeft),
101
+ key: "2"
102
+ }
103
+ )) : null);
104
+ }, N = () => {
105
+ const n = e.animate, { anchorAlign: r, popupAlign: u, collision: f, animationDirection: s } = G(
106
+ o,
107
+ e.isMenuVertical,
108
+ e.isDirectionRightToLeft
109
+ );
110
+ let m;
111
+ return n === !0 ? m = { openDuration: 300, closeDuration: 300, direction: s } : n === !1 ? m = !1 : m = {
112
+ openDuration: (n == null ? void 0 : n.openDuration) || 300,
113
+ closeDuration: (n == null ? void 0 : n.closeDuration) || 300,
114
+ direction: (n == null ? void 0 : n.direction) || s
115
+ }, /* @__PURE__ */ i.createElement(
116
+ y,
117
+ {
118
+ anchor: a.current,
119
+ show: d,
120
+ popupClass: v("k-menu-popup", { "k-rtl": e.isDirectionRightToLeft }),
121
+ anchorAlign: r,
122
+ popupAlign: u,
123
+ collision: f,
124
+ animate: m,
125
+ onClose: h,
167
126
  key: "1"
168
127
  },
169
- /* @__PURE__ */ s.createElement(
170
- k,
128
+ /* @__PURE__ */ i.createElement(
129
+ A,
171
130
  {
172
- parentItemId: e,
173
- animate: this.props.animate,
174
- items: this.props.item.items,
175
- menuGuid: this.props.menuGuid,
176
- focusedItemId: this.props.focusedItemId,
177
- lastItemIdToBeOpened: this.props.lastItemIdToBeOpened,
178
- tabbableItemId: this.props.tabbableItemId,
179
- itemRender: this.props.itemRender,
180
- linkRender: this.props.linkRender,
181
- isMenuVertical: this.props.isMenuVertical,
182
- isDirectionRightToLeft: this.props.isDirectionRightToLeft,
131
+ parentItemId: o,
132
+ animate: e.animate,
133
+ items: t.items,
134
+ menuGuid: e.menuGuid,
135
+ focusedItemId: e.focusedItemId,
136
+ lastItemIdToBeOpened: e.lastItemIdToBeOpened,
137
+ tabbableItemId: e.tabbableItemId,
138
+ itemRender: e.itemRender,
139
+ linkRender: e.linkRender,
140
+ isMenuVertical: e.isMenuVertical,
141
+ isDirectionRightToLeft: e.isDirectionRightToLeft,
183
142
  className: "k-group k-menu-group k-reset k-menu-group-md",
184
- onMouseOver: this.props.onMouseOver,
185
- onMouseLeave: this.props.onMouseLeave,
186
- onBlur: this.props.onBlur,
187
- onFocus: this.props.onFocus,
188
- onClick: this.props.onClick,
189
- onOriginalItemNeeded: this.props.onOriginalItemNeeded,
190
- onPopupClose: this.props.onPopupClose
143
+ onMouseOver: e.onMouseOver,
144
+ onMouseLeave: e.onMouseLeave,
145
+ onBlur: e.onBlur,
146
+ onFocus: e.onFocus,
147
+ onClick: e.onClick,
148
+ onOriginalItemNeeded: e.onOriginalItemNeeded,
149
+ onPopupClose: e.onPopupClose
191
150
  }
192
151
  )
193
152
  );
194
- }
195
- renderMenuIconIfApplicable() {
196
- const { icon: e, svgIcon: t } = this.props.item;
197
- return e || t ? /* @__PURE__ */ s.createElement(h, { name: e, icon: t, key: "0" }) : null;
198
- }
199
- renderArrowIfApplicable() {
200
- return this.props.item.items.length > 0 ? /* @__PURE__ */ s.createElement("span", { className: "k-menu-expand-arrow", "aria-hidden": !0 }, /* @__PURE__ */ s.createElement(
201
- M,
202
- {
203
- itemId: this.props.item.id,
204
- verticalMenu: this.props.isMenuVertical,
205
- dir: m(this.props.isDirectionRightToLeft),
206
- key: "2"
207
- }
208
- )) : null;
209
- }
210
- get itemRender() {
211
- return this.props.item.render || this.props.itemRender;
212
- }
213
- get linkRender() {
214
- return this.props.item.linkRender || this.props.linkRender;
215
- }
216
- get contentRender() {
217
- return this.props.item.contentParentItemId ? this.props.item.contentRender : null;
218
- }
219
- get Opened() {
220
- const e = this.props;
221
- return e.item.items.length > 0 && I(e.item.id, e.lastItemIdToBeOpened) && // HACK: Wait for the second render because otherwise the scenario of
222
- // popup inside popup throws an error (for example, hover of item with id '0_0').
223
- !this.isFirstRender;
224
- }
225
- getPopupClassName() {
226
- return p("k-menu-popup", { "k-rtl": this.props.isDirectionRightToLeft });
227
- }
228
- getMenuItemClassName(e) {
229
- return p(
230
- "k-item",
231
- "k-menu-item",
232
- {
233
- "k-first": g(e.id),
234
- "k-last": e.isLastFromSiblings,
235
- "k-disabled": e.disabled
236
- },
237
- e.cssClass
238
- );
239
- }
240
- }
153
+ }, P = v(
154
+ "k-item",
155
+ "k-menu-item",
156
+ {
157
+ "k-first": S(o),
158
+ "k-last": t.isLastFromSiblings,
159
+ "k-disabled": t.disabled
160
+ },
161
+ t.cssClass
162
+ );
163
+ return /* @__PURE__ */ i.createElement(i.Fragment, null, b ? /* @__PURE__ */ i.createElement(
164
+ "li",
165
+ {
166
+ className: "k-separator k-item",
167
+ "aria-hidden": !0,
168
+ key: l,
169
+ id: l,
170
+ ref: a
171
+ }
172
+ ) : /* @__PURE__ */ i.createElement(
173
+ "li",
174
+ {
175
+ id: l,
176
+ className: P,
177
+ style: t.cssStyle,
178
+ tabIndex: o === e.tabbableItemId ? 0 : -1,
179
+ onMouseOver: E,
180
+ onMouseLeave: L,
181
+ onBlur: (n) => e.onBlur(o, n),
182
+ onFocus: () => e.onFocus(o),
183
+ onClick: (n) => e.onClick(n, o),
184
+ role: "menuitem",
185
+ "aria-disabled": t.disabled ? !0 : void 0,
186
+ "aria-haspopup": t.items.length > 0 ? !0 : void 0,
187
+ "aria-expanded": t.items.length > 0 ? d : void 0,
188
+ "aria-label": t.text,
189
+ "aria-owns": d ? l : void 0,
190
+ ref: a,
191
+ key: l
192
+ },
193
+ g ? C() : D()
194
+ ), N());
195
+ };
241
196
  export {
242
- O as MenuItemInternal,
243
- k as MenuItemInternalsList
197
+ W as MenuItemInternal,
198
+ A as MenuItemInternalsList
244
199
  };
@@ -5,7 +5,6 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import { default as PropTypes } from 'prop-types';
9
8
  import { KendoReactComponentBaseProps } from '@progress/kendo-react-common';
10
9
  import * as React from 'react';
11
10
  /**
@@ -21,17 +20,4 @@ export interface MenuItemLinkProps extends KendoReactComponentBaseProps {
21
20
  */
22
21
  url?: string;
23
22
  }
24
- export declare class MenuItemLink extends React.Component<MenuItemLinkProps, {}> {
25
- /**
26
- * @hidden
27
- */
28
- static propTypes: {
29
- opened: PropTypes.Requireable<boolean>;
30
- url: PropTypes.Requireable<string>;
31
- };
32
- /**
33
- * @hidden
34
- */
35
- render(): React.JSX.Element;
36
- private getMenuItemClassName;
37
- }
23
+ export declare const MenuItemLink: (props: MenuItemLinkProps) => React.JSX.Element;
@@ -5,4 +5,4 @@
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"),i=require("prop-types"),l=require("@progress/kendo-react-common");function c(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=c(p),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;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),r=require("prop-types"),s=require("@progress/kendo-react-common");function u(e){const n=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(n,t,a.get?a:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const c=u(o),l=e=>s.classNames("k-link","k-menu-link",{"k-active":e}),i=e=>e.url?c.createElement("a",{className:l(e.opened),href:e.url,tabIndex:-1},e.children):c.createElement("span",{id:e.id,className:s.classNames(l(e.opened),e.className),style:e.style,role:"presentation"},e.children);i.propTypes={opened:r.bool,url:r.string};exports.MenuItemLink=i;