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