Isolate document collection navigation and search
Verify and deploy Tabularium / verify-and-deploy (push) Successful in 6m8s
Verify and deploy Tabularium / verify-and-deploy (push) Successful in 6m8s
This commit is contained in:
@@ -29,7 +29,10 @@ export function Navigation({
|
||||
current?: string;
|
||||
onNavigate?: () => void;
|
||||
}) {
|
||||
const groups = [...new Set(docs.map((d) => d.group))];
|
||||
const collection = docs.find((d) => d.slug === current)?.collection;
|
||||
const scopedDocs = docs.filter((d) => d.collection === collection);
|
||||
const groups = [...new Set(scopedDocs.map((d) => d.group))];
|
||||
const collections = [...new Set(docs.map((d) => d.collection))];
|
||||
return (
|
||||
<nav aria-label="文档导航">
|
||||
<Link
|
||||
@@ -39,10 +42,21 @@ export function Navigation({
|
||||
>
|
||||
<Icon name="book" size={17} /> <span>资料库</span>
|
||||
</Link>
|
||||
{!current && collections.map((name) => (
|
||||
<Link
|
||||
onClick={onNavigate}
|
||||
className="nav-item"
|
||||
href={`/docs/${docs.find((d) => d.collection === name)!.slug}`}
|
||||
key={name}
|
||||
>
|
||||
{name}
|
||||
</Link>
|
||||
))}
|
||||
{collection && !groups.includes(collection) && <p className="eyebrow">{collection}</p>}
|
||||
{groups.map((group) => (
|
||||
<div className="nav-group" key={group}>
|
||||
<p>{group}</p>
|
||||
{docs
|
||||
{scopedDocs
|
||||
.filter((d) => d.group === group)
|
||||
.map((d) => (
|
||||
<Link
|
||||
@@ -81,7 +95,9 @@ export function Shell({
|
||||
const [searchStatus, setSearchStatus] = useState("");
|
||||
const [selected, setSelected] = useState(0);
|
||||
const [menu, setMenu] = useState(false);
|
||||
const collection = docs.find((d) => d.slug === current)?.collection;
|
||||
const results = searchDocs.filter((d) =>
|
||||
(!collection || d.collection === collection) &&
|
||||
`${d.title} ${d.description} ${d.searchText ?? ""}`
|
||||
.toLocaleLowerCase()
|
||||
.includes(query.trim().toLocaleLowerCase()),
|
||||
|
||||
Reference in New Issue
Block a user