-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
id building is not consistent when using accessorKey #4754
Comments
Thumbs up, this is also a problem for me |
@KevinVandy I just want to draw your attention to this issue, it seems to be a critical issue. |
fwiw as a workaround we resorted to using explicit ids on all columns 🤷♂️ |
@mlarcher it's not cool, we're mainly using the columns = columns.map(column => {
column.id = column.accessorKey;
return column;
}); |
Why even have the |
The fix was really simple so I've decided to try myself contributing. I also published a workaround package (feel free to use until merged/fixed) Just wrap your columns with import { fixDeepAccessorColumnIds } from 'tanstack-table-deep-accessor-key-workaround';
// ...
const columns = fixDeepAccessorColumnIds([
columnHelper.group({
header: 'Person',
columns: [
// will have id "person_info_name"
columnHelper.accessor('person.info.name', {
header: 'Name',
}),
columnHelper.accessor('person.info.email', {
header: 'Email',
id: 'user_email', // won't be affected since set explicitly
}),
// will have id "person_info_extra_notes"
columnHelper.accessor('person.info.extra.notes', {
header: 'Notes',
}),
],
})
]); |
Describe the bug
When using the accessorKey to define an id as declared in https://github.com/TanStack/table/blob/main/packages/table-core/src/core/column.ts#L39 the logic is not consistent.
That rule is fine when data is only one level deep, but does not work as expected when accessorKey digs deeper.
For example,
accessorKey: 'key1.key2'
will produceid = 'key1_key2'
whileaccessorKey: 'key1.key2.key3'
will produceid = 'key1_key2.key3'
.A simple fix would be to use the
g
flag in a regexp for the replace, i.e.(accessorKey ? accessorKey.replace(/\./g, '_') : undefined)
Your minimal, reproducible example
http://not.needed.com
Steps to reproduce
all is said in the description
Expected behavior
a consistent id
How often does this bug happen?
Every time
Screenshots or Videos
No response
Platform
all
react-table version
8.7.9
TypeScript version
No response
Additional context
No response
Terms & Code of Conduct
The text was updated successfully, but these errors were encountered: