11import { ColumnDef , ColumnHelper , DeepKeys , RowData , createColumnHelper } from "@tanstack/react-table" ;
2+ import { DropdownColumnFilterOption } from "src/react-table" ;
23
34interface ReactDataTableColumnHelper < TData extends RowData > extends ColumnHelper < TData > {
45 createEnumColumn : < TEnum extends string | number > (
56 columnKey : DeepKeys < TData > ,
6- enumTranslations : Record < TEnum , string > ,
7+ enumTranslations : Record < TEnum , string > | DropdownColumnFilterOption [ ] ,
78 columndDef ?: Partial < ColumnDef < TData , TEnum > > ,
89 ) => ColumnDef < TData , TEnum > ;
910}
@@ -18,14 +19,19 @@ const createReactDataTableColumnHelper = <TData extends RowData>(): ReactDataTab
1819 createEnumColumn : ( columnKey , enumTranslations , columndDef ) =>
1920 // eslint-disable-next-line @typescript-eslint/no-explicit-any
2021 columnHelper . accessor ( columnKey as any , {
21- cell : ( cell ) => enumTranslations [ cell . getValue ( ) ] ,
22+ cell : ( cell ) =>
23+ Array . isArray ( enumTranslations )
24+ ? enumTranslations . find ( ( x ) => x . value === cell . getValue ( ) ) ?. label
25+ : enumTranslations [ cell . getValue ( ) ] ,
2226 enableColumnFilter : true ,
2327 meta : {
2428 dropdownFilter : {
25- options : Object . entries ( enumTranslations ) . map ( ( [ key , value ] ) => ( {
26- label : value as string ,
27- value : key ,
28- } ) ) ,
29+ options : Array . isArray ( enumTranslations )
30+ ? enumTranslations
31+ : Object . entries ( enumTranslations ) . map ( ( [ key , value ] ) => ( {
32+ label : value as string ,
33+ value : key ,
34+ } ) ) ,
2935 } ,
3036 } ,
3137 ...columndDef ,
0 commit comments