--- name: dropdown-component overview: 在 fms-vue 组件库中新增 Dropdown 下拉菜单组件:基于现有 Popover 浮层派生,采用数据驱动 items(label/icon/shortcut/disabled/danger/divider/子菜单)+ 默认插槽逃生舱,支持 click/hover/contextmenu 触发与键盘导航,样式参考 shadcn(白卡片、圆角、hover 高亮、分隔线、危险项、快捷键),并补充 demo 与 App.vue 导航注册。 design: architecture: framework: vue styleKeywords: - 卡片式浮层 - 紧凑列表 - hover 高亮 - 危险变体 - 精致微交互 fontSystem: fontFamily: Noto Sans SC, PingFang SC heading: size: 14px weight: 500 subheading: size: 12px weight: 500 body: size: 14px weight: 400 colorSystem: primary: - "#0f172b" - "#1677ff" background: - "#ffffff" - "#f5f6f8" - "#1a1d24" text: - "#1f2329" - "#86909c" functional: - "#ef4444" - "#e5e6eb" todos: - id: popover-contextmenu content: 用 [skill:antdv-next] 确认右键触发交互,扩展 Popover 支持 trigger=contextmenu(validator + 右键坐标定位) status: completed - id: dropdown-tokens content: tokens.css 新增 --fms-dropdown-* 尺寸 token(min-width/max-height/item padding/radius/divider margin) status: completed - id: dropdown-style content: 用 [skill:ui-ux-pro-max] 参考设计,创建 dropdown/index.scss(shadcn 风格菜单卡片/项/分隔线/危险态/子菜单箭头) status: completed dependencies: - dropdown-tokens - id: dropdown-component content: 创建 dropdown/dropdown.vue(items 数据驱动、键盘导航、子菜单、插槽逃生舱、ARIA) status: completed dependencies: - popover-contextmenu - dropdown-style - id: dropdown-demo content: 创建 demo/dropdown.vue 并注册到 App.vue「数据展示」分类与 demoMap status: completed dependencies: - dropdown-component - id: static-check content: 静态检查全部改动文件(oxlint)并汇报变更清单与已知风险 status: completed dependencies: - dropdown-demo --- ## 产品概述 在 fms-vue 组件库中新增 **Dropdown 下拉菜单**组件:功能与交互参考 antdv-next(数据驱动 items、多种触发方式、子菜单、键盘操作),样式与设计参考 shadcn DropdownMenu(卡片式浮层、hover 高亮、危险项、快捷键、图标、勾选指示),并严格遵循 `fms-vue/开发规范.md`。 ## 核心功能 - **数据驱动菜单**:`items` prop 定义菜单项,结构支持 `key / label / icon / shortcut / disabled / danger / divider / type: 'label'(分组标题)/ children(子菜单)`;不传 items 时提供默认插槽逃生舱(对齐 Select 模式) - **多种触发方式**:`click`(默认)/ `hover` / `contextmenu`(右键,需扩展 Popover 以支持右键坐标定位) - **子菜单**:`children` 嵌套渲染,hover 展开右侧子菜单 - **键盘导航**:打开后聚焦菜单容器,方向键/Home/End 移动高亮,Enter 选择,Esc 关闭,`aria-activedescendant` 无障碍 - **受控/非受控**:`open` / `default-open`,事件 `update:open` / `openChange` / `click` - **视觉要素**(shadcn 风格):卡片浮层(圆角/边框/阴影)、菜单项 hover/focus 高亮、禁用灰、danger 红、分隔线、分组小标签、快捷键右侧、图标左侧 - **演示接入**:新增 `demo/dropdown.vue` 并在 App.vue「数据展示」分类注册,演示基础/图标+快捷键/分隔线/禁用/危险/子菜单/hover/右键/受控 ## 技术栈 - Vue 3 `