本文へスキップ
Material 3 Expressivev1.3.0-rc.1
オーバーレイ · 準拠済み

Tooltip

TooltipTooltipPlacementTooltipPropsTooltipVariant

Tooltip

Shows on hover or keyboard focus of its anchor and hides on leave or blur, with no wiring beyond an `anchorRef`.

playground/examples/Tooltip.example.tsx

Tooltipは、利用側で用意したトリガーに結び付く、操作できない説明をポータル表示します。Menuと異なり、アンカー上のホバー、フォーカス、Escapeによる表示/非表示の操作も行うため、追加の配線は不要です。

import { useRef } from 'react'
import { Icon, IconButton, Tooltip } from '@language-lit/material3-expressive'
import '@language-lit/material3-expressive/styles.css'

const anchorRef = useRef<HTMLButtonElement>(null)

<IconButton ref={anchorRef} aria-label="Favorite">
  <Icon source="star" />
</IconButton>
<Tooltip anchorRef={anchorRef} content="Add to favorites" />

仕様

  • anchorRefは利用側で用意して完全に管理するトリガーを参照します。これはMenu/Dialogと同じくトリガーに依存しない仕様です。Menuと異なり、トリガーにクリックやaria-expandedの設定は不要です。Tooltipがアンカーにホバー/フォーカスのリスナーを追加し、表示中はaria-describedbyを直接管理します。
  • contentは必須の本文です。variantの既定値は'plain'です。'rich'を指定すると本文の上に任意のsubheadを追加し、大きなコンテナーを使います。どちらのバリアントも操作できません。role="tooltip"にはフォーカス可能な内容を置けないため、アクションボタン付きのバリアントはありません。
  • placementの既定値は'top'です。'top'、'bottom'、'start'、'end'を指定でき、指定位置がビューポート端に重なる場合は反対側に切り替わります。
  • 高度な用途ではopen/defaultOpen/onOpenChangeを使って制御できます。これはほかの状態を持つコンポーネントと同じ形式です。

動作

アンカーにポインターが乗るかキーボードフォーカスが当たると、すぐに表示します。ポインターが離れるかフォーカスが外れると、Tooltip自体のポップオーバーにポインターが移動した場合を除いて、すぐに非表示にします。Escapeキーでも閉じます。位置は交差軸の中央に合わせ、重なる場合は反対側に切り替えてビューポート端に収めます。表示中はスクロールとウィンドウのサイズ変更に応じて位置を更新します。

トークンと境界

色、形状、モーションの値は1つの--m3e-comp-tooltip-*登録にまとめられ、2つのバリアント用にplain-*とrich-*のグループに分かれています。テーマの上書きはMaterial3Providerのスコープ内で適用されます。Tooltipは実行時スタイルを注入せず、Next.js、Vite、ルーター、アニメーションライブラリ、非公開のアプリケーションコードをインポートしません。