diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.js b/packages/mui-material/src/Autocomplete/Autocomplete.js
index f249219d26da5e..085b5b6e4f2bf7 100644
--- a/packages/mui-material/src/Autocomplete/Autocomplete.js
+++ b/packages/mui-material/src/Autocomplete/Autocomplete.js
@@ -718,6 +718,14 @@ const Autocomplete = React.forwardRef(function Autocomplete(inProps, ref) {
{noOptionsText}
,
);
+ } else if (externalForwardedProps.slots.popper || externalForwardedProps.slots.paper) {
+ autocompletePopper = (
+
+ {externalForwardedProps.slots.paper ? (
+
+ ) : null}
+
+ );
}
return (
diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.test.js b/packages/mui-material/src/Autocomplete/Autocomplete.test.js
index 97099aa953faee..d59b356f4eb5b5 100644
--- a/packages/mui-material/src/Autocomplete/Autocomplete.test.js
+++ b/packages/mui-material/src/Autocomplete/Autocomplete.test.js
@@ -2455,6 +2455,27 @@ describe('', () => {
const popper = screen.queryByTestId('popperRoot');
expect(popper).to.equal(null);
});
+
+ // Test for https://github.com/mui/material-ui/issues/44048
+ it('should render popper if custom paper is passed through slots even when there are no options', () => {
+ render(
+ }
+ slots={{
+ paper: (props) => ,
+ }}
+ slotProps={{
+ paper: { 'data-testid': 'paperRoot' },
+ }}
+ />,
+ );
+
+ const paper = screen.queryByTestId('paperRoot');
+ expect(paper).not.to.equal(null);
+ });
});
describe('prop: onChange', () => {