The backdrop component is used to provide emphasis on a particular element or parts of it.
+
+The overlay signals to the user of a state change within the application and can be used for creating loaders, dialogs and more.
+In its simplest form, the backdrop component will add a dimmed layer over your application.
+
+{{"demo": "pages/components/backdrop/SimpleBackdrop.js"}}
diff --git a/docs/src/pages/discover-more/backers/backers.md b/docs/src/pages/discover-more/backers/backers.md
index a75b1b97316bad..9c6cef6dd80a46 100644
--- a/docs/src/pages/discover-more/backers/backers.md
+++ b/docs/src/pages/discover-more/backers/backers.md
@@ -91,26 +91,26 @@ Funds donated via OpenCollective are managed transparently and aimed to sustain
These great services sponsor Material-UI's core infrastructure:
-- [](https://github.com/)
+- [](https://github.com/)
GitHub allows us to host the Git repository.
-- [](https://circleci.com/)
+- [](https://circleci.com/)
CircleCI allows us to run the test suite.
-- [](https://www.netlify.com/)
+- [](https://www.netlify.com/)
Netlify allows us to distribute the documentation.
-- [](https://crowdin.com/)
+- [](https://crowdin.com/)
CrowdIn allows us to translate the documentation.
-- [](https://www.browserstack.com/)
+- [](https://www.browserstack.com/)
BrowserStack allows us to test in real browsers.
-- [](https://codecov.io/)
+- [](https://codecov.io/)
CodeCov allows us to monitor the test coverage.
diff --git a/docs/src/pages/discover-more/roadmap/roadmap.md b/docs/src/pages/discover-more/roadmap/roadmap.md
index d6cdd58c3533fa..905a63c025f2ae 100644
--- a/docs/src/pages/discover-more/roadmap/roadmap.md
+++ b/docs/src/pages/discover-more/roadmap/roadmap.md
@@ -84,6 +84,7 @@ Here are the components we will work on being supported in the Material-UI ecosy
| TopLayout | ⏳ |
| Big Calendar | ⏳⭐️ |
| Charts | ⏳⭐️ |
+| Sparkline | ⏳⭐️ |
| Color Picker | ⏳⭐️ |
| Gantt Chart | ⏳⭐️ |
| Gauge | ⏳⭐️ |
diff --git a/docs/static/in-house/bonsaiilabs.png b/docs/static/in-house/bonsaiilabs.png
new file mode 100644
index 00000000000000..5cebacb93c20d4
Binary files /dev/null and b/docs/static/in-house/bonsaiilabs.png differ
diff --git a/packages/material-ui-lab/src/Autocomplete/Autocomplete.js b/packages/material-ui-lab/src/Autocomplete/Autocomplete.js
index 991500fc58a886..241a630e38dd10 100644
--- a/packages/material-ui-lab/src/Autocomplete/Autocomplete.js
+++ b/packages/material-ui-lab/src/Autocomplete/Autocomplete.js
@@ -141,6 +141,7 @@ export const styles = theme => ({
/* Styles applied to the `Paper` component. */
paper: {
...theme.typography.body1,
+ overflow: 'hidden',
margin: '4px 0',
'& > ul': {
maxHeight: '40vh',
diff --git a/packages/material-ui/src/AppBar/AppBar.js b/packages/material-ui/src/AppBar/AppBar.js
index 7fe2279ce63995..fad841549000de 100644
--- a/packages/material-ui/src/AppBar/AppBar.js
+++ b/packages/material-ui/src/AppBar/AppBar.js
@@ -25,6 +25,10 @@ export const styles = theme => {
top: 0,
left: 'auto',
right: 0,
+ '@media print': {
+ // Prevent the app bar to be visible on each printed page.
+ position: 'absolute',
+ },
},
/* Styles applied to the root element if `position="absolute"`. */
positionAbsolute: {
diff --git a/packages/material-ui/src/NoSsr/NoSsr.test.js b/packages/material-ui/src/NoSsr/NoSsr.test.js
index f0ec0c2f2dc59b..3561a251ba0d0f 100644
--- a/packages/material-ui/src/NoSsr/NoSsr.test.js
+++ b/packages/material-ui/src/NoSsr/NoSsr.test.js
@@ -1,15 +1,15 @@
import React from 'react';
import { assert } from 'chai';
-import { createMount, createRender } from '@material-ui/core/test-utils';
+import { createMount } from '@material-ui/core/test-utils';
+import createServerRender from 'test/utils/createServerRender';
import NoSsr from './NoSsr';
describe('', () => {
let mount;
- let render;
+ const serverRender = createServerRender();
before(() => {
mount = createMount({ strict: true });
- render = createRender();
});
after(() => {
@@ -18,7 +18,7 @@ describe('', () => {
describe('server-side rendering', () => {
it('should not render the children as the width is unknown', () => {
- const wrapper = render(
+ const wrapper = serverRender(
Hello,
@@ -40,7 +40,7 @@ describe('', () => {
describe('prop: fallback', () => {
it('should render the fallback', () => {
- const wrapper = render(
+ const wrapper = serverRender(
Hello
diff --git a/packages/material-ui/src/Portal/Portal.test.js b/packages/material-ui/src/Portal/Portal.test.js
index 49d9bce0a55b22..182f7a5eaab40d 100644
--- a/packages/material-ui/src/Portal/Portal.test.js
+++ b/packages/material-ui/src/Portal/Portal.test.js
@@ -2,19 +2,15 @@
import React from 'react';
import { expect } from 'chai';
import { spy } from 'sinon';
-import { createRender } from '@material-ui/core/test-utils';
+import createServerRender from 'test/utils/createServerRender';
import consoleErrorMock from 'test/utils/consoleErrorMock';
import { createClientRender } from 'test/utils/createClientRender';
import Portal from './Portal';
describe('', () => {
- let serverRender;
+ const serverRender = createServerRender();
const render = createClientRender({ strict: true });
- before(() => {
- serverRender = createRender();
- });
-
describe('server-side', () => {
// Only run the test on node.
if (!/jsdom/.test(window.navigator.userAgent)) {
diff --git a/packages/material-ui/src/test-utils/createRender.js b/packages/material-ui/src/test-utils/createRender.js
index 1153efa9fbeff6..1a16fefe3369dc 100644
--- a/packages/material-ui/src/test-utils/createRender.js
+++ b/packages/material-ui/src/test-utils/createRender.js
@@ -4,7 +4,7 @@ import { RenderContext } from './RenderMode';
/**
* Generate a render to string function.
- * @deprecated
+ * @deprecated to remvoe in v5
*/
export default function createRender(options1 = {}) {
const { render = enzymeRender, ...other1 } = options1;
diff --git a/packages/material-ui/src/useMediaQuery/useMediaQuery.test.js b/packages/material-ui/src/useMediaQuery/useMediaQuery.test.js
index 87e6365298466c..163816a0bfaead 100644
--- a/packages/material-ui/src/useMediaQuery/useMediaQuery.test.js
+++ b/packages/material-ui/src/useMediaQuery/useMediaQuery.test.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import { ThemeProvider } from '@material-ui/styles';
import consoleErrorMock from 'test/utils/consoleErrorMock';
import { act, createClientRender } from 'test/utils/createClientRender';
-import { createRender } from '@material-ui/core/test-utils';
+import createServerRender from 'test/utils/createServerRender';
import mediaQuery from 'css-mediaquery';
import { expect } from 'chai';
import { spy, stub } from 'sinon';
@@ -238,11 +238,7 @@ describe('useMediaQuery', () => {
});
describe('server-side', () => {
- let serverRender;
-
- before(() => {
- serverRender = createRender();
- });
+ const serverRender = createServerRender();
it('should use the ssr match media ponyfill', () => {
const ref = React.createRef();
diff --git a/test/utils/createServerRender.js b/test/utils/createServerRender.js
index 668ab7cba75304..6f20f2f6e058c7 100644
--- a/test/utils/createServerRender.js
+++ b/test/utils/createServerRender.js
@@ -8,7 +8,7 @@ import { stub } from 'sinon';
* @param {boolean} [options.expectUseLayoutEffectWarning]
*/
export default function createServerRender(options = {}) {
- const { expectUseLayoutEffectWarning } = options;
+ const { expectUseLayoutEffectWarning = false } = options;
beforeEach(() => {
stub(console, 'error').callsFake((message, ...args) => {