解剖学

ドロップダウンメニューの解剖学.

  • 1. ポップオーバー: ドロップダウンメニューがラップされているコンテナコンポーネント。
  • 2. 親ボタン: ドロップダウンメニューを含むポップオーバーの表示を切り替えるために使用されるアイコンまたはボタン。
  • 3. メニューアイテム: ドロップダウンメニュー内のリストアイテム。

デザインガイドライン

使用法

ドロップダウンメニューを使用するタイミング

ユーザーに次のことをさせたい場合は、ドロップダウンメニューを使用してください:

  • リストからアクションを選択するか、設定を変更する、かつ
  • 利用可能な選択肢を文脈に応じてのみ表示する。

常にすべての利用可能なオプションを表示する必要がある場合は、代わりにツールバーを使用することを検討してください。

ユーザーがアイコンと対話した後にアクションのリストを表示するためにドロップダウンメニューを使用します.

すること

ユーザーがアイコンと対話した後にアクションのリストを表示するためにドロップダウンメニューを使用します。

重要なアクションに対してドロップダウンメニューを使用しないでください。代わりにツールバーを使用します.

しないこと

よく使用されるアクションに対してドロップダウンメニューを使用しないでください。代わりにツールバーを使用します。

動作

一般的に、親ボタンにはドロップダウンメニューが表示されることを示すために、アイコンまたはテキストの右側に三角形のアイコンを持つべきです。親ボタンが省略記号や「もっと」ラベルを使用して直接的に追加のコンテンツがあることを示す稀な場合には、これを省略することができます。

親ボタンは、ドロップダウンメニューが表示されているかどうかに関係なく、同じ視覚スタイルを保持するべきです。

配置

ドロップダウンメニューは通常、親ボタンの真下、または親ボタンの下と左側に表示されるべきです。下に十分なスペースがない場合は、親ボタンの上に表示することができます。

開発ガイドライン

ドロップダウンメニューは、ボタンの展開可能なメニューをレンダリングするためのReactコンポーネントです。<select>要素と目的は似ていますが、値を保持しないという違いがあります。代わりに、各オプションはアクションボタンとして機能します。

使用法

一連のコントロールを持つドロップダウンメニューをレンダリングします:

  1. import { DropdownMenu } from '@wordpress/components';
  2. import {
  3. more,
  4. arrowLeft,
  5. arrowRight,
  6. arrowUp,
  7. arrowDown,
  8. } from '@wordpress/icons';
  9. const MyDropdownMenu = () => (
  10. <DropdownMenu
  11. icon={ more }
  12. label="Select a direction"
  13. controls={ [
  14. {
  15. title: 'Up',
  16. icon: arrowUp,
  17. onClick: () => console.log( 'up' ),
  18. },
  19. {
  20. title: 'Right',
  21. icon: arrowRight,
  22. onClick: () => console.log( 'right' ),
  23. },
  24. {
  25. title: 'Down',
  26. icon: arrowDown,
  27. onClick: () => console.log( 'down' ),
  28. },
  29. {
  30. title: 'Left',
  31. icon: arrowLeft,
  32. onClick: () => console.log( 'left' ),
  33. },
  34. ] }
  35. />
  36. );

または、ドロップダウンメニューで使用するのに有効な要素を返すchildren関数を指定します: MenuItem, MenuItemsChoice, または MenuGroup.

  1. import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
  2. import { more, arrowUp, arrowDown, trash } from '@wordpress/icons';
  3. const MyDropdownMenu = () => (
  4. <DropdownMenu icon={ more } label="Select a direction">
  5. { ( { onClose } ) => (
  6. <>
  7. <MenuGroup>
  8. <MenuItem icon={ arrowUp } onClick={ onClose }>
  9. Move Up
  10. </MenuItem>
  11. <MenuItem icon={ arrowDown } onClick={ onClose }>
  12. Move Down
  13. </MenuItem>
  14. </MenuGroup>
  15. <MenuGroup>
  16. <MenuItem icon={ trash } onClick={ onClose }>
  17. Remove
  18. </MenuItem>
  19. </MenuGroup>
  20. </>
  21. ) }
  22. </DropdownMenu>
  23. );

プロパティ

コンポーネントは次のプロパティを受け入れます:

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. 最初の引数は、DropdownrenderContentに与えられたのと同じ値を含むプロパティオブジェクトです。

有効なドロップダウンメニューは、controlsまたはchildrenプロパティ、またはその両方を指定する必要があります。

  • 必須: いいえ

詳細については: https://developer.wordpress.org/resource/dashicons/

className: string

ドロップダウンメニューのトグル要素ラッパーに適用するクラス名。

  • 必須: いいえ

popoverProps: DropdownProps[ ‘popoverProps’ ]

  1. このオブジェクトを使用して、`````Popover`````コンポーネントで利用可能なプロパティを変更します。`````DropdownMenu`````コンポーネントで既に公開されていないもの、例えば、ポップオーバーが親ノードに対して開く方向を`````position`````プロパティで設定します。
  2. - 必須: いいえ
  3. #### toggleProps: ToggleProps
  4. `````toggleProps`````オブジェクトのプロパティは、`````renderToggle``````````Dropdown`````コンポーネントの実装においてネストされた`````Button`````コンポーネントにプロパティとして渡されます。
  5. このオブジェクトを使用して、`````Button`````コンポーネントで利用可能なプロパティを変更します。`````DropdownMenu`````コンポーネントで既に公開されていないもの、例えば、ホバー時に表示されるツールチップテキストを`````tooltip`````プロパティで設定します。
  6. - 必須: いいえ
  7. #### menuProps: NavigableContainerProps
  8. `````menuProps`````オブジェクトのプロパティは、`````renderContent``````````Dropdown`````コンポーネントの実装においてネストされた`````NavigableMenu`````コンポーネントにプロパティとして渡されます。
  9. このオブジェクトを使用して、`````NavigableMenu`````コンポーネントで利用可能なプロパティを変更します。`````DropdownMenu`````コンポーネントで既に公開されていないもの、例えば、`````orientation`````プロパティで設定されたメニューの方向。
  10. - 必須: いいえ
  11. #### disableOpenOnArrowDown: boolean
  12. いくつかの文脈では、ドロップダウンメニューを開くために使用される矢印下キーを無効にする必要があるかもしれません—例えば、そのキーが別のアクションを実行するために使用される場合。
  13. - 必須: いいえ
  14. - デフォルト: `````false

defaultOpen: boolean

初期表示時のドロップダウンメニューのオープン状態。オープン状態を制御する必要がない場合に使用します。コンポーネントの最初のレンダリング時にopenプロパティが指定されている場合、それにより上書きされます。

  • 必須: いいえ

open: boolean

ドロップダウンメニューの制御されたオープン状態。onToggleと一緒に使用する必要があります。

  • 必須: いいえ

onToggle: ( willOpen: boolean ) => void

ドロップダウンの状態がオープンからクローズに、またその逆に変わるときに呼び出されるコールバック。

  • 必須: いいえ