Tooltip

TsgcHTMLComponent_Tooltip: ツールバーのボタンやフォームフィールドなど、ページの要素に Bootstrap のツールチップを付けます。ターゲットとテキストを指定する項目のリストから作成します。ツールチップはホバーとキーボードフォーカスで開き、Esc で閉じ、htmx が差し込んだコンテンツでも動作します。Delphi、C++ Builder、.NET で利用できます。

TsgcHTMLComponent_Tooltip

ツールチップごとに 1 つの項目を追加し、ターゲットと同じページで HTML を配信します。コンポーネントは目に見えるマークアップをレンダリングせず、JSON ブロックがツールチップを列挙し、小さなスクリプトがページの読み込み時に各ターゲット要素へ Bootstrap 5 のツールチップを作成します。

コンポーネントクラス

TsgcHTMLComponent_Tooltip、ツールチップごとに アイテム の TsgcHTMLTooltipItem を 1 つ使用します

レンダリング内容

sgcHTML エンジンが埋め込みリソースから配信する Bootstrap バンドルの上に、JSON ブロックと小さなスクリプトを置くため、CDN は不要です

言語

Delphi, C++ Builder, .NET

ツールチップごとに 1 つの項目、既定値はコンポーネントに

コンポーネントの Placement、Trigger、Delay、Variant、MaxWidth はすべての項目の既定値で、項目は独自の値でそのいずれも上書きできます。Add は 1 回の呼び出しでターゲットとテキストを設定します。

uses
  sgcHTML_Component_Tooltip;

var
  oTip: TsgcHTMLComponent_Tooltip;
  oItem: TsgcHTMLTooltipItem;
begin
  oTip := TsgcHTMLComponent_Tooltip.Create(nil);
  try
    oTip.Placement := ttpBottom;
    oTip.Delay := 100;
    oTip.Add('#btnSave', 'Save the record');
    oTip.Add('#btnExport', 'Export the grid to Excel');

    oItem := oTip.Items.Add;
    oItem.TargetComponent := edtEmail;   // その EditID が設定されています
    oItem.Title := 'Email';
    oItem.Text := 'The invoice is sent to this address.';
    oItem.Placement := ttpRight;

    Result := oTip.HTML;   // ターゲットと同じページで配信します
  finally
    oTip.Free;
  end;
end;
@* 親の属性はすべての項目の既定値です *@
<sgc-tooltip placement="bottom" delay="100" variant="dark" max-width="18rem">
  <sgc-tooltip-item target="#btnSave" text="Save the record" />
  <sgc-tooltip-item target="#email" title="Email" text="The invoice is sent to this address."
                    placement="right" trigger="focus" variant="light" />
  <sgc-tooltip-item target=".btn-danger" text="&lt;b&gt;Cannot be undone&lt;/b&gt;" html="true"
                    trigger="click" variant="danger" />
</sgc-tooltip>
using esegece.sgcWebSockets;

var tip = new TsgcHTMLComponent_Tooltip();
tip.Placement = TsgcHTMLTooltipPlacement.ttpBottom;
tip.Delay = 100;
tip.Add("#btnSave", "Save the record");
tip.Add("#btnExport", "Export the grid to Excel");

var item = tip.Items.Add();
item.TargetComponent = edtEmail;   // その EditID が設定されています
item.Title = "Email";
item.Text = "The invoice is sent to this address.";
item.Placement = TsgcHTMLTooltipPlacement.ttpRight;

string html = tip.HTML;

ユーザーが得られるもの

マウス、キーボード、スクリーンリーダーのいずれでも、すべてのユーザーに届く短いヒントです。

ホバーとキーボードフォーカス

既定のトリガーでは、ターゲットがフォーカスを受け取ったときに、キーボードユーザーにツールチップが表示されます。span やアイコンなど、フォーカスを受け取れないターゲットには tabindex="0" が付き、ツールチップが破棄されると再び削除されます。

閉じられ、ホバーでき、持続する

ツールチップは WCAG 2.2 の達成基準 1.4.13 に従います。Esc は、ポインターもフォーカスも動かさずに、開いているすべてのツールチップを閉じます。ポインターは閉じることなくツールチップの上に移動でき、ツールチップはポインターまたはフォーカスが離れるまで開いたままです。タイマーで閉じることはありません。

スクリーンリーダーによる読み上げ

aria-describedby がツールチップをフォーカスされた要素に関連付けるため、スクリーンリーダーは名前の後にテキストを読み上げます。ターゲットが既に持っていた aria-describedby はそのまま残され、ツールチップが閉じるときに復元されます。

収まる配置

自動、上、下、左、右です。ツールチップは、ビューポートに収まる限り、要求された側を維持し、その側に余裕がない場合にのみ別の側に移ります。

カラーバリアント

Variant は、ライト、ダーク、またはテーマカラー (primary、secondary、success、danger、warning、info) の Bootstrap の見た目を選びます。MaxWidth は CSS の長さを受け取り、空の場合は 200px のままです。

タイトルとリッチテキスト

プレーンテキストは HTML エンコードされ、改行は <br> になります。Title は太字の最初の行を追加します。HTML が True の場合、テキストはマークアップとして sgcHTMLSanitizeHTML を通り、書式と画像は残り、スクリプト、イベントハンドラー属性、安全でない URL は削除されます。

主なプロパティ、メソッド、イベント

最もよく使うメンバーです。

Items と Add

Add(aTarget, aText) は 1 回の呼び出しでツールチップを追加し、Items.Add は残りを設定するための項目を返します。各項目には Target、TargetComponent、Text、Title、HTML があり、コンポーネントの 5 つのオプションには継承値があります。ttpInherit、tttInherit、Delay の -1、ttvInherit、そして空の MaxWidth です。

Target

CSS セレクターで、一致するすべての要素にツールチップが付くため、1 つの項目で .toolbar .btn-danger や [name="email"] のように、あるクラスのすべてのボタンを説明できます。ターゲットのない項目は除外されます。

TargetComponent

同じページのコンポーネントをリンクし、ツールチップはそのコンポーネントの id プロパティを id とする要素に付きます。Edit は EditID、CheckBox は CheckBoxID、Popover は PopoverID、それ以外は ElementID です。その id が設定されている場合にのみ解決され、そうでなければ項目は Target を使用します。

Trigger と Delay

Trigger は、ホバーとフォーカス (既定)、クリック、フォーカス、または手動でツールチップを開きます。Delay はツールチップが開くまでのミリ秒数です。クリックトリガーのボタンターゲットでは、Enter と Space で開閉します。

htmx が差し替えたコンテンツ

htmx:afterSwap と htmx:load のたびに、スクリプトはページを再スキャンします。項目に一致する新しい要素にはツールチップが付き、要素または JSON ブロックがページから消えたツールチップは破棄されます。ページにコンポーネントがいくつあっても、スクリプトはページごとに 1 回だけ実行されます。

出力

HTML は JSON ブロックに続けてツールチップのスクリプトを返し、ターゲットとテキストの両方を持つ項目がなければ空の文字列を返します。Bootstrap バンドルと一緒に、たとえば TsgcHTMLTemplate_Bootstrap の BodyContent で配信してください。ページ内の位置は関係なく、スクリプトはバンドルを待ちます。

ダイアログではなくヒント

ツールチップは短くしてください。ユーザーが操作しなければならないコントロールは入れられません。インタラクティブなコンテンツには Popover か Modal を使用してください。

ASP.NET Core

Razor ビューでは、<sgc-tooltip> Tag Helper がコンポーネントをレンダリングし、項目ごとに 1 つの <sgc-tooltip-item /> 子要素を置きます。親の属性はすべての項目の既定値です。ツールチップにサーバーイベントは不要なため、コンポーネントはレンダリングごとに作成されます。TargetComponent に対応する属性はありません。要素の id を指定した target を使用してください。

デモ

Demos\60.HTML\01.RunTime\29.Tour は、ポート 8131 の sgc Cloud Console で、ツールバーのボタン、統計カード、フォームフィールドにツールチップを付けた SaaS ダッシュボードに、初回起動のプロダクトツアーが加わります。デザイン時、Lazarus、.NET の各バージョンも同様の内容です。

さらに詳しく

オンラインで試すeSeGeCe デモサーバーでライブ動作する ツアーとツールチップ デモをご覧ください。
オンラインヘルプこのコンポーネントの完全な API リファレンスと使い方ガイドです。
Tour コンポーネントスポットライト付きのガイド付きプロダクトツアーで、同じデモでツールチップと一緒に表示されます。
Popover コンポーネントヒント以上の内容を、トリガー要素に付ける吹き出しで表示します。
すべての sgcHTML コンポーネント80 以上のコンポーネントの機能マトリックスをすべてご覧いただけます。
無料体験版のダウンロード30 日間の体験版には 60.HTML のデモプロジェクトが含まれます。
価格完全なソースコード付きの Single、Team、Site ライセンス。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

始める準備はできましたか?

無料体験版をダウンロードして、Delphi、C++ Builder、.NET で Web UI の構築を始めましょう。