fix(backdrop): use raf when adding/removing disable-scroll css

This commit is contained in:
Adam Bradley
2016-07-01 01:08:48 -05:00
parent 656426672c
commit 941cb1d196

View File

@ -1,5 +1,7 @@
import {Directive, ViewEncapsulation, HostListener, ElementRef, Input} from '@angular/core';
import {isTrueProperty} from '../../util/util';
import { Directive, ElementRef, Input } from '@angular/core';
import { isTrueProperty} from '../../util/util';
import { nativeRaf} from '../../util/dom';
const DISABLE_SCROLL = 'disable-scroll';
@ -19,23 +21,24 @@ export class Backdrop {
private static push() {
if (this.nuBackDrops === 0) {
console.debug('adding .disable-scroll to body');
document.body.classList.add(DISABLE_SCROLL);
} else {
console.warn('several backdrops on screen? probably a bug');
nativeRaf(() => {
console.debug('adding .disable-scroll to body');
document.body.classList.add(DISABLE_SCROLL);
});
}
this.nuBackDrops++;
}
private static pop() {
if (this.nuBackDrops === 0) {
console.error('pop requires a push');
return;
}
this.nuBackDrops--;
if (this.nuBackDrops === 0) {
console.debug('removing .disable-scroll from body');
document.body.classList.remove(DISABLE_SCROLL);
if (this.nuBackDrops > 0) {
this.nuBackDrops--;
if (this.nuBackDrops === 0) {
nativeRaf(() => {
console.debug('removing .disable-scroll from body');
document.body.classList.remove(DISABLE_SCROLL);
});
}
}
}