All files / libs/assignments/quotas/components/src/lib/user-quota-assignments-table UserQuotaAssignmentsEmptyTable.tsx

100% Statements 5/5
66.66% Branches 2/3
100% Functions 1/1
100% Lines 5/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                  54x 54x             54x       118x   118x                                              
import { memo } from 'react';
import { FormattedMessage, useIntl } from 'react-intl';
 
import { AlertBanner, type ColumnDefinitions } from '@allshares/studio-design-system';
import { type UserProfile } from '@amalia/tenants/users/profile/types';
import { formatUserFullName } from '@amalia/tenants/users/types';
 
import { UserQuotaAssignmentsBaseTable, type UserQuotaAssignmentsBaseTableData } from './UserQuotaAssignmentsBaseTable';
 
const EMPTY_DATA: UserQuotaAssignmentsBaseTableData[] = [];
const EMPTY_COLUMNS: ColumnDefinitions<UserQuotaAssignmentsBaseTableData> = [] as const;
 
export type UserQuotaAssignmentsEmptyTableProps = {
  readonly isLoading?: boolean;
  readonly user: Pick<UserProfile, 'firstName' | 'id' | 'lastName'>;
};
 
export const UserQuotaAssignmentsEmptyTable = memo(function UserQuotaAssignmentsEmptyTable({
  isLoading = false,
  user,
}: UserQuotaAssignmentsEmptyTableProps) {
  const { formatMessage } = useIntl();
 
  return (
    <UserQuotaAssignmentsBaseTable
      columns={EMPTY_COLUMNS}
      data={EMPTY_DATA}
      isLoading={isLoading}
      loadingRowsCount={1}
      nameTitle={formatMessage({ defaultMessage: 'Quota name' })}
      user={user}
      alert={
        isLoading ? undefined : (
          <AlertBanner>
            <FormattedMessage
              defaultMessage="{userName} has no quotas to fill for the selected year."
              values={{
                userName: formatUserFullName(user),
              }}
            />
          </AlertBanner>
        )
      }
    />
  );
});