import { createSignal } from "solid-js"; import { useClassList } from "../utils/useProps"; type TooltipProps = { classList?: any, class?: string, align?: 'top'|'bottom'|'left'|'right'|'topLeft'|'topRight'|'bottomLeft'|'bottomRight'|'leftTop'|'leftBottom'|'rightTop'|'rightBottom', theme?: string, style?: any, children?: any, content?: any, disabled?: boolean } export function Tooltip (props: TooltipProps) { const [visible, setVisible] = createSignal(false); const [style, setStyle] = createSignal({ display: 'none', visibility: 'hidden' } as any); const align = () => props.align ?? 'bottom'; const onMouseEnter = () => { if (props.disabled) { return; } setVisible(true); setStyle({ display: 'block', visibility: 'visible' }); }; const onMouseLeave = () => { if (props.disabled) { return; } setVisible(false); setTimeout(() => { setStyle({ display: 'none', visibility: 'hidden' }); }, 250); }; const classList = () => useClassList(props, 'cm-tooltip', align(), { [`cm-tooltip-${props.theme}`]: props.theme }); const popperClass = () => ({'cm-tooltip-popper': true, 'animation': visible()}) return