All files / src/shared/GiveAnimatedList GiveListWrapper.tsx

0% Statements 0/5
0% Branches 0/4
0% Functions 0/2
0% Lines 0/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52                                                                                                       
import { ElementType, Fragment } from "react";
import GiveAnimatedList from "./GiveAnimatedList";
import { SpringValue } from "react-spring";
import TableRowSkeleton from "@common/Skeleton/TableRowSkeleton";
import { TableRowProps } from "@mui/material";
 
type ItemComponent<T> = (
  data: T,
  index: number,
  height: SpringValue<number>,
  springProps?: any,
) => JSX.Element;
 
type Props<T> = {
  items: T[];
  renderKey: (data: T, index: number) => React.Key | null | undefined;
  ItemComponent: ItemComponent<T>;
  isLoading?: boolean;
  Wrapper?: ElementType;
  height?: number;
  columns: any[]; // to be defined with integration
  rowHeight?: number;
  rowProps?: (data: T) => TableRowProps;
};
 
const GiveListWrapper = <T extends object | string>({
  isLoading,
  rowHeight,
  ...props
}: Props<T>) => {
  if (isLoading) {
    return (
      <GiveAnimatedList
        {...props}
        ItemComponent={(row: any, _, height) => (
          <TableRowSkeleton
            key={row.id}
            height={height}
            rowHeight={rowHeight || 60}
            columns={props?.columns}
            Wrapper={Fragment}
          />
        )}
      />
    );
  }
 
  return <GiveAnimatedList {...props} />;
};
 
export default GiveListWrapper;