mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-03 21:02:40 +02:00
Some checks are pending
Build and Push Docker Images / tag_release (push) Waiting to run
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (web, surfsense-web) (push) Blocked by required conditions
24 lines
808 B
TypeScript
24 lines
808 B
TypeScript
"use client";
|
|
|
|
import { type ComponentPropsWithoutRef, forwardRef, type WheelEvent } from "react";
|
|
|
|
export type NestedScrollProps = ComponentPropsWithoutRef<"div">;
|
|
|
|
export const NestedScroll = forwardRef<HTMLDivElement, NestedScrollProps>(
|
|
({ onWheel, ...props }, ref) => {
|
|
const handleWheel = (event: WheelEvent<HTMLDivElement>) => {
|
|
const el = event.currentTarget;
|
|
const canScrollUp = el.scrollTop > 0;
|
|
const canScrollDown = el.scrollTop < el.scrollHeight - el.clientHeight - 1;
|
|
const goingUp = event.deltaY < 0;
|
|
const goingDown = event.deltaY > 0;
|
|
if ((goingUp && canScrollUp) || (goingDown && canScrollDown)) {
|
|
event.stopPropagation();
|
|
}
|
|
onWheel?.(event);
|
|
};
|
|
return <div ref={ref} onWheel={handleWheel} {...props} />;
|
|
}
|
|
);
|
|
|
|
NestedScroll.displayName = "NestedScroll";
|