fix: hide tooltip on mobile/touch, adaptive vendor info bar
This commit is contained in:
@@ -798,3 +798,23 @@
|
|||||||
.vib-link.mont { background: linear-gradient(135deg, #1f4ea3, #3978e0); color: #fff; }
|
.vib-link.mont { background: linear-gradient(135deg, #1f4ea3, #3978e0); color: #fff; }
|
||||||
.vib-link.site { background: #fff; color: #2a5aaa; border: 1px solid #c8d8f5; }
|
.vib-link.site { background: #fff; color: #2a5aaa; border: 1px solid #c8d8f5; }
|
||||||
.vib-link:hover { opacity: .82; transform: translateY(-1px); }
|
.vib-link:hover { opacity: .82; transform: translateY(-1px); }
|
||||||
|
|
||||||
|
/* ── Mobile: no hover tooltips ── */
|
||||||
|
@media (hover: none), (max-width: 768px) {
|
||||||
|
.vendor-tooltip { display: none !important; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Mobile: adaptive vendor info bar ── */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.vendor-info-bar {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 14px;
|
||||||
|
}
|
||||||
|
.vib-logo {
|
||||||
|
width: 100%;
|
||||||
|
height: 120px;
|
||||||
|
}
|
||||||
|
.vib-logo img { max-height: 90px; }
|
||||||
|
}
|
||||||
|
|||||||
+6
-1
@@ -26,12 +26,15 @@
|
|||||||
|
|
||||||
let clickAudioCtx = null;
|
let clickAudioCtx = null;
|
||||||
|
|
||||||
// ── Vendor tooltip ──
|
// ── Vendor tooltip (desktop / hover-capable devices only) ──
|
||||||
|
const canHover = window.matchMedia('(hover: hover) and (pointer: fine)').matches;
|
||||||
const tooltip = document.createElement('div');
|
const tooltip = document.createElement('div');
|
||||||
tooltip.className = 'vendor-tooltip';
|
tooltip.className = 'vendor-tooltip';
|
||||||
document.body.appendChild(tooltip);
|
document.body.appendChild(tooltip);
|
||||||
|
if (canHover) {
|
||||||
tooltip.addEventListener('mouseenter', () => { overTooltip = true; clearTimeout(hideTimer); });
|
tooltip.addEventListener('mouseenter', () => { overTooltip = true; clearTimeout(hideTimer); });
|
||||||
tooltip.addEventListener('mouseleave', () => { overTooltip = false; hideTooltip(); });
|
tooltip.addEventListener('mouseleave', () => { overTooltip = false; hideTooltip(); });
|
||||||
|
}
|
||||||
|
|
||||||
let tooltipTimer = null;
|
let tooltipTimer = null;
|
||||||
let hideTimer = null;
|
let hideTimer = null;
|
||||||
@@ -211,6 +214,7 @@
|
|||||||
if (wasSelected) scrollAfterDeselect();
|
if (wasSelected) scrollAfterDeselect();
|
||||||
else scrollToResultsSmooth();
|
else scrollToResultsSmooth();
|
||||||
});
|
});
|
||||||
|
if (canHover) {
|
||||||
node.addEventListener("mouseenter", () => {
|
node.addEventListener("mouseenter", () => {
|
||||||
clearTimeout(tooltipTimer);
|
clearTimeout(tooltipTimer);
|
||||||
tooltipTimer = setTimeout(() => showTooltip(node, vendor), 220);
|
tooltipTimer = setTimeout(() => showTooltip(node, vendor), 220);
|
||||||
@@ -219,6 +223,7 @@
|
|||||||
clearTimeout(tooltipTimer);
|
clearTimeout(tooltipTimer);
|
||||||
hideTooltip();
|
hideTooltip();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
el.vendorList.appendChild(node);
|
el.vendorList.appendChild(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user