import styles from './ListTableRows.module.scss'; import {__} from '@wordpress/i18n'; import cx from 'classnames'; import {useEffect, useState} from 'react'; import TableCell from '../TableCell'; import {BulkActionCheckbox} from '@givewp/components/ListTable/BulkActions/BulkActionCheckbox'; import InterweaveSSR from '@givewp/components/ListTable/InterweaveSSR'; import ListTableApi from '@givewp/components/ListTable/api'; export default function ListTableRows({columns, data, isLoading, rowActions, setUpdateErrors, parameters, singleName, columnFilters, includeBulkActionsCheckbox = false, tableId, apiSettings}) { const [removed, setRemoved] = useState([]); const [added, setAdded] = useState([]); useEffect(() => { if (added.length && !isLoading) { const timeouts = []; timeouts[0] = setTimeout(() => { const addedItem = document.getElementsByClassName(styles.duplicated); if (addedItem.length == 1) { addedItem[0].scrollIntoView({behavior: 'smooth', block: 'center'}); } }, 100); timeouts[1] = setTimeout(() => { setAdded([]); }, 600); return () => { timeouts.forEach((timeout) => clearTimeout(timeout)); }; } }, [added, isLoading]); function removeRow(removeCallback) { return async (event) => { const id = event.target.dataset.actionid; setRemoved([id]); await removeCallback(id); setRemoved([]); }; } function addRow(addCallback) { return async (event) => { const id = event.target.dataset.actionid; const addedItem = await addCallback(id); setAdded([...addedItem.successes]); }; } function columnGetFilter(columnId) { return columnFilters.filter(definition => definition.column === columnId) } if (!data) { return null; } return data?.items.map((item) => (