mcpField
S
syncfusion-aspnetcore-context-menu

syncfusion-aspnetcore-context-menu

github.com/syncfusion開発098 回インストール3 週間前に更新
リポジトリ

syncfusion-aspnetcore-context-menu について

ASP.NET Core で Syncfusion ContextMenu を実装する開発者向けガイドです。入れ子メニュー、カスタマイズ、イベント、RTL 表示などを扱います。

主な機能

  1. 01対象要素を基点にメニューを表示
  2. 02階層型メニューの構築
  3. 03アイコンとナビゲーションリンクの設定
  4. 04テンプレートとメニューイベントのカスタマイズ
  5. 05スクロール、アニメーション、RTL に対応
  6. 06状態の保持とローカライズ設定

活用シーン

  1. 01ファイル一覧に操作メニューを追加
  2. 02データグリッドの行に操作項目を表示
  3. 03エディターに書式設定コマンドを表示
  4. 04ページ間のナビゲーションを提供

インストール

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

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

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

同梱ファイル

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

references/
animation-scrolling.md
api-reference.md
event-handling.md
getting-started.md
icons-navigation-customization.md
menu-items-and-data-binding.md
templates-customization.md

詳細

Syncfusion ContextMenu の実装

このスキルを使用するタイミング

次のような場合に ContextMenu コンポーネントを使用します。

  • 状況に応じたメニューを表示する:対象要素上での右クリックや長押しをきっかけに表示します
  • 複数階層のネストされたメニューを作成する:階層構造のメニュー項目を作成します
  • メニュー項目にアイコンや視覚的なインジケーターを追加する:CSS アイコンクラスを使用します
  • メニュー項目にナビゲーションリンクを実装する:別のページに移動するためのリンクを設定します
  • メニュー項目の選択を処理する:プログラムによるロジックやイベント駆動型のロジックで処理します
  • メニューの外観をカスタマイズする:CSS クラス、テンプレート、アニメーションを使用します
  • キーボードナビゲーションをサポートする:アクセシブルなメニュー操作を実現します
  • スクロール可能なメニューを有効にする:メニュー項目が多く、ビューポートを超える場合に使用します
  • アニメーションを適用する:複数のエフェクトから選択してサブメニューの遷移を設定します
  • コンポーネントの状態を保持する:ページ再読み込み後も状態を維持し、ロケールのカスタマイズを保持します
  • RTL(右から左)レンダリングをサポートする:国際化されたアプリケーションに対応します
  • カスタム項目テンプレートをレンダリングする:単純なテキストを超える複雑なメニュー項目のレイアウトを作成します

コンポーネントの概要

Syncfusion ContextMenu は、ユーザー操作(通常は対象要素上での右クリック)に応じてコマンドやメニュー項目の一覧を表示する、軽量なナビゲーションコンポーネントです。次の機能を備えています。

  • 対象ベースのトリガー:CSS セレクターを使用して、特定の DOM 要素にコンテキストメニューを関連付けます
  • 複数階層のネスト:親メニュー項目内にネストされたサブメニュー項目をサポートします
  • アイコンのサポート:メニュー項目に CSS アイコンクラス(例:e-icons、Font Awesome)を適用します
  • ナビゲーションとの統合:メニュー項目の URL プロパティを使用して直接移動します
  • 豊富なアニメーション:設定可能な時間で複数の遷移エフェクト(SlideDown、ZoomIn、FadeIn、None)を使用できます
  • スクロール可能なコンテンツ:メニューの高さがビューポートを超える場合に、垂直スクロールを有効にします
  • テンプレートのカスタマイズ:複雑なメニュー項目のレイアウトに合わせて、カスタム HTML テンプレートを定義します
  • イベントシステム:メニューのライフサイクルイベント(beforeOpen、onOpen、select、beforeClose、onClose)を取得します
  • 項目のレンダリングフック:beforeItemRender イベントを使用して、レンダリングごとに個々の項目をカスタマイズします
  • セレクターによるフィルタリング:CSS セレクターパターンを使用して、コンテナー内の対象要素をフィルタリングします
  • ホバー遅延:ホバー時にサブメニューが表示されるまでの遅延時間を設定します
  • 状態の保持:ページ再読み込み時にコンポーネントの状態を自動的に復元します
  • ロケールのサポート:コンポーネント固有のローカライズ設定で、グローバルなカルチャーを上書きします
  • RTL のサポート:RTL 言語向けに、右から左へのレンダリングを自動的に行います
  • HTML のサニタイズ:メニュー項目内の信頼できない HTML コンテンツのサニタイズを任意で行います
  • サブメニューの動作:サブメニューをホバー時に開くか、クリック時のみ開くかを制御します

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

はじめに

📄 参照: references/getting-started.md

  • 前提条件と ASP.NET Core プロジェクトのセットアップ
  • NuGet パッケージ(Syncfusion.EJ2.AspNet.Core)のインストール
  • _ViewImports.cshtml での TagHelper の登録
  • スタイルシートとスクリプトのリソース参照
  • Script Manager の登録
  • 対象要素を指定した基本的な ContextMenu の実装
  • シンプルなメニュー項目を含む最初のコンテキストメニューのレンダリング
  • items プロパティを使用した初期データバインディング
メニュー項目とデータバインディング

📄 参照: references/menu-items-and-data-binding.md

  • MenuItem の構造と必須プロパティ(text、id)
  • List と JSON オブジェクトを使用したデータバインディングのパターン
  • メニュー項目のプロパティ:text、id、separator、iconCss、items、url
  • 単一階層および複数階層のネストされたメニューの作成
  • 視覚的なグループ分けのための区切り線の使用(separator: true)
  • メニュー項目の動的な更新と変更
  • ローカルデータソースのパターンとデータ変換
アイコン、ナビゲーション、カスタマイズ

📄 参照: references/icons-navigation-customization.md

  • メニュー項目にアイコンを追加する iconCss プロパティ
  • Syncfusion 組み込みアイコン用の e-icons CSS クラス
  • メニュー項目のナビゲーションリンク用の URL プロパティ
  • アクションメニュー項目とナビゲーションメニュー項目の作成
  • メニュー項目のスタイル設定に使用するカスタム CSS クラス(cssClass プロパティ)
  • ホバー遅延の設定(hoverDelay プロパティ)
  • 対象要素の照合に使用するフィルターセレクター(filter プロパティ)
アニメーションとスクロール

📄 参照: references/animation-scrolling.md

  • サブメニューの遷移に使用する animationSettings の設定
  • アニメーション効果:None、SlideDown、ZoomIn、FadeIn
  • アニメーションのタイミングに関する Duration と easing のプロパティ
  • 大きなメニューリストに対応する enableScrolling プロパティ
  • オーバーフローするメニュー項目の垂直スクロール動作
  • メニューの高さを動的に調整する BeforeOpen イベント
  • スクロール可能なメニューのパフォーマンスに関する考慮事項
テンプレートとカスタムレンダリング

📄 参照: references/templates-customization.md

  • カスタムメニュー項目レイアウトに使用する itemTemplate プロパティ
  • 個々の項目をカスタマイズする beforeItemRender イベント
  • メニュー項目内でのカスタム HTML のレンダリング
  • メニュー項目への UI コンポーネント(チェックボックス、入力欄)の追加
  • beforeItemRender のイベント引数(MenuEventArgs の name プロパティ)
  • データに基づく項目 HTML の動的生成
  • レンダリングされた要素を通じた CSS のカスタマイズ
イベント処理と統合

📄 参照: references/event-handling.md

  • メニュー項目の選択やクリックを処理する select イベント
  • サブメニューが開く前に発生する beforeOpen イベント
  • メニューが閉じる前に発生する beforeClose イベント
  • サブメニューが開いたときに発生する onOpen イベント
  • メニューが閉じたときに発生する onClose イベント
  • レンダリング時のカスタマイズに使用する beforeItemRender イベント
  • コンポーネントの初期化完了を示す created イベント
  • イベント駆動型のメニュー操作と条件分岐ロジック

クイックスタートの例

Razor マークアップ(Index.cshtml):

@page
@model IndexModel

<div id="target">Right-click me</div>

<ejs-contextmenu id="contextmenu" target="#target" items="Model.MenuItems"></ejs-contextmenu>

PageModel(Index.cshtml.cs):

public class IndexModel : PageModel
{
    public List<object> MenuItems { get; set; }
    
    public void OnGet()
    {
        MenuItems = new List<object>
        {
            new { text = "Cut", id = "cut", iconCss = "e-icons e-cut" },
            new { text = "Copy", id = "copy", iconCss = "e-icons e-copy" },
            new { text = "Paste", id = "paste", iconCss = "e-icons e-paste" },
            new { separator = true },
            new { 
                text = "Font", 
                id = "font",
                items = new List<object>
                {
                    new { text = "Bold", id = "bold" },
                    new { text = "Italic", id = "italic" }
                }
            }
        };
    }
}

よくあるパターン

パターン用途参照先
右クリックメニューマウスの右クリックで表示するコンテキストメニューgetting-started.md
階層型項目複数レベルのネストされたメニュー構造menu-items-and-data-binding.md
アイコンのサポート視覚的なアイコン付きのメニュー項目icons-navigation-customization.md
ナビゲーションリンクナビゲーションショートカットとしてのメニュー項目icons-navigation-customization.md
アニメーション付きの遷移サブメニューの表示効果animation-scrolling.md
スクロール可能なメニューオーバーフローする大きなメニューリストanimation-scrolling.md
カスタムテンプレート複雑な項目レイアウトtemplates-customization.md
選択処理項目の選択への応答event-handling.md
ホバー遅延サブメニューの表示タイミングの制御icons-navigation-customization.md
RTL サポート右から左に記述する言語の表示getting-started.md

主なプロパティ

プロパティ型目的例
targetstring対象要素の CSS セレクター"#menuTarget" または ".menu-area"
itemsMenuItemModel[]メニュー項目定義の配列text、id プロパティを持つオブジェクトのリスト
animationSettingsMenuAnimationSettingsModelサブメニューを開くアニメーションの設定effect: "ZoomIn"、duration: 500
enableScrollingbooleanオーバーフロー時に垂直スクロールを有効にする大きなメニューの場合は true
hoverDelaynumberホバー時にサブメニューが開くまでの遅延時間(ミリ秒)500
showcItemOnClickbooleanサブメニューをクリック時のみ開くホバーで開かないようにする場合は true
itemTemplatestring or Function項目用のカスタム HTML テンプレートHTML 文字列またはコールバック関数
cssClassstringメニューラッパーのスタイル設定に使用する CSS クラス"custom-context-menu dark-theme"
filterstring対象要素を絞り込む CSS セレクター".menu-enabled"
enableRtlboolean右から左への表示true
enablePersistencebooleanページの再読み込み後も状態を保持するtrue
localestringコンポーネントのロケールを上書きする"fr-FR"
enableHtmlSanitizerboolean信頼できない HTML をサニタイズするユーザーコンテンツには true を推奨

一般的なユースケース

1. ファイルマネージャーのコンテキストメニュー ファイル一覧にコンテキストメニューを追加し、アイコン付きで切り取り、コピー、貼り付け、削除、名前変更の操作を提供します。

2. テキストエディターのツールバー 右クリックで書式設定オプション(太字、斜体、下線)やテキスト編集機能にアクセスできるようにします。

3. データグリッドの行アクション グリッドの行にコンテキストメニューを表示し、選択した行の編集、表示、削除、エクスポートを行います。

4. ナビゲーションショートカット アプリケーションの各セクションや外部リソースへのリンクを提供する、すばやくアクセスできるメニューです。

5. 多言語サポート ロケールに応じた書式を設定し、グローバル化されたアプリケーションのデフォルトカルチャを上書きします。


次のステップ

  • プロパティとメソッドの詳細については、API リファレンスを確認してください
  • ContextMenu を他のナビゲーションコンポーネント(Toolbar、Sidebar)と組み合わせて、包括的な UI を構築します
  • アクセシビリティを向上させるため、コンテキストメニューと併せてキーボードショートカットを実装します
  • 国際的なユーザーを対象とする場合は、RTL 表示をテストします
  • 大量のメニュー項目(>100)を表示する際は、パフォーマンスへの影響を考慮します

コメント