mirror of
https://github.com/dpnmw/community-landing.git
synced 2026-03-18 09:27:16 +00:00
Settings Navigation Repositioned
This commit is contained in:
@@ -153,90 +153,7 @@
|
||||
}
|
||||
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
// 6. SMOOTH HORIZONTAL DRAG — trending discussions
|
||||
// Prevents link clicks during drag, smooth momentum scrolling
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
$$(".cl-topics__scroll").forEach(function (scrollEl) {
|
||||
var isDown = false;
|
||||
var startX = 0;
|
||||
var scrollStart = 0;
|
||||
var moved = false;
|
||||
var velX = 0;
|
||||
var lastX = 0;
|
||||
var lastTime = 0;
|
||||
var momentumId = null;
|
||||
|
||||
function stopMomentum() {
|
||||
if (momentumId) {
|
||||
cancelAnimationFrame(momentumId);
|
||||
momentumId = null;
|
||||
}
|
||||
}
|
||||
|
||||
function doMomentum() {
|
||||
if (Math.abs(velX) < 0.5) return;
|
||||
scrollEl.scrollLeft -= velX;
|
||||
velX *= 0.92;
|
||||
momentumId = requestAnimationFrame(doMomentum);
|
||||
}
|
||||
|
||||
scrollEl.addEventListener("mousedown", function (ev) {
|
||||
stopMomentum();
|
||||
isDown = true;
|
||||
moved = false;
|
||||
startX = ev.pageX;
|
||||
scrollStart = scrollEl.scrollLeft;
|
||||
lastX = ev.pageX;
|
||||
lastTime = Date.now();
|
||||
velX = 0;
|
||||
scrollEl.style.scrollSnapType = "none";
|
||||
scrollEl.style.userSelect = "none";
|
||||
});
|
||||
|
||||
window.addEventListener("mousemove", function (ev) {
|
||||
if (!isDown) return;
|
||||
var dx = ev.pageX - startX;
|
||||
if (Math.abs(dx) > 3) moved = true;
|
||||
var now = Date.now();
|
||||
var dt = now - lastTime;
|
||||
if (dt > 0) {
|
||||
velX = (ev.pageX - lastX) / dt * 16;
|
||||
}
|
||||
lastX = ev.pageX;
|
||||
lastTime = now;
|
||||
scrollEl.scrollLeft = scrollStart - dx;
|
||||
});
|
||||
|
||||
function endDrag() {
|
||||
if (!isDown) return;
|
||||
isDown = false;
|
||||
scrollEl.style.userSelect = "";
|
||||
if (Math.abs(velX) > 1) {
|
||||
doMomentum();
|
||||
}
|
||||
// Re-enable snap after a tick
|
||||
setTimeout(function () {
|
||||
scrollEl.style.scrollSnapType = "";
|
||||
}, 100);
|
||||
}
|
||||
|
||||
window.addEventListener("mouseup", endDrag);
|
||||
scrollEl.addEventListener("mouseleave", endDrag);
|
||||
|
||||
// Prevent link navigation if we dragged
|
||||
scrollEl.addEventListener("click", function (ev) {
|
||||
if (moved) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
moved = false;
|
||||
}
|
||||
}, true);
|
||||
|
||||
// Touch support — native scrolling works, no extra handling needed
|
||||
});
|
||||
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
// 7. APP BADGE DETECTION
|
||||
// 6. APP BADGE DETECTION
|
||||
// ═══════════════════════════════════════════════════════════════════
|
||||
var ua = navigator.userAgent || "";
|
||||
if (/iPhone|iPad|iPod/.test(ua)) $$(".cl-app-badge--ios").forEach(function (e) { e.classList.add("highlighted"); });
|
||||
|
||||
Reference in New Issue
Block a user