mcpField
S
syncfusion-javascript-menu

syncfusion-javascript-menu

github.com/syncfusion设计与 UI058 次安装1 周前更新
代码仓库

关于 syncfusion-javascript-menu

面向开发者的 TypeScript 技能,指导使用 Syncfusion Menu 构建导航界面,涵盖层级数据、响应式布局、自定义、无障碍、事件和动态项目管理。

主要功能

  1. 01多层嵌套菜单项
  2. 02JSON 与服务数据绑定
  3. 03水平和垂直布局
  4. 04子菜单动画与滚动
  5. 05动态项目及事件管理
  6. 06键盘导航与 ARIA 支持

适用场景

  1. 01构建应用导航栏
  2. 02创建多层级分类菜单
  3. 03添加移动端汉堡菜单
  4. 04动态管理菜单项

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/syncfusion/javascript-ui-controls-skills --skill syncfusion-javascript-menu

安装后在 Claude Code 中输入/syncfusion-javascript-menu确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
accessibility-and-best-practices.md
advanced-features.md
api-reference.md
customization-and-styling.md
data-binding.md
getting-started.md
menu-items-and-hierarchy.md
use-cases-and-scenarios.md
working-with-events.md

详细介绍

实现 Syncfusion TypeScript 菜单

Syncfusion 菜单是一种图形用户界面组件,可用作应用和网站的导航栏。它支持多级嵌套菜单项、数据绑定、动画、滚动和全面的事件处理。

何时使用此技能

在以下情况下使用此技能:

  • 创建导航层级:构建包含多级嵌套项的分层菜单结构
  • 实现数据驱动菜单:将菜单项绑定到 JSON 数据、服务或自引用数据源
  • 自定义菜单外观:配置动画、方向、样式和主题
  • 处理菜单交互:响应用户点击、菜单打开/关闭事件以及菜单项选择
  • 构建响应式菜单:创建带滚动功能的水平/垂直菜单,以显示大型数据集
  • 支持无障碍访问:实现键盘导航和屏幕阅读器支持
  • 管理菜单状态:动态添加、移除、启用、禁用、显示或隐藏菜单项

控件概述

主要功能
  • 数据绑定:支持分层 JSON 数据、自引用数据和基于服务的数据源
  • 模板支持:使用 HTML 模板和自定义内容定制菜单项
  • 方向:以水平或垂直方向显示菜单
  • 动画:为子菜单应用淡入、缩放和向下滑动效果
  • 滚动:为水平和垂直菜单启用滚动
  • 无障碍访问:内置键盘导航和 ARIA 屏幕阅读器支持
  • 事件:全面的事件系统,包含 select、beforeOpen、onOpen、beforeClose、onClose 和 beforeItemRender
  • 菜单项管理:动态添加、移除、启用、禁用、显示或隐藏菜单项
  • RTL 支持:支持从右向左书写的语言
  • 汉堡菜单模式:适用于移动设备的响应式菜单

文档与导航指南

入门

📄 阅读: references/getting-started.md

  • 安装和软件包依赖项
  • 开发环境设置
  • CSS 导入和主题配置
  • 使用 TypeScript 初始化基本菜单
  • 菜单渲染所需的 HTML 结构
  • 运行第一个菜单应用
菜单项与层级

📄 阅读: references/menu-items-and-hierarchy.md

  • 创建简单的平面菜单项
  • 构建多级嵌套层级
  • MenuItem 属性概览
  • 菜单项文本、ID、URL 和图标
  • 用于分组的分隔项
  • MenuItemModel 接口参考
数据绑定与字段映射

📄 阅读: references/data-binding.md

  • 绑定分层 JSON 数据
  • 自引用数据源模式
  • 数据服务集成
  • 用于自定义字段映射的 FieldSettings
  • HTML 元素绑定
  • 处理大型数据集
自定义与样式

📄 阅读: references/customization-and-styling.md

  • CSS 类自定义
  • 水平与垂直方向
  • 动画设置和效果
  • 圆角样式
  • 使用模板创建自定义菜单项
  • 从右向左(RTL)支持
  • 主题自定义
使用事件

📄 阅读: references/working-with-events.md

  • 事件类型和生命周期
  • 处理 select 事件
  • beforeOpen 和 onOpen 事件
  • beforeClose 和 onClose 事件
  • beforeItemRender 事件
  • 事件参数属性
  • 实际事件示例
高级功能与菜单项管理

📄 阅读: references/advanced-features.md

  • 添加和移除菜单项
  • 启用和禁用菜单项
  • 隐藏和显示菜单项
  • 可滚动菜单(enableScrolling)
  • 子菜单定位
  • 用于移动设备的汉堡菜单模式
  • 菜单效果和过渡
  • 性能优化
用例和场景

📄 阅读: references/use-cases-and-scenarios.md

  • 包含大型数据集的可滚动菜单
  • 手风琴菜单模式
  • 侧边栏菜单实现
  • 工具栏集成
  • 上下文菜单模式
  • 助记符 UI 实现
  • 带图标和标题的菜单
无障碍功能和最佳实践

📄 阅读: references/accessibility-and-best-practices.md

  • 键盘导航支持
  • ARIA 属性和屏幕阅读器
  • 用于安全性的 HTML 清理
  • 移动端适配
  • 性能优化技巧
  • 常见问题和解决方案
  • 测试和验证
完整 API 参考

📄 阅读: references/api-reference.md

  • 菜单属性、类型和默认值
  • MenuItem 属性和选项
  • 菜单方法和参数
  • 带参数结构的事件
  • 动画效果和枚举
  • 字段设置配置
  • 每个 API 元素的完整代码示例

快速入门示例

import { Menu, MenuItemModel } from '@syncfusion/ej2-navigations';
import { enableRipple } from '@syncfusion/ej2-base';

enableRipple(true);

// Define menu items
let menuItems: MenuItemModel[] = [
    {
        text: 'File',
        items: [
            { text: 'Open' },
            { text: 'Save' },
            { text: 'Exit' }
        ]
    },
    {
        text: 'Edit',
        items: [
            { text: 'Cut' },
            { text: 'Copy' },
            { text: 'Paste' }
        ]
    },
    {
        text: 'View',
        items: [
            { text: 'Toolbar' },
            { text: 'Sidebar' }
        ]
    },
    { text: 'Help' }
];

// Initialize Menu
let menuObj: Menu = new Menu({ items: menuItems }, '#menu');

常见模式

模式 1:响应项目选择
let menuObj: Menu = new Menu({
    items: menuItems,
    select: (args: MenuEventArgs) => {
        console.log(`Selected: ${args.item.text}`);
    }
}, '#menu');
模式 2:动态管理项目
// Add new item
menuObj.insertAfter([{ text: 'Print' }], '#open');

// Enable/disable items
menuObj.enableItems([0, 1]);
menuObj.disableItems([2]);

// Show/hide items
menuObj.showItems([0, 1]);
menuObj.hideItems([2]);
模式 3:跟踪事件
let menuObj: Menu = new Menu({
    items: menuItems,
    beforeOpen: (args: BeforeOpenCloseMenuEventArgs) => {
        console.log('Menu opening:', args.name);
    },
    onOpen: (args: OpenCloseMenuEventArgs) => {
        console.log('Menu opened:', args.name);
    },
    beforeClose: (args: BeforeOpenCloseMenuEventArgs) => {
        console.log('Menu closing:', args.name);
    }
}, '#menu');
模式 4:从 JSON 绑定数据
let hierarchicalData: MenuItemModel[] = [
    {
        text: 'Categories',
        items: [
            { text: 'Electronics' },
            { text: 'Furniture' },
            { text: 'Accessories' }
        ]
    }
];

let menuObj: Menu = new Menu({ items: hierarchicalData }, '#menu');

主要属性和方法

必备属性
属性类型用途
itemsMenuItemModel[]要显示的菜单项数组
orientationOrientation水平或垂直布局
animationSettingsMenuAnimationSettingsModel子菜单的动画效果
enableScrollingboolean启用大型菜单的滚动
enableRtlboolean支持从右向左布局
cssClassstring自定义 CSS 类
fieldsFieldSettingsModel用于数据绑定的字段映射
必备方法
方法参数用途
open()element?: HTMLElement打开菜单或子菜单
close()-关闭菜单
enableItems()items: string[] | number[]启用指定菜单项
disableItems()items: string[] | number[]禁用指定菜单项
hideItems()items: string[] | number[]隐藏指定菜单项
showItems()items: string[] | number[]显示已隐藏的菜单项
insertAfter()items: MenuItemModel[], target?: string | number在目标项之后插入菜单项
insertBefore()items: MenuItemModel[], target?: string | number在目标项之前插入菜单项
removeItems()items: string[] | number[]移除指定菜单项

常见用例

  1. 应用程序导航:用于应用程序主导航栏
  2. 下拉菜单:上下文菜单和下拉导航
  3. 分层导航:多级类别或版块导航
  4. 响应式菜单:适用于移动设备的汉堡菜单
  5. 自定义布局:基于模板的自定义菜单项
  6. 动态更新:实时管理菜单项
  7. 无障碍功能:支持键盘导航的菜单

需要更多详情? 请查看上方的完整参考文档,了解实现示例、高级配置和最佳实践。

评论

支持 Markdown