Skip to content
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
28ea5aa
Bump vite to 3.2.10 [SECURITY] (#41761)
renovate[bot] Apr 4, 2024
6d0f4f2
[blog] Fix typo in MUI X v7 announcement post (#41773)
levigunz Apr 4, 2024
4d99e04
[core] Remove Base UI mentions from issues templates (#41733)
danilo-leal Apr 4, 2024
d6b1f64
[pigment-css][docs] Fix git diff formatting
oliviertassinari Apr 4, 2024
fc623b4
[base-ui][website] Page <title> should have no dots
oliviertassinari Apr 4, 2024
f5a40ab
[docs] Drop IE 11 official support (#41611)
iammminzzy Apr 5, 2024
9cc4984
6.0.0-alpha.1 (#41749)
siriwatknp Apr 5, 2024
dd0b68f
[material-ui][Autocomplete] Prevent start adornment from causing inpu…
TahaRhidouani Apr 5, 2024
2ed5db5
[material-ui][Autocomplete] Prevent start adornment from causing inpu…
TahaRhidouani Apr 5, 2024
d7f518b
[material-ui][Autocomplete] Fix build
TahaRhidouani Apr 5, 2024
6265175
[material-ui][Autocomplete] Fix build
TahaRhidouani Apr 5, 2024
95ddaf8
[material-ui][Autocomplete] Fix use case for multiple
TahaRhidouani Apr 5, 2024
59c9214
Merge branch 'autocomplete-startadornment-patch' of github.com:TahaRh…
TahaRhidouani Apr 5, 2024
958eab1
[material-ui][Autocomplete] Fix flicker due to hover state
TahaRhidouani Apr 5, 2024
2c4402f
[material-ui][Autocomplete] Fix focused logic & add tests
TahaRhidouani Apr 5, 2024
fbfff90
[material-ui][Autocomplete] Prettify code
TahaRhidouani Apr 6, 2024
09d1210
Merge branch 'next' into autocomplete-startadornment-patch
ZeeshanTamboli Apr 26, 2024
4ac0187
[material-ui][Autocomplete] address PR comments
TahaRhidouani Apr 26, 2024
4df7fb5
[material-ui][Autocomplete] forgot to regenerate docs
TahaRhidouani Apr 26, 2024
468ddb8
[material-ui][Autocomplete] undo vs code import reorg & remove unnece…
TahaRhidouani Apr 29, 2024
39e6635
Merge branch 'next' of github.com:TahaRhidouani/material-ui into auto…
TahaRhidouani Apr 29, 2024
1bc732e
[material-ui][Autocomplete] address PR comments & add test
TahaRhidouani May 1, 2024
b886b6a
[material-ui][Autocomplete] tweaks to the test
TahaRhidouani May 3, 2024
db62d3b
Merge branch 'next' into autocomplete-startadornment-patch
ZeeshanTamboli May 3, 2024
6c105d3
Merge branch 'autocomplete-startadornment-patch' of https://github.co…
ZeeshanTamboli May 3, 2024
9ff8ee0
prettier
ZeeshanTamboli May 3, 2024
20c213b
tweak test
ZeeshanTamboli May 4, 2024
b7dbce0
Merge branch 'next' into autocomplete-startadornment-patch
ZeeshanTamboli May 4, 2024
71c4d33
Merge branch 'next' into autocomplete-startadornment-patch
ZeeshanTamboli May 8, 2024
ea24fe2
remove multiple
ZeeshanTamboli May 8, 2024
dc9a257
add visual regression test
ZeeshanTamboli May 8, 2024
c8fb9dc
remove diff
ZeeshanTamboli May 8, 2024
1eb8a3d
prettier
ZeeshanTamboli May 8, 2024
881ce56
Merge branch 'next' into autocomplete-startadornment-patch
ZeeshanTamboli May 9, 2024
b958bea
remove unnecessary props from Autocomplete in the visual regression test
ZeeshanTamboli May 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/pages/material-ui/api/autocomplete.json
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,12 @@
"description": "Styles applied to the loading wrapper.",
"isGlobal": false
},
{
"key": "multiple",
"className": "MuiAutocomplete-multiple",
"description": "Styles applied when the autocomplete supports multiple selections.",
"isGlobal": false
},
{
"key": "noOptions",
"className": "MuiAutocomplete-noOptions",
Expand Down
3 changes: 3 additions & 0 deletions docs/translations/api-docs/autocomplete/autocomplete.json
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,9 @@
"description": "Styles applied to {{nodeName}}.",
"nodeName": "the loading wrapper"
},
"multiple": {
"description": "Styles applied when the autocomplete supports multiple selections."
},
"noOptions": {
"description": "Styles applied to {{nodeName}}.",
"nodeName": "the no option wrapper"
Expand Down
1 change: 1 addition & 0 deletions packages/mui-material/src/Autocomplete/Autocomplete.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export type AutocompleteOwnerState<
focused: boolean;
fullWidth: boolean;
getOptionLabel: (option: Value | AutocompleteFreeSoloValueMapping<FreeSolo>) => string;
multiple: boolean;
hasClearIcon: boolean;
hasPopupIcon: boolean;
inputFocused: boolean;
Expand Down
36 changes: 24 additions & 12 deletions packages/mui-material/src/Autocomplete/Autocomplete.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const useUtilityClasses = (ownerState) => {
expanded,
focused,
fullWidth,
multiple,
hasClearIcon,
hasPopupIcon,
inputFocused,
Expand All @@ -48,7 +49,7 @@ const useUtilityClasses = (ownerState) => {
hasClearIcon && 'hasClearIcon',
hasPopupIcon && 'hasPopupIcon',
],
inputRoot: ['inputRoot'],
inputRoot: ['inputRoot', multiple && 'multiple'],
input: ['input', inputFocused && 'inputFocused'],
tag: ['tag', `tagSize${capitalize(size)}`],
endAdornment: ['endAdornment'],
Expand All @@ -72,7 +73,7 @@ const AutocompleteRoot = styled('div', {
slot: 'Root',
overridesResolver: (props, styles) => {
const { ownerState } = props;
const { fullWidth, hasClearIcon, hasPopupIcon, inputFocused, size } = ownerState;
const { fullWidth, multiple, hasClearIcon, hasPopupIcon, inputFocused, size } = ownerState;

return [
{ [`& .${autocompleteClasses.tag}`]: styles.tag },
Expand All @@ -82,26 +83,20 @@ const AutocompleteRoot = styled('div', {
{ [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused },
styles.root,
fullWidth && styles.fullWidth,
multiple && styles.multiple,
hasPopupIcon && styles.hasPopupIcon,
hasClearIcon && styles.hasClearIcon,
];
},
})({
[`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {
visibility: 'visible',
},
/* Avoid double tap issue on iOS */
'@media (pointer: fine)': {
[`&:hover .${autocompleteClasses.clearIndicator}`]: {
visibility: 'visible',
},
},
[`& .${autocompleteClasses.tag}`]: {
margin: 3,
maxWidth: 'calc(100% - 6px)',
},
[`& .${autocompleteClasses.inputRoot}`]: {
flexWrap: 'wrap',
[`&.${autocompleteClasses.multiple}`]: {
flexWrap: 'wrap',
},
[`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {
paddingRight: 26 + 4,
},
Expand All @@ -113,6 +108,23 @@ const AutocompleteRoot = styled('div', {
minWidth: 30,
},
},
[`&.${autocompleteClasses.focused}`]: {
[`& .${autocompleteClasses.clearIndicator}`]: {
visibility: 'visible',
},
[`& .${autocompleteClasses.input}`]: {
minWidth: 0,
},
},
/* Avoid double tap issue on iOS */
'@media (pointer: fine)': {
[`&:hover .${autocompleteClasses.clearIndicator}`]: {
visibility: 'visible',
},
[`&:hover .${autocompleteClasses.input}`]: {
minWidth: 0,
},
},
[`& .${inputClasses.root}`]: {
paddingBottom: 1,
'& .MuiInput-input': {
Expand Down
32 changes: 22 additions & 10 deletions packages/mui-material/src/Autocomplete/Autocomplete.test.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
import * as React from 'react';
import PropTypes from 'prop-types';
import { expect } from 'chai';
import {
act,
createRenderer,
fireEvent,
screen,
strictModeDoubleLoggingSuppressed,
} from '@mui-internal/test-utils';
import { spy } from 'sinon';
import userEvent from '@testing-library/user-event';
import Box from '@mui/system/Box';
import { ThemeProvider, createTheme } from '@mui/material/styles';
import TextField from '@mui/material/TextField';
import Chip, { chipClasses } from '@mui/material/Chip';
import Autocomplete, {
autocompleteClasses as classes,
createFilterOptions,
} from '@mui/material/Autocomplete';
import { paperClasses } from '@mui/material/Paper';
import Chip, { chipClasses } from '@mui/material/Chip';
import { iconButtonClasses } from '@mui/material/IconButton';
import InputAdornment from '@mui/material/InputAdornment';
import { paperClasses } from '@mui/material/Paper';
import TextField from '@mui/material/TextField';
import Tooltip from '@mui/material/Tooltip';
import { ThemeProvider, createTheme } from '@mui/material/styles';
import Box from '@mui/system/Box';
import userEvent from '@testing-library/user-event';
import { expect } from 'chai';
import PropTypes from 'prop-types';
import * as React from 'react';
import { spy } from 'sinon';
import describeConformance from '../../test/describeConformance';

function checkHighlightIs(listbox, expected) {
Expand Down Expand Up @@ -503,6 +503,18 @@ describe('<Autocomplete />', () => {
});
});

it('should apply the multiple class', () => {
const { container } = render(
<Autocomplete
openOnFocus
options={[]}
renderInput={(params) => <TextField {...params} />}
multiple
/>,
);
expect(container.querySelector(`.${classes.inputRoot}`)).to.have.class(classes.multiple);
});

it('should remove the last option', () => {
const handleChange = spy();
const options = ['one', 'two'];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
import generateUtilityClass from '@mui/utils/generateUtilityClass';
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';

export interface AutocompleteClasses {
/** Styles applied to the root element. */
Expand All @@ -18,6 +18,8 @@ export interface AutocompleteClasses {
tagSizeSmall: string;
/** Styles applied to the tag elements, for example the chips if `size="medium"`. */
tagSizeMedium: string;
/** Styles applied when the autocomplete supports multiple selections. */
multiple: string;
/** Styles applied when the popup icon is rendered. */
hasPopupIcon: string;
/** Styles applied when the clear icon is rendered. */
Expand Down Expand Up @@ -71,6 +73,7 @@ const autocompleteClasses: AutocompleteClasses = generateUtilityClasses('MuiAuto
'tag',
'tagSizeSmall',
'tagSizeMedium',
'multiple',
'hasPopupIcon',
'hasClearIcon',
'inputRoot',
Expand Down