Skip to content

Instantly share code, notes, and snippets.

@keremistan
Created March 18, 2021 08:54
Show Gist options
  • Save keremistan/a102e7775bf090b1e5f2997ae180d91a to your computer and use it in GitHub Desktop.
Save keremistan/a102e7775bf090b1e5f2997ae180d91a to your computer and use it in GitHub Desktop.
Left and right slider buttons.
const PIXELS_TO_BE_SLIDED = 1000;
type ISliderButton = {
toRight: boolean;
className: string;
}
export function RightSliderButton({ className }: { className: string }) {
return <SliderButton toRight={true} className={className} />
}
export function LeftSliderButton({ className }: { className: string }) {
return <SliderButton toRight={false} className={className} />
}
function SliderButton({
toRight,
className
}: ISliderButton) {
const sliderHandler = (e: MouseEvent) => {
let scrollableContent: Element;
const target = e.currentTarget;
const parentSliderWrapperAddress: string = 'div[class*=sampleWrapper]';
const isItSiblingImplementation: boolean = className.includes('correctSlidersWrapper');
if (isItSiblingImplementation) {
scrollableContent = className.includes('right')
? target.previousElementSibling
: target.nextElementSibling;
} else {
scrollableContent = target.closest(parentSliderWrapperAddress);
}
if (scrollableContent) {
if (toRight) {
scrollableContent.scrollLeft += PIXELS_TO_BE_SLIDED;
} else {
scrollableContent.scrollLeft -= PIXELS_TO_BE_SLIDED;
}
}
}
return (
<Button
className={"sliderButtonWrapper " + className}
variant='contained'
color='primary'
onClick={event => sliderHandler(event)}
>
{toRight
? <ArrowForwardIosIcon />
: <ArrowBackIosIcon />
}
</Button>
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment