Skip to content

Commit b49f652

Browse files
fix: Prevent duplicate IDs in FieldToggle when multiple column pickers are present
Use React.useId() to generate unique IDs for the Switch component instead of using the index prop. This prevents label/id collisions when multiple column pickers (e.g., ColumnsButton and SelectColumnsButton) are rendered simultaneously. Fixes #11236
1 parent 5f505e7 commit b49f652

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

packages/ra-ui-materialui/src/preferences/FieldToggle.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { ComponentsOverrides, styled } from '@mui/material/styles';
1010
export const FieldToggle = (props: FieldToggleProps) => {
1111
const { selected, label, onToggle, onMove, source, index } = props;
1212
const resource = useResourceContext();
13+
const switchId = React.useId();
1314
const dropIndex = React.useRef<number | null>(null);
1415
const x = React.useRef<number | null>(null);
1516
const y = React.useRef<number | null>(null);
@@ -110,12 +111,12 @@ export const FieldToggle = (props: FieldToggleProps) => {
110111
onDragOver={onMove ? handleDragOver : undefined}
111112
data-index={index}
112113
>
113-
<label htmlFor={`switch_${index}`}>
114+
<label htmlFor={switchId}>
114115
<Switch
115116
checked={selected}
116117
onChange={onToggle}
117118
name={`${index}`}
118-
id={`switch_${index}`}
119+
id={switchId}
119120
size="small"
120121
sx={{ mr: 0.5, ml: -0.5 }}
121122
/>

0 commit comments

Comments
 (0)