-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
onMenuScrollToBottom not fired on desktop when the scrollbar is mouse-dragged to the bottom #3232
Comments
I understood that https://github.com/vtaits/react-select-async-paginate/blob/master/src/wrap-menu-list.jsx It is my decorator, but is uses custom handler |
any updates on this one? I am having the same issue, I am relying on |
Also looking for an update. This seems like a core bug and necessary for accessibility |
Any updates on this one ? |
Here is the correct link of the wrapper |
Any updates on this? @ebonow |
Created PR #4970 to fix this issue. |
Please merge #4970 to fix this issue. |
HI Please can we get thie MR merged. That you |
Bumping for visibility, please merge the above MR |
We are also waiting for this fix! |
Another one who is wating :( |
Why is this PR #4970 are still not merged? 3 year have passed, fix contains few minor changes. Are there any contributors? |
I've set |
Thank you for the helpful select library and your work, guys! I am also waiting for this fix. |
Any update on this issue? It still doesn't work, even with khachatryna suggestion to use captureMenuScroll. Does anyone have a workaround for this problem? |
I've created a custom Firstly, we need to declare new prop type for our select. Lets create file import { Props } from 'react-select/dist/declarations/src/Select';
declare module 'react-select/dist/declarations/src/Select' {
export interface Props {
customOnMenuScrollToBottom?: () => void;
}
} Now you can pass this custom prop to the import { YoutCustomMenuListComponent } from './components/YoutCustomMenuListComponent';
<ReactSelect
customOnMenuScrollToBottom={() => {
console.log('scrollToBottom');
}}
components={{
MenuList: YourCustomMenuListComponent,
}}
.... Now lets create a import { SelectOption } from '../../type'; // Your select option type.
type YourCustomMenuListComponentProps = ReactSelectMenuListProps<
SelectOption,
false,
GroupBase<SelectOption>
>;
export const YourCustomMenuListComponent = ({
children,
...rest
}: YourCustomMenuListComponentProps) => {
const { customOnMenuScrollToBottom } = rest.selectProps;
const onScrollToBottomTrigger = useInfiniteScroll(customOnMenuScrollToBottom);
return (
<components.MenuList<SelectOption, false, GroupBase<SelectOption>>
className={styles.menuList}
{...rest}
>
{children}
{customOnMenuScrollToBottom && onScrollToBottomTrigger}
</components.MenuList>
);
}; And export const useInfiniteScroll = (callback?: () => void): JSX.Element => {
const observerRef = useRef<IntersectionObserver | null>(null);
const lastElementRef = useRef<HTMLDivElement | null>(null);
useEffect(() => {
if (!callback) {
return undefined;
}
if (lastElementRef.current) {
observerRef.current = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
callback();
}
});
observerRef.current.observe(lastElementRef.current);
}
return () => {
if (observerRef.current) {
observerRef.current.disconnect();
observerRef.current = null;
}
};
}, [callback]);
return <div ref={lastElementRef} />;
}; We are finished. The callback |
Hey malininss thanks for the solution it will do for now, it works and does the job. This is something that should be in the component, but anyway I appreciate your help! |
Hi @amaralpeek. Do you mean that we are supposed to place this declaration inside the Maybe I didn't get you right. Anyway, it depends on your coding style and can be done in different ways |
Hey malininss, Sorry for the confusion, When I reply I used the "Quote Reply" and the final part was related to the react-select package which should be a fixed part of the component, nothing related with your solution and thanks again for that! |
We're affected by it as well. @JedWatson is it possible to review/merge #4970? |
1 similar comment
We're affected by it as well. @JedWatson is it possible to review/merge #4970? |
@JedWatson Is it possible to review/merge #4970 ? |
I tried this implementation and the only issue I'm having is that it constantly calls the customOnMenuScrollToBottom prop when you scroll down. I'm looking for a way to fix that |
Greetings!
Thank you so much for taking time out to maintain
react-select
One of our users reported that the dropdowns in our product (the ones powered by react-select) were not loading further options when she scrolled to the bottom. On further investigation, we realized that this was because
react-select
does not fireonMenuScrollToBottom
when the scrolling is performed by dragging the scrollbar to the bottom using a mouse-drag. Unfortunately for us and for this user, her mouse lacks a scroll wheel and so this is the only way she can scroll to the bottom.Here's a code sandbox demonstrating this issue: https://codesandbox.io/s/x20ppz92xw Note that when scrolled using the mousewheel, an alert dialog is displayed when the menu is scrolled to the bottom. However, when the scrollbar is dragged to the bottom using the mouse, the alert dialog isn't displayed.
Looking at the source code, I can see that the
ScrollCaptor
is only listening for thewheel
,touchstart
andtouchmove
events. The use-case of dragging the scrollbar with a mouse is ignored.I've confirmed that this works in the previous major version (v1.2.1)
The text was updated successfully, but these errors were encountered: