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