chore: removes duplicative loop over column state to determine linked cells (#7958)

This commit is contained in:
Jacob Fletcher
2024-08-29 12:35:51 -04:00
committed by GitHub
parent 2a8bd4c775
commit 6893f404ac
3 changed files with 16 additions and 33 deletions

View File

@@ -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>

View File

@@ -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 || {

View File

@@ -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],
)