Skip to content

Commit 583f7df

Browse files
authored
Merge pull request #6967 from marmelab/fix-list-keyboard
Fix List Filter Menu is not accessible
2 parents ad7b98e + 24b3a88 commit 583f7df

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

packages/ra-ui-materialui/src/list/filter/FilterButton.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ const FilterButton = (props: FilterButtonProps): JSX.Element => {
8282
<Button
8383
className="add-filter"
8484
label="ra.action.add_filter"
85+
aria-haspopup="true"
8586
onClick={handleClickButton}
8687
>
8788
<ContentFilter />
@@ -91,12 +92,13 @@ const FilterButton = (props: FilterButtonProps): JSX.Element => {
9192
anchorEl={anchorEl.current}
9293
onClose={handleRequestClose}
9394
>
94-
{hiddenFilters.map((filterElement: JSX.Element) => (
95+
{hiddenFilters.map((filterElement: JSX.Element, index) => (
9596
<FilterButtonMenuItem
9697
key={filterElement.props.source}
9798
filter={filterElement}
9899
resource={resource}
99100
onShow={handleShow}
101+
autoFocus={index === 0}
100102
/>
101103
))}
102104
</Menu>

packages/ra-ui-materialui/src/list/filter/FilterButtonMenuItem.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { FieldTitle, useResourceContext } from 'ra-core';
66

77
export const FilterButtonMenuItem = forwardRef<any, FilterButtonMenuItemProps>(
88
(props, ref) => {
9-
const { filter, onShow } = props;
9+
const { filter, onShow, autoFocus } = props;
1010
const resource = useResourceContext(props);
1111
const handleShow = useCallback(() => {
1212
onShow({
@@ -22,6 +22,7 @@ export const FilterButtonMenuItem = forwardRef<any, FilterButtonMenuItemProps>(
2222
data-default-value={filter.props.defaultValue}
2323
key={filter.props.source}
2424
onClick={handleShow}
25+
autoFocus={autoFocus}
2526
ref={ref}
2627
>
2728
<FieldTitle
@@ -38,10 +39,12 @@ FilterButtonMenuItem.propTypes = {
3839
filter: PropTypes.element.isRequired,
3940
onShow: PropTypes.func.isRequired,
4041
resource: PropTypes.string,
42+
autoFocus: PropTypes.bool,
4143
};
4244

4345
export interface FilterButtonMenuItemProps {
4446
filter: JSX.Element;
4547
onShow: (params: { source: string; defaultValue: any }) => void;
4648
resource: string;
49+
autoFocus: boolean;
4750
}

0 commit comments

Comments
 (0)