UNPKG

@redocly/theme

Version:

Shared UI components lib

86 lines 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useMobileMenuItems = void 0; const react_router_dom_1 = require("react-router-dom"); const use_theme_hooks_1 = require("../use-theme-hooks"); const use_theme_config_1 = require("../use-theme-config"); const common_1 = require("../../constants/common"); const menu_1 = require("../../utils/menu"); const MENU_SEPARATOR = { type: 'separator', separatorLine: true, }; const useMobileMenuItems = (menuType) => { var _a, _b, _c; const { useTranslate, useL10nConfig, useCurrentProduct, usePageVersions, useSidebarItems } = (0, use_theme_hooks_1.useThemeHooks)(); const { versions = [] } = usePageVersions() || {}; const { defaultLocale, currentLocale, locales } = useL10nConfig(); const { translate } = useTranslate(); const activeVersion = versions.find((version) => version.active); const { currentItems: sidebarItems, pushDrilldownState, popDrilldownState, backLink, } = useSidebarItems(activeVersion); const location = (0, react_router_dom_1.useLocation)(); const currentProduct = useCurrentProduct(); const hasProductNavbarOverride = (_a = currentProduct === null || currentProduct === void 0 ? void 0 : currentProduct.configOverride) === null || _a === void 0 ? void 0 : _a.navbar; const productThemeConfig = (0, use_theme_config_1.useThemeConfig)(); const baseThemeConfig = (0, use_theme_config_1.useThemeConfig)(false); const baseNavItems = (((_b = baseThemeConfig.navbar) === null || _b === void 0 ? void 0 : _b.items) || []); const productNavItems = (hasProductNavbarOverride ? ((_c = productThemeConfig.navbar) === null || _c === void 0 ? void 0 : _c.items) || [] : []); const menuItems = []; if (menuType === common_1.MobileMenuType.PAGE) { if (activeVersion) { // eslint-disable-next-line no-warning-comments // TODO: consider to refactor const versionsSection = (0, menu_1.buildVersionSection)(translate, versions, activeVersion); menuItems.push(...versionsSection); } if (menuItems.length && sidebarItems.length) { menuItems.push(MENU_SEPARATOR); } menuItems.push(...sidebarItems); } else if (menuType === common_1.MobileMenuType.PRODUCT) { menuItems.push(...productNavItems); if (menuItems.length && baseNavItems.length) { menuItems.push(MENU_SEPARATOR); } if (baseNavItems.length) { menuItems.push(...baseNavItems); } } else if (menuType === common_1.MobileMenuType.MAIN_MENU) { const productMenuItems = Object.values(baseThemeConfig.products || {}).map((product) => ({ label: product.name, link: product.link, icon: product.icon, type: 'link', })); if (productMenuItems.length) { menuItems.push({ type: 'separator', label: translate('mobileMenu.products', 'Products'), }); menuItems.push(...productMenuItems); } if (menuItems.length && baseNavItems.length) { menuItems.push(MENU_SEPARATOR); } if (baseNavItems.length) { menuItems.push(...baseNavItems); } } const languagesMenu = (0, menu_1.buildLanguagesGroup)(locales, defaultLocale, currentLocale); if (menuItems.length && languagesMenu) { menuItems.push(MENU_SEPARATOR); } if (languagesMenu) { menuItems.push(languagesMenu); } return { items: (0, menu_1.mapNavbarItems)(menuItems, defaultLocale, currentLocale, locales, location), popDrilldownState, pushDrilldownState, backLink, }; }; exports.useMobileMenuItems = useMobileMenuItems; //# sourceMappingURL=use-mobile-menu-items.js.map