Skip to content

Commit

Permalink
[Snackbar] Add check for autoHideDuration if equals 0 (mui#12002)
Browse files Browse the repository at this point in the history
* Add check for snackbar autoHideDuration if equals 0

* Add unit test for resumeHideDuration equaling zero

* fix anothre potential issue
  • Loading branch information
C-Rodg authored and Joe Shelby committed Jul 14, 2018
1 parent 118b9b3 commit d1ce516
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 6 deletions.
17 changes: 11 additions & 6 deletions packages/material-ui/src/Snackbar/Snackbar.js
Original file line number Diff line number Diff line change
Expand Up @@ -133,19 +133,24 @@ class Snackbar extends React.Component {
}

// Timer that controls delay before snackbar auto hides
setAutoHideTimer(autoHideDuration = null) {
if (!this.props.onClose || this.props.autoHideDuration == null) {
setAutoHideTimer(autoHideDuration) {
const autoHideDurationBefore =
autoHideDuration != null ? autoHideDuration : this.props.autoHideDuration;

if (!this.props.onClose || autoHideDurationBefore == null) {
return;
}

clearTimeout(this.timerAutoHide);
this.timerAutoHide = setTimeout(() => {
if (!this.props.onClose || this.props.autoHideDuration == null) {
const autoHideDurationAfter =
autoHideDuration != null ? autoHideDuration : this.props.autoHideDuration;
if (!this.props.onClose || autoHideDurationAfter == null) {
return;
}

this.props.onClose(null, 'timeout');
}, autoHideDuration || this.props.autoHideDuration || 0);
}, autoHideDurationBefore);
}

handleMouseEnter = event => {
Expand Down Expand Up @@ -178,11 +183,11 @@ class Snackbar extends React.Component {
// or when the window is shown back.
handleResume = () => {
if (this.props.autoHideDuration != null) {
if (this.props.resumeHideDuration !== undefined) {
if (this.props.resumeHideDuration != null) {
this.setAutoHideTimer(this.props.resumeHideDuration);
return;
}
this.setAutoHideTimer((this.props.autoHideDuration || 0) * 0.5);
this.setAutoHideTimer(this.props.autoHideDuration * 0.5);
}
};

Expand Down
23 changes: 23 additions & 0 deletions packages/material-ui/src/Snackbar/Snackbar.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,29 @@ describe('<Snackbar />', () => {
assert.strictEqual(handleClose.callCount, 1);
assert.deepEqual(handleClose.args[0], [null, 'timeout']);
});

it('should call onClose immediately after user interaction when 0', () => {
const handleClose = spy();
const autoHideDuration = 6e3;
const resumeHideDuration = 0;
const wrapper = mount(
<Snackbar
open
onClose={handleClose}
message="message"
autoHideDuration={autoHideDuration}
resumeHideDuration={resumeHideDuration}
/>,
);
wrapper.setProps({ open: true });
assert.strictEqual(handleClose.callCount, 0);
wrapper.simulate('mouseEnter');
clock.tick(100);
wrapper.simulate('mouseLeave');
clock.tick(resumeHideDuration);
assert.strictEqual(handleClose.callCount, 1);
assert.deepEqual(handleClose.args[0], [null, 'timeout']);
});
});

describe('prop: disableWindowBlurListener', () => {
Expand Down

0 comments on commit d1ce516

Please sign in to comment.