解剖学
- 1. ポップオーバー: ドロップダウンメニューがラップされているコンテナコンポーネント。
- 2. 親ボタン: ドロップダウンメニューを含むポップオーバーの表示を切り替えるために使用されるアイコンまたはボタン。
- 3. メニューアイテム: ドロップダウンメニュー内のリストアイテム。
デザインガイドライン
使用法
ドロップダウンメニューを使用するタイミング
ユーザーに次のことをさせたい場合は、ドロップダウンメニューを使用してください:
- リストからアクションを選択するか、設定を変更する、かつ
- 利用可能な選択肢を文脈に応じてのみ表示する。
常にすべての利用可能なオプションを表示する必要がある場合は、代わりにツールバーを使用することを検討してください。
すること
ユーザーがアイコンと対話した後にアクションのリストを表示するためにドロップダウンメニューを使用します。
しないこと
よく使用されるアクションに対してドロップダウンメニューを使用しないでください。代わりにツールバーを使用します。
動作
一般的に、親ボタンにはドロップダウンメニューが表示されることを示すために、アイコンまたはテキストの右側に三角形のアイコンを持つべきです。親ボタンが省略記号や「もっと」ラベルを使用して直接的に追加のコンテンツがあることを示す稀な場合には、これを省略することができます。
親ボタンは、ドロップダウンメニューが表示されているかどうかに関係なく、同じ視覚スタイルを保持するべきです。
配置
ドロップダウンメニューは通常、親ボタンの真下、または親ボタンの下と左側に表示されるべきです。下に十分なスペースがない場合は、親ボタンの上に表示することができます。
開発ガイドライン
ドロップダウンメニューは、ボタンの展開可能なメニューをレンダリングするためのReactコンポーネントです。<select>
要素と目的は似ていますが、値を保持しないという違いがあります。代わりに、各オプションはアクションボタンとして機能します。
使用法
一連のコントロールを持つドロップダウンメニューをレンダリングします:
import { DropdownMenu } from '@wordpress/components';
import {
more,
arrowLeft,
arrowRight,
arrowUp,
arrowDown,
} from '@wordpress/icons';
const MyDropdownMenu = () => (
<DropdownMenu
icon={ more }
label="Select a direction"
controls={ [
{
title: 'Up',
icon: arrowUp,
onClick: () => console.log( 'up' ),
},
{
title: 'Right',
icon: arrowRight,
onClick: () => console.log( 'right' ),
},
{
title: 'Down',
icon: arrowDown,
onClick: () => console.log( 'down' ),
},
{
title: 'Left',
icon: arrowLeft,
onClick: () => console.log( 'left' ),
},
] }
/>
);
または、ドロップダウンメニューで使用するのに有効な要素を返すchildren
関数を指定します: MenuItem
, MenuItemsChoice
, または MenuGroup
.
import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
import { more, arrowUp, arrowDown, trash } from '@wordpress/icons';
const MyDropdownMenu = () => (
<DropdownMenu icon={ more } label="Select a direction">
{ ( { onClose } ) => (
<>
<MenuGroup>
<MenuItem icon={ arrowUp } onClick={ onClose }>
Move Up
</MenuItem>
<MenuItem icon={ arrowDown } onClick={ onClose }>
Move Down
</MenuItem>
</MenuGroup>
<MenuGroup>
<MenuItem icon={ trash } onClick={ onClose }>
Remove
</MenuItem>
</MenuGroup>
</>
) }
</DropdownMenu>
);
プロパティ
コンポーネントは次のプロパティを受け入れます:
icon: string | null
折りたたまれたメニューボタンに表示されるダッシュアイコンアイコンスラッグ。
- 必須: いいえ
- デフォルト:
"menu"
詳細については: https://developer.wordpress.org/resource/dashicons/
label: string
フォーカスされた折りたたまれたメニューボタンにアクセシビリティテキストとして表示される人間が読めるラベル。
- 必須: はい
controls: DropdownOption[] | DropdownOption[][]
展開されたメニューに表示されるオプションを説明するオブジェクトの配列またはネストされた配列。
各オブジェクトには、icon
ダッシュアイコンスラッグ文字列、人間が読めるtitle
文字列、isDisabled
ブールフラグ、およびオプションが選択されたときに呼び出されるonClick
関数コールバックを含めるべきです。
有効なドロップダウンメニューは、controls
またはchildren
プロパティ、またはその両方を指定する必要があります。
– 必須: いいえ
children: ( callbackProps: DropdownCallbackProps ) => ReactNode
関数レンダープロップで、ドロップダウンメニューで使用するのに有効な要素を返すべきです: MenuItem
, MenuItemsChoice
, または MenuGroup
. 最初の引数は、Dropdown
のrenderContent
に与えられたのと同じ値を含むプロパティオブジェクトです。
有効なドロップダウンメニューは、controls
またはchildren
プロパティ、またはその両方を指定する必要があります。
- 必須: いいえ
詳細については: https://developer.wordpress.org/resource/dashicons/
className: string
ドロップダウンメニューのトグル要素ラッパーに適用するクラス名。
- 必須: いいえ
popoverProps: DropdownProps[ ‘popoverProps’ ]
このオブジェクトを使用して、`````Popover`````コンポーネントで利用可能なプロパティを変更します。`````DropdownMenu`````コンポーネントで既に公開されていないもの、例えば、ポップオーバーが親ノードに対して開く方向を`````position`````プロパティで設定します。
- 必須: いいえ
#### toggleProps: ToggleProps
`````toggleProps`````オブジェクトのプロパティは、`````renderToggle`````の`````Dropdown`````コンポーネントの実装においてネストされた`````Button`````コンポーネントにプロパティとして渡されます。
このオブジェクトを使用して、`````Button`````コンポーネントで利用可能なプロパティを変更します。`````DropdownMenu`````コンポーネントで既に公開されていないもの、例えば、ホバー時に表示されるツールチップテキストを`````tooltip`````プロパティで設定します。
- 必須: いいえ
#### menuProps: NavigableContainerProps
`````menuProps`````オブジェクトのプロパティは、`````renderContent`````の`````Dropdown`````コンポーネントの実装においてネストされた`````NavigableMenu`````コンポーネントにプロパティとして渡されます。
このオブジェクトを使用して、`````NavigableMenu`````コンポーネントで利用可能なプロパティを変更します。`````DropdownMenu`````コンポーネントで既に公開されていないもの、例えば、`````orientation`````プロパティで設定されたメニューの方向。
- 必須: いいえ
#### disableOpenOnArrowDown: boolean
いくつかの文脈では、ドロップダウンメニューを開くために使用される矢印下キーを無効にする必要があるかもしれません—例えば、そのキーが別のアクションを実行するために使用される場合。
- 必須: いいえ
- デフォルト: `````false
defaultOpen: boolean
初期表示時のドロップダウンメニューのオープン状態。オープン状態を制御する必要がない場合に使用します。コンポーネントの最初のレンダリング時にopen
プロパティが指定されている場合、それにより上書きされます。
open: boolean
ドロップダウンメニューの制御されたオープン状態。onToggle
と一緒に使用する必要があります。
onToggle: ( willOpen: boolean ) => void
ドロップダウンの状態がオープンからクローズに、またその逆に変わるときに呼び出されるコールバック。
- 必須: いいえ