Menuメニュー
メニューコンポーネントは、縦方向に並んだ一連のオプションを提供します。ユーザーがボタンやその他のコントロールを操作すると、メニューが表示されます。
ドロップダウンメニューを実装する必要がある場合は、<mdui-dropdown> コンポーネントと組み合わせることができます。
コンポーネントを必要に応じてインポートします:
import 'mdui/components/menu.js';
import 'mdui/components/menu-item.js';
コンポーネントの TypeScript 型を必要に応じてインポートします:
import type { Menu } from 'mdui/components/menu.js';
import type { MenuItem } from 'mdui/components/menu-item.js';
使用例:
Item 1
Item 2
<mdui-menu>
<mdui-menu-item>Item 1</mdui-menu-item>
<mdui-menu-item>Item 2</mdui-menu-item>
</mdui-menu>
open dropdown
Item 1
Item 2
<mdui-dropdown>
<mdui-button slot="trigger">open dropdown</mdui-button>
<mdui-menu>
<mdui-menu-item>Item 1</mdui-menu-item>
<mdui-menu-item>Item 2</mdui-menu-item>
</mdui-menu>
</mdui-dropdown>
ソース
<mdui-menu> コンポーネントに dense 属性を追加すると、コンパクトレイアウトにできます。
Item 1
Item 2
Item 3
<mdui-menu dense>
<mdui-menu-item>Item 1</mdui-menu-item>
<mdui-menu-item>Item 2</mdui-menu-item>
<mdui-menu-item>Item 3</mdui-menu-item>
</mdui-menu>
ソース
<mdui-menu-item> コンポーネントに disabled 属性を追加すると、メニュー項目を無効にできます。
Item 1
Item 2
Item 3
<mdui-menu>
<mdui-menu-item disabled>Item 1</mdui-menu-item>
<mdui-menu-item>Item 2</mdui-menu-item>
<mdui-menu-item>Item 3</mdui-menu-item>
</mdui-menu>
ソース
<mdui-menu> コンポーネントで selects 属性を single に指定すると、単一選択が可能になります。この場合、<mdui-menu> の value 値は、現在選択されている <mdui-menu-item> の value 値になります。
Item 1
Item 2
<mdui-menu selects="single" value="item-2">
<mdui-menu-item value="item-1">Item 1</mdui-menu-item>
<mdui-menu-item value="item-2">Item 2</mdui-menu-item>
</mdui-menu>
ソース
<mdui-menu> コンポーネントで selects 属性を multiple に指定すると、複数選択が可能になります。この場合、<mdui-menu> の value 値は、現在選択されている <mdui-menu-item> の value 値からなる配列になります。
注意:複数選択モードでは、<mdui-menu> の value 値は配列であり、JavaScript プロパティを通じてのみ読み取りと設定ができます。
Item 1
Item 2
Item 3
<mdui-menu selects="multiple" class="example-multiple">
<mdui-menu-item value="item-1">Item 1</mdui-menu-item>
<mdui-menu-item value="item-2">Item 2</mdui-menu-item>
<mdui-menu-item value="item-3">Item 3</mdui-menu-item>
</mdui-menu>
<script>
// item-1 と item-2 をデフォルトで選択状態に設定
const menu = document.querySelector(".example-multiple");
menu.value = ["item-1", "item-2"];
</script>
ソース
<mdui-menu-item> コンポーネントで icon と end-icon 属性を設定すると、メニュー項目の左側と右側に Material Icons アイコンを追加できます。end-text 属性を設定すると、右側にテキストを追加できます。また、icon、end-icon、end-text スロットを使用して、メニュー項目の左側と右側にアイコンとテキストを追加することもできます。
メニュー項目の左側に他の項目と揃えるためのスペースを確保したい場合は、icon 属性を空文字列に設定します。
Item 1
Item 2
Ctrl+X
Item 3
<mdui-menu>
<mdui-menu-item icon="visibility" end-icon="add_circle" end-text="Ctrl+X">Item 1</mdui-menu-item>
<mdui-menu-item>
Item 2
<mdui-icon slot="icon" name="visibility"></mdui-icon>
<mdui-icon slot="end-icon" name="add_circle"></mdui-icon>
<span slot="end-text">Ctrl+X</span>
</mdui-menu-item>
<mdui-menu-item icon="">Item 3</mdui-menu-item>
</mdui-menu>
ソース単一選択または複数選択モードでは、selected-icon 属性または selected-icon スロットを使用して選択状態のアイコンを設定できます。
Item 1
Item 2
<mdui-menu selects="multiple">
<mdui-menu-item value="item-1" selected-icon="cloud_done">Item 1</mdui-menu-item>
<mdui-menu-item value="item-2">
<mdui-icon slot="selected-icon" name="done_outline"></mdui-icon>
Item 2
</mdui-menu-item>
</mdui-menu>
ソース
<mdui-menu-item> コンポーネントに href 属性を設定すると、メニュー項目をリンクに変換できます。この場合、リンク関連の属性 download、target、rel も使用できます。
Item 1
Item 2
<mdui-menu>
<mdui-menu-item href="https://www.mdui.org" target="_blank">Item 1</mdui-menu-item>
<mdui-menu-item>Item 2</mdui-menu-item>
</mdui-menu>
ソース
<mdui-menu-item> コンポーネントで submenu スロットを使用して、サブメニュー項目の要素を指定できます。
Line spacing
Single
1.5
Double
Custom: 1.2
Paragraph style
<mdui-menu>
<mdui-menu-item>
Line spacing
<mdui-menu-item slot="submenu">Single</mdui-menu-item>
<mdui-menu-item slot="submenu">1.5</mdui-menu-item>
<mdui-menu-item slot="submenu">Double</mdui-menu-item>
<mdui-menu-item slot="submenu">Custom: 1.2</mdui-menu-item>
</mdui-menu-item>
<mdui-menu-item>Paragraph style</mdui-menu-item>
</mdui-menu>
ソース<mdui-menu> コンポーネントで、submenu-trigger 属性を使用してサブメニューのトリガー方法を設定できます。
Line spacing
Single
1.5
Double
Custom: 1.2
Paragraph style
<mdui-menu submenu-trigger="click">
<mdui-menu-item>
Line spacing
<mdui-menu-item slot="submenu">Single</mdui-menu-item>
<mdui-menu-item slot="submenu">1.5</mdui-menu-item>
<mdui-menu-item slot="submenu">Double</mdui-menu-item>
<mdui-menu-item slot="submenu">Custom: 1.2</mdui-menu-item>
</mdui-menu-item>
<mdui-menu-item>Paragraph style</mdui-menu-item>
</mdui-menu>
ソースsubmenu-trigger 属性が hover に設定されている場合、<mdui-menu> コンポーネントで submenu-open-delay と submenu-close-delay 属性を使用してサブメニューの開く遅延と閉じる遅延を設定できます。
Line spacing
Single
1.5
Double
Custom: 1.2
Paragraph style
<mdui-menu submenu-trigger="hover" submenu-open-delay="1000" submenu-close-delay="1000">
<mdui-menu-item>
Line spacing
<mdui-menu-item slot="submenu">Single</mdui-menu-item>
<mdui-menu-item slot="submenu">1.5</mdui-menu-item>
<mdui-menu-item slot="submenu">Double</mdui-menu-item>
<mdui-menu-item slot="submenu">Custom: 1.2</mdui-menu-item>
</mdui-menu-item>
<mdui-menu-item>Paragraph style</mdui-menu-item>
</mdui-menu>
ソース
<mdui-menu-item> コンポーネントで custom スロットを使用すると、メニュー項目のコンテンツを完全にカスタマイズできます。
<style>
.custom-item {
padding: 4px 12px;
}
.custom-item .secondary {
display: none;
color: #888;
font-size: 13px;
}
.custom-item:hover .secondary {
display: block
}
</style>
<mdui-menu>
<mdui-menu-item>
<div slot="custom" class="custom-item">
<div>ABS</div>
<div class="secondary">数値の絶対値を取る</div>
</div>
</mdui-menu-item>
<mdui-menu-item>
<div slot="custom" class="custom-item">
<div>ACOS</div>
<div class="secondary">数値のアークコサイン(ラジアン)を返す</div>
</div>
</mdui-menu-item>
<mdui-menu-item>
<div slot="custom" class="custom-item">
<div>ACOSH</div>
<div class="secondary">数値の双曲線アークコサインを返す</div>
</div>
</mdui-menu-item>
</mdui-menu>
ソース| HTML 属性 | JavaScript プロパティ | Reflect | 型 | デフォルト値 |
|---|
メニューアイテムの値です。
|
メニューアイテムを無効にするかどうかを指定します。
|
左側に表示するMaterial Iconsのアイコン名です。slot="icon" で設定することもできます。
左側にアイコンを表示する必要はないが、アイコン用のスペースを確保したい場合は、空の文字列を渡してプレースホルダーとすることができます。
|
右側に表示するMaterial Iconsのアイコン名です。slot="end-icon" で設定することもできます。
|
右側に表示するテキストです。slot="end-text" で設定することもできます。
|
選択状態のMaterial Iconsアイコン名です。slot="selected-icon" で設定することもできます。
|
サブメニューを開くかどうかを指定します。
|
リンク先のURLです。
この属性を設定すると、コンポーネント内部は <a> 要素としてレンダリングされ、リンク関連の属性が使用可能になります。
|
ダウンロードリンクの対象ファイル名です。
注:href 属性が設定されている場合にのみ有効です。
|
リンクの開き方です。次の値を指定します:
_blank:新しいウィンドウで開く
_parent:親フレームで開く
_self:デフォルト。現在のフレームで開く
_top:最上位のウィンドウで開く
注:href 属性が設定されている場合にのみ有効です。
|
現在のドキュメントとリンク先ドキュメントの関係です。次の値を指定します:
alternate:現在のドキュメントの代替バージョン
author:現在のドキュメントまたは記事の作成者
bookmark:直近の祖先セクションへのパーマリンク
external:参照先ドキュメントが現在のサイトとは異なるサイトにあることを示します
help:関連するヘルプドキュメントへのリンク
license:現在のドキュメントのメインコンテンツが、参照先ファイルの著作権ライセンスの対象であることを示します
me:現在のドキュメントがリンク先コンテンツの所有者を表します
next:現在のドキュメントがシリーズの一部であり、参照先ドキュメントがシリーズの次のドキュメントです
nofollow:現在のドキュメントの作成者または発行者が、参照先ファイルを推奨していないことを示します
noreferrer:Referer ヘッダーを含めません。noopener と同様の効果です
opener:ハイパーリンクが最上位のブラウジングコンテキストを作成する場合(つまり target 属性値が _blank)、補助ブラウジングコンテキストを作成します
prev:現在のドキュメントがシリーズの一部であり、参照先ドキュメントがシリーズの前のドキュメントです
search:現在のファイルとその関連ページを検索するために使用できるリソースへのリンクを提供します
tag:現在のドキュメントに適用されるタグ(指定されたアドレスで識別される)を提供します
注:href 属性が指定されている場合にのみ使用できます。
|
ページ読み込み完了後、自動的にフォーカスを取得するかどうかを指定します。
|
Tab キーによるフォーカス移動時の、要素の順序を指定します。
|
| 名前 | パラメーター | 戻り値 |
|---|
要素のマウスクリックをシミュレートします。
|
現在の要素にフォーカスを設定します。
オプションとして、以下のプロパティを持つオブジェクトを渡すことができます:
preventScroll:デフォルトでは、要素がフォーカスを取得すると、その要素がビュー内に表示されるようにページがスクロールします。ページのスクロールを防ぐには、このプロパティを true に設定します。
|
現在の要素からフォーカスを外します。
|
| 名前 |
|---|
フォーカスを取得したときに発生します。
|
フォーカスを失ったときに発生します。
|
サブメニューが開き始めたときに発生するイベントです。event.preventDefault() を呼び出すことで、サブメニューが開くのを防ぐことができます。
|
サブメニューのオープンアニメーションが完了したときに発生するイベントです。
|
サブメニューが閉じ始めたときに発生するイベントです。event.preventDefault() を呼び出すことで、サブメニューが閉じるのを防ぐことができます。
|
サブメニューのクローズアニメーションが完了したときに発生するイベントです。
|
| 名前 |
|---|
メニューアイテムのテキスト
|
メニューアイテムの左側のアイコン
|
メニューアイテムの右側のアイコン
|
メニュー右側のテキスト
|
選択状態のアイコン
|
サブメニュー
|
任意のカスタムコンテンツ
|
| 名前 |
|---|
メニューアイテムのコンテナ
|
左側のアイコン
|
テキストコンテンツ
|
右側のアイコン
|
右側のテキスト
|
選択状態のアイコン
|
サブメニュー要素
|
| HTML 属性 | JavaScript プロパティ | Reflect | 型 | デフォルト値 |
|---|
メニューアイテムの選択可能状態です。デフォルトは選択不可です。次の値を指定します:
single:単一選択
multiple:複数選択
|
現在選択されている <mdui-menu-item> の値です。
注:この属性のHTML属性値は常に文字列として扱われ、selects="single" の場合にのみHTML属性で初期値を設定できます。この属性のJavaScriptプロパティ値は、selects="single" の場合は文字列、selects="multiple" の場合は文字列の配列になります。したがって、selects="multiple" の場合にこの値を変更するには、JavaScriptプロパティ値を変更する必要があります。
|
メニューアイテムにコンパクトなレイアウトを使用するかどうかを指定します。
|
サブメニューのトリガー方法です。スペース区切りで複数の値を指定できます。次の値があります:
click:メニューアイテムをクリックしたときにサブメニューを開く
hover:メニューアイテムにマウスをホバーしたときにサブメニューを開く
focus:メニューアイテムにフォーカスしたときにサブメニューを開く
manual:プログラムからのみサブメニューの開閉が可能です。他のトリガー方法と併用できません。
|
マウスホバーでサブメニューが開くまでの遅延時間(ミリ秒単位)です。
|
マウスホバーでサブメニューが閉じるまでの遅延時間(ミリ秒単位)です。
|
| 名前 | パラメーター | 戻り値 |
|---|
現在の要素にフォーカスを設定します。
|
現在の要素からフォーカスを外します。
|
| 名前 |
|---|
メニューアイテムの選択状態が変化したときに発生します。
|
| 名前 |
|---|
コンポーネントの角丸のサイズ。ピクセル値で直接指定できますが、デザイントークンを参照することをお勧めします。
|
次の章
NavigationBar ボトムナビゲーションバー