import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core'; import { isTrueProperty } from '../../util/util'; /** * @name Scroll * @description * Scroll is a non-flexboxed scroll area that can scroll horizontally or vertically. `ion-Scroll` Can be used in places where you may not need a full page scroller, but a highly customized one, such as image scubber or comment scroller. * @usage * ```html * * * * * * * * * ``` * @demo /docs/demos/src/scroll/ */ export class Scroll { constructor() { this._scrollX = false; this._scrollY = false; this._zoom = false; this._maxZoom = 1; /** * @hidden */ this.maxScale = 3; /** * @hidden */ this.zoomDuration = 250; } /** * @input {boolean} If true, scrolling along the X axis is enabled. */ get scrollX() { return this._scrollX; } set scrollX(val) { this._scrollX = isTrueProperty(val); } /** * @input {boolean} If true, scrolling along the Y axis is enabled; requires the following CSS declaration: ion-scroll { white-space: nowrap; } */ get scrollY() { return this._scrollY; } set scrollY(val) { this._scrollY = isTrueProperty(val); } /** * @input {boolean} If true, zooming is enabled. */ get zoom() { return this._zoom; } set zoom(val) { this._zoom = isTrueProperty(val); } /** * @input {number} Set the max zoom amount. */ get maxZoom() { return this._maxZoom; } set maxZoom(val) { this._maxZoom = val; } /** * @hidden * Add a scroll event handler to the scroll element if it exists. * @param {Function} handler The scroll handler to add to the scroll element. * @returns {?Function} a function to remove the specified handler, otherwise * undefined if the scroll element doesn't exist. */ addScrollEventListener(handler) { (void 0) /* assert */; const ele = this._scrollContent.nativeElement; ele.addEventListener('scroll', handler); return () => { ele.removeEventListener('scroll', handler); }; } } Scroll.decorators = [ { type: Component, args: [{ selector: 'ion-scroll', template: '
' + '
' + '' + '
' + '
', host: { '[class.scroll-x]': 'scrollX', '[class.scroll-y]': 'scrollY' }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, },] }, ]; /** @nocollapse */ Scroll.ctorParameters = () => []; Scroll.propDecorators = { 'scrollX': [{ type: Input },], 'scrollY': [{ type: Input },], 'zoom': [{ type: Input },], 'maxZoom': [{ type: Input },], '_scrollContent': [{ type: ViewChild, args: ['scrollContent', { read: ElementRef },] },], }; //# sourceMappingURL=scroll.js.map