UNPKG

@cmk/fe_utils

Version:
73 lines (71 loc) 3.21 kB
import { BoxProps } from '@mui/material'; import { ReactNode } from 'react'; export type GenericFilterValueType = string | number | boolean | null; export type GenericFilterType = { filterKey: string; value: GenericFilterValueType; }; export type FilterType = { value: string; filterKey: string; }; export type GenericOptionsType = { value: string | number | boolean; label: string; } | string[]; export interface SelectHeaderCellProps { isRowSelect?: boolean; } export interface UnfilteredHeaderCellProps<TableDataType = Record<string, unknown>, FooterDataType = Record<string, unknown>> { isRowSelect?: boolean; header: ReactNode; headerToolTip?: string; sortKey?: string; renderCell: string | ((item: TableDataType, cIdx: number, rIdx: number) => ReactNode); renderFooterCell?: string | ((footerData: FooterDataType, idx: number) => ReactNode); } export interface FilteredTableHeaderCellProps<TableDataType = Record<string, unknown>, FooterDataType = Record<string, unknown>, OptType extends GenericOptionsType = GenericOptionsType> extends UnfilteredHeaderCellProps<TableDataType, FooterDataType> { additionalFilterKeys?: string[]; filterKey?: string; filterOptions?: OptType[]; getFilterValue?: ((item: OptType) => string) | string | undefined; getIcon?: (item: OptType) => ReactNode; getItemLabel?: ((item: OptType) => string) | string | undefined; isFilterLocked?: boolean; renderFilterKey?: (key: string, value: unknown) => string; selectedFilters?: string[]; style?: BoxProps['sx']; } export type TableColumnType<TableDataType = Record<string, unknown>, OptType extends GenericOptionsType = GenericOptionsType, FooterDataType = Record<string, unknown>> = FilteredTableHeaderCellProps<TableDataType, FooterDataType, OptType>; export type TableProps<TableDataType = Record<string, unknown>, OptType extends GenericOptionsType = GenericOptionsType, FooterDataType = Record<string, unknown>> = { loading?: boolean; data: TableDataType[]; columns: TableColumnType<TableDataType, OptType, FooterDataType>[]; selectedRows?: (string | number)[]; loadingRows?: number; headerBackground?: string; footerBackground?: BoxProps['bgcolor']; noResultsLabel?: string; clearFilersOnNoResultLabel?: string; disableSelection?: boolean; disableNoResults?: boolean; disableTableHeader?: boolean; disableClearFiltersOnNoResults?: boolean; filters?: FilterType[]; footerData?: Record<string, unknown>; getTrLeftBorderColor?: string | ((item: TableDataType, idx: number) => string); getTrProps?: (item: Record<string, unknown>, idx: number) => Record<string, unknown>; getSelectedRow?: string | ((item: TableDataType, idx: number) => string); onUnselectAllFilters?: () => void; onReorder?: (itemFrom: unknown, itemTo: unknown) => void; onSelectRow?: (item: TableDataType, idx: number) => void; onSelectAllFilters?: () => void; onSetFilters?: (allValues: { value: string; filterKey: string; }[]) => void; reorderRowId?: string; sx?: BoxProps['sx']; rootInjection?: ReactNode; disableSelectAll?: boolean; };