11/* eslint import/no-cycle: "off" */
22// Unfortunately, there has to be an import cycle, because this is by nature, recursive
3- import { Language } from '@3dp4me/types'
3+ import { FieldType , Language } from '@3dp4me/types'
44import AddIcon from '@mui/icons-material/Add'
55import { TableCell } from '@mui/material'
66import { useMemo } from 'react'
77import styled from 'styled-components'
88
99import XIcon from '../../../assets/x-icon.png'
1010import { useTranslations } from '../../../hooks/useTranslations'
11+ import { DisplayFieldType } from '../../../utils/constants'
1112import {
1213 ColumnMetadata ,
1314 defaultTableHeaderRenderer ,
@@ -151,10 +152,16 @@ const FieldGroupTable = ({
151152 field . id
152153 ) } `
153154
155+ let fieldType = metadata . subFields [ i ] . fieldType as FieldType | DisplayFieldType
156+ if ( fieldType === FieldType . RADIO_BUTTON ) {
157+ fieldType = DisplayFieldType . DROPDOWN
158+ }
159+
154160 return (
155161 < CellEditContainer key = { fieldKey } >
156162 < StepField
157163 displayName = { '' } // No display name since the header already has one
164+ fieldType = { fieldType }
158165 metadata = { metadata . subFields [ i ] }
159166 value = { itemData [ field . id ] }
160167 key = { field . id }
@@ -187,6 +194,26 @@ const FieldGroupTable = ({
187194 return cols
188195 }
189196
197+ const disabledRowRenderer = < T extends Record < string , any > > (
198+ rowData : ColumnMetadata < T > [ ] ,
199+ itemData : T ,
200+ lang : Language
201+ ) => {
202+ const itemDataCopy = { ...itemData }
203+
204+ rowData . forEach ( ( field , i ) => {
205+ if ( field . dataType === FieldType . RADIO_BUTTON ) {
206+ const fieldMeta = metadata . subFields [ i ]
207+ const selectedOption = fieldMeta . options . find (
208+ ( option ) => option . _id === itemData [ field . id ]
209+ )
210+ itemDataCopy [ field . id ] = ( selectedOption ?. Question ?. [ lang ] || '' ) as any
211+ }
212+ } )
213+
214+ return defaultTableRowRenderer ( rowData , itemDataCopy , lang )
215+ }
216+
190217 return (
191218 < >
192219 < h3 key = { `${ metadata . key } -table-title` } > { metadata . displayName [ selectedLang ] } </ h3 >
@@ -195,7 +222,7 @@ const FieldGroupTable = ({
195222 headers = { tableHeaders }
196223 rowData = { tableColumnMetadata }
197224 renderHeader = { defaultTableHeaderRenderer }
198- renderTableRow = { isDisabled ? defaultTableRowRenderer : tableRowRenderer }
225+ renderTableRow = { isDisabled ? disabledRowRenderer : tableRowRenderer }
199226 rowStyle = { { height : '50px' } }
200227 containerStyle = { {
201228 marginTop : '6px' ,
0 commit comments