the event handler that is supposed to trigger onScrollEnd() when it reaches the bottom of the scroll area is not working
type DataPopoverProps<T> = { data: T[] renderCardAction: (item: T, index: number) => React.ReactNode triggerLabel?: string, selected: number | undefined, onSelectAction: (index: number) => void onScrollEnd?: () => void loading?: boolean } export default function DataPopover<T>({data, renderCardAction, triggerLabel="Open", selected, onSelectAction, onScrollEnd, loading} : DataPopoverProps<T>) { const scrollReference = React.useRef<HTMLDivElement>(null); const [comboboxOpen, setComboboxOpen] = React.useState(false); const [triggerLabelState, setTriggerLabelState] = React.useState(triggerLabel); useEffect(() => { const reference = scrollReference.current if (onScrollEnd && reference) { const handleScroll = () => { const reachedBottom = reference.scrollTop + reference.clientHeight >= reference.scrollHeight - 5; if (reachedBottom) { onScrollEnd(); } } reference.addEventListener("scroll", handleScroll); return () => { reference.removeEventListener("scroll", handleScroll);} } }, [onScrollEnd]) return ( <div className={""}> <Popover open={comboboxOpen} onOpenChange={setComboboxOpen}> <PopoverTrigger asChild> <Button role={"combobox"} variant={"outline"}> {triggerLabel} <ChevronDown /> </Button> </PopoverTrigger> <PopoverContent className={"p-0"}> {/*TODO: make scrollbar look better with tailwind-scrollbar plguin after upgrading to tailwind 4.x*/} <div className={""} > <Command className={"p-1 max-h-60 overflow-y-auto"} ref={scrollReference}> { data.map((item,index) => ( <CommandItem key={index} onSelect={() => { setComboboxOpen(false) onSelectAction(index)}}> <div> {renderCardAction(item, index)} </div> </CommandItem> ))} { loading && <CommandItemclassName={"flex items-center justify-center [&_svg]:!size-auto p-4"}> <Spinner size={"medium"}className={"text-neutral-400"}/> </CommandItem> } </Command> </div> </PopoverContent> </Popover></div> )}