@@ -327,11 +327,11 @@ export const ObjectGrid: React.FC<ObjectGridProps> = ({
327327 cellRenderer = ( value : any , row : any ) => {
328328 const displayContent = CellRenderer
329329 ? < CellRenderer value = { value } field = { { name : col . field , type : col . type || 'text' } as any } />
330- : String ( value ?? '' ) ;
330+ : ( value != null && value !== '' ? String ( value ) : < span className = "text-muted-foreground" > - </ span > ) ;
331331 return (
332332 < button
333333 type = "button"
334- className = "text-primary underline-offset-4 hover:underline cursor-pointer bg-transparent border-none p-0 text-left font-inherit"
334+ className = "text-primary font-medium underline-offset-4 hover:underline cursor-pointer bg-transparent border-none p-0 text-left font-inherit"
335335 onClick = { ( e ) => {
336336 e . stopPropagation ( ) ;
337337 navigation . handleClick ( row ) ;
@@ -346,11 +346,11 @@ export const ObjectGrid: React.FC<ObjectGridProps> = ({
346346 cellRenderer = ( value : any , row : any ) => {
347347 const displayContent = CellRenderer
348348 ? < CellRenderer value = { value } field = { { name : col . field , type : col . type || 'text' } as any } />
349- : String ( value ?? '' ) ;
349+ : ( value != null && value !== '' ? String ( value ) : < span className = "text-muted-foreground" > - </ span > ) ;
350350 return (
351351 < button
352352 type = "button"
353- className = "text-primary underline-offset-4 hover:underline cursor-pointer bg-transparent border-none p-0 text-left font-inherit"
353+ className = "text-primary font-medium underline-offset-4 hover:underline cursor-pointer bg-transparent border-none p-0 text-left font-inherit"
354354 onClick = { ( e ) => {
355355 e . stopPropagation ( ) ;
356356 navigation . handleClick ( row ) ;
@@ -365,7 +365,7 @@ export const ObjectGrid: React.FC<ObjectGridProps> = ({
365365 cellRenderer = ( value : any , row : any ) => {
366366 const displayContent = CellRenderer
367367 ? < CellRenderer value = { value } field = { { name : col . field , type : col . type || 'text' } as any } />
368- : String ( value ?? '' ) ;
368+ : ( value != null && value !== '' ? String ( value ) : < span className = "text-muted-foreground" > - </ span > ) ;
369369 return (
370370 < button
371371 type = "button"
@@ -387,13 +387,24 @@ export const ObjectGrid: React.FC<ObjectGridProps> = ({
387387 cellRenderer = ( value : any ) => (
388388 < CellRenderer value = { value } field = { { name : col . field , type : col . type || 'text' } as any } />
389389 ) ;
390+ } else {
391+ // Default renderer with empty value handling
392+ cellRenderer = ( value : any ) => (
393+ value != null && value !== ''
394+ ? < span > { String ( value ) } </ span >
395+ : < span className = "text-muted-foreground" > -</ span >
396+ ) ;
390397 }
391398
399+ // Auto-infer alignment from field type if not explicitly set
400+ const numericTypes = [ 'number' , 'currency' , 'percent' ] ;
401+ const inferredAlign = col . align || ( col . type && numericTypes . includes ( col . type ) ? 'right' as const : undefined ) ;
402+
392403 return {
393404 header,
394405 accessorKey : col . field ,
395406 ...( col . width && { width : col . width } ) ,
396- ...( col . align && { align : col . align } ) ,
407+ ...( inferredAlign && { align : inferredAlign } ) ,
397408 sortable : col . sortable !== false ,
398409 ...( col . resizable !== undefined && { resizable : col . resizable } ) ,
399410 ...( col . wrap !== undefined && { wrap : col . wrap } ) ,
@@ -439,9 +450,11 @@ export const ObjectGrid: React.FC<ObjectGridProps> = ({
439450 if ( field . permissions && field . permissions . read === false ) return ;
440451
441452 const CellRenderer = getCellRenderer ( field . type ) ;
453+ const numericTypes = [ 'number' , 'currency' , 'percent' ] ;
442454 generatedColumns . push ( {
443455 header : field . label || fieldName ,
444456 accessorKey : fieldName ,
457+ ...( numericTypes . includes ( field . type ) && { align : 'right' } ) ,
445458 cell : ( value : any ) => < CellRenderer value = { value } field = { field } /> ,
446459 sortable : field . sortable !== false ,
447460 } ) ;
0 commit comments