English

ツールチップ

ボタンにポインタが重なっている間か、フォーカスがある間に表示する短い説明です。

実行結果

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::newid が name のツールチップ
triggerツールチップが説明するボタン
icon_triggerlabel を名前に持ち、ツールチップが説明するアイコンボタン
tooltiptext を入れたツールチップ