TippyProps
Spicetify provides a set of predefined props for Tippy.js tooltips. This is aimed to create tooltips that mimic the style of Spotify's tooltips.
This is utilized for Topbar
and Playbar
tooltips.
Spicetify.TippyProps = {
delay: [200, 0],
animation: true,
render(instance) {
const popper = document.createElement('div');
const box = document.createElement('div');
popper.id = "context-menu";
popper.appendChild(box);
box.className = "main-contextMenu-tippy"
box.textContent = instance.props.content;
function onUpdate(prevProps, nextProps) {
if (prevProps.content !== nextProps.content) {
if (nextProps.allowHTML) box.innerHTML = nextProps.content;
else box.textContent = nextProps.content;
}
}
return { popper, onUpdate }
},
onShow(instance) {
instance.popper.firstChild.classList.add("main-contextMenu-tippyEnter");
},
onMount(instance) {
requestAnimationFrame(() => {
instance.popper.firstChild.classList.remove("main-contextMenu-tippyEnter");
instance.popper.firstChild.classList.add("main-contextMenu-tippyEnterActive");
});
},
onHide(instance) {
requestAnimationFrame(() => {
instance.popper.firstChild.classList.remove("main-contextMenu-tippyEnterActive");
instance.unmount();
});
},
},
Usage
If you want to use this set of props for your own Tippy.js tooltips, you can simply spread the Spicetify.TippyProps
object into your Tippy.js instance.
const element = document.createElement("div");
const tooltip = tippy(element, {
...Spicetify.TippyProps,
content: "Tooltip content",
// For example, if you want to override the delay
delay: [100, 0],
});