mcpField
S
syncfusion-react-menu

syncfusion-react-menu

github.com/syncfusionデザイン・UI3623 回インストール1 週間前に更新
リポジトリ

syncfusion-react-menu について

Syncfusion Menu コンポーネントでナビゲーションを構築する React 開発者向けのガイドです。データバインディング、レスポンシブなハンバーガーモード、項目管理、イベント、キーボード操作、アクセシビリティを扱います。

主な機能

  1. 01多階層メニュー構造
  2. 02階層型・自己参照データのバインド
  3. 03ハンバーガーモードとスクロール
  4. 04項目と状態の動的管理
  5. 05イベント処理とアニメーション
  6. 06キーボード操作と RTL 対応

活用シーン

  1. 01アプリのナビゲーション構築
  2. 02モバイル向けハンバーガーメニューの作成
  3. 03ファイルや操作のドロップダウン作成
  4. 04JSON から階層メニューを生成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/syncfusion/react-ui-components-skills --skill syncfusion-react-menu

インストール後、Claude Code で/syncfusion-react-menuを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
accessibility.md
data-binding.md
events-and-callbacks.md
events-and-interactions.md
getting-started.md
hamburger-mode.md
menu-items-customization.md
methods-api.md
orientation-and-layout.md
properties-and-configuration.md
styling-and-appearance.md
use-case-scenarios.md

詳細

Syncfusion React Menu コンポーネントの実装

Syncfusion React Menu コンポーネントは、アイコン、区切り線、アニメーション、アクセシビリティ、ハンバーガーモード、スクロール、イベント処理、項目の状態管理に対応した、柔軟で多機能なナビゲーションコントロールです。ナビゲーションバー、ドロップダウンメニュー、コンテキストメニュー、モバイル対応メニュー、複雑な階層型ナビゲーションシステムの構築に使用できます。

このスキルを使用する場面

  • ナビゲーションメニューの構築: ファイルメニュー、アプリケーションメニュー、メインナビゲーションバー
  • ドロップダウンメニュー: ユーザーアクションメニュー、コンテキストに応じたオプション
  • サブメニューシステム: 複数レベルの階層型ナビゲーション
  • ハンバーガー/モバイルメニュー: モバイルデバイス向けのレスポンシブメニュー
  • メニューのカスタマイズ: 項目、アイコン、区切り線、カスタムスタイルの追加/削除
  • イベント処理: メニュー項目のクリック、開閉イベント、項目の状態変更の検出
  • データ駆動型メニュー: JSON データ構造(階層型または自己参照型)へのメニューのバインド
  • 項目の状態管理: メニュー項目の有効化/無効化、表示/非表示、更新
  • アクセシビリティ: キーボード操作に対応し、スクリーンリーダーで使いやすいメニューの作成
  • RTL 対応: 右から左に読む言語向けのメニュー
  • スクロール可能なメニュー: 水平/垂直スクロールに対応した大規模なメニュー
  • 状態の永続化: ページの再読み込み後もメニューの状態を保持

コンポーネントの概要

主な機能
  • 無制限のネストレベルに対応した階層型メニュー
  • 階層型または自己参照型の JSON データへのデータバインディング
  • 視覚的な整理に役立つアイコンと区切り線のサポート
  • クリック、開閉、描画の操作に対応したイベントシステム
  • タイミングとイージングを設定できるアニメーション効果
  • キーボードナビゲーションと WCAG アクセシビリティ準拠
  • 右から左に読む言語向けのRTL 対応
  • 水平/垂直スクロールに対応したレスポンシブレイアウト
  • 項目の状態管理 - 項目の動的な追加、削除、有効化/無効化、表示/非表示
  • モバイル対応メニュー向けのハンバーガーモード
  • 状態の永続化 - ページの再読み込み後もメニューの状態を保存・復元
  • セキュリティのためのHTML サニタイズ
  • サブメニューの表示タイミングを制御するホバーディレイ
  • 柔軟なスタイル設定に使えるカスタム CSS クラス
代替コンポーネントより Menu を選ぶ場面
コンポーネント最適な用途
Menu階層型ナビゲーション、ドロップダウンメニュー、ファイルメニュー、ハンバーガーメニュー
Navbar上部に配置する直線的なナビゲーション
Sidebar固定サイドナビゲーションパネル
Tabs切り替え可能なフラットなコンテンツセクション

クイックスタート

import { MenuComponent, MenuItemModel } from '@syncfusion/ej2-react-navigations';
import React from 'react';

function App() {
  const menuItems: MenuItemModel[] = [
    {
      text: 'File',
      items: [
        { text: 'New' },
        { text: 'Open' },
        { text: 'Save' }
      ]
    },
    {
      text: 'Edit',
      items: [
        { text: 'Cut' },
        { text: 'Copy' },
        { text: 'Paste' }
      ]
    }
  ];

  return (
    <MenuComponent items={menuItems}></MenuComponent>
  );
}

export default App;

ドキュメントとナビゲーションガイド

はじめに

📄 参照: references/getting-started.md

  • Vite/Create React App を使ったインストールとパッケージのセットアップ
  • CSS のインポートとテーマの設定
  • MenuItemModel を使った基本的なメニューの作成
  • React での MenuComponent の組み込み
  • 初回の描画と初期化
  • リップル効果
  • 参照する場面: 新しい Menu の実装を開始するとき、プロジェクトをセットアップするとき
プロパティと設定

📄 参照: references/properties-and-configuration.md

  • MenuComponent のすべてのプロパティと説明
  • デフォルト値と受け付ける型
  • 各プロパティの設定例
  • animationSettings、cssClass、enableHtmlSanitizer、enablePersistence
  • enableRtl、enableScrolling、hamburgerMode、hoverDelay
  • locale、orientation、showItemOnClick、target、title
  • 参照する場面: コンポーネントの動作を設定するとき、アニメーションを設定するとき、機能を有効にするとき
メソッドと API

📄 参照: references/methods-api.md

  • 詳細なドキュメント付きの MenuComponent の全メソッド
  • insertBefore()、insertAfter()、removeItems() - 項目の操作
  • enableItems()、hideItems()、showItems() - 項目の状態管理
  • getItemIndex()、setItem() - 項目へのアクセスと更新
  • open()、close() - ハンバーガーモードの制御
  • destroy() - クリーンアップ
  • すべてのメソッドの完全なコード例
  • 参照するタイミング: メニュー項目を動的に操作する場合、メニューの状態を制御する場合
イベントとコールバック

📄 参照: references/events-and-callbacks.md

  • 完全なドキュメント付きのすべてのイベントタイプ
  • イベント引数: MenuEventArgs、BeforeOpenCloseMenuEventArgs、OpenCloseMenuEventArgs
  • select、beforeOpen、beforeClose、onOpen、onClose イベント
  • beforeItemRender イベントと created ライフサイクルイベント
  • イベント処理のパターンとコールバックの例
  • 参照するタイミング: ユーザー操作に応答する場合、ライフサイクルイベントを処理する場合
データバインディング

📄 参照: references/data-binding.md

  • 階層型データバインディング
  • 自己参照型データ構造
  • FieldSettingsModel を使用した JSON データのマッピング
  • 複雑なネスト型データ階層
  • 動的なデータの更新と変更
  • API からのリアルタイムデータ
  • 参照するタイミング: データソースからメニューにデータを設定する場合
メニュー項目のカスタマイズ

📄 参照: references/menu-items-customization.md

  • insertBefore/insertAfter によるメニュー項目の追加
  • removeItems による項目の削除
  • enableItems による項目の有効化/無効化
  • showItems/hideItems による項目の表示/非表示
  • カスタム HTML 属性
  • 区切り線のサポート
  • 参照するタイミング: メニュー構造を動的に管理する場合
スタイルと外観

📄 参照: references/styling-and-appearance.md

  • アイコンの統合と配置
  • 区切り線の描画とカスタマイズ
  • ニーモニック UI の作成(キーボードショートカット)
  • RTL(右から左)サポート
  • カスタム CSS クラスとテーマの統合
  • アニメーション設定とエフェクト
  • ダークモードのサポート
  • 参照するタイミング: 外観やテーマをカスタマイズする場合
ハンバーガーモードとモバイルモード

📄 参照: references/hamburger-mode.md

  • ハンバーガーモードのセットアップと設定
  • モバイル対応の実装
  • hamburgerMode、target、title プロパティ
  • open() メソッドと close() メソッド
  • Sidebar および Accordion との統合
  • モバイルファーストの設計パターン
  • 参照するタイミング: モバイル対応メニューを構築する場合
ユースケースのシナリオ

📄 参照: references/use-case-scenarios.md

  • スクロール可能なメニューの実装
  • Toolbar とのメニュー統合
  • Sidebar を使ったハンバーガーメニュー
  • ListView を使ったモバイル表示
  • コンテキストメニューのパターン
  • 動的なデータ駆動型メニュー
  • 参照するタイミング: 実際のシナリオに応じた特定のメニューパターンを構築する場合
アクセシビリティ

📄 参照: references/accessibility.md

  • WCAG 準拠基準
  • WAI-ARIA 属性
  • キーボード操作のパターン
  • スクリーンリーダーのサポート
  • フォーカス管理
  • 色のコントラストに関するガイドライン
  • アクセシビリティのテスト
  • 参照するタイミング: すべてのユーザーがメニューを利用できるようにする場合

クイックスタートの例

import { MenuComponent, MenuItemModel } from '@syncfusion/ej2-react-navigations';
import * as React from 'react';

function App() {
  // Define menu structure
  const menuItems: MenuItemModel[] = [
    {
      text: 'File',
      items: [
        { text: 'New' },
        { text: 'Open' },
        { text: 'Save' },
        { separator: true },
        { text: 'Exit' }
      ]
    },
    {
      text: 'Edit',
      items: [
        { text: 'Cut' },
        { text: 'Copy' },
        { text: 'Paste' }
      ]
    },
    {
      text: 'Help'
    }
  ];

  return (
    <MenuComponent items={menuItems}></MenuComponent>
  );
}

export default App;

主要プロパティのリファレンス

プロパティ型デフォルト用途
itemsMenuItemModel[][]表示するメニュー項目
fieldsFieldSettingsModel-データフィールドのマッピング
hamburgerModebooleanfalseモバイル向けのハンバーガービューを有効にします
enableScrollingbooleantrue項目数の多いメニューでのスクロールを許可します
enablePersistencebooleanfalseセッション間で状態を保存します
enableRtlbooleanfalse右から左へ記述するテキストをサポートします
orientationOrientationHorizontalレイアウトの方向
animationSettingsMenuAnimationSettings-アニメーションの設定
hoverDelaynumber400サブメニューのホバー遅延(ms)
showItemOnClickbooleanfalseクリック時のみ項目を表示します
enableHtmlSanitizerbooleantrueHTML コンテンツをサニタイズします
cssClassstring-カスタム CSS クラス
localestring'en-US'カルチャ/言語の設定
targetstring-ハンバーガー用の要素セレクター
titlestring-ハンバーガーモードのタイトルテキスト

主要メソッドのリファレンス

メソッドパラメーター用途
insertBefore()item, selectorメニュー項目の前に挿入します
insertAfter()item, selectorメニュー項目の後に挿入します
removeItems()selectorsセレクターで項目を削除します
enableItems()selectors, enable項目を有効化/無効化します
showItems()selectors非表示の項目を表示します
hideItems()selectors表示中の項目を非表示にします
setItem()item, selector項目のプロパティを更新します
getItemIndex()selectorメニュー内の項目インデックスを取得します
open()-ハンバーガーメニューを開きます
close()-ハンバーガーメニューを閉じます
destroy()-コンポーネントをクリーンアップします

主要イベントのリファレンス

イベント発生条件引数の型
selectメニュー項目がクリックされたときMenuEventArgs
beforeOpenサブメニューが開く前BeforeOpenCloseMenuEventArgs
beforeCloseサブメニューが閉じる前BeforeOpenCloseMenuEventArgs
onOpenサブメニューが開いた後OpenCloseMenuEventArgs
onCloseサブメニューが閉じた後OpenCloseMenuEventArgs
beforeItemRender項目のレンダリング前BeforeItemRenderEventArgs
createdコンポーネントの初期化時Object

よく使われるパターン

パターン 1:メニュー項目の選択への応答
const handleMenuSelect = (args) => {
  console.log(`Selected: ${args.item.text}`);
  // Handle the selected menu item
};

<MenuComponent 
  items={menuItems} 
  select={handleMenuSelect}
></MenuComponent>
パターン 2:メニュー項目の動的な追加
let menuObj: MenuComponent;

const addMenuItem = () => {
  menuObj.insertAfter([{ text: 'New Item' }], 'File');
};

<MenuComponent 
  ref={(menu) => (menuObj = menu)} 
  items={menuItems}
></MenuComponent>
パターン 3:メニュー項目の無効化
const handleBeforeOpen = (args) => {
  if (args.item.text === 'Save') {
    args.item.disabled = true; // Disable based on condition
  }
};

<MenuComponent 
  items={menuItems} 
  beforeOpen={handleBeforeOpen}
></MenuComponent>

主な学習手順

  1. ここから開始: references/getting-started.md - セットアップと基本的なメニューの作成
  2. データの追加: references/data-binding.md - メニューをデータソースにバインドする
  3. インタラクションの処理: references/events-and-callbacks.md - ユーザー操作に応答する
  4. 動的な制御: references/methods-api.md - メニューをプログラムで操作する
  5. 高度な機能: references/hamburger-mode.md - モバイル対応のパターン
  6. 実際のパターン: references/use-case-scenarios.md - 本番環境での実装例

すべてのリファレンスファイル

基礎
データと状態
インタラクションと制御
プレゼンテーションと UX
レガシー(元のファイル)
  • events-and-interactions.md - 基本的なイベント処理(包括的なドキュメントについては、events-and-callbacks.md を参照してください)
実際の実装例
  • use-case-scenarios.md - 8 つの完全なパターン:ファイルメニュー、ツールバー、サイドバー、ダッシュボード、モバイルアプリなど

関連スキル

コメント