Source code for iskg.widgets._misc
from __future__ import annotations
from typing import Any
from ..base import Widget
[docs]
class Tooltip(Widget):
"""A hover tooltip that displays text near a widget."""
def __init__(
self,
parent: Widget | None = None,
text: str = "",
delay: int = 500,
**kwargs: Any,
) -> None:
super().__init__(parent, **kwargs)
self._config_dict["text"] = text
self._config_dict["delay"] = delay
[docs]
def attach(self, target_id: str) -> str:
text = self._config_dict.get("text", "")
delay = self._config_dict.get("delay", 500)
self._tid = target_id
return f'''(function(){{
var target=document.getElementById("{target_id}");
if(!target)return;
var el=document.createElement("div");
el.className="iskg-tooltip"; el.innerText="{text}";
el.style.display="none"; document.body.appendChild(el);
var timer=null;
target.onmouseenter=function(e){{
timer=setTimeout(function(){{
var r=target.getBoundingClientRect();
el.style.display="block";
el.style.left=Math.min(e.clientX,document.documentElement.clientWidth-el.offsetWidth)+"px";
el.style.top=(r.bottom+4)+"px";
}},{delay});
}};
target.onmouseleave=function(){{clearTimeout(timer);el.style.display="none";}};
}})();'''
def _render(self) -> str:
return ""
def _render_js(self) -> str:
return ""
def _render_children_js(self) -> str:
return ""