import * as Accordion from '@radix-ui/react-accordion' import Link from 'next/link' import { useRouter } from 'next/router' import { IconChevronLeft } from 'ui' import * as NavItems from './NavigationMenu.constants' import { find } from 'lodash' import Image from 'next/image' import { useTheme } from 'common/Providers' // import apiCommonSections from '~/../../spec/common-client-libs-sections.json' import RevVersionDropdown from '~/components/RefVersionDropdown' import { useMenuActiveRefId } from '~/hooks/useMenuState' import { RefIdOptions, RefKeyOptions } from './NavigationMenu' const FunctionLink = ({ title, id, icon, library, slug, }: { title: string name?: string id: string icon?: string product?: string library: string slug: string }) => { const router = useRouter() const activeAccordianItem = useMenuActiveRefId() const active = activeAccordianItem === id return (
  • {icon && {icon}} {title}
  • ) } const SideMenuTitle = ({ title }: { title: string }) => { return ( {title} ) } const Divider = () => { return
    } interface INavigationMenuRefList { currentLevel: string id: RefIdOptions lib: RefKeyOptions commonSections: any[] // to do type up // the keys of menu items that are allowed to be shown on the side menu // if undefined, we show all the menu items allowedClientKeys?: string[] } const NavigationMenuRefList: React.FC = ({ currentLevel, id, lib, commonSections, allowedClientKeys, }) => { const router = useRouter() const { isDarkMode } = useTheme() let sections = commonSections // console.log('sections', sections) if (!sections) console.error('no common sections imported') // console.log(id, 'sections in ref menu', sections) const menu = NavItems[id] const databaseFunctions = find(sections, { title: 'Database' }) ? find(sections, { title: 'Database' }).items : [] const authFunctions = find(sections, { title: 'Auth' }) ? find(sections, { title: 'Auth' }).items : [] // console.log('databaseFunctions', databaseFunctions) const filterIds = databaseFunctions.length > 0 ? find(databaseFunctions, { id: 'using-filters', }) && find(databaseFunctions, { id: 'using-filters', }).items.map((x) => x.id) : [] const modifierIds = databaseFunctions.length > 0 ? find(databaseFunctions, { id: 'using-modifiers', }) && find(databaseFunctions, { id: 'using-modifiers', }).items.map((x) => x.id) : [] const authServerIds = databaseFunctions.length > 0 ? find(authFunctions, { id: 'admin-api', }) && find(authFunctions, { id: 'admin-api', }).items.map((x) => x.id) : [] // console.log(filterIds) // console.log(modifierIds) return (
    Back to Main Menu
    {id} {menu.title}
    {/* )} */}
      {sections.map((fn: any, fnIndex) => { // // check if the link is allowed to be displayed function isFuncNotInLibraryOrVersion(id, type) { if ( id && allowedClientKeys && !allowedClientKeys.includes(id) && type !== 'markdown' ) { /* * Remove this menu link from side bar, as it does not exist for either * this language, or for this lib version * * */ return true } else { return false } } // run allow check if (isFuncNotInLibraryOrVersion(fn.id, fn.type)) { return <> } const RenderLink = (props) => { const activeAccordianItem = useMenuActiveRefId() let active = false // console.log('activeAccordianItem', activeAccordianItem) const isFilter = filterIds && filterIds.length > 0 && filterIds.includes(activeAccordianItem) const isModifier = modifierIds && modifierIds.length > 0 && modifierIds.includes(activeAccordianItem) const isAuthServer = authServerIds && authServerIds.length > 0 && authServerIds.includes(activeAccordianItem) // console.log('isFilter', props.id, isFilter) // console.log('isModifier', props.id, isModifier) if ( (isFilter && !isModifier && !isAuthServer && props.id === 'using-filters') || (activeAccordianItem === 'using-filters' && !isModifier && !isFilter && props.id === 'using-filters') ) { active = true } else if ( (isModifier && !isFilter && !isAuthServer && props.id === 'using-modifiers') || (activeAccordianItem === 'using-modifiers' && !isFilter && !isModifier && props.id === 'using-modifiers') ) { active = true } else if ( (isAuthServer && !isFilter && !isModifier && props.id === 'admin-api') || (activeAccordianItem === 'admin-api' && !isFilter && !isModifier && !isAuthServer && props.id === 'admin-api') ) { active = true } else { active = false } // if (props.id === 'using-filters') { // console.log('using-filters', active) // } // if (props.id === 'using-modifiers') { // console.log('using-modifiers', active) // } return ( {props.items && props.items.map((item) => { return })} ) } // handle subtitles with subitems if (!fn.id) { return ( <> {fn.items && fn.items //.filter((item) => item.libs && item.libs.includes(lib)) .map((item) => { // run allow check if (isFuncNotInLibraryOrVersion(item.id, item.type)) return <> return })} ) } else { // handle normal links return ( <> {fn.items && fn.items //.filter((item) => item.libs.includes(lib)) .map((item) => )} ) } })}
    {/* {menu.extras && ( <> {' '} Resources )} {menu.extras?.map((x) => { return (
  • {x.icon && ( {x.icon} )} {x.name}
  • ) })} */}
    ) } export default NavigationMenuRefList