UNPKG

materialize-angular

Version:
143 lines 11.5 kB
/** * @fileoverview added by tsickle * Generated from: app/completed-components/collapsible/collapsible.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @license * Copyright Workylab. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://raw.githubusercontent.com/workylab/materialize-angular/master/LICENSE */ import { Component, ElementRef, EventEmitter, Input, Output, Renderer2, ViewChild } from '@angular/core'; import { config } from '../../config'; export class CollapsibleComponent { /** * @param {?} renderer */ constructor(renderer) { this.renderer = renderer; this.className = CollapsibleComponent.defaultProps.className; this.disabled = CollapsibleComponent.defaultProps.disabled; this.isOpen = CollapsibleComponent.defaultProps.isOpen; this.showIndicator = CollapsibleComponent.defaultProps.showIndicator; this.prefix = config.components.prefix; this.onCloseEmitter = new EventEmitter(); this.onOpenEmitter = new EventEmitter(); this.onToggle = this.onToggle.bind(this); this.update = this.update.bind(this); window.addEventListener('resize', this.update); } /** * @return {?} */ ngAfterContentInit() { if (this.isOpen) { setTimeout((/** * @return {?} */ () => { this.update(); }), 300); } } /** * @return {?} */ ngOnChanges() { this.update(); } /** * @return {?} */ onToggle() { if (!this.disabled) { if (this.isOpen) { this.close(); this.onCloseEmitter.emit(); } else { this.open(); this.onOpenEmitter.emit(); } } } /** * @return {?} */ open() { this.isOpen = true; this.update(); } /** * @return {?} */ close() { this.isOpen = false; this.update(); } /** * @return {?} */ update() { /** @type {?} */ const contentContainer = this.containerRef.nativeElement; /** @type {?} */ const maxHeight = this.isOpen ? contentContainer.scrollHeight : 0; this.renderer.setStyle(contentContainer, 'maxHeight', `${maxHeight}px`); } } CollapsibleComponent.defaultProps = { className: '', disabled: false, isOpen: false, showIndicator: true }; CollapsibleComponent.decorators = [ { type: Component, args: [{ selector: `${config.components.prefix}-collapsible }`, template: "<div\n [ngClass]=\"[prefix + '-collapsible', className]\"\n [class.disabled]=\"disabled\"\n [class.open]=\"isOpen\"\n>\n <div (click)=\"onToggle()\"\n [isRippleActive]=\"!disabled\"\n [ngClass]=\"[prefix + '-collapsible-title', className]\"\n\n materializeRipple\n >\n <ng-content select=\"materialize-collapsible-title\"></ng-content>\n\n <materialize-icon *ngIf=\"showIndicator\" [className]=\"prefix + '-collapsible-title-icon'\">\n expand_more\n </materialize-icon>\n </div>\n\n <div [ngClass]=\"[prefix + '-collapsible-content-container', className]\" #container>\n <div [ngClass]=\"prefix + '-collapsible-content'\">\n <ng-content select=\"materialize-collapsible-content\"></ng-content>\n </div>\n </div>\n</div>\n" }] } ]; /** @nocollapse */ CollapsibleComponent.ctorParameters = () => [ { type: Renderer2 } ]; CollapsibleComponent.propDecorators = { onCloseEmitter: [{ type: Output, args: ['onClose',] }], onOpenEmitter: [{ type: Output, args: ['onOpen',] }], containerRef: [{ type: ViewChild, args: ['container', { static: true },] }], className: [{ type: Input }], disabled: [{ type: Input }], isOpen: [{ type: Input }], showIndicator: [{ type: Input }] }; if (false) { /** @type {?} */ CollapsibleComponent.defaultProps; /** @type {?} */ CollapsibleComponent.prototype.onCloseEmitter; /** @type {?} */ CollapsibleComponent.prototype.onOpenEmitter; /** @type {?} */ CollapsibleComponent.prototype.containerRef; /** @type {?} */ CollapsibleComponent.prototype.className; /** @type {?} */ CollapsibleComponent.prototype.disabled; /** @type {?} */ CollapsibleComponent.prototype.isOpen; /** @type {?} */ CollapsibleComponent.prototype.showIndicator; /** @type {?} */ CollapsibleComponent.prototype.prefix; /** * @type {?} * @private */ CollapsibleComponent.prototype.renderer; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbWF0ZXJpYWxpemUtYW5ndWxhci8iLCJzb3VyY2VzIjpbImFwcC9jb21wbGV0ZWQtY29tcG9uZW50cy9jb2xsYXBzaWJsZS9jb2xsYXBzaWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBTXRDLE1BQU0sT0FBTyxvQkFBb0I7Ozs7SUFvQi9CLFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFQOUIsY0FBUyxHQUFXLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDaEUsYUFBUSxHQUFZLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDL0QsV0FBTSxHQUFZLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDM0Qsa0JBQWEsR0FBWSxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO1FBRTNFLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUd2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRWpELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7O0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLFVBQVU7OztZQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDOzs7O0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM1QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUMzQjtTQUNGO0lBQ0gsQ0FBQzs7OztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQzs7OztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQzs7OztJQUVELE1BQU07O2NBQ0UsZ0JBQWdCLEdBQWdCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYTs7Y0FDL0QsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNO1lBQzNCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLEdBQUksU0FBVSxJQUFJLENBQUMsQ0FBQztJQUM1RSxDQUFDOztBQXRFZSxpQ0FBWSxHQUFxQjtJQUMvQyxTQUFTLEVBQUUsRUFBRTtJQUNiLFFBQVEsRUFBRSxLQUFLO0lBQ2YsTUFBTSxFQUFFLEtBQUs7SUFDYixhQUFhLEVBQUUsSUFBSTtDQUNwQixDQUFDOztZQVZILFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsR0FBSSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU8sZ0JBQWdCO2dCQUN2RCx1d0JBQTJDO2FBQzVDOzs7O1lBVEMsU0FBUzs7OzZCQWtCUixNQUFNLFNBQUMsU0FBUzs0QkFDaEIsTUFBTSxTQUFDLFFBQVE7MkJBRWYsU0FBUyxTQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7d0JBRXZDLEtBQUs7dUJBQ0wsS0FBSztxQkFDTCxLQUFLOzRCQUNMLEtBQUs7Ozs7SUFmTixrQ0FLRTs7SUFFRiw4Q0FBeUQ7O0lBQ3pELDZDQUF1RDs7SUFFdkQsNENBQW1FOztJQUVuRSx5Q0FBeUU7O0lBQ3pFLHdDQUF3RTs7SUFDeEUsc0NBQW9FOztJQUNwRSw2Q0FBa0Y7O0lBRWxGLHNDQUF5Qzs7Ozs7SUFFN0Isd0NBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IFdvcmt5bGFiLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS93b3JreWxhYi9tYXRlcmlhbGl6ZS1hbmd1bGFyL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2xsYXBzaWJsZU1vZGVsIH0gZnJvbSAnLi9jb2xsYXBzaWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IGAkeyBjb25maWcuY29tcG9uZW50cy5wcmVmaXggfS1jb2xsYXBzaWJsZSB9YCxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbGxhcHNpYmxlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDb2xsYXBzaWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbGxhcHNpYmxlTW9kZWwsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcyB7XG4gIHN0YXRpYyByZWFkb25seSBkZWZhdWx0UHJvcHM6IENvbGxhcHNpYmxlTW9kZWwgPSB7XG4gICAgY2xhc3NOYW1lOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBzaG93SW5kaWNhdG9yOiB0cnVlXG4gIH07XG5cbiAgQE91dHB1dCgnb25DbG9zZScpIG9uQ2xvc2VFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG4gIEBPdXRwdXQoJ29uT3BlbicpIG9uT3BlbkVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250YWluZXJSZWY6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgY2xhc3NOYW1lOiBzdHJpbmcgPSBDb2xsYXBzaWJsZUNvbXBvbmVudC5kZWZhdWx0UHJvcHMuY2xhc3NOYW1lO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IENvbGxhcHNpYmxlQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5kaXNhYmxlZDtcbiAgQElucHV0KCkgaXNPcGVuOiBib29sZWFuID0gQ29sbGFwc2libGVDb21wb25lbnQuZGVmYXVsdFByb3BzLmlzT3BlbjtcbiAgQElucHV0KCkgc2hvd0luZGljYXRvcjogYm9vbGVhbiA9IENvbGxhcHNpYmxlQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5zaG93SW5kaWNhdG9yO1xuXG4gIHB1YmxpYyBwcmVmaXggPSBjb25maWcuY29tcG9uZW50cy5wcmVmaXg7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgdGhpcy5vbkNsb3NlRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICB0aGlzLm9uT3BlbkVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICB0aGlzLm9uVG9nZ2xlID0gdGhpcy5vblRvZ2dsZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMudXBkYXRlID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnVwZGF0ZSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIG9uVG9nZ2xlKCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5vbkNsb3NlRW1pdHRlci5lbWl0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgdGhpcy5vbk9wZW5FbWl0dGVyLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvcGVuKCkge1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgdXBkYXRlKCkge1xuICAgIGNvbnN0IGNvbnRlbnRDb250YWluZXI6IEhUTUxFbGVtZW50ID0gdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBtYXhIZWlnaHQgPSB0aGlzLmlzT3BlblxuICAgICAgPyBjb250ZW50Q29udGFpbmVyLnNjcm9sbEhlaWdodFxuICAgICAgOiAwO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250ZW50Q29udGFpbmVyLCAnbWF4SGVpZ2h0JywgYCR7IG1heEhlaWdodCB9cHhgKTtcbiAgfVxufVxuIl19