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.
- package/api/api.cjs.js +16 -0
- package/api/api.cjs.min.js +1 -1
- package/api/api.d.ts +2 -2
- package/api/api.esm.js +16 -0
- package/api/api.esm.min.js +1 -1
- package/api/api.js +16 -0
- package/api/api.min.js +1 -1
- package/autocomplete/autocomplete.cjs.js +1 -0
- package/autocomplete/autocomplete.cjs.min.js +1 -1
- package/autocomplete/autocomplete.esm.js +1 -0
- package/autocomplete/autocomplete.esm.min.js +1 -1
- package/autocomplete/autocomplete.js +1 -0
- package/autocomplete/autocomplete.min.js +1 -1
- package/avatar/avatar.cjs.js +2 -2
- package/avatar/avatar.cjs.min.js +1 -1
- package/avatar/avatar.esm.js +2 -2
- package/avatar/avatar.esm.min.js +1 -1
- package/avatar/avatar.js +2 -2
- package/avatar/avatar.min.js +1 -1
- package/button/button.cjs.js +6 -1
- package/button/button.cjs.min.js +1 -1
- package/button/button.d.ts +2 -2
- package/button/button.esm.js +6 -1
- package/button/button.esm.min.js +1 -1
- package/button/button.js +6 -1
- package/button/button.min.js +1 -1
- package/calendar/calendar.cjs.js +2 -2
- package/calendar/calendar.cjs.min.js +1 -1
- package/calendar/calendar.esm.js +2 -2
- package/calendar/calendar.esm.min.js +1 -1
- package/calendar/calendar.js +2 -2
- package/calendar/calendar.min.js +1 -1
- package/confirmdialog/confirmdialog.cjs.min.js +1 -1
- package/confirmdialog/confirmdialog.esm.min.js +1 -1
- package/confirmdialog/confirmdialog.min.js +1 -1
- package/confirmpopup/confirmpopup.cjs.min.js +1 -1
- package/confirmpopup/confirmpopup.esm.min.js +1 -1
- package/confirmpopup/confirmpopup.min.js +1 -1
- package/contextmenu/contextmenu.cjs.js +61 -18
- package/contextmenu/contextmenu.cjs.min.js +1 -1
- package/contextmenu/contextmenu.d.ts +9 -0
- package/contextmenu/contextmenu.esm.js +63 -20
- package/contextmenu/contextmenu.esm.min.js +1 -1
- package/contextmenu/contextmenu.js +61 -18
- package/contextmenu/contextmenu.min.js +1 -1
- package/core/core.js +254 -129
- package/core/core.min.js +9 -9
- package/datatable/datatable.cjs.js +90 -82
- package/datatable/datatable.cjs.min.js +1 -1
- package/datatable/datatable.d.ts +2 -11
- package/datatable/datatable.esm.js +91 -83
- package/datatable/datatable.esm.min.js +1 -1
- package/datatable/datatable.js +90 -82
- package/datatable/datatable.min.css +1 -1
- package/datatable/datatable.min.js +1 -1
- package/dataview/dataview.d.ts +1 -1
- package/dropdown/dropdown.cjs.js +1 -0
- package/dropdown/dropdown.cjs.min.js +1 -1
- package/dropdown/dropdown.esm.js +1 -0
- package/dropdown/dropdown.esm.min.js +1 -1
- package/dropdown/dropdown.js +1 -0
- package/dropdown/dropdown.min.js +1 -1
- package/hooks/hooks.cjs.js +34 -2
- package/hooks/hooks.cjs.min.js +1 -1
- package/hooks/hooks.d.ts +17 -3
- package/hooks/hooks.esm.js +34 -3
- package/hooks/hooks.esm.min.js +1 -1
- package/hooks/hooks.js +34 -2
- package/hooks/hooks.min.js +1 -1
- package/inputnumber/inputnumber.cjs.min.js +1 -1
- package/inputnumber/inputnumber.esm.min.js +1 -1
- package/inputnumber/inputnumber.min.js +1 -1
- package/inputtext/inputtext.min.css +1 -1
- package/listbox/listbox.cjs.js +5 -4
- package/listbox/listbox.cjs.min.js +1 -1
- package/listbox/listbox.esm.js +5 -4
- package/listbox/listbox.esm.min.js +1 -1
- package/listbox/listbox.js +5 -4
- package/listbox/listbox.min.js +1 -1
- package/megamenu/megamenu.cjs.js +94 -6
- package/megamenu/megamenu.cjs.min.js +1 -1
- package/megamenu/megamenu.d.ts +9 -0
- package/megamenu/megamenu.esm.js +96 -8
- package/megamenu/megamenu.esm.min.js +1 -1
- package/megamenu/megamenu.js +94 -6
- package/megamenu/megamenu.min.css +1 -1
- package/megamenu/megamenu.min.js +1 -1
- package/multiselect/multiselect.cjs.js +3 -1
- package/multiselect/multiselect.cjs.min.js +1 -1
- package/multiselect/multiselect.d.ts +27 -1
- package/multiselect/multiselect.esm.js +3 -1
- package/multiselect/multiselect.esm.min.js +1 -1
- package/multiselect/multiselect.js +3 -1
- package/multiselect/multiselect.min.js +1 -1
- package/package.json +1 -1
- package/paginator/paginator.cjs.js +0 -8
- package/paginator/paginator.cjs.min.js +1 -1
- package/paginator/paginator.esm.js +0 -8
- package/paginator/paginator.esm.min.js +1 -1
- package/paginator/paginator.js +0 -8
- package/paginator/paginator.min.js +1 -1
- package/picklist/picklist.cjs.min.js +1 -1
- package/picklist/picklist.esm.min.js +1 -1
- package/picklist/picklist.min.js +1 -1
- package/primereact.all.cjs.js +609 -265
- package/primereact.all.cjs.min.js +1 -1
- package/primereact.all.esm.js +609 -266
- package/primereact.all.esm.min.js +1 -1
- package/primereact.all.js +609 -265
- package/primereact.all.min.js +1 -1
- package/resources/primereact.css +638 -688
- package/resources/primereact.min.css +1 -1
- package/resources/themes/arya-blue/theme.css +134 -6
- package/resources/themes/arya-green/theme.css +134 -6
- package/resources/themes/arya-orange/theme.css +134 -6
- package/resources/themes/arya-purple/theme.css +134 -6
- package/resources/themes/bootstrap4-dark-blue/theme.css +137 -8
- package/resources/themes/bootstrap4-dark-purple/theme.css +137 -8
- package/resources/themes/bootstrap4-light-blue/theme.css +137 -8
- package/resources/themes/bootstrap4-light-purple/theme.css +137 -8
- package/resources/themes/fluent-light/theme.css +133 -4
- package/resources/themes/lara-dark-blue/theme.css +135 -6
- package/resources/themes/lara-dark-indigo/theme.css +135 -6
- package/resources/themes/lara-dark-purple/theme.css +135 -6
- package/resources/themes/lara-dark-teal/theme.css +135 -6
- package/resources/themes/lara-light-blue/theme.css +137 -8
- package/resources/themes/lara-light-indigo/theme.css +137 -8
- package/resources/themes/lara-light-purple/theme.css +137 -8
- package/resources/themes/lara-light-teal/theme.css +137 -8
- package/resources/themes/luna-amber/theme.css +137 -8
- package/resources/themes/luna-blue/theme.css +137 -8
- package/resources/themes/luna-green/theme.css +137 -8
- package/resources/themes/luna-pink/theme.css +137 -8
- package/resources/themes/md-dark-deeppurple/theme.css +137 -8
- package/resources/themes/md-dark-indigo/theme.css +137 -8
- package/resources/themes/md-light-deeppurple/theme.css +137 -8
- package/resources/themes/md-light-indigo/theme.css +137 -8
- package/resources/themes/mdc-dark-deeppurple/theme.css +137 -8
- package/resources/themes/mdc-dark-indigo/theme.css +137 -8
- package/resources/themes/mdc-light-deeppurple/theme.css +137 -8
- package/resources/themes/mdc-light-indigo/theme.css +137 -8
- package/resources/themes/mira/theme.css +137 -8
- package/resources/themes/nano/theme.css +137 -8
- package/resources/themes/nova/theme.css +137 -8
- package/resources/themes/nova-accent/theme.css +137 -8
- package/resources/themes/nova-alt/theme.css +137 -8
- package/resources/themes/rhea/theme.css +137 -8
- package/resources/themes/saga-blue/theme.css +135 -6
- package/resources/themes/saga-green/theme.css +135 -6
- package/resources/themes/saga-orange/theme.css +135 -6
- package/resources/themes/saga-purple/theme.css +135 -6
- package/resources/themes/soho-dark/theme.css +137 -8
- package/resources/themes/soho-light/theme.css +137 -8
- package/resources/themes/tailwind-light/theme.css +137 -8
- package/resources/themes/vela-blue/theme.css +135 -6
- package/resources/themes/vela-green/theme.css +135 -6
- package/resources/themes/vela-orange/theme.css +135 -6
- package/resources/themes/vela-purple/theme.css +135 -6
- package/resources/themes/viva-dark/theme.css +137 -8
- package/resources/themes/viva-light/theme.css +137 -8
- package/splitbutton/splitbutton.cjs.js +57 -3
- package/splitbutton/splitbutton.cjs.min.js +1 -1
- package/splitbutton/splitbutton.d.ts +28 -0
- package/splitbutton/splitbutton.esm.js +57 -3
- package/splitbutton/splitbutton.esm.min.js +1 -1
- package/splitbutton/splitbutton.js +57 -3
- package/splitbutton/splitbutton.min.js +1 -1
- package/tieredmenu/tieredmenu.cjs.js +69 -9
- package/tieredmenu/tieredmenu.cjs.min.js +1 -1
- package/tieredmenu/tieredmenu.d.ts +9 -0
- package/tieredmenu/tieredmenu.esm.js +71 -11
- package/tieredmenu/tieredmenu.esm.min.js +1 -1
- package/tieredmenu/tieredmenu.js +69 -9
- package/tieredmenu/tieredmenu.min.js +1 -1
- package/toast/toast.cjs.js +16 -0
- package/toast/toast.cjs.min.js +1 -1
- package/toast/toast.esm.js +16 -0
- package/toast/toast.esm.min.js +1 -1
- package/toast/toast.js +16 -0
- package/toast/toast.min.css +1 -1
- package/toast/toast.min.js +1 -1
- package/tooltip/tooltip.cjs.js +5 -4
- package/tooltip/tooltip.cjs.min.js +1 -1
- package/tooltip/tooltip.esm.js +5 -4
- package/tooltip/tooltip.esm.min.js +1 -1
- package/tooltip/tooltip.js +5 -4
- package/tooltip/tooltip.min.js +1 -1
- package/treetable/treetable.cjs.js +12 -9
- package/treetable/treetable.cjs.min.js +1 -1
- package/treetable/treetable.d.ts +0 -5
- package/treetable/treetable.esm.js +12 -9
- package/treetable/treetable.esm.min.js +1 -1
- package/treetable/treetable.js +12 -9
- package/treetable/treetable.min.css +1 -1
- package/treetable/treetable.min.js +1 -1
- package/utils/utils.cjs.js +15 -10
- package/utils/utils.cjs.min.js +1 -1
- package/utils/utils.esm.js +15 -10
- package/utils/utils.esm.min.js +1 -1
- package/utils/utils.js +15 -10
- package/utils/utils.min.js +1 -1
- package/virtualscroller/virtualscroller.cjs.js +177 -104
- package/virtualscroller/virtualscroller.cjs.min.js +1 -1
- package/virtualscroller/virtualscroller.d.ts +20 -0
- package/virtualscroller/virtualscroller.esm.js +177 -104
- package/virtualscroller/virtualscroller.esm.min.js +1 -1
- package/virtualscroller/virtualscroller.js +177 -104
- package/virtualscroller/virtualscroller.min.css +1 -1
- package/virtualscroller/virtualscroller.min.js +1 -1
- 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
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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"),
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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,
|
|
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
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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();
|