angular2-collapsible
Version:
Angular collapsible component styled with Materialize CSS.
170 lines • 13.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/collapsible-body/collapsible-body.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, ElementRef, HostBinding, Output, EventEmitter } from '@angular/core';
import { CollapsibleService } from '../services/collapsible.service';
import { CollapsibleEventService } from '../services/collapsible-event.service';
import { CollapsibleAnimationsService } from '../services/collapsible-animations.service';
var CollapsibleBodyComponent = /** @class */ (function () {
function CollapsibleBodyComponent(el, collapsibleService, eventService) {
this.el = el;
this.collapsibleService = collapsibleService;
this.eventService = eventService;
this.toggleState = new EventEmitter();
}
/**
* @return {?}
*/
CollapsibleBodyComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.eventService.toggleCollapsibleItem$.subscribe((/**
* @return {?}
*/
function () {
_this.toggleCollapsibleItem();
}));
};
/**
* @return {?}
*/
CollapsibleBodyComponent.prototype.hasContent = /**
* @return {?}
*/
function () {
var e_1, _a;
try {
for (var _b = tslib_1.__values(this.el.nativeElement.childNodes), _c = _b.next(); !_c.done; _c = _b.next()) {
var child = _c.value;
if (((/** @type {?} */ (child))).tagName != null) {
return true;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return false;
};
/**
* @return {?}
*/
CollapsibleBodyComponent.prototype.toggleCollapsibleItem = /**
* @return {?}
*/
function () {
// toggle body's state only if it has any childs
if (this.hasContent()) {
if (this.collapsibleService.getType() === 'accordion') {
/** @type {?} */
var tempExpanded = this.expanded;
this.collapsibleService.collapseAll();
this.expanded = tempExpanded;
}
this.expanded = !this.expanded;
this.expandedState = this.expanded.toString();
// emit 'toggleState' event
this.toggleState.emit(this.expanded);
}
};
/**
* @param {?} changes
* @return {?}
*/
CollapsibleBodyComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
var e_2, _a;
if (this.hasContent()) {
try {
for (var _b = tslib_1.__values(Object.keys(changes)), _c = _b.next(); !_c.done; _c = _b.next()) {
var key = _c.value;
if (key === 'expanded' &&
changes.expanded.currentValue != null) {
// this.expanded = changes.expanded.currentValue;
this.expandedState = this.expanded.toString();
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_2) throw e_2.error; }
}
}
};
// Makes sure we don't have a memory leak by destroying the
// Subscription when our component is destroyed
// Makes sure we don't have a memory leak by destroying the
// Subscription when our component is destroyed
/**
* @return {?}
*/
CollapsibleBodyComponent.prototype.ngOnDestroy =
// Makes sure we don't have a memory leak by destroying the
// Subscription when our component is destroyed
/**
* @return {?}
*/
function () {
this.eventService.unsubscribe();
};
CollapsibleBodyComponent.decorators = [
{ type: Component, args: [{
selector: 'collapsible-body',
template: "<ng-content></ng-content>",
animations: CollapsibleAnimationsService.collapsibleBodyAnimations('collapsibleBodyState'),
styles: ["\n :host {\n display: block;\n border-bottom: 1px solid #ddd;\n box-sizing: border-box;\n padding: 2rem;\n }\n\n .side-nav :host {\n padding: 0;\n }\n\n .side-nav :host,\n .side-nav.fixed :host {\n border: 0;\n background-color: #fff;\n }\n "]
}] }
];
/** @nocollapse */
CollapsibleBodyComponent.ctorParameters = function () { return [
{ type: ElementRef },
{ type: CollapsibleService },
{ type: CollapsibleEventService }
]; };
CollapsibleBodyComponent.propDecorators = {
expandedState: [{ type: HostBinding, args: ['@collapsibleBodyState',] }],
expanded: [{ type: Input }],
toggleState: [{ type: Output }]
};
return CollapsibleBodyComponent;
}());
export { CollapsibleBodyComponent };
if (false) {
/** @type {?} */
CollapsibleBodyComponent.prototype.expandedState;
/** @type {?} */
CollapsibleBodyComponent.prototype.expanded;
/** @type {?} */
CollapsibleBodyComponent.prototype.toggleState;
/**
* @type {?}
* @private
*/
CollapsibleBodyComponent.prototype.el;
/**
* @type {?}
* @private
*/
CollapsibleBodyComponent.prototype.collapsibleService;
/**
* @type {?}
* @private
*/
CollapsibleBodyComponent.prototype.eventService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyMi1jb2xsYXBzaWJsZS8iLCJzb3VyY2VzIjpbImxpYi9jb2xsYXBzaWJsZS1ib2R5L2NvbGxhcHNpYmxlLWJvZHkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQzlCLE1BQU0sRUFBRSxZQUFZLEVBQ3ZCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTFGO0lBK0JJLGtDQUNZLEVBQWMsRUFDZCxrQkFBc0MsRUFDdEMsWUFBcUM7UUFGckMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQXlCO1FBTHZDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUtDLENBQUM7Ozs7SUFFdEQsMkNBQVE7OztJQUFSO1FBQUEsaUJBSUM7UUFIRyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLFNBQVM7OztRQUFDO1lBQy9DLEtBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2pDLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7OztJQUVELDZDQUFVOzs7SUFBVjs7O1lBQ0ksS0FBb0IsSUFBQSxLQUFBLGlCQUFBLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQSxnQkFBQSw0QkFBRTtnQkFBakQsSUFBTSxLQUFLLFdBQUE7Z0JBQ1osSUFBSSxDQUFDLG1CQUFTLEtBQUssRUFBQSxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTtvQkFDbEMsT0FBTyxJQUFJLENBQUM7aUJBQ2Y7YUFDSjs7Ozs7Ozs7O1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7OztJQUVELHdEQUFxQjs7O0lBQXJCO1FBQ0ksZ0RBQWdEO1FBQ2hELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ25CLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRTs7b0JBQzdDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUTtnQkFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQzthQUNoQztZQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUU5QywyQkFBMkI7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQzs7Ozs7SUFFRCw4Q0FBVzs7OztJQUFYLFVBQVksT0FBc0I7O1FBQzlCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFOztnQkFDbkIsS0FBa0IsSUFBQSxLQUFBLGlCQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUEsZ0JBQUEsNEJBQUU7b0JBQW5DLElBQU0sR0FBRyxXQUFBO29CQUNWLElBQUksR0FBRyxLQUFLLFVBQVU7d0JBQ2xCLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxJQUFJLElBQUksRUFBRTt3QkFDdkMsaURBQWlEO3dCQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ2pEO2lCQUNKOzs7Ozs7Ozs7U0FDSjtJQUNMLENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsK0NBQStDOzs7Ozs7SUFDL0MsOENBQVc7Ozs7OztJQUFYO1FBQ0ksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDOztnQkFuRkosU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRSwyQkFBMkI7b0JBbUJyQyxVQUFVLEVBQUUsNEJBQTRCLENBQUMseUJBQXlCLENBQUMsc0JBQXNCLENBQUM7NkJBbEJqRixvWEFpQlI7aUJBRUo7Ozs7Z0JBOUJVLFVBQVU7Z0JBSVosa0JBQWtCO2dCQUNsQix1QkFBdUI7OztnQ0EyQjNCLFdBQVcsU0FBQyx1QkFBdUI7MkJBR25DLEtBQUs7OEJBRUwsTUFBTTs7SUF3RFgsK0JBQUM7Q0FBQSxBQXJGRCxJQXFGQztTQTlEWSx3QkFBd0I7OztJQUNqQyxpREFDc0I7O0lBRXRCLDRDQUEyQjs7SUFFM0IsK0NBQW9EOzs7OztJQUdoRCxzQ0FBc0I7Ozs7O0lBQ3RCLHNEQUE4Qzs7Ozs7SUFDOUMsZ0RBQTZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBJbnB1dCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsXHJcbiAgICBPdXRwdXQsIEV2ZW50RW1pdHRlclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ29sbGFwc2libGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29sbGFwc2libGUuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbGxhcHNpYmxlRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29sbGFwc2libGUtZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbGxhcHNpYmxlQW5pbWF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb2xsYXBzaWJsZS1hbmltYXRpb25zLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NvbGxhcHNpYmxlLWJvZHknLFxyXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcclxuICAgIHN0eWxlczogW2BcclxuICAgICAgICA6aG9zdCB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcclxuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICAgICAgcGFkZGluZzogMnJlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zaWRlLW5hdiA6aG9zdCB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2lkZS1uYXYgOmhvc3QsXHJcbiAgICAgICAgLnNpZGUtbmF2LmZpeGVkIDpob3N0IHtcclxuICAgICAgICAgICAgYm9yZGVyOiAwO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gICAgICAgIH1cclxuICAgIGBdLFxyXG4gICAgYW5pbWF0aW9uczogQ29sbGFwc2libGVBbmltYXRpb25zU2VydmljZS5jb2xsYXBzaWJsZUJvZHlBbmltYXRpb25zKCdjb2xsYXBzaWJsZUJvZHlTdGF0ZScpXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2xsYXBzaWJsZUJvZHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgIEBIb3N0QmluZGluZygnQGNvbGxhcHNpYmxlQm9keVN0YXRlJylcclxuICAgIGV4cGFuZGVkU3RhdGU6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKSBleHBhbmRlZDogYm9vbGVhbjtcclxuXHJcbiAgICBAT3V0cHV0KCkgdG9nZ2xlU3RhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgICAgICBwcml2YXRlIGNvbGxhcHNpYmxlU2VydmljZTogQ29sbGFwc2libGVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBDb2xsYXBzaWJsZUV2ZW50U2VydmljZSkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UudG9nZ2xlQ29sbGFwc2libGVJdGVtJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUNvbGxhcHNpYmxlSXRlbSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc0NvbnRlbnQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgICBpZiAoKDxFbGVtZW50PmNoaWxkKS50YWdOYW1lICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVDb2xsYXBzaWJsZUl0ZW0oKSB7XHJcbiAgICAgICAgLy8gdG9nZ2xlIGJvZHkncyBzdGF0ZSBvbmx5IGlmIGl0IGhhcyBhbnkgY2hpbGRzXHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQ29udGVudCgpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbGxhcHNpYmxlU2VydmljZS5nZXRUeXBlKCkgPT09ICdhY2NvcmRpb24nKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0ZW1wRXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzaWJsZVNlcnZpY2UuY29sbGFwc2VBbGwoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSB0ZW1wRXhwYW5kZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xyXG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkU3RhdGUgPSB0aGlzLmV4cGFuZGVkLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgICAgICAvLyBlbWl0ICd0b2dnbGVTdGF0ZScgZXZlbnRcclxuICAgICAgICAgICAgdGhpcy50b2dnbGVTdGF0ZS5lbWl0KHRoaXMuZXhwYW5kZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQ29udGVudCgpKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNoYW5nZXMpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnZXhwYW5kZWQnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5leHBhbmRlZC5jdXJyZW50VmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZXhwYW5kZWQgPSBjaGFuZ2VzLmV4cGFuZGVkLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkU3RhdGUgPSB0aGlzLmV4cGFuZGVkLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTWFrZXMgc3VyZSB3ZSBkb24ndCBoYXZlIGEgbWVtb3J5IGxlYWsgYnkgZGVzdHJveWluZyB0aGVcclxuICAgIC8vIFN1YnNjcmlwdGlvbiB3aGVuIG91ciBjb21wb25lbnQgaXMgZGVzdHJveWVkXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=