chore: removes duplicative loop over column state to determine linked cells (#7958)
This commit is contained in:
@@ -60,17 +60,26 @@ export const Table: React.FC<Props> = ({ columns: columnsFromProps, customCellCo
|
||||
data.map((row, rowIndex) => (
|
||||
<tr className={`row-${rowIndex + 1}`} key={rowIndex}>
|
||||
{activeColumns.map((col, colIndex) => {
|
||||
const isLink =
|
||||
(colIndex === 0 && col.accessor !== '_select') ||
|
||||
(colIndex === 1 && activeColumns[0]?.accessor === '_select')
|
||||
|
||||
const cellProps = {
|
||||
link: isLink,
|
||||
...(col.cellProps || {}),
|
||||
}
|
||||
|
||||
return (
|
||||
<td className={`cell-${col.accessor}`} key={colIndex}>
|
||||
<TableCellProvider
|
||||
cellData={row[col.accessor]}
|
||||
cellProps={col?.cellProps}
|
||||
cellProps={cellProps}
|
||||
columnIndex={colIndex}
|
||||
customCellContext={customCellContext}
|
||||
rowData={row}
|
||||
>
|
||||
<RenderComponent
|
||||
clientProps={{ ...col?.cellProps }}
|
||||
clientProps={cellProps}
|
||||
mappedComponent={col.components.Cell}
|
||||
/>
|
||||
</TableCellProvider>
|
||||
|
||||
@@ -92,8 +92,6 @@ export const buildColumnState = (args: Args): Column[] => {
|
||||
activeColumnsIndices.push(index)
|
||||
}
|
||||
|
||||
const isFirstActiveColumn = activeColumnsIndices[0] === index
|
||||
|
||||
const CustomLabelToRender =
|
||||
field &&
|
||||
'admin' in field &&
|
||||
@@ -137,7 +135,6 @@ export const buildColumnState = (args: Args): Column[] => {
|
||||
...(cellProps?.[index]?.field || ({} as ClientField)),
|
||||
} as ClientField,
|
||||
...cellProps?.[index],
|
||||
link: isFirstActiveColumn,
|
||||
},
|
||||
components: {
|
||||
Cell: field.admin?.components?.Cell || {
|
||||
|
||||
@@ -87,26 +87,6 @@ export const TableColumnsProvider: React.FC<Props> = ({
|
||||
[preferenceKey, setPreference],
|
||||
)
|
||||
|
||||
const reassignLinkColumn = (columns: Column[]): Column[] => {
|
||||
let foundFirstActive = false
|
||||
const newColumns = columns.map((col) => {
|
||||
const linkColumn = col.active && !foundFirstActive && col.accessor !== '_select'
|
||||
if (linkColumn) {
|
||||
foundFirstActive = true
|
||||
}
|
||||
|
||||
return {
|
||||
...col,
|
||||
cellProps: {
|
||||
...col.cellProps,
|
||||
link: linkColumn,
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
return newColumns
|
||||
}
|
||||
|
||||
const moveColumn = useCallback(
|
||||
(args: { fromIndex: number; toIndex: number }) => {
|
||||
const { fromIndex, toIndex } = args
|
||||
@@ -115,9 +95,8 @@ export const TableColumnsProvider: React.FC<Props> = ({
|
||||
const [columnToMove] = withMovedColumn.splice(fromIndex, 1)
|
||||
withMovedColumn.splice(toIndex, 0, columnToMove)
|
||||
|
||||
const newColumns = reassignLinkColumn(withMovedColumn)
|
||||
setTableColumns(newColumns)
|
||||
updateColumnPreferences(newColumns)
|
||||
setTableColumns(withMovedColumn)
|
||||
updateColumnPreferences(withMovedColumn)
|
||||
},
|
||||
[tableColumns, updateColumnPreferences],
|
||||
)
|
||||
@@ -136,9 +115,8 @@ export const TableColumnsProvider: React.FC<Props> = ({
|
||||
}
|
||||
})
|
||||
|
||||
const newColumns = reassignLinkColumn(toggledColumns)
|
||||
setTableColumns(newColumns)
|
||||
updateColumnPreferences(newColumns)
|
||||
setTableColumns(toggledColumns)
|
||||
updateColumnPreferences(toggledColumns)
|
||||
},
|
||||
[tableColumns, updateColumnPreferences],
|
||||
)
|
||||
@@ -152,8 +130,7 @@ export const TableColumnsProvider: React.FC<Props> = ({
|
||||
}
|
||||
})
|
||||
|
||||
const newColumns = reassignLinkColumn(activeColumns)
|
||||
updateColumnPreferences(newColumns)
|
||||
updateColumnPreferences(activeColumns)
|
||||
},
|
||||
[tableColumns, updateColumnPreferences],
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user