@blaze-cms/react-page-builder 0.147.0-rc-eagle.2 → 0.147.0-rc-eagle.4
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/lib/components/Menu/Menu.js +4 -1
- package/lib/components/Menu/Menu.js.map +1 -1
- package/lib/components/Menu/MenuContext.js +2 -1
- package/lib/components/Menu/MenuContext.js.map +1 -1
- package/lib/components/MenuItem/MenuItemRender.js +24 -9
- package/lib/components/MenuItem/MenuItemRender.js.map +1 -1
- package/lib/components/MenuItem/helpers/has-active-child.js +12 -0
- package/lib/components/MenuItem/helpers/has-active-child.js.map +1 -0
- package/lib/components/MenuItem/helpers/index.js +14 -0
- package/lib/components/MenuItem/helpers/index.js.map +1 -1
- package/lib/components/MenuItem/helpers/isUrlPathMatch.js +14 -0
- package/lib/components/MenuItem/helpers/isUrlPathMatch.js.map +1 -0
- package/lib-es/components/Menu/Menu.js +4 -1
- package/lib-es/components/Menu/Menu.js.map +1 -1
- package/lib-es/components/Menu/MenuContext.js +2 -1
- package/lib-es/components/Menu/MenuContext.js.map +1 -1
- package/lib-es/components/MenuItem/MenuItemRender.js +25 -11
- package/lib-es/components/MenuItem/MenuItemRender.js.map +1 -1
- package/lib-es/components/MenuItem/helpers/has-active-child.js +5 -0
- package/lib-es/components/MenuItem/helpers/has-active-child.js.map +1 -0
- package/lib-es/components/MenuItem/helpers/index.js +3 -1
- package/lib-es/components/MenuItem/helpers/index.js.map +1 -1
- package/lib-es/components/MenuItem/helpers/isUrlPathMatch.js +8 -0
- package/lib-es/components/MenuItem/helpers/isUrlPathMatch.js.map +1 -0
- package/package.json +10 -11
- package/src/components/Menu/Menu.js +3 -1
- package/src/components/Menu/MenuContext.js +1 -1
- package/src/components/MenuItem/MenuItemRender.js +40 -12
- package/src/components/MenuItem/helpers/has-active-child.js +10 -0
- package/src/components/MenuItem/helpers/index.js +3 -1
- package/src/components/MenuItem/helpers/isUrlPathMatch.js +10 -0
|
@@ -18,6 +18,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
18
18
|
const Menu = ({
|
|
19
19
|
children,
|
|
20
20
|
collapse,
|
|
21
|
+
openActiveSubmenus,
|
|
21
22
|
modifier,
|
|
22
23
|
mobileMenuModifier,
|
|
23
24
|
mobileMenuChildrenModifier,
|
|
@@ -53,7 +54,8 @@ const Menu = ({
|
|
|
53
54
|
});
|
|
54
55
|
return /*#__PURE__*/_react.default.createElement(_MenuContext.default.Provider, {
|
|
55
56
|
value: {
|
|
56
|
-
showMobileMenu
|
|
57
|
+
showMobileMenu,
|
|
58
|
+
openActiveSubmenus
|
|
57
59
|
}
|
|
58
60
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
59
61
|
className: menuWrapperClasses
|
|
@@ -91,6 +93,7 @@ const Menu = ({
|
|
|
91
93
|
};
|
|
92
94
|
Menu.propTypes = {
|
|
93
95
|
collapse: _propTypes.default.bool.isRequired,
|
|
96
|
+
openActiveSubmenus: _propTypes.default.bool.isRequired,
|
|
94
97
|
logoOnMobile: _propTypes.default.bool.isRequired,
|
|
95
98
|
logoOnDesktop: _propTypes.default.bool,
|
|
96
99
|
logoOnMobileUrl: _propTypes.default.string,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_button","_classnames","_router","_md","_nextjsComponents","_MenuContext","_BlazeLink","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Menu","children","collapse","modifier","mobileMenuModifier","mobileMenuChildrenModifier","mobileIconAlignment","mobileButtonModifier","hamburgerIconModifier","logoOnMobile","logoOnDesktop","logoOnMobileUrl","logoOnMobileAlt","logoOnMobileModifier","logoOnDesktopModifier","closeIconModifier","router","useRouter","showMobileMenu","setShowMobileMenu","useState","useEffect","handleRouteChange","events","on","off","shouldDisplayChildren","childModifiers","classnames","isMobileMenuExpanded","menuWrapperClasses","createElement","Provider","value","className","onClick","label","MdClose","MdMenu","Link","href","name","src","alt","propTypes","PropTypes","bool","isRequired","string","oneOfType","arrayOf","node","defaultProps","_default","exports"],"sources":["../../../src/components/Menu/Menu.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport BlazeButton from '@blaze-react/button';\nimport classnames from 'classnames';\nimport { useRouter } from 'next/router';\nimport { MdMenu, MdClose } from 'react-icons/md';\nimport { Link } from '@blaze-cms/nextjs-components';\nimport MenuContext from './MenuContext';\nimport BlazeLink from '../BlazeLink';\n\nconst Menu = ({\n children,\n collapse,\n modifier,\n mobileMenuModifier,\n mobileMenuChildrenModifier,\n mobileIconAlignment,\n mobileButtonModifier,\n hamburgerIconModifier,\n logoOnMobile,\n logoOnDesktop,\n logoOnMobileUrl,\n logoOnMobileAlt,\n logoOnMobileModifier,\n logoOnDesktopModifier,\n closeIconModifier\n}) => {\n const router = useRouter();\n const [showMobileMenu, setShowMobileMenu] = useState(false);\n\n useEffect(() => {\n const handleRouteChange = () => setShowMobileMenu(false);\n router.events.on('routeChangeStart', handleRouteChange);\n\n return () => {\n router.events.off('routeChangeStart', handleRouteChange);\n };\n }, [router.events]);\n\n const shouldDisplayChildren = collapse ? showMobileMenu : true;\n\n const childModifiers = classnames({\n [mobileMenuChildrenModifier]: shouldDisplayChildren,\n [modifier]: !showMobileMenu\n });\n\n const isMobileMenuExpanded = showMobileMenu ? `${mobileMenuModifier}` : '';\n const menuWrapperClasses = classnames('menu--wrapper', {\n 'menu--wrapper--mobile-open': showMobileMenu,\n 'menu--wrapper--mobile-closed': collapse && !showMobileMenu\n });\n\n return (\n <MenuContext.Provider value={{ showMobileMenu }}>\n <div className={menuWrapperClasses}>\n {collapse && (\n <div className=\"menu--mobile-wrapper\">\n <div\n className={`flex w-screen z-50 justify-${mobileIconAlignment} ${isMobileMenuExpanded}`}>\n <BlazeButton\n className={`menu--mobile-button ${mobileButtonModifier}`}\n onClick={() => setShowMobileMenu(!showMobileMenu)}\n label={showMobileMenu ? 'Close mobile menu' : 'Open mobile menu'}>\n <i>\n {showMobileMenu ? (\n <MdClose className={closeIconModifier} />\n ) : (\n <MdMenu className={hamburgerIconModifier} />\n )}\n </i>\n </BlazeButton>\n </div>\n </div>\n )}\n {logoOnMobile && !showMobileMenu && (\n <Link href=\"/\" name=\"mobile menu\">\n <img src={logoOnMobileUrl} alt={logoOnMobileAlt} className={logoOnMobileModifier} />\n </Link>\n )}\n\n <div className=\"menu--desktop-wrapper\">\n <ul className={childModifiers}>\n {logoOnDesktop && (\n <BlazeLink href=\"/\" className=\"\">\n <img\n src={logoOnMobileUrl}\n alt={logoOnMobileAlt}\n className={logoOnDesktopModifier}\n />\n </BlazeLink>\n )}\n {children}\n </ul>\n </div>\n </div>\n </MenuContext.Provider>\n );\n};\n\nMenu.propTypes = {\n collapse: PropTypes.bool.isRequired,\n logoOnMobile: PropTypes.bool.isRequired,\n logoOnDesktop: PropTypes.bool,\n logoOnMobileUrl: PropTypes.string,\n logoOnMobileAlt: PropTypes.string,\n logoOnMobileModifier: PropTypes.string,\n logoOnDesktopModifier: PropTypes.string,\n hamburgerIconModifier: PropTypes.string,\n closeIconModifier: PropTypes.string,\n mobileButtonModifier: PropTypes.string,\n mobileMenuModifier: PropTypes.string,\n mobileMenuChildrenModifier: PropTypes.string,\n modifier: PropTypes.string,\n mobileIconAlignment: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nMenu.defaultProps = {\n logoOnDesktop: false,\n logoOnMobileUrl: '',\n logoOnMobileAlt: '',\n logoOnMobileModifier: '',\n logoOnDesktopModifier: '',\n hamburgerIconModifier: '',\n closeIconModifier: '',\n mobileButtonModifier: '',\n mobileIconAlignment: '',\n mobileMenuModifier: '',\n mobileMenuChildrenModifier: '',\n modifier: '',\n children: []\n};\n\nexport default Menu;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Menu.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_button","_classnames","_router","_md","_nextjsComponents","_MenuContext","_BlazeLink","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Menu","children","collapse","openActiveSubmenus","modifier","mobileMenuModifier","mobileMenuChildrenModifier","mobileIconAlignment","mobileButtonModifier","hamburgerIconModifier","logoOnMobile","logoOnDesktop","logoOnMobileUrl","logoOnMobileAlt","logoOnMobileModifier","logoOnDesktopModifier","closeIconModifier","router","useRouter","showMobileMenu","setShowMobileMenu","useState","useEffect","handleRouteChange","events","on","off","shouldDisplayChildren","childModifiers","classnames","isMobileMenuExpanded","menuWrapperClasses","createElement","Provider","value","className","onClick","label","MdClose","MdMenu","Link","href","name","src","alt","propTypes","PropTypes","bool","isRequired","string","oneOfType","arrayOf","node","defaultProps","_default","exports"],"sources":["../../../src/components/Menu/Menu.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport BlazeButton from '@blaze-react/button';\nimport classnames from 'classnames';\nimport { useRouter } from 'next/router';\nimport { MdMenu, MdClose } from 'react-icons/md';\nimport { Link } from '@blaze-cms/nextjs-components';\nimport MenuContext from './MenuContext';\nimport BlazeLink from '../BlazeLink';\n\nconst Menu = ({\n children,\n collapse,\n openActiveSubmenus,\n modifier,\n mobileMenuModifier,\n mobileMenuChildrenModifier,\n mobileIconAlignment,\n mobileButtonModifier,\n hamburgerIconModifier,\n logoOnMobile,\n logoOnDesktop,\n logoOnMobileUrl,\n logoOnMobileAlt,\n logoOnMobileModifier,\n logoOnDesktopModifier,\n closeIconModifier\n}) => {\n const router = useRouter();\n const [showMobileMenu, setShowMobileMenu] = useState(false);\n\n useEffect(() => {\n const handleRouteChange = () => setShowMobileMenu(false);\n router.events.on('routeChangeStart', handleRouteChange);\n\n return () => {\n router.events.off('routeChangeStart', handleRouteChange);\n };\n }, [router.events]);\n\n const shouldDisplayChildren = collapse ? showMobileMenu : true;\n\n const childModifiers = classnames({\n [mobileMenuChildrenModifier]: shouldDisplayChildren,\n [modifier]: !showMobileMenu\n });\n\n const isMobileMenuExpanded = showMobileMenu ? `${mobileMenuModifier}` : '';\n const menuWrapperClasses = classnames('menu--wrapper', {\n 'menu--wrapper--mobile-open': showMobileMenu,\n 'menu--wrapper--mobile-closed': collapse && !showMobileMenu\n });\n\n return (\n <MenuContext.Provider value={{ showMobileMenu, openActiveSubmenus }}>\n <div className={menuWrapperClasses}>\n {collapse && (\n <div className=\"menu--mobile-wrapper\">\n <div\n className={`flex w-screen z-50 justify-${mobileIconAlignment} ${isMobileMenuExpanded}`}>\n <BlazeButton\n className={`menu--mobile-button ${mobileButtonModifier}`}\n onClick={() => setShowMobileMenu(!showMobileMenu)}\n label={showMobileMenu ? 'Close mobile menu' : 'Open mobile menu'}>\n <i>\n {showMobileMenu ? (\n <MdClose className={closeIconModifier} />\n ) : (\n <MdMenu className={hamburgerIconModifier} />\n )}\n </i>\n </BlazeButton>\n </div>\n </div>\n )}\n {logoOnMobile && !showMobileMenu && (\n <Link href=\"/\" name=\"mobile menu\">\n <img src={logoOnMobileUrl} alt={logoOnMobileAlt} className={logoOnMobileModifier} />\n </Link>\n )}\n\n <div className=\"menu--desktop-wrapper\">\n <ul className={childModifiers}>\n {logoOnDesktop && (\n <BlazeLink href=\"/\" className=\"\">\n <img\n src={logoOnMobileUrl}\n alt={logoOnMobileAlt}\n className={logoOnDesktopModifier}\n />\n </BlazeLink>\n )}\n {children}\n </ul>\n </div>\n </div>\n </MenuContext.Provider>\n );\n};\n\nMenu.propTypes = {\n collapse: PropTypes.bool.isRequired,\n openActiveSubmenus: PropTypes.bool.isRequired,\n logoOnMobile: PropTypes.bool.isRequired,\n logoOnDesktop: PropTypes.bool,\n logoOnMobileUrl: PropTypes.string,\n logoOnMobileAlt: PropTypes.string,\n logoOnMobileModifier: PropTypes.string,\n logoOnDesktopModifier: PropTypes.string,\n hamburgerIconModifier: PropTypes.string,\n closeIconModifier: PropTypes.string,\n mobileButtonModifier: PropTypes.string,\n mobileMenuModifier: PropTypes.string,\n mobileMenuChildrenModifier: PropTypes.string,\n modifier: PropTypes.string,\n mobileIconAlignment: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nMenu.defaultProps = {\n logoOnDesktop: false,\n logoOnMobileUrl: '',\n logoOnMobileAlt: '',\n logoOnMobileModifier: '',\n logoOnDesktopModifier: '',\n hamburgerIconModifier: '',\n closeIconModifier: '',\n mobileButtonModifier: '',\n mobileIconAlignment: '',\n mobileMenuModifier: '',\n mobileMenuChildrenModifier: '',\n modifier: '',\n children: []\n};\n\nexport default Menu;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
const MenuContext = /*#__PURE__*/_react.default.createContext({
|
|
10
|
-
showMobileMenu: false
|
|
10
|
+
showMobileMenu: false,
|
|
11
|
+
openActiveSubmenus: false
|
|
11
12
|
});
|
|
12
13
|
var _default = exports.default = MenuContext;
|
|
13
14
|
//# sourceMappingURL=MenuContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuContext.js","names":["_react","_interopRequireDefault","require","MenuContext","React","createContext","showMobileMenu","_default","exports","default"],"sources":["../../../src/components/Menu/MenuContext.js"],"sourcesContent":["import React from 'react';\n\nconst MenuContext = React.createContext({ showMobileMenu: false });\n\nexport default MenuContext;\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,MAAMC,WAAW,gBAAGC,cAAK,CAACC,aAAa,CAAC;EAAEC,cAAc,EAAE;AAAM,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,
|
|
1
|
+
{"version":3,"file":"MenuContext.js","names":["_react","_interopRequireDefault","require","MenuContext","React","createContext","showMobileMenu","openActiveSubmenus","_default","exports","default"],"sources":["../../../src/components/Menu/MenuContext.js"],"sourcesContent":["import React from 'react';\n\nconst MenuContext = React.createContext({ showMobileMenu: false, openActiveSubmenus: false });\n\nexport default MenuContext;\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,MAAMC,WAAW,gBAAGC,cAAK,CAACC,aAAa,CAAC;EAAEC,cAAc,EAAE,KAAK;EAAEC,kBAAkB,EAAE;AAAM,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE/EP,WAAW","ignoreList":[]}
|
|
@@ -8,6 +8,7 @@ exports.default = void 0;
|
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
10
|
var _fa = require("react-icons/fa");
|
|
11
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
12
|
var _router = require("next/router");
|
|
12
13
|
var _utilsHandlebars = require("@blaze-cms/utils-handlebars");
|
|
13
14
|
var _constants = require("../../constants");
|
|
@@ -16,6 +17,8 @@ var _BlazeLink = _interopRequireDefault(require("../BlazeLink"));
|
|
|
16
17
|
var _MenuContext = _interopRequireDefault(require("../Menu/MenuContext"));
|
|
17
18
|
var _helpers2 = require("./helpers");
|
|
18
19
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
20
|
+
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
21
|
+
|
|
19
22
|
const MenuItemRender = ({
|
|
20
23
|
children,
|
|
21
24
|
eventType,
|
|
@@ -24,10 +27,13 @@ const MenuItemRender = ({
|
|
|
24
27
|
url,
|
|
25
28
|
parent
|
|
26
29
|
}) => {
|
|
27
|
-
const
|
|
30
|
+
const router = (0, _router.useRouter)();
|
|
28
31
|
const {
|
|
29
|
-
showMobileMenu
|
|
32
|
+
showMobileMenu,
|
|
33
|
+
openActiveSubmenus
|
|
30
34
|
} = (0, _react.useContext)(_MenuContext.default);
|
|
35
|
+
const isHoverEvent = eventType === _constants.HOVER;
|
|
36
|
+
const isClickEvent = eventType === _constants.CLICK;
|
|
31
37
|
const {
|
|
32
38
|
loading: loadingText,
|
|
33
39
|
data: [textToUse]
|
|
@@ -36,19 +42,21 @@ const MenuItemRender = ({
|
|
|
36
42
|
loading: loadingUrl,
|
|
37
43
|
data: [urlToUse]
|
|
38
44
|
} = (0, _utilsHandlebars.useStringTemplate)(parent, [(0, _helpers2.injectHelperIntoTemplate)(url, 'url_encode')]);
|
|
39
|
-
const
|
|
40
|
-
const
|
|
41
|
-
const
|
|
45
|
+
const isActive = router ? (0, _helpers2.isUrlPathMatch)(router.asPath, urlToUse) : false;
|
|
46
|
+
const isActiveParent = router ? (0, _helpers2.hasActiveChild)(router.asPath, children) : false;
|
|
47
|
+
const shouldPreOpen = openActiveSubmenus && isActiveParent && isClickEvent;
|
|
42
48
|
const hasValidChildren = (0, _helpers.hasChildren)(children);
|
|
49
|
+
const [displayChildren, setDisplayChildren] = (0, _react.useState)(shouldPreOpen);
|
|
43
50
|
(0, _react.useEffect)(() => {
|
|
44
|
-
if (!showMobileMenu) setDisplayChildren(false);
|
|
45
|
-
}, [showMobileMenu]);
|
|
51
|
+
if (!showMobileMenu && !shouldPreOpen) setDisplayChildren(false);
|
|
52
|
+
}, [children, isClickEvent, loadingUrl, openActiveSubmenus, router, shouldPreOpen, showMobileMenu]);
|
|
46
53
|
(0, _react.useEffect)(() => {
|
|
47
54
|
if (isHoverEvent) {
|
|
48
55
|
setDisplayChildren(false);
|
|
49
56
|
}
|
|
50
57
|
}, [router.asPath, isHoverEvent]);
|
|
51
58
|
if (loadingUrl || loadingText) return '';
|
|
59
|
+
const childrenDisplayClass = displayChildren ? '' : _constants.HIDDEN;
|
|
52
60
|
const handleItemEvent = ({
|
|
53
61
|
type
|
|
54
62
|
}) => {
|
|
@@ -66,18 +74,25 @@ const MenuItemRender = ({
|
|
|
66
74
|
setDisplayChildren(!displayChildren);
|
|
67
75
|
}
|
|
68
76
|
};
|
|
77
|
+
const menuItemLinkClassname = (0, _classnames.default)('menu--item--link', {
|
|
78
|
+
'menu--item--link--active': isActive,
|
|
79
|
+
'menu--item--link--active-parent': isActiveParent
|
|
80
|
+
});
|
|
69
81
|
return /*#__PURE__*/_react.default.createElement("li", {
|
|
70
82
|
className: modifier,
|
|
71
83
|
onMouseEnter: handleItemEvent,
|
|
72
84
|
onMouseLeave: handleItemEvent
|
|
73
85
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
74
|
-
className:
|
|
86
|
+
className: menuItemLinkClassname,
|
|
75
87
|
onClick: handleMobileClick,
|
|
76
88
|
role: !urlToUse && hasValidChildren ? 'button' : undefined,
|
|
77
89
|
tabIndex: !urlToUse && hasValidChildren ? 0 : undefined
|
|
78
90
|
}, urlToUse ? /*#__PURE__*/_react.default.createElement(_BlazeLink.default, {
|
|
79
91
|
href: urlToUse
|
|
80
|
-
}, textToUse) : /*#__PURE__*/_react.default.createElement("span",
|
|
92
|
+
}, textToUse) : /*#__PURE__*/_react.default.createElement("span", {
|
|
93
|
+
role: "button",
|
|
94
|
+
onClick: handleItemEvent
|
|
95
|
+
}, textToUse), hasValidChildren && /*#__PURE__*/_react.default.createElement("i", {
|
|
81
96
|
role: "button",
|
|
82
97
|
className: "menu--item--link--icon",
|
|
83
98
|
onClick: e => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItemRender.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_fa","_router","_utilsHandlebars","_constants","_helpers","_BlazeLink","_MenuContext","_helpers2","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MenuItemRender","children","eventType","text","modifier","url","parent","displayChildren","setDisplayChildren","useState","showMobileMenu","useContext","MenuContext","loading","loadingText","data","textToUse","useStringTemplate","loadingUrl","urlToUse","injectHelperIntoTemplate","router","useRouter","isHoverEvent","HOVER","childrenDisplayClass","HIDDEN","hasValidChildren","hasChildren","useEffect","asPath","handleItemEvent","type","MOUSE_ENTER","MOUSE_LEAVE","handleMobileClick","createElement","className","onMouseEnter","onMouseLeave","onClick","role","undefined","tabIndex","href","stopPropagation","FaChevronUp","FaChevronDown","propTypes","PropTypes","string","isRequired","object","oneOfType","arrayOf","node","defaultProps","_default","exports"],"sources":["../../../src/components/MenuItem/MenuItemRender.js"],"sourcesContent":["import React, { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { FaChevronDown, FaChevronUp } from 'react-icons/fa';\nimport { useRouter } from 'next/router';\nimport { useStringTemplate } from '@blaze-cms/utils-handlebars';\nimport { HOVER, MOUSE_ENTER, MOUSE_LEAVE, HIDDEN } from '../../constants';\nimport { hasChildren } from '../../helpers';\nimport BlazeLink from '../BlazeLink';\nimport MenuContext from '../Menu/MenuContext';\nimport { injectHelperIntoTemplate } from './helpers';\n\nconst MenuItemRender = ({ children, eventType, text, modifier, url, parent }) => {\n const [displayChildren, setDisplayChildren] = useState(false);\n const { showMobileMenu } = useContext(MenuContext);\n const {\n loading: loadingText,\n data: [textToUse]\n } = useStringTemplate(parent, [text]);\n const {\n loading: loadingUrl,\n data: [urlToUse]\n } = useStringTemplate(parent, [injectHelperIntoTemplate(url, 'url_encode')]);\n\n const router = useRouter();\n const isHoverEvent = eventType === HOVER;\n const childrenDisplayClass = displayChildren ? '' : HIDDEN;\n const hasValidChildren = hasChildren(children);\n\n useEffect(() => {\n if (!showMobileMenu) setDisplayChildren(false);\n }, [showMobileMenu]);\n\n useEffect(() => {\n if (isHoverEvent) {\n setDisplayChildren(false);\n }\n }, [router.asPath, isHoverEvent]);\n\n if (loadingUrl || loadingText) return '';\n\n const handleItemEvent = ({ type }) => {\n if (isHoverEvent) {\n if (type === MOUSE_ENTER) {\n setDisplayChildren(true);\n }\n if (type === MOUSE_LEAVE) {\n setDisplayChildren(false);\n }\n }\n };\n\n const handleMobileClick = () => {\n if (!urlToUse && hasValidChildren) {\n setDisplayChildren(!displayChildren);\n }\n };\n\n return (\n <li className={modifier} onMouseEnter={handleItemEvent} onMouseLeave={handleItemEvent}>\n <div\n className=\"menu--item--link\"\n onClick={handleMobileClick}\n role={!urlToUse && hasValidChildren ? 'button' : undefined}\n tabIndex={!urlToUse && hasValidChildren ? 0 : undefined}>\n {urlToUse ? <BlazeLink href={urlToUse}>{textToUse}</BlazeLink> : <span>{textToUse}</span>}\n\n {hasValidChildren && (\n <i\n role=\"button\"\n className=\"menu--item--link--icon\"\n onClick={e => {\n e.stopPropagation();\n setDisplayChildren(!displayChildren);\n }}\n tabIndex={0}>\n {displayChildren ? <FaChevronUp /> : <FaChevronDown />}\n </i>\n )}\n </div>\n\n {hasValidChildren && (\n <div className={`menu--item-children ${childrenDisplayClass}`}>{children}</div>\n )}\n </li>\n );\n};\n\nMenuItemRender.propTypes = {\n modifier: PropTypes.string,\n text: PropTypes.string,\n url: PropTypes.string,\n eventType: PropTypes.string.isRequired,\n parent: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nMenuItemRender.defaultProps = {\n url: '',\n modifier: '',\n text: '',\n children: null,\n parent: {}\n};\n\nexport default MenuItemRender;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"MenuItemRender.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_fa","_classnames","_router","_utilsHandlebars","_constants","_helpers","_BlazeLink","_MenuContext","_helpers2","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MenuItemRender","children","eventType","text","modifier","url","parent","router","useRouter","showMobileMenu","openActiveSubmenus","useContext","MenuContext","isHoverEvent","HOVER","isClickEvent","CLICK","loading","loadingText","data","textToUse","useStringTemplate","loadingUrl","urlToUse","injectHelperIntoTemplate","isActive","isUrlPathMatch","asPath","isActiveParent","hasActiveChild","shouldPreOpen","hasValidChildren","hasChildren","displayChildren","setDisplayChildren","useState","useEffect","childrenDisplayClass","HIDDEN","handleItemEvent","type","MOUSE_ENTER","MOUSE_LEAVE","handleMobileClick","menuItemLinkClassname","classnames","createElement","className","onMouseEnter","onMouseLeave","onClick","role","undefined","tabIndex","href","stopPropagation","FaChevronUp","FaChevronDown","propTypes","PropTypes","string","isRequired","object","oneOfType","arrayOf","node","defaultProps","_default","exports"],"sources":["../../../src/components/MenuItem/MenuItemRender.js"],"sourcesContent":["/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { FaChevronDown, FaChevronUp } from 'react-icons/fa';\nimport classnames from 'classnames';\nimport { useRouter } from 'next/router';\nimport { useStringTemplate } from '@blaze-cms/utils-handlebars';\nimport { HOVER, MOUSE_ENTER, MOUSE_LEAVE, HIDDEN, CLICK } from '../../constants';\nimport { hasChildren } from '../../helpers';\nimport BlazeLink from '../BlazeLink';\nimport MenuContext from '../Menu/MenuContext';\nimport { injectHelperIntoTemplate, isUrlPathMatch, hasActiveChild } from './helpers';\n\nconst MenuItemRender = ({ children, eventType, text, modifier, url, parent }) => {\n const router = useRouter();\n const { showMobileMenu, openActiveSubmenus } = useContext(MenuContext);\n\n const isHoverEvent = eventType === HOVER;\n const isClickEvent = eventType === CLICK;\n\n const {\n loading: loadingText,\n data: [textToUse]\n } = useStringTemplate(parent, [text]);\n const {\n loading: loadingUrl,\n data: [urlToUse]\n } = useStringTemplate(parent, [injectHelperIntoTemplate(url, 'url_encode')]);\n\n const isActive = router ? isUrlPathMatch(router.asPath, urlToUse) : false;\n const isActiveParent = router ? hasActiveChild(router.asPath, children) : false;\n const shouldPreOpen = openActiveSubmenus && isActiveParent && isClickEvent;\n const hasValidChildren = hasChildren(children);\n\n const [displayChildren, setDisplayChildren] = useState(shouldPreOpen);\n\n useEffect(() => {\n if (!showMobileMenu && !shouldPreOpen) setDisplayChildren(false);\n }, [\n children,\n isClickEvent,\n loadingUrl,\n openActiveSubmenus,\n router,\n shouldPreOpen,\n showMobileMenu\n ]);\n\n useEffect(() => {\n if (isHoverEvent) {\n setDisplayChildren(false);\n }\n }, [router.asPath, isHoverEvent]);\n\n if (loadingUrl || loadingText) return '';\n\n const childrenDisplayClass = displayChildren ? '' : HIDDEN;\n\n const handleItemEvent = ({ type }) => {\n if (isHoverEvent) {\n if (type === MOUSE_ENTER) {\n setDisplayChildren(true);\n }\n if (type === MOUSE_LEAVE) {\n setDisplayChildren(false);\n }\n }\n };\n\n const handleMobileClick = () => {\n if (!urlToUse && hasValidChildren) {\n setDisplayChildren(!displayChildren);\n }\n };\n\n const menuItemLinkClassname = classnames('menu--item--link', {\n 'menu--item--link--active': isActive,\n 'menu--item--link--active-parent': isActiveParent\n });\n\n return (\n <li className={modifier} onMouseEnter={handleItemEvent} onMouseLeave={handleItemEvent}>\n <div\n className={menuItemLinkClassname}\n onClick={handleMobileClick}\n role={!urlToUse && hasValidChildren ? 'button' : undefined}\n tabIndex={!urlToUse && hasValidChildren ? 0 : undefined}>\n {urlToUse ? (\n <BlazeLink href={urlToUse}>{textToUse}</BlazeLink>\n ) : (\n <span role=\"button\" onClick={handleItemEvent}>\n {textToUse}\n </span>\n )}\n {hasValidChildren && (\n <i\n role=\"button\"\n className=\"menu--item--link--icon\"\n onClick={e => {\n e.stopPropagation();\n setDisplayChildren(!displayChildren);\n }}\n tabIndex={0}>\n {displayChildren ? <FaChevronUp /> : <FaChevronDown />}\n </i>\n )}\n </div>\n\n {hasValidChildren && (\n <div className={`menu--item-children ${childrenDisplayClass}`}>{children}</div>\n )}\n </li>\n );\n};\n\nMenuItemRender.propTypes = {\n modifier: PropTypes.string,\n text: PropTypes.string,\n url: PropTypes.string,\n eventType: PropTypes.string.isRequired,\n parent: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nMenuItemRender.defaultProps = {\n url: '',\n modifier: '',\n text: '',\n children: null,\n parent: {}\n};\n\nexport default MenuItemRender;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _isUrlPathMatch = _interopRequireDefault(require("./isUrlPathMatch"));
|
|
9
|
+
var _helpers = require("../../../helpers");
|
|
10
|
+
const hasActiveChild = (path, children) => (0, _helpers.hasChildren)(children) && children.props.children[1][0].props.component.items.find(menuItem => (0, _isUrlPathMatch.default)(path, menuItem.settings.url));
|
|
11
|
+
var _default = exports.default = hasActiveChild;
|
|
12
|
+
//# sourceMappingURL=has-active-child.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-active-child.js","names":["_isUrlPathMatch","_interopRequireDefault","require","_helpers","hasActiveChild","path","children","hasChildren","props","component","items","find","menuItem","isUrlPathMatch","settings","url","_default","exports","default"],"sources":["../../../../src/components/MenuItem/helpers/has-active-child.js"],"sourcesContent":["import isUrlPathMatch from './isUrlPathMatch';\nimport { hasChildren } from '../../../helpers';\n\nconst hasActiveChild = (path, children) =>\n hasChildren(children) &&\n children.props.children[1][0].props.component.items.find(menuItem =>\n isUrlPathMatch(path, menuItem.settings.url)\n );\n\nexport default hasActiveChild;\n"],"mappings":";;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,MAAME,cAAc,GAAGA,CAACC,IAAI,EAAEC,QAAQ,KACpC,IAAAC,oBAAW,EAACD,QAAQ,CAAC,IACrBA,QAAQ,CAACE,KAAK,CAACF,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACE,KAAK,CAACC,SAAS,CAACC,KAAK,CAACC,IAAI,CAACC,QAAQ,IAC/D,IAAAC,uBAAc,EAACR,IAAI,EAAEO,QAAQ,CAACE,QAAQ,CAACC,GAAG,CAC5C,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEWd,cAAc","ignoreList":[]}
|
|
@@ -4,11 +4,25 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
Object.defineProperty(exports, "hasActiveChild", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _hasActiveChild.default;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
7
13
|
Object.defineProperty(exports, "injectHelperIntoTemplate", {
|
|
8
14
|
enumerable: true,
|
|
9
15
|
get: function () {
|
|
10
16
|
return _injectHelperIntoTemplate.default;
|
|
11
17
|
}
|
|
12
18
|
});
|
|
19
|
+
Object.defineProperty(exports, "isUrlPathMatch", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () {
|
|
22
|
+
return _isUrlPathMatch.default;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
13
25
|
var _injectHelperIntoTemplate = _interopRequireDefault(require("./inject-helper-into-template"));
|
|
26
|
+
var _isUrlPathMatch = _interopRequireDefault(require("./isUrlPathMatch"));
|
|
27
|
+
var _hasActiveChild = _interopRequireDefault(require("./has-active-child"));
|
|
14
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_injectHelperIntoTemplate","_interopRequireDefault","require"],"sources":["../../../../src/components/MenuItem/helpers/index.js"],"sourcesContent":["import injectHelperIntoTemplate from './inject-helper-into-template';\n\nexport { injectHelperIntoTemplate };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_injectHelperIntoTemplate","_interopRequireDefault","require","_isUrlPathMatch","_hasActiveChild"],"sources":["../../../../src/components/MenuItem/helpers/index.js"],"sourcesContent":["import injectHelperIntoTemplate from './inject-helper-into-template';\nimport isUrlPathMatch from './isUrlPathMatch';\nimport hasActiveChild from './has-active-child';\n\nexport { injectHelperIntoTemplate, isUrlPathMatch, hasActiveChild };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,yBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,eAAA,GAAAH,sBAAA,CAAAC,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
const isUrlPathMatch = (path, itemUrl) => {
|
|
8
|
+
if (!itemUrl || !path) return false;
|
|
9
|
+
const reg = new RegExp(/^[^#?]+/);
|
|
10
|
+
const _path = reg.exec(path)[0];
|
|
11
|
+
return _path === itemUrl || _path === `/${itemUrl}`;
|
|
12
|
+
};
|
|
13
|
+
var _default = exports.default = isUrlPathMatch;
|
|
14
|
+
//# sourceMappingURL=isUrlPathMatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isUrlPathMatch.js","names":["isUrlPathMatch","path","itemUrl","reg","RegExp","_path","exec","_default","exports","default"],"sources":["../../../../src/components/MenuItem/helpers/isUrlPathMatch.js"],"sourcesContent":["const isUrlPathMatch = (path, itemUrl) => {\n if (!itemUrl || !path) return false;\n\n const reg = new RegExp(/^[^#?]+/);\n const _path = reg.exec(path)[0];\n\n return _path === itemUrl || _path === `/${itemUrl}`;\n};\n\nexport default isUrlPathMatch;\n"],"mappings":";;;;;;AAAA,MAAMA,cAAc,GAAGA,CAACC,IAAI,EAAEC,OAAO,KAAK;EACxC,IAAI,CAACA,OAAO,IAAI,CAACD,IAAI,EAAE,OAAO,KAAK;EAEnC,MAAME,GAAG,GAAG,IAAIC,MAAM,CAAC,SAAS,CAAC;EACjC,MAAMC,KAAK,GAAGF,GAAG,CAACG,IAAI,CAACL,IAAI,CAAC,CAAC,CAAC,CAAC;EAE/B,OAAOI,KAAK,KAAKH,OAAO,IAAIG,KAAK,KAAK,IAAIH,OAAO,EAAE;AACrD,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaT,cAAc","ignoreList":[]}
|
|
@@ -10,6 +10,7 @@ import BlazeLink from '../BlazeLink';
|
|
|
10
10
|
const Menu = ({
|
|
11
11
|
children,
|
|
12
12
|
collapse,
|
|
13
|
+
openActiveSubmenus,
|
|
13
14
|
modifier,
|
|
14
15
|
mobileMenuModifier,
|
|
15
16
|
mobileMenuChildrenModifier,
|
|
@@ -45,7 +46,8 @@ const Menu = ({
|
|
|
45
46
|
});
|
|
46
47
|
return /*#__PURE__*/React.createElement(MenuContext.Provider, {
|
|
47
48
|
value: {
|
|
48
|
-
showMobileMenu
|
|
49
|
+
showMobileMenu,
|
|
50
|
+
openActiveSubmenus
|
|
49
51
|
}
|
|
50
52
|
}, /*#__PURE__*/React.createElement("div", {
|
|
51
53
|
className: menuWrapperClasses
|
|
@@ -83,6 +85,7 @@ const Menu = ({
|
|
|
83
85
|
};
|
|
84
86
|
Menu.propTypes = {
|
|
85
87
|
collapse: PropTypes.bool.isRequired,
|
|
88
|
+
openActiveSubmenus: PropTypes.bool.isRequired,
|
|
86
89
|
logoOnMobile: PropTypes.bool.isRequired,
|
|
87
90
|
logoOnDesktop: PropTypes.bool,
|
|
88
91
|
logoOnMobileUrl: PropTypes.string,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","names":["React","useState","useEffect","PropTypes","BlazeButton","classnames","useRouter","MdMenu","MdClose","Link","MenuContext","BlazeLink","Menu","children","collapse","modifier","mobileMenuModifier","mobileMenuChildrenModifier","mobileIconAlignment","mobileButtonModifier","hamburgerIconModifier","logoOnMobile","logoOnDesktop","logoOnMobileUrl","logoOnMobileAlt","logoOnMobileModifier","logoOnDesktopModifier","closeIconModifier","router","showMobileMenu","setShowMobileMenu","handleRouteChange","events","on","off","shouldDisplayChildren","childModifiers","isMobileMenuExpanded","menuWrapperClasses","createElement","Provider","value","className","onClick","label","href","name","src","alt","propTypes","bool","isRequired","string","oneOfType","arrayOf","node","defaultProps"],"sources":["../../../src/components/Menu/Menu.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport BlazeButton from '@blaze-react/button';\nimport classnames from 'classnames';\nimport { useRouter } from 'next/router';\nimport { MdMenu, MdClose } from 'react-icons/md';\nimport { Link } from '@blaze-cms/nextjs-components';\nimport MenuContext from './MenuContext';\nimport BlazeLink from '../BlazeLink';\n\nconst Menu = ({\n children,\n collapse,\n modifier,\n mobileMenuModifier,\n mobileMenuChildrenModifier,\n mobileIconAlignment,\n mobileButtonModifier,\n hamburgerIconModifier,\n logoOnMobile,\n logoOnDesktop,\n logoOnMobileUrl,\n logoOnMobileAlt,\n logoOnMobileModifier,\n logoOnDesktopModifier,\n closeIconModifier\n}) => {\n const router = useRouter();\n const [showMobileMenu, setShowMobileMenu] = useState(false);\n\n useEffect(() => {\n const handleRouteChange = () => setShowMobileMenu(false);\n router.events.on('routeChangeStart', handleRouteChange);\n\n return () => {\n router.events.off('routeChangeStart', handleRouteChange);\n };\n }, [router.events]);\n\n const shouldDisplayChildren = collapse ? showMobileMenu : true;\n\n const childModifiers = classnames({\n [mobileMenuChildrenModifier]: shouldDisplayChildren,\n [modifier]: !showMobileMenu\n });\n\n const isMobileMenuExpanded = showMobileMenu ? `${mobileMenuModifier}` : '';\n const menuWrapperClasses = classnames('menu--wrapper', {\n 'menu--wrapper--mobile-open': showMobileMenu,\n 'menu--wrapper--mobile-closed': collapse && !showMobileMenu\n });\n\n return (\n <MenuContext.Provider value={{ showMobileMenu }}>\n <div className={menuWrapperClasses}>\n {collapse && (\n <div className=\"menu--mobile-wrapper\">\n <div\n className={`flex w-screen z-50 justify-${mobileIconAlignment} ${isMobileMenuExpanded}`}>\n <BlazeButton\n className={`menu--mobile-button ${mobileButtonModifier}`}\n onClick={() => setShowMobileMenu(!showMobileMenu)}\n label={showMobileMenu ? 'Close mobile menu' : 'Open mobile menu'}>\n <i>\n {showMobileMenu ? (\n <MdClose className={closeIconModifier} />\n ) : (\n <MdMenu className={hamburgerIconModifier} />\n )}\n </i>\n </BlazeButton>\n </div>\n </div>\n )}\n {logoOnMobile && !showMobileMenu && (\n <Link href=\"/\" name=\"mobile menu\">\n <img src={logoOnMobileUrl} alt={logoOnMobileAlt} className={logoOnMobileModifier} />\n </Link>\n )}\n\n <div className=\"menu--desktop-wrapper\">\n <ul className={childModifiers}>\n {logoOnDesktop && (\n <BlazeLink href=\"/\" className=\"\">\n <img\n src={logoOnMobileUrl}\n alt={logoOnMobileAlt}\n className={logoOnDesktopModifier}\n />\n </BlazeLink>\n )}\n {children}\n </ul>\n </div>\n </div>\n </MenuContext.Provider>\n );\n};\n\nMenu.propTypes = {\n collapse: PropTypes.bool.isRequired,\n logoOnMobile: PropTypes.bool.isRequired,\n logoOnDesktop: PropTypes.bool,\n logoOnMobileUrl: PropTypes.string,\n logoOnMobileAlt: PropTypes.string,\n logoOnMobileModifier: PropTypes.string,\n logoOnDesktopModifier: PropTypes.string,\n hamburgerIconModifier: PropTypes.string,\n closeIconModifier: PropTypes.string,\n mobileButtonModifier: PropTypes.string,\n mobileMenuModifier: PropTypes.string,\n mobileMenuChildrenModifier: PropTypes.string,\n modifier: PropTypes.string,\n mobileIconAlignment: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nMenu.defaultProps = {\n logoOnDesktop: false,\n logoOnMobileUrl: '',\n logoOnMobileAlt: '',\n logoOnMobileModifier: '',\n logoOnDesktopModifier: '',\n hamburgerIconModifier: '',\n closeIconModifier: '',\n mobileButtonModifier: '',\n mobileIconAlignment: '',\n mobileMenuModifier: '',\n mobileMenuChildrenModifier: '',\n modifier: '',\n children: []\n};\n\nexport default Menu;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAClD,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,WAAW,MAAM,qBAAqB;AAC7C,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,MAAM,EAAEC,OAAO,QAAQ,gBAAgB;AAChD,SAASC,IAAI,QAAQ,8BAA8B;AACnD,OAAOC,WAAW,MAAM,eAAe;AACvC,OAAOC,SAAS,MAAM,cAAc;AAEpC,MAAMC,IAAI,GAAGA,CAAC;EACZC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,kBAAkB;EAClBC,0BAA0B;EAC1BC,mBAAmB;EACnBC,oBAAoB;EACpBC,qBAAqB;EACrBC,YAAY;EACZC,aAAa;EACbC,eAAe;EACfC,eAAe;EACfC,oBAAoB;EACpBC,qBAAqB;EACrBC;AACF,CAAC,KAAK;EACJ,MAAMC,MAAM,
|
|
1
|
+
{"version":3,"file":"Menu.js","names":["React","useState","useEffect","PropTypes","BlazeButton","classnames","useRouter","MdMenu","MdClose","Link","MenuContext","BlazeLink","Menu","children","collapse","openActiveSubmenus","modifier","mobileMenuModifier","mobileMenuChildrenModifier","mobileIconAlignment","mobileButtonModifier","hamburgerIconModifier","logoOnMobile","logoOnDesktop","logoOnMobileUrl","logoOnMobileAlt","logoOnMobileModifier","logoOnDesktopModifier","closeIconModifier","router","showMobileMenu","setShowMobileMenu","handleRouteChange","events","on","off","shouldDisplayChildren","childModifiers","isMobileMenuExpanded","menuWrapperClasses","createElement","Provider","value","className","onClick","label","href","name","src","alt","propTypes","bool","isRequired","string","oneOfType","arrayOf","node","defaultProps"],"sources":["../../../src/components/Menu/Menu.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport BlazeButton from '@blaze-react/button';\nimport classnames from 'classnames';\nimport { useRouter } from 'next/router';\nimport { MdMenu, MdClose } from 'react-icons/md';\nimport { Link } from '@blaze-cms/nextjs-components';\nimport MenuContext from './MenuContext';\nimport BlazeLink from '../BlazeLink';\n\nconst Menu = ({\n children,\n collapse,\n openActiveSubmenus,\n modifier,\n mobileMenuModifier,\n mobileMenuChildrenModifier,\n mobileIconAlignment,\n mobileButtonModifier,\n hamburgerIconModifier,\n logoOnMobile,\n logoOnDesktop,\n logoOnMobileUrl,\n logoOnMobileAlt,\n logoOnMobileModifier,\n logoOnDesktopModifier,\n closeIconModifier\n}) => {\n const router = useRouter();\n const [showMobileMenu, setShowMobileMenu] = useState(false);\n\n useEffect(() => {\n const handleRouteChange = () => setShowMobileMenu(false);\n router.events.on('routeChangeStart', handleRouteChange);\n\n return () => {\n router.events.off('routeChangeStart', handleRouteChange);\n };\n }, [router.events]);\n\n const shouldDisplayChildren = collapse ? showMobileMenu : true;\n\n const childModifiers = classnames({\n [mobileMenuChildrenModifier]: shouldDisplayChildren,\n [modifier]: !showMobileMenu\n });\n\n const isMobileMenuExpanded = showMobileMenu ? `${mobileMenuModifier}` : '';\n const menuWrapperClasses = classnames('menu--wrapper', {\n 'menu--wrapper--mobile-open': showMobileMenu,\n 'menu--wrapper--mobile-closed': collapse && !showMobileMenu\n });\n\n return (\n <MenuContext.Provider value={{ showMobileMenu, openActiveSubmenus }}>\n <div className={menuWrapperClasses}>\n {collapse && (\n <div className=\"menu--mobile-wrapper\">\n <div\n className={`flex w-screen z-50 justify-${mobileIconAlignment} ${isMobileMenuExpanded}`}>\n <BlazeButton\n className={`menu--mobile-button ${mobileButtonModifier}`}\n onClick={() => setShowMobileMenu(!showMobileMenu)}\n label={showMobileMenu ? 'Close mobile menu' : 'Open mobile menu'}>\n <i>\n {showMobileMenu ? (\n <MdClose className={closeIconModifier} />\n ) : (\n <MdMenu className={hamburgerIconModifier} />\n )}\n </i>\n </BlazeButton>\n </div>\n </div>\n )}\n {logoOnMobile && !showMobileMenu && (\n <Link href=\"/\" name=\"mobile menu\">\n <img src={logoOnMobileUrl} alt={logoOnMobileAlt} className={logoOnMobileModifier} />\n </Link>\n )}\n\n <div className=\"menu--desktop-wrapper\">\n <ul className={childModifiers}>\n {logoOnDesktop && (\n <BlazeLink href=\"/\" className=\"\">\n <img\n src={logoOnMobileUrl}\n alt={logoOnMobileAlt}\n className={logoOnDesktopModifier}\n />\n </BlazeLink>\n )}\n {children}\n </ul>\n </div>\n </div>\n </MenuContext.Provider>\n );\n};\n\nMenu.propTypes = {\n collapse: PropTypes.bool.isRequired,\n openActiveSubmenus: PropTypes.bool.isRequired,\n logoOnMobile: PropTypes.bool.isRequired,\n logoOnDesktop: PropTypes.bool,\n logoOnMobileUrl: PropTypes.string,\n logoOnMobileAlt: PropTypes.string,\n logoOnMobileModifier: PropTypes.string,\n logoOnDesktopModifier: PropTypes.string,\n hamburgerIconModifier: PropTypes.string,\n closeIconModifier: PropTypes.string,\n mobileButtonModifier: PropTypes.string,\n mobileMenuModifier: PropTypes.string,\n mobileMenuChildrenModifier: PropTypes.string,\n modifier: PropTypes.string,\n mobileIconAlignment: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nMenu.defaultProps = {\n logoOnDesktop: false,\n logoOnMobileUrl: '',\n logoOnMobileAlt: '',\n logoOnMobileModifier: '',\n logoOnDesktopModifier: '',\n hamburgerIconModifier: '',\n closeIconModifier: '',\n mobileButtonModifier: '',\n mobileIconAlignment: '',\n mobileMenuModifier: '',\n mobileMenuChildrenModifier: '',\n modifier: '',\n children: []\n};\n\nexport default Menu;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAClD,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,WAAW,MAAM,qBAAqB;AAC7C,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,MAAM,EAAEC,OAAO,QAAQ,gBAAgB;AAChD,SAASC,IAAI,QAAQ,8BAA8B;AACnD,OAAOC,WAAW,MAAM,eAAe;AACvC,OAAOC,SAAS,MAAM,cAAc;AAEpC,MAAMC,IAAI,GAAGA,CAAC;EACZC,QAAQ;EACRC,QAAQ;EACRC,kBAAkB;EAClBC,QAAQ;EACRC,kBAAkB;EAClBC,0BAA0B;EAC1BC,mBAAmB;EACnBC,oBAAoB;EACpBC,qBAAqB;EACrBC,YAAY;EACZC,aAAa;EACbC,eAAe;EACfC,eAAe;EACfC,oBAAoB;EACpBC,qBAAqB;EACrBC;AACF,CAAC,KAAK;EACJ,MAAMC,MAAM,GAAGvB,SAAS,CAAC,CAAC;EAC1B,MAAM,CAACwB,cAAc,EAAEC,iBAAiB,CAAC,GAAG9B,QAAQ,CAAC,KAAK,CAAC;EAE3DC,SAAS,CAAC,MAAM;IACd,MAAM8B,iBAAiB,GAAGA,CAAA,KAAMD,iBAAiB,CAAC,KAAK,CAAC;IACxDF,MAAM,CAACI,MAAM,CAACC,EAAE,CAAC,kBAAkB,EAAEF,iBAAiB,CAAC;IAEvD,OAAO,MAAM;MACXH,MAAM,CAACI,MAAM,CAACE,GAAG,CAAC,kBAAkB,EAAEH,iBAAiB,CAAC;IAC1D,CAAC;EACH,CAAC,EAAE,CAACH,MAAM,CAACI,MAAM,CAAC,CAAC;EAEnB,MAAMG,qBAAqB,GAAGtB,QAAQ,GAAGgB,cAAc,GAAG,IAAI;EAE9D,MAAMO,cAAc,GAAGhC,UAAU,CAAC;IAChC,CAACa,0BAA0B,GAAGkB,qBAAqB;IACnD,CAACpB,QAAQ,GAAG,CAACc;EACf,CAAC,CAAC;EAEF,MAAMQ,oBAAoB,GAAGR,cAAc,GAAG,GAAGb,kBAAkB,EAAE,GAAG,EAAE;EAC1E,MAAMsB,kBAAkB,GAAGlC,UAAU,CAAC,eAAe,EAAE;IACrD,4BAA4B,EAAEyB,cAAc;IAC5C,8BAA8B,EAAEhB,QAAQ,IAAI,CAACgB;EAC/C,CAAC,CAAC;EAEF,oBACE9B,KAAA,CAAAwC,aAAA,CAAC9B,WAAW,CAAC+B,QAAQ;IAACC,KAAK,EAAE;MAAEZ,cAAc;MAAEf;IAAmB;EAAE,gBAClEf,KAAA,CAAAwC,aAAA;IAAKG,SAAS,EAAEJ;EAAmB,GAChCzB,QAAQ,iBACPd,KAAA,CAAAwC,aAAA;IAAKG,SAAS,EAAC;EAAsB,gBACnC3C,KAAA,CAAAwC,aAAA;IACEG,SAAS,EAAE,8BAA8BxB,mBAAmB,IAAImB,oBAAoB;EAAG,gBACvFtC,KAAA,CAAAwC,aAAA,CAACpC,WAAW;IACVuC,SAAS,EAAE,uBAAuBvB,oBAAoB,EAAG;IACzDwB,OAAO,EAAEA,CAAA,KAAMb,iBAAiB,CAAC,CAACD,cAAc,CAAE;IAClDe,KAAK,EAAEf,cAAc,GAAG,mBAAmB,GAAG;EAAmB,gBACjE9B,KAAA,CAAAwC,aAAA,YACGV,cAAc,gBACb9B,KAAA,CAAAwC,aAAA,CAAChC,OAAO;IAACmC,SAAS,EAAEf;EAAkB,CAAE,CAAC,gBAEzC5B,KAAA,CAAAwC,aAAA,CAACjC,MAAM;IAACoC,SAAS,EAAEtB;EAAsB,CAAE,CAE5C,CACQ,CACV,CACF,CACN,EACAC,YAAY,IAAI,CAACQ,cAAc,iBAC9B9B,KAAA,CAAAwC,aAAA,CAAC/B,IAAI;IAACqC,IAAI,EAAC,GAAG;IAACC,IAAI,EAAC;EAAa,gBAC/B/C,KAAA,CAAAwC,aAAA;IAAKQ,GAAG,EAAExB,eAAgB;IAACyB,GAAG,EAAExB,eAAgB;IAACkB,SAAS,EAAEjB;EAAqB,CAAE,CAC/E,CACP,eAED1B,KAAA,CAAAwC,aAAA;IAAKG,SAAS,EAAC;EAAuB,gBACpC3C,KAAA,CAAAwC,aAAA;IAAIG,SAAS,EAAEN;EAAe,GAC3Bd,aAAa,iBACZvB,KAAA,CAAAwC,aAAA,CAAC7B,SAAS;IAACmC,IAAI,EAAC,GAAG;IAACH,SAAS,EAAC;EAAE,gBAC9B3C,KAAA,CAAAwC,aAAA;IACEQ,GAAG,EAAExB,eAAgB;IACrByB,GAAG,EAAExB,eAAgB;IACrBkB,SAAS,EAAEhB;EAAsB,CAClC,CACQ,CACZ,EACAd,QACC,CACD,CACF,CACe,CAAC;AAE3B,CAAC;AAEDD,IAAI,CAACsC,SAAS,GAAG;EACfpC,QAAQ,EAAEX,SAAS,CAACgD,IAAI,CAACC,UAAU;EACnCrC,kBAAkB,EAAEZ,SAAS,CAACgD,IAAI,CAACC,UAAU;EAC7C9B,YAAY,EAAEnB,SAAS,CAACgD,IAAI,CAACC,UAAU;EACvC7B,aAAa,EAAEpB,SAAS,CAACgD,IAAI;EAC7B3B,eAAe,EAAErB,SAAS,CAACkD,MAAM;EACjC5B,eAAe,EAAEtB,SAAS,CAACkD,MAAM;EACjC3B,oBAAoB,EAAEvB,SAAS,CAACkD,MAAM;EACtC1B,qBAAqB,EAAExB,SAAS,CAACkD,MAAM;EACvChC,qBAAqB,EAAElB,SAAS,CAACkD,MAAM;EACvCzB,iBAAiB,EAAEzB,SAAS,CAACkD,MAAM;EACnCjC,oBAAoB,EAAEjB,SAAS,CAACkD,MAAM;EACtCpC,kBAAkB,EAAEd,SAAS,CAACkD,MAAM;EACpCnC,0BAA0B,EAAEf,SAAS,CAACkD,MAAM;EAC5CrC,QAAQ,EAAEb,SAAS,CAACkD,MAAM;EAC1BlC,mBAAmB,EAAEhB,SAAS,CAACkD,MAAM;EACrCxC,QAAQ,EAAEV,SAAS,CAACmD,SAAS,CAAC,CAACnD,SAAS,CAACoD,OAAO,CAACpD,SAAS,CAACqD,IAAI,CAAC,EAAErD,SAAS,CAACqD,IAAI,CAAC;AACnF,CAAC;AAED5C,IAAI,CAAC6C,YAAY,GAAG;EAClBlC,aAAa,EAAE,KAAK;EACpBC,eAAe,EAAE,EAAE;EACnBC,eAAe,EAAE,EAAE;EACnBC,oBAAoB,EAAE,EAAE;EACxBC,qBAAqB,EAAE,EAAE;EACzBN,qBAAqB,EAAE,EAAE;EACzBO,iBAAiB,EAAE,EAAE;EACrBR,oBAAoB,EAAE,EAAE;EACxBD,mBAAmB,EAAE,EAAE;EACvBF,kBAAkB,EAAE,EAAE;EACtBC,0BAA0B,EAAE,EAAE;EAC9BF,QAAQ,EAAE,EAAE;EACZH,QAAQ,EAAE;AACZ,CAAC;AAED,eAAeD,IAAI","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuContext.js","names":["React","MenuContext","createContext","showMobileMenu"],"sources":["../../../src/components/Menu/MenuContext.js"],"sourcesContent":["import React from 'react';\n\nconst MenuContext = React.createContext({ showMobileMenu: false });\n\nexport default MenuContext;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,WAAW,GAAGD,KAAK,CAACE,aAAa,CAAC;EAAEC,cAAc,EAAE;AAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuContext.js","names":["React","MenuContext","createContext","showMobileMenu","openActiveSubmenus"],"sources":["../../../src/components/Menu/MenuContext.js"],"sourcesContent":["import React from 'react';\n\nconst MenuContext = React.createContext({ showMobileMenu: false, openActiveSubmenus: false });\n\nexport default MenuContext;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,WAAW,GAAGD,KAAK,CAACE,aAAa,CAAC;EAAEC,cAAc,EAAE,KAAK;EAAEC,kBAAkB,EAAE;AAAM,CAAC,CAAC;AAE7F,eAAeH,WAAW","ignoreList":[]}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
1
2
|
import React, { useState, useContext, useEffect } from 'react';
|
|
2
3
|
import PropTypes from 'prop-types';
|
|
3
4
|
import { FaChevronDown, FaChevronUp } from 'react-icons/fa';
|
|
5
|
+
import classnames from 'classnames';
|
|
4
6
|
import { useRouter } from 'next/router';
|
|
5
7
|
import { useStringTemplate } from '@blaze-cms/utils-handlebars';
|
|
6
|
-
import { HOVER, MOUSE_ENTER, MOUSE_LEAVE, HIDDEN } from '../../constants';
|
|
8
|
+
import { HOVER, MOUSE_ENTER, MOUSE_LEAVE, HIDDEN, CLICK } from '../../constants';
|
|
7
9
|
import { hasChildren } from '../../helpers';
|
|
8
10
|
import BlazeLink from '../BlazeLink';
|
|
9
11
|
import MenuContext from '../Menu/MenuContext';
|
|
10
|
-
import { injectHelperIntoTemplate } from './helpers';
|
|
12
|
+
import { injectHelperIntoTemplate, isUrlPathMatch, hasActiveChild } from './helpers';
|
|
11
13
|
const MenuItemRender = ({
|
|
12
14
|
children,
|
|
13
15
|
eventType,
|
|
@@ -16,10 +18,13 @@ const MenuItemRender = ({
|
|
|
16
18
|
url,
|
|
17
19
|
parent
|
|
18
20
|
}) => {
|
|
19
|
-
const
|
|
21
|
+
const router = useRouter();
|
|
20
22
|
const {
|
|
21
|
-
showMobileMenu
|
|
23
|
+
showMobileMenu,
|
|
24
|
+
openActiveSubmenus
|
|
22
25
|
} = useContext(MenuContext);
|
|
26
|
+
const isHoverEvent = eventType === HOVER;
|
|
27
|
+
const isClickEvent = eventType === CLICK;
|
|
23
28
|
const {
|
|
24
29
|
loading: loadingText,
|
|
25
30
|
data: [textToUse]
|
|
@@ -28,19 +33,21 @@ const MenuItemRender = ({
|
|
|
28
33
|
loading: loadingUrl,
|
|
29
34
|
data: [urlToUse]
|
|
30
35
|
} = useStringTemplate(parent, [injectHelperIntoTemplate(url, 'url_encode')]);
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const
|
|
36
|
+
const isActive = router ? isUrlPathMatch(router.asPath, urlToUse) : false;
|
|
37
|
+
const isActiveParent = router ? hasActiveChild(router.asPath, children) : false;
|
|
38
|
+
const shouldPreOpen = openActiveSubmenus && isActiveParent && isClickEvent;
|
|
34
39
|
const hasValidChildren = hasChildren(children);
|
|
40
|
+
const [displayChildren, setDisplayChildren] = useState(shouldPreOpen);
|
|
35
41
|
useEffect(() => {
|
|
36
|
-
if (!showMobileMenu) setDisplayChildren(false);
|
|
37
|
-
}, [showMobileMenu]);
|
|
42
|
+
if (!showMobileMenu && !shouldPreOpen) setDisplayChildren(false);
|
|
43
|
+
}, [children, isClickEvent, loadingUrl, openActiveSubmenus, router, shouldPreOpen, showMobileMenu]);
|
|
38
44
|
useEffect(() => {
|
|
39
45
|
if (isHoverEvent) {
|
|
40
46
|
setDisplayChildren(false);
|
|
41
47
|
}
|
|
42
48
|
}, [router.asPath, isHoverEvent]);
|
|
43
49
|
if (loadingUrl || loadingText) return '';
|
|
50
|
+
const childrenDisplayClass = displayChildren ? '' : HIDDEN;
|
|
44
51
|
const handleItemEvent = ({
|
|
45
52
|
type
|
|
46
53
|
}) => {
|
|
@@ -58,18 +65,25 @@ const MenuItemRender = ({
|
|
|
58
65
|
setDisplayChildren(!displayChildren);
|
|
59
66
|
}
|
|
60
67
|
};
|
|
68
|
+
const menuItemLinkClassname = classnames('menu--item--link', {
|
|
69
|
+
'menu--item--link--active': isActive,
|
|
70
|
+
'menu--item--link--active-parent': isActiveParent
|
|
71
|
+
});
|
|
61
72
|
return /*#__PURE__*/React.createElement("li", {
|
|
62
73
|
className: modifier,
|
|
63
74
|
onMouseEnter: handleItemEvent,
|
|
64
75
|
onMouseLeave: handleItemEvent
|
|
65
76
|
}, /*#__PURE__*/React.createElement("div", {
|
|
66
|
-
className:
|
|
77
|
+
className: menuItemLinkClassname,
|
|
67
78
|
onClick: handleMobileClick,
|
|
68
79
|
role: !urlToUse && hasValidChildren ? 'button' : undefined,
|
|
69
80
|
tabIndex: !urlToUse && hasValidChildren ? 0 : undefined
|
|
70
81
|
}, urlToUse ? /*#__PURE__*/React.createElement(BlazeLink, {
|
|
71
82
|
href: urlToUse
|
|
72
|
-
}, textToUse) : /*#__PURE__*/React.createElement("span",
|
|
83
|
+
}, textToUse) : /*#__PURE__*/React.createElement("span", {
|
|
84
|
+
role: "button",
|
|
85
|
+
onClick: handleItemEvent
|
|
86
|
+
}, textToUse), hasValidChildren && /*#__PURE__*/React.createElement("i", {
|
|
73
87
|
role: "button",
|
|
74
88
|
className: "menu--item--link--icon",
|
|
75
89
|
onClick: e => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItemRender.js","names":["React","useState","useContext","useEffect","PropTypes","FaChevronDown","FaChevronUp","useRouter","useStringTemplate","HOVER","MOUSE_ENTER","MOUSE_LEAVE","HIDDEN","hasChildren","BlazeLink","MenuContext","injectHelperIntoTemplate","MenuItemRender","children","eventType","text","modifier","url","parent","
|
|
1
|
+
{"version":3,"file":"MenuItemRender.js","names":["React","useState","useContext","useEffect","PropTypes","FaChevronDown","FaChevronUp","classnames","useRouter","useStringTemplate","HOVER","MOUSE_ENTER","MOUSE_LEAVE","HIDDEN","CLICK","hasChildren","BlazeLink","MenuContext","injectHelperIntoTemplate","isUrlPathMatch","hasActiveChild","MenuItemRender","children","eventType","text","modifier","url","parent","router","showMobileMenu","openActiveSubmenus","isHoverEvent","isClickEvent","loading","loadingText","data","textToUse","loadingUrl","urlToUse","isActive","asPath","isActiveParent","shouldPreOpen","hasValidChildren","displayChildren","setDisplayChildren","childrenDisplayClass","handleItemEvent","type","handleMobileClick","menuItemLinkClassname","createElement","className","onMouseEnter","onMouseLeave","onClick","role","undefined","tabIndex","href","e","stopPropagation","propTypes","string","isRequired","object","oneOfType","arrayOf","node","defaultProps"],"sources":["../../../src/components/MenuItem/MenuItemRender.js"],"sourcesContent":["/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { FaChevronDown, FaChevronUp } from 'react-icons/fa';\nimport classnames from 'classnames';\nimport { useRouter } from 'next/router';\nimport { useStringTemplate } from '@blaze-cms/utils-handlebars';\nimport { HOVER, MOUSE_ENTER, MOUSE_LEAVE, HIDDEN, CLICK } from '../../constants';\nimport { hasChildren } from '../../helpers';\nimport BlazeLink from '../BlazeLink';\nimport MenuContext from '../Menu/MenuContext';\nimport { injectHelperIntoTemplate, isUrlPathMatch, hasActiveChild } from './helpers';\n\nconst MenuItemRender = ({ children, eventType, text, modifier, url, parent }) => {\n const router = useRouter();\n const { showMobileMenu, openActiveSubmenus } = useContext(MenuContext);\n\n const isHoverEvent = eventType === HOVER;\n const isClickEvent = eventType === CLICK;\n\n const {\n loading: loadingText,\n data: [textToUse]\n } = useStringTemplate(parent, [text]);\n const {\n loading: loadingUrl,\n data: [urlToUse]\n } = useStringTemplate(parent, [injectHelperIntoTemplate(url, 'url_encode')]);\n\n const isActive = router ? isUrlPathMatch(router.asPath, urlToUse) : false;\n const isActiveParent = router ? hasActiveChild(router.asPath, children) : false;\n const shouldPreOpen = openActiveSubmenus && isActiveParent && isClickEvent;\n const hasValidChildren = hasChildren(children);\n\n const [displayChildren, setDisplayChildren] = useState(shouldPreOpen);\n\n useEffect(() => {\n if (!showMobileMenu && !shouldPreOpen) setDisplayChildren(false);\n }, [\n children,\n isClickEvent,\n loadingUrl,\n openActiveSubmenus,\n router,\n shouldPreOpen,\n showMobileMenu\n ]);\n\n useEffect(() => {\n if (isHoverEvent) {\n setDisplayChildren(false);\n }\n }, [router.asPath, isHoverEvent]);\n\n if (loadingUrl || loadingText) return '';\n\n const childrenDisplayClass = displayChildren ? '' : HIDDEN;\n\n const handleItemEvent = ({ type }) => {\n if (isHoverEvent) {\n if (type === MOUSE_ENTER) {\n setDisplayChildren(true);\n }\n if (type === MOUSE_LEAVE) {\n setDisplayChildren(false);\n }\n }\n };\n\n const handleMobileClick = () => {\n if (!urlToUse && hasValidChildren) {\n setDisplayChildren(!displayChildren);\n }\n };\n\n const menuItemLinkClassname = classnames('menu--item--link', {\n 'menu--item--link--active': isActive,\n 'menu--item--link--active-parent': isActiveParent\n });\n\n return (\n <li className={modifier} onMouseEnter={handleItemEvent} onMouseLeave={handleItemEvent}>\n <div\n className={menuItemLinkClassname}\n onClick={handleMobileClick}\n role={!urlToUse && hasValidChildren ? 'button' : undefined}\n tabIndex={!urlToUse && hasValidChildren ? 0 : undefined}>\n {urlToUse ? (\n <BlazeLink href={urlToUse}>{textToUse}</BlazeLink>\n ) : (\n <span role=\"button\" onClick={handleItemEvent}>\n {textToUse}\n </span>\n )}\n {hasValidChildren && (\n <i\n role=\"button\"\n className=\"menu--item--link--icon\"\n onClick={e => {\n e.stopPropagation();\n setDisplayChildren(!displayChildren);\n }}\n tabIndex={0}>\n {displayChildren ? <FaChevronUp /> : <FaChevronDown />}\n </i>\n )}\n </div>\n\n {hasValidChildren && (\n <div className={`menu--item-children ${childrenDisplayClass}`}>{children}</div>\n )}\n </li>\n );\n};\n\nMenuItemRender.propTypes = {\n modifier: PropTypes.string,\n text: PropTypes.string,\n url: PropTypes.string,\n eventType: PropTypes.string.isRequired,\n parent: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nMenuItemRender.defaultProps = {\n url: '',\n modifier: '',\n text: '',\n children: null,\n parent: {}\n};\n\nexport default MenuItemRender;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import isUrlPathMatch from './isUrlPathMatch';
|
|
2
|
+
import { hasChildren } from '../../../helpers';
|
|
3
|
+
const hasActiveChild = (path, children) => hasChildren(children) && children.props.children[1][0].props.component.items.find(menuItem => isUrlPathMatch(path, menuItem.settings.url));
|
|
4
|
+
export default hasActiveChild;
|
|
5
|
+
//# sourceMappingURL=has-active-child.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-active-child.js","names":["isUrlPathMatch","hasChildren","hasActiveChild","path","children","props","component","items","find","menuItem","settings","url"],"sources":["../../../../src/components/MenuItem/helpers/has-active-child.js"],"sourcesContent":["import isUrlPathMatch from './isUrlPathMatch';\nimport { hasChildren } from '../../../helpers';\n\nconst hasActiveChild = (path, children) =>\n hasChildren(children) &&\n children.props.children[1][0].props.component.items.find(menuItem =>\n isUrlPathMatch(path, menuItem.settings.url)\n );\n\nexport default hasActiveChild;\n"],"mappings":"AAAA,OAAOA,cAAc,MAAM,kBAAkB;AAC7C,SAASC,WAAW,QAAQ,kBAAkB;AAE9C,MAAMC,cAAc,GAAGA,CAACC,IAAI,EAAEC,QAAQ,KACpCH,WAAW,CAACG,QAAQ,CAAC,IACrBA,QAAQ,CAACC,KAAK,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,KAAK,CAACC,SAAS,CAACC,KAAK,CAACC,IAAI,CAACC,QAAQ,IAC/DT,cAAc,CAACG,IAAI,EAAEM,QAAQ,CAACC,QAAQ,CAACC,GAAG,CAC5C,CAAC;AAEH,eAAeT,cAAc","ignoreList":[]}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import injectHelperIntoTemplate from './inject-helper-into-template';
|
|
2
|
-
|
|
2
|
+
import isUrlPathMatch from './isUrlPathMatch';
|
|
3
|
+
import hasActiveChild from './has-active-child';
|
|
4
|
+
export { injectHelperIntoTemplate, isUrlPathMatch, hasActiveChild };
|
|
3
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["injectHelperIntoTemplate"],"sources":["../../../../src/components/MenuItem/helpers/index.js"],"sourcesContent":["import injectHelperIntoTemplate from './inject-helper-into-template';\n\nexport { injectHelperIntoTemplate };\n"],"mappings":"AAAA,OAAOA,wBAAwB,MAAM,+BAA+B;
|
|
1
|
+
{"version":3,"file":"index.js","names":["injectHelperIntoTemplate","isUrlPathMatch","hasActiveChild"],"sources":["../../../../src/components/MenuItem/helpers/index.js"],"sourcesContent":["import injectHelperIntoTemplate from './inject-helper-into-template';\nimport isUrlPathMatch from './isUrlPathMatch';\nimport hasActiveChild from './has-active-child';\n\nexport { injectHelperIntoTemplate, isUrlPathMatch, hasActiveChild };\n"],"mappings":"AAAA,OAAOA,wBAAwB,MAAM,+BAA+B;AACpE,OAAOC,cAAc,MAAM,kBAAkB;AAC7C,OAAOC,cAAc,MAAM,oBAAoB;AAE/C,SAASF,wBAAwB,EAAEC,cAAc,EAAEC,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const isUrlPathMatch = (path, itemUrl) => {
|
|
2
|
+
if (!itemUrl || !path) return false;
|
|
3
|
+
const reg = new RegExp(/^[^#?]+/);
|
|
4
|
+
const _path = reg.exec(path)[0];
|
|
5
|
+
return _path === itemUrl || _path === `/${itemUrl}`;
|
|
6
|
+
};
|
|
7
|
+
export default isUrlPathMatch;
|
|
8
|
+
//# sourceMappingURL=isUrlPathMatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isUrlPathMatch.js","names":["isUrlPathMatch","path","itemUrl","reg","RegExp","_path","exec"],"sources":["../../../../src/components/MenuItem/helpers/isUrlPathMatch.js"],"sourcesContent":["const isUrlPathMatch = (path, itemUrl) => {\n if (!itemUrl || !path) return false;\n\n const reg = new RegExp(/^[^#?]+/);\n const _path = reg.exec(path)[0];\n\n return _path === itemUrl || _path === `/${itemUrl}`;\n};\n\nexport default isUrlPathMatch;\n"],"mappings":"AAAA,MAAMA,cAAc,GAAGA,CAACC,IAAI,EAAEC,OAAO,KAAK;EACxC,IAAI,CAACA,OAAO,IAAI,CAACD,IAAI,EAAE,OAAO,KAAK;EAEnC,MAAME,GAAG,GAAG,IAAIC,MAAM,CAAC,SAAS,CAAC;EACjC,MAAMC,KAAK,GAAGF,GAAG,CAACG,IAAI,CAACL,IAAI,CAAC,CAAC,CAAC,CAAC;EAE/B,OAAOI,KAAK,KAAKH,OAAO,IAAIG,KAAK,KAAK,IAAIH,OAAO,EAAE;AACrD,CAAC;AAED,eAAeF,cAAc","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/react-page-builder",
|
|
3
|
-
"version": "0.147.0-rc-eagle.
|
|
3
|
+
"version": "0.147.0-rc-eagle.4",
|
|
4
4
|
"description": "Blaze react page builder",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-es/index.js",
|
|
@@ -32,15 +32,15 @@
|
|
|
32
32
|
},
|
|
33
33
|
"license": "GPL-3.0",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@blaze-cms/core-auth-ui": "0.147.0-rc-eagle.
|
|
36
|
-
"@blaze-cms/core-errors": "0.147.0-rc-eagle.
|
|
37
|
-
"@blaze-cms/core-errors-ui": "0.147.0-rc-eagle.
|
|
35
|
+
"@blaze-cms/core-auth-ui": "0.147.0-rc-eagle.4",
|
|
36
|
+
"@blaze-cms/core-errors": "0.147.0-rc-eagle.4",
|
|
37
|
+
"@blaze-cms/core-errors-ui": "0.147.0-rc-eagle.4",
|
|
38
38
|
"@blaze-cms/image-cdn-react": "0.3.0-alpha.7",
|
|
39
|
-
"@blaze-cms/nextjs-components": "0.147.0-rc-eagle.
|
|
40
|
-
"@blaze-cms/plugin-search-ui": "0.147.0-rc-eagle.
|
|
41
|
-
"@blaze-cms/setup-ui": "0.147.0-rc-eagle.
|
|
42
|
-
"@blaze-cms/utils": "0.147.0-rc-eagle.
|
|
43
|
-
"@blaze-cms/utils-handlebars": "0.147.0-rc-eagle.
|
|
39
|
+
"@blaze-cms/nextjs-components": "0.147.0-rc-eagle.4",
|
|
40
|
+
"@blaze-cms/plugin-search-ui": "0.147.0-rc-eagle.4",
|
|
41
|
+
"@blaze-cms/setup-ui": "0.147.0-rc-eagle.4",
|
|
42
|
+
"@blaze-cms/utils": "0.147.0-rc-eagle.4",
|
|
43
|
+
"@blaze-cms/utils-handlebars": "0.147.0-rc-eagle.4",
|
|
44
44
|
"@blaze-react/badge": "^0.7.0",
|
|
45
45
|
"@blaze-react/breadcrumb": "0.8.0-alpha.60",
|
|
46
46
|
"@blaze-react/button": "0.8.0-alpha.82",
|
|
@@ -89,6 +89,5 @@
|
|
|
89
89
|
"eslintIgnore": [
|
|
90
90
|
"lib/*",
|
|
91
91
|
"lib-es/*"
|
|
92
|
-
]
|
|
93
|
-
"gitHead": "156a1560d7bc2bbd57b5b51fdf11098349bb26f5"
|
|
92
|
+
]
|
|
94
93
|
}
|
|
@@ -11,6 +11,7 @@ import BlazeLink from '../BlazeLink';
|
|
|
11
11
|
const Menu = ({
|
|
12
12
|
children,
|
|
13
13
|
collapse,
|
|
14
|
+
openActiveSubmenus,
|
|
14
15
|
modifier,
|
|
15
16
|
mobileMenuModifier,
|
|
16
17
|
mobileMenuChildrenModifier,
|
|
@@ -51,7 +52,7 @@ const Menu = ({
|
|
|
51
52
|
});
|
|
52
53
|
|
|
53
54
|
return (
|
|
54
|
-
<MenuContext.Provider value={{ showMobileMenu }}>
|
|
55
|
+
<MenuContext.Provider value={{ showMobileMenu, openActiveSubmenus }}>
|
|
55
56
|
<div className={menuWrapperClasses}>
|
|
56
57
|
{collapse && (
|
|
57
58
|
<div className="menu--mobile-wrapper">
|
|
@@ -99,6 +100,7 @@ const Menu = ({
|
|
|
99
100
|
|
|
100
101
|
Menu.propTypes = {
|
|
101
102
|
collapse: PropTypes.bool.isRequired,
|
|
103
|
+
openActiveSubmenus: PropTypes.bool.isRequired,
|
|
102
104
|
logoOnMobile: PropTypes.bool.isRequired,
|
|
103
105
|
logoOnDesktop: PropTypes.bool,
|
|
104
106
|
logoOnMobileUrl: PropTypes.string,
|
|
@@ -1,17 +1,23 @@
|
|
|
1
|
+
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
1
2
|
import React, { useState, useContext, useEffect } from 'react';
|
|
2
3
|
import PropTypes from 'prop-types';
|
|
3
4
|
import { FaChevronDown, FaChevronUp } from 'react-icons/fa';
|
|
5
|
+
import classnames from 'classnames';
|
|
4
6
|
import { useRouter } from 'next/router';
|
|
5
7
|
import { useStringTemplate } from '@blaze-cms/utils-handlebars';
|
|
6
|
-
import { HOVER, MOUSE_ENTER, MOUSE_LEAVE, HIDDEN } from '../../constants';
|
|
8
|
+
import { HOVER, MOUSE_ENTER, MOUSE_LEAVE, HIDDEN, CLICK } from '../../constants';
|
|
7
9
|
import { hasChildren } from '../../helpers';
|
|
8
10
|
import BlazeLink from '../BlazeLink';
|
|
9
11
|
import MenuContext from '../Menu/MenuContext';
|
|
10
|
-
import { injectHelperIntoTemplate } from './helpers';
|
|
12
|
+
import { injectHelperIntoTemplate, isUrlPathMatch, hasActiveChild } from './helpers';
|
|
11
13
|
|
|
12
14
|
const MenuItemRender = ({ children, eventType, text, modifier, url, parent }) => {
|
|
13
|
-
const
|
|
14
|
-
const { showMobileMenu } = useContext(MenuContext);
|
|
15
|
+
const router = useRouter();
|
|
16
|
+
const { showMobileMenu, openActiveSubmenus } = useContext(MenuContext);
|
|
17
|
+
|
|
18
|
+
const isHoverEvent = eventType === HOVER;
|
|
19
|
+
const isClickEvent = eventType === CLICK;
|
|
20
|
+
|
|
15
21
|
const {
|
|
16
22
|
loading: loadingText,
|
|
17
23
|
data: [textToUse]
|
|
@@ -21,14 +27,24 @@ const MenuItemRender = ({ children, eventType, text, modifier, url, parent }) =>
|
|
|
21
27
|
data: [urlToUse]
|
|
22
28
|
} = useStringTemplate(parent, [injectHelperIntoTemplate(url, 'url_encode')]);
|
|
23
29
|
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
30
|
+
const isActive = router ? isUrlPathMatch(router.asPath, urlToUse) : false;
|
|
31
|
+
const isActiveParent = router ? hasActiveChild(router.asPath, children) : false;
|
|
32
|
+
const shouldPreOpen = openActiveSubmenus && isActiveParent && isClickEvent;
|
|
27
33
|
const hasValidChildren = hasChildren(children);
|
|
28
34
|
|
|
35
|
+
const [displayChildren, setDisplayChildren] = useState(shouldPreOpen);
|
|
36
|
+
|
|
29
37
|
useEffect(() => {
|
|
30
|
-
if (!showMobileMenu) setDisplayChildren(false);
|
|
31
|
-
}, [
|
|
38
|
+
if (!showMobileMenu && !shouldPreOpen) setDisplayChildren(false);
|
|
39
|
+
}, [
|
|
40
|
+
children,
|
|
41
|
+
isClickEvent,
|
|
42
|
+
loadingUrl,
|
|
43
|
+
openActiveSubmenus,
|
|
44
|
+
router,
|
|
45
|
+
shouldPreOpen,
|
|
46
|
+
showMobileMenu
|
|
47
|
+
]);
|
|
32
48
|
|
|
33
49
|
useEffect(() => {
|
|
34
50
|
if (isHoverEvent) {
|
|
@@ -38,6 +54,8 @@ const MenuItemRender = ({ children, eventType, text, modifier, url, parent }) =>
|
|
|
38
54
|
|
|
39
55
|
if (loadingUrl || loadingText) return '';
|
|
40
56
|
|
|
57
|
+
const childrenDisplayClass = displayChildren ? '' : HIDDEN;
|
|
58
|
+
|
|
41
59
|
const handleItemEvent = ({ type }) => {
|
|
42
60
|
if (isHoverEvent) {
|
|
43
61
|
if (type === MOUSE_ENTER) {
|
|
@@ -55,15 +73,25 @@ const MenuItemRender = ({ children, eventType, text, modifier, url, parent }) =>
|
|
|
55
73
|
}
|
|
56
74
|
};
|
|
57
75
|
|
|
76
|
+
const menuItemLinkClassname = classnames('menu--item--link', {
|
|
77
|
+
'menu--item--link--active': isActive,
|
|
78
|
+
'menu--item--link--active-parent': isActiveParent
|
|
79
|
+
});
|
|
80
|
+
|
|
58
81
|
return (
|
|
59
82
|
<li className={modifier} onMouseEnter={handleItemEvent} onMouseLeave={handleItemEvent}>
|
|
60
83
|
<div
|
|
61
|
-
className=
|
|
84
|
+
className={menuItemLinkClassname}
|
|
62
85
|
onClick={handleMobileClick}
|
|
63
86
|
role={!urlToUse && hasValidChildren ? 'button' : undefined}
|
|
64
87
|
tabIndex={!urlToUse && hasValidChildren ? 0 : undefined}>
|
|
65
|
-
{urlToUse ?
|
|
66
|
-
|
|
88
|
+
{urlToUse ? (
|
|
89
|
+
<BlazeLink href={urlToUse}>{textToUse}</BlazeLink>
|
|
90
|
+
) : (
|
|
91
|
+
<span role="button" onClick={handleItemEvent}>
|
|
92
|
+
{textToUse}
|
|
93
|
+
</span>
|
|
94
|
+
)}
|
|
67
95
|
{hasValidChildren && (
|
|
68
96
|
<i
|
|
69
97
|
role="button"
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import isUrlPathMatch from './isUrlPathMatch';
|
|
2
|
+
import { hasChildren } from '../../../helpers';
|
|
3
|
+
|
|
4
|
+
const hasActiveChild = (path, children) =>
|
|
5
|
+
hasChildren(children) &&
|
|
6
|
+
children.props.children[1][0].props.component.items.find(menuItem =>
|
|
7
|
+
isUrlPathMatch(path, menuItem.settings.url)
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
export default hasActiveChild;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import injectHelperIntoTemplate from './inject-helper-into-template';
|
|
2
|
+
import isUrlPathMatch from './isUrlPathMatch';
|
|
3
|
+
import hasActiveChild from './has-active-child';
|
|
2
4
|
|
|
3
|
-
export { injectHelperIntoTemplate };
|
|
5
|
+
export { injectHelperIntoTemplate, isUrlPathMatch, hasActiveChild };
|