materialize-angular
Version:
Material UI Angular library
143 lines • 11.5 kB
JavaScript
/**
* @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