Basic
The simplest usage. Tooltip will show on mouse enter.
Tooltip will show on mouse enter.
prompt text
Code
<%= render Hakumi::Tooltip::Component.new(title: "prompt text") do %>
<%= render Hakumi::Typography::Text::Component.new do %>Tooltip will show on mouse enter.<% end %>
<% end %>
Placement
There are 12 placement options available.
Code
<%= render Hakumi::Flex::Component.new(vertical: true, align: :center, gap: :small, style: "padding: 80px 20px;") do %>
<%= render Hakumi::Flex::Component.new(justify: :center, gap: :small) do %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :top_left) do %>
<%= render(Hakumi::Button::Component.new) { "TL" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :top) do %>
<%= render(Hakumi::Button::Component.new) { "Top" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :top_right) do %>
<%= render(Hakumi::Button::Component.new) { "TR" } %>
<% end %>
<% end %>
<%= render Hakumi::Flex::Component.new(justify: :"space-between", style: "width: 320px;") do %>
<%= render Hakumi::Flex::Component.new(vertical: true, gap: :small) do %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :left_top) do %>
<%= render(Hakumi::Button::Component.new) { "LT" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :left) do %>
<%= render(Hakumi::Button::Component.new) { "Left" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :left_bottom) do %>
<%= render(Hakumi::Button::Component.new) { "LB" } %>
<% end %>
<% end %>
<%= render Hakumi::Flex::Component.new(vertical: true, gap: :small) do %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :right_top) do %>
<%= render(Hakumi::Button::Component.new) { "RT" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :right) do %>
<%= render(Hakumi::Button::Component.new) { "Right" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :right_bottom) do %>
<%= render(Hakumi::Button::Component.new) { "RB" } %>
<% end %>
<% end %>
<% end %>
<%= render Hakumi::Flex::Component.new(justify: :center, gap: :small) do %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :bottom_left) do %>
<%= render(Hakumi::Button::Component.new) { "BL" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :bottom) do %>
<%= render(Hakumi::Button::Component.new) { "Bottom" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "prompt text", placement: :bottom_right) do %>
<%= render(Hakumi::Button::Component.new) { "BR" } %>
<% end %>
<% end %>
<% end %>
Auto Shift
Auto adjust Popup and arrow position when Tooltip is close to the edge of the screen. Will be out of screen when exceed limitation.
Code
<%= render Hakumi::Flex::Component.new(justify: :center, align: :center, style: "height: 800px;") do %>
<%= render Hakumi::Tooltip::Component.new(title: "Thanks for using Hakumi Rails. Have a nice day!", placement: :top) do %>
<%= render(Hakumi::Button::Component.new(type: :primary)) { "Scroll The Window" } %>
<% end %>
<% end %>
Arrow
Show or hide the arrow.
With arrow
Without arrow
Code
<%= render Hakumi::Space::Component.new do %>
<%= render Hakumi::Tooltip::Component.new(title: "With arrow", placement: :top, arrow: true) do %>
<%= render(Hakumi::Button::Component.new) { "With Arrow" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "Without arrow", placement: :top, arrow: false) do %>
<%= render(Hakumi::Button::Component.new) { "Without Arrow" } %>
<% end %>
<% end %>
Colorful
We preset a series of colorful Tooltip styles for use in different situations.
Presets
Custom
Pink
Red
Yellow
Orange
Cyan
Green
Blue
Purple
Geekblue
Magenta
Volcano
Gold
Lime
#f50
#2db7f5
#87d068
#108ee9
Code
<%= render Hakumi::Flex::Component.new(vertical: true, gap: :middle) do %>
<%= render Hakumi::Typography::Text::Component.new(type: :secondary) do %>Presets<% end %>
<%= render Hakumi::Space::Component.new(wrap: true) do %>
<% %i[pink red yellow orange cyan green blue purple geekblue magenta volcano gold lime].each do |color| %>
<%= render Hakumi::Tooltip::Component.new(title: color.to_s.capitalize, color: color) do %>
<%= render(Hakumi::Button::Component.new) { color.to_s.capitalize } %>
<% end %>
<% end %>
<% end %>
<%= render Hakumi::Typography::Text::Component.new(type: :secondary) do %>Custom<% end %>
<%= render Hakumi::Space::Component.new(wrap: true) do %>
<%= render Hakumi::Tooltip::Component.new(title: "#f50", color: "#f50") do %>
<%= render(Hakumi::Button::Component.new) { "#f50" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "#2db7f5", color: "#2db7f5") do %>
<%= render(Hakumi::Button::Component.new) { "#2db7f5" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "#87d068", color: "#87d068") do %>
<%= render(Hakumi::Button::Component.new) { "#87d068" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "#108ee9", color: "#108ee9") do %>
<%= render(Hakumi::Button::Component.new) { "#108ee9" } %>
<% end %>
<% end %>
<% end %>
Trigger
Tooltip can be triggered by hover, focus, or click.
Hover me
Focus me
Click me
Code
<%= render Hakumi::Space::Component.new do %>
<%= render Hakumi::Tooltip::Component.new(title: "Hover me", trigger: :hover) do %>
<%= render(Hakumi::Button::Component.new) { "Hover" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "Focus me", trigger: :focus) do %>
<%= render(Hakumi::Button::Component.new) { "Focus" } %>
<% end %>
<%= render Hakumi::Tooltip::Component.new(title: "Click me", trigger: :click) do %>
<%= render(Hakumi::Button::Component.new) { "Click" } %>
<% end %>
<% end %>
Tooltip API
| Prop | Type | Default | Description |
|---|---|---|---|
title |
String |
- |
The text shown in the tooltip. |
placement |
Symbol |
:top |
The position of the tooltip relative to the target. Options: :top, :top_left, :top_right, :bottom, :bottom_left, :bottom_right, :left, :left_top, :left_bottom, :right, :right_top, :right_bottom |
trigger |
Symbol |
:hover |
Tooltip trigger mode. Options: :hover, :focus, :click |
arrow |
Boolean |
true |
Whether to show the arrow. |
color |
Symbol or String |
:default |
The background color. Presets: :pink, :red, :yellow, :orange, :cyan, :green, :blue, :purple, :geekblue, :magenta, :volcano, :gold, :lime. Or any custom color string (e.g., '#f50', 'rgb(255,0,0)'). |
open |
Boolean |
nil |
Whether the tooltip is visible (controlled mode). |
fresh |
Boolean |
false |
When true, allows programmatic control even when open is set. |
JavaScript API (element.hakumiTooltip)
| Prop | Type | Default | Description |
|---|---|---|---|
open() |
Function |
- |
Alias for show(). |
close() |
Function |
- |
Alias for hide(). |
show() |
Function |
- |
Show the tooltip. |
hide() |
Function |
- |
Hide the tooltip. |
toggle() |
Function |
- |
Toggle the tooltip visibility. |
isOpen() |
Function |
- |
Returns true if the tooltip is visible. |
getState() |
Function |
- |
Returns { open, placement, color }. |
setPlacement(placement) |
Function |
- |
Change the tooltip placement dynamically. |
setColor(color) |
Function |
- |
Change the tooltip color dynamically. Text color is auto-calculated for contrast. |