import React, { HTMLAttributes, ReactElement, useEffect, useRef } from 'react'; import { observer } from 'mobx-react-lite'; import { FiltersMap, KeyedItem, PickerState } from '@wix/bex-core'; import { useCollectionReachBottom } from '../useCollectionReachBottom'; import { Box } from '@wix/design-system'; import { InfiniteScrollLoader } from '../InfiniteScrollLoader/InfiniteScrollLoader'; import { PickerListItemProps } from '../PickerListItemProps'; import { TransitionGroup } from 'react-transition-group'; import { useIsScrollTop } from '../../hooks/useIsScrollTop'; import { Fade } from '../Fade'; export interface PickerListContentProps extends HTMLAttributes { state: PickerState; renderItem: ( keyedItem: KeyedItem, index: number, ) => ReactElement; spacing?: 30 | 94; multiple?: boolean; } function _PickerListContent( props: PickerListContentProps, ) { const { state, renderItem, spacing = 30, multiple, ...rest } = props; const { collection } = state; const { result: { keyedItems }, } = collection; const scrollRef = useRef(null); const { targetRef } = useCollectionReachBottom({ collection, containerRef: scrollRef, }); const isScrollTop = useIsScrollTop(scrollRef); useEffect(() => { state.updateIsScrollTop(isScrollTop); }, [isScrollTop]); const listItems: ReactElement[] = keyedItems.map((keyedItem, index) => { const { type: PickerListItem, props: pickerListItemProps } = renderItem( keyedItem, index, ); return ( ); }); return (
{listItems.flatMap((child, index, { length }) => { return ( {child} {index !== length - 1 && ( )} ); })}
); } export const PickerListContent = observer(_PickerListContent);