Skip to content

Commit 8cbedb2

Browse files
committed
Change cursor on pointer down and up
1 parent cc03138 commit 8cbedb2

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/app/conf/_design-system/marquee.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useMotionValue, animate, motion } from "motion/react"
55
import { useState, useEffect, Fragment } from "react"
66
import useMeasure from "react-use-measure"
77

8-
export interface MarqueeProps {
8+
export interface MarqueeProps extends React.HTMLAttributes<HTMLElement> {
99
children: React.ReactNode
1010
gap?: number
1111
speed?: number
@@ -27,6 +27,7 @@ export function Marquee({
2727
className,
2828
drag = false,
2929
separator,
30+
...rest
3031
}: MarqueeProps) {
3132
const [currentSpeed, setCurrentSpeed] = useState(speed)
3233
const [ref, { width, height }] = useMeasure()
@@ -93,7 +94,7 @@ export function Marquee({
9394
setIsTransitioning(true)
9495
setCurrentSpeed(speed)
9596
},
96-
onPointerUp: () => {
97+
onPointerUp: (_event: React.PointerEvent<HTMLElement>) => {
9798
if (window.matchMedia("(hover: none)").matches) {
9899
setIsTransitioning(true)
99100
setCurrentSpeed(speed)
@@ -105,14 +106,13 @@ export function Marquee({
105106
const dragProps = drag
106107
? {
107108
drag: direction === "horizontal" ? ("x" as const) : ("y" as const),
108-
onDragStart: () => {
109-
document.documentElement.style.cursor = "grabbing"
109+
onPointerDown: () => {
110110
document.documentElement.style.setProperty(
111111
"--cursor-grabbing",
112112
"grabbing",
113113
)
114114
},
115-
onDragEnd: () => {
115+
onPointerUp: (_event: React.PointerEvent<HTMLElement>) => {
116116
document.documentElement.style.cursor = "initial"
117117
document.documentElement.style.removeProperty("--cursor-grabbing")
118118
},
@@ -132,7 +132,7 @@ export function Marquee({
132132

133133
const multiples = 2
134134
return (
135-
<div className={clsx("overflow-hidden", className)}>
135+
<div className={clsx("overflow-hidden", className)} {...rest}>
136136
<motion.div
137137
className="flex w-max"
138138
style={{
@@ -146,6 +146,10 @@ export function Marquee({
146146
ref={ref}
147147
{...dragProps}
148148
{...hoverProps}
149+
onPointerUp={event => {
150+
dragProps.onPointerUp?.(event)
151+
hoverProps.onPointerUp?.(event)
152+
}}
149153
>
150154
{Array.from({ length: 2 }).map((_, i) => (
151155
<Fragment key={i}>

0 commit comments

Comments
 (0)