scrollbar-helper.service.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /**
  2. * @fileoverview added by tsickle
  3. * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  4. */
  5. import { Inject, Injectable } from '@angular/core';
  6. import { DOCUMENT } from '@angular/common';
  7. /**
  8. * Gets the width of the scrollbar. Nesc for windows
  9. * http://stackoverflow.com/a/13382873/888165
  10. */
  11. var ScrollbarHelper = /** @class */ (function () {
  12. function ScrollbarHelper(document) {
  13. this.document = document;
  14. this.width = this.getWidth();
  15. }
  16. /**
  17. * @return {?}
  18. */
  19. ScrollbarHelper.prototype.getWidth = /**
  20. * @return {?}
  21. */
  22. function () {
  23. /** @type {?} */
  24. var outer = this.document.createElement('div');
  25. outer.style.visibility = 'hidden';
  26. outer.style.width = '100px';
  27. outer.style.msOverflowStyle = 'scrollbar';
  28. this.document.body.appendChild(outer);
  29. /** @type {?} */
  30. var widthNoScroll = outer.offsetWidth;
  31. outer.style.overflow = 'scroll';
  32. /** @type {?} */
  33. var inner = this.document.createElement('div');
  34. inner.style.width = '100%';
  35. outer.appendChild(inner);
  36. /** @type {?} */
  37. var widthWithScroll = inner.offsetWidth;
  38. outer.parentNode.removeChild(outer);
  39. return widthNoScroll - widthWithScroll;
  40. };
  41. ScrollbarHelper.decorators = [
  42. { type: Injectable }
  43. ];
  44. /** @nocollapse */
  45. ScrollbarHelper.ctorParameters = function () { return [
  46. { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
  47. ]; };
  48. return ScrollbarHelper;
  49. }());
  50. export { ScrollbarHelper };
  51. if (false) {
  52. /** @type {?} */
  53. ScrollbarHelper.prototype.width;
  54. /**
  55. * @type {?}
  56. * @private
  57. */
  58. ScrollbarHelper.prototype.document;
  59. }
  60. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYmFyLWhlbHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN3aW1sYW5lL25neC1kYXRhdGFibGUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvc2Nyb2xsYmFyLWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBTTNDO0lBSUUseUJBQXNDLFFBQWE7UUFBYixhQUFRLEdBQVIsUUFBUSxDQUFLO1FBRm5ELFVBQUssR0FBVyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFc0IsQ0FBQzs7OztJQUV2RCxrQ0FBUTs7O0lBQVI7O1lBQ1EsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUNoRCxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDbEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1FBQzVCLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7O1lBRWhDLGFBQWEsR0FBRyxLQUFLLENBQUMsV0FBVztRQUN2QyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7O1lBRTFCLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDaEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7O1lBRW5CLGVBQWUsR0FBRyxLQUFLLENBQUMsV0FBVztRQUN6QyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxPQUFPLGFBQWEsR0FBRyxlQUFlLENBQUM7SUFDekMsQ0FBQzs7Z0JBeEJGLFVBQVU7Ozs7Z0RBSUksTUFBTSxTQUFDLFFBQVE7O0lBcUI5QixzQkFBQztDQUFBLEFBekJELElBeUJDO1NBeEJZLGVBQWU7OztJQUMxQixnQ0FBZ0M7Ozs7O0lBRXBCLG1DQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIEdldHMgdGhlIHdpZHRoIG9mIHRoZSBzY3JvbGxiYXIuICBOZXNjIGZvciB3aW5kb3dzXG4gKiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xMzM4Mjg3My84ODgxNjVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjcm9sbGJhckhlbHBlciB7XG4gIHdpZHRoOiBudW1iZXIgPSB0aGlzLmdldFdpZHRoKCk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogYW55KSB7fVxuXG4gIGdldFdpZHRoKCk6IG51bWJlciB7XG4gICAgY29uc3Qgb3V0ZXIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG91dGVyLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICBvdXRlci5zdHlsZS53aWR0aCA9ICcxMDBweCc7XG4gICAgb3V0ZXIuc3R5bGUubXNPdmVyZmxvd1N0eWxlID0gJ3Njcm9sbGJhcic7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG91dGVyKTtcblxuICAgIGNvbnN0IHdpZHRoTm9TY3JvbGwgPSBvdXRlci5vZmZzZXRXaWR0aDtcbiAgICBvdXRlci5zdHlsZS5vdmVyZmxvdyA9ICdzY3JvbGwnO1xuXG4gICAgY29uc3QgaW5uZXIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGlubmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIG91dGVyLmFwcGVuZENoaWxkKGlubmVyKTtcblxuICAgIGNvbnN0IHdpZHRoV2l0aFNjcm9sbCA9IGlubmVyLm9mZnNldFdpZHRoO1xuICAgIG91dGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob3V0ZXIpO1xuXG4gICAgcmV0dXJuIHdpZHRoTm9TY3JvbGwgLSB3aWR0aFdpdGhTY3JvbGw7XG4gIH1cbn1cbiJdfQ==