All files / src/components/table EnhancedTableToolbarV2.tsx

0% Statements 0/11
0% Branches 0/12
0% Functions 0/4
0% Lines 0/11

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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73                                                                                                                                                 
import React, { useMemo } from 'react';
import EnhancedTableToolbar from './EnhancedTableToolbar';
import { TopBarButton, EnhancedTopBarSelectionProps } from './index';
 
export interface EnhancedTopBarSelectionConfig {
  handleSelectAll?: () => void;
  handleSelectNone?: () => void;
  renderEnhancedNumSelectedText?: () => string;
  renderSelectAllText?: () => string;
  renderSelectNoneText?: () => string;
}
 
type DecoratedEnhancedTopBarSelectionConfig = Omit<
  EnhancedTopBarSelectionConfig,
  'renderEnhancedNumSelectedText' | 'renderSelectAllText' | 'renderSelectNoneText'
> &
  EnhancedTopBarSelectionProps;
 
interface EnhancedTableToolbarV2Props {
  selectedRowsCount: number;
  pagesCount: number;
  renderNumSelectedText?: (selectedCount: number) => string;
  rowsCount: number;
  topBarButtons?: (TopBarButton | JSX.Element)[];
  topBarSelectionConfig?: DecoratedEnhancedTopBarSelectionConfig;
}
 
const EnhancedTableToolbarV2 = ({
  selectedRowsCount,
  pagesCount,
  renderNumSelectedText,
  rowsCount,
  topBarButtons,
  topBarSelectionConfig,
}: EnhancedTableToolbarV2Props) => {
  const _topBarSelectionConfig = useMemo((): EnhancedTopBarSelectionConfig | undefined => {
    if (!topBarSelectionConfig) {
      return topBarSelectionConfig;
    }
 
    const { renderEnhancedNumSelectedText, renderSelectAllText } = topBarSelectionConfig;
 
    return {
      ...topBarSelectionConfig,
      renderEnhancedNumSelectedText: () =>
        (renderEnhancedNumSelectedText && renderEnhancedNumSelectedText(selectedRowsCount || 0, pagesCount)) || '',
      renderSelectAllText: () => (renderSelectAllText && renderSelectAllText(rowsCount)) || '',
    };
  }, [topBarSelectionConfig, selectedRowsCount, rowsCount, pagesCount]);
 
  if (topBarSelectionConfig) {
    return (
      <EnhancedTableToolbar
        numSelected={selectedRowsCount}
        topBarButtons={topBarButtons}
        topBarSelectionConfig={_topBarSelectionConfig}
        isAllSelected={rowsCount === selectedRowsCount}
        renderNumSelectedText={renderNumSelectedText}
      />
    );
  }
 
  return (
    <EnhancedTableToolbar
      numSelected={selectedRowsCount}
      renderNumSelectedText={renderNumSelectedText}
      topBarButtons={topBarButtons}
    />
  );
};
 
export default EnhancedTableToolbarV2;