@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
41 lines • 5.53 kB
JavaScript
import { ScrollStrategy } from './scroll-strategy';
/**
* Prevents scrolling while the overlay content is shown.
*/
export class BlockScrollStrategy extends ScrollStrategy {
constructor(scrollContainer) {
super(scrollContainer);
this._initialized = false;
this.onScroll = (ev) => {
ev.preventDefault();
if (!this._sourceElement || this._sourceElement !== ev.target) {
this._sourceElement = ev.target;
this._initialScrollTop = this._sourceElement.scrollTop;
this._initialScrollLeft = this._sourceElement.scrollLeft;
}
this._sourceElement.scrollTop = this._initialScrollTop;
this._sourceElement.scrollLeft = this._initialScrollLeft;
};
}
/** @inheritdoc */
initialize(document, overlayService, id) {
if (this._initialized) {
return;
}
this._document = document;
this._initialized = true;
}
/** @inheritdoc */
attach() {
this._document.addEventListener('scroll', this.onScroll, true);
}
/** @inheritdoc */
detach() {
this._document.removeEventListener('scroll', this.onScroll, true);
this._sourceElement = null;
this._initialScrollTop = 0;
this._initialScrollLeft = 0;
this._initialized = false;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stc2Nyb2xsLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9vdmVybGF5L3Njcm9sbC9ibG9jay1zY3JvbGwtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5EOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7SUFPbkQsWUFBWSxlQUE2QjtRQUNyQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFQbkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFrQ3JCLGFBQVEsR0FBRyxDQUFDLEVBQVMsRUFBRSxFQUFFO1lBQzdCLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLE1BQWlCLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO2FBQzVEO1lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUM3RCxDQUFDLENBQUE7SUFwQ0QsQ0FBQztJQUVELGtCQUFrQjtJQUNYLFVBQVUsQ0FBQyxRQUFrQixFQUFFLGNBQWlDLEVBQUUsRUFBVTtRQUMvRSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELGtCQUFrQjtJQUNYLE1BQU07UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxNQUFNO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztDQWFKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWd4T3ZlcmxheVNlcnZpY2UgfSBmcm9tICcuLi9vdmVybGF5JztcbmltcG9ydCB7IFNjcm9sbFN0cmF0ZWd5IH0gZnJvbSAnLi9zY3JvbGwtc3RyYXRlZ3knO1xuXG4vKipcbiAqIFByZXZlbnRzIHNjcm9sbGluZyB3aGlsZSB0aGUgb3ZlcmxheSBjb250ZW50IGlzIHNob3duLlxuICovXG5leHBvcnQgY2xhc3MgQmxvY2tTY3JvbGxTdHJhdGVneSBleHRlbmRzIFNjcm9sbFN0cmF0ZWd5IHtcbiAgICBwcml2YXRlIF9pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudDtcbiAgICBwcml2YXRlIF9pbml0aWFsU2Nyb2xsVG9wOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfaW5pdGlhbFNjcm9sbExlZnQ6IG51bWJlcjtcbiAgICBwcml2YXRlIF9zb3VyY2VFbGVtZW50OiBFbGVtZW50O1xuXG4gICAgY29uc3RydWN0b3Ioc2Nyb2xsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgc3VwZXIoc2Nyb2xsQ29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXRkb2MgKi9cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZShkb2N1bWVudDogRG9jdW1lbnQsIG92ZXJsYXlTZXJ2aWNlOiBJZ3hPdmVybGF5U2VydmljZSwgaWQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXRkb2MgKi9cbiAgICBwdWJsaWMgYXR0YWNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXRkb2MgKi9cbiAgICBwdWJsaWMgZGV0YWNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgICAgICAgdGhpcy5fc291cmNlRWxlbWVudCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2luaXRpYWxTY3JvbGxUb3AgPSAwO1xuICAgICAgICB0aGlzLl9pbml0aWFsU2Nyb2xsTGVmdCA9IDA7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNjcm9sbCA9IChldjogRXZlbnQpID0+IHtcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9zb3VyY2VFbGVtZW50IHx8IHRoaXMuX3NvdXJjZUVsZW1lbnQgIT09IGV2LnRhcmdldCkge1xuICAgICAgICAgICAgdGhpcy5fc291cmNlRWxlbWVudCA9IGV2LnRhcmdldCBhcyBFbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbFNjcm9sbFRvcCA9IHRoaXMuX3NvdXJjZUVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbFNjcm9sbExlZnQgPSB0aGlzLl9zb3VyY2VFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zb3VyY2VFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuX2luaXRpYWxTY3JvbGxUb3A7XG4gICAgICAgIHRoaXMuX3NvdXJjZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMuX2luaXRpYWxTY3JvbGxMZWZ0O1xuICAgIH1cbn1cbiJdfQ==