@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
81 lines • 11.4 kB
JavaScript
import { __extends } from "tslib";
import { ScrollStrategy } from './scroll-strategy';
/**
* Uses a tolerance and closes the shown component upon scrolling if the tolerance is exceeded
*/
var CloseScrollStrategy = /** @class */ (function (_super) {
__extends(CloseScrollStrategy, _super);
function CloseScrollStrategy(scrollContainer) {
var _this = _super.call(this, scrollContainer) || this;
_this._initialized = false;
_this.onScroll = function (ev) {
if (!_this._sourceElement) {
return;
}
_this.cumulativeScrollTop += _this._sourceElement.scrollTop;
_this.cumulativeScrollLeft += _this._sourceElement.scrollLeft;
if (Math.abs(_this.cumulativeScrollTop - _this.initialScrollTop) > _this._threshold ||
Math.abs(_this.cumulativeScrollLeft - _this.initialScrollLeft) > _this._threshold) {
_this._document.removeEventListener('scroll', _this.onScroll, true);
_this._overlayService.hide(_this._id);
}
};
_this._scrollContainer = scrollContainer;
_this._threshold = 10;
_this.cumulativeScrollTop = 0;
_this.cumulativeScrollLeft = 0;
return _this;
}
/** @inheritdoc */
CloseScrollStrategy.prototype.initialize = function (document, overlayService, id) {
if (this._initialized) {
return;
}
this._overlayService = overlayService;
this._id = id;
this._document = document;
this._initialized = true;
};
/** @inheritdoc */
CloseScrollStrategy.prototype.attach = function () {
if (this._scrollContainer) {
this._scrollContainer.addEventListener('scroll', this.onScroll);
this._sourceElement = this._scrollContainer;
}
else {
this._document.addEventListener('scroll', this.onScroll);
if (document.documentElement.scrollHeight > document.documentElement.clientHeight) {
this._sourceElement = document.documentElement;
}
else if (document.body.scrollHeight > document.body.clientHeight) {
this._sourceElement = document.body;
}
}
if (!this._sourceElement) {
return;
}
this.cumulativeScrollTop = 0;
this.cumulativeScrollLeft = 0;
this.initialScrollTop = this._sourceElement.scrollTop;
this.initialScrollLeft = this._sourceElement.scrollLeft;
};
/** @inheritdoc */
CloseScrollStrategy.prototype.detach = function () {
// TODO: check why event listener removes only on first call and remains on each next!!!
if (this._scrollContainer) {
this._scrollContainer.removeEventListener('scroll', this.onScroll);
}
else {
this._document.removeEventListener('scroll', this.onScroll);
}
this._sourceElement = null;
this.cumulativeScrollTop = 0;
this.cumulativeScrollLeft = 0;
this.initialScrollTop = 0;
this.initialScrollLeft = 0;
this._initialized = false;
};
return CloseScrollStrategy;
}(ScrollStrategy));
export { CloseScrollStrategy };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2Utc2Nyb2xsLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9vdmVybGF5L3Njcm9sbC9jbG9zZS1zY3JvbGwtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRDs7R0FFRztBQUNIO0lBQXlDLHVDQUFjO0lBYW5ELDZCQUFZLGVBQTZCO1FBQXpDLFlBQ0ksa0JBQU0sZUFBZSxDQUFDLFNBS3pCO1FBVk8sa0JBQVksR0FBRyxLQUFLLENBQUM7UUErRHJCLGNBQVEsR0FBRyxVQUFDLEVBQVM7WUFDekIsSUFBSSxDQUFDLEtBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3RCLE9BQU87YUFDVjtZQUVELEtBQUksQ0FBQyxtQkFBbUIsSUFBSSxLQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztZQUMxRCxLQUFJLENBQUMsb0JBQW9CLElBQUksS0FBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7WUFFNUQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxLQUFJLENBQUMsVUFBVTtnQkFDNUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSSxDQUFDLFVBQVUsRUFBRTtnQkFDaEYsS0FBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsS0FBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbEUsS0FBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0wsQ0FBQyxDQUFBO1FBdEVHLEtBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFDeEMsS0FBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsS0FBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQztRQUM3QixLQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDOztJQUNsQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsd0NBQVUsR0FBakIsVUFBa0IsUUFBa0IsRUFBRSxjQUFpQyxFQUFFLEVBQVU7UUFDL0UsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELGtCQUFrQjtJQUNYLG9DQUFNLEdBQWI7UUFDSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUMvQzthQUFNO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUU7Z0JBQy9FLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGVBQTBCLENBQUM7YUFDN0Q7aUJBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDaEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsSUFBZSxDQUFDO2FBQ2xEO1NBQ0o7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN0QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO1FBQ3RELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztJQUM1RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsb0NBQU0sR0FBYjtRQUNJLHdGQUF3RjtRQUN4RixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN0RTthQUFNO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBZ0JMLDBCQUFDO0FBQUQsQ0FBQyxBQXRGRCxDQUF5QyxjQUFjLEdBc0Z0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElneE92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vb3ZlcmxheSc7XG5pbXBvcnQgeyBTY3JvbGxTdHJhdGVneSB9IGZyb20gJy4vc2Nyb2xsLXN0cmF0ZWd5JztcblxuLyoqXG4gKiBVc2VzIGEgdG9sZXJhbmNlIGFuZCBjbG9zZXMgdGhlIHNob3duIGNvbXBvbmVudCB1cG9uIHNjcm9sbGluZyBpZiB0aGUgdG9sZXJhbmNlIGlzIGV4Y2VlZGVkXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG9zZVNjcm9sbFN0cmF0ZWd5IGV4dGVuZHMgU2Nyb2xsU3RyYXRlZ3kge1xuICAgIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudDtcbiAgICBwcml2YXRlIF9vdmVybGF5U2VydmljZTogSWd4T3ZlcmxheVNlcnZpY2U7XG4gICAgcHJpdmF0ZSBfaWQ6IHN0cmluZztcbiAgICBwcml2YXRlIGluaXRpYWxTY3JvbGxUb3A6IG51bWJlcjtcbiAgICBwcml2YXRlIGluaXRpYWxTY3JvbGxMZWZ0OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBjdW11bGF0aXZlU2Nyb2xsVG9wOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBjdW11bGF0aXZlU2Nyb2xsTGVmdDogbnVtYmVyO1xuICAgIHByaXZhdGUgX3RocmVzaG9sZDogbnVtYmVyO1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfc291cmNlRWxlbWVudDogRWxlbWVudDtcbiAgICBwcml2YXRlIF9zY3JvbGxDb250YWluZXI6IEhUTUxFbGVtZW50O1xuXG4gICAgY29uc3RydWN0b3Ioc2Nyb2xsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgc3VwZXIoc2Nyb2xsQ29udGFpbmVyKTtcbiAgICAgICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyID0gc2Nyb2xsQ29udGFpbmVyO1xuICAgICAgICB0aGlzLl90aHJlc2hvbGQgPSAxMDtcbiAgICAgICAgdGhpcy5jdW11bGF0aXZlU2Nyb2xsVG9wID0gMDtcbiAgICAgICAgdGhpcy5jdW11bGF0aXZlU2Nyb2xsTGVmdCA9IDA7XG4gICAgfVxuXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXG4gICAgcHVibGljIGluaXRpYWxpemUoZG9jdW1lbnQ6IERvY3VtZW50LCBvdmVybGF5U2VydmljZTogSWd4T3ZlcmxheVNlcnZpY2UsIGlkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX2luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3ZlcmxheVNlcnZpY2UgPSBvdmVybGF5U2VydmljZTtcbiAgICAgICAgdGhpcy5faWQgPSBpZDtcbiAgICAgICAgdGhpcy5fZG9jdW1lbnQgPSBkb2N1bWVudDtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xuICAgIHB1YmxpYyBhdHRhY2goKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zY3JvbGxDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICAgICAgICAgIHRoaXMuX3NvdXJjZUVsZW1lbnQgPSB0aGlzLl9zY3JvbGxDb250YWluZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZUVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZUVsZW1lbnQgPSBkb2N1bWVudC5ib2R5IGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3NvdXJjZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VtdWxhdGl2ZVNjcm9sbFRvcCA9IDA7XG4gICAgICAgIHRoaXMuY3VtdWxhdGl2ZVNjcm9sbExlZnQgPSAwO1xuICAgICAgICB0aGlzLmluaXRpYWxTY3JvbGxUb3AgPSB0aGlzLl9zb3VyY2VFbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgICAgdGhpcy5pbml0aWFsU2Nyb2xsTGVmdCA9IHRoaXMuX3NvdXJjZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXRkb2MgKi9cbiAgICBwdWJsaWMgZGV0YWNoKCk6IHZvaWQge1xuICAgICAgICAvLyBUT0RPOiBjaGVjayB3aHkgZXZlbnQgbGlzdGVuZXIgcmVtb3ZlcyBvbmx5IG9uIGZpcnN0IGNhbGwgYW5kIHJlbWFpbnMgb24gZWFjaCBuZXh0ISEhXG4gICAgICAgIGlmICh0aGlzLl9zY3JvbGxDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NvdXJjZUVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLmN1bXVsYXRpdmVTY3JvbGxUb3AgPSAwO1xuICAgICAgICB0aGlzLmN1bXVsYXRpdmVTY3JvbGxMZWZ0ID0gMDtcbiAgICAgICAgdGhpcy5pbml0aWFsU2Nyb2xsVG9wID0gMDtcbiAgICAgICAgdGhpcy5pbml0aWFsU2Nyb2xsTGVmdCA9IDA7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNjcm9sbCA9IChldjogRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9zb3VyY2VFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1bXVsYXRpdmVTY3JvbGxUb3AgKz0gdGhpcy5fc291cmNlRWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICAgIHRoaXMuY3VtdWxhdGl2ZVNjcm9sbExlZnQgKz0gdGhpcy5fc291cmNlRWxlbWVudC5zY3JvbGxMZWZ0O1xuXG4gICAgICAgIGlmIChNYXRoLmFicyh0aGlzLmN1bXVsYXRpdmVTY3JvbGxUb3AgLSB0aGlzLmluaXRpYWxTY3JvbGxUb3ApID4gdGhpcy5fdGhyZXNob2xkIHx8XG4gICAgICAgICAgICBNYXRoLmFicyh0aGlzLmN1bXVsYXRpdmVTY3JvbGxMZWZ0IC0gdGhpcy5pbml0aWFsU2Nyb2xsTGVmdCkgPiB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVNlcnZpY2UuaGlkZSh0aGlzLl9pZCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=