@redocly/theme
Version:
Shared UI components lib
86 lines • 3.87 kB
JavaScript
;
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