Skip to content

Commit 3e653eb

Browse files
committed
add focused style
1 parent aac1fb6 commit 3e653eb

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

packages/mui-joy/src/AutocompleteOption/AutocompleteOption.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import { unstable_capitalize as capitalize } from '@mui/utils';
66
import composeClasses from '@mui/base/composeClasses';
77
import { ListItemButtonRoot } from '../ListItemButton/ListItemButton';
88
import { styled, useThemeProps } from '../styles';
9-
import { getAutocompleteOptionUtilityClass } from './autocompleteOptionClasses';
9+
import autocompleteOptionClasses, {
10+
getAutocompleteOptionUtilityClass,
11+
} from './autocompleteOptionClasses';
1012
import { AutocompleteOptionOwnerState, AutocompleteOptionTypeMap } from './AutocompleteOptionProps';
1113

1214
const useUtilityClasses = (ownerState: AutocompleteOptionOwnerState) => {
@@ -28,12 +30,20 @@ export const AutocompleteOptionRoot = styled(ListItemButtonRoot as unknown as 'l
2830
slot: 'Root',
2931
overridesResolver: (props, styles) => styles.root,
3032
})<{ ownerState: AutocompleteOptionOwnerState }>(({ theme, ownerState }) => ({
33+
'&:not(:hover)': {
34+
transition: 'none', // prevent flicker when using keyboard arrows to move between options
35+
},
3136
'&[aria-disabled="true"]': theme.variants[`${ownerState.variant!}Disabled`]?.[ownerState.color!],
3237
'&[aria-selected="true"]': {
3338
color: theme.vars.palette.primary.softColor,
3439
backgroundColor: theme.vars.palette.primary.softBg,
3540
fontWeight: theme.vars.fontWeight.md,
3641
},
42+
[`&.${autocompleteOptionClasses.focused}:not([aria-selected="true"]):not(:hover)`]: {
43+
// create the focused style similar to the hover state
44+
backgroundColor:
45+
theme.variants[`${ownerState.variant!}Hover`]?.[ownerState.color!]?.backgroundColor,
46+
},
3747
}));
3848

3949
const AutocompleteOption = React.forwardRef(function AutocompleteOption(inProps, ref) {

packages/mui-joy/src/AutocompleteOption/autocompleteOptionClasses.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { generateUtilityClass, generateUtilityClasses } from '../className';
33
export interface AutocompleteOptionClasses {
44
/** Styles applied to the root element. */
55
root: string;
6+
/** State class applied to the root element if focused. */
7+
focused: string;
68
/** State class applied to the `component`'s `focusVisibleClassName` prop. */
79
focusVisible: string;
810
/** Styles applied to the root element if `color="primary"`. */
@@ -37,6 +39,7 @@ const autocompleteOptionClasses: AutocompleteOptionClasses = generateUtilityClas
3739
'JoyAutocompleteOption',
3840
[
3941
'root',
42+
'focused',
4043
'focusVisible',
4144
'colorPrimary',
4245
'colorNeutral',

0 commit comments

Comments
 (0)