11import { FC } from 'react'
22
3- import type { Details } from '../models'
3+ import type { Details , Display , DisplayMode } from '../models'
44
55import { asTitle } from '../tools'
66import { useClassName } from '../hooks/className'
@@ -15,13 +15,26 @@ export const DetailsComp: FC<Details> = (props) => (
1515 </ dl >
1616)
1717
18- const FieldDetail : FC < { props : Details ; fieldDisplay : DisplayLookupProps } > = ( { props, fieldDisplay } ) => {
19- const { field, title, onClick, ...rest } = fieldDisplay
20- const value = props . data [ field ]
18+ const FieldDetail : FC < { props : Details ; fieldDisplay : DisplayLookupProps | Display } > = ( { props, fieldDisplay } ) => {
19+ const onClick = fieldDisplay . onClick
20+ let title = fieldDisplay . title
21+ const rest : { mode ?: DisplayMode ; tableWidthPercent ?: number } = { mode : fieldDisplay . mode }
22+ let value : any
23+
24+ if ( 'type' in fieldDisplay && fieldDisplay . type === 'Display' ) {
25+ // fieldDisplay is Display
26+ value = fieldDisplay . value
27+ } else if ( 'field' in fieldDisplay ) {
28+ // fieldDisplay is DisplayLookupProps
29+ const field = fieldDisplay . field
30+ title = title ?? asTitle ( field )
31+ value = props . data [ field ]
32+ rest . tableWidthPercent = fieldDisplay . tableWidthPercent
33+ }
2134 const renderedOnClick = renderEvent ( onClick , props . data )
2235 return (
2336 < >
24- < dt className = { useClassName ( props , { el : 'dt' } ) } > { title ?? asTitle ( field ) } </ dt >
37+ < dt className = { useClassName ( props , { el : 'dt' } ) } > { title } </ dt >
2538 < dd className = { useClassName ( props , { el : 'dd' } ) } >
2639 < DisplayComp type = "Display" onClick = { renderedOnClick } value = { value !== undefined ? value : null } { ...rest } />
2740 </ dd >
0 commit comments