ツールチップ
ボタンにポインタが重なっている間か、フォーカスがある間に表示する短い説明です。
実行結果
tooltip.rs
use hypersig::html::div;
use hypersig::style::pattern::hstack;
use hypersig::style::value::rem;
use hypersig::{Page, Signals};
use hypersig_ui::{ButtonSize, ButtonVariant, Tooltip};
use serde::{Deserialize, Serialize};
#[derive(Signals, Serialize, Deserialize)]
pub struct Editor {
bold: bool,
}
const BOLD: Tooltip<Editor> = Tooltip::new("bold-tip");
const SHARE: Tooltip<Editor> = Tooltip::new("share-tip");
pub fn page() -> Page<Editor> {
Page::new(
"エディター",
Editor { bold: false },
)
.child(
div()
.css(hstack(rem(0.75)))
.child(
BOLD.icon_trigger(
ButtonVariant::Outline,
"太字",
)
.on_click(Editor::bold().toggle())
.text("B"),
)
.child(BOLD.tooltip("Ctrl+B"))
.child(
SHARE
.trigger(ButtonVariant::Outline, ButtonSize::Default)
.text("共有"),
)
.child(SHARE.tooltip("このドキュメントへのリンクをコピーします")),
)
}アクセシビリティ
WAI-ARIA tooltip パターンに従います。ツールチップは role="tooltip" を持ち、ボタンの aria-describedby がツールチップを指すので、スクリーンリーダーはボタンの名前のあとにツールチップのテキストを読み上げます。ボタンは Tooltip が作り、ツールチップに必要な属性をそのボタンに付けます。
ツールチップは popover="hint" です。browser-compat-data 8.1.6 では、Chrome 151 と Firefox 153 が対応しており、それより前のバージョンには部分的な古い実装があり、Safari はプレビュー版だけが対応しています。対応していないブラウザはこの値を manual として扱うので、Escape でツールチップが閉じるのは、フォーカスがそのボタンにある間だけです。
| キー | 動作 |
|---|---|
| Tab | ボタンにフォーカスが移るとツールチップが開き、フォーカスが離れると閉じます。 |
| 任意のキー | ボタンにフォーカスがあるときに押すと、ツールチップが閉じます。Escape の場合は、ツールチップを囲むダイアログにもキーが届きます。 |
API
| 項目 | 概要 |
|---|---|
Tooltip::new | id が name のツールチップ |
trigger | ツールチップが説明するボタン |
icon_trigger | label を名前に持ち、ツールチップが説明するアイコンボタン |
tooltip | text を入れたツールチップ |