primereact 9.1.1 → 9.2.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 (210) hide show
  1. package/api/api.cjs.js +16 -0
  2. package/api/api.cjs.min.js +1 -1
  3. package/api/api.d.ts +2 -2
  4. package/api/api.esm.js +16 -0
  5. package/api/api.esm.min.js +1 -1
  6. package/api/api.js +16 -0
  7. package/api/api.min.js +1 -1
  8. package/autocomplete/autocomplete.cjs.js +1 -0
  9. package/autocomplete/autocomplete.cjs.min.js +1 -1
  10. package/autocomplete/autocomplete.esm.js +1 -0
  11. package/autocomplete/autocomplete.esm.min.js +1 -1
  12. package/autocomplete/autocomplete.js +1 -0
  13. package/autocomplete/autocomplete.min.js +1 -1
  14. package/avatar/avatar.cjs.js +2 -2
  15. package/avatar/avatar.cjs.min.js +1 -1
  16. package/avatar/avatar.esm.js +2 -2
  17. package/avatar/avatar.esm.min.js +1 -1
  18. package/avatar/avatar.js +2 -2
  19. package/avatar/avatar.min.js +1 -1
  20. package/button/button.cjs.js +6 -1
  21. package/button/button.cjs.min.js +1 -1
  22. package/button/button.d.ts +2 -2
  23. package/button/button.esm.js +6 -1
  24. package/button/button.esm.min.js +1 -1
  25. package/button/button.js +6 -1
  26. package/button/button.min.js +1 -1
  27. package/calendar/calendar.cjs.js +2 -2
  28. package/calendar/calendar.cjs.min.js +1 -1
  29. package/calendar/calendar.esm.js +2 -2
  30. package/calendar/calendar.esm.min.js +1 -1
  31. package/calendar/calendar.js +2 -2
  32. package/calendar/calendar.min.js +1 -1
  33. package/confirmdialog/confirmdialog.cjs.min.js +1 -1
  34. package/confirmdialog/confirmdialog.esm.min.js +1 -1
  35. package/confirmdialog/confirmdialog.min.js +1 -1
  36. package/confirmpopup/confirmpopup.cjs.min.js +1 -1
  37. package/confirmpopup/confirmpopup.esm.min.js +1 -1
  38. package/confirmpopup/confirmpopup.min.js +1 -1
  39. package/contextmenu/contextmenu.cjs.js +61 -18
  40. package/contextmenu/contextmenu.cjs.min.js +1 -1
  41. package/contextmenu/contextmenu.d.ts +9 -0
  42. package/contextmenu/contextmenu.esm.js +63 -20
  43. package/contextmenu/contextmenu.esm.min.js +1 -1
  44. package/contextmenu/contextmenu.js +61 -18
  45. package/contextmenu/contextmenu.min.js +1 -1
  46. package/core/core.js +254 -129
  47. package/core/core.min.js +9 -9
  48. package/datatable/datatable.cjs.js +90 -82
  49. package/datatable/datatable.cjs.min.js +1 -1
  50. package/datatable/datatable.d.ts +2 -11
  51. package/datatable/datatable.esm.js +91 -83
  52. package/datatable/datatable.esm.min.js +1 -1
  53. package/datatable/datatable.js +90 -82
  54. package/datatable/datatable.min.css +1 -1
  55. package/datatable/datatable.min.js +1 -1
  56. package/dataview/dataview.d.ts +1 -1
  57. package/dropdown/dropdown.cjs.js +1 -0
  58. package/dropdown/dropdown.cjs.min.js +1 -1
  59. package/dropdown/dropdown.esm.js +1 -0
  60. package/dropdown/dropdown.esm.min.js +1 -1
  61. package/dropdown/dropdown.js +1 -0
  62. package/dropdown/dropdown.min.js +1 -1
  63. package/hooks/hooks.cjs.js +34 -2
  64. package/hooks/hooks.cjs.min.js +1 -1
  65. package/hooks/hooks.d.ts +17 -3
  66. package/hooks/hooks.esm.js +34 -3
  67. package/hooks/hooks.esm.min.js +1 -1
  68. package/hooks/hooks.js +34 -2
  69. package/hooks/hooks.min.js +1 -1
  70. package/inputnumber/inputnumber.cjs.min.js +1 -1
  71. package/inputnumber/inputnumber.esm.min.js +1 -1
  72. package/inputnumber/inputnumber.min.js +1 -1
  73. package/inputtext/inputtext.min.css +1 -1
  74. package/listbox/listbox.cjs.js +5 -4
  75. package/listbox/listbox.cjs.min.js +1 -1
  76. package/listbox/listbox.esm.js +5 -4
  77. package/listbox/listbox.esm.min.js +1 -1
  78. package/listbox/listbox.js +5 -4
  79. package/listbox/listbox.min.js +1 -1
  80. package/megamenu/megamenu.cjs.js +94 -6
  81. package/megamenu/megamenu.cjs.min.js +1 -1
  82. package/megamenu/megamenu.d.ts +9 -0
  83. package/megamenu/megamenu.esm.js +96 -8
  84. package/megamenu/megamenu.esm.min.js +1 -1
  85. package/megamenu/megamenu.js +94 -6
  86. package/megamenu/megamenu.min.css +1 -1
  87. package/megamenu/megamenu.min.js +1 -1
  88. package/multiselect/multiselect.cjs.js +3 -1
  89. package/multiselect/multiselect.cjs.min.js +1 -1
  90. package/multiselect/multiselect.d.ts +27 -1
  91. package/multiselect/multiselect.esm.js +3 -1
  92. package/multiselect/multiselect.esm.min.js +1 -1
  93. package/multiselect/multiselect.js +3 -1
  94. package/multiselect/multiselect.min.js +1 -1
  95. package/package.json +1 -1
  96. package/paginator/paginator.cjs.js +0 -8
  97. package/paginator/paginator.cjs.min.js +1 -1
  98. package/paginator/paginator.esm.js +0 -8
  99. package/paginator/paginator.esm.min.js +1 -1
  100. package/paginator/paginator.js +0 -8
  101. package/paginator/paginator.min.js +1 -1
  102. package/picklist/picklist.cjs.min.js +1 -1
  103. package/picklist/picklist.esm.min.js +1 -1
  104. package/picklist/picklist.min.js +1 -1
  105. package/primereact.all.cjs.js +609 -265
  106. package/primereact.all.cjs.min.js +1 -1
  107. package/primereact.all.esm.js +609 -266
  108. package/primereact.all.esm.min.js +1 -1
  109. package/primereact.all.js +609 -265
  110. package/primereact.all.min.js +1 -1
  111. package/resources/primereact.css +638 -688
  112. package/resources/primereact.min.css +1 -1
  113. package/resources/themes/arya-blue/theme.css +134 -6
  114. package/resources/themes/arya-green/theme.css +134 -6
  115. package/resources/themes/arya-orange/theme.css +134 -6
  116. package/resources/themes/arya-purple/theme.css +134 -6
  117. package/resources/themes/bootstrap4-dark-blue/theme.css +137 -8
  118. package/resources/themes/bootstrap4-dark-purple/theme.css +137 -8
  119. package/resources/themes/bootstrap4-light-blue/theme.css +137 -8
  120. package/resources/themes/bootstrap4-light-purple/theme.css +137 -8
  121. package/resources/themes/fluent-light/theme.css +133 -4
  122. package/resources/themes/lara-dark-blue/theme.css +135 -6
  123. package/resources/themes/lara-dark-indigo/theme.css +135 -6
  124. package/resources/themes/lara-dark-purple/theme.css +135 -6
  125. package/resources/themes/lara-dark-teal/theme.css +135 -6
  126. package/resources/themes/lara-light-blue/theme.css +137 -8
  127. package/resources/themes/lara-light-indigo/theme.css +137 -8
  128. package/resources/themes/lara-light-purple/theme.css +137 -8
  129. package/resources/themes/lara-light-teal/theme.css +137 -8
  130. package/resources/themes/luna-amber/theme.css +137 -8
  131. package/resources/themes/luna-blue/theme.css +137 -8
  132. package/resources/themes/luna-green/theme.css +137 -8
  133. package/resources/themes/luna-pink/theme.css +137 -8
  134. package/resources/themes/md-dark-deeppurple/theme.css +137 -8
  135. package/resources/themes/md-dark-indigo/theme.css +137 -8
  136. package/resources/themes/md-light-deeppurple/theme.css +137 -8
  137. package/resources/themes/md-light-indigo/theme.css +137 -8
  138. package/resources/themes/mdc-dark-deeppurple/theme.css +137 -8
  139. package/resources/themes/mdc-dark-indigo/theme.css +137 -8
  140. package/resources/themes/mdc-light-deeppurple/theme.css +137 -8
  141. package/resources/themes/mdc-light-indigo/theme.css +137 -8
  142. package/resources/themes/mira/theme.css +137 -8
  143. package/resources/themes/nano/theme.css +137 -8
  144. package/resources/themes/nova/theme.css +137 -8
  145. package/resources/themes/nova-accent/theme.css +137 -8
  146. package/resources/themes/nova-alt/theme.css +137 -8
  147. package/resources/themes/rhea/theme.css +137 -8
  148. package/resources/themes/saga-blue/theme.css +135 -6
  149. package/resources/themes/saga-green/theme.css +135 -6
  150. package/resources/themes/saga-orange/theme.css +135 -6
  151. package/resources/themes/saga-purple/theme.css +135 -6
  152. package/resources/themes/soho-dark/theme.css +137 -8
  153. package/resources/themes/soho-light/theme.css +137 -8
  154. package/resources/themes/tailwind-light/theme.css +137 -8
  155. package/resources/themes/vela-blue/theme.css +135 -6
  156. package/resources/themes/vela-green/theme.css +135 -6
  157. package/resources/themes/vela-orange/theme.css +135 -6
  158. package/resources/themes/vela-purple/theme.css +135 -6
  159. package/resources/themes/viva-dark/theme.css +137 -8
  160. package/resources/themes/viva-light/theme.css +137 -8
  161. package/splitbutton/splitbutton.cjs.js +57 -3
  162. package/splitbutton/splitbutton.cjs.min.js +1 -1
  163. package/splitbutton/splitbutton.d.ts +28 -0
  164. package/splitbutton/splitbutton.esm.js +57 -3
  165. package/splitbutton/splitbutton.esm.min.js +1 -1
  166. package/splitbutton/splitbutton.js +57 -3
  167. package/splitbutton/splitbutton.min.js +1 -1
  168. package/tieredmenu/tieredmenu.cjs.js +69 -9
  169. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  170. package/tieredmenu/tieredmenu.d.ts +9 -0
  171. package/tieredmenu/tieredmenu.esm.js +71 -11
  172. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  173. package/tieredmenu/tieredmenu.js +69 -9
  174. package/tieredmenu/tieredmenu.min.js +1 -1
  175. package/toast/toast.cjs.js +16 -0
  176. package/toast/toast.cjs.min.js +1 -1
  177. package/toast/toast.esm.js +16 -0
  178. package/toast/toast.esm.min.js +1 -1
  179. package/toast/toast.js +16 -0
  180. package/toast/toast.min.css +1 -1
  181. package/toast/toast.min.js +1 -1
  182. package/tooltip/tooltip.cjs.js +5 -4
  183. package/tooltip/tooltip.cjs.min.js +1 -1
  184. package/tooltip/tooltip.esm.js +5 -4
  185. package/tooltip/tooltip.esm.min.js +1 -1
  186. package/tooltip/tooltip.js +5 -4
  187. package/tooltip/tooltip.min.js +1 -1
  188. package/treetable/treetable.cjs.js +12 -9
  189. package/treetable/treetable.cjs.min.js +1 -1
  190. package/treetable/treetable.d.ts +0 -5
  191. package/treetable/treetable.esm.js +12 -9
  192. package/treetable/treetable.esm.min.js +1 -1
  193. package/treetable/treetable.js +12 -9
  194. package/treetable/treetable.min.css +1 -1
  195. package/treetable/treetable.min.js +1 -1
  196. package/utils/utils.cjs.js +15 -10
  197. package/utils/utils.cjs.min.js +1 -1
  198. package/utils/utils.esm.js +15 -10
  199. package/utils/utils.esm.min.js +1 -1
  200. package/utils/utils.js +15 -10
  201. package/utils/utils.min.js +1 -1
  202. package/virtualscroller/virtualscroller.cjs.js +177 -104
  203. package/virtualscroller/virtualscroller.cjs.min.js +1 -1
  204. package/virtualscroller/virtualscroller.d.ts +20 -0
  205. package/virtualscroller/virtualscroller.esm.js +177 -104
  206. package/virtualscroller/virtualscroller.esm.min.js +1 -1
  207. package/virtualscroller/virtualscroller.js +177 -104
  208. package/virtualscroller/virtualscroller.min.css +1 -1
  209. package/virtualscroller/virtualscroller.min.js +1 -1
  210. package/web-types.json +2 -2
@@ -113,6 +113,8 @@ var ContextMenuBase = {
113
113
  global: false,
114
114
  autoZIndex: true,
115
115
  baseZIndex: 0,
116
+ breakpoint: undefined,
117
+ scrollHeight: '400px',
116
118
  appendTo: null,
117
119
  transitionOptions: null,
118
120
  onShow: null,
@@ -138,7 +140,7 @@ var ContextMenuSub = /*#__PURE__*/React__namespace.memo(function (props) {
138
140
  setActiveItemState(null);
139
141
  }
140
142
  var onItemMouseEnter = function onItemMouseEnter(event, item) {
141
- if (item.disabled) {
143
+ if (item.disabled || props.isMobileMode) {
142
144
  event.preventDefault();
143
145
  return;
144
146
  }
@@ -158,26 +160,31 @@ var ContextMenuSub = /*#__PURE__*/React__namespace.memo(function (props) {
158
160
  item: item
159
161
  });
160
162
  }
163
+ if (props.isMobileMode && item.items) {
164
+ if (activeItemState && item === activeItemState) setActiveItemState(null);else setActiveItemState(item);
165
+ }
161
166
  if (!item.items) {
162
167
  props.onLeafClick(event);
163
168
  }
164
169
  };
165
170
  var position = function position() {
166
- var parentItem = submenuRef.current.parentElement;
167
- var containerOffset = utils.DomHandler.getOffset(parentItem);
168
- var viewport = utils.DomHandler.getViewport();
169
- var sublistWidth = submenuRef.current.offsetParent ? submenuRef.current.offsetWidth : utils.DomHandler.getHiddenElementOuterWidth(submenuRef.current);
170
- var itemOuterWidth = utils.DomHandler.getOuterWidth(parentItem.children[0]);
171
- var top = parseInt(containerOffset.top, 10) + submenuRef.current.offsetHeight - utils.DomHandler.getWindowScrollTop();
172
- if (top > viewport.height) {
173
- submenuRef.current.style.top = viewport.height - top + 'px';
174
- } else {
175
- submenuRef.current.style.top = '0px';
176
- }
177
- if (parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - utils.DomHandler.calculateScrollbarWidth()) {
178
- submenuRef.current.style.left = -1 * sublistWidth + 'px';
179
- } else {
180
- submenuRef.current.style.left = itemOuterWidth + 'px';
171
+ if (!props.isMobileMode) {
172
+ var parentItem = submenuRef.current.parentElement;
173
+ var containerOffset = utils.DomHandler.getOffset(parentItem);
174
+ var viewport = utils.DomHandler.getViewport();
175
+ var sublistWidth = submenuRef.current.offsetParent ? submenuRef.current.offsetWidth : utils.DomHandler.getHiddenElementOuterWidth(submenuRef.current);
176
+ var itemOuterWidth = utils.DomHandler.getOuterWidth(parentItem.children[0]);
177
+ var top = parseInt(containerOffset.top, 10) + submenuRef.current.offsetHeight - utils.DomHandler.getWindowScrollTop();
178
+ if (top > viewport.height) {
179
+ submenuRef.current.style.top = viewport.height - top + 'px';
180
+ } else {
181
+ submenuRef.current.style.top = '0px';
182
+ }
183
+ if (parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - utils.DomHandler.calculateScrollbarWidth()) {
184
+ submenuRef.current.style.left = -1 * sublistWidth + 'px';
185
+ } else {
186
+ submenuRef.current.style.left = itemOuterWidth + 'px';
187
+ }
181
188
  }
182
189
  };
183
190
  var onEnter = function onEnter() {
@@ -199,7 +206,8 @@ var ContextMenuSub = /*#__PURE__*/React__namespace.memo(function (props) {
199
206
  menuProps: props.menuProps,
200
207
  model: item.items,
201
208
  resetMenu: item !== activeItemState,
202
- onLeafClick: props.onLeafClick
209
+ onLeafClick: props.onLeafClick,
210
+ isMobileMode: props.isMobileMode
203
211
  });
204
212
  }
205
213
  return null;
@@ -308,8 +316,14 @@ var ContextMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
308
316
  _React$useState6 = _slicedToArray(_React$useState5, 2),
309
317
  resetMenuState = _React$useState6[0],
310
318
  setResetMenuState = _React$useState6[1];
319
+ var _React$useState7 = React__namespace.useState(null),
320
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
321
+ attributeSelectorState = _React$useState8[0],
322
+ setAttributeSelectorState = _React$useState8[1];
311
323
  var menuRef = React__namespace.useRef(null);
312
324
  var currentEvent = React__namespace.useRef(null);
325
+ var styleElementRef = React__namespace.useRef(null);
326
+ var isMobileMode = hooks.useMatchMedia("screen and (max-width: ".concat(props.breakpoint, ")"), !!props.breakpoint);
313
327
  var _useEventListener = hooks.useEventListener({
314
328
  type: 'click',
315
329
  listener: function listener(event) {
@@ -340,6 +354,17 @@ var ContextMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
340
354
  _useResizeListener2 = _slicedToArray(_useResizeListener, 2),
341
355
  bindDocumentResizeListener = _useResizeListener2[0],
342
356
  unbindDocumentResizeListener = _useResizeListener2[1];
357
+ var createStyle = function createStyle() {
358
+ if (!styleElementRef.current) {
359
+ styleElementRef.current = utils.DomHandler.createInlineStyle(PrimeReact__default["default"].nonce);
360
+ var selector = "".concat(attributeSelectorState);
361
+ var innerHTML = "\n@media screen and (max-width: ".concat(props.breakpoint, ") {\n .p-contextmenu[").concat(selector, "] > ul {\n max-height: ").concat(props.scrollHeight, ";\n overflow: ").concat(props.scrollHeight ? 'auto' : '', ";\n }\n\n .p-contextmenu[").concat(selector, "] .p-submenu-list {\n position: relative;\n }\n\n .p-contextmenu[").concat(selector, "] .p-menuitem-active > .p-submenu-list {\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n padding: 0 0 0 calc(var(--inline-spacing) * 2); /* @todo */\n }\n\n .p-contextmenu[").concat(selector, "] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-contextmenu[").concat(selector, "] .p-submenu-icon:before {\n content: \"\\e930\";\n }\n}\n");
362
+ styleElementRef.current.innerHTML = innerHTML;
363
+ }
364
+ };
365
+ var destroyStyle = function destroyStyle() {
366
+ styleElementRef.current = utils.DomHandler.removeInlineStyle(styleElementRef.current);
367
+ };
343
368
  var onMenuClick = function onMenuClick() {
344
369
  setResetMenuState(false);
345
370
  };
@@ -368,6 +393,10 @@ var ContextMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
368
393
  utils.ZIndexUtils.set('menu', menuRef.current, PrimeReact__default["default"].autoZIndex, props.baseZIndex || PrimeReact__default["default"].zIndex['menu']);
369
394
  }
370
395
  position(currentEvent.current);
396
+ if (attributeSelectorState && props.breakpoint) {
397
+ menuRef.current.setAttribute(attributeSelectorState, '');
398
+ createStyle();
399
+ }
371
400
  };
372
401
  var onEntered = function onEntered() {
373
402
  bindDocumentListeners();
@@ -378,6 +407,7 @@ var ContextMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
378
407
  };
379
408
  var onExited = function onExited() {
380
409
  utils.ZIndexUtils.clear(menuRef.current);
410
+ destroyStyle();
381
411
  };
382
412
  var position = function position(event) {
383
413
  if (event) {
@@ -430,7 +460,19 @@ var ContextMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
430
460
  if (props.global) {
431
461
  bindDocumentContextMenuListener();
432
462
  }
463
+ if (props.breakpoint) {
464
+ !attributeSelectorState && setAttributeSelectorState(utils.UniqueComponentId());
465
+ }
433
466
  });
467
+ hooks.useUpdateEffect(function () {
468
+ if (attributeSelectorState && menuRef.current) {
469
+ menuRef.current.setAttribute(attributeSelectorState, '');
470
+ createStyle();
471
+ }
472
+ return function () {
473
+ destroyStyle();
474
+ };
475
+ }, [attributeSelectorState, props.breakpoint]);
434
476
  hooks.useUpdateEffect(function () {
435
477
  if (visibleState) {
436
478
  setVisibleState(false);
@@ -486,7 +528,8 @@ var ContextMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
486
528
  model: props.model,
487
529
  root: true,
488
530
  resetMenu: resetMenuState,
489
- onLeafClick: onLeafClick
531
+ onLeafClick: onLeafClick,
532
+ isMobileMode: isMobileMode
490
533
  })));
491
534
  };
492
535
  var element = createContextMenu();
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/api"),n=require("primereact/csstransition"),r=require("primereact/hooks"),o=require("primereact/portal"),l=require("primereact/utils"),u=require("primereact/ripple");function a(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 c=i(e),s=a(t);function f(){return f=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},f.apply(this,arguments)}function m(e){if(Array.isArray(e))return e}function p(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,l,u,a=[],i=!0,c=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=l.call(n)).done)&&(a.push(r.value),a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{if(!i&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(c)throw o}}return a}}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 b(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 y(e,t){return m(e)||p(e,t)||b(e,t)||g()}var h={defaultProps:{__TYPE:"ContextMenu",id:null,model:null,style:null,className:null,global:!1,autoZIndex:!0,baseZIndex:0,appendTo:null,transitionOptions:null,onShow:null,onHide:null,children:void 0},getProps:function(e){return l.ObjectUtils.getMergedProps(e,h.defaultProps)},getOtherProps:function(e){return l.ObjectUtils.getDiffProps(e,h.defaultProps)}},v=c.memo((function(e){var t=y(c.useState(null),2),o=t[0],a=t[1],i=c.useRef(null),s=e.root||!e.resetMenu;!0===e.resetMenu&&null!==o&&a(null);var f=function(e,t){t.disabled?e.preventDefault():a(t)},m=function(t,n){n.disabled?t.preventDefault():(n.url||t.preventDefault(),n.command&&n.command({originalEvent:t,item:n}),n.items||e.onLeafClick(t))},p=function(){var e=i.current.parentElement,t=l.DomHandler.getOffset(e),n=l.DomHandler.getViewport(),r=i.current.offsetParent?i.current.offsetWidth:l.DomHandler.getHiddenElementOuterWidth(i.current),o=l.DomHandler.getOuterWidth(e.children[0]),u=parseInt(t.top,10)+i.current.offsetHeight-l.DomHandler.getWindowScrollTop();i.current.style.top=u>n.height?n.height-u+"px":"0px",i.current.style.left=parseInt(t.left,10)+o+r>n.width-l.DomHandler.calculateScrollbarWidth()?-1*r+"px":o+"px"};r.useUpdateEffect((function(){s&&p()}));var d=function(e){return c.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},b=function(t){return t.items?c.createElement(v,{menuProps:e.menuProps,model:t.items,resetMenu:t!==o,onLeafClick:e.onLeafClick}):null},g=function(t,n){if(!1===t.visible)return null;var r=o===t,a=t.label+"_"+n,i=l.classNames("p-menuitem",{"p-menuitem-active":r},t.className),s=l.classNames("p-menuitem-link",{"p-disabled":t.disabled}),p=l.classNames("p-menuitem-icon",t.icon),d="p-submenu-icon pi pi-angle-right",g=l.IconUtils.getJSXIcon(t.icon,{className:"p-menuitem-icon"},{props:e.menuProps}),y=t.label&&c.createElement("span",{className:"p-menuitem-text"},t.label),h=t.items&&c.createElement("span",{className:d}),v=b(t),E=c.createElement("a",{href:t.url||"#",className:s,target:t.target,onClick:function(e){return m(e,t)},role:"menuitem","aria-haspopup":null!=t.items,"aria-disabled":t.disabled},g,y,h,c.createElement(u.Ripple,null));t.template&&(E=l.ObjectUtils.getJSXElement(t.template,t,{onClick:function(e){return m(e,t)},className:s,labelClassName:"p-menuitem-text",iconClassName:p,submenuIconClassName:d,element:E,props:e,active:r}));return c.createElement("li",{key:a,role:"none",id:t.id,className:i,style:t.style,onMouseEnter:function(e){return f(e,t)}},E,v)},h=function(e,t){return e.separator?d(t):g(e,t)},E=l.classNames({"p-submenu-list":!e.root}),x=e.model?e.model.map(h):null;return c.createElement(n.CSSTransition,{nodeRef:i,classNames:"p-contextmenusub",in:s,timeout:{enter:0,exit:0},unmountOnExit:!0,onEnter:function(){p()}},c.createElement("ul",{ref:i,className:E},x))}));v.displayName="ContextMenuSub";var E=c.memo(c.forwardRef((function(e,t){var u=h.getProps(e),a=y(c.useState(!1),2),i=a[0],m=a[1],p=y(c.useState(!1),2),d=p[0],b=p[1],g=y(c.useState(!1),2),E=g[0],x=g[1],O=c.useRef(null),N=c.useRef(null),P=y(r.useEventListener({type:"click",listener:function(e){W(e)&&2!==e.button&&(T(e),x(!0))}}),2),S=P[0],H=P[1],I=y(r.useEventListener({type:"contextmenu",listener:function(e){k(e)}}),1)[0],j=y(r.useResizeListener({listener:function(e){i&&!l.DomHandler.isTouchDevice()&&T(e)}}),2),C=j[0],D=j[1],w=function(){x(!1)},M=function(){x(!1)},k=function(e){e.stopPropagation(),e.preventDefault(),N.current=e,i?b(!0):(m(!0),u.onShow&&u.onShow(N.current))},T=function(e){N.current=e,m(!1),b(!1),u.onHide&&u.onHide(N.current)},U=function(){u.autoZIndex&&l.ZIndexUtils.set("menu",O.current,s.default.autoZIndex,u.baseZIndex||s.default.zIndex.menu),_(N.current)},L=function(){A()},Z=function(){z(),l.ZIndexUtils.clear(O.current)},R=function(){l.ZIndexUtils.clear(O.current)},_=function(e){if(e){var t=e.pageX+1,n=e.pageY+1,r=O.current.offsetParent?O.current.offsetWidth:l.DomHandler.getHiddenElementOuterWidth(O.current),o=O.current.offsetParent?O.current.offsetHeight:l.DomHandler.getHiddenElementOuterHeight(O.current),u=l.DomHandler.getViewport();t+r-document.body.scrollLeft>u.width&&(t-=r),n+o-document.body.scrollTop>u.height&&(n-=o),t<document.body.scrollLeft&&(t=document.body.scrollLeft),n<document.body.scrollTop&&(n=document.body.scrollTop),O.current.style.left=t+"px",O.current.style.top=n+"px"}},q=function(e){x(!0),T(e),e.stopPropagation()},W=function(e){return O&&O.current&&!(O.current.isSameNode(e.target)||O.current.contains(e.target))},A=function(){C(),S()},z=function(){D(),H()};r.useMountEffect((function(){u.global&&I()})),r.useUpdateEffect((function(){i?(m(!1),b(!1),x(!0)):d||i||!E||k(N.current)}),[d]),r.useUnmountEffect((function(){l.ZIndexUtils.clear(O.current)})),c.useImperativeHandle(t,(function(){return{props:u,show:k,hide:T,getElement:function(){return O.current}}}));var X,J,V=(X=h.getOtherProps(u),J=l.classNames("p-contextmenu p-component",u.className,{"p-input-filled":"filled"===s.default.inputStyle,"p-ripple-disabled":!1===s.default.ripple}),c.createElement(n.CSSTransition,{nodeRef:O,classNames:"p-contextmenu",in:i,timeout:{enter:250,exit:0},options:u.transitionOptions,unmountOnExit:!0,onEnter:U,onEntered:L,onExit:Z,onExited:R},c.createElement("div",f({ref:O,id:u.id,className:J,style:u.style},X,{onClick:w,onMouseEnter:M}),c.createElement(v,{menuProps:u,model:u.model,root:!0,resetMenu:E,onLeafClick:q}))));return c.createElement(o.Portal,{element:V,appendTo:u.appendTo})})));E.displayName="ContextMenu",exports.ContextMenu=E;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/api"),n=require("primereact/csstransition"),r=require("primereact/hooks"),o=require("primereact/portal"),i=require("primereact/utils"),u=require("primereact/ripple");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(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 c=a(e),s=l(t);function m(){return m=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},m.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,o,i,u,l=[],a=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;a=!1}else for(;!(a=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{if(!a&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(c)throw o}}return l}}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 b(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 h(e,t){return p(e)||f(e,t)||b(e,t)||g()}var y={defaultProps:{__TYPE:"ContextMenu",id:null,model:null,style:null,className:null,global:!1,autoZIndex:!0,baseZIndex:0,breakpoint:void 0,scrollHeight:"400px",appendTo:null,transitionOptions:null,onShow:null,onHide:null,children:void 0},getProps:function(e){return i.ObjectUtils.getMergedProps(e,y.defaultProps)},getOtherProps:function(e){return i.ObjectUtils.getDiffProps(e,y.defaultProps)}},v=c.memo((function(e){var t=h(c.useState(null),2),o=t[0],l=t[1],a=c.useRef(null),s=e.root||!e.resetMenu;!0===e.resetMenu&&null!==o&&l(null);var m=function(t,n){n.disabled||e.isMobileMode?t.preventDefault():l(n)},p=function(t,n){n.disabled?t.preventDefault():(n.url||t.preventDefault(),n.command&&n.command({originalEvent:t,item:n}),e.isMobileMode&&n.items&&l(o&&n===o?null:n),n.items||e.onLeafClick(t))},f=function(){if(!e.isMobileMode){var t=a.current.parentElement,n=i.DomHandler.getOffset(t),r=i.DomHandler.getViewport(),o=a.current.offsetParent?a.current.offsetWidth:i.DomHandler.getHiddenElementOuterWidth(a.current),u=i.DomHandler.getOuterWidth(t.children[0]),l=parseInt(n.top,10)+a.current.offsetHeight-i.DomHandler.getWindowScrollTop();a.current.style.top=l>r.height?r.height-l+"px":"0px",a.current.style.left=parseInt(n.left,10)+u+o>r.width-i.DomHandler.calculateScrollbarWidth()?-1*o+"px":u+"px"}};r.useUpdateEffect((function(){s&&f()}));var d=function(e){return c.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},b=function(t){return t.items?c.createElement(v,{menuProps:e.menuProps,model:t.items,resetMenu:t!==o,onLeafClick:e.onLeafClick,isMobileMode:e.isMobileMode}):null},g=function(t,n){if(!1===t.visible)return null;var r=o===t,l=t.label+"_"+n,a=i.classNames("p-menuitem",{"p-menuitem-active":r},t.className),s=i.classNames("p-menuitem-link",{"p-disabled":t.disabled}),f=i.classNames("p-menuitem-icon",t.icon),d="p-submenu-icon pi pi-angle-right",g=i.IconUtils.getJSXIcon(t.icon,{className:"p-menuitem-icon"},{props:e.menuProps}),h=t.label&&c.createElement("span",{className:"p-menuitem-text"},t.label),y=t.items&&c.createElement("span",{className:d}),v=b(t),x=c.createElement("a",{href:t.url||"#",className:s,target:t.target,onClick:function(e){return p(e,t)},role:"menuitem","aria-haspopup":null!=t.items,"aria-disabled":t.disabled},g,h,y,c.createElement(u.Ripple,null));t.template&&(x=i.ObjectUtils.getJSXElement(t.template,t,{onClick:function(e){return p(e,t)},className:s,labelClassName:"p-menuitem-text",iconClassName:f,submenuIconClassName:d,element:x,props:e,active:r}));return c.createElement("li",{key:l,role:"none",id:t.id,className:a,style:t.style,onMouseEnter:function(e){return m(e,t)}},x,v)},y=function(e,t){return e.separator?d(t):g(e,t)},x=i.classNames({"p-submenu-list":!e.root}),E=e.model?e.model.map(y):null;return c.createElement(n.CSSTransition,{nodeRef:a,classNames:"p-contextmenusub",in:s,timeout:{enter:0,exit:0},unmountOnExit:!0,onEnter:function(){f()}},c.createElement("ul",{ref:a,className:x},E))}));v.displayName="ContextMenuSub";var x=c.memo(c.forwardRef((function(e,t){var u=y.getProps(e),l=h(c.useState(!1),2),a=l[0],p=l[1],f=h(c.useState(!1),2),d=f[0],b=f[1],g=h(c.useState(!1),2),x=g[0],E=g[1],M=h(c.useState(null),2),O=M[0],H=M[1],S=c.useRef(null),N=c.useRef(null),P=c.useRef(null),I=r.useMatchMedia("screen and (max-width: ".concat(u.breakpoint,")"),!!u.breakpoint),k=h(r.useEventListener({type:"click",listener:function(e){$(e)&&2!==e.button&&(_(e),E(!0))}}),2),w=k[0],D=k[1],j=h(r.useEventListener({type:"contextmenu",listener:function(e){A(e)}}),1)[0],C=h(r.useResizeListener({listener:function(e){a&&!i.DomHandler.isTouchDevice()&&_(e)}}),2),U=C[0],T=C[1],L=function(){if(!P.current){P.current=i.DomHandler.createInlineStyle(s.default.nonce);var e="".concat(O),t="\n@media screen and (max-width: ".concat(u.breakpoint,") {\n .p-contextmenu[").concat(e,"] > ul {\n max-height: ").concat(u.scrollHeight,";\n overflow: ").concat(u.scrollHeight?"auto":"",";\n }\n\n .p-contextmenu[").concat(e,"] .p-submenu-list {\n position: relative;\n }\n\n .p-contextmenu[").concat(e,"] .p-menuitem-active > .p-submenu-list {\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n padding: 0 0 0 calc(var(--inline-spacing) * 2); /* @todo */\n }\n\n .p-contextmenu[").concat(e,"] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-contextmenu[").concat(e,'] .p-submenu-icon:before {\n content: "\\e930";\n }\n}\n');P.current.innerHTML=t}},R=function(){P.current=i.DomHandler.removeInlineStyle(P.current)},Z=function(){E(!1)},q=function(){E(!1)},A=function(e){e.stopPropagation(),e.preventDefault(),N.current=e,a?b(!0):(p(!0),u.onShow&&u.onShow(N.current))},_=function(e){N.current=e,p(!1),b(!1),u.onHide&&u.onHide(N.current)},W=function(){u.autoZIndex&&i.ZIndexUtils.set("menu",S.current,s.default.autoZIndex,u.baseZIndex||s.default.zIndex.menu),V(N.current),O&&u.breakpoint&&(S.current.setAttribute(O,""),L())},z=function(){B()},X=function(){F(),i.ZIndexUtils.clear(S.current)},J=function(){i.ZIndexUtils.clear(S.current),R()},V=function(e){if(e){var t=e.pageX+1,n=e.pageY+1,r=S.current.offsetParent?S.current.offsetWidth:i.DomHandler.getHiddenElementOuterWidth(S.current),o=S.current.offsetParent?S.current.offsetHeight:i.DomHandler.getHiddenElementOuterHeight(S.current),u=i.DomHandler.getViewport();t+r-document.body.scrollLeft>u.width&&(t-=r),n+o-document.body.scrollTop>u.height&&(n-=o),t<document.body.scrollLeft&&(t=document.body.scrollLeft),n<document.body.scrollTop&&(n=document.body.scrollTop),S.current.style.left=t+"px",S.current.style.top=n+"px"}},Y=function(e){E(!0),_(e),e.stopPropagation()},$=function(e){return S&&S.current&&!(S.current.isSameNode(e.target)||S.current.contains(e.target))},B=function(){U(),w()},F=function(){T(),D()};r.useMountEffect((function(){u.global&&j(),u.breakpoint&&!O&&H(i.UniqueComponentId())})),r.useUpdateEffect((function(){return O&&S.current&&(S.current.setAttribute(O,""),L()),function(){R()}}),[O,u.breakpoint]),r.useUpdateEffect((function(){a?(p(!1),b(!1),E(!0)):d||a||!x||A(N.current)}),[d]),r.useUnmountEffect((function(){i.ZIndexUtils.clear(S.current)})),c.useImperativeHandle(t,(function(){return{props:u,show:A,hide:_,getElement:function(){return S.current}}}));var G,K,Q=(G=y.getOtherProps(u),K=i.classNames("p-contextmenu p-component",u.className,{"p-input-filled":"filled"===s.default.inputStyle,"p-ripple-disabled":!1===s.default.ripple}),c.createElement(n.CSSTransition,{nodeRef:S,classNames:"p-contextmenu",in:a,timeout:{enter:250,exit:0},options:u.transitionOptions,unmountOnExit:!0,onEnter:W,onEntered:z,onExit:X,onExited:J},c.createElement("div",m({ref:S,id:u.id,className:K,style:u.style},G,{onClick:Z,onMouseEnter:q}),c.createElement(v,{menuProps:u,model:u.model,root:!0,resetMenu:x,onLeafClick:Y,isMobileMode:I}))));return c.createElement(o.Portal,{element:Q,appendTo:u.appendTo})})));x.displayName="ContextMenu",exports.ContextMenu=x;
@@ -35,6 +35,15 @@ export interface ContextMenuProps extends Omit<React.DetailedHTMLProps<React.HTM
35
35
  * @defaultValue 0
36
36
  */
37
37
  baseZIndex?: number | undefined;
38
+ /**
39
+ * The breakpoint to define the maximum width boundary when responsiveness is enabled.
40
+ */
41
+ breakpoint?: string | undefined;
42
+ /**
43
+ * Maximum height of the options panel on responsive mode.
44
+ * @defaultValue 400px
45
+ */
46
+ scrollHeight?: string | undefined;
38
47
  /**
39
48
  * DOM element instance where the overlay panel should be mounted. Valid values are any DOM Element and 'self'. The self value is used to render a component where it is located.
40
49
  * @defaultValue document.body
@@ -1,9 +1,9 @@
1
1
  import * as React from 'react';
2
2
  import PrimeReact from 'primereact/api';
3
3
  import { CSSTransition } from 'primereact/csstransition';
4
- import { useUpdateEffect, useEventListener, useResizeListener, useMountEffect, useUnmountEffect } from 'primereact/hooks';
4
+ import { useUpdateEffect, useMatchMedia, useEventListener, useResizeListener, useMountEffect, useUnmountEffect } from 'primereact/hooks';
5
5
  import { Portal } from 'primereact/portal';
6
- import { ObjectUtils, classNames, DomHandler, IconUtils, ZIndexUtils } from 'primereact/utils';
6
+ import { ObjectUtils, classNames, DomHandler, IconUtils, UniqueComponentId, ZIndexUtils } from 'primereact/utils';
7
7
  import { Ripple } from 'primereact/ripple';
8
8
 
9
9
  function _extends() {
@@ -86,6 +86,8 @@ var ContextMenuBase = {
86
86
  global: false,
87
87
  autoZIndex: true,
88
88
  baseZIndex: 0,
89
+ breakpoint: undefined,
90
+ scrollHeight: '400px',
89
91
  appendTo: null,
90
92
  transitionOptions: null,
91
93
  onShow: null,
@@ -111,7 +113,7 @@ var ContextMenuSub = /*#__PURE__*/React.memo(function (props) {
111
113
  setActiveItemState(null);
112
114
  }
113
115
  var onItemMouseEnter = function onItemMouseEnter(event, item) {
114
- if (item.disabled) {
116
+ if (item.disabled || props.isMobileMode) {
115
117
  event.preventDefault();
116
118
  return;
117
119
  }
@@ -131,26 +133,31 @@ var ContextMenuSub = /*#__PURE__*/React.memo(function (props) {
131
133
  item: item
132
134
  });
133
135
  }
136
+ if (props.isMobileMode && item.items) {
137
+ if (activeItemState && item === activeItemState) setActiveItemState(null);else setActiveItemState(item);
138
+ }
134
139
  if (!item.items) {
135
140
  props.onLeafClick(event);
136
141
  }
137
142
  };
138
143
  var position = function position() {
139
- var parentItem = submenuRef.current.parentElement;
140
- var containerOffset = DomHandler.getOffset(parentItem);
141
- var viewport = DomHandler.getViewport();
142
- var sublistWidth = submenuRef.current.offsetParent ? submenuRef.current.offsetWidth : DomHandler.getHiddenElementOuterWidth(submenuRef.current);
143
- var itemOuterWidth = DomHandler.getOuterWidth(parentItem.children[0]);
144
- var top = parseInt(containerOffset.top, 10) + submenuRef.current.offsetHeight - DomHandler.getWindowScrollTop();
145
- if (top > viewport.height) {
146
- submenuRef.current.style.top = viewport.height - top + 'px';
147
- } else {
148
- submenuRef.current.style.top = '0px';
149
- }
150
- if (parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - DomHandler.calculateScrollbarWidth()) {
151
- submenuRef.current.style.left = -1 * sublistWidth + 'px';
152
- } else {
153
- submenuRef.current.style.left = itemOuterWidth + 'px';
144
+ if (!props.isMobileMode) {
145
+ var parentItem = submenuRef.current.parentElement;
146
+ var containerOffset = DomHandler.getOffset(parentItem);
147
+ var viewport = DomHandler.getViewport();
148
+ var sublistWidth = submenuRef.current.offsetParent ? submenuRef.current.offsetWidth : DomHandler.getHiddenElementOuterWidth(submenuRef.current);
149
+ var itemOuterWidth = DomHandler.getOuterWidth(parentItem.children[0]);
150
+ var top = parseInt(containerOffset.top, 10) + submenuRef.current.offsetHeight - DomHandler.getWindowScrollTop();
151
+ if (top > viewport.height) {
152
+ submenuRef.current.style.top = viewport.height - top + 'px';
153
+ } else {
154
+ submenuRef.current.style.top = '0px';
155
+ }
156
+ if (parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - DomHandler.calculateScrollbarWidth()) {
157
+ submenuRef.current.style.left = -1 * sublistWidth + 'px';
158
+ } else {
159
+ submenuRef.current.style.left = itemOuterWidth + 'px';
160
+ }
154
161
  }
155
162
  };
156
163
  var onEnter = function onEnter() {
@@ -172,7 +179,8 @@ var ContextMenuSub = /*#__PURE__*/React.memo(function (props) {
172
179
  menuProps: props.menuProps,
173
180
  model: item.items,
174
181
  resetMenu: item !== activeItemState,
175
- onLeafClick: props.onLeafClick
182
+ onLeafClick: props.onLeafClick,
183
+ isMobileMode: props.isMobileMode
176
184
  });
177
185
  }
178
186
  return null;
@@ -281,8 +289,14 @@ var ContextMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(functio
281
289
  _React$useState6 = _slicedToArray(_React$useState5, 2),
282
290
  resetMenuState = _React$useState6[0],
283
291
  setResetMenuState = _React$useState6[1];
292
+ var _React$useState7 = React.useState(null),
293
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
294
+ attributeSelectorState = _React$useState8[0],
295
+ setAttributeSelectorState = _React$useState8[1];
284
296
  var menuRef = React.useRef(null);
285
297
  var currentEvent = React.useRef(null);
298
+ var styleElementRef = React.useRef(null);
299
+ var isMobileMode = useMatchMedia("screen and (max-width: ".concat(props.breakpoint, ")"), !!props.breakpoint);
286
300
  var _useEventListener = useEventListener({
287
301
  type: 'click',
288
302
  listener: function listener(event) {
@@ -313,6 +327,17 @@ var ContextMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(functio
313
327
  _useResizeListener2 = _slicedToArray(_useResizeListener, 2),
314
328
  bindDocumentResizeListener = _useResizeListener2[0],
315
329
  unbindDocumentResizeListener = _useResizeListener2[1];
330
+ var createStyle = function createStyle() {
331
+ if (!styleElementRef.current) {
332
+ styleElementRef.current = DomHandler.createInlineStyle(PrimeReact.nonce);
333
+ var selector = "".concat(attributeSelectorState);
334
+ var innerHTML = "\n@media screen and (max-width: ".concat(props.breakpoint, ") {\n .p-contextmenu[").concat(selector, "] > ul {\n max-height: ").concat(props.scrollHeight, ";\n overflow: ").concat(props.scrollHeight ? 'auto' : '', ";\n }\n\n .p-contextmenu[").concat(selector, "] .p-submenu-list {\n position: relative;\n }\n\n .p-contextmenu[").concat(selector, "] .p-menuitem-active > .p-submenu-list {\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n padding: 0 0 0 calc(var(--inline-spacing) * 2); /* @todo */\n }\n\n .p-contextmenu[").concat(selector, "] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-contextmenu[").concat(selector, "] .p-submenu-icon:before {\n content: \"\\e930\";\n }\n}\n");
335
+ styleElementRef.current.innerHTML = innerHTML;
336
+ }
337
+ };
338
+ var destroyStyle = function destroyStyle() {
339
+ styleElementRef.current = DomHandler.removeInlineStyle(styleElementRef.current);
340
+ };
316
341
  var onMenuClick = function onMenuClick() {
317
342
  setResetMenuState(false);
318
343
  };
@@ -341,6 +366,10 @@ var ContextMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(functio
341
366
  ZIndexUtils.set('menu', menuRef.current, PrimeReact.autoZIndex, props.baseZIndex || PrimeReact.zIndex['menu']);
342
367
  }
343
368
  position(currentEvent.current);
369
+ if (attributeSelectorState && props.breakpoint) {
370
+ menuRef.current.setAttribute(attributeSelectorState, '');
371
+ createStyle();
372
+ }
344
373
  };
345
374
  var onEntered = function onEntered() {
346
375
  bindDocumentListeners();
@@ -351,6 +380,7 @@ var ContextMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(functio
351
380
  };
352
381
  var onExited = function onExited() {
353
382
  ZIndexUtils.clear(menuRef.current);
383
+ destroyStyle();
354
384
  };
355
385
  var position = function position(event) {
356
386
  if (event) {
@@ -403,7 +433,19 @@ var ContextMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(functio
403
433
  if (props.global) {
404
434
  bindDocumentContextMenuListener();
405
435
  }
436
+ if (props.breakpoint) {
437
+ !attributeSelectorState && setAttributeSelectorState(UniqueComponentId());
438
+ }
406
439
  });
440
+ useUpdateEffect(function () {
441
+ if (attributeSelectorState && menuRef.current) {
442
+ menuRef.current.setAttribute(attributeSelectorState, '');
443
+ createStyle();
444
+ }
445
+ return function () {
446
+ destroyStyle();
447
+ };
448
+ }, [attributeSelectorState, props.breakpoint]);
407
449
  useUpdateEffect(function () {
408
450
  if (visibleState) {
409
451
  setVisibleState(false);
@@ -459,7 +501,8 @@ var ContextMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(functio
459
501
  model: props.model,
460
502
  root: true,
461
503
  resetMenu: resetMenuState,
462
- onLeafClick: onLeafClick
504
+ onLeafClick: onLeafClick,
505
+ isMobileMode: isMobileMode
463
506
  })));
464
507
  };
465
508
  var element = createContextMenu();
@@ -1 +1 @@
1
- import*as e from"react";import t from"primereact/api";import{CSSTransition as n}from"primereact/csstransition";import{useUpdateEffect as r,useEventListener as o,useResizeListener as l,useMountEffect as u,useUnmountEffect as i}from"primereact/hooks";import{Portal as a}from"primereact/portal";import{ObjectUtils as c,classNames as s,DomHandler as m,IconUtils as p,ZIndexUtils as f}from"primereact/utils";import{Ripple as d}from"primereact/ripple";function g(){return g=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},g.apply(this,arguments)}function b(e){if(Array.isArray(e))return e}function h(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,l,u,i=[],a=!0,c=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;a=!1}else for(;!(a=(r=l.call(n)).done)&&(i.push(r.value),i.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{if(!a&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(c)throw o}}return i}}function y(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 y(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)?y(e,t):void 0}}function E(){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 x(e,t){return b(e)||h(e,t)||v(e,t)||E()}var N={defaultProps:{__TYPE:"ContextMenu",id:null,model:null,style:null,className:null,global:!1,autoZIndex:!0,baseZIndex:0,appendTo:null,transitionOptions:null,onShow:null,onHide:null,children:void 0},getProps:function(e){return c.getMergedProps(e,N.defaultProps)},getOtherProps:function(e){return c.getDiffProps(e,N.defaultProps)}},P=e.memo((function(t){var o=x(e.useState(null),2),l=o[0],u=o[1],i=e.useRef(null),a=t.root||!t.resetMenu;!0===t.resetMenu&&null!==l&&u(null);var f=function(e,t){t.disabled?e.preventDefault():u(t)},g=function(e,n){n.disabled?e.preventDefault():(n.url||e.preventDefault(),n.command&&n.command({originalEvent:e,item:n}),n.items||t.onLeafClick(e))},b=function(){var e=i.current.parentElement,t=m.getOffset(e),n=m.getViewport(),r=i.current.offsetParent?i.current.offsetWidth:m.getHiddenElementOuterWidth(i.current),o=m.getOuterWidth(e.children[0]),l=parseInt(t.top,10)+i.current.offsetHeight-m.getWindowScrollTop();i.current.style.top=l>n.height?n.height-l+"px":"0px",i.current.style.left=parseInt(t.left,10)+o+r>n.width-m.calculateScrollbarWidth()?-1*r+"px":o+"px"};r((function(){a&&b()}));var h=function(t){return e.createElement("li",{key:"separator_"+t,className:"p-menu-separator",role:"separator"})},y=function(n){return n.items?e.createElement(P,{menuProps:t.menuProps,model:n.items,resetMenu:n!==l,onLeafClick:t.onLeafClick}):null},v=function(n,r){if(!1===n.visible)return null;var o=l===n,u=n.label+"_"+r,i=s("p-menuitem",{"p-menuitem-active":o},n.className),a=s("p-menuitem-link",{"p-disabled":n.disabled}),m=s("p-menuitem-icon",n.icon),b="p-submenu-icon pi pi-angle-right",h=p.getJSXIcon(n.icon,{className:"p-menuitem-icon"},{props:t.menuProps}),v=n.label&&e.createElement("span",{className:"p-menuitem-text"},n.label),E=n.items&&e.createElement("span",{className:b}),x=y(n),N=e.createElement("a",{href:n.url||"#",className:a,target:n.target,onClick:function(e){return g(e,n)},role:"menuitem","aria-haspopup":null!=n.items,"aria-disabled":n.disabled},h,v,E,e.createElement(d,null));n.template&&(N=c.getJSXElement(n.template,n,{onClick:function(e){return g(e,n)},className:a,labelClassName:"p-menuitem-text",iconClassName:m,submenuIconClassName:b,element:N,props:t,active:o}));return e.createElement("li",{key:u,role:"none",id:n.id,className:i,style:n.style,onMouseEnter:function(e){return f(e,n)}},N,x)},E=function(e,t){return e.separator?h(t):v(e,t)},N=s({"p-submenu-list":!t.root}),O=t.model?t.model.map(E):null;return e.createElement(n,{nodeRef:i,classNames:"p-contextmenusub",in:a,timeout:{enter:0,exit:0},unmountOnExit:!0,onEnter:function(){b()}},e.createElement("ul",{ref:i,className:N},O))}));P.displayName="ContextMenuSub";var O=e.memo(e.forwardRef((function(c,p){var d=N.getProps(c),b=x(e.useState(!1),2),h=b[0],y=b[1],v=x(e.useState(!1),2),E=v[0],O=v[1],S=x(e.useState(!1),2),w=S[0],C=S[1],I=e.useRef(null),k=e.useRef(null),M=x(o({type:"click",listener:function(e){$(e)&&2!==e.button&&(_(e),C(!0))}}),2),H=M[0],T=M[1],j=x(o({type:"contextmenu",listener:function(e){Z(e)}}),1)[0],L=x(l({listener:function(e){h&&!m.isTouchDevice()&&_(e)}}),2),W=L[0],A=L[1],D=function(){C(!1)},R=function(){C(!1)},Z=function(e){e.stopPropagation(),e.preventDefault(),k.current=e,h?O(!0):(y(!0),d.onShow&&d.onShow(k.current))},_=function(e){k.current=e,y(!1),O(!1),d.onHide&&d.onHide(k.current)},X=function(){d.autoZIndex&&f.set("menu",I.current,t.autoZIndex,d.baseZIndex||t.zIndex.menu),z(k.current)},J=function(){q()},V=function(){B(),f.clear(I.current)},Y=function(){f.clear(I.current)},z=function(e){if(e){var t=e.pageX+1,n=e.pageY+1,r=I.current.offsetParent?I.current.offsetWidth:m.getHiddenElementOuterWidth(I.current),o=I.current.offsetParent?I.current.offsetHeight:m.getHiddenElementOuterHeight(I.current),l=m.getViewport();t+r-document.body.scrollLeft>l.width&&(t-=r),n+o-document.body.scrollTop>l.height&&(n-=o),t<document.body.scrollLeft&&(t=document.body.scrollLeft),n<document.body.scrollTop&&(n=document.body.scrollTop),I.current.style.left=t+"px",I.current.style.top=n+"px"}},U=function(e){C(!0),_(e),e.stopPropagation()},$=function(e){return I&&I.current&&!(I.current.isSameNode(e.target)||I.current.contains(e.target))},q=function(){W(),H()},B=function(){A(),T()};u((function(){d.global&&j()})),r((function(){h?(y(!1),O(!1),C(!0)):E||h||!w||Z(k.current)}),[E]),i((function(){f.clear(I.current)})),e.useImperativeHandle(p,(function(){return{props:d,show:Z,hide:_,getElement:function(){return I.current}}}));var F,G,K=(F=N.getOtherProps(d),G=s("p-contextmenu p-component",d.className,{"p-input-filled":"filled"===t.inputStyle,"p-ripple-disabled":!1===t.ripple}),e.createElement(n,{nodeRef:I,classNames:"p-contextmenu",in:h,timeout:{enter:250,exit:0},options:d.transitionOptions,unmountOnExit:!0,onEnter:X,onEntered:J,onExit:V,onExited:Y},e.createElement("div",g({ref:I,id:d.id,className:G,style:d.style},F,{onClick:D,onMouseEnter:R}),e.createElement(P,{menuProps:d,model:d.model,root:!0,resetMenu:w,onLeafClick:U}))));return e.createElement(a,{element:K,appendTo:d.appendTo})})));O.displayName="ContextMenu";export{O as ContextMenu};
1
+ import*as e from"react";import t from"primereact/api";import{CSSTransition as n}from"primereact/csstransition";import{useUpdateEffect as r,useMatchMedia as o,useEventListener as i,useResizeListener as u,useMountEffect as l,useUnmountEffect as a}from"primereact/hooks";import{Portal as c}from"primereact/portal";import{ObjectUtils as s,classNames as m,DomHandler as p,IconUtils as f,UniqueComponentId as d,ZIndexUtils as b}from"primereact/utils";import{Ripple as g}from"primereact/ripple";function h(){return h=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},h.apply(this,arguments)}function y(e){if(Array.isArray(e))return e}function v(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,u,l=[],a=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;a=!1}else for(;!(a=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{if(!a&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(c)throw o}}return l}}function x(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 E(e,t){if(e){if("string"==typeof e)return x(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)?x(e,t):void 0}}function M(){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 S(e,t){return y(e)||v(e,t)||E(e,t)||M()}var k={defaultProps:{__TYPE:"ContextMenu",id:null,model:null,style:null,className:null,global:!1,autoZIndex:!0,baseZIndex:0,breakpoint:void 0,scrollHeight:"400px",appendTo:null,transitionOptions:null,onShow:null,onHide:null,children:void 0},getProps:function(e){return s.getMergedProps(e,k.defaultProps)},getOtherProps:function(e){return s.getDiffProps(e,k.defaultProps)}},N=e.memo((function(t){var o=S(e.useState(null),2),i=o[0],u=o[1],l=e.useRef(null),a=t.root||!t.resetMenu;!0===t.resetMenu&&null!==i&&u(null);var c=function(e,n){n.disabled||t.isMobileMode?e.preventDefault():u(n)},d=function(e,n){n.disabled?e.preventDefault():(n.url||e.preventDefault(),n.command&&n.command({originalEvent:e,item:n}),t.isMobileMode&&n.items&&u(i&&n===i?null:n),n.items||t.onLeafClick(e))},b=function(){if(!t.isMobileMode){var e=l.current.parentElement,n=p.getOffset(e),r=p.getViewport(),o=l.current.offsetParent?l.current.offsetWidth:p.getHiddenElementOuterWidth(l.current),i=p.getOuterWidth(e.children[0]),u=parseInt(n.top,10)+l.current.offsetHeight-p.getWindowScrollTop();l.current.style.top=u>r.height?r.height-u+"px":"0px",l.current.style.left=parseInt(n.left,10)+i+o>r.width-p.calculateScrollbarWidth()?-1*o+"px":i+"px"}};r((function(){a&&b()}));var h=function(t){return e.createElement("li",{key:"separator_"+t,className:"p-menu-separator",role:"separator"})},y=function(n){return n.items?e.createElement(N,{menuProps:t.menuProps,model:n.items,resetMenu:n!==i,onLeafClick:t.onLeafClick,isMobileMode:t.isMobileMode}):null},v=function(n,r){if(!1===n.visible)return null;var o=i===n,u=n.label+"_"+r,l=m("p-menuitem",{"p-menuitem-active":o},n.className),a=m("p-menuitem-link",{"p-disabled":n.disabled}),p=m("p-menuitem-icon",n.icon),b="p-submenu-icon pi pi-angle-right",h=f.getJSXIcon(n.icon,{className:"p-menuitem-icon"},{props:t.menuProps}),v=n.label&&e.createElement("span",{className:"p-menuitem-text"},n.label),x=n.items&&e.createElement("span",{className:b}),E=y(n),M=e.createElement("a",{href:n.url||"#",className:a,target:n.target,onClick:function(e){return d(e,n)},role:"menuitem","aria-haspopup":null!=n.items,"aria-disabled":n.disabled},h,v,x,e.createElement(g,null));n.template&&(M=s.getJSXElement(n.template,n,{onClick:function(e){return d(e,n)},className:a,labelClassName:"p-menuitem-text",iconClassName:p,submenuIconClassName:b,element:M,props:t,active:o}));return e.createElement("li",{key:u,role:"none",id:n.id,className:l,style:n.style,onMouseEnter:function(e){return c(e,n)}},M,E)},x=function(e,t){return e.separator?h(t):v(e,t)},E=m({"p-submenu-list":!t.root}),M=t.model?t.model.map(x):null;return e.createElement(n,{nodeRef:l,classNames:"p-contextmenusub",in:a,timeout:{enter:0,exit:0},unmountOnExit:!0,onEnter:function(){b()}},e.createElement("ul",{ref:l,className:E},M))}));N.displayName="ContextMenuSub";var P=e.memo(e.forwardRef((function(s,f){var g=k.getProps(s),y=S(e.useState(!1),2),v=y[0],x=y[1],E=S(e.useState(!1),2),M=E[0],P=E[1],w=S(e.useState(!1),2),O=w[0],I=w[1],C=S(e.useState(null),2),H=C[0],T=C[1],j=e.useRef(null),A=e.useRef(null),L=e.useRef(null),R=o("screen and (max-width: ".concat(g.breakpoint,")"),!!g.breakpoint),W=S(i({type:"click",listener:function(e){ne(e)&&2!==e.button&&(B(e),I(!0))}}),2),D=W[0],Z=W[1],_=S(i({type:"contextmenu",listener:function(e){q(e)}}),1)[0],X=S(u({listener:function(e){v&&!p.isTouchDevice()&&B(e)}}),2),J=X[0],V=X[1],Y=function(){if(!L.current){L.current=p.createInlineStyle(t.nonce);var e="".concat(H),n="\n@media screen and (max-width: ".concat(g.breakpoint,") {\n .p-contextmenu[").concat(e,"] > ul {\n max-height: ").concat(g.scrollHeight,";\n overflow: ").concat(g.scrollHeight?"auto":"",";\n }\n\n .p-contextmenu[").concat(e,"] .p-submenu-list {\n position: relative;\n }\n\n .p-contextmenu[").concat(e,"] .p-menuitem-active > .p-submenu-list {\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n padding: 0 0 0 calc(var(--inline-spacing) * 2); /* @todo */\n }\n\n .p-contextmenu[").concat(e,"] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-contextmenu[").concat(e,'] .p-submenu-icon:before {\n content: "\\e930";\n }\n}\n');L.current.innerHTML=n}},z=function(){L.current=p.removeInlineStyle(L.current)},U=function(){I(!1)},$=function(){I(!1)},q=function(e){e.stopPropagation(),e.preventDefault(),A.current=e,v?P(!0):(x(!0),g.onShow&&g.onShow(A.current))},B=function(e){A.current=e,x(!1),P(!1),g.onHide&&g.onHide(A.current)},F=function(){g.autoZIndex&&b.set("menu",j.current,t.autoZIndex,g.baseZIndex||t.zIndex.menu),ee(A.current),H&&g.breakpoint&&(j.current.setAttribute(H,""),Y())},G=function(){re()},K=function(){oe(),b.clear(j.current)},Q=function(){b.clear(j.current),z()},ee=function(e){if(e){var t=e.pageX+1,n=e.pageY+1,r=j.current.offsetParent?j.current.offsetWidth:p.getHiddenElementOuterWidth(j.current),o=j.current.offsetParent?j.current.offsetHeight:p.getHiddenElementOuterHeight(j.current),i=p.getViewport();t+r-document.body.scrollLeft>i.width&&(t-=r),n+o-document.body.scrollTop>i.height&&(n-=o),t<document.body.scrollLeft&&(t=document.body.scrollLeft),n<document.body.scrollTop&&(n=document.body.scrollTop),j.current.style.left=t+"px",j.current.style.top=n+"px"}},te=function(e){I(!0),B(e),e.stopPropagation()},ne=function(e){return j&&j.current&&!(j.current.isSameNode(e.target)||j.current.contains(e.target))},re=function(){J(),D()},oe=function(){V(),Z()};l((function(){g.global&&_(),g.breakpoint&&!H&&T(d())})),r((function(){return H&&j.current&&(j.current.setAttribute(H,""),Y()),function(){z()}}),[H,g.breakpoint]),r((function(){v?(x(!1),P(!1),I(!0)):M||v||!O||q(A.current)}),[M]),a((function(){b.clear(j.current)})),e.useImperativeHandle(f,(function(){return{props:g,show:q,hide:B,getElement:function(){return j.current}}}));var ie,ue,le=(ie=k.getOtherProps(g),ue=m("p-contextmenu p-component",g.className,{"p-input-filled":"filled"===t.inputStyle,"p-ripple-disabled":!1===t.ripple}),e.createElement(n,{nodeRef:j,classNames:"p-contextmenu",in:v,timeout:{enter:250,exit:0},options:g.transitionOptions,unmountOnExit:!0,onEnter:F,onEntered:G,onExit:K,onExited:Q},e.createElement("div",h({ref:j,id:g.id,className:ue,style:g.style},ie,{onClick:U,onMouseEnter:$}),e.createElement(N,{menuProps:g,model:g.model,root:!0,resetMenu:O,onLeafClick:te,isMobileMode:R}))));return e.createElement(c,{element:le,appendTo:g.appendTo})})));P.displayName="ContextMenu";export{P as ContextMenu};
@@ -105,6 +105,8 @@ this.primereact.contextmenu = (function (exports, React, PrimeReact, csstransiti
105
105
  global: false,
106
106
  autoZIndex: true,
107
107
  baseZIndex: 0,
108
+ breakpoint: undefined,
109
+ scrollHeight: '400px',
108
110
  appendTo: null,
109
111
  transitionOptions: null,
110
112
  onShow: null,
@@ -130,7 +132,7 @@ this.primereact.contextmenu = (function (exports, React, PrimeReact, csstransiti
130
132
  setActiveItemState(null);
131
133
  }
132
134
  var onItemMouseEnter = function onItemMouseEnter(event, item) {
133
- if (item.disabled) {
135
+ if (item.disabled || props.isMobileMode) {
134
136
  event.preventDefault();
135
137
  return;
136
138
  }
@@ -150,26 +152,31 @@ this.primereact.contextmenu = (function (exports, React, PrimeReact, csstransiti
150
152
  item: item
151
153
  });
152
154
  }
155
+ if (props.isMobileMode && item.items) {
156
+ if (activeItemState && item === activeItemState) setActiveItemState(null);else setActiveItemState(item);
157
+ }
153
158
  if (!item.items) {
154
159
  props.onLeafClick(event);
155
160
  }
156
161
  };
157
162
  var position = function position() {
158
- var parentItem = submenuRef.current.parentElement;
159
- var containerOffset = utils.DomHandler.getOffset(parentItem);
160
- var viewport = utils.DomHandler.getViewport();
161
- var sublistWidth = submenuRef.current.offsetParent ? submenuRef.current.offsetWidth : utils.DomHandler.getHiddenElementOuterWidth(submenuRef.current);
162
- var itemOuterWidth = utils.DomHandler.getOuterWidth(parentItem.children[0]);
163
- var top = parseInt(containerOffset.top, 10) + submenuRef.current.offsetHeight - utils.DomHandler.getWindowScrollTop();
164
- if (top > viewport.height) {
165
- submenuRef.current.style.top = viewport.height - top + 'px';
166
- } else {
167
- submenuRef.current.style.top = '0px';
168
- }
169
- if (parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - utils.DomHandler.calculateScrollbarWidth()) {
170
- submenuRef.current.style.left = -1 * sublistWidth + 'px';
171
- } else {
172
- submenuRef.current.style.left = itemOuterWidth + 'px';
163
+ if (!props.isMobileMode) {
164
+ var parentItem = submenuRef.current.parentElement;
165
+ var containerOffset = utils.DomHandler.getOffset(parentItem);
166
+ var viewport = utils.DomHandler.getViewport();
167
+ var sublistWidth = submenuRef.current.offsetParent ? submenuRef.current.offsetWidth : utils.DomHandler.getHiddenElementOuterWidth(submenuRef.current);
168
+ var itemOuterWidth = utils.DomHandler.getOuterWidth(parentItem.children[0]);
169
+ var top = parseInt(containerOffset.top, 10) + submenuRef.current.offsetHeight - utils.DomHandler.getWindowScrollTop();
170
+ if (top > viewport.height) {
171
+ submenuRef.current.style.top = viewport.height - top + 'px';
172
+ } else {
173
+ submenuRef.current.style.top = '0px';
174
+ }
175
+ if (parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - utils.DomHandler.calculateScrollbarWidth()) {
176
+ submenuRef.current.style.left = -1 * sublistWidth + 'px';
177
+ } else {
178
+ submenuRef.current.style.left = itemOuterWidth + 'px';
179
+ }
173
180
  }
174
181
  };
175
182
  var onEnter = function onEnter() {
@@ -191,7 +198,8 @@ this.primereact.contextmenu = (function (exports, React, PrimeReact, csstransiti
191
198
  menuProps: props.menuProps,
192
199
  model: item.items,
193
200
  resetMenu: item !== activeItemState,
194
- onLeafClick: props.onLeafClick
201
+ onLeafClick: props.onLeafClick,
202
+ isMobileMode: props.isMobileMode
195
203
  });
196
204
  }
197
205
  return null;
@@ -300,8 +308,14 @@ this.primereact.contextmenu = (function (exports, React, PrimeReact, csstransiti
300
308
  _React$useState6 = _slicedToArray(_React$useState5, 2),
301
309
  resetMenuState = _React$useState6[0],
302
310
  setResetMenuState = _React$useState6[1];
311
+ var _React$useState7 = React__namespace.useState(null),
312
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
313
+ attributeSelectorState = _React$useState8[0],
314
+ setAttributeSelectorState = _React$useState8[1];
303
315
  var menuRef = React__namespace.useRef(null);
304
316
  var currentEvent = React__namespace.useRef(null);
317
+ var styleElementRef = React__namespace.useRef(null);
318
+ var isMobileMode = hooks.useMatchMedia("screen and (max-width: ".concat(props.breakpoint, ")"), !!props.breakpoint);
305
319
  var _useEventListener = hooks.useEventListener({
306
320
  type: 'click',
307
321
  listener: function listener(event) {
@@ -332,6 +346,17 @@ this.primereact.contextmenu = (function (exports, React, PrimeReact, csstransiti
332
346
  _useResizeListener2 = _slicedToArray(_useResizeListener, 2),
333
347
  bindDocumentResizeListener = _useResizeListener2[0],
334
348
  unbindDocumentResizeListener = _useResizeListener2[1];
349
+ var createStyle = function createStyle() {
350
+ if (!styleElementRef.current) {
351
+ styleElementRef.current = utils.DomHandler.createInlineStyle(PrimeReact__default["default"].nonce);
352
+ var selector = "".concat(attributeSelectorState);
353
+ var innerHTML = "\n@media screen and (max-width: ".concat(props.breakpoint, ") {\n .p-contextmenu[").concat(selector, "] > ul {\n max-height: ").concat(props.scrollHeight, ";\n overflow: ").concat(props.scrollHeight ? 'auto' : '', ";\n }\n\n .p-contextmenu[").concat(selector, "] .p-submenu-list {\n position: relative;\n }\n\n .p-contextmenu[").concat(selector, "] .p-menuitem-active > .p-submenu-list {\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n padding: 0 0 0 calc(var(--inline-spacing) * 2); /* @todo */\n }\n\n .p-contextmenu[").concat(selector, "] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-contextmenu[").concat(selector, "] .p-submenu-icon:before {\n content: \"\\e930\";\n }\n}\n");
354
+ styleElementRef.current.innerHTML = innerHTML;
355
+ }
356
+ };
357
+ var destroyStyle = function destroyStyle() {
358
+ styleElementRef.current = utils.DomHandler.removeInlineStyle(styleElementRef.current);
359
+ };
335
360
  var onMenuClick = function onMenuClick() {
336
361
  setResetMenuState(false);
337
362
  };
@@ -360,6 +385,10 @@ this.primereact.contextmenu = (function (exports, React, PrimeReact, csstransiti
360
385
  utils.ZIndexUtils.set('menu', menuRef.current, PrimeReact__default["default"].autoZIndex, props.baseZIndex || PrimeReact__default["default"].zIndex['menu']);
361
386
  }
362
387
  position(currentEvent.current);
388
+ if (attributeSelectorState && props.breakpoint) {
389
+ menuRef.current.setAttribute(attributeSelectorState, '');
390
+ createStyle();
391
+ }
363
392
  };
364
393
  var onEntered = function onEntered() {
365
394
  bindDocumentListeners();
@@ -370,6 +399,7 @@ this.primereact.contextmenu = (function (exports, React, PrimeReact, csstransiti
370
399
  };
371
400
  var onExited = function onExited() {
372
401
  utils.ZIndexUtils.clear(menuRef.current);
402
+ destroyStyle();
373
403
  };
374
404
  var position = function position(event) {
375
405
  if (event) {
@@ -422,7 +452,19 @@ this.primereact.contextmenu = (function (exports, React, PrimeReact, csstransiti
422
452
  if (props.global) {
423
453
  bindDocumentContextMenuListener();
424
454
  }
455
+ if (props.breakpoint) {
456
+ !attributeSelectorState && setAttributeSelectorState(utils.UniqueComponentId());
457
+ }
425
458
  });
459
+ hooks.useUpdateEffect(function () {
460
+ if (attributeSelectorState && menuRef.current) {
461
+ menuRef.current.setAttribute(attributeSelectorState, '');
462
+ createStyle();
463
+ }
464
+ return function () {
465
+ destroyStyle();
466
+ };
467
+ }, [attributeSelectorState, props.breakpoint]);
426
468
  hooks.useUpdateEffect(function () {
427
469
  if (visibleState) {
428
470
  setVisibleState(false);
@@ -478,7 +520,8 @@ this.primereact.contextmenu = (function (exports, React, PrimeReact, csstransiti
478
520
  model: props.model,
479
521
  root: true,
480
522
  resetMenu: resetMenuState,
481
- onLeafClick: onLeafClick
523
+ onLeafClick: onLeafClick,
524
+ isMobileMode: isMobileMode
482
525
  })));
483
526
  };
484
527
  var element = createContextMenu();