Skip to content

Commit 51dac0a

Browse files
committed
feat: marquee go spinny
1 parent 40e81c7 commit 51dac0a

File tree

4 files changed

+7
-34
lines changed

4 files changed

+7
-34
lines changed

apps/frontend/nuxt.config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ export default defineNuxtConfig({
88
'@nuxt/icon',
99
'@nuxt/fonts',
1010
'@nuxt/image',
11-
'nuxt-marquee',
1211
'@nuxt/content',
1312
'@nuxtjs/sitemap',
1413
'@nuxtjs/mdc',

apps/frontend/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
"debug": "^4.4.3",
3232
"file-saver": "^2.0.5",
3333
"nuxt": "^4.2.0",
34-
"nuxt-marquee": "1.0.4",
3534
"nuxt-og-image": "5.1.12",
3635
"nuxt-site-config": "^3.2.11",
3736
"qrcode": "^1.5.4",

apps/frontend/pnpm-lock.yaml

Lines changed: 0 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/frontend/src/components/elements/Marquee.vue

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<div
33
ref="marqueeContainer"
4-
class="relative overflow-hidden w-full"
4+
class="relative w-full overflow-hidden"
55
@mouseenter="handleMouseEnter"
66
@mouseleave="handleMouseLeave"
77
@mousedown="handleMouseDown"
@@ -14,14 +14,12 @@
1414
:style="{
1515
transform: `translateX(${translateX}px)`,
1616
cursor: isDragging ? 'grabbing' : 'grab',
17-
touchAction: 'pan-y' // Allow vertical scrolling but prevent horizontal on touch
17+
touchAction: 'pan-y',
1818
}"
1919
>
20-
<!-- First set of items -->
2120
<div class="flex">
2221
<slot />
2322
</div>
24-
<!-- Duplicate set for seamless looping -->
2523
<div class="flex">
2624
<slot />
2725
</div>
@@ -41,11 +39,11 @@ interface Props {
4139
const props = withDefaults(defineProps<Props>(), {
4240
direction: 'left',
4341
speed: 20, // default 20 pixels per second
44-
pauseOnHover: true
42+
pauseOnHover: true,
4543
})
4644
47-
const marqueeContainer = ref<HTMLElement | null>(null)
48-
const marqueeTrack = ref<HTMLElement | null>(null)
45+
const marqueeContainer = useTemplateRef('marqueeContainer')
46+
const marqueeTrack = useTemplateRef('marqueeTrack')
4947
5048
const translateX = ref(0)
5149
const isHovered = ref(false)
@@ -139,7 +137,7 @@ const handleMouseMove = (e: MouseEvent) => {
139137
140138
if (timeDelta > 0) {
141139
const moveDelta = e.clientX - lastMouseX
142-
velocity.value = moveDelta / timeDelta * 16 // normalize to ~60fps
140+
velocity.value = (moveDelta / timeDelta) * 16 // normalize to ~60fps
143141
}
144142
145143
lastMouseX = e.clientX
@@ -198,7 +196,7 @@ const handleTouchMove = (e: TouchEvent) => {
198196
199197
if (timeDelta > 0) {
200198
const moveDelta = touch.clientX - lastMouseX
201-
velocity.value = moveDelta / timeDelta * 16 // normalize to ~60fps
199+
velocity.value = (moveDelta / timeDelta) * 16 // normalize to ~60fps
202200
}
203201
204202
lastMouseX = touch.clientX

0 commit comments

Comments
 (0)