primereact 9.1.1 → 9.2.0

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 (158) hide show
  1. package/api/api.d.ts +2 -2
  2. package/autocomplete/autocomplete.cjs.js +1 -0
  3. package/autocomplete/autocomplete.cjs.min.js +1 -1
  4. package/autocomplete/autocomplete.esm.js +1 -0
  5. package/autocomplete/autocomplete.esm.min.js +1 -1
  6. package/autocomplete/autocomplete.js +1 -0
  7. package/autocomplete/autocomplete.min.js +1 -1
  8. package/avatar/avatar.cjs.js +2 -2
  9. package/avatar/avatar.cjs.min.js +1 -1
  10. package/avatar/avatar.esm.js +2 -2
  11. package/avatar/avatar.esm.min.js +1 -1
  12. package/avatar/avatar.js +2 -2
  13. package/avatar/avatar.min.js +1 -1
  14. package/calendar/calendar.cjs.js +2 -2
  15. package/calendar/calendar.cjs.min.js +1 -1
  16. package/calendar/calendar.esm.js +2 -2
  17. package/calendar/calendar.esm.min.js +1 -1
  18. package/calendar/calendar.js +2 -2
  19. package/calendar/calendar.min.js +1 -1
  20. package/contextmenu/contextmenu.cjs.js +61 -18
  21. package/contextmenu/contextmenu.cjs.min.js +1 -1
  22. package/contextmenu/contextmenu.d.ts +9 -0
  23. package/contextmenu/contextmenu.esm.js +63 -20
  24. package/contextmenu/contextmenu.esm.min.js +1 -1
  25. package/contextmenu/contextmenu.js +61 -18
  26. package/contextmenu/contextmenu.min.js +1 -1
  27. package/core/core.js +226 -115
  28. package/core/core.min.js +4 -4
  29. package/datatable/datatable.cjs.js +84 -79
  30. package/datatable/datatable.cjs.min.js +1 -1
  31. package/datatable/datatable.d.ts +2 -11
  32. package/datatable/datatable.esm.js +85 -80
  33. package/datatable/datatable.esm.min.js +1 -1
  34. package/datatable/datatable.js +84 -79
  35. package/datatable/datatable.min.css +1 -1
  36. package/datatable/datatable.min.js +1 -1
  37. package/dropdown/dropdown.cjs.js +1 -0
  38. package/dropdown/dropdown.cjs.min.js +1 -1
  39. package/dropdown/dropdown.esm.js +1 -0
  40. package/dropdown/dropdown.esm.min.js +1 -1
  41. package/dropdown/dropdown.js +1 -0
  42. package/dropdown/dropdown.min.js +1 -1
  43. package/hooks/hooks.cjs.js +34 -2
  44. package/hooks/hooks.cjs.min.js +1 -1
  45. package/hooks/hooks.d.ts +13 -0
  46. package/hooks/hooks.esm.js +34 -3
  47. package/hooks/hooks.esm.min.js +1 -1
  48. package/hooks/hooks.js +34 -2
  49. package/hooks/hooks.min.js +1 -1
  50. package/inputtext/inputtext.min.css +1 -1
  51. package/listbox/listbox.cjs.js +5 -4
  52. package/listbox/listbox.cjs.min.js +1 -1
  53. package/listbox/listbox.esm.js +5 -4
  54. package/listbox/listbox.esm.min.js +1 -1
  55. package/listbox/listbox.js +5 -4
  56. package/listbox/listbox.min.js +1 -1
  57. package/megamenu/megamenu.cjs.js +91 -6
  58. package/megamenu/megamenu.cjs.min.js +1 -1
  59. package/megamenu/megamenu.d.ts +9 -0
  60. package/megamenu/megamenu.esm.js +93 -8
  61. package/megamenu/megamenu.esm.min.js +1 -1
  62. package/megamenu/megamenu.js +91 -6
  63. package/megamenu/megamenu.min.css +1 -1
  64. package/megamenu/megamenu.min.js +1 -1
  65. package/multiselect/multiselect.cjs.js +1 -0
  66. package/multiselect/multiselect.cjs.min.js +1 -1
  67. package/multiselect/multiselect.esm.js +1 -0
  68. package/multiselect/multiselect.esm.min.js +1 -1
  69. package/multiselect/multiselect.js +1 -0
  70. package/multiselect/multiselect.min.js +1 -1
  71. package/package.json +1 -1
  72. package/primereact.all.cjs.js +554 -244
  73. package/primereact.all.cjs.min.js +1 -1
  74. package/primereact.all.esm.js +554 -245
  75. package/primereact.all.esm.min.js +1 -1
  76. package/primereact.all.js +554 -244
  77. package/primereact.all.min.js +1 -1
  78. package/resources/primereact.css +616 -667
  79. package/resources/primereact.min.css +1 -1
  80. package/resources/themes/arya-blue/theme.css +130 -2
  81. package/resources/themes/arya-green/theme.css +130 -2
  82. package/resources/themes/arya-orange/theme.css +130 -2
  83. package/resources/themes/arya-purple/theme.css +130 -2
  84. package/resources/themes/bootstrap4-dark-blue/theme.css +131 -2
  85. package/resources/themes/bootstrap4-dark-purple/theme.css +131 -2
  86. package/resources/themes/bootstrap4-light-blue/theme.css +131 -2
  87. package/resources/themes/bootstrap4-light-purple/theme.css +131 -2
  88. package/resources/themes/fluent-light/theme.css +131 -2
  89. package/resources/themes/lara-dark-blue/theme.css +131 -2
  90. package/resources/themes/lara-dark-indigo/theme.css +131 -2
  91. package/resources/themes/lara-dark-purple/theme.css +131 -2
  92. package/resources/themes/lara-dark-teal/theme.css +131 -2
  93. package/resources/themes/lara-light-blue/theme.css +131 -2
  94. package/resources/themes/lara-light-indigo/theme.css +131 -2
  95. package/resources/themes/lara-light-purple/theme.css +131 -2
  96. package/resources/themes/lara-light-teal/theme.css +131 -2
  97. package/resources/themes/luna-amber/theme.css +131 -2
  98. package/resources/themes/luna-blue/theme.css +131 -2
  99. package/resources/themes/luna-green/theme.css +131 -2
  100. package/resources/themes/luna-pink/theme.css +131 -2
  101. package/resources/themes/md-dark-deeppurple/theme.css +131 -2
  102. package/resources/themes/md-dark-indigo/theme.css +131 -2
  103. package/resources/themes/md-light-deeppurple/theme.css +131 -2
  104. package/resources/themes/md-light-indigo/theme.css +131 -2
  105. package/resources/themes/mdc-dark-deeppurple/theme.css +131 -2
  106. package/resources/themes/mdc-dark-indigo/theme.css +131 -2
  107. package/resources/themes/mdc-light-deeppurple/theme.css +131 -2
  108. package/resources/themes/mdc-light-indigo/theme.css +131 -2
  109. package/resources/themes/mira/theme.css +131 -2
  110. package/resources/themes/nano/theme.css +131 -2
  111. package/resources/themes/nova/theme.css +131 -2
  112. package/resources/themes/nova-accent/theme.css +131 -2
  113. package/resources/themes/nova-alt/theme.css +131 -2
  114. package/resources/themes/rhea/theme.css +131 -2
  115. package/resources/themes/saga-blue/theme.css +131 -2
  116. package/resources/themes/saga-green/theme.css +131 -2
  117. package/resources/themes/saga-orange/theme.css +131 -2
  118. package/resources/themes/saga-purple/theme.css +131 -2
  119. package/resources/themes/soho-dark/theme.css +131 -2
  120. package/resources/themes/soho-light/theme.css +131 -2
  121. package/resources/themes/tailwind-light/theme.css +131 -2
  122. package/resources/themes/vela-blue/theme.css +131 -2
  123. package/resources/themes/vela-green/theme.css +131 -2
  124. package/resources/themes/vela-orange/theme.css +131 -2
  125. package/resources/themes/vela-purple/theme.css +131 -2
  126. package/resources/themes/viva-dark/theme.css +131 -2
  127. package/resources/themes/viva-light/theme.css +131 -2
  128. package/tieredmenu/tieredmenu.cjs.js +69 -9
  129. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  130. package/tieredmenu/tieredmenu.d.ts +9 -0
  131. package/tieredmenu/tieredmenu.esm.js +71 -11
  132. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  133. package/tieredmenu/tieredmenu.js +69 -9
  134. package/tieredmenu/tieredmenu.min.js +1 -1
  135. package/toast/toast.min.css +1 -1
  136. package/treetable/treetable.cjs.js +12 -9
  137. package/treetable/treetable.cjs.min.js +1 -1
  138. package/treetable/treetable.d.ts +0 -5
  139. package/treetable/treetable.esm.js +12 -9
  140. package/treetable/treetable.esm.min.js +1 -1
  141. package/treetable/treetable.js +12 -9
  142. package/treetable/treetable.min.css +1 -1
  143. package/treetable/treetable.min.js +1 -1
  144. package/utils/utils.cjs.js +14 -9
  145. package/utils/utils.cjs.min.js +1 -1
  146. package/utils/utils.esm.js +14 -9
  147. package/utils/utils.esm.min.js +1 -1
  148. package/utils/utils.js +14 -9
  149. package/utils/utils.min.js +1 -1
  150. package/virtualscroller/virtualscroller.cjs.js +177 -104
  151. package/virtualscroller/virtualscroller.cjs.min.js +1 -1
  152. package/virtualscroller/virtualscroller.d.ts +20 -0
  153. package/virtualscroller/virtualscroller.esm.js +177 -104
  154. package/virtualscroller/virtualscroller.esm.min.js +1 -1
  155. package/virtualscroller/virtualscroller.js +177 -104
  156. package/virtualscroller/virtualscroller.min.css +1 -1
  157. package/virtualscroller/virtualscroller.min.js +1 -1
  158. package/web-types.json +1 -1
@@ -109,6 +109,8 @@ var MegaMenuBase = {
109
109
  style: null,
110
110
  className: null,
111
111
  orientation: 'horizontal',
112
+ breakpoint: undefined,
113
+ scrollHeight: '400px',
112
114
  start: null,
113
115
  end: null,
114
116
  children: undefined
@@ -127,17 +129,41 @@ var MegaMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
127
129
  _React$useState2 = _slicedToArray(_React$useState, 2),
128
130
  activeItemState = _React$useState2[0],
129
131
  setActiveItemState = _React$useState2[1];
132
+ var _React$useState3 = React__namespace.useState(null),
133
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
134
+ attributeSelectorState = _React$useState4[0],
135
+ setAttributeSelectorState = _React$useState4[1];
136
+ var _React$useState5 = React__namespace.useState(false),
137
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
138
+ mobileActiveState = _React$useState6[0],
139
+ setMobileActiveState = _React$useState6[1];
130
140
  var elementRef = React__namespace.useRef(null);
141
+ var styleElementRef = React__namespace.useRef(null);
142
+ var menuButtonRef = React__namespace.useRef(null);
131
143
  var horizontal = props.orientation === 'horizontal';
132
144
  var vertical = props.orientation === 'vertical';
145
+ var isMobileMode = hooks.useMatchMedia("screen and (max-width: ".concat(props.breakpoint, ")"), !!props.breakpoint);
133
146
  var _useEventListener = hooks.useEventListener({
134
147
  type: 'click',
135
148
  listener: function listener(event) {
136
- isOutsideClicked(event) && setActiveItemState(null);
149
+ if ((!isMobileMode || mobileActiveState) && isOutsideClicked(event)) {
150
+ setActiveItemState(null);
151
+ setMobileActiveState(false);
152
+ }
137
153
  }
138
154
  }),
139
155
  _useEventListener2 = _slicedToArray(_useEventListener, 1),
140
156
  bindDocumentClickListener = _useEventListener2[0];
157
+ var _useResizeListener = hooks.useResizeListener({
158
+ listener: function listener() {
159
+ if (!isMobileMode || mobileActiveState) {
160
+ setActiveItemState(null);
161
+ setMobileActiveState(false);
162
+ }
163
+ }
164
+ }),
165
+ _useResizeListener2 = _slicedToArray(_useResizeListener, 1),
166
+ bindDocumentResizeListener = _useResizeListener2[0];
141
167
  var onLeafClick = function onLeafClick(event, item) {
142
168
  if (item.disabled) {
143
169
  event.preventDefault();
@@ -153,9 +179,10 @@ var MegaMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
153
179
  });
154
180
  }
155
181
  setActiveItemState(null);
182
+ setMobileActiveState(false);
156
183
  };
157
184
  var onCategoryMouseEnter = function onCategoryMouseEnter(event, item) {
158
- if (item.disabled) {
185
+ if (item.disabled || isMobileMode) {
159
186
  event.preventDefault();
160
187
  return;
161
188
  }
@@ -218,6 +245,13 @@ var MegaMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
218
245
  var collapseMenu = function collapseMenu(item) {
219
246
  setActiveItemState(null);
220
247
  };
248
+ var toggle = function toggle(event) {
249
+ event.preventDefault();
250
+ setMobileActiveState(function (prevMobileActive) {
251
+ return !prevMobileActive;
252
+ });
253
+ setActiveItemState(null);
254
+ };
221
255
  var findNextItem = function findNextItem(item) {
222
256
  var nextItem = item.nextElementSibling;
223
257
  return nextItem ? utils.DomHandler.hasClass(nextItem, 'p-disabled') || !utils.DomHandler.hasClass(nextItem, 'p-menuitem') ? findNextItem(nextItem) : nextItem : null;
@@ -235,7 +269,7 @@ var MegaMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
235
269
  prevItem && prevItem.children[0].focus();
236
270
  };
237
271
  var isOutsideClicked = function isOutsideClicked(event) {
238
- return elementRef.current && !(elementRef.current.isSameNode(event.target) || elementRef.current.contains(event.target));
272
+ return elementRef.current && !(elementRef.current.isSameNode(event.target) || elementRef.current.contains(event.target) || menuButtonRef.current && menuButtonRef.current.contains(event.target));
239
273
  };
240
274
  var getColumnClassName = function getColumnClassName(category) {
241
275
  var length = category.items ? category.items.length : 0;
@@ -268,13 +302,23 @@ var MegaMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
268
302
  };
269
303
  });
270
304
  hooks.useMountEffect(function () {
305
+ if (props.breakpoint) {
306
+ !attributeSelectorState && setAttributeSelectorState(utils.UniqueComponentId());
307
+ }
271
308
  bindDocumentClickListener();
309
+ bindDocumentResizeListener();
272
310
  });
273
311
  hooks.useUpdateEffect(function () {
274
312
  var currentPanel = utils.DomHandler.findSingle(elementRef.current, '.p-menuitem-active > .p-megamenu-panel');
275
- if (activeItemState) {
313
+ if (activeItemState && !isMobileMode) {
276
314
  utils.ZIndexUtils.set('menu', currentPanel, PrimeReact__default["default"].autoZIndex, PrimeReact__default["default"].zIndex['menu']);
277
315
  }
316
+ if (isMobileMode) {
317
+ currentPanel && currentPanel.previousElementSibling.scrollIntoView({
318
+ block: 'nearest',
319
+ inline: 'nearest'
320
+ });
321
+ }
278
322
  return function () {
279
323
  utils.ZIndexUtils.clear(currentPanel);
280
324
  };
@@ -400,6 +444,26 @@ var MegaMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
400
444
  }
401
445
  return null;
402
446
  };
447
+ var createStyle = function createStyle() {
448
+ if (!styleElementRef.current) {
449
+ styleElementRef.current = utils.DomHandler.createInlineStyle(PrimeReact__default["default"].nonce);
450
+ var selector = "".concat(attributeSelectorState);
451
+ var innerHTML = "\n@media screen and (max-width: ".concat(props.breakpoint, ") {\n .p-megamenu[").concat(selector, "] > .p-megamenu-root-list .p-menuitem-active .p-megamenu-panel {\n position: relative;\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n background: inherit;\n }\n\n .p-megamenu[").concat(selector, "] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-megamenu[").concat(selector, "] .p-megamenu-grid {\n flex-wrap: wrap;\n }\n\n ").concat(horizontal ? "\n.p-megamenu[".concat(selector, "] .p-megamenu-button {\n display: flex;\n}\n\n.p-megamenu[").concat(selector, "].p-megamenu-horizontal {\n position: relative;\n}\n\n.p-megamenu[").concat(selector, "].p-megamenu-horizontal .p-megamenu-root-list {\n display: none;\n}\n\n.p-megamenu-horizontal[").concat(selector, "] div[class*=\"p-megamenu-col-\"] {\n width: auto;\n flex: 1;\n padding: 0;\n}\n\n.p-megamenu[").concat(selector, "].p-megamenu-mobile-active .p-megamenu-root-list {\n display: flex;\n flex-direction: column;\n position: absolute;\n width: 100%;\n top: 100%;\n left: 0;\n z-index: 1;\n}\n ") : '', "\n\n ").concat(vertical ? "\n.p-megamenu-vertical[".concat(selector, "] {\n width: 100%;\n}\n\n.p-megamenu-vertical[").concat(selector, "] .p-megamenu-root-list {\n max-height: ").concat(props.scrollHeight, ";\n overflow: ").concat(props.scrollHeight ? 'auto' : '', ";\n}\n.p-megamenu-vertical[").concat(selector, "] div[class*=\"p-megamenu-col-\"] {\n width: 100%;\n padding: 0;\n}\n\n.p-megamenu-vertical[").concat(selector, "] .p-megamenu-submenu {\n width: 100%;\n}\n\n.p-megamenu-vertical[").concat(selector, "] div[class*=\"p-megamenu-col-\"] .p-megamenu-submenu-header {\n background: inherit;\n}\n\n.p-megamenu-vertical[").concat(selector, "] .p-submenu-icon:before {\n content: \"\\e930\";\n}\n ") : '', "\n}\n");
452
+ styleElementRef.current.innerHTML = innerHTML;
453
+ }
454
+ };
455
+ var destroyStyle = function destroyStyle() {
456
+ styleElementRef.current = utils.DomHandler.removeInlineStyle(styleElementRef.current);
457
+ };
458
+ hooks.useUpdateEffect(function () {
459
+ if (attributeSelectorState && elementRef.current) {
460
+ elementRef.current.setAttribute(attributeSelectorState, '');
461
+ createStyle();
462
+ }
463
+ return function () {
464
+ destroyStyle();
465
+ };
466
+ }, [attributeSelectorState, props.breakpoint]);
403
467
  var createCategory = function createCategory(category, index) {
404
468
  var className = utils.classNames('p-menuitem', {
405
469
  'p-menuitem-active': category === activeItemState
@@ -470,20 +534,41 @@ var MegaMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
470
534
  }
471
535
  return null;
472
536
  };
537
+ var createMenuButton = function createMenuButton() {
538
+ if (props.orientation === 'vertical' || props.model && props.model.length < 1) {
539
+ return null;
540
+ }
541
+ /* eslint-disable */
542
+ var button = /*#__PURE__*/React__namespace.createElement("a", {
543
+ ref: menuButtonRef,
544
+ href: '#',
545
+ role: "button",
546
+ tabIndex: 0,
547
+ className: "p-megamenu-button",
548
+ onClick: toggle
549
+ }, /*#__PURE__*/React__namespace.createElement("i", {
550
+ className: "pi pi-bars"
551
+ }));
552
+ /* eslint-enable */
553
+
554
+ return button;
555
+ };
473
556
  var otherProps = MegaMenuBase.getOtherProps(props);
474
557
  var className = utils.classNames('p-megamenu p-component', {
475
558
  'p-megamenu-horizontal': props.orientation === 'horizontal',
476
- 'p-megamenu-vertical': props.orientation === 'vertical'
559
+ 'p-megamenu-vertical': props.orientation === 'vertical',
560
+ 'p-megamenu-mobile-active': mobileActiveState
477
561
  }, props.className);
478
562
  var menu = createMenu();
479
563
  var start = createStartContent();
480
564
  var end = createEndContent();
565
+ var menuButton = createMenuButton();
481
566
  return /*#__PURE__*/React__namespace.createElement("div", _extends({
482
567
  ref: elementRef,
483
568
  id: props.id,
484
569
  className: className,
485
570
  style: props.style
486
- }, otherProps), start, menu, end);
571
+ }, otherProps), start, menuButton, menu, end);
487
572
  }));
488
573
  MegaMenu.displayName = 'MegaMenu';
489
574
 
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/api"),n=require("primereact/hooks"),r=require("primereact/ripple"),a=require("primereact/utils");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var u=i(e),s=l(t);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},c.apply(this,arguments)}function o(e){if(Array.isArray(e))return e}function m(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,l,i,u=[],s=!0,c=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=l.call(n)).done)&&(u.push(r.value),u.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return u}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function f(e,t){if(e){if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}function d(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function b(e,t){return o(e)||m(e,t)||f(e,t)||d()}var v={defaultProps:{__TYPE:"MegaMenu",id:null,model:null,style:null,className:null,orientation:"horizontal",start:null,end:null,children:void 0},getProps:function(e){return a.ObjectUtils.getMergedProps(e,v.defaultProps)},getOtherProps:function(e){return a.ObjectUtils.getDiffProps(e,v.defaultProps)}},g=u.memo(u.forwardRef((function(e,t){var l=v.getProps(e),i=b(u.useState(null),2),o=i[0],m=i[1],p=u.useRef(null),f="horizontal"===l.orientation,d="vertical"===l.orientation,g=b(n.useEventListener({type:"click",listener:function(e){S(e)&&m(null)}}),1)[0],y=function(e,t){t.disabled?e.preventDefault():(t.url||e.preventDefault(),t.command&&t.command({originalEvent:e,item:t}),m(null))},h=function(e,t){var n=e.currentTarget.parentElement;switch(e.which){case 40:f?E(t):k(n),e.preventDefault();break;case 38:d?D(n):t.items&&t===o&&N(),e.preventDefault();break;case 39:f?k(n):E(t),e.preventDefault();break;case 37:f?D(n):t.items&&t===o&&N(),e.preventDefault()}},E=function(e){e.items&&m(e)},N=function(e){m(null)},O=function e(t){var n=t.nextElementSibling;return n?a.DomHandler.hasClass(n,"p-disabled")||!a.DomHandler.hasClass(n,"p-menuitem")?e(n):n:null},j=function e(t){var n=t.previousElementSibling;return n?a.DomHandler.hasClass(n,"p-disabled")||!a.DomHandler.hasClass(n,"p-menuitem")?e(n):n:null},k=function(e){var t=O(e);t&&t.children[0].focus()},D=function(e){var t=j(e);t&&t.children[0].focus()},S=function(e){return p.current&&!(p.current.isSameNode(e.target)||p.current.contains(e.target))},P=function(e){var t;switch(e.items?e.items.length:0){case 2:t="p-megamenu-col-6";break;case 3:t="p-megamenu-col-4";break;case 4:t="p-megamenu-col-3";break;case 6:t="p-megamenu-col-2";break;default:t="p-megamenu-col-12"}return t};u.useImperativeHandle(t,(function(){return{props:l,getElement:function(){return p.current}}})),n.useMountEffect((function(){g()})),n.useUpdateEffect((function(){var e=a.DomHandler.findSingle(p.current,".p-menuitem-active > .p-megamenu-panel");return o&&a.ZIndexUtils.set("menu",e,s.default.autoZIndex,s.default.zIndex.menu),function(){a.ZIndexUtils.clear(e)}}),[o]);var w=function(e){return u.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},I=function(e){if(e.items){var t=a.classNames("p-submenu-icon pi",{"pi-angle-down":f,"pi-angle-right":d});return u.createElement("span",{className:t})}return null},M=function(e,t){if(!1===e.visible)return null;if(e.separator)return w(t);var n=e.label+"_"+t,i=a.classNames("p-menuitem",e.className),s=a.classNames("p-menuitem-link",{"p-disabled":e.disabled}),c=a.classNames(e.icon,"p-menuitem-icon"),o=a.IconUtils.getJSXIcon(e.icon,{className:"p-menuitem-icon"},{props:l}),m=u.createElement("a",{href:e.url||"#",className:s,target:e.target,onClick:function(t){return y(t,e)},role:"menuitem","aria-disabled":e.disabled},o,e.label&&u.createElement("span",{className:"p-menuitem-text"},e.label),u.createElement(r.Ripple,null));return e.template&&(m=a.ObjectUtils.getJSXElement(e.template,e,{onClick:function(t){return y(t,e)},className:s,labelClassName:"p-menuitem-text",iconClassName:c,element:m,props:l})),u.createElement("li",{key:n,id:e.id,className:i,style:e.style,role:"none"},m)},U=function(e){var t=a.classNames("p-megamenu-submenu-header",{"p-disabled":e.disabled},e.className),n=e.items.map(M);return u.createElement(u.Fragment,{key:e.label},u.createElement("li",{id:e.id,className:t,style:e.style,role:"presentation"},e.label),n)},x=function(e){return e.map(U)},_=function(e,t,n,r){var a=e.label+"_column_"+n,l=x(t);return u.createElement("div",{key:a,className:r},u.createElement("ul",{className:"p-megamenu-submenu",role:"menu"},l))},C=function(e){if(e.items){var t=P(e);return e.items.map((function(n,r){return _(e,n,r,t)}))}return null},z=function(e){if(e.items){var t=C(e);return u.createElement("div",{className:"p-megamenu-panel"},u.createElement("div",{className:"p-megamenu-grid"},t))}return null},A=function(e,t){var n=a.classNames("p-menuitem",{"p-menuitem-active":e===o},e.className),i=a.classNames("p-menuitem-link",{"p-disabled":e.disabled}),s=a.IconUtils.getJSXIcon(e.icon,{className:"p-menuitem-icon"},{props:l}),c=e.label&&u.createElement("span",{className:"p-menuitem-text"},e.label),p=e.template?a.ObjectUtils.getJSXElement(e.template,e):null,f=I(e),d=z(e);return u.createElement("li",{key:e.label+"_"+t,id:e.id,className:n,style:e.style,onMouseEnter:function(t){return n=t,void((r=e).disabled?n.preventDefault():o&&m(r));var n,r},role:"none"},u.createElement("a",{href:e.url||"#",className:i,target:e.target,onClick:function(t){return n=t,(r=e).disabled||(r.url||n.preventDefault(),r.command&&r.command({originalEvent:n,item:l.item}),r.items&&m(o&&o===r?null:r)),void n.preventDefault();var n,r},onKeyDown:function(t){return h(t,e)},role:"menuitem","aria-haspopup":null!=e.items},s,c,p,f,u.createElement(r.Ripple,null)),d)},H=v.getOtherProps(l),J=a.classNames("p-megamenu p-component",{"p-megamenu-horizontal":"horizontal"===l.orientation,"p-megamenu-vertical":"vertical"===l.orientation},l.className),X=l.model?u.createElement("ul",{className:"p-megamenu-root-list",role:"menubar"},l.model.map((function(e,t){return A(e,t)}))):null,q=function(){if(l.start){var e=a.ObjectUtils.getJSXElement(l.start,l);return u.createElement("div",{className:"p-megamenu-start"},e)}return null}(),R=function(){if(l.end){var e=a.ObjectUtils.getJSXElement(l.end,l);return u.createElement("div",{className:"p-megamenu-end"},e)}return null}();return u.createElement("div",c({ref:p,id:l.id,className:J,style:l.style},H),q,X,R)})));g.displayName="MegaMenu",exports.MegaMenu=g;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=require("primereact/api"),t=require("primereact/hooks"),a=require("primereact/ripple"),r=require("primereact/utils");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var u=i(e),o=l(n);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e},c.apply(this,arguments)}function m(e){if(Array.isArray(e))return e}function s(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,r,l,i,u=[],o=!0,c=!1;try{if(l=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;o=!1}else for(;!(o=(a=l.call(t)).done)&&(u.push(a.value),u.length!==n);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(c)throw r}}return u}}function p(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=new Array(n);t<n;t++)a[t]=e[t];return a}function d(e,n){if(e){if("string"==typeof e)return p(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?p(e,n):void 0}}function f(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(e,n){return m(e)||s(e,n)||d(e,n)||f()}var b={defaultProps:{__TYPE:"MegaMenu",id:null,model:null,style:null,className:null,orientation:"horizontal",breakpoint:void 0,scrollHeight:"400px",start:null,end:null,children:void 0},getProps:function(e){return r.ObjectUtils.getMergedProps(e,b.defaultProps)},getOtherProps:function(e){return r.ObjectUtils.getDiffProps(e,b.defaultProps)}},v=u.memo(u.forwardRef((function(e,n){var l=b.getProps(e),i=g(u.useState(null),2),m=i[0],s=i[1],p=g(u.useState(null),2),d=p[0],f=p[1],v=g(u.useState(!1),2),h=v[0],y=v[1],E=u.useRef(null),N=u.useRef(null),k=u.useRef(null),w="horizontal"===l.orientation,x="vertical"===l.orientation,O=t.useMatchMedia("screen and (max-width: ".concat(l.breakpoint,")"),!!l.breakpoint),j=g(t.useEventListener({type:"click",listener:function(e){O&&!h||!A(e)||(s(null),y(!1))}}),1)[0],S=g(t.useResizeListener({listener:function(){O&&!h||(s(null),y(!1))}}),1)[0],D=function(e,n){n.disabled?e.preventDefault():(n.url||e.preventDefault(),n.command&&n.command({originalEvent:e,item:n}),s(null),y(!1))},I=function(e,n){var t=e.currentTarget.parentElement;switch(e.which){case 40:w?M(n):z(t),e.preventDefault();break;case 38:x?_(t):n.items&&n===m&&P(),e.preventDefault();break;case 39:w?z(t):M(n),e.preventDefault();break;case 37:w?_(t):n.items&&n===m&&P(),e.preventDefault()}},M=function(e){e.items&&s(e)},P=function(e){s(null)},U=function(e){e.preventDefault(),y((function(e){return!e})),s(null)},C=function e(n){var t=n.nextElementSibling;return t?r.DomHandler.hasClass(t,"p-disabled")||!r.DomHandler.hasClass(t,"p-menuitem")?e(t):t:null},H=function e(n){var t=n.previousElementSibling;return t?r.DomHandler.hasClass(t,"p-disabled")||!r.DomHandler.hasClass(t,"p-menuitem")?e(t):t:null},z=function(e){var n=C(e);n&&n.children[0].focus()},_=function(e){var n=H(e);n&&n.children[0].focus()},A=function(e){return E.current&&!(E.current.isSameNode(e.target)||E.current.contains(e.target)||k.current&&k.current.contains(e.target))},R=function(e){var n;switch(e.items?e.items.length:0){case 2:n="p-megamenu-col-6";break;case 3:n="p-megamenu-col-4";break;case 4:n="p-megamenu-col-3";break;case 6:n="p-megamenu-col-2";break;default:n="p-megamenu-col-12"}return n};u.useImperativeHandle(n,(function(){return{props:l,getElement:function(){return E.current}}})),t.useMountEffect((function(){l.breakpoint&&!d&&f(r.UniqueComponentId()),j(),S()})),t.useUpdateEffect((function(){var e=r.DomHandler.findSingle(E.current,".p-menuitem-active > .p-megamenu-panel");return m&&!O&&r.ZIndexUtils.set("menu",e,o.default.autoZIndex,o.default.zIndex.menu),O&&e&&e.previousElementSibling.scrollIntoView({block:"nearest",inline:"nearest"}),function(){r.ZIndexUtils.clear(e)}}),[m]);var q=function(e){return u.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},J=function(e){if(e.items){var n=r.classNames("p-submenu-icon pi",{"pi-angle-down":w,"pi-angle-right":x});return u.createElement("span",{className:n})}return null},X=function(e,n){if(!1===e.visible)return null;if(e.separator)return q(n);var t=e.label+"_"+n,i=r.classNames("p-menuitem",e.className),o=r.classNames("p-menuitem-link",{"p-disabled":e.disabled}),c=r.classNames(e.icon,"p-menuitem-icon"),m=r.IconUtils.getJSXIcon(e.icon,{className:"p-menuitem-icon"},{props:l}),s=u.createElement("a",{href:e.url||"#",className:o,target:e.target,onClick:function(n){return D(n,e)},role:"menuitem","aria-disabled":e.disabled},m,e.label&&u.createElement("span",{className:"p-menuitem-text"},e.label),u.createElement(a.Ripple,null));return e.template&&(s=r.ObjectUtils.getJSXElement(e.template,e,{onClick:function(n){return D(n,e)},className:o,labelClassName:"p-menuitem-text",iconClassName:c,element:s,props:l})),u.createElement("li",{key:t,id:e.id,className:i,style:e.style,role:"none"},s)},T=function(e){var n=r.classNames("p-megamenu-submenu-header",{"p-disabled":e.disabled},e.className),t=e.items.map(X);return u.createElement(u.Fragment,{key:e.label},u.createElement("li",{id:e.id,className:n,style:e.style,role:"presentation"},e.label),t)},L=function(e){return e.map(T)},Z=function(e,n,t,a){var r=e.label+"_column_"+t,l=L(n);return u.createElement("div",{key:r,className:a},u.createElement("ul",{className:"p-megamenu-submenu",role:"menu"},l))},F=function(e){if(e.items){var n=R(e);return e.items.map((function(t,a){return Z(e,t,a,n)}))}return null},K=function(e){if(e.items){var n=F(e);return u.createElement("div",{className:"p-megamenu-panel"},u.createElement("div",{className:"p-megamenu-grid"},n))}return null},V=function(){if(!N.current){N.current=r.DomHandler.createInlineStyle(o.default.nonce);var e="".concat(d),n="\n@media screen and (max-width: ".concat(l.breakpoint,") {\n .p-megamenu[").concat(e,"] > .p-megamenu-root-list .p-menuitem-active .p-megamenu-panel {\n position: relative;\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n background: inherit;\n }\n\n .p-megamenu[").concat(e,"] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-megamenu[").concat(e,"] .p-megamenu-grid {\n flex-wrap: wrap;\n }\n\n ").concat(w?"\n.p-megamenu[".concat(e,"] .p-megamenu-button {\n display: flex;\n}\n\n.p-megamenu[").concat(e,"].p-megamenu-horizontal {\n position: relative;\n}\n\n.p-megamenu[").concat(e,"].p-megamenu-horizontal .p-megamenu-root-list {\n display: none;\n}\n\n.p-megamenu-horizontal[").concat(e,'] div[class*="p-megamenu-col-"] {\n width: auto;\n flex: 1;\n padding: 0;\n}\n\n.p-megamenu[').concat(e,"].p-megamenu-mobile-active .p-megamenu-root-list {\n display: flex;\n flex-direction: column;\n position: absolute;\n width: 100%;\n top: 100%;\n left: 0;\n z-index: 1;\n}\n "):"","\n\n ").concat(x?"\n.p-megamenu-vertical[".concat(e,"] {\n width: 100%;\n}\n\n.p-megamenu-vertical[").concat(e,"] .p-megamenu-root-list {\n max-height: ").concat(l.scrollHeight,";\n overflow: ").concat(l.scrollHeight?"auto":"",";\n}\n.p-megamenu-vertical[").concat(e,'] div[class*="p-megamenu-col-"] {\n width: 100%;\n padding: 0;\n}\n\n.p-megamenu-vertical[').concat(e,"] .p-megamenu-submenu {\n width: 100%;\n}\n\n.p-megamenu-vertical[").concat(e,'] div[class*="p-megamenu-col-"] .p-megamenu-submenu-header {\n background: inherit;\n}\n\n.p-megamenu-vertical[').concat(e,'] .p-submenu-icon:before {\n content: "\\e930";\n}\n '):"","\n}\n");N.current.innerHTML=n}};t.useUpdateEffect((function(){return d&&E.current&&(E.current.setAttribute(d,""),V()),function(){N.current=r.DomHandler.removeInlineStyle(N.current)}}),[d,l.breakpoint]);var Y=function(e,n){var t=r.classNames("p-menuitem",{"p-menuitem-active":e===m},e.className),i=r.classNames("p-menuitem-link",{"p-disabled":e.disabled}),o=r.IconUtils.getJSXIcon(e.icon,{className:"p-menuitem-icon"},{props:l}),c=e.label&&u.createElement("span",{className:"p-menuitem-text"},e.label),p=e.template?r.ObjectUtils.getJSXElement(e.template,e):null,d=J(e),f=K(e);return u.createElement("li",{key:e.label+"_"+n,id:e.id,className:t,style:e.style,onMouseEnter:function(n){return t=n,void((a=e).disabled||O?t.preventDefault():m&&s(a));var t,a},role:"none"},u.createElement("a",{href:e.url||"#",className:i,target:e.target,onClick:function(n){return t=n,(a=e).disabled||(a.url||t.preventDefault(),a.command&&a.command({originalEvent:t,item:l.item}),a.items&&s(m&&m===a?null:a)),void t.preventDefault();var t,a},onKeyDown:function(n){return I(n,e)},role:"menuitem","aria-haspopup":null!=e.items},o,c,p,d,u.createElement(a.Ripple,null)),f)},$=b.getOtherProps(l),B=r.classNames("p-megamenu p-component",{"p-megamenu-horizontal":"horizontal"===l.orientation,"p-megamenu-vertical":"vertical"===l.orientation,"p-megamenu-mobile-active":h},l.className),G=l.model?u.createElement("ul",{className:"p-megamenu-root-list",role:"menubar"},l.model.map((function(e,n){return Y(e,n)}))):null,Q=function(){if(l.start){var e=r.ObjectUtils.getJSXElement(l.start,l);return u.createElement("div",{className:"p-megamenu-start"},e)}return null}(),W=function(){if(l.end){var e=r.ObjectUtils.getJSXElement(l.end,l);return u.createElement("div",{className:"p-megamenu-end"},e)}return null}(),ee="vertical"===l.orientation||l.model&&l.model.length<1?null:u.createElement("a",{ref:k,href:"#",role:"button",tabIndex:0,className:"p-megamenu-button",onClick:U},u.createElement("i",{className:"pi pi-bars"}));return u.createElement("div",c({ref:E,id:l.id,className:B,style:l.style},$),Q,ee,G,W)})));v.displayName="MegaMenu",exports.MegaMenu=v;
@@ -28,6 +28,15 @@ export interface MegaMenuProps extends Omit<React.DetailedHTMLProps<React.HTMLAt
28
28
  * The template of starting element.
29
29
  */
30
30
  start?: React.ReactNode | ((props: MegaMenuProps) => React.ReactNode);
31
+ /**
32
+ * The breakpoint to define the maximum width boundary when responsiveness is enabled.
33
+ */
34
+ breakpoint?: string | undefined;
35
+ /**
36
+ * Maximum height of the options panel on responsive mode.
37
+ * @defaultValue 400px
38
+ */
39
+ scrollHeight?: string | undefined;
31
40
  /**
32
41
  * The template of trailing element
33
42
  */
@@ -1,8 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import PrimeReact from 'primereact/api';
3
- import { useEventListener, useMountEffect, useUpdateEffect } from 'primereact/hooks';
3
+ import { useMatchMedia, useEventListener, useResizeListener, useMountEffect, useUpdateEffect } from 'primereact/hooks';
4
4
  import { Ripple } from 'primereact/ripple';
5
- import { ObjectUtils, DomHandler, ZIndexUtils, classNames, IconUtils } from 'primereact/utils';
5
+ import { ObjectUtils, UniqueComponentId, DomHandler, ZIndexUtils, classNames, IconUtils } from 'primereact/utils';
6
6
 
7
7
  function _extends() {
8
8
  _extends = Object.assign ? Object.assign.bind() : function (target) {
@@ -82,6 +82,8 @@ var MegaMenuBase = {
82
82
  style: null,
83
83
  className: null,
84
84
  orientation: 'horizontal',
85
+ breakpoint: undefined,
86
+ scrollHeight: '400px',
85
87
  start: null,
86
88
  end: null,
87
89
  children: undefined
@@ -100,17 +102,41 @@ var MegaMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
100
102
  _React$useState2 = _slicedToArray(_React$useState, 2),
101
103
  activeItemState = _React$useState2[0],
102
104
  setActiveItemState = _React$useState2[1];
105
+ var _React$useState3 = React.useState(null),
106
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
107
+ attributeSelectorState = _React$useState4[0],
108
+ setAttributeSelectorState = _React$useState4[1];
109
+ var _React$useState5 = React.useState(false),
110
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
111
+ mobileActiveState = _React$useState6[0],
112
+ setMobileActiveState = _React$useState6[1];
103
113
  var elementRef = React.useRef(null);
114
+ var styleElementRef = React.useRef(null);
115
+ var menuButtonRef = React.useRef(null);
104
116
  var horizontal = props.orientation === 'horizontal';
105
117
  var vertical = props.orientation === 'vertical';
118
+ var isMobileMode = useMatchMedia("screen and (max-width: ".concat(props.breakpoint, ")"), !!props.breakpoint);
106
119
  var _useEventListener = useEventListener({
107
120
  type: 'click',
108
121
  listener: function listener(event) {
109
- isOutsideClicked(event) && setActiveItemState(null);
122
+ if ((!isMobileMode || mobileActiveState) && isOutsideClicked(event)) {
123
+ setActiveItemState(null);
124
+ setMobileActiveState(false);
125
+ }
110
126
  }
111
127
  }),
112
128
  _useEventListener2 = _slicedToArray(_useEventListener, 1),
113
129
  bindDocumentClickListener = _useEventListener2[0];
130
+ var _useResizeListener = useResizeListener({
131
+ listener: function listener() {
132
+ if (!isMobileMode || mobileActiveState) {
133
+ setActiveItemState(null);
134
+ setMobileActiveState(false);
135
+ }
136
+ }
137
+ }),
138
+ _useResizeListener2 = _slicedToArray(_useResizeListener, 1),
139
+ bindDocumentResizeListener = _useResizeListener2[0];
114
140
  var onLeafClick = function onLeafClick(event, item) {
115
141
  if (item.disabled) {
116
142
  event.preventDefault();
@@ -126,9 +152,10 @@ var MegaMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
126
152
  });
127
153
  }
128
154
  setActiveItemState(null);
155
+ setMobileActiveState(false);
129
156
  };
130
157
  var onCategoryMouseEnter = function onCategoryMouseEnter(event, item) {
131
- if (item.disabled) {
158
+ if (item.disabled || isMobileMode) {
132
159
  event.preventDefault();
133
160
  return;
134
161
  }
@@ -191,6 +218,13 @@ var MegaMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
191
218
  var collapseMenu = function collapseMenu(item) {
192
219
  setActiveItemState(null);
193
220
  };
221
+ var toggle = function toggle(event) {
222
+ event.preventDefault();
223
+ setMobileActiveState(function (prevMobileActive) {
224
+ return !prevMobileActive;
225
+ });
226
+ setActiveItemState(null);
227
+ };
194
228
  var findNextItem = function findNextItem(item) {
195
229
  var nextItem = item.nextElementSibling;
196
230
  return nextItem ? DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? findNextItem(nextItem) : nextItem : null;
@@ -208,7 +242,7 @@ var MegaMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
208
242
  prevItem && prevItem.children[0].focus();
209
243
  };
210
244
  var isOutsideClicked = function isOutsideClicked(event) {
211
- return elementRef.current && !(elementRef.current.isSameNode(event.target) || elementRef.current.contains(event.target));
245
+ return elementRef.current && !(elementRef.current.isSameNode(event.target) || elementRef.current.contains(event.target) || menuButtonRef.current && menuButtonRef.current.contains(event.target));
212
246
  };
213
247
  var getColumnClassName = function getColumnClassName(category) {
214
248
  var length = category.items ? category.items.length : 0;
@@ -241,13 +275,23 @@ var MegaMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
241
275
  };
242
276
  });
243
277
  useMountEffect(function () {
278
+ if (props.breakpoint) {
279
+ !attributeSelectorState && setAttributeSelectorState(UniqueComponentId());
280
+ }
244
281
  bindDocumentClickListener();
282
+ bindDocumentResizeListener();
245
283
  });
246
284
  useUpdateEffect(function () {
247
285
  var currentPanel = DomHandler.findSingle(elementRef.current, '.p-menuitem-active > .p-megamenu-panel');
248
- if (activeItemState) {
286
+ if (activeItemState && !isMobileMode) {
249
287
  ZIndexUtils.set('menu', currentPanel, PrimeReact.autoZIndex, PrimeReact.zIndex['menu']);
250
288
  }
289
+ if (isMobileMode) {
290
+ currentPanel && currentPanel.previousElementSibling.scrollIntoView({
291
+ block: 'nearest',
292
+ inline: 'nearest'
293
+ });
294
+ }
251
295
  return function () {
252
296
  ZIndexUtils.clear(currentPanel);
253
297
  };
@@ -373,6 +417,26 @@ var MegaMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
373
417
  }
374
418
  return null;
375
419
  };
420
+ var createStyle = function createStyle() {
421
+ if (!styleElementRef.current) {
422
+ styleElementRef.current = DomHandler.createInlineStyle(PrimeReact.nonce);
423
+ var selector = "".concat(attributeSelectorState);
424
+ var innerHTML = "\n@media screen and (max-width: ".concat(props.breakpoint, ") {\n .p-megamenu[").concat(selector, "] > .p-megamenu-root-list .p-menuitem-active .p-megamenu-panel {\n position: relative;\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n background: inherit;\n }\n\n .p-megamenu[").concat(selector, "] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-megamenu[").concat(selector, "] .p-megamenu-grid {\n flex-wrap: wrap;\n }\n\n ").concat(horizontal ? "\n.p-megamenu[".concat(selector, "] .p-megamenu-button {\n display: flex;\n}\n\n.p-megamenu[").concat(selector, "].p-megamenu-horizontal {\n position: relative;\n}\n\n.p-megamenu[").concat(selector, "].p-megamenu-horizontal .p-megamenu-root-list {\n display: none;\n}\n\n.p-megamenu-horizontal[").concat(selector, "] div[class*=\"p-megamenu-col-\"] {\n width: auto;\n flex: 1;\n padding: 0;\n}\n\n.p-megamenu[").concat(selector, "].p-megamenu-mobile-active .p-megamenu-root-list {\n display: flex;\n flex-direction: column;\n position: absolute;\n width: 100%;\n top: 100%;\n left: 0;\n z-index: 1;\n}\n ") : '', "\n\n ").concat(vertical ? "\n.p-megamenu-vertical[".concat(selector, "] {\n width: 100%;\n}\n\n.p-megamenu-vertical[").concat(selector, "] .p-megamenu-root-list {\n max-height: ").concat(props.scrollHeight, ";\n overflow: ").concat(props.scrollHeight ? 'auto' : '', ";\n}\n.p-megamenu-vertical[").concat(selector, "] div[class*=\"p-megamenu-col-\"] {\n width: 100%;\n padding: 0;\n}\n\n.p-megamenu-vertical[").concat(selector, "] .p-megamenu-submenu {\n width: 100%;\n}\n\n.p-megamenu-vertical[").concat(selector, "] div[class*=\"p-megamenu-col-\"] .p-megamenu-submenu-header {\n background: inherit;\n}\n\n.p-megamenu-vertical[").concat(selector, "] .p-submenu-icon:before {\n content: \"\\e930\";\n}\n ") : '', "\n}\n");
425
+ styleElementRef.current.innerHTML = innerHTML;
426
+ }
427
+ };
428
+ var destroyStyle = function destroyStyle() {
429
+ styleElementRef.current = DomHandler.removeInlineStyle(styleElementRef.current);
430
+ };
431
+ useUpdateEffect(function () {
432
+ if (attributeSelectorState && elementRef.current) {
433
+ elementRef.current.setAttribute(attributeSelectorState, '');
434
+ createStyle();
435
+ }
436
+ return function () {
437
+ destroyStyle();
438
+ };
439
+ }, [attributeSelectorState, props.breakpoint]);
376
440
  var createCategory = function createCategory(category, index) {
377
441
  var className = classNames('p-menuitem', {
378
442
  'p-menuitem-active': category === activeItemState
@@ -443,20 +507,41 @@ var MegaMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (
443
507
  }
444
508
  return null;
445
509
  };
510
+ var createMenuButton = function createMenuButton() {
511
+ if (props.orientation === 'vertical' || props.model && props.model.length < 1) {
512
+ return null;
513
+ }
514
+ /* eslint-disable */
515
+ var button = /*#__PURE__*/React.createElement("a", {
516
+ ref: menuButtonRef,
517
+ href: '#',
518
+ role: "button",
519
+ tabIndex: 0,
520
+ className: "p-megamenu-button",
521
+ onClick: toggle
522
+ }, /*#__PURE__*/React.createElement("i", {
523
+ className: "pi pi-bars"
524
+ }));
525
+ /* eslint-enable */
526
+
527
+ return button;
528
+ };
446
529
  var otherProps = MegaMenuBase.getOtherProps(props);
447
530
  var className = classNames('p-megamenu p-component', {
448
531
  'p-megamenu-horizontal': props.orientation === 'horizontal',
449
- 'p-megamenu-vertical': props.orientation === 'vertical'
532
+ 'p-megamenu-vertical': props.orientation === 'vertical',
533
+ 'p-megamenu-mobile-active': mobileActiveState
450
534
  }, props.className);
451
535
  var menu = createMenu();
452
536
  var start = createStartContent();
453
537
  var end = createEndContent();
538
+ var menuButton = createMenuButton();
454
539
  return /*#__PURE__*/React.createElement("div", _extends({
455
540
  ref: elementRef,
456
541
  id: props.id,
457
542
  className: className,
458
543
  style: props.style
459
- }, otherProps), start, menu, end);
544
+ }, otherProps), start, menuButton, menu, end);
460
545
  }));
461
546
  MegaMenu.displayName = 'MegaMenu';
462
547
 
@@ -1 +1 @@
1
- import*as e from"react";import t from"primereact/api";import{useEventListener as n,useMountEffect as r,useUpdateEffect as a}from"primereact/hooks";import{Ripple as l}from"primereact/ripple";import{ObjectUtils as i,DomHandler as u,ZIndexUtils as m,classNames as o,IconUtils as s}from"primereact/utils";function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},c.apply(this,arguments)}function p(e){if(Array.isArray(e))return e}function f(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,l,i,u=[],m=!0,o=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;m=!1}else for(;!(m=(r=l.call(n)).done)&&(u.push(r.value),u.length!==t);m=!0);}catch(e){o=!0,a=e}finally{try{if(!m&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(o)throw a}}return u}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function v(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}function g(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function b(e,t){return p(e)||f(e,t)||v(e,t)||g()}var y={defaultProps:{__TYPE:"MegaMenu",id:null,model:null,style:null,className:null,orientation:"horizontal",start:null,end:null,children:void 0},getProps:function(e){return i.getMergedProps(e,y.defaultProps)},getOtherProps:function(e){return i.getDiffProps(e,y.defaultProps)}},h=e.memo(e.forwardRef((function(p,f){var d=y.getProps(p),v=b(e.useState(null),2),g=v[0],h=v[1],E=e.useRef(null),N="horizontal"===d.orientation,k="vertical"===d.orientation,S=b(n({type:"click",listener:function(e){M(e)&&h(null)}}),1)[0],w=function(e,t){t.disabled?e.preventDefault():(t.url||e.preventDefault(),t.command&&t.command({originalEvent:e,item:t}),h(null))},D=function(e,t){var n=e.currentTarget.parentElement;switch(e.which){case 40:N?P(t):x(n),e.preventDefault();break;case 38:k?I(n):t.items&&t===g&&C(),e.preventDefault();break;case 39:N?x(n):P(t),e.preventDefault();break;case 37:N?I(n):t.items&&t===g&&C(),e.preventDefault()}},P=function(e){e.items&&h(e)},C=function(e){h(null)},O=function e(t){var n=t.nextElementSibling;return n?u.hasClass(n,"p-disabled")||!u.hasClass(n,"p-menuitem")?e(n):n:null},j=function e(t){var n=t.previousElementSibling;return n?u.hasClass(n,"p-disabled")||!u.hasClass(n,"p-menuitem")?e(n):n:null},x=function(e){var t=O(e);t&&t.children[0].focus()},I=function(e){var t=j(e);t&&t.children[0].focus()},M=function(e){return E.current&&!(E.current.isSameNode(e.target)||E.current.contains(e.target))},_=function(e){var t;switch(e.items?e.items.length:0){case 2:t="p-megamenu-col-6";break;case 3:t="p-megamenu-col-4";break;case 4:t="p-megamenu-col-3";break;case 6:t="p-megamenu-col-2";break;default:t="p-megamenu-col-12"}return t};e.useImperativeHandle(f,(function(){return{props:d,getElement:function(){return E.current}}})),r((function(){S()})),a((function(){var e=u.findSingle(E.current,".p-menuitem-active > .p-megamenu-panel");return g&&m.set("menu",e,t.autoZIndex,t.zIndex.menu),function(){m.clear(e)}}),[g]);var A=function(t){return e.createElement("li",{key:"separator_"+t,className:"p-menu-separator",role:"separator"})},J=function(t){if(t.items){var n=o("p-submenu-icon pi",{"pi-angle-down":N,"pi-angle-right":k});return e.createElement("span",{className:n})}return null},X=function(t,n){if(!1===t.visible)return null;if(t.separator)return A(n);var r=t.label+"_"+n,a=o("p-menuitem",t.className),u=o("p-menuitem-link",{"p-disabled":t.disabled}),m=o(t.icon,"p-menuitem-icon"),c=s.getJSXIcon(t.icon,{className:"p-menuitem-icon"},{props:d}),p=e.createElement("a",{href:t.url||"#",className:u,target:t.target,onClick:function(e){return w(e,t)},role:"menuitem","aria-disabled":t.disabled},c,t.label&&e.createElement("span",{className:"p-menuitem-text"},t.label),e.createElement(l,null));return t.template&&(p=i.getJSXElement(t.template,t,{onClick:function(e){return w(e,t)},className:u,labelClassName:"p-menuitem-text",iconClassName:m,element:p,props:d})),e.createElement("li",{key:r,id:t.id,className:a,style:t.style,role:"none"},p)},z=function(t){var n=o("p-megamenu-submenu-header",{"p-disabled":t.disabled},t.className),r=t.items.map(X);return e.createElement(e.Fragment,{key:t.label},e.createElement("li",{id:t.id,className:n,style:t.style,role:"presentation"},t.label),r)},T=function(e){return e.map(z)},R=function(t,n,r,a){var l=t.label+"_column_"+r,i=T(n);return e.createElement("div",{key:l,className:a},e.createElement("ul",{className:"p-megamenu-submenu",role:"menu"},i))},F=function(e){if(e.items){var t=_(e);return e.items.map((function(n,r){return R(e,n,r,t)}))}return null},H=function(t){if(t.items){var n=F(t);return e.createElement("div",{className:"p-megamenu-panel"},e.createElement("div",{className:"p-megamenu-grid"},n))}return null},K=function(t,n){var r=o("p-menuitem",{"p-menuitem-active":t===g},t.className),a=o("p-menuitem-link",{"p-disabled":t.disabled}),u=s.getJSXIcon(t.icon,{className:"p-menuitem-icon"},{props:d}),m=t.label&&e.createElement("span",{className:"p-menuitem-text"},t.label),c=t.template?i.getJSXElement(t.template,t):null,p=J(t),f=H(t);return e.createElement("li",{key:t.label+"_"+n,id:t.id,className:r,style:t.style,onMouseEnter:function(e){return n=e,void((r=t).disabled?n.preventDefault():g&&h(r));var n,r},role:"none"},e.createElement("a",{href:t.url||"#",className:a,target:t.target,onClick:function(e){return n=e,(r=t).disabled||(r.url||n.preventDefault(),r.command&&r.command({originalEvent:n,item:d.item}),r.items&&h(g&&g===r?null:r)),void n.preventDefault();var n,r},onKeyDown:function(e){return D(e,t)},role:"menuitem","aria-haspopup":null!=t.items},u,m,c,p,e.createElement(l,null)),f)},U=y.getOtherProps(d),Y=o("p-megamenu p-component",{"p-megamenu-horizontal":"horizontal"===d.orientation,"p-megamenu-vertical":"vertical"===d.orientation},d.className),Z=d.model?e.createElement("ul",{className:"p-megamenu-root-list",role:"menubar"},d.model.map((function(e,t){return K(e,t)}))):null,$=function(){if(d.start){var t=i.getJSXElement(d.start,d);return e.createElement("div",{className:"p-megamenu-start"},t)}return null}(),q=function(){if(d.end){var t=i.getJSXElement(d.end,d);return e.createElement("div",{className:"p-megamenu-end"},t)}return null}();return e.createElement("div",c({ref:E,id:d.id,className:Y,style:d.style},U),$,Z,q)})));h.displayName="MegaMenu";export{h as MegaMenu};
1
+ import*as e from"react";import n from"primereact/api";import{useMatchMedia as t,useEventListener as a,useResizeListener as r,useMountEffect as l,useUpdateEffect as i}from"primereact/hooks";import{Ripple as u}from"primereact/ripple";import{ObjectUtils as o,UniqueComponentId as m,DomHandler as c,ZIndexUtils as s,classNames as p,IconUtils as f}from"primereact/utils";function d(){return d=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e},d.apply(this,arguments)}function g(e){if(Array.isArray(e))return e}function v(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,r,l,i,u=[],o=!0,m=!1;try{if(l=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;o=!1}else for(;!(o=(a=l.call(t)).done)&&(u.push(a.value),u.length!==n);o=!0);}catch(e){m=!0,r=e}finally{try{if(!o&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(m)throw r}}return u}}function b(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=new Array(n);t<n;t++)a[t]=e[t];return a}function h(e,n){if(e){if("string"==typeof e)return b(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?b(e,n):void 0}}function y(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function E(e,n){return g(e)||v(e,n)||h(e,n)||y()}var N={defaultProps:{__TYPE:"MegaMenu",id:null,model:null,style:null,className:null,orientation:"horizontal",breakpoint:void 0,scrollHeight:"400px",start:null,end:null,children:void 0},getProps:function(e){return o.getMergedProps(e,N.defaultProps)},getOtherProps:function(e){return o.getDiffProps(e,N.defaultProps)}},k=e.memo(e.forwardRef((function(g,v){var b=N.getProps(g),h=E(e.useState(null),2),y=h[0],k=h[1],w=E(e.useState(null),2),S=w[0],x=w[1],D=E(e.useState(!1),2),I=D[0],C=D[1],P=e.useRef(null),O=e.useRef(null),z=e.useRef(null),j="horizontal"===b.orientation,M="vertical"===b.orientation,A=t("screen and (max-width: ".concat(b.breakpoint,")"),!!b.breakpoint),_=E(a({type:"click",listener:function(e){A&&!I||!Y(e)||(k(null),C(!1))}}),1)[0],J=E(r({listener:function(){A&&!I||(k(null),C(!1))}}),1)[0],X=function(e,n){n.disabled?e.preventDefault():(n.url||e.preventDefault(),n.command&&n.command({originalEvent:e,item:n}),k(null),C(!1))},H=function(e,n){var t=e.currentTarget.parentElement;switch(e.which){case 40:j?R(n):U(t),e.preventDefault();break;case 38:M?V(t):n.items&&n===y&&T(),e.preventDefault();break;case 39:j?U(t):R(n),e.preventDefault();break;case 37:j?V(t):n.items&&n===y&&T(),e.preventDefault()}},R=function(e){e.items&&k(e)},T=function(e){k(null)},F=function(e){e.preventDefault(),C((function(e){return!e})),k(null)},K=function e(n){var t=n.nextElementSibling;return t?c.hasClass(t,"p-disabled")||!c.hasClass(t,"p-menuitem")?e(t):t:null},L=function e(n){var t=n.previousElementSibling;return t?c.hasClass(t,"p-disabled")||!c.hasClass(t,"p-menuitem")?e(t):t:null},U=function(e){var n=K(e);n&&n.children[0].focus()},V=function(e){var n=L(e);n&&n.children[0].focus()},Y=function(e){return P.current&&!(P.current.isSameNode(e.target)||P.current.contains(e.target)||z.current&&z.current.contains(e.target))},Z=function(e){var n;switch(e.items?e.items.length:0){case 2:n="p-megamenu-col-6";break;case 3:n="p-megamenu-col-4";break;case 4:n="p-megamenu-col-3";break;case 6:n="p-megamenu-col-2";break;default:n="p-megamenu-col-12"}return n};e.useImperativeHandle(v,(function(){return{props:b,getElement:function(){return P.current}}})),l((function(){b.breakpoint&&!S&&x(m()),_(),J()})),i((function(){var e=c.findSingle(P.current,".p-menuitem-active > .p-megamenu-panel");return y&&!A&&s.set("menu",e,n.autoZIndex,n.zIndex.menu),A&&e&&e.previousElementSibling.scrollIntoView({block:"nearest",inline:"nearest"}),function(){s.clear(e)}}),[y]);var $=function(n){return e.createElement("li",{key:"separator_"+n,className:"p-menu-separator",role:"separator"})},q=function(n){if(n.items){var t=p("p-submenu-icon pi",{"pi-angle-down":j,"pi-angle-right":M});return e.createElement("span",{className:t})}return null},B=function(n,t){if(!1===n.visible)return null;if(n.separator)return $(t);var a=n.label+"_"+t,r=p("p-menuitem",n.className),l=p("p-menuitem-link",{"p-disabled":n.disabled}),i=p(n.icon,"p-menuitem-icon"),m=f.getJSXIcon(n.icon,{className:"p-menuitem-icon"},{props:b}),c=e.createElement("a",{href:n.url||"#",className:l,target:n.target,onClick:function(e){return X(e,n)},role:"menuitem","aria-disabled":n.disabled},m,n.label&&e.createElement("span",{className:"p-menuitem-text"},n.label),e.createElement(u,null));return n.template&&(c=o.getJSXElement(n.template,n,{onClick:function(e){return X(e,n)},className:l,labelClassName:"p-menuitem-text",iconClassName:i,element:c,props:b})),e.createElement("li",{key:a,id:n.id,className:r,style:n.style,role:"none"},c)},G=function(n){var t=p("p-megamenu-submenu-header",{"p-disabled":n.disabled},n.className),a=n.items.map(B);return e.createElement(e.Fragment,{key:n.label},e.createElement("li",{id:n.id,className:t,style:n.style,role:"presentation"},n.label),a)},Q=function(e){return e.map(G)},W=function(n,t,a,r){var l=n.label+"_column_"+a,i=Q(t);return e.createElement("div",{key:l,className:r},e.createElement("ul",{className:"p-megamenu-submenu",role:"menu"},i))},ee=function(e){if(e.items){var n=Z(e);return e.items.map((function(t,a){return W(e,t,a,n)}))}return null},ne=function(n){if(n.items){var t=ee(n);return e.createElement("div",{className:"p-megamenu-panel"},e.createElement("div",{className:"p-megamenu-grid"},t))}return null},te=function(){if(!O.current){O.current=c.createInlineStyle(n.nonce);var e="".concat(S),t="\n@media screen and (max-width: ".concat(b.breakpoint,") {\n .p-megamenu[").concat(e,"] > .p-megamenu-root-list .p-menuitem-active .p-megamenu-panel {\n position: relative;\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n background: inherit;\n }\n\n .p-megamenu[").concat(e,"] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-megamenu[").concat(e,"] .p-megamenu-grid {\n flex-wrap: wrap;\n }\n\n ").concat(j?"\n.p-megamenu[".concat(e,"] .p-megamenu-button {\n display: flex;\n}\n\n.p-megamenu[").concat(e,"].p-megamenu-horizontal {\n position: relative;\n}\n\n.p-megamenu[").concat(e,"].p-megamenu-horizontal .p-megamenu-root-list {\n display: none;\n}\n\n.p-megamenu-horizontal[").concat(e,'] div[class*="p-megamenu-col-"] {\n width: auto;\n flex: 1;\n padding: 0;\n}\n\n.p-megamenu[').concat(e,"].p-megamenu-mobile-active .p-megamenu-root-list {\n display: flex;\n flex-direction: column;\n position: absolute;\n width: 100%;\n top: 100%;\n left: 0;\n z-index: 1;\n}\n "):"","\n\n ").concat(M?"\n.p-megamenu-vertical[".concat(e,"] {\n width: 100%;\n}\n\n.p-megamenu-vertical[").concat(e,"] .p-megamenu-root-list {\n max-height: ").concat(b.scrollHeight,";\n overflow: ").concat(b.scrollHeight?"auto":"",";\n}\n.p-megamenu-vertical[").concat(e,'] div[class*="p-megamenu-col-"] {\n width: 100%;\n padding: 0;\n}\n\n.p-megamenu-vertical[').concat(e,"] .p-megamenu-submenu {\n width: 100%;\n}\n\n.p-megamenu-vertical[").concat(e,'] div[class*="p-megamenu-col-"] .p-megamenu-submenu-header {\n background: inherit;\n}\n\n.p-megamenu-vertical[').concat(e,'] .p-submenu-icon:before {\n content: "\\e930";\n}\n '):"","\n}\n");O.current.innerHTML=t}};i((function(){return S&&P.current&&(P.current.setAttribute(S,""),te()),function(){O.current=c.removeInlineStyle(O.current)}}),[S,b.breakpoint]);var ae=function(n,t){var a=p("p-menuitem",{"p-menuitem-active":n===y},n.className),r=p("p-menuitem-link",{"p-disabled":n.disabled}),l=f.getJSXIcon(n.icon,{className:"p-menuitem-icon"},{props:b}),i=n.label&&e.createElement("span",{className:"p-menuitem-text"},n.label),m=n.template?o.getJSXElement(n.template,n):null,c=q(n),s=ne(n);return e.createElement("li",{key:n.label+"_"+t,id:n.id,className:a,style:n.style,onMouseEnter:function(e){return t=e,void((a=n).disabled||A?t.preventDefault():y&&k(a));var t,a},role:"none"},e.createElement("a",{href:n.url||"#",className:r,target:n.target,onClick:function(e){return t=e,(a=n).disabled||(a.url||t.preventDefault(),a.command&&a.command({originalEvent:t,item:b.item}),a.items&&k(y&&y===a?null:a)),void t.preventDefault();var t,a},onKeyDown:function(e){return H(e,n)},role:"menuitem","aria-haspopup":null!=n.items},l,i,m,c,e.createElement(u,null)),s)},re=N.getOtherProps(b),le=p("p-megamenu p-component",{"p-megamenu-horizontal":"horizontal"===b.orientation,"p-megamenu-vertical":"vertical"===b.orientation,"p-megamenu-mobile-active":I},b.className),ie=b.model?e.createElement("ul",{className:"p-megamenu-root-list",role:"menubar"},b.model.map((function(e,n){return ae(e,n)}))):null,ue=function(){if(b.start){var n=o.getJSXElement(b.start,b);return e.createElement("div",{className:"p-megamenu-start"},n)}return null}(),oe=function(){if(b.end){var n=o.getJSXElement(b.end,b);return e.createElement("div",{className:"p-megamenu-end"},n)}return null}(),me="vertical"===b.orientation||b.model&&b.model.length<1?null:e.createElement("a",{ref:z,href:"#",role:"button",tabIndex:0,className:"p-megamenu-button",onClick:F},e.createElement("i",{className:"pi pi-bars"}));return e.createElement("div",d({ref:P,id:b.id,className:le,style:b.style},re),ue,me,ie,oe)})));k.displayName="MegaMenu";export{k as MegaMenu};