mirror of
https://github.com/mediacms-io/mediacms.git
synced 2025-11-23 14:53:50 -05:00
* Added frontend development files/environment * More items-categories related removals * Improvements in pages templates (inc. static pages) * Improvements in video player * Added empty home page message + cta * Updates in media, playlist and management pages * Improvements in material icons font loading * Replaced media & playlists links in frontend dev-env * frontend package version update * chnaged frontend dev url port * static files update * Changed default position of theme switcher * enabled frontend docker container
58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
import React, { useState, useEffect } from 'react';
|
|
import initItemsList from '../../components/item-list/includes/itemLists/initItemsList';
|
|
import '../../components/item-list/ItemList.scss'; // TODO: Remove it from here
|
|
|
|
export function useItemList(props, itemsListRef) {
|
|
let previousItemsLength = 0;
|
|
|
|
let itemsListInstance = null;
|
|
|
|
const [items, setItems] = useState([]);
|
|
|
|
const [countedItems, setCountedItems] = useState(false);
|
|
const [listHandler, setListHandler] = useState(null);
|
|
|
|
function onItemsLoad(itemsArray) {
|
|
setItems([...itemsArray]);
|
|
}
|
|
|
|
function onItemsCount(totalItems) {
|
|
setCountedItems(true);
|
|
if (void 0 !== props.itemsCountCallback) {
|
|
props.itemsCountCallback(totalItems);
|
|
}
|
|
}
|
|
|
|
function addListItems() {
|
|
if (previousItemsLength < items.length) {
|
|
if (null === itemsListInstance) {
|
|
itemsListInstance = initItemsList([itemsListRef.current])[0];
|
|
}
|
|
|
|
// TODO: Should get item elements from children components.
|
|
const itemsElem = itemsListRef.current.querySelectorAll('.item');
|
|
|
|
if (!itemsElem || !itemsElem.length) {
|
|
return;
|
|
}
|
|
|
|
let i = previousItemsLength;
|
|
|
|
while (i < items.length) {
|
|
itemsListInstance.appendItems(itemsElem[i]);
|
|
i += 1;
|
|
}
|
|
|
|
previousItemsLength = items.length;
|
|
}
|
|
}
|
|
|
|
useEffect(() => {
|
|
if (void 0 !== props.itemsLoadCallback) {
|
|
props.itemsLoadCallback();
|
|
}
|
|
}, [items]);
|
|
|
|
return [items, countedItems, listHandler, setListHandler, onItemsLoad, onItemsCount, addListItems];
|
|
}
|