@fluid-topics/ftds-toc

中文文档
2.2.52发布于 2026/11/14ISCTypeScriptCommonJS近 30 天下载 1.9万

设计系统目录组件

中文使用文档
文档目录5 节
  1. 安装
  2. 使用量
  3. 键盘导航
  4. 活动
  5. 从页面中构建项目

安装

npm install @fluid-topics/ftds-toc
yarn add @fluid-topics/ftds-toc

使用量

设计系统目录 (TOC). 它是一个导航组件,具有两个关卡(分节和分节)连接到一页的锚.

匹配当前页面位置的链接被标记为 aria-current="page"。其更新时间为点击和 hashchange,或可被迫使用 current 属性.

它很粘,隐藏在屏幕上,最宽可达1440px.

import { html } from "lit"
import "@fluid-topics/ftds-toc"

function render() {
    return html`
        <ftds-toc
            label="Content"
            .items=${ [
                { value: "general", label: "General", href: "#general" },
                {
                    value: "provider",
                    label: "Provider",
                    href: "#provider",
                    children: [
                        { value: "settings", label: "Settings", href: "#settings" },
                    ],
                },
            ] }
        ></ftds-toc>`
}

键盘导航

它跟随 APG 树景导航模式,没有扩张和倒塌。 标签序列中只有一个项目(当前一个,或第一个).

密钥行动
ArrowDown 编号 : Up将焦点移到下一个/ 上一个项目
ArrowRight将焦点移动到项目的第一个孩子
ArrowLeft将焦点移动到子项目的父母
Home 编号 : End将焦点移动到第一个/最后一个项目
一封信将焦点移到从该字母开始的下一个项目
Space 编号 : Enter激活链接

活动

item-selected (单位:千美元)TocItemSelectedEvent, (中文(简体) ), detail 当一个项目被单击或用键盘激活时,将发出. 可取消:拨打 preventDefault() 上面取消了链接的本地导航,所以主机可以滚动到区域本身.

从页面中构建项目

而不是用手写东西, FtTocController (从) @fluid-topics/ft-wc-utils)可以从主机组件的区块来构建它们并跟踪目前所看到的区块.

标记主机光度DOM的每个部分 data-toc-label添加 data-toc-level="1" 以制作上一节的分节. 没有元素 id 给一个。 当主机的光 DOM 改变时, 这些区域会被重新扫描 .

import { html } from "lit"
import { FtLitElement, FtTocController } from "@fluid-topics/ft-wc-utils"
import { TocItemSelectedEvent } from "@fluid-topics/ftds-toc"
import "@fluid-topics/ftds-toc"

class MyPage extends FtLitElement {
    private readonly toc = new FtTocController(this, {
        scrollContainer: () => this.renderRoot.querySelector("main"),
    })

    protected render() {
        return html`
            <ftds-toc label="Content"
                      .items=${ this.toc.items }
                      .current=${ this.toc.current }
                      @item-selected=${ this.onItemSelected }>
            </ftds-toc>
            <main>
                <slot></slot>
            </main>`
    }

    private onItemSelected(e: TocItemSelectedEvent) {
        if (this.toc.scrollTo(e.detail.value)) {
            e.preventDefault()
        }
    }
}
html`
    <my-page>
        <section data-toc-label="General">...</section>
        <section data-toc-label="Provider">...</section>
        <section data-toc-label="Settings" data-toc-level="1">...</section>
    </my-page>`
成员说明
scrollContainer (选项)滚动各节的元素.
isVisible (选项)返回TOC是否可见 。 卷轴返回时没有被跟踪 false。默认总是可见.
scrollOffset (选项)以像素表示的距离 。 默认为 24。 。 。 .
scrollSettleDelay (选项)毫秒不滚动事件,然后由滚动触发 scrollTo 结束了。 默认为 150。 。 。 .
items给 ftds-toc。 。 。 .
current本节的价值,即: ftds-toc。 。 。 .
scrollTo(value)向一节滚动,使其流出并保持到滚动结束.
refresh()重新扫描区域.

ftds-page-layout 做这个给你 用它的 withToc 属性.

版本与发布记录

@fluid-topics/ftds-toc 共发布 26 个版本,首次发布于 2026/10/15;过去 12 个月发布了 26 个版本。

版本发布日期距今
2.2.52latest2026/11/141 天前
2.2.512026/11/133 天前
2.2.502026/11/114 天前
2.2.492026/11/115 天前
2.2.482026/11/105 天前
2.2.472026/11/078 天前

关于 @fluid-topics/ftds-toc 的常见问题

@fluid-topics/ftds-toc 是什么?

设计系统目录组件

如何安装 @fluid-topics/ftds-toc?

在项目目录运行 npm install @fluid-topics/ftds-toc,或使用 pnpm add / yarn add / bun add。

@fluid-topics/ftds-toc 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@fluid-topics/ftds-toc 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@fluid-topics/ftds-toc 可以商用吗?

@fluid-topics/ftds-toc 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@fluid-topics/ftds-toc 的下载量有多少?

根据 npm 官方下载统计,@fluid-topics/ftds-toc 在 2026/10/15 – 2026/11/13 这 30 天内被下载 18,708 次,日均约 624 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fluid-topics/ftds-toc 还在维护吗?

最新版本 2.2.52 发布于 2026/11/14(1 天前);至今共发布 26 个版本,其中过去 12 个月发布了 26 个;首次发布于 2026/10/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。