--- name: dropdown-enhance overview: "增强组件库 Dropdown:支持 item 自带 onClick、新增 #header 富头部插槽、新增 DropdownItem 子组件(类 el-dropdown-item 写法),并把 AppTopbar 用户下拉迁移到新能力(头像+名字+组织头部)。同时保留现有 items 数组 + 全局 @click 与 #menu 逃生舱。" todos: - id: enhance-menu-onclick content: 修改 menu.vue 普通项点击先执行 item.onClick 再 selectItem status: completed - id: add-dropdown-item content: 新建 DropdownItem.vue 声明式子组件并定义 props status: completed dependencies: - enhance-menu-onclick - id: enhance-dropdown-header content: "dropdown.vue 增加 #header 插槽与 DropdownItem VNode 收集转 items" status: completed dependencies: - add-dropdown-item - id: add-header-style content: index.scss 新增 .dropdown-header 样式 status: completed dependencies: - enhance-dropdown-header - id: refactor-topbar content: "AppTopbar 用户下拉改用 #header 富头部并精简 items" status: completed dependencies: - enhance-dropdown-header - add-header-style - id: verify-uses content: 用 [subagent:code-explorer] 核查所有 Dropdown 用法无回归 status: completed dependencies: - refactor-topbar --- ## 用户需求 参考 Element Plus 的 `` 写法,增强项目组件库 `@/components/ui/dropdown` 的下拉菜单能力,使其更灵活、可自定义。 ## 产品概述 为 Dropdown 组件库新增三种能力并保持向后兼容: 1. items 数组项支持自带 `onClick(item)` 回调,点击某项时优先执行该项自己的回调,同时保留全局 `@click` 分发。 2. 支持 `` 子组件写法(具名/默认插槽声明每个菜单项),类似 el-dropdown-item 的声明式用法。 3. 新增 `#header` 插槽,在菜单项列表上方渲染「头像 + 名字 + 组织」等富头部内容。 现有能力(items + 全局 @click、#menu 逃生舱、键盘导航、子菜单 hover)必须全部保留不破坏。 ## 核心特性 - item 级别 `onClick`:在 items 配置里直接写点击处理函数,命中该项时直接触发,无需统一在 @click 里 switch。 - `` 子组件:支持 `key`/`icon`/`danger`/`disabled`/`divider` 等属性与默认插槽内容,可替代纯数组声明。 - `#header` 富头部插槽:Dropdown 浮层顶部可插入任意自定义富内容(顶部 header 区,与菜单项列表之间有分隔)。 - 向后兼容:未配置 onClick 的项仍走全局 @click;未使用 DropdownItem 时仍可用 items 数组;未使用 #header 时浮层不变。 - AppTopbar 用户下拉改造:将「头像 + 名字 + 组织」从 trigger 移到菜单 #header 插槽,trigger 仅保留头像或精简触发按钮。 ## 技术栈 - 前端框架:Vue 3(`