// import react import { Masonry, useInfiniteLoader } from 'masonic'; import React, { memo, useEffect, useState } from 'react'; // import local dependencies import Loading from '../../Loading'; import useTeam from '../../../hooks/useTeam'; import ApiSignal from '../../../signals/Api'; import useResults from '../../../hooks/useResults'; import { useSignal } from '../../../signal'; import WorkflowListItem from './Item'; import { current as TeamSignal } from '../../../signals/Teams'; /** * render item * * @param param0 */ const ComponentWorkflowListItem = memo(({ index, data }) => { // return jsx return ( ); }); /** * component workflows * * @param props */ const ComponentWorkflowList = (props = {}) => { // signals const [sApi] = useSignal(ApiSignal); // use team const team = useTeam(); // state const [ready, setReady] = useState(false); // items const { key, resetting, items : workflows, loadNext, } = useResults(sApi.Workflow.list, 'workflows', { sort : props.sort, team : team?.id, search : props.search, disable : !team?.id, }, null, props.onResult); // maybe load more const maybeLoadMore = useInfiniteLoader(() => loadNext(), { isItemLoaded : (index, items) => !!items[index], }); // use effect useEffect(() => { // ready setReady(true); }, []); // return jsx return (
{(ready && !resetting) ? ( { // return item return { item, }; })} render={ComponentWorkflowListItem} itemKey={(data, index) => data?.brain?.id || index} onRender={props.workflows ? undefined : maybeLoadMore} columnWidth={384} columnGutter={16} /> ) : (
)}
); }; // export default export default ComponentWorkflowList;