diff --git a/nx-dev/nx-dev/pages/packages.tsx b/nx-dev/nx-dev/pages/packages.tsx index 92304d4c6a..202d6e8a8a 100644 --- a/nx-dev/nx-dev/pages/packages.tsx +++ b/nx-dev/nx-dev/pages/packages.tsx @@ -3,6 +3,7 @@ import { Footer, Header } from '@nrwl/nx-dev/ui-common'; import { ReferencesIndexItem } from '@nrwl/nx-dev/ui-references'; import { NextSeo } from 'next-seo'; import { useRouter } from 'next/router'; +import { useState } from 'react'; import { ReferencesSection } from '../../ui-references/src/lib/references-section'; import { nxMenuApi } from '../lib/api'; @@ -20,15 +21,18 @@ export async function getStaticProps(): Promise<{ props: ReferencesProps }> { export function Packages(props: ReferencesProps): JSX.Element { const router = useRouter(); + const [targetPackageId, setTargetPackageId] = useState(''); + const updateTargetPackageId = (id: string) => + id === targetPackageId ? setTargetPackageId('') : setTargetPackageId(id); const nxPackageIds = ['nx', 'workspace', 'devkit', 'nx-plugin']; - const references = [ + const references: MenuItem[] = [ ...nxPackageIds.map((id) => props.references.itemList.find((pkg) => pkg.id === id) ), ...props.references.itemList.filter( (pkg) => !nxPackageIds.includes(pkg.id) ), - ]; + ].filter((pkg): pkg is MenuItem => !!pkg); return ( <> @@ -81,19 +85,25 @@ export function Packages(props: ReferencesProps): JSX.Element { key={'ref-' + category.id} path={category.path as string} name={category.name as string} - id={category.id as string} + id={category.id} + active={targetPackageId} + callback={updateTargetPackageId} /> ))} - {references.map((category: MenuItem, index, all) => ( -
- - {!(index + 1 === all.length) && ( -
- )} -
- ))} + {references + .filter((pkg) => + !!targetPackageId ? pkg.id === targetPackageId : true + ) + .map((category: MenuItem, index, all) => ( +
+ + {!(index + 1 === all.length) && ( +
+ )} +
+ ))} diff --git a/nx-dev/ui-references/src/lib/references-index-item.tsx b/nx-dev/ui-references/src/lib/references-index-item.tsx index 24b3b1d13b..2b451de946 100644 --- a/nx-dev/ui-references/src/lib/references-index-item.tsx +++ b/nx-dev/ui-references/src/lib/references-index-item.tsx @@ -1,24 +1,30 @@ -import Link from 'next/link'; +import cx from 'classnames'; import { iconsMap } from './icons-map'; export function ReferencesIndexItem(pkg: { + active: string; + callback: (id: any) => any; id: string; name: string; path: string; }): JSX.Element { return ( - - - + ); }