vaulterm/frontend/components/ui/pager-view.tsx

31 lines
762 B
TypeScript

import React, { ComponentPropsWithoutRef, forwardRef } from "react";
import RNPagerView from "react-native-pager-view";
export type PagerViewProps = ComponentPropsWithoutRef<typeof RNPagerView> & {
onChangePage?: (page: number) => void;
};
export type PagerViewRef = {
setPage: (page: number) => void;
setPageWithoutAnimation: (page: number) => void;
};
const PagerView = forwardRef<PagerViewRef, PagerViewProps>(
({ onChangePage, children, ...props }, ref) => {
return (
<RNPagerView
ref={ref as never}
{...props}
onPageSelected={(e) => {
const pos = e.nativeEvent.position;
onChangePage?.(pos);
}}
>
{children}
</RNPagerView>
);
}
);
export default PagerView;