import React, { useEffect } from 'react'; import { PageStore } from '../../utils/stores/'; import { useLayout, useItemListInlineSlider } from '../../utils/hooks/'; import { ItemListAsync } from './ItemListAsync'; import { PendingItemsList } from './PendingItemsList'; import { ListItem, listItemProps } from '../list-item/ListItem'; import { ItemsListHandler } from './includes/itemLists/ItemsListHandler'; export function InlineSliderItemListAsync(props) { const { visibleSidebar } = useLayout(); const [ items, countedItems, listHandler, classname, setListHandler, onItemsCount, onItemsLoad, winResizeListener, sidebarVisibilityChangeListener, itemsListWrapperRef, itemsListRef, renderBeforeListWrap, renderAfterListWrap, ] = useItemListInlineSlider(props); useEffect(() => { sidebarVisibilityChangeListener(); }, [visibleSidebar]); useEffect(() => { setListHandler( new ItemsListHandler( props.pageItems, props.maxItems, props.firstItemRequestUrl, props.requestUrl, onItemsCount, onItemsLoad ) ); PageStore.on('window_resize', winResizeListener); return () => { PageStore.removeListener('window_resize', winResizeListener); if (listHandler) { listHandler.cancelAll(); setListHandler(null); } }; }, []); return !countedItems ? ( ) : !items.length ? null : (
{renderBeforeListWrap()}
{items.map((itm, index) => ( ))}
{renderAfterListWrap()}
); } InlineSliderItemListAsync.propTypes = { ...ItemListAsync.propTypes, }; InlineSliderItemListAsync.defaultProps = { ...ItemListAsync.defaultProps, pageItems: 12, };