primevue 3.41.0 → 3.41.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 (74) hide show
  1. package/button/BaseButton.vue +4 -0
  2. package/button/Button.d.ts +4 -0
  3. package/button/Button.vue +1 -1
  4. package/button/button.cjs.js +6 -1
  5. package/button/button.cjs.min.js +1 -1
  6. package/button/button.esm.js +6 -1
  7. package/button/button.esm.min.js +1 -1
  8. package/button/button.js +6 -1
  9. package/button/button.min.js +1 -1
  10. package/calendar/Calendar.d.ts +18 -0
  11. package/calendar/Calendar.vue +34 -10
  12. package/calendar/calendar.cjs.js +53 -26
  13. package/calendar/calendar.cjs.min.js +1 -1
  14. package/calendar/calendar.esm.js +53 -26
  15. package/calendar/calendar.esm.min.js +1 -1
  16. package/calendar/calendar.js +53 -26
  17. package/calendar/calendar.min.js +1 -1
  18. package/column/Column.d.ts +4 -0
  19. package/core/core.js +7 -2
  20. package/core/core.min.js +2 -2
  21. package/datatable/DataTable.vue +4 -7
  22. package/datatable/HeaderCell.vue +1 -1
  23. package/datatable/datatable.cjs.js +6 -9
  24. package/datatable/datatable.cjs.min.js +1 -1
  25. package/datatable/datatable.esm.js +6 -9
  26. package/datatable/datatable.esm.min.js +1 -1
  27. package/datatable/datatable.js +6 -9
  28. package/datatable/datatable.min.js +1 -1
  29. package/dock/Dock.vue +27 -5
  30. package/dock/dock.cjs.js +27 -6
  31. package/dock/dock.cjs.min.js +1 -1
  32. package/dock/dock.esm.js +27 -6
  33. package/dock/dock.esm.min.js +1 -1
  34. package/dock/dock.js +27 -6
  35. package/dock/dock.min.js +1 -1
  36. package/listbox/BaseListbox.vue +12 -3
  37. package/listbox/Listbox.d.ts +1 -1
  38. package/listbox/listbox.cjs.js +12 -3
  39. package/listbox/listbox.cjs.min.js +1 -1
  40. package/listbox/listbox.esm.js +12 -3
  41. package/listbox/listbox.esm.min.js +1 -1
  42. package/listbox/listbox.js +12 -3
  43. package/listbox/listbox.min.js +1 -1
  44. package/megamenu/MegaMenu.d.ts +23 -0
  45. package/megamenu/MegaMenu.vue +45 -26
  46. package/megamenu/megamenu.cjs.js +63 -39
  47. package/megamenu/megamenu.cjs.min.js +1 -1
  48. package/megamenu/megamenu.esm.js +63 -39
  49. package/megamenu/megamenu.esm.min.js +1 -1
  50. package/megamenu/megamenu.js +63 -39
  51. package/megamenu/megamenu.min.js +1 -1
  52. package/menubar/Menubar.d.ts +27 -3
  53. package/menubar/Menubar.vue +48 -29
  54. package/menubar/menubar.cjs.js +68 -44
  55. package/menubar/menubar.cjs.min.js +1 -1
  56. package/menubar/menubar.esm.js +68 -44
  57. package/menubar/menubar.esm.min.js +1 -1
  58. package/menubar/menubar.js +68 -44
  59. package/menubar/menubar.min.js +1 -1
  60. package/package.json +1 -1
  61. package/panelmenu/style/panelmenustyle.cjs.js +1 -1
  62. package/panelmenu/style/panelmenustyle.cjs.min.js +1 -1
  63. package/panelmenu/style/panelmenustyle.esm.js +1 -1
  64. package/panelmenu/style/panelmenustyle.esm.min.js +1 -1
  65. package/panelmenu/style/panelmenustyle.js +1 -1
  66. package/panelmenu/style/panelmenustyle.min.js +1 -1
  67. package/styleclass/StyleClass.d.ts +10 -0
  68. package/styleclass/styleclass.cjs.js +18 -0
  69. package/styleclass/styleclass.cjs.min.js +1 -1
  70. package/styleclass/styleclass.esm.js +18 -0
  71. package/styleclass/styleclass.esm.min.js +1 -1
  72. package/styleclass/styleclass.js +18 -0
  73. package/styleclass/styleclass.min.js +1 -1
  74. package/web-types.json +1 -1
@@ -334,6 +334,7 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
334
334
  emits: ['focus', 'blur'],
335
335
  outsideClickListener: null,
336
336
  resizeListener: null,
337
+ matchMediaListener: null,
337
338
  container: null,
338
339
  menubar: null,
339
340
  searchTimeout: null,
@@ -350,6 +351,7 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
350
351
  },
351
352
  activeItem: null,
352
353
  dirty: false,
354
+ query: null,
353
355
  queryMatches: false
354
356
  };
355
357
  },
@@ -368,19 +370,14 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
368
370
  }
369
371
  },
370
372
  mounted: function mounted() {
371
- var _this = this;
372
373
  this.id = this.id || utils.UniqueComponentId();
373
- var query = matchMedia("(max-width: ".concat(this.breakpoint, ")"));
374
- this.queryMatches = query.matches;
375
- query.addEventListener('change', function () {
376
- _this.queryMatches = query.matches;
377
- _this.mobileActive = false;
378
- });
374
+ this.bindMatchMediaListener();
379
375
  },
380
376
  beforeUnmount: function beforeUnmount() {
381
377
  this.mobileActive = false;
382
378
  this.unbindOutsideClickListener();
383
379
  this.unbindResizeListener();
380
+ this.unbindMatchMediaListener();
384
381
  },
385
382
  methods: {
386
383
  getItemProp: function getItemProp(item, name) {
@@ -405,7 +402,7 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
405
402
  return processedItem && utils.ObjectUtils.isNotEmpty(processedItem.items);
406
403
  },
407
404
  toggle: function toggle(event) {
408
- var _this2 = this;
405
+ var _this = this;
409
406
  if (this.mobileActive) {
410
407
  this.mobileActive = false;
411
408
  utils.ZIndexUtils.clear(this.menubar);
@@ -414,7 +411,7 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
414
411
  this.mobileActive = true;
415
412
  utils.ZIndexUtils.set('menu', this.menubar, this.$primevue.config.zIndex.menu);
416
413
  setTimeout(function () {
417
- _this2.show();
414
+ _this.show();
418
415
  }, 1);
419
416
  }
420
417
  this.bindOutsideClickListener();
@@ -429,11 +426,11 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
429
426
  utils.DomHandler.focus(this.menubar);
430
427
  },
431
428
  hide: function hide(event, isFocus) {
432
- var _this3 = this;
429
+ var _this2 = this;
433
430
  if (this.mobileActive) {
434
431
  this.mobileActive = false;
435
432
  setTimeout(function () {
436
- utils.DomHandler.focus(_this3.$refs.menubutton);
433
+ utils.DomHandler.focus(_this2.$refs.menubutton);
437
434
  }, 0);
438
435
  }
439
436
  this.activeItem = null;
@@ -743,13 +740,13 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
743
740
  this.hide();
744
741
  },
745
742
  bindOutsideClickListener: function bindOutsideClickListener() {
746
- var _this4 = this;
743
+ var _this3 = this;
747
744
  if (!this.outsideClickListener) {
748
745
  this.outsideClickListener = function (event) {
749
- var isOutsideContainer = _this4.container && !_this4.container.contains(event.target);
750
- var isOutsideTarget = !(_this4.target && (_this4.target === event.target || _this4.target.contains(event.target)));
746
+ var isOutsideContainer = _this3.container && !_this3.container.contains(event.target);
747
+ var isOutsideTarget = !(_this3.target && (_this3.target === event.target || _this3.target.contains(event.target)));
751
748
  if (isOutsideContainer && isOutsideTarget) {
752
- _this4.hide();
749
+ _this3.hide();
753
750
  }
754
751
  };
755
752
  document.addEventListener('click', this.outsideClickListener);
@@ -762,13 +759,13 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
762
759
  }
763
760
  },
764
761
  bindResizeListener: function bindResizeListener() {
765
- var _this5 = this;
762
+ var _this4 = this;
766
763
  if (!this.resizeListener) {
767
764
  this.resizeListener = function (event) {
768
765
  if (!utils.DomHandler.isTouchDevice()) {
769
- _this5.hide(event, true);
766
+ _this4.hide(event, true);
770
767
  }
771
- _this5.mobileActive = false;
768
+ _this4.mobileActive = false;
772
769
  };
773
770
  window.addEventListener('resize', this.resizeListener);
774
771
  }
@@ -779,6 +776,25 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
779
776
  this.resizeListener = null;
780
777
  }
781
778
  },
779
+ bindMatchMediaListener: function bindMatchMediaListener() {
780
+ var _this5 = this;
781
+ if (!this.matchMediaListener) {
782
+ var query = matchMedia("(max-width: ".concat(this.breakpoint, ")"));
783
+ this.query = query;
784
+ this.queryMatches = query.matches;
785
+ this.matchMediaListener = function () {
786
+ _this5.queryMatches = query.matches;
787
+ _this5.mobileActive = false;
788
+ };
789
+ this.query.addEventListener('change', this.matchMediaListener);
790
+ }
791
+ },
792
+ unbindMatchMediaListener: function unbindMatchMediaListener() {
793
+ if (this.matchMediaListener) {
794
+ this.query.removeEventListener('change', this.matchMediaListener);
795
+ this.matchMediaListener = null;
796
+ }
797
+ },
782
798
  isItemMatched: function isItemMatched(processedItem) {
783
799
  return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());
784
800
  },
@@ -952,7 +968,6 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
952
968
  var _hoisted_1 = ["id"];
953
969
  var _hoisted_2 = ["aria-haspopup", "aria-expanded", "aria-controls", "aria-label"];
954
970
  function render(_ctx, _cache, $props, $setup, $data, $options) {
955
- var _ctx$$primevue$config;
956
971
  var _component_BarsIcon = vue.resolveComponent("BarsIcon");
957
972
  var _component_MegaMenuSub = vue.resolveComponent("MegaMenuSub");
958
973
  return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
@@ -964,25 +979,34 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
964
979
  }), [_ctx.$slots.start ? (vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
965
980
  key: 0,
966
981
  "class": _ctx.cx('start')
967
- }, _ctx.ptm('start')), [vue.renderSlot(_ctx.$slots, "start")], 16)) : vue.createCommentVNode("", true), _ctx.model && _ctx.model.length > 0 ? (vue.openBlock(), vue.createElementBlock("a", vue.mergeProps({
968
- key: 1,
969
- ref: "menubutton",
970
- role: "button",
971
- tabindex: "0",
972
- "class": _ctx.cx('menubutton'),
973
- "aria-haspopup": _ctx.model.length && _ctx.model.length > 0 ? true : false,
974
- "aria-expanded": $data.mobileActive,
975
- "aria-controls": $data.id,
976
- "aria-label": (_ctx$$primevue$config = _ctx.$primevue.config.locale.aria) === null || _ctx$$primevue$config === void 0 ? void 0 : _ctx$$primevue$config.navigation,
977
- onClick: _cache[0] || (_cache[0] = function ($event) {
978
- return $options.menuButtonClick($event);
979
- }),
980
- onKeydown: _cache[1] || (_cache[1] = function ($event) {
981
- return $options.menuButtonKeydown($event);
982
- })
983
- }, _ctx.ptm('menubutton')), [vue.renderSlot(_ctx.$slots, "menubuttonicon", {}, function () {
984
- return [vue.createVNode(_component_BarsIcon, vue.normalizeProps(vue.guardReactiveProps(_ctx.ptm('menubuttonicon'))), null, 16)];
985
- })], 16, _hoisted_2)) : vue.createCommentVNode("", true), vue.createVNode(_component_MegaMenuSub, {
982
+ }, _ctx.ptm('start')), [vue.renderSlot(_ctx.$slots, "start")], 16)) : vue.createCommentVNode("", true), vue.renderSlot(_ctx.$slots, "menubutton", {
983
+ id: $data.id,
984
+ "class": vue.normalizeClass(_ctx.cx('menubutton')),
985
+ toggleCallback: function toggleCallback(event) {
986
+ return $options.menuButtonClick(event);
987
+ }
988
+ }, function () {
989
+ var _ctx$$primevue$config;
990
+ return [_ctx.model && _ctx.model.length > 0 ? (vue.openBlock(), vue.createElementBlock("a", vue.mergeProps({
991
+ key: 0,
992
+ ref: "menubutton",
993
+ role: "button",
994
+ tabindex: "0",
995
+ "class": _ctx.cx('menubutton'),
996
+ "aria-haspopup": _ctx.model.length && _ctx.model.length > 0 ? true : false,
997
+ "aria-expanded": $data.mobileActive,
998
+ "aria-controls": $data.id,
999
+ "aria-label": (_ctx$$primevue$config = _ctx.$primevue.config.locale.aria) === null || _ctx$$primevue$config === void 0 ? void 0 : _ctx$$primevue$config.navigation,
1000
+ onClick: _cache[0] || (_cache[0] = function ($event) {
1001
+ return $options.menuButtonClick($event);
1002
+ }),
1003
+ onKeydown: _cache[1] || (_cache[1] = function ($event) {
1004
+ return $options.menuButtonKeydown($event);
1005
+ })
1006
+ }, _ctx.ptm('menubutton')), [vue.renderSlot(_ctx.$slots, "menubuttonicon", {}, function () {
1007
+ return [vue.createVNode(_component_BarsIcon, vue.normalizeProps(vue.guardReactiveProps(_ctx.ptm('menubuttonicon'))), null, 16)];
1008
+ })], 16, _hoisted_2)) : vue.createCommentVNode("", true)];
1009
+ }), vue.createVNode(_component_MegaMenuSub, {
986
1010
  ref: $options.menubarRef,
987
1011
  id: $data.id + '_list',
988
1012
  tabindex: !_ctx.disabled ? _ctx.tabindex : -1,
@@ -1008,7 +1032,7 @@ this.primevue.megamenu = (function (BarsIcon, utils, BaseComponent, MegaMenuStyl
1008
1032
  onItemClick: $options.onItemClick,
1009
1033
  onItemMouseenter: $options.onItemMouseEnter
1010
1034
  }, null, 8, ["id", "tabindex", "aria-label", "aria-labelledby", "aria-disabled", "aria-orientation", "aria-activedescendant", "menuId", "focusedItemId", "items", "horizontal", "templates", "activeItem", "mobileActive", "pt", "unstyled", "onFocus", "onBlur", "onKeydown", "onItemClick", "onItemMouseenter"]), _ctx.$slots.end ? (vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
1011
- key: 2,
1035
+ key: 1,
1012
1036
  "class": _ctx.cx('end')
1013
1037
  }, _ctx.ptm('end')), [vue.renderSlot(_ctx.$slots, "end")], 16)) : vue.createCommentVNode("", true)], 16, _hoisted_1);
1014
1038
  }
@@ -1 +1 @@
1
- this.primevue=this.primevue||{},this.primevue.megamenu=function(e,t,i,n,s,o,r,c){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=a(e),l=a(i),u=a(n),d=a(s),I={name:"BaseMegaMenu",extends:l.default,props:{model:{type:Array,default:null},orientation:{type:String,default:"horizontal"},breakpoint:{type:String,default:"960px"},disabled:{type:Boolean,default:!1},tabindex:{type:Number,default:0},"aria-labelledby":{type:String,default:null},"aria-label":{type:String,default:null}},style:u.default,provide:function(){return{$parentInstance:this}}},h={name:"MegaMenuSub",hostName:"MegaMenu",extends:l.default,emits:["item-click","item-mouseenter"],props:{menuId:{type:String,default:null},focusedItemId:{type:String,default:null},horizontal:{type:Boolean,default:!1},submenu:{type:Object,default:null},mobileActive:{type:Boolean,default:!1},items:{type:Array,default:null},level:{type:Number,default:0},templates:{type:Object,default:null},activeItem:{type:Object,default:null},tabindex:{type:Number,default:0}},methods:{getSubListId:function(e){return"".concat(this.getItemId(e),"_list")},getSubListKey:function(e){return this.getSubListId(e)},getItemId:function(e){return"".concat(this.menuId,"_").concat(e.key)},getItemKey:function(e){return this.getItemId(e)},getItemProp:function(e,i,n){return e&&e.item?t.ObjectUtils.getItemValue(e.item[i],n):void 0},getItemLabel:function(e){return this.getItemProp(e,"label")},getPTOptions:function(e,t,i){return this.ptm(i,{context:{item:e,index:t,active:this.isItemActive(e),focused:this.isItemFocused(e),disabled:this.isItemDisabled(e)}})},isItemActive:function(e){return!!t.ObjectUtils.isNotEmpty(this.activeItem)&&this.activeItem.key===e.key},isItemVisible:function(e){return!1!==this.getItemProp(e,"visible")},isItemDisabled:function(e){return this.getItemProp(e,"disabled")},isItemFocused:function(e){return this.focusedItemId===this.getItemId(e)},isItemGroup:function(e){return t.ObjectUtils.isNotEmpty(e.items)},onItemClick:function(e,t){this.getItemProp(t,"command",{originalEvent:e,item:t.item}),this.$emit("item-click",{originalEvent:e,processedItem:t,isFocus:!0})},onItemMouseEnter:function(e,t){this.$emit("item-mouseenter",{originalEvent:e,processedItem:t})},getAriaSetSize:function(){var e=this;return this.items.filter((function(t){return e.isItemVisible(t)&&!e.getItemProp(t,"separator")})).length},getAriaPosInset:function(e){var t=this;return e-this.items.slice(0,e).filter((function(e){return t.isItemVisible(e)&&t.getItemProp(e,"separator")})).length+1},getMenuItemProps:function(e,t){return{action:c.mergeProps({class:this.cx("action"),tabindex:-1,"aria-hidden":!0},this.getPTOptions(e,t,"action")),icon:c.mergeProps({class:[this.cx("icon"),this.getItemProp(e,"icon")]},this.getPTOptions(e,t,"icon")),label:c.mergeProps({class:this.cx("label")},this.getPTOptions(e,t,"label")),submenuicon:c.mergeProps({class:this.cx("submenuIcon")},this.getPTOptions(e,t,"submenuIcon"))}}},components:{AngleRightIcon:a(o).default,AngleDownIcon:d.default},directives:{ripple:a(r).default}},f=["tabindex"],p=["id","aria-label","aria-disabled","aria-expanded","aria-haspopup","aria-level","aria-setsize","aria-posinset","data-p-highlight","data-p-focused","data-p-disabled"],b=["onClick","onMouseenter"],v=["href","target"],g=["id"];h.render=function(e,t,i,n,s,o){var r=c.resolveComponent("MegaMenuSub",!0),a=c.resolveDirective("ripple");return c.openBlock(),c.createElementBlock("ul",c.mergeProps({class:e.cx(0===i.level?"menu":"submenu"),tabindex:i.tabindex},e.ptm(0===i.level?"menu":"submenu")),[i.submenu?(c.openBlock(),c.createElementBlock("li",c.mergeProps({key:0,class:[e.cx("submenuHeader",{submenu:i.submenu}),o.getItemProp(i.submenu,"class")],style:o.getItemProp(i.submenu,"style"),role:"presentation"},e.ptm("submenuHeader")),c.toDisplayString(o.getItemLabel(i.submenu)),17)):c.createCommentVNode("",!0),(c.openBlock(!0),c.createElementBlock(c.Fragment,null,c.renderList(i.items,(function(n,s){return c.openBlock(),c.createElementBlock(c.Fragment,{key:o.getItemKey(n)},[o.isItemVisible(n)&&!o.getItemProp(n,"separator")?(c.openBlock(),c.createElementBlock("li",c.mergeProps({key:0,id:o.getItemId(n),style:o.getItemProp(n,"style"),class:[e.cx("menuitem",{processedItem:n}),o.getItemProp(n,"class")],role:"menuitem","aria-label":o.getItemLabel(n),"aria-disabled":o.isItemDisabled(n)||void 0,"aria-expanded":o.isItemGroup(n)?o.isItemActive(n):void 0,"aria-haspopup":o.isItemGroup(n)&&!o.getItemProp(n,"to")?"menu":void 0,"aria-level":i.level+1,"aria-setsize":o.getAriaSetSize(),"aria-posinset":o.getAriaPosInset(s)},o.getPTOptions(n,s,"menuitem"),{"data-p-highlight":o.isItemActive(n),"data-p-focused":o.isItemFocused(n),"data-p-disabled":o.isItemDisabled(n)}),[c.createElementVNode("div",c.mergeProps({class:e.cx("content"),onClick:function(e){return o.onItemClick(e,n)},onMouseenter:function(e){return o.onItemMouseEnter(e,n)}},o.getPTOptions(n,s,"content")),[i.templates.item?(c.openBlock(),c.createBlock(c.resolveDynamicComponent(i.templates.item),{key:1,item:n.item,hasSubmenu:o.isItemGroup(n),label:o.getItemLabel(n),props:o.getMenuItemProps(n,s)},null,8,["item","hasSubmenu","label","props"])):c.withDirectives((c.openBlock(),c.createElementBlock("a",c.mergeProps({key:0,href:o.getItemProp(n,"url"),class:e.cx("action"),target:o.getItemProp(n,"target"),tabindex:"-1","aria-hidden":"true"},o.getPTOptions(n,s,"action")),[i.templates.itemicon?(c.openBlock(),c.createBlock(c.resolveDynamicComponent(i.templates.itemicon),{key:0,item:n.item,class:c.normalizeClass([e.cx("icon"),o.getItemProp(n,"icon")])},null,8,["item","class"])):o.getItemProp(n,"icon")?(c.openBlock(),c.createElementBlock("span",c.mergeProps({key:1,class:[e.cx("icon"),o.getItemProp(n,"icon")]},o.getPTOptions(n,s,"icon")),null,16)):c.createCommentVNode("",!0),c.createElementVNode("span",c.mergeProps({class:e.cx(0===i.level?"label":"submenuLabel")},o.getPTOptions(n,s,0===i.level?"label":"submenuLabel")),c.toDisplayString(o.getItemLabel(n)),17),o.isItemGroup(n)?(c.openBlock(),c.createElementBlock(c.Fragment,{key:2},[i.templates.submenuicon?(c.openBlock(),c.createBlock(c.resolveDynamicComponent(i.templates.submenuicon),c.mergeProps({key:0,active:o.isItemActive(n),class:e.cx("submenuIcon")},o.getPTOptions(n,s,"submenuIcon")),null,16,["active","class"])):(c.openBlock(),c.createBlock(c.resolveDynamicComponent(i.horizontal||i.mobileActive?"AngleDownIcon":"AngleRightIcon"),c.mergeProps({key:1,class:e.cx("submenuIcon")},o.getPTOptions(n,s,"submenuIcon")),null,16,["class"]))],64)):c.createCommentVNode("",!0)],16,v)),[[a]])],16,b),o.isItemVisible(n)&&o.isItemGroup(n)?(c.openBlock(),c.createElementBlock("div",c.mergeProps({key:0,class:e.cx("panel")},e.ptm("panel")),[c.createElementVNode("div",c.mergeProps({class:e.cx("grid")},e.ptm("grid")),[(c.openBlock(!0),c.createElementBlock(c.Fragment,null,c.renderList(n.items,(function(s){return c.openBlock(),c.createElementBlock("div",c.mergeProps({key:o.getItemKey(s),class:e.cx("column",{processedItem:n})},e.ptm("column")),[(c.openBlock(!0),c.createElementBlock(c.Fragment,null,c.renderList(s,(function(s){return c.openBlock(),c.createBlock(r,{key:o.getSubListKey(s),id:o.getSubListId(s),style:c.normalizeStyle(e.sx("submenu",!0,{processedItem:n})),role:"menu",menuId:i.menuId,focusedItemId:i.focusedItemId,submenu:s,items:s.items,templates:i.templates,level:i.level+1,mobileActive:i.mobileActive,pt:e.pt,unstyled:e.unstyled,onItemClick:t[0]||(t[0]=function(t){return e.$emit("item-click",t)}),onItemMouseenter:t[1]||(t[1]=function(t){return e.$emit("item-mouseenter",t)})},null,8,["id","style","menuId","focusedItemId","submenu","items","templates","level","mobileActive","pt","unstyled"])})),128))],16)})),128))],16)],16)):c.createCommentVNode("",!0)],16,p)):c.createCommentVNode("",!0),o.isItemVisible(n)&&o.getItemProp(n,"separator")?(c.openBlock(),c.createElementBlock("li",c.mergeProps({key:1,id:o.getItemId(n),class:[e.cx("separator"),o.getItemProp(n,"class")],style:o.getItemProp(n,"style"),role:"separator"},e.ptm("separator")),null,16,g)):c.createCommentVNode("",!0)],64)})),128))],16,f)};var y={name:"MegaMenu",extends:I,emits:["focus","blur"],outsideClickListener:null,resizeListener:null,container:null,menubar:null,searchTimeout:null,searchValue:null,data:function(){return{id:this.$attrs.id,mobileActive:!1,focused:!1,focusedItemInfo:{index:-1,key:"",parentKey:""},activeItem:null,dirty:!1,queryMatches:!1}},watch:{"$attrs.id":function(e){this.id=e||t.UniqueComponentId()},activeItem:function(e){t.ObjectUtils.isNotEmpty(e)?(this.bindOutsideClickListener(),this.bindResizeListener()):(this.unbindOutsideClickListener(),this.unbindResizeListener())}},mounted:function(){var e=this;this.id=this.id||t.UniqueComponentId();var i=matchMedia("(max-width: ".concat(this.breakpoint,")"));this.queryMatches=i.matches,i.addEventListener("change",(function(){e.queryMatches=i.matches,e.mobileActive=!1}))},beforeUnmount:function(){this.mobileActive=!1,this.unbindOutsideClickListener(),this.unbindResizeListener()},methods:{getItemProp:function(e,i){return e?t.ObjectUtils.getItemValue(e[i]):void 0},getItemLabel:function(e){return this.getItemProp(e,"label")},isItemDisabled:function(e){return this.getItemProp(e,"disabled")},isItemGroup:function(e){return t.ObjectUtils.isNotEmpty(this.getItemProp(e,"items"))},isItemSeparator:function(e){return this.getItemProp(e,"separator")},getProccessedItemLabel:function(e){return e?this.getItemLabel(e.item):void 0},isProccessedItemGroup:function(e){return e&&t.ObjectUtils.isNotEmpty(e.items)},toggle:function(e){var i=this;this.mobileActive?(this.mobileActive=!1,t.ZIndexUtils.clear(this.menubar),this.hide()):(this.mobileActive=!0,t.ZIndexUtils.set("menu",this.menubar,this.$primevue.config.zIndex.menu),setTimeout((function(){i.show()}),1)),this.bindOutsideClickListener(),e.preventDefault()},show:function(){this.focusedItemInfo={index:this.findFirstFocusedItemIndex(),level:0,parentKey:""},t.DomHandler.focus(this.menubar)},hide:function(e,i){var n=this;this.mobileActive&&(this.mobileActive=!1,setTimeout((function(){t.DomHandler.focus(n.$refs.menubutton)}),0)),this.activeItem=null,this.focusedItemInfo={index:-1,key:"",parentKey:""},i&&t.DomHandler.focus(this.menubar),this.dirty=!1},onFocus:function(e){if(this.focused=!0,-1===this.focusedItemInfo.index){var t=this.findFirstFocusedItemIndex(),i=this.findVisibleItem(t);this.focusedItemInfo={index:t,key:i.key,parentKey:i.parentKey}}this.$emit("focus",e)},onBlur:function(e){this.focused=!1,this.focusedItemInfo={index:-1,key:"",parentKey:""},this.searchValue="",this.dirty=!1,this.$emit("blur",e)},onKeyDown:function(e){if(this.disabled)e.preventDefault();else{var i=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"ArrowLeft":this.onArrowLeftKey(e);break;case"ArrowRight":this.onArrowRightKey(e);break;case"Home":this.onHomeKey(e);break;case"End":this.onEndKey(e);break;case"Space":this.onSpaceKey(e);break;case"Enter":this.onEnterKey(e);break;case"Escape":this.onEscapeKey(e);break;case"Tab":this.onTabKey(e);break;case"PageDown":case"PageUp":case"Backspace":case"ShiftLeft":case"ShiftRight":break;default:!i&&t.ObjectUtils.isPrintableCharacter(e.key)&&this.searchItems(e,e.key)}}},onItemChange:function(e){var i=e.processedItem,n=e.isFocus;if(!t.ObjectUtils.isEmpty(i)){var s=i.index,o=i.key,r=i.parentKey,c=t.ObjectUtils.isNotEmpty(i.items);c&&(this.activeItem=i),this.focusedItemInfo={index:s,key:o,parentKey:r},c&&(this.dirty=!0),n&&t.DomHandler.focus(this.menubar)}},onItemClick:function(e){var i=e.originalEvent,n=e.processedItem,s=this.isProccessedItemGroup(n),o=t.ObjectUtils.isEmpty(n.parent);if(this.isSelected(n)){var r=n.index,c=n.key,a=n.parentKey;this.activeItem=null,this.focusedItemInfo={index:r,key:c,parentKey:a},this.dirty=!o,t.DomHandler.focus(this.menubar)}else if(s)this.onItemChange(e);else{var m=o?n:this.activeItem;this.hide(i),this.changeFocusedItemInfo(i,m?m.index:-1),this.mobileActive=!1,t.DomHandler.focus(this.menubar)}},onItemMouseEnter:function(e){!this.mobileActive&&this.dirty&&this.onItemChange(e)},menuButtonClick:function(e){this.toggle(e)},menuButtonKeydown:function(e){("Enter"===e.code||"Space"===e.code)&&this.menuButtonClick(e)},onArrowDownKey:function(e){if(this.horizontal)if(t.ObjectUtils.isNotEmpty(this.activeItem)&&this.activeItem.key===this.focusedItemInfo.key)this.focusedItemInfo={index:-1,key:"",parentKey:this.activeItem.key};else{var i=this.findVisibleItem(this.focusedItemInfo.index);this.isProccessedItemGroup(i)&&(this.onItemChange({originalEvent:e,processedItem:i}),this.focusedItemInfo={index:-1,key:i.key,parentKey:i.parentKey},this.searchValue="")}var n=-1!==this.focusedItemInfo.index?this.findNextItemIndex(this.focusedItemInfo.index):this.findFirstFocusedItemIndex();this.changeFocusedItemInfo(e,n),e.preventDefault()},onArrowUpKey:function(e){if(e.altKey&&this.horizontal){if(-1!==this.focusedItemInfo.index){var i=this.findVisibleItem(this.focusedItemInfo.index);!this.isProccessedItemGroup(i)&&t.ObjectUtils.isNotEmpty(this.activeItem)&&(0===this.focusedItemInfo.index?(this.focusedItemInfo={index:this.activeItem.index,key:this.activeItem.key,parentKey:this.activeItem.parentKey},this.activeItem=null):this.changeFocusedItemInfo(e,this.findFirstItemIndex()))}e.preventDefault()}else{var n=-1!==this.focusedItemInfo.index?this.findPrevItemIndex(this.focusedItemInfo.index):this.findLastFocusedItemIndex();this.changeFocusedItemInfo(e,n),e.preventDefault()}},onArrowLeftKey:function(e){var i=this.findVisibleItem(this.focusedItemInfo.index);if(this.isProccessedItemGroup(i)){if(this.horizontal){var n=-1!==this.focusedItemInfo.index?this.findPrevItemIndex(this.focusedItemInfo.index):this.findLastFocusedItemIndex();this.changeFocusedItemInfo(e,n)}}else{this.vertical&&t.ObjectUtils.isNotEmpty(this.activeItem)&&0===i.columnIndex&&(this.focusedItemInfo={index:this.activeItem.index,key:this.activeItem.key,parentKey:this.activeItem.parentKey},this.activeItem=null);var s=i.columnIndex-1,o=this.visibleItems.findIndex((function(e){return e.columnIndex===s}));-1!==o&&this.changeFocusedItemInfo(e,o)}e.preventDefault()},onArrowRightKey:function(e){var i=this.findVisibleItem(this.focusedItemInfo.index);if(this.isProccessedItemGroup(i)){if(this.vertical)if(t.ObjectUtils.isNotEmpty(this.activeItem)&&this.activeItem.key===i.key)this.focusedItemInfo={index:-1,key:"",parentKey:this.activeItem.key};else{var n=this.findVisibleItem(this.focusedItemInfo.index);this.isProccessedItemGroup(n)&&(this.onItemChange({originalEvent:e,processedItem:n}),this.focusedItemInfo={index:-1,key:n.key,parentKey:n.parentKey},this.searchValue="")}var s=-1!==this.focusedItemInfo.index?this.findNextItemIndex(this.focusedItemInfo.index):this.findFirstFocusedItemIndex();this.changeFocusedItemInfo(e,s)}else{var o=i.columnIndex+1,r=this.visibleItems.findIndex((function(e){return e.columnIndex===o}));-1!==r&&this.changeFocusedItemInfo(e,r)}e.preventDefault()},onHomeKey:function(e){this.changeFocusedItemInfo(e,this.findFirstItemIndex()),e.preventDefault()},onEndKey:function(e){this.changeFocusedItemInfo(e,this.findLastItemIndex()),e.preventDefault()},onEnterKey:function(e){if(-1!==this.focusedItemInfo.index){var i=t.DomHandler.findSingle(this.menubar,'li[id="'.concat("".concat(this.focusedItemId),'"]')),n=i&&t.DomHandler.findSingle(i,'a[data-pc-section="action"]');n?n.click():i&&i.click(),!this.isProccessedItemGroup(this.visibleItems[this.focusedItemInfo.index])&&this.changeFocusedItemInfo(e,this.findFirstFocusedItemIndex())}e.preventDefault()},onSpaceKey:function(e){this.onEnterKey(e)},onEscapeKey:function(e){t.ObjectUtils.isNotEmpty(this.activeItem)&&(this.focusedItemInfo={index:this.activeItem.index,key:this.activeItem.key},this.activeItem=null),e.preventDefault()},onTabKey:function(e){if(-1!==this.focusedItemInfo.index){var t=this.findVisibleItem(this.focusedItemInfo.index);!this.isProccessedItemGroup(t)&&this.onItemChange({originalEvent:e,processedItem:t})}this.hide()},bindOutsideClickListener:function(){var e=this;this.outsideClickListener||(this.outsideClickListener=function(t){var i=e.container&&!e.container.contains(t.target),n=!(e.target&&(e.target===t.target||e.target.contains(t.target)));i&&n&&e.hide()},document.addEventListener("click",this.outsideClickListener))},unbindOutsideClickListener:function(){this.outsideClickListener&&(document.removeEventListener("click",this.outsideClickListener),this.outsideClickListener=null)},bindResizeListener:function(){var e=this;this.resizeListener||(this.resizeListener=function(i){t.DomHandler.isTouchDevice()||e.hide(i,!0),e.mobileActive=!1},window.addEventListener("resize",this.resizeListener))},unbindResizeListener:function(){this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null)},isItemMatched:function(e){return this.isValidItem(e)&&this.getProccessedItemLabel(e).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase())},isValidItem:function(e){return!!e&&!this.isItemDisabled(e.item)&&!this.isItemSeparator(e.item)},isValidSelectedItem:function(e){return this.isValidItem(e)&&this.isSelected(e)},isSelected:function(e){return!!t.ObjectUtils.isNotEmpty(this.activeItem)&&this.activeItem.key===e.key},findFirstItemIndex:function(){var e=this;return this.visibleItems.findIndex((function(t){return e.isValidItem(t)}))},findLastItemIndex:function(){var e=this;return t.ObjectUtils.findLastIndex(this.visibleItems,(function(t){return e.isValidItem(t)}))},findNextItemIndex:function(e){var t=this,i=e<this.visibleItems.length-1?this.visibleItems.slice(e+1).findIndex((function(e){return t.isValidItem(e)})):-1;return i>-1?i+e+1:e},findPrevItemIndex:function(e){var i=this,n=e>0?t.ObjectUtils.findLastIndex(this.visibleItems.slice(0,e),(function(e){return i.isValidItem(e)})):-1;return n>-1?n:e},findSelectedItemIndex:function(){var e=this;return this.visibleItems.findIndex((function(t){return e.isValidSelectedItem(t)}))},findFirstFocusedItemIndex:function(){var e=this.findSelectedItemIndex();return e<0?this.findFirstItemIndex():e},findLastFocusedItemIndex:function(){var e=this.findSelectedItemIndex();return e<0?this.findLastItemIndex():e},findVisibleItem:function(e){return t.ObjectUtils.isNotEmpty(this.visibleItems)?this.visibleItems[e]:null},searchItems:function(e,t){var i=this;this.searchValue=(this.searchValue||"")+t;var n=-1,s=!1;return-1!==(n=-1!==this.focusedItemInfo.index?-1===(n=this.visibleItems.slice(this.focusedItemInfo.index).findIndex((function(e){return i.isItemMatched(e)})))?this.visibleItems.slice(0,this.focusedItemInfo.index).findIndex((function(e){return i.isItemMatched(e)})):n+this.focusedItemInfo.index:this.visibleItems.findIndex((function(e){return i.isItemMatched(e)})))&&(s=!0),-1===n&&-1===this.focusedItemInfo.index&&(n=this.findFirstFocusedItemIndex()),-1!==n&&this.changeFocusedItemInfo(e,n),this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=setTimeout((function(){i.searchValue="",i.searchTimeout=null}),500),s},changeFocusedItemInfo:function(e,i){var n=this.findVisibleItem(i);this.focusedItemInfo.index=i,this.focusedItemInfo.key=t.ObjectUtils.isNotEmpty(n)?n.key:"",this.scrollInView()},scrollInView:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,i=-1!==e?"".concat(this.id,"_").concat(e):this.focusedItemId,n=t.DomHandler.findSingle(this.menubar,'li[id="'.concat(i,'"]'));n&&n.scrollIntoView&&n.scrollIntoView({block:"nearest",inline:"start"})},createProcessedItems:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=arguments.length>4?arguments[4]:void 0,r=[];return e&&e.forEach((function(e,c){var a=(""!==s?s+"_":"")+(void 0!==o?o+"_":"")+c,m={item:e,index:c,level:i,key:a,parent:n,parentKey:s,columnIndex:void 0!==o?o:void 0!==n.columnIndex?n.columnIndex:c};m.items=0===i&&e.items&&e.items.length>0?e.items.map((function(e,n){return t.createProcessedItems(e,i+1,m,a,n)})):t.createProcessedItems(e.items,i+1,m,a),r.push(m)})),r},containerRef:function(e){this.container=e},menubarRef:function(e){this.menubar=e?e.$el:void 0}},computed:{processedItems:function(){return this.createProcessedItems(this.model||[])},visibleItems:function(){var e=t.ObjectUtils.isNotEmpty(this.activeItem)?this.activeItem:null;return e&&e.key===this.focusedItemInfo.parentKey?e.items.reduce((function(e,t){return t.forEach((function(t){t.items.forEach((function(t){e.push(t)}))})),e}),[]):this.processedItems},horizontal:function(){return"horizontal"===this.orientation},vertical:function(){return"vertical"===this.orientation},focusedItemId:function(){return t.ObjectUtils.isNotEmpty(this.focusedItemInfo.key)?"".concat(this.id,"_").concat(this.focusedItemInfo.key):null}},components:{MegaMenuSub:h,BarsIcon:m.default}},k=["id"],x=["aria-haspopup","aria-expanded","aria-controls","aria-label"];return y.render=function(e,t,i,n,s,o){var r,a=c.resolveComponent("BarsIcon"),m=c.resolveComponent("MegaMenuSub");return c.openBlock(),c.createElementBlock("div",c.mergeProps({ref:o.containerRef,id:s.id,class:e.cx("root")},e.ptm("root"),{"data-pc-name":"megamenu"}),[e.$slots.start?(c.openBlock(),c.createElementBlock("div",c.mergeProps({key:0,class:e.cx("start")},e.ptm("start")),[c.renderSlot(e.$slots,"start")],16)):c.createCommentVNode("",!0),e.model&&e.model.length>0?(c.openBlock(),c.createElementBlock("a",c.mergeProps({key:1,ref:"menubutton",role:"button",tabindex:"0",class:e.cx("menubutton"),"aria-haspopup":!!(e.model.length&&e.model.length>0),"aria-expanded":s.mobileActive,"aria-controls":s.id,"aria-label":null===(r=e.$primevue.config.locale.aria)||void 0===r?void 0:r.navigation,onClick:t[0]||(t[0]=function(e){return o.menuButtonClick(e)}),onKeydown:t[1]||(t[1]=function(e){return o.menuButtonKeydown(e)})},e.ptm("menubutton")),[c.renderSlot(e.$slots,"menubuttonicon",{},(function(){return[c.createVNode(a,c.normalizeProps(c.guardReactiveProps(e.ptm("menubuttonicon"))),null,16)]}))],16,x)):c.createCommentVNode("",!0),c.createVNode(m,{ref:o.menubarRef,id:s.id+"_list",tabindex:e.disabled?-1:e.tabindex,role:"menubar","aria-label":e.ariaLabel,"aria-labelledby":e.ariaLabelledby,"aria-disabled":e.disabled||void 0,"aria-orientation":e.orientation,"aria-activedescendant":s.focused?o.focusedItemId:void 0,menuId:s.id,focusedItemId:s.focused?o.focusedItemId:void 0,items:o.processedItems,horizontal:o.horizontal,templates:e.$slots,activeItem:s.activeItem,mobileActive:s.mobileActive,level:0,pt:e.pt,unstyled:e.unstyled,onFocus:o.onFocus,onBlur:o.onBlur,onKeydown:o.onKeyDown,onItemClick:o.onItemClick,onItemMouseenter:o.onItemMouseEnter},null,8,["id","tabindex","aria-label","aria-labelledby","aria-disabled","aria-orientation","aria-activedescendant","menuId","focusedItemId","items","horizontal","templates","activeItem","mobileActive","pt","unstyled","onFocus","onBlur","onKeydown","onItemClick","onItemMouseenter"]),e.$slots.end?(c.openBlock(),c.createElementBlock("div",c.mergeProps({key:2,class:e.cx("end")},e.ptm("end")),[c.renderSlot(e.$slots,"end")],16)):c.createCommentVNode("",!0)],16,k)},y}(primevue.icons.bars,primevue.utils,primevue.basecomponent,primevue.megamenu.style,primevue.icons.angledown,primevue.icons.angleright,primevue.ripple,Vue);
1
+ this.primevue=this.primevue||{},this.primevue.megamenu=function(e,t,i,n,s,o,r,c){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=a(e),l=a(i),u=a(n),d=a(s),I={name:"BaseMegaMenu",extends:l.default,props:{model:{type:Array,default:null},orientation:{type:String,default:"horizontal"},breakpoint:{type:String,default:"960px"},disabled:{type:Boolean,default:!1},tabindex:{type:Number,default:0},"aria-labelledby":{type:String,default:null},"aria-label":{type:String,default:null}},style:u.default,provide:function(){return{$parentInstance:this}}},h={name:"MegaMenuSub",hostName:"MegaMenu",extends:l.default,emits:["item-click","item-mouseenter"],props:{menuId:{type:String,default:null},focusedItemId:{type:String,default:null},horizontal:{type:Boolean,default:!1},submenu:{type:Object,default:null},mobileActive:{type:Boolean,default:!1},items:{type:Array,default:null},level:{type:Number,default:0},templates:{type:Object,default:null},activeItem:{type:Object,default:null},tabindex:{type:Number,default:0}},methods:{getSubListId:function(e){return"".concat(this.getItemId(e),"_list")},getSubListKey:function(e){return this.getSubListId(e)},getItemId:function(e){return"".concat(this.menuId,"_").concat(e.key)},getItemKey:function(e){return this.getItemId(e)},getItemProp:function(e,i,n){return e&&e.item?t.ObjectUtils.getItemValue(e.item[i],n):void 0},getItemLabel:function(e){return this.getItemProp(e,"label")},getPTOptions:function(e,t,i){return this.ptm(i,{context:{item:e,index:t,active:this.isItemActive(e),focused:this.isItemFocused(e),disabled:this.isItemDisabled(e)}})},isItemActive:function(e){return!!t.ObjectUtils.isNotEmpty(this.activeItem)&&this.activeItem.key===e.key},isItemVisible:function(e){return!1!==this.getItemProp(e,"visible")},isItemDisabled:function(e){return this.getItemProp(e,"disabled")},isItemFocused:function(e){return this.focusedItemId===this.getItemId(e)},isItemGroup:function(e){return t.ObjectUtils.isNotEmpty(e.items)},onItemClick:function(e,t){this.getItemProp(t,"command",{originalEvent:e,item:t.item}),this.$emit("item-click",{originalEvent:e,processedItem:t,isFocus:!0})},onItemMouseEnter:function(e,t){this.$emit("item-mouseenter",{originalEvent:e,processedItem:t})},getAriaSetSize:function(){var e=this;return this.items.filter((function(t){return e.isItemVisible(t)&&!e.getItemProp(t,"separator")})).length},getAriaPosInset:function(e){var t=this;return e-this.items.slice(0,e).filter((function(e){return t.isItemVisible(e)&&t.getItemProp(e,"separator")})).length+1},getMenuItemProps:function(e,t){return{action:c.mergeProps({class:this.cx("action"),tabindex:-1,"aria-hidden":!0},this.getPTOptions(e,t,"action")),icon:c.mergeProps({class:[this.cx("icon"),this.getItemProp(e,"icon")]},this.getPTOptions(e,t,"icon")),label:c.mergeProps({class:this.cx("label")},this.getPTOptions(e,t,"label")),submenuicon:c.mergeProps({class:this.cx("submenuIcon")},this.getPTOptions(e,t,"submenuIcon"))}}},components:{AngleRightIcon:a(o).default,AngleDownIcon:d.default},directives:{ripple:a(r).default}},f=["tabindex"],p=["id","aria-label","aria-disabled","aria-expanded","aria-haspopup","aria-level","aria-setsize","aria-posinset","data-p-highlight","data-p-focused","data-p-disabled"],b=["onClick","onMouseenter"],v=["href","target"],g=["id"];h.render=function(e,t,i,n,s,o){var r=c.resolveComponent("MegaMenuSub",!0),a=c.resolveDirective("ripple");return c.openBlock(),c.createElementBlock("ul",c.mergeProps({class:e.cx(0===i.level?"menu":"submenu"),tabindex:i.tabindex},e.ptm(0===i.level?"menu":"submenu")),[i.submenu?(c.openBlock(),c.createElementBlock("li",c.mergeProps({key:0,class:[e.cx("submenuHeader",{submenu:i.submenu}),o.getItemProp(i.submenu,"class")],style:o.getItemProp(i.submenu,"style"),role:"presentation"},e.ptm("submenuHeader")),c.toDisplayString(o.getItemLabel(i.submenu)),17)):c.createCommentVNode("",!0),(c.openBlock(!0),c.createElementBlock(c.Fragment,null,c.renderList(i.items,(function(n,s){return c.openBlock(),c.createElementBlock(c.Fragment,{key:o.getItemKey(n)},[o.isItemVisible(n)&&!o.getItemProp(n,"separator")?(c.openBlock(),c.createElementBlock("li",c.mergeProps({key:0,id:o.getItemId(n),style:o.getItemProp(n,"style"),class:[e.cx("menuitem",{processedItem:n}),o.getItemProp(n,"class")],role:"menuitem","aria-label":o.getItemLabel(n),"aria-disabled":o.isItemDisabled(n)||void 0,"aria-expanded":o.isItemGroup(n)?o.isItemActive(n):void 0,"aria-haspopup":o.isItemGroup(n)&&!o.getItemProp(n,"to")?"menu":void 0,"aria-level":i.level+1,"aria-setsize":o.getAriaSetSize(),"aria-posinset":o.getAriaPosInset(s)},o.getPTOptions(n,s,"menuitem"),{"data-p-highlight":o.isItemActive(n),"data-p-focused":o.isItemFocused(n),"data-p-disabled":o.isItemDisabled(n)}),[c.createElementVNode("div",c.mergeProps({class:e.cx("content"),onClick:function(e){return o.onItemClick(e,n)},onMouseenter:function(e){return o.onItemMouseEnter(e,n)}},o.getPTOptions(n,s,"content")),[i.templates.item?(c.openBlock(),c.createBlock(c.resolveDynamicComponent(i.templates.item),{key:1,item:n.item,hasSubmenu:o.isItemGroup(n),label:o.getItemLabel(n),props:o.getMenuItemProps(n,s)},null,8,["item","hasSubmenu","label","props"])):c.withDirectives((c.openBlock(),c.createElementBlock("a",c.mergeProps({key:0,href:o.getItemProp(n,"url"),class:e.cx("action"),target:o.getItemProp(n,"target"),tabindex:"-1","aria-hidden":"true"},o.getPTOptions(n,s,"action")),[i.templates.itemicon?(c.openBlock(),c.createBlock(c.resolveDynamicComponent(i.templates.itemicon),{key:0,item:n.item,class:c.normalizeClass([e.cx("icon"),o.getItemProp(n,"icon")])},null,8,["item","class"])):o.getItemProp(n,"icon")?(c.openBlock(),c.createElementBlock("span",c.mergeProps({key:1,class:[e.cx("icon"),o.getItemProp(n,"icon")]},o.getPTOptions(n,s,"icon")),null,16)):c.createCommentVNode("",!0),c.createElementVNode("span",c.mergeProps({class:e.cx(0===i.level?"label":"submenuLabel")},o.getPTOptions(n,s,0===i.level?"label":"submenuLabel")),c.toDisplayString(o.getItemLabel(n)),17),o.isItemGroup(n)?(c.openBlock(),c.createElementBlock(c.Fragment,{key:2},[i.templates.submenuicon?(c.openBlock(),c.createBlock(c.resolveDynamicComponent(i.templates.submenuicon),c.mergeProps({key:0,active:o.isItemActive(n),class:e.cx("submenuIcon")},o.getPTOptions(n,s,"submenuIcon")),null,16,["active","class"])):(c.openBlock(),c.createBlock(c.resolveDynamicComponent(i.horizontal||i.mobileActive?"AngleDownIcon":"AngleRightIcon"),c.mergeProps({key:1,class:e.cx("submenuIcon")},o.getPTOptions(n,s,"submenuIcon")),null,16,["class"]))],64)):c.createCommentVNode("",!0)],16,v)),[[a]])],16,b),o.isItemVisible(n)&&o.isItemGroup(n)?(c.openBlock(),c.createElementBlock("div",c.mergeProps({key:0,class:e.cx("panel")},e.ptm("panel")),[c.createElementVNode("div",c.mergeProps({class:e.cx("grid")},e.ptm("grid")),[(c.openBlock(!0),c.createElementBlock(c.Fragment,null,c.renderList(n.items,(function(s){return c.openBlock(),c.createElementBlock("div",c.mergeProps({key:o.getItemKey(s),class:e.cx("column",{processedItem:n})},e.ptm("column")),[(c.openBlock(!0),c.createElementBlock(c.Fragment,null,c.renderList(s,(function(s){return c.openBlock(),c.createBlock(r,{key:o.getSubListKey(s),id:o.getSubListId(s),style:c.normalizeStyle(e.sx("submenu",!0,{processedItem:n})),role:"menu",menuId:i.menuId,focusedItemId:i.focusedItemId,submenu:s,items:s.items,templates:i.templates,level:i.level+1,mobileActive:i.mobileActive,pt:e.pt,unstyled:e.unstyled,onItemClick:t[0]||(t[0]=function(t){return e.$emit("item-click",t)}),onItemMouseenter:t[1]||(t[1]=function(t){return e.$emit("item-mouseenter",t)})},null,8,["id","style","menuId","focusedItemId","submenu","items","templates","level","mobileActive","pt","unstyled"])})),128))],16)})),128))],16)],16)):c.createCommentVNode("",!0)],16,p)):c.createCommentVNode("",!0),o.isItemVisible(n)&&o.getItemProp(n,"separator")?(c.openBlock(),c.createElementBlock("li",c.mergeProps({key:1,id:o.getItemId(n),class:[e.cx("separator"),o.getItemProp(n,"class")],style:o.getItemProp(n,"style"),role:"separator"},e.ptm("separator")),null,16,g)):c.createCommentVNode("",!0)],64)})),128))],16,f)};var y={name:"MegaMenu",extends:I,emits:["focus","blur"],outsideClickListener:null,resizeListener:null,matchMediaListener:null,container:null,menubar:null,searchTimeout:null,searchValue:null,data:function(){return{id:this.$attrs.id,mobileActive:!1,focused:!1,focusedItemInfo:{index:-1,key:"",parentKey:""},activeItem:null,dirty:!1,query:null,queryMatches:!1}},watch:{"$attrs.id":function(e){this.id=e||t.UniqueComponentId()},activeItem:function(e){t.ObjectUtils.isNotEmpty(e)?(this.bindOutsideClickListener(),this.bindResizeListener()):(this.unbindOutsideClickListener(),this.unbindResizeListener())}},mounted:function(){this.id=this.id||t.UniqueComponentId(),this.bindMatchMediaListener()},beforeUnmount:function(){this.mobileActive=!1,this.unbindOutsideClickListener(),this.unbindResizeListener(),this.unbindMatchMediaListener()},methods:{getItemProp:function(e,i){return e?t.ObjectUtils.getItemValue(e[i]):void 0},getItemLabel:function(e){return this.getItemProp(e,"label")},isItemDisabled:function(e){return this.getItemProp(e,"disabled")},isItemGroup:function(e){return t.ObjectUtils.isNotEmpty(this.getItemProp(e,"items"))},isItemSeparator:function(e){return this.getItemProp(e,"separator")},getProccessedItemLabel:function(e){return e?this.getItemLabel(e.item):void 0},isProccessedItemGroup:function(e){return e&&t.ObjectUtils.isNotEmpty(e.items)},toggle:function(e){var i=this;this.mobileActive?(this.mobileActive=!1,t.ZIndexUtils.clear(this.menubar),this.hide()):(this.mobileActive=!0,t.ZIndexUtils.set("menu",this.menubar,this.$primevue.config.zIndex.menu),setTimeout((function(){i.show()}),1)),this.bindOutsideClickListener(),e.preventDefault()},show:function(){this.focusedItemInfo={index:this.findFirstFocusedItemIndex(),level:0,parentKey:""},t.DomHandler.focus(this.menubar)},hide:function(e,i){var n=this;this.mobileActive&&(this.mobileActive=!1,setTimeout((function(){t.DomHandler.focus(n.$refs.menubutton)}),0)),this.activeItem=null,this.focusedItemInfo={index:-1,key:"",parentKey:""},i&&t.DomHandler.focus(this.menubar),this.dirty=!1},onFocus:function(e){if(this.focused=!0,-1===this.focusedItemInfo.index){var t=this.findFirstFocusedItemIndex(),i=this.findVisibleItem(t);this.focusedItemInfo={index:t,key:i.key,parentKey:i.parentKey}}this.$emit("focus",e)},onBlur:function(e){this.focused=!1,this.focusedItemInfo={index:-1,key:"",parentKey:""},this.searchValue="",this.dirty=!1,this.$emit("blur",e)},onKeyDown:function(e){if(this.disabled)e.preventDefault();else{var i=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"ArrowLeft":this.onArrowLeftKey(e);break;case"ArrowRight":this.onArrowRightKey(e);break;case"Home":this.onHomeKey(e);break;case"End":this.onEndKey(e);break;case"Space":this.onSpaceKey(e);break;case"Enter":this.onEnterKey(e);break;case"Escape":this.onEscapeKey(e);break;case"Tab":this.onTabKey(e);break;case"PageDown":case"PageUp":case"Backspace":case"ShiftLeft":case"ShiftRight":break;default:!i&&t.ObjectUtils.isPrintableCharacter(e.key)&&this.searchItems(e,e.key)}}},onItemChange:function(e){var i=e.processedItem,n=e.isFocus;if(!t.ObjectUtils.isEmpty(i)){var s=i.index,o=i.key,r=i.parentKey,c=t.ObjectUtils.isNotEmpty(i.items);c&&(this.activeItem=i),this.focusedItemInfo={index:s,key:o,parentKey:r},c&&(this.dirty=!0),n&&t.DomHandler.focus(this.menubar)}},onItemClick:function(e){var i=e.originalEvent,n=e.processedItem,s=this.isProccessedItemGroup(n),o=t.ObjectUtils.isEmpty(n.parent);if(this.isSelected(n)){var r=n.index,c=n.key,a=n.parentKey;this.activeItem=null,this.focusedItemInfo={index:r,key:c,parentKey:a},this.dirty=!o,t.DomHandler.focus(this.menubar)}else if(s)this.onItemChange(e);else{var m=o?n:this.activeItem;this.hide(i),this.changeFocusedItemInfo(i,m?m.index:-1),this.mobileActive=!1,t.DomHandler.focus(this.menubar)}},onItemMouseEnter:function(e){!this.mobileActive&&this.dirty&&this.onItemChange(e)},menuButtonClick:function(e){this.toggle(e)},menuButtonKeydown:function(e){("Enter"===e.code||"Space"===e.code)&&this.menuButtonClick(e)},onArrowDownKey:function(e){if(this.horizontal)if(t.ObjectUtils.isNotEmpty(this.activeItem)&&this.activeItem.key===this.focusedItemInfo.key)this.focusedItemInfo={index:-1,key:"",parentKey:this.activeItem.key};else{var i=this.findVisibleItem(this.focusedItemInfo.index);this.isProccessedItemGroup(i)&&(this.onItemChange({originalEvent:e,processedItem:i}),this.focusedItemInfo={index:-1,key:i.key,parentKey:i.parentKey},this.searchValue="")}var n=-1!==this.focusedItemInfo.index?this.findNextItemIndex(this.focusedItemInfo.index):this.findFirstFocusedItemIndex();this.changeFocusedItemInfo(e,n),e.preventDefault()},onArrowUpKey:function(e){if(e.altKey&&this.horizontal){if(-1!==this.focusedItemInfo.index){var i=this.findVisibleItem(this.focusedItemInfo.index);!this.isProccessedItemGroup(i)&&t.ObjectUtils.isNotEmpty(this.activeItem)&&(0===this.focusedItemInfo.index?(this.focusedItemInfo={index:this.activeItem.index,key:this.activeItem.key,parentKey:this.activeItem.parentKey},this.activeItem=null):this.changeFocusedItemInfo(e,this.findFirstItemIndex()))}e.preventDefault()}else{var n=-1!==this.focusedItemInfo.index?this.findPrevItemIndex(this.focusedItemInfo.index):this.findLastFocusedItemIndex();this.changeFocusedItemInfo(e,n),e.preventDefault()}},onArrowLeftKey:function(e){var i=this.findVisibleItem(this.focusedItemInfo.index);if(this.isProccessedItemGroup(i)){if(this.horizontal){var n=-1!==this.focusedItemInfo.index?this.findPrevItemIndex(this.focusedItemInfo.index):this.findLastFocusedItemIndex();this.changeFocusedItemInfo(e,n)}}else{this.vertical&&t.ObjectUtils.isNotEmpty(this.activeItem)&&0===i.columnIndex&&(this.focusedItemInfo={index:this.activeItem.index,key:this.activeItem.key,parentKey:this.activeItem.parentKey},this.activeItem=null);var s=i.columnIndex-1,o=this.visibleItems.findIndex((function(e){return e.columnIndex===s}));-1!==o&&this.changeFocusedItemInfo(e,o)}e.preventDefault()},onArrowRightKey:function(e){var i=this.findVisibleItem(this.focusedItemInfo.index);if(this.isProccessedItemGroup(i)){if(this.vertical)if(t.ObjectUtils.isNotEmpty(this.activeItem)&&this.activeItem.key===i.key)this.focusedItemInfo={index:-1,key:"",parentKey:this.activeItem.key};else{var n=this.findVisibleItem(this.focusedItemInfo.index);this.isProccessedItemGroup(n)&&(this.onItemChange({originalEvent:e,processedItem:n}),this.focusedItemInfo={index:-1,key:n.key,parentKey:n.parentKey},this.searchValue="")}var s=-1!==this.focusedItemInfo.index?this.findNextItemIndex(this.focusedItemInfo.index):this.findFirstFocusedItemIndex();this.changeFocusedItemInfo(e,s)}else{var o=i.columnIndex+1,r=this.visibleItems.findIndex((function(e){return e.columnIndex===o}));-1!==r&&this.changeFocusedItemInfo(e,r)}e.preventDefault()},onHomeKey:function(e){this.changeFocusedItemInfo(e,this.findFirstItemIndex()),e.preventDefault()},onEndKey:function(e){this.changeFocusedItemInfo(e,this.findLastItemIndex()),e.preventDefault()},onEnterKey:function(e){if(-1!==this.focusedItemInfo.index){var i=t.DomHandler.findSingle(this.menubar,'li[id="'.concat("".concat(this.focusedItemId),'"]')),n=i&&t.DomHandler.findSingle(i,'a[data-pc-section="action"]');n?n.click():i&&i.click(),!this.isProccessedItemGroup(this.visibleItems[this.focusedItemInfo.index])&&this.changeFocusedItemInfo(e,this.findFirstFocusedItemIndex())}e.preventDefault()},onSpaceKey:function(e){this.onEnterKey(e)},onEscapeKey:function(e){t.ObjectUtils.isNotEmpty(this.activeItem)&&(this.focusedItemInfo={index:this.activeItem.index,key:this.activeItem.key},this.activeItem=null),e.preventDefault()},onTabKey:function(e){if(-1!==this.focusedItemInfo.index){var t=this.findVisibleItem(this.focusedItemInfo.index);!this.isProccessedItemGroup(t)&&this.onItemChange({originalEvent:e,processedItem:t})}this.hide()},bindOutsideClickListener:function(){var e=this;this.outsideClickListener||(this.outsideClickListener=function(t){var i=e.container&&!e.container.contains(t.target),n=!(e.target&&(e.target===t.target||e.target.contains(t.target)));i&&n&&e.hide()},document.addEventListener("click",this.outsideClickListener))},unbindOutsideClickListener:function(){this.outsideClickListener&&(document.removeEventListener("click",this.outsideClickListener),this.outsideClickListener=null)},bindResizeListener:function(){var e=this;this.resizeListener||(this.resizeListener=function(i){t.DomHandler.isTouchDevice()||e.hide(i,!0),e.mobileActive=!1},window.addEventListener("resize",this.resizeListener))},unbindResizeListener:function(){this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null)},bindMatchMediaListener:function(){var e=this;if(!this.matchMediaListener){var t=matchMedia("(max-width: ".concat(this.breakpoint,")"));this.query=t,this.queryMatches=t.matches,this.matchMediaListener=function(){e.queryMatches=t.matches,e.mobileActive=!1},this.query.addEventListener("change",this.matchMediaListener)}},unbindMatchMediaListener:function(){this.matchMediaListener&&(this.query.removeEventListener("change",this.matchMediaListener),this.matchMediaListener=null)},isItemMatched:function(e){return this.isValidItem(e)&&this.getProccessedItemLabel(e).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase())},isValidItem:function(e){return!!e&&!this.isItemDisabled(e.item)&&!this.isItemSeparator(e.item)},isValidSelectedItem:function(e){return this.isValidItem(e)&&this.isSelected(e)},isSelected:function(e){return!!t.ObjectUtils.isNotEmpty(this.activeItem)&&this.activeItem.key===e.key},findFirstItemIndex:function(){var e=this;return this.visibleItems.findIndex((function(t){return e.isValidItem(t)}))},findLastItemIndex:function(){var e=this;return t.ObjectUtils.findLastIndex(this.visibleItems,(function(t){return e.isValidItem(t)}))},findNextItemIndex:function(e){var t=this,i=e<this.visibleItems.length-1?this.visibleItems.slice(e+1).findIndex((function(e){return t.isValidItem(e)})):-1;return i>-1?i+e+1:e},findPrevItemIndex:function(e){var i=this,n=e>0?t.ObjectUtils.findLastIndex(this.visibleItems.slice(0,e),(function(e){return i.isValidItem(e)})):-1;return n>-1?n:e},findSelectedItemIndex:function(){var e=this;return this.visibleItems.findIndex((function(t){return e.isValidSelectedItem(t)}))},findFirstFocusedItemIndex:function(){var e=this.findSelectedItemIndex();return e<0?this.findFirstItemIndex():e},findLastFocusedItemIndex:function(){var e=this.findSelectedItemIndex();return e<0?this.findLastItemIndex():e},findVisibleItem:function(e){return t.ObjectUtils.isNotEmpty(this.visibleItems)?this.visibleItems[e]:null},searchItems:function(e,t){var i=this;this.searchValue=(this.searchValue||"")+t;var n=-1,s=!1;return-1!==(n=-1!==this.focusedItemInfo.index?-1===(n=this.visibleItems.slice(this.focusedItemInfo.index).findIndex((function(e){return i.isItemMatched(e)})))?this.visibleItems.slice(0,this.focusedItemInfo.index).findIndex((function(e){return i.isItemMatched(e)})):n+this.focusedItemInfo.index:this.visibleItems.findIndex((function(e){return i.isItemMatched(e)})))&&(s=!0),-1===n&&-1===this.focusedItemInfo.index&&(n=this.findFirstFocusedItemIndex()),-1!==n&&this.changeFocusedItemInfo(e,n),this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=setTimeout((function(){i.searchValue="",i.searchTimeout=null}),500),s},changeFocusedItemInfo:function(e,i){var n=this.findVisibleItem(i);this.focusedItemInfo.index=i,this.focusedItemInfo.key=t.ObjectUtils.isNotEmpty(n)?n.key:"",this.scrollInView()},scrollInView:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,i=-1!==e?"".concat(this.id,"_").concat(e):this.focusedItemId,n=t.DomHandler.findSingle(this.menubar,'li[id="'.concat(i,'"]'));n&&n.scrollIntoView&&n.scrollIntoView({block:"nearest",inline:"start"})},createProcessedItems:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=arguments.length>4?arguments[4]:void 0,r=[];return e&&e.forEach((function(e,c){var a=(""!==s?s+"_":"")+(void 0!==o?o+"_":"")+c,m={item:e,index:c,level:i,key:a,parent:n,parentKey:s,columnIndex:void 0!==o?o:void 0!==n.columnIndex?n.columnIndex:c};m.items=0===i&&e.items&&e.items.length>0?e.items.map((function(e,n){return t.createProcessedItems(e,i+1,m,a,n)})):t.createProcessedItems(e.items,i+1,m,a),r.push(m)})),r},containerRef:function(e){this.container=e},menubarRef:function(e){this.menubar=e?e.$el:void 0}},computed:{processedItems:function(){return this.createProcessedItems(this.model||[])},visibleItems:function(){var e=t.ObjectUtils.isNotEmpty(this.activeItem)?this.activeItem:null;return e&&e.key===this.focusedItemInfo.parentKey?e.items.reduce((function(e,t){return t.forEach((function(t){t.items.forEach((function(t){e.push(t)}))})),e}),[]):this.processedItems},horizontal:function(){return"horizontal"===this.orientation},vertical:function(){return"vertical"===this.orientation},focusedItemId:function(){return t.ObjectUtils.isNotEmpty(this.focusedItemInfo.key)?"".concat(this.id,"_").concat(this.focusedItemInfo.key):null}},components:{MegaMenuSub:h,BarsIcon:m.default}},k=["id"],x=["aria-haspopup","aria-expanded","aria-controls","aria-label"];return y.render=function(e,t,i,n,s,o){var r=c.resolveComponent("BarsIcon"),a=c.resolveComponent("MegaMenuSub");return c.openBlock(),c.createElementBlock("div",c.mergeProps({ref:o.containerRef,id:s.id,class:e.cx("root")},e.ptm("root"),{"data-pc-name":"megamenu"}),[e.$slots.start?(c.openBlock(),c.createElementBlock("div",c.mergeProps({key:0,class:e.cx("start")},e.ptm("start")),[c.renderSlot(e.$slots,"start")],16)):c.createCommentVNode("",!0),c.renderSlot(e.$slots,"menubutton",{id:s.id,class:c.normalizeClass(e.cx("menubutton")),toggleCallback:function(e){return o.menuButtonClick(e)}},(function(){var i;return[e.model&&e.model.length>0?(c.openBlock(),c.createElementBlock("a",c.mergeProps({key:0,ref:"menubutton",role:"button",tabindex:"0",class:e.cx("menubutton"),"aria-haspopup":!!(e.model.length&&e.model.length>0),"aria-expanded":s.mobileActive,"aria-controls":s.id,"aria-label":null===(i=e.$primevue.config.locale.aria)||void 0===i?void 0:i.navigation,onClick:t[0]||(t[0]=function(e){return o.menuButtonClick(e)}),onKeydown:t[1]||(t[1]=function(e){return o.menuButtonKeydown(e)})},e.ptm("menubutton")),[c.renderSlot(e.$slots,"menubuttonicon",{},(function(){return[c.createVNode(r,c.normalizeProps(c.guardReactiveProps(e.ptm("menubuttonicon"))),null,16)]}))],16,x)):c.createCommentVNode("",!0)]})),c.createVNode(a,{ref:o.menubarRef,id:s.id+"_list",tabindex:e.disabled?-1:e.tabindex,role:"menubar","aria-label":e.ariaLabel,"aria-labelledby":e.ariaLabelledby,"aria-disabled":e.disabled||void 0,"aria-orientation":e.orientation,"aria-activedescendant":s.focused?o.focusedItemId:void 0,menuId:s.id,focusedItemId:s.focused?o.focusedItemId:void 0,items:o.processedItems,horizontal:o.horizontal,templates:e.$slots,activeItem:s.activeItem,mobileActive:s.mobileActive,level:0,pt:e.pt,unstyled:e.unstyled,onFocus:o.onFocus,onBlur:o.onBlur,onKeydown:o.onKeyDown,onItemClick:o.onItemClick,onItemMouseenter:o.onItemMouseEnter},null,8,["id","tabindex","aria-label","aria-labelledby","aria-disabled","aria-orientation","aria-activedescendant","menuId","focusedItemId","items","horizontal","templates","activeItem","mobileActive","pt","unstyled","onFocus","onBlur","onKeydown","onItemClick","onItemMouseenter"]),e.$slots.end?(c.openBlock(),c.createElementBlock("div",c.mergeProps({key:1,class:e.cx("end")},e.ptm("end")),[c.renderSlot(e.$slots,"end")],16)):c.createCommentVNode("",!0)],16,k)},y}(primevue.icons.bars,primevue.utils,primevue.basecomponent,primevue.megamenu.style,primevue.icons.angledown,primevue.icons.angleright,primevue.ripple,Vue);
@@ -83,13 +83,13 @@ export interface MenubarPassThroughOptions {
83
83
  */
84
84
  separator?: MenubarPassThroughOptionType;
85
85
  /**
86
- * Used to pass attributes to the mobile popup menu button's DOM element.
86
+ * Used to pass attributes to the mobile menu button's DOM element.
87
87
  */
88
88
  button?: MenubarPassThroughOptionType;
89
89
  /**
90
- * Used to pass attributes to the mobile popup menu button icon's DOM element.
90
+ * Used to pass attributes to the mobile menu button icon's DOM element.
91
91
  */
92
- popupIcon?: MenubarPassThroughOptionType;
92
+ menubuttonicon?: MenubarPassThroughOptionType;
93
93
  /**
94
94
  * Used to pass attributes to the submenu's DOM element.
95
95
  */
@@ -305,10 +305,34 @@ export interface MenubarSlots {
305
305
  */
306
306
  hasSubmenu: boolean;
307
307
  }): VNode[];
308
+ /**
309
+ * Custom menu button template on responsive mode.
310
+ * @param {Object} scope - menu button slot's params.
311
+ */
312
+ menubutton(scope: {
313
+ /**
314
+ * Current id state as a string
315
+ */
316
+ id: string;
317
+ /**
318
+ * Style class of component
319
+ */
320
+ class: string;
321
+ /**
322
+ *
323
+ * Toggle event
324
+ */
325
+ toggleCallback: () => void;
326
+ }): VNode[];
308
327
  /**
309
328
  * Custom popup icon template on responsive mode.
329
+ * @deprecated since v3.42.0. Use 'menubuttonicon' slot instead.
310
330
  */
311
331
  popupicon(): VNode[];
332
+ /**
333
+ * Custom menu button icon template on responsive mode.
334
+ */
335
+ menubuttonicon(): VNode[];
312
336
  /**
313
337
  * Custom submenu icon template.
314
338
  * @param {Object} scope - submenuicon slot's params.
@@ -3,24 +3,26 @@
3
3
  <div v-if="$slots.start" :class="cx('start')" v-bind="ptm('start')">
4
4
  <slot name="start"></slot>
5
5
  </div>
6
- <a
7
- v-if="model && model.length > 0"
8
- ref="menubutton"
9
- role="button"
10
- tabindex="0"
11
- :class="cx('button')"
12
- :aria-haspopup="model.length && model.length > 0 ? true : false"
13
- :aria-expanded="mobileActive"
14
- :aria-controls="id"
15
- :aria-label="$primevue.config.locale.aria?.navigation"
16
- @click="menuButtonClick($event)"
17
- @keydown="menuButtonKeydown($event)"
18
- v-bind="{ ...buttonProps, ...ptm('button') }"
19
- >
20
- <slot name="popupicon">
21
- <BarsIcon v-bind="ptm('popupIcon')" />
22
- </slot>
23
- </a>
6
+ <slot :id="id" name="menubutton" :class="cx('button')" :toggleCallback="(event) => menuButtonClick(event)">
7
+ <a
8
+ v-if="model && model.length > 0"
9
+ ref="menubutton"
10
+ role="button"
11
+ tabindex="0"
12
+ :class="cx('button')"
13
+ :aria-haspopup="model.length && model.length > 0 ? true : false"
14
+ :aria-expanded="mobileActive"
15
+ :aria-controls="id"
16
+ :aria-label="$primevue.config.locale.aria?.navigation"
17
+ @click="menuButtonClick($event)"
18
+ @keydown="menuButtonKeydown($event)"
19
+ v-bind="{ ...buttonProps, ...ptm('button') }"
20
+ >
21
+ <slot name="menubuttonicon">
22
+ <BarsIcon v-bind="ptm('menubuttonicon')" />
23
+ </slot>
24
+ </a>
25
+ </slot>
24
26
  <MenubarSub
25
27
  :ref="menubarRef"
26
28
  :id="id"
@@ -61,6 +63,7 @@ export default {
61
63
  name: 'Menubar',
62
64
  extends: BaseMenubar,
63
65
  emits: ['focus', 'blur'],
66
+ matchMediaListener: null,
64
67
  data() {
65
68
  return {
66
69
  id: this.$attrs.id,
@@ -69,6 +72,7 @@ export default {
69
72
  focusedItemInfo: { index: -1, level: 0, parentKey: '' },
70
73
  activeItemPath: [],
71
74
  dirty: false,
75
+ query: null,
72
76
  queryMatches: false
73
77
  };
74
78
  },
@@ -91,19 +95,13 @@ export default {
91
95
  menubar: null,
92
96
  mounted() {
93
97
  this.id = this.id || UniqueComponentId();
94
- const query = matchMedia(`(max-width: ${this.breakpoint})`);
95
-
96
- this.queryMatches = query.matches;
97
-
98
- query.addEventListener('change', () => {
99
- this.queryMatches = query.matches;
100
- this.mobileActive = false;
101
- });
98
+ this.bindMatchMediaListener();
102
99
  },
103
100
  beforeUnmount() {
104
101
  this.mobileActive = false;
105
102
  this.unbindOutsideClickListener();
106
103
  this.unbindResizeListener();
104
+ this.unbindMatchMediaListener();
107
105
 
108
106
  if (this.container) {
109
107
  ZIndexUtils.clear(this.container);
@@ -426,10 +424,10 @@ export default {
426
424
  bindOutsideClickListener() {
427
425
  if (!this.outsideClickListener) {
428
426
  this.outsideClickListener = (event) => {
429
- const isOutsideContainer = this.menubar && !this.menubar.contains(event.target);
430
- const isOutsideMenuButton = this.mobileActive && this.$refs.menubutton ? this.$refs.menubutton !== event.target && !this.$refs.menubutton.contains(event.target) : true;
427
+ const isOutsideContainer = this.container && !this.container.contains(event.target);
428
+ const isOutsideTarget = !(this.target && (this.target === event.target || this.target.contains(event.target)));
431
429
 
432
- if (isOutsideMenuButton && isOutsideContainer) {
430
+ if (isOutsideContainer && isOutsideTarget) {
433
431
  this.hide();
434
432
  }
435
433
  };
@@ -462,6 +460,27 @@ export default {
462
460
  this.resizeListener = null;
463
461
  }
464
462
  },
463
+ bindMatchMediaListener() {
464
+ if (!this.matchMediaListener) {
465
+ const query = matchMedia(`(max-width: ${this.breakpoint})`);
466
+
467
+ this.query = query;
468
+ this.queryMatches = query.matches;
469
+
470
+ this.matchMediaListener = () => {
471
+ this.queryMatches = query.matches;
472
+ this.mobileActive = false;
473
+ };
474
+
475
+ this.query.addEventListener('change', this.matchMediaListener);
476
+ }
477
+ },
478
+ unbindMatchMediaListener() {
479
+ if (this.matchMediaListener) {
480
+ this.query.removeEventListener('change', this.matchMediaListener);
481
+ this.matchMediaListener = null;
482
+ }
483
+ },
465
484
  isItemMatched(processedItem) {
466
485
  return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());
467
486
  },