UNPKG

@cmk/fe_utils

Version:
108 lines (97 loc) 3.15 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 }